aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2018-03-09 11:12:18 +0100
committerMario <mario@mariovavti.com>2018-03-09 11:12:18 +0100
commit4baf5eab16d809977a44e7911ddcab0ff8383897 (patch)
tree393f618c4cfc20f53264ecd8a26a08de0823d35d
parent577da0eb9eb1f90a4cf7a70cfb3582cfb49007ac (diff)
parent7361af85b5488fc8bd1744389a3a332dc74276b0 (diff)
downloadvolse-hubzilla-4baf5eab16d809977a44e7911ddcab0ff8383897.tar.gz
volse-hubzilla-4baf5eab16d809977a44e7911ddcab0ff8383897.tar.bz2
volse-hubzilla-4baf5eab16d809977a44e7911ddcab0ff8383897.zip
Merge branch '3.2RC'3.2
-rw-r--r--.homeinstall/README.md4
-rw-r--r--CHANGELOG126
-rw-r--r--LICENSE2
-rw-r--r--README.md6
-rw-r--r--Zotlabs/Access/AccessList.php8
-rw-r--r--Zotlabs/Access/PermissionLimits.php85
-rw-r--r--Zotlabs/Daemon/Notifier.php22
-rw-r--r--Zotlabs/Daemon/Queue.php6
-rw-r--r--Zotlabs/Identity/OAuth2Server.php34
-rw-r--r--Zotlabs/Identity/OAuth2Storage.php81
-rw-r--r--Zotlabs/Lib/Apps.php10
-rw-r--r--Zotlabs/Lib/Config.php4
-rw-r--r--Zotlabs/Lib/DB_Upgrade.php134
-rw-r--r--Zotlabs/Lib/DReport.php55
-rw-r--r--Zotlabs/Lib/Enotify.php72
-rw-r--r--Zotlabs/Lib/Img_filesize.php122
-rw-r--r--Zotlabs/Lib/MarkdownSoap.php65
-rw-r--r--Zotlabs/Lib/Permcat.php78
-rw-r--r--Zotlabs/Lib/ProtoDriver.php19
-rw-r--r--Zotlabs/Lib/Share.php141
-rw-r--r--Zotlabs/Lib/ThreadItem.php4
-rw-r--r--Zotlabs/Lib/Verify.php63
-rw-r--r--Zotlabs/Lib/ZotDriver.php30
-rw-r--r--Zotlabs/Module/Acl.php43
-rw-r--r--Zotlabs/Module/Admin/Accounts.php7
-rw-r--r--Zotlabs/Module/Admin/Dbsync.php54
-rw-r--r--Zotlabs/Module/Admin/Profs.php39
-rw-r--r--Zotlabs/Module/Admin/Security.php12
-rw-r--r--Zotlabs/Module/Admin/Site.php42
-rw-r--r--Zotlabs/Module/Api.php10
-rw-r--r--Zotlabs/Module/Articles.php3
-rw-r--r--Zotlabs/Module/Authorize.php94
-rw-r--r--Zotlabs/Module/Cards.php79
-rw-r--r--Zotlabs/Module/Channel.php16
-rw-r--r--Zotlabs/Module/Cloud.php3
-rw-r--r--Zotlabs/Module/Connections.php10
-rw-r--r--Zotlabs/Module/Connedit.php24
-rw-r--r--Zotlabs/Module/Cover_photo.php29
-rw-r--r--Zotlabs/Module/Defperms.php2
-rw-r--r--Zotlabs/Module/Directory.php7
-rw-r--r--Zotlabs/Module/Dirsearch.php7
-rw-r--r--Zotlabs/Module/Display.php22
-rw-r--r--Zotlabs/Module/Email_resend.php46
-rw-r--r--Zotlabs/Module/Email_validation.php48
-rw-r--r--Zotlabs/Module/Embedphotos.php2
-rw-r--r--Zotlabs/Module/Go.php67
-rw-r--r--Zotlabs/Module/Hq.php37
-rw-r--r--Zotlabs/Module/Import.php2
-rw-r--r--Zotlabs/Module/Item.php32
-rw-r--r--Zotlabs/Module/Like.php81
-rw-r--r--Zotlabs/Module/Linkinfo.php4
-rw-r--r--Zotlabs/Module/Logout.php2
-rw-r--r--Zotlabs/Module/Magic.php2
-rw-r--r--Zotlabs/Module/Network.php48
-rw-r--r--Zotlabs/Module/New_channel.php5
-rw-r--r--Zotlabs/Module/Owa.php2
-rw-r--r--Zotlabs/Module/Ping.php52
-rw-r--r--Zotlabs/Module/Profile_photo.php55
-rw-r--r--Zotlabs/Module/Pubstream.php38
-rw-r--r--Zotlabs/Module/Register.php26
-rw-r--r--Zotlabs/Module/Search.php25
-rw-r--r--Zotlabs/Module/Settings/Account.php2
-rw-r--r--Zotlabs/Module/Settings/Channel.php9
-rw-r--r--Zotlabs/Module/Settings/Display.php26
-rw-r--r--Zotlabs/Module/Settings/Featured.php15
-rw-r--r--Zotlabs/Module/Settings/Permcats.php4
-rw-r--r--Zotlabs/Module/Share.php4
-rw-r--r--Zotlabs/Module/Siteinfo.php1
-rw-r--r--Zotlabs/Module/Sitelist.php4
-rw-r--r--Zotlabs/Module/Thing.php5
-rw-r--r--Zotlabs/Module/Token.php49
-rw-r--r--Zotlabs/Module/Viewconnections.php10
-rw-r--r--Zotlabs/Module/Wfinger.php3
-rwxr-xr-xZotlabs/Render/SmartyInterface.php2
-rw-r--r--Zotlabs/Render/Theme.php30
-rw-r--r--Zotlabs/Storage/Browser.php5
-rw-r--r--Zotlabs/Thumbs/Epubthumb.php40
-rw-r--r--Zotlabs/Thumbs/Video.php1
-rw-r--r--Zotlabs/Update/_1000.php15
-rw-r--r--Zotlabs/Update/_1001.php27
-rw-r--r--Zotlabs/Update/_1002.php20
-rw-r--r--Zotlabs/Update/_1003.php15
-rw-r--r--Zotlabs/Update/_1004.php24
-rw-r--r--Zotlabs/Update/_1005.php13
-rw-r--r--Zotlabs/Update/_1006.php45
-rw-r--r--Zotlabs/Update/_1007.php15
-rw-r--r--Zotlabs/Update/_1008.php15
-rw-r--r--Zotlabs/Update/_1009.php15
-rw-r--r--Zotlabs/Update/_1010.php18
-rw-r--r--Zotlabs/Update/_1011.php16
-rw-r--r--Zotlabs/Update/_1012.php16
-rw-r--r--Zotlabs/Update/_1013.php21
-rw-r--r--Zotlabs/Update/_1014.php14
-rw-r--r--Zotlabs/Update/_1015.php19
-rw-r--r--Zotlabs/Update/_1016.php39
-rw-r--r--Zotlabs/Update/_1017.php14
-rw-r--r--Zotlabs/Update/_1018.php16
-rw-r--r--Zotlabs/Update/_1019.php14
-rw-r--r--Zotlabs/Update/_1020.php14
-rw-r--r--Zotlabs/Update/_1021.php17
-rw-r--r--Zotlabs/Update/_1022.php14
-rw-r--r--Zotlabs/Update/_1023.php14
-rw-r--r--Zotlabs/Update/_1024.php15
-rw-r--r--Zotlabs/Update/_1025.php15
-rw-r--r--Zotlabs/Update/_1026.php16
-rw-r--r--Zotlabs/Update/_1027.php15
-rw-r--r--Zotlabs/Update/_1028.php15
-rw-r--r--Zotlabs/Update/_1029.php15
-rw-r--r--Zotlabs/Update/_1030.php29
-rw-r--r--Zotlabs/Update/_1031.php16
-rw-r--r--Zotlabs/Update/_1032.php21
-rw-r--r--Zotlabs/Update/_1033.php29
-rw-r--r--Zotlabs/Update/_1034.php20
-rw-r--r--Zotlabs/Update/_1035.php24
-rw-r--r--Zotlabs/Update/_1036.php16
-rw-r--r--Zotlabs/Update/_1037.php30
-rw-r--r--Zotlabs/Update/_1038.php17
-rw-r--r--Zotlabs/Update/_1039.php16
-rw-r--r--Zotlabs/Update/_1040.php16
-rw-r--r--Zotlabs/Update/_1041.php16
-rw-r--r--Zotlabs/Update/_1042.php16
-rw-r--r--Zotlabs/Update/_1043.php15
-rw-r--r--Zotlabs/Update/_1044.php15
-rw-r--r--Zotlabs/Update/_1045.php15
-rw-r--r--Zotlabs/Update/_1046.php15
-rw-r--r--Zotlabs/Update/_1047.php15
-rw-r--r--Zotlabs/Update/_1048.php29
-rw-r--r--Zotlabs/Update/_1049.php15
-rw-r--r--Zotlabs/Update/_1050.php15
-rw-r--r--Zotlabs/Update/_1051.php16
-rw-r--r--Zotlabs/Update/_1052.php14
-rw-r--r--Zotlabs/Update/_1053.php14
-rw-r--r--Zotlabs/Update/_1054.php14
-rw-r--r--Zotlabs/Update/_1055.php14
-rw-r--r--Zotlabs/Update/_1056.php15
-rw-r--r--Zotlabs/Update/_1057.php14
-rw-r--r--Zotlabs/Update/_1058.php19
-rw-r--r--Zotlabs/Update/_1059.php14
-rw-r--r--Zotlabs/Update/_1060.php24
-rw-r--r--Zotlabs/Update/_1061.php15
-rw-r--r--Zotlabs/Update/_1062.php34
-rw-r--r--Zotlabs/Update/_1063.php16
-rw-r--r--Zotlabs/Update/_1064.php15
-rw-r--r--Zotlabs/Update/_1065.php15
-rw-r--r--Zotlabs/Update/_1066.php15
-rw-r--r--Zotlabs/Update/_1067.php14
-rw-r--r--Zotlabs/Update/_1068.php14
-rw-r--r--Zotlabs/Update/_1069.php15
-rw-r--r--Zotlabs/Update/_1070.php15
-rw-r--r--Zotlabs/Update/_1071.php15
-rw-r--r--Zotlabs/Update/_1072.php17
-rw-r--r--Zotlabs/Update/_1073.php23
-rw-r--r--Zotlabs/Update/_1074.php19
-rw-r--r--Zotlabs/Update/_1075.php16
-rw-r--r--Zotlabs/Update/_1076.php14
-rw-r--r--Zotlabs/Update/_1077.php14
-rw-r--r--Zotlabs/Update/_1078.php15
-rw-r--r--Zotlabs/Update/_1079.php14
-rw-r--r--Zotlabs/Update/_1080.php15
-rw-r--r--Zotlabs/Update/_1081.php14
-rw-r--r--Zotlabs/Update/_1082.php14
-rw-r--r--Zotlabs/Update/_1083.php15
-rw-r--r--Zotlabs/Update/_1084.php24
-rw-r--r--Zotlabs/Update/_1085.php20
-rw-r--r--Zotlabs/Update/_1086.php15
-rw-r--r--Zotlabs/Update/_1087.php17
-rw-r--r--Zotlabs/Update/_1088.php17
-rw-r--r--Zotlabs/Update/_1089.php16
-rw-r--r--Zotlabs/Update/_1090.php15
-rw-r--r--Zotlabs/Update/_1091.php13
-rw-r--r--Zotlabs/Update/_1092.php61
-rw-r--r--Zotlabs/Update/_1093.php14
-rw-r--r--Zotlabs/Update/_1094.php15
-rw-r--r--Zotlabs/Update/_1095.php15
-rw-r--r--Zotlabs/Update/_1096.php14
-rw-r--r--Zotlabs/Update/_1097.php24
-rw-r--r--Zotlabs/Update/_1098.php25
-rw-r--r--Zotlabs/Update/_1099.php24
-rw-r--r--Zotlabs/Update/_1100.php16
-rw-r--r--Zotlabs/Update/_1101.php13
-rw-r--r--Zotlabs/Update/_1102.php16
-rw-r--r--Zotlabs/Update/_1103.php14
-rw-r--r--Zotlabs/Update/_1104.php14
-rw-r--r--Zotlabs/Update/_1105.php15
-rw-r--r--Zotlabs/Update/_1106.php14
-rw-r--r--Zotlabs/Update/_1107.php34
-rw-r--r--Zotlabs/Update/_1108.php17
-rw-r--r--Zotlabs/Update/_1109.php16
-rw-r--r--Zotlabs/Update/_1110.php17
-rw-r--r--Zotlabs/Update/_1111.php14
-rw-r--r--Zotlabs/Update/_1112.php29
-rw-r--r--Zotlabs/Update/_1113.php16
-rw-r--r--Zotlabs/Update/_1114.php15
-rw-r--r--Zotlabs/Update/_1115.php16
-rw-r--r--Zotlabs/Update/_1116.php12
-rw-r--r--Zotlabs/Update/_1117.php16
-rw-r--r--Zotlabs/Update/_1118.php16
-rw-r--r--Zotlabs/Update/_1119.php35
-rw-r--r--Zotlabs/Update/_1120.php16
-rw-r--r--Zotlabs/Update/_1121.php16
-rw-r--r--Zotlabs/Update/_1122.php16
-rw-r--r--Zotlabs/Update/_1123.php17
-rw-r--r--Zotlabs/Update/_1124.php41
-rw-r--r--Zotlabs/Update/_1125.php16
-rw-r--r--Zotlabs/Update/_1126.php16
-rw-r--r--Zotlabs/Update/_1127.php16
-rw-r--r--Zotlabs/Update/_1128.php15
-rw-r--r--Zotlabs/Update/_1129.php14
-rw-r--r--Zotlabs/Update/_1130.php28
-rw-r--r--Zotlabs/Update/_1131.php20
-rw-r--r--Zotlabs/Update/_1132.php17
-rw-r--r--Zotlabs/Update/_1133.php38
-rw-r--r--Zotlabs/Update/_1134.php20
-rw-r--r--Zotlabs/Update/_1135.php14
-rw-r--r--Zotlabs/Update/_1136.php17
-rw-r--r--Zotlabs/Update/_1137.php16
-rw-r--r--Zotlabs/Update/_1138.php15
-rw-r--r--Zotlabs/Update/_1139.php21
-rw-r--r--Zotlabs/Update/_1140.php27
-rw-r--r--Zotlabs/Update/_1141.php30
-rw-r--r--Zotlabs/Update/_1142.php18
-rw-r--r--Zotlabs/Update/_1143.php17
-rw-r--r--Zotlabs/Update/_1144.php27
-rw-r--r--Zotlabs/Update/_1145.php30
-rw-r--r--Zotlabs/Update/_1146.php16
-rw-r--r--Zotlabs/Update/_1147.php16
-rw-r--r--Zotlabs/Update/_1148.php17
-rw-r--r--Zotlabs/Update/_1149.php35
-rw-r--r--Zotlabs/Update/_1150.php28
-rw-r--r--Zotlabs/Update/_1151.php24
-rw-r--r--Zotlabs/Update/_1152.php57
-rw-r--r--Zotlabs/Update/_1153.php18
-rw-r--r--Zotlabs/Update/_1154.php17
-rw-r--r--Zotlabs/Update/_1155.php17
-rw-r--r--Zotlabs/Update/_1156.php28
-rw-r--r--Zotlabs/Update/_1157.php17
-rw-r--r--Zotlabs/Update/_1158.php22
-rw-r--r--Zotlabs/Update/_1159.php25
-rw-r--r--Zotlabs/Update/_1160.php14
-rw-r--r--Zotlabs/Update/_1161.php43
-rw-r--r--Zotlabs/Update/_1162.php19
-rw-r--r--Zotlabs/Update/_1163.php22
-rw-r--r--Zotlabs/Update/_1164.php45
-rw-r--r--Zotlabs/Update/_1165.php20
-rw-r--r--Zotlabs/Update/_1166.php15
-rw-r--r--Zotlabs/Update/_1167.php26
-rw-r--r--Zotlabs/Update/_1168.php23
-rw-r--r--Zotlabs/Update/_1169.php27
-rw-r--r--Zotlabs/Update/_1170.php21
-rw-r--r--Zotlabs/Update/_1171.php24
-rw-r--r--Zotlabs/Update/_1172.php29
-rw-r--r--Zotlabs/Update/_1173.php27
-rw-r--r--Zotlabs/Update/_1174.php32
-rw-r--r--Zotlabs/Update/_1175.php31
-rw-r--r--Zotlabs/Update/_1176.php19
-rw-r--r--Zotlabs/Update/_1177.php66
-rw-r--r--Zotlabs/Update/_1178.php42
-rw-r--r--Zotlabs/Update/_1179.php49
-rw-r--r--Zotlabs/Update/_1180.php32
-rw-r--r--Zotlabs/Update/_1181.php14
-rw-r--r--Zotlabs/Update/_1182.php17
-rw-r--r--Zotlabs/Update/_1183.php25
-rw-r--r--Zotlabs/Update/_1184.php16
-rw-r--r--Zotlabs/Update/_1185.php16
-rw-r--r--Zotlabs/Update/_1186.php18
-rw-r--r--Zotlabs/Update/_1187.php24
-rw-r--r--Zotlabs/Update/_1188.php18
-rw-r--r--Zotlabs/Update/_1189.php23
-rw-r--r--Zotlabs/Update/_1190.php17
-rw-r--r--Zotlabs/Update/_1191.php425
-rw-r--r--Zotlabs/Update/_1192.php21
-rw-r--r--Zotlabs/Update/_1193.php22
-rw-r--r--Zotlabs/Update/_1194.php22
-rw-r--r--Zotlabs/Update/_1195.php21
-rw-r--r--Zotlabs/Update/_1196.php45
-rw-r--r--Zotlabs/Update/_1197.php17
-rw-r--r--Zotlabs/Update/_1198.php24
-rw-r--r--Zotlabs/Update/_1199.php19
-rw-r--r--Zotlabs/Update/_1200.php24
-rw-r--r--Zotlabs/Update/_1201.php27
-rw-r--r--Zotlabs/Update/_1202.php15
-rw-r--r--Zotlabs/Update/_1203.php29
-rw-r--r--Zotlabs/Update/_1204.php34
-rw-r--r--Zotlabs/Update/_1205.php38
-rw-r--r--Zotlabs/Update/_1206.php24
-rw-r--r--Zotlabs/Update/_1207.php24
-rw-r--r--Zotlabs/Web/HTTPSig.php21
-rw-r--r--Zotlabs/Web/Router.php6
-rw-r--r--Zotlabs/Web/WebServer.php75
-rw-r--r--Zotlabs/Widget/Affinity.php6
-rw-r--r--Zotlabs/Widget/Forums.php29
-rw-r--r--Zotlabs/Widget/Newmember.php83
-rw-r--r--Zotlabs/Widget/Notifications.php14
-rw-r--r--Zotlabs/Widget/Settings_menu.php6
-rw-r--r--Zotlabs/Zot/DReport.php55
-rw-r--r--Zotlabs/Zot/Verify.php63
-rw-r--r--app/articles.apd4
-rw-r--r--app/cards.apd2
-rw-r--r--app/pubstream.apd6
-rw-r--r--app/webpages.apd2
-rw-r--r--app/wiki.apd2
-rwxr-xr-xboot.php143
-rw-r--r--composer.json8
-rw-r--r--composer.lock586
-rw-r--r--doc/admin/administrator_guide.md12
-rw-r--r--doc/hidden_configs.bb1
-rw-r--r--doc/member/member_guide.bb25
-rw-r--r--images/video_poster.jpgbin0 -> 24871 bytes
-rw-r--r--include/Import/Importer.php81
-rw-r--r--include/Import/refimport.php284
-rw-r--r--include/account.php46
-rw-r--r--include/acl_selectors.php97
-rw-r--r--include/api_zot.php24
-rw-r--r--include/auth.php1
-rw-r--r--include/bbcode.php63
-rw-r--r--include/channel.php13
-rw-r--r--include/conversation.php8
-rw-r--r--include/crypto.php92
-rw-r--r--include/datetime.php99
-rwxr-xr-xinclude/dba/dba_driver.php86
-rwxr-xr-xinclude/dba/dba_mysql.php67
-rwxr-xr-xinclude/dba/dba_mysqli.php86
-rwxr-xr-xinclude/dba/dba_pdo.php56
-rw-r--r--include/dba/dba_postgres.php117
-rw-r--r--include/event.php13
-rw-r--r--include/features.php113
-rw-r--r--include/feedutils.php311
-rw-r--r--include/html2bbcode.php17
-rw-r--r--include/hubloc.php18
-rw-r--r--include/import.php5
-rwxr-xr-xinclude/items.php70
-rw-r--r--include/js_strings.php14
-rw-r--r--include/language.php35
-rw-r--r--include/nav.php36
-rw-r--r--include/network.php17
-rwxr-xr-xinclude/plugin.php160
-rw-r--r--include/queue_fn.php29
-rw-r--r--include/socgraph.php16
-rw-r--r--include/taxonomy.php19
-rw-r--r--include/text.php184
-rw-r--r--include/zid.php18
-rw-r--r--include/zot.php228
-rw-r--r--install/schema_mysql.sql30
-rw-r--r--install/schema_postgres.sql14
-rw-r--r--install/update.php3072
-rw-r--r--library/Mobile_Detect/Mobile_Detect.php221
-rw-r--r--library/Smarty/COPYING.lib165
-rw-r--r--library/Smarty/NEW_FEATURES.txt133
-rw-r--r--library/Smarty/change_log.txt2864
-rw-r--r--library/Smarty/libs/Autoloader.php124
-rw-r--r--library/Smarty/libs/Smarty.class.php1482
-rw-r--r--library/Smarty/libs/SmartyBC.class.php455
-rw-r--r--library/Smarty/libs/plugins/block.textformat.php110
-rw-r--r--library/Smarty/libs/plugins/function.counter.php78
-rw-r--r--library/Smarty/libs/plugins/function.cycle.php107
-rw-r--r--library/Smarty/libs/plugins/function.fetch.php221
-rw-r--r--library/Smarty/libs/plugins/function.html_checkboxes.php237
-rw-r--r--library/Smarty/libs/plugins/function.html_image.php163
-rw-r--r--library/Smarty/libs/plugins/function.html_options.php196
-rw-r--r--library/Smarty/libs/plugins/function.html_radios.php221
-rw-r--r--library/Smarty/libs/plugins/function.html_select_date.php387
-rw-r--r--library/Smarty/libs/plugins/function.html_select_time.php364
-rw-r--r--library/Smarty/libs/plugins/function.html_table.php176
-rw-r--r--library/Smarty/libs/plugins/function.mailto.php155
-rw-r--r--library/Smarty/libs/plugins/function.math.php91
-rw-r--r--library/Smarty/libs/plugins/modifier.capitalize.php90
-rw-r--r--library/Smarty/libs/plugins/modifier.date_format.php65
-rw-r--r--library/Smarty/libs/plugins/modifier.debug_print_var.php116
-rw-r--r--library/Smarty/libs/plugins/modifier.escape.php198
-rw-r--r--library/Smarty/libs/plugins/modifier.regex_replace.php58
-rw-r--r--library/Smarty/libs/plugins/modifier.replace.php34
-rw-r--r--library/Smarty/libs/plugins/modifier.truncate.php64
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_characters.php32
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php27
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_sentences.php27
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_words.php31
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.default.php35
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.escape.php126
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.from_charset.php33
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.indent.php33
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.lower.php31
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.string_format.php25
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.strip.php33
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.strip_tags.php29
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.to_charset.php33
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.unescape.php50
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.upper.php29
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.wordwrap.php47
-rw-r--r--library/Smarty/libs/plugins/outputfilter.trimwhitespace.php90
-rw-r--r--library/Smarty/libs/plugins/shared.escape_special_chars.php53
-rw-r--r--library/Smarty/libs/plugins/shared.literal_compiler_param.php35
-rw-r--r--library/Smarty/libs/plugins/shared.make_timestamp.php43
-rw-r--r--library/Smarty/libs/plugins/shared.mb_str_replace.php55
-rw-r--r--library/Smarty/libs/plugins/shared.mb_wordwrap.php73
-rw-r--r--library/Smarty/libs/sysplugins/smarty_cacheresource.php223
-rw-r--r--library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php281
-rw-r--r--library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php513
-rw-r--r--library/Smarty/libs/sysplugins/smarty_data.php68
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php225
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_append.php50
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php98
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_block.php292
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_break.php77
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_call.php89
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php117
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php104
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php77
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php41
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php71
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php134
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_for.php169
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php347
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_function.php210
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_if.php252
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_include.php366
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php111
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php151
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php40
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php89
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php220
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php72
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php155
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php91
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php84
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php209
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php156
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php119
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php79
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php126
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php39
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_section.php454
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php70
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php46
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_while.php108
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compilebase.php178
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php194
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php699
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php1010
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_data.php240
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_debug.php430
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php126
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php157
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php51
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php42
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_append.php74
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php50
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php36
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php43
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php40
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php44
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php43
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php124
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php41
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php32
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php111
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_configload.php182
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php44
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php37
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php58
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php35
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php35
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php44
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php62
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php114
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php77
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php111
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php49
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php39
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php46
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php42
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php43
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php72
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php88
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php71
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php50
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php44
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php70
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php41
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php38
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php42
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php40
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php42
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php40
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php41
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php40
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php51
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php88
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php69
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php128
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php96
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php124
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_file.php179
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_php.php108
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php99
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php81
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_string.php97
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php67
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php94
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php69
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php47
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php180
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php30
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php233
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php203
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php97
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php170
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php55
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php86
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php33
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php90
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php169
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_template.php376
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templatebase.php316
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php1170
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php1135
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templateparser.php2833
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_testinstall.php604
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_undefined.php48
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource.php270
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_recompiled.php47
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php79
-rw-r--r--library/Smarty/libs/sysplugins/smarty_security.php715
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_cached.php246
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_compiled.php297
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_config.php97
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_resource_base.php155
-rw-r--r--library/Smarty/libs/sysplugins/smarty_template_source.php267
-rw-r--r--library/Smarty/libs/sysplugins/smarty_variable.php47
-rw-r--r--library/Smarty/libs/sysplugins/smartycompilerexception.php39
-rw-r--r--library/Smarty/libs/sysplugins/smartyexception.php15
-rw-r--r--library/bootstrap/css/bootstrap-grid.css1271
-rw-r--r--library/bootstrap/css/bootstrap-grid.css.map2
-rw-r--r--library/bootstrap/css/bootstrap-grid.min.css7
-rw-r--r--library/bootstrap/css/bootstrap-grid.min.css.map2
-rw-r--r--library/bootstrap/css/bootstrap-reboot.css58
-rw-r--r--library/bootstrap/css/bootstrap-reboot.css.map2
-rw-r--r--library/bootstrap/css/bootstrap-reboot.min.css8
-rw-r--r--library/bootstrap/css/bootstrap-reboot.min.css.map2
-rw-r--r--library/bootstrap/css/bootstrap.css4996
-rw-r--r--library/bootstrap/css/bootstrap.css.map2
-rw-r--r--library/bootstrap/css/bootstrap.min.css8
-rw-r--r--library/bootstrap/css/bootstrap.min.css.map2
-rw-r--r--library/bootstrap/js/bootstrap.bundle.js6328
-rw-r--r--library/bootstrap/js/bootstrap.bundle.js.map1
-rw-r--r--library/bootstrap/js/bootstrap.bundle.min.js7
-rw-r--r--library/bootstrap/js/bootstrap.bundle.min.js.map1
-rw-r--r--library/bootstrap/js/bootstrap.js3287
-rw-r--r--library/bootstrap/js/bootstrap.js.map1
-rw-r--r--library/bootstrap/js/bootstrap.min.js11
-rw-r--r--library/bootstrap/js/bootstrap.min.js.map1
-rw-r--r--library/cropper/cropper.css182
-rw-r--r--library/cropper/cropper.html228
-rw-r--r--library/cropper/cropper.js566
-rw-r--r--library/cropper/cropper.uncompressed.js1331
-rw-r--r--library/cropper/lib/builder.js101
-rw-r--r--library/cropper/lib/controls.js815
-rw-r--r--library/cropper/lib/dragdrop.js915
-rw-r--r--library/cropper/lib/effects.js958
-rw-r--r--library/cropper/lib/prototype.js2006
-rw-r--r--library/cropper/lib/scriptaculous.js47
-rw-r--r--library/cropper/lib/slider.js283
-rw-r--r--library/cropper/lib/unittest.js383
-rw-r--r--library/cropper/licence.txt12
-rw-r--r--library/cropper/marqueeHoriz.gifbin1125 -> 0 bytes
-rw-r--r--library/cropper/marqueeVert.gifbin1141 -> 0 bytes
-rw-r--r--library/cropper/tests/castle.jpgbin34429 -> 0 bytes
-rw-r--r--library/cropper/tests/castleMed.jpgbin50584 -> 0 bytes
-rw-r--r--library/cropper/tests/example-Basic.htm106
-rw-r--r--library/cropper/tests/example-CSS-Absolute.htm162
-rw-r--r--library/cropper/tests/example-CSS-Float.htm124
-rw-r--r--library/cropper/tests/example-CSS-Relative.htm116
-rw-r--r--library/cropper/tests/example-CoordsOnLoad.htm108
-rw-r--r--library/cropper/tests/example-CoordsOnLoadWithRatio.htm109
-rw-r--r--library/cropper/tests/example-Dimensions.htm225
-rw-r--r--library/cropper/tests/example-DynamicImage.htm203
-rw-r--r--library/cropper/tests/example-FixedRatio.htm104
-rw-r--r--library/cropper/tests/example-MinimumDimensions.htm105
-rw-r--r--library/cropper/tests/example-MinimumWidth.htm105
-rw-r--r--library/cropper/tests/example-Preview.htm117
-rw-r--r--library/cropper/tests/poppy.jpgbin18338 -> 0 bytes
-rw-r--r--library/cropper/tests/staticHTMLStructure.htm236
-rw-r--r--library/cropperjs/.babelrc10
-rw-r--r--library/cropperjs/.editorconfig9
-rw-r--r--library/cropperjs/.eslintrc13
-rw-r--r--library/cropperjs/.travis.yml7
-rw-r--r--library/cropperjs/CHANGELOG.md218
-rw-r--r--library/cropperjs/CONTRIBUTING.md35
-rw-r--r--library/cropperjs/ISSUE_TEMPLATE.md21
-rw-r--r--library/cropperjs/LICENSE21
-rw-r--r--library/cropperjs/README.md1028
-rw-r--r--library/cropperjs/dist/cropper.common.js3760
-rw-r--r--library/cropperjs/dist/cropper.css306
-rw-r--r--library/cropperjs/dist/cropper.esm.js3758
-rw-r--r--library/cropperjs/dist/cropper.js3766
-rw-r--r--library/cropperjs/dist/cropper.min.css9
-rw-r--r--library/cropperjs/dist/cropper.min.js10
-rw-r--r--library/cropperjs/docs/css/cropper.css306
-rw-r--r--library/cropperjs/docs/css/main.css252
-rw-r--r--library/cropperjs/docs/images/data.jpgbin0 -> 16534 bytes
-rw-r--r--library/cropperjs/docs/images/layers.jpgbin0 -> 26921 bytes
-rw-r--r--library/cropperjs/docs/images/picture-2.jpgbin0 -> 182998 bytes
-rw-r--r--library/cropperjs/docs/images/picture-3.jpgbin0 -> 224777 bytes
-rw-r--r--library/cropperjs/docs/images/picture.jpgbin0 -> 157356 bytes
-rw-r--r--library/cropperjs/docs/index.html578
-rw-r--r--library/cropperjs/docs/js/cropper.js3766
-rw-r--r--library/cropperjs/docs/js/main.js298
-rw-r--r--library/cropperjs/examples/a-range-of-aspect-ratio.html71
-rw-r--r--library/cropperjs/examples/crop-a-round-image.html103
-rw-r--r--library/cropperjs/examples/crop-cross-origin-image.html49
-rw-r--r--library/cropperjs/examples/crop-on-canvas.html64
-rw-r--r--library/cropperjs/examples/cropper-in-modal.html76
-rw-r--r--library/cropperjs/examples/customize-preview.html123
-rw-r--r--library/cropperjs/examples/fixed-crop-box.html48
-rw-r--r--library/cropperjs/examples/full-crop-box.html48
-rw-r--r--library/cropperjs/examples/mask-an-image.html123
-rw-r--r--library/cropperjs/examples/multiple-croppers.html48
-rw-r--r--library/cropperjs/examples/responsive-container.html49
-rw-r--r--library/cropperjs/package-lock.json9111
-rw-r--r--library/cropperjs/package.json76
-rw-r--r--library/cropperjs/postcss.config.js14
-rw-r--r--library/cropperjs/rollup.config.js50
-rw-r--r--library/cropperjs/src/css/cropper.css290
-rw-r--r--library/cropperjs/src/images/bg.pngbin0 -> 168 bytes
-rw-r--r--library/cropperjs/src/js/change.js471
-rw-r--r--library/cropperjs/src/js/constants.js56
-rw-r--r--library/cropperjs/src/js/cropper.js421
-rw-r--r--library/cropperjs/src/js/defaults.js99
-rw-r--r--library/cropperjs/src/js/events.js111
-rw-r--r--library/cropperjs/src/js/handlers.js212
-rw-r--r--library/cropperjs/src/js/methods.js842
-rw-r--r--library/cropperjs/src/js/preview.js142
-rw-r--r--library/cropperjs/src/js/render.js495
-rw-r--r--library/cropperjs/src/js/template.js27
-rw-r--r--library/cropperjs/src/js/utilities.js985
-rw-r--r--library/cropperjs/test/css/main.css9
-rw-r--r--library/cropperjs/test/events/crop.js21
-rw-r--r--library/cropperjs/test/events/cropend.js24
-rw-r--r--library/cropperjs/test/events/cropmove.js24
-rw-r--r--library/cropperjs/test/events/cropstart.js56
-rw-r--r--library/cropperjs/test/events/ready.js15
-rw-r--r--library/cropperjs/test/events/zoom.js46
-rw-r--r--library/cropperjs/test/index.html90
-rw-r--r--library/cropperjs/test/js/main.js74
-rw-r--r--library/cropperjs/test/methods/clear.js29
-rw-r--r--library/cropperjs/test/methods/crop.js24
-rw-r--r--library/cropperjs/test/methods/destroy.js22
-rw-r--r--library/cropperjs/test/methods/disable.js60
-rw-r--r--library/cropperjs/test/methods/enable.js23
-rw-r--r--library/cropperjs/test/methods/getCanvasData.js23
-rw-r--r--library/cropperjs/test/methods/getContainerData.js19
-rw-r--r--library/cropperjs/test/methods/getCropBoxData.js21
-rw-r--r--library/cropperjs/test/methods/getCroppedCanvas.js33
-rw-r--r--library/cropperjs/test/methods/getData.js46
-rw-r--r--library/cropperjs/test/methods/getImageData.js31
-rw-r--r--library/cropperjs/test/methods/move.js20
-rw-r--r--library/cropperjs/test/methods/moveTo.js19
-rw-r--r--library/cropperjs/test/methods/replace.js23
-rw-r--r--library/cropperjs/test/methods/reset.js35
-rw-r--r--library/cropperjs/test/methods/rotate.js19
-rw-r--r--library/cropperjs/test/methods/rotateTo.js20
-rw-r--r--library/cropperjs/test/methods/scale.js19
-rw-r--r--library/cropperjs/test/methods/scaleX.js18
-rw-r--r--library/cropperjs/test/methods/scaleY.js18
-rw-r--r--library/cropperjs/test/methods/setAspectRatio.js20
-rw-r--r--library/cropperjs/test/methods/setCanvasData.js34
-rw-r--r--library/cropperjs/test/methods/setCropBoxData.js36
-rw-r--r--library/cropperjs/test/methods/setData.js36
-rw-r--r--library/cropperjs/test/methods/setDragMode.js27
-rw-r--r--library/cropperjs/test/methods/zoom.js20
-rw-r--r--library/cropperjs/test/methods/zoomTo.js21
-rw-r--r--library/cropperjs/test/options/aspectRatio.js39
-rw-r--r--library/cropperjs/test/options/autoCrop.js39
-rw-r--r--library/cropperjs/test/options/background.js40
-rw-r--r--library/cropperjs/test/options/center.js41
-rw-r--r--library/cropperjs/test/options/checkCrossOrigin.js67
-rw-r--r--library/cropperjs/test/options/checkOrientation.js43
-rw-r--r--library/cropperjs/test/options/crop.js21
-rw-r--r--library/cropperjs/test/options/cropBoxMovable.js41
-rw-r--r--library/cropperjs/test/options/cropBoxResizable.js65
-rw-r--r--library/cropperjs/test/options/cropend.js24
-rw-r--r--library/cropperjs/test/options/cropmove.js24
-rw-r--r--library/cropperjs/test/options/cropstart.js56
-rw-r--r--library/cropperjs/test/options/data.js35
-rw-r--r--library/cropperjs/test/options/dragMode.js60
-rw-r--r--library/cropperjs/test/options/guides.js43
-rw-r--r--library/cropperjs/test/options/highlight.js41
-rw-r--r--library/cropperjs/test/options/minCanvasHeight.js23
-rw-r--r--library/cropperjs/test/options/minCanvasWidth.js23
-rw-r--r--library/cropperjs/test/options/minContainerHeight.js21
-rw-r--r--library/cropperjs/test/options/minContainerWidth.js21
-rw-r--r--library/cropperjs/test/options/minCropBoxHeight.js23
-rw-r--r--library/cropperjs/test/options/minCropBoxWidth.js23
-rw-r--r--library/cropperjs/test/options/modal.js39
-rw-r--r--library/cropperjs/test/options/movable.js45
-rw-r--r--library/cropperjs/test/options/ready.js15
-rw-r--r--library/cropperjs/test/options/rotatable.js39
-rw-r--r--library/cropperjs/test/options/scalable.js43
-rw-r--r--library/cropperjs/test/options/toggleDragModeOnDblclick.js45
-rw-r--r--library/cropperjs/test/options/viewMode.js100
-rw-r--r--library/cropperjs/test/options/zoom.js46
-rw-r--r--library/cropperjs/test/options/zoomOnWheel.js47
-rw-r--r--library/cropperjs/test/options/zoomable.js51
-rw-r--r--library/font_awesome/.gitignore33
-rw-r--r--library/font_awesome/.npmignore42
-rw-r--r--library/font_awesome/CONTRIBUTING.md106
-rw-r--r--library/font_awesome/Gemfile8
-rw-r--r--library/font_awesome/Gemfile.lock68
-rw-r--r--library/font_awesome/HELP-US-OUT.txt7
-rw-r--r--library/font_awesome/README.md106
-rw-r--r--library/font_awesome/_config.yml60
-rw-r--r--library/font_awesome/bower.json22
-rw-r--r--library/font_awesome/component.json21
-rw-r--r--library/font_awesome/composer.json27
-rw-r--r--library/font_awesome/css/font-awesome.css2337
-rw-r--r--library/font_awesome/css/font-awesome.css.map7
-rw-r--r--library/font_awesome/css/font-awesome.min.css4
-rw-r--r--library/font_awesome/fonts/FontAwesome.otfbin134808 -> 0 bytes
-rw-r--r--library/font_awesome/fonts/fontawesome-webfont.eotbin165742 -> 0 bytes
-rw-r--r--library/font_awesome/fonts/fontawesome-webfont.svg2671
-rw-r--r--library/font_awesome/fonts/fontawesome-webfont.ttfbin165548 -> 0 bytes
-rw-r--r--library/font_awesome/fonts/fontawesome-webfont.woffbin98024 -> 0 bytes
-rw-r--r--library/font_awesome/fonts/fontawesome-webfont.woff2bin77160 -> 0 bytes
-rw-r--r--library/font_awesome/less/animated.less34
-rw-r--r--library/font_awesome/less/bordered-pulled.less25
-rw-r--r--library/font_awesome/less/core.less12
-rw-r--r--library/font_awesome/less/fixed-width.less6
-rw-r--r--library/font_awesome/less/font-awesome.less18
-rw-r--r--library/font_awesome/less/icons.less789
-rw-r--r--library/font_awesome/less/larger.less13
-rw-r--r--library/font_awesome/less/list.less19
-rw-r--r--library/font_awesome/less/mixins.less60
-rw-r--r--library/font_awesome/less/path.less15
-rw-r--r--library/font_awesome/less/rotated-flipped.less20
-rw-r--r--library/font_awesome/less/screen-reader.less5
-rw-r--r--library/font_awesome/less/stacked.less20
-rw-r--r--library/font_awesome/less/variables.less800
-rw-r--r--library/font_awesome/package.json44
-rw-r--r--library/font_awesome/scss/_animated.scss34
-rw-r--r--library/font_awesome/scss/_bordered-pulled.scss25
-rw-r--r--library/font_awesome/scss/_core.scss12
-rw-r--r--library/font_awesome/scss/_fixed-width.scss6
-rw-r--r--library/font_awesome/scss/_icons.scss789
-rw-r--r--library/font_awesome/scss/_larger.scss13
-rw-r--r--library/font_awesome/scss/_list.scss19
-rw-r--r--library/font_awesome/scss/_mixins.scss60
-rw-r--r--library/font_awesome/scss/_path.scss15
-rw-r--r--library/font_awesome/scss/_rotated-flipped.scss20
-rw-r--r--library/font_awesome/scss/_screen-reader.scss5
-rw-r--r--library/font_awesome/scss/_stacked.scss20
-rw-r--r--library/font_awesome/scss/_variables.scss800
-rw-r--r--library/font_awesome/scss/font-awesome.scss18
-rw-r--r--library/font_awesome/src/3.2.1/CNAME1
-rw-r--r--library/font_awesome/src/3.2.1/Makefile36
-rw-r--r--library/font_awesome/src/3.2.1/assets/css/prettify.css30
-rw-r--r--library/font_awesome/src/3.2.1/assets/css/pygments.css71
-rw-r--r--library/font_awesome/src/3.2.1/assets/css/site.css1154
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome.zipbin276410 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.css1203
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.min.css384
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.css1479
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.min.css403
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/font/FontAwesome.otfbin61896 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.eotbin37405 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.svg399
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.ttfbin79076 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.woffbin43572 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/bootstrap.less84
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/core.less129
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/extras.less93
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome-ie7.less1953
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome.less33
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/icons.less381
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/mixins.less48
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/path.less14
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/less/variables.less735
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_bootstrap.scss84
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_core.scss129
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_extras.scss93
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_icons.scss381
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_mixins.scss48
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_path.scss14
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/_variables.scss734
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome-ie7.scss1953
-rw-r--r--library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome.scss33
-rw-r--r--library/font_awesome/src/3.2.1/assets/img/contribution-sample.pngbin2290 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/img/fort_awesome.jpgbin114822 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings-white.pngbin8777 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings.pngbin12764 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/img/icon-flag.pdf1355
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.min.js8
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.swfbin1635 -> 0 bytes
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/backbone.min.js37
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/bootstrap-2.3.1.min.js6
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/bootstrap-222.min.js6
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/jquery-1.7.1.min.js4
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/prettify.min.js28
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/site.js38
-rw-r--r--library/font_awesome/src/3.2.1/assets/js/underscore.min.js31
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/accordion.less34
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/alerts.less79
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/bootstrap.less63
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/breadcrumbs.less24
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/button-groups.less229
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/buttons.less228
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/carousel.less158
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/close.less32
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/code.less61
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/component-animations.less22
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/dropdowns.less248
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/forms.less690
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/grid.less21
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/hero-unit.less25
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/labels-badges.less84
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/layouts.less16
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/media.less55
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/mixins.less702
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/modals.less95
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navbar.less497
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navs.less409
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pager.less43
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pagination.less123
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/popovers.less133
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/progress-bars.less122
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/reset.less216
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-1200px-min.less28
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-767px-max.less193
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-768px-979px.less19
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-navbar.less189
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-utilities.less59
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive.less48
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/scaffolding.less53
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/sprites.less197
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tables.less244
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/thumbnails.less53
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tooltip.less70
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/type.less247
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/utilities.less30
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/variables.less301
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/wells.less29
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/lazy.less85
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/mixins.less58
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/responsive-1200px-min.less56
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/responsive-767px-max.less83
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/responsive-768px-979px.less67
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/responsive-navbar.less11
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/responsive.less53
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/site.less352
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/sticky-footer.less17
-rw-r--r--library/font_awesome/src/3.2.1/assets/less/variables.less347
-rw-r--r--library/font_awesome/src/3.2.1/cheatsheet/index.html2388
-rw-r--r--library/font_awesome/src/3.2.1/community/index.html363
-rw-r--r--library/font_awesome/src/3.2.1/design.html1
-rw-r--r--library/font_awesome/src/3.2.1/examples/index.html680
-rw-r--r--library/font_awesome/src/3.2.1/get-started/index.html308
-rw-r--r--library/font_awesome/src/3.2.1/icon/adjust/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/adn/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/align-center/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/align-justify/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/align-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/align-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ambulance/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/anchor/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/android/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/angle-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/angle-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/angle-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/angle-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/apple/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/archive/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/arrow-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/arrow-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/arrow-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/arrow-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/asterisk/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/backward/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ban-circle/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bar-chart/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/barcode/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/beaker/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/beer/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bell-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bell/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bitbucket-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bitbucket/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bold/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bolt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/book/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bookmark-empty/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bookmark/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/briefcase/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/btc/index.html215
-rw-r--r--library/font_awesome/src/3.2.1/icon/bug/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/building/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bullhorn/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/bullseye/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/calendar-empty/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/calendar/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/camera-retro/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/camera/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/caret-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/caret-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/caret-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/caret-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/certificate/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/check-empty/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/check-minus/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/check-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/check/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-sign-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-sign-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-sign-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-sign-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/chevron-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/circle-arrow-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/circle-arrow-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/circle-arrow-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/circle-arrow-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/circle-blank/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/circle/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/cloud-download/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/cloud-upload/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/cloud/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/cny/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/code-fork/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/code/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/coffee/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/cog/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/cogs/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/collapse-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/collapse-top/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/collapse/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/columns/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/comment-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/comment/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/comments-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/comments/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/compass/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/copy/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/credit-card/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/crop/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/css3/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/cut/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/dashboard/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/desktop/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/double-angle-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/double-angle-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/double-angle-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/double-angle-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/download-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/download/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/dribbble/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/dropbox/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/edit-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/edit/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/eject/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ellipsis-horizontal/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ellipsis-vertical/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/envelope-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/envelope/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/eraser/index.html210
-rw-r--r--library/font_awesome/src/3.2.1/icon/eur/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/exchange/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/exclamation-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/exclamation/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/expand-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/expand/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/external-link-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/external-link/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/eye-close/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/eye-open/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/facebook-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/facebook/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/facetime-video/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/fast-backward/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/fast-forward/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/female/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/fighter-jet/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/file-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/file-text-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/file-text/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/file/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/film/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/filter/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/fire-extinguisher/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/fire/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/flag-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/flag-checkered/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/flag/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/flickr/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/folder-close-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/folder-close/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/folder-open-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/folder-open/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/font/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/food/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/forward/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/foursquare/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/frown/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/fullscreen/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/gamepad/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/gbp/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/gift/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/github-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/github-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/github/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/gittip/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/glass/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/globe/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/google-plus-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/google-plus/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/group/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/h-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/hand-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/hand-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/hand-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/hand-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/hdd/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/headphones/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/heart-empty/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/heart/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/home/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/hospital/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/html5/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/inbox/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/indent-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/indent-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/info-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/info/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/inr/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/instagram/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/italic/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/jpy/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/key/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/keyboard/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/krw/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/laptop/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/leaf/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/legal/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/lemon/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/level-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/level-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/lightbulb/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/link/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/linkedin-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/linkedin/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/linux/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/list-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/list-ol/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/list-ul/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/list/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/location-arrow/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/lock/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/long-arrow-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/long-arrow-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/long-arrow-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/long-arrow-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/magic/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/magnet/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/mail-reply-all/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/male/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/map-marker/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/maxcdn/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/medkit/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/meh/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/microphone-off/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/microphone/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/minus-sign-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/minus-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/minus/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/mobile-phone/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/money/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/moon/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/move/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/music/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/off/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/ok-circle/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ok-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ok/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/paper-clip/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/paste/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/pause/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/pencil/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/phone-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/phone/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/picture/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/pinterest-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/pinterest/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/plane/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/play-circle/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/play-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/play/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/plus-sign-alt/index.html210
-rw-r--r--library/font_awesome/src/3.2.1/icon/plus-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/plus/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/print/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/pushpin/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/puzzle-piece/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/qrcode/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/question-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/question/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/quote-left/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/quote-right/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/random/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/refresh/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/remove-circle/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/remove-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/remove/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/renren/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/reorder/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/repeat/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/reply-all/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/reply/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/resize-full/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/resize-horizontal/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/resize-small/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/resize-vertical/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/retweet/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/road/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/rocket/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/rss-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/rss/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/save/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/screenshot/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/search/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/share-alt/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/share-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/share/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/shield/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/shopping-cart/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sign-blank/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/signal/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/signin/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/signout/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sitemap/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/skype/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/smile/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-by-alphabet/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-by-attributes/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-by-order-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-by-order/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sort/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/spinner/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/stackexchange/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/star-empty/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/star-half-empty/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/star-half/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/star/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/step-backward/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/step-forward/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/stethoscope/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/stop/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/strikethrough/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/subscript/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/suitcase/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/sun/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/superscript/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/table/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tablet/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tag/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tags/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tasks/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/terminal/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/text-height/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/text-width/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/th-large/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/th-list/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/th/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/thumbs-down-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/thumbs-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/thumbs-up-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/thumbs-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/ticket/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/time/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tint/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/trash/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/trello/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/trophy/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/truck/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tumblr-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/tumblr/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/twitter-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/twitter/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/umbrella/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/underline/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/undo/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/unlink/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/unlock-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/unlock/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/upload-alt/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/upload/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/usd/index.html213
-rw-r--r--library/font_awesome/src/3.2.1/icon/user-md/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/user/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/vk/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/volume-down/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/volume-off/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/volume-up/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/warning-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/weibo/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/windows/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/wrench/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/xing-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/xing/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/youtube-play/index.html210
-rw-r--r--library/font_awesome/src/3.2.1/icon/youtube-sign/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/youtube/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/zoom-in/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icon/zoom-out/index.html208
-rw-r--r--library/font_awesome/src/3.2.1/icons.yml2590
-rw-r--r--library/font_awesome/src/3.2.1/icons/index.html1211
-rw-r--r--library/font_awesome/src/3.2.1/index.html329
-rw-r--r--library/font_awesome/src/3.2.1/license/index.html270
-rw-r--r--library/font_awesome/src/3.2.1/test/index.html1056
-rw-r--r--library/font_awesome/src/3.2.1/whats-new/index.html442
-rw-r--r--library/font_awesome/src/CNAME1
-rw-r--r--library/font_awesome/src/Makefile40
-rw-r--r--library/font_awesome/src/README.md-nobuild108
-rw-r--r--library/font_awesome/src/_includes/accessibility/accessibility-facdn.html21
-rw-r--r--library/font_awesome/src/_includes/accessibility/accessibility-manual.html121
-rw-r--r--library/font_awesome/src/_includes/accessibility/background.html15
-rw-r--r--library/font_awesome/src/_includes/accessibility/cta-cdn-ally.html11
-rw-r--r--library/font_awesome/src/_includes/accessibility/other.html17
-rw-r--r--library/font_awesome/src/_includes/ads/fusion.html1
-rw-r--r--library/font_awesome/src/_includes/brand-adblock-warning.html5
-rw-r--r--library/font_awesome/src/_includes/brand-license.html6
-rw-r--r--library/font_awesome/src/_includes/code/core.less6
-rw-r--r--library/font_awesome/src/_includes/code/core.scss6
-rw-r--r--library/font_awesome/src/_includes/code/license.css4
-rw-r--r--library/font_awesome/src/_includes/community/getting-support.html22
-rw-r--r--library/font_awesome/src/_includes/community/project-milestones.html7
-rw-r--r--library/font_awesome/src/_includes/community/reporting-bugs.html18
-rw-r--r--library/font_awesome/src/_includes/community/requesting-new-icons.html29
-rw-r--r--library/font_awesome/src/_includes/community/submitting-pull-requests.html13
-rw-r--r--library/font_awesome/src/_includes/examples/accessible.html101
-rw-r--r--library/font_awesome/src/_includes/examples/animated.html60
-rw-r--r--library/font_awesome/src/_includes/examples/basic.html39
-rw-r--r--library/font_awesome/src/_includes/examples/bootstrap.html111
-rw-r--r--library/font_awesome/src/_includes/examples/bordered-pulled.html30
-rw-r--r--library/font_awesome/src/_includes/examples/custom.html16
-rw-r--r--library/font_awesome/src/_includes/examples/fixed-width.html33
-rw-r--r--library/font_awesome/src/_includes/examples/larger.html40
-rw-r--r--library/font_awesome/src/_includes/examples/list.html30
-rw-r--r--library/font_awesome/src/_includes/examples/rotated-flipped.html34
-rw-r--r--library/font_awesome/src/_includes/examples/stacked.html65
-rw-r--r--library/font_awesome/src/_includes/footer.html36
-rw-r--r--library/font_awesome/src/_includes/icons/accessibility.html12
-rw-r--r--library/font_awesome/src/_includes/icons/brand.html19
-rw-r--r--library/font_awesome/src/_includes/icons/chart.html12
-rw-r--r--library/font_awesome/src/_includes/icons/currency.html12
-rw-r--r--library/font_awesome/src/_includes/icons/directional.html12
-rw-r--r--library/font_awesome/src/_includes/icons/file-type.html12
-rw-r--r--library/font_awesome/src/_includes/icons/form-control.html11
-rw-r--r--library/font_awesome/src/_includes/icons/gender.html12
-rw-r--r--library/font_awesome/src/_includes/icons/hand.html12
-rw-r--r--library/font_awesome/src/_includes/icons/medical.html12
-rw-r--r--library/font_awesome/src/_includes/icons/new.html18
-rw-r--r--library/font_awesome/src/_includes/icons/payment.html12
-rw-r--r--library/font_awesome/src/_includes/icons/spinner.html22
-rw-r--r--library/font_awesome/src/_includes/icons/text-editor.html12
-rw-r--r--library/font_awesome/src/_includes/icons/transportation.html12
-rw-r--r--library/font_awesome/src/_includes/icons/video-player.html12
-rw-r--r--library/font_awesome/src/_includes/icons/web-application.html12
-rw-r--r--library/font_awesome/src/_includes/jumbotron-carousel.html59
-rw-r--r--library/font_awesome/src/_includes/jumbotron.html19
-rw-r--r--library/font_awesome/src/_includes/modals/download.html58
-rw-r--r--library/font_awesome/src/_includes/modals/kickstarter.html24
-rw-r--r--library/font_awesome/src/_includes/navbar.html127
-rw-r--r--library/font_awesome/src/_includes/new-features.html29
-rw-r--r--library/font_awesome/src/_includes/new-naming.html157
-rw-r--r--library/font_awesome/src/_includes/new-upgrading.html10
-rw-r--r--library/font_awesome/src/_includes/products/camera-retro-tee.html31
-rw-r--r--library/font_awesome/src/_includes/products/classics-tee.html31
-rw-r--r--library/font_awesome/src/_includes/products/cta-suggestions.html20
-rw-r--r--library/font_awesome/src/_includes/products/fa-ther-tee.html29
-rw-r--r--library/font_awesome/src/_includes/products/green-logo-tee.html31
-rw-r--r--library/font_awesome/src/_includes/products/old-skool-tee.html31
-rw-r--r--library/font_awesome/src/_includes/products/rock-paper-scissors-lizard-spock-tee.html27
-rw-r--r--library/font_awesome/src/_includes/products/space-shuttle-tee.html31
-rw-r--r--library/font_awesome/src/_includes/products/white-logo-tee.html35
-rw-r--r--library/font_awesome/src/_includes/stripe-ad.html6
-rw-r--r--library/font_awesome/src/_includes/stripe-social.html35
-rw-r--r--library/font_awesome/src/_includes/tell-me-thanks.html22
-rw-r--r--library/font_awesome/src/_includes/tests/rotated-flipped-inside-anchor.html6
-rw-r--r--library/font_awesome/src/_includes/tests/rotated-flipped-inside-btn.html6
-rw-r--r--library/font_awesome/src/_includes/tests/rotated-flipped.html6
-rw-r--r--library/font_awesome/src/_includes/tests/stacked-inside-anchor.html69
-rw-r--r--library/font_awesome/src/_includes/tests/stacked-with-text.html4
-rw-r--r--library/font_awesome/src/_includes/tests/stacked.html58
-rw-r--r--library/font_awesome/src/_includes/thanks-to.html26
-rw-r--r--library/font_awesome/src/_includes/why.html42
-rw-r--r--library/font_awesome/src/_layouts/base.html88
-rw-r--r--library/font_awesome/src/_layouts/icon.html79
-rw-r--r--library/font_awesome/src/_layouts/survey.html47
-rw-r--r--library/font_awesome/src/_plugins/flatten_icon_filters.rb38
-rw-r--r--library/font_awesome/src/_plugins/icon_page_generator.rb45
-rw-r--r--library/font_awesome/src/_plugins/site.rb142
-rw-r--r--library/font_awesome/src/accessibility.html39
-rw-r--r--library/font_awesome/src/assets/css/prettify.css30
-rw-r--r--library/font_awesome/src/assets/css/pygments.css71
-rw-r--r--library/font_awesome/src/assets/font-awesome/HELP-US-OUT.txt7
-rw-r--r--library/font_awesome/src/assets/font-awesome/fonts/FontAwesome.otfbin134808 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eotbin165742 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg2671
-rw-r--r--library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttfbin165548 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woffbin98024 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff2bin77160 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/animated.less37
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/bordered-pulled.less28
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/core.less9
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/fixed-width.less9
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/font-awesome.less17
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/icons.less7
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/larger.less16
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/list.less22
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/mixins.less56
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/path.less15
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/rotated-flipped.less23
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/screen-reader.less5
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/stacked.less23
-rw-r--r--library/font_awesome/src/assets/font-awesome/less/variables.less17
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_animated.scss37
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_bordered-pulled.scss28
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_core.scss9
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_fixed-width.scss9
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_icons.scss7
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_larger.scss16
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_list.scss22
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_mixins.scss56
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_path.scss15
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_rotated-flipped.scss23
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_screen-reader.scss5
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_stacked.scss23
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/_variables.scss17
-rw-r--r--library/font_awesome/src/assets/font-awesome/scss/font-awesome.scss17
-rw-r--r--library/font_awesome/src/assets/img/algolia.pngbin72993 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/img/logo-themeisle.pngbin14209 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/img/logo-wpbeginner.pngbin8268 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.min.js8
-rw-r--r--library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.swfbin1635 -> 0 bytes
-rw-r--r--library/font_awesome/src/assets/js/html5shiv.js8
-rw-r--r--library/font_awesome/src/assets/js/monetization.js1
-rw-r--r--library/font_awesome/src/assets/js/prettify.min.js28
-rw-r--r--library/font_awesome/src/assets/js/respond.min.js6
-rw-r--r--library/font_awesome/src/assets/js/search.js92
-rw-r--r--library/font_awesome/src/assets/js/site.js89
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/.csscomb.json304
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/.csslintrc19
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/alerts.less73
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/badges.less66
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/bootstrap.less56
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/breadcrumbs.less26
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/button-groups.less244
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/buttons.less166
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/carousel.less269
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/close.less34
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/code.less69
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/component-animations.less33
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/dropdowns.less216
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/forms.less613
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/glyphicons.less305
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/grid.less84
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/input-groups.less167
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/jumbotron.less52
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/labels.less64
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/list-group.less130
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/media.less66
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins.less40
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/alerts.less14
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/background-variant.less9
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/border-radius.less18
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/buttons.less68
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/center-block.less7
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/clearfix.less22
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/forms.less85
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/gradients.less59
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid-framework.less91
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid.less122
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/hide-text.less21
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/image.less33
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/labels.less12
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/list-group.less30
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-divider.less10
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-vertical-align.less9
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/opacity.less8
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/pagination.less24
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/panels.less24
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/progress-bar.less10
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-filter.less8
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-text.less18
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/resize.less6
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/responsive-visibility.less15
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/size.less10
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/tab-focus.less9
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/table-row.less28
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-emphasis.less9
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-overflow.less8
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/vendor-prefixes.less227
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/modals.less150
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/navbar.less660
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/navs.less242
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/normalize.less424
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/pager.less54
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/pagination.less89
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/panels.less271
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/popovers.less131
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/print.less101
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/progress-bars.less87
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-embed.less35
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-utilities.less194
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/scaffolding.less161
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/tables.less234
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/theme.less291
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/thumbnails.less36
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/tooltip.less101
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/type.less302
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/utilities.less55
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/variables.less869
-rw-r--r--library/font_awesome/src/assets/less/bootstrap-3.3.5/wells.less29
-rw-r--r--library/font_awesome/src/assets/less/gandy-grid/grid.less43
-rw-r--r--library/font_awesome/src/assets/less/gandy-grid/mixins.less18
-rw-r--r--library/font_awesome/src/assets/less/site.less45
-rw-r--r--library/font_awesome/src/assets/less/site/algolia.less12
-rw-r--r--library/font_awesome/src/assets/less/site/banner-ad.less270
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/alerts.less5
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/buttons.less3
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/jumbotron.less87
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/labels.less21
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/modals.less6
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/navbar.less179
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/panels.less15
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/tooltip.less8
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/type.less26
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/variables.less171
-rw-r--r--library/font_awesome/src/assets/less/site/bootstrap/wells.less10
-rw-r--r--library/font_awesome/src/assets/less/site/bsap-ad.less15
-rw-r--r--library/font_awesome/src/assets/less/site/example-rating.less25
-rw-r--r--library/font_awesome/src/assets/less/site/feature-list.less19
-rw-r--r--library/font_awesome/src/assets/less/site/fontawesome-icon-list.less33
-rw-r--r--library/font_awesome/src/assets/less/site/footer.less55
-rw-r--r--library/font_awesome/src/assets/less/site/fusion-ad.less27
-rw-r--r--library/font_awesome/src/assets/less/site/jumbotron-carousel.less71
-rw-r--r--library/font_awesome/src/assets/less/site/kickstarter.less3
-rw-r--r--library/font_awesome/src/assets/less/site/layout.less1
-rw-r--r--library/font_awesome/src/assets/less/site/lazy.less113
-rw-r--r--library/font_awesome/src/assets/less/site/responsive/screen-lg.less58
-rw-r--r--library/font_awesome/src/assets/less/site/responsive/screen-md.less3
-rw-r--r--library/font_awesome/src/assets/less/site/responsive/screen-sm-up.less18
-rw-r--r--library/font_awesome/src/assets/less/site/responsive/screen-sm.less49
-rw-r--r--library/font_awesome/src/assets/less/site/responsive/screen-xs.less95
-rw-r--r--library/font_awesome/src/assets/less/site/search.less40
-rw-r--r--library/font_awesome/src/assets/less/site/social-buttons.less19
-rw-r--r--library/font_awesome/src/assets/less/site/store.less115
-rw-r--r--library/font_awesome/src/assets/less/site/stripe-ad.less4
-rw-r--r--library/font_awesome/src/assets/less/site/sumome.less4
-rw-r--r--library/font_awesome/src/assets/less/site/textured-bg.less20
-rw-r--r--library/font_awesome/src/assets/less/site/views.less50
-rw-r--r--library/font_awesome/src/cdn/error.html64
-rw-r--r--library/font_awesome/src/cdn/success.html65
-rw-r--r--library/font_awesome/src/cheatsheet.html35
-rw-r--r--library/font_awesome/src/community.html34
-rw-r--r--library/font_awesome/src/design.html1
-rw-r--r--library/font_awesome/src/examples.html43
-rw-r--r--library/font_awesome/src/get-started.html263
-rw-r--r--library/font_awesome/src/icons.html98
-rw-r--r--library/font_awesome/src/icons.yml6540
-rw-r--r--library/font_awesome/src/index.html24
-rw-r--r--library/font_awesome/src/license.html72
-rw-r--r--library/font_awesome/src/store.html63
-rw-r--r--library/font_awesome/src/survey.html7
-rw-r--r--library/font_awesome/src/test/2.3.2.html824
-rw-r--r--library/font_awesome/src/test/all.html55
-rw-r--r--library/font_awesome/src/test/glyphicons.html795
-rw-r--r--library/font_awesome/src/test/height/4.4.0.html62
-rw-r--r--library/font_awesome/src/test/height/4.5.0.html62
-rw-r--r--library/font_awesome/src/test/height/current.html62
-rw-r--r--library/font_awesome/src/test/index.html800
-rw-r--r--library/font_awesome/src/thanks.html29
-rw-r--r--library/font_awesome/src/whats-new.html43
-rw-r--r--library/fork-awesome/css/fork-awesome.css2410
-rw-r--r--library/fork-awesome/css/fork-awesome.min.css4
-rw-r--r--library/fork-awesome/css/fork-awesome.min.css.map1
-rw-r--r--library/fork-awesome/fonts/forkawesome-webfont.eotbin0 -> 174246 bytes
-rw-r--r--library/fork-awesome/fonts/forkawesome-webfont.svg2644
-rw-r--r--library/fork-awesome/fonts/forkawesome-webfont.ttfbin0 -> 174056 bytes
-rw-r--r--library/fork-awesome/fonts/forkawesome-webfont.woffbin0 -> 104140 bytes
-rw-r--r--library/fork-awesome/fonts/forkawesome-webfont.woff2bin0 -> 82580 bytes
-rw-r--r--library/popper/popper.min.js4
-rw-r--r--tests/phpunit-pgsql.xml11
-rw-r--r--tests/phpunit.xml.dist11
-rwxr-xr-xtests/travis/prepare_mysql.sh12
-rwxr-xr-xtests/travis/prepare_pgsql.sh13
-rw-r--r--tests/unit/AutonameTest.php7
-rw-r--r--tests/unit/DatabaseTestCase.php68
-rw-r--r--tests/unit/includes/dba/DBATest.php67
-rw-r--r--tests/unit/includes/dba/_files/account.yml9
-rw-r--r--tests/unit/includes/dba/dba_pdoTest.php189
-rw-r--r--util/hmessages.po2959
-rw-r--r--vendor/bshaffer/oauth2-server-php/CHANGELOG.md20
-rw-r--r--vendor/bshaffer/oauth2-server-php/README.md2
-rw-r--r--vendor/bshaffer/oauth2-server-php/composer.json4
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php12
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php13
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php48
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php139
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php37
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php49
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php29
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php74
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php27
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php23
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php58
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php48
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php35
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php41
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php47
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php63
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php46
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php39
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php40
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php21
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php10
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php30
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php14
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php58
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php13
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php18
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php14
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php9
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php70
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php23
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php134
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php31
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php64
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php11
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php5
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php12
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php79
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php5
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php40
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php19
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php283
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php33
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php12
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php230
-rw-r--r--[-rwxr-xr-x]vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php318
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php16
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php4
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php45
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php4
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php3
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php7
-rw-r--r--[-rwxr-xr-x]vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php4
-rw-r--r--[-rwxr-xr-x]vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php0
-rw-r--r--vendor/composer/ClassLoader.php19
-rw-r--r--vendor/composer/autoload_classmap.php1
-rw-r--r--vendor/composer/autoload_files.php1
-rw-r--r--vendor/composer/autoload_real.php2
-rw-r--r--vendor/composer/autoload_static.php49
-rw-r--r--vendor/composer/installed.json761
-rw-r--r--vendor/league/html-to-markdown/CHANGELOG.md25
-rw-r--r--vendor/league/html-to-markdown/README.md8
-rw-r--r--vendor/league/html-to-markdown/composer.json2
-rw-r--r--vendor/league/html-to-markdown/src/Converter/EmphasisConverter.php2
-rw-r--r--vendor/league/html-to-markdown/src/Converter/ListItemConverter.php26
-rw-r--r--vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php3
-rw-r--r--vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php23
-rw-r--r--vendor/league/html-to-markdown/src/HtmlConverter.php3
-rw-r--r--vendor/sabre/vobject/.travis.yml4
-rw-r--r--vendor/sabre/vobject/CHANGELOG.md9
-rw-r--r--vendor/sabre/vobject/README.md12
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/bench.php0
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/fetch_windows_zones.php0
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/generateicalendardata.php0
-rw-r--r--[-rwxr-xr-x]vendor/sabre/vobject/bin/mergeduplicates.php0
-rw-r--r--vendor/sabre/vobject/composer.json2
-rw-r--r--vendor/sabre/vobject/lib/Component.php17
-rw-r--r--vendor/sabre/vobject/lib/Component/VCard.php5
-rw-r--r--vendor/sabre/vobject/lib/Version.php2
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/exchangezones.php1
-rw-r--r--vendor/simplepie/simplepie/.travis.yml21
-rw-r--r--[-rwxr-xr-x]vendor/simplepie/simplepie/library/SimplePie.php58
-rw-r--r--[-rwxr-xr-x]vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php0
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/File.php3
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php21
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Item.php30
-rw-r--r--vendor/simplepie/simplepie/library/SimplePie/Parser.php63
-rw-r--r--[-rwxr-xr-x]vendor/simplepie/simplepie/library/SimplePie/Registry.php0
-rw-r--r--vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt29
-rw-r--r--vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt87
-rw-r--r--vendor/smarty/smarty/LICENSE179
-rw-r--r--vendor/smarty/smarty/NEW_FEATURES.txt239
-rw-r--r--vendor/smarty/smarty/README (renamed from library/Smarty/README)0
-rw-r--r--vendor/smarty/smarty/README.md65
-rw-r--r--vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt109
-rw-r--r--vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt24
-rw-r--r--vendor/smarty/smarty/SMARTY_3.1_NOTES.txt306
-rw-r--r--vendor/smarty/smarty/change_log.txt3201
-rw-r--r--vendor/smarty/smarty/demo/configs/test.conf5
-rw-r--r--vendor/smarty/smarty/demo/index.php30
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.apc.php83
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php101
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php160
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php327
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php43
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.extendsall.php65
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysql.php83
-rw-r--r--vendor/smarty/smarty/demo/plugins/resource.mysqls.php63
-rw-r--r--vendor/smarty/smarty/demo/templates/footer.tpl2
-rw-r--r--vendor/smarty/smarty/demo/templates/header.tpl5
-rw-r--r--vendor/smarty/smarty/demo/templates/index.tpl87
-rw-r--r--vendor/smarty/smarty/libs/Autoloader.php110
-rw-r--r--vendor/smarty/smarty/libs/Smarty.class.php1549
-rw-r--r--vendor/smarty/smarty/libs/SmartyBC.class.php455
-rw-r--r--vendor/smarty/smarty/libs/bootstrap.php17
-rw-r--r--vendor/smarty/smarty/libs/debug.tpl (renamed from library/Smarty/libs/debug.tpl)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/block.textformat.php114
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.counter.php73
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.cycle.php105
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.fetch.php221
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php251
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_image.php166
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_options.php206
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_radios.php234
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_select_date.php388
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_select_time.php363
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.html_table.php176
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.mailto.php153
-rw-r--r--vendor/smarty/smarty/libs/plugins/function.math.php109
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.capitalize.php101
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.date_format.php67
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php112
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.escape.php207
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php58
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.replace.php35
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.spacify.php (renamed from library/Smarty/libs/plugins/modifier.spacify.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifier.truncate.php66
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php (renamed from library/Smarty/libs/plugins/modifiercompiler.cat.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php32
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php27
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php27
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php32
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php35
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php115
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php33
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php33
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php31
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php (renamed from library/Smarty/libs/plugins/modifiercompiler.noprint.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php25
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php33
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php29
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php33
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php50
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php29
-rw-r--r--vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php51
-rw-r--r--vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php89
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php34
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php36
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php45
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php55
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php (renamed from library/Smarty/libs/plugins/shared.mb_unicode.php)0
-rw-r--r--vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php75
-rw-r--r--vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php (renamed from library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php220
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php275
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php507
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_data.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php90
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php220
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php51
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php94
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php202
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php54
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php73
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php110
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php89
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php112
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php98
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php144
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php170
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php344
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php216
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php211
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php344
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php111
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php155
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php64
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php122
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php221
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php74
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php157
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php86
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php216
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php162
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php82
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php126
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php469
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php70
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php46
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php100
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php196
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php197
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php732
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php1022
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php285
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php426
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php171
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php52
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php74
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php50
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php36
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_clearallassign.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php122
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php33
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php119
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php183
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php37
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php34
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php58
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php35
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php35
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php47
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php62
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php116
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php77
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php111
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php51
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php46
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php43
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php82
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php88
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php72
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php51
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php44
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php70
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php38
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php41
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php40
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php53
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_code.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php95
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php69
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php128
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php (renamed from library/Smarty/libs/sysplugins/smarty_internal_parsetree_text.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php95
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php125
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php176
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php106
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php99
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php80
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php107
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php136
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php161
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php98
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php69
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php149
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php182
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php241
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php56
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php171
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php165
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php115
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php91
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php170
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php692
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php355
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php1365
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php1169
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php2831
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php598
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php68
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource.php254
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php (renamed from library/Smarty/libs/sysplugins/smarty_resource_custom.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php92
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php49
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_security.php730
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php256
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php255
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php99
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php158
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php210
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php (renamed from library/Smarty/libs/sysplugins/smarty_undefined_variable.php)0
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_variable.php48
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php42
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smartyexception.php16
-rw-r--r--view/css/conversation.css10
-rw-r--r--view/css/mod_admin.css18
-rw-r--r--view/css/mod_connections.css8
-rw-r--r--view/css/mod_profile_photo.css10
-rw-r--r--view/css/mod_viewconnections.css6
-rw-r--r--view/css/mod_wiki.css21
-rw-r--r--view/css/navbar_tucson.css3
-rw-r--r--view/css/widgets.css32
l---------view/de1
-rw-r--r--view/de-de/hmessages.po14077
-rw-r--r--view/de-de/hstrings.php3208
-rw-r--r--view/de-de/htconfig.tpl (renamed from view/de/htconfig.tpl)0
-rw-r--r--view/de-de/lostpass_eml.tpl (renamed from view/de/lostpass_eml.tpl)0
-rw-r--r--view/de-de/messages.po (renamed from view/de/messages.po)0
-rw-r--r--view/de-de/passchanged_eml.tpl (renamed from view/de/passchanged_eml.tpl)0
-rw-r--r--view/de-de/register_open_eml.tpl (renamed from view/de/register_open_eml.tpl)0
-rw-r--r--view/de-de/register_verify_eml.tpl (renamed from view/de/register_verify_eml.tpl)0
-rw-r--r--view/de-de/strings.php (renamed from view/de/strings.php)0
-rw-r--r--view/de-de/update_fail_eml.tpl (renamed from view/de/update_fail_eml.tpl)0
-rw-r--r--view/de/hmessages.po13859
-rw-r--r--view/de/hstrings.php3146
-rw-r--r--view/en-au/register_verify_member.tpl12
-rw-r--r--view/en-gb/register_verify_member.tpl12
-rw-r--r--view/en/register_verify_member.tpl7
-rw-r--r--view/es-es/hmessages.po3064
-rw-r--r--view/es-es/hstrings.php152
-rw-r--r--view/es-es/register_verify_member.tpl2
-rw-r--r--view/js/acl.js8
-rw-r--r--view/js/main.js278
-rw-r--r--view/js/mod_new_channel.js38
-rw-r--r--view/pdl/mod_admin.pdl1
-rw-r--r--view/pdl/mod_appman.pdl1
-rw-r--r--view/pdl/mod_apps.pdl1
-rw-r--r--view/pdl/mod_articles.pdl1
-rw-r--r--view/pdl/mod_blocks.pdl1
-rw-r--r--view/pdl/mod_cal.pdl1
-rw-r--r--view/pdl/mod_cards.pdl1
-rw-r--r--view/pdl/mod_cdav.pdl1
-rw-r--r--view/pdl/mod_channel.pdl1
-rw-r--r--view/pdl/mod_chanview.pdl1
-rw-r--r--view/pdl/mod_chat.pdl1
-rw-r--r--view/pdl/mod_cloud.pdl1
-rw-r--r--view/pdl/mod_common.pdl1
-rw-r--r--view/pdl/mod_connect.pdl1
-rw-r--r--view/pdl/mod_connections.pdl1
-rw-r--r--view/pdl/mod_connedit.pdl1
-rw-r--r--view/pdl/mod_defperms.pdl1
-rw-r--r--view/pdl/mod_directory.pdl1
-rw-r--r--view/pdl/mod_display.pdl1
-rw-r--r--view/pdl/mod_editblock.pdl1
-rw-r--r--view/pdl/mod_editlayout.pdl1
-rw-r--r--view/pdl/mod_editwebpage.pdl1
-rw-r--r--view/pdl/mod_events.pdl1
-rw-r--r--view/pdl/mod_go.pdl7
-rw-r--r--view/pdl/mod_group.pdl1
-rw-r--r--view/pdl/mod_help.pdl1
-rw-r--r--view/pdl/mod_hq.pdl1
-rw-r--r--view/pdl/mod_id.pdl1
-rw-r--r--view/pdl/mod_layouts.pdl1
-rw-r--r--view/pdl/mod_locs.pdl1
-rw-r--r--view/pdl/mod_mail.pdl1
-rw-r--r--view/pdl/mod_menu.pdl1
-rw-r--r--view/pdl/mod_message.pdl1
-rw-r--r--view/pdl/mod_mitem.pdl1
-rw-r--r--view/pdl/mod_moderate.pdl4
-rw-r--r--view/pdl/mod_network.pdl1
-rw-r--r--view/pdl/mod_photos.pdl1
-rw-r--r--view/pdl/mod_profile.pdl1
-rw-r--r--view/pdl/mod_profile_photo.pdl1
-rw-r--r--view/pdl/mod_profiles.pdl1
-rw-r--r--view/pdl/mod_profperm.pdl1
-rw-r--r--view/pdl/mod_pubstream.pdl1
-rw-r--r--view/pdl/mod_rate.pdl1
-rw-r--r--view/pdl/mod_ratings.pdl1
-rw-r--r--view/pdl/mod_search.pdl1
-rw-r--r--view/pdl/mod_settings.pdl1
-rw-r--r--view/pdl/mod_sharedwithme.pdl1
-rw-r--r--view/pdl/mod_sources.pdl1
-rw-r--r--view/pdl/mod_suggest.pdl1
-rw-r--r--view/pdl/mod_thing.pdl7
-rw-r--r--view/pdl/mod_uexport.pdl1
-rw-r--r--view/pdl/mod_viewconnections.pdl1
-rw-r--r--view/pdl/mod_webpages.pdl1
-rw-r--r--view/pdl/mod_wiki.pdl1
-rw-r--r--view/php/theme_init.php2
-rw-r--r--view/theme/redbasic/css/style.css39
-rw-r--r--view/theme/redbasic/img/screenshot.jpgbin199131 -> 0 bytes
-rw-r--r--view/theme/redbasic/img/screenshot.pngbin0 -> 131184 bytes
-rw-r--r--view/theme/redbasic/php/theme_init.php5
-rw-r--r--view/theme/redbasic/schema/dark.css45
-rwxr-xr-xview/tpl/abook_edit.tpl2
-rwxr-xr-xview/tpl/acl_selector.tpl10
-rwxr-xr-xview/tpl/admin_accounts.tpl4
-rw-r--r--view/tpl/admin_settings_features.tpl4
-rwxr-xr-xview/tpl/admin_site.tpl9
-rwxr-xr-xview/tpl/atom_feed.tpl2
-rw-r--r--view/tpl/cloud_header.tpl5
-rwxr-xr-xview/tpl/comment_item.tpl8
-rwxr-xr-xview/tpl/connection_template.tpl7
-rwxr-xr-xview/tpl/connections.tpl6
-rwxr-xr-xview/tpl/contact_template.tpl3
-rwxr-xr-xview/tpl/cover_photo.tpl104
-rwxr-xr-xview/tpl/cropbody.tpl38
-rwxr-xr-xview/tpl/cropcover.tpl39
-rwxr-xr-xview/tpl/crophead.tpl7
-rwxr-xr-xview/tpl/email_notify_html.tpl3
-rwxr-xr-xview/tpl/email_notify_text.tpl1
-rw-r--r--view/tpl/email_validation.tpl16
-rwxr-xr-xview/tpl/follow.tpl2
-rw-r--r--view/tpl/generic_addon_settings.tpl4
-rw-r--r--view/tpl/go.tpl16
-rw-r--r--view/tpl/hdr.tpl3
-rwxr-xr-xview/tpl/hq.tpl9
-rwxr-xr-xview/tpl/jot-header.tpl31
-rwxr-xr-xview/tpl/jot.tpl4
-rwxr-xr-xview/tpl/micropro_img.tpl2
-rwxr-xr-xview/tpl/navbar_default.tpl6
-rwxr-xr-xview/tpl/navbar_tucson.tpl170
-rwxr-xr-xview/tpl/new_channel.tpl4
-rw-r--r--view/tpl/new_member.tpl17
-rw-r--r--view/tpl/notifications_widget.tpl143
-rwxr-xr-xview/tpl/peoplefind.tpl4
-rwxr-xr-xview/tpl/profile_edit.tpl16
-rwxr-xr-xview/tpl/profile_photo.tpl112
-rwxr-xr-xview/tpl/profile_vcard.tpl2
-rwxr-xr-xview/tpl/register.tpl4
-rw-r--r--view/tpl/searchbox.tpl2
-rwxr-xr-xview/tpl/settings.tpl16
-rwxr-xr-xview/tpl/settings_addons.tpl1
-rwxr-xr-xview/tpl/settings_display.tpl17
-rwxr-xr-xview/tpl/settings_features.tpl4
-rw-r--r--view/tpl/settings_permcats.tpl2
-rw-r--r--view/tpl/wiki.tpl43
1979 files changed, 120539 insertions, 215307 deletions
diff --git a/.homeinstall/README.md b/.homeinstall/README.md
index 7e16e2c52..e479ab864 100644
--- a/.homeinstall/README.md
+++ b/.homeinstall/README.md
@@ -34,7 +34,7 @@ Software
## The basic steps (quick overview)
+ Register your own domain (for example at selfHOST) or a free subdomain (for example at freeDNS)
-+ Log on to your new debian (server)
++ Log on to your fresh Debian
- apt-get install git
- mkdir -p /var/www
- cd /var/www
@@ -44,7 +44,7 @@ Software
- nano hubzilla-config.txt
- Read the comments carefully
- Enter your values: db pass, domain, values for dyn DNS
- - Make sure your your external drive (for backups) is mounted
+ - Make sure your external drive (for backups) is mounted
- hubzilla-setup.sh as root
- ... wait, wait, wait until the script is finised
- reboot
diff --git a/CHANGELOG b/CHANGELOG
index 6e540a04d..ad5e004c8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,129 @@
+Hubzilla 3.2 (2018-03-09)
+ - Improve rendering of Readme files in plugin settings
+ - Add pdl file for mod moderate
+ - Update redbasic theme screenshot
+ - Restrict mail messages to max_import_size
+ - Add pdl file for mod thing
+ - Add federation property to webfinger
+ - Provide new member widget which sits beneath the notifications for the first 60 days after an account creation
+ - Rename Addon/Feature settings to Addon Settings
+ - Move privacy groups to the newly created Access Control and Permissions tab
+ - Move oauth_client management and guest access tokens to features rather than auto-enabling at various feature levels
+ - Change undo_post_tagging() to emit quoted tags rather than using underscore replacement if they contain spaces
+ - Require directory servers to be using some modern form of encryption
+ - Change icon set from font-awesome to fork-awesome
+ - Provide opt-out link and text with notification emails
+ - Alter image selection widget to accept/submit on choose (github issue #979)
+ - If hide_in_statistics is set, only include the total channels count and no other statistical info in siteinfo.json
+ - Mark connections where we do not have post_comments permissions with an no entry sign
+ - Click your own profile photo to change it if loged in
+ - Remove street address info from the default basic profile fields
+ - Handle error logging in on cloud page (post method not implemented)
+ - Cloud 'view-as-tiles' toggle wasn't available for guests and they are the most likely to prefer that view
+ - Provide DB compatibility for poll and voting implementations across several platforms
+ - Remove the unused ZotDriver and ProtoDriver classes
+ - Move dreport from zot to lib
+ - Move Zotlabs\Zot\Verify to Zotlabs\Lib\Verify as part of the zot6 re-org
+ - Add event resource_id to iconfig so Diaspora can search on it without looking inside JSON objects
+ - Trim non-existent/deprecated plugins from siteinfo plugin list
+ - Add 'Validate' button to new_channel page
+ - Do not show summary if it is equal to body
+ - Update code tag styling so bbcode [code] blocks and wiki markdown inline code render nicely
+ - Crypto improvements (use pkcs1_oaep_padding instead of the older pkcs1_padding)
+ - Refactor OAuth2Server a bit
+ - Refactor of the DB update system
+ - Extend the oauth2 storage driver so that we can use our own channel table
+ - Provide option to block the public stream unless authenticated
+ - Refactor shares and urn shares into activities
+ - Show likes and dislikes in notices if always_show_in_notices is set
+ - Add hidden config to disallow anonymous comments (github issue #972)
+ - Add flexibility to prefix/suffix string translations for jquery.timeago
+ - Make post titles searchable (github issue #975)
+ - Implement zot6 delivery
+ - Remove mobile_detect library
+ - Separate the parsing of author information from the parsing of item/activity information in feedutils
+ - Provide summaries in feeds under very limited cases
+ - Redirect to the email_validation page if login was attempted after account creation but prior to successful verification
+ - Iprove workflow for form based email validation when auto_channel_create is in effect
+ - Provide a default video image if nothing else is available
+ - Surface the ability to change the landing page after channel creation
+ - Create the 'go' module to present several possible things to do after channel creation
+ - Add unit test for dba_pdo driver class
+ - Add unit test for \DBA factory
+ - Usability improvements to registration/verification workflow
+ - Don't do any bbcode translation within code blocks (except baseurl, observer, and linefeeds)
+ - Improve browser language detection
+ - Remove unused prototype importer template and obsolete reflection cms importer
+ - Update to bootstrap 4 stable
+ - Implement caching of notifications in browser session storage
+ - Code cleanup and simplification in mod_like
+ - Implement new cropper library
+ - Better notifications for edit post/comments which may have been originally posted long ago
+ - Ensure filter words are not empty in include/items.php
+ - Change query in mod search to be compatible with postgres
+ - Provide channel list function in the zot api
+ - Remove deprecated 'qcomment' feature
+ - Simplify webserver logic flow
+ - Simplify interactions with the get_features hook
+ - Provide a local pubstream option (content from this site only)
+ - Simplify dir_tagadelic dramatically
+ - Surface the article feature
+ - Add summary bbcode tag
+ - Move markdown-in-posts/comments feature to plugin
+ - Support tables in markdown posts/comments
+
+
+ Bugfixes
+ - Fix javascript error if there are no notifications
+ - Fix some issues with friend suggestions on standalone sites with no 'suggestme' volunteers
+ - Fix unable to reset profile fields to defaults in admin/profs by emptying the textarea
+ â» Fix issues with accordions related to bootstrap upgrade
+ - Fix empty dob is set to the date of the first profile save
+ - Fix several email validation issues
+ - Fix issue if logged in locally and mod_display returns nothing owned by your uid; retry with known public uids rather than issue 'permission denied'
+ - Fix public stream app permission check to match the recent fixes to the Module
+ - Fix issues with delivery of edited posts to forums
+ - Fix autoname test
+ - Fix issue where self and pending connections were visible in connections when not loged in
+ - Fix bad query in mod defperms
+ - Fix issue where gnusocial likes were not recognised as like activity
+ - Fix manual queue invocation
+ - Fix unable to delete accounts using tickboxes on admin/accounts
+ - Fix a PHP7.2 warning when a channel has no cards
+ - Fix unable to delete permission groups with space in name (github issue #920)
+
+ Addons
+ Statistic: fix reporting of incorrect register policy in nodeinfo
+ Diaspora: diaspora_init_relay: calls diaspora_import_author with too many arguments
+ Pubcrawl: provide a system 'allowed' for to match the system setting for other protocols
+ Diaspora: fix issue with sending diaspora profile change messages over diaspora_v2
+ Diaspora: provide limited but hopefully adequate support for new Diaspora html5 audio/video
+ Pubcrawl: send zot context with follow requests
+ Pubcrawl: add video to the set of message types we process
+ Pubcrawl: support for activitypub media
+ Openclipatar: remove extra details for each image
+ Diaspora: initial work on event participation
+ Statistic: remove the friendica protocol from nodeinfo until it is fully implemented
+ Statistic: re-arrange the order of the .host-meta/nodeinfo links
+ Pubcrawl: add share verb to activitystreams translator
+ Pubcrawl: post public posts to syschannel
+ Statistics: fix legacy statistics.json interface
+ Gnusocial: improve error checking when processing a salmon message
+ Dirstats: fix sql syntax error
+ Pubcrawl: possibly reduce constraint violations for xchan_store_lowlevel (duplicate entry)
+ Diaspora: ensure we process Friendica-over-Diaspora yearless birthdays correctly
+ Chess: added simple history browsing controls to spectator view
+ Diaspora: support post/comment edits
+ Diaspora: don't redirect fetch requests for non-Diaspora wall-to-wall and forum posts unless they can be redirected to a Diaspora protocol site
+ Chess: added support for publicly visible games
+ Phpmailer: add quickstart notes
+ Chess: choose random color if no color is chosen
+ New Plugin: mdpost - markdown in posts/comments, migrated from core to addon
+ Diaspora: provide a configuration option to import the diaspora firehose, otherwise only import content matching subscribed tags
+ NSFW: load images only after click on the button
+ Twitter: provide configurable tweet length until such time as 280 becomes universal
+
+
Hubzilla 3.0 (2018-01-09)
- Updated homeinstall script
- Sort cloud directory by 1. is_dir and 2. name
diff --git a/LICENSE b/LICENSE
index 25c4bf1a3..03d45aca6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2017 the Hubzilla Community
+Copyright (c) 2010-2018 the Hubzilla Community
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/README.md b/README.md
index 54f80bebe..240d976f3 100644
--- a/README.md
+++ b/README.md
@@ -3,18 +3,18 @@
Hubzilla - Community Server
===========================
+
<p align="center" markdown="1">
<em><a href="https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
</p>
-
**What is Hubzilla?**
-Hubzilla is a general purpose communication server integrated with a web publishing system and a decentralised permission system. If this sounds like a bunch of technical mumbo-jumbo to you, just think of it as an independent platform for sharing stuff online.
+Hubzilla is a general purpose communication server integrated with a web publishing system and a decentralised permission system. If this sounds like a bunch of technical mumbo-jumbo to you, just think of it as an independent platform for sharing stuff online (publicly or privately).
Hubzilla contains some social network bits, some cloud storage bits, some blog and forum bits, and some content management bits. These are all integrated within a common privacy framework - and it is all decentralised.
-Everything you publish or share can be restricted to those channels and people you wish to share them with; and these permissions work completely invisibly - even with channels on different servers or other communications services.
+Everything you publish or share can be restricted to those channels and people you wish to share them with; and these permissions work completely invisibly - **even with channels on different servers or other communications services**.
Migration and live backups of your connections, settings, and everything you publish are built-in, so you never need worry about server failure.
diff --git a/Zotlabs/Access/AccessList.php b/Zotlabs/Access/AccessList.php
index 6471b0b1d..7cf7b5587 100644
--- a/Zotlabs/Access/AccessList.php
+++ b/Zotlabs/Access/AccessList.php
@@ -3,10 +3,14 @@
namespace Zotlabs\Access;
/**
- * @brief AccessList class.
+ * @brief AccessList class which represents individual content ACLs.
*
* A class to hold an AccessList object with allowed and denied contacts and
* groups.
+ *
+ * After evaluating @ref ::Zotlabs::Access::PermissionLimits "PermissionLimits"
+ * and @ref ::Zotlabs::Lib::Permcat "Permcat"s individual content ACLs are evaluated.
+ * These answer the question "Can Joe view *this* album/photo?".
*/
class AccessList {
/**
@@ -103,7 +107,7 @@ class AccessList {
* @brief Return an array consisting of the current access list components
* where the elements are directly storable.
*
- * @return Associative array with:
+ * @return array An associative array with:
* * \e string \b allow_cid => string of allowed cids
* * \e string \b allow_gid => string of allowed gids
* * \e string \b deny_cid => string of denied cids
diff --git a/Zotlabs/Access/PermissionLimits.php b/Zotlabs/Access/PermissionLimits.php
index 8caeedb91..1d15098fc 100644
--- a/Zotlabs/Access/PermissionLimits.php
+++ b/Zotlabs/Access/PermissionLimits.php
@@ -2,35 +2,92 @@
namespace Zotlabs\Access;
-use \Zotlabs\Lib as ZLib;
+use Zotlabs\Lib\PConfig;
+/**
+ * @brief Permission limits.
+ *
+ * Permission limits are a very high level permission setting. They are hard
+ * limits by design.
+ * "Who can view my photos (at all)?"
+ * "Who can post photos in my albums (at all)?"
+ *
+ * For viewing permissions we generally set these to 'anybody' and for write
+ * permissions we generally set them to 'those I allow', though many people
+ * restrict the viewing permissions further for things like 'Can view my connections'.
+ *
+ * People get confused enough by permissions that we wanted a place to set their
+ * privacy expectations once and be done with it.
+ *
+ * Connection related permissions like "Can Joe view my photos?" are handled by
+ * @ref ::Zotlabs::Lib::Permcat "Permcat" and inherit from the channel's Permission
+ * limits.
+ *
+ * @see Permissions
+ */
class PermissionLimits {
+ /**
+ * @brief Get standard permission limits.
+ *
+ * Viewing permissions and post_comments permission are set to 'anybody',
+ * other permissions are set to 'those I allow'.
+ *
+ * The list of permissions comes from Permissions::Perms().
+ *
+ * @return array
+ */
static public function Std_Limits() {
+ $limits = [];
$perms = Permissions::Perms();
- $limits = array();
+
+ $anon_comments = get_config('system','anonymous_comments',true);
+
foreach($perms as $k => $v) {
- if(strstr($k,'view') || $k === 'post_comments')
+ if(strstr($k, 'view') || ($k === 'post_comments' && $anon_comments))
$limits[$k] = PERMS_PUBLIC;
else
$limits[$k] = PERMS_SPECIFIC;
}
+
return $limits;
}
- static public function Set($channel_id,$perm,$perm_limit) {
- ZLib\PConfig::Set($channel_id,'perm_limits',$perm,$perm_limit);
+ /**
+ * @brief Sets a permission limit for a channel.
+ *
+ * @param int $channel_id
+ * @param string $perm
+ * @param int $perm_limit one of PERMS_* constants
+ */
+ static public function Set($channel_id, $perm, $perm_limit) {
+ PConfig::Set($channel_id, 'perm_limits', $perm, $perm_limit);
}
- static public function Get($channel_id,$perm = '') {
+ /**
+ * @brief Get a channel's permission limits.
+ *
+ * Return a channel's permission limits from PConfig. If $perm is set just
+ * return this permission limit, if not set, return an array with all
+ * permission limits.
+ *
+ * @param int $channel_id
+ * @param string $perm (optional)
+ * @return
+ * * \b boolean false if no perm_limits set for this channel
+ * * \b int if $perm is set, return one of PERMS_* constants for this permission
+ * * \b array with all permission limits, if $perm is not set
+ */
+ static public function Get($channel_id, $perm = '') {
if($perm) {
- return Zlib\PConfig::Get($channel_id,'perm_limits',$perm);
- }
- else {
- Zlib\PConfig::Load($channel_id);
- if(array_key_exists($channel_id,\App::$config) && array_key_exists('perm_limits',\App::$config[$channel_id]))
- return \App::$config[$channel_id]['perm_limits'];
- return false;
+ return PConfig::Get($channel_id, 'perm_limits', $perm);
}
- }
+
+ PConfig::Load($channel_id);
+ if(array_key_exists($channel_id, \App::$config)
+ && array_key_exists('perm_limits', \App::$config[$channel_id]))
+ return \App::$config[$channel_id]['perm_limits'];
+
+ return false;
+ }
} \ No newline at end of file
diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php
index ca6a7c08a..fa2368a92 100644
--- a/Zotlabs/Daemon/Notifier.php
+++ b/Zotlabs/Daemon/Notifier.php
@@ -90,8 +90,6 @@ class Notifier {
$item_id = $argv[2];
- $extra = (($argc > 3) ? $argv[3] : null);
-
if(! $item_id)
return;
@@ -315,7 +313,7 @@ class Notifier {
}
- if($target_item['id'] == $target_item['parent']) {
+ if($target_item['mid'] === $target_item['parent_mid']) {
$parent_item = $target_item;
$top_level_post = true;
}
@@ -620,8 +618,8 @@ class Notifier {
$packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
}
if($packet_type === 'keychange') {
- $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
$pmsg = get_pconfig($channel['channel_id'],'system','keychange');
+ $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
}
elseif($packet_type === 'request') {
$env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : '');
@@ -642,7 +640,21 @@ class Notifier {
}
else {
$env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : '');
- $packet = zot_build_packet($channel,'notify',$env,(($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
+
+ // currently zot6 delivery is only performed on normal items and not sync items or mail or anything else
+ // Eventually we will do this for all deliveries, but for now ensure this is precisely what we are dealing
+ // with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report
+ // to trigger dequeue'ing
+
+ $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item))) ? true : false);
+ if($z6) {
+ $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
+ }
+ else {
+ $packet = zot_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
+
+ }
+
queue_insert(
[
'hash' => $hash,
diff --git a/Zotlabs/Daemon/Queue.php b/Zotlabs/Daemon/Queue.php
index 17d150250..8f529ff13 100644
--- a/Zotlabs/Daemon/Queue.php
+++ b/Zotlabs/Daemon/Queue.php
@@ -13,10 +13,10 @@ class Queue {
require_once('include/bbcode.php');
- if(argc() > 1)
- $queue_id = argv(1);
+ if($argc > 1)
+ $queue_id = $argv[1];
else
- $queue_id = 0;
+ $queue_id = EMPTY_STR;
logger('queue: start');
diff --git a/Zotlabs/Identity/OAuth2Server.php b/Zotlabs/Identity/OAuth2Server.php
new file mode 100644
index 000000000..cbb4748fe
--- /dev/null
+++ b/Zotlabs/Identity/OAuth2Server.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Zotlabs\Identity;
+
+class OAuth2Server extends \OAuth2\Server {
+
+ public function __construct(OAuth2Storage $storage, $config = []) {
+
+ if(! is_array($config)) {
+ $config = [
+ 'use_openid_connect' => true,
+ 'issuer' => \Zotlabs\Lib\System::get_site_name()
+ ];
+ }
+
+ parent::__construct($storage, $config);
+
+ // Add the "Client Credentials" grant type (it is the simplest of the grant types)
+ $this->addGrantType(new \OAuth2\GrantType\ClientCredentials($storage));
+
+ // Add the "Authorization Code" grant type (this is where the oauth magic happens)
+ $this->addGrantType(new \OAuth2\GrantType\AuthorizationCode($storage));
+
+ $keyStorage = new \OAuth2\Storage\Memory( [
+ 'keys' => [
+ 'public_key' => get_config('system', 'pubkey'),
+ 'private_key' => get_config('system', 'prvkey')
+ ]
+ ]);
+
+ $this->addStorage($keyStorage, 'public_key');
+ }
+
+}
diff --git a/Zotlabs/Identity/OAuth2Storage.php b/Zotlabs/Identity/OAuth2Storage.php
new file mode 100644
index 000000000..bc6db565c
--- /dev/null
+++ b/Zotlabs/Identity/OAuth2Storage.php
@@ -0,0 +1,81 @@
+<?php
+
+namespace Zotlabs\Identity;
+
+
+class OAuth2Storage extends \OAuth2\Storage\Pdo {
+
+ /**
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
+ public function checkUserCredentials($username, $password)
+ {
+ if ($user = $this->getUser($username)) {
+ return $this->checkPassword($user, $password);
+ }
+
+ return false;
+ }
+
+ /**
+ * @param string $username
+ * @return array|bool
+ */
+ public function getUserDetails($username)
+ {
+ return $this->getUser($username);
+ }
+
+
+ /**
+ *
+ * @param array $user
+ * @param string $password
+ * @return bool
+ */
+ protected function checkPassword($user, $password)
+ {
+
+ $x = account_verify_password($user,$password);
+ return((array_key_exists('channel',$x) && ! empty($x['channel'])) ? true : false);
+
+ }
+
+ /**
+ * @param string $username
+ * @return array|bool
+ */
+ public function getUser($username)
+ {
+
+ $x = channelx_by_nick($username);
+ if(! $x) {
+ return false;
+ }
+
+ return( [
+ 'username' => $x['channel_address'],
+ 'user_id' => $x['channel_id'],
+ 'firstName' => $x['channel_name'],
+ 'lastName' => '',
+ 'password' => 'NotARealPassword'
+ ] );
+ }
+
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param string $username
+ * @param string $password
+ * @param string $firstName
+ * @param string $lastName
+ * @return bool
+ */
+ public function setUser($username, $password, $firstName = null, $lastName = null)
+ {
+ return true;
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
index 457b85b62..f91dc8e49 100644
--- a/Zotlabs/Lib/Apps.php
+++ b/Zotlabs/Lib/Apps.php
@@ -119,6 +119,7 @@ class Apps {
static public function parse_app_description($f,$translate = true) {
+
$ret = array();
$baseurl = z_root();
@@ -194,6 +195,10 @@ class Apps {
if(! is_public_profile())
unset($ret);
break;
+ case 'public_stream':
+ if(! can_view_public_stream())
+ unset($ret);
+ break;
case 'observer':
if(! $observer)
unset($ret);
@@ -221,6 +226,7 @@ class Apps {
static public function translate_system_apps(&$arr) {
$apps = array(
'Apps' => t('Apps'),
+ 'Articles' => t('Articles'),
'Cards' => t('Cards'),
'Admin' => t('Site Admin'),
'Report Bug' => t('Report Bug'),
@@ -345,6 +351,10 @@ class Apps {
if(! is_public_profile())
return '';
break;
+ case 'public_stream':
+ if(! can_view_public_stream())
+ return '';
+ break;
case 'observer':
$observer = \App::get_observer();
if(! $observer)
diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php
index f9f22ba3a..c00b8efb6 100644
--- a/Zotlabs/Lib/Config.php
+++ b/Zotlabs/Lib/Config.php
@@ -142,9 +142,9 @@ class Config {
/**
- * @brief Returns a value directly from the database configuration storage.
+ * @brief Returns a record directly from the database configuration storage.
*
- * This function queries directly the database and bypasses the chached storage
+ * This function queries directly the database and bypasses the cached storage
* from get_config($family, $key).
*
* @param string $family
diff --git a/Zotlabs/Lib/DB_Upgrade.php b/Zotlabs/Lib/DB_Upgrade.php
index 8f0488f6f..4038a2d53 100644
--- a/Zotlabs/Lib/DB_Upgrade.php
+++ b/Zotlabs/Lib/DB_Upgrade.php
@@ -10,22 +10,12 @@ class DB_Upgrade {
function __construct($db_revision) {
- $platform_name = System::get_platform_name();
+ $this->config_name = 'db_version';
+ $this->func_prefix = '_';
- $update_file = 'install/' . $platform_name . '/update.php';
- if(! file_exists($update_file)) {
- $update_file = 'install/update.php';
- $this->config_name = 'db_version';
- $this->func_prefix = 'update_r';
- }
- else {
- $this->config_name = $platform_name . '_db_version';
- $this->func_prefix = $platform_name . '_update_';
- }
-
- $build = get_config('system', $this->config_name, 0);
+ $build = get_config('system', 'db_version', 0);
if(! intval($build))
- $build = set_config('system', $this->config_name, $db_revision);
+ $build = set_config('system', 'db_version', $db_revision);
if($build == $db_revision) {
// Nothing to be done.
@@ -40,82 +30,78 @@ class DB_Upgrade {
$current = intval($db_revision);
- if(($stored < $current) && file_exists($update_file)) {
+ if($stored < $current) {
- Config::Load('database');
+ // The last update we performed was $stored.
+ // Start at $stored + 1 and continue until we have completed $current
- // We're reporting a different version than what is currently installed.
- // Run any existing update scripts to bring the database up to current.
-
- require_once($update_file);
+ for($x = $stored + 1; $x <= $current; $x ++) {
+ $s = '_' . $x;
+ $cls = '\\Zotlabs\Update\\' . $s ;
+ if(! class_exists($cls)) {
+ return;
+ }
- // make sure that boot.php and update.php are the same release, we might be
- // updating from git right this very second and the correct version of the update.php
- // file may not be here yet. This can happen on a very busy site.
+ // There could be a lot of processes running or about to run.
+ // We want exactly one process to run the update command.
+ // So store the fact that we're taking responsibility
+ // after first checking to see if somebody else already has.
- if($db_revision == UPDATE_VERSION) {
- for($x = $stored; $x < $current; $x ++) {
- $func = $this->func_prefix . $x;
- if(function_exists($func)) {
- // There could be a lot of processes running or about to run.
- // We want exactly one process to run the update command.
- // So store the fact that we're taking responsibility
- // after first checking to see if somebody else already has.
+ // If the update fails or times-out completely you may need to
+ // delete the config entry to try again.
- // If the update fails or times-out completely you may need to
- // delete the config entry to try again.
+ Config::Load('database');
- if(get_config('database', $func))
- break;
- set_config('database',$func, '1');
- // call the specific update
+ if(get_config('database', $s))
+ break;
+ set_config('database',$s, '1');
+
- $retval = $func();
- if($retval) {
+ $c = new $cls();
+ $retval = $c->run();
- // Prevent sending hundreds of thousands of emails by creating
- // a lockfile.
+ if($retval != UPDATE_SUCCESS) {
- $lockfile = 'store/[data]/mailsent';
+ // Prevent sending hundreds of thousands of emails by creating
+ // a lockfile.
- if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400)))
- return;
- @unlink($lockfile);
- //send the administrator an e-mail
- file_put_contents($lockfile, $x);
-
- $r = q("select account_language from account where account_email = '%s' limit 1",
- dbesc(\App::$config['system']['admin_email'])
- );
- push_lang(($r) ? $r[0]['account_language'] : 'en');
+ $lockfile = 'store/[data]/mailsent';
- z_mail(
+ if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400)))
+ return;
+ @unlink($lockfile);
+ //send the administrator an e-mail
+ file_put_contents($lockfile, $x);
+
+ $r = q("select account_language from account where account_email = '%s' limit 1",
+ dbesc(\App::$config['system']['admin_email'])
+ );
+ push_lang(($r) ? $r[0]['account_language'] : 'en');
+ z_mail(
+ [
+ 'toEmail' => \App::$config['system']['admin_email'],
+ 'messageSubject' => sprintf( t('Update Error at %s'), z_root()),
+ 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'),
[
- 'toEmail' => \App::$config['system']['admin_email'],
- 'messageSubject' => sprintf( t('Update Error at %s'), z_root()),
- 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'),
- [
- '$sitename' => \App::$config['system']['sitename'],
- '$siteurl' => z_root(),
- '$update' => $x,
- '$error' => sprintf( t('Update %s failed. See error logs.'), $x)
- ]
- )
+ '$sitename' => \App::$config['system']['sitename'],
+ '$siteurl' => z_root(),
+ '$update' => $x,
+ '$error' => sprintf( t('Update %s failed. See error logs.'), $x)
]
- );
-
- //try the logger
- logger('CRITICAL: Update Failed: ' . $x);
- pop_lang();
- }
- else {
- set_config('database',$func, 'success');
- }
- }
+ )
+ ]
+ );
+
+ //try the logger
+ logger('CRITICAL: Update Failed: ' . $x);
+ pop_lang();
+ }
+ else {
+ set_config('database',$s, 'success');
}
- set_config('system', $this->config_name, $db_revision);
}
}
+ set_config('system', 'db_version', $db_revision);
}
}
} \ No newline at end of file
diff --git a/Zotlabs/Lib/DReport.php b/Zotlabs/Lib/DReport.php
new file mode 100644
index 000000000..a68d6c18f
--- /dev/null
+++ b/Zotlabs/Lib/DReport.php
@@ -0,0 +1,55 @@
+<?php
+namespace Zotlabs\Lib;
+
+class DReport {
+
+ private $location;
+ private $sender;
+ private $recipient;
+ private $message_id;
+ private $status;
+ private $date;
+
+ function __construct($location,$sender,$recipient,$message_id,$status = 'deliver') {
+ $this->location = $location;
+ $this->sender = $sender;
+ $this->recipient = $recipient;
+ $this->message_id = $message_id;
+ $this->status = $status;
+ $this->date = datetime_convert();
+ }
+
+ function update($status) {
+ $this->status = $status;
+ $this->date = datetime_convert();
+ }
+
+ function addto_recipient($name) {
+ $this->recipient = $this->recipient . ' ' . $name;
+ }
+
+ function addto_update($status) {
+ $this->status = $this->status . ' ' . $status;
+ }
+
+
+ function set($arr) {
+ $this->location = $arr['location'];
+ $this->sender = $arr['sender'];
+ $this->recipient = $arr['recipient'];
+ $this->message_id = $arr['message_id'];
+ $this->status = $arr['status'];
+ $this->date = $arr['date'];
+ }
+
+ function get() {
+ return array(
+ 'location' => $this->location,
+ 'sender' => $this->sender,
+ 'recipient' => $this->recipient,
+ 'message_id' => $this->message_id,
+ 'status' => $this->status,
+ 'date' => $this->date
+ );
+ }
+}
diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php
index a7b4f28e8..61c98c881 100644
--- a/Zotlabs/Lib/Enotify.php
+++ b/Zotlabs/Lib/Enotify.php
@@ -63,7 +63,9 @@ class Enotify {
$thanks = t('Thank You,');
$sitename = get_config('system','sitename');
$site_admin = sprintf( t('%s Administrator'), $sitename);
-
+ $opt_out1 = sprintf( t('This email was sent by %1$s at %2$s.'), t('$Projectname'), \App::get_hostname());
+ $opt_out2 = sprintf( t('To stop receiving these messages, please adjust your Notification Settings at %s'), z_root() . '/settings');
+ $hopt_out2 = sprintf( t('To stop receiving these messages, please adjust your %s.'), '<a href="' . z_root() . '/settings' . '">' . t('Notification Settings') . '</a>');
$sender_name = $product;
$hostname = \App::get_hostname();
if(strpos($hostname,':'))
@@ -112,6 +114,8 @@ class Enotify {
}
+ $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
+
// e.g. "your post", "David's photo", etc.
$possess_desc = t('%s <!item_type!>');
@@ -128,18 +132,28 @@ class Enotify {
}
if ($params['type'] == NOTIFY_COMMENT) {
-// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
+ //logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
$moderated = (($params['item']['item_blocked'] == ITEM_MODERATED) ? true : false);
$itemlink = $params['link'];
- // ignore like/unlike activity on posts - they probably require a separate notification preference
+ $action = t('commented on');
+
+ if(array_key_exists('item',$params) && in_array($params['item']['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) {
+
+ if(! $always_show_in_notices) {
+ logger('notification: not a visible activity. Ignoring.');
+ pop_lang();
+ return;
+ }
+
+ if(activity_match($params['verb'], ACTIVITY_LIKE))
+ $action = t('liked');
+
+ if(activity_match($params['verb'], ACTIVITY_DISLIKE))
+ $action = t('disliked');
- if (array_key_exists('item',$params) && (! visible_activity($params['item']))) {
- logger('notification: not a visible activity. Ignoring.');
- pop_lang();
- return;
}
$parent_mid = $params['parent_mid'];
@@ -181,26 +195,29 @@ class Enotify {
//$possess_desc = str_replace('<!item_type!>',$possess_desc);
// "a post"
- $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]'),
+ $dest_str = sprintf(t('%1$s, %2$s %3$s [zrl=%4$s]a %5$s[/zrl]'),
$recip['channel_name'],
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $action,
$itemlink,
$item_post_type);
// "George Bull's post"
if($p)
- $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]%4$s\'s %5$s[/zrl]'),
+ $dest_str = sprintf(t('%1$s, %2$s %3$s [zrl=%4$s]%5$s\'s %6$s[/zrl]'),
$recip['channel_name'],
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $action,
$itemlink,
$p[0]['author']['xchan_name'],
$item_post_type);
// "your post"
if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
- $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]'),
+ $dest_str = sprintf(t('%1$s, %2$s %3$s [zrl=%4$s]your %5$s[/zrl]'),
$recip['channel_name'],
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $action,
$itemlink,
$item_post_type);
@@ -231,12 +248,12 @@ class Enotify {
$itemlink = $params['link'];
- // ignore like/unlike activity on posts - they probably require a separate notification preference
-
if (array_key_exists('item',$params) && (! activity_match($params['item']['verb'],ACTIVITY_LIKE))) {
- logger('notification: not a like activity. Ignoring.');
- pop_lang();
- return;
+ if(! $always_show_in_notices) {
+ logger('notification: not a visible activity. Ignoring.');
+ pop_lang();
+ return;
+ }
}
$parent_mid = $params['parent_mid'];
@@ -496,8 +513,6 @@ class Enotify {
// Another option would be to not add them to the DB, and change how emails are handled
// (probably would be better that way)
- $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
-
if (!$always_show_in_notices) {
if (($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) {
$seen = 1;
@@ -600,6 +615,9 @@ class Enotify {
$datarray['titemlink'] = $itemlink;
$datarray['thanks'] = $thanks;
$datarray['site_admin'] = $site_admin;
+ $datarray['opt_out1'] = $opt_out1;
+ $datarray['opt_out2'] = $opt_out2;
+ $datarray['hopt_out2'] = $hopt_out2;
$datarray['title'] = stripslashes($title);
$datarray['htmlversion'] = $htmlversion;
$datarray['textversion'] = $textversion;
@@ -657,6 +675,8 @@ class Enotify {
'$hitemlink' => $datarray['hitemlink'],
'$thanks' => $datarray['thanks'],
'$site_admin' => $datarray['site_admin'],
+ '$opt_out1' => $datarray['opt_out1'],
+ '$opt_out2' => $datarray['hopt_out2'],
'$title' => $datarray['title'],
'$htmlversion' => $datarray['htmlversion'],
));
@@ -677,6 +697,8 @@ class Enotify {
'$titemlink' => $datarray['titemlink'],
'$thanks' => $datarray['thanks'],
'$site_admin' => $datarray['site_admin'],
+ '$opt_out1' => $datarray['opt_out1'],
+ '$opt_out2' => $datarray['opt_out2'],
'$title' => $datarray['title'],
'$textversion' => $datarray['textversion'],
));
@@ -794,6 +816,20 @@ class Enotify {
: sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
}
+ $edit = false;
+
+ if($item['edited'] > $item['created']) {
+ if($item['item_thread_top']) {
+ $itemem_text = sprintf( t('edited a post dated %s'), relative_date($item['created']));
+ $edit = true;
+ }
+ else {
+ $itemem_text = sprintf( t('edited a comment dated %s'), relative_date($item['created']));
+ $edit = true;
+ }
+ }
+
+
// convert this logic into a json array just like the system notifications
return array(
@@ -801,7 +837,7 @@ class Enotify {
'name' => $item['author']['xchan_name'],
'url' => $item['author']['xchan_url'],
'photo' => $item['author']['xchan_photo_s'],
- 'when' => relative_date($item['created']),
+ 'when' => relative_date(($edit)? $item['edited'] : $item['created']),
'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ? 'b64.' . base64url_encode($item['thr_parent']) : 'b64.' . base64url_encode($item['mid'])),
'notify_id' => 'undefined',
diff --git a/Zotlabs/Lib/Img_filesize.php b/Zotlabs/Lib/Img_filesize.php
new file mode 100644
index 000000000..196697733
--- /dev/null
+++ b/Zotlabs/Lib/Img_filesize.php
@@ -0,0 +1,122 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+class Img_filesize {
+
+ private $url;
+
+ function __construct($url) {
+ $this->url = $url;
+ }
+
+ function getSize() {
+ $size = null;
+
+ if(stripos($this->url,z_root() . '/photo') !== false) {
+ $size = self::getLocalFileSize($this->url);
+ }
+ if(! $size) {
+ $size = getRemoteFileSize($this->url);
+ }
+
+ return $size;
+ }
+
+
+ static function getLocalFileSize($url) {
+
+ $fname = basename($url);
+ $resolution = 0;
+
+ if(strpos($fname,'.') !== false)
+ $fname = substr($fname,0,strpos($fname,'.'));
+
+ if(substr($fname,-2,1) == '-') {
+ $resolution = intval(substr($fname,-1,1));
+ $fname = substr($fname,0,-2);
+ }
+
+ $r = q("SELECT filesize FROM photo WHERE resource_id = '%s' AND imgscale = %d LIMIT 1",
+ dbesc($fname),
+ intval($resolution)
+ );
+ if($r) {
+ return $r[0]['filesize'];
+ }
+ return null;
+ }
+
+}
+
+/**
+ * Try to determine the size of a remote file by making an HTTP request for
+ * a byte range, or look for the content-length header in the response.
+ * The function aborts the transfer as soon as the size is found, or if no
+ * length headers are returned, it aborts the transfer.
+ *
+ * @return int|null null if size could not be determined, or length of content
+ */
+function getRemoteFileSize($url)
+{
+ $ch = curl_init($url);
+
+ $headers = array(
+ 'Range: bytes=0-1',
+ 'Connection: close',
+ );
+
+ $in_headers = true;
+ $size = null;
+
+ curl_setopt($ch, CURLOPT_HEADER, 1);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2450.0 Iron/46.0.2450.0');
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+ curl_setopt($ch, CURLOPT_VERBOSE, 0); // set to 1 to debug
+ curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'r'));
+
+ curl_setopt($ch, CURLOPT_HEADERFUNCTION, function($curl, $line) use (&$in_headers, &$size) {
+ $length = strlen($line);
+
+ if (trim($line) == '') {
+ $in_headers = false;
+ }
+
+ list($header, $content) = explode(':', $line, 2);
+ $header = strtolower(trim($header));
+
+ if ($header == 'content-range') {
+ // found a content-range header
+ list($rng, $s) = explode('/', $content, 2);
+ $size = (int)$s;
+ return 0; // aborts transfer
+ } else if ($header == 'content-length' && 206 != curl_getinfo($curl, CURLINFO_HTTP_CODE)) {
+ // found content-length header and this is not a 206 Partial Content response (range response)
+ $size = (int)$content;
+ return 0;
+ } else {
+ // continue
+ return $length;
+ }
+ });
+
+ curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) use ($in_headers) {
+ if (!$in_headers) {
+ // shouldn't be here unless we couldn't determine file size
+ // abort transfer
+ return 0;
+ }
+
+ // write function is also called when reading headers
+ return strlen($data);
+ });
+
+ curl_exec($ch);
+ curl_getinfo($ch);
+ curl_close($ch);
+
+ return $size;
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/MarkdownSoap.php b/Zotlabs/Lib/MarkdownSoap.php
index fa279b07c..a58a5753a 100644
--- a/Zotlabs/Lib/MarkdownSoap.php
+++ b/Zotlabs/Lib/MarkdownSoap.php
@@ -3,51 +3,66 @@
namespace Zotlabs\Lib;
/**
- * MarkdownSoap
+ * @brief MarkdownSoap class.
+ *
* Purify Markdown for storage
+ * @code{.php}
* $x = new MarkdownSoap($string_to_be_cleansed);
* $text = $x->clean();
- *
+ * @endcode
* What this does:
* 1. extracts code blocks and privately escapes them from processing
* 2. Run html purifier on the content
* 3. put back the code blocks
* 4. run htmlspecialchars on the entire content for safe storage
*
- * At render time:
+ * At render time:
+ * @code{.php}
* $markdown = \Zotlabs\Lib\MarkdownSoap::unescape($text);
* $html = \Michelf\MarkdownExtra::DefaultTransform($markdown);
+ * @endcode
*/
-
-
-
class MarkdownSoap {
+ /**
+ * @var string
+ */
+ private $str;
+ /**
+ * @var string
+ */
private $token;
- private $str;
function __construct($s) {
- $this->str = $s;
+ $this->str = $s;
$this->token = random_string(20);
}
-
function clean() {
$x = $this->extract_code($this->str);
$x = $this->purify($x);
- $x = $this->putback_code($x);
+ $x = $this->putback_code($x);
$x = $this->escape($x);
-
+
return $x;
}
+ /**
+ * @brief Extracts code blocks and privately escapes them from processing.
+ *
+ * @see encode_code()
+ * @see putback_code()
+ *
+ * @param string $s
+ * @return string
+ */
function extract_code($s) {
-
+
$text = preg_replace_callback('{
(?:\n\n|\A\n?)
( # $1 = the code block -- one or more lines, starting with a space/tab
@@ -62,7 +77,7 @@ class MarkdownSoap {
return $text;
}
-
+
function encode_code($matches) {
return $this->token . ';' . base64_encode($matches[0]) . ';' ;
}
@@ -71,8 +86,17 @@ class MarkdownSoap {
return base64_decode($matches[1]);
}
+ /**
+ * @brief Put back the code blocks.
+ *
+ * @see extract_code()
+ * @see decode_code()
+ *
+ * @param string $s
+ * @return string
+ */
function putback_code($s) {
- $text = preg_replace_callback('{' . $this->token . '\;(.*?)\;}xm',[ $this, 'decode_code' ], $s);
+ $text = preg_replace_callback('{' . $this->token . '\;(.*?)\;}xm', [ $this, 'decode_code' ], $s);
return $text;
}
@@ -84,20 +108,25 @@ class MarkdownSoap {
}
function protect_autolinks($s) {
- $s = preg_replace('/\<(https?\:\/\/)(.*?)\>/','[$1$2]($1$2)',$s);
+ $s = preg_replace('/\<(https?\:\/\/)(.*?)\>/', '[$1$2]($1$2)', $s);
return $s;
}
function unprotect_autolinks($s) {
return $s;
-
}
function escape($s) {
- return htmlspecialchars($s,ENT_QUOTES,'UTF-8',false);
+ return htmlspecialchars($s, ENT_QUOTES, 'UTF-8', false);
}
+ /**
+ * @brief Converts special HTML entities back to characters.
+ *
+ * @param string $s
+ * @return string
+ */
static public function unescape($s) {
- return htmlspecialchars_decode($s,ENT_QUOTES);
+ return htmlspecialchars_decode($s, ENT_QUOTES);
}
}
diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php
index 505ee2cfc..ca4aed9ed 100644
--- a/Zotlabs/Lib/Permcat.php
+++ b/Zotlabs/Lib/Permcat.php
@@ -2,12 +2,36 @@
namespace Zotlabs\Lib;
-use \Zotlabs\Access as Zaccess;
-
+use Zotlabs\Access\PermissionRoles;
+use Zotlabs\Access\Permissions;
+
+/**
+ * @brief Permission Categories. Permission rules for various classes of connections.
+ *
+ * Connection permissions answer the question "Can Joe view my photos?"
+ *
+ * Some permissions may be inherited from the channel's "privacy settings"
+ * (@ref ::Zotlabs::Access::PermissionLimits "PermissionLimits") "Who can view my
+ * photos (at all)?" which have higher priority than individual connection settings.
+ * We evaluate permission limits first, and then fall through to connection
+ * permissions if the permission limits didn't already make a definitive decision.
+ *
+ * After PermissionLimits and connection permissions are evaluated, individual
+ * content ACLs are evaluated (@ref ::Zotlabs::Access::AccessList "AccessList").
+ * These answer the question "Can Joe view *this* album/photo?".
+ */
class Permcat {
+ /**
+ * @var array
+ */
private $permcats = [];
+ /**
+ * @brief Permcat constructor.
+ *
+ * @param int $channel_id
+ */
public function __construct($channel_id) {
$perms = [];
@@ -16,16 +40,16 @@ class Permcat {
$role = get_pconfig($channel_id,'system','permissions_role');
if($role) {
- $x = Zaccess\PermissionRoles::role_perms($role);
+ $x = PermissionRoles::role_perms($role);
if($x['perms_connect']) {
- $perms = Zaccess\Permissions::FilledPerms($x['perms_connect']);
+ $perms = Permissions::FilledPerms($x['perms_connect']);
}
}
// if no role perms it may be a custom role, see if there any autoperms
if(! $perms) {
- $perms = Zaccess\Permissions::FilledAutoPerms($channel_id);
+ $perms = Permissions::FilledAutoPerms($channel_id);
}
// if no autoperms it may be a custom role with manual perms
@@ -50,13 +74,13 @@ class Permcat {
// nothing was found - create a filled permission array where all permissions are 0
if(! $perms) {
- $perms = Zaccess\Permissions::FilledPerms([]);
+ $perms = Permissions::FilledPerms([]);
}
$this->permcats[] = [
'name' => 'default',
'localname' => t('default','permcat'),
- 'perms' => Zaccess\Permissions::Operms($perms),
+ 'perms' => Permissions::Operms($perms),
'system' => 1
];
@@ -67,26 +91,39 @@ class Permcat {
$this->permcats[] = [
'name' => $p[$x][0],
'localname' => $p[$x][1],
- 'perms' => Zaccess\Permissions::Operms(Zaccess\Permissions::FilledPerms($p[$x][2])),
+ 'perms' => Permissions::Operms(Permissions::FilledPerms($p[$x][2])),
'system' => intval($p[$x][3])
];
}
}
}
-
+ /**
+ * @brief Return array with permcats.
+ *
+ * @return array
+ */
public function listing() {
return $this->permcats;
}
+ /**
+ * @brief
+ *
+ * @param string $name
+ * @return array
+ * * \e array with permcats
+ * * \e bool \b error if $name not found in permcats true
+ */
public function fetch($name) {
if($name && $this->permcats) {
foreach($this->permcats as $permcat) {
- if(strcasecmp($permcat['name'],$name) === 0) {
+ if(strcasecmp($permcat['name'], $name) === 0) {
return $permcat;
}
}
}
+
return ['error' => true];
}
@@ -118,29 +155,32 @@ class Permcat {
$permcats[] = [ $xv['k'], $xv['k'], $value, 0 ];
}
}
- }
+ }
- call_hooks('permcats',$permcats);
+ /**
+ * @hooks permcats
+ * * \e array
+ */
+ call_hooks('permcats', $permcats);
return $permcats;
-
}
- static public function find_permcat($arr,$name) {
+ static public function find_permcat($arr, $name) {
if((! $arr) || (! $name))
return false;
+
foreach($arr as $p)
if($p['name'] == $name)
return $p['value'];
}
- static public function update($channel_id, $name,$permarr) {
- PConfig::Set($channel_id,'permcat',$name,$permarr);
+ static public function update($channel_id, $name, $permarr) {
+ PConfig::Set($channel_id, 'permcat', $name, $permarr);
}
- static public function delete($channel_id,$name) {
- PConfig::Delete($channel_id,'permcat',$name);
+ static public function delete($channel_id, $name) {
+ PConfig::Delete($channel_id, 'permcat', $name);
}
-
} \ No newline at end of file
diff --git a/Zotlabs/Lib/ProtoDriver.php b/Zotlabs/Lib/ProtoDriver.php
deleted file mode 100644
index daf887dbb..000000000
--- a/Zotlabs/Lib/ProtoDriver.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php /** @file */
-
-namespace Zotlabs\Lib;
-
-/*
- * Abstraction class for dealing with alternate networks (which of course do not exist, hence the abstraction)
- */
-
-
-abstract class ProtoDriver {
- abstract protected function discover($channel,$location);
- abstract protected function deliver($item,$channel,$recipients);
- abstract protected function collect($channel,$connection);
- abstract protected function change_permissions($permissions,$channel,$recipient);
- abstract protected function acknowledge_permissions($permissions,$channel,$recipient);
- abstract protected function deliver_private($item,$channel,$recipients);
- abstract protected function collect_private($channel,$connection);
-
-}
diff --git a/Zotlabs/Lib/Share.php b/Zotlabs/Lib/Share.php
new file mode 100644
index 000000000..b5341e662
--- /dev/null
+++ b/Zotlabs/Lib/Share.php
@@ -0,0 +1,141 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+
+class Share {
+
+ private $item = null;
+
+
+ public function __construct($post_id) {
+
+ if(! $post_id)
+ return;
+
+ if(! (local_channel() || remote_channel()))
+ return;
+
+ $r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
+ intval($post_id)
+ );
+ if(! $r)
+ return;
+
+ if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
+ return;
+
+ $sql_extra = item_permissions_sql($r[0]['uid']);
+
+ $r = q("select * from item where id = %d $sql_extra",
+ intval($post_id)
+ );
+ if(! $r)
+ return;
+
+ if($r[0]['mimetype'] !== 'text/bbcode')
+ return;
+
+ /** @FIXME eventually we want to post remotely via rpost on your home site */
+ // When that works remove this next bit:
+
+ if(! local_channel())
+ return;
+
+ xchan_query($r);
+
+ $this->item = $r[0];
+ return;
+ }
+
+ public function obj() {
+ $obj = [];
+
+ if(! $this->item)
+ return $obj;
+
+ $obj['type'] = $this->item['obj_type'];
+ $obj['id'] = $this->item['mid'];
+ $obj['content'] = $this->item['body'];
+ $obj['content_type'] = $this->item['mimetype'];
+ $obj['title'] = $this->item['title'];
+ $obj['created'] = $this->item['created'];
+ $obj['edited'] = $this->item['edited'];
+ $obj['author'] = [
+ 'name' => $this->item['author']['xchan_name'],
+ 'address' => $this->item['author']['xchan_addr'],
+ 'network' => $this->item['author']['xchan_network'],
+ 'link' => [
+ [
+ 'rel' => 'alternate',
+ 'type' => 'text/html',
+ 'href' => $this->item['author']['xchan_url']
+ ],
+ [
+ 'rel' => 'photo',
+ 'type' => $this->item['author']['xchan_photo_mimetype'],
+ 'href' => $this->item['author']['xchan_photo_m']
+ ]
+ ]
+ ];
+
+ $obj['owner'] = [
+ 'name' => $this->item['owner']['xchan_name'],
+ 'address' => $this->item['owner']['xchan_addr'],
+ 'network' => $this->item['owner']['xchan_network'],
+ 'link' => [
+ [
+ 'rel' => 'alternate',
+ 'type' => 'text/html',
+ 'href' => $this->item['owner']['xchan_url']
+ ],
+ [
+ 'rel' => 'photo',
+ 'type' => $this->item['owner']['xchan_photo_mimetype'],
+ 'href' => $this->item['owner']['xchan_photo_m']
+ ]
+ ]
+ ];
+
+ $obj['link'] = [
+ 'rel' => 'alternate',
+ 'type' => 'text/html',
+ 'href' => $this->item['plink']
+ ];
+
+ return $obj;
+ }
+
+ public function bbcode() {
+ $bb = NULL_STR;
+
+ if(! $this->item)
+ return $bb;
+
+ $is_photo = (($this->item['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
+ if($is_photo) {
+ $object = json_decode($this->item['obj'],true);
+ $photo_bb = $object['body'];
+ }
+
+ if (strpos($this->item['body'], "[/share]") !== false) {
+ $pos = strpos($this->item['body'], "[share");
+ $bb = substr($this->item['body'], $pos);
+ } else {
+ $bb = "[share author='".urlencode($this->item['author']['xchan_name']).
+ "' profile='".$this->item['author']['xchan_url'] .
+ "' avatar='".$this->item['author']['xchan_photo_s'].
+ "' link='".$this->item['plink'].
+ "' posted='".$this->item['created'].
+ "' message_id='".$this->item['mid']."']";
+ if($this->item['title'])
+ $bb .= '[b]'.$this->item['title'].'[/b]'."\r\n";
+ $bb .= (($is_photo) ? $photo_bb . "\r\n" . $this->item['body'] : $this->item['body']);
+ $bb .= "[/share]";
+ }
+
+ return $bb;
+
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
index 748edcdb7..d35d4732a 100644
--- a/Zotlabs/Lib/ThreadItem.php
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -730,9 +730,6 @@ class ThreadItem {
$observer = $conv->get_observer();
- $qc = ((local_channel()) ? get_pconfig(local_channel(),'system','qcomment') : null);
- $qcomment = (($qc) ? explode("\n",$qc) : null);
-
$arr = array('comment_buttons' => '','id' => $this->get_id());
call_hooks('comment_buttons',$arr);
$comment_buttons = $arr['comment_buttons'];
@@ -744,7 +741,6 @@ class ThreadItem {
'$type' => (($conv->get_mode() === 'channel') ? 'wall-comment' : 'net-comment'),
'$id' => $this->get_id(),
'$parent' => $this->get_id(),
- '$qcomment' => $qcomment,
'$comment_buttons' => $comment_buttons,
'$profile_uid' => $conv->get_profile_owner(),
'$mylink' => $observer['xchan_url'],
diff --git a/Zotlabs/Lib/Verify.php b/Zotlabs/Lib/Verify.php
new file mode 100644
index 000000000..8703e29e6
--- /dev/null
+++ b/Zotlabs/Lib/Verify.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+
+class Verify {
+
+ function create($type,$channel_id,$token,$meta) {
+ return q("insert into verify ( vtype, channel, token, meta, created ) values ( '%s', %d, '%s', '%s', '%s' )",
+ dbesc($type),
+ intval($channel_id),
+ dbesc($token),
+ dbesc($meta),
+ dbesc(datetime_convert())
+ );
+ }
+
+ function match($type,$channel_id,$token,$meta) {
+ $r = q("select id from verify where vtype = '%s' and channel = %d and token = '%s' and meta = '%s' limit 1",
+ dbesc($type),
+ intval($channel_id),
+ dbesc($token),
+ dbesc($meta)
+ );
+ if($r) {
+ q("delete from verify where id = %d",
+ intval($r[0]['id'])
+ );
+ return true;
+ }
+ return false;
+ }
+
+ function get_meta($type,$channel_id,$token) {
+ $r = q("select id, meta from verify where vtype = '%s' and channel = %d and token = '%s' limit 1",
+ dbesc($type),
+ intval($channel_id),
+ dbesc($token)
+ );
+ if($r) {
+ q("delete from verify where id = %d",
+ intval($r[0]['id'])
+ );
+ return $r[0]['meta'];
+ }
+ return false;
+ }
+
+ /**
+ * @brief Purge entries of a verify-type older than interval.
+ *
+ * @param string $type Verify type
+ * @param string $interval SQL compatible time interval
+ */
+ function purge($type, $interval) {
+ q("delete from verify where vtype = '%s' and created < %s - INTERVAL %s",
+ dbesc($type),
+ db_utcnow(),
+ db_quoteinterval($interval)
+ );
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/ZotDriver.php b/Zotlabs/Lib/ZotDriver.php
deleted file mode 100644
index e14cc7f35..000000000
--- a/Zotlabs/Lib/ZotDriver.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php /** @file */
-
-namespace Zotlabs\Lib;
-
-
-class ZotDriver extends ProtoDriver {
-
- protected function discover($channel,$location) {
-
- }
- protected function deliver($item,$channel,$recipients) {
-
- }
- protected function collect($channel,$connection) {
-
- }
- protected function change_permissions($permissions,$channel,$recipient) {
-
- }
- protected function acknowledge_permissions($permissions,$channel,$recipient) {
-
- }
- protected function deliver_private($item,$channel,$recipients) {
-
- }
- protected function collect_private($channel,$connection) {
-
- }
-
-}
diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php
index ad1c8b8cd..fae7e2e44 100644
--- a/Zotlabs/Module/Acl.php
+++ b/Zotlabs/Module/Acl.php
@@ -1,36 +1,39 @@
<?php
+
namespace Zotlabs\Module;
-/*
- * ACL selector json backend
+require_once 'include/acl_selectors.php';
+require_once 'include/group.php';
+
+/**
+ * @brief ACL selector json backend.
+ *
* This module provides JSON lists of connections and local/remote channels
* (xchans) to populate various tools such as the ACL (AccessControlList) popup
- * and various auto-complete functions (such as email recipients, search, and
+ * and various auto-complete functions (such as email recipients, search, and
* mention targets.
+ *
* There are two primary output structural formats. One for the ACL widget and
* the other for auto-completion.
- * Many of the behaviour variations are triggered on the use of single character keys
- * however this functionality has grown in an ad-hoc manner and has gotten quite messy over time.
+ *
+ * Many of the behaviour variations are triggered on the use of single character
+ * keys however this functionality has grown in an ad-hoc manner and has gotten
+ * quite messy over time.
*/
-
-require_once("include/acl_selectors.php");
-require_once("include/group.php");
-
-
class Acl extends \Zotlabs\Web\Controller {
function init() {
-
+
logger('mod_acl: ' . print_r($_REQUEST,true));
-
+
$start = (x($_REQUEST,'start') ? $_REQUEST['start'] : 0);
$count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 500);
$search = (x($_REQUEST,'search') ? $_REQUEST['search'] : '');
$type = (x($_REQUEST,'type') ? $_REQUEST['type'] : '');
- $noforums = (x($_REQUEST,'n') ? $_REQUEST['n'] : false);
+ $noforums = (x($_REQUEST,'n') ? $_REQUEST['n'] : false);
- // $type =
+ // $type =
// '' => standard ACL request
// 'g' => Groups only ACL request
// 'f' => forums only ACL request
@@ -382,15 +385,13 @@ class Acl extends \Zotlabs\Web\Controller {
'count' => $count,
'items' => $items,
);
-
-
-
+
echo json_encode($o);
-
+
killme();
}
-
-
+
+
function navbar_complete(&$a) {
// logger('navbar_complete');
@@ -447,5 +448,5 @@ class Acl extends \Zotlabs\Web\Controller {
}
return array();
}
-
+
}
diff --git a/Zotlabs/Module/Admin/Accounts.php b/Zotlabs/Module/Admin/Accounts.php
index 2043550fc..2e417edd1 100644
--- a/Zotlabs/Module/Admin/Accounts.php
+++ b/Zotlabs/Module/Admin/Accounts.php
@@ -16,6 +16,7 @@ class Accounts {
*/
function post() {
+
$pending = ( x($_POST, 'pending') ? $_POST['pending'] : array() );
$users = ( x($_POST, 'user') ? $_POST['user'] : array() );
$blocked = ( x($_POST, 'blocked') ? $_POST['blocked'] : array() );
@@ -24,7 +25,7 @@ class Accounts {
// change to switch structure?
// account block/unblock button was submitted
- if (x($_POST, 'page_users_block')) {
+ if (x($_POST, 'page_accounts_block')) {
for ($i = 0; $i < count($users); $i++) {
// if account is blocked remove blocked bit-flag, otherwise add blocked bit-flag
$op = ($blocked[$i]) ? '& ~' : '| ';
@@ -43,13 +44,13 @@ class Accounts {
notice( sprintf( tt("%s account deleted", "%s accounts deleted", count($users)), count($users)) );
}
// registration approved button was submitted
- if (x($_POST, 'page_users_approve')) {
+ if (x($_POST, 'page_accounts_approve')) {
foreach ($pending as $hash) {
account_allow($hash);
}
}
// registration deny button was submitted
- if (x($_POST, 'page_users_deny')) {
+ if (x($_POST, 'page_accounts_deny')) {
foreach ($pending as $hash) {
account_deny($hash);
}
diff --git a/Zotlabs/Module/Admin/Dbsync.php b/Zotlabs/Module/Admin/Dbsync.php
index cff8a2484..469af2aa5 100644
--- a/Zotlabs/Module/Admin/Dbsync.php
+++ b/Zotlabs/Module/Admin/Dbsync.php
@@ -7,36 +7,38 @@ namespace Zotlabs\Module\Admin;
class Dbsync {
-
-
function get() {
$o = '';
if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') {
- set_config('database', 'update_r' . intval(argv(3)), 'success');
- if(intval(get_config('system','db_version')) <= intval(argv(3)))
- set_config('system','db_version',intval(argv(3)) + 1);
+ // remove the old style config if it exists
+ del_config('database', 'update_r' . intval(argv(3)));
+ set_config('database', '_' . intval(argv(3)), 'success');
+ if(intval(get_config('system','db_version')) < intval(argv(3)))
+ set_config('system','db_version',intval(argv(3)));
info( t('Update has been marked successful') . EOL);
goaway(z_root() . '/admin/dbsync');
}
if(argc() > 2 && intval(argv(2))) {
- require_once('install/update.php');
- $func = 'update_r' . intval(argv(2));
- if(function_exists($func)) {
- $retval = $func();
+ $x = intval(argv(2));
+ $s = '_' . $x;
+ $cls = '\\Zotlabs\Update\\' . $s ;
+ if(class_exists($cls)) {
+ $c = new $cls();
+ $retval = $c->run();
if($retval === UPDATE_FAILED) {
- $o .= sprintf( t('Executing %s failed. Check system logs.'), $func);
+ $o .= sprintf( t('Executing %s failed. Check system logs.'), $s);
}
elseif($retval === UPDATE_SUCCESS) {
- $o .= sprintf( t('Update %s was successfully applied.'), $func);
- set_config('database',$func, 'success');
+ $o .= sprintf( t('Update %s was successfully applied.'), $s);
+ set_config('database',$s, 'success');
}
else
- $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func);
+ $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $s);
}
else
- $o .= sprintf( t('Update function %s could not be found.'), $func);
+ $o .= sprintf( t('Update function %s could not be found.'), $s);
return $o;
}
@@ -45,23 +47,25 @@ class Dbsync {
$r = q("select * from config where cat = 'database' ");
if(count($r)) {
foreach($r as $rr) {
- $upd = intval(substr($rr['k'],8));
+ $upd = intval(substr($rr['k'],-4));
if($rr['v'] === 'success')
continue;
$failed[] = $upd;
}
}
- if(! count($failed))
- return '<div class="generic-content-wrapper-styled"><h3>' . t('No failed updates.') . '</h3></div>';
-
- $o = replace_macros(get_markup_template('failed_updates.tpl'),array(
- '$base' => z_root(),
- '$banner' => t('Failed Updates'),
- '$desc' => '',
- '$mark' => t('Mark success (if update was manually applied)'),
- '$apply' => t('Attempt to execute this update step automatically'),
- '$failed' => $failed
+ if(count($failed)) {
+ $o = replace_macros(get_markup_template('failed_updates.tpl'),array(
+ '$base' => z_root(),
+ '$banner' => t('Failed Updates'),
+ '$desc' => '',
+ '$mark' => t('Mark success (if update was manually applied)'),
+ '$apply' => t('Attempt to execute this update step automatically'),
+ '$failed' => $failed
));
+ }
+ else {
+ return '<div class="generic-content-wrapper-styled"><h3>' . t('No failed updates.') . '</h3></div>';
+ }
return $o;
}
diff --git a/Zotlabs/Module/Admin/Profs.php b/Zotlabs/Module/Admin/Profs.php
index b3da09cb7..eb2501d43 100644
--- a/Zotlabs/Module/Admin/Profs.php
+++ b/Zotlabs/Module/Admin/Profs.php
@@ -9,17 +9,37 @@ class Profs {
if(array_key_exists('basic',$_REQUEST)) {
$arr = explode(',',$_REQUEST['basic']);
- for($x = 0; $x < count($arr); $x ++)
- if(trim($arr[$x]))
- $arr[$x] = trim($arr[$x]);
- set_config('system','profile_fields_basic',$arr);
-
+ array_walk($arr,'array_trim');
+ $narr = [];
+ if(count($arr)) {
+ foreach($arr as $a) {
+ if(strlen($a)) {
+ $narr[] = $a;
+ }
+ }
+ }
+ if(! $narr)
+ del_config('system','profile_fields_basic');
+ else
+ set_config('system','profile_fields_basic',$narr);
+
+
if(array_key_exists('advanced',$_REQUEST)) {
$arr = explode(',',$_REQUEST['advanced']);
- for($x = 0; $x < count($arr); $x ++)
- if(trim($arr[$x]))
- $arr[$x] = trim($arr[$x]);
- set_config('system','profile_fields_advanced',$arr);
+ array_walk($arr,'array_trim');
+ $narr = [];
+ if(count($arr)) {
+ foreach($arr as $a) {
+ if(strlen($a)) {
+ $narr[] = $a;
+ }
+ }
+ }
+ if(! $narr)
+ del_config('system','profile_fields_advanced');
+ else
+ set_config('system','profile_fields_advanced',$narr);
+
}
goaway(z_root() . '/admin/profs');
}
@@ -98,6 +118,7 @@ class Profs {
$basic = '';
$barr = array();
$fields = get_profile_fields_basic();
+
if(! $fields)
$fields = get_profile_fields_basic(1);
if($fields) {
diff --git a/Zotlabs/Module/Admin/Security.php b/Zotlabs/Module/Admin/Security.php
index a1e4bf537..49e1ccf42 100644
--- a/Zotlabs/Module/Admin/Security.php
+++ b/Zotlabs/Module/Admin/Security.php
@@ -52,24 +52,24 @@ class Security {
function get() {
$whitesites = get_config('system','whitelisted_sites');
- $whitesites_str = ((is_array($whitesites)) ? implode($whitesites,"\n") : '');
+ $whitesites_str = ((is_array($whitesites)) ? implode("\n",$whitesites) : '');
$blacksites = get_config('system','blacklisted_sites');
- $blacksites_str = ((is_array($blacksites)) ? implode($blacksites,"\n") : '');
+ $blacksites_str = ((is_array($blacksites)) ? implode("\n",$blacksites) : '');
$whitechannels = get_config('system','whitelisted_channels');
- $whitechannels_str = ((is_array($whitechannels)) ? implode($whitechannels,"\n") : '');
+ $whitechannels_str = ((is_array($whitechannels)) ? implode("\n",$whitechannels) : '');
$blackchannels = get_config('system','blacklisted_channels');
- $blackchannels_str = ((is_array($blackchannels)) ? implode($blackchannels,"\n") : '');
+ $blackchannels_str = ((is_array($blackchannels)) ? implode("\n",$blackchannels) : '');
$whiteembeds = get_config('system','embed_allow');
- $whiteembeds_str = ((is_array($whiteembeds)) ? implode($whiteembeds,"\n") : '');
+ $whiteembeds_str = ((is_array($whiteembeds)) ? implode("\n",$whiteembeds) : '');
$blackembeds = get_config('system','embed_deny');
- $blackembeds_str = ((is_array($blackembeds)) ? implode($blackembeds,"\n") : '');
+ $blackembeds_str = ((is_array($blackembeds)) ? implode("\n",$blackembeds) : '');
$embed_coop = intval(get_config('system','embed_coop'));
diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php
index 32417c77c..015c6535c 100644
--- a/Zotlabs/Module/Admin/Site.php
+++ b/Zotlabs/Module/Admin/Site.php
@@ -24,23 +24,28 @@ class Site {
$siteinfo = ((x($_POST,'siteinfo')) ? trim($_POST['siteinfo']) : '');
$language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : '');
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : '');
- $theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : '');
+// $theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : '');
// $site_channel = ((x($_POST,'site_channel')) ? notags(trim($_POST['site_channel'])) : '');
$maximagesize = ((x($_POST,'maximagesize')) ? intval(trim($_POST['maximagesize'])) : 0);
$register_policy = ((x($_POST,'register_policy')) ? intval(trim($_POST['register_policy'])) : 0);
-
+ $minimum_age = ((x($_POST,'minimum_age')) ? intval(trim($_POST['minimum_age'])) : 13);
$access_policy = ((x($_POST,'access_policy')) ? intval(trim($_POST['access_policy'])) : 0);
$invite_only = ((x($_POST,'invite_only')) ? True : False);
$abandon_days = ((x($_POST,'abandon_days')) ? intval(trim($_POST['abandon_days'])) : 0);
$register_text = ((x($_POST,'register_text')) ? notags(trim($_POST['register_text'])) : '');
+ $site_sellpage = ((x($_POST,'site_sellpage')) ? notags(trim($_POST['site_sellpage'])) : '');
+ $site_location = ((x($_POST,'site_location')) ? notags(trim($_POST['site_location'])) : '');
$frontpage = ((x($_POST,'frontpage')) ? notags(trim($_POST['frontpage'])) : '');
+ $firstpage = ((x(trim($_POST,'firstpage'))) ? notags(trim($_POST['firstpage'])) : 'profiles');
$mirror_frontpage = ((x($_POST,'mirror_frontpage')) ? intval(trim($_POST['mirror_frontpage'])) : 0);
$directory_server = ((x($_POST,'directory_server')) ? trim($_POST['directory_server']) : '');
$allowed_sites = ((x($_POST,'allowed_sites')) ? notags(trim($_POST['allowed_sites'])) : '');
$force_publish = ((x($_POST,'publish_all')) ? True : False);
$disable_discover_tab = ((x($_POST,'disable_discover_tab')) ? False : True);
+ $site_firehose = ((x($_POST,'site_firehose')) ? True : False);
+ $open_pubstream = ((x($_POST,'open_pubstream')) ? True : False);
$login_on_homepage = ((x($_POST,'login_on_homepage')) ? True : False);
$enable_context_help = ((x($_POST,'enable_context_help')) ? True : False);
$global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : '');
@@ -76,6 +81,9 @@ class Site {
set_config('system', 'poll_interval', $poll_interval);
set_config('system', 'maxloadavg', $maxloadavg);
set_config('system', 'frontpage', $frontpage);
+ set_config('system', 'sellpage', $site_sellpage);
+ set_config('system', 'workflow_channel_next', $firstpage);
+ set_config('system', 'site_location', $site_location);
set_config('system', 'mirror_frontpage', $mirror_frontpage);
set_config('system', 'sitename', $sitename);
set_config('system', 'login_on_homepage', $login_on_homepage);
@@ -114,15 +122,16 @@ class Site {
set_config('system','siteinfo',$siteinfo);
set_config('system', 'language', $language);
set_config('system', 'theme', $theme);
- if ( $theme_mobile === '---' ) {
- del_config('system', 'mobile_theme');
- } else {
- set_config('system', 'mobile_theme', $theme_mobile);
- }
+// if ( $theme_mobile === '---' ) {
+// del_config('system', 'mobile_theme');
+// } else {
+// set_config('system', 'mobile_theme', $theme_mobile);
+// }
// set_config('system','site_channel', $site_channel);
set_config('system','maximagesize', $maximagesize);
set_config('system','register_policy', $register_policy);
+ set_config('system','minimum_age', $minimum_age);
set_config('system','invitation_only', $invite_only);
set_config('system','access_policy', $access_policy);
set_config('system','account_abandon_days', $abandon_days);
@@ -130,6 +139,8 @@ class Site {
set_config('system','allowed_sites', $allowed_sites);
set_config('system','publish_all', $force_publish);
set_config('system','disable_discover_tab', $disable_discover_tab);
+ set_config('system','site_firehose', $site_firehose);
+ set_config('system','open_pubstream', $open_pubstream);
set_config('system','force_queue_threshold', $force_queue);
if ($global_directory == '') {
del_config('system', 'directory_submit_url');
@@ -209,9 +220,10 @@ class Site {
$realm = get_directory_realm();
// directory server should not be set or settable unless we are a directory client
+ // avoid older redmatrix servers which don't have modern encryption
if($dirmode == DIRECTORY_MODE_NORMAL) {
- $x = q("select site_url from site where site_flags in (%d,%d) and site_realm = '%s' and site_dead = 0",
+ $x = q("select site_url from site where site_flags in (%d,%d) and site_realm = '%s' and site_dead = 0 and site_project != 'redmatrix'",
intval(DIRECTORY_MODE_SECONDARY),
intval(DIRECTORY_MODE_PRIMARY),
dbesc($realm)
@@ -288,17 +300,18 @@ class Site {
'$techlock' => [ 'techlock', t('Lock the technical skill level setting'), get_config('system','techlevel_lock'), t('Members can set their own technical comfort level by default') ],
- '$banner' => array('banner', t("Banner/Logo"), $banner, ""),
+ '$banner' => array('banner', t("Banner/Logo"), $banner, t('Unfiltered HTML/CSS/JS is allowed')),
'$admininfo' => array('admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here")),
'$siteinfo' => array('siteinfo', t('Site Information'), get_config('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")),
'$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
'$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
- '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
+// '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
// '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")),
'$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),get_config('system','feed_contacts'),t('(Heavy system resource usage)')),
'$maximagesize' => array('maximagesize', t("Maximum image size"), intval(get_config('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
'$register_policy' => array('register_policy', t("Does this site allow new member registration?"), get_config('system','register_policy'), "", $register_choices),
'$invite_only' => array('invite_only', t("Invitation only"), get_config('system','invitation_only'), t("Only allow new member registrations with an invitation code. Above register policy must be set to Yes.")),
+ '$minimum_age' => array('minimum_age', t("Minimum age"), (x(get_config('system','minimum_age'))?get_config('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")),
'$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), "This is displayed on the public server site list.", $access_choices),
'$register_text' => array('register_text', t("Register text"), htmlspecialchars(get_config('system','register_text'), ENT_QUOTES, 'UTF-8'), t("Will be displayed prominently on the registration page.")),
'$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), get_config('system','frontpage'), t("example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")),
@@ -308,6 +321,8 @@ class Site {
'$verify_email' => array('verify_email', t("Verify Email Addresses"), get_config('system','verify_email'), t("Check to verify email addresses used in account registration (recommended).")),
'$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")),
'$disable_discover_tab' => array('disable_discover_tab', t('Import Public Streams'), $discover_tab, t('Import and allow access to public content pulled from other sites. Warning: this content is unmoderated.')),
+ '$site_firehose' => array('site_firehose', t('Site only Public Streams'), get_config('system','site_firehose'), t('Allow access to public content originating only from this site if Imported Public Streams are disabled.')),
+ '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the Public streams'), get_config('system','open_pubstream',1), t('Disable to require authentication before viewing. Warning: this content is unmoderated.')),
'$login_on_homepage' => array('login_on_homepage', t("Login on Homepage"),((intval($homelogin) || $homelogin === false) ? 1 : '') , t("Present a login box to visitors on the home page if no other content has been configured.")),
'$enable_context_help' => array('enable_context_help', t("Enable context help"),((intval($enable_context_help) === 1 || $enable_context_help === false) ? 1 : 0) , t("Display contextual help for the current page when the help button is pressed.")),
@@ -328,6 +343,13 @@ class Site {
'$thumbnail_security' => array('thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.")),
'$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
'$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(get_config('system','default_expire_days')), t('0 for no expiration of imported content')),
+
+ '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), get_config('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())),
+ '$firstpage' => array('firstpage', t('Page to display after creating a new channel'), get_config('system','workflow_channel_next','profiles'), t('Recommend: profiles, go, or settings')),
+
+ '$location' => array('site_location', t('Optional: site location'), get_config('system','site_location',''), t('Region or country')),
+
+
'$form_security_token' => get_form_security_token("admin_site"),
));
}
diff --git a/Zotlabs/Module/Api.php b/Zotlabs/Module/Api.php
index a2a1aac1d..aa0fca54d 100644
--- a/Zotlabs/Module/Api.php
+++ b/Zotlabs/Module/Api.php
@@ -39,10 +39,12 @@ class Api extends \Zotlabs\Web\Controller {
// get consumer/client from request token
try {
- $request = OAuth1Request::from_request();
+ $request = \OAuth1Request::from_request();
}
catch(\Exception $e) {
- echo "<pre>"; var_dump($e); killme();
+ logger('OAuth exception: ' . print_r($e,true));
+ // echo "<pre>"; var_dump($e);
+ killme();
}
@@ -52,7 +54,7 @@ class Api extends \Zotlabs\Web\Controller {
if (is_null($app))
return "Invalid request. Unknown token.";
- $consumer = new OAuth1Consumer($app['client_id'], $app['pw'], $app['redirect_uri']);
+ $consumer = new \OAuth1Consumer($app['client_id'], $app['pw'], $app['redirect_uri']);
$verifier = md5($app['secret'] . local_channel());
set_config('oauth', $verifier, local_channel());
@@ -63,7 +65,7 @@ class Api extends \Zotlabs\Web\Controller {
$glue = '?';
if(strstr($consumer->callback_url,$glue))
$glue = '?';
- goaway($consumer->callback_url . $glue . "oauth_token=" . OAuth1Util::urlencode_rfc3986($params['oauth_token']) . "&oauth_verifier=" . OAuth1Util::urlencode_rfc3986($verifier));
+ goaway($consumer->callback_url . $glue . "oauth_token=" . \OAuth1Util::urlencode_rfc3986($params['oauth_token']) . "&oauth_verifier=" . \OAuth1Util::urlencode_rfc3986($verifier));
killme();
}
diff --git a/Zotlabs/Module/Articles.php b/Zotlabs/Module/Articles.php
index 25daca81d..e2e0fed5d 100644
--- a/Zotlabs/Module/Articles.php
+++ b/Zotlabs/Module/Articles.php
@@ -35,7 +35,7 @@ class Articles extends \Zotlabs\Web\Controller {
return;
}
- nav_set_selected(t('Cards'));
+ nav_set_selected(t('Articles'));
head_add_link([
'rel' => 'alternate',
@@ -102,6 +102,7 @@ class Articles extends \Zotlabs\Web\Controller {
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
'visitor' => true,
+ 'body' => '[summary][/summary]',
'hide_location' => false,
'hide_voting' => false,
'profile_uid' => intval($owner),
diff --git a/Zotlabs/Module/Authorize.php b/Zotlabs/Module/Authorize.php
index 06f66c456..254700b4e 100644
--- a/Zotlabs/Module/Authorize.php
+++ b/Zotlabs/Module/Authorize.php
@@ -2,70 +2,66 @@
namespace Zotlabs\Module;
-
-class Authorize extends \Zotlabs\Web\Controller {
+use Zotlabs\Identity\OAuth2Storage;
- function get() {
+class Authorize extends \Zotlabs\Web\Controller {
+ function init() {
- // workaround for HTTP-auth in CGI mode
- if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
- $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
- if(strlen($userpass)) {
- list($name, $password) = explode(':', $userpass);
- $_SERVER['PHP_AUTH_USER'] = $name;
- $_SERVER['PHP_AUTH_PW'] = $password;
- }
+ // workaround for HTTP-auth in CGI mode
+ if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
+ $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
}
-
- if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
- $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
- if(strlen($userpass)) {
- list($name, $password) = explode(':', $userpass);
- $_SERVER['PHP_AUTH_USER'] = $name;
- $_SERVER['PHP_AUTH_PW'] = $password;
- }
+ }
+
+ if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
+ $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
}
+ }
+ $s = new \Zotlabs\Identity\OAuth2Server(new OAuth2Storage(\DBA::$dba->db));
+ $request = \OAuth2\Request::createFromGlobals();
+ $response = new \OAuth2\Response();
+ // validate the authorize request
+ if (! $s->validateAuthorizeRequest($request, $response)) {
+ $response->send();
+ killme();
+ }
- require_once('include/oauth2.php');
-
- $request = \OAuth2\Request::createFromGlobals();
- $response = new \OAuth2\Response();
-
- // validate the authorize request
- if (! $oauth2_server->validateAuthorizeRequest($request, $response)) {
- $response->send();
- killme();
- }
-
- // display an authorization form
- if (empty($_POST)) {
+ // display an authorization form
+ if (empty($_POST)) {
- return '
+ return '
<form method="post">
<label>Do You Authorize TestClient?</label><br />
<input type="submit" name="authorized" value="yes">
<input type="submit" name="authorized" value="no">
</form>';
+ }
+
+ // print the authorization code if the user has authorized your client
+ $is_authorized = ($_POST['authorized'] === 'yes');
+ $s->handleAuthorizeRequest($request, $response, $is_authorized, local_channel());
+ if ($is_authorized) {
+ // this is only here so that you get to see your code in the cURL request. Otherwise,
+ // we'd redirect back to the client
+ $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40);
+ echo("SUCCESS! Authorization Code: $code");
+ }
+
+ $response->send();
+ killme();
}
- // print the authorization code if the user has authorized your client
- $is_authorized = ($_POST['authorized'] === 'yes');
- $oauth2_server->handleAuthorizeRequest($request, $response, $is_authorized);
- if ($is_authorized) {
- // this is only here so that you get to see your code in the cURL request. Otherwise,
- // we'd redirect back to the client
- $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40);
- echo("SUCCESS! Authorization Code: $code");
-
- }
-
- $response->send();
- killme();
- }
-
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php
index 22c5d673c..f87988183 100644
--- a/Zotlabs/Module/Cards.php
+++ b/Zotlabs/Module/Cards.php
@@ -9,18 +9,22 @@ require_once('include/acl_selectors.php');
class Cards extends \Zotlabs\Web\Controller {
function init() {
-
+
if(argc() > 1)
$which = argv(1);
else
return;
-
+
profile_load($which);
-
+
}
-
+
+ /**
+ * {@inheritDoc}
+ * @see \Zotlabs\Web\Controller::get()
+ */
function get($update = 0, $load = false) {
-
+
if(observer_prohibited(true)) {
return login();
}
@@ -31,13 +35,13 @@ class Cards extends \Zotlabs\Web\Controller {
return;
}
- if(! feature_enabled(\App::$profile_uid,'cards')) {
+ if(! feature_enabled(\App::$profile_uid, 'cards')) {
return;
}
nav_set_selected(t('Cards'));
- head_add_link([
+ head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
@@ -46,48 +50,48 @@ class Cards extends \Zotlabs\Web\Controller {
$category = (($_REQUEST['cat']) ? escape_tags(trim($_REQUEST['cat'])) : '');
-
+
if($category) {
- $sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
+ $sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'], 'item', $category, TERM_CATEGORY));
}
$which = argv(1);
-
+
$selected_card = ((argc() > 2) ? argv(2) : '');
$_SESSION['return_url'] = \App::$query_string;
-
+
$uid = local_channel();
$owner = \App::$profile_uid;
$observer = \App::get_observer();
-
+
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
- if(! perm_is_allowed($owner,$ob_hash,'view_pages')) {
+
+ if(! perm_is_allowed($owner, $ob_hash, 'view_pages')) {
notice( t('Permission denied.') . EOL);
return;
}
-
+
$is_owner = ($uid && $uid == $owner);
-
+
$channel = channelx_by_n($owner);
if($channel) {
- $channel_acl = array(
+ $channel_acl = [
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
- );
+ ];
}
else {
$channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
}
-
- if(perm_is_allowed($owner,$ob_hash,'write_pages')) {
+
+ if(perm_is_allowed($owner, $ob_hash, 'write_pages')) {
$x = [
'webpage' => ITEM_TYPE_CARD,
@@ -95,9 +99,9 @@ class Cards extends \Zotlabs\Web\Controller {
'content_label' => t('Add Card'),
'button' => t('Create'),
'nickname' => $channel['channel_address'],
- 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
+ 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
+ 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
@@ -110,7 +114,7 @@ class Cards extends \Zotlabs\Web\Controller {
'layoutselect' => false,
'expanded' => false,
'novoting' => false,
- 'catsenabled' => feature_enabled($owner,'categories'),
+ 'catsenabled' => feature_enabled($owner, 'categories'),
'bbco_autocomplete' => 'bbcode',
'bbcode' => true
];
@@ -119,14 +123,14 @@ class Cards extends \Zotlabs\Web\Controller {
$x['title'] = $_REQUEST['title'];
if($_REQUEST['body'])
$x['body'] = $_REQUEST['body'];
- $editor = status_editor($a,$x);
+ $editor = status_editor($a, $x);
}
else {
$editor = '';
}
-
-
+
+
$sql_extra = item_permissions_sql($owner);
if($selected_card) {
@@ -137,9 +141,9 @@ class Cards extends \Zotlabs\Web\Controller {
$sql_extra .= "and item.id = " . intval($r[0]['iid']) . " ";
}
}
-
- $r = q("select * from item
- where item.uid = %d and item_type = %d
+
+ $r = q("select * from item
+ where uid = %d and item_type = %d
$sql_extra order by item.created desc",
intval($owner),
intval(ITEM_TYPE_CARD)
@@ -149,9 +153,10 @@ class Cards extends \Zotlabs\Web\Controller {
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
+ $items_result = [];
if($r) {
- $parents_str = ids_to_querystr($r,'id');
+ $parents_str = ids_to_querystr($r, 'id');
$items = q("SELECT item.*, item.id AS item_id
FROM item
@@ -164,24 +169,22 @@ class Cards extends \Zotlabs\Web\Controller {
if($items) {
xchan_query($items);
$items = fetch_post_tags($items, true);
- $items = conv_sort($items,'updated');
+ $items_result = conv_sort($items, 'updated');
}
- else
- $items = [];
}
$mode = 'cards';
-
- $content = conversation($items,$mode,false,'traditional');
+
+ $content = conversation($items_result, $mode, false, 'traditional');
$o = replace_macros(get_markup_template('cards.tpl'), [
'$title' => t('Cards'),
'$editor' => $editor,
'$content' => $content,
- '$pager' => alt_pager($a,count($items))
+ '$pager' => alt_pager($a, count($items_result))
]);
- return $o;
- }
+ return $o;
+ }
}
diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php
index 7c4c900a1..3d3eb2a85 100644
--- a/Zotlabs/Module/Channel.php
+++ b/Zotlabs/Module/Channel.php
@@ -204,7 +204,7 @@ class Channel extends \Zotlabs\Web\Controller {
$_SESSION['loadtime'] = datetime_convert();
}
else {
- $r = q("SELECT distinct parent AS item_id, created from item
+ $r = q("SELECT distinct parent AS item_id from item
left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
WHERE uid = %d $item_normal_update
AND item_wall = 1 $simple_update
@@ -239,7 +239,7 @@ class Channel extends \Zotlabs\Web\Controller {
if($load || ($checkjs->disabled())) {
if($mid) {
- $r = q("SELECT distinct parent AS item_id from item where mid like '%s' and uid = %d $item_normal
+ $r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
AND item_wall = 1 $sql_extra limit 1",
dbesc($mid . '%'),
intval(\App::$profile['profile_uid'])
@@ -249,13 +249,13 @@ class Channel extends \Zotlabs\Web\Controller {
}
}
else {
- $r = q("SELECT distinct id AS item_id, created FROM item
- left join abook on item.author_xchan = abook.abook_xchan
- WHERE uid = %d $item_normal
- AND item_wall = 1 and item_thread_top = 1
- AND (abook_blocked = 0 or abook.abook_flags is null)
+ $r = q("SELECT item.parent AS item_id FROM item
+ left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
+ WHERE true and item.uid = %d AND item.item_thread_top = 1 $item_normal
+ AND (abook.abook_blocked = 0 or abook.abook_flags is null)
+ AND item.item_wall = 1
$sql_extra $sql_extra2
- ORDER BY created DESC $pager_sql ",
+ ORDER BY created DESC, id $pager_sql ",
intval(\App::$profile['profile_uid'])
);
}
diff --git a/Zotlabs/Module/Cloud.php b/Zotlabs/Module/Cloud.php
index 2215507ca..8b5476efc 100644
--- a/Zotlabs/Module/Cloud.php
+++ b/Zotlabs/Module/Cloud.php
@@ -110,6 +110,9 @@ class Cloud extends \Zotlabs\Web\Controller {
elseif($err instanceof \Sabre\DAV\Exception\Forbidden) {
notice( t('Permission denied') . EOL);
}
+ elseif($err instanceof \Sabre\DAV\Exception\NotImplemented) {
+ notice( t('Please refresh page') . EOL);
+ }
else {
notice( t('Unknown error') . EOL);
}
diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php
index f42ff9b84..55e716ace 100644
--- a/Zotlabs/Module/Connections.php
+++ b/Zotlabs/Module/Connections.php
@@ -232,7 +232,7 @@ class Connections extends \Zotlabs\Web\Controller {
if($rr['xchan_url']) {
if(($rr['vcard']) && is_array($rr['vcard']['tels']) && $rr['vcard']['tels'][0]['nr'])
- $phone = ((\App::$is_mobile || \App::$is_tablet) ? $rr['vcard']['tels'][0]['nr'] : '');
+ $phone = $rr['vcard']['tels'][0]['nr'];
else
$phone = '';
@@ -245,6 +245,11 @@ class Connections extends \Zotlabs\Web\Controller {
((intval($rr['abook_blocked'])) ? t('Blocked') : ''),
((intval($rr['abook_not_here'])) ? t('Not connected at this location') : '')
);
+
+ $oneway = false;
+ if(! intval(get_abconfig(local_channel(),$rr['xchan_hash'],'their_perms','post_comments'))) {
+ $oneway = true;
+ }
foreach($status as $str) {
if(!$str)
@@ -283,7 +288,8 @@ class Connections extends \Zotlabs\Web\Controller {
'ignore_hover' => t('Ignore connection'),
'ignore' => ((! $rr['abook_ignored']) ? t('Ignore') : false),
'recent_label' => t('Recent activity'),
- 'recentlink' => z_root() . '/network/?f=&cid=' . intval($rr['abook_id'])
+ 'recentlink' => z_root() . '/network/?f=&cid=' . intval($rr['abook_id']),
+ 'oneway' => $oneway
);
}
}
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index 8288886cd..f359175c1 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -826,27 +826,10 @@ class Connedit extends \Zotlabs\Web\Controller {
}
}
- $locstr = '';
-
- $locs = q("select hubloc_addr as location from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s'
- and hubloc_deleted = 0 and site_dead = 0",
- dbesc($contact['xchan_hash'])
- );
-
- if($locs) {
- foreach($locs as $l) {
- if(!($l['location']))
- continue;
- if(strpos($locstr,$l['location']) !== false)
- continue;
- if(strlen($locstr))
- $locstr .= ', ';
- $locstr .= $l['location'];
- }
- }
- else
+ $locstr = locations_by_netid($contact['xchan_hash']);
+ if(! $locstr)
$locstr = $contact['xchan_url'];
-
+
$clone_warn = '';
$clonable = (in_array($contact['xchan_network'],['zot','rss']) ? true : false);
if(! $clonable) {
@@ -912,7 +895,6 @@ class Connedit extends \Zotlabs\Web\Controller {
'$permnote_self' => t('Some permissions may be inherited from your channel\'s <a href="settings"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes.'),
'$lastupdtext' => t('Last update:'),
'$last_update' => relative_date($contact['abook_connected']),
- '$is_mobile' => ((\App::$is_mobile || \App::$is_tablet) ? true : false),
'$profile_select' => contact_profile_assign($contact['abook_profile']),
'$multiprofs' => $multiprofs,
'$contact_id' => $contact['abook_id'],
diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php
index 47bce6c2b..56e35f912 100644
--- a/Zotlabs/Module/Cover_photo.php
+++ b/Zotlabs/Module/Cover_photo.php
@@ -64,12 +64,12 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$image_id = substr($image_id,0,-2);
}
-
- $srcX = $_POST['xstart'];
- $srcY = $_POST['ystart'];
- $srcW = $_POST['xfinal'] - $srcX;
- $srcH = $_POST['yfinal'] - $srcY;
-
+
+
+ $srcX = intval($_POST['xstart']);
+ $srcY = intval($_POST['ystart']);
+ $srcW = intval($_POST['xfinal']) - $srcX;
+ $srcH = intval($_POST['yfinal']) - $srcY;
$r = q("select gender from profile where uid = %d and is_default = 1 limit 1",
intval(local_channel())
@@ -207,7 +207,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
}
}
- $imagedata = (($os_storage) ? @file_get_contents($imagedata) : $imagedata);
+ $imagedata = (($os_storage) ? @file_get_contents(dbunescbin($imagedata)) : dbunescbin($imagedata));
$ph = photo_factory($imagedata, $filetype);
if(! $ph->is_valid()) {
@@ -357,12 +357,23 @@ class Cover_photo extends \Zotlabs\Web\Controller {
'$user' => \App::$channel['channel_address'],
'$lbl_upfile' => t('Upload File:'),
'$lbl_profiles' => t('Select a profile:'),
- '$title' => t('Upload Cover Photo'),
+ '$title' => t('Change Cover Photo'),
'$submit' => t('Upload'),
'$profiles' => $profiles,
+ '$embedPhotos' => t('Use a photo from your albums'),
+ '$embedPhotosModalTitle' => t('Use a photo from your albums'),
+ '$embedPhotosModalCancel' => t('Cancel'),
+ '$embedPhotosModalOK' => t('OK'),
+ '$modalchooseimages' => t('Choose images to embed'),
+ '$modalchoosealbum' => t('Choose an album'),
+ '$modaldiffalbum' => t('Choose a different album'),
+ '$modalerrorlist' => t('Error getting album list'),
+ '$modalerrorlink' => t('Error getting photo link'),
+ '$modalerroralbum' => t('Error getting album'),
'$form_security_token' => get_form_security_token("cover_photo"),
/// @FIXME - yuk
- '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . z_root() . '">' . t('skip this step') . '</a>' : '<a href="'. z_root() . '/photos/' . \App::$channel['channel_address'] . '">' . t('select a photo from your photo albums') . '</a>')
+ '$select' => t('Select existing photo'),
+
));
call_hooks('cover_photo_content_end', $o);
diff --git a/Zotlabs/Module/Defperms.php b/Zotlabs/Module/Defperms.php
index 422333a50..97d9cfd1d 100644
--- a/Zotlabs/Module/Defperms.php
+++ b/Zotlabs/Module/Defperms.php
@@ -22,7 +22,7 @@ class Defperms extends \Zotlabs\Web\Controller {
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_self = 1 and abook_id = %d LIMIT 1",
+ WHERE abook_self = 1 and abook_channel = %d LIMIT 1",
intval(local_channel())
);
if($r) {
diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php
index b1552a694..62a1670f9 100644
--- a/Zotlabs/Module/Directory.php
+++ b/Zotlabs/Module/Directory.php
@@ -17,7 +17,7 @@ class Directory extends \Zotlabs\Web\Controller {
intval(local_channel()),
dbesc($_GET['ignore'])
);
- goaway(z_root() . '/directory?suggest=1');
+ goaway(z_root() . '/directory?f=&suggest=1');
}
$observer = get_observer_hash();
@@ -101,6 +101,11 @@ class Directory extends \Zotlabs\Web\Controller {
if($suggest) {
$r = suggestion_query(local_channel(),get_observer_hash());
+
+ if(! $r) {
+ notice( t('No default suggestions were found.') . EOL);
+ return;
+ }
// Remember in which order the suggestions were
$addresses = array();
diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php
index e6cf5449a..08f1f7a13 100644
--- a/Zotlabs/Module/Dirsearch.php
+++ b/Zotlabs/Module/Dirsearch.php
@@ -97,7 +97,10 @@ class Dirsearch extends \Zotlabs\Web\Controller {
else
$sync = false;
-
+ if(($dirmode == DIRECTORY_MODE_STANDALONE) && (! $hub)) {
+ $hub = \App::get_hostname();
+ }
+
if($hub)
$hub_query = " and xchan_hash in (select hubloc_hash from hubloc where hubloc_host = '" . protect_sprintf(dbesc($hub)) . "') ";
else
@@ -313,7 +316,7 @@ class Dirsearch extends \Zotlabs\Web\Controller {
$ret['results'] = $entries;
if($kw) {
- $k = dir_tagadelic($kw);
+ $k = dir_tagadelic($kw, $hub);
if($k) {
$ret['keywords'] = array();
foreach($k as $kv) {
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index 6d895feb5..8e8a1ed24 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -215,6 +215,7 @@ class Display extends \Zotlabs\Web\Controller {
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']),intval(\App::$pager['start']));
if($load || ($checkjs->disabled()) || ($module_format !== 'html')) {
+
$r = null;
require_once('include/channel.php');
@@ -235,7 +236,7 @@ class Display extends \Zotlabs\Web\Controller {
}
}
- if($r === null) {
+ if(! $r) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner uid can't match
@@ -281,7 +282,7 @@ class Display extends \Zotlabs\Web\Controller {
}
}
- if($r === null) {
+ if(! $r) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner_xchan can't match
if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
@@ -343,14 +344,15 @@ class Display extends \Zotlabs\Web\Controller {
case 'atom':
$atom = replace_macros(get_markup_template('atom_feed.tpl'), array(
- '$version' => xmlify(\Zotlabs\Lib\System::get_project_version()),
- '$red' => xmlify(\Zotlabs\Lib\System::get_platform_name()),
- '$feed_id' => xmlify(\App::$cmd),
- '$feed_title' => xmlify(t('Article')),
- '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
- '$author' => '',
- '$owner' => '',
- '$profile_page' => xmlify(z_root() . '/display/' . $target_item['mid']),
+ '$version' => xmlify(\Zotlabs\Lib\System::get_project_version()),
+ '$generator' => xmlify(\Zotlabs\Lib\System::get_platform_name()),
+ '$generator_uri' => 'https://hubzilla.org',
+ '$feed_id' => xmlify(\App::$cmd),
+ '$feed_title' => xmlify(t('Article')),
+ '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
+ '$author' => '',
+ '$owner' => '',
+ '$profile_page' => xmlify(z_root() . '/display/' . $target_item['mid']),
));
$x = [ 'xml' => $atom, 'channel' => $channel, 'observer_hash' => $observer_hash, 'params' => $params ];
diff --git a/Zotlabs/Module/Email_resend.php b/Zotlabs/Module/Email_resend.php
new file mode 100644
index 000000000..f8a336be0
--- /dev/null
+++ b/Zotlabs/Module/Email_resend.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Zotlabs\Module;
+
+
+class Email_resend extends \Zotlabs\Web\Controller {
+
+ function post() {
+
+ if($_POST['token']) {
+ if(! account_approve(trim($_POST['token']))) {
+ notice(t('Token verification failed.'));
+ }
+ }
+
+ }
+
+
+ function get() {
+
+ if(argc() > 1) {
+ $result = false;
+ $email = hex2bin(argv(1));
+
+ if($email) {
+ $result = verify_email_address( [ 'resend' => true, 'email' => $email ] );
+ }
+
+ if($result) {
+ notice(t('Email verification resent'));
+ }
+ else {
+ notice(t('Unable to resend email verification message.'));
+ }
+
+ goaway(z_root() . '/email_validation/' . bin2hex($email));
+
+ }
+
+ // @todo - one can provide a form here to resend the mail
+ // after directing to here if a succesful login was attempted from an unverified address.
+
+
+ }
+
+}
diff --git a/Zotlabs/Module/Email_validation.php b/Zotlabs/Module/Email_validation.php
new file mode 100644
index 000000000..c1ba9a01a
--- /dev/null
+++ b/Zotlabs/Module/Email_validation.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Zotlabs\Module;
+
+
+class Email_validation extends \Zotlabs\Web\Controller {
+
+ function post() {
+
+ $success = false;
+ if($_POST['token']) {
+ // This will redirect internally on success unless the channel is auto_created
+ if(account_approve(trim(basename($_POST['token'])))) {
+ $success = true;
+ if(get_config('system','auto_channel_create')) {
+ $next_page = get_config('system', 'workflow_channel_next', 'profiles');
+ }
+ if($next_page) {
+ goaway(z_root() . '/' . $next_page);
+ }
+ }
+ }
+ if(! $success) {
+ notice( t('Token verification failed.') . EOL);
+ }
+ }
+
+
+ function get() {
+
+ if(argc() > 1) {
+ $email = hex2bin(argv(1));
+ }
+
+ $o = replace_macros(get_markup_template('email_validation.tpl'), [
+ '$title' => t('Email Verification Required'),
+ '$desc' => sprintf( t('A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message.'),$email),
+ '$resend' => t('Resend Email'),
+ '$email' => bin2hex($email),
+ '$submit' => t('Submit'),
+ '$token' => [ 'token', t('Validation token'),'','' ],
+ ]);
+
+ return $o;
+
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php
index 15cc68d7f..bcbb0e116 100644
--- a/Zotlabs/Module/Embedphotos.php
+++ b/Zotlabs/Module/Embedphotos.php
@@ -53,7 +53,7 @@ class Embedphotos extends \Zotlabs\Web\Controller {
} else {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
}
- json_return_and_die(array('status' => true, 'photolink' => $photolink));
+ json_return_and_die(array('status' => true, 'photolink' => $photolink, 'resource_id' => $resource_id));
}
}
diff --git a/Zotlabs/Module/Go.php b/Zotlabs/Module/Go.php
new file mode 100644
index 000000000..d33136d9e
--- /dev/null
+++ b/Zotlabs/Module/Go.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace Zotlabs\Module;
+
+
+class Go extends \Zotlabs\Web\Controller {
+
+ function init() {
+ if(local_channel()) {
+ $channel = \App::get_channel();
+ if($channel) {
+ profile_load($channel['channel_address'],0);
+ }
+ }
+ }
+
+
+
+ function get() {
+ if(! local_channel()) {
+ notify( t('This page is available only to site members') . EOL);
+ }
+
+ $channel = \App::get_channel();
+
+
+ $title = t('Welcome');
+
+ $m = t('What would you like to do?');
+
+ $m1 = t('Please bookmark this page if you would like to return to it in the future');
+
+
+ $options = [
+ 'profile_photo' => t('Upload a profile photo'),
+ 'cover_photo' => t('Upload a cover photo'),
+ 'profiles' => t('Edit your default profile'),
+ 'suggest' => t('View friend suggestions'),
+ 'directory' => t('View the channel directory'),
+ 'settings' => t('View/edit your channel settings'),
+ 'help' => t('View the site or project documentation'),
+ 'channel/' . $channel['channel_address'] => t('Visit your channel homepage'),
+ 'connections' => t('View your connections and/or add somebody whose address you already know'),
+ 'network' => t('View your personal stream (this may be empty until you add some connections)'),
+
+ ];
+
+ $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
+ $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+
+ if($site_firehose || $net_firehose) {
+ $options['pubstream'] = t('View the public stream. Warning: this content is not moderated');
+ }
+
+ $o = replace_macros(get_markup_template('go.tpl'), [
+ '$title' => $title,
+ '$m' => $m,
+ '$m1' => $m1,
+ '$options' => $options
+
+ ]);
+
+ return $o;
+
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php
index 1e46a6353..baeba82e8 100644
--- a/Zotlabs/Module/Hq.php
+++ b/Zotlabs/Module/Hq.php
@@ -29,6 +29,8 @@ class Hq extends \Zotlabs\Web\Controller {
);
}
+ killme();
+
}
function get($update = 0, $load = false) {
@@ -50,9 +52,9 @@ class Hq extends \Zotlabs\Web\Controller {
$item_normal_update = item_normal_update();
if(! $item_hash) {
- $r = q("SELECT mid FROM item
- WHERE uid = %d
- AND mid = parent_mid
+ $r = q("SELECT mid FROM item
+ WHERE uid = %d $item_normal
+ AND mid = parent_mid
ORDER BY created DESC LIMIT 1",
intval(local_channel())
);
@@ -135,13 +137,11 @@ class Hq extends \Zotlabs\Web\Controller {
$o = replace_macros(get_markup_template("hq.tpl"),
[
'$no_messages' => (($target_item) ? false : true),
- '$no_messages_label' => t('Welcome to hubzilla!')
+ '$no_messages_label' => [ t('Welcome to Hubzilla!'), t('You have got no unseen posts...') ],
+ '$editor' => status_editor($a,$x)
]
);
-
- $o = '<div id="jot-popup">';
- $o .= status_editor($a,$x);
- $o .= '</div>';
+
}
if(! $update && ! $load) {
@@ -266,23 +266,20 @@ class Hq extends \Zotlabs\Web\Controller {
}
if($r) {
- $parents_str = ids_to_querystr($r,'item_id');
- if($parents_str) {
- $items = q("SELECT item.*, item.id AS item_id
- FROM item
- WHERE parent IN ( %s ) $item_normal ",
- dbesc($parents_str)
- );
+ $items = q("SELECT item.*, item.id AS item_id
+ FROM item
+ WHERE parent = '%s' $item_normal ",
+ dbesc($r[0]['item_id'])
+ );
- xchan_query($items,true,(($sys_item) ? local_channel() : 0));
- $items = fetch_post_tags($items,true);
- $items = conv_sort($items,'created');
- }
+ xchan_query($items,true,(($sys_item) ? local_channel() : 0));
+ $items = fetch_post_tags($items,true);
+ $items = conv_sort($items,'created');
}
else {
$items = [];
}
-
+
$o .= conversation($items, 'hq', $update, 'client');
if($updateable) {
diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php
index 2b16ff4e1..36bd72310 100644
--- a/Zotlabs/Module/Import.php
+++ b/Zotlabs/Module/Import.php
@@ -64,7 +64,7 @@ class Import extends \Zotlabs\Web\Controller {
notice( t('Nothing to import.') . EOL);
return;
} else if(strpos($old_address, 'ï¼ ')) {
- // if you copy the identity address from your profile page, make it work for convenience
+ // if you copy the identity address from your profile page, make it work for convenience - WARNING: this is a utf-8 variant and NOT an ASCII ampersand. Please do not edit.
$old_address = str_replace('ï¼ ', '@', $old_address);
}
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 6365230f8..3f857030b 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -39,6 +39,7 @@ class Item extends \Zotlabs\Web\Controller {
$uid = local_channel();
$channel = null;
$observer = null;
+ $datarray = [];
/**
@@ -504,7 +505,12 @@ class Item extends \Zotlabs\Web\Controller {
$body = z_input_filter($body,$mimetype,$execflag);
}
- // Verify ability to use html or php!!!
+
+ $arr = [ 'profile_uid' => $profile_uid, 'content' => $body, 'mimetype' => $mimetype ];
+ call_hooks('post_content',$arr);
+ $body = $arr['content'];
+ $mimetype = $arr['mimetype'];
+
$gacl = $acl->get();
$str_contact_allow = $gacl['allow_cid'];
@@ -516,13 +522,6 @@ class Item extends \Zotlabs\Web\Controller {
require_once('include/text.php');
- if($uid && $uid == $profile_uid && feature_enabled($uid,'markdown')) {
- require_once('include/markdown.php');
- $body = preg_replace_callback('/\[share(.*?)\]/ism','\share_shield',$body);
- $body = markdown_to_bb($body,true,['preserve_lf' => true]);
- $body = preg_replace_callback('/\[share(.*?)\]/ism','\share_unshield',$body);
-
- }
// BBCODE alert: the following functions assume bbcode input
// and will require alternatives for alternative content-types (text/html, text/markdown, text/plain, etc.)
@@ -621,6 +620,21 @@ class Item extends \Zotlabs\Web\Controller {
$i++;
}
}
+
+
+ if(preg_match_all('/(\[share=(.*?)\](.*?)\[\/share\])/',$body,$match)) {
+ // process share by id
+
+ $verb = ACTIVITY_SHARE;
+ $i = 0;
+ foreach($match[2] as $mtch) {
+ $reshare = new \Zotlabs\Lib\Share($mtch);
+ $datarray['obj'] = $reshare->obj();
+ $datarray['obj_type'] = $datarray['obj']['type'];
+ $body = str_replace($match[1][$i],$reshare->bbcode(),$body);
+ $i++;
+ }
+ }
}
@@ -722,7 +736,6 @@ class Item extends \Zotlabs\Web\Controller {
if(!$thr_parent)
$thr_parent = $mid;
- $datarray = array();
$item_thread_top = ((! $parent) ? 1 : 0);
@@ -755,6 +768,7 @@ class Item extends \Zotlabs\Web\Controller {
if ((! $plink) && ($item_thread_top)) {
$plink = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $mid;
+ $plink = substr($plink,0,190);
}
$datarray['aid'] = $channel['channel_account_id'];
diff --git a/Zotlabs/Module/Like.php b/Zotlabs/Module/Like.php
index b07824363..6d9fde17c 100644
--- a/Zotlabs/Module/Like.php
+++ b/Zotlabs/Module/Like.php
@@ -9,9 +9,41 @@ require_once('include/items.php');
class Like extends \Zotlabs\Web\Controller {
- function get() {
+
+
+ private function reaction_to_activity($reaction) {
+
+ $acts = [
+ 'like' => ACTIVITY_LIKE ,
+ 'dislike' => ACTIVITY_DISLIKE ,
+ 'agree' => ACTIVITY_AGREE ,
+ 'disagree' => ACTIVITY_DISAGREE ,
+ 'abstain' => ACTIVITY_ABSTAIN ,
+ 'attendyes' => ACTIVITY_ATTEND ,
+ 'attendno' => ACTIVITY_ATTENDNO ,
+ 'attendmaybe' => ACTIVITY_ATTENDMAYBE
+ ];
+
+ // unlike (etc.) reactions are an undo of positive reactions, rather than a negative action.
+ // The activity is the same in undo actions and will have the same activity mapping
+
+ if(substr($reaction,0,2) === 'un') {
+ $reaction = substr($reaction,2);
+ }
+
+ if(array_key_exists($reaction,$acts)) {
+ return $acts[$reaction];
+ }
+
+ return EMPTY_STR;
+
+ }
+
+
+
+ public function get() {
- $o = '';
+ $o = EMPTY_STR;
$sys_channel = get_sys_channel();
$sys_channel_id = (($sys_channel) ? $sys_channel['channel_id'] : 0);
@@ -35,48 +67,17 @@ class Like extends \Zotlabs\Web\Controller {
if(! $verb)
$verb = 'like';
- switch($verb) {
- case 'like':
- case 'unlike':
- $activity = ACTIVITY_LIKE;
- break;
- case 'dislike':
- case 'undislike':
- $activity = ACTIVITY_DISLIKE;
- break;
- case 'agree':
- case 'unagree':
- $activity = ACTIVITY_AGREE;
- break;
- case 'disagree':
- case 'undisagree':
- $activity = ACTIVITY_DISAGREE;
- break;
- case 'abstain':
- case 'unabstain':
- $activity = ACTIVITY_ABSTAIN;
- break;
- case 'attendyes':
- case 'unattendyes':
- $activity = ACTIVITY_ATTEND;
- break;
- case 'attendno':
- case 'unattendno':
- $activity = ACTIVITY_ATTENDNO;
- break;
- case 'attendmaybe':
- case 'unattendmaybe':
- $activity = ACTIVITY_ATTENDMAYBE;
- break;
- default:
- return;
- break;
+ $activity = $this->reaction_to_activity($verb);
+
+ if(! $activity) {
+ return EMPTY_STR;
}
+
$extended_like = false;
$object = $target = null;
- $post_type = '';
- $objtype = '';
+ $post_type = EMPTY_STR;
+ $objtype = EMPTY_STR;
if(argc() == 3) {
diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php
index 78c34583e..3392e4114 100644
--- a/Zotlabs/Module/Linkinfo.php
+++ b/Zotlabs/Module/Linkinfo.php
@@ -120,9 +120,9 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$siteinfo = self::parseurl_getsiteinfo($url);
- // If this is a Red site, use zrl rather than url so they get zids sent to them by default
+ // If the site uses this platform, use zrl rather than url so they get zids sent to them by default
- if( x($siteinfo,'generator') && (strpos($siteinfo['generator'], \Zotlabs\Lib\System::get_platform_name() . ' ') === 0))
+ if(is_matrix_url($url))
$template = str_replace('url','zrl',$template);
if($siteinfo["title"] == "") {
diff --git a/Zotlabs/Module/Logout.php b/Zotlabs/Module/Logout.php
index 6aa11d110..f06e7278b 100644
--- a/Zotlabs/Module/Logout.php
+++ b/Zotlabs/Module/Logout.php
@@ -9,4 +9,4 @@ class Logout extends \Zotlabs\Web\Controller {
goaway(z_root());
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Magic.php b/Zotlabs/Module/Magic.php
index 9ad9c951c..15e5cedcf 100644
--- a/Zotlabs/Module/Magic.php
+++ b/Zotlabs/Module/Magic.php
@@ -166,7 +166,7 @@ class Magic extends \Zotlabs\Web\Controller {
$token = random_string();
- \Zotlabs\Zot\Verify::create('auth',$channel['channel_id'],$token,$x[0]['hubloc_url']);
+ \Zotlabs\Lib\Verify::create('auth',$channel['channel_id'],$token,$x[0]['hubloc_url']);
$target_url = $x[0]['hubloc_callback'] . '/?f=&auth=' . urlencode(channel_reddress($channel))
. '&sec=' . $token . '&dest=' . urlencode($dest) . '&version=' . ZOT_REVISION;
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index a3e1eee88..6e961dc36 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -108,6 +108,9 @@ class Network extends \Zotlabs\Web\Controller {
}
+ $default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : 0);
+ $default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : 99);
+
// if no tabs are selected, defaults to comments
@@ -117,8 +120,8 @@ class Network extends \Zotlabs\Web\Controller {
$liked = ((x($_GET,'liked')) ? intval($_GET['liked']) : 0);
$conv = ((x($_GET,'conv')) ? intval($_GET['conv']) : 0);
$spam = ((x($_GET,'spam')) ? intval($_GET['spam']) : 0);
- $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0);
- $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99);
+ $cmin = ((array_key_exists('cmin',$_GET)) ? intval($_GET['cmin']) : $default_cmin);
+ $cmax = ((array_key_exists('cmax',$_GET)) ? intval($_GET['cmax']) : $default_cmax);
$file = ((x($_GET,'file')) ? $_GET['file'] : '');
$xchan = ((x($_GET,'xchan')) ? $_GET['xchan'] : '');
$net = ((x($_GET,'net')) ? $_GET['net'] : '');
@@ -141,7 +144,7 @@ class Network extends \Zotlabs\Web\Controller {
// NOTREACHED
}
if($_GET['pf'] === '1')
- $deftag = '@' . t('forum') . '+' . intval($cid) . '+';
+ $deftag = '!' . t('forum') . '+' . intval($cid);
else
$def_acl = [ 'allow_cid' => '<' . $r[0]['abook_xchan'] . '>', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
}
@@ -206,8 +209,11 @@ class Network extends \Zotlabs\Web\Controller {
: '');
$sql_nets = '';
+
+ $distinct = '';
+ $item_thread_top = ' AND item_thread_top = 1 ';
- $sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE item_thread_top = 1 $sql_options ) ";
+ $sql_extra = $sql_options;
if($group) {
$contact_str = '';
@@ -223,7 +229,8 @@ class Network extends \Zotlabs\Web\Controller {
$contact_str = ' 0 ';
info( t('Privacy group is empty'));
}
-
+ $distinct = ' distinct ';
+ $item_thread_top = '';
$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent $item_normal ) ";
$x = group_rec_byhash(local_channel(), $group_hash);
@@ -247,6 +254,8 @@ class Network extends \Zotlabs\Web\Controller {
intval(local_channel())
);
if($r) {
+ $distinct = ' distinct ';
+ $item_thread_top = '';
$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($r[0]['abook_xchan']) . "' or owner_xchan = '" . dbesc($r[0]['abook_xchan']) . "' ) $item_normal ) ";
$title = replace_macros(get_markup_template("section_title.tpl"),array(
'$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>'
@@ -261,13 +270,15 @@ class Network extends \Zotlabs\Web\Controller {
}
}
elseif($xchan) {
- $r = q("select * from xchan where xchan_hash = '%s'",
- dbesc($xchan)
- );
- if($r) {
- $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($xchan) . "' or owner_xchan = '" . dbesc($xchan) . "' ) $item_normal ) ";
- $title = replace_macros(get_markup_template("section_title.tpl"),array(
- '$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>'
+ $r = q("select * from xchan where xchan_hash = '%s'",
+ dbesc($xchan)
+ );
+ if($r) {
+ $distinct = ' distinct ';
+ $item_thread_top = '';
+ $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($xchan) . "' or owner_xchan = '" . dbesc($xchan) . "' ) $item_normal ) ";
+ $title = replace_macros(get_markup_template("section_title.tpl"),array(
+ '$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>'
));
$o = $tabs;
$o .= $title;
@@ -370,6 +381,8 @@ class Network extends \Zotlabs\Web\Controller {
}
if($conv) {
+ $distinct = ' distinct ';
+ $item_thread_top = '';
$sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan like '%s' or item_mentionsme = 1 )) ",
dbesc(protect_sprintf($channel['channel_hash']))
);
@@ -406,7 +419,6 @@ class Network extends \Zotlabs\Web\Controller {
if($cmax == 99)
$sql_nets .= " OR abook.abook_closeness IS NULL ) ";
-
}
$net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : '');
@@ -446,7 +458,7 @@ class Network extends \Zotlabs\Web\Controller {
if($nouveau && $load) {
// "New Item View" - show all items unthreaded in reverse created date order
- $items = q("SELECT item.*, item.id AS item_id, received FROM item
+ $items = q("SELECT item.*, item.id AS item_id, received FROM item
left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
$net_query
WHERE true $uids $item_normal
@@ -475,18 +487,16 @@ class Network extends \Zotlabs\Web\Controller {
if($load) {
// Fetch a page full of parent items for this page
-
- $r = q("SELECT distinct item.id AS item_id, $ordering FROM item
+ $r = q("SELECT $distinct item.parent AS item_id FROM item
left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
$net_query
- WHERE true $uids $item_normal
- AND item.parent = item.id
+ WHERE true $uids $item_thread_top $item_normal
+ AND item.mid = item.parent_mid
and (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra3 $sql_extra $sql_nets
$net_query2
ORDER BY $ordering DESC $pager_sql "
);
-
}
else {
diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php
index 2b73fa191..548f28c4f 100644
--- a/Zotlabs/Module/New_channel.php
+++ b/Zotlabs/Module/New_channel.php
@@ -89,9 +89,7 @@ class New_channel extends \Zotlabs\Web\Controller {
change_channel($result['channel']['channel_id']);
- if(! strlen($next_page = get_config('system','workflow_channel_next')))
- $next_page = 'settings';
-
+ $next_page = get_config('system', 'workflow_channel_next', 'profiles');
goaway(z_root() . '/' . $next_page);
}
@@ -144,6 +142,7 @@ class New_channel extends \Zotlabs\Web\Controller {
'$role' => $role,
'$default_role' => $default_role,
'$nickname' => $nickname,
+ '$validate' => t('Validate'),
'$submit' => t('Create'),
'$channel_usage_message' => $channel_usage_message
));
diff --git a/Zotlabs/Module/Owa.php b/Zotlabs/Module/Owa.php
index 23ee14f39..e62fc9592 100644
--- a/Zotlabs/Module/Owa.php
+++ b/Zotlabs/Module/Owa.php
@@ -42,7 +42,7 @@ class Owa extends \Zotlabs\Web\Controller {
logger('OWA success: ' . $hubloc['hubloc_addr'],LOGGER_DATA);
$ret['success'] = true;
$token = random_string(32);
- \Zotlabs\Zot\Verify::create('owt',0,$token,$hubloc['hubloc_addr']);
+ \Zotlabs\Lib\Verify::create('owt',0,$token,$hubloc['hubloc_addr']);
$result = '';
openssl_public_encrypt($token,$result,$hubloc['xchan_pubkey']);
$ret['encrypted_token'] = base64url_encode($result);
diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index a3f6cdfec..eab49d69e 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -148,14 +148,12 @@ class Ping extends \Zotlabs\Web\Controller {
$pubs = q("SELECT count(id) as total from item
WHERE uid = %d
- AND author_xchan != '%s'
- AND obj_type != '%s'
AND item_unseen = 1
+ AND author_xchan != '%s'
AND created > '" . datetime_convert('UTC','UTC',$_SESSION['static_loadtime']) . "'
$item_normal",
intval($sys['channel_id']),
- dbesc(get_observer_hash()),
- dbesc(ACTIVITY_OBJ_FILE)
+ dbesc(get_observer_hash())
);
if($pubs)
@@ -168,8 +166,8 @@ class Ping extends \Zotlabs\Web\Controller {
$r = q("SELECT * FROM item
WHERE uid = %d
- AND author_xchan != '%s'
AND item_unseen = 1
+ AND author_xchan != '%s'
AND created > '" . datetime_convert('UTC','UTC',$_SESSION['static_loadtime']) . "'
$item_normal
ORDER BY created DESC
@@ -210,22 +208,22 @@ class Ping extends \Zotlabs\Web\Controller {
if(x($_REQUEST, 'markRead') && local_channel()) {
switch($_REQUEST['markRead']) {
case 'network':
- $r = q("update item set item_unseen = 0 where item_unseen = 1 and uid = %d",
+ $r = q("UPDATE item SET item_unseen = 0 WHERE uid = %d AND item_unseen = 1",
intval(local_channel())
);
break;
case 'home':
- $r = q("update item set item_unseen = 0 where item_unseen = 1 and item_wall = 1 and uid = %d",
+ $r = q("UPDATE item SET item_unseen = 0 WHERE uid = %d AND item_unseen = 1 AND item_wall = 1",
intval(local_channel())
);
break;
case 'mail':
- $r = q("update mail set mail_seen = 1 where mail_seen = 0 and channel_id = %d ",
+ $r = q("UPDATE mail SET mail_seen = 1 WHERE channel_id = %d AND mail_seen = 0",
intval(local_channel())
);
break;
case 'all_events':
- $r = q("update event set dismissed = 1 where dismissed = 0 and uid = %d AND dtstart < '%s' AND dtstart > '%s' ",
+ $r = q("UPDATE event SET dismissed = 1 WHERE uid = %d AND dismissed = 0 AND dtstart < '%s' AND dtstart > '%s' ",
intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
@@ -245,9 +243,9 @@ class Ping extends \Zotlabs\Web\Controller {
}
if(x($_REQUEST, 'markItemRead') && local_channel()) {
- $r = q("update item set item_unseen = 0 where parent = %d and uid = %d",
- intval($_REQUEST['markItemRead']),
- intval(local_channel())
+ $r = q("UPDATE item SET item_unseen = 0 WHERE uid = %d AND parent = %d",
+ intval(local_channel()),
+ intval($_REQUEST['markItemRead'])
);
}
@@ -256,7 +254,7 @@ class Ping extends \Zotlabs\Web\Controller {
* dropdown menu.
*/
if(argc() > 1 && argv(1) === 'notify') {
- $t = q("select * from notify where uid = %d and seen = 0 order by created desc",
+ $t = q("SELECT * FROM notify WHERE uid = %d AND seen = 0 ORDER BY CREATED DESC",
intval(local_channel())
);
@@ -270,7 +268,18 @@ class Ping extends \Zotlabs\Web\Controller {
$mid = basename($tt['link']);
- $b64mid = ((strpos($mid, 'b64.' === 0)) ? $mid : 'b64.' . base64url_encode($mid));
+ if(in_array($tt['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) {
+ // we need the thread parent
+ $r = q("select thr_parent from item where mid = '%s' and uid = %d limit 1",
+ dbesc($mid),
+ intval(local_channel())
+ );
+
+ $b64mid = ((strpos($r[0]['thr_parent'], 'b64.' === 0)) ? $r[0]['thr_parent'] : 'b64.' . base64url_encode($r[0]['thr_parent']));
+ }
+ else {
+ $b64mid = ((strpos($mid, 'b64.' === 0)) ? $mid : 'b64.' . base64url_encode($mid));
+ }
$notifs[] = array(
'notify_link' => z_root() . '/notify/view/' . $tt['id'],
@@ -320,10 +329,13 @@ class Ping extends \Zotlabs\Web\Controller {
if(argc() > 1 && (argv(1) === 'network' || argv(1) === 'home')) {
$result = array();
- $r = q("SELECT * FROM item
- WHERE item_unseen = 1 and uid = %d $item_normal
+ $r = q("SELECT * FROM item
+ WHERE uid = %d
+ AND item_unseen = 1
AND author_xchan != '%s'
- ORDER BY created DESC limit 300",
+ $item_normal
+ ORDER BY created DESC
+ LIMIT 300",
intval(local_channel()),
dbesc($ob_hash)
);
@@ -492,9 +504,9 @@ class Ping extends \Zotlabs\Web\Controller {
$t3 = dba_timer();
if($vnotify & (VNOTIFY_NETWORK|VNOTIFY_CHANNEL)) {
-
- $r = q("SELECT id, item_wall FROM item
- WHERE item_unseen = 1 and uid = %d
+
+ $r = q("SELECT id, item_wall FROM item
+ WHERE uid = %d and item_unseen = 1
$item_normal
AND author_xchan != '%s'",
intval(local_channel()),
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index 45a606d5f..2ce8686b9 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -1,10 +1,11 @@
<?php
namespace Zotlabs\Module;
-/* @file profile_photo.php
- @brief Module-file with functions for handling of profile-photos
-
-*/
+/*
+ * @file Profile_photo.php
+ * @brief Module-file with functions for handling of profile-photos
+ *
+ */
require_once('include/photo/photo_driver.php');
@@ -55,6 +56,10 @@ class Profile_photo extends \Zotlabs\Web\Controller {
if((array_key_exists('cropfinal',$_POST)) && (intval($_POST['cropfinal']) == 1)) {
+ // logger('crop: ' . print_r($_POST,true));
+
+
+
// phase 2 - we have finished cropping
if(argc() != 2) {
@@ -86,10 +91,10 @@ class Profile_photo extends \Zotlabs\Web\Controller {
}
- $srcX = $_POST['xstart'];
- $srcY = $_POST['ystart'];
- $srcW = $_POST['xfinal'] - $srcX;
- $srcH = $_POST['yfinal'] - $srcY;
+ $srcX = intval($_POST['xstart']);
+ $srcY = intval($_POST['ystart']);
+ $srcW = intval($_POST['xfinal']) - $srcX;
+ $srcH = intval($_POST['yfinal']) - $srcY;
$r = q("SELECT * FROM photo WHERE resource_id = '%s' AND uid = %d AND imgscale = %d LIMIT 1",
dbesc($image_id),
@@ -299,7 +304,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
}
$channel = \App::get_channel();
-
+ $pf = 0;
$newuser = false;
if(argc() == 2 && argv(1) === 'new')
@@ -313,8 +318,8 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$resource_id = argv(2);
- // When using an existing photo, we don't have a dialogue to offer a choice of profiles,
- // so it gets attached to the default
+
+ $pf = (($_REQUEST['pf']) ? intval($_REQUEST['pf']) : 0);
$c = q("select id, is_default from profile where uid = %d",
intval(local_channel())
@@ -326,6 +331,9 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$_REQUEST['profile'] = $c[0]['id'];
$multi_profiles = false;
}
+ else {
+ $_REQUEST['profile'] = $pf;
+ }
$r = q("SELECT id, album, imgscale FROM photo WHERE uid = %d AND resource_id = '%s' ORDER BY imgscale ASC",
intval(local_channel()),
@@ -425,6 +433,16 @@ class Profile_photo extends \Zotlabs\Web\Controller {
intval(local_channel())
);
+ if($profiles) {
+ for($x = 0; $x < count($profiles); $x ++) {
+ $profiles[$x]['selected'] = false;
+ if($pf && $profiles[$x]['id'] == $pf)
+ $profiles[$x]['selected'] = true;
+ if((! $pf) && $profiles[$x]['is_default'])
+ $profiles[$x]['selected'] = true;
+ }
+ }
+
$importing = ((array_key_exists('importfile',\App::$data)) ? true : false);
if(! x(\App::$data,'imagecrop')) {
@@ -436,14 +454,23 @@ class Profile_photo extends \Zotlabs\Web\Controller {
'$importfile' => (($importing) ? \App::$data['importfile'] : ''),
'$lbl_upfile' => t('Upload File:'),
'$lbl_profiles' => t('Select a profile:'),
- '$title' => (($importing) ? t('Use Photo for Profile') : t('Upload Profile Photo')),
+ '$title' => (($importing) ? t('Use Photo for Profile') : t('Change Profile Photo')),
'$submit' => (($importing) ? t('Use') : t('Upload')),
'$profiles' => $profiles,
'$single' => ((count($profiles) == 1) ? true : false),
'$profile0' => $profiles[0],
+ '$embedPhotos' => t('Use a photo from your albums'),
+ '$embedPhotosModalTitle' => t('Use a photo from your albums'),
+ '$embedPhotosModalCancel' => t('Cancel'),
+ '$embedPhotosModalOK' => t('OK'),
+ '$modalchooseimages' => t('Choose images to embed'),
+ '$modalchoosealbum' => t('Choose an album'),
+ '$modaldiffalbum' => t('Choose a different album'),
+ '$modalerrorlist' => t('Error getting album list'),
+ '$modalerrorlink' => t('Error getting photo link'),
+ '$modalerroralbum' => t('Error getting album'),
'$form_security_token' => get_form_security_token("profile_photo"),
- // FIXME - yuk
- '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . z_root() . '">' . t('skip this step') . '</a>' : '<a href="'. z_root() . '/photos/' . \App::$channel['channel_address'] . '">' . t('select a photo from your photo albums') . '</a>')
+ '$select' => t('Select existing photo'),
));
call_hooks('profile_photo_content_end', $o);
diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php
index c469a0eca..79f205a22 100644
--- a/Zotlabs/Module/Pubstream.php
+++ b/Zotlabs/Module/Pubstream.php
@@ -12,14 +12,26 @@ class Pubstream extends \Zotlabs\Web\Controller {
if($load)
$_SESSION['loadtime'] = datetime_convert();
-
- if(observer_prohibited(true)) {
+ if((observer_prohibited(true))) {
+ return login();
+ }
+
+ if(! intval(get_config('system','open_pubstream',1))) {
+ if(! get_observer_hash()) {
return login();
+ }
+ }
+
+ $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
+ $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+
+ if(! ($site_firehose || $net_firehose)) {
+ return '';
+ }
+
+ if($net_firehose) {
+ $site_firehose = false;
}
-
- $disable_discover_tab = get_config('system','disable_discover_tab') || get_config('system','disable_discover_tab') === false;
- if($disable_discover_tab)
- return;
$mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
@@ -142,7 +154,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
require_once('include/channel.php');
require_once('include/security.php');
- if(get_config('system','site_firehose')) {
+ if($site_firehose) {
$uids = " and item.uid in ( " . stream_perms_api_uids(PERMS_PUBLIC) . " ) and item_private = 0 and item_wall = 1 ";
}
else {
@@ -160,7 +172,8 @@ class Pubstream extends \Zotlabs\Web\Controller {
$net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : '');
$net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : '');
-
+
+ $abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " ";
$simple_update = (($_SESSION['loadtime']) ? " AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' " : '');
@@ -179,7 +192,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
if($load) {
if($mid) {
$r = q("SELECT parent AS item_id FROM item
- left join abook on item.author_xchan = abook.abook_xchan
+ left join abook on item.author_xchan = abook.abook_xchan
$net_query
WHERE mid like '%s' $uids $item_normal
and (abook.abook_blocked = 0 or abook.abook_flags is null)
@@ -189,11 +202,10 @@ class Pubstream extends \Zotlabs\Web\Controller {
}
else {
// Fetch a page full of parent items for this page
- $r = q("SELECT distinct item.id AS item_id, $ordering FROM item
- left join abook on item.author_xchan = abook.abook_xchan
+ $r = q("SELECT item.id AS item_id FROM item
+ left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
$net_query
- WHERE true $uids $item_normal
- AND item.parent = item.id
+ WHERE true $uids and item.item_thread_top = 1 $item_normal
and (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra3 $sql_extra $sql_nets $net_query2
ORDER BY $ordering DESC $pager_sql "
diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php
index deaee31bf..5356669e9 100644
--- a/Zotlabs/Module/Register.php
+++ b/Zotlabs/Module/Register.php
@@ -123,9 +123,6 @@ class Register extends \Zotlabs\Web\Controller {
if($policy == REGISTER_OPEN ) {
if($email_verify) {
$res = verify_email_address($result);
- if($res) {
- info( t('Registration successful. Please check your email for validation instructions.') . EOL ) ;
- }
}
else {
$res = send_register_success_email($result['email'],$result['password']);
@@ -133,7 +130,8 @@ class Register extends \Zotlabs\Web\Controller {
if($res) {
if($invite_code) {
info( t('Registration successful. Continue to create your first channel...') . EOL ) ;
- } else {
+ }
+ else {
info( t('Registration successful. Please check your email for validation instructions.') . EOL ) ;
}
}
@@ -150,9 +148,11 @@ class Register extends \Zotlabs\Web\Controller {
}
if($email_verify) {
- goaway(z_root());
+ goaway(z_root() . '/email_validation/' . bin2hex($result['email']));
}
-
+
+ // fall through and authenticate if no approvals or verifications were required.
+
authenticate_success($result['account'],null,true,false,true);
$new_channel = false;
@@ -217,6 +217,9 @@ class Register extends \Zotlabs\Web\Controller {
$privacy_role = ((x($_REQUEST,'permissions_role')) ? $_REQUEST['permissions_role'] : "");
$perm_roles = \Zotlabs\Access\PermissionRoles::roles();
+
+ // A new account will not have a techlevel, but accounts can also be created by the administrator.
+
if((get_account_techlevel() < 4) && $privacy_role !== 'custom')
unset($perm_roles[t('Other')]);
@@ -231,15 +234,17 @@ class Register extends \Zotlabs\Web\Controller {
// Configurable whether to restrict age or not - default is based on international legal requirements
// This can be relaxed if you are on a restricted server that does not share with public servers
- if(get_config('system','no_age_restriction'))
+ if(get_config('system','no_age_restriction')) {
$label_tos = sprintf( t('I accept the %s for this website'), $toslink);
- else
+ }
+ else {
$age = get_config('system','minimum_age');
if(!$age) {
$age = 13;
}
$label_tos = sprintf( t('I am over %s years of age and accept the %s for this website'), $age, $toslink);
-
+ }
+
$enable_tos = 1 - intval(get_config('system','no_termsofservice'));
$email = array('email', t('Your email address'), ((x($_REQUEST,'email')) ? strip_tags(trim($_REQUEST['email'])) : ""));
@@ -255,6 +260,7 @@ class Register extends \Zotlabs\Web\Controller {
$auto_create = (get_config('system','auto_channel_create') ? true : false);
$default_role = get_config('system','default_permissions_role');
+ $email_verify = get_config('system','verify_email');
require_once('include/bbcode.php');
@@ -278,7 +284,7 @@ class Register extends \Zotlabs\Web\Controller {
'$pass1' => $password,
'$pass2' => $password2,
'$submit' => t('Register'),
- '$verify_note' => t('This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions.')
+ '$verify_note' => (($email_verify) ? t('This site requires email verification. After completing this form, please check your email for further instructions.') : ''),
));
return $o;
diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php
index a572a5a42..55e0e746f 100644
--- a/Zotlabs/Module/Search.php
+++ b/Zotlabs/Module/Search.php
@@ -90,7 +90,7 @@ class Search extends \Zotlabs\Web\Controller {
}
else {
$regstr = db_getfunc('REGEXP');
- $sql_extra = sprintf(" AND item.body $regstr '%s' ", dbesc(protect_sprintf(preg_quote($search))));
+ $sql_extra = sprintf(" AND (item.title $regstr '%s' OR item.body $regstr '%s') ", dbesc(protect_sprintf(preg_quote($search))), dbesc(protect_sprintf(preg_quote($search))));
}
// Here is the way permissions work in the search module...
@@ -165,40 +165,41 @@ class Search extends \Zotlabs\Web\Controller {
if($load) {
$r = null;
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $prefix = 'distinct on (created, mid)';
- $suffix = 'ORDER BY created DESC, mid';
- } else {
- $prefix = 'distinct';
- $suffix = 'group by mid ORDER BY created DESC';
- }
if(local_channel()) {
- $r = q("SELECT $prefix mid, item.id as item_id, item.* from item
+ $r = q("SELECT mid, MAX(id) as item_id from item
WHERE ((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' AND item.deny_gid = '' AND item_private = 0 )
OR ( item.uid = %d )) OR item.owner_xchan = '%s' )
$item_normal
$sql_extra
- $suffix $pager_sql ",
+ group by mid order by created desc $pager_sql ",
intval(local_channel()),
dbesc($sys['xchan_hash'])
);
}
if($r === null) {
- $r = q("SELECT $prefix mid, item.id as item_id, item.* from item
+ $r = q("SELECT mid, MAX(id) as item_id from item
WHERE (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = ''
AND item.deny_gid = '' AND item_private = 0 )
and owner_xchan in ( " . stream_perms_xchans(($observer) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
$pub_sql ) OR owner_xchan = '%s')
$item_normal
$sql_extra
- $suffix $pager_sql",
+ group by mid order by created desc $pager_sql",
dbesc($sys['xchan_hash'])
);
}
+ if($r) {
+ $str = ids_to_querystr($r,'item_id');
+ $r = q("select *, id as item_id from item where id in ( " . $str . ") order by created desc ");
+ }
}
else {
$r = array();
}
+
+
+
+
}
if($r) {
diff --git a/Zotlabs/Module/Settings/Account.php b/Zotlabs/Module/Settings/Account.php
index 18890e89f..9643c5958 100644
--- a/Zotlabs/Module/Settings/Account.php
+++ b/Zotlabs/Module/Settings/Account.php
@@ -113,7 +113,7 @@ class Account {
'$origpass' => array('origpass', t('Current Password'), ' ',''),
'$password1'=> array('npassword', t('Enter New Password'), '', ''),
'$password2'=> array('confirm', t('Confirm New Password'), '', t('Leave password fields blank unless changing')),
- '$techlevel' => [ 'techlevel', t('Your technical skill level'), $def_techlevel, t('Used to provide a member experience matched to your comfort level'), $techlevels ],
+ '$techlevel' => [ 'techlevel', t('Your technical skill level'), $def_techlevel, t('Used to provide a member experience and additional features consistent with your comfort level'), $techlevels ],
'$techlock' => $techlock,
'$submit' => t('Submit'),
'$email' => array('email', t('Email Address:'), $email, ''),
diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php
index 5e9e88a6d..fb8284d2e 100644
--- a/Zotlabs/Module/Settings/Channel.php
+++ b/Zotlabs/Module/Settings/Channel.php
@@ -331,22 +331,21 @@ class Channel {
);
$limits = \Zotlabs\Access\PermissionLimits::Get(local_channel());
+ $anon_comments = get_config('system','anonymous_comments',true);
foreach($global_perms as $k => $perm) {
$options = array();
+ $can_be_public = ((strstr($k,'view') || ($k === 'post_comments' && $anon_comments)) ? true : false);
foreach($perm_opts as $opt) {
- if(((! strstr($k,'view')) && $k !== 'post_comments') && $opt[1] == PERMS_PUBLIC)
+ if($opt[1] == PERMS_PUBLIC && (! $can_be_public))
continue;
$options[$opt[1]] = $opt[0];
}
$permiss[] = array($k,$perm,$limits[$k],'',$options);
}
-
-
+
// logger('permiss: ' . print_r($permiss,true));
-
-
$username = $channel['channel_name'];
$nickname = $channel['channel_address'];
$timezone = $channel['channel_timezone'];
diff --git a/Zotlabs/Module/Settings/Display.php b/Zotlabs/Module/Settings/Display.php
index e1ea0e3e5..340b3c0bb 100644
--- a/Zotlabs/Module/Settings/Display.php
+++ b/Zotlabs/Module/Settings/Display.php
@@ -21,7 +21,7 @@ class Display {
if(! $theme)
$theme = 'redbasic';
- $mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : '');
+
$preload_images = ((x($_POST,'preload_images')) ? intval($_POST['preload_images']) : 0);
$channel_menu = ((x($_POST,'channel_menu')) ? intval($_POST['channel_menu']) : 0);
$user_scalable = ((x($_POST,'user_scalable')) ? intval($_POST['user_scalable']) : 0);
@@ -47,11 +47,6 @@ class Display {
if($itemspage > 100)
$itemspage = 100;
- if ($mobile_theme == "---")
- del_pconfig(local_channel(),'system','mobile_theme');
- else {
- set_pconfig(local_channel(),'system','mobile_theme',$mobile_theme);
- }
set_pconfig(local_channel(),'system','preload_images',$preload_images);
set_pconfig(local_channel(),'system','user_scalable',$user_scalable);
@@ -114,10 +109,6 @@ class Display {
$theme = (($existing_theme) ? $existing_theme : $default_theme);
- $default_mobile_theme = get_config('system','mobile_theme');
- if(! $mobile_default_theme)
- $mobile_default_theme = 'none';
-
$allowed_themes_str = get_config('system','allowed_themes');
$allowed_themes_raw = explode(',',$allowed_themes_str);
$allowed_themes = array();
@@ -135,26 +126,19 @@ class Display {
$info = get_theme_info($th);
$compatible = check_plugin_versions($info);
- if(!$compatible) {
- $mobile_themes[$f] = $themes[$f] = sprintf(t('%s - (Incompatible)'), $f);
+ if(! $compatible) {
+ $themes[$f] = sprintf(t('%s - (Incompatible)'), $f);
continue;
}
$is_experimental = file_exists('view/theme/' . $th . '/experimental');
$unsupported = file_exists('view/theme/' . $th . '/unsupported');
- $is_mobile = file_exists('view/theme/' . $th . '/mobile');
$is_library = file_exists('view/theme/'. $th . '/library');
- $mobile_themes['---'] = t("No special theme for mobile devices");
if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
$theme_name = (($is_experimental) ? sprintf(t('%s - (Experimental)'), $f) : $f);
if (! $is_library) {
- if($is_mobile) {
- $mobile_themes[$f] = $themes[$f] = $theme_name . ' (' . t('mobile') . ')';
- }
- else {
- $mobile_themes[$f] = $themes[$f] = $theme_name;
- }
+ $themes[$f] = $theme_name;
}
}
}
@@ -166,7 +150,6 @@ class Display {
$theme_selected = explode(':', $theme_selected)[0];
}
- $mobile_theme_selected = (!x($_SESSION,'mobile_theme')? $default_mobile_theme : $_SESSION['mobile_theme']);
$preload_images = get_pconfig(local_channel(),'system','preload_images');
$preload_images = (($preload_images===false)? '0': $preload_images); // default if not set: 0
@@ -213,7 +196,6 @@ class Display {
'$theme' => (($themes) ? array('theme', t('Display Theme:'), $theme_selected, '', $themes, 'preview') : false),
'$schema' => array('schema', t('Select scheme'), $existing_schema, '' , $schemas),
- '$mobile_theme' => (($mobile_themes) ? array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, '') : false),
'$preload_images' => array('preload_images', t("Preload images before rendering the page"), $preload_images, t("The subjective page load time will be longer but the page will be ready when displayed"), $yes_no),
'$user_scalable' => array('user_scalable', t("Enable user zoom on mobile devices"), $user_scalable, '', $yes_no),
'$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')),
diff --git a/Zotlabs/Module/Settings/Featured.php b/Zotlabs/Module/Settings/Featured.php
index 6a8d10b2d..1da139206 100644
--- a/Zotlabs/Module/Settings/Featured.php
+++ b/Zotlabs/Module/Settings/Featured.php
@@ -17,12 +17,8 @@ class Featured {
$cmin = intval($_POST['affinity_cmin']);
if($cmin < 0 || $cmin > 99)
$cmin = 0;
- if($cmin !== 0 || $cmax !== 99) {
- set_pconfig(local_channel(),'system','network_page_default','cmin=' . $cmin . '&cmax=' . $cmax);
- }
- else {
- set_pconfig(local_channel(),'system','network_page_default','');
- }
+ set_pconfig(local_channel(),'affinity','cmin',$cmin);
+ set_pconfig(local_channel(),'affinity','cmax',$cmax);
info( t('Affinity Slider settings updated.') . EOL);
@@ -46,12 +42,12 @@ class Featured {
$cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
$cmax = (($cmax) ? $cmax : 99);
$setting_fields .= replace_macros(get_markup_template('field_input.tpl'), array(
- '$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, '')
+ '$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, t('0-99 default 99'))
));
$cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
$cmin = (($cmin) ? $cmin : 0);
$setting_fields .= replace_macros(get_markup_template('field_input.tpl'), array(
- '$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, '')
+ '$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, t('0-99 - default 0'))
));
$settings_addons .= replace_macros(get_markup_template('generic_addon_settings.tpl'), array(
@@ -65,7 +61,8 @@ class Featured {
$tpl = get_markup_template("settings_addons.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_featured"),
- '$title' => t('Feature/Addon Settings'),
+ '$title' => t('Addon Settings'),
+ '$descrip' => t('Please save/submit changes to any panel before opening another.'),
'$settings_addons' => $settings_addons
));
return $o;
diff --git a/Zotlabs/Module/Settings/Permcats.php b/Zotlabs/Module/Settings/Permcats.php
index 336f69653..535399083 100644
--- a/Zotlabs/Module/Settings/Permcats.php
+++ b/Zotlabs/Module/Settings/Permcats.php
@@ -49,7 +49,7 @@ class Permcats {
if(argc() > 2)
- $name = argv(2);
+ $name = hex2bin(argv(2));
if(argc() > 3 && argv(3) === 'drop') {
\Zotlabs\Lib\Permcat::delete(local_channel(),$name);
@@ -70,7 +70,7 @@ class Permcats {
if(($pc['name']) && ($name) && ($pc['name'] == $name))
$existing = $pc['perms'];
if(! $pc['system'])
- $permcats[$pc['name']] = $pc['localname'];
+ $permcats[bin2hex($pc['name'])] = $pc['localname'];
}
}
diff --git a/Zotlabs/Module/Share.php b/Zotlabs/Module/Share.php
index 5c4811c59..7f4d8b1eb 100644
--- a/Zotlabs/Module/Share.php
+++ b/Zotlabs/Module/Share.php
@@ -14,6 +14,10 @@ class Share extends \Zotlabs\Web\Controller {
if(! $post_id)
killme();
+
+ echo '[share=' . $post_id . '][/share]';
+ killme();
+
if(! (local_channel() || remote_channel()))
killme();
diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php
index fafd51f65..92ee78cc6 100644
--- a/Zotlabs/Module/Siteinfo.php
+++ b/Zotlabs/Module/Siteinfo.php
@@ -5,7 +5,6 @@ namespace Zotlabs\Module;
class Siteinfo extends \Zotlabs\Web\Controller {
function init() {
-logger(print_r($_REQUEST,true));
if (argv(1) === 'json' || $_REQUEST['module_format'] === 'json') {
$data = get_site_info();
json_return_and_die($data);
diff --git a/Zotlabs/Module/Sitelist.php b/Zotlabs/Module/Sitelist.php
index e7d4187b7..2ac5ed1b8 100644
--- a/Zotlabs/Module/Sitelist.php
+++ b/Zotlabs/Module/Sitelist.php
@@ -32,7 +32,7 @@ class Sitelist extends \Zotlabs\Web\Controller {
$result = array('success' => false);
- $r = q("select count(site_url) as total from site where site_type = %d $sql_extra ",
+ $r = q("select count(site_url) as total from site where site_type = %d and site_dead = 0 $sql_extra ",
intval(SITE_TYPE_ZOT)
);
@@ -42,7 +42,7 @@ class Sitelist extends \Zotlabs\Web\Controller {
$result['start'] = $start;
$result['limit'] = $limit;
- $r = q("select * from site where site_type = %d $sql_extra $sql_order $sql_limit",
+ $r = q("select * from site where site_type = %d and site_dead = 0 $sql_extra $sql_order $sql_limit",
intval(SITE_TYPE_ZOT)
);
diff --git a/Zotlabs/Module/Thing.php b/Zotlabs/Module/Thing.php
index f816632ab..c3d8ff802 100644
--- a/Zotlabs/Module/Thing.php
+++ b/Zotlabs/Module/Thing.php
@@ -20,6 +20,11 @@ class Thing extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
+ if($_SERVER['REQUEST_METHOD'] === 'GET' && argc() < 2) {
+ profile_load($channel['channel_address']);
+ }
+
+
$term_hash = (($_REQUEST['term_hash']) ? $_REQUEST['term_hash'] : '');
$name = escape_tags($_REQUEST['term']);
diff --git a/Zotlabs/Module/Token.php b/Zotlabs/Module/Token.php
index e0d9d74d7..f7c074233 100644
--- a/Zotlabs/Module/Token.php
+++ b/Zotlabs/Module/Token.php
@@ -2,39 +2,36 @@
namespace Zotlabs\Module;
-
-class Token extends \Zotlabs\Web\Controller {
+use Zotlabs\Identity\OAuth2Storage;
- function get() {
+class Token extends \Zotlabs\Web\Controller {
+ function init() {
- // workaround for HTTP-auth in CGI mode
- if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
- $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
- if(strlen($userpass)) {
- list($name, $password) = explode(':', $userpass);
- $_SERVER['PHP_AUTH_USER'] = $name;
- $_SERVER['PHP_AUTH_PW'] = $password;
- }
+ // workaround for HTTP-auth in CGI mode
+ if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
+ $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
}
-
- if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
- $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
- if(strlen($userpass)) {
- list($name, $password) = explode(':', $userpass);
- $_SERVER['PHP_AUTH_USER'] = $name;
- $_SERVER['PHP_AUTH_PW'] = $password;
- }
+ }
+
+ if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
+ $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
}
+ }
+ $s = new \Zotlabs\Identity\OAuth2Server(new OAuth2Storage(\DBA::$dba->db));
+ $s->handleTokenRequest(\OAuth2\Request::createFromGlobals())->send();
-
-
- require_once('include/oauth2.php');
- $oauth2_server->handleTokenRequest(\OAuth2\Request::createFromGlobals())->send();
-
- killme();
+ killme();
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Viewconnections.php b/Zotlabs/Module/Viewconnections.php
index 1f9c03751..8366e1325 100644
--- a/Zotlabs/Module/Viewconnections.php
+++ b/Zotlabs/Module/Viewconnections.php
@@ -44,7 +44,7 @@ class Viewconnections extends \Zotlabs\Web\Controller {
$sql_extra = '';
if(! $is_owner) {
- $abook_flags = " and abook_hidden = 0 ";
+ $abook_flags .= " and abook_hidden = 0 ";
$sql_extra = " and xchan_hidden = 0 ";
}
@@ -69,8 +69,13 @@ class Viewconnections extends \Zotlabs\Web\Controller {
$contacts = array();
foreach($r as $rr) {
+
+ $oneway = false;
+ if(! intval(get_abconfig(\App::$profile['uid'],$rr['xchan_hash'],'their_perms','post_comments'))) {
+ $oneway = true;
+ }
- $url = chanlink_hash($rr['xchan_hash']);
+ $url = chanlink_hash($rr['xchan_hash']);
if($url) {
$contacts[] = array(
'id' => $rr['abook_id'],
@@ -83,6 +88,7 @@ class Viewconnections extends \Zotlabs\Web\Controller {
'sparkle' => '',
'itemurl' => $rr['url'],
'network' => '',
+ 'oneway' => $oneway
);
}
}
diff --git a/Zotlabs/Module/Wfinger.php b/Zotlabs/Module/Wfinger.php
index 753721d27..81d4beaed 100644
--- a/Zotlabs/Module/Wfinger.php
+++ b/Zotlabs/Module/Wfinger.php
@@ -123,7 +123,8 @@ class Wfinger extends \Zotlabs\Web\Controller {
$result['properties'] = [
'http://webfinger.net/ns/name' => $r[0]['channel_name'],
'http://xmlns.com/foaf/0.1/name' => $r[0]['channel_name'],
- 'https://w3id.org/security/v1#publicKeyPem' => $r[0]['xchan_pubkey']
+ 'https://w3id.org/security/v1#publicKeyPem' => $r[0]['xchan_pubkey'],
+ 'http://purl.org/zot/federation' => 'zot'
];
foreach($aliases as $alias)
diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php
index 0e3a47c2f..9c9a501c0 100755
--- a/Zotlabs/Render/SmartyInterface.php
+++ b/Zotlabs/Render/SmartyInterface.php
@@ -2,8 +2,6 @@
namespace Zotlabs\Render;
-require_once('library/Smarty/libs/Smarty.class.php');
-
class SmartyInterface extends \Smarty {
public $filename;
diff --git a/Zotlabs/Render/Theme.php b/Zotlabs/Render/Theme.php
index 09cc7a4d4..0eebba1ba 100644
--- a/Zotlabs/Render/Theme.php
+++ b/Zotlabs/Render/Theme.php
@@ -8,10 +8,8 @@ use App;
class Theme {
static $system_theme = null;
- static $system_mobile_theme = null;
static $session_theme = null;
- static $session_mobile_theme = null;
/**
* @brief Array with base or fallback themes.
@@ -32,10 +30,6 @@ class Theme {
? \App::$config['system']['theme'] : '');
self::$session_theme = ((isset($_SESSION) && x($_SESSION, 'theme'))
? $_SESSION['theme'] : self::$system_theme);
- self::$system_mobile_theme = ((isset(\App::$config['system']['mobile_theme']))
- ? \App::$config['system']['mobile_theme'] : '');
- self::$session_mobile_theme = ((isset($_SESSION) && x($_SESSION, 'mobile_theme'))
- ? $_SESSION['mobile_theme'] : self::$system_mobile_theme);
$page_theme = null;
@@ -55,30 +49,12 @@ class Theme {
if(array_key_exists('theme', \App::$layout) && \App::$layout['theme'])
$page_theme = \App::$layout['theme'];
- // If the viewer is on a mobile device, ensure that we're using a mobile
- // theme of some kind or whatever the viewer's preference is for mobile
- // viewing (if applicable)
+ $chosen_theme = self::$session_theme;
- if(\App::$is_mobile || \App::$is_tablet) {
- if(isset($_SESSION['show_mobile']) && (! $_SESSION['show_mobile'])) {
- $chosen_theme = self::$session_theme;
- }
- else {
- $chosen_theme = self::$session_mobile_theme;
-
- if($chosen_theme === '' || $chosen_theme === '---' ) {
- // user has selected to have the mobile theme be the same as the normal one
- $chosen_theme = self::$session_theme;
- }
- }
+ if($page_theme) {
+ $chosen_theme = $page_theme;
}
- else {
- $chosen_theme = self::$session_theme;
- if($page_theme) {
- $chosen_theme = $page_theme;
- }
- }
if(array_key_exists('theme_preview', $_GET))
$chosen_theme = $_GET['theme_preview'];
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index c21b68971..f1c95802b 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -264,7 +264,10 @@ class Browser extends DAV\Browser\Plugin {
$this->server->emit('onHTMLActionsPanel', array($parent, &$output, $path));
}
-
+ $deftiles = (($is_owner) ? 0 : 1);
+ $tiles = ((array_key_exists('cloud_tiles',$_SESSION)) ? intval($_SESSION['cloud_tiles']) : $deftiles);
+ $_SESSION['cloud_tiles'] = $tiles;
+
$html .= replace_macros(get_markup_template('cloud.tpl'), array(
'$header' => t('Files') . ": " . $this->escapeHTML($path) . "/",
'$total' => t('Total'),
diff --git a/Zotlabs/Thumbs/Epubthumb.php b/Zotlabs/Thumbs/Epubthumb.php
index 4213b5267..22f1a5e8f 100644
--- a/Zotlabs/Thumbs/Epubthumb.php
+++ b/Zotlabs/Thumbs/Epubthumb.php
@@ -2,36 +2,54 @@
namespace Zotlabs\Thumbs;
-require_once('library/epub-meta/epub.php');
+require_once 'library/epub-meta/epub.php';
+/**
+ * @brief Thumbnail creation for epub files.
+ *
+ */
class Epubthumb {
+ /**
+ * @brief Match for application/epub+zip.
+ *
+ * @param string $type MimeType
+ * @return boolean
+ */
function Match($type) {
return(($type === 'application/epub+zip') ? true : false );
}
- function Thumb($attach,$preview_style,$height = 300, $width = 300) {
+ /**
+ * @brief
+ *
+ * @param array $attach
+ * @param number $preview_style unused
+ * @param number $height (optional) default 300
+ * @param number $width (optional) default 300
+ */
+ function Thumb($attach, $preview_style, $height = 300, $width = 300) {
$photo = false;
- $ep = new \Epub(dbunescbin($attach['content']));
+ $ep = new \EPub(dbunescbin($attach['content']));
$data = $ep->Cover();
if($data['found']) {
$photo = $data['data'];
}
- if($photo) {
+ if($photo) {
$image = imagecreatefromstring($photo);
- $dest = imagecreatetruecolor( $width, $height );
- $srcwidth = imagesx($image);
- $srcheight = imagesy($image);
+ $dest = imagecreatetruecolor($width, $height);
+ $srcwidth = imagesx($image);
+ $srcheight = imagesy($image);
- imagealphablending($dest, false);
+ imagealphablending($dest, false);
imagesavealpha($dest, true);
- imagecopyresampled($dest, $image, 0, 0, 0, 0, $width, $height, $srcwidth, $srcheight);
- imagedestroy($image);
- imagejpeg($dest,dbunescbin($attach['content']) . '.thumb');
+ imagecopyresampled($dest, $image, 0, 0, 0, 0, $width, $height, $srcwidth, $srcheight);
+ imagedestroy($image);
+ imagejpeg($dest, dbunescbin($attach['content']) . '.thumb');
}
}
}
diff --git a/Zotlabs/Thumbs/Video.php b/Zotlabs/Thumbs/Video.php
index 05127355e..ff4d10a36 100644
--- a/Zotlabs/Thumbs/Video.php
+++ b/Zotlabs/Thumbs/Video.php
@@ -49,6 +49,7 @@ class Video {
$cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -thumbnail ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile);
// logger('imagick thumbnail command: ' . $cmd);
+ /** @scrutinizer ignore-unhandled */
@exec($cmd);
if(! file_exists($outfile)) {
diff --git a/Zotlabs/Update/_1000.php b/Zotlabs/Update/_1000.php
new file mode 100644
index 000000000..02787db38
--- /dev/null
+++ b/Zotlabs/Update/_1000.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1000 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_a_delegate` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0', ADD INDEX ( `channel_a_delegate` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1001.php b/Zotlabs/Update/_1001.php
new file mode 100644
index 000000000..9acc96373
--- /dev/null
+++ b/Zotlabs/Update/_1001.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1001 {
+function run() {
+ $r = q("CREATE TABLE if not exists `verify` (
+ `id` INT(10) UNSIGNED NOT NULL ,
+ `channel` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+ `type` CHAR( 32 ) NOT NULL DEFAULT '',
+ `token` CHAR( 255 ) NOT NULL DEFAULT '',
+ `meta` CHAR( 255 ) NOT NULL DEFAULT '',
+ `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ( `id` )
+ ) ENGINE = MYISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("alter table `verify` add index (`channel`), add index (`type`), add index (`token`),
+ add index (`meta`), add index (`created`)");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1002.php b/Zotlabs/Update/_1002.php
new file mode 100644
index 000000000..1f42449c6
--- /dev/null
+++ b/Zotlabs/Update/_1002.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1002 {
+function run() {
+ $r = q("ALTER TABLE `event` CHANGE `account` `aid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r2 = q("alter table `event` drop index `account`, add index (`aid`)");
+
+ q("drop table contact");
+ q("drop table deliverq");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1003.php b/Zotlabs/Update/_1003.php
new file mode 100644
index 000000000..18d99f985
--- /dev/null
+++ b/Zotlabs/Update/_1003.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1003 {
+function run() {
+ $r = q("ALTER TABLE `xchan` ADD `xchan_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `xchan_network` ,
+ADD INDEX ( `xchan_flags` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1004.php b/Zotlabs/Update/_1004.php
new file mode 100644
index 000000000..a86f5d824
--- /dev/null
+++ b/Zotlabs/Update/_1004.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1004 {
+function run() {
+ $r = q("CREATE TABLE if not exists `site` (
+`site_url` CHAR( 255 ) NOT NULL ,
+`site_flags` INT NOT NULL DEFAULT '0',
+`site_update` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+`site_directory` CHAR( 255 ) NOT NULL DEFAULT '',
+PRIMARY KEY ( `site_url` )
+) ENGINE = MYISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("alter table site add index (site_flags), add index (site_update), add index (site_directory) ");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1005.php b/Zotlabs/Update/_1005.php
new file mode 100644
index 000000000..ee8621a8d
--- /dev/null
+++ b/Zotlabs/Update/_1005.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1005 {
+function run() {
+ q("drop table guid");
+ q("drop table `notify-threads`");
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1006.php b/Zotlabs/Update/_1006.php
new file mode 100644
index 000000000..43a2bb951
--- /dev/null
+++ b/Zotlabs/Update/_1006.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1006 {
+function run() {
+
+ $r = q("CREATE TABLE IF NOT EXISTS `xprof` (
+ `xprof_hash` char(255) NOT NULL,
+ `xprof_desc` char(255) NOT NULL DEFAULT '',
+ `xprof_dob` char(12) NOT NULL DEFAULT '',
+ `xprof_gender` char(255) NOT NULL DEFAULT '',
+ `xprof_marital` char(255) NOT NULL DEFAULT '',
+ `xprof_sexual` char(255) NOT NULL DEFAULT '',
+ `xprof_locale` char(255) NOT NULL DEFAULT '',
+ `xprof_region` char(255) NOT NULL DEFAULT '',
+ `xprof_postcode` char(32) NOT NULL DEFAULT '',
+ `xprof_country` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`xprof_hash`),
+ KEY `xprof_desc` (`xprof_desc`),
+ KEY `xprof_dob` (`xprof_dob`),
+ KEY `xprof_gender` (`xprof_gender`),
+ KEY `xprof_marital` (`xprof_marital`),
+ KEY `xprof_sexual` (`xprof_sexual`),
+ KEY `xprof_locale` (`xprof_locale`),
+ KEY `xprof_region` (`xprof_region`),
+ KEY `xprof_postcode` (`xprof_postcode`),
+ KEY `xprof_country` (`xprof_country`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `xtag` (
+ `xtag_hash` char(255) NOT NULL,
+ `xtag_term` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`xtag_hash`),
+ KEY `xtag_term` (`xtag_term`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1007.php b/Zotlabs/Update/_1007.php
new file mode 100644
index 000000000..eb52c5bc5
--- /dev/null
+++ b/Zotlabs/Update/_1007.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1007 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_r_storage` INT UNSIGNED NOT NULL DEFAULT '128', ADD `channel_w_storage` INT UNSIGNED NOT NULL DEFAULT '128', add index ( channel_r_storage ), add index ( channel_w_storage )");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1008.php b/Zotlabs/Update/_1008.php
new file mode 100644
index 000000000..d5db24bc0
--- /dev/null
+++ b/Zotlabs/Update/_1008.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1008 {
+function run() {
+ $r = q("alter table profile drop prv_keywords, CHANGE `pub_keywords` `keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, drop index pub_keywords");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1009.php b/Zotlabs/Update/_1009.php
new file mode 100644
index 000000000..afb0d5e96
--- /dev/null
+++ b/Zotlabs/Update/_1009.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1009 {
+function run() {
+ $r = q("ALTER TABLE `xprof` ADD `xprof_keywords` TEXT NOT NULL");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1010.php b/Zotlabs/Update/_1010.php
new file mode 100644
index 000000000..92405cce4
--- /dev/null
+++ b/Zotlabs/Update/_1010.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1010 {
+function run() {
+ $r = q("ALTER TABLE `abook` ADD `abook_dob` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `abook_connnected` ,
+ADD INDEX ( `abook_dob` )");
+
+ $r2 = q("ALTER TABLE `profile` ADD `dob_tz` CHAR( 255 ) NOT NULL DEFAULT 'UTC' AFTER `dob`");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1011.php b/Zotlabs/Update/_1011.php
new file mode 100644
index 000000000..b6841a9fe
--- /dev/null
+++ b/Zotlabs/Update/_1011.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1011 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `edited` ,
+ADD INDEX ( `expires` )");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1012.php b/Zotlabs/Update/_1012.php
new file mode 100644
index 000000000..3ae5caf65
--- /dev/null
+++ b/Zotlabs/Update/_1012.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1012 {
+function run() {
+ $r = q("ALTER TABLE `xchan` ADD `xchan_connurl` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_url` ,
+ADD INDEX ( `xchan_connurl` )");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1013.php b/Zotlabs/Update/_1013.php
new file mode 100644
index 000000000..68fc9071d
--- /dev/null
+++ b/Zotlabs/Update/_1013.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1013 {
+function run() {
+ $r = q("CREATE TABLE if not exists `xlink` (
+`xlink_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`xlink_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
+`xlink_link` CHAR( 255 ) NOT NULL DEFAULT '',
+`xlink_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00'
+) ENGINE = MYISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("alter table xlink add index ( xlink_xchan ), add index ( xlink_link ), add index ( xlink_updated ) ");
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1014.php b/Zotlabs/Update/_1014.php
new file mode 100644
index 000000000..e9b3a89e0
--- /dev/null
+++ b/Zotlabs/Update/_1014.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1014 {
+function run() {
+ $r = q("ALTER TABLE `verify` CHANGE `id` `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1015.php b/Zotlabs/Update/_1015.php
new file mode 100644
index 000000000..d9d2d2f27
--- /dev/null
+++ b/Zotlabs/Update/_1015.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1015 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_r_pages` INT UNSIGNED NOT NULL DEFAULT '128',
+ADD `channel_w_pages` INT UNSIGNED NOT NULL DEFAULT '128'");
+
+ $r2 = q("ALTER TABLE `channel` ADD INDEX ( `channel_r_pages` ) , ADD INDEX ( `channel_w_pages` ) ");
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1016.php b/Zotlabs/Update/_1016.php
new file mode 100644
index 000000000..93f71a474
--- /dev/null
+++ b/Zotlabs/Update/_1016.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1016 {
+function run() {
+
+ $r = q("CREATE TABLE IF NOT EXISTS `menu` (
+ `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `menu_desc` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`menu_id`),
+ KEY `menu_channel_id` (`menu_channel_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `menu_item` (
+ `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `mitem_link` char(255) NOT NULL DEFAULT '',
+ `mitem_desc` char(255) NOT NULL DEFAULT '',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ `mitem_channel_id` int(10) unsigned NOT NULL,
+ `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `mitem_order` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`mitem_id`),
+ KEY `mitem_channel_id` (`mitem_channel_id`),
+ KEY `mitem_menu_id` (`mitem_menu_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+
+ if($r && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1017.php b/Zotlabs/Update/_1017.php
new file mode 100644
index 000000000..429eda67b
--- /dev/null
+++ b/Zotlabs/Update/_1017.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1017 {
+function run() {
+ $r = q("ALTER TABLE `event` CHANGE `cid` `event_xchan` CHAR( 255 ) NOT NULL DEFAULT '', ADD INDEX ( `event_xchan` ), drop index cid ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1018.php b/Zotlabs/Update/_1018.php
new file mode 100644
index 000000000..546ebffca
--- /dev/null
+++ b/Zotlabs/Update/_1018.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1018 {
+function run() {
+ $r = q("ALTER TABLE `event` ADD `event_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `event_xchan` ,
+ADD INDEX ( `event_hash` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1019.php b/Zotlabs/Update/_1019.php
new file mode 100644
index 000000000..a7103c98c
--- /dev/null
+++ b/Zotlabs/Update/_1019.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1019 {
+function run() {
+ $r = q("ALTER TABLE `event` DROP `message_id` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1020.php b/Zotlabs/Update/_1020.php
new file mode 100644
index 000000000..c898f31c2
--- /dev/null
+++ b/Zotlabs/Update/_1020.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1020 {
+function run() {
+ $r = q("alter table photo drop `contact-id`, drop guid, drop index `resource-id`, add index ( `resource_id` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1021.php b/Zotlabs/Update/_1021.php
new file mode 100644
index 000000000..72203fadb
--- /dev/null
+++ b/Zotlabs/Update/_1021.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1021 {
+function run() {
+
+ $r = q("ALTER TABLE `abook` CHANGE `abook_connnected` `abook_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ drop index `abook_connnected`, add index ( `abook_connected` ) ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1022.php b/Zotlabs/Update/_1022.php
new file mode 100644
index 000000000..7e13250c4
--- /dev/null
+++ b/Zotlabs/Update/_1022.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1022 {
+function run() {
+ $r = q("alter table attach add index ( filename ), add index ( filetype ), add index ( filesize ), add index ( created ), add index ( edited ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1023.php b/Zotlabs/Update/_1023.php
new file mode 100644
index 000000000..0a8dd2f00
--- /dev/null
+++ b/Zotlabs/Update/_1023.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1023 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `lang` , add index ( revision ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1024.php b/Zotlabs/Update/_1024.php
new file mode 100644
index 000000000..004d8967a
--- /dev/null
+++ b/Zotlabs/Update/_1024.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1024 {
+function run() {
+ $r = q("ALTER TABLE `attach` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `filesize` ,
+ADD INDEX ( `revision` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1025.php b/Zotlabs/Update/_1025.php
new file mode 100644
index 000000000..d498233b3
--- /dev/null
+++ b/Zotlabs/Update/_1025.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1025 {
+function run() {
+ $r = q("ALTER TABLE `attach` ADD `folder` CHAR( 64 ) NOT NULL DEFAULT '' AFTER `revision` ,
+ADD `flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `folder` , add index ( folder ), add index ( flags )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1026.php b/Zotlabs/Update/_1026.php
new file mode 100644
index 000000000..d57fdec37
--- /dev/null
+++ b/Zotlabs/Update/_1026.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1026 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `mimetype` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` ,
+ADD INDEX ( `mimetype` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1027.php b/Zotlabs/Update/_1027.php
new file mode 100644
index 000000000..04d09d202
--- /dev/null
+++ b/Zotlabs/Update/_1027.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1027 {
+function run() {
+ $r = q("ALTER TABLE `abook` ADD `abook_rating` INT NOT NULL DEFAULT '0' AFTER `abook_closeness` ,
+ADD INDEX ( `abook_rating` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1028.php b/Zotlabs/Update/_1028.php
new file mode 100644
index 000000000..a58784a01
--- /dev/null
+++ b/Zotlabs/Update/_1028.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1028 {
+function run() {
+ $r = q("ALTER TABLE `xlink` ADD `xlink_rating` INT NOT NULL DEFAULT '0' AFTER `xlink_link` ,
+ADD INDEX ( `xlink_rating` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1029.php b/Zotlabs/Update/_1029.php
new file mode 100644
index 000000000..7072647cb
--- /dev/null
+++ b/Zotlabs/Update/_1029.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1029 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_deleted` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` ,
+ADD INDEX ( `channel_deleted` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1030.php b/Zotlabs/Update/_1030.php
new file mode 100644
index 000000000..7aebde49e
--- /dev/null
+++ b/Zotlabs/Update/_1030.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1030 {
+function run() {
+ $r = q("CREATE TABLE IF NOT EXISTS `issue` (
+`issue_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`issue_created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+`issue_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+`issue_assigned` CHAR( 255 ) NOT NULL ,
+`issue_priority` INT NOT NULL ,
+`issue_status` INT NOT NULL ,
+`issue_component` CHAR( 255 ) NOT NULL,
+KEY `issue_created` (`issue_created`),
+KEY `issue_updated` (`issue_updated`),
+KEY `issue_assigned` (`issue_assigned`),
+KEY `issue_priority` (`issue_priority`),
+KEY `issue_status` (`issue_status`),
+KEY `issue_component` (`issue_component`)
+) ENGINE = MYISAM DEFAULT CHARSET=utf8");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1031.php b/Zotlabs/Update/_1031.php
new file mode 100644
index 000000000..4463c9e04
--- /dev/null
+++ b/Zotlabs/Update/_1031.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1031 {
+function run() {
+ $r = q("ALTER TABLE `account` ADD `account_external` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `account_email` ,
+ADD INDEX ( `account_external` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1032.php b/Zotlabs/Update/_1032.php
new file mode 100644
index 000000000..a9fbeca9e
--- /dev/null
+++ b/Zotlabs/Update/_1032.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1032 {
+function run() {
+ $r = q("CREATE TABLE if not exists `xign` (
+`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`uid` INT NOT NULL DEFAULT '0',
+`xchan` CHAR( 255 ) NOT NULL DEFAULT '',
+KEY `uid` (`uid`),
+KEY `xchan` (`xchan`)
+) ENGINE = MYISAM DEFAULT CHARSET = utf8");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1033.php b/Zotlabs/Update/_1033.php
new file mode 100644
index 000000000..a201e1d1f
--- /dev/null
+++ b/Zotlabs/Update/_1033.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1033 {
+function run() {
+ $r = q("CREATE TABLE if not exists `shares` (
+`share_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`share_type` INT NOT NULL DEFAULT '0',
+`share_target` INT UNSIGNED NOT NULL DEFAULT '0',
+`share_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
+KEY `share_type` (`share_type`),
+KEY `share_target` (`share_target`),
+KEY `share_xchan` (`share_xchan`)
+) ENGINE = MYISAM DEFAULT CHARSET = utf8");
+
+ // if these fail don't bother reporting it
+
+ q("drop table gcign");
+ q("drop table gcontact");
+ q("drop table glink");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1034.php b/Zotlabs/Update/_1034.php
new file mode 100644
index 000000000..646182cc0
--- /dev/null
+++ b/Zotlabs/Update/_1034.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1034 {
+function run() {
+ $r = q("CREATE TABLE if not exists `updates` (
+`ud_hash` CHAR( 128 ) NOT NULL ,
+`ud_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+PRIMARY KEY ( `ud_hash` ),
+KEY `ud_date` ( `ud_date` )
+) ENGINE = MYISAM DEFAULT CHARSET = utf8");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1035.php b/Zotlabs/Update/_1035.php
new file mode 100644
index 000000000..44e95189d
--- /dev/null
+++ b/Zotlabs/Update/_1035.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1035 {
+function run() {
+ $r = q("CREATE TABLE if not exists `xconfig` (
+`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`xchan` CHAR( 255 ) NOT NULL ,
+`cat` CHAR( 255 ) NOT NULL ,
+`k` CHAR( 255 ) NOT NULL ,
+`v` MEDIUMTEXT NOT NULL,
+KEY `xchan` ( `xchan` ),
+KEY `cat` ( `cat` ),
+KEY `k` ( `k` )
+) ENGINE = MYISAM DEFAULT CHARSET = utf8");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1036.php b/Zotlabs/Update/_1036.php
new file mode 100644
index 000000000..700a82e12
--- /dev/null
+++ b/Zotlabs/Update/_1036.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1036 {
+function run() {
+ $r = q("ALTER TABLE `profile` ADD `channels` TEXT NOT NULL AFTER `contact` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1037.php b/Zotlabs/Update/_1037.php
new file mode 100644
index 000000000..a1ad20aa8
--- /dev/null
+++ b/Zotlabs/Update/_1037.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1037 {
+function run() {
+ $r1 = q("ALTER TABLE `item` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '',
+CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '',
+ DROP INDEX `uri` ,
+ADD INDEX `mid` ( `mid` ),
+DROP INDEX `parent_uri` ,
+ADD INDEX `parent_mid` ( `parent_mid` ),
+ DROP INDEX `uid_uri` ,
+ADD INDEX `uid_mid` ( `mid` , `uid` ) ");
+
+ $r2 = q("ALTER TABLE `mail` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
+CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
+DROP INDEX `uri` ,
+ADD INDEX `mid` ( `mid` ),
+ DROP INDEX `parent_uri` ,
+ADD INDEX `parent_mid` ( `parent_mid` ) ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1038.php b/Zotlabs/Update/_1038.php
new file mode 100644
index 000000000..b4a86f41e
--- /dev/null
+++ b/Zotlabs/Update/_1038.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1038 {
+function run() {
+ $r = q("ALTER TABLE `manage` CHANGE `mid` `xchan` CHAR( 255 ) NOT NULL DEFAULT '', drop index `mid`, ADD INDEX ( `xchan` )");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1039.php b/Zotlabs/Update/_1039.php
new file mode 100644
index 000000000..9214cdc4a
--- /dev/null
+++ b/Zotlabs/Update/_1039.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1039 {
+function run() {
+ $r = q("ALTER TABLE `channel` CHANGE `channel_default_gid` `channel_default_group` CHAR( 255 ) NOT NULL DEFAULT ''");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1040.php b/Zotlabs/Update/_1040.php
new file mode 100644
index 000000000..77dc75a48
--- /dev/null
+++ b/Zotlabs/Update/_1040.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1040 {
+function run() {
+ $r1 = q("ALTER TABLE `session` CHANGE `expire` `expire` BIGINT UNSIGNED NOT NULL ");
+ $r2 = q("ALTER TABLE `tokens` CHANGE `expires` `expires` BIGINT UNSIGNED NOT NULL ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1041.php b/Zotlabs/Update/_1041.php
new file mode 100644
index 000000000..4ed436e61
--- /dev/null
+++ b/Zotlabs/Update/_1041.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1041 {
+function run() {
+ $r = q("ALTER TABLE `outq` ADD `outq_driver` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `outq_channel` ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1042.php b/Zotlabs/Update/_1042.php
new file mode 100644
index 000000000..56298b6a3
--- /dev/null
+++ b/Zotlabs/Update/_1042.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1042 {
+function run() {
+ $r = q("ALTER TABLE `hubloc` ADD `hubloc_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ADD `hubloc_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `hubloc_updated` ), ADD INDEX ( `hubloc_connected` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1043.php b/Zotlabs/Update/_1043.php
new file mode 100644
index 000000000..b28203731
--- /dev/null
+++ b/Zotlabs/Update/_1043.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1043 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `comment_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` ,
+ADD INDEX ( `comment_policy` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1044.php b/Zotlabs/Update/_1044.php
new file mode 100644
index 000000000..fc7e5438f
--- /dev/null
+++ b/Zotlabs/Update/_1044.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1044 {
+function run() {
+ $r = q("ALTER TABLE `term` ADD `imgurl` CHAR( 255 ) NOT NULL ,
+ADD INDEX ( `imgurl` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1045.php b/Zotlabs/Update/_1045.php
new file mode 100644
index 000000000..73570c316
--- /dev/null
+++ b/Zotlabs/Update/_1045.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1045 {
+function run() {
+ $r = q("ALTER TABLE `site` ADD `site_register` INT NOT NULL DEFAULT '0',
+ADD INDEX ( `site_register` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1046.php b/Zotlabs/Update/_1046.php
new file mode 100644
index 000000000..219d53e17
--- /dev/null
+++ b/Zotlabs/Update/_1046.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1046 {
+function run() {
+ $r = q("ALTER TABLE `term` ADD `term_hash` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `term_hash` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1047.php b/Zotlabs/Update/_1047.php
new file mode 100644
index 000000000..930c13eb8
--- /dev/null
+++ b/Zotlabs/Update/_1047.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1047 {
+function run() {
+ $r = q("ALTER TABLE `xprof` ADD `xprof_age` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `xprof_hash` ,
+ADD INDEX ( `xprof_age` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1048.php b/Zotlabs/Update/_1048.php
new file mode 100644
index 000000000..20c8931d7
--- /dev/null
+++ b/Zotlabs/Update/_1048.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1048 {
+function run() {
+ $r = q("CREATE TABLE IF NOT EXISTS `obj` (
+ `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `obj_page` char(64) NOT NULL DEFAULT '',
+ `obj_verb` char(255) NOT NULL DEFAULT '',
+ `obj_type` int(10) unsigned NOT NULL DEFAULT '0',
+ `obj_obj` char(255) NOT NULL DEFAULT '',
+ `obj_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`obj_id`),
+ KEY `obj_verb` (`obj_verb`),
+ KEY `obj_page` (`obj_page`),
+ KEY `obj_type` (`obj_type`),
+ KEY `obj_channel` (`obj_channel`),
+ KEY `obj_obj` (`obj_obj`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1049.php b/Zotlabs/Update/_1049.php
new file mode 100644
index 000000000..622847727
--- /dev/null
+++ b/Zotlabs/Update/_1049.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1049 {
+function run() {
+ $r = q("ALTER TABLE `term` ADD `parent_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `term_hash` , ADD INDEX ( `parent_hash` ) ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1050.php b/Zotlabs/Update/_1050.php
new file mode 100644
index 000000000..1939d346f
--- /dev/null
+++ b/Zotlabs/Update/_1050.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1050 {
+function run() {
+ $r = q("ALTER TABLE `xtag` DROP PRIMARY KEY , ADD `xtag_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST , ADD INDEX ( `xtag_hash` ) ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1051.php b/Zotlabs/Update/_1051.php
new file mode 100644
index 000000000..041b51f21
--- /dev/null
+++ b/Zotlabs/Update/_1051.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1051 {
+function run() {
+ $r = q("ALTER TABLE `photo` ADD `photo_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `profile` , ADD INDEX ( `photo_flags` ) ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1052.php b/Zotlabs/Update/_1052.php
new file mode 100644
index 000000000..05addf21f
--- /dev/null
+++ b/Zotlabs/Update/_1052.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1052 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD UNIQUE (`channel_address`) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1053.php b/Zotlabs/Update/_1053.php
new file mode 100644
index 000000000..4752dca62
--- /dev/null
+++ b/Zotlabs/Update/_1053.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1053 {
+function run() {
+ $r = q("ALTER TABLE `profile` ADD `chandesc` TEXT NOT NULL DEFAULT '' AFTER `pdesc` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1054.php b/Zotlabs/Update/_1054.php
new file mode 100644
index 000000000..f4fc2eb5b
--- /dev/null
+++ b/Zotlabs/Update/_1054.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1054 {
+function run() {
+ $r = q("ALTER TABLE `item` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1055.php b/Zotlabs/Update/_1055.php
new file mode 100644
index 000000000..6b3a4c1d9
--- /dev/null
+++ b/Zotlabs/Update/_1055.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1055 {
+function run() {
+ $r = q("ALTER TABLE `mail` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1056.php b/Zotlabs/Update/_1056.php
new file mode 100644
index 000000000..6c0510f88
--- /dev/null
+++ b/Zotlabs/Update/_1056.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1056 {
+function run() {
+ $r = q("ALTER TABLE `xchan` ADD `xchan_instance_url` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_network` ,
+ADD INDEX ( `xchan_instance_url` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1057.php b/Zotlabs/Update/_1057.php
new file mode 100644
index 000000000..081e82d1f
--- /dev/null
+++ b/Zotlabs/Update/_1057.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1057 {
+function run() {
+ $r = q("drop table intro");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1058.php b/Zotlabs/Update/_1058.php
new file mode 100644
index 000000000..8e3ffdd6a
--- /dev/null
+++ b/Zotlabs/Update/_1058.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1058 {
+function run() {
+ $r1 = q("ALTER TABLE `menu` ADD `menu_name` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `menu_channel_id` ,
+ADD INDEX ( `menu_name` ) ");
+
+ $r2 = q("ALTER TABLE `menu_item` ADD `mitem_flags` INT NOT NULL DEFAULT '0' AFTER `mitem_desc` ,
+ADD INDEX ( `mitem_flags` ) ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1059.php b/Zotlabs/Update/_1059.php
new file mode 100644
index 000000000..e035efb2c
--- /dev/null
+++ b/Zotlabs/Update/_1059.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1059 {
+function run() {
+ $r = q("ALTER TABLE `mail` ADD `attach` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `body` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1060.php b/Zotlabs/Update/_1060.php
new file mode 100644
index 000000000..5182b803a
--- /dev/null
+++ b/Zotlabs/Update/_1060.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1060 {
+function run() {
+
+ $r = q("CREATE TABLE IF NOT EXISTS `vote` (
+ `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `vote_poll` int(11) NOT NULL DEFAULT '0',
+ `vote_element` int(11) NOT NULL DEFAULT '0',
+ `vote_result` text NOT NULL,
+ `vote_xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`vote_id`),
+ UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1061.php b/Zotlabs/Update/_1061.php
new file mode 100644
index 000000000..e7af5bcb1
--- /dev/null
+++ b/Zotlabs/Update/_1061.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1061 {
+function run() {
+ $r = q("ALTER TABLE `vote` ADD INDEX ( `vote_poll` ), ADD INDEX ( `vote_element` ) ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1062.php b/Zotlabs/Update/_1062.php
new file mode 100644
index 000000000..39aa80e8a
--- /dev/null
+++ b/Zotlabs/Update/_1062.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1062 {
+function run() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `poll` (
+`poll_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`poll_channel` INT UNSIGNED NOT NULL DEFAULT '0',
+`poll_desc` TEXT NOT NULL DEFAULT '',
+`poll_flags` INT NOT NULL DEFAULT '0',
+`poll_votes` INT NOT NULL DEFAULT '0',
+KEY `poll_channel` (`poll_channel`),
+KEY `poll_flags` (`poll_flags`),
+KEY `poll_votes` (`poll_votes`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `poll_elm` (
+`pelm_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`pelm_poll` INT UNSIGNED NOT NULL DEFAULT '0',
+`pelm_desc` TEXT NOT NULL DEFAULT '',
+`pelm_flags` INT NOT NULL DEFAULT '0',
+`pelm_result` FLOAT NOT NULL DEFAULT '0',
+KEY `pelm_poll` (`pelm_poll`),
+KEY `pelm_result` (`pelm_result`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1063.php b/Zotlabs/Update/_1063.php
new file mode 100644
index 000000000..04d523df6
--- /dev/null
+++ b/Zotlabs/Update/_1063.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1063 {
+function run() {
+ $r = q("ALTER TABLE `xchan` ADD `xchan_follow` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_connurl` ,
+ADD `xchan_connpage` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_follow` ,
+ADD INDEX ( `xchan_follow` ), ADD INDEX ( `xchan_connpage`) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1064.php b/Zotlabs/Update/_1064.php
new file mode 100644
index 000000000..295dd96c5
--- /dev/null
+++ b/Zotlabs/Update/_1064.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1064 {
+function run() {
+ $r = q("ALTER TABLE `updates` ADD `ud_guid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `ud_hash` ,
+ADD INDEX ( `ud_guid` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1065.php b/Zotlabs/Update/_1065.php
new file mode 100644
index 000000000..0a3e9082e
--- /dev/null
+++ b/Zotlabs/Update/_1065.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1065 {
+function run() {
+ $r = q("ALTER TABLE `item` DROP `wall`, ADD `layout_mid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `target` ,
+ADD INDEX ( `layout_mid` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1066.php b/Zotlabs/Update/_1066.php
new file mode 100644
index 000000000..e7d3fbbb4
--- /dev/null
+++ b/Zotlabs/Update/_1066.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1066 {
+function run() {
+ $r = q("ALTER TABLE `site` ADD `site_access` INT NOT NULL DEFAULT '0' AFTER `site_url` ,
+ADD INDEX ( `site_access` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1067.php b/Zotlabs/Update/_1067.php
new file mode 100644
index 000000000..94782a15e
--- /dev/null
+++ b/Zotlabs/Update/_1067.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1067 {
+function run() {
+ $r = q("ALTER TABLE `updates` DROP PRIMARY KEY , ADD `ud_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST, ADD INDEX ( `ud_hash` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1068.php b/Zotlabs/Update/_1068.php
new file mode 100644
index 000000000..e2a70684f
--- /dev/null
+++ b/Zotlabs/Update/_1068.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1068 {
+function run(){
+ $r = q("ALTER TABLE `hubloc` ADD `hubloc_status` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `hubloc_flags` , ADD INDEX ( `hubloc_status` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1069.php b/Zotlabs/Update/_1069.php
new file mode 100644
index 000000000..437c7ffef
--- /dev/null
+++ b/Zotlabs/Update/_1069.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1069 {
+function run() {
+ $r = q("ALTER TABLE `site` ADD `site_sellpage` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `site_sellpage` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1070.php b/Zotlabs/Update/_1070.php
new file mode 100644
index 000000000..2ec03f752
--- /dev/null
+++ b/Zotlabs/Update/_1070.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1070 {
+function run() {
+ $r = q("ALTER TABLE `updates` ADD `ud_flags` INT NOT NULL DEFAULT '0',
+ADD INDEX ( `ud_flags` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1071.php b/Zotlabs/Update/_1071.php
new file mode 100644
index 000000000..f4e627e7f
--- /dev/null
+++ b/Zotlabs/Update/_1071.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1071 {
+function run() {
+ $r = q("ALTER TABLE `updates` ADD `ud_addr` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `ud_addr` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1072.php b/Zotlabs/Update/_1072.php
new file mode 100644
index 000000000..191893547
--- /dev/null
+++ b/Zotlabs/Update/_1072.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1072 {
+function run() {
+ $r = q("ALTER TABLE `xtag` ADD `xtag_flags` INT NOT NULL DEFAULT '0',
+ADD INDEX ( `xtag_flags` ) ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1073.php b/Zotlabs/Update/_1073.php
new file mode 100644
index 000000000..f238d7a36
--- /dev/null
+++ b/Zotlabs/Update/_1073.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1073 {
+function run() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `source` (
+`src_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`src_channel_id` INT UNSIGNED NOT NULL DEFAULT '0',
+`src_channel_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
+`src_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
+`src_patt` MEDIUMTEXT NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ $r2 = q("ALTER TABLE `source` ADD INDEX ( `src_channel_id` ), ADD INDEX ( `src_channel_xchan` ), ADD INDEX ( `src_xchan` ) ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1074.php b/Zotlabs/Update/_1074.php
new file mode 100644
index 000000000..d331b935a
--- /dev/null
+++ b/Zotlabs/Update/_1074.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1074 {
+function run() {
+ $r1 = q("ALTER TABLE `site` ADD `site_sync` DATETIME NOT NULL AFTER `site_update` ");
+
+ $r2 = q("ALTER TABLE `updates` ADD `ud_last` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `ud_date` ,
+ADD INDEX ( `ud_last` ) ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1075.php b/Zotlabs/Update/_1075.php
new file mode 100644
index 000000000..ac7c48f71
--- /dev/null
+++ b/Zotlabs/Update/_1075.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1075 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_a_republish` INT UNSIGNED NOT NULL DEFAULT '128',
+ADD INDEX ( `channel_a_republish` )");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1076.php b/Zotlabs/Update/_1076.php
new file mode 100644
index 000000000..c8c631822
--- /dev/null
+++ b/Zotlabs/Update/_1076.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1076 {
+function run() {
+ $r = q("ALTER TABLE `item` CHANGE `inform` `sig` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1077.php b/Zotlabs/Update/_1077.php
new file mode 100644
index 000000000..3c23affbc
--- /dev/null
+++ b/Zotlabs/Update/_1077.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1077 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `source_xchan` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1078.php b/Zotlabs/Update/_1078.php
new file mode 100644
index 000000000..c832a1c2a
--- /dev/null
+++ b/Zotlabs/Update/_1078.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1078 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_dirdate` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` , ADD INDEX ( `channel_dirdate` )");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1079.php b/Zotlabs/Update/_1079.php
new file mode 100644
index 000000000..b10e2e7ae
--- /dev/null
+++ b/Zotlabs/Update/_1079.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1079 {
+function run() {
+ $r = q("ALTER TABLE `site` ADD `site_location` CHAR( 255 ) NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1080.php b/Zotlabs/Update/_1080.php
new file mode 100644
index 000000000..ab9c4c2f8
--- /dev/null
+++ b/Zotlabs/Update/_1080.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1080 {
+function run() {
+ $r = q("ALTER TABLE `mail` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ADD INDEX ( `expires` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1081.php b/Zotlabs/Update/_1081.php
new file mode 100644
index 000000000..521a39893
--- /dev/null
+++ b/Zotlabs/Update/_1081.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1081 {
+function run() {
+ $r = q("DROP TABLE `queue` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1082.php b/Zotlabs/Update/_1082.php
new file mode 100644
index 000000000..8ce8d20c1
--- /dev/null
+++ b/Zotlabs/Update/_1082.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1082 {
+function run() {
+ $r = q("DROP TABLE `challenge` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1083.php b/Zotlabs/Update/_1083.php
new file mode 100644
index 000000000..becb2b702
--- /dev/null
+++ b/Zotlabs/Update/_1083.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1083 {
+function run() {
+ $r = q("ALTER TABLE `notify` ADD `aid` INT NOT NULL AFTER `msg` ,
+ADD INDEX ( `aid` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1084.php b/Zotlabs/Update/_1084.php
new file mode 100644
index 000000000..621d0346d
--- /dev/null
+++ b/Zotlabs/Update/_1084.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1084 {
+function run() {
+
+
+ $r = q("CREATE TABLE if not exists `sys_perms` (
+ `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `cat` CHAR( 255 ) NOT NULL ,
+ `k` CHAR( 255 ) NOT NULL ,
+ `v` MEDIUMTEXT NOT NULL,
+ `public_perm` TINYINT( 1 ) UNSIGNED NOT NULL
+) ENGINE = MYISAM DEFAULT CHARSET = utf8");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1085.php b/Zotlabs/Update/_1085.php
new file mode 100644
index 000000000..f50e56319
--- /dev/null
+++ b/Zotlabs/Update/_1085.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1085 {
+function run() {
+ $r1 = q("ALTER TABLE `photo` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
+
+ $r2 = q("RENAME TABLE `group` TO `groups`");
+
+ $r3 = q("ALTER TABLE `event` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1086.php b/Zotlabs/Update/_1086.php
new file mode 100644
index 000000000..1b034daac
--- /dev/null
+++ b/Zotlabs/Update/_1086.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1086 {
+function run() {
+ $r = q("ALTER TABLE `account` ADD `account_level` INT UNSIGNED NOT NULL DEFAULT '0',
+ADD INDEX ( `account_level` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1087.php b/Zotlabs/Update/_1087.php
new file mode 100644
index 000000000..839c16d91
--- /dev/null
+++ b/Zotlabs/Update/_1087.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1087 {
+function run() {
+ $r = q("ALTER TABLE `xprof` ADD `xprof_about` TEXT NOT NULL DEFAULT '',
+ADD `xprof_homepage` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD `xprof_hometown` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `xprof_hometown` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1088.php b/Zotlabs/Update/_1088.php
new file mode 100644
index 000000000..5f478d0a1
--- /dev/null
+++ b/Zotlabs/Update/_1088.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1088 {
+function run() {
+ $r = q("ALTER TABLE `obj` ADD `allow_cid` MEDIUMTEXT NOT NULL DEFAULT '',
+ADD `allow_gid` MEDIUMTEXT NOT NULL DEFAULT '',
+ADD `deny_cid` MEDIUMTEXT NOT NULL DEFAULT '',
+ADD `deny_gid` MEDIUMTEXT NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1089.php b/Zotlabs/Update/_1089.php
new file mode 100644
index 000000000..0a8a1d55b
--- /dev/null
+++ b/Zotlabs/Update/_1089.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1089 {
+function run() {
+ $r = q("ALTER TABLE `attach` ADD `creator` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `hash` ,
+ADD INDEX ( `creator` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1090.php b/Zotlabs/Update/_1090.php
new file mode 100644
index 000000000..efa7db7c2
--- /dev/null
+++ b/Zotlabs/Update/_1090.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1090 {
+function run() {
+ $r = q("ALTER TABLE `menu` ADD `menu_flags` INT NOT NULL DEFAULT '0',
+ADD INDEX ( `menu_flags` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1091.php b/Zotlabs/Update/_1091.php
new file mode 100644
index 000000000..ffb445c62
--- /dev/null
+++ b/Zotlabs/Update/_1091.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1091 {
+function run() {
+ @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true);
+ @file_put_contents('store/[data]/locks','');
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1092.php b/Zotlabs/Update/_1092.php
new file mode 100644
index 000000000..897c0c20b
--- /dev/null
+++ b/Zotlabs/Update/_1092.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1092 {
+function run() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `chat` (
+ `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `chat_room` int(10) unsigned NOT NULL DEFAULT '0',
+ `chat_xchan` char(255) NOT NULL DEFAULT '',
+ `chat_text` mediumtext NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY (`chat_id`),
+ KEY `chat_room` (`chat_room`),
+ KEY `chat_xchan` (`chat_xchan`),
+ KEY `created` (`created`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `chatpresence` (
+ `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cp_room` int(10) unsigned NOT NULL DEFAULT '0',
+ `cp_xchan` char(255) NOT NULL DEFAULT '',
+ `cp_last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `cp_status` char(255) NOT NULL,
+ PRIMARY KEY (`cp_id`),
+ KEY `cp_room` (`cp_room`),
+ KEY `cp_xchan` (`cp_xchan`),
+ KEY `cp_last` (`cp_last`),
+ KEY `cp_status` (`cp_status`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ $r3 = q("CREATE TABLE IF NOT EXISTS `chatroom` (
+ `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cr_aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cr_uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cr_name` char(255) NOT NULL DEFAULT '',
+ `cr_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `cr_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`cr_id`),
+ KEY `cr_aid` (`cr_aid`),
+ KEY `cr_uid` (`cr_uid`),
+ KEY `cr_name` (`cr_name`),
+ KEY `cr_created` (`cr_created`),
+ KEY `cr_edited` (`cr_edited`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1093.php b/Zotlabs/Update/_1093.php
new file mode 100644
index 000000000..eb692e0b7
--- /dev/null
+++ b/Zotlabs/Update/_1093.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1093 {
+function run() {
+ $r = q("ALTER TABLE `chatpresence` ADD `cp_client` CHAR( 128 ) NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1094.php b/Zotlabs/Update/_1094.php
new file mode 100644
index 000000000..c502c7a06
--- /dev/null
+++ b/Zotlabs/Update/_1094.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1094 {
+function run() {
+ $r = q("ALTER TABLE `chatroom` ADD `cr_expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `cr_edited` ,
+ADD INDEX ( `cr_expire` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1095.php b/Zotlabs/Update/_1095.php
new file mode 100644
index 000000000..0f11fda62
--- /dev/null
+++ b/Zotlabs/Update/_1095.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1095 {
+function run() {
+ $r = q("ALTER TABLE `channel` ADD `channel_a_bookmark` INT UNSIGNED NOT NULL DEFAULT '128',
+ADD INDEX ( `channel_a_bookmark` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1096.php b/Zotlabs/Update/_1096.php
new file mode 100644
index 000000000..67abb9ee2
--- /dev/null
+++ b/Zotlabs/Update/_1096.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1096 {
+function run() {
+ $r = q("ALTER TABLE `account` CHANGE `account_level` `account_level` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1097.php b/Zotlabs/Update/_1097.php
new file mode 100644
index 000000000..bfe04cf5f
--- /dev/null
+++ b/Zotlabs/Update/_1097.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1097 {
+function run() {
+
+ // fix some mangled hublocs from a bug long ago
+
+ $r = q("select hubloc_id, hubloc_addr from hubloc where hubloc_addr like '%%/%%'");
+ if($r) {
+ foreach($r as $rr) {
+ q("update hubloc set hubloc_addr = '%s' where hubloc_id = %d",
+ dbesc(substr($rr['hubloc_addr'],0,strpos($rr['hubloc_addr'],'/'))),
+ intval($rr['hubloc_id'])
+ );
+ }
+ }
+ return UPDATE_SUCCESS;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1098.php b/Zotlabs/Update/_1098.php
new file mode 100644
index 000000000..e74ba640c
--- /dev/null
+++ b/Zotlabs/Update/_1098.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1098 {
+function run() {
+ $r = q("ALTER TABLE `channel` CHANGE `channel_r_stream` `channel_r_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r2 = q("ALTER TABLE `channel` CHANGE `channel_r_profile` `channel_r_profile` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r3 = q("ALTER TABLE `channel` CHANGE `channel_r_photos` `channel_r_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r4 = q("ALTER TABLE `channel` CHANGE `channel_r_abook` `channel_r_abook` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r4 = q("ALTER TABLE `channel` CHANGE `channel_w_stream` `channel_w_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r5 = q("ALTER TABLE `channel` CHANGE `channel_w_wall` `channel_w_wall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r6 = q("ALTER TABLE `channel` CHANGE `channel_w_tagwall` `channel_w_tagwall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r7 = q("ALTER TABLE `channel` CHANGE `channel_w_comment` `channel_w_comment` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r8 = q("ALTER TABLE `channel` CHANGE `channel_w_mail` `channel_w_mail` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r9 = q("ALTER TABLE `channel` CHANGE `channel_w_photos` `channel_w_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r10 = q("ALTER TABLE `channel` CHANGE `channel_w_chat` `channel_w_chat` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ $r11 = q("ALTER TABLE `channel` CHANGE `channel_a_delegate` `channel_a_delegate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
+ if($r && $r2 && $r3 && $r3 && $r5 && $r6 && $r7 && $r8 && $r9 && $r9 && $r10 && $r11)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1099.php b/Zotlabs/Update/_1099.php
new file mode 100644
index 000000000..a49e38c7c
--- /dev/null
+++ b/Zotlabs/Update/_1099.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1099 {
+function run() {
+ $r = q("CREATE TABLE IF NOT EXISTS `xchat` (
+ `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xchat_url` char(255) NOT NULL DEFAULT '',
+ `xchat_desc` char(255) NOT NULL DEFAULT '',
+ `xchat_xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`xchat_id`),
+ KEY `xchat_url` (`xchat_url`),
+ KEY `xchat_desc` (`xchat_desc`),
+ KEY `xchat_xchan` (`xchat_xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1100.php b/Zotlabs/Update/_1100.php
new file mode 100644
index 000000000..ffcd7dc1d
--- /dev/null
+++ b/Zotlabs/Update/_1100.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1100 {
+function run() {
+ $r = q("ALTER TABLE `xchat` ADD `xchat_edited` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ADD INDEX ( `xchat_edited` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1101.php b/Zotlabs/Update/_1101.php
new file mode 100644
index 000000000..709b6fa0a
--- /dev/null
+++ b/Zotlabs/Update/_1101.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1101 {
+function run() {
+ $r = q("update updates set ud_flags = 2 where ud_flags = (-1)");
+ $r = q("update updates set ud_flags = 0 where ud_flags = 4096");
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1102.php b/Zotlabs/Update/_1102.php
new file mode 100644
index 000000000..d25979b1f
--- /dev/null
+++ b/Zotlabs/Update/_1102.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1102 {
+function run() {
+ $r = q("update abook set abook_flags = (abook_flags - %d)
+ where ( abook_flags & %d)",
+ intval(ABOOK_FLAG_UNCONNECTED),
+ intval(ABOOK_FLAG_UNCONNECTED)
+ );
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1103.php b/Zotlabs/Update/_1103.php
new file mode 100644
index 000000000..3f9a9286c
--- /dev/null
+++ b/Zotlabs/Update/_1103.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1103 {
+function run() {
+ $x = curl_version();
+ if(stristr($x['ssl_version'],'openssl'))
+ set_config('system','curl_ssl_ciphers','ALL:!eNULL');
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1104.php b/Zotlabs/Update/_1104.php
new file mode 100644
index 000000000..0d299095b
--- /dev/null
+++ b/Zotlabs/Update/_1104.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1104 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `route` TEXT NOT NULL DEFAULT '' AFTER `postopts` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1105.php b/Zotlabs/Update/_1105.php
new file mode 100644
index 000000000..a96600150
--- /dev/null
+++ b/Zotlabs/Update/_1105.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1105 {
+function run() {
+ $r = q("ALTER TABLE `site` ADD `site_pull` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `site_update` ,
+CHANGE `site_sync` `site_sync` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `site_pull` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1106.php b/Zotlabs/Update/_1106.php
new file mode 100644
index 000000000..7e13d8993
--- /dev/null
+++ b/Zotlabs/Update/_1106.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1106 {
+function run() {
+ $r = q("ALTER TABLE `notify` CHANGE `parent` `parent` CHAR( 255 ) NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1107.php b/Zotlabs/Update/_1107.php
new file mode 100644
index 000000000..bcac6cf19
--- /dev/null
+++ b/Zotlabs/Update/_1107.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1107 {
+function run() {
+ $r = q("CREATE TABLE IF NOT EXISTS `app` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `app_id` char(64) NOT NULL DEFAULT '',
+ `app_sig` char(255) NOT NULL DEFAULT '',
+ `app_author` char(255) NOT NULL DEFAULT '',
+ `app_name` char(255) NOT NULL DEFAULT '',
+ `app_desc` text NOT NULL,
+ `app_url` char(255) NOT NULL DEFAULT '',
+ `app_photo` char(255) NOT NULL DEFAULT '',
+ `app_version` char(255) NOT NULL DEFAULT '',
+ `app_channel` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `app_id` (`app_id`),
+ KEY `app_name` (`app_name`),
+ KEY `app_url` (`app_url`),
+ KEY `app_photo` (`app_photo`),
+ KEY `app_version` (`app_version`),
+ KEY `app_channel` (`app_channel`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1108.php b/Zotlabs/Update/_1108.php
new file mode 100644
index 000000000..d9d9b0c18
--- /dev/null
+++ b/Zotlabs/Update/_1108.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1108 {
+function run() {
+ $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `app_price` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1109.php b/Zotlabs/Update/_1109.php
new file mode 100644
index 000000000..6a0aed28f
--- /dev/null
+++ b/Zotlabs/Update/_1109.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1109 {
+function run() {
+ $r = q("ALTER TABLE `app` CHANGE `app_id` `app_id` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+// We ended up with an extra zero in the name for 1108, so do it over and ignore the result.
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1110.php b/Zotlabs/Update/_1110.php
new file mode 100644
index 000000000..62bcbd0c8
--- /dev/null
+++ b/Zotlabs/Update/_1110.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1110 {
+function run() {
+ $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `app_price` )");
+
+ return UPDATE_SUCCESS;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1111.php b/Zotlabs/Update/_1111.php
new file mode 100644
index 000000000..a3080b465
--- /dev/null
+++ b/Zotlabs/Update/_1111.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1111 {
+function run() {
+ $r = q("ALTER TABLE `app` ADD `app_requires` CHAR( 255 ) NOT NULL DEFAULT '' ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1112.php b/Zotlabs/Update/_1112.php
new file mode 100644
index 000000000..e81780519
--- /dev/null
+++ b/Zotlabs/Update/_1112.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1112 {
+function run() {
+ $r = q("CREATE TABLE IF NOT EXISTS `likes` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `liker` char(128) NOT NULL DEFAULT '',
+ `likee` char(128) NOT NULL DEFAULT '',
+ `iid` int(11) NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `target_type` char(255) NOT NULL DEFAULT '',
+ `target` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `liker` (`liker`),
+ KEY `likee` (`likee`),
+ KEY `iid` (`iid`),
+ KEY `verb` (`verb`),
+ KEY `target_type` (`target_type`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1113.php b/Zotlabs/Update/_1113.php
new file mode 100644
index 000000000..0a726dcc3
--- /dev/null
+++ b/Zotlabs/Update/_1113.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1113 {
+function run() {
+ $r = q("ALTER TABLE `likes` ADD `channel_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` ,
+CHANGE `iid` `iid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0',
+ADD INDEX ( `channel_id` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1114.php b/Zotlabs/Update/_1114.php
new file mode 100644
index 000000000..5b564d513
--- /dev/null
+++ b/Zotlabs/Update/_1114.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1114 {
+function run() {
+ $r = q("ALTER TABLE `likes` ADD `target_id` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `target_type` ,
+ADD INDEX ( `target_id` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1115.php b/Zotlabs/Update/_1115.php
new file mode 100644
index 000000000..4edf63b85
--- /dev/null
+++ b/Zotlabs/Update/_1115.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1115 {
+function run() {
+
+ // Introducing email verification. Mark all existing accounts as verified or they
+ // won't be able to login.
+
+ $r = q("update account set account_flags = (account_flags ^ 1) where (account_flags & 1) ");
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1116.php b/Zotlabs/Update/_1116.php
new file mode 100644
index 000000000..9fa7270ea
--- /dev/null
+++ b/Zotlabs/Update/_1116.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1116 {
+function run() {
+ @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true);
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1117.php b/Zotlabs/Update/_1117.php
new file mode 100644
index 000000000..cc8edb3c9
--- /dev/null
+++ b/Zotlabs/Update/_1117.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1117 {
+function run() {
+ $r = q("ALTER TABLE `channel` CHANGE `channel_a_bookmark` `channel_w_like` INT( 10 ) UNSIGNED NOT NULL DEFAULT '128',
+DROP INDEX `channel_a_bookmark` , ADD INDEX `channel_w_like` ( `channel_w_like` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1118.php b/Zotlabs/Update/_1118.php
new file mode 100644
index 000000000..22cfc2357
--- /dev/null
+++ b/Zotlabs/Update/_1118.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1118 {
+function run() {
+ $r = q("ALTER TABLE `account` ADD `account_password_changed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ADD INDEX ( `account_password_changed` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1119.php b/Zotlabs/Update/_1119.php
new file mode 100644
index 000000000..ccf03e45a
--- /dev/null
+++ b/Zotlabs/Update/_1119.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1119 {
+function run() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `profdef` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `field_name` char(255) NOT NULL DEFAULT '',
+ `field_type` char(16) NOT NULL DEFAULT '',
+ `field_desc` char(255) NOT NULL DEFAULT '',
+ `field_help` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `field_name` (`field_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `profext` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `hash` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `channel_id` (`channel_id`),
+ KEY `hash` (`hash`),
+ KEY `k` (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1120.php b/Zotlabs/Update/_1120.php
new file mode 100644
index 000000000..c1f7e98d7
--- /dev/null
+++ b/Zotlabs/Update/_1120.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1120 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `public_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` ,
+ADD INDEX ( `public_policy` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1121.php b/Zotlabs/Update/_1121.php
new file mode 100644
index 000000000..c5ff00694
--- /dev/null
+++ b/Zotlabs/Update/_1121.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1121 {
+function run() {
+ $r = q("ALTER TABLE `site` ADD `site_realm` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `site_realm` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1122.php b/Zotlabs/Update/_1122.php
new file mode 100644
index 000000000..903e3aaeb
--- /dev/null
+++ b/Zotlabs/Update/_1122.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1122 {
+function run() {
+ $r = q("update site set site_realm = '%s' where true",
+ dbesc(DIRECTORY_REALM)
+ );
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1123.php b/Zotlabs/Update/_1123.php
new file mode 100644
index 000000000..96096beac
--- /dev/null
+++ b/Zotlabs/Update/_1123.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1123 {
+function run() {
+ $r1 = q("ALTER TABLE `hubloc` ADD `hubloc_network` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `hubloc_addr` ,
+ADD INDEX ( `hubloc_network` )");
+ $r2 = q("update hubloc set hubloc_network = 'zot' where true");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1124.php b/Zotlabs/Update/_1124.php
new file mode 100644
index 000000000..1320b8b55
--- /dev/null
+++ b/Zotlabs/Update/_1124.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1124 {
+function run() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `sign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `signed_text` mediumtext NOT NULL,
+ `signature` text NOT NULL,
+ `signer` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `iid` (`iid`),
+ KEY `retract_iid` (`retract_iid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `conv` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `guid` char(255) NOT NULL,
+ `recips` mediumtext NOT NULL,
+ `uid` int(11) NOT NULL,
+ `creator` char(255) NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `subject` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `created` (`created`),
+ KEY `updated` (`updated`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1125.php b/Zotlabs/Update/_1125.php
new file mode 100644
index 000000000..03f9640a4
--- /dev/null
+++ b/Zotlabs/Update/_1125.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1125 {
+function run() {
+ $r = q("ALTER TABLE `profdef` ADD `field_inputs` MEDIUMTEXT NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1126.php b/Zotlabs/Update/_1126.php
new file mode 100644
index 000000000..f657cc6b2
--- /dev/null
+++ b/Zotlabs/Update/_1126.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1126 {
+function run() {
+ $r = q("ALTER TABLE `mail` ADD `convid` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` ,
+ADD INDEX ( `convid` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1127.php b/Zotlabs/Update/_1127.php
new file mode 100644
index 000000000..8dec64ae4
--- /dev/null
+++ b/Zotlabs/Update/_1127.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1127 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `comments_closed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `changed` ,
+ADD INDEX ( `comments_closed` ), ADD INDEX ( `changed` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1128.php b/Zotlabs/Update/_1128.php
new file mode 100644
index 000000000..8ee6d225e
--- /dev/null
+++ b/Zotlabs/Update/_1128.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1128 {
+function run() {
+ $r = q("ALTER TABLE `item` ADD `diaspora_meta` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `sig` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1129.php b/Zotlabs/Update/_1129.php
new file mode 100644
index 000000000..76bd155ee
--- /dev/null
+++ b/Zotlabs/Update/_1129.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1129 {
+function run() {
+ $r = q("update hubloc set hubloc_network = 'zot' where hubloc_network = ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1130.php b/Zotlabs/Update/_1130.php
new file mode 100644
index 000000000..1322a0b13
--- /dev/null
+++ b/Zotlabs/Update/_1130.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1130 {
+function run() {
+ $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+
+ $r = q("select abook_channel, abook_my_perms from abook where (abook_flags & %d) and abook_my_perms != 0",
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ set_pconfig($rr['abook_channel'],'system','autoperms',$rr['abook_my_perms']);
+ }
+ }
+ $r = q("update abook set abook_my_perms = %d where (abook_flags & %d) and abook_my_perms = 0",
+ intval($myperms),
+ intval(ABOOK_FLAG_SELF)
+ );
+
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1131.php b/Zotlabs/Update/_1131.php
new file mode 100644
index 000000000..72e968f67
--- /dev/null
+++ b/Zotlabs/Update/_1131.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1131 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) // make sure this gets skipped for anyone who hasn't run it yet, it will fail on pg
+ return UPDATE_SUCCESS;
+
+ $r1 = q("ALTER TABLE `abook` ADD `abook_rating_text` TEXT NOT NULL DEFAULT '' AFTER `abook_rating` ");
+ $r2 = q("ALTER TABLE `xlink` ADD `xlink_rating_text` TEXT NOT NULL DEFAULT '' AFTER `xlink_rating` ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1132.php b/Zotlabs/Update/_1132.php
new file mode 100644
index 000000000..9e085a351
--- /dev/null
+++ b/Zotlabs/Update/_1132.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1132 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { // correct previous failed update
+ $r1 = q("ALTER TABLE abook ADD abook_rating_text TEXT NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE xlink ADD xlink_rating_text TEXT NOT NULL DEFAULT '' ");
+ if(!$r1 || !$r2)
+ return UPDATE_FAILED;
+ }
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1133.php b/Zotlabs/Update/_1133.php
new file mode 100644
index 000000000..3820ef1ee
--- /dev/null
+++ b/Zotlabs/Update/_1133.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1133 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE TABLE xperm (
+ xp_id serial NOT NULL,
+ xp_client varchar( 20 ) NOT NULL DEFAULT '',
+ xp_channel bigint NOT NULL DEFAULT '0',
+ xp_perm varchar( 64 ) NOT NULL DEFAULT '',
+ PRIMARY KEY (xp_id) )");
+ $r2 = 0;
+ foreach(array('xp_client', 'xp_channel', 'xp_perm') as $fld)
+ $r2 += ((q("create index $fld on xperm ($fld)") == false) ? 0 : 1);
+
+ $r = (($r1 && $r2) ? true : false);
+ }
+ else {
+ $r = q("CREATE TABLE IF NOT EXISTS `xperm` (
+ `xp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `xp_client` VARCHAR( 20 ) NOT NULL DEFAULT '',
+ `xp_channel` INT UNSIGNED NOT NULL DEFAULT '0',
+ `xp_perm` VARCHAR( 64 ) NOT NULL DEFAULT '',
+ KEY `xp_client` (`xp_client`),
+ KEY `xp_channel` (`xp_channel`),
+ KEY `xp_perm` (`xp_perm`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+ }
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1134.php b/Zotlabs/Update/_1134.php
new file mode 100644
index 000000000..d52bab044
--- /dev/null
+++ b/Zotlabs/Update/_1134.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1134 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE xlink ADD xlink_static numeric(1) NOT NULL DEFAULT '0' ");
+ $r2 = q("create index xlink_static on xlink ( xlink_static ) ");
+ $r = $r1 && $r2;
+ }
+ else
+ $r = q("ALTER TABLE xlink ADD xlink_static TINYINT( 1 ) NOT NULL DEFAULT '0', ADD INDEX ( xlink_static ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1135.php b/Zotlabs/Update/_1135.php
new file mode 100644
index 000000000..92a3e04b6
--- /dev/null
+++ b/Zotlabs/Update/_1135.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1135 {
+function run() {
+ $r = q("ALTER TABLE xlink ADD xlink_sig TEXT NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1136.php b/Zotlabs/Update/_1136.php
new file mode 100644
index 000000000..0c1691fcb
--- /dev/null
+++ b/Zotlabs/Update/_1136.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1136 {
+function run() {
+ $r1 = q("alter table item add item_unseen smallint not null default '0' ");
+ $r2 = q("create index item_unseen on item ( item_unseen ) ");
+ $r3 = q("update item set item_unseen = 1 where ( item_flags & 2 ) > 0 ");
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1137.php b/Zotlabs/Update/_1137.php
new file mode 100644
index 000000000..ab11fe3db
--- /dev/null
+++ b/Zotlabs/Update/_1137.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1137 {
+function run() {
+ $r1 = q("alter table site add site_valid smallint not null default '0' ");
+ $r2 = q("create index site_valid on site ( site_valid ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1138.php b/Zotlabs/Update/_1138.php
new file mode 100644
index 000000000..b2eac12af
--- /dev/null
+++ b/Zotlabs/Update/_1138.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1138 {
+function run() {
+ $r1 = q("alter table outq add outq_priority smallint not null default '0' ");
+ $r2 = q("create index outq_priority on outq ( outq_priority ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1139.php b/Zotlabs/Update/_1139.php
new file mode 100644
index 000000000..aa4863fc1
--- /dev/null
+++ b/Zotlabs/Update/_1139.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1139 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE channel ADD channel_lastpost timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'");
+ $r2 = q("create index channel_lastpost on channel ( channel_lastpost ) ");
+ $r = $r1 && $r2;
+ }
+ else
+ $r = q("ALTER TABLE `channel` ADD `channel_lastpost` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_dirdate` , ADD INDEX ( `channel_lastpost` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1140.php b/Zotlabs/Update/_1140.php
new file mode 100644
index 000000000..5b4c8f801
--- /dev/null
+++ b/Zotlabs/Update/_1140.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1140 {
+function run() {
+ $r = q("select * from clients where true");
+ $x = false;
+ if($r) {
+ foreach($r as $rr) {
+ $m = q("INSERT INTO xperm (xp_client, xp_channel, xp_perm) VALUES ('%s', %d, '%s') ",
+ dbesc($rr['client_id']),
+ intval($rr['uid']),
+ dbesc('all')
+ );
+ if(! $m)
+ $x = true;
+ }
+ }
+ if($x)
+ return UPDATE_FAILED;
+ return UPDATE_SUCCESS;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1141.php b/Zotlabs/Update/_1141.php
new file mode 100644
index 000000000..e1f84f469
--- /dev/null
+++ b/Zotlabs/Update/_1141.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1141 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE menu ADD menu_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'");
+ $r2 = q("create index menu_created on menu ( menu_created ) ");
+ $r3 = q("create index menu_edited on menu ( menu_edited ) ");
+ $r = $r1 && $r2;
+ }
+ else
+ $r = q("ALTER TABLE menu ADD menu_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( menu_created ), ADD INDEX ( menu_edited ) ");
+
+ $t = datetime_convert();
+ q("update menu set menu_created = '%s', menu_edited = '%s' where true",
+ dbesc($t),
+ dbesc($t)
+ );
+
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1142.php b/Zotlabs/Update/_1142.php
new file mode 100644
index 000000000..a8ffcc182
--- /dev/null
+++ b/Zotlabs/Update/_1142.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1142 {
+function run() {
+
+ $r1 = q("alter table site add site_dead smallint not null default '0' ");
+ $r2 = q("create index site_dead on site ( site_dead ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1143.php b/Zotlabs/Update/_1143.php
new file mode 100644
index 000000000..99f23af61
--- /dev/null
+++ b/Zotlabs/Update/_1143.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1143 {
+function run() {
+
+ $r1 = q("ALTER TABLE abook ADD abook_incl TEXT NOT NULL DEFAULT ''");
+ $r2 = q("ALTER TABLE abook ADD abook_excl TEXT NOT NULL DEFAULT '' ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1144.php b/Zotlabs/Update/_1144.php
new file mode 100644
index 000000000..848897de7
--- /dev/null
+++ b/Zotlabs/Update/_1144.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1144 {
+function run() {
+ $r = q("select flags, id from attach where flags != 0");
+ if($r) {
+ foreach($r as $rr) {
+ if($rr['flags'] & 1) {
+ q("update attach set is_dir = 1 where id = %d",
+ intval($rr['id'])
+ );
+ }
+ if($rr['flags'] & 2) {
+ q("update attach set os_storage = 1 where id = %d",
+ intval($rr['id'])
+ );
+ }
+ }
+ }
+
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1145.php b/Zotlabs/Update/_1145.php
new file mode 100644
index 000000000..5102acc8a
--- /dev/null
+++ b/Zotlabs/Update/_1145.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1145 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE event ADD event_status char(255) NOT NULL DEFAULT '',
+ ADD event_status_date timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD event_percent SMALLINT NOT NULL DEFAULT '0',
+ ADD event_repeat TEXT NOT NULL DEFAULT '' ");
+ $r2 = q("create index event_status on event ( event_status )");
+ $r = $r1 && $r2;
+ }
+ else {
+ $r = q("ALTER TABLE `event` ADD `event_status` CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD `event_status_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD `event_percent` SMALLINT NOT NULL DEFAULT '0',
+ ADD `event_repeat` TEXT NOT NULL DEFAULT '',
+ ADD INDEX ( `event_status` ) ");
+ }
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1146.php b/Zotlabs/Update/_1146.php
new file mode 100644
index 000000000..92a26adaf
--- /dev/null
+++ b/Zotlabs/Update/_1146.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1146 {
+function run() {
+
+ $r1 = q("alter table event add event_sequence smallint not null default '0' ");
+ $r2 = q("create index event_sequence on event ( event_sequence ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1147.php b/Zotlabs/Update/_1147.php
new file mode 100644
index 000000000..b8f6716f7
--- /dev/null
+++ b/Zotlabs/Update/_1147.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1147 {
+function run() {
+
+ $r1 = q("alter table event add event_priority smallint not null default '0' ");
+ $r2 = q("create index event_priority on event ( event_priority ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1148.php b/Zotlabs/Update/_1148.php
new file mode 100644
index 000000000..ed9a4d93a
--- /dev/null
+++ b/Zotlabs/Update/_1148.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1148 {
+function run() {
+ $r1 = q("alter table likes add i_mid char(255) not null default '' ");
+ $r2 = q("create index i_mid on likes ( i_mid ) ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1149.php b/Zotlabs/Update/_1149.php
new file mode 100644
index 000000000..f45bd995b
--- /dev/null
+++ b/Zotlabs/Update/_1149.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1149 {
+function run() {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD obj_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ }
+ else {
+ $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '',
+ ADD obj_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD obj_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ }
+
+ $r2 = q("create index obj_term on obj ( obj_term ) ");
+ $r3 = q("create index obj_url on obj ( obj_url ) ");
+ $r4 = q("create index obj_imgurl on obj ( obj_imgurl ) ");
+ $r5 = q("create index obj_created on obj ( obj_created ) ");
+ $r6 = q("create index obj_edited on obj ( obj_edited ) ");
+ $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1150.php b/Zotlabs/Update/_1150.php
new file mode 100644
index 000000000..896fc75e3
--- /dev/null
+++ b/Zotlabs/Update/_1150.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1150 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE app ADD app_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD app_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ }
+ else {
+ $r1 = q("ALTER TABLE app ADD app_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
+ ADD app_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ }
+
+ $r2 = q("create index app_created on app ( app_created ) ");
+ $r3 = q("create index app_edited on app ( app_edited ) ");
+
+ $r = $r1 && $r2 && $r3;
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1151.php b/Zotlabs/Update/_1151.php
new file mode 100644
index 000000000..d14baabb1
--- /dev/null
+++ b/Zotlabs/Update/_1151.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1151 {
+function run() {
+
+ $r3 = q("select likes.*, item.mid from likes left join item on likes.iid = item.id");
+ if($r3) {
+ foreach($r3 as $rr) {
+ q("update likes set i_mid = '%s' where id = $d",
+ dbesc($rr['mid']),
+ intval($rr['id'])
+ );
+ }
+ }
+
+
+ return UPDATE_SUCCESS;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1152.php b/Zotlabs/Update/_1152.php
new file mode 100644
index 000000000..54393d590
--- /dev/null
+++ b/Zotlabs/Update/_1152.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1152 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+
+ $r1 = q("CREATE TABLE IF NOT EXISTS \"dreport\" (
+ \"dreport_id\" serial NOT NULL,
+ \"dreport_channel\" int(11) NOT NULL DEFAULT '0',
+ \"dreport_mid\" char(255) NOT NULL DEFAULT '',
+ \"dreport_site\" char(255) NOT NULL DEFAULT '',
+ \"dreport_recip\" char(255) NOT NULL DEFAULT '',
+ \"dreport_result\" char(255) NOT NULL DEFAULT '',
+ \"dreport_time\" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ \"dreport_xchan\" char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (\"dreport_id\") ");
+
+ $r2 = q("create index \"dreport_mid\" on dreport (\"dreport_mid\") ");
+ $r3 = q("create index \"dreport_site\" on dreport (\"dreport_site\") ");
+ $r4 = q("create index \"dreport_time\" on dreport (\"dreport_time\") ");
+ $r5 = q("create index \"dreport_xchan\" on dreport (\"dreport_xchan\") ");
+ $r6 = q("create index \"dreport_channel\" on dreport (\"dreport_channel\") ");
+
+ $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
+
+ }
+ else {
+ $r = q("CREATE TABLE IF NOT EXISTS `dreport` (
+ `dreport_id` int(11) NOT NULL AUTO_INCREMENT,
+ `dreport_channel` int(11) NOT NULL DEFAULT '0',
+ `dreport_mid` char(255) NOT NULL DEFAULT '',
+ `dreport_site` char(255) NOT NULL DEFAULT '',
+ `dreport_recip` char(255) NOT NULL DEFAULT '',
+ `dreport_result` char(255) NOT NULL DEFAULT '',
+ `dreport_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `dreport_xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`dreport_id`),
+ KEY `dreport_mid` (`dreport_mid`),
+ KEY `dreport_site` (`dreport_site`),
+ KEY `dreport_time` (`dreport_time`),
+ KEY `dreport_xchan` (`dreport_xchan`),
+ KEY `dreport_channel` (`dreport_channel`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ }
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1153.php b/Zotlabs/Update/_1153.php
new file mode 100644
index 000000000..cf8d451b4
--- /dev/null
+++ b/Zotlabs/Update/_1153.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1153 {
+function run() {
+
+ $r1 = q("ALTER TABLE dreport ADD dreport_queue CHAR( 255 ) NOT NULL DEFAULT '' ");
+ $r2 = q("create index dreport_queue on dreport ( dreport_queue) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1154.php b/Zotlabs/Update/_1154.php
new file mode 100644
index 000000000..6e92f525d
--- /dev/null
+++ b/Zotlabs/Update/_1154.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1154 {
+function run() {
+
+ $r = q("ALTER TABLE event ADD event_vdata text NOT NULL ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1155.php b/Zotlabs/Update/_1155.php
new file mode 100644
index 000000000..8f2553b3e
--- /dev/null
+++ b/Zotlabs/Update/_1155.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1155 {
+function run() {
+
+ $r1 = q("alter table site add site_type smallint not null default '0' ");
+ $r2 = q("create index site_type on site ( site_type ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1156.php b/Zotlabs/Update/_1156.php
new file mode 100644
index 000000000..536a219d8
--- /dev/null
+++ b/Zotlabs/Update/_1156.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1156 {
+function run() {
+ $r1 = q("ALTER TABLE mail ADD conv_guid CHAR( 255 ) NOT NULL DEFAULT '' ");
+ $r2 = q("create index conv_guid on mail ( conv_guid ) ");
+
+ $r3 = q("select mail.id, mail.convid, conv.guid from mail left join conv on mail.convid = conv.id where true");
+ if($r3) {
+ foreach($r3 as $rr) {
+ if($rr['convid']) {
+ q("update mail set conv_guid = '%s' where id = %d",
+ dbesc($rr['guid']),
+ intval($rr['id'])
+ );
+ }
+ }
+ }
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1157.php b/Zotlabs/Update/_1157.php
new file mode 100644
index 000000000..01f452f32
--- /dev/null
+++ b/Zotlabs/Update/_1157.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1157 {
+function run() {
+ $r1 = q("alter table site add site_project char(255) not null default '' ");
+ $r2 = q("create index site_project on site ( site_project ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1158.php b/Zotlabs/Update/_1158.php
new file mode 100644
index 000000000..89ac3daa1
--- /dev/null
+++ b/Zotlabs/Update/_1158.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1158 {
+function run() {
+ $r = q("select attach.id, attach.data, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 and not attach.data like '%%store%%' ");
+ if($r) {
+ foreach($r as $rr) {
+ $has_slash = ((substr($rr['data'],0,1) === '/') ? true : false);
+ q("update attach set data = '%s' where id = %d",
+ dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['data'])),
+ dbesc($rr['id'])
+ );
+ }
+ }
+ return UPDATE_SUCCESS;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1159.php b/Zotlabs/Update/_1159.php
new file mode 100644
index 000000000..1445092ad
--- /dev/null
+++ b/Zotlabs/Update/_1159.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1159 {
+function run() {
+ $r = q("select attach.id, attach.data, attach.hash, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 ");
+ if($r) {
+ foreach($r as $rr) {
+ $x = dbunescbin($rr['data']);
+ $has_slash = (($x === 'store/' . $rr['channel_address'] . '/') ? true : false);
+ if(($x === 'store/' . $rr['channel_address']) || ($has_slash)) {
+ q("update attach set data = '%s' where id = %d",
+ dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['hash'])),
+ dbesc($rr['id'])
+ );
+ }
+ }
+ }
+ return UPDATE_SUCCESS;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1160.php b/Zotlabs/Update/_1160.php
new file mode 100644
index 000000000..b7b67076f
--- /dev/null
+++ b/Zotlabs/Update/_1160.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1160 {
+function run() {
+ $r = q("alter table abook add abook_instance text not null default '' ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1161.php b/Zotlabs/Update/_1161.php
new file mode 100644
index 000000000..870eb7ed6
--- /dev/null
+++ b/Zotlabs/Update/_1161.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1161 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE TABLE \"iconfig\" (
+ \"id\" serial NOT NULL,
+ \"iid\" bigint NOT NULL DEFAULT '0',
+ \"cat\" text NOT NULL DEFAULT '',
+ \"k\" text NOT NULL DEFAULT '',
+ \"v\" text NOT NULL DEFAULT '',
+ PRIMARY_KEY(\"id\")
+) ");
+$r2 = q("create index \"iconfig_iid\" on iconfig (\"iid\") ");;
+$r3 = q("create index \"iconfig_cat\" on iconfig (\"cat\") ");
+$r4 = q("create index \"iconfig_k\" on iconfig (\"k\") ");
+ $r = $r1 && $r2 && $r3 && $r4;
+ }
+ else {
+ $r = q("CREATE TABLE IF NOT EXISTS `iconfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `iid` int(11) NOT NULL DEFAULT '0',
+ `cat` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `iid` (`iid`),
+ KEY `cat` (`cat`),
+ KEY `k` (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ }
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1162.php b/Zotlabs/Update/_1162.php
new file mode 100644
index 000000000..683ea9802
--- /dev/null
+++ b/Zotlabs/Update/_1162.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1162 {
+function run() {
+ $r1 = q("alter table iconfig add sharing int not null default '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES)
+ $r2 = q("create index \"iconfig_sharing\" on iconfig (\"sharing\") ");
+ else
+ $r2 = q("alter table iconfig add index ( sharing ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1163.php b/Zotlabs/Update/_1163.php
new file mode 100644
index 000000000..376447aea
--- /dev/null
+++ b/Zotlabs/Update/_1163.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1163 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("alter table channel add channel_moved text not null default '' ");
+ $r2 = q("create index \"channel_channel_moved\" on channel (\"channel_moved\") ");
+ }
+ else {
+ $r1 = q("alter table channel add channel_moved char(255) not null default '' ");
+ $r2 = q("alter table channel add index ( channel_moved ) ");
+ }
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1164.php b/Zotlabs/Update/_1164.php
new file mode 100644
index 000000000..bad9193d1
--- /dev/null
+++ b/Zotlabs/Update/_1164.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1164 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE TABLE \"abconfig\" (
+ \"id\" serial NOT NULL,
+ \"chan\" text NOT NULL,
+ \"xchan\" text NOT NULL,
+ \"cat\" text NOT NULL,
+ \"k\" text NOT NULL,
+ \"v\" text NOT NULL,
+ PRIMARY KEY (\"id\") ");
+ $r2 = q("create index \"abconfig_chan\" on abconfig (\"chan\") ");
+ $r3 = q("create index \"abconfig_xchan\" on abconfig (\"xchan\") ");
+ $r4 = q("create index \"abconfig_cat\" on abconfig (\"cat\") ");
+ $r5 = q("create index \"abconfig_k\" on abconfig (\"k\") ");
+ $r = $r1 && $r2 && $r3 && $r4 && $r5;
+ }
+ else {
+ $r = q("CREATE TABLE IF NOT EXISTS `abconfig` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `chan` char(255) NOT NULL DEFAULT '',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ `cat` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `chan` (`chan`),
+ KEY `xchan` (`xchan`),
+ KEY `cat` (`cat`),
+ KEY `k` (`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ }
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1165.php b/Zotlabs/Update/_1165.php
new file mode 100644
index 000000000..fcea38dc8
--- /dev/null
+++ b/Zotlabs/Update/_1165.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1165 {
+function run() {
+
+ $r1 = q("alter table hook add hook_version int not null default '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES)
+ $r2 = q("create index \"hook_version_idx\" on hook (\"hook_version\") ");
+ else
+ $r2 = q("alter table hook add index ( hook_version ) ");
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1166.php b/Zotlabs/Update/_1166.php
new file mode 100644
index 000000000..e320d5bc0
--- /dev/null
+++ b/Zotlabs/Update/_1166.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1166 {
+function run() {
+
+ $r = q("alter table source add src_tag text not null default '' ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1167.php b/Zotlabs/Update/_1167.php
new file mode 100644
index 000000000..b5510a21f
--- /dev/null
+++ b/Zotlabs/Update/_1167.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1167 {
+function run() {
+
+ $r1 = q("alter table app add app_deleted int not null default '0' ");
+ $r2 = q("alter table app add app_system int not null default '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r3 = q("create index \"app_deleted_idx\" on app (\"app_deleted\") ");
+ $r4 = q("create index \"app_system_idx\" on app (\"app_system\") ");
+ }
+ else {
+ $r3 = q("alter table app add index ( app_deleted ) ");
+ $r4 = q("alter table app add index ( app_system ) ");
+ }
+
+ if($r1 && $r2 && $r3 && $r4)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1168.php b/Zotlabs/Update/_1168.php
new file mode 100644
index 000000000..cf7d2689a
--- /dev/null
+++ b/Zotlabs/Update/_1168.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1168 {
+function run() {
+
+ $r1 = q("alter table obj add obj_quantity int not null default '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r2 = q("create index \"obj_quantity_idx\" on obj (\"obj_quantity\") ");
+ }
+ else {
+ $r2 = q("alter table obj add index ( obj_quantity ) ");
+ }
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1169.php b/Zotlabs/Update/_1169.php
new file mode 100644
index 000000000..cfe4dbcd8
--- /dev/null
+++ b/Zotlabs/Update/_1169.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1169 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` numeric( 20 ) UNSIGNED NOT NULL DEFAULT '0' ");
+ $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` text NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` text NOT NULL DEFAULT '' ");
+
+ }
+ else {
+ $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0' ");
+ $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` CHAR(255) NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` CHAR(255) NOT NULL DEFAULT '' ");
+ }
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1170.php b/Zotlabs/Update/_1170.php
new file mode 100644
index 000000000..215aeebc7
--- /dev/null
+++ b/Zotlabs/Update/_1170.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1170 {
+function run() {
+
+ $r1 = q("drop table fcontact");
+ $r2 = q("drop table ffinder");
+ $r3 = q("drop table fserver");
+ $r4 = q("drop table fsuggest");
+ $r5 = q("drop table spam");
+
+ if($r1 && $r2 && $r3 && $r4 && $r5)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1171.php b/Zotlabs/Update/_1171.php
new file mode 100644
index 000000000..5cbf0ca21
--- /dev/null
+++ b/Zotlabs/Update/_1171.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1171 {
+function run() {
+
+ $r1 = q("ALTER TABLE verify CHANGE `type` `vtype` varchar(32) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE tokens CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE auth_codes CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' ");
+ $r4 = q("ALTER TABLE clients CHANGE `name` `clname` TEXT ");
+ $r5 = q("ALTER TABLE session CHANGE `data` `sess_data` TEXT NOT NULL ");
+ $r6 = q("ALTER TABLE register CHANGE `language` `lang` varchar(16) NOT NULL DEFAULT '' ");
+
+ if($r1 && $r2 && $r3 && $r4 && $r5 && $r6)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1172.php b/Zotlabs/Update/_1172.php
new file mode 100644
index 000000000..117e87fa1
--- /dev/null
+++ b/Zotlabs/Update/_1172.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1172 {
+function run() {
+
+ $r1 = q("ALTER TABLE term CHANGE `type` `ttype` int(3) NOT NULL DEFAULT '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r2 = q("ALTER TABLE groups CHANGE `name` `gname` TEXT NOT NULL ");
+ $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` TEXT NOT NULL ");
+ $r4 = q("ALTER TABLE profile CHANGE `with` `partner` TEXT NOT NULL ");
+ $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL ");
+ }
+ else {
+ $r2 = q("ALTER TABLE groups CHANGE `name` `gname` char(255) NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` char(255) NOT NULL DEFAULT '' ");
+ $r4 = q("ALTER TABLE profile CHANGE `with` `partner` char(255) NOT NULL DEFAULT '' ");
+ $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL ");
+ }
+ if($r1 && $r2 && $r3 && $r4 && $r5)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1173.php b/Zotlabs/Update/_1173.php
new file mode 100644
index 000000000..7c0d76c73
--- /dev/null
+++ b/Zotlabs/Update/_1173.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1173 {
+function run() {
+
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE notify CHANGE `name` `xname` TEXT NOT NULL ");
+ $r2 = q("ALTER TABLE notify CHANGE `date` `created` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` numeric(3) NOT NULL DEFAULT '0' ");
+ }
+ else {
+ $r1 = q("ALTER TABLE notify CHANGE `name` `xname` char(255) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE notify CHANGE `date` `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` smallint(3) NOT NULL DEFAULT '0' ");
+ }
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1174.php b/Zotlabs/Update/_1174.php
new file mode 100644
index 000000000..0d68b2d65
--- /dev/null
+++ b/Zotlabs/Update/_1174.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1174 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE event CHANGE `type` `etype` varchar(255) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` numeric(1) NOT NULL DEFAULT '0' ");
+ $r5 = q("ALTER TABLE attach CHANGE `data` `content` bytea NOT NULL ");
+ $r6 = q("ALTER TABLE photo CHANGE `data` `content` bytea NOT NULL ");
+ }
+ else {
+ $r1 = q("ALTER TABLE event CHANGE `type` `etype` char(255) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` tinyint(1) NOT NULL DEFAULT '0' ");
+ $r5 = q("ALTER TABLE attach CHANGE `data` `content` longblob NOT NULL ");
+ $r6 = q("ALTER TABLE photo CHANGE `data` `content` mediumblob NOT NULL ");
+ }
+
+ if($r1 && $r2 && $r3 && $r4 && $r5 && $r6)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1175.php b/Zotlabs/Update/_1175.php
new file mode 100644
index 000000000..188586084
--- /dev/null
+++ b/Zotlabs/Update/_1175.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1175 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL");
+ $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` bigint NOT NULL DEFAULT '0' ");
+ $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` numeric(3) NOT NULL DEFAULT '0' ");
+ $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` varchar(128) NOT NULL DEFAULT 'image/jpeg' ");
+
+ }
+ else {
+ $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL");
+ $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` int(10) unsigned NOT NULL DEFAULT '0' ");
+ $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` tinyint(3) unsigned NOT NULL DEFAULT '0' ");
+ $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg' ");
+
+ }
+
+ if($r1 && $r2 && $r3 && $r4)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1176.php b/Zotlabs/Update/_1176.php
new file mode 100644
index 000000000..8c02ee436
--- /dev/null
+++ b/Zotlabs/Update/_1176.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1176 {
+function run() {
+
+ $r = q("select * from item_id where true");
+ if($r) {
+ foreach($r as $rr) {
+ \Zotlabs\Lib\IConfig::Set($rr['iid'],'system',$rr['service'],$rr['sid'],true);
+ }
+ }
+ return UPDATE_SUCCESS;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1177.php b/Zotlabs/Update/_1177.php
new file mode 100644
index 000000000..119e48ee8
--- /dev/null
+++ b/Zotlabs/Update/_1177.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1177 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("alter table event add cal_id bigint NOT NULL DEFAULT '0'");
+ $r2 = q("create index \"event_cal_idx\" on event (\"cal_id\") ");
+
+ $r3 = q("CREATE TABLE \"cal\" (
+ \"cal_id\" serial NOT NULL,
+ \"cal_aid\" bigint NOT NULL DEFAULT '0',
+ \"cal_uid\" bigint NOT NULL DEFAULT '0',
+ \"cal_hash\" text NOT NULL,
+ \"cal_name\" text NOT NULL,
+ \"uri\" text NOT NULL,
+ \"logname\" text NOT NULL,
+ \"pass\" text NOT NULL,
+ \"ctag\" text NOT NULL,
+ \"synctoken\" text NOT NULL,
+ \"cal_types\" text NOT NULL,
+ PRIMARY KEY (\"cal_id\") ");
+ $r4 = q("create index \"cal_hash_idx\" on cal (\"cal_hash\") ");
+ $r5 = q("create index \"cal_name_idx\" on cal (\"cal_name\") ");
+ $r6 = q("create index \"cal_types_idx\" on cal (\"cal_types\") ");
+ $r7 = q("create index \"cal_aid_idx\" on cal (\"cal_aid\") ");
+ $r8 = q("create index \"cal_uid_idx\" on cal (\"cal_uid\") ");
+ $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8;
+ }
+ else {
+ $r1 = q("alter table event add cal_id int(10) unsigned NOT NULL DEFAULT '0',
+ add index ( cal_id ) ");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `cal` (
+ `cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cal_aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cal_uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cal_hash` varchar(255) NOT NULL DEFAULT '',
+ `cal_name` varchar(255) NOT NULL DEFAULT '',
+ `uri` varchar(255) NOT NULL DEFAULT '',
+ `logname` varchar(255) NOT NULL DEFAULT '',
+ `pass` varchar(255) NOT NULL DEFAULT '',
+ `ctag` varchar(255) NOT NULL DEFAULT '',
+ `synctoken` varchar(255) NOT NULL DEFAULT '',
+ `cal_types` varchar(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`cal_id`),
+ KEY `cal_aid` (`cal_aid`),
+ KEY `cal_uid` (`cal_uid`),
+ KEY `cal_hash` (`cal_hash`),
+ KEY `cal_name` (`cal_name`),
+ KEY `cal_types` (`cal_types`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ $r = $r1 && $r2;
+ }
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1178.php b/Zotlabs/Update/_1178.php
new file mode 100644
index 000000000..97c42a16d
--- /dev/null
+++ b/Zotlabs/Update/_1178.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1178 {
+function run() {
+
+ $c2 = null;
+
+ $c1 = q("SELECT channel_id, channel_hash from channel where true");
+ if($c1) {
+ $c2 = q("SELECT id, chan from abconfig where true");
+ if($c2) {
+ for($x = 0; $x < count($c2); $x ++) {
+ foreach($c1 as $c) {
+ if($c['channel_hash'] == $c2[$x]['chan']) {
+ $c2[$x]['chan'] = $c['channel_id'];
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ $r1 = q("ALTER TABLE abconfig CHANGE chan chan int(10) unsigned NOT NULL DEFAULT '0' ");
+
+ if($c2) {
+ foreach($c2 as $c) {
+ q("UPDATE abconfig SET chan = %d where id = %d",
+ intval($c['chan']),
+ intval($c['id'])
+ );
+ }
+ }
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1179.php b/Zotlabs/Update/_1179.php
new file mode 100644
index 000000000..44227c8d3
--- /dev/null
+++ b/Zotlabs/Update/_1179.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1179 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE TABLE atoken (
+ atoken_id serial NOT NULL,
+ atoken_aid bigint NOT NULL DEFAULT 0,
+ atoken_uid bigint NOT NULL DEFAULT 0,
+ atoken_name varchar(255) NOT NULL DEFAULT '',
+ atoken_token varchar(255) NOT NULL DEFAULT '',
+ atoken_expires timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY (atoken_id)) ");
+ $r2 = q("create index atoken_aid on atoken (atoken_aid)");
+ $r3 = q("create index atoken_uid on atoken (atoken_uid)");
+ $r4 = q("create index atoken_name on atoken (atoken_name)");
+ $r5 = q("create index atoken_token on atoken (atoken_token)");
+ $r6 = q("create index atoken_expires on atoken (atoken_expires)");
+
+ $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
+
+ }
+ else {
+ $r = q("CREATE TABLE IF NOT EXISTS `atoken` (
+ `atoken_id` int(11) NOT NULL AUTO_INCREMENT,
+ `atoken_aid` int(11) NOT NULL DEFAULT 0,
+ `atoken_uid` int(11) NOT NULL DEFAULT 0,
+ `atoken_name` char(255) NOT NULL DEFAULT '',
+ `atoken_token` char(255) NOT NULL DEFAULT '',
+ `atoken_expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY (`atoken_id`),
+ KEY `atoken_aid` (`atoken_aid`),
+ KEY `atoken_uid` (`atoken_uid`),
+ KEY `atoken_name` (`atoken_name`),
+ KEY `atoken_token` (`atoken_token`),
+ KEY `atoken_expires` (`atoken_expires`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+ }
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1180.php b/Zotlabs/Update/_1180.php
new file mode 100644
index 000000000..f02f46231
--- /dev/null
+++ b/Zotlabs/Update/_1180.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1180 {
+function run() {
+
+ require_once('include/perm_upgrade.php');
+
+ $r1 = q("select * from channel where true");
+ if($r1) {
+ foreach($r1 as $rr) {
+ perm_limits_upgrade($rr);
+ autoperms_upgrade($rr);
+ }
+ }
+
+ $r2 = q("select * from abook where true");
+ if($r2) {
+ foreach($r2 as $rr) {
+ perm_abook_upgrade($rr);
+ }
+ }
+
+ $r = $r1 && $r2;
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1181.php b/Zotlabs/Update/_1181.php
new file mode 100644
index 000000000..fc2d94b6b
--- /dev/null
+++ b/Zotlabs/Update/_1181.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1181 {
+function run() {
+ if(\Zotlabs\Lib\System::get_server_role() == 'pro') {
+ q("update account set account_level = 5 where true");
+ }
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1182.php b/Zotlabs/Update/_1182.php
new file mode 100644
index 000000000..d652f432e
--- /dev/null
+++ b/Zotlabs/Update/_1182.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1182 {
+function run() {
+
+ $r1 = q("alter table site add site_version varchar(32) not null default '' ");
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1183.php b/Zotlabs/Update/_1183.php
new file mode 100644
index 000000000..6e9f89271
--- /dev/null
+++ b/Zotlabs/Update/_1183.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1183 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("alter table hook ALTER COLUMN priority TYPE smallint");
+ $r2 = q("alter table hook ALTER COLUMN priority SET NOT NULL");
+ $r3 = q("alter table hook ALTER COLUMN priority SET DEFAULT '0'");
+ $r1 = $r1 && $r2 && $r3;
+ }
+ else {
+ $r1 = q("alter table hook CHANGE priority priority smallint NOT NULL DEFAULT '0' ");
+ }
+ $r2 = q("create index priority_idx on hook (priority)");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1184.php b/Zotlabs/Update/_1184.php
new file mode 100644
index 000000000..e8c37888c
--- /dev/null
+++ b/Zotlabs/Update/_1184.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1184 {
+function run() {
+
+ $r1 = q("alter table site add site_crypto text not null default '' ");
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1185.php b/Zotlabs/Update/_1185.php
new file mode 100644
index 000000000..c7f4f1bd4
--- /dev/null
+++ b/Zotlabs/Update/_1185.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1185 {
+function run() {
+
+ $r1 = q("alter table app add app_plugin text not null default '' ");
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1186.php b/Zotlabs/Update/_1186.php
new file mode 100644
index 000000000..a9c4f0e36
--- /dev/null
+++ b/Zotlabs/Update/_1186.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1186 {
+function run() {
+
+ $r1 = q("alter table profile add profile_vcard text not null");
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1187.php b/Zotlabs/Update/_1187.php
new file mode 100644
index 000000000..0fce5aa05
--- /dev/null
+++ b/Zotlabs/Update/_1187.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1187 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("alter table outq add outq_scheduled timestamp not null default '0001-01-01 00:00:00' ");
+ }
+ else {
+ $r1 = q("alter table outq add outq_scheduled datetime not null default '0001-01-01 00:00:00' ");
+ }
+ $r2 = q("create index outq_scheduled_idx on outq (outq_scheduled)");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1188.php b/Zotlabs/Update/_1188.php
new file mode 100644
index 000000000..eb0335aab
--- /dev/null
+++ b/Zotlabs/Update/_1188.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1188 {
+function run() {
+
+ $r1 = q("alter table channel add channel_password varchar(255) not null default '' ");
+ $r2 = q("alter table channel add channel_salt varchar(255) not null default '' ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1189.php b/Zotlabs/Update/_1189.php
new file mode 100644
index 000000000..5cd180fbd
--- /dev/null
+++ b/Zotlabs/Update/_1189.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1189 {
+function run() {
+
+ $r1 = q("alter table mail add mail_mimetype varchar(64) not null default 'text/bbcode' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r2 = q("alter table mail add mail_raw smallint not null default 0 ");
+ }
+ else {
+ $r2 = q("alter table mail add mail_raw tinyint(4) not null default 0 ");
+ }
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1190.php b/Zotlabs/Update/_1190.php
new file mode 100644
index 000000000..9321b82b8
--- /dev/null
+++ b/Zotlabs/Update/_1190.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1190 {
+function run() {
+ $r1 = q("alter table abook add abook_not_here smallint not null default 0 ");
+
+ $r2 = q("create index abook_not_here on abook (abook_not_here)");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1191.php b/Zotlabs/Update/_1191.php
new file mode 100644
index 000000000..015b9a2ca
--- /dev/null
+++ b/Zotlabs/Update/_1191.php
@@ -0,0 +1,425 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1191 {
+function run() {
+
+ $r = q("SELECT 1 FROM principals LIMIT 1");
+
+ if($r !== false) {
+ return UPDATE_SUCCESS;
+ }
+ else {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE TABLE addressbooks (
+ id SERIAL NOT NULL,
+ principaluri VARCHAR(255),
+ displayname VARCHAR(255),
+ uri VARCHAR(200),
+ description TEXT,
+ synctoken INTEGER NOT NULL DEFAULT 1
+ );"
+ );
+
+ $r2 = q("ALTER TABLE ONLY addressbooks ADD CONSTRAINT addressbooks_pkey PRIMARY KEY (id);");
+
+ $r3 = q("CREATE UNIQUE INDEX addressbooks_ukey ON addressbooks USING btree (principaluri, uri);");
+
+ $r4 = q("CREATE TABLE cards (
+ id SERIAL NOT NULL,
+ addressbookid INTEGER NOT NULL,
+ carddata BYTEA,
+ uri VARCHAR(200),
+ lastmodified INTEGER,
+ etag VARCHAR(32),
+ size INTEGER NOT NULL
+ );"
+ );
+
+ $r5 = q("ALTER TABLE ONLY cards ADD CONSTRAINT cards_pkey PRIMARY KEY (id);");
+
+ $r6 = q("CREATE UNIQUE INDEX cards_ukey ON cards USING btree (addressbookid, uri);");
+
+ $r7 = q("CREATE TABLE addressbookchanges (
+ id SERIAL NOT NULL,
+ uri VARCHAR(200) NOT NULL,
+ synctoken INTEGER NOT NULL,
+ addressbookid INTEGER NOT NULL,
+ operation SMALLINT NOT NULL
+ );"
+ );
+
+ $r8 = q("ALTER TABLE ONLY addressbookchanges ADD CONSTRAINT addressbookchanges_pkey PRIMARY KEY (id);");
+
+ $r9 = q("CREATE INDEX addressbookchanges_addressbookid_synctoken_ix ON addressbookchanges USING btree (addressbookid, synctoken);");
+
+ $r10 = q("CREATE TABLE calendarobjects (
+ id SERIAL NOT NULL,
+ calendardata BYTEA,
+ uri VARCHAR(200),
+ calendarid INTEGER NOT NULL,
+ lastmodified INTEGER,
+ etag VARCHAR(32),
+ size INTEGER NOT NULL,
+ componenttype VARCHAR(8),
+ firstoccurence INTEGER,
+ lastoccurence INTEGER,
+ uid VARCHAR(200)
+ );"
+ );
+
+ $r11 = q("ALTER TABLE ONLY calendarobjects ADD CONSTRAINT calendarobjects_pkey PRIMARY KEY (id);");
+
+ $r12 = q("CREATE UNIQUE INDEX calendarobjects_ukey ON calendarobjects USING btree (calendarid, uri);");
+
+ $r13 = q("CREATE TABLE calendars (
+ id SERIAL NOT NULL,
+ synctoken INTEGER NOT NULL DEFAULT 1,
+ components VARCHAR(21)
+ );"
+ );
+
+ $r14 = q("ALTER TABLE ONLY calendars ADD CONSTRAINT calendars_pkey PRIMARY KEY (id);");
+
+ $r15 = q("CREATE TABLE calendarinstances (
+ id SERIAL NOT NULL,
+ calendarid INTEGER NOT NULL,
+ principaluri VARCHAR(100),
+ access SMALLINT NOT NULL DEFAULT '1', -- '1 = owner, 2 = read, 3 = readwrite'
+ displayname VARCHAR(100),
+ uri VARCHAR(200),
+ description TEXT,
+ calendarorder INTEGER NOT NULL DEFAULT 0,
+ calendarcolor VARCHAR(10),
+ timezone TEXT,
+ transparent SMALLINT NOT NULL DEFAULT '0',
+ share_href VARCHAR(100),
+ share_displayname VARCHAR(100),
+ share_invitestatus SMALLINT NOT NULL DEFAULT '2' -- '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid'
+ );"
+ );
+
+ $r16 = q("ALTER TABLE ONLY calendarinstances ADD CONSTRAINT calendarinstances_pkey PRIMARY KEY (id);");
+
+ $r17 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_uri ON calendarinstances USING btree (principaluri, uri);");
+
+ $r18 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_calendarid ON calendarinstances USING btree (principaluri, calendarid);");
+
+ $r19 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_share_href ON calendarinstances USING btree (principaluri, share_href);");
+
+ $r20 = q("CREATE TABLE calendarsubscriptions (
+ id SERIAL NOT NULL,
+ uri VARCHAR(200) NOT NULL,
+ principaluri VARCHAR(100) NOT NULL,
+ source TEXT,
+ displayname VARCHAR(100),
+ refreshrate VARCHAR(10),
+ calendarorder INTEGER NOT NULL DEFAULT 0,
+ calendarcolor VARCHAR(10),
+ striptodos SMALLINT NULL,
+ stripalarms SMALLINT NULL,
+ stripattachments SMALLINT NULL,
+ lastmodified INTEGER
+ );"
+ );
+
+ $r21 = q("ALTER TABLE ONLY calendarsubscriptions ADD CONSTRAINT calendarsubscriptions_pkey PRIMARY KEY (id);");
+
+ $r22 = q("CREATE UNIQUE INDEX calendarsubscriptions_ukey ON calendarsubscriptions USING btree (principaluri, uri);");
+
+ $r23 = q("CREATE TABLE calendarchanges (
+ id SERIAL NOT NULL,
+ uri VARCHAR(200) NOT NULL,
+ synctoken INTEGER NOT NULL,
+ calendarid INTEGER NOT NULL,
+ operation SMALLINT NOT NULL DEFAULT 0
+ );"
+ );
+
+ $r24 = q("ALTER TABLE ONLY calendarchanges ADD CONSTRAINT calendarchanges_pkey PRIMARY KEY (id);");
+
+ $r25 = q("CREATE INDEX calendarchanges_calendarid_synctoken_ix ON calendarchanges USING btree (calendarid, synctoken);");
+
+ $r26 = q("CREATE TABLE schedulingobjects (
+ id SERIAL NOT NULL,
+ principaluri VARCHAR(255),
+ calendardata BYTEA,
+ uri VARCHAR(200),
+ lastmodified INTEGER,
+ etag VARCHAR(32),
+ size INTEGER NOT NULL
+ );"
+ );
+
+ $r27 = q("CREATE TABLE locks (
+ id SERIAL NOT NULL,
+ owner VARCHAR(100),
+ timeout INTEGER,
+ created INTEGER,
+ token VARCHAR(100),
+ scope SMALLINT,
+ depth SMALLINT,
+ uri TEXT
+ );"
+ );
+
+ $r28 = q("ALTER TABLE ONLY locks ADD CONSTRAINT locks_pkey PRIMARY KEY (id);");
+
+ $r29 = q("CREATE INDEX locks_token_ix ON locks USING btree (token);");
+
+ $r30 = q("CREATE INDEX locks_uri_ix ON locks USING btree (uri);");
+
+ $r31 = q("CREATE TABLE principals (
+ id SERIAL NOT NULL,
+ uri VARCHAR(200) NOT NULL,
+ email VARCHAR(80),
+ displayname VARCHAR(80)
+ );"
+ );
+
+ $r32 = q("ALTER TABLE ONLY principals ADD CONSTRAINT principals_pkey PRIMARY KEY (id);");
+
+ $r33 = q("CREATE UNIQUE INDEX principals_ukey ON principals USING btree (uri);");
+
+ $r34 = q("CREATE TABLE groupmembers (
+ id SERIAL NOT NULL,
+ principal_id INTEGER NOT NULL,
+ member_id INTEGER NOT NULL
+ );"
+ );
+
+ $r35 = q("ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_pkey PRIMARY KEY (id);");
+
+ $r36 = q("CREATE UNIQUE INDEX groupmembers_ukey ON groupmembers USING btree (principal_id, member_id);");
+
+ $r37 = q("CREATE TABLE propertystorage (
+ id SERIAL NOT NULL,
+ path VARCHAR(1024) NOT NULL,
+ name VARCHAR(100) NOT NULL,
+ valuetype INT,
+ value BYTEA
+ );"
+ );
+
+ $r38 = q("ALTER TABLE ONLY propertystorage ADD CONSTRAINT propertystorage_pkey PRIMARY KEY (id);");
+
+ $r39 = q("CREATE UNIQUE INDEX propertystorage_ukey ON propertystorage (path, name);");
+
+ $r40 = q("CREATE TABLE users (
+ id SERIAL NOT NULL,
+ username VARCHAR(50),
+ digesta1 VARCHAR(32)
+ );"
+ );
+
+ $r41 = q("ALTER TABLE ONLY users ADD CONSTRAINT users_pkey PRIMARY KEY (id);");
+
+ $r42 = q("CREATE UNIQUE INDEX users_ukey ON users USING btree (username);");
+
+ if(
+ $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10
+ && $r11 && $r12 && $r13 && $r14 && $r15 && $r16 && $r17 && $r18 && $r19 && $r20
+ && $r21 && $r22 && $r23 && $r24 && $r25 && $r26 && $r27 && $r28 && $r29 && $r30
+ && $r31 && $r32 && $r33 && $r34 && $r35 && $r36 && $r37 && $r38 && $r39 && $r40
+ && $r41 && $r42
+ )
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ $r1 = q("CREATE TABLE if not exists addressbooks (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ principaluri VARBINARY(255),
+ displayname VARCHAR(255),
+ uri VARBINARY(200),
+ description TEXT,
+ synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1',
+ UNIQUE(principaluri(100), uri(100))
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r2 = q("CREATE TABLE if not exists cards (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ addressbookid INT(11) UNSIGNED NOT NULL,
+ carddata MEDIUMBLOB,
+ uri VARBINARY(200),
+ lastmodified INT(11) UNSIGNED,
+ etag VARBINARY(32),
+ size INT(11) UNSIGNED NOT NULL
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r3 = q("CREATE TABLE if not exists addressbookchanges (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ uri VARBINARY(200) NOT NULL,
+ synctoken INT(11) UNSIGNED NOT NULL,
+ addressbookid INT(11) UNSIGNED NOT NULL,
+ operation TINYINT(1) NOT NULL,
+ INDEX addressbookid_synctoken (addressbookid, synctoken)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r4 = q("CREATE TABLE if not exists calendarobjects (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ calendardata MEDIUMBLOB,
+ uri VARBINARY(200),
+ calendarid INTEGER UNSIGNED NOT NULL,
+ lastmodified INT(11) UNSIGNED,
+ etag VARBINARY(32),
+ size INT(11) UNSIGNED NOT NULL,
+ componenttype VARBINARY(8),
+ firstoccurence INT(11) UNSIGNED,
+ lastoccurence INT(11) UNSIGNED,
+ uid VARBINARY(200),
+ UNIQUE(calendarid, uri),
+ INDEX calendarid_time (calendarid, firstoccurence)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r5 = q("CREATE TABLE if not exists calendars (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ synctoken INTEGER UNSIGNED NOT NULL DEFAULT '1',
+ components VARBINARY(21)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r6 = q("CREATE TABLE if not exists calendarinstances (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ calendarid INTEGER UNSIGNED NOT NULL,
+ principaluri VARBINARY(100),
+ access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite',
+ displayname VARCHAR(100),
+ uri VARBINARY(200),
+ description TEXT,
+ calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ calendarcolor VARBINARY(10),
+ timezone TEXT,
+ transparent TINYINT(1) NOT NULL DEFAULT '0',
+ share_href VARBINARY(100),
+ share_displayname VARCHAR(100),
+ share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid',
+ UNIQUE(principaluri, uri),
+ UNIQUE(calendarid, principaluri),
+ UNIQUE(calendarid, share_href)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r7 = q("CREATE TABLE if not exists calendarchanges (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ uri VARBINARY(200) NOT NULL,
+ synctoken INT(11) UNSIGNED NOT NULL,
+ calendarid INT(11) UNSIGNED NOT NULL,
+ operation TINYINT(1) NOT NULL,
+ INDEX calendarid_synctoken (calendarid, synctoken)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r8 = q("CREATE TABLE if not exists calendarsubscriptions (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ uri VARBINARY(200) NOT NULL,
+ principaluri VARBINARY(100) NOT NULL,
+ source TEXT,
+ displayname VARCHAR(100),
+ refreshrate VARCHAR(10),
+ calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ calendarcolor VARBINARY(10),
+ striptodos TINYINT(1) NULL,
+ stripalarms TINYINT(1) NULL,
+ stripattachments TINYINT(1) NULL,
+ lastmodified INT(11) UNSIGNED,
+ UNIQUE(principaluri, uri)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r9 = q("CREATE TABLE if not exists schedulingobjects (
+ id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ principaluri VARBINARY(255),
+ calendardata MEDIUMBLOB,
+ uri VARBINARY(200),
+ lastmodified INT(11) UNSIGNED,
+ etag VARBINARY(32),
+ size INT(11) UNSIGNED NOT NULL
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r10 = q("CREATE TABLE if not exists locks (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ owner VARCHAR(100),
+ timeout INTEGER UNSIGNED,
+ created INTEGER,
+ token VARBINARY(100),
+ scope TINYINT,
+ depth TINYINT,
+ uri VARBINARY(1000),
+ INDEX(token),
+ INDEX(uri(100))
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r11 = q("CREATE TABLE if not exists principals (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ uri VARBINARY(200) NOT NULL,
+ email VARBINARY(80),
+ displayname VARCHAR(80),
+ UNIQUE(uri)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r12 = q("CREATE TABLE if not exists groupmembers (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ principal_id INTEGER UNSIGNED NOT NULL,
+ member_id INTEGER UNSIGNED NOT NULL,
+ UNIQUE(principal_id, member_id)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r13 = q("CREATE TABLE if not exists propertystorage (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ path VARBINARY(1024) NOT NULL,
+ name VARBINARY(100) NOT NULL,
+ valuetype INT UNSIGNED,
+ value MEDIUMBLOB
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r14 = q("CREATE UNIQUE INDEX path_property ON propertystorage (path(600), name(100));");
+
+ $r15 = q("CREATE TABLE if not exists users (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ username VARBINARY(50),
+ digesta1 VARBINARY(32),
+ UNIQUE(username)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ $r16 = q("CREATE TABLE if not exists calendarinstances (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ calendarid INTEGER UNSIGNED NOT NULL,
+ principaluri VARBINARY(100),
+ access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite',
+ displayname VARCHAR(100),
+ uri VARBINARY(200),
+ description TEXT,
+ calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ calendarcolor VARBINARY(10),
+ timezone TEXT,
+ transparent TINYINT(1) NOT NULL DEFAULT '0',
+ share_href VARBINARY(100),
+ share_displayname VARCHAR(100),
+ share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid',
+ UNIQUE(principaluri, uri),
+ UNIQUE(calendarid, principaluri),
+ UNIQUE(calendarid, share_href)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
+ );
+
+ if($r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10 && $r11 && $r12 && $r13 && $r14 && $r15 && $r16)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ }
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1192.php b/Zotlabs/Update/_1192.php
new file mode 100644
index 000000000..f2445da05
--- /dev/null
+++ b/Zotlabs/Update/_1192.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1192 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE INDEX item_obj_type ON item (obj_type)");
+ }
+ else {
+ $r1 = q("ALTER TABLE item ADD INDEX (obj_type)");
+ }
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1193.php b/Zotlabs/Update/_1193.php
new file mode 100644
index 000000000..267e16da1
--- /dev/null
+++ b/Zotlabs/Update/_1193.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1193 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE INDEX item_uid_unseen ON item (uid, item_unseen)");
+ }
+ else {
+ $r1 = q("ALTER TABLE item ADD INDEX uid_item_unseen (uid, item_unseen)");
+ }
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1194.php b/Zotlabs/Update/_1194.php
new file mode 100644
index 000000000..916723eaa
--- /dev/null
+++ b/Zotlabs/Update/_1194.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1194 {
+function run() {
+ $r = q("select id, resource_id from item where resource_type = 'nwiki'");
+ if($r) {
+ foreach($r as $rv) {
+ $mimetype = get_iconfig($rv['id'],'wiki','mimeType');
+ q("update item set mimetype = '%s' where resource_type = 'nwikipage' and resource_id = '%s'",
+ dbesc($mimetype),
+ dbesc($rv['resource_id'])
+ );
+ }
+ }
+
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1195.php b/Zotlabs/Update/_1195.php
new file mode 100644
index 000000000..248e9a34a
--- /dev/null
+++ b/Zotlabs/Update/_1195.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1195 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE INDEX item_resource_id ON item (resource_id)");
+ }
+ else {
+ $r1 = q("ALTER TABLE item ADD INDEX (resource_id)");
+ }
+
+ if($r1)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1196.php b/Zotlabs/Update/_1196.php
new file mode 100644
index 000000000..720252bf8
--- /dev/null
+++ b/Zotlabs/Update/_1196.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1196 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("CREATE TABLE \"pchan\" (
+ \"pchan_id\" serial NOT NULL,
+ \"pchan_guid\" text NOT NULL,
+ \"pchan_hash\" text NOT NULL,
+ \"pchan_pubkey\" text NOT NULL,
+ \"pchan_prvkey\" text NOT NULL,
+ PRIMARY KEY (\"pchan_id\")
+)");
+
+ $r2 = q("create index \"pchan_guid\" on pchan (\"pchan_guid\")");
+ $r3 = q("create index \"pchan_hash\" on pchan (\"pchan_hash\")");
+
+ if($r1 && $r2 && $r3) {
+ return UPDATE_SUCCESS;
+ }
+ }
+ else {
+ $r1 = q("CREATE TABLE IF NOT EXISTS pchan (
+ pchan_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+ pchan_guid char(191) NOT NULL DEFAULT '',
+ pchan_hash char(191) NOT NULL DEFAULT '',
+ pchan_pubkey text NOT NULL,
+ pchan_prvkey text NOT NULL,
+ PRIMARY KEY (pchan_id),
+ KEY pchan_guid (pchan_guid),
+ KEY pchan_hash (pchan_hash)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
+ if($r1) {
+ return UPDATE_SUCCESS;
+ }
+ }
+
+ return UPDATE_FAILED;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1197.php b/Zotlabs/Update/_1197.php
new file mode 100644
index 000000000..72e4ca59d
--- /dev/null
+++ b/Zotlabs/Update/_1197.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1197 {
+function run() {
+
+ $r = q("select diaspora_meta from item where true limit 1");
+ if($r) {
+ $r = q("ALTER TABLE item DROP diaspora_meta");
+ }
+
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1198.php b/Zotlabs/Update/_1198.php
new file mode 100644
index 000000000..d188c94f6
--- /dev/null
+++ b/Zotlabs/Update/_1198.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1198 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ DROP INDEX item_blocked,
+ DROP INDEX item_unpublished,
+ DROP INDEX item_deleted,
+ DROP INDEX item_delayed,
+ DROP INDEX item_hidden,
+ DROP INDEX item_pending_remove,
+ DROP INDEX item_type
+ ");
+ }
+
+ return UPDATE_SUCCESS;
+}
+
+
+}
diff --git a/Zotlabs/Update/_1199.php b/Zotlabs/Update/_1199.php
new file mode 100644
index 000000000..7ab03b073
--- /dev/null
+++ b/Zotlabs/Update/_1199.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1199 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ DROP INDEX uid,
+ ADD INDEX (item_type)
+ ");
+ }
+
+ return UPDATE_SUCCESS;
+}
+
+
+} \ No newline at end of file
diff --git a/Zotlabs/Update/_1200.php b/Zotlabs/Update/_1200.php
new file mode 100644
index 000000000..9f7bfb152
--- /dev/null
+++ b/Zotlabs/Update/_1200.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1200 {
+function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ DROP INDEX item_type,
+ ADD INDEX uid_item_type (uid, item_type)
+ ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ return UPDATE_SUCCESS;
+ }
+
+}
+
+}
diff --git a/Zotlabs/Update/_1201.php b/Zotlabs/Update/_1201.php
new file mode 100644
index 000000000..920a7401e
--- /dev/null
+++ b/Zotlabs/Update/_1201.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1201 {
+
+ function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ DROP INDEX item_thread_top,
+ ADD INDEX uid_item_thread_top (uid, item_thread_top),
+ ADD INDEX uid_item_blocked (uid, item_blocked),
+ ADD INDEX item_deleted_pending_remove_changed (item_deleted, item_pending_remove, changed)
+ ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ return UPDATE_SUCCESS;
+ }
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1202.php b/Zotlabs/Update/_1202.php
new file mode 100644
index 000000000..c9ccd157b
--- /dev/null
+++ b/Zotlabs/Update/_1202.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1202 {
+
+ function run() {
+
+ // empty update in order to make the DB_UPDATE_VERSION equal to the current maximum update function
+ // rather than being one greater than the last known update
+
+ return UPDATE_SUCCESS;
+
+ }
+}
diff --git a/Zotlabs/Update/_1203.php b/Zotlabs/Update/_1203.php
new file mode 100644
index 000000000..2968d209d
--- /dev/null
+++ b/Zotlabs/Update/_1203.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1203 {
+
+ function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ DROP INDEX item_wall,
+ DROP INDEX item_starred,
+ DROP INDEX item_retained,
+ ADD INDEX uid_item_wall (uid, item_wall),
+ ADD INDEX uid_item_starred (uid, item_starred),
+ ADD INDEX uid_item_retained (uid, item_retained)
+ ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ return UPDATE_SUCCESS;
+ }
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1204.php b/Zotlabs/Update/_1204.php
new file mode 100644
index 000000000..0b9204b9b
--- /dev/null
+++ b/Zotlabs/Update/_1204.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1204 {
+
+ function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE poll ADD poll_guid text NOT NULL");
+ $r2 = q("create index \"poll_guid_idx\" on poll (\"poll_guid\")");
+ $r3 = q("ALTER TABLE poll_elm ADD pelm_guid text NOT NULL");
+ $r4 = q("create index \"pelm_guid_idx\" on poll_elm (\"pelm_guid\")");
+ $r5 = q("ALTER TABLE vote ADD vote_guid text NOT NULL");
+ $r6 = q("create index \"vote_guid_idx\" on vote (\"vote_guid\")");
+
+ $r = ($r1 && $r2 && $r3 && $r4 && $r5 && $r6);
+ }
+ else {
+ $r1 = q("ALTER TABLE `poll` ADD `poll_guid` VARCHAR(191) NOT NULL, ADD INDEX `poll_guid` (`poll_guid`) ");
+ $r2 = q("ALTER TABLE `poll_elm` ADD `pelm_guid` VARCHAR(191) NOT NULL, ADD INDEX `pelm_guid` (`pelm_guid`) ");
+ $r3 = q("ALTER TABLE `vote` ADD `vote_guid` VARCHAR(191) NOT NULL, ADD INDEX `vote_guid` (`vote_guid`) ");
+
+ $r = ($r1 && $r2 && $r3);
+ }
+
+ if($r)
+ return UPDATE_SUCCESS;
+
+ return UPDATE_FAILED;
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1205.php b/Zotlabs/Update/_1205.php
new file mode 100644
index 000000000..968833726
--- /dev/null
+++ b/Zotlabs/Update/_1205.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1205 {
+
+ function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+
+ q("ALTER TABLE item DROP INDEX title");
+ q("ALTER TABLE item DROP INDEX body");
+ q("ALTER TABLE item DROP INDEX allow_cid");
+ q("ALTER TABLE item DROP INDEX allow_gid");
+ q("ALTER TABLE item DROP INDEX deny_cid");
+ q("ALTER TABLE item DROP INDEX deny_gid");
+ q("ALTER TABLE item DROP INDEX item_flags");
+ q("ALTER TABLE item DROP INDEX item_restrict");
+ q("ALTER TABLE item DROP INDEX aid");
+
+ $r = q("ALTER TABLE item
+ DROP INDEX item_private,
+ ADD INDEX uid_item_private (uid, item_private),
+ ADD INDEX item_wall (item_wall),
+ ADD INDEX item_pending_remove_changed (item_pending_remove, changed)
+ ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ return UPDATE_SUCCESS;
+ }
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1206.php b/Zotlabs/Update/_1206.php
new file mode 100644
index 000000000..351d53ff6
--- /dev/null
+++ b/Zotlabs/Update/_1206.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1206 {
+
+ function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ ADD INDEX uid_resource_type (uid, resource_type)
+ ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ return UPDATE_SUCCESS;
+ }
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1207.php b/Zotlabs/Update/_1207.php
new file mode 100644
index 000000000..f53bc46ae
--- /dev/null
+++ b/Zotlabs/Update/_1207.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1207 {
+
+ function run() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_MYSQL) {
+ $r = q("ALTER TABLE item
+ DROP INDEX resource_type
+ ");
+
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+ }
+ else {
+ return UPDATE_SUCCESS;
+ }
+
+ }
+
+}
diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php
index 63033ce5e..a27edb73d 100644
--- a/Zotlabs/Web/HTTPSig.php
+++ b/Zotlabs/Web/HTTPSig.php
@@ -137,7 +137,22 @@ class HTTPSig {
}
}
- logger('Content_Valid: ' . $result['content_valid']);
+
+ if(in_array('x-zot-digest',$signed_headers)) {
+ $result['content_signed'] = true;
+ $digest = explode('=', $headers['x-zot-digest']);
+ if($digest[0] === 'SHA-256')
+ $hashalg = 'sha256';
+ if($digest[0] === 'SHA-512')
+ $hashalg = 'sha512';
+
+ // The explode operation will have stripped the '=' padding, so compare against unpadded base64
+ if(rtrim(base64_encode(hash($hashalg,$_POST['data'],true)),'=') === $digest[1]) {
+ $result['content_valid'] = true;
+ }
+ }
+
+ logger('Content_Valid: ' . (($result['content_valid']) ? 'true' : 'false'));
return $result;
@@ -194,8 +209,8 @@ class HTTPSig {
. '",headers="' . $x['headers'] . '",signature="' . $x['signature'] . '"';
if($crypt_key) {
- $x = crypto_encapsulate($headerval,$crypt_key,$crypt_alg);
- $headerval = 'iv="' . $x['iv'] . '",key="' . $x['key'] . '",alg="' . $x['alg'] . '",data="' . $x['data'];
+ $x = crypto_encapsulate($headerval,$crypt_key,$crypt_algo);
+ $headerval = 'iv="' . $x['iv'] . '",key="' . $x['key'] . '",alg="' . $x['alg'] . '",data="' . $x['data'] . '"';
}
if($auth) {
diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php
index a6b780cdc..fb551e36f 100644
--- a/Zotlabs/Web/Router.php
+++ b/Zotlabs/Web/Router.php
@@ -38,10 +38,9 @@ class Router {
/**
* @brief Router constructor.
*
- * @param[in,out] App &$a
* @throws Exception module not found
*/
- function __construct(&$a) {
+ function __construct() {
$module = \App::$module;
$modname = "Zotlabs\\Module\\" . ucfirst($module);
@@ -179,9 +178,8 @@ class Router {
/**
* @brief
*
- * @param[in,out] App &$a
*/
- function Dispatch(&$a) {
+ function Dispatch() {
/**
* Call module functions
diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php
index 9e6af8c4c..5183fb2b0 100644
--- a/Zotlabs/Web/WebServer.php
+++ b/Zotlabs/Web/WebServer.php
@@ -58,11 +58,10 @@ class WebServer {
if((x($_GET,'zid')) && (! \App::$install)) {
\App::$query_string = strip_zids(\App::$query_string);
if(! local_channel()) {
- if ($_SESSION['my_address']!=$_GET['zid'])
- {
- $_SESSION['my_address'] = $_GET['zid'];
- $_SESSION['authenticated'] = 0;
- }
+ if ($_SESSION['my_address']!=$_GET['zid']) {
+ $_SESSION['my_address'] = $_GET['zid'];
+ $_SESSION['authenticated'] = 0;
+ }
zid_init();
}
}
@@ -107,9 +106,43 @@ class WebServer {
check_config();
}
- //nav_set_selected('nothing');
+ $this->create_channel_links();
- $Router = new Router($a);
+ $Router = new Router();
+
+ $this->initialise_content();
+
+ $Router->Dispatch();
+
+ $this->set_homebase();
+
+ // now that we've been through the module content, see if the page reported
+ // a permission problem and if so, a 403 response would seem to be in order.
+
+ if(is_array($_SESSION['sysmsg']) && stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
+ }
+
+ call_hooks('page_end', \App::$page['content']);
+
+ construct_page();
+
+ killme();
+ }
+
+
+ private function initialise_content() {
+
+ /* initialise content region */
+
+ if(! x(\App::$page, 'content'))
+ \App::$page['content'] = '';
+
+ call_hooks('page_content_top', \App::$page['content']);
+
+ }
+
+ private function create_channel_links() {
/* Initialise the Link: response header if this is a channel page.
* This cannot be done inside the channel module because some protocol
@@ -135,26 +168,17 @@ class WebServer {
\App::$channel_links = $x['channel_links'];
header('Link: ' . \App::get_channel_links());
}
+ }
-
-
- /* initialise content region */
-
- if(! x(\App::$page, 'content'))
- \App::$page['content'] = '';
-
- call_hooks('page_content_top', \App::$page['content']);
-
-
- $Router->Dispatch($a);
-
+ private function set_homebase() {
// If you're just visiting, let javascript take you home
if(x($_SESSION, 'visitor_home')) {
$homebase = $_SESSION['visitor_home'];
- } elseif(local_channel()) {
+ }
+ elseif(local_channel()) {
$homebase = z_root() . '/channel/' . \App::$channel['channel_address'];
}
@@ -162,17 +186,8 @@ class WebServer {
\App::$page['content'] .= '<script>var homebase = "' . $homebase . '";</script>';
}
- // now that we've been through the module content, see if the page reported
- // a permission problem and if so, a 403 response would seem to be in order.
-
- if(is_array($_SESSION['sysmsg']) && stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
- header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
- }
+ }
- call_hooks('page_end', \App::$page['content']);
- construct_page();
- killme();
- }
}
diff --git a/Zotlabs/Widget/Affinity.php b/Zotlabs/Widget/Affinity.php
index a3e5b5c07..4fb2874ae 100644
--- a/Zotlabs/Widget/Affinity.php
+++ b/Zotlabs/Widget/Affinity.php
@@ -9,9 +9,11 @@ class Affinity {
if(! local_channel())
return '';
+ $default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : 0);
+ $default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : 99);
- $cmin = ((x($_REQUEST,'cmin')) ? intval($_REQUEST['cmin']) : 0);
- $cmax = ((x($_REQUEST,'cmax')) ? intval($_REQUEST['cmax']) : 99);
+ $cmin = ((x($_REQUEST,'cmin')) ? intval($_REQUEST['cmin']) : $default_cmin);
+ $cmax = ((x($_REQUEST,'cmax')) ? intval($_REQUEST['cmax']) : $default_cmax);
if(feature_enabled(local_channel(),'affinity')) {
diff --git a/Zotlabs/Widget/Forums.php b/Zotlabs/Widget/Forums.php
index 91b987746..f65a639ff 100644
--- a/Zotlabs/Widget/Forums.php
+++ b/Zotlabs/Widget/Forums.php
@@ -11,8 +11,8 @@ class Forums {
$o = '';
- if(is_array($arr) && array_key_exists('limit',$arr))
- $limit = " limit " . intval($limit) . " ";
+ if(is_array($arr) && array_key_exists('limit',$arr) && intval($arr['limit']) >= 0)
+ $limit = " limit " . intval($arr['limit']) . " ";
else
$limit = '';
@@ -64,13 +64,16 @@ class Forums {
// There also should be a way to update this via ajax.
for($x = 0; $x < count($r1); $x ++) {
- $r = q("select sum(item_unseen) as unseen from item where owner_xchan = '%s' and uid = %d and item_unseen = 1 $perms_sql ",
+ $r = q("select sum(item_unseen) as unseen from item
+ where uid = %d and owner_xchan = '%s' and item_unseen = 1 $perms_sql ",
dbesc($r1[$x]['xchan_hash']),
intval(local_channel())
);
if($r)
$r1[$x]['unseen'] = $r[0]['unseen'];
+ }
+
/**
* @FIXME
* This SQL makes the counts correct when you get forum posts arriving from different routes/sources
@@ -79,21 +82,19 @@ class Forums {
* It may make more sense in that query to look for the mention in the body rather than another join,
* but that makes it very inefficient.
*
- $r = q("select sum(item_unseen) as unseen from item left join term on oid = id where otype = %d and owner_xchan != '%s' and item.uid = %d and url = '%s' and ttype = %d $perms_sql ",
- intval(TERM_OBJ_POST),
- dbesc($r1[$x]['xchan_hash']),
- intval(local_channel()),
- dbesc($r1[$x]['xchan_url']),
- intval(TERM_MENTION)
- );
- if($r)
- $r1[$x]['unseen'] = ((array_key_exists('unseen',$r1[$x])) ? $r1[$x]['unseen'] + $r[0]['unseen'] : $r[0]['unseen']);
+ * $r = q("select sum(item_unseen) as unseen from item left join term on oid = id where otype = %d and owner_xchan != '%s' and item.uid = %d and url = '%s' and ttype = %d $perms_sql ",
+ * intval(TERM_OBJ_POST),
+ * dbesc($r1[$x]['xchan_hash']),
+ * intval(local_channel()),
+ * dbesc($r1[$x]['xchan_url']),
+ * intval(TERM_MENTION)
+ * );
+ * if($r)
+ * $r1[$x]['unseen'] = ((array_key_exists('unseen',$r1[$x])) ? $r1[$x]['unseen'] + $r[0]['unseen'] : $r[0]['unseen']);
*
* end @FIXME
*/
- }
-
if($r1) {
$o .= '<div class="widget">';
$o .= '<h3>' . t('Forums') . '</h3><ul class="nav nav-pills flex-column">';
diff --git a/Zotlabs/Widget/Newmember.php b/Zotlabs/Widget/Newmember.php
new file mode 100644
index 000000000..cdb70e23d
--- /dev/null
+++ b/Zotlabs/Widget/Newmember.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Zotlabs\Widget;
+
+class Newmember {
+
+ function widget($arr) {
+
+ if(! local_channel())
+ return EMPTY_STR;
+
+ $c = \App::get_channel();
+ if(! $c)
+ return EMPTY_STR;
+
+
+ $a = \App::get_account();
+ if(! $a)
+ return EMPTY_STR;
+
+
+ if(datetime_convert('UTC','UTC',$a['account_created']) < datetime_convert('UTC','UTC', 'now - 60 days'))
+ return EMPTY_STR;
+
+ // This could be a new account that was used to clone a very old channel
+
+ $ob = \App::get_observer();
+ if($ob && array_key_exists('xchan_name_date',$ob) && $ob['xchan_name_date'] < datetime_convert('UTC','UTC','now - 60 days'))
+ return EMPTY_STR;
+
+
+ $options = [
+ t('Profile Creation'),
+ [
+ 'profile_photo' => t('Upload profile photo'),
+ 'cover_photo' => t('Upload cover photo'),
+ 'profiles' => t('Edit your profile'),
+ ],
+
+ t('Find and Connect with others'),
+ [
+ 'directory' => t('View the directory'),
+ 'directory?f=&suggest=1' => t('View friend suggestions'),
+ 'connections' => t('Manage your connections'),
+ ],
+
+ t('Communicate'),
+ [
+ 'channel/' . $channel['channel_address'] => t('View your channel homepage'),
+ 'network' => t('View your network stream'),
+ ],
+
+ t('Miscellaneous'),
+ [
+ 'settings' => t('Settings'),
+ 'help' => t('Documentation'),
+ ]
+ ];
+
+ $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
+ $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+
+
+ // hack to put this in the correct spot of the array
+
+ if($site_firehose || $net_firehose) {
+ $options[5]['pubstream'] = t('View public stream');
+ }
+
+ $o = replace_macros(get_markup_template('new_member.tpl'), [
+ '$title' => t('New Member Links'),
+ '$options' => $options
+
+ ]);
+
+ return $o;
+
+ }
+
+}
+
+
+
diff --git a/Zotlabs/Widget/Notifications.php b/Zotlabs/Widget/Notifications.php
index 5a0c1f3d5..f2619c5cf 100644
--- a/Zotlabs/Widget/Notifications.php
+++ b/Zotlabs/Widget/Notifications.php
@@ -23,7 +23,8 @@ class Notifications {
'label' => t('Mark all notifications read')
],
'filter' => [
- 'label' => t('Show new posts only')
+ 'posts_label' => t('Show new posts only'),
+ 'name_label' => t('Filter by name')
]
];
@@ -41,7 +42,8 @@ class Notifications {
'label' => t('Mark all notifications seen')
],
'filter' => [
- 'label' => t('Show new posts only')
+ 'posts_label' => t('Show new posts only'),
+ 'name_label' => t('Filter by name')
]
];
@@ -67,7 +69,7 @@ class Notifications {
'label' => t('New Events'),
'title' => t('New Events Notifications'),
'viewall' => [
- 'url' => 'mail/combined',
+ 'url' => 'events',
'label' => t('View events')
],
'markall' => [
@@ -136,7 +138,8 @@ class Notifications {
'label' => t('Mark all notifications seen')
],
'filter' => [
- 'label' => t('Show new posts only')
+ 'posts_label' => t('Show new posts only'),
+ 'name_label' => t('Filter by name')
]
];
}
@@ -145,7 +148,8 @@ class Notifications {
'$module' => \App::$module,
'$notifications' => $notifications,
'$no_notifications' => t('Sorry, you have got no notifications at the moment'),
- '$loading' => t('Loading')
+ '$loading' => t('Loading'),
+ '$startpage' => get_pconfig(local_channel(), 'system', 'startpage')
));
return $o;
diff --git a/Zotlabs/Widget/Settings_menu.php b/Zotlabs/Widget/Settings_menu.php
index e15ed96a5..455fdcb9b 100644
--- a/Zotlabs/Widget/Settings_menu.php
+++ b/Zotlabs/Widget/Settings_menu.php
@@ -54,7 +54,7 @@ class Settings_menu {
}
$tabs[] = array(
- 'label' => t('Feature/Addon settings'),
+ 'label' => t('Addon settings'),
'url' => z_root().'/settings/featured',
'selected' => ((argv(1) === 'featured') ? 'active' : ''),
);
@@ -79,7 +79,7 @@ class Settings_menu {
'selected' => ''
);
- if(get_account_techlevel() > 0) {
+ if(feature_enabled(local_channel(),'oauth_clients')) {
$tabs[] = array(
'label' => t('Connected apps'),
'url' => z_root() . '/settings/oauth',
@@ -87,7 +87,7 @@ class Settings_menu {
);
}
- if(get_account_techlevel() > 2) {
+ if(feature_enabled(local_channel(),'access_tokens')) {
$tabs[] = array(
'label' => t('Guest Access Tokens'),
'url' => z_root() . '/settings/tokens',
diff --git a/Zotlabs/Zot/DReport.php b/Zotlabs/Zot/DReport.php
deleted file mode 100644
index c90f4f670..000000000
--- a/Zotlabs/Zot/DReport.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-namespace Zotlabs\Zot;
-
-class DReport {
-
- private $location;
- private $sender;
- private $recipient;
- private $message_id;
- private $status;
- private $date;
-
- function __construct($location,$sender,$recipient,$message_id,$status = 'deliver') {
- $this->location = $location;
- $this->sender = $sender;
- $this->recipient = $recipient;
- $this->message_id = $message_id;
- $this->status = $status;
- $this->date = datetime_convert();
- }
-
- function update($status) {
- $this->status = $status;
- $this->date = datetime_convert();
- }
-
- function addto_recipient($name) {
- $this->recipient = $this->recipient . ' ' . $name;
- }
-
- function addto_update($status) {
- $this->status = $this->status . ' ' . $status;
- }
-
-
- function set($arr) {
- $this->location = $arr['location'];
- $this->sender = $arr['sender'];
- $this->recipient = $arr['recipient'];
- $this->message_id = $arr['message_id'];
- $this->status = $arr['status'];
- $this->date = $arr['date'];
- }
-
- function get() {
- return array(
- 'location' => $this->location,
- 'sender' => $this->sender,
- 'recipient' => $this->recipient,
- 'message_id' => $this->message_id,
- 'status' => $this->status,
- 'date' => $this->date
- );
- }
-}
diff --git a/Zotlabs/Zot/Verify.php b/Zotlabs/Zot/Verify.php
deleted file mode 100644
index 7abe38d17..000000000
--- a/Zotlabs/Zot/Verify.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Zotlabs\Zot;
-
-
-class Verify {
-
- function create($type,$channel_id,$token,$meta) {
- return q("insert into verify ( vtype, channel, token, meta, created ) values ( '%s', %d, '%s', '%s', '%s' )",
- dbesc($type),
- intval($channel_id),
- dbesc($token),
- dbesc($meta),
- dbesc(datetime_convert())
- );
- }
-
- function match($type,$channel_id,$token,$meta) {
- $r = q("select id from verify where vtype = '%s' and channel = %d and token = '%s' and meta = '%s' limit 1",
- dbesc($type),
- intval($channel_id),
- dbesc($token),
- dbesc($meta)
- );
- if($r) {
- q("delete from verify where id = %d",
- intval($r[0]['id'])
- );
- return true;
- }
- return false;
- }
-
- function get_meta($type,$channel_id,$token) {
- $r = q("select id, meta from verify where vtype = '%s' and channel = %d and token = '%s' limit 1",
- dbesc($type),
- intval($channel_id),
- dbesc($token)
- );
- if($r) {
- q("delete from verify where id = %d",
- intval($r[0]['id'])
- );
- return $r[0]['meta'];
- }
- return false;
- }
-
- /**
- * @brief Purge entries of a verify-type older than interval.
- *
- * @param string $type Verify type
- * @param string $interval SQL compatible time interval
- */
- function purge($type, $interval) {
- q("delete from verify where vtype = '%s' and created < %s - INTERVAL %s",
- dbesc($type),
- db_utcnow(),
- db_quoteinterval($interval)
- );
- }
-
-} \ No newline at end of file
diff --git a/app/articles.apd b/app/articles.apd
index eec9cda0a..5a9f17e0f 100644
--- a/app/articles.apd
+++ b/app/articles.apd
@@ -1,6 +1,6 @@
-version: 1.1
+version: 1.2
url: $baseurl/articles/$nick
name: Articles
requires: local_channel, articles
photo: icon:file-text-o
-categories: Productivity
+categories: nav_featured_app, Productivity
diff --git a/app/cards.apd b/app/cards.apd
index 047aaeac9..8e2762ff8 100644
--- a/app/cards.apd
+++ b/app/cards.apd
@@ -3,4 +3,4 @@ url: $baseurl/cards/$nick
name: Cards
requires: local_channel, cards
photo: icon:list
-categories: Productivity
+categories: nav_featured_app, Productivity
diff --git a/app/pubstream.apd b/app/pubstream.apd
index ebfcf38b0..ce9997126 100644
--- a/app/pubstream.apd
+++ b/app/pubstream.apd
@@ -1,6 +1,6 @@
-version: 2
+version: 2.2
url: $baseurl/pubstream
-requires: config:disable_discover_tab=0
+requires: public_stream
name: Public Stream
photo: icon:globe
-categories: Social
+categories: Social, nav_featured_app
diff --git a/app/webpages.apd b/app/webpages.apd
index b00e55cc4..46c6cdb5d 100644
--- a/app/webpages.apd
+++ b/app/webpages.apd
@@ -3,4 +3,4 @@ url: $baseurl/webpages/$nick
requires: local_channel, webpages
name: Webpages
photo: icon:newspaper-o
-categories: Productivity
+categories: nav_featured_app, Productivity
diff --git a/app/wiki.apd b/app/wiki.apd
index 1110f0cc4..48fcbe0c1 100644
--- a/app/wiki.apd
+++ b/app/wiki.apd
@@ -3,4 +3,4 @@ url: $baseurl/wiki/$nick
requires: local_channel, wiki
name: Wiki
photo: icon:pencil-square-o
-categories: Productivity
+categories: nav_featured_app, Productivity
diff --git a/boot.php b/boot.php
index a62956c39..a1d53ce9d 100755
--- a/boot.php
+++ b/boot.php
@@ -38,7 +38,6 @@ require_once('include/datetime.php');
require_once('include/language.php');
require_once('include/nav.php');
require_once('include/permissions.php');
-require_once('library/Mobile_Detect/Mobile_Detect.php');
require_once('include/features.php');
require_once('include/taxonomy.php');
require_once('include/channel.php');
@@ -48,12 +47,12 @@ require_once('include/zid.php');
require_once('include/xchan.php');
require_once('include/hubloc.php');
require_once('include/attach.php');
+require_once('include/bbcode.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
-define ( 'STD_VERSION', '3.0.1' );
+define ( 'STD_VERSION', '3.2' );
define ( 'ZOT_REVISION', '1.3' );
-
-define ( 'DB_UPDATE_VERSION', 1198 );
+define ( 'DB_UPDATE_VERSION', 1207 );
define ( 'PROJECT_BASE', __DIR__ );
@@ -65,6 +64,7 @@ define ( 'PROJECT_BASE', __DIR__ );
* This can be used in HTML and JavaScript where needed a line break.
*/
define ( 'EOL', '<br>' . "\r\n" );
+define ( 'EMPTY_STR', '' );
define ( 'ATOM_TIME', 'Y-m-d\\TH:i:s\\Z' ); // aka ISO 8601 "Zulu"
define ( 'TEMPLATE_BUILD_PATH', 'store/[data]/smarty3' );
@@ -83,8 +83,6 @@ define ( 'DIRECTORY_FALLBACK_MASTER', 'https://gravizot.de');
$DIRECTORY_FALLBACK_SERVERS = array(
'https://hubzilla.zottel.net',
- 'https://my.federated.social',
- //'https://hubzilla.nl',
'https://gravizot.de'
);
@@ -660,13 +658,6 @@ function sys_boot() {
}
-/**
- * @brief Reverse the effect of magic_quotes_gpc if it is enabled.
- *
- * Please disable magic_quotes_gpc so we don't have to do this.
- * See http://php.net/manual/en/security.magicquotes.disabling.php
- *
- */
function startup() {
error_reporting(E_ERROR | E_WARNING | E_PARSE);
@@ -683,22 +674,6 @@ function startup() {
// Disable transparent Session ID support
@ini_set('session.use_trans_sid', 0);
}
-
- if (get_magic_quotes_gpc()) {
- $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
- while (list($key, $val) = each($process)) {
- foreach ($val as $k => $v) {
- unset($process[$key][$k]);
- if (is_array($v)) {
- $process[$key][stripslashes($k)] = $v;
- $process[] = &$process[$key][stripslashes($k)];
- } else {
- $process[$key][stripslashes($k)] = stripslashes($v);
- }
- }
- }
- unset($process);
- }
}
@@ -786,9 +761,7 @@ class App {
public static $theme_info = array();
public static $is_sys = false;
public static $nav_sel;
- public static $is_mobile = false;
- public static $is_tablet = false;
- public static $comanche;
+ public static $comanche;
public static $channel_links;
@@ -959,14 +932,6 @@ class App {
self::$pager['total'] = 0;
/*
- * Detect mobile devices
- */
-
- $mobile_detect = new Mobile_Detect();
- self::$is_mobile = $mobile_detect->isMobile();
- self::$is_tablet = $mobile_detect->isTablet();
-
- /*
* register template engines
*/
@@ -1012,7 +977,7 @@ class App {
self::$baseurl = $url;
- if($parsed) {
+ if($parsed !== false) {
self::$scheme = $parsed['scheme'];
self::$hostname = $parsed['host'];
@@ -1448,58 +1413,10 @@ function check_config() {
$x = new \Zotlabs\Lib\DB_Upgrade(DB_UPDATE_VERSION);
- /**
- *
- * Synchronise plugins:
- *
- * App::$config['system']['addon'] contains a comma-separated list of names
- * of plugins/addons which are used on this system.
- * Go through the database list of already installed addons, and if we have
- * an entry, but it isn't in the config list, call the unload procedure
- * and mark it uninstalled in the database (for now we'll remove it).
- * Then go through the config list and if we have a plugin that isn't installed,
- * call the install procedure and add it to the database.
- *
- */
-
- $r = q("SELECT * FROM addon WHERE installed = 1");
- if($r)
- $installed = $r;
- else
- $installed = array();
-
- $plugins = get_config('system', 'addon');
- $plugins_arr = array();
-
- if($plugins)
- $plugins_arr = explode(',', str_replace(' ', '', $plugins));
-
- App::$plugins = $plugins_arr;
-
- $installed_arr = array();
-
- if(count($installed)) {
- foreach($installed as $i) {
- if(! in_array($i['aname'], $plugins_arr)) {
- unload_plugin($i['aname']);
- }
- else {
- $installed_arr[] = $i['aname'];
- }
- }
- }
-
- if(count($plugins_arr)) {
- foreach($plugins_arr as $p) {
- if(! in_array($p, $installed_arr)) {
- load_plugin($p);
- }
- }
- }
+ plugins_sync();
load_hooks();
-
check_for_new_perms();
check_cron_broken();
@@ -1765,6 +1682,31 @@ function remote_channel() {
return false;
}
+
+function can_view_public_stream() {
+
+ if(observer_prohibited(true)) {
+ return false;
+ }
+
+ if(! (intval(get_config('system','open_pubstream',1)))) {
+ if(! get_observer_hash()) {
+ return false;
+ }
+ }
+
+ $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
+ $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+
+ if(! ($site_firehose || $net_firehose)) {
+ return false;
+ }
+
+ return true;
+
+}
+
+
/**
* @brief Show an error or alert text on next page load.
*
@@ -2009,7 +1951,7 @@ function build_querystring($params, $name = null) {
}
-/*
+/**
* @brief Much better way of dealing with c-style args.
*/
function argc() {
@@ -2030,6 +1972,8 @@ function dba_timer() {
/**
* @brief Returns xchan_hash from the observer.
*
+ * Observer can be a local or remote channel.
+ *
* @return string xchan_hash from observer, otherwise empty string if no observer
*/
function get_observer_hash() {
@@ -2040,7 +1984,6 @@ function get_observer_hash() {
return '';
}
-
/**
* @brief Returns the complete URL of the current page, e.g.: http(s)://something.com/network
*
@@ -2243,22 +2186,6 @@ function construct_page() {
}
}
- if(App::$is_mobile || App::$is_tablet) {
- if(isset($_SESSION['show_mobile']) && !$_SESSION['show_mobile']) {
- $link = z_root() . '/toggle_mobile?f=&address=' . curPageURL();
- }
- else {
- $link = z_root() . '/toggle_mobile?f=&off=1&address=' . curPageURL();
- }
- if ((isset($_SESSION) && $_SESSION['mobile_theme'] !='' && $_SESSION['mobile_theme'] !='---' ) ||
- (isset(App::$config['system']['mobile_theme']) && !isset($_SESSION['mobile_theme']))) {
- App::$page['footer'] .= replace_macros(get_markup_template("toggle_mobile_footer.tpl"), array(
- '$toggle_link' => $link,
- '$toggle_text' => t('toggle mobile')
- ));
- }
- }
-
$page = App::$page;
$profile = App::$profile;
diff --git a/composer.json b/composer.json
index d35548f94..f89fb15b2 100644
--- a/composer.json
+++ b/composer.json
@@ -36,15 +36,17 @@
"league/html-to-markdown": "^4.4",
"pear/text_languagedetect": "^1.0",
"commerceguys/intl": "~0.7",
- "lukasreschke/id3parser": "^0.0.1"
+ "lukasreschke/id3parser": "^0.0.1",
+ "smarty/smarty": "~3.1"
},
"require-dev" : {
"php" : ">=7.0",
- "phpunit/phpunit" : "^6.1",
+ "phpunit/phpunit" : "~6.4.4",
"behat/behat" : "@stable",
"behat/mink-extension": "@stable",
"behat/mink-goutte-driver": "@stable",
- "php-mock/php-mock-phpunit": "^2.0"
+ "php-mock/php-mock-phpunit": "^2.0",
+ "phpunit/dbunit": "^3.0"
},
"autoload" : {
"psr-4" : {
diff --git a/composer.lock b/composer.lock
index bcf6b41b4..8ec0857f1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "9c45792f04ea3e30f312f5eef0bdad86",
+ "content-hash": "73ca170baa6ded94a989b8a1066e6a98",
"packages": [
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697"
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/8856aed1a98d6da596ae3f9b8095b5c7a1581697",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/d158878425392fe5a0cc34f15dbaf46315ae0ed9",
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9",
"shasum": ""
},
"require": {
@@ -27,12 +27,14 @@
"aws/aws-sdk-php": "~2.8",
"firebase/php-jwt": "~2.2",
"mongodb/mongodb": "^1.1",
+ "phpunit/phpunit": "^4.0",
"predis/predis": "dev-master",
"thobbs/phpcassa": "dev-master"
},
"suggest": {
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~1.1 is required to use MondoDB storage",
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage",
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage"
},
@@ -60,7 +62,7 @@
"oauth",
"oauth2"
],
- "time": "2017-01-06T23:20:00+00:00"
+ "time": "2017-11-15T01:41:02+00:00"
},
{
"name": "commerceguys/intl",
@@ -155,16 +157,16 @@
},
{
"name": "league/html-to-markdown",
- "version": "4.4.1",
+ "version": "4.6.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186"
+ "reference": "3af14d8f44838257a75822819784e83819b34e2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/82ea375b5b2b1da1da222644c0565c695bf88186",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186",
+ "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/3af14d8f44838257a75822819784e83819b34e2e",
+ "reference": "3af14d8f44838257a75822819784e83819b34e2e",
"shasum": ""
},
"require": {
@@ -183,7 +185,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.5-dev"
+ "dev-master": "4.7-dev"
}
},
"autoload": {
@@ -215,7 +217,7 @@
"html",
"markdown"
],
- "time": "2017-03-16T00:45:59+00:00"
+ "time": "2018-01-07T19:45:06+00:00"
},
{
"name": "lukasreschke/id3parser",
@@ -643,16 +645,16 @@
},
{
"name": "sabre/vobject",
- "version": "4.1.2",
+ "version": "4.1.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/vobject.git",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/df9916813d1d83e4f761c4cba13361ee74196fac",
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac",
"shasum": ""
},
"require": {
@@ -661,7 +663,7 @@
"sabre/xml": ">=1.5 <3.0"
},
"require-dev": {
- "phpunit/phpunit": "*",
+ "phpunit/phpunit": "> 4.8, <6.0.0",
"sabre/cs": "^1.0.0"
},
"suggest": {
@@ -736,7 +738,7 @@
"xCal",
"xCard"
],
- "time": "2016-12-06T04:14:09+00:00"
+ "time": "2017-10-18T08:29:40+00:00"
},
{
"name": "sabre/xml",
@@ -803,16 +805,16 @@
},
{
"name": "simplepie/simplepie",
- "version": "1.5",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/simplepie/simplepie.git",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab"
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
"shasum": ""
},
"require": {
@@ -859,25 +861,78 @@
"rss"
],
"support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.5",
+ "source": "https://github.com/simplepie/simplepie/tree/1.5.1",
"issues": "https://github.com/simplepie/simplepie/issues"
},
- "time": "2017-04-17T07:29:31+00:00"
+ "time": "2017-11-12T02:03:34+00:00"
+ },
+ {
+ "name": "smarty/smarty",
+ "version": "v3.1.31",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/smarty-php/smarty.git",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c7d42e4a327c402897dd587871434888fde1e7a9",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "libs/bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Monte Ohrt",
+ "email": "monte@ohrt.com"
+ },
+ {
+ "name": "Uwe Tews",
+ "email": "uwe.tews@googlemail.com"
+ },
+ {
+ "name": "Rodney Rehm",
+ "email": "rodney.rehm@medialize.de"
+ }
+ ],
+ "description": "Smarty - the compiling PHP template engine",
+ "homepage": "http://www.smarty.net",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2016-12-14T21:57:25+00:00"
}
],
"packages-dev": [
{
"name": "behat/behat",
- "version": "v3.4.1",
+ "version": "v3.4.3",
"source": {
"type": "git",
"url": "https://github.com/Behat/Behat.git",
- "reference": "cb51d4b0b11ea6d3897f3589a871a63a33632692"
+ "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Behat/zipball/cb51d4b0b11ea6d3897f3589a871a63a33632692",
- "reference": "cb51d4b0b11ea6d3897f3589a871a63a33632692",
+ "url": "https://api.github.com/repos/Behat/Behat/zipball/d60b161bff1b95ec4bb80bb8cb210ccf890314c2",
+ "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2",
"shasum": ""
},
"require": {
@@ -887,18 +942,18 @@
"ext-mbstring": "*",
"php": ">=5.3.3",
"psr/container": "^1.0",
- "symfony/class-loader": "~2.1||~3.0",
- "symfony/config": "~2.3||~3.0",
- "symfony/console": "~2.5||~3.0",
- "symfony/dependency-injection": "~2.1||~3.0",
- "symfony/event-dispatcher": "~2.1||~3.0",
- "symfony/translation": "~2.3||~3.0",
- "symfony/yaml": "~2.1||~3.0"
+ "symfony/class-loader": "~2.1||~3.0||~4.0",
+ "symfony/config": "~2.3||~3.0||~4.0",
+ "symfony/console": "~2.5||~3.0||~4.0",
+ "symfony/dependency-injection": "~2.1||~3.0||~4.0",
+ "symfony/event-dispatcher": "~2.1||~3.0||~4.0",
+ "symfony/translation": "~2.3||~3.0||~4.0",
+ "symfony/yaml": "~2.1||~3.0||~4.0"
},
"require-dev": {
"herrera-io/box": "~1.6.1",
- "phpunit/phpunit": "~4.5",
- "symfony/process": "~2.5|~3.0"
+ "phpunit/phpunit": "^4.8.36|^6.3",
+ "symfony/process": "~2.5|~3.0|~4.0"
},
"suggest": {
"behat/mink-extension": "for integration with Mink testing framework",
@@ -947,7 +1002,7 @@
"symfony",
"testing"
],
- "time": "2017-09-18T11:10:28+00:00"
+ "time": "2017-11-27T10:37:56+00:00"
},
{
"name": "behat/gherkin",
@@ -1124,27 +1179,27 @@
},
{
"name": "behat/mink-extension",
- "version": "v2.2",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/MinkExtension.git",
- "reference": "5b4bda64ff456104564317e212c823e45cad9d59"
+ "reference": "badc565b7a1d05c4a4bf49c789045bcf7af6c6de"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/5b4bda64ff456104564317e212c823e45cad9d59",
- "reference": "5b4bda64ff456104564317e212c823e45cad9d59",
+ "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/badc565b7a1d05c4a4bf49c789045bcf7af6c6de",
+ "reference": "badc565b7a1d05c4a4bf49c789045bcf7af6c6de",
"shasum": ""
},
"require": {
- "behat/behat": "~3.0,>=3.0.5",
- "behat/mink": "~1.5",
+ "behat/behat": "^3.0.5",
+ "behat/mink": "^1.5",
"php": ">=5.3.2",
- "symfony/config": "~2.2|~3.0"
+ "symfony/config": "^2.7|^3.0|^4.0"
},
"require-dev": {
- "behat/mink-goutte-driver": "~1.1",
- "phpspec/phpspec": "~2.0"
+ "behat/mink-goutte-driver": "^1.1",
+ "phpspec/phpspec": "^2.0"
},
"type": "behat-extension",
"extra": {
@@ -1179,7 +1234,7 @@
"test",
"web"
],
- "time": "2016-02-15T07:55:18+00:00"
+ "time": "2017-11-24T19:30:49+00:00"
},
{
"name": "behat/mink-goutte-driver",
@@ -1367,24 +1422,27 @@
},
{
"name": "fabpot/goutte",
- "version": "v3.2.1",
+ "version": "v3.2.2",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/Goutte.git",
- "reference": "db5c28f4a010b4161d507d5304e28a7ebf211638"
+ "reference": "395f61d7c2e15a813839769553a4de16fa3b3c96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/db5c28f4a010b4161d507d5304e28a7ebf211638",
- "reference": "db5c28f4a010b4161d507d5304e28a7ebf211638",
+ "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/395f61d7c2e15a813839769553a4de16fa3b3c96",
+ "reference": "395f61d7c2e15a813839769553a4de16fa3b3c96",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "^6.0",
"php": ">=5.5.0",
- "symfony/browser-kit": "~2.1|~3.0",
- "symfony/css-selector": "~2.1|~3.0",
- "symfony/dom-crawler": "~2.1|~3.0"
+ "symfony/browser-kit": "~2.1|~3.0|~4.0",
+ "symfony/css-selector": "~2.1|~3.0|~4.0",
+ "symfony/dom-crawler": "~2.1|~3.0|~4.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.3 || ^4"
},
"type": "application",
"extra": {
@@ -1395,7 +1453,10 @@
"autoload": {
"psr-4": {
"Goutte\\": "Goutte"
- }
+ },
+ "exclude-from-classmap": [
+ "Goutte/Tests"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1412,7 +1473,7 @@
"keywords": [
"scraper"
],
- "time": "2017-01-03T13:21:43+00:00"
+ "time": "2017-11-19T08:45:40+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -1858,22 +1919,22 @@
},
{
"name": "php-mock/php-mock-phpunit",
- "version": "2.0.0",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock-phpunit.git",
- "reference": "173781abdc632c59200253e12e2b991ae6a4574f"
+ "reference": "b42fc41ecb7538564067527f6c30b8854f149d32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/173781abdc632c59200253e12e2b991ae6a4574f",
- "reference": "173781abdc632c59200253e12e2b991ae6a4574f",
+ "url": "https://api.github.com/repos/php-mock/php-mock-phpunit/zipball/b42fc41ecb7538564067527f6c30b8854f149d32",
+ "reference": "b42fc41ecb7538564067527f6c30b8854f149d32",
"shasum": ""
},
"require": {
"php": ">=7",
"php-mock/php-mock-integration": "^2",
- "phpunit/phpunit": "^6"
+ "phpunit/phpunit": "^6 <6.5"
},
"type": "library",
"autoload": {
@@ -1905,20 +1966,20 @@
"test",
"test double"
],
- "time": "2017-02-17T22:44:38+00:00"
+ "time": "2017-12-02T09:49:02+00:00"
},
{
"name": "phpdocumentor/reflection-common",
- "version": "1.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
- "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"shasum": ""
},
"require": {
@@ -1959,33 +2020,39 @@
"reflection",
"static analysis"
],
- "time": "2015-12-27T11:43:31+00:00"
+ "time": "2017-09-11T18:02:19+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "3.1.1",
+ "version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
+ "reference": "66465776cfc249844bde6d117abff1d22e06c2da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da",
+ "reference": "66465776cfc249844bde6d117abff1d22e06c2da",
"shasum": ""
},
"require": {
- "php": ">=5.5",
- "phpdocumentor/reflection-common": "^1.0@dev",
- "phpdocumentor/type-resolver": "^0.2.0",
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
- "mockery/mockery": "^0.9.4",
- "phpunit/phpunit": "^4.4"
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
@@ -2004,24 +2071,24 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2016-09-30T07:12:33+00:00"
+ "time": "2017-11-27T17:38:31+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "0.2.1",
+ "version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
"shasum": ""
},
"require": {
- "php": ">=5.5",
+ "php": "^5.5 || ^7.0",
"phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
@@ -2051,37 +2118,37 @@
"email": "me@mikevanriel.com"
}
],
- "time": "2016-11-25T06:54:22+00:00"
+ "time": "2017-07-14T14:27:02+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "v1.7.0",
+ "version": "1.7.3",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
- "reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
"sebastian/comparator": "^1.1|^2.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
"phpspec/phpspec": "^2.5|^3.2",
- "phpunit/phpunit": "^4.8 || ^5.6.5"
+ "phpunit/phpunit": "^4.8.35 || ^5.7"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.6.x-dev"
+ "dev-master": "1.7.x-dev"
}
},
"autoload": {
@@ -2114,20 +2181,72 @@
"spy",
"stub"
],
- "time": "2017-03-02T20:05:34+00:00"
+ "time": "2017-11-24T13:59:53+00:00"
+ },
+ {
+ "name": "phpunit/dbunit",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/dbunit.git",
+ "reference": "403350339b6aca748ee0067d027d85621992e21f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/403350339b6aca748ee0067d027d85621992e21f",
+ "reference": "403350339b6aca748ee0067d027d85621992e21f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pdo": "*",
+ "ext-simplexml": "*",
+ "php": "^7.0",
+ "phpunit/phpunit": "^6.0",
+ "symfony/yaml": "^3.0 || ^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "PHPUnit extension for database interaction testing",
+ "homepage": "https://github.com/sebastianbergmann/dbunit/",
+ "keywords": [
+ "database",
+ "testing",
+ "xunit"
+ ],
+ "time": "2017-11-18T17:40:34+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "5.2.2",
+ "version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b"
+ "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8ed1902a57849e117b5651fc1a5c48110946c06b",
- "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1",
+ "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1",
"shasum": ""
},
"require": {
@@ -2136,14 +2255,13 @@
"php": "^7.0",
"phpunit/php-file-iterator": "^1.4.2",
"phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^1.4.11 || ^2.0",
+ "phpunit/php-token-stream": "^2.0.1",
"sebastian/code-unit-reverse-lookup": "^1.0.1",
"sebastian/environment": "^3.0",
"sebastian/version": "^2.0.1",
"theseer/tokenizer": "^1.1"
},
"require-dev": {
- "ext-xdebug": "^2.5",
"phpunit/phpunit": "^6.0"
},
"suggest": {
@@ -2152,7 +2270,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.2.x-dev"
+ "dev-master": "5.3.x-dev"
}
},
"autoload": {
@@ -2167,7 +2285,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -2178,20 +2296,20 @@
"testing",
"xunit"
],
- "time": "2017-08-03T12:40:43+00:00"
+ "time": "2017-12-06T09:29:45+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "1.4.2",
+ "version": "1.4.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
- "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
"shasum": ""
},
"require": {
@@ -2225,7 +2343,7 @@
"filesystem",
"iterator"
],
- "time": "2016-10-03T07:40:28+00:00"
+ "time": "2017-11-27T13:52:08+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -2319,16 +2437,16 @@
},
{
"name": "phpunit/php-token-stream",
- "version": "2.0.1",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0"
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0",
- "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
"shasum": ""
},
"require": {
@@ -2364,20 +2482,20 @@
"keywords": [
"tokenizer"
],
- "time": "2017-08-20T05:47:52+00:00"
+ "time": "2017-11-27T05:48:46+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "6.4.3",
+ "version": "6.4.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13"
+ "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/06b28548fd2b4a20c3cd6e247dc86331a7d4db13",
- "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/562f7dc75d46510a4ed5d16189ae57fbe45a9932",
+ "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932",
"shasum": ""
},
"require": {
@@ -2448,7 +2566,7 @@
"testing",
"xunit"
],
- "time": "2017-10-16T13:18:59+00:00"
+ "time": "2017-11-08T11:26:09+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -2655,30 +2773,30 @@
},
{
"name": "sebastian/comparator",
- "version": "2.0.2",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a"
+ "reference": "1174d9018191e93cb9d719edec01257fc05f8158"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a",
- "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1174d9018191e93cb9d719edec01257fc05f8158",
+ "reference": "1174d9018191e93cb9d719edec01257fc05f8158",
"shasum": ""
},
"require": {
"php": "^7.0",
"sebastian/diff": "^2.0",
- "sebastian/exporter": "^3.0"
+ "sebastian/exporter": "^3.1"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "2.1.x-dev"
}
},
"autoload": {
@@ -2709,13 +2827,13 @@
}
],
"description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
"equality"
],
- "time": "2017-08-03T07:14:59+00:00"
+ "time": "2017-11-03T07:16:52+00:00"
},
{
"name": "sebastian/diff",
@@ -3169,25 +3287,25 @@
},
{
"name": "symfony/browser-kit",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "317d5bdf0127f06db7ea294186132b4f5b036839"
+ "reference": "f761b4ecdd23a451c2cae6fba704d8b207cbb045"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/317d5bdf0127f06db7ea294186132b4f5b036839",
- "reference": "317d5bdf0127f06db7ea294186132b4f5b036839",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f761b4ecdd23a451c2cae6fba704d8b207cbb045",
+ "reference": "f761b4ecdd23a451c2cae6fba704d8b207cbb045",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8",
- "symfony/dom-crawler": "~2.8|~3.0"
+ "symfony/dom-crawler": "~2.8|~3.0|~4.0"
},
"require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
+ "symfony/css-selector": "~2.8|~3.0|~4.0",
+ "symfony/process": "~2.8|~3.0|~4.0"
},
"suggest": {
"symfony/process": ""
@@ -3195,7 +3313,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3222,27 +3340,27 @@
],
"description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-11T22:06:16+00:00"
},
{
"name": "symfony/class-loader",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/class-loader.git",
- "reference": "7572c904b209fa9907c69a6a9a68243c265a4d01"
+ "reference": "e8d36a7b5568d232f5c3f8ef92665836b9f1e038"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/class-loader/zipball/7572c904b209fa9907c69a6a9a68243c265a4d01",
- "reference": "7572c904b209fa9907c69a6a9a68243c265a4d01",
+ "url": "https://api.github.com/repos/symfony/class-loader/zipball/e8d36a7b5568d232f5c3f8ef92665836b9f1e038",
+ "reference": "e8d36a7b5568d232f5c3f8ef92665836b9f1e038",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8"
},
"require-dev": {
- "symfony/finder": "~2.8|~3.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
"symfony/polyfill-apcu": "~1.1"
},
"suggest": {
@@ -3251,7 +3369,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3278,34 +3396,34 @@
],
"description": "Symfony ClassLoader Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-11-05T16:10:10+00:00"
},
{
"name": "symfony/config",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "4ab62407bff9cd97c410a7feaef04c375aaa5cfd"
+ "reference": "e57211b88aa889fefac1cb36866db04100b0f21c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/4ab62407bff9cd97c410a7feaef04c375aaa5cfd",
- "reference": "4ab62407bff9cd97c410a7feaef04c375aaa5cfd",
+ "url": "https://api.github.com/repos/symfony/config/zipball/e57211b88aa889fefac1cb36866db04100b0f21c",
+ "reference": "e57211b88aa889fefac1cb36866db04100b0f21c",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8",
- "symfony/filesystem": "~2.8|~3.0"
+ "symfony/filesystem": "~2.8|~3.0|~4.0"
},
"conflict": {
"symfony/dependency-injection": "<3.3",
"symfony/finder": "<3.3"
},
"require-dev": {
- "symfony/dependency-injection": "~3.3",
- "symfony/finder": "~3.3",
- "symfony/yaml": "~3.0"
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
@@ -3313,7 +3431,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3340,48 +3458,49 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
- "time": "2017-10-04T18:56:58+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/console",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c"
+ "reference": "9f21adfb92a9315b73ae2ed43138988ee4913d4e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/116bc56e45a8e5572e51eb43ab58c769a352366c",
- "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c",
+ "url": "https://api.github.com/repos/symfony/console/zipball/9f21adfb92a9315b73ae2ed43138988ee4913d4e",
+ "reference": "9f21adfb92a9315b73ae2ed43138988ee4913d4e",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8",
- "symfony/debug": "~2.8|~3.0",
+ "symfony/debug": "~2.8|~3.0|~4.0",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/dependency-injection": "<3.3"
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~3.3",
- "symfony/dependency-injection": "~3.3",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/filesystem": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
- "symfony/filesystem": "",
+ "symfony/lock": "",
"symfony/process": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3408,20 +3527,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "07447650225ca9223bd5c97180fe7c8267f7d332"
+ "reference": "eac760b414cf1f64362c3dd047b989e4db121332"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/07447650225ca9223bd5c97180fe7c8267f7d332",
- "reference": "07447650225ca9223bd5c97180fe7c8267f7d332",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/eac760b414cf1f64362c3dd047b989e4db121332",
+ "reference": "eac760b414cf1f64362c3dd047b989e4db121332",
"shasum": ""
},
"require": {
@@ -3430,7 +3549,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3461,20 +3580,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/debug",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd"
+ "reference": "543deab3ffff94402440b326fc94153bae2dfa7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd",
- "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/543deab3ffff94402440b326fc94153bae2dfa7a",
+ "reference": "543deab3ffff94402440b326fc94153bae2dfa7a",
"shasum": ""
},
"require": {
@@ -3485,12 +3604,12 @@
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
},
"require-dev": {
- "symfony/http-kernel": "~2.8|~3.0"
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3517,20 +3636,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-12T08:27:14+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "8ebad929aee3ca185b05f55d9cc5521670821ad1"
+ "reference": "5f81907ea43bfa971ac2c7fbac593ebe7cd7d333"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8ebad929aee3ca185b05f55d9cc5521670821ad1",
- "reference": "8ebad929aee3ca185b05f55d9cc5521670821ad1",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f81907ea43bfa971ac2c7fbac593ebe7cd7d333",
+ "reference": "5f81907ea43bfa971ac2c7fbac593ebe7cd7d333",
"shasum": ""
},
"require": {
@@ -3538,17 +3657,18 @@
"psr/container": "^1.0"
},
"conflict": {
- "symfony/config": "<3.3.1",
+ "symfony/config": "<3.3.7",
"symfony/finder": "<3.3",
- "symfony/yaml": "<3.3"
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
},
"provide": {
"psr/container-implementation": "1.0"
},
"require-dev": {
- "symfony/config": "~3.3",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/yaml": "~3.3"
+ "symfony/config": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
},
"suggest": {
"symfony/config": "",
@@ -3560,7 +3680,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3587,20 +3707,20 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
- "time": "2017-10-04T17:15:30+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "40dafd42d5dad7fe5ad4e958413d92a207522ac1"
+ "reference": "dc847845c66fa68ad4522ed27e62b9b9dd12ab3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/40dafd42d5dad7fe5ad4e958413d92a207522ac1",
- "reference": "40dafd42d5dad7fe5ad4e958413d92a207522ac1",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/dc847845c66fa68ad4522ed27e62b9b9dd12ab3b",
+ "reference": "dc847845c66fa68ad4522ed27e62b9b9dd12ab3b",
"shasum": ""
},
"require": {
@@ -3608,7 +3728,7 @@
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
+ "symfony/css-selector": "~2.8|~3.0|~4.0"
},
"suggest": {
"symfony/css-selector": ""
@@ -3616,7 +3736,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3643,20 +3763,20 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423"
+ "reference": "b869cbf8a15ca6261689de2c28a7d7f2d0706835"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d7ba037e4b8221956ab1e221c73c9e27e05dd423",
- "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b869cbf8a15ca6261689de2c28a7d7f2d0706835",
+ "reference": "b869cbf8a15ca6261689de2c28a7d7f2d0706835",
"shasum": ""
},
"require": {
@@ -3667,10 +3787,10 @@
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~3.3",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/stopwatch": "~2.8|~3.0|~4.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -3679,7 +3799,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3706,20 +3826,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1"
+ "reference": "25b135bea251829e3db6a77d773643408b575ed4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/90bc45abf02ae6b7deb43895c1052cb0038506f1",
- "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/25b135bea251829e3db6a77d773643408b575ed4",
+ "reference": "25b135bea251829e3db6a77d773643408b575ed4",
"shasum": ""
},
"require": {
@@ -3728,7 +3848,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3755,7 +3875,7 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
- "time": "2017-10-03T13:33:10+00:00"
+ "time": "2017-12-14T19:40:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
@@ -3818,16 +3938,16 @@
},
{
"name": "symfony/translation",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "409bf229cd552bf7e3faa8ab7e3980b07672073f"
+ "reference": "4c5d5582baf2829751a5207659329c1f52eedeb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/409bf229cd552bf7e3faa8ab7e3980b07672073f",
- "reference": "409bf229cd552bf7e3faa8ab7e3980b07672073f",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/4c5d5582baf2829751a5207659329c1f52eedeb6",
+ "reference": "4c5d5582baf2829751a5207659329c1f52eedeb6",
"shasum": ""
},
"require": {
@@ -3836,13 +3956,16 @@
},
"conflict": {
"symfony/config": "<2.8",
- "symfony/yaml": "<3.3"
+ "symfony/dependency-injection": "<3.4",
+ "symfony/yaml": "<3.4"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/intl": "^2.8.18|^3.2.5",
- "symfony/yaml": "~3.3"
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/intl": "^2.8.18|^3.2.5|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
@@ -3852,7 +3975,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3879,27 +4002,30 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2017-10-02T06:42:24+00:00"
+ "time": "2017-12-12T08:27:14+00:00"
},
{
"name": "symfony/yaml",
- "version": "v3.3.10",
+ "version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46"
+ "reference": "afe0cd38486505c9703707707d91450cfc1bd536"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46",
- "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/afe0cd38486505c9703707707d91450cfc1bd536",
+ "reference": "afe0cd38486505c9703707707d91450cfc1bd536",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8"
},
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
"require-dev": {
- "symfony/console": "~2.8|~3.0"
+ "symfony/console": "~3.4|~4.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
@@ -3907,7 +4033,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3934,7 +4060,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2017-10-05T14:43:42+00:00"
+ "time": "2017-12-11T20:38:23+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md
index 2fa52c7c6..939dc18a7 100644
--- a/doc/admin/administrator_guide.md
+++ b/doc/admin/administrator_guide.md
@@ -168,21 +168,19 @@ any time that the documentation is updated :
util/importdoc
### Automated installation via the .homeinstall shell script
-There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install $Projectname and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary.
+There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install $Projectname and its dependencies on a fresh installation of Debian 9 stable (Stetch). It should work on similar Linux systems but your results may vary.
#### Requirements
-The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3:
+The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 9:
-* Home-PC (Debian-8.3.0-amd64)
+* Home-PC (Debian-9.2-amd64) and Rapberry-Pi 3 (Rasbian = Debian 9.3)
* Internet connection and router at home
- * Mini-pc connected to your router
+ * Mini-PC / Raspi connected to your router
* USB drive for backups
* Fresh installation of Debian on your mini-pc
* Router with open ports 80 and 443 for your Debian
-* DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3)
-
#### Overview of installation steps
1. `apt-get install git`
1. `mkdir -p /var/www/html`
@@ -191,8 +189,6 @@ The installation script was originally designed for a small hardware server behi
1. `nano .homeinstall/hubzilla-config.txt`
1. `cd .homeinstall/`
1. `./hubzilla-setup.sh`
-1. `sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini`
-1. `sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini`
1. `service apache2 reload`
1. Open your domain with a browser and step throught the initial configuration of $Projectname.
diff --git a/doc/hidden_configs.bb b/doc/hidden_configs.bb
index f34c253ce..8b5429deb 100644
--- a/doc/hidden_configs.bb
+++ b/doc/hidden_configs.bb
@@ -28,6 +28,7 @@ Options are:
[*= system.prevent_tag_hijacking ] Prevent foreign networks hijacking hashtags in your posts and directing them at its own resources.
[*= system.startpage ] Another of those technically hidden configs made available by addons. Sets the default page to view when logging in. This is exposed to the UI by the startpage addon.
[*= system.taganyone ] Requires the config of the same name to be enabled. Allow the @mention tagging of anyone, whether you are connected or not. This doesn't scale.
+ [*= system.anonymous_comments ] By default or if set to 1, custom permissions can be set to allow anonymous (moderated) comments like WordPress, moderated by the channel owner. If set to 0, no member of your site can select or enable this.
[*= system.user_scalable ] Determine if the app is scalable on touch screens. Defaults to on, to disable, set to zero - real zero, not just false.
[/dl]
[h2]Site config[/h2][dl terms="mb"]
diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb
index 20d273f44..10ea4db57 100644
--- a/doc/member/member_guide.bb
+++ b/doc/member/member_guide.bb
@@ -345,16 +345,18 @@ If the person mentioned is in the list of recipients for the post, they will rec
[h4]Deliverable Mentions[/h4]
-Some connections in the mention auto-complete box behave differently than others. If you mention a channel which provides "re-delivery of mentions" it will also send the post to all of that channel's default delivery connections. This is how one posts to "forums". The auto-complete box will provide two entries for these channels, one will mention just the channel. The other will invoke re-delivery and be listed as the channel's "network".
+The [b]![/b] character designates a deliverable mention to a forum or special channel which allows "re-delivery of mentions".
[code]
@Gardening - mention the Gardening forum
[/code]
[code]
-@Gardening+ - mention the Gardening Forum and also post to the Gardening "network" (e.g. all the forum members; if you have permission to do so)
+!Gardening - mention the Gardening Forum and also post to the Gardening "network" (e.g. send to all the forum members; if you have permission to do so)
[/code]
+Note: In previous releases, forums were delivered by using @forum+ with a plus sign at the end. This mechanism is still used occasionally but is deprecated and !forum is now preferred.
+
[h4]Private Mentions[/h4]
If you wish to restrict a post to a single person or a number of people, you can do this by selecting channels or privacy groups from the privacy tool. You can also just tag them with a privacy tag. A privacy tag is a name preceded by the two characters @! - and in addition to tagging these channels, will also change the privacy permissions of the post to only include them. You can have more than one privacy tag, for instance @!bob and @!linda will send the post only to Bob and Linda. This mechanism over-rides the privacy selector.
@@ -369,7 +371,7 @@ Topical tags are indicated by preceding the tag name with the # character. This
Topical tags are also not linked if they are purely numeric, e.g. #1. If you wish to use a numeric hashtag, please add some descriptive text such as #2012-elections.
[h4]Bookmarks[/h4]
-Bookmarks indicate a link which can be saved to your bookmark folder. They use the sequence #^ followed by the link. Often these are generated automatically. If the 'bookmarker' addon is installed, this sequence will be converted to a bookmark icon when viewing the post or comment online and clicking the icon will save the bookmark. If the bookmarker addon is not installed, the post 'dropdown menu' contains a link for saving the bookmark or bookmarks.
+Bookmarks indicate a link which can be saved to your bookmark folder. They use the sequence #^ followed by the link. Often these are generated automatically. If the 'bookmarker' addon is installed, this sequence will be converted to a bookmark icon when viewing the post or comment online, and clicking the icon will save the bookmark. If the bookmarker addon is not installed, the post 'dropdown menu' contains a link for saving the bookmark or bookmarks.
[h4]Spaces in Tags and Mentions[/h4]
Where possible please use the auto-complete window to select tag and mention recipients, because it will generate a coded tag which uniquely identifies one channel. Names are sometimes ambiguous. However, you can "manually" tag a channel by matching the channel name or address.
@@ -846,6 +848,23 @@ Your files are visible on the web at the location [observer=1][baseurl]/cloud/[o
WebDAV provides a way to copy files directly to or from your computer's operating system, where your cloud files appear as a virtual disk drive. This should be used to upload large files such as video and audio; as it is not limited to available memory. See [zrl=help/member/member_guide#Cloud_Desktop_Clients]Cloud Desktop Clients[/zrl] below.
+[h4]CalDAV and CardDAV access on Android[/h4]
+
+You can sync you calendar and contacts on Android with your Hub.
+
+The following steps where tested for [url=https://f-droid.org/en/packages/at.bitfire.davdroid/]DAVdroid[/url]
+[list]
+[*] install DAVdroid
+[*] add account
+[*] use "URL" and "user name" to login
+[list]
+[*] base url is [baseurl]/cdav
+[*] user name is [observer=1][observer.webname][/observer][observer=0]username[/observer]
+[/list]
+[/list]
+
+To share your calendar visit [observer.baseurl]/cdav/calendar
+
[h4]Permissions[/h4]
diff --git a/images/video_poster.jpg b/images/video_poster.jpg
new file mode 100644
index 000000000..e4fc3b2da
--- /dev/null
+++ b/images/video_poster.jpg
Binary files differ
diff --git a/include/Import/Importer.php b/include/Import/Importer.php
deleted file mode 100644
index 1fa677db0..000000000
--- a/include/Import/Importer.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php /** @file */
-
-namespace Hubzilla\Import;
-
-/**
- * @brief Class Import
- *
- */
-class Import {
-
- private $credentials = null;
-
- protected $itemlist = null;
- protected $src_items = null;
- protected $items = null;
-
- function get_credentials() {
- return $this->credentials;
- }
-
- function get_itemlist() {
- return $this->itemlist;
- }
-
- function get_item_ident($item) {
-
- }
-
- function get_item($item_ident) {
-
- }
-
- function get_taxonomy($item_ident) {
-
- }
-
- function get_children($item_ident) {
-
- }
-
- function convert_item($item_ident) {
-
- }
-
- function convert_taxonomy($item_ident) {
-
- }
-
- function convert_child($child) {
-
- }
-
- function store($item, $update = false) {
-
- }
-
- function run() {
- $this->credentials = $this->get_credentials();
- $this->itemlist = $this->get_itemlist();
- if($this->itemlist) {
- $this->src_items = array();
- $this->items = array();
- $cnt = 0;
- foreach($this->itemlist as $item) {
- $ident = $item->get_item_ident($item);
- $this->src_items[$ident]['item'] = $this->get_item($ident);
- $this->src_items[$ident]['taxonomy'] = $this->get_taxonomy($ident);
- $this->src_items[$ident]['children'] = $this->get_children($ident);
- $this->items[$cnt]['item'] = $this->convert_item($ident);
- $this->items[$cnt]['item']['term'] = $this->convert_taxonomy($ident);
- if($this->src_items[$ident]['children']) {
- $this->items[$cnt]['children'] = array();
- foreach($this->src_items[$ident]['children'] as $child) {
- $this[$cnt]['children'][] = $this->convert_child($child);
- }
- }
- $cnt ++;
- }
- }
- }
-} \ No newline at end of file
diff --git a/include/Import/refimport.php b/include/Import/refimport.php
deleted file mode 100644
index 04540a9bd..000000000
--- a/include/Import/refimport.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-
-require_once('include/html2bbcode.php');
-
-// Sample module for importing conversation data from Reflection CMS. Some preparation was used to
-// dump relevant posts, categories and comments into individual JSON files, and also JSON dump of
-// the user table to search for avatars. Importation was also batched in sets of 20 posts per page
-// visit so as to survive shared hosting process limits. This provides some clues as how to handle
-// WordPress imports, which use a somewhat similar DB structure. The batching and individual files
-// might not be needed in VPS environments. As such this could be considered an extreme test case, but
-// the importation was successful in all regards using this code. The module URL was visited repeatedly
-// with a browser until all the posts had been imported.
-
-
-define('REDMATRIX_IMPORTCHANNEL','mike');
-define('REFLECT_EXPORTUSERNAME','mike');
-define('REFLECT_BLOGNAME','Diary and Other Rantings');
-define('REFLECT_BASEURL','http://example.com/');
-define('REFLECT_USERFILE','user.json');
-
-// set to true if you need to process everything again
-define('REFLECT_OVERWRITE',false);
-
-// we'll only process a small number of posts at a time on a shared host.
-
-define('REFLECT_MAXPERRUN',30);
-
-function reflect_get_channel() {
-
- // this will be the channel_address or nickname of the red channel
-
- $c = q("select * from channel left join xchan on channel_hash = xchan_hash
- where channel_address = '%s' limit 1",
- dbesc(REDMATRIX_IMPORTCHANNEL)
- );
- return $c[0];
-}
-
-
-function refimport_content(&$a) {
-
- $channel = reflect_get_channel();
-
- // load the user file. We need that to find the commenter's avatars
-
- $u = file_get_contents(REFLECT_USERFILE);
- if($u) {
- $users = json_decode($u,true);
- }
-
- $ignored = 0;
- $processed = 0;
-
- $files = glob('article/*');
- if(! $files)
- return;
-
- foreach($files as $f) {
- $s = file_get_contents($f);
- $j = json_decode($s,true);
-
- if(! $j)
- continue;
-
- $arr = array();
-
- // see if this article was already processed
- $r = q("select * from item where mid = '%s' and uid = %d limit 1",
- dbesc($j['guid']),
- intval($channel['channel_id'])
- );
- if($r) {
- if(REFLECT_OVERWRITE)
- $arr['id'] = $r[0]['id'];
- else {
- $ignored ++;
- rename($f,str_replace('article','done',$f));
- continue;
- }
- }
-
- $arr['uid'] = $channel['channel_account_id'];
- $arr['aid'] = $channel['channel_id'];
- $arr['mid'] = $arr['parent_mid'] = $j['guid'];
- $arr['created'] = $j['created'];
- $arr['edited'] = $j['edited'];
- $arr['author_xchan'] = $channel['channel_hash'];
- $arr['owner_xchan'] = $channel['channel_hash'];
- $arr['app'] = REFLECT_BLOGNAME;
-
- $arr['item_origin'] = 1;
- $arr['item_wall'] = 1;
- $arr['item_thread_top'] = 1;
-
- $arr['verb'] = ACTIVITY_POST;
-
- // this is an assumption
- $arr['comment_policy'] = 'contacts';
-
-
- // import content. In this case the content is XHTML.
-
- $arr['title'] = html2bbcode($j['title']);
- $arr['title'] = htmlspecialchars($arr['title'],ENT_COMPAT,'UTF-8',false);
-
-
- $arr['body'] = html2bbcode($j['body']);
- $arr['body'] = htmlspecialchars($arr['body'],ENT_COMPAT,'UTF-8',false);
-
-
- // convert relative urls to other posts on that service to absolute url on our service.
- $arr['body'] = preg_replace_callback("/\[url\=\/+article\/(.*?)\](.*?)\[url\]/",'reflect_article_callback',$arr['body']);
-
- // also import any photos
- $arr['body'] = preg_replace_callback("/\[img(.*?)\](.*?)\[\/img\]/",'reflect_photo_callback',$arr['body']);
-
-
- // add categories
-
- if($j['taxonomy'] && is_array($j['taxonomy']) && count($j['taxonomy'])) {
- $arr['term'] = array();
- foreach($j['taxonomy'] as $tax) {
- $arr['term'][] = array(
- 'uid' => $channel['channel_id'],
- 'type' => TERM_CATEGORY,
- 'otype' => TERM_OBJ_POST,
- 'term' => trim($tax['name']),
- 'url' => $channel['xchan_url'] . '?f=&cat=' . urlencode(trim($tax['name']))
- );
- }
- }
-
- // store the item
-
- if($arr['id'])
- item_store_update($arr);
- else
- item_store($arr);
-
- // if there are any comments, process them
- // $comment['registered'] is somebody with an account on the system. Others are mostly anonymous
-
- if($j['comments']) {
- foreach($j['comments'] as $comment) {
- $user = (($comment['registered']) ? reflect_find_user($users,$comment['author']) : null);
- reflect_comment_store($channel,$arr,$comment,$user);
- }
- }
- $processed ++;
-
- if(REFLECT_MAXPERRUN && $processed > REFLECT_MAXPERRUN)
- break;
- }
- return 'processed: ' . $processed . EOL . 'completed: ' . $ignored . EOL;
-
-}
-
-function reflect_article_callback($matches) {
- return '[zrl=' . z_root() . '/display/'. $matches[1] . ']' . $matches[2] . '[/zrl]';
-}
-
-function reflect_photo_callback($matches) {
-
- if(strpos($matches[2],'http') !== false)
- return $matches[0];
-
- $prefix = REFLECT_BASEURL;
- $x = z_fetch_url($prefix.$matches[2],true);
-
- $hash = basename($matches[2]);
-
- if($x['success']) {
- $channel = reflect_get_channel();
- require_once('include/photos.php');
- $p = photo_upload($channel,$channel,
- array('data' => $x['body'],
- 'resource_id' => str_replace('-','',$hash),
- 'filename' => $hash . '.jpg',
- 'type' => 'image/jpeg',
- 'visible' => false
- )
- );
-
- if($p['success'])
- $newlink = $p['resource_id'] . '-0.jpg';
-
-
- // import photo and locate the link for it.
- return '[zmg]' . z_root() . '/photo/' . $newlink . '[/zmg]';
-
- }
- // no replacement. Leave it alone.
- return $matches[0];
-}
-
-function reflect_find_user($users,$name) {
- if($users) {
- foreach($users as $x) {
- if($x['name'] === $name) {
- return $x;
- }
- }
- }
-
- return false;
-
-}
-
-function reflect_comment_store($channel,$post,$comment,$user) {
-
- // if the commenter was the channel owner, use their hubzilla xchan
-
- if($comment['author'] === REFLECT_EXPORTUSERNAME && $comment['registered'])
- $hash = $channel['xchan_hash'];
- else {
- // we need a unique hash for the commenter. We don't know how many may have supplied
- // http://yahoo.com as their URL, so we'll use their avatar guid if they have one.
- // anonymous folks may get more than one xchan_hash if they commented more than once.
-
- $hash = (($comment['registered'] && $user) ? $user['avatar'] : '');
- if(! $hash)
- $hash = random_string() . '.unknown';
-
- // create an xchan for them which will also import their profile photo
- // they will have a network type 'unknown'.
-
- $x = array(
- 'hash' => $hash,
- 'guid' => $hash,
- 'url' => (($comment['url']) ? $comment['url'] : z_root()),
- 'photo' => (($user) ? REFLECT_BASEURL . $user['avatar'] : z_root() . '/' . get_default_profile_photo()),
- 'name' => $comment['author']
- );
- xchan_store($x);
-
- }
-
- $arr = array();
-
- $r = q("select * from item where mid = '%s' and uid = %d limit 1",
- dbesc($comment['guid']),
- intval($channel['channel_id'])
- );
- if($r) {
- if(REFLECT_OVERWRITE)
- $arr['id'] = $r[0]['id'];
- else
- return;
- }
-
- // this is a lot like storing the post except for subtle differences, like parent_mid, flags, author_xchan,
- // and we don't have a comment edited field so use creation date
-
- $arr['uid'] = $channel['channel_account_id'];
- $arr['aid'] = $channel['channel_id'];
- $arr['mid'] = $comment['guid'];
- $arr['parent_mid'] = $post['mid'];
- $arr['created'] = $comment['created'];
- $arr['edited'] = $comment['created'];
- $arr['author_xchan'] = $hash;
- $arr['owner_xchan'] = $channel['channel_hash'];
- $arr['item_origin'] = 1;
- $arr['item_wall'] = 1;
- $arr['verb'] = ACTIVITY_POST;
- $arr['comment_policy'] = 'contacts';
-
-
- $arr['title'] = html2bbcode($comment['title']);
- $arr['title'] = htmlspecialchars($arr['title'],ENT_COMPAT,'UTF-8',false);
-
-
- $arr['body'] = html2bbcode($comment['body']);
- $arr['body'] = htmlspecialchars($arr['body'],ENT_COMPAT,'UTF-8',false);
- $arr['body'] = preg_replace_callback("/\[url\=\/+article\/(.*?)\](.*?)\[url\]/",'reflect_article_callback',$arr['body']);
- $arr['body'] = preg_replace_callback("/\[img(.*?)\](.*?)\[\/img\]/",'reflect_photo_callback',$arr['body']);
-
- // logger('comment: ' . print_r($arr,true));
-
- if($arr['id'])
- item_store_update($arr);
- else
- item_store($arr);
-
-}
diff --git a/include/account.php b/include/account.php
index 6c6fdece4..40cf281c3 100644
--- a/include/account.php
+++ b/include/account.php
@@ -262,24 +262,46 @@ function create_account($arr) {
function verify_email_address($arr) {
- $hash = random_string();
-
- $r = q("INSERT INTO register ( hash, created, uid, password, lang ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
- dbesc($hash),
- dbesc(datetime_convert()),
- intval($arr['account']['account_id']),
- dbesc('verify'),
- dbesc($arr['account']['account_language'])
- );
+ if(array_key_exists('resend',$arr)) {
+ $email = $arr['email'];
+ $a = q("select * from account where account_email = '%s' limit 1",
+ dbesc($arr['email'])
+ );
+ if(! ($a && ($a[0]['account_flags'] & ACCOUNT_UNVERIFIED))) {
+ return false;
+ }
+ $account = $a[0];
+ $v = q("select * from register where uid = %d and password = 'verify' limit 1",
+ intval($account['account_id'])
+ );
+ if($v) {
+ $hash = $v[0]['hash'];
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ $hash = random_string(24);
+
+ $r = q("INSERT INTO register ( hash, created, uid, password, lang ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
+ dbesc($hash),
+ dbesc(datetime_convert()),
+ intval($arr['account']['account_id']),
+ dbesc('verify'),
+ dbesc($arr['account']['account_language'])
+ );
+ $account = $arr['account'];
+ }
- push_lang(($arr['account']['account_language']) ? $arr['account']['account_language'] : 'en');
+ push_lang(($account['account_language']) ? $account['account_language'] : 'en');
$email_msg = replace_macros(get_intltext_template('register_verify_member.tpl'),
[
'$sitename' => get_config('system','sitename'),
'$siteurl' => z_root(),
'$email' => $arr['email'],
- '$uid' => $arr['account']['account_id'],
+ '$uid' => $account['account_id'],
'$hash' => $hash,
'$details' => $details
]
@@ -508,7 +530,7 @@ function account_deny($hash) {
function account_approve($hash) {
- $ret = array('success' => false);
+ $ret = false;
// Note: when the password in the register table is 'verify', the uid actually contains the account_id
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 4e203074b..bada3e528 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -5,104 +5,9 @@
* @package acl_selectors
*/
-/**
- * @brief
- *
- * @param string $selname
- * @param string $selclass
- * @param mixed $preselected
- * @param number $size
- * @return string
- */
-function group_select($selname, $selclass, $preselected = false, $size = 4) {
-
- $o = '';
-
- $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\">\r\n";
-
- $r = q("SELECT * FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
- intval(local_channel())
- );
-
-
- $arr = array('group' => $r, 'entry' => $o);
-
- // e.g. 'network_pre_group_deny', 'profile_pre_group_allow'
-
- call_hooks(App::$module . '_pre_' . $selname, $arr);
-
- if($r) {
- foreach($r as $rr) {
- if((is_array($preselected)) && in_array($rr['id'], $preselected))
- $selected = " selected=\"selected\" ";
- else
- $selected = '';
- $trimmed = mb_substr($rr['gname'],0,12);
-
- $o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['name']}\" >$trimmed</option>\r\n";
- }
-
- }
- $o .= "</select>\r\n";
-
- call_hooks(App::$module . '_post_' . $selname, $o);
-
- return $o;
-}
-
-function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) {
-
- $o = '';
-
- // When used for private messages, we limit correspondence to mutual DFRN/Friendica friends and the selector
- // to one recipient. By default our selector allows multiple selects amongst all contacts.
-
- $sql_extra = '';
-
- $tabindex = ($tabindex > 0 ? 'tabindex="$tabindex"' : '');
-
- if($privmail)
- $o .= "<select name=\"$selname\" id=\"$selclass\" class=\"$selclass\" size=\"$size\" $tabindex >\r\n";
- else
- $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" $tabindex>\r\n";
-
- $r = q("SELECT abook_id, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash
- where abook_self = 0 and abook_channel = %d
- $sql_extra
- ORDER BY xchan_name ASC",
- intval(local_channel())
- );
-
-
- $arr = array('contact' => $r, 'entry' => $o);
-
- // e.g. 'network_pre_contact_deny', 'profile_pre_contact_allow'
-
- call_hooks(App::$module . '_pre_' . $selname, $arr);
-
- if($r) {
- foreach($r as $rr) {
- if((is_array($preselected)) && in_array($rr['id'], $preselected))
- $selected = ' selected="selected" ';
- else
- $selected = '';
-
- $trimmed = mb_substr($rr['xchan_name'], 0, 20);
-
- $o .= "<option value=\"{$rr['abook_id']}\" $selected title=\"{$rr['xchan_name']}|{$rr['xchan_url']}\" >$trimmed</option>\r\n";
- }
- }
-
- $o .= "</select>\r\n";
-
- call_hooks(App::$module . '_post_' . $selname, $o);
-
- return $o;
-}
-
function fixacl(&$item) {
- $item = str_replace(array('<', '>'), array('', ''), $item);
+ $item = str_replace( [ '<', '>' ], [ '', '' ], $item);
}
/**
diff --git a/include/api_zot.php b/include/api_zot.php
index 54f905b4c..1d30a0845 100644
--- a/include/api_zot.php
+++ b/include/api_zot.php
@@ -6,6 +6,8 @@
api_register_func('api/export/basic','api_export_basic', true);
api_register_func('api/red/channel/export/basic','api_export_basic', true);
api_register_func('api/z/1.0/channel/export/basic','api_export_basic', true);
+ api_register_func('api/red/channel/list','api_channel_list', true);
+ api_register_func('api/z/1.0/channel/list','api_channel_list', true);
api_register_func('api/red/channel/stream','api_channel_stream', true);
api_register_func('api/z/1.0/channel/stream','api_channel_stream', true);
api_register_func('api/red/files','api_attach_list', true);
@@ -111,9 +113,31 @@
}
}
+ function api_channel_list($type) {
+ if(api_user() === false) {
+ logger('api_channel_stream: no user');
+ return false;
+ }
+
+ $channel = channelx_by_n(api_user());
+ if(! $channel)
+ return false;
+ $ret = [];
+ $r = q("select channel_address from channel where channel_account_id = %d",
+ intval($channel['channel_account_id'])
+ );
+
+ if($r) {
+ foreach($r as $rv) {
+ $ret[] = $rv['channel_address'];
+ }
+ }
+
+ json_return_and_die($ret);
+ }
function api_channel_stream($type) {
diff --git a/include/auth.php b/include/auth.php
index 78be32bf4..6f5e58361 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -261,6 +261,7 @@ else {
$verify = account_verify_password($_POST['username'], $_POST['password']);
if($verify && array_key_exists('reason',$verify) && $verify['reason'] === 'unvalidated') {
notice( t('Email validation is incomplete. Please check your email.'));
+ goaway(z_root() . '/email_validation/' . bin2hex(trim(escape_tags($_POST['username']))));
}
elseif($verify) {
$atoken = $verify['xchan'];
diff --git a/include/bbcode.php b/include/bbcode.php
index 775a91f9a..03a46444b 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -108,7 +108,11 @@ function tryzrlvideo($match) {
if($zrl)
$link = zid($link);
- return '<video controls="controls" preload="none" src="' . str_replace(' ','%20',$link) . '" style="width:100%; max-width:' . App::$videowidth . 'px"><a href="' . str_replace(' ','%20',$link) . '">' . $link . '</a></video>';
+ $static_link = get_config('system','video_default_poster','images/video_poster.jpg');
+ if($static_link)
+ $poster = 'poster="' . escape_tags($static_link) . '" ' ;
+
+ return '<video ' . $poster . ' controls="controls" preload="none" src="' . str_replace(' ','%20',$link) . '" style="width:100%; max-width:' . App::$videowidth . 'px"><a href="' . str_replace(' ','%20',$link) . '">' . $link . '</a></video>';
}
// [noparse][i]italic[/i][/noparse] turns into
@@ -428,6 +432,16 @@ function bb_spoilertag($match) {
return '<div onclick="openClose(\'opendiv-' . $rnd . '\'); return false;" class="fakelink">' . $openclose . '</div><blockquote id="opendiv-' . $rnd . '" style="display: none;">' . $text . '</blockquote>';
}
+function bb_summary($match) {
+ $rnd1 = mt_rand();
+ $rnd2 = mt_rand();
+ $rnd3 = mt_rand();
+ $rnd4 = mt_rand();
+
+ return $match[1] . '<div style="display: block;" id="opendiv-' . $rnd2 . '">' . $match[2] . '</div><div style="display: block;" id="opendiv-' . $rnd3 . '" onclick="openClose(\'opendiv-' . $rnd1 . '\'); openClose(\'opendiv-' . $rnd2 . '\'); openClose(\'opendiv-' . $rnd3 . '\'); openClose(\'opendiv-' . $rnd4 . '\'); return false;" class="fakelink view-article">' . t('View article') . '</div><div style="display: none;" id="opendiv-' . $rnd4 . '" onclick="openClose(\'opendiv-' . $rnd1 . '\'); openClose(\'opendiv-' . $rnd2 . '\'); openClose(\'opendiv-' . $rnd3 . '\'); openClose(\'opendiv-' . $rnd4 . '\'); return false;" class="fakelink view-summary">' . t('View summary') . '</div><div id="opendiv-' . $rnd1 . '" style="display: none;">' . $match[3] . '</div>';
+}
+
+
function bb_definitionList($match) {
// $match[1] is the markup styles for the "terms" in the definition list.
// $match[2] is the content between the [dl]...[/dl] tags
@@ -600,29 +614,47 @@ function bb_observer($Text) {
return $Text;
}
+function bb_code_protect($s) {
+ return 'b64.^9e%.' . base64_encode($s) . '.b64.$9e%';
+}
+
+function bb_code_unprotect($s) {
+ return preg_replace_callback('|b64\.\^9e\%\.(.*?)\.b64\.\$9e\%|ism','bb_code_unprotect_sub',$s);
+}
+
+function bb_code_unprotect_sub($match) {
+ return base64_decode($match[1]);
+}
+
function bb_code($match) {
if(strpos($match[0], "<br />"))
- return '<code>' . trim($match[1]) . '</code>';
+ return '<pre><code>' . bb_code_protect(trim($match[1])) . '</code></pre>';
else
- return '<code class="inline-code">' . trim($match[1]) . '</code>';
+ return '<code class="inline-code">' . bb_code_protect(trim($match[1])) . '</code>';
}
function bb_code_options($match) {
if(strpos($match[0], "<br />")) {
$class = "";
+ $pre = true;
} else {
$class = "inline-code";
+ $pre = false;
}
if(strpos($match[1], 'nowrap')) {
$style = "overflow-x: auto; white-space: pre;";
} else {
$style = "";
}
- return '<code class="'. $class .'" style="'. $style .'">' . trim($match[2]) . '</code>';
+ if($pre) {
+ return '<pre><code class="'. $class .'" style="'. $style .'">' . bb_code_protect(trim($match[2])) . '</code></pre>';
+ } else {
+ return '<code class="'. $class .'" style="'. $style .'">' . bb_code_protect(trim($match[2])) . '</code>';
+ }
}
function bb_highlight($match) {
- return text_highlight($match[2],strtolower($match[1]));
+ return bb_code_protect(text_highlight($match[2],strtolower($match[1])));
}
function bb_fixtable_lf($match) {
@@ -812,6 +844,17 @@ function bbcode($Text, $options = []) {
$Text = str_replace(array("\t", " "), array("&nbsp;&nbsp;&nbsp;&nbsp;", "&nbsp;&nbsp;"), $Text);
+
+ // Check for [code] text
+ if (strpos($Text,'[code]') !== false) {
+ $Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/ism", 'bb_code', $Text);
+ }
+
+ // Check for [code options] text
+ if (strpos($Text,'[code ') !== false) {
+ $Text = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism", 'bb_code_options', $Text);
+ }
+
// Set up the parameters for a URL search string
$URLSearchString = "^\[\]";
// Set up the parameters for a MAIL search string
@@ -1052,14 +1095,9 @@ function bbcode($Text, $options = []) {
$Text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/sm", "<span style=\"font-family: $1;\">$2</span>", $Text);
}
- // Check for [code] text
- if (strpos($Text,'[code]') !== false) {
- $Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/ism", 'bb_code', $Text);
- }
- // Check for [code options] text
- if (strpos($Text,'[code ') !== false) {
- $Text = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism", 'bb_code_options', $Text);
+ if(strpos($Text,'[/summary]') !== false) {
+ $Text = preg_replace_callback("/^(.*?)\[summary\](.*?)\[\/summary\](.*?)$/ism", 'bb_summary', $Text);
}
// Check for [spoiler] text
@@ -1273,6 +1311,7 @@ function bbcode($Text, $options = []) {
// replace escaped links in code= blocks
$Text = str_replace('%eY9-!','http', $Text);
+ $Text = bb_code_unprotect($Text);
$Text = preg_replace('/\[\&amp\;([#a-z0-9]+)\;\]/', '&$1;', $Text);
diff --git a/include/channel.php b/include/channel.php
index b9adc588b..a754d3504 100644
--- a/include/channel.php
+++ b/include/channel.php
@@ -1126,8 +1126,7 @@ function channel_export_items($channel_id, $start, $finish) {
/**
* @brief Loads a profile into the App structure.
*
- * The function requires a writeable copy of the main App structure, and the
- * nickname of a valid channel.
+ * The function requires the nickname of a valid channel.
*
* Permissions of the current observer are checked. If a restricted profile is available
* to the current observer, that will be loaded instead of the channel default profile.
@@ -1449,6 +1448,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
'$reddress' => $reddress,
'$rating' => '',
'$contact_block' => $contact_block,
+ '$change_photo' => t('Change your profile photo'),
'$editmenu' => profile_edit_menu($profile['uid'])
));
@@ -1896,8 +1896,9 @@ function is_public_profile() {
function get_profile_fields_basic($filter = 0) {
$profile_fields_basic = (($filter == 0) ? get_config('system','profile_fields_basic') : null);
+
if(! $profile_fields_basic)
- $profile_fields_basic = array('fullname','pdesc','chandesc','comms','gender','dob','dob_tz','address','locality','region','postal_code','country_name','marital','sexual','homepage','hometown','keywords','about','contact');
+ $profile_fields_basic = array('fullname','pdesc','chandesc','comms','gender','dob','dob_tz','region','country_name','marital','sexual','homepage','hometown','keywords','about','contact');
$x = array();
if($profile_fields_basic)
@@ -1912,7 +1913,7 @@ function get_profile_fields_advanced($filter = 0) {
$basic = get_profile_fields_basic($filter);
$profile_fields_advanced = (($filter == 0) ? get_config('system','profile_fields_advanced') : null);
if(! $profile_fields_advanced)
- $profile_fields_advanced = array('partner','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','employment','education');
+ $profile_fields_advanced = array('address','locality','postal_code','partner','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','employment','education');
$x = array();
if($basic)
@@ -2553,10 +2554,10 @@ function channel_remove($channel_id, $local = true, $unset_session = false) {
q("DELETE FROM profile WHERE uid = %d", intval($channel_id));
q("DELETE FROM src WHERE src_channel_id = %d", intval($channel_id));
- $r = q("select resource_id FROM attach WHERE uid = %d", intval($channel_id));
+ $r = q("select hash FROM attach WHERE uid = %d", intval($channel_id));
if($r) {
foreach($r as $rv) {
- attach_delete($channel_id,$rv['resource_id']);
+ attach_delete($channel_id,$rv['hash']);
}
}
diff --git a/include/conversation.php b/include/conversation.php
index 77694deb3..6374267eb 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -974,7 +974,7 @@ function author_is_pmable($xchan, $abook) {
if($x['result'] !== 'unset')
return $x['result'];
- if($xchan['xchan_network'] === 'zot')
+ if($xchan['xchan_network'] === 'zot' && get_observer_hash())
return true;
return false;
@@ -1005,7 +1005,7 @@ function thread_author_menu($item, $mode = '') {
$contact = App::$contacts[$item['author_xchan']];
else
if($local_channel && $item['author']['xchan_addr'])
- $follow_url = z_root() . '/follow/?f=&url=' . urlencode($item['author']['xchan_addr']);
+ $follow_url = z_root() . '/follow/?f=&url=' . urlencode($item['author']['xchan_addr']) . '&interactive=0';
if($item['uid'] > 0 && author_is_pmable($item['author'],$contact)) {
@@ -1051,8 +1051,8 @@ function thread_author_menu($item, $mode = '') {
'menu' => 'follow',
'title' => t('Connect'),
'icon' => 'fw',
- 'action' => '',
- 'href' => $follow_url
+ 'action' => 'doFollowAuthor(\'' . $follow_url . '\'); return false;',
+ 'href' => '#',
];
}
diff --git a/include/crypto.php b/include/crypto.php
index b990b18d9..1040ac29b 100644
--- a/include/crypto.php
+++ b/include/crypto.php
@@ -31,19 +31,6 @@ function rsa_verify($data,$sig,$key,$alg = 'sha256') {
return (($verify > 0) ? true : false);
}
-function pkcs5_pad ($text, $blocksize)
-{
- $pad = $blocksize - (strlen($text) % $blocksize);
- return $text . str_repeat(chr($pad), $pad);
-}
-
-function pkcs5_unpad($text)
-{
- $pad = ord($text{strlen($text)-1});
- if ($pad > strlen($text)) return false;
- if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
- return substr($text, 0, -1 * $pad);
-}
function AES256CBC_encrypt($data,$key,$iv) {
@@ -132,10 +119,27 @@ function crypto_encapsulate($data,$pubkey,$alg='aes256cbc') {
}
function other_encapsulate($data,$pubkey,$alg) {
+
if(! $pubkey)
logger('no key. data: ' . $data);
- $fn = strtoupper($alg) . '_encrypt';
+ // This default will change in the future. For now make it backward compatible.
+
+ $padding = OPENSSL_PKCS1_PADDING;
+ $base = $alg;
+
+ $exts = explode('.',$alg);
+ if(count($exts) > 1) {
+ switch($exts[1]) {
+ case 'oaep':
+ $padding = OPENSSL_PKCS1_OAEP_PADDING;
+ break;
+ }
+ $base = $exts[0];
+ }
+
+
+ $fn = strtoupper($base) . '_encrypt';
if(function_exists($fn)) {
// A bit hesitant to use openssl_random_pseudo_bytes() as we know
@@ -153,14 +157,14 @@ function other_encapsulate($data,$pubkey,$alg) {
$iv = openssl_random_pseudo_bytes(256);
$result['data'] = base64url_encode($fn($data,$key,$iv),true);
// log the offending call so we can track it down
- if(! openssl_public_encrypt($key,$k,$pubkey)) {
+ if(! openssl_public_encrypt($key,$k,$pubkey,$padding)) {
$x = debug_backtrace();
logger('RSA failed. ' . print_r($x[0],true));
}
$result['alg'] = $alg;
$result['key'] = base64url_encode($k,true);
- openssl_public_encrypt($iv,$i,$pubkey);
+ openssl_public_encrypt($iv,$i,$pubkey,$padding);
$result['iv'] = base64url_encode($i,true);
return $result;
}
@@ -179,7 +183,7 @@ function crypto_methods() {
// The actual methods are responsible for deriving the actual key/iv from the provided parameters;
// possibly by truncation or segmentation - though many other methods could be used.
- $r = [ 'aes256ctr', 'camellia256cfb', 'cast5cfb', 'aes256cbc', 'aes128cbc', 'cast5cbc' ];
+ $r = [ 'aes256ctr.oaep', 'camellia256cfb.oaep', 'cast5cfb.oaep', 'aes256ctr', 'camellia256cfb', 'cast5cfb', 'aes256cbc', 'aes128cbc', 'cast5cbc' ];
call_hooks('crypto_methods',$r);
return $r;
@@ -220,6 +224,7 @@ function aes_encapsulate($data,$pubkey) {
function crypto_unencapsulate($data,$prvkey) {
if(! $data)
return;
+
$alg = ((array_key_exists('alg',$data)) ? $data['alg'] : 'aes256cbc');
if($alg === 'aes256cbc')
return aes_unencapsulate($data,$prvkey);
@@ -229,10 +234,26 @@ function crypto_unencapsulate($data,$prvkey) {
}
function other_unencapsulate($data,$prvkey,$alg) {
- $fn = strtoupper($alg) . '_decrypt';
+
+ // This default will change in the future. For now make it backward compatible.
+
+ $padding = OPENSSL_PKCS1_PADDING;
+ $base = $alg;
+
+ $exts = explode('.',$alg);
+ if(count($exts) > 1) {
+ switch($exts[1]) {
+ case 'oaep':
+ $padding = OPENSSL_PKCS1_OAEP_PADDING;
+ break;
+ }
+ $base = $exts[0];
+ }
+
+ $fn = strtoupper($base) . '_decrypt';
if(function_exists($fn)) {
- openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey);
- openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey);
+ openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey,$padding);
+ openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey,$padding);
return $fn(base64url_decode($data['data']),$k,$i);
}
else {
@@ -282,37 +303,6 @@ function new_keypair($bits) {
}
-function pkcs1to8($oldkey,$len) {
-
- if($len == 4096)
- $c = 'g';
- if($len == 2048)
- $c = 'Q';
-
- if(strstr($oldkey,'BEGIN PUBLIC'))
- return $oldkey;
-
- $oldkey = str_replace('-----BEGIN RSA PUBLIC KEY-----', '', $oldkey);
- $oldkey = trim(str_replace('-----END RSA PUBLIC KEY-----', '', $oldkey));
- $key = 'MIICIjANBgkqhkiG9w0BAQEFAAOCA' . $c . '8A' . str_replace("\n", '', $oldkey);
- $key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($key, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
- return $key;
-}
-
-function pkcs8to1($oldkey,$len) {
-
- if(strstr($oldkey,'BEGIN RSA'))
- return $oldkey;
-
- $oldkey = str_replace('-----BEGIN PUBLIC KEY-----', '', $oldkey);
- $oldkey = trim(str_replace('-----END PUBLIC KEY-----', '', $oldkey));
- $key = str_replace("\n",'',$oldkey);
- $key = substr($key,32);
- $key = "-----BEGIN RSA PUBLIC KEY-----\n" . wordwrap($key, 64, "\n", true) . "\n-----END RSA PUBLIC KEY-----";
- return $key;
-}
-
-
function DerToPem($Der, $Private=false)
{
//Encode:
diff --git a/include/datetime.php b/include/datetime.php
index 0fcd957be..766c90d16 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -93,16 +93,6 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d
return $d->format($fmt);
}
- // Slight hackish adjustment so that 'zero' datetime actually returns what is intended
- // otherwise we end up with -0001-11-30 ...
- // add 32 days so that we at least get year 00, and then hack around the fact that
- // months and days always start with 1.
-
-// if(substr($s,0,10) == '0000-00-00') {
-// $d = new DateTime($s . ' + 32 days', new DateTimeZone('UTC'));
-// return str_replace('1', '0', $d->format($fmt));
-// }
-
try {
$from_obj = new DateTimeZone($from);
} catch(Exception $e) {
@@ -135,70 +125,20 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d
*/
function dob($dob) {
- list($year, $month, $day) = sscanf($dob, '%4d-%2d-%2d');
- $f = get_config('system', 'birthday_input_format');
- if (! $f)
- $f = 'ymd';
-
- if ($dob === '0000-00-00')
+ if ($dob === '0000-00-00' || $dob === '')
$value = '';
else
$value = (($year) ? datetime_convert('UTC','UTC',$dob,'Y-m-d') : datetime_convert('UTC','UTC',$dob,'m-d'));
- $o = replace_macros(get_markup_template("field_input.tpl"), array('$field' => array(
- 'dob',
- t('Birthday'),
- $value,
- ((intval($value)) ? t('Age: ') . age($value,App::$user['timezone'],App::$user['timezone']) : ''),
- '',
- 'placeholder="' . t('YYYY-MM-DD or MM-DD') .'"'
- )));
-
+ $o = replace_macros(get_markup_template("field_input.tpl"), [
+ '$field' => [ 'dob', t('Birthday'), $value, ((intval($value)) ? t('Age: ') . age($value,App::$user['timezone'],App::$user['timezone']) : ''), '', 'placeholder="' . t('YYYY-MM-DD or MM-DD') .'"' ]
+ ]);
-// if ($dob && $dob != '0000-00-00')
-// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),mktime(0,0,0,$month,$day,$year),'dob');
-// else
-// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),false,'dob');
return $o;
}
/**
- * @brief Returns a date selector.
- *
- * @see datetimesel()
- * @param string $format
- * format string, e.g. 'ymd' or 'mdy'. Not currently supported
- * @param DateTime $min
- * unix timestamp of minimum date
- * @param DateTime $max
- * unix timestap of maximum date
- * @param DateTime $default
- * unix timestamp of default date
- * @param string $id
- * id and name of datetimepicker (defaults to "datetimepicker")
- */
-function datesel($format, $min, $max, $default, $id = 'datepicker') {
- return datetimesel($format, $min, $max, $default, '', $id, true, false, '', '');
-}
-
-/**
- * @brief Returns a time selector.
- *
- * @param string $format
- * format string, e.g. 'ymd' or 'mdy'. Not currently supported
- * @param string $h
- * already selected hour
- * @param string $m
- * already selected minute
- * @param string $id
- * id and name of datetimepicker (defaults to "timepicker")
- */
-function timesel($format, $h, $m, $id='timepicker') {
- return datetimesel($format, new DateTime(), new DateTime(), new DateTime("$h:$m"), '', $id, false, true);
-}
-
-/**
* @brief Returns a datetime selector.
*
* @param string $format
@@ -449,12 +389,7 @@ function cal($y = 0, $m = 0, $links = false, $class='') {
// month table - start at 1 to match human usage.
- $mtab = array(' ',
- 'January','February','March',
- 'April','May','June',
- 'July','August','September',
- 'October','November','December'
- );
+ $mtab = [ ' ', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];
$thisyear = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
$thismonth = datetime_convert('UTC',date_default_timezone_get(),'now','m');
@@ -463,7 +398,7 @@ function cal($y = 0, $m = 0, $links = false, $class='') {
if (! $m)
$m = intval($thismonth);
- $dn = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
+ $dn = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
$f = get_first_dim($y, $m);
$l = get_dim($y, $m);
$d = 1;
@@ -569,17 +504,17 @@ function update_birthdays() {
if (! perm_is_allowed($rr['abook_channel'], $rr['xchan_hash'], 'send_stream'))
continue;
- $ev = array();
- $ev['uid'] = $rr['abook_channel'];
- $ev['account'] = $rr['abook_account'];
- $ev['event_xchan'] = $rr['xchan_hash'];
- $ev['dtstart'] = datetime_convert('UTC', 'UTC', $rr['abook_dob']);
- $ev['dtend'] = datetime_convert('UTC', 'UTC', $rr['abook_dob'] . ' + 1 day ');
- $ev['adjust'] = intval(feature_enabled($rr['abook_channel'],'smart_birthdays'));
- $ev['summary'] = sprintf( t('%1$s\'s birthday'), $rr['xchan_name']);
- $ev['description'] = sprintf( t('Happy Birthday %1$s'),
- '[zrl=' . $rr['xchan_url'] . ']' . $rr['xchan_name'] . '[/zrl]') ;
- $ev['etype'] = 'birthday';
+ $ev = [
+ 'uid' => $rr['abook_channel'],
+ 'account' => $rr['abook_account'],
+ 'event_xchan' => $rr['xchan_hash'],
+ 'dtstart' => datetime_convert('UTC', 'UTC', $rr['abook_dob']),
+ 'dtend' => datetime_convert('UTC', 'UTC', $rr['abook_dob'] . ' + 1 day '),
+ 'adjust' => intval(feature_enabled($rr['abook_channel'],'smart_birthdays')),
+ 'summary' => sprintf( t('%1$s\'s birthday'), $rr['xchan_name']),
+ 'description' => sprintf( t('Happy Birthday %1$s'), '[zrl=' . $rr['xchan_url'] . ']' . $rr['xchan_name'] . '[/zrl]'),
+ 'etype' => 'birthday',
+ ];
$z = event_store_event($ev);
if ($z) {
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php
index 7e925a106..b3298b673 100755
--- a/include/dba/dba_driver.php
+++ b/include/dba/dba_driver.php
@@ -1,15 +1,20 @@
<?php
+/**
+ * @file dba_driver.php
+ * @brief Some database related functions and database classes.
+ *
+ * This file contains the abstract database driver class dba_driver, the
+ * database class DBA and some functions for working with databases.
+ */
+/**
+ * @brief Database classs with database factory method.
+ *
+ * The factory will return a database driver which is an implementation of the
+ * abstract dba_driver class.
+ */
class DBA {
- /**
- * @file dba_driver.php
- * @brief some database related functions and abstract driver class.
- *
- * This file contains the abstract database driver class dba_driver and some
- * functions for working with databases.
- */
-
static public $dba = null;
static public $dbtype = null;
static public $scheme = 'mysql';
@@ -21,7 +26,6 @@ class DBA {
static public $tquot = "`";
-
/**
* @brief Returns the database driver object.
*
@@ -34,14 +38,11 @@ class DBA {
* @param bool $install Defaults to false
* @return null|dba_driver A database driver object (dba_pdo) or null if no driver found.
*/
-
static public function dba_factory($server,$port,$user,$pass,$db,$dbtype,$install = false) {
self::$dba = null;
-
self::$dbtype = intval($dbtype);
-
if(self::$dbtype == DBTYPE_POSTGRES) {
if(!($port))
$port = 5432;
@@ -50,7 +51,6 @@ class DBA {
self::$utc_now = "now() at time zone 'UTC'";
self::$tquot = '"';
self::$scheme = 'pgsql';
-
}
else {
@@ -66,40 +66,27 @@ class DBA {
require_once('include/dba/dba_pdo.php');
self::$dba = new dba_pdo($server,self::$scheme,$port,$user,$pass,$db,$install);
-
- if(is_object(self::$dba) && self::$dba->connected) {
-
- if(strpbrk($server,':;')) {
- $dsn = $server;
- }
- else {
- $dsn = self::$scheme . ':host=' . $server . (intval($port) ? '' : ';port=' . $port);
- }
- $dsn .= ';dbname=' . $db;
-
-
- self::$dba->pdo_set(array($dsn,$user,$pass));
- }
define('NULL_DATE', self::$null_date);
define('ACTIVE_DBTYPE', self::$dbtype);
define('TQUOT', self::$tquot);
+
return self::$dba;
}
}
/**
- * @brief abstract database driver class.
+ * @brief Abstract database driver class.
*
- * This class gets extended by the real database driver classes, e.g. dba_mysql,
- * dba_mysqli.
+ * This class gets extended by the real database driver class. We used to have
+ * dba_mysql, dba_mysqli or dba_postgres, but we moved to PDO and the only
+ * implemented driver is dba_pdo.
*/
abstract class dba_driver {
// legacy behavior
public $db;
- protected $pdo = array();
public $debug = 0;
public $connected = false;
@@ -111,6 +98,7 @@ abstract class dba_driver {
* This abstract function needs to be implemented in the real driver.
*
* @param string $server DB server name
+ * @param string $scheme DB scheme
* @param string $port DB port
* @param string $user DB username
* @param string $pass DB password
@@ -166,6 +154,7 @@ abstract class dba_driver {
$platform_name = \Zotlabs\Lib\System::get_platform_name();
if(file_exists('install/' . $platform_name . '/' . \DBA::$install_script))
return 'install/' . $platform_name . '/' . \DBA::$install_script;
+
return 'install/' . \DBA::$install_script;
}
@@ -173,7 +162,6 @@ abstract class dba_driver {
return \DBA::$tquot;
}
-
function utcnow() {
return \DBA::$utc_now;
}
@@ -232,19 +220,12 @@ abstract class dba_driver {
return $str;
}
- function pdo_set($x) {
- $this->pdo = $x;
- }
-
- function pdo_get() {
- return $this->pdo;
- }
-
} // end abstract dba_driver class
-
+//
// Procedural functions
+//
function printable($s) {
$s = preg_replace("~([\x01-\x08\x0E-\x0F\x10-\x1F\x7F-\xFF])~",".", $s);
@@ -275,7 +256,7 @@ function dbg($state) {
* wrapping with intval().
*
* @param string $str A string to pass to a DB query
- * @return Return an escaped string of the value to pass to a DB query.
+ * @return string Return an escaped string of the value to pass to a DB query.
*/
function dbesc($str) {
@@ -298,6 +279,7 @@ function dbunescbin($str) {
function dbescdate($date) {
if(is_null_date($date))
return \DBA::$dba->escape(NULL_DATE);
+
return \DBA::$dba->escape($date);
}
@@ -321,22 +303,26 @@ function db_concat($fld, $sep) {
return \DBA::$dba->concat($fld, $sep);
}
+function db_use_index($str) {
+ return \DBA::$dba->use_index($str);
+}
+
/**
* @brief Execute a SQL query with printf style args.
*
* printf style arguments %s and %d are replaced with variable arguments, which
* should each be appropriately dbesc() or intval().
+ *
* SELECT queries return an array of results or false if SQL or DB error. Other
* queries return true if the command was successful or false if it wasn't.
*
* Example:
- * $r = q("SELECT * FROM %s WHERE `uid` = %d",
- * 'user', 1);
+ * @code{.php}$r = q("SELECT * FROM %s WHERE `uid` = %d",
+ * 'user', 1);@endcode
*
* @param string $sql The SQL query to execute
* @return bool|array
*/
-
function q($sql) {
$args = func_get_args();
@@ -355,8 +341,8 @@ function q($sql) {
}
/*
- * This will happen occasionally trying to store the
- * session data after abnormal program termination
+ * This will happen occasionally trying to store the
+ * session data after abnormal program termination
*/
db_logger('dba: no database: ' . print_r($args,true),LOGGER_NORMAL,LOG_CRIT);
@@ -385,8 +371,8 @@ function dbq($sql) {
// Caller is responsible for ensuring that any integer arguments to
// dbesc_array are actually integers and not malformed strings containing
-// SQL injection vectors. All integer array elements should be specifically
-// cast to int to avoid trouble.
+// SQL injection vectors. All integer array elements should be specifically
+// cast to int to avoid trouble.
function dbesc_array_cb(&$item, $key) {
if(is_string($item)) {
@@ -419,7 +405,7 @@ function dbesc_array(&$arr) {
function db_getfunc($f) {
$lookup = array(
'rand'=>array(
- DBTYPE_MYSQL=>'RAND()',
+ DBTYPE_MYSQL=>'RAND()',
DBTYPE_POSTGRES=>'RANDOM()'
),
'utc_timestamp'=>array(
diff --git a/include/dba/dba_mysql.php b/include/dba/dba_mysql.php
deleted file mode 100755
index 8b51cf578..000000000
--- a/include/dba/dba_mysql.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-require_once('include/dba/dba_driver.php');
-
-
-class dba_mysql extends dba_driver {
-
- function connect($server, $scheme, $port, $user,$pass,$db) {
- $this->db = mysql_connect($server.":".$port,$user,$pass);
- if($this->db && mysql_select_db($db,$this->db)) {
- $this->connected = true;
- }
- if($this->connected) {
- return true;
- }
- return false;
- }
-
-
- function q($sql) {
- if((! $this->db) || (! $this->connected))
- return false;
-
- $this->error = '';
- $result = @mysql_query($sql,$this->db);
-
-
- if(mysql_errno($this->db))
- $this->error = mysql_error($this->db);
-
- if($result === false || $this->error) {
- logger('dba_mysql: ' . printable($sql) . ' returned false.' . "\n" . $this->error);
- if(file_exists('dbfail.out'))
- file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND);
- }
-
- if(($result === true) || ($result === false))
- return $result;
-
- $r = array();
- if(mysql_num_rows($result)) {
- while($x = mysql_fetch_array($result,MYSQL_ASSOC))
- $r[] = $x;
- mysql_free_result($result);
- if($this->debug)
- logger('dba_mysql: ' . printable(print_r($r,true)));
- }
- return $r;
- }
-
- function escape($str) {
- if($this->db && $this->connected) {
- return @mysql_real_escape_string($str,$this->db);
- }
- }
-
- function close() {
- if($this->db)
- mysql_close($this->db);
- $this->connected = false;
- }
-
- function getdriver() {
- return 'mysql';
- }
-
-}
diff --git a/include/dba/dba_mysqli.php b/include/dba/dba_mysqli.php
deleted file mode 100755
index 165c8e969..000000000
--- a/include/dba/dba_mysqli.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php /** @file */
-
-require_once('include/dba/dba_driver.php');
-
-class dba_mysqli extends dba_driver {
-
- function connect($server,$scheme,$port,$user,$pass,$db) {
- if($port)
- $this->db = new mysqli($server,$user,$pass,$db, $port);
- else
- $this->db = new mysqli($server,$user,$pass,$db);
-
- if($this->db->connect_error) {
- $this->connected = false;
- $this->error = $this->db->connect_error;
-
- if(file_exists('dbfail.out')) {
- file_put_contents('dbfail.out', datetime_convert() . "\nConnect: " . $this->error . "\n", FILE_APPEND);
- }
-
- return false;
- }
- else {
- $this->connected = true;
- return true;
- }
- }
-
- function q($sql) {
- if((! $this->db) || (! $this->connected))
- return false;
-
- $this->error = '';
- $result = $this->db->query($sql);
-
- if($this->db->errno)
- $this->error = $this->db->error;
-
-
- if($this->error) {
- db_logger('dba_mysqli: ERROR: ' . printable($sql) . "\n" . $this->error, LOGGER_NORMAL, LOG_ERR);
- if(file_exists('dbfail.out')) {
- file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . "\n" . $this->error . "\n", FILE_APPEND);
- }
- }
-
- if(($result === true) || ($result === false)) {
- if($this->debug) {
- db_logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returns ' . (($result) ? 'true' : 'false'), LOGGER_NORMAL,(($result) ? LOG_INFO : LOG_ERR));
- }
- return $result;
- }
-
- if($this->debug) {
- db_logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returned ' . $result->num_rows . ' results.', LOGGER_NORMAL, LOG_INFO);
- }
-
- $r = array();
- if($result->num_rows) {
- while($x = $result->fetch_array(MYSQLI_ASSOC))
- $r[] = $x;
- $result->free_result();
- if($this->debug) {
- db_logger('dba_mysqli: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO);
- }
- }
- return $r;
- }
-
- function escape($str) {
- if($this->db && $this->connected) {
- return @$this->db->real_escape_string($str);
- }
- }
-
- function close() {
- if($this->db)
- $this->db->close();
- $this->connected = false;
- }
-
- function getdriver() {
- return 'mysqli';
- }
-
-} \ No newline at end of file
diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php
index f119d8926..f24c5381a 100755
--- a/include/dba/dba_pdo.php
+++ b/include/dba/dba_pdo.php
@@ -1,23 +1,30 @@
-<?php /** @file */
+<?php
-require_once('include/dba/dba_driver.php');
+require_once 'include/dba/dba_driver.php';
+/**
+ * @brief PDO based database driver.
+ *
+ */
class dba_pdo extends dba_driver {
-
public $driver_dbtype = null;
- function connect($server,$scheme,$port,$user,$pass,$db) {
-
+ /**
+ * {@inheritDoc}
+ * @see dba_driver::connect()
+ */
+ function connect($server, $scheme, $port, $user, $pass, $db) {
+
$this->driver_dbtype = $scheme;
if(strpbrk($server,':;')) {
$dsn = $server;
}
else {
- $dsn = $this->driver_dbtype . ':host=' . $server . (intval($port) ? '' : ';port=' . $port);
+ $dsn = $this->driver_dbtype . ':host=' . $server . (intval($port) ? ';port=' . $port : '');
}
-
+
$dsn .= ';dbname=' . $db;
try {
@@ -36,10 +43,19 @@ class dba_pdo extends dba_driver {
$this->q("SET standard_conforming_strings = 'off'; SET backslash_quote = 'on';");
$this->connected = true;
- return true;
+ return true;
}
+ /**
+ * {@inheritDoc}
+ * @see dba_driver::q()
+ *
+ * @return bool|array|PDOStatement
+ * - \b false if not connected or PDOException occured on query
+ * - \b array with results on a SELECT query
+ * - \b PDOStatement on a non SELECT SQL query
+ */
function q($sql) {
if((! $this->db) || (! $this->connected))
return false;
@@ -50,14 +66,15 @@ class dba_pdo extends dba_driver {
}
}
+ $result = null;
$this->error = '';
- $select = ((stripos($sql,'select') === 0) ? true : false);
+ $select = ((stripos($sql, 'select') === 0) ? true : false);
try {
$result = $this->db->query($sql, PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
-
+
$this->error = $e->getMessage();
if($this->error) {
db_logger('dba_pdo: ERROR: ' . printable($sql) . "\n" . $this->error, LOGGER_NORMAL, LOG_ERR);
@@ -82,11 +99,10 @@ class dba_pdo extends dba_driver {
}
if($this->debug) {
- db_logger('dba_pdo: DEBUG: ' . printable($sql) . ' returned ' . count($r) . ' results.', LOGGER_NORMAL, LOG_INFO);
+ db_logger('dba_pdo: DEBUG: ' . printable($sql) . ' returned ' . count($r) . ' results.', LOGGER_NORMAL, LOG_INFO);
db_logger('dba_pdo: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO);
}
-
return (($this->error) ? false : $r);
}
@@ -99,9 +115,10 @@ class dba_pdo extends dba_driver {
function close() {
if($this->db)
$this->db = null;
+
$this->connected = false;
}
-
+
function concat($fld,$sep) {
if($this->driver_dbtype === 'pgsql') {
return 'string_agg(' . $fld . ',\'' . $sep . '\')';
@@ -111,6 +128,15 @@ class dba_pdo extends dba_driver {
}
}
+ function use_index($str) {
+ if($this->driver_dbtype === 'pgsql') {
+ return '';
+ }
+ else {
+ return 'USE INDEX( ' . $str . ')';
+ }
+ }
+
function quote_interval($txt) {
if($this->driver_dbtype === 'pgsql') {
return "'$txt'";
@@ -131,7 +157,7 @@ class dba_pdo extends dba_driver {
return $this->escape($str);
}
}
-
+
function unescapebin($str) {
if($this->driver_dbtype === 'pgsql' && (! is_null($str))) {
$x = '';
@@ -154,4 +180,4 @@ class dba_pdo extends dba_driver {
return 'pdo';
}
-} \ No newline at end of file
+}
diff --git a/include/dba/dba_postgres.php b/include/dba/dba_postgres.php
deleted file mode 100644
index 560d8da60..000000000
--- a/include/dba/dba_postgres.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-require_once('include/dba/dba_driver.php');
-
-
-class dba_postgres extends dba_driver {
- const INSTALL_SCRIPT='install/schema_postgres.sql';
- const NULL_DATE = '0001-01-01 00:00:00';
- const UTC_NOW = "now() at time zone 'UTC'";
- const TQUOT = '"';
-
- function connect($server,$scheme,$port,$user,$pass,$db) {
- if(!$port) $port = 5432;
- $connstr = 'host=' . $server . ' port='.$port . ' user=' . $user . ' password=' . $pass . ' dbname='. $db;
- $this->db = pg_connect($connstr);
- if($this->db !== false) {
- $this->connected = true;
- } else {
- $this->connected = false;
- }
- $this->q("SET standard_conforming_strings = 'off'; SET backslash_quote = 'on';"); // emulate mysql string escaping to prevent massive code-clobber
- return $this->connected;
- }
-
- function q($sql) {
- if((! $this->db) || (! $this->connected))
- return false;
-
- if(!strpos($sql, ';'))
- $sql .= ';';
-
- if(strpos($sql, '`')) // this is a hack. quoted identifiers should be replaced everywhere in the code with dbesc_identifier(), remove this once it is
- $sql = str_replace('`', '"', $sql);
-
- $this->error = '';
- $result = @pg_query($this->db, $sql);
- if(file_exists('db-allqueries.out')) {
- $bt = debug_backtrace();
- $trace = array();
- foreach($bt as $frame) {
- if(!empty($frame['file']) && @strstr($frame['file'], $_SERVER['DOCUMENT_ROOT']))
- $frame['file'] = substr($frame['file'], strlen($_SERVER['DOCUMENT_ROOT'])+1);
-
- $trace[] = $frame['file'] . ':' . $frame['function'] . '():' . $frame['line'] ;
- }
- $compact = join(', ', $trace);
- file_put_contents('db-allqueries.out', datetime_convert() . ": " . $sql . ' is_resource: '.var_export(is_resource($result), true).', backtrace: '.$compact."\n\n", FILE_APPEND);
- }
-
- if($result === false)
- $this->error = pg_last_error($this->db);
-
- if($result === false || $this->error) {
- //db_logger('dba_postgres: ' . printable($sql) . ' returned false.' . "\n" . $this->error);
- if(file_exists('dbfail.out'))
- file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND);
- }
-
- if(($result === true) || ($result === false))
- return $result;
-
- if(pg_result_status($result) == PGSQL_COMMAND_OK)
- return true;
-
- $r = array();
- if(pg_num_rows($result)) {
- while($x = pg_fetch_array($result, null, PGSQL_ASSOC))
- $r[] = $x;
- pg_free_result($result);
- if($this->debug)
- db_logger('dba_postgres: ' . printable(print_r($r,true)));
- }
- return $r;
- }
-
- function escape($str) {
- if($this->db && $this->connected) {
- $x = @pg_escape_string($this->db, $str);
- return $x;
- }
- }
-
- function escapebin($str) {
- return pg_escape_bytea($str);
- }
-
- function unescapebin($str) {
- return pg_unescape_bytea($str);
- }
-
- function close() {
- if($this->db)
- pg_close($this->db);
- $this->connected = false;
- }
-
- function quote_interval($txt) {
- return "'$txt'";
- }
-
- function escape_identifier($str) {
- return pg_escape_identifier($this->db, $str);
- }
-
- function optimize_table($table) {
- // perhaps do some equivalent thing here, vacuum, etc? I think this is the DBA's domain anyway. Applications should not need to muss with this.
- // for now do nothing without a compelling reason. function overrides default legacy mysql.
- }
-
- function concat($fld, $sep) {
- return 'string_agg(' . $fld . ',\'' . $sep . '\')';
- }
-
- function getdriver() {
- return 'pgsql';
- }
-} \ No newline at end of file
diff --git a/include/event.php b/include/event.php
index 282c1a9d7..1077a3c64 100644
--- a/include/event.php
+++ b/include/event.php
@@ -6,6 +6,8 @@
use Sabre\VObject;
+require_once('include/bbcode.php');
+
/**
* @brief Returns an event as HTML.
*
@@ -14,7 +16,6 @@ use Sabre\VObject;
*/
function format_event_html($ev) {
- require_once('include/bbcode.php');
if(! ((is_array($ev)) && count($ev)))
return '';
@@ -192,7 +193,7 @@ function format_todo_ical($ev) {
function format_ical_text($s) {
- require_once('include/bbcode.php');
+
require_once('include/html2plain.php');
$s = html2plain(bbcode($s));
@@ -983,7 +984,6 @@ function event_store_item($arr, $event) {
require_once('include/datetime.php');
require_once('include/items.php');
- require_once('include/bbcode.php');
$item = null;
@@ -1200,6 +1200,13 @@ function event_store_item($arr, $event) {
));
}
+ // propagate the event resource_id so that posts containing it are easily searchable in downstream copies
+ // of the item which have not stored the actual event. Required for Diaspora event federation as Diaspora
+ // event_participation messages refer to the event resource_id as a parent, while out own event attendance
+ // activities refer to the item message_id as the parent.
+
+ set_iconfig($item_arr, 'system','event_id',$event['event_hash'],true);
+
$res = item_store($item_arr);
$item_id = $res['item_id'];
diff --git a/include/features.php b/include/features.php
index 8601ff79e..993266977 100644
--- a/include/features.php
+++ b/include/features.php
@@ -54,14 +54,6 @@ function get_features($filtered = true) {
t('General Features'),
- [
- 'multi_profiles',
- t('Multiple Profiles'),
- t('Ability to create multiple profiles'),
- false,
- get_config('feature_lock','multi_profiles'),
- feature_level('multi_profiles',3),
- ],
[
'advanced_profiles',
@@ -126,7 +118,7 @@ function get_features($filtered = true) {
feature_level('cards',1),
],
-/* reserved, work in progress
+
[
'articles',
t('Articles'),
@@ -135,7 +127,7 @@ function get_features($filtered = true) {
get_config('feature_lock','articles'),
feature_level('articles',1),
],
-*/
+
[
'nav_channel_select',
t('Navigation Channel Select'),
@@ -163,14 +155,6 @@ function get_features($filtered = true) {
feature_level('ajaxchat',1),
],
- [
- 'permcats',
- t('Permission Groups'),
- t('Provide alternate connection permission roles.'),
- false,
- get_config('feature_lock','permcats'),
- feature_level('permcats',2),
- ],
[
'smart_birthdays',
@@ -190,6 +174,16 @@ function get_features($filtered = true) {
feature_level('event_tz_select',2),
],
+
+ [
+ 'premium_channel',
+ t('Premium Channel'),
+ t('Allows you to set restrictions and terms on those that connect with your channel'),
+ false,
+ get_config('feature_lock','premium_channel'),
+ feature_level('premium_channel',4),
+ ],
+
[
'advanced_dirsearch',
t('Advanced Directory Search'),
@@ -209,6 +203,58 @@ function get_features($filtered = true) {
],
],
+
+ 'access_control' => [
+ t('Access Control and Permissions'),
+
+ [
+ 'groups',
+ t('Privacy Groups'),
+ t('Enable management and selection of privacy groups'),
+ true,
+ get_config('feature_lock','groups'),
+ feature_level('groups',0),
+ ],
+
+ [
+ 'multi_profiles',
+ t('Multiple Profiles'),
+ t('Ability to create multiple profiles'),
+ false,
+ get_config('feature_lock','multi_profiles'),
+ feature_level('multi_profiles',3),
+ ],
+
+
+ [
+ 'permcats',
+ t('Permission Groups'),
+ t('Provide alternate connection permission roles.'),
+ false,
+ get_config('feature_lock','permcats'),
+ feature_level('permcats',2),
+ ],
+
+ [
+ 'oauth_clients',
+ t('OAuth Clients'),
+ t('Manage authenticatication tokens for mobile and remote apps.'),
+ false,
+ get_config('feature_lock','oauth_clients'),
+ feature_level('oauth_clients',1),
+ ],
+
+ [
+ 'access_tokens',
+ t('Access Tokens'),
+ t('Create access tokens so that non-members can access private content.'),
+ false,
+ get_config('feature_lock','access_tokens'),
+ feature_level('access_tokens',2),
+ ],
+
+ ],
+
// Post composition
'composition' => [
@@ -302,14 +348,6 @@ function get_features($filtered = true) {
feature_level('archives',1),
],
- [
- 'groups',
- t('Privacy Groups'),
- t('Enable management and selection of privacy groups'),
- true,
- get_config('feature_lock','groups'),
- feature_level('groups',0),
- ],
[
'savedsearch',
@@ -374,15 +412,6 @@ function get_features($filtered = true) {
t('Post/Comment Tools'),
[
- 'markdown',
- t('Markdown'),
- t('Use markdown for editing posts'),
- false,
- get_config('feature_lock','markdown'),
- feature_level('markdown',2),
- ],
-
- [
'commtag',
t('Community Tagging'),
t('Ability to tag existing posts'),
@@ -447,16 +476,10 @@ function get_features($filtered = true) {
],
];
+ $x = [ 'features' => $arr, ];
+ call_hooks('get_features',$x);
- $arr['general'][] = [
- 'premium_channel',
- t('Premium Channel'),
- t('Allows you to set restrictions and terms on those that connect with your channel'),
- false,
- get_config('feature_lock','premium_channel'),
- feature_level('premium_channel',4),
- ];
-
+ $arr = $x['features'];
$techlevel = get_account_techlevel();
@@ -490,6 +513,6 @@ function get_features($filtered = true) {
else {
$narr = $arr;
}
- call_hooks('get_features',$narr);
+
return $narr;
}
diff --git a/include/feedutils.php b/include/feedutils.php
index 4638ef66a..369193fce 100644
--- a/include/feedutils.php
+++ b/include/feedutils.php
@@ -15,15 +15,6 @@
*/
function get_public_feed($channel, $params) {
-/* $type = 'xml';
- $begin = NULL_DATE;
- $end = '';
- $start = 0;
- $records = 40;
- $direction = 'desc';
- $pages = 0;
-*/
-
if(! $params)
$params = [];
@@ -106,23 +97,15 @@ function get_feed_for($channel, $observer_hash, $params) {
$owner = atom_render_author('zot:owner',$channel);
$atom .= replace_macros($feed_template, array(
- '$version' => xmlify(Zotlabs\Lib\System::get_project_version()),
- '$red' => xmlify(Zotlabs\Lib\System::get_platform_name()),
- '$feed_id' => xmlify($channel['xchan_url']),
- '$feed_title' => xmlify($channel['channel_name']),
- '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
- '$author' => $feed_author,
- '$owner' => $owner,
- '$name' => xmlify($channel['channel_name']),
- '$profile_page' => xmlify($channel['xchan_url']),
- '$mimephoto' => xmlify($channel['xchan_photo_mimetype']),
- '$photo' => xmlify($channel['xchan_photo_l']),
- '$thumb' => xmlify($channel['xchan_photo_m']),
- '$picdate' => '',
- '$uridate' => '',
- '$namdate' => '',
- '$birthday' => '',
- '$community' => '',
+ '$version' => xmlify(Zotlabs\Lib\System::get_project_version()),
+ '$generator' => xmlify(Zotlabs\Lib\System::get_platform_name()),
+ '$generator_uri' => 'https://hubzilla.org',
+ '$feed_id' => xmlify($channel['xchan_url']),
+ '$feed_title' => xmlify($channel['channel_name']),
+ '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
+ '$author' => $feed_author,
+ '$owner' => $owner,
+ '$profile_page' => xmlify($channel['xchan_url']),
));
@@ -270,19 +253,18 @@ function construct_activity_target($item) {
return '';
}
+
/**
- * @brief Return an array with a parsed atom item.
+ * @brief Return an array with a parsed atom author.
*
* @param SimplePie $feed
- * @param array $item
- * @param[out] array $author
- * @return array Associative array with the parsed item data
+ * @param SimplePie $item
+ * @return array $author
*/
-function get_atom_elements($feed, $item, &$author) {
- require_once('include/html2bbcode.php');
+function get_atom_author($feed, $item) {
- $res = array();
+ $author = [];
$found_author = $item->get_author();
if($found_author) {
@@ -307,52 +289,6 @@ function get_atom_elements($feed, $item, &$author) {
if(substr($author['author_link'],-1,1) == '/')
$author['author_link'] = substr($author['author_link'],0,-1);
- $res['mid'] = normalise_id(unxmlify($item->get_id()));
- $res['title'] = unxmlify($item->get_title());
- $res['body'] = unxmlify($item->get_content());
- $res['plink'] = unxmlify($item->get_link(0));
- $res['item_rss'] = 1;
-
-
- $summary = unxmlify($item->get_description(true));
-
- // removing the content of the title if its identically to the body
- // This helps with auto generated titles e.g. from tumblr
-
- if (title_is_body($res['title'], $res['body']))
- $res['title'] = "";
-
- if($res['plink'])
- $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3));
- else
- $base_url = '';
-
-
- $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published');
- if($rawcreated)
- $res['created'] = unxmlify($rawcreated[0]['data']);
-
- $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated');
- if($rawedited)
- $res['edited'] = unxmlify($rawedited[0]['data']);
-
- if((x($res,'edited')) && (! (x($res,'created'))))
- $res['created'] = $res['edited'];
-
- if(! $res['created'])
- $res['created'] = $item->get_date('c');
-
- if(! $res['edited'])
- $res['edited'] = $item->get_date('c');
-
- $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb');
-
- // select between supported verbs
-
- if($rawverb) {
- $res['verb'] = unxmlify($rawverb[0]['data']);
- }
-
// look for a photo. We should check media size and find the best one,
// but for now let's just find any author photo
@@ -431,6 +367,122 @@ function get_atom_elements($feed, $item, &$author) {
}
}
+ $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
+ if(! $rawowner)
+ $rawowner = $item->get_item_tags(NAMESPACE_ZOT, 'owner');
+
+ if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
+ $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
+ elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data'])
+ $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']);
+ if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
+ $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
+ elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data'])
+ $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']);
+
+ if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
+ $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+
+ foreach($base as $link) {
+ if(!x($author, 'owner_photo') || ! $author['owner_photo']) {
+ if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
+ $author['owner_photo'] = unxmlify($link['attribs']['']['href']);
+ }
+ }
+ }
+
+ // build array to pass to hook
+ $arr = [
+ 'feed' => $feed,
+ 'item' => $item,
+ 'author' => $author
+ ];
+ /**
+ * @hooks parse_atom
+ * * \e SimplePie \b feed - The original SimplePie feed
+ * * \e SimplePie \b item
+ * * \e array \b result - the result array that will also get returned
+ */
+ call_hooks('parse_atom_author', $arr);
+
+ logger('author: ' . print_r($arr['author'], true), LOGGER_DATA);
+
+ return $arr['author'];
+}
+
+
+/**
+ * @brief Return an array with a parsed atom item.
+ *
+ * @param SimplePie $feed
+ * @param SimplePie $item
+ * @param[out] array $author
+ * @return array Associative array with the parsed item data
+ */
+
+function get_atom_elements($feed, $item) {
+
+ require_once('include/html2bbcode.php');
+
+ $res = array();
+
+
+ $res['mid'] = normalise_id(unxmlify($item->get_id()));
+ $res['title'] = unxmlify($item->get_title());
+ $res['body'] = unxmlify($item->get_content());
+ $res['plink'] = unxmlify($item->get_link(0));
+ $res['item_rss'] = 1;
+
+
+ $summary = unxmlify($item->get_description(true));
+
+ if($summary === $res['body'])
+ $summary = '';
+
+ if(($summary) && ((strpos($summary,'<') !== false) || (strpos($summary,'>') !== false))) {
+ $summary = purify_html($summary);
+ $summary = html2bbcode($summary);
+ }
+
+
+
+ // removing the content of the title if its identically to the body
+ // This helps with auto generated titles e.g. from tumblr
+
+ if (title_is_body($res['title'], $res['body']))
+ $res['title'] = "";
+
+ if($res['plink'])
+ $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3));
+ else
+ $base_url = '';
+
+
+ $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published');
+ if($rawcreated)
+ $res['created'] = unxmlify($rawcreated[0]['data']);
+
+ $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated');
+ if($rawedited)
+ $res['edited'] = unxmlify($rawedited[0]['data']);
+
+ if((x($res,'edited')) && (! (x($res,'created'))))
+ $res['created'] = $res['edited'];
+
+ if(! $res['created'])
+ $res['created'] = $item->get_date('c');
+
+ if(! $res['edited'])
+ $res['edited'] = $item->get_date('c');
+
+ $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb');
+
+ // select between supported verbs
+
+ if($rawverb) {
+ $res['verb'] = unxmlify($rawverb[0]['data']);
+ }
+
$rawcnv = $item->get_item_tags(NAMESPACE_OSTATUS, 'conversation');
if($rawcnv) {
// new style
@@ -445,7 +497,7 @@ function get_atom_elements($feed, $item, &$author) {
}
}
- $ostatus_protocol = (($ostatus_conversation) ? true : false);
+ $ostatus_protocol = (($ostatus_conversation || $res['verb']) ? true : false);
$mastodon = (($item->get_item_tags('http://mastodon.social/schema/1.0','scope')) ? true : false);
if($mastodon) {
@@ -454,6 +506,8 @@ function get_atom_elements($feed, $item, &$author) {
$res['item_private'] = 1;
}
+ logger('ostatus_protocol: ' . intval($ostatus_protocol), LOGGER_DEBUG);
+
$apps = $item->get_item_tags(NAMESPACE_STATUSNET, 'notice_info');
if($apps && $apps[0]['attribs']['']['source']) {
$res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source']));
@@ -557,9 +611,8 @@ function get_atom_elements($feed, $item, &$author) {
);
}
- // turn Mastodon content warning into a #nsfw hashtag
- if($mastodon && $summary) {
- $res['body'] = $summary . "\n\n" . $res['body'] . "\n\n#ContentWarning\n";
+ if($summary && $res['body']) {
+ $res['body'] = '[summary]' . $summary . '[/summary]' . $res['body'];
}
@@ -588,29 +641,6 @@ function get_atom_elements($feed, $item, &$author) {
$res['created'] = datetime_convert('UTC','UTC',$res['created']);
$res['edited'] = datetime_convert('UTC','UTC',$res['edited']);
- $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
- if(! $rawowner)
- $rawowner = $item->get_item_tags(NAMESPACE_ZOT, 'owner');
-
- if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
- $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
- elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data'])
- $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']);
- if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
- $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
- elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data'])
- $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']);
-
- if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
- $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
-
- foreach($base as $link) {
- if(!x($author, 'owner_photo') || ! $author['owner_photo']) {
- if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $author['owner_photo'] = unxmlify($link['attribs']['']['href']);
- }
- }
- }
$rawgeo = $item->get_item_tags(NAMESPACE_GEORSS, 'point');
if($rawgeo)
@@ -773,20 +803,17 @@ function get_atom_elements($feed, $item, &$author) {
$arr = [
'feed' => $feed,
'item' => $item,
- 'author' => $author,
'result' => $res
];
/**
* @hooks parse_atom
* * \e SimplePie \b feed - The original SimplePie feed
- * * \e array \b item
- * * \e array \b author
+ * * \e SimplePie \b item
* * \e array \b result - the result array that will also get returned
*/
call_hooks('parse_atom', $arr);
- logger('author: ' .print_r($arr['author'], true), LOGGER_DATA);
- logger('result: ' .print_r($arr['result'], true), LOGGER_DATA);
+ logger('result: ' . print_r($arr['result'], true), LOGGER_DATA);
return $arr['result'];
}
@@ -985,9 +1012,9 @@ function process_feed_tombstones($feed,$importer,$contact,$pass) {
* @param string $xml
* The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds.
* @param array $importer
- * The contact_record (joined to user_record) of the local user who owns this
+ * The channel record of the local user who owns this
* relationship. It is this person's stuff that is going to be updated.
- * @param[in,out] array $contact
+ * @param[in,out] array $contact (abook record joined to xchan record)
* The person who is sending us stuff. If not set, we MAY be processing a "follow" activity
* from an external network and MAY create an appropriate contact record. Otherwise, we MUST
* have a contact record.
@@ -1074,8 +1101,8 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
// Have we seen it? If not, import it.
- $author = array();
- $datarray = get_atom_elements($feed,$item,$author);
+ $author = get_atom_author($feed,$item);
+ $datarray = get_atom_elements($feed,$item);
if(! $datarray['mid'])
continue;
@@ -1327,8 +1354,8 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
// Head post of a conversation. Have we seen it? If not, import it.
- $author = array();
- $datarray = get_atom_elements($feed,$item,$author);
+ $author = get_atom_author($feed,$item);
+ $datarray = get_atom_elements($feed,$item);
if(! $datarray['mid'])
continue;
@@ -1530,11 +1557,11 @@ function normalise_id($id) {
*/
function process_salmon_feed($xml, $importer) {
- $ret = array();
+ $ret = [];
if(! strlen($xml)) {
logger('process_feed: empty input');
- return;
+ return $ret;
}
$feed = new SimplePie();
@@ -1548,8 +1575,10 @@ function process_salmon_feed($xml, $importer) {
$feed->init();
- if($feed->error())
+ if($feed->error()) {
logger('Error parsing XML: ' . $feed->error());
+ return $ret;
+ }
$permalink = $feed->get_permalink();
@@ -1576,16 +1605,13 @@ function process_salmon_feed($xml, $importer) {
if($is_reply)
$ret['parent_mid'] = $parent_mid;
- $ret['author'] = array();
-
- $datarray = get_atom_elements($feed, $item, $ret['author']);
+ $ret['author'] = get_atom_author($feed,$item);
+ $ret['item'] = get_atom_elements($feed,$item);
// reset policies which are restricted by default for RSS connections
// This item is likely coming from GNU-social via salmon and allows public interaction
- $datarray['public_policy'] = '';
- $datarray['comment_policy'] = 'authenticated';
-
- $ret['item'] = $datarray;
+ $ret['item']['public_policy'] = '';
+ $ret['item']['comment_policy'] = 'authenticated';
}
}
@@ -1801,12 +1827,17 @@ function compat_photos_list($s) {
if($found) {
foreach($matches as $match) {
- $ret[] = [
+ $entry = [
'href' => $match[2],
- 'length' => 0,
'type' => guess_image_type($match[2])
];
+ $sizer = new \Zotlabs\Lib\Img_filesize($match[2]);
+ $size = $sizer->getSize();
+ if(intval($size)) {
+ $entry['length'] = intval($size);
+ }
+ $ret[] = $entry;
}
}
@@ -1838,10 +1869,24 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0, $
create_export_photo_body($item);
- if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
- $body = fix_private_photos($item['body'],$owner['uid'],$item,$cid);
+ // provide separate summary and content unless compat is true; as summary represents a content-warning on some networks
+
+ $matches = false;
+ if(preg_match('|\[summary\](.*?)\[/summary\]|ism',$item['body'],$matches))
+ $summary = $matches[1];
else
- $body = $item['body'];
+ $summary = '';
+
+ $body = $item['body'];
+
+ if($summary)
+ $body = preg_replace('|^(.*?)\[summary\](.*?)\[/summary\](.*?)$|ism','$1$3',$item['body']);
+
+ if($compat)
+ $summary = '';
+
+ if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
+ $body = fix_private_photos($body,$owner['uid'],$item,$cid);
if($compat) {
$compat_photos = compat_photos_list($body);
@@ -1882,6 +1927,8 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0, $
}
else {
$o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n";
+ if($summary)
+ $o .= '<summary type="' . $type . '" >' . xmlify(prepare_text($summary,$item['mimetype'])) . '</summary>' . "\r\n";
$o .= '<content type="' . $type . '" >' . xmlify(prepare_text($body,$item['mimetype'])) . '</content>' . "\r\n";
}
diff --git a/include/html2bbcode.php b/include/html2bbcode.php
index f67231847..4166299db 100644
--- a/include/html2bbcode.php
+++ b/include/html2bbcode.php
@@ -188,13 +188,14 @@ function html2bbcode($message)
node2bbcode($doc, 'hr', array(), "[hr]", "");
- node2bbcode($doc, 'table', array(), "", "");
- node2bbcode($doc, 'tr', array(), "\n", "");
- node2bbcode($doc, 'td', array(), "\t", "");
- //node2bbcode($doc, 'table', array(), "[table]", "[/table]");
- //node2bbcode($doc, 'th', array(), "[th]", "[/th]");
- //node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]");
- //node2bbcode($doc, 'td', array(), "[td]", "[/td]");
+// node2bbcode($doc, 'table', array(), "", "");
+// node2bbcode($doc, 'tr', array(), "\n", "");
+// node2bbcode($doc, 'td', array(), "\t", "");
+
+ node2bbcode($doc, 'table', array(), "[table]", "[/table]");
+ node2bbcode($doc, 'th', array(), "[th]", "[/th]");
+ node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]");
+ node2bbcode($doc, 'td', array(), "[td]", "[/td]");
node2bbcode($doc, 'h1', array(), "\n\n[h1]", "[/h1]\n");
node2bbcode($doc, 'h2', array(), "\n\n[h2]", "[/h2]\n");
@@ -211,7 +212,7 @@ function html2bbcode($message)
node2bbcode($doc, 'video', array('src'=>'/(.+)/'), '[video]$1', '[/video]');
node2bbcode($doc, 'audio', array('src'=>'/(.+)/'), '[audio]$1', '[/audio]');
- node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), '[iframe]$1', '[/iframe]');
+// node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), '[iframe]$1', '[/iframe]');
node2bbcode($doc, 'code', array(), '[code]', '[/code]');
diff --git a/include/hubloc.php b/include/hubloc.php
index 0daa5908c..0d1a2e560 100644
--- a/include/hubloc.php
+++ b/include/hubloc.php
@@ -257,6 +257,24 @@ function hubloc_mark_as_down($posturl) {
}
+/**
+ * @brief return comma separated string of non-dead clone locations (net addresses) for a given netid
+ *
+ * @param string $netid network identity (typically xchan_hash or hubloc_hash)
+ * @return string
+ */
+
+function locations_by_netid($netid) {
+
+ $locs = q("select hubloc_addr as location from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and hubloc_deleted = 0 and site_dead = 0",
+ dbesc($netid)
+ );
+
+ return array_elm_to_str($locs,'location',', ');
+
+}
+
+
function ping_site($url) {
diff --git a/include/import.php b/include/import.php
index a6d738e52..47808544b 100644
--- a/include/import.php
+++ b/include/import.php
@@ -82,7 +82,8 @@ function import_channel($channel, $account_id, $seize) {
'channel_r_storage', 'channel_r_pages', 'channel_w_stream', 'channel_w_wall',
'channel_w_comment', 'channel_w_mail', 'channel_w_like', 'channel_w_tagwall',
'channel_w_chat', 'channel_w_storage', 'channel_w_pages', 'channel_a_republish',
- 'channel_a_delegate', 'perm_limits', 'channel_password', 'channel_salt'
+ 'channel_a_delegate', 'perm_limits', 'channel_password', 'channel_salt',
+ 'channel_moved'
];
$clean = array();
@@ -185,7 +186,7 @@ function import_profiles($channel, $profiles) {
*
* @param array $channel
* @param array $hublocs
- * @param unknown $seize
+ * @param boolean $seize
* @param boolean $moving (optional) default false
*/
function import_hublocs($channel, $hublocs, $seize, $moving = false) {
diff --git a/include/items.php b/include/items.php
index d0b9cffc9..50f663836 100755
--- a/include/items.php
+++ b/include/items.php
@@ -390,7 +390,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
$arr['comment_policy'] = map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'post_comments'));
if ((! $arr['plink']) && (intval($arr['item_thread_top']))) {
- $arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . urlencode($arr['mid']);
+ $arr['plink'] = substr(z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . urlencode($arr['mid']),0,190);
}
@@ -1412,6 +1412,13 @@ function get_mail_elements($x) {
}
else {
$arr['body'] = (($x['body']) ? htmlspecialchars($x['body'], ENT_COMPAT,'UTF-8',false) : '');
+
+ $maxlen = get_max_import_size();
+
+ if($maxlen && mb_strlen($arr['body']) > $maxlen) {
+ $arr['body'] = mb_substr($arr['body'],0,$maxlen,'UTF-8');
+ logger('message length exceeds max_import_size: truncated');
+ }
}
$arr['title'] = (($x['title'])? htmlspecialchars($x['title'],ENT_COMPAT,'UTF-8',false) : '');
@@ -2327,6 +2334,16 @@ function send_status_notifications($post_id,$item) {
$parent = 0;
+ if(array_key_exists('verb',$item) && (activity_match($item['verb'], ACTIVITY_LIKE) || activity_match($item['verb'], ACTIVITY_DISLIKE))) {
+
+ $r = q("select id from item where mid = '%s' and uid = %d limit 1",
+ dbesc($item['thr_parent']),
+ intval($item['uid'])
+ );
+
+ $thr_parent_id = $r[0]['id'];
+ }
+
$r = q("select channel_hash from channel where channel_id = %d limit 1",
intval($item['uid'])
);
@@ -2392,10 +2409,10 @@ function send_status_notifications($post_id,$item) {
'to_xchan' => $r[0]['channel_hash'],
'item' => $item,
'link' => $link,
- 'verb' => ACTIVITY_POST,
+ 'verb' => $item['verb'],
'otype' => 'item',
- 'parent' => $parent,
- 'parent_mid' => $item['parent_mid']
+ 'parent' => $thr_parent_id ? $thr_parent_id : $parent,
+ 'parent_mid' => $thr_parent_id ? $item['thr_parent'] : $item['parent_mid']
));
}
@@ -2454,7 +2471,7 @@ function tag_deliver($uid, $item_id) {
// this is an update (edit) to a post which was already processed by us and has a second delivery chain
// Just start the second delivery chain to deliver the updated post
// after resetting ownership and permission bits
-
+ logger('updating edited tag_deliver post for ' . $u[0]['channel_address']);
start_delivery_chain($u[0], $item, $item_id, 0);
return;
}
@@ -2757,6 +2774,16 @@ function tgroup_check($uid, $item) {
return false;
}
+
+ // see if we already have this item. Maybe it is being updated.
+
+ $r = q("select id from item where mid = '%s' and uid = %d limit 1",
+ dbesc($item['mid']),
+ intval($uid)
+ );
+ if($r)
+ return true;
+
if(! perm_is_allowed($uid,$item['author_xchan'],'tag_deliver'))
return false;
@@ -3009,14 +3036,17 @@ function check_item_source($uid, $item) {
$words = explode("\n",$r[0]['src_patt']);
if($words) {
foreach($words as $word) {
- if(substr($word,0,1) === '#' && $tags) {
+ $w = trim($word);
+ if(! $w)
+ continue;
+ if(substr($w,0,1) === '#' && $tags) {
foreach($tags as $t)
- if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
+ if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($w,1)) || (substr($w,1) === '*')))
return true;
}
- elseif((strpos($word,'/') === 0) && preg_match($word,$text))
+ elseif((strpos($w,'/') === 0) && preg_match($w,$text))
return true;
- elseif(stristr($text,$word) !== false)
+ elseif(stristr($text,$w) !== false)
return true;
}
}
@@ -3650,7 +3680,7 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
$linked_item = (($item['resource_id']) ? true : false);
- logger('item: ' . $item . ' stage: ' . $stage . ' force: ' . $force, LOGGER_DATA);
+ logger('item: ' . $item['id'] . ' stage: ' . $stage . ' force: ' . $force, LOGGER_DATA);
switch($stage) {
case DROPITEM_PHASE2:
@@ -3990,18 +4020,24 @@ function zot_feed($uid, $observer_hash, $arr) {
$item_normal = item_normal();
if(is_sys_channel($uid)) {
- $r = q("SELECT parent, created, postopts from item
- WHERE uid != %d
- $item_normal
+
+ $nonsys_uids = q("SELECT channel_id FROM channel WHERE channel_system = 0");
+ $nonsys_uids_str = ids_to_querystr($nonsys_uids,'channel_id');
+
+ $r = q("SELECT parent, postopts FROM item
+ WHERE uid IN ( %s )
AND item_wall = 1
- and item_private = 0 $sql_extra ORDER BY created ASC $limit",
- intval($uid)
+ AND item_private = 0
+ $item_normal
+ $sql_extra ORDER BY created ASC $limit",
+ intval($nonsys_uids_str)
);
}
else {
- $r = q("SELECT parent, created, postopts from item
- WHERE uid = %d $item_normal
+ $r = q("SELECT parent, postopts FROM item
+ WHERE uid = %d
AND item_wall = 1
+ $item_normal
$sql_extra ORDER BY created ASC $limit",
intval($uid)
);
diff --git a/include/js_strings.php b/include/js_strings.php
index 1b4668061..936594291 100644
--- a/include/js_strings.php
+++ b/include/js_strings.php
@@ -24,10 +24,16 @@ function js_strings() {
'$leavethispage' => t('Unsaved changes. Are you sure you wish to leave this page?'),
'$location' => t('Location'),
- '$t01' => ((t('timeago.prefixAgo') != 'timeago.prefixAgo') ? t('timeago.prefixAgo') : ''),
- '$t02' => ((t('timeago.prefixFromNow') != 'timeago.prefixFromNow') ? t('timeago.prefixFromNow') : ''),
- '$t03' => t('ago'),
- '$t04' => t('from now'),
+ // translatable prefix and suffix strings for jquery.timeago -
+ // using the defaults set below if left untranslated, empty strings if
+ // translated to "NONE" and the corresponding language strings
+ // if translated to anything else
+ '$t01' => ((t('timeago.prefixAgo') == 'timeago.prefixAgo') ? '' : ((t('timeago.prefixAgo') == 'NONE') ? '' : t('timeago.prefixAgo'))),
+ '$t02' => ((t('timeago.prefixFromNow') == 'timeago.prefixFromNow') ? '' : ((t('timeago.prefixFromNow') == 'NONE') ? '' : t('timeago.prefixFromNow'))),
+ '$t03' => ((t('timeago.suffixAgo') == 'timeago.suffixAgo') ? 'ago' : ((t('timeago.suffixAgo') == 'NONE') ? '' : t('timeago.suffixAgo'))),
+ '$t04' => ((t('timeago.suffixFromNow') == 'timeago.suffixFromNow') ? 'from now' : ((t('timeago.suffixFromNow') == 'NONE') ? '' : t('timeago.suffixFromNow'))),
+
+ // translatable main strings for jquery.timeago
'$t05' => t('less than a minute'),
'$t06' => t('about a minute'),
'$t07' => t('%d minutes'),
diff --git a/include/language.php b/include/language.php
index f6f266685..d0ecd3a85 100644
--- a/include/language.php
+++ b/include/language.php
@@ -73,8 +73,35 @@ function get_best_language() {
}
}
- if(! isset($preferred))
+
+ if(! isset($preferred)) {
+
+ /*
+ * We could find no perfect match for any of the preferred languages.
+ * For cases where the preference is fr-fr and we have fr but *not* fr-fr
+ * run the test again and only look for the language base
+ * which should provide an interface they can sort of understand
+ */
+
+ if(isset($langs) && count($langs)) {
+ foreach ($langs as $lang => $v) {
+ if(strlen($lang) === 2) {
+ /* we have already checked this language */
+ continue;
+ }
+ /* Check the base */
+ $lang = strtolower(substr($lang,0,2));
+ if(is_dir("view/$lang")) {
+ $preferred = $lang;
+ break;
+ }
+ }
+ }
+ }
+
+ if(! isset($preferred)) {
$preferred = 'unset';
+ }
$arr = array('langs' => $langs, 'preferred' => $preferred);
@@ -86,6 +113,12 @@ function get_best_language() {
return ((isset(App::$config['system']['language'])) ? App::$config['system']['language'] : 'en');
}
+/*
+ * push_lang and pop_lang let you temporarily override the default language.
+ * Often used to email the administrator during a session created in another language.
+ * The stack is one level deep - so you must pop after every push.
+ */
+
function push_lang($language) {
diff --git a/include/nav.php b/include/nav.php
index 8566cc58c..df58ee96f 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -73,9 +73,7 @@ EOT;
// nav links: array of array('href', 'text', 'extra css classes', 'title')
$nav = [];
- $disable_discover_tab = get_config('system','disable_discover_tab') || get_config('system','disable_discover_tab') === false;
-
- if(! $disable_discover_tab)
+ if(can_view_public_stream())
$nav['pubs'] = true;
/**
@@ -100,38 +98,6 @@ EOT;
if(local_channel()) {
-
-
- $nav['network'] = array('network', t('Activity'), "", t('Network Activity'),'network_nav_btn');
- $nav['network']['all'] = [ 'network', t('View your network activity'), '','' ];
- $nav['network']['mark'] = array('', t('Mark all activity notifications seen'), '','');
-
- $nav['home'] = array('channel/' . $channel['channel_address'], t('Channel Home'), "", t('Channel home'),'home_nav_btn');
- $nav['home']['all'] = [ 'channel/' . $channel['channel_address'], t('View your channel home'), '' , '' ];
- $nav['home']['mark'] = array('', t('Mark all channel notifications seen'), '','');
-
-
- $nav['intros'] = array('connections/ifpending', t('Connections'), "", t('Connections'),'connections_nav_btn');
- if(is_site_admin())
- $nav['registrations'] = array('admin/accounts', t('Registrations'), "", t('Registrations'),'registrations_nav_btn');
-
-
- $nav['notifications'] = array('notifications/system', t('Notices'), "", t('Notifications'),'notifications_nav_btn');
- $nav['notifications']['all']=array('notifications/system', t('View all notifications'), "", "");
- $nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '','');
-
- $nav['messages'] = array('mail/combined', t('Mail'), "", t('Private mail'),'mail_nav_btn');
- $nav['messages']['all']=array('mail/combined', t('View your private messages'), "", "");
- $nav['messages']['mark'] = array('', t('Mark all private messages seen'), '','');
- $nav['messages']['inbox'] = array('mail/inbox', t('Inbox'), "", t('Inbox'));
- $nav['messages']['outbox']= array('mail/outbox', t('Outbox'), "", t('Outbox'));
- $nav['messages']['new'] = array('mail/new', t('New Message'), "", t('New Message'));
-
-
- $nav['all_events'] = array('events', t('Events'), "", t('Event Calendar'),'events_nav_btn');
- $nav['all_events']['all']=array('events', t('View events'), "", "");
- $nav['all_events']['mark'] = array('', t('Mark all events seen'), '','');
-
if(! $_SESSION['delegate']) {
$nav['manage'] = array('manage', t('Channel Manager'), "", t('Manage Your Channels'),'manage_nav_btn');
}
diff --git a/include/network.php b/include/network.php
index 79a8c6578..f8cb68613 100644
--- a/include/network.php
+++ b/include/network.php
@@ -1579,6 +1579,7 @@ function get_site_info() {
$channels_active_halfyear_stat = intval(get_config('system','channels_active_halfyear_stat'));
$channels_active_monthly_stat = intval(get_config('system','channels_active_monthly_stat'));
$local_posts_stat = intval(get_config('system','local_posts_stat'));
+ $local_comments_stat = intval(get_config('system','local_comments_stat'));
$hide_in_statistics = intval(get_config('system','hide_in_statistics'));
$site_expire = intval(get_config('system', 'default_expire_days'));
@@ -1604,24 +1605,28 @@ function get_site_info() {
'commit' => $commit,
'plugins' => $visible_plugins,
'register_policy' => $register_policy[get_config('system','register_policy')],
- 'invitation_only' => intval(get_config('system','invitation_only')),
+ 'invitation_only' => (bool) intval(get_config('system','invitation_only')),
'directory_mode' => $directory_mode[get_config('system','directory_mode')],
'language' => get_config('system','language'),
- 'rss_connections' => intval(get_config('system','feed_contacts')),
+ 'rss_connections' => (bool) intval(get_config('system','feed_contacts')),
'expiration' => $site_expire,
'default_service_restrictions' => $service_class,
'locked_features' => $locked_features,
'admin' => $admin,
- 'dbdriver' => DBA::$dba->getdriver(),
+ 'dbdriver' => DBA::$dba->getdriver() . ' ' . ((ACTIVE_DBTYPE == DBTYPE_POSTGRES) ? 'postgres' : 'mysql'),
'lastpoll' => get_config('system','lastpoll'),
'info' => (($site_info) ? $site_info : ''),
'channels_total' => $channels_total_stat,
- 'channels_active_halfyear' => $channels_active_halfyear_stat,
- 'channels_active_monthly' => $channels_active_monthly_stat,
- 'local_posts' => $local_posts_stat,
'hide_in_statistics' => $hide_in_statistics
];
+ if(! $hide_in_statistics) {
+ $data['channels_active_halfyear'] = $channels_active_halfyear_stat;
+ $data['channels_active_monthly'] = $channels_active_monthly_stat;
+ $data['local_posts'] = $local_posts_stat;
+ $data['local_comments'] = $local_comments_stat;
+ }
+
return $data;
}
diff --git a/include/plugin.php b/include/plugin.php
index 379d8e799..62d443ab8 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -47,7 +47,10 @@ function uninstall_plugin($plugin) {
}
/**
- * @brief installs an addon.
+ * @brief Installs an addon.
+ *
+ * This function is called once to install the addon (either from the cli or via
+ * the web admin). This will also call load_plugin() once.
*
* @param string $plugin name of the addon
* @return bool
@@ -176,19 +179,91 @@ function reload_plugins() {
}
+function plugins_installed_list() {
+
+ $r = q("select * from addon where installed = 1 order by aname asc");
+ return(($r) ? ids_to_array($r,'aname') : []);
+}
+
+
+function plugins_sync() {
+
+ /**
+ *
+ * Synchronise plugins:
+ *
+ * App::$config['system']['addon'] contains a comma-separated list of names
+ * of plugins/addons which are used on this system.
+ * Go through the database list of already installed addons, and if we have
+ * an entry, but it isn't in the config list, call the unload procedure
+ * and mark it uninstalled in the database (for now we'll remove it).
+ * Then go through the config list and if we have a plugin that isn't installed,
+ * call the install procedure and add it to the database.
+ *
+ */
+
+ $installed = plugins_installed_list();
+
+ $plugins = get_config('system', 'addon', '');
+
+ $plugins_arr = explode(',', $plugins);
+
+ // array_trim is in include/text.php
+
+ if(! array_walk($plugins_arr,'array_trim'))
+ return;
+
+ App::$plugins = $plugins_arr;
+
+ $installed_arr = [];
+
+ if(count($installed)) {
+ foreach($installed as $i) {
+ if(! in_array($i, $plugins_arr)) {
+ unload_plugin($i);
+ }
+ else {
+ $installed_arr[] = $i;
+ }
+ }
+ }
+
+ if(count($plugins_arr)) {
+ foreach($plugins_arr as $p) {
+ if(! in_array($p, $installed_arr)) {
+ load_plugin($p);
+ }
+ }
+ }
+
+}
+
+
/**
* @brief Get a list of non hidden addons.
*
* @return array
*/
function visible_plugin_list() {
+
$r = q("select * from addon where hidden = 0 order by aname asc");
- return(($r) ? ids_to_array($r,'aname') : array());
+ $x = (($r) ? ids_to_array($r,'aname') : array());
+ $y = [];
+ if($x) {
+ foreach($x as $xv) {
+ if(is_dir('addon/' . $xv)) {
+ $y[] = $xv;
+ }
+ }
+ }
+ return $y;
}
/**
- * @brief registers a hook.
+ * @brief Registers a hook.
+ *
+ * @see ::Zotlabs::Extend::Hook::register()
*
* @param string $hook the name of the hook
* @param string $file the name of the file that hooks into
@@ -219,6 +294,8 @@ function register_hook($hook, $file, $function, $priority = 0) {
/**
* @brief unregisters a hook.
*
+ * @see ::Zotlabs::Extend::Hook::unregister
+ *
* @param string $hook the name of the hook
* @param string $file the name of the file that hooks into
* @param string $function the name of the function that the hook called
@@ -397,6 +474,83 @@ function get_plugin_info($plugin){
return $info;
}
+/**
+ * @brief Parse widget comment in search of widget info.
+ *
+ * like
+ * \code
+ * * Name: MyWidget
+ * * Description: A widget
+ * * Version: 1.2.3
+ * * Author: John <profile url>
+ * * Author: Jane <email>
+ * *
+ *\endcode
+ * @param string $widget the name of the widget
+ * @return array with the information
+ */
+function get_widget_info($widget){
+ $m = array();
+ $info = array(
+ 'name' => $widget,
+ 'description' => '',
+ 'author' => array(),
+ 'maintainer' => array(),
+ 'version' => '',
+ 'requires' => ''
+ );
+
+ $ucwidget = ucfirst($widget);
+
+ $checkpaths = [
+ "Zotlabs/SiteWidget/$ucwidget.php",
+ "Zotlibs/Widget/$ucwidget.php",
+ "addon/$ucwidget/$ucwidget.php",
+ "addon/$widget.php"
+ ];
+
+ $widget_found = false;
+
+ foreach ($checkpaths as $path) {
+ if (is_file($path)) {
+ $widget_found = true;
+ $f = file_get_contents($path);
+ break;
+ }
+ }
+
+ if(! ($widget_found && $f))
+ return $info;
+
+ $f = escape_tags($f);
+ $r = preg_match("|/\*.*\*/|msU", $f, $m);
+
+ if ($r) {
+ $ll = explode("\n", $m[0]);
+ foreach( $ll as $l ) {
+ $l = trim($l, "\t\n\r */");
+ if ($l != ""){
+ list($k, $v) = array_map("trim", explode(":", $l, 2));
+ $k = strtolower($k);
+ if ($k == 'author' || $k == 'maintainer'){
+ $r = preg_match("|([^<]+)<([^>]+)>|", $v, $m);
+ if ($r) {
+ $info[$k][] = array('name' => $m[1], 'link' => $m[2]);
+ } else {
+ $info[$k][] = array('name' => $v);
+ }
+ }
+ else {
+ $info[$k] = $v;
+ }
+ }
+ }
+ }
+
+ return $info;
+}
+
+
function check_plugin_versions($info) {
if(! is_array($info))
diff --git a/include/queue_fn.php b/include/queue_fn.php
index 5fb0d5f1e..798ac36db 100644
--- a/include/queue_fn.php
+++ b/include/queue_fn.php
@@ -121,7 +121,7 @@ function queue_deliver($outq, $immediate = false) {
$base = null;
$h = parse_url($outq['outq_posturl']);
- if($h)
+ if($h !== false)
$base = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : '');
if(($base) && ($base !== z_root()) && ($immediate)) {
@@ -160,6 +160,9 @@ function queue_deliver($outq, $immediate = false) {
+
+
+
$arr = array('outq' => $outq, 'base' => $base, 'handled' => false, 'immediate' => $immediate);
call_hooks('queue_deliver',$arr);
if($arr['handled'])
@@ -216,7 +219,29 @@ function queue_deliver($outq, $immediate = false) {
// normal zot delivery
logger('deliver: dest: ' . $outq['outq_posturl'], LOGGER_DEBUG);
- $result = zot_zot($outq['outq_posturl'],$outq['outq_notify']);
+
+ $channel = null;
+
+ if($outq['outq_msg'] && $outq['outq_channel']) {
+ $channel = channelx_by_n($outq['outq_channel']);
+ }
+
+ $host_crypto = null;
+
+ if($channel && $base) {
+ $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' order by hubloc_id desc limit 1",
+ dbesc($base)
+ );
+ if($h) {
+ $host_crypto = $h[0];
+ }
+ }
+
+ $msg = $outq['outq_notify'];
+
+ $result = zot_zot($outq['outq_posturl'],$msg,$channel,$host_crypto);
+
+
if($result['success']) {
logger('deliver: remote zot delivery succeeded to ' . $outq['outq_posturl']);
zot_process_response($outq['outq_posturl'],$result, $outq);
diff --git a/include/socgraph.php b/include/socgraph.php
index 26446d9c7..6cddbbaac 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -52,7 +52,7 @@ function poco_load($xchan = '', $url = null) {
elseif($s['return_code'] == 404)
logger('poco_load: nothing found');
else
- logger('poco_load: returns ' . print_r($s,true));
+ logger('poco_load: returns ' . print_r($s,true), LOGGER_DATA);
return;
}
@@ -178,11 +178,12 @@ function poco_load($xchan = '', $url = null) {
);
if(! $r) {
- q("insert into xlink ( xlink_xchan, xlink_link, xlink_rating, xlink_rating_text, xlink_updated, xlink_static ) values ( '%s', '%s', %d, '%s', '%s', 0 ) ",
+ q("insert into xlink ( xlink_xchan, xlink_link, xlink_rating, xlink_rating_text, xlink_sig, xlink_updated, xlink_static ) values ( '%s', '%s', %d, '%s', '%s', '%s', 0 ) ",
dbesc($xchan),
dbesc($hash),
intval(0),
dbesc(''),
+ dbesc(''),
dbesc(datetime_convert())
);
}
@@ -287,11 +288,14 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) {
function update_suggestions() {
- $dirmode = get_config('system', 'directory_mode');
- if($dirmode === false)
- $dirmode = DIRECTORY_MODE_NORMAL;
+ $dirmode = get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL);
+
+ if($dirmode == DIRECTORY_MODE_STANDALONE) {
+ poco_load('', z_root() . '/poco');
+ return;
+ }
- if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
+ if($dirmode == DIRECTORY_MODE_PRIMARY) {
$url = z_root() . '/sitelist';
}
else {
diff --git a/include/taxonomy.php b/include/taxonomy.php
index a646df28c..393b8718e 100644
--- a/include/taxonomy.php
+++ b/include/taxonomy.php
@@ -309,35 +309,29 @@ function article_tagadelic($uid, $count = 0, $authors = '', $owner = '', $flags
-function dir_tagadelic($count = 0) {
+function dir_tagadelic($count = 0, $hub = '') {
$count = intval($count);
- $dirmode = get_config('system','directory_mode');
-
- if($dirmode == DIRECTORY_MODE_STANDALONE) {
- // Fetch tags
+ if($hub) {
$r = q("select xtag_term as term, count(xtag_term) as total from xtag
left join hubloc on xtag_hash = hubloc_hash
- where xtag_flags = 0 and hubloc_url = '%s'
+ where xtag_flags = 0 and xtag_hash in (select hubloc_hash from hubloc where hubloc_host = '%s' )
group by xtag_term order by total desc %s",
- dbesc(z_root()),
+ dbesc($hub),
((intval($count)) ? "limit $count" : '')
);
}
else {
- // Fetch tags
$r = q("select xtag_term as term, count(xtag_term) as total from xtag where xtag_flags = 0
group by xtag_term order by total desc %s",
((intval($count)) ? "limit $count" : '')
);
}
if(! $r)
- return array();
-
+ return [];
return Zotlabs\Text\Tagadelic::calc($r);
-
}
@@ -485,9 +479,6 @@ function dir_tagblock($link,$r) {
$o = '';
$observer = get_observer_hash();
- if(! get_directory_setting($observer, 'globaldir'))
- return $o;
-
if(! $r)
$r = App::$data['directory_keywords'];
diff --git a/include/text.php b/include/text.php
index 107efe0cb..c82fad517 100644
--- a/include/text.php
+++ b/include/text.php
@@ -24,12 +24,20 @@ define('RANDOM_STRING_TEXT', 0x01 );
* @return string substituted string
*/
function replace_macros($s, $r) {
+ $arr = [
+ 'template' => $s,
+ 'params' => $r
+ ];
- $arr = array('template' => $s, 'params' => $r);
+ /**
+ * @hooks replace_macros
+ * * \e string \b template
+ * * \e array \b params
+ */
call_hooks('replace_macros', $arr);
$t = App::template_engine();
- $output = $t->replace_macros($arr['template'],$arr['params']);
+ $output = $t->replace_macros($arr['template'], $arr['params']);
return $output;
}
@@ -301,12 +309,16 @@ function purify_html($s, $allow_position = false) {
/**
- * @brief generate a string that's random, but usually pronounceable.
+ * @brief Generate a string that's random, but usually pronounceable.
*
* Used to generate initial passwords.
*
- * @param int $len
- * @return string
+ * @note In order to create "pronounceable" strings some consonant pairs or
+ * letters that does not make a very good word ending are chopped off, so that
+ * the returned string length can be lower than $len.
+ *
+ * @param int $len max length of generated string
+ * @return string Genereated random, but usually pronounceable string
*/
function autoname($len) {
@@ -343,6 +355,7 @@ function autoname($len) {
$midcons = array('ck','ct','gn','ld','lf','lm','lt','mb','mm', 'mn','mp',
'nd','ng','nk','nt','rn','rp','rt');
+ // avoid these consonant pairs at the end of the string
$noend = array('bl', 'br', 'cl','cr','dr','fl','fr','gl','gr',
'kh', 'kl','kr','mn','pl','pr','rh','tr','qu','wh');
@@ -355,7 +368,7 @@ function autoname($len) {
$word = '';
for ($x = 0; $x < $len; $x ++) {
- $r = mt_rand(0,count($table) - 1);
+ $r = mt_rand(0, count($table) - 1);
$word .= $table[$r];
if ($table == $vowels)
@@ -364,14 +377,15 @@ function autoname($len) {
$table = $vowels;
}
- $word = substr($word,0,$len);
+ $word = substr($word, 0, $len);
foreach ($noend as $noe) {
- if ((strlen($word) > 2) && (substr($word,-2) == $noe)) {
- $word = substr($word,0,-1);
+ if ((strlen($word) > 2) && (substr($word, -2) == $noe)) {
+ $word = substr($word, 0, -1);
break;
}
}
+ // avoid the letter 'q' as it does not make a very good word ending
if (substr($word, -1) == 'q')
$word = substr($word, 0, -1);
@@ -959,7 +973,14 @@ function contact_block() {
$contacts = t('Connections');
$micropro = Array();
foreach($r as $rr) {
- $rr['archived'] = (intval($rr['abook_archived']) ? true : false);
+
+ // There is no setting to discover if you are bi-directionally connected
+ // Use the ability to post comments as an indication that this relationship is more
+ // than wishful thinking; even though soapbox channels and feeds will disable it.
+
+ if(! intval(get_abconfig(App::$profile['uid'],$rr['xchan_hash'],'their_perms','post_comments'))) {
+ $rr['oneway'] = true;
+ }
$micropro[] = micropro($rr,true,'mpfriend');
}
}
@@ -1012,6 +1033,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
return replace_macros(get_markup_template(($textmode)?'micropro_txt.tpl':'micropro_img.tpl'),array(
'$click' => (($contact['click']) ? $contact['click'] : ''),
'$class' => $class . (($contact['archived']) ? ' archived' : ''),
+ '$oneway' => (($contact['oneway']) ? true : false),
'$url' => $url,
'$photo' => $contact['xchan_photo_s'],
'$name' => $contact['xchan_name'],
@@ -1094,17 +1116,19 @@ function sslify($s) {
return $s;
}
-
+/**
+ * @brief Get an array of poke verbs.
+ *
+ * @return array
+ * * \e index is present tense verb
+ * * \e value is array containing past tense verb, translation of present, translation of past
+ */
function get_poke_verbs() {
- // index is present tense verb
- // value is array containing past tense verb, translation of present, translation of past
-
- if(get_config('system','poke_basic')) {
+ if (get_config('system', 'poke_basic')) {
$arr = array(
- 'poke' => array( 'poked', t('poke'), t('poked')),
+ 'poke' => array('poked', t('poke'), t('poked')),
);
- }
- else {
+ } else {
$arr = array(
'poke' => array( 'poked', t('poke'), t('poked')),
'ping' => array( 'pinged', t('ping'), t('pinged')),
@@ -1114,15 +1138,26 @@ function get_poke_verbs() {
'rebuff' => array( 'rebuffed', t('rebuff'), t('rebuffed')),
);
+ /**
+ * @hooks poke_verbs
+ * * \e array associative array with another array as value
+ */
call_hooks('poke_verbs', $arr);
}
return $arr;
}
+/**
+ * @brief Get an array of mood verbs.
+ *
+ * @return array
+ * * \e index is the verb
+ * * \e value is the translated verb
+ */
function get_mood_verbs() {
- $arr = array(
+ $arr = [
'happy' => t('happy'),
'sad' => t('sad'),
'mellow' => t('mellow'),
@@ -1144,9 +1179,14 @@ function get_mood_verbs() {
'motivated' => t('motivated'),
'relaxed' => t('relaxed'),
'surprised' => t('surprised'),
- );
+ ];
+ /**
+ * @hooks mood_verbs
+ * * \e array associative array with mood verbs
+ */
call_hooks('mood_verbs', $arr);
+
return $arr;
}
@@ -1513,14 +1553,37 @@ function format_filer(&$item) {
function generate_map($coord) {
$coord = trim($coord);
$coord = str_replace(array(',','/',' '),array(' ',' ',' '),$coord);
- $arr = array('lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'html' => '');
- call_hooks('generate_map',$arr);
+
+ $arr = [
+ 'lat' => trim(substr($coord, 0, strpos($coord, ' '))),
+ 'lon' => trim(substr($coord, strpos($coord, ' ')+1)),
+ 'html' => ''
+ ];
+
+ /**
+ * @hooks generate_map
+ * * \e string \b lat
+ * * \e string \b lon
+ * * \e string \b html the parsed HTML to return
+ */
+ call_hooks('generate_map', $arr);
+
return (($arr['html']) ? $arr['html'] : $coord);
}
function generate_named_map($location) {
- $arr = array('location' => $location, 'html' => '');
- call_hooks('generate_named_map',$arr);
+ $arr = [
+ 'location' => $location,
+ 'html' => ''
+ ];
+
+ /**
+ * @hooks generate_named_map
+ * * \e string \b location
+ * * \e string \b html the parsed HTML to return
+ */
+ call_hooks('generate_named_map', $arr);
+
return (($arr['html']) ? $arr['html'] : $location);
}
@@ -1626,13 +1689,11 @@ function prepare_binary($item) {
}
-
-
/**
* @brief Given a text string, convert from bbcode to html and add smilie icons.
*
* @param string $text
- * @param sting $content_type (optional) default text/bbcode
+ * @param string $content_type (optional) default text/bbcode
* @param boolean $cache (optional) default false
*
* @return string
@@ -1958,18 +2019,37 @@ function item_post_type($item) {
return $post_type;
}
+// This needs to be fixed to use quoted tag strings
function undo_post_tagging($s) {
+
$matches = null;
+ // undo tags and mentions
$cnt = preg_match_all('/([@#])(\!*)\[zrl=(.*?)\](.*?)\[\/zrl\]/ism',$s,$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
- $s = str_replace($mtch[0], $mtch[1] . $mtch[2] . str_replace(' ','_',$mtch[4]),$s);
+ $s = str_replace($mtch[0], $mtch[1] . $mtch[2] . quote_tag($mtch[4]),$s);
+ }
+ }
+ // undo forum tags
+ $cnt = preg_match_all('/\!\[zrl=(.*?)\](.*?)\[\/zrl\]/ism',$s,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $s = str_replace($mtch[0], '!' . quote_tag($mtch[2]),$s);
}
}
+
+
return $s;
}
+function quote_tag($s) {
+ if(strpos($s,' ') !== false)
+ return '&quot;' . $s . '&quot;';
+ return $s;
+}
+
+
function fix_mce_lf($s) {
$s = str_replace("\r\n","\n",$s);
// $s = str_replace("\n\n","\n",$s);
@@ -2100,6 +2180,35 @@ function ids_to_querystr($arr,$idx = 'id',$quote = false) {
}
/**
+ * @brief array_elm_to_str($arr,$elm,$delim = ',') extract unique individual elements from an array of arrays and return them as a string separated by a delimiter
+ * similar to ids_to_querystr, but allows a different delimiter instead of a db-quote option
+ * empty elements (evaluated after trim()) are ignored.
+ * @param $arr array
+ * @param $elm array key to extract from sub-array
+ * @param $delim string default ','
+ * @returns string
+ */
+
+function array_elm_to_str($arr,$elm,$delim = ',') {
+
+ $tmp = [];
+ if($arr && is_array($arr)) {
+ foreach($arr as $x) {
+ if(is_array($x) && array_key_exists($elm,$x)) {
+ $z = trim($x[$elm]);
+ if(($z) && (! in_array($z,$tmp))) {
+ $tmp[] = $z;
+ }
+ }
+ }
+ }
+ return implode($delim,$tmp);
+}
+
+
+
+
+/**
* @brief Fetches xchan and hubloc data for an array of items with only an
* author_xchan and owner_xchan.
*
@@ -3033,8 +3142,19 @@ function text_highlight($s, $lang) {
$s = jindent($s);
}
- $arr = [ 'text' => $s, 'language' => $lang, 'success' => false ];
- call_hooks('text_highlight',$arr);
+ $arr = [
+ 'text' => $s,
+ 'language' => $lang,
+ 'success' => false
+ ];
+
+ /**
+ * @hooks text_highlight
+ * * \e string \b text
+ * * \e string \b language
+ * * \e boolean \b success default false
+ */
+ call_hooks('text_highlight', $arr);
if($arr['success'])
$o = $arr['text'];
@@ -3117,7 +3237,6 @@ function share_unshield($m) {
function cleanup_bbcode($body) {
-
/**
* fix naked links by passing through a callback to see if this is a hubzilla site
* (already known to us) which will get a zrl, otherwise link with url, add bookmark tag to both.
@@ -3155,7 +3274,6 @@ function cleanup_bbcode($body) {
return $body;
-
}
function gen_link_id($mid) {
@@ -3192,3 +3310,5 @@ function purify_filename($s) {
return '';
return $s;
}
+
+
diff --git a/include/zid.php b/include/zid.php
index 6ebc9a6ab..67c1d9f6c 100644
--- a/include/zid.php
+++ b/include/zid.php
@@ -127,8 +127,11 @@ function clean_query_string($s = '') {
* @return string
*/
function zidify_callback($match) {
- $is_zid = ((feature_enabled(local_channel(), 'sendzid')) || (strpos($match[1], 'zrl')) ? true : false);
- $replace = '<a' . $match[1] . ' href="' . (($is_zid) ? zid($match[2]) : $match[2]) . '"';
+
+ $arr = [ 'zid' => ((strpos($match[1],'zrl')) ? true : false), 'url' => $match[2] ];
+ call_hooks('zidify', $arr);
+
+ $replace = '<a' . $match[1] . ' href="' . (intval($arr['zid']) ? zid($arr['url']) : $arr['url']) . '"';
$x = str_replace($match[0], $replace, $match[0]);
@@ -136,8 +139,11 @@ function zidify_callback($match) {
}
function zidify_img_callback($match) {
- $is_zid = ((feature_enabled(local_channel(), 'sendzid')) || (strpos($match[1], 'zrl')) ? true : false);
- $replace = '<img' . $match[1] . ' src="' . (($is_zid) ? zid($match[2]) : $match[2]) . '"';
+
+ $arr = [ 'zid' => ((strpos($match[1],'zrl')) ? true : false), 'url' => $match[2] ];
+ call_hooks('zidify', $arr);
+
+ $replace = '<img' . $match[1] . ' src="' . (intval($arr['zid']) ? zid($arr['url']) : $arr['url']) . '"';
$x = str_replace($match[0], $replace, $match[0]);
@@ -259,9 +265,9 @@ function red_zrlify_img_callback($matches) {
*/
function owt_init($token) {
- \Zotlabs\Zot\Verify::purge('owt', '3 MINUTE');
+ \Zotlabs\Lib\Verify::purge('owt', '3 MINUTE');
- $ob_hash = \Zotlabs\Zot\Verify::get_meta('owt', 0, $token);
+ $ob_hash = \Zotlabs\Lib\Verify::get_meta('owt', 0, $token);
if($ob_hash === false) {
return;
diff --git a/include/zot.php b/include/zot.php
index 18960db46..87f449fb1 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -158,6 +158,85 @@ function zot_build_packet($channel, $type = 'notify', $recipients = null, $remot
return json_encode($data);
}
+
+/**
+ * @brief Builds a zot6 notification packet.
+ *
+ * Builds a zot6 notification packet that you can either store in the queue with
+ * a message array or call zot_zot to immediately zot it to the other side.
+ *
+ * @param array $channel
+ * sender channel structure
+ * @param string $type
+ * packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check'
+ * @param array $recipients
+ * envelope information, array ( 'guid' => string, 'guid_sig' => string ); empty for public posts
+ * @param string $remote_key
+ * optional public site key of target hub used to encrypt entire packet
+ * NOTE: remote_key and encrypted packets are required for 'auth_check' packets, optional for all others
+ * @param string $methods
+ * optional comma separated list of encryption methods @ref zot_best_algorithm()
+ * @param string $secret
+ * random string, required for packets which require verification/callback
+ * e.g. 'pickup', 'purge', 'notify', 'auth_check'. Packet types 'ping', 'force_refresh', and 'refresh' do not require verification
+ * @param string $extra
+ * @returns string json encoded zot packet
+ */
+function zot6_build_packet($channel, $type = 'notify', $recipients = null, $msg = '', $remote_key = null, $methods = '', $secret = null, $extra = null) {
+
+ $sig_method = get_config('system','signature_algorithm','sha256');
+
+ $data = [
+ 'type' => $type,
+ 'sender' => [
+ 'guid' => $channel['channel_guid'],
+ 'guid_sig' => base64url_encode(rsa_sign($channel['channel_guid'],$channel['channel_prvkey'],$sig_method)),
+ 'url' => z_root(),
+ 'url_sig' => base64url_encode(rsa_sign(z_root(),$channel['channel_prvkey'],$sig_method)),
+ 'sitekey' => get_config('system','pubkey')
+ ],
+ 'callback' => '/post',
+ 'version' => Zotlabs\Lib\System::get_zot_revision(),
+ 'encryption' => crypto_methods(),
+ 'signing' => signing_methods()
+ ];
+
+ if ($recipients) {
+ for ($x = 0; $x < count($recipients); $x ++)
+ unset($recipients[$x]['hash']);
+
+ $data['recipients'] = $recipients;
+ }
+
+ if($msg) {
+ $data['msg'] = $msg;
+ }
+
+ if ($secret) {
+ $data['secret'] = preg_replace('/[^0-9a-fA-F]/','',$secret);
+ $data['secret_sig'] = base64url_encode(rsa_sign($secret,$channel['channel_prvkey'],$sig_method));
+ }
+
+ if ($extra) {
+ foreach ($extra as $k => $v)
+ $data[$k] = $v;
+ }
+
+ logger('zot6_build_packet: ' . print_r($data,true), LOGGER_DATA, LOG_DEBUG);
+
+ // Hush-hush ultra top-secret mode
+
+ if($remote_key) {
+ $algorithm = zot_best_algorithm($methods);
+ $data = crypto_encapsulate(json_encode($data),$remote_key, $algorithm);
+ }
+
+ return json_encode($data);
+}
+
+
+
+
/**
* @brief Choose best encryption function from those available on both sites.
*
@@ -209,10 +288,23 @@ function zot_best_algorithm($methods) {
*
* @param string $url
* @param array $data
+ * @param array $channel (optional if using zot6 delivery)
+ * @param array $crypto (optional if encrypted httpsig, requires hubloc_sitekey and site_crypto elements)
* @return array see z_post_url() for returned data format
*/
-function zot_zot($url, $data) {
- return z_post_url($url, array('data' => $data));
+function zot_zot($url, $data, $channel = null,$crypto = null) {
+
+ $headers = [];
+
+ if($channel) {
+ $headers['X-Zot-Token'] = random_string();
+ $hash = \Zotlabs\Web\HTTPSig::generate_digest($data,false);
+ $headers['X-Zot-Digest'] = 'SHA-256=' . $hash;
+ $h = \Zotlabs\Web\HTTPSig::create_sig('',$headers,$channel['channel_prvkey'],'acct:' . $channel['channel_address'] . '@' . \App::get_hostname(),false,false,'sha512',(($crypto) ? $crypto['hubloc_sitekey'] : ''), (($crypto) ? zot_best_algorithm($crypto['site_crypto']) : ''));
+ }
+
+ $redirects = 0;
+ return z_post_url($url, array('data' => $data),$redirects,((empty($h)) ? [] : [ 'headers' => $h ]));
}
/**
@@ -495,13 +587,16 @@ function zot_refresh($them, $channel = null, $force = false) {
// If there is a default group for this channel, add this connection to it
-
- $default_group = $channel['channel_default_group'];
- if($default_group) {
- require_once('include/group.php');
- $g = group_rec_byhash($channel['channel_id'],$default_group);
- if($g)
- group_add_member($channel['channel_id'],'',$x['hash'],$g['id']);
+ // for pending connections this will happens at acceptance time.
+
+ if(! intval($new_connection[0]['abook_pending'])) {
+ $default_group = $channel['channel_default_group'];
+ if($default_group) {
+ require_once('include/group.php');
+ $g = group_rec_byhash($channel['channel_id'],$default_group);
+ if($g)
+ group_add_member($channel['channel_id'],'',$x['hash'],$g['id']);
+ }
}
unset($new_connection[0]['abook_id']);
@@ -1060,7 +1155,12 @@ function zot_process_response($hub, $arr, $outq) {
* @brief
*
* We received a notification packet (in mod_post) that a message is waiting for us, and we've verified the sender.
- * Now send back a pickup message, using our message tracking ID ($arr['secret']), which we will sign with our site
+ * Check if the site is using zot6 delivery and includes a verified HTTP Signature, signed content, and a 'msg' field,
+ * and also that the signer and the sender match.
+ * If that happens, we do not need to fetch/pickup the message - we have it already and it is verified.
+ * Translate it into the form we need for zot_import() and import it.
+ *
+ * Otherwise send back a pickup message, using our message tracking ID ($arr['secret']), which we will sign with our site
* private key.
* The entire pickup message is encrypted with the remote site's public key.
* If everything checks out on the remote end, we will receive back a packet containing one or more messages,
@@ -1078,38 +1178,61 @@ function zot_fetch($arr) {
$url = $arr['sender']['url'] . $arr['callback'];
- // set $multiple param on zot_gethub() to return all matching hubs
- // This allows us to recover from re-installs when a redundant (but invalid) hubloc for
- // this identity is widely dispersed throughout the network.
+ $import = null;
+ $hubs = null;
+
+ $zret = zot6_check_sig();
- $ret_hubs = zot_gethub($arr['sender'],true);
- if(! $ret_hubs) {
+ if($zret['success'] && $zret['hubloc'] && $zret['hubloc']['hubloc_guid'] === $data['sender']['guid'] && $data['msg']) {
+ logger('zot6_delivery',LOGGER_DEBUG);
+ logger('zot6_data: ' . print_r($data,true),LOGGER_DATA);
+
+ $ret['collected'] = true;
+
+ $import = [ 'success' => true, 'body' => json_encode( [ 'success' => true, 'pickup' => [ [ 'notify' => $data, 'message' => json_decode($data['msg'],true) ] ] ] ) ];
+ $hubs = [ $zret['hubloc'] ] ;
+ }
+
+ if(! $hubs) {
+ // set $multiple param on zot_gethub() to return all matching hubs
+ // This allows us to recover from re-installs when a redundant (but invalid) hubloc for
+ // this identity is widely dispersed throughout the network.
+
+ $hubs = zot_gethub($arr['sender'],true);
+ }
+
+ if(! $hubs) {
logger('No hub: ' . print_r($arr['sender'],true));
return;
}
- foreach($ret_hubs as $ret_hub) {
+ foreach($hubs as $hub) {
- $secret = substr(preg_replace('/[^0-9a-fA-F]/','',$arr['secret']),0,64);
+ if(! $import) {
+ $secret = substr(preg_replace('/[^0-9a-fA-F]/','',$arr['secret']),0,64);
- $data = [
- 'type' => 'pickup',
- 'url' => z_root(),
- 'callback_sig' => base64url_encode(rsa_sign(z_root() . '/post', get_config('system','prvkey'))),
- 'callback' => z_root() . '/post',
- 'secret' => $secret,
- 'secret_sig' => base64url_encode(rsa_sign($secret, get_config('system','prvkey')))
- ];
+ $data = [
+ 'type' => 'pickup',
+ 'url' => z_root(),
+ 'callback_sig' => base64url_encode(rsa_sign(z_root() . '/post', get_config('system','prvkey'))),
+ 'callback' => z_root() . '/post',
+ 'secret' => $secret,
+ 'secret_sig' => base64url_encode(rsa_sign($secret, get_config('system','prvkey')))
+ ];
- $algorithm = zot_best_algorithm($ret_hub['site_crypto']);
- $datatosend = json_encode(crypto_encapsulate(json_encode($data),$ret_hub['hubloc_sitekey'], $algorithm));
+ $algorithm = zot_best_algorithm($hub['site_crypto']);
+ $datatosend = json_encode(crypto_encapsulate(json_encode($data),$hub['hubloc_sitekey'], $algorithm));
- $fetch = zot_zot($url,$datatosend);
+ $import = zot_zot($url,$datatosend);
+ }
+ else {
+ $algorithm = zot_best_algorithm($hub['site_crypto']);
+ }
- $result = zot_import($fetch, $arr['sender']['url']);
+ $result = zot_import($import, $arr['sender']['url']);
if($result) {
- $result = crypto_encapsulate(json_encode($result),$ret_hub['hubloc_sitekey'], $algorithm);
+ $result = crypto_encapsulate(json_encode($result),$hub['hubloc_sitekey'], $algorithm);
return $result;
}
@@ -1608,7 +1731,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
foreach($deliveries as $d) {
$local_public = $public;
- $DR = new Zotlabs\Zot\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
+ $DR = new Zotlabs\Lib\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
$r = q("select * from channel where channel_hash = '%s' limit 1",
dbesc($d['hash'])
@@ -2137,7 +2260,7 @@ function process_mail_delivery($sender, $arr, $deliveries) {
foreach($deliveries as $d) {
- $DR = new Zotlabs\Zot\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
+ $DR = new Zotlabs\Lib\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
$r = q("select * from channel where channel_hash = '%s' limit 1",
dbesc($d['hash'])
@@ -3778,11 +3901,11 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
// we should probably do this for all items, but usually we only send one.
if(array_key_exists('item',$arr) && is_array($arr['item'][0])) {
- $DR = new Zotlabs\Zot\DReport(z_root(),$d['hash'],$d['hash'],$arr['item'][0]['message_id'],'channel sync processed');
+ $DR = new Zotlabs\Lib\DReport(z_root(),$d['hash'],$d['hash'],$arr['item'][0]['message_id'],'channel sync processed');
$DR->addto_recipient($channel['channel_name'] . ' <' . channel_reddress($channel) . '>');
}
else
- $DR = new Zotlabs\Zot\DReport(z_root(),$d['hash'],$d['hash'],'sync packet','channel sync delivered');
+ $DR = new Zotlabs\Lib\DReport(z_root(),$d['hash'],$d['hash'],'sync packet','channel sync delivered');
$result[] = $DR->get();
}
@@ -4793,7 +4916,7 @@ function zot_reply_auth_check($data,$encrypted_packet) {
* the web server. We should probably convert this to webserver time rather than DB time so
* that the different clocks won't affect it and allow us to keep the time short.
*/
- Zotlabs\Zot\Verify::purge('auth', '30 MINUTE');
+ Zotlabs\Lib\Verify::purge('auth', '30 MINUTE');
$y = q("select xchan_pubkey from xchan where xchan_hash = '%s' limit 1",
dbesc($sender_hash)
@@ -4834,7 +4957,7 @@ function zot_reply_auth_check($data,$encrypted_packet) {
// This additionally checks for forged sites since we already stored the expected result in meta
// and we've already verified that this is them via zot_gethub() and that their key signed our token
- $z = Zotlabs\Zot\Verify::match('auth',$c[0]['channel_id'],$data['secret'],$data['sender']['url']);
+ $z = Zotlabs\Lib\Verify::match('auth',$c[0]['channel_id'],$data['secret'],$data['sender']['url']);
if (! $z) {
logger('mod_zot: auth_check: verification key not found.');
$ret['message'] .= 'verification key not found' . EOL;
@@ -4967,6 +5090,39 @@ function zot_reply_refresh($sender, $recipients) {
}
+function zot6_check_sig() {
+
+ $ret = [ 'success' => false ];
+
+ logger('server: ' . print_r($_SERVER,true), LOGGER_DATA);
+
+ if(array_key_exists('HTTP_SIGNATURE',$_SERVER)) {
+ $sigblock = \Zotlabs\Web\HTTPSig::parse_sigheader($_SERVER['HTTP_SIGNATURE']);
+ if($sigblock) {
+ $keyId = $sigblock['keyId'];
+
+ if($keyId) {
+ $r = q("select hubloc.*, site_crypto from hubloc left join site on hubloc_url = site_url
+ where hubloc_addr = '%s' ",
+ dbesc(str_replace('acct:','',$keyId))
+ );
+ if($r) {
+ foreach($r as $hubloc) {
+ $verified = \Zotlabs\Web\HTTPSig::verify('',$hubloc['xchan_pubkey']);
+ if($verified && $verified['header_signed'] && $verified['header_valid'] && $verified['content_signed'] && $verified['content_valid']) {
+ $ret['hubloc'] = $hubloc;
+ $ret['success'] = true;
+ return $ret;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return $ret;
+}
+
function zot_reply_notify($data) {
$ret = array('success' => false);
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
index 673e4cd75..5cd04467d 100644
--- a/install/schema_mysql.sql
+++ b/install/schema_mysql.sql
@@ -644,7 +644,6 @@ CREATE TABLE IF NOT EXISTS `item` (
`item_pending_remove` tinyint(1) NOT NULL DEFAULT 0 ,
`item_blocked` tinyint(1) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
KEY `parent` (`parent`),
KEY `created` (`created`),
KEY `edited` (`edited`),
@@ -652,6 +651,14 @@ CREATE TABLE IF NOT EXISTS `item` (
KEY `uid_commented` (`uid`, `commented`),
KEY `uid_created` (`uid`, `created`),
KEY `uid_item_unseen` (`uid`, `item_unseen`),
+ KEY `uid_item_type` (`uid`, `item_type`),
+ KEY `uid_item_thread_top` (`uid`, `item_thread_top`),
+ KEY `uid_item_blocked` (`uid`, `item_blocked`),
+ KEY `uid_item_wall` (`uid`, `item_wall`),
+ KEY `uid_item_starred` (`uid`, `item_starred`),
+ KEY `uid_item_retained` (`uid`, `item_retained`),
+ KEY `uid_item_private` (`uid`, `item_private`),
+ KEY `uid_resource_type` (`uid`, `resource_type`),
KEY `aid` (`aid`),
KEY `owner_xchan` (`owner_xchan`),
KEY `author_xchan` (`author_xchan`),
@@ -662,7 +669,6 @@ CREATE TABLE IF NOT EXISTS `item` (
KEY `commented` (`commented`),
KEY `verb` (`verb`),
KEY `obj_type` (`obj_type`),
- KEY `item_private` (`item_private`),
KEY `llink` (`llink`),
KEY `expires` (`expires`),
KEY `revision` (`revision`),
@@ -676,11 +682,9 @@ CREATE TABLE IF NOT EXISTS `item` (
KEY `comments_closed` (`comments_closed`),
KEY `changed` (`changed`),
KEY `item_origin` (`item_origin`),
+ KEY `item_wall` (`item_wall`),
KEY `item_unseen` (`item_unseen`),
- KEY `item_starred` (`item_starred`),
KEY `item_uplink` (`item_uplink`),
- KEY `item_wall` (`item_wall`),
- KEY `item_thread_top` (`item_thread_top`),
KEY `item_notshown` (`item_notshown`),
KEY `item_nsfw` (`item_nsfw`),
KEY `item_relay` (`item_relay`),
@@ -688,16 +692,10 @@ CREATE TABLE IF NOT EXISTS `item` (
KEY `item_nocomment` (`item_nocomment`),
KEY `item_obscured` (`item_obscured`),
KEY `item_verified` (`item_verified`),
- KEY `item_retained` (`item_retained`),
KEY `item_rss` (`item_rss`),
- KEY `item_deleted` (`item_deleted`),
- KEY `item_type` (`item_type`),
- KEY `item_hidden` (`item_hidden`),
KEY `item_consensus` (`item_consensus`),
- KEY `item_unpublished` (`item_unpublished`),
- KEY `item_delayed` (`item_delayed`),
- KEY `item_pending_remove` (`item_pending_remove`),
- KEY `item_blocked` (`item_blocked`)
+ KEY `item_deleted_pending_remove_changed` (`item_deleted`, `item_pending_remove`, `changed`),
+ KEY `item_pending_remove_changed` (`item_pending_remove`, `changed`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `item_id` (
@@ -969,11 +967,13 @@ CREATE TABLE IF NOT EXISTS `photo` (
CREATE TABLE IF NOT EXISTS `poll` (
`poll_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `poll_guid` varchar(191) NOT NULL,
`poll_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
`poll_desc` text NOT NULL,
`poll_flags` int(11) NOT NULL DEFAULT 0 ,
`poll_votes` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`poll_id`),
+ KEY `poll_guid` (`poll_guid`),
KEY `poll_channel` (`poll_channel`),
KEY `poll_flags` (`poll_flags`),
KEY `poll_votes` (`poll_votes`)
@@ -981,11 +981,13 @@ CREATE TABLE IF NOT EXISTS `poll` (
CREATE TABLE IF NOT EXISTS `poll_elm` (
`pelm_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `pelm_guid` varchar(191) NOT NULL,
`pelm_poll` int(10) unsigned NOT NULL DEFAULT 0 ,
`pelm_desc` text NOT NULL,
`pelm_flags` int(11) NOT NULL DEFAULT 0 ,
`pelm_result` float NOT NULL DEFAULT 0 ,
PRIMARY KEY (`pelm_id`),
+ KEY `pelm_guid` (`pelm_guid`),
KEY `pelm_poll` (`pelm_poll`),
KEY `pelm_result` (`pelm_result`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1263,12 +1265,14 @@ CREATE TABLE IF NOT EXISTS `verify` (
CREATE TABLE IF NOT EXISTS `vote` (
`vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `vote_guid` varchar(191) NOT NULL,
`vote_poll` int(11) NOT NULL DEFAULT 0 ,
`vote_element` int(11) NOT NULL DEFAULT 0 ,
`vote_result` text NOT NULL,
`vote_xchan` char(191) NOT NULL DEFAULT '',
PRIMARY KEY (`vote_id`),
UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`),
+ KEY `vote_guid` (`vote_guid`),
KEY `vote_poll` (`vote_poll`),
KEY `vote_element` (`vote_element`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index 6acfc830d..2a0f08bde 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -942,24 +942,28 @@ create index "photo_os_storage" on photo ("os_storage");
CREATE TABLE "poll" (
"poll_id" serial NOT NULL,
- "poll_channel" bigint NOT NULL DEFAULT 0 ,
+ "poll_guid" text NOT NULL,
+ "poll_channel" bigint NOT NULL DEFAULT '0',
"poll_desc" text NOT NULL,
"poll_flags" bigint NOT NULL DEFAULT 0 ,
"poll_votes" bigint NOT NULL DEFAULT 0 ,
PRIMARY KEY ("poll_id")
);
+create index "poll_guid" on poll ("poll_guid");
create index "poll_channel" on poll ("poll_channel");
create index "poll_flags" on poll ("poll_flags");
create index "poll_votes" on poll ("poll_votes");
CREATE TABLE "poll_elm" (
"pelm_id" serial NOT NULL,
- "pelm_poll" bigint NOT NULL DEFAULT 0 ,
+ "pelm_guid" text NOT NULL,
+ "pelm_poll" bigint NOT NULL DEFAULT '0',
"pelm_desc" text NOT NULL,
"pelm_flags" bigint NOT NULL DEFAULT 0 ,
"pelm_result" float NOT NULL DEFAULT 0 ,
PRIMARY KEY ("pelm_id")
);
+create index "pelm_guid" on poll_elm ("pelm_guid");
create index "pelm_poll" on poll_elm ("pelm_poll");
create index "pelm_result" on poll_elm ("pelm_result");
@@ -1227,13 +1231,15 @@ create index "verify_meta" on verify ("meta");
create index "verify_created" on verify ("created");
CREATE TABLE "vote" (
"vote_id" serial NOT NULL,
- "vote_poll" bigint NOT NULL DEFAULT 0 ,
- "vote_element" bigint NOT NULL DEFAULT 0 ,
+ "vote_guid" text NOT NULL,
+ "vote_poll" bigint NOT NULL DEFAULT '0',
+ "vote_element" bigint NOT NULL DEFAULT '0',
"vote_result" text NOT NULL,
"vote_xchan" text NOT NULL DEFAULT '',
PRIMARY KEY ("vote_id"),
UNIQUE ("vote_poll","vote_element","vote_xchan")
);
+create index "vote_guid" on vote ("vote_guid");
create index "vote_poll" on vote ("vote_poll");
create index "vote_element" on vote ("vote_element");
CREATE TABLE "xchan" (
diff --git a/install/update.php b/install/update.php
deleted file mode 100644
index f7b9b03ed..000000000
--- a/install/update.php
+++ /dev/null
@@ -1,3072 +0,0 @@
-<?php
-
-define( 'UPDATE_VERSION' , 1198 );
-
-/**
- *
- * update.php - automatic system update
- *
- * Automatically update database schemas and any other development changes such that
- * copying the latest files from the source code repository will always perform a clean
- * and painless upgrade.
- *
- * Each function in this file is named update_rnnnn() where nnnn is an increasing number
- * which began counting at 1000.
- *
- * At the top of the file "boot.php" is a define for DB_UPDATE_VERSION. Any time there is a change
- * to the database schema or one which requires an upgrade path from the existing application,
- * the DB_UPDATE_VERSION and the UPDATE_VERSION at the top of this file are incremented.
- *
- * The current DB_UPDATE_VERSION is stored in the config area of the database. If the application starts up
- * and DB_UPDATE_VERSION is greater than the last stored build number, we will process every update function
- * in order from the currently stored value to the new DB_UPDATE_VERSION. This is expected to bring the system
- * up to current without requiring re-installation or manual intervention.
- *
- * Once the upgrade functions have completed, the current DB_UPDATE_VERSION is stored as the current value.
- * The DB_UPDATE_VERSION will always be one greater than the last numbered script in this file.
- *
- * If you change the database schema, the following are required:
- * 1. Update the files schema_mysql.sql and schema_postgres.sql to match the new schema.
- * Be sure to read doc/sql_conventions.bb ($yoururl/help/sql_conventions) use only standard
- * SQL data types where possible to keep differences in the files to a minimum
- * 2. Update this file by adding a new function at the end with the number of the current DB_UPDATE_VERSION.
- * This function should modify the current database schema and perform any other steps necessary
- * to ensure that upgrade is silent and free from requiring interaction. Review to ensure that it
- * will run correctly on both postgres and MySQL/Mariadb. It is very difficult and messy to fix DB update
- * errors. Once pushed, it requires a new update which undoes any damage and performs the corrected updated.
- * 3. Increment the DB_UPDATE_VERSION in boot.php *AND* the UPDATE_VERSION in this file to match it
- * 4. TEST the upgrade prior to checkin and filing a pull request.
- *
- */
-
-function update_r1000() {
- $r = q("ALTER TABLE `channel` ADD `channel_a_delegate` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0', ADD INDEX ( `channel_a_delegate` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1001() {
- $r = q("CREATE TABLE if not exists `verify` (
- `id` INT(10) UNSIGNED NOT NULL ,
- `channel` INT(10) UNSIGNED NOT NULL DEFAULT '0',
- `type` CHAR( 32 ) NOT NULL DEFAULT '',
- `token` CHAR( 255 ) NOT NULL DEFAULT '',
- `meta` CHAR( 255 ) NOT NULL DEFAULT '',
- `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY ( `id` )
- ) ENGINE = MYISAM DEFAULT CHARSET=utf8");
-
- $r2 = q("alter table `verify` add index (`channel`), add index (`type`), add index (`token`),
- add index (`meta`), add index (`created`)");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1002() {
- $r = q("ALTER TABLE `event` CHANGE `account` `aid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r2 = q("alter table `event` drop index `account`, add index (`aid`)");
-
- q("drop table contact");
- q("drop table deliverq");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1003() {
- $r = q("ALTER TABLE `xchan` ADD `xchan_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `xchan_network` ,
-ADD INDEX ( `xchan_flags` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1004() {
- $r = q("CREATE TABLE if not exists `site` (
-`site_url` CHAR( 255 ) NOT NULL ,
-`site_flags` INT NOT NULL DEFAULT '0',
-`site_update` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-`site_directory` CHAR( 255 ) NOT NULL DEFAULT '',
-PRIMARY KEY ( `site_url` )
-) ENGINE = MYISAM DEFAULT CHARSET=utf8");
-
- $r2 = q("alter table site add index (site_flags), add index (site_update), add index (site_directory) ");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1005() {
- q("drop table guid");
- q("drop table `notify-threads`");
- return UPDATE_SUCCESS;
-}
-
-function update_r1006() {
-
- $r = q("CREATE TABLE IF NOT EXISTS `xprof` (
- `xprof_hash` char(255) NOT NULL,
- `xprof_desc` char(255) NOT NULL DEFAULT '',
- `xprof_dob` char(12) NOT NULL DEFAULT '',
- `xprof_gender` char(255) NOT NULL DEFAULT '',
- `xprof_marital` char(255) NOT NULL DEFAULT '',
- `xprof_sexual` char(255) NOT NULL DEFAULT '',
- `xprof_locale` char(255) NOT NULL DEFAULT '',
- `xprof_region` char(255) NOT NULL DEFAULT '',
- `xprof_postcode` char(32) NOT NULL DEFAULT '',
- `xprof_country` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`xprof_hash`),
- KEY `xprof_desc` (`xprof_desc`),
- KEY `xprof_dob` (`xprof_dob`),
- KEY `xprof_gender` (`xprof_gender`),
- KEY `xprof_marital` (`xprof_marital`),
- KEY `xprof_sexual` (`xprof_sexual`),
- KEY `xprof_locale` (`xprof_locale`),
- KEY `xprof_region` (`xprof_region`),
- KEY `xprof_postcode` (`xprof_postcode`),
- KEY `xprof_country` (`xprof_country`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `xtag` (
- `xtag_hash` char(255) NOT NULL,
- `xtag_term` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`xtag_hash`),
- KEY `xtag_term` (`xtag_term`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1007() {
- $r = q("ALTER TABLE `channel` ADD `channel_r_storage` INT UNSIGNED NOT NULL DEFAULT '128', ADD `channel_w_storage` INT UNSIGNED NOT NULL DEFAULT '128', add index ( channel_r_storage ), add index ( channel_w_storage )");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1008() {
- $r = q("alter table profile drop prv_keywords, CHANGE `pub_keywords` `keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, drop index pub_keywords");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1009() {
- $r = q("ALTER TABLE `xprof` ADD `xprof_keywords` TEXT NOT NULL");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1010() {
- $r = q("ALTER TABLE `abook` ADD `abook_dob` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `abook_connnected` ,
-ADD INDEX ( `abook_dob` )");
-
- $r2 = q("ALTER TABLE `profile` ADD `dob_tz` CHAR( 255 ) NOT NULL DEFAULT 'UTC' AFTER `dob`");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1011() {
- $r = q("ALTER TABLE `item` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `edited` ,
-ADD INDEX ( `expires` )");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1012() {
- $r = q("ALTER TABLE `xchan` ADD `xchan_connurl` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_url` ,
-ADD INDEX ( `xchan_connurl` )");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1013() {
- $r = q("CREATE TABLE if not exists `xlink` (
-`xlink_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`xlink_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
-`xlink_link` CHAR( 255 ) NOT NULL DEFAULT '',
-`xlink_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00'
-) ENGINE = MYISAM DEFAULT CHARSET=utf8");
-
- $r2 = q("alter table xlink add index ( xlink_xchan ), add index ( xlink_link ), add index ( xlink_updated ) ");
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1014() {
- $r = q("ALTER TABLE `verify` CHANGE `id` `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1015() {
- $r = q("ALTER TABLE `channel` ADD `channel_r_pages` INT UNSIGNED NOT NULL DEFAULT '128',
-ADD `channel_w_pages` INT UNSIGNED NOT NULL DEFAULT '128'");
-
- $r2 = q("ALTER TABLE `channel` ADD INDEX ( `channel_r_pages` ) , ADD INDEX ( `channel_w_pages` ) ");
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1016() {
-
- $r = q("CREATE TABLE IF NOT EXISTS `menu` (
- `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
- `menu_desc` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`menu_id`),
- KEY `menu_channel_id` (`menu_channel_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `menu_item` (
- `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `mitem_link` char(255) NOT NULL DEFAULT '',
- `mitem_desc` char(255) NOT NULL DEFAULT '',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- `mitem_channel_id` int(10) unsigned NOT NULL,
- `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
- `mitem_order` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`mitem_id`),
- KEY `mitem_channel_id` (`mitem_channel_id`),
- KEY `mitem_menu_id` (`mitem_menu_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
-
- if($r && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1017() {
- $r = q("ALTER TABLE `event` CHANGE `cid` `event_xchan` CHAR( 255 ) NOT NULL DEFAULT '', ADD INDEX ( `event_xchan` ), drop index cid ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1018() {
- $r = q("ALTER TABLE `event` ADD `event_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `event_xchan` ,
-ADD INDEX ( `event_hash` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1019() {
- $r = q("ALTER TABLE `event` DROP `message_id` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1020() {
- $r = q("alter table photo drop `contact-id`, drop guid, drop index `resource-id`, add index ( `resource_id` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1021() {
-
- $r = q("ALTER TABLE `abook` CHANGE `abook_connnected` `abook_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
- drop index `abook_connnected`, add index ( `abook_connected` ) ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1022() {
- $r = q("alter table attach add index ( filename ), add index ( filetype ), add index ( filesize ), add index ( created ), add index ( edited ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1023() {
- $r = q("ALTER TABLE `item` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `lang` , add index ( revision ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1024() {
- $r = q("ALTER TABLE `attach` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `filesize` ,
-ADD INDEX ( `revision` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1025() {
- $r = q("ALTER TABLE `attach` ADD `folder` CHAR( 64 ) NOT NULL DEFAULT '' AFTER `revision` ,
-ADD `flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `folder` , add index ( folder ), add index ( flags )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1026() {
- $r = q("ALTER TABLE `item` ADD `mimetype` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` ,
-ADD INDEX ( `mimetype` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1027() {
- $r = q("ALTER TABLE `abook` ADD `abook_rating` INT NOT NULL DEFAULT '0' AFTER `abook_closeness` ,
-ADD INDEX ( `abook_rating` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1028() {
- $r = q("ALTER TABLE `xlink` ADD `xlink_rating` INT NOT NULL DEFAULT '0' AFTER `xlink_link` ,
-ADD INDEX ( `xlink_rating` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1029() {
- $r = q("ALTER TABLE `channel` ADD `channel_deleted` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` ,
-ADD INDEX ( `channel_deleted` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1030() {
- $r = q("CREATE TABLE IF NOT EXISTS `issue` (
-`issue_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`issue_created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-`issue_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-`issue_assigned` CHAR( 255 ) NOT NULL ,
-`issue_priority` INT NOT NULL ,
-`issue_status` INT NOT NULL ,
-`issue_component` CHAR( 255 ) NOT NULL,
-KEY `issue_created` (`issue_created`),
-KEY `issue_updated` (`issue_updated`),
-KEY `issue_assigned` (`issue_assigned`),
-KEY `issue_priority` (`issue_priority`),
-KEY `issue_status` (`issue_status`),
-KEY `issue_component` (`issue_component`)
-) ENGINE = MYISAM DEFAULT CHARSET=utf8");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1031() {
- $r = q("ALTER TABLE `account` ADD `account_external` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `account_email` ,
-ADD INDEX ( `account_external` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1032() {
- $r = q("CREATE TABLE if not exists `xign` (
-`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`uid` INT NOT NULL DEFAULT '0',
-`xchan` CHAR( 255 ) NOT NULL DEFAULT '',
-KEY `uid` (`uid`),
-KEY `xchan` (`xchan`)
-) ENGINE = MYISAM DEFAULT CHARSET = utf8");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1033() {
- $r = q("CREATE TABLE if not exists `shares` (
-`share_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`share_type` INT NOT NULL DEFAULT '0',
-`share_target` INT UNSIGNED NOT NULL DEFAULT '0',
-`share_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
-KEY `share_type` (`share_type`),
-KEY `share_target` (`share_target`),
-KEY `share_xchan` (`share_xchan`)
-) ENGINE = MYISAM DEFAULT CHARSET = utf8");
-
- // if these fail don't bother reporting it
-
- q("drop table gcign");
- q("drop table gcontact");
- q("drop table glink");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1034() {
- $r = q("CREATE TABLE if not exists `updates` (
-`ud_hash` CHAR( 128 ) NOT NULL ,
-`ud_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-PRIMARY KEY ( `ud_hash` ),
-KEY `ud_date` ( `ud_date` )
-) ENGINE = MYISAM DEFAULT CHARSET = utf8");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1035() {
- $r = q("CREATE TABLE if not exists `xconfig` (
-`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`xchan` CHAR( 255 ) NOT NULL ,
-`cat` CHAR( 255 ) NOT NULL ,
-`k` CHAR( 255 ) NOT NULL ,
-`v` MEDIUMTEXT NOT NULL,
-KEY `xchan` ( `xchan` ),
-KEY `cat` ( `cat` ),
-KEY `k` ( `k` )
-) ENGINE = MYISAM DEFAULT CHARSET = utf8");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1036() {
- $r = q("ALTER TABLE `profile` ADD `channels` TEXT NOT NULL AFTER `contact` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-
-function update_r1037() {
- $r1 = q("ALTER TABLE `item` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '',
-CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '',
- DROP INDEX `uri` ,
-ADD INDEX `mid` ( `mid` ),
-DROP INDEX `parent_uri` ,
-ADD INDEX `parent_mid` ( `parent_mid` ),
- DROP INDEX `uid_uri` ,
-ADD INDEX `uid_mid` ( `mid` , `uid` ) ");
-
- $r2 = q("ALTER TABLE `mail` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
-CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
-DROP INDEX `uri` ,
-ADD INDEX `mid` ( `mid` ),
- DROP INDEX `parent_uri` ,
-ADD INDEX `parent_mid` ( `parent_mid` ) ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1038() {
- $r = q("ALTER TABLE `manage` CHANGE `mid` `xchan` CHAR( 255 ) NOT NULL DEFAULT '', drop index `mid`, ADD INDEX ( `xchan` )");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-
-function update_r1039() {
- $r = q("ALTER TABLE `channel` CHANGE `channel_default_gid` `channel_default_group` CHAR( 255 ) NOT NULL DEFAULT ''");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1040() {
- $r1 = q("ALTER TABLE `session` CHANGE `expire` `expire` BIGINT UNSIGNED NOT NULL ");
- $r2 = q("ALTER TABLE `tokens` CHANGE `expires` `expires` BIGINT UNSIGNED NOT NULL ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1041() {
- $r = q("ALTER TABLE `outq` ADD `outq_driver` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `outq_channel` ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1042() {
- $r = q("ALTER TABLE `hubloc` ADD `hubloc_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-ADD `hubloc_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `hubloc_updated` ), ADD INDEX ( `hubloc_connected` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1043() {
- $r = q("ALTER TABLE `item` ADD `comment_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` ,
-ADD INDEX ( `comment_policy` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1044() {
- $r = q("ALTER TABLE `term` ADD `imgurl` CHAR( 255 ) NOT NULL ,
-ADD INDEX ( `imgurl` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1045() {
- $r = q("ALTER TABLE `site` ADD `site_register` INT NOT NULL DEFAULT '0',
-ADD INDEX ( `site_register` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1046() {
- $r = q("ALTER TABLE `term` ADD `term_hash` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `term_hash` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1047() {
- $r = q("ALTER TABLE `xprof` ADD `xprof_age` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `xprof_hash` ,
-ADD INDEX ( `xprof_age` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1048() {
- $r = q("CREATE TABLE IF NOT EXISTS `obj` (
- `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `obj_page` char(64) NOT NULL DEFAULT '',
- `obj_verb` char(255) NOT NULL DEFAULT '',
- `obj_type` int(10) unsigned NOT NULL DEFAULT '0',
- `obj_obj` char(255) NOT NULL DEFAULT '',
- `obj_channel` int(10) unsigned NOT NULL DEFAULT '0',
- PRIMARY KEY (`obj_id`),
- KEY `obj_verb` (`obj_verb`),
- KEY `obj_page` (`obj_page`),
- KEY `obj_type` (`obj_type`),
- KEY `obj_channel` (`obj_channel`),
- KEY `obj_obj` (`obj_obj`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1049() {
- $r = q("ALTER TABLE `term` ADD `parent_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `term_hash` , ADD INDEX ( `parent_hash` ) ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1050() {
- $r = q("ALTER TABLE `xtag` DROP PRIMARY KEY , ADD `xtag_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST , ADD INDEX ( `xtag_hash` ) ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1051() {
- $r = q("ALTER TABLE `photo` ADD `photo_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `profile` , ADD INDEX ( `photo_flags` ) ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1052() {
- $r = q("ALTER TABLE `channel` ADD UNIQUE (`channel_address`) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1053() {
- $r = q("ALTER TABLE `profile` ADD `chandesc` TEXT NOT NULL DEFAULT '' AFTER `pdesc` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1054() {
- $r = q("ALTER TABLE `item` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1055() {
- $r = q("ALTER TABLE `mail` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1056() {
- $r = q("ALTER TABLE `xchan` ADD `xchan_instance_url` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_network` ,
-ADD INDEX ( `xchan_instance_url` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1057() {
- $r = q("drop table intro");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1058() {
- $r1 = q("ALTER TABLE `menu` ADD `menu_name` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `menu_channel_id` ,
-ADD INDEX ( `menu_name` ) ");
-
- $r2 = q("ALTER TABLE `menu_item` ADD `mitem_flags` INT NOT NULL DEFAULT '0' AFTER `mitem_desc` ,
-ADD INDEX ( `mitem_flags` ) ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1059() {
- $r = q("ALTER TABLE `mail` ADD `attach` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `body` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1060() {
-
- $r = q("CREATE TABLE IF NOT EXISTS `vote` (
- `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `vote_poll` int(11) NOT NULL DEFAULT '0',
- `vote_element` int(11) NOT NULL DEFAULT '0',
- `vote_result` text NOT NULL,
- `vote_xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`vote_id`),
- UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1061() {
- $r = q("ALTER TABLE `vote` ADD INDEX ( `vote_poll` ), ADD INDEX ( `vote_element` ) ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1062() {
- $r1 = q("CREATE TABLE IF NOT EXISTS `poll` (
-`poll_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`poll_channel` INT UNSIGNED NOT NULL DEFAULT '0',
-`poll_desc` TEXT NOT NULL DEFAULT '',
-`poll_flags` INT NOT NULL DEFAULT '0',
-`poll_votes` INT NOT NULL DEFAULT '0',
-KEY `poll_channel` (`poll_channel`),
-KEY `poll_flags` (`poll_flags`),
-KEY `poll_votes` (`poll_votes`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `poll_elm` (
-`pelm_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`pelm_poll` INT UNSIGNED NOT NULL DEFAULT '0',
-`pelm_desc` TEXT NOT NULL DEFAULT '',
-`pelm_flags` INT NOT NULL DEFAULT '0',
-`pelm_result` FLOAT NOT NULL DEFAULT '0',
-KEY `pelm_poll` (`pelm_poll`),
-KEY `pelm_result` (`pelm_result`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1063() {
- $r = q("ALTER TABLE `xchan` ADD `xchan_follow` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_connurl` ,
-ADD `xchan_connpage` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_follow` ,
-ADD INDEX ( `xchan_follow` ), ADD INDEX ( `xchan_connpage`) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1064() {
- $r = q("ALTER TABLE `updates` ADD `ud_guid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `ud_hash` ,
-ADD INDEX ( `ud_guid` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1065() {
- $r = q("ALTER TABLE `item` DROP `wall`, ADD `layout_mid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `target` ,
-ADD INDEX ( `layout_mid` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1066() {
- $r = q("ALTER TABLE `site` ADD `site_access` INT NOT NULL DEFAULT '0' AFTER `site_url` ,
-ADD INDEX ( `site_access` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1067() {
- $r = q("ALTER TABLE `updates` DROP PRIMARY KEY , ADD `ud_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST, ADD INDEX ( `ud_hash` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1068(){
- $r = q("ALTER TABLE `hubloc` ADD `hubloc_status` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `hubloc_flags` , ADD INDEX ( `hubloc_status` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1069() {
- $r = q("ALTER TABLE `site` ADD `site_sellpage` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `site_sellpage` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1070() {
- $r = q("ALTER TABLE `updates` ADD `ud_flags` INT NOT NULL DEFAULT '0',
-ADD INDEX ( `ud_flags` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1071() {
- $r = q("ALTER TABLE `updates` ADD `ud_addr` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `ud_addr` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1072() {
- $r = q("ALTER TABLE `xtag` ADD `xtag_flags` INT NOT NULL DEFAULT '0',
-ADD INDEX ( `xtag_flags` ) ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1073() {
- $r1 = q("CREATE TABLE IF NOT EXISTS `source` (
-`src_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-`src_channel_id` INT UNSIGNED NOT NULL DEFAULT '0',
-`src_channel_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
-`src_xchan` CHAR( 255 ) NOT NULL DEFAULT '',
-`src_patt` MEDIUMTEXT NOT NULL DEFAULT ''
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- $r2 = q("ALTER TABLE `source` ADD INDEX ( `src_channel_id` ), ADD INDEX ( `src_channel_xchan` ), ADD INDEX ( `src_xchan` ) ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1074() {
- $r1 = q("ALTER TABLE `site` ADD `site_sync` DATETIME NOT NULL AFTER `site_update` ");
-
- $r2 = q("ALTER TABLE `updates` ADD `ud_last` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `ud_date` ,
-ADD INDEX ( `ud_last` ) ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1075() {
- $r = q("ALTER TABLE `channel` ADD `channel_a_republish` INT UNSIGNED NOT NULL DEFAULT '128',
-ADD INDEX ( `channel_a_republish` )");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1076() {
- $r = q("ALTER TABLE `item` CHANGE `inform` `sig` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1077() {
- $r = q("ALTER TABLE `item` ADD `source_xchan` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1078() {
- $r = q("ALTER TABLE `channel` ADD `channel_dirdate` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` , ADD INDEX ( `channel_dirdate` )");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1079() {
- $r = q("ALTER TABLE `site` ADD `site_location` CHAR( 255 ) NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1080() {
- $r = q("ALTER TABLE `mail` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-ADD INDEX ( `expires` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1081() {
- $r = q("DROP TABLE `queue` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1082() {
- $r = q("DROP TABLE `challenge` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1083() {
- $r = q("ALTER TABLE `notify` ADD `aid` INT NOT NULL AFTER `msg` ,
-ADD INDEX ( `aid` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1084() {
-
-
- $r = q("CREATE TABLE if not exists `sys_perms` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
- `cat` CHAR( 255 ) NOT NULL ,
- `k` CHAR( 255 ) NOT NULL ,
- `v` MEDIUMTEXT NOT NULL,
- `public_perm` TINYINT( 1 ) UNSIGNED NOT NULL
-) ENGINE = MYISAM DEFAULT CHARSET = utf8");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1085() {
- $r1 = q("ALTER TABLE `photo` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
-
- $r2 = q("RENAME TABLE `group` TO `groups`");
-
- $r3 = q("ALTER TABLE `event` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
-
- if($r1 && $r2 && $r3)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1086() {
- $r = q("ALTER TABLE `account` ADD `account_level` INT UNSIGNED NOT NULL DEFAULT '0',
-ADD INDEX ( `account_level` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1087() {
- $r = q("ALTER TABLE `xprof` ADD `xprof_about` TEXT NOT NULL DEFAULT '',
-ADD `xprof_homepage` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD `xprof_hometown` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `xprof_hometown` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1088() {
- $r = q("ALTER TABLE `obj` ADD `allow_cid` MEDIUMTEXT NOT NULL DEFAULT '',
-ADD `allow_gid` MEDIUMTEXT NOT NULL DEFAULT '',
-ADD `deny_cid` MEDIUMTEXT NOT NULL DEFAULT '',
-ADD `deny_gid` MEDIUMTEXT NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1089() {
- $r = q("ALTER TABLE `attach` ADD `creator` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `hash` ,
-ADD INDEX ( `creator` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1090() {
- $r = q("ALTER TABLE `menu` ADD `menu_flags` INT NOT NULL DEFAULT '0',
-ADD INDEX ( `menu_flags` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1091() {
- @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true);
- @file_put_contents('store/[data]/locks','');
- return UPDATE_SUCCESS;
-}
-
-function update_r1092() {
- $r1 = q("CREATE TABLE IF NOT EXISTS `chat` (
- `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `chat_room` int(10) unsigned NOT NULL DEFAULT '0',
- `chat_xchan` char(255) NOT NULL DEFAULT '',
- `chat_text` mediumtext NOT NULL,
- `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY (`chat_id`),
- KEY `chat_room` (`chat_room`),
- KEY `chat_xchan` (`chat_xchan`),
- KEY `created` (`created`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `chatpresence` (
- `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cp_room` int(10) unsigned NOT NULL DEFAULT '0',
- `cp_xchan` char(255) NOT NULL DEFAULT '',
- `cp_last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `cp_status` char(255) NOT NULL,
- PRIMARY KEY (`cp_id`),
- KEY `cp_room` (`cp_room`),
- KEY `cp_xchan` (`cp_xchan`),
- KEY `cp_last` (`cp_last`),
- KEY `cp_status` (`cp_status`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- $r3 = q("CREATE TABLE IF NOT EXISTS `chatroom` (
- `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cr_aid` int(10) unsigned NOT NULL DEFAULT '0',
- `cr_uid` int(10) unsigned NOT NULL DEFAULT '0',
- `cr_name` char(255) NOT NULL DEFAULT '',
- `cr_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `cr_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- PRIMARY KEY (`cr_id`),
- KEY `cr_aid` (`cr_aid`),
- KEY `cr_uid` (`cr_uid`),
- KEY `cr_name` (`cr_name`),
- KEY `cr_created` (`cr_created`),
- KEY `cr_edited` (`cr_edited`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
-
- if($r1 && $r2 && $r3)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-
-
-function update_r1093() {
- $r = q("ALTER TABLE `chatpresence` ADD `cp_client` CHAR( 128 ) NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1094() {
- $r = q("ALTER TABLE `chatroom` ADD `cr_expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `cr_edited` ,
-ADD INDEX ( `cr_expire` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1095() {
- $r = q("ALTER TABLE `channel` ADD `channel_a_bookmark` INT UNSIGNED NOT NULL DEFAULT '128',
-ADD INDEX ( `channel_a_bookmark` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1096() {
- $r = q("ALTER TABLE `account` CHANGE `account_level` `account_level` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1097() {
-
- // fix some mangled hublocs from a bug long ago
-
- $r = q("select hubloc_id, hubloc_addr from hubloc where hubloc_addr like '%%/%%'");
- if($r) {
- foreach($r as $rr) {
- q("update hubloc set hubloc_addr = '%s' where hubloc_id = %d",
- dbesc(substr($rr['hubloc_addr'],0,strpos($rr['hubloc_addr'],'/'))),
- intval($rr['hubloc_id'])
- );
- }
- }
- return UPDATE_SUCCESS;
-
-}
-
-function update_r1098() {
- $r = q("ALTER TABLE `channel` CHANGE `channel_r_stream` `channel_r_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r2 = q("ALTER TABLE `channel` CHANGE `channel_r_profile` `channel_r_profile` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r3 = q("ALTER TABLE `channel` CHANGE `channel_r_photos` `channel_r_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r4 = q("ALTER TABLE `channel` CHANGE `channel_r_abook` `channel_r_abook` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r4 = q("ALTER TABLE `channel` CHANGE `channel_w_stream` `channel_w_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r5 = q("ALTER TABLE `channel` CHANGE `channel_w_wall` `channel_w_wall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r6 = q("ALTER TABLE `channel` CHANGE `channel_w_tagwall` `channel_w_tagwall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r7 = q("ALTER TABLE `channel` CHANGE `channel_w_comment` `channel_w_comment` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r8 = q("ALTER TABLE `channel` CHANGE `channel_w_mail` `channel_w_mail` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r9 = q("ALTER TABLE `channel` CHANGE `channel_w_photos` `channel_w_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r10 = q("ALTER TABLE `channel` CHANGE `channel_w_chat` `channel_w_chat` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- $r11 = q("ALTER TABLE `channel` CHANGE `channel_a_delegate` `channel_a_delegate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'");
- if($r && $r2 && $r3 && $r3 && $r5 && $r6 && $r7 && $r8 && $r9 && $r9 && $r10 && $r11)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1099() {
- $r = q("CREATE TABLE IF NOT EXISTS `xchat` (
- `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xchat_url` char(255) NOT NULL DEFAULT '',
- `xchat_desc` char(255) NOT NULL DEFAULT '',
- `xchat_xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`xchat_id`),
- KEY `xchat_url` (`xchat_url`),
- KEY `xchat_desc` (`xchat_desc`),
- KEY `xchat_xchan` (`xchat_xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1100() {
- $r = q("ALTER TABLE `xchat` ADD `xchat_edited` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-ADD INDEX ( `xchat_edited` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1101() {
- $r = q("update updates set ud_flags = 2 where ud_flags = (-1)");
- $r = q("update updates set ud_flags = 0 where ud_flags = 4096");
- return UPDATE_SUCCESS;
-}
-
-function update_r1102() {
- $r = q("update abook set abook_flags = (abook_flags - %d)
- where ( abook_flags & %d)",
- intval(ABOOK_FLAG_UNCONNECTED),
- intval(ABOOK_FLAG_UNCONNECTED)
- );
- return UPDATE_SUCCESS;
-}
-
-function update_r1103() {
- $x = curl_version();
- if(stristr($x['ssl_version'],'openssl'))
- set_config('system','curl_ssl_ciphers','ALL:!eNULL');
- return UPDATE_SUCCESS;
-}
-
-function update_r1104() {
- $r = q("ALTER TABLE `item` ADD `route` TEXT NOT NULL DEFAULT '' AFTER `postopts` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1105() {
- $r = q("ALTER TABLE `site` ADD `site_pull` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `site_update` ,
-CHANGE `site_sync` `site_sync` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `site_pull` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1106() {
- $r = q("ALTER TABLE `notify` CHANGE `parent` `parent` CHAR( 255 ) NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1107() {
- $r = q("CREATE TABLE IF NOT EXISTS `app` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `app_id` char(64) NOT NULL DEFAULT '',
- `app_sig` char(255) NOT NULL DEFAULT '',
- `app_author` char(255) NOT NULL DEFAULT '',
- `app_name` char(255) NOT NULL DEFAULT '',
- `app_desc` text NOT NULL,
- `app_url` char(255) NOT NULL DEFAULT '',
- `app_photo` char(255) NOT NULL DEFAULT '',
- `app_version` char(255) NOT NULL DEFAULT '',
- `app_channel` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`),
- KEY `app_id` (`app_id`),
- KEY `app_name` (`app_name`),
- KEY `app_url` (`app_url`),
- KEY `app_photo` (`app_photo`),
- KEY `app_version` (`app_version`),
- KEY `app_channel` (`app_channel`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1108() {
- $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `app_price` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1109() {
- $r = q("ALTER TABLE `app` CHANGE `app_id` `app_id` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-// We ended up with an extra zero in the name for 1108, so do it over and ignore the result.
-
-function update_r1110() {
- $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `app_price` )");
-
- return UPDATE_SUCCESS;
-
-}
-
-function update_r1111() {
- $r = q("ALTER TABLE `app` ADD `app_requires` CHAR( 255 ) NOT NULL DEFAULT '' ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1112() {
- $r = q("CREATE TABLE IF NOT EXISTS `likes` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `liker` char(128) NOT NULL DEFAULT '',
- `likee` char(128) NOT NULL DEFAULT '',
- `iid` int(11) NOT NULL DEFAULT '0',
- `verb` char(255) NOT NULL DEFAULT '',
- `target_type` char(255) NOT NULL DEFAULT '',
- `target` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `liker` (`liker`),
- KEY `likee` (`likee`),
- KEY `iid` (`iid`),
- KEY `verb` (`verb`),
- KEY `target_type` (`target_type`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1113() {
- $r = q("ALTER TABLE `likes` ADD `channel_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` ,
-CHANGE `iid` `iid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0',
-ADD INDEX ( `channel_id` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1114() {
- $r = q("ALTER TABLE `likes` ADD `target_id` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `target_type` ,
-ADD INDEX ( `target_id` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1115() {
-
- // Introducing email verification. Mark all existing accounts as verified or they
- // won't be able to login.
-
- $r = q("update account set account_flags = (account_flags ^ 1) where (account_flags & 1) ");
- return UPDATE_SUCCESS;
-}
-
-function update_r1116() {
- @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true);
- return UPDATE_SUCCESS;
-}
-
-function update_r1117() {
- $r = q("ALTER TABLE `channel` CHANGE `channel_a_bookmark` `channel_w_like` INT( 10 ) UNSIGNED NOT NULL DEFAULT '128',
-DROP INDEX `channel_a_bookmark` , ADD INDEX `channel_w_like` ( `channel_w_like` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1118() {
- $r = q("ALTER TABLE `account` ADD `account_password_changed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
-ADD INDEX ( `account_password_changed` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1119() {
- $r1 = q("CREATE TABLE IF NOT EXISTS `profdef` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `field_name` char(255) NOT NULL DEFAULT '',
- `field_type` char(16) NOT NULL DEFAULT '',
- `field_desc` char(255) NOT NULL DEFAULT '',
- `field_help` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`),
- KEY `field_name` (`field_name`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `profext` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
- `hash` char(255) NOT NULL DEFAULT '',
- `k` char(255) NOT NULL DEFAULT '',
- `v` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `channel_id` (`channel_id`),
- KEY `hash` (`hash`),
- KEY `k` (`k`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1120() {
- $r = q("ALTER TABLE `item` ADD `public_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` ,
-ADD INDEX ( `public_policy` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1121() {
- $r = q("ALTER TABLE `site` ADD `site_realm` CHAR( 255 ) NOT NULL DEFAULT '',
-ADD INDEX ( `site_realm` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1122() {
- $r = q("update site set site_realm = '%s' where true",
- dbesc(DIRECTORY_REALM)
- );
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1123() {
- $r1 = q("ALTER TABLE `hubloc` ADD `hubloc_network` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `hubloc_addr` ,
-ADD INDEX ( `hubloc_network` )");
- $r2 = q("update hubloc set hubloc_network = 'zot' where true");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1124() {
- $r1 = q("CREATE TABLE IF NOT EXISTS `sign` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `iid` int(10) unsigned NOT NULL DEFAULT '0',
- `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
- `signed_text` mediumtext NOT NULL,
- `signature` text NOT NULL,
- `signer` char(255) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `iid` (`iid`),
- KEY `retract_iid` (`retract_iid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `conv` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `guid` char(255) NOT NULL,
- `recips` mediumtext NOT NULL,
- `uid` int(11) NOT NULL,
- `creator` char(255) NOT NULL,
- `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `subject` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `created` (`created`),
- KEY `updated` (`updated`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-
-}
-
-function update_r1125() {
- $r = q("ALTER TABLE `profdef` ADD `field_inputs` MEDIUMTEXT NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-
-function update_r1126() {
- $r = q("ALTER TABLE `mail` ADD `convid` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` ,
-ADD INDEX ( `convid` )");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1127() {
- $r = q("ALTER TABLE `item` ADD `comments_closed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `changed` ,
-ADD INDEX ( `comments_closed` ), ADD INDEX ( `changed` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1128() {
- $r = q("ALTER TABLE `item` ADD `diaspora_meta` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `sig` ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1129() {
- $r = q("update hubloc set hubloc_network = 'zot' where hubloc_network = ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1130() {
- $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
- |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
- |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
-
- $r = q("select abook_channel, abook_my_perms from abook where (abook_flags & %d) and abook_my_perms != 0",
- intval(ABOOK_FLAG_SELF)
- );
- if($r) {
- foreach($r as $rr) {
- set_pconfig($rr['abook_channel'],'system','autoperms',$rr['abook_my_perms']);
- }
- }
- $r = q("update abook set abook_my_perms = %d where (abook_flags & %d) and abook_my_perms = 0",
- intval($myperms),
- intval(ABOOK_FLAG_SELF)
- );
-
- return UPDATE_SUCCESS;
-}
-
-function update_r1131() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) // make sure this gets skipped for anyone who hasn't run it yet, it will fail on pg
- return UPDATE_SUCCESS;
-
- $r1 = q("ALTER TABLE `abook` ADD `abook_rating_text` TEXT NOT NULL DEFAULT '' AFTER `abook_rating` ");
- $r2 = q("ALTER TABLE `xlink` ADD `xlink_rating_text` TEXT NOT NULL DEFAULT '' AFTER `xlink_rating` ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1132() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { // correct previous failed update
- $r1 = q("ALTER TABLE abook ADD abook_rating_text TEXT NOT NULL DEFAULT '' ");
- $r2 = q("ALTER TABLE xlink ADD xlink_rating_text TEXT NOT NULL DEFAULT '' ");
- if(!$r1 || !$r2)
- return UPDATE_FAILED;
- }
- return UPDATE_SUCCESS;
-}
-
-function update_r1133() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE TABLE xperm (
- xp_id serial NOT NULL,
- xp_client varchar( 20 ) NOT NULL DEFAULT '',
- xp_channel bigint NOT NULL DEFAULT '0',
- xp_perm varchar( 64 ) NOT NULL DEFAULT '',
- PRIMARY KEY (xp_id) )");
- $r2 = 0;
- foreach(array('xp_client', 'xp_channel', 'xp_perm') as $fld)
- $r2 += ((q("create index $fld on xperm ($fld)") == false) ? 0 : 1);
-
- $r = (($r1 && $r2) ? true : false);
- }
- else {
- $r = q("CREATE TABLE IF NOT EXISTS `xperm` (
- `xp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
- `xp_client` VARCHAR( 20 ) NOT NULL DEFAULT '',
- `xp_channel` INT UNSIGNED NOT NULL DEFAULT '0',
- `xp_perm` VARCHAR( 64 ) NOT NULL DEFAULT '',
- KEY `xp_client` (`xp_client`),
- KEY `xp_channel` (`xp_channel`),
- KEY `xp_perm` (`xp_perm`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
- }
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1134() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE xlink ADD xlink_static numeric(1) NOT NULL DEFAULT '0' ");
- $r2 = q("create index xlink_static on xlink ( xlink_static ) ");
- $r = $r1 && $r2;
- }
- else
- $r = q("ALTER TABLE xlink ADD xlink_static TINYINT( 1 ) NOT NULL DEFAULT '0', ADD INDEX ( xlink_static ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1135() {
- $r = q("ALTER TABLE xlink ADD xlink_sig TEXT NOT NULL DEFAULT ''");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1136() {
- $r1 = q("alter table item add item_unseen smallint not null default '0' ");
- $r2 = q("create index item_unseen on item ( item_unseen ) ");
- $r3 = q("update item set item_unseen = 1 where ( item_flags & 2 ) > 0 ");
-
- if($r1 && $r2 && $r3)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1137() {
- $r1 = q("alter table site add site_valid smallint not null default '0' ");
- $r2 = q("create index site_valid on site ( site_valid ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1138() {
- $r1 = q("alter table outq add outq_priority smallint not null default '0' ");
- $r2 = q("create index outq_priority on outq ( outq_priority ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1139() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE channel ADD channel_lastpost timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'");
- $r2 = q("create index channel_lastpost on channel ( channel_lastpost ) ");
- $r = $r1 && $r2;
- }
- else
- $r = q("ALTER TABLE `channel` ADD `channel_lastpost` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_dirdate` , ADD INDEX ( `channel_lastpost` ) ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1140() {
- $r = q("select * from clients where true");
- $x = false;
- if($r) {
- foreach($r as $rr) {
- $m = q("INSERT INTO xperm (xp_client, xp_channel, xp_perm) VALUES ('%s', %d, '%s') ",
- dbesc($rr['client_id']),
- intval($rr['uid']),
- dbesc('all')
- );
- if(! $m)
- $x = true;
- }
- }
- if($x)
- return UPDATE_FAILED;
- return UPDATE_SUCCESS;
-}
-
-
-function update_r1141() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE menu ADD menu_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'");
- $r2 = q("create index menu_created on menu ( menu_created ) ");
- $r3 = q("create index menu_edited on menu ( menu_edited ) ");
- $r = $r1 && $r2;
- }
- else
- $r = q("ALTER TABLE menu ADD menu_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( menu_created ), ADD INDEX ( menu_edited ) ");
-
- $t = datetime_convert();
- q("update menu set menu_created = '%s', menu_edited = '%s' where true",
- dbesc($t),
- dbesc($t)
- );
-
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1142() {
-
- $r1 = q("alter table site add site_dead smallint not null default '0' ");
- $r2 = q("create index site_dead on site ( site_dead ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-
-}
-
-function update_r1143() {
-
- $r1 = q("ALTER TABLE abook ADD abook_incl TEXT NOT NULL DEFAULT ''");
- $r2 = q("ALTER TABLE abook ADD abook_excl TEXT NOT NULL DEFAULT '' ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1144() {
- $r = q("select flags, id from attach where flags != 0");
- if($r) {
- foreach($r as $rr) {
- if($rr['flags'] & 1) {
- q("update attach set is_dir = 1 where id = %d",
- intval($rr['id'])
- );
- }
- if($rr['flags'] & 2) {
- q("update attach set os_storage = 1 where id = %d",
- intval($rr['id'])
- );
- }
- }
- }
-
- return UPDATE_SUCCESS;
-}
-
-function update_r1145() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE event ADD event_status char(255) NOT NULL DEFAULT '',
- ADD event_status_date timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- ADD event_percent SMALLINT NOT NULL DEFAULT '0',
- ADD event_repeat TEXT NOT NULL DEFAULT '' ");
- $r2 = q("create index event_status on event ( event_status )");
- $r = $r1 && $r2;
- }
- else {
- $r = q("ALTER TABLE `event` ADD `event_status` CHAR( 255 ) NOT NULL DEFAULT '',
- ADD `event_status_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
- ADD `event_percent` SMALLINT NOT NULL DEFAULT '0',
- ADD `event_repeat` TEXT NOT NULL DEFAULT '',
- ADD INDEX ( `event_status` ) ");
- }
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1146() {
-
- $r1 = q("alter table event add event_sequence smallint not null default '0' ");
- $r2 = q("create index event_sequence on event ( event_sequence ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1147() {
-
- $r1 = q("alter table event add event_priority smallint not null default '0' ");
- $r2 = q("create index event_priority on event ( event_priority ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1148() {
- $r1 = q("alter table likes add i_mid char(255) not null default '' ");
- $r2 = q("create index i_mid on likes ( i_mid ) ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1149() {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '',
- ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '',
- ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '',
- ADD obj_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- ADD obj_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- }
- else {
- $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '',
- ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '',
- ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '',
- ADD obj_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
- ADD obj_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- }
-
- $r2 = q("create index obj_term on obj ( obj_term ) ");
- $r3 = q("create index obj_url on obj ( obj_url ) ");
- $r4 = q("create index obj_imgurl on obj ( obj_imgurl ) ");
- $r5 = q("create index obj_created on obj ( obj_created ) ");
- $r6 = q("create index obj_edited on obj ( obj_edited ) ");
- $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1150() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE app ADD app_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- ADD app_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- }
- else {
- $r1 = q("ALTER TABLE app ADD app_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00',
- ADD app_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- }
-
- $r2 = q("create index app_created on app ( app_created ) ");
- $r3 = q("create index app_edited on app ( app_edited ) ");
-
- $r = $r1 && $r2 && $r3;
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1151() {
-
- $r3 = q("select likes.*, item.mid from likes left join item on likes.iid = item.id");
- if($r3) {
- foreach($r3 as $rr) {
- q("update likes set i_mid = '%s' where id = $d",
- dbesc($rr['mid']),
- intval($rr['id'])
- );
- }
- }
-
-
- return UPDATE_SUCCESS;
-
-}
-
-function update_r1152() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
-
- $r1 = q("CREATE TABLE IF NOT EXISTS \"dreport\" (
- \"dreport_id\" serial NOT NULL,
- \"dreport_channel\" int(11) NOT NULL DEFAULT '0',
- \"dreport_mid\" char(255) NOT NULL DEFAULT '',
- \"dreport_site\" char(255) NOT NULL DEFAULT '',
- \"dreport_recip\" char(255) NOT NULL DEFAULT '',
- \"dreport_result\" char(255) NOT NULL DEFAULT '',
- \"dreport_time\" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- \"dreport_xchan\" char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (\"dreport_id\") ");
-
- $r2 = q("create index \"dreport_mid\" on dreport (\"dreport_mid\") ");
- $r3 = q("create index \"dreport_site\" on dreport (\"dreport_site\") ");
- $r4 = q("create index \"dreport_time\" on dreport (\"dreport_time\") ");
- $r5 = q("create index \"dreport_xchan\" on dreport (\"dreport_xchan\") ");
- $r6 = q("create index \"dreport_channel\" on dreport (\"dreport_channel\") ");
-
- $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
-
- }
- else {
- $r = q("CREATE TABLE IF NOT EXISTS `dreport` (
- `dreport_id` int(11) NOT NULL AUTO_INCREMENT,
- `dreport_channel` int(11) NOT NULL DEFAULT '0',
- `dreport_mid` char(255) NOT NULL DEFAULT '',
- `dreport_site` char(255) NOT NULL DEFAULT '',
- `dreport_recip` char(255) NOT NULL DEFAULT '',
- `dreport_result` char(255) NOT NULL DEFAULT '',
- `dreport_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `dreport_xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`dreport_id`),
- KEY `dreport_mid` (`dreport_mid`),
- KEY `dreport_site` (`dreport_site`),
- KEY `dreport_time` (`dreport_time`),
- KEY `dreport_xchan` (`dreport_xchan`),
- KEY `dreport_channel` (`dreport_channel`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- }
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1153() {
-
- $r1 = q("ALTER TABLE dreport ADD dreport_queue CHAR( 255 ) NOT NULL DEFAULT '' ");
- $r2 = q("create index dreport_queue on dreport ( dreport_queue) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-
-}
-
-function update_r1154() {
-
- $r = q("ALTER TABLE event ADD event_vdata text NOT NULL ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-
-function update_r1155() {
-
- $r1 = q("alter table site add site_type smallint not null default '0' ");
- $r2 = q("create index site_type on site ( site_type ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1156() {
- $r1 = q("ALTER TABLE mail ADD conv_guid CHAR( 255 ) NOT NULL DEFAULT '' ");
- $r2 = q("create index conv_guid on mail ( conv_guid ) ");
-
- $r3 = q("select mail.id, mail.convid, conv.guid from mail left join conv on mail.convid = conv.id where true");
- if($r3) {
- foreach($r3 as $rr) {
- if($rr['convid']) {
- q("update mail set conv_guid = '%s' where id = %d",
- dbesc($rr['guid']),
- intval($rr['id'])
- );
- }
- }
- }
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1157() {
- $r1 = q("alter table site add site_project char(255) not null default '' ");
- $r2 = q("create index site_project on site ( site_project ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-
-function update_r1158() {
- $r = q("select attach.id, attach.data, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 and not attach.data like '%%store%%' ");
- if($r) {
- foreach($r as $rr) {
- $has_slash = ((substr($rr['data'],0,1) === '/') ? true : false);
- q("update attach set data = '%s' where id = %d",
- dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['data'])),
- dbesc($rr['id'])
- );
- }
- }
- return UPDATE_SUCCESS;
-}
-
-
-function update_r1159() {
- $r = q("select attach.id, attach.data, attach.hash, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 ");
- if($r) {
- foreach($r as $rr) {
- $x = dbunescbin($rr['data']);
- $has_slash = (($x === 'store/' . $rr['channel_address'] . '/') ? true : false);
- if(($x === 'store/' . $rr['channel_address']) || ($has_slash)) {
- q("update attach set data = '%s' where id = %d",
- dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['hash'])),
- dbesc($rr['id'])
- );
- }
- }
- }
- return UPDATE_SUCCESS;
-}
-
-
-function update_r1160() {
- $r = q("alter table abook add abook_instance text not null default '' ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1161() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE TABLE \"iconfig\" (
- \"id\" serial NOT NULL,
- \"iid\" bigint NOT NULL DEFAULT '0',
- \"cat\" text NOT NULL DEFAULT '',
- \"k\" text NOT NULL DEFAULT '',
- \"v\" text NOT NULL DEFAULT '',
- PRIMARY_KEY(\"id\")
-) ");
-$r2 = q("create index \"iconfig_iid\" on iconfig (\"iid\") ");;
-$r3 = q("create index \"iconfig_cat\" on iconfig (\"cat\") ");
-$r4 = q("create index \"iconfig_k\" on iconfig (\"k\") ");
- $r = $r1 && $r2 && $r3 && $r4;
- }
- else {
- $r = q("CREATE TABLE IF NOT EXISTS `iconfig` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `iid` int(11) NOT NULL DEFAULT '0',
- `cat` char(255) NOT NULL DEFAULT '',
- `k` char(255) NOT NULL DEFAULT '',
- `v` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `iid` (`iid`),
- KEY `cat` (`cat`),
- KEY `k` (`k`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- }
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1162() {
- $r1 = q("alter table iconfig add sharing int not null default '0' ");
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES)
- $r2 = q("create index \"iconfig_sharing\" on iconfig (\"sharing\") ");
- else
- $r2 = q("alter table iconfig add index ( sharing ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1163() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("alter table channel add channel_moved text not null default '' ");
- $r2 = q("create index \"channel_channel_moved\" on channel (\"channel_moved\") ");
- }
- else {
- $r1 = q("alter table channel add channel_moved char(255) not null default '' ");
- $r2 = q("alter table channel add index ( channel_moved ) ");
- }
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1164() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE TABLE \"abconfig\" (
- \"id\" serial NOT NULL,
- \"chan\" text NOT NULL,
- \"xchan\" text NOT NULL,
- \"cat\" text NOT NULL,
- \"k\" text NOT NULL,
- \"v\" text NOT NULL,
- PRIMARY KEY (\"id\") ");
- $r2 = q("create index \"abconfig_chan\" on abconfig (\"chan\") ");
- $r3 = q("create index \"abconfig_xchan\" on abconfig (\"xchan\") ");
- $r4 = q("create index \"abconfig_cat\" on abconfig (\"cat\") ");
- $r5 = q("create index \"abconfig_k\" on abconfig (\"k\") ");
- $r = $r1 && $r2 && $r3 && $r4 && $r5;
- }
- else {
- $r = q("CREATE TABLE IF NOT EXISTS `abconfig` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `chan` char(255) NOT NULL DEFAULT '',
- `xchan` char(255) NOT NULL DEFAULT '',
- `cat` char(255) NOT NULL DEFAULT '',
- `k` char(255) NOT NULL DEFAULT '',
- `v` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `chan` (`chan`),
- KEY `xchan` (`xchan`),
- KEY `cat` (`cat`),
- KEY `k` (`k`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- }
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1165() {
-
- $r1 = q("alter table hook add hook_version int not null default '0' ");
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES)
- $r2 = q("create index \"hook_version_idx\" on hook (\"hook_version\") ");
- else
- $r2 = q("alter table hook add index ( hook_version ) ");
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1166() {
-
- $r = q("alter table source add src_tag text not null default '' ");
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1167() {
-
- $r1 = q("alter table app add app_deleted int not null default '0' ");
- $r2 = q("alter table app add app_system int not null default '0' ");
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r3 = q("create index \"app_deleted_idx\" on app (\"app_deleted\") ");
- $r4 = q("create index \"app_system_idx\" on app (\"app_system\") ");
- }
- else {
- $r3 = q("alter table app add index ( app_deleted ) ");
- $r4 = q("alter table app add index ( app_system ) ");
- }
-
- if($r1 && $r2 && $r3 && $r4)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1168() {
-
- $r1 = q("alter table obj add obj_quantity int not null default '0' ");
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r2 = q("create index \"obj_quantity_idx\" on obj (\"obj_quantity\") ");
- }
- else {
- $r2 = q("alter table obj add index ( obj_quantity ) ");
- }
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1169() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` numeric( 20 ) UNSIGNED NOT NULL DEFAULT '0' ");
- $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` text NOT NULL DEFAULT '' ");
- $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` text NOT NULL DEFAULT '' ");
-
- }
- else {
- $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0' ");
- $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` CHAR(255) NOT NULL DEFAULT '' ");
- $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` CHAR(255) NOT NULL DEFAULT '' ");
- }
-
- if($r1 && $r2 && $r3)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1170() {
-
- $r1 = q("drop table fcontact");
- $r2 = q("drop table ffinder");
- $r3 = q("drop table fserver");
- $r4 = q("drop table fsuggest");
- $r5 = q("drop table spam");
-
- if($r1 && $r2 && $r3 && $r4 && $r5)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1171() {
-
- $r1 = q("ALTER TABLE verify CHANGE `type` `vtype` varchar(32) NOT NULL DEFAULT '' ");
- $r2 = q("ALTER TABLE tokens CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' ");
- $r3 = q("ALTER TABLE auth_codes CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' ");
- $r4 = q("ALTER TABLE clients CHANGE `name` `clname` TEXT ");
- $r5 = q("ALTER TABLE session CHANGE `data` `sess_data` TEXT NOT NULL ");
- $r6 = q("ALTER TABLE register CHANGE `language` `lang` varchar(16) NOT NULL DEFAULT '' ");
-
- if($r1 && $r2 && $r3 && $r4 && $r5 && $r6)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-
-
-}
-
-function update_r1172() {
-
- $r1 = q("ALTER TABLE term CHANGE `type` `ttype` int(3) NOT NULL DEFAULT '0' ");
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r2 = q("ALTER TABLE groups CHANGE `name` `gname` TEXT NOT NULL ");
- $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` TEXT NOT NULL ");
- $r4 = q("ALTER TABLE profile CHANGE `with` `partner` TEXT NOT NULL ");
- $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL ");
- }
- else {
- $r2 = q("ALTER TABLE groups CHANGE `name` `gname` char(255) NOT NULL DEFAULT '' ");
- $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` char(255) NOT NULL DEFAULT '' ");
- $r4 = q("ALTER TABLE profile CHANGE `with` `partner` char(255) NOT NULL DEFAULT '' ");
- $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL ");
- }
- if($r1 && $r2 && $r3 && $r4 && $r5)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1173() {
-
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE notify CHANGE `name` `xname` TEXT NOT NULL ");
- $r2 = q("ALTER TABLE notify CHANGE `date` `created` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` numeric(3) NOT NULL DEFAULT '0' ");
- }
- else {
- $r1 = q("ALTER TABLE notify CHANGE `name` `xname` char(255) NOT NULL DEFAULT '' ");
- $r2 = q("ALTER TABLE notify CHANGE `date` `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` smallint(3) NOT NULL DEFAULT '0' ");
- }
-
- if($r1 && $r2 && $r3)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1174() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE event CHANGE `type` `etype` varchar(255) NOT NULL DEFAULT '' ");
- $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` numeric(1) NOT NULL DEFAULT '0' ");
- $r5 = q("ALTER TABLE attach CHANGE `data` `content` bytea NOT NULL ");
- $r6 = q("ALTER TABLE photo CHANGE `data` `content` bytea NOT NULL ");
- }
- else {
- $r1 = q("ALTER TABLE event CHANGE `type` `etype` char(255) NOT NULL DEFAULT '' ");
- $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' ");
- $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` tinyint(1) NOT NULL DEFAULT '0' ");
- $r5 = q("ALTER TABLE attach CHANGE `data` `content` longblob NOT NULL ");
- $r6 = q("ALTER TABLE photo CHANGE `data` `content` mediumblob NOT NULL ");
- }
-
- if($r1 && $r2 && $r3 && $r4 && $r5 && $r6)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1175() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL");
- $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` bigint NOT NULL DEFAULT '0' ");
- $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` numeric(3) NOT NULL DEFAULT '0' ");
- $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` varchar(128) NOT NULL DEFAULT 'image/jpeg' ");
-
- }
- else {
- $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL");
- $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` int(10) unsigned NOT NULL DEFAULT '0' ");
- $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` tinyint(3) unsigned NOT NULL DEFAULT '0' ");
- $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg' ");
-
- }
-
- if($r1 && $r2 && $r3 && $r4)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-
-function update_r1176() {
-
- $r = q("select * from item_id where true");
- if($r) {
- foreach($r as $rr) {
- \Zotlabs\Lib\IConfig::Set($rr['iid'],'system',$rr['service'],$rr['sid'],true);
- }
- }
- return UPDATE_SUCCESS;
-
-}
-
-function update_r1177() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("alter table event add cal_id bigint NOT NULL DEFAULT '0'");
- $r2 = q("create index \"event_cal_idx\" on event (\"cal_id\") ");
-
- $r3 = q("CREATE TABLE \"cal\" (
- \"cal_id\" serial NOT NULL,
- \"cal_aid\" bigint NOT NULL DEFAULT '0',
- \"cal_uid\" bigint NOT NULL DEFAULT '0',
- \"cal_hash\" text NOT NULL,
- \"cal_name\" text NOT NULL,
- \"uri\" text NOT NULL,
- \"logname\" text NOT NULL,
- \"pass\" text NOT NULL,
- \"ctag\" text NOT NULL,
- \"synctoken\" text NOT NULL,
- \"cal_types\" text NOT NULL,
- PRIMARY KEY (\"cal_id\") ");
- $r4 = q("create index \"cal_hash_idx\" on cal (\"cal_hash\") ");
- $r5 = q("create index \"cal_name_idx\" on cal (\"cal_name\") ");
- $r6 = q("create index \"cal_types_idx\" on cal (\"cal_types\") ");
- $r7 = q("create index \"cal_aid_idx\" on cal (\"cal_aid\") ");
- $r8 = q("create index \"cal_uid_idx\" on cal (\"cal_uid\") ");
- $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8;
- }
- else {
- $r1 = q("alter table event add cal_id int(10) unsigned NOT NULL DEFAULT '0',
- add index ( cal_id ) ");
-
- $r2 = q("CREATE TABLE IF NOT EXISTS `cal` (
- `cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cal_aid` int(10) unsigned NOT NULL DEFAULT '0',
- `cal_uid` int(10) unsigned NOT NULL DEFAULT '0',
- `cal_hash` varchar(255) NOT NULL DEFAULT '',
- `cal_name` varchar(255) NOT NULL DEFAULT '',
- `uri` varchar(255) NOT NULL DEFAULT '',
- `logname` varchar(255) NOT NULL DEFAULT '',
- `pass` varchar(255) NOT NULL DEFAULT '',
- `ctag` varchar(255) NOT NULL DEFAULT '',
- `synctoken` varchar(255) NOT NULL DEFAULT '',
- `cal_types` varchar(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`cal_id`),
- KEY `cal_aid` (`cal_aid`),
- KEY `cal_uid` (`cal_uid`),
- KEY `cal_hash` (`cal_hash`),
- KEY `cal_name` (`cal_name`),
- KEY `cal_types` (`cal_types`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
-
- $r = $r1 && $r2;
- }
-
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1178() {
-
- $c2 = null;
-
- $c1 = q("SELECT channel_id, channel_hash from channel where true");
- if($c1) {
- $c2 = q("SELECT id, chan from abconfig where true");
- if($c2) {
- for($x = 0; $x < count($c2); $x ++) {
- foreach($c1 as $c) {
- if($c['channel_hash'] == $c2[$x]['chan']) {
- $c2[$x]['chan'] = $c['channel_id'];
- break;
- }
- }
- }
- }
- }
-
- $r1 = q("ALTER TABLE abconfig CHANGE chan chan int(10) unsigned NOT NULL DEFAULT '0' ");
-
- if($c2) {
- foreach($c2 as $c) {
- q("UPDATE abconfig SET chan = %d where id = %d",
- intval($c['chan']),
- intval($c['id'])
- );
- }
- }
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1179() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE TABLE atoken (
- atoken_id serial NOT NULL,
- atoken_aid bigint NOT NULL DEFAULT 0,
- atoken_uid bigint NOT NULL DEFAULT 0,
- atoken_name varchar(255) NOT NULL DEFAULT '',
- atoken_token varchar(255) NOT NULL DEFAULT '',
- atoken_expires timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY (atoken_id)) ");
- $r2 = q("create index atoken_aid on atoken (atoken_aid)");
- $r3 = q("create index atoken_uid on atoken (atoken_uid)");
- $r4 = q("create index atoken_name on atoken (atoken_name)");
- $r5 = q("create index atoken_token on atoken (atoken_token)");
- $r6 = q("create index atoken_expires on atoken (atoken_expires)");
-
- $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6;
-
- }
- else {
- $r = q("CREATE TABLE IF NOT EXISTS `atoken` (
- `atoken_id` int(11) NOT NULL AUTO_INCREMENT,
- `atoken_aid` int(11) NOT NULL DEFAULT 0,
- `atoken_uid` int(11) NOT NULL DEFAULT 0,
- `atoken_name` char(255) NOT NULL DEFAULT '',
- `atoken_token` char(255) NOT NULL DEFAULT '',
- `atoken_expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY (`atoken_id`),
- KEY `atoken_aid` (`atoken_aid`),
- KEY `atoken_uid` (`atoken_uid`),
- KEY `atoken_name` (`atoken_name`),
- KEY `atoken_token` (`atoken_token`),
- KEY `atoken_expires` (`atoken_expires`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
- }
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1180() {
-
- require_once('include/perm_upgrade.php');
-
- $r1 = q("select * from channel where true");
- if($r1) {
- foreach($r1 as $rr) {
- perm_limits_upgrade($rr);
- autoperms_upgrade($rr);
- }
- }
-
- $r2 = q("select * from abook where true");
- if($r2) {
- foreach($r2 as $rr) {
- perm_abook_upgrade($rr);
- }
- }
-
- $r = $r1 && $r2;
- if($r)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1181() {
- if(\Zotlabs\Lib\System::get_server_role() == 'pro') {
- q("update account set account_level = 5 where true");
- }
- return UPDATE_SUCCESS;
-}
-
-function update_r1182() {
-
- $r1 = q("alter table site add site_version varchar(32) not null default '' ");
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1183() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("alter table hook ALTER COLUMN priority TYPE smallint");
- $r2 = q("alter table hook ALTER COLUMN priority SET NOT NULL");
- $r3 = q("alter table hook ALTER COLUMN priority SET DEFAULT '0'");
- $r1 = $r1 && $r2 && $r3;
- }
- else {
- $r1 = q("alter table hook CHANGE priority priority smallint NOT NULL DEFAULT '0' ");
- }
- $r2 = q("create index priority_idx on hook (priority)");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1184() {
-
- $r1 = q("alter table site add site_crypto text not null default '' ");
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1185() {
-
- $r1 = q("alter table app add app_plugin text not null default '' ");
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1186() {
-
- $r1 = q("alter table profile add profile_vcard text not null");
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-
-}
-
-function update_r1187() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("alter table outq add outq_scheduled timestamp not null default '0001-01-01 00:00:00' ");
- }
- else {
- $r1 = q("alter table outq add outq_scheduled datetime not null default '0001-01-01 00:00:00' ");
- }
- $r2 = q("create index outq_scheduled_idx on outq (outq_scheduled)");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-
-}
-
-function update_r1188() {
-
- $r1 = q("alter table channel add channel_password varchar(255) not null default '' ");
- $r2 = q("alter table channel add channel_salt varchar(255) not null default '' ");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1189() {
-
- $r1 = q("alter table mail add mail_mimetype varchar(64) not null default 'text/bbcode' ");
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r2 = q("alter table mail add mail_raw smallint not null default 0 ");
- }
- else {
- $r2 = q("alter table mail add mail_raw tinyint(4) not null default 0 ");
- }
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-
-}
-
-function update_r1190() {
- $r1 = q("alter table abook add abook_not_here smallint not null default 0 ");
-
- $r2 = q("create index abook_not_here on abook (abook_not_here)");
-
- if($r1 && $r2)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1191() {
-
- $r = q("SELECT 1 FROM principals LIMIT 1");
-
- if($r !== false) {
- return UPDATE_SUCCESS;
- }
- else {
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE TABLE addressbooks (
- id SERIAL NOT NULL,
- principaluri VARCHAR(255),
- displayname VARCHAR(255),
- uri VARCHAR(200),
- description TEXT,
- synctoken INTEGER NOT NULL DEFAULT 1
- );"
- );
-
- $r2 = q("ALTER TABLE ONLY addressbooks ADD CONSTRAINT addressbooks_pkey PRIMARY KEY (id);");
-
- $r3 = q("CREATE UNIQUE INDEX addressbooks_ukey ON addressbooks USING btree (principaluri, uri);");
-
- $r4 = q("CREATE TABLE cards (
- id SERIAL NOT NULL,
- addressbookid INTEGER NOT NULL,
- carddata BYTEA,
- uri VARCHAR(200),
- lastmodified INTEGER,
- etag VARCHAR(32),
- size INTEGER NOT NULL
- );"
- );
-
- $r5 = q("ALTER TABLE ONLY cards ADD CONSTRAINT cards_pkey PRIMARY KEY (id);");
-
- $r6 = q("CREATE UNIQUE INDEX cards_ukey ON cards USING btree (addressbookid, uri);");
-
- $r7 = q("CREATE TABLE addressbookchanges (
- id SERIAL NOT NULL,
- uri VARCHAR(200) NOT NULL,
- synctoken INTEGER NOT NULL,
- addressbookid INTEGER NOT NULL,
- operation SMALLINT NOT NULL
- );"
- );
-
- $r8 = q("ALTER TABLE ONLY addressbookchanges ADD CONSTRAINT addressbookchanges_pkey PRIMARY KEY (id);");
-
- $r9 = q("CREATE INDEX addressbookchanges_addressbookid_synctoken_ix ON addressbookchanges USING btree (addressbookid, synctoken);");
-
- $r10 = q("CREATE TABLE calendarobjects (
- id SERIAL NOT NULL,
- calendardata BYTEA,
- uri VARCHAR(200),
- calendarid INTEGER NOT NULL,
- lastmodified INTEGER,
- etag VARCHAR(32),
- size INTEGER NOT NULL,
- componenttype VARCHAR(8),
- firstoccurence INTEGER,
- lastoccurence INTEGER,
- uid VARCHAR(200)
- );"
- );
-
- $r11 = q("ALTER TABLE ONLY calendarobjects ADD CONSTRAINT calendarobjects_pkey PRIMARY KEY (id);");
-
- $r12 = q("CREATE UNIQUE INDEX calendarobjects_ukey ON calendarobjects USING btree (calendarid, uri);");
-
- $r13 = q("CREATE TABLE calendars (
- id SERIAL NOT NULL,
- synctoken INTEGER NOT NULL DEFAULT 1,
- components VARCHAR(21)
- );"
- );
-
- $r14 = q("ALTER TABLE ONLY calendars ADD CONSTRAINT calendars_pkey PRIMARY KEY (id);");
-
- $r15 = q("CREATE TABLE calendarinstances (
- id SERIAL NOT NULL,
- calendarid INTEGER NOT NULL,
- principaluri VARCHAR(100),
- access SMALLINT NOT NULL DEFAULT '1', -- '1 = owner, 2 = read, 3 = readwrite'
- displayname VARCHAR(100),
- uri VARCHAR(200),
- description TEXT,
- calendarorder INTEGER NOT NULL DEFAULT 0,
- calendarcolor VARCHAR(10),
- timezone TEXT,
- transparent SMALLINT NOT NULL DEFAULT '0',
- share_href VARCHAR(100),
- share_displayname VARCHAR(100),
- share_invitestatus SMALLINT NOT NULL DEFAULT '2' -- '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid'
- );"
- );
-
- $r16 = q("ALTER TABLE ONLY calendarinstances ADD CONSTRAINT calendarinstances_pkey PRIMARY KEY (id);");
-
- $r17 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_uri ON calendarinstances USING btree (principaluri, uri);");
-
- $r18 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_calendarid ON calendarinstances USING btree (principaluri, calendarid);");
-
- $r19 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_share_href ON calendarinstances USING btree (principaluri, share_href);");
-
- $r20 = q("CREATE TABLE calendarsubscriptions (
- id SERIAL NOT NULL,
- uri VARCHAR(200) NOT NULL,
- principaluri VARCHAR(100) NOT NULL,
- source TEXT,
- displayname VARCHAR(100),
- refreshrate VARCHAR(10),
- calendarorder INTEGER NOT NULL DEFAULT 0,
- calendarcolor VARCHAR(10),
- striptodos SMALLINT NULL,
- stripalarms SMALLINT NULL,
- stripattachments SMALLINT NULL,
- lastmodified INTEGER
- );"
- );
-
- $r21 = q("ALTER TABLE ONLY calendarsubscriptions ADD CONSTRAINT calendarsubscriptions_pkey PRIMARY KEY (id);");
-
- $r22 = q("CREATE UNIQUE INDEX calendarsubscriptions_ukey ON calendarsubscriptions USING btree (principaluri, uri);");
-
- $r23 = q("CREATE TABLE calendarchanges (
- id SERIAL NOT NULL,
- uri VARCHAR(200) NOT NULL,
- synctoken INTEGER NOT NULL,
- calendarid INTEGER NOT NULL,
- operation SMALLINT NOT NULL DEFAULT 0
- );"
- );
-
- $r24 = q("ALTER TABLE ONLY calendarchanges ADD CONSTRAINT calendarchanges_pkey PRIMARY KEY (id);");
-
- $r25 = q("CREATE INDEX calendarchanges_calendarid_synctoken_ix ON calendarchanges USING btree (calendarid, synctoken);");
-
- $r26 = q("CREATE TABLE schedulingobjects (
- id SERIAL NOT NULL,
- principaluri VARCHAR(255),
- calendardata BYTEA,
- uri VARCHAR(200),
- lastmodified INTEGER,
- etag VARCHAR(32),
- size INTEGER NOT NULL
- );"
- );
-
- $r27 = q("CREATE TABLE locks (
- id SERIAL NOT NULL,
- owner VARCHAR(100),
- timeout INTEGER,
- created INTEGER,
- token VARCHAR(100),
- scope SMALLINT,
- depth SMALLINT,
- uri TEXT
- );"
- );
-
- $r28 = q("ALTER TABLE ONLY locks ADD CONSTRAINT locks_pkey PRIMARY KEY (id);");
-
- $r29 = q("CREATE INDEX locks_token_ix ON locks USING btree (token);");
-
- $r30 = q("CREATE INDEX locks_uri_ix ON locks USING btree (uri);");
-
- $r31 = q("CREATE TABLE principals (
- id SERIAL NOT NULL,
- uri VARCHAR(200) NOT NULL,
- email VARCHAR(80),
- displayname VARCHAR(80)
- );"
- );
-
- $r32 = q("ALTER TABLE ONLY principals ADD CONSTRAINT principals_pkey PRIMARY KEY (id);");
-
- $r33 = q("CREATE UNIQUE INDEX principals_ukey ON principals USING btree (uri);");
-
- $r34 = q("CREATE TABLE groupmembers (
- id SERIAL NOT NULL,
- principal_id INTEGER NOT NULL,
- member_id INTEGER NOT NULL
- );"
- );
-
- $r35 = q("ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_pkey PRIMARY KEY (id);");
-
- $r36 = q("CREATE UNIQUE INDEX groupmembers_ukey ON groupmembers USING btree (principal_id, member_id);");
-
- $r37 = q("CREATE TABLE propertystorage (
- id SERIAL NOT NULL,
- path VARCHAR(1024) NOT NULL,
- name VARCHAR(100) NOT NULL,
- valuetype INT,
- value BYTEA
- );"
- );
-
- $r38 = q("ALTER TABLE ONLY propertystorage ADD CONSTRAINT propertystorage_pkey PRIMARY KEY (id);");
-
- $r39 = q("CREATE UNIQUE INDEX propertystorage_ukey ON propertystorage (path, name);");
-
- $r40 = q("CREATE TABLE users (
- id SERIAL NOT NULL,
- username VARCHAR(50),
- digesta1 VARCHAR(32)
- );"
- );
-
- $r41 = q("ALTER TABLE ONLY users ADD CONSTRAINT users_pkey PRIMARY KEY (id);");
-
- $r42 = q("CREATE UNIQUE INDEX users_ukey ON users USING btree (username);");
-
- if(
- $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10
- && $r11 && $r12 && $r13 && $r14 && $r15 && $r16 && $r17 && $r18 && $r19 && $r20
- && $r21 && $r22 && $r23 && $r24 && $r25 && $r26 && $r27 && $r28 && $r29 && $r30
- && $r31 && $r32 && $r33 && $r34 && $r35 && $r36 && $r37 && $r38 && $r39 && $r40
- && $r41 && $r42
- )
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
- }
- else {
- $r1 = q("CREATE TABLE if not exists addressbooks (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- principaluri VARBINARY(255),
- displayname VARCHAR(255),
- uri VARBINARY(200),
- description TEXT,
- synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1',
- UNIQUE(principaluri(100), uri(100))
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r2 = q("CREATE TABLE if not exists cards (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- addressbookid INT(11) UNSIGNED NOT NULL,
- carddata MEDIUMBLOB,
- uri VARBINARY(200),
- lastmodified INT(11) UNSIGNED,
- etag VARBINARY(32),
- size INT(11) UNSIGNED NOT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r3 = q("CREATE TABLE if not exists addressbookchanges (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- uri VARBINARY(200) NOT NULL,
- synctoken INT(11) UNSIGNED NOT NULL,
- addressbookid INT(11) UNSIGNED NOT NULL,
- operation TINYINT(1) NOT NULL,
- INDEX addressbookid_synctoken (addressbookid, synctoken)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r4 = q("CREATE TABLE if not exists calendarobjects (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- calendardata MEDIUMBLOB,
- uri VARBINARY(200),
- calendarid INTEGER UNSIGNED NOT NULL,
- lastmodified INT(11) UNSIGNED,
- etag VARBINARY(32),
- size INT(11) UNSIGNED NOT NULL,
- componenttype VARBINARY(8),
- firstoccurence INT(11) UNSIGNED,
- lastoccurence INT(11) UNSIGNED,
- uid VARBINARY(200),
- UNIQUE(calendarid, uri),
- INDEX calendarid_time (calendarid, firstoccurence)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r5 = q("CREATE TABLE if not exists calendars (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- synctoken INTEGER UNSIGNED NOT NULL DEFAULT '1',
- components VARBINARY(21)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r6 = q("CREATE TABLE if not exists calendarinstances (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- calendarid INTEGER UNSIGNED NOT NULL,
- principaluri VARBINARY(100),
- access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite',
- displayname VARCHAR(100),
- uri VARBINARY(200),
- description TEXT,
- calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
- calendarcolor VARBINARY(10),
- timezone TEXT,
- transparent TINYINT(1) NOT NULL DEFAULT '0',
- share_href VARBINARY(100),
- share_displayname VARCHAR(100),
- share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid',
- UNIQUE(principaluri, uri),
- UNIQUE(calendarid, principaluri),
- UNIQUE(calendarid, share_href)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r7 = q("CREATE TABLE if not exists calendarchanges (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- uri VARBINARY(200) NOT NULL,
- synctoken INT(11) UNSIGNED NOT NULL,
- calendarid INT(11) UNSIGNED NOT NULL,
- operation TINYINT(1) NOT NULL,
- INDEX calendarid_synctoken (calendarid, synctoken)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r8 = q("CREATE TABLE if not exists calendarsubscriptions (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- uri VARBINARY(200) NOT NULL,
- principaluri VARBINARY(100) NOT NULL,
- source TEXT,
- displayname VARCHAR(100),
- refreshrate VARCHAR(10),
- calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
- calendarcolor VARBINARY(10),
- striptodos TINYINT(1) NULL,
- stripalarms TINYINT(1) NULL,
- stripattachments TINYINT(1) NULL,
- lastmodified INT(11) UNSIGNED,
- UNIQUE(principaluri, uri)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r9 = q("CREATE TABLE if not exists schedulingobjects (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- principaluri VARBINARY(255),
- calendardata MEDIUMBLOB,
- uri VARBINARY(200),
- lastmodified INT(11) UNSIGNED,
- etag VARBINARY(32),
- size INT(11) UNSIGNED NOT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r10 = q("CREATE TABLE if not exists locks (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- owner VARCHAR(100),
- timeout INTEGER UNSIGNED,
- created INTEGER,
- token VARBINARY(100),
- scope TINYINT,
- depth TINYINT,
- uri VARBINARY(1000),
- INDEX(token),
- INDEX(uri(100))
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r11 = q("CREATE TABLE if not exists principals (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- uri VARBINARY(200) NOT NULL,
- email VARBINARY(80),
- displayname VARCHAR(80),
- UNIQUE(uri)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r12 = q("CREATE TABLE if not exists groupmembers (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- principal_id INTEGER UNSIGNED NOT NULL,
- member_id INTEGER UNSIGNED NOT NULL,
- UNIQUE(principal_id, member_id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r13 = q("CREATE TABLE if not exists propertystorage (
- id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- path VARBINARY(1024) NOT NULL,
- name VARBINARY(100) NOT NULL,
- valuetype INT UNSIGNED,
- value MEDIUMBLOB
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r14 = q("CREATE UNIQUE INDEX path_property ON propertystorage (path(600), name(100));");
-
- $r15 = q("CREATE TABLE if not exists users (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- username VARBINARY(50),
- digesta1 VARBINARY(32),
- UNIQUE(username)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- $r16 = q("CREATE TABLE if not exists calendarinstances (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- calendarid INTEGER UNSIGNED NOT NULL,
- principaluri VARBINARY(100),
- access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite',
- displayname VARCHAR(100),
- uri VARBINARY(200),
- description TEXT,
- calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
- calendarcolor VARBINARY(10),
- timezone TEXT,
- transparent TINYINT(1) NOT NULL DEFAULT '0',
- share_href VARBINARY(100),
- share_displayname VARCHAR(100),
- share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid',
- UNIQUE(principaluri, uri),
- UNIQUE(calendarid, principaluri),
- UNIQUE(calendarid, share_href)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
- );
-
- if($r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10 && $r11 && $r12 && $r13 && $r14 && $r15 && $r16)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
- }
- }
-}
-
-function update_r1192() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE INDEX item_obj_type ON item (obj_type)");
- }
- else {
- $r1 = q("ALTER TABLE item ADD INDEX (obj_type)");
- }
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1193() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE INDEX item_uid_unseen ON item (uid, item_unseen)");
- }
- else {
- $r1 = q("ALTER TABLE item ADD INDEX uid_item_unseen (uid, item_unseen)");
- }
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-
-function update_r1194() {
- $r = q("select id, resource_id from item where resource_type = 'nwiki'");
- if($r) {
- foreach($r as $rv) {
- $mimetype = get_iconfig($rv['id'],'wiki','mimeType');
- q("update item set mimetype = '%s' where resource_type = 'nwikipage' and resource_id = '%s'",
- dbesc($mimetype),
- dbesc($rv['resource_id'])
- );
- }
- }
-
- return UPDATE_SUCCESS;
-}
-
-function update_r1195() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE INDEX item_resource_id ON item (resource_id)");
- }
- else {
- $r1 = q("ALTER TABLE item ADD INDEX (resource_id)");
- }
-
- if($r1)
- return UPDATE_SUCCESS;
- return UPDATE_FAILED;
-}
-
-function update_r1196() {
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $r1 = q("CREATE TABLE \"pchan\" (
- \"pchan_id\" serial NOT NULL,
- \"pchan_guid\" text NOT NULL,
- \"pchan_hash\" text NOT NULL,
- \"pchan_pubkey\" text NOT NULL,
- \"pchan_prvkey\" text NOT NULL,
- PRIMARY KEY (\"pchan_id\")
-)");
-
- $r2 = q("create index \"pchan_guid\" on pchan (\"pchan_guid\")");
- $r3 = q("create index \"pchan_hash\" on pchan (\"pchan_hash\")");
-
- if($r1 && $r2 && $r3) {
- return UPDATE_SUCCESS;
- }
- }
- else {
- $r1 = q("CREATE TABLE IF NOT EXISTS pchan (
- pchan_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
- pchan_guid char(191) NOT NULL DEFAULT '',
- pchan_hash char(191) NOT NULL DEFAULT '',
- pchan_pubkey text NOT NULL,
- pchan_prvkey text NOT NULL,
- PRIMARY KEY (pchan_id),
- KEY pchan_guid (pchan_guid),
- KEY pchan_hash (pchan_hash)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
- if($r1) {
- return UPDATE_SUCCESS;
- }
- }
-
- return UPDATE_FAILED;
-}
-
-function update_r1197() {
-
- $r = q("select diaspora_meta from item where true limit 1");
- if($r) {
- $r = q("ALTER TABLE item DROP diaspora_meta");
- }
-
- return UPDATE_SUCCESS;
-}
diff --git a/library/Mobile_Detect/Mobile_Detect.php b/library/Mobile_Detect/Mobile_Detect.php
deleted file mode 100644
index 4b8c9fecb..000000000
--- a/library/Mobile_Detect/Mobile_Detect.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/**
- * Mobile Detect
- * $Id: Mobile_Detect.php 49 2012-06-06 20:46:30Z serbanghita@gmail.com $
- *
- * @usage require_once 'Mobile_Detect.php';
- * $detect = new Mobile_Detect();
- * $detect->isMobile() or $detect->isTablet()
- *
- * For more specific usage see the documentation navigate to:
- * http://code.google.com/p/php-mobile-detect/wiki/Mobile_Detect
- *
- * @license http://www.opensource.org/licenses/mit-license.php The MIT License
- */
-
-class Mobile_Detect {
-
- protected $detectionRules;
- protected $userAgent = null;
- protected $accept = null;
- // Assume the visitor has a desktop environment.
- protected $isMobile = false;
- protected $isTablet = false;
- protected $phoneDeviceName = null;
- protected $tabletDevicename = null;
- protected $operatingSystemName = null;
- protected $userAgentName = null;
- // List of mobile devices (phones)
- protected $phoneDevices = array(
- 'iPhone' => '(iPhone.*Mobile|iPod|iTunes)',
- 'BlackBerry' => 'BlackBerry|rim[0-9]+',
- 'HTC' => 'HTC|HTC.*(6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT',
- 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus',
- 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35',
- 'Motorola' => '\bDroid\b.*Build|DROIDX|HRI39|MOT\-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT909|XT910|XT912|XT928',
- 'Samsung' => 'Samsung|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9300 |GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-P6810|GT-P7100|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100',
- 'Sony' => 'E10i|SonyEricsson|SonyEricssonLT15iv',
- 'Asus' => 'Asus.*Galaxy',
- 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex.
- 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
- 'GenericPhone' => '(mmp|pocket|psp|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|wap|nokia|Series40|Series60|S60|SonyEricsson|N900|PPC;|MAUI.*WAP.*Browser|LG-P500)'
- );
- // List of tablet devices.
- protected $tabletDevices = array(
- 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
- 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic.
- 'Kindle' => 'Kindle|Silk.*Accelerated',
- 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|GT-P1000|GT-P1010|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P1000|GT-P3100|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7300|GT-P7320|GT-P7500|GT-P7510|GT-P7511',
- 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200',
- 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
- 'AsusTablet' => 'Transformer|TF101',
- 'NookTablet' => 'NookColor|nook browser|BNTV250A|LogicPD Zoom2',
- 'AcerTablet' => 'Android.*\b(A100|A101|A200|A500|A501|A510|W500|W500P|W501|W501P)\b',
- 'YarvikTablet' => 'Android.*(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468)',
- 'GenericTablet' => 'Tablet(?!.*PC)|ViewPad7|LG-V909|MID7015|BNTV250A|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b',
- );
- // List of mobile Operating Systems.
- protected $operatingSystems = array(
- 'AndroidOS' => '(android.*mobile|android(?!.*mobile))',
- 'BlackBerryOS' => '(blackberry|rim tablet os)',
- 'PalmOS' => '(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)',
- 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|\bS60\b',
- 'WindowsMobileOS' => 'IEMobile|Windows Phone|Windows CE.*(PPC|Smartphone)|MSIEMobile|Window Mobile|XBLWP7',
- 'iOS' => '(iphone|ipod|ipad)',
- 'FlashLiteOS' => '',
- 'JavaOS' => '',
- 'NokiaOS' => '',
- 'webOS' => '',
- 'badaOS' => '\bBada\b',
- 'BREWOS' => '',
- );
- // List of mobile User Agents.
- protected $userAgents = array(
- 'Chrome' => '\bCrMo\b|Chrome\/[.0-9]* Mobile',
- 'Dolfin' => '\bDolfin\b',
- 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera',
- 'Skyfire' => 'skyfire',
- 'IE' => 'IEMobile|MSIEMobile',
- 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile',
- 'Bolt' => 'bolt',
- 'TeaShark' => 'teashark',
- 'Blazer' => 'Blazer',
- 'Safari' => 'Mobile.*Safari|Safari.*Mobile',
- 'Midori' => 'midori',
- 'GenericBrowser' => 'NokiaBrowser|OviBrowser|SEMC.*Browser'
- );
-
- function __construct(){
-
- // Merge all rules together.
- $this->detectionRules = array_merge(
- $this->phoneDevices,
- $this->tabletDevices,
- $this->operatingSystems,
- $this->userAgents
- );
- $this->userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null;
- $this->accept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null;
-
- if (
- isset($_SERVER['HTTP_X_WAP_PROFILE']) ||
- isset($_SERVER['HTTP_X_WAP_CLIENTID']) ||
- isset($_SERVER['HTTP_WAP_CONNECTION']) ||
- isset($_SERVER['HTTP_PROFILE']) ||
- isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']) || // Reported by Nokia devices (eg. C3)
- isset($_SERVER['HTTP_X_NOKIA_IPADDRESS']) ||
- isset($_SERVER['HTTP_X_NOKIA_GATEWAY_ID']) ||
- isset($_SERVER['HTTP_X_ORANGE_ID']) ||
- isset($_SERVER['HTTP_X_VODAFONE_3GPDPCONTEXT']) ||
- isset($_SERVER['HTTP_X_HUAWEI_USERID']) ||
- isset($_SERVER['HTTP_UA_OS']) || // Reported by Windows Smartphones
- (isset($_SERVER['HTTP_UA_CPU']) && $_SERVER['HTTP_UA_CPU'] == 'ARM') // Seen this on a HTC
- ) {
- $this->isMobile = true;
- } elseif (!empty($this->accept) && (strpos($this->accept, 'text/vnd.wap.wml') !== false || strpos($this->accept, 'application/vnd.wap.xhtml+xml') !== false)) {
- $this->isMobile = true;
- } else {
- $this->_detect();
- }
-
- }
-
- public function getRules()
- {
- return $this->detectionRules;
- }
-
- /**
- * Magic overloading method.
- *
- * @method boolean is[...]()
- * @param string $name
- * @param array $arguments
- * @return mixed
- */
- public function __call($name, $arguments)
- {
-
- $key = substr($name, 2);
- return $this->_detect($key);
-
- }
-
- /**
- * Private method that does the detection of the
- * mobile devices.
- *
- * @param string $key
- * @return boolean|null
- */
- private function _detect($key='')
- {
-
- if(empty($key)){
-
- // Begin general search.
- foreach($this->detectionRules as $_regex){
- if(empty($_regex)){ continue; }
- if(preg_match('/'.$_regex.'/is', $this->userAgent)){
- $this->isMobile = true;
- return true;
- }
- }
- return false;
-
- } else {
-
- // Search for a certain key.
- // Make the keys lowecase so we can match: isIphone(), isiPhone(), isiphone(), etc.
- $key = strtolower($key);
- $_rules = array_change_key_case($this->detectionRules);
-
- if(array_key_exists($key, $_rules)){
- if(empty($_rules[$key])){ return null; }
- if(preg_match('/'.$_rules[$key].'/is', $this->userAgent)){
- $this->isMobile = true;
- return true;
- } else {
- return false;
- }
- } else {
- trigger_error("Method $key is not defined", E_USER_WARNING);
- }
-
- return false;
-
- }
-
- }
-
- /**
- * Check if the device is mobile.
- * Returns true if any type of mobile device detected, including special ones
- * @return bool
- */
- public function isMobile()
- {
- return $this->isMobile;
- }
-
- /**
- * Check if the device is a tablet.
- * Return true if any type of tablet device is detected.
- * @return boolean
- */
- public function isTablet()
- {
-
- foreach($this->tabletDevices as $_regex){
- if(preg_match('/'.$_regex.'/is', $this->userAgent)){
- $this->isTablet = true;
- return true;
- }
- }
-
- return false;
-
- }
-
-
-} \ No newline at end of file
diff --git a/library/Smarty/COPYING.lib b/library/Smarty/COPYING.lib
deleted file mode 100644
index 02bbb60bc..000000000
--- a/library/Smarty/COPYING.lib
+++ /dev/null
@@ -1,165 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library. \ No newline at end of file
diff --git a/library/Smarty/NEW_FEATURES.txt b/library/Smarty/NEW_FEATURES.txt
deleted file mode 100644
index 1a51c71d9..000000000
--- a/library/Smarty/NEW_FEATURES.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-This file contains a brief description of new features which have been added to Smarty 3.1
-
-Smarty 3.1.28
-
- OPCACHE
- =======
- Smarty does now invalidate automatically updated and cleared compiled or cached template files in OPCACHE.
- Correct operation is no longer dependent on OPCACHE configuration settings.
-
- Template inheritance
- ====================
- Template inheritance is now processed in run time.
- See the INHERITANCE_RELEASE_NOTES
-
- Modifier regex_replace
- ======================
- An optional limit parameter was added
-
- fetch() and display()
- =====================
- The fetch() and display() methods of the template object accept now optionally the same parameter
- as the corresponding Smarty methods to get the content of another template.
- Example:
- $template->display(); Does display template of template object
- $template->display('foo.tpl'); Does display template 'foo.bar'
-
- File: resource
- ==============
- Multiple template_dir entries can now be selected by a comma separated list of indices.
- The template_dir array is searched in the order of the indices. (Could be used to change the default search order)
- Example:
- $smarty->display('[1],[0]foo.bar');
-
- Filter support
- ==============
- Optional filter names
- An optional filter name was added to $smarty->registerFilter(). It can be used to unregister a filter by name.
- - $smarty->registerFilter('output', $callback, 'name');
- $smarty->unregister('output', 'name');
-
- Closures
- $smarty->registerFilter() does now accept closures.
- - $smarty->registerFilter('pre', function($source) {return $source;});
- If no optional filter name was specified it gets the default name 'closure'.
- If you register multiple closures register each with a unique filter name.
- - $smarty->registerFilter('pre', function($source) {return $source;}, 'closure_1');
- - $smarty->registerFilter('pre', function($source) {return $source;}, 'closure_2');
-
-
-Smarty 3.1.22
-
- Namespace support within templates
- ==================================
- Within templates you can now use namespace specifications on:
- - Constants like foo\bar\FOO
- - Class names like foo\bar\Baz::FOO, foo\bar\Baz::$foo, foo\bar\Baz::foo()
- - PHP function names like foo\bar\baz()
-
- Security
- ========
- - disable special $smarty variable -
- The Smarty_Security class has the new property $disabled_special_smarty_vars.
- It's an array which can be loaded with the $smarty special variable names like
- 'template_object', 'template', 'current_dir' and others which will be disabled.
- Note: That this security check is performed at compile time.
-
- - limit template nesting -
- Property $max_template_nesting of Smarty_Security does set the maximum template nesting level.
- The main template is level 1. The nesting level is checked at run time. When the maximum will be exceeded
- an Exception will be thrown. The default setting is 0 which does disable this check.
-
- - trusted static methods -
- The Smarty_Security class has the new property $trusted_static_methods to restrict access to static methods.
- It's an nested array of trusted class and method names.
- Format:
- array (
- 'class_1' => array('method_1', 'method_2'), // allowed methods
- 'class_2' => array(), // all methods of class allowed
- )
- To disable access for all methods of all classes set $trusted_static_methods = null;
- The default value is an empty array() which does enables all methods of all classes, but for backward compatibility
- the setting of $static_classes will be checked.
- Note: That this security check is performed at compile time.
-
- - trusted static properties -
- The Smarty_Security class has the new property $trusted_static_properties to restrict access to static properties.
- It's an nested array of trusted class and property names.
- Format:
- array (
- 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
- 'class_2' => array(), // all properties of class allowed
- }
- To disable access for all properties of all classes set $trusted_static_properties = null;
- The default value is an empty array() which does enables all properties of all classes, but for backward compatibility
- the setting of $static_classes will be checked.
- Note: That this security check is performed at compile time.
-
- - trusted constants .
- The Smarty_Security class has the new property $trusted_constants to restrict access to constants.
- It's an array of trusted constant names.
- Format:
- array (
- 'SMARTY_DIR' , // allowed constant
- }
- If the array is empty (default) the usage of constants can be controlled with the
- Smarty_Security::$allow_constants property (default true)
-
-
-
- Compiled Templates
- ==================
- Smarty does now automatically detects a change of the $merge_compiled_includes and $escape_html
- property and creates different compiled templates files depending on the setting.
-
- Same applies to config files and the $config_overwrite, $config_booleanize and
- $config_read_hidden properties.
-
- Debugging
- =========
- The layout of the debug window has been changed for better readability
-
- New class constants
- Smarty::DEBUG_OFF
- Smarty::DEBUG_ON
- Smarty::DEBUG_INDIVIDUAL
- have been introduced for setting the $debugging property.
-
- Smarty::DEBUG_INDIVIDUAL will create for each display() and fetch() call an individual debug window.
-
- .
-
diff --git a/library/Smarty/change_log.txt b/library/Smarty/change_log.txt
deleted file mode 100644
index dadc5d17d..000000000
--- a/library/Smarty/change_log.txt
+++ /dev/null
@@ -1,2864 +0,0 @@
- ===== 3.1.29 ===== (21.12.2015)
- 21.12.2015
- - optimization improve speed of filetime checks on extends and extendsall resource
-
- 20.12.2015
- - bugfix failure when the default resource type was set to 'extendsall' https://github.com/smarty-php/smarty/issues/123
- - update compilation of Smarty special variables
- - bugfix add addition check for OS type on normalizaition of file path https://github.com/smarty-php/smarty/issues/134
- - bugfix the source uid of the extendsall resource must contain $template_dir settings https://github.com/smarty-php/smarty/issues/123
-
- 19.12.2015
- - bugfix using $smarty.capture.foo in expressions could fail https://github.com/smarty-php/smarty/pull/138
- - bugfix broken PHP 5.2 compatibility https://github.com/smarty-php/smarty/issues/139
- - remove no longer used code
- - improvement make sure that compiled and cache templates never can contain a trailing '?>?
-
- 18.12.2015
- - bugfix regression when modifier parameter was follow by math https://github.com/smarty-php/smarty/issues/132
-
- 17.12.2015
- - bugfix {$smarty.capture.nameFail} did lowercase capture name https://github.com/smarty-php/smarty/issues/135
- - bugfix using {block append/prepend} on same block in multiple levels of inheritance templates could fail (forum topic 25827)
- - bugfix text content consisting of just a single '0' like in {if true}0{/if} was suppressed (forum topic 25834)
-
- 16.12.2015
- - bugfix {foreach} did fail if from atrribute is a Generator class https://github.com/smarty-php/smarty/issues/128
- - bugfix direct access $smarty->template_dir = 'foo'; should call Smarty::setTemplateDir() https://github.com/smarty-php/smarty/issues/121
-
- 15.12.2015
- - bugfix {$smarty.cookies.foo} did return the $_COOKIE array not the 'foo' value https://github.com/smarty-php/smarty/issues/122
- - bugfix a call to clearAllCache() and other should clear all internal template object caches (forum topic 25828)
-
- 14.12.2015
- - bugfix {$smarty.config.foo} broken in 3.1.28 https://github.com/smarty-php/smarty/issues/120
- - bugfix multiple calls of {section} with same name droped E_NOTICE error https://github.com/smarty-php/smarty/issues/118
-
- ===== 3.1.28 ===== (13.12.2015)
- 13.12.2015
- - bugfix {foreach} and {section} with uppercase characters in name attribute did not work (forum topic 25819)
- - bugfix $smarty->debugging_ctrl = 'URL' did not work (forum topic 25811)
- - bugfix Debug Console could display incorrect data when using subtemplates
-
- 09.12.2015
- - bugfix Smarty did fail under PHP 7.0.0 with use_include_path = true;
-
- 09.12.2015
- - bugfix {strip} should exclude some html tags from stripping, related to fix for https://github.com/smarty-php/smarty/issues/111
-
- 08.12.2015
- - bugfix internal template function data got stored in wrong compiled file https://github.com/smarty-php/smarty/issues/114
-
- 05.12.2015
- -bugfix {strip} should insert a single space https://github.com/smarty-php/smarty/issues/111
-
- 25.11.2015
- -bugfix a left delimter like '[%' did fail on [%$var_[%$variable%]%] (forum topic 25798)
-
- 02.11.2015
- - bugfix {include} with variable file name like {include file="foo_`$bar`.tpl"} did fail in 3.1.28-dev https://github.com/smarty-php/smarty/issues/102
-
- 01.11.2015
- - update config file processing
-
- 31.10.2015
- - bugfix add missing $trusted_dir property to SmartyBC class (forum topic 25751)
-
- 29.10.2015
- - improve template scope handling
-
- 24.10.2015
- - more optimizations of template processing
- - bugfix Error when using {include} within {capture} https://github.com/smarty-php/smarty/issues/100
-
- 21.10.2015
- - move some code into runtime extensions
-
- 18.10.2015
- - optimize filepath normalization
- - rework of template inheritance
- - speed and size optimizations
- - bugfix under HHVM temporary cache file must only be created when caches template was updated
- - fix compiled code for new {block} assign attribute
- - update code generated by template function call handler
-
- 18.09.2015
- - bugfix {if $foo instanceof $bar} failed to compile if 2nd value is a variable https://github.com/smarty-php/smarty/issues/92
-
- 17.09.2015
- - bugfix {foreach} first attribute was not correctly reset since commit 05a8fa2 of 02.08.2015 https://github.com/smarty-php/smarty/issues/90
-
- 16.09.2015
- - update compiler by moving no longer needed properties, code optimizations and other
-
- 14.09.2015
- - optimize autoloader
- - optimize subtemplate handling
- - update template inheritance processing
- - move code of {call} processing back into Smarty_Internal_Template class
- - improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557)
- - bugfix unintended multiple debug windows (forum topic 25699)
-
- 30.08.2015
- - size optimization move some runtime functions into extension
- - optimize inline template processing
- - optimization merge inheritance child and parent templates into one compiled template file
-
- 29.08.2015
- - improvement convert template inheritance into runtime processing
- - bugfix {$smarty.block.parent} did always reference the root parent block https://github.com/smarty-php/smarty/issues/68
-
- 23.08.2015
- - introduce Smarty::$resource_cache_mode and cache template object of {include} inside loop
- - load seldom used Smarty API methods dynamically to reduce memory footprint
- - cache template object of {include} if same template is included several times
- - convert debug console processing to object
- - use output buffers for better performance and less memory usage
- - optimize nocache hash processing
- - remove not really needed properties
- - optimize rendering
- - move caching to Smarty::_cache
- - remove properties with redundant content
- - optimize Smarty::templateExists()
- - optimize use_include_path processing
- - relocate properties for size optimization
- - remove redundant code
- - bugfix compiling super globals like {$smarty.get.foo} did fail in the master branch https://github.com/smarty-php/smarty/issues/77
-
- 06.08.2015
- - avoid possible circular object references caused by parser/lexer objects
- - rewrite compileAll... utility methods
- - commit several internal improvements
- - bugfix Smarty failed when compile_id did contain "|"
-
- 03.08.2015
- - rework clear cache methods
- - bugfix compileAllConfig() was broken since 3.1.22 because of the changes in config file processing
- - improve getIncludePath() to return directory if no file was given
-
- 02.08.2015
- - optimization and code cleanup of {foreach} and {section} compiler
- - rework {capture} compiler
-
- 01.08.2015
- - update DateTime object can be instance of DateTimeImmutable since PHP5.5 https://github.com/smarty-php/smarty/pull/75
- - improvement show resource type and start of template source instead of uid on eval: and string: resource (forum topic 25630)
-
- 31.07.2015
- - optimize {foreach} and {section} compiler
-
- 29.07.2015
- - optimize {section} compiler for speed and size of compiled code
-
- 28.07.2015
- - update for PHP 7 compatibility
-
- 26.07.2015
- - improvement impement workaround for HHVM PHP incompatibillity https://github.com/facebook/hhvm/issues/4797
-
- 25.07.2015
- - bugfix parser did hang on text starting <?something https://github.com/smarty-php/smarty/issues/74
-
- 20.07.2015
- - bugfix config files got recompiled on each request
- - improvement invalidate PHP 5.5 opcache for recompiled and cached templates https://github.com/smarty-php/smarty/issues/72
-
- 12.07.2015
- - optimize {extends} compilation
-
- 10.07.2015
- - bugfix force file: resource in demo resource.extendsall.php
-
- 08.07.2015
- - bugfix convert each word of class names to ucfirst in in compiler. (forum topic 25588)
-
- 07.07.2015
- - improvement allow fetch() or display() called on a template object to get output from other template
- like $template->fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70
- - improvement Added $limit parameter to regex_replace modifier #71
- - new feature multiple indices on file: resource
-
- 06.07.2015
- - optimize {block} compilation
- - optimization get rid of __get and __set in source object
-
- 01.07.2015
- - optimize compile check handling
- - update {foreach} compiler
- - bugfix debugging console did not display string values containing \n, \r or \t correctly https://github.com/smarty-php/smarty/issues/66
- - optimize source resources
-
- 28.06.2015
- - move $smarty->enableSecurity() into Smarty_Security class
- - optimize security isTrustedResourceDir()
- - move auto load filter methods into extension
- - move $smarty->getTemplateVars() into extension
- - move getStreamVariable() into extension
- - move $smarty->append() and $smarty->appendByRef() into extension
- - optimize autoloader
- - optimize file path normalization
- - bugfix PATH_SEPARATOR was replaced by mistake in autoloader
- - remove redundant code
-
- 27.06.2015
- - bugfix resolve naming conflict between custom Smarty delimiter '<%' and PHP ASP tags https://github.com/smarty-php/smarty/issues/64
- - update $smarty->_realpath for relative path not starting with './'
- - update Smarty security with new realpath handling
- - update {include_php} with new realpath handling
- - move $smarty->loadPlugin() into extension
- - minor compiler optimizations
- - bugfix allow function plugins with name ending with 'close' https://github.com/smarty-php/smarty/issues/52
- - rework of $smarty->clearCompiledTemplate() and move it to its own extension
-
- 19.06.2015
- - improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59
-
- ===== 3.1.27===== (18.06.2015)
- 18.06.2015
- - bugfix another update on file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56
-
- ===== 3.1.26===== (18.06.2015)
- 18.06.2015
- - bugfix file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56
-
- 17.06.2015
- - bugfix calling a plugin with nocache option but no other attributes like {foo nocache} caused call to undefined function https://github.com/smarty-php/smarty/issues/55
-
- ===== 3.1.25===== (15.06.2015)
- 15.06.2015
- - optimization of smarty_cachereource_keyvaluestore.php code
-
- 14.06.2015
- - bugfix a relative sub template path could fail if template_dir path did contain /../ https://github.com/smarty-php/smarty/issues/50
- - optimization rework of path normalization
- - bugfix an output tag with variable, modifier followed by an operator like {$foo|modifier+1} did fail https://github.com/smarty-php/smarty/issues/53
-
- 13.06.2015
- - bugfix a custom cache resource using smarty_cachereource_keyvaluestore.php did fail if php.ini mbstring.func_overload = 2 (forum topic 25568)
-
- 11.06.2015
- - bugfix the lexer could hang on very large quoted strings (forum topic 25570)
-
- 08.06.2015
- - bugfix using {$foo} as array index like $bar.{$foo} or in double quoted string like "some {$foo} thing" failed https://github.com/smarty-php/smarty/issues/49
-
- 04.06.2015
- - bugfix possible error message on unset() while compiling {block} tags https://github.com/smarty-php/smarty/issues/46
-
- 01.06.2015
- - bugfix <?xml ... ?> including template variables broken since 3.1.22 https://github.com/smarty-php/smarty/issues/47
-
- 27.05.2015
- - bugfix {include} with variable file name must not create by default individual cache file (since 3.1.22) https://github.com/smarty-php/smarty/issues/43
-
- 24.05.2015
- - bugfix if condition string 'neq' broken due to a typo https://github.com/smarty-php/smarty/issues/42
-
- ===== 3.1.24===== (23.05.2015)
- 23.05.2015
- - improvement on php_handling to allow very large PHP sections, better error handling
- - improvement allow extreme large comment sections (forum 25538)
-
- 21.05.2015
- - bugfix broken PHP 5.2 compatibility when compiling <?php tags https://github.com/smarty-php/smarty/issues/40
- - bugfix named {foreach} comparison like $smarty.foreach.foobar.index > 1 did compile into wrong code https://github.com/smarty-php/smarty/issues/41
-
- 19.05.2015
- - bugfix compiler did overwrite existing variable value when setting the nocache attribute https://github.com/smarty-php/smarty/issues/39
- - bugfix output filter trimwhitespace could run into the pcre.backtrack_limit on large output (code.google issue 220)
- - bugfix compiler could run into the pcre.backtrack_limit on larger comment or {php} tag sections (forum 25538)
-
- 18.05.2015
- - improvement introduce shortcuts in lexer/parser rules for most frequent terms for higher
- compilation speed
-
- 16.05.2015
- - bugfix {php}{/php} did work just for single lines https://github.com/smarty-php/smarty/issues/33
- - improvement remove not needed ?><?php transitions from compiled code
- - improvement reduce number of lexer tokens on operators and if conditions
- - improvement higher compilation speed by modified lexer/parser generator at "smarty/smarty-lexer"
-
- 13.05.2015
- - improvement remove not needed ?><?php transitions from compiled code
- - improvement of debugging:
- - use fresh Smarty object to display the debug console because of possible problems when the Smarty
- was extended or Smarty properties had been modified in the class source
- - display Smarty version number
- - Truncate lenght of Origin display and extend strin value display to 80 character
- - bugfix in Smarty_Security 'nl2br' should be a trusted modifier, not PHP function (code.google issue 223)
-
- 12.05.2015
- - bugfix {$smarty.constant.TEST} did fail on undefined constant https://github.com/smarty-php/smarty/issues/28
- - bugfix access to undefined config variable like {#undef#} did fail https://github.com/smarty-php/smarty/issues/29
- - bugfix in nested {foreach} saved item attributes got overwritten https://github.com/smarty-php/smarty/issues/33
-
- ===== 3.1.23 ===== (12.05.2015)
- 12.05.2015
- - bugfix of smaller performance issue introduce in 3.1.22 when caching is enabled
- - bugfix missig entry for smarty-temmplate-config in autoloader
-
- ===== 3.1.22 ===== tag was deleted because 3.1.22 did fail caused by the missing entry for smarty-temmplate-config in autoloader
- 10.05.2015
- - bugfix custom cache resource did not observe compile_id and cache_id when $cache_locking == true
- - bugfix cache lock was not handled correctly after timeout when $cache_locking == true
- - improvement added constants for $debugging
-
- 07.05.2015
- - improvement of the debugging console. Read NEW_FEATURES.txt
- - optimization of resource class loading
-
- 06.05.2015
- - bugfix in 3.1.22-dev cache resource must not be loaded for subtemplates
- - bugfix/improvement in 3.1.22-dev cache locking did not work as expected
-
- 05.05.2015
- - optimization on cache update when main template is modified
- - optimization move <?php ?> handling from parser to new compiler module
-
- 05.05.2015
- - bugfix code could be messed up when {tags} are used in multiple attributes https://github.com/smarty-php/smarty/issues/23
-
- 04.05.2015
- - bugfix Smarty_Resource::parseResourceName incompatible with Google AppEngine (https://github.com/smarty-php/smarty/issues/22)
- - improvement use is_file() checks to avoid errors suppressed by @ which could still cause problems (https://github.com/smarty-php/smarty/issues/24)
-
- 28.04.2015
- - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) 2nd fix
-
- 28.04.2015
- - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508)
-
- 23.04.2015
- - bugfix a nocache template variable used as parameter at {insert} was by mistake cached
-
- 20.04.2015
- - bugfix at a template function containing nocache code a parmeter could overwrite a template variable of same name
-
- 27.03.2015
- - bugfix Smarty_Security->allow_constants=false; did also disable true, false and null (change of 16.03.2015)
- - improvement added a whitelist for trusted constants to security Smarty_Security::$trusted_constants (forum topic 25471)
-
- 20.03.2015
- - bugfix make sure that function properties get saved only in compiled files containing the fuction definition {forum topic 25452}
- - bugfix correct update of global variable values on exit of template functions. (reported under Smarty Developers)
-
- 16.03.2015
- - bugfix problems with {function}{/function} and {call} tags in different subtemplate cache files {forum topic 25452}
- - bugfix Smarty_Security->allow_constants=false; did not disallow direct usage of defined constants like {SMARTY_DIR} {forum topic 25457}
- - bugfix {block}{/block} tags did not work inside double quoted strings https://github.com/smarty-php/smarty/issues/18
-
-
- 15.03.2015
- - bugfix $smarty->compile_check must be restored before rendering of a just updated cache file {forum 25452}
-
- 14.03.2015
- - bugfix {nocache} {/nocache} tags corrupted code when used within a nocache section caused by a nocache template variable.
-
- - bugfix template functions defined with {function} in an included subtemplate could not be called in nocache
- mode with {call... nocache} if the subtemplate had it's own cache file {forum 25452}
-
- 10.03.2015
- - bugfix {include ... nocache} whith variable file or compile_id attribute was not executed in nocache mode.
-
- 12.02.2015
- - bugfix multiple Smarty::fetch() of same template when $smarty->merge_compiled_includes = true; could cause function already defined error
-
- 11.02.2015
- - bugfix recursive {includes} did create E_NOTICE message when $smarty->merge_compiled_includes = true; (github issue #16)
-
- 22.01.2015
- - new feature security can now control access to static methods and properties
- see also NEW_FEATURES.txt
-
- 21.01.2015
- - bugfix clearCompiledTemplates(), clearAll() and clear() could try to delete whole drive at wrong path permissions because realpath() fail (forum 25397)
- - bugfix 'self::' and 'parent::' was interpreted in template syntax as static class
-
- 04.01.2015
- - push last weeks changes to github
-
- - different optimizations
- - improvement automatically create different versions of compiled templates and config files depending
- on property settings.
- - optimization restructure template processing by moving code into classes it better belongs to
- - optimization restructure config file processing
-
- 31.12.2014
- - bugfix use function_exists('mb_get_info') for setting Smarty::$_MBSTRING.
- Function mb_split could be overloaded depending on php.ini mbstring.func_overload
-
-
- 29.12.2014
- - new feature security can now limit the template nesting level by property $max_template_nesting
- see also NEW_FEATURES.txt (forum 25370)
-
- 29.12.2014
- - new feature security can now disable special $smarty variables listed in property $disabled_special_smarty_vars
- see also NEW_FEATURES.txt (forum 25370)
-
- 27.12.2014
- - bugfix clear internal _is_file_cache when plugins_dir was modified
-
- 13.12.2014
- - improvement optimization of lexer and parser resulting in a up to 30% higher compiling speed
-
- 11.12.2014
- - bugfix resolve parser ambiguity between constant print tag {CONST} and other smarty tags after change of 09.12.2014
-
- 09.12.2014
- - bugfix variables $null, $true and $false did not work after the change of 12.11.2014 (forum 25342)
- - bugfix call of template function by a variable name did not work after latest changes (forum 25342)
-
- 23.11.2014
- - bugfix a plugin with attached modifier could fail if the tag was immediately followed by another Smarty tag (since 3.1.21) (forum 25326)
-
- 13.11.2014
- - improvement move autoload code into Autoloader.php. Use Composer autoloader when possible
-
- 12.11.2014
- - new feature added support of namespaces to template code
-
- 08.11.2014 - 10.11.2014
- - bugfix subtemplate called in nocache mode could be called with wrong compile_id when it did change on one of the calling templates
- - improvement add code of template functions called in nocache mode dynamically to cache file (related to bugfix of 01.11.2014)
- - bugfix Debug Console did not include all data from merged compiled subtemplates
-
- 04.11.2014
- - new feature $smarty->debugging = true; => overwrite existing Debug Console window (old behaviour)
- $smarty->debugging = 2; => individual Debug Console window by template name
-
- 03.11.2014
- - bugfix Debug Console did not show included subtemplates since 3.1.17 (forum 25301)
- - bugfix Modifier debug_print_var did not limit recursion or prevent recursive object display at Debug Console
- (ATTENTION: parameter order has changed to be able to specify maximum recursion)
- - bugfix Debug consol did not include subtemplate information with $smarty->merge_compiled_includes = true
- - improvement The template variables are no longer displayed as objects on the Debug Console
- - improvement $smarty->createData($parent = null, $name = null) new optional name parameter for display at Debug Console
- - addition of some hooks for future extension of Debug Console
-
- 01.11.2014
- - bugfix and enhancement on subtemplate {include} and template {function} tags.
- * Calling a template which has a nocache section could fail if it was called from a cached and a not cached subtemplate.
- * Calling the same subtemplate cached and not cached with the $smarty->merge_compiled_includes enabled could cause problems
- * Many smaller related changes
-
- 30.10.2014
- - bugfix access to class constant by object like {$object::CONST} or variable class name {$class::CONST} did not work (forum 25301)
-
- 26.10.2014
- - bugfix E_NOTICE message was created during compilation when ASP tags '<%' or '%>' are in template source text
- - bugfix merge_compiled_includes option failed when caching enables and same subtemplate was included cached and not cached
-
- ===== 3.1.21 ===== (18.10.2014)
- 18.10.2014
- - composer moved to github
-
- 17.10.2014
- - bugfix on $php_handling security and optimization of smarty_internal_parsetree (Thue Kristensen)
-
- 16.10.2014
- - bugfix composer.json update
-
- 15.10.2014
- - bugfix calling a new created cache file with fetch() and Smarty::CACHING_LIFETIME_SAVED multiple times did fail (forum 22350)
-
- 14.10.2014
- - bugfix any tag placed within "<script language=php>" will throw a security exception to close all thinkable holes
- - bugfix classmap in root composer.json should start at "libs/..."
- - improvement cache is_file(file_exists) results of loadPlugin() to avoid unnecessary calls during compilation (Issue 201}
-
- 12.10.2014
- - bugfix a comment like "<script{*foo*} language=php>" bypassed $php_handling checking (Thue Kristensen)
- - bugfix change of 08.10.2014 could create E_NOTICE meassage when using "<?php" tags
- - bugfix "<script language=php>" with $php_handling PHP_PASSTHRU was executed in {nocache} sections
-
- ===== 3.1.20 ===== (09.10.2014)
- 08.10.2014
- - bugfix security mode of "<script language=php>" must be controlled by $php_handling property (Thue Kristensen)
-
- 01.10.2014
- - bugfix template resource of inheritance blocks could get invalid if the default resource type is not 'file'(Issue 202)
- - bugfix existing child {block} tag must override parent {block} tag append / prepend setting (topic 25259)
-
- 02.08.2014
- - bugfix modifier wordwrap did output break string wrong if first word was exceeding length with cut = true (topic 25193)
-
- 24.07.2014
- - bugfix cache clear when cache folder does not exist
-
- 16.07.2014
- - enhancement remove BOM automatically from template source (topic 25161)
-
- 04.07.2014
- - bugfix the bufix of 02.06.2014 broke correct handling of child templates with same name but different template folders in extends resource (issue 194 and topic 25099)
-
- ===== 3.1.19 ===== (30.06.2014)
- 20.06.2014
- - bugfix template variables could not be passed as parameter in {include} when the include was in a {nocache} section (topic 25131)
-
- 17.06.2014
- - bugfix large template text of some charsets could cause parsing errors (topic 24630)
-
- 08.06.2014
- - bugfix registered objects did not work after spelling fixes of 06.06.2014
- - bugfix {block} tags within {literal} .. {/literal} got not displayed correctly (topic 25024)
- - bugfix UNC WINDOWS PATH like "\\psf\path\to\dir" did not work as template directory (Issue 192)
- - bugfix {html_image} security check did fail on files relative to basedir (Issue 191)
-
- 06.06.2014
- - fixed PHPUnit outputFilterTrimWhitespaceTests.php assertion of test result
- - fixed spelling, PHPDoc , minor errors, code cleanup
-
- 02.06.2014
- - using multiple cwd with relative template dirs could result in identical compiled file names. (issue 194 and topic 25099)
-
- 19.04.2014
- - bugfix calling createTemplate(template, data) with empty data array caused notice of array to string conversion (Issue 189)
- - bugfix clearCompiledTemplate() did not delete files on WINDOWS when a compile_id was specified
-
- 18.04.2014
- - revert bugfix of 5.4.2014 because %-e date format is not supported on all operating systems
-
- ===== 3.1.18 ===== (07.04.2014)
- 06.04.2014
- - bugfix template inheritance fail when using custom resource after patch of 8.3.2014 (Issue 187)
- - bugfix update of composer file (Issue 168 and 184)
-
- 05.04.2014
- - bugfix default date format leads to extra spaces when displaying dates with single digit days (Issue 165)
-
- 26.03.2014
- - bugfix Smart_Resource_Custom should not lowercase the resource name (Issue 183)
-
- 24.03.2014
- - bugfix using a {foreach} property like @iteration could fail when used in inheritance parent templates (Issue 182)
-
- 20.03.2014
- - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899)
-
- 18.03.2014
- - revert change of 17.03.2014
-
-17.03.2014
- - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899)
-
- 15.03.2014
- - bugfix Smarty_CacheResource_Keyvaluestore did use different keys on read/writes and clearCache() calls (Issue 169)
-
- 13.03.2014
- - bugfix clearXxx() change of 27.1.2014 did not work when specifing cache_id or compile_id (forum topic 24868 and 24867)
-
- ===== 3.1.17 =====
- 08.03.2014
- - bugfix relative file path {include} within {block} of child templates did throw exception on first call (Issue 177)
-
- 17.02.2014
- - bugfix Smarty failed when executing PHP on HHVM (Hip Hop 2.4) because uniqid('',true) does return string with ',' (forum topic 20343)
-
- 16.02.2014
- - bugfix a '//' or '\\' in template_dir path could produce wrong path on relative filepath in {include} (Issue 175)
-
- 05.02.2014
- - bugfix shared.literal_compiler_param.php did throw an exception when literal did contain a '-' (smarty-developers group)
-
- 27.01.2014
- - bugfix $smarty->debugging = true; did show the variable of the $smarty object not the variables used in display() call (forum topic 24764)
- - bugfix clearCompiledTemplate(), clearAll() and clear() should use realpath to avoid possible exception from RecursiveDirectoryIterator (Issue 171)
-
- 26.01.2014
- - bugfix undo block nesting checks for {nocache} for reasons like forum topic 23280 (forum topic 24762)
-
- 18.01.2014
- - bugfix the compiler did fail when using template inheritance and recursive {include} (smarty-developers group)
-
- 11.01.2014
- - bugfix "* }" (spaces before right delimiter) was interpreted by mistake as comment end tag (Issue 170)
- - internals content cache should be clear when updating cache file
-
- 08.01.2014
- - bugfix Smarty_CacheResource_Custom did not handle template resource type specifications on clearCache() calls (Issue 169)
- - bugfix SmartyBC.class.php should use require_once to load Smarty.class.php (forum topic 24683)
-
- ===== 3.1.16 =====
- 15.12.2013
- - bugfix {include} with {block} tag handling (forum topic 24599, 24594, 24682) (Issue 161)
- Read 3.1.16_RELEASE_NOTES for more details
- - enhancement additional debug output at $smarty->_parserdebug = true;
-
- 07.11.2013
- - bugfix too restrictive handling of {include} within {block} tags. 3.1.15 did throw errors where 3.1.14 did not (forum topic 24599)
- - bugfix compiler could fail if PHP mbstring.func_overload is enabled (Issue 164)
-
- 28.10.2013
- - bugfix variable resource name at custom resource plugin did not work within {block} tags (Issue 163)
- - bugfix notice "Trying to get property of non-object" removed (Issue 163)
- - bugfix correction of modifier capitalize fix from 3.10.2013 (issue 159)
- - bugfix multiple {block}s with same name in parent did not work (forum topic 24631)
-
- 20.10.2013
- - bugfix a variable file name at {extends} tag did fail (forum topic 24618)
-
- 14.10.2013
- - bugfix yesterdays fix could result in an undefined variable
-
- 13.10.2013
- - bugfix variable names on {include} in template inheritance did unextepted error message (forum topic 24594) (Issue 161)
-.- bugfix relative includes with same name like {include './foo.tpl'} from different folder failed (forum topic 24590)(Issue 161)
-
- 04.10.2013
- - bugfix variable file names at {extends} had been disbabled by mistake with the rewrite of
- template inheritance of 24.08.2013 (forum topic 24585)
-
-03.10.2013
- - bugfix loops using modifier capitalize did eat up memory (issue 159)
-
- ===== Smarty 3.1.15 =====
-01.10.2013
- - use current delimiters in compiler error messages (issue 157)
- - improvement on performance when using error handler and multiple template folders (issue 152)
-
-17.09.2013
- - improvement added patch for additional SmartyCompilerException properties for better access to scource information (forum topic 24559)
-
-16.09.2013
- - bugfix recompiled templates did not show on first request with zend opcache cache (forum topic 24320)
-
-13.09.2013
- - bugfix html_select_time defaulting error for the Meridian dropdown (forum topic 24549)
-
-09.09.2012
-- bugfix incorrect compiled code with array(object,method) callback at registered Variable Filter (forum topic 24542)
-
-27.08.2013
-- bugfix delimiter followed by linebreak did not work as auto literal after update from 24.08.2013 (forum topic 24518)
-
-24.08.2013
-- bugfix and enhancement
- Because several recent problems with template inheritance the {block} tag compiler has been rewriten
- - Error messages shown now the correct child template file and line number
- - The compiler could fail on some larger UTF-8 text block (forum topic 24455)
- - The {strip} tag can now be placed outside {block} tags in child templates (forum topic 24289)
-- change SmartyException::$escape is now false by default
-- change PHP traceback has been remove for SmartyException and SmartyCompilerException
-
-14.08.2013
-- bugfix compiled filepath of config file did not observe different config_dir (forum topic 24493)
-
-13.08.2013
-- bugfix the internal resource cache did not observe config_dir changes (forum topic 24493)
-
-12.08.2013
-- bugfix internal $tmpx variables must be unique over all inheritance templates (Issue 149)
-
-10.08.2013
-- bugfix a newline was eaten when a <?xml ... ?> was passed by a Smarty variable and caching was enabled (forum topic 24482)
-
-29.07.2013
-- bugfix headers already send warning thrown when using 'SMARTY_DEBUG=on' from URL (Issue 148)
-
-27.07.2013
-- enhancement allow access to properties of registered opjects for Smarty2 BC (forum topic 24344)
-
-26.07.2013
-- bugfix template inheritance nesting problem (forum topic 24387)
-
-15.7.2013
-- update code generated by PSR-2 standards fixer which introduced PHP 5.4 incompatibilities of 14.7.2013
-
-14.7.2013
-- bugfix increase of internal maximum parser stacksize to allow more complex tag code {forum topic 24426}
-- update for PHP 5.4 compatibility
-- reformat source to PSR-2 standard
-
-12.7.2013
-- bugfix Do not remove '//' from file path at normalization (Issue 142)
-
-2.7.2013
-- bugfix trimwhitespace would replace captured items in wrong order (forum topic 24387)
-
-===== Smarty-3.1.14 =====
-27.06.2013
-- bugfix removed PHP 5.5 deprecated preg_replace /e option in modifier capitalize (forum topic 24389)
-
-17.06.2013
-- fixed spelling in sources and documentation (from smarty-developers forum Veres Lajos)
-- enhancement added constant SMARTY::CLEAR_EXPIRED for the change of 26.05.2013 (forum topic 24310)
-- bugfix added smarty_security.php to composer.json (Issue 135)
-
-26.05.2013
-- enhancement an expire_time of -1 in clearCache() and clearAllCache() will delete outdated cache files
- by their individual cache_lifetime used at creation (forum topic 24310)
-
-21.05.2013
-- bugfix modifier strip_tags:true was compiled into wrong code (Forum Topic 24287)
-- bugfix /n after ?> in Smarty.class.php did start output buffering (Issue 138)
-
-25.04.2013
-- bugfix escape and wordrap modifier could be compiled into wrong code when used in {nocache}{/nocache}
- section but caching is disabled (Forum Topic 24260)
-
-05.04.2013
-- bugfix post filter must not run when compiling inheritance child blocks (Forum Topic 24094)
-- bugfix after the fix for Issue #130 compiler exceptions got double escaped (Forum Topic 24199)
-
-28.02.2013
-- bugfix nocache blocks could be lost when using CACHING_LIFETIME_SAVED (Issue #133)
-- bugfix Compile ID gets nulled when compiling child blocks (Issue #134)
-
-
-24.01.2013
-- bugfix wrong tag type in smarty_internal_templatecompilerbase.php could cause wrong plugin search order (Forum Topic 24028)
-
-===== Smarty-3.1.13 =====
-13.01.2013
-- enhancement allow to disable exception message escaping by SmartyException::$escape = false; (Issue #130)
-
-09.01.2013
-- bugfix compilation did fail when a prefilter did modify an {extends} tag c
-- bugfix template inheritance could fail if nested {block} tags in childs did contain {$smarty.block.child} (Issue #127)
-- bugfix template inheritance could fail if {block} tags in childs did have similar name as used plugins (Issue #128)
-- added abstract method declaration doCompile() in Smarty_Internal_TemplateCompilerBase (Forum Topic 23969)
-
-06.01.2013
-- Allow '://' URL syntax in template names of stream resources (Issue #129)
-
-27.11.2012
-- bugfix wrong variable usage in smarty_internal_utility.php (Issue #125)
-
-26.11.2012
-- bugfix global variable assigned within template function are not seen after template function exit (Forum Topic 23800)
-
-24.11.2012
-- made SmartyBC loadable via composer (Issue #124)
-
-20.11.2012
-- bugfix assignGlobal() called from plugins did not work (Forum Topic 23771)
-
-13.11.2012
-- adding attribute "strict" to html_options, html_checkboxes, html_radios to only print disabled/readonly attributes if their values are true or "disabled"/"readonly" (Issue #120)
-
-01.11.2012
-- bugfix muteExcpetedErrors() would screw up for non-readable paths (Issue #118)
-
-===== Smarty-3.1.12 =====
-14.09.2012
-- bugfix template inheritance failed to compile with delimiters {/ and /} (Forum Topic 23008)
-
-11.09.2012
-- bugfix escape Smarty exception messages to avoid possible script execution
-
-10.09.2012
-- bugfix tag option flags and shorttag attributes did not work when rdel started with '=' (Forum Topic 22979)
-
-31.08.2012
-- bugfix resolving relative paths broke in some circumstances (Issue #114)
-
-22.08.2012
-- bugfix test MBString availability through mb_split, as it could've been compiled without regex support (--enable-mbregex).
- Either we get MBstring's full package, or we pretend it's not there at all.
-
-21.08.2012
-- bugfix $auto_literal = false did not work with { block} tags in child templates
- (problem was reintroduced after fix in 3.1.7)(Forum Topic 20581)
-
-17.08.2012
-- bugfix compiled code of nocache sections could contain wrong escaping (Forum Topic 22810)
-
-15.08.2012
-- bugfix template inheritance did produce wrong code if subtemplates with {block} was
- included several times (from smarty-developers forum)
-
-14.08.2012
-- bugfix PHP5.2 compatibility compromised by SplFileInfo::getBasename() (Issue 110)
-
-01.08.2012
-- bugfix avoid PHP error on $smarty->configLoad(...) with invalid section specification (Forum Topic 22608)
-
-30.07.2012
--bugfix {assign} in a nocache section should not overwrite existing variable values
- during compilation (issue 109)
-
-28.07.2012
-- bugfix array access of config variables did not work (Forum Topic 22527)
-
-19.07.2012
-- bugfix the default plugin handler did create wrong compiled code for static class methods
- from external script files (issue 108)
-
-===== Smarty-3.1.11 =====
-30.06.2012
-- bugfix {block.. hide} did not work as nested child (Forum Topic 22216)
-
-25.06.2012
-- bugfix the default plugin handler did not allow static class methods for modifier (issue 85)
-
-24.06.2012
-- bugfix escape modifier support for PHP < 5.2.3 (Forum Topic 21176)
-
-11.06.2012
-- bugfix the patch for Topic 21856 did break tabs between tag attributes (Forum Topic 22124)
-
-===== Smarty-3.1.10 =====
-09.06.2012
-- bugfix the compiler did ignore registered compiler plugins for closing tags (Forum Topic 22094)
-- bugfix the patch for Topic 21856 did break multiline tags (Forum Topic 22124)
-
-===== Smarty-3.1.9 =====
-07.06.2012
-- bugfix fetch() and display() with relative paths (Issue 104)
-- bugfix treat "0000-00-00" as 0 in modifier.date_format (Issue 103)
-
-24.05.2012
-- bugfix Smarty_Internal_Write_File::writeFile() could cause race-conditions on linux systems (Issue 101)
-- bugfix attribute parameter names of plugins may now contain also "-" and ":" (Forum Topic 21856)
-- bugfix add compile_id to cache key of of source (Issue 97)
-
-22.05.2012
-- bugfix recursive {include} within {section} did fail (Smarty developer group)
-
-12.05.2012
-- bugfix {html_options} did not properly escape values (Issue 98)
-
-03.05.2012
-- bugfix make HTTP protocall version variable (issue 96)
-
-02.05.2012
-- bugfix {nocache}{block}{plugin}... did produce wrong compiled code when caching is disabled (Forum Topic 21572, issue 95)
-
-12.04.2012
-- bugfix Smarty did eat the linebreak after the <?xml...?> closing tag (Issue 93)
-- bugfix concurrent cache updates could create a warning (Forum Topic 21403)
-
-08.04.2012
-- bugfix "\\" was not escaped correctly when generating nocache code (Forum Topic 21364)
-
-30.03.2012
-- bugfix template inheritance did not throw exception when a parent template was deleted (issue 90)
-
-27.03.2012
-- bugfix prefilter did run multiple times on inline subtemplates compiled into several main templates (Forum Topic 21325)
-- bugfix implement Smarty2's behaviour of variables assigned by reference in SmartyBC. {assign} will affect all references.
- (issue 88)
-
-21.03.2012
-- bugfix compileAllTemplates() and compileAllConfig() did not return the number of compiled files (Forum Topic 21286)
-
-13.03.2012
-- correction of yesterdays bugfix (Forum Topic 21175 and 21182)
-
-12.03.2012
-- bugfix a double quoted string of "$foo" did not compile into PHP "$foo" (Forum Topic 21175)
-- bugfix template inheritance did set $merge_compiled_includes globally true
-
-03.03.2012
-- optimization of compiling speed when same modifier was used several times
-
-02.03.2012
-- enhancement the default plugin handler can now also resolve undefined modifier (Smarty::PLUGIN_MODIFIER)
- (Issue 85)
-
-===== Smarty-3.1.8 =====
-19.02.2012
-- bugfix {include} could result in a fatal error if used in appended or prepended nested {block} tags
- (reported by mh and Issue 83)
-- enhancement added Smarty special variable $smarty.template_object to return the current template object (Forum Topic 20289)
-
-
-07.02.2012
-- bugfix increase entropy of internal function names in compiled and cached template files (Forum Topic 20996)
-- enhancement cacheable parameter added to default plugin handler, same functionality as in registerPlugin (request by calguy1000)
-
-06.02.2012
-- improvement stream_resolve_include_path() added to Smarty_Internal_Get_Include_Path (Forum Topic 20980)
-- bugfix fetch('extends:foo.tpl') always yielded $source->exists == true (Forum Topic 20980)
-- added modifier unescape:"url", fix (Forum Topic 20980)
-- improvement replaced some calls of preg_replace with str_replace (Issue 73)
-
-30.01.2012
-- bugfix Smarty_Security internal $_resource_dir cache wasn't properly propagated
-
-27.01.2012
-- bugfix Smarty did not a template name of "0" (Forum Topic 20895)
-
-20.01.2012
-- bugfix typo in Smarty_Internal_Get_IncludePath did cause runtime overhead (Issue 74)
-- improvment remove unneeded assigments (Issue 75 and 76)
-- fixed typo in template parser
-- bugfix output filter must not run before writing cache when template does contain nocache code (Issue 71)
-
-02.01.2012
-- bugfix {block foo nocache} did not load plugins within child {block} in nocache mode (Forum Topic 20753)
-
-29.12.2011
-- bugfix enable more entropy in Smarty_Internal_Write_File for "more uniqueness" and Cygwin compatibility (Forum Topic 20724)
-- bugfix embedded quotes in single quoted strings did not compile correctly in {nocache} sections (Forum Topic 20730)
-
-28.12.2011
-- bugfix Smarty's internal header code must be excluded from postfilters (issue 71)
-
-22.12.2011
-- bugfix the new lexer of 17.12.2011 did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680)
-- bugfix template inheritace did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680)
-
-20.12.2011
-- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return
- content after {$smarty.block.child} (Forum Topic 20564)
-
-===== Smarty-3.1.7 =====
-18.12.2011
-- bugfix strings ending with " in multiline strings of config files failed to compile (issue #67)
-- added chaining to Smarty_Internal_Templatebase
-- changed unloadFilter() to not return a boolean in favor of chaining and API conformity
-- bugfix unregisterObject() raised notice when object to unregister did not exist
-- changed internals to use Smarty::$_MBSTRING ($_CHARSET, $_DATE_FORMAT) for better unit testing
-- added Smarty::$_UTF8_MODIFIER for proper PCRE charset handling (Forum Topic 20452)
-- added Smarty_Security::isTrustedUri() and Smarty_Security::$trusted_uri to validate
- remote resource calls through {fetch} and {html_image} (Forum Topic 20627)
-
-17.12.2011
-- improvement of compiling speed by new handling of plain text blocks in the lexer/parser (issue #68)
-
-16.12.2011
-- bugfix the source exits flag and timestamp was not setup when template was in php include path (issue #69)
-
-9.12.2011
-- bugfix {capture} tags around recursive {include} calls did throw exception (Forum Topic 20549)
-- bugfix $auto_literal = false did not work with { block} tags in child templates (Forum Topic 20581)
-- bugfix template inheritance: do not include code of {include} in overloaded {block} into compiled
- parent template (Issue #66}
-- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return expected
- result (Forum Topic 20564)
-
-===== Smarty-3.1.6 =====
-30.11.2011
-- bugfix is_cache() for individual cached subtemplates with $smarty->caching = CACHING_OFF did produce
- an exception (Forum Topic 20531)
-
-29.11.2011
-- bugfix added exception if the default plugin handler did return a not static callback (Forum Topic 20512)
-
-25.11.2011
-- bugfix {html_select_date} and {html_slecet_time} did not default to current time if "time" was not specified
- since r4432 (issue 60)
-
-24.11.2011
-- bugfix a subtemplate later used as main template did use old variable values
-
-21.11.2011
-- bugfix cache file could include unneeded modifier plugins under certain condition
-
-18.11.2011
-- bugfix declare all directory properties private to map direct access to getter/setter also on extended Smarty class
-
-16.11.2011
-- bugfix Smarty_Resource::load() did not always return a proper resource handler (Forum Topic 20414)
-- added escape argument to html_checkboxes and html_radios (Forum Topic 20425)
-
-===== Smarty-3.1.5 =====
-14.11.2011
-- bugfix allow space between function name and open bracket (forum topic 20375)
-
-09.11.2011
-- bugfix different behaviour of uniqid() on cygwin. See https://bugs.php.net/bug.php?id=34908
- (forum topic 20343)
-
-01.11.2011
-- bugfix {if} and {while} tags without condition did not throw a SmartyCompilerException (Issue #57)
-- bugfix multiline strings in config files could fail on longer strings (reopened Issue #55)
-
-22.10.2011
-- bugfix smarty_mb_from_unicode() would not decode unicode-points properly
-- bugfix use catch Exception instead UnexpectedValueException in
- clearCompiledTemplate to be PHP 5.2 compatible
-
-21.10.2011
-- bugfix apostrophe in plugins_dir path name failed (forum topic 20199)
-- improvement sha1() for array keys longer than 150 characters
-- add Smarty::$allow_ambiguous_resources to activate unique resource handling (Forum Topic 20128)
-
-20.10.2011
-- @silenced unlink() in Smarty_Internal_Write_File since debuggers go haywire without it.
-- bugfix Smarty::clearCompiledTemplate() threw an Exception if $cache_id was not present in $compile_dir when $use_sub_dirs = true.
-- bugfix {html_select_date} and {html_select_time} did not properly handle empty time arguments (Forum Topic 20190)
-- improvement removed unnecessary sha1()
-
-19.10.2011
-- revert PHP4 constructor message
-- fixed PHP4 constructor message
-
-===== Smarty-3.1.4 =====
-19.10.2011
-- added exception when using PHP4 style constructor
-
-16.10.2011
-- bugfix testInstall() did not propery check cache_dir and compile_dir
-
-15.10.2011
-- bugfix Smarty_Resource and Smarty_CacheResource runtime caching (Forum Post 75264)
-
-14.10.2011
-- bugfix unique_resource did not properly apply to compiled resources (Forum Topic 20128)
-- add locking to custom resources (Forum Post 75252)
-- add Smarty_Internal_Template::clearCache() to accompany isCached() fetch() etc.
-
-13.10.2011
-- add caching for config files in Smarty_Resource
-- bugfix disable of caching after isCached() call did not work (Forum Topic 20131)
-- add concept unique_resource to combat potentially ambiguous template_resource values when custom resource handlers are used (Forum Topic 20128)
-- bugfix multiline strings in config files could fail on longer strings (Issue #55)
-
-11.10.2011
-- add runtime checks for not matching {capture}/{/capture} calls (Forum Topic 20120)
-
-10.10.2011
-- bugfix variable name typo in {html_options} and {html_checkboxes} (Issue #54)
-- bugfix <?xml> tag did create wrong output when caching enabled and the tag was in included subtemplate
-- bugfix Smarty_CacheResource_mysql example was missing strtotime() calls
-
-===== Smarty-3.1.3 =====
-07.10.2011
-- improvement removed html comments from {mailto} (Forum Topic 20092)
-- bugfix testInstall() would not show path to internal plugins_dir (Forum Post 74627)
-- improvement testInstall() now showing resolved paths and checking the include_path if necessary
-- bugfix html_options plugin did not handle object values properly (Issue #49, Forum Topic 20049)
-- improvement html_checkboxes and html_radios to accept null- and object values, and label_ids attribute
-- improvement removed some unnecessary count()s
-- bugfix parent pointer was not set when fetch() for other template was called on template object
-
-06.10.2011
-- bugfix switch lexer internals depending on mbstring.func_overload
-- bugfix start_year and end_year of {html_select_date} did not use current year as offset base (Issue #53)
-
-05.10.2011
-- bugfix of problem introduced with r4342 by replacing strlen() with isset()
-- add environment configuration issue with mbstring.func_overload Smarty cannot compensate for (Issue #45)
-- bugfix nofilter tag option did not disable default modifier
-- bugfix html_options plugin did not handle null- and object values properly (Issue #49, Forum Topic 20049)
-
-04.10.2011
-- bugfix assign() in plugins called in subtemplates did change value also in parent template
-- bugfix of problem introduced with r4342 on math plugin
-- bugfix output filter should not run on individually cached subtemplates
-- add unloadFilter() method
-- bugfix has_nocache_code flag was not reset before compilation
-
-===== Smarty-3.1.2 =====
-03.10.2011
-- improvement add internal $joined_template_dir property instead computing it on the fly several times
-
-01.10.2011
-- improvement replaced most in_array() calls by more efficient isset() on array_flip()ed haystacks
-- improvement replaced some strlen($foo) > 3 calls by isset($foo[3])
-- improvement Smarty_Internal_Utility::clearCompiledTemplate() removed redundant strlen()s
-
-29.09.2011
-- improvement of Smarty_Internal_Config::loadConfigVars() dropped the in_array for index look up
-
-28.09.2011
-- bugfix on template functions called nocache calling other template functions
-
-27.09.2011
-- bugfix possible warning "attempt to modify property of non-object" in {section} (issue #34)
-- added chaining to Smarty_Internal_Data so $smarty->assign('a',1)->assign('b',2); is possible now
-- bugfix remove race condition when a custom resource did change timestamp during compilation
-- bugfix variable property did not work on objects variable in template
-- bugfix smarty_make_timestamp() failed to process DateTime objects properly
-- bugfix wrong resource could be used on compile check of custom resource
-
-26.09.2011
-- bugfix repeated calls to same subtemplate did not make use of cached template object
-
-24.09.2011
-- removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application
-- optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable
-- added compile_dir and cache_dir to list of muted directories
-- improvment better error message for undefined templates at {include}
-
-23.09.2011
-- remove unused properties
-- optimization use real function instead anonymous function for preg_replace_callback
-- bugfix a relative {include} in child template blocks failed
-- bugfix direct setting of $template_dir, $config_dir, $plugins_dir in __construct() of an
- extended Smarty class created problems
-- bugfix error muting was not implemented for cache locking
-
-===== Smarty 3.1.1 =====
-22.09.2011
-- bugfix {foreachelse} does fail if {section} was nested inside {foreach}
-- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true
-
-21.09.2011
-- bugfix look for mixed case plugin file names as in 3.0 if not found try all lowercase
-- added $error_muting to suppress error messages even for badly implemented error_handlers
-- optimized autoloader
-- reverted ./ and ../ handling in fetch() and display() - they're allowed again
-
-20.09.2011
-- bugfix removed debug echo output while compiling template inheritance
-- bugfix relative paths in $template_dir broke relative path resolving in {include "../foo.tpl"}
-- bugfix {include} did not work inside nested {block} tags
-- bugfix {assign} with scope root and global did not work in all cases
-
-19.09.2011
-- bugfix regression in Smarty_CacheReource_KeyValueStore introduced by r4261
-- bugfix output filter shall not run on included subtemplates
-
-18.09.2011
-- bugfix template caching did not care about file.tpl in different template_dir
-- bugfix {include $file} was broken when merge_compiled_incluges = true
-- bugfix {include} was broken when merge_compiled_incluges = true and same indluded template
- was used in different main templates in one compilation run
-- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}
-- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true
-
-17.09.2011
-- bugfix lock_id for file resource would create invalid filepath
-- bugfix resource caching did not care about file.tpl in different template_dir
-
-===== Smarty 3.1.0 =====
-15/09/2011
-- optimization of {foreach}; call internal _count() method only when "total" or "last" {foreach} properties are used
-
-11/09/2011
-- added unregisterObject() method
-
-06/09/2011
-- bugfix isset() did not work in templates on config variables
-
-03/09/2011
-- bugfix createTemplate() must default to cache_id and compile_id of Smarty object
-- bugfix Smarty_CacheResource_KeyValueStore must include $source->uid in cache filepath to keep templates with same
- name but different folders separated
-- added cacheresource.apc.php example in demo folder
-
-02/09/2011
-- bugfix cache lock file must use absolute filepath
-
-01/09/2011
-- update of cache locking
-
-30/08/2011
-- added locking mechanism to CacheResource API (implemented with File and KeyValueStores)
-
-28/08/2011
-- bugfix clearCompileTemplate() did not work for specific template subfolder or resource
-
-27/08/2011
-- bugfix {$foo|bar+1} did create syntax error
-
-26/08/2011
-- bugfix when generating nocache code which contains double \
-- bugfix handle race condition if cache file was deleted between filemtime and include
-
-17/08/2011
-- bugfix CacheResource_Custom bad internal fetch() call
-
-15/08/2011
-- bugfix CacheResource would load content twice for KeyValueStore and Custom handlers
-
-06/08/2011
-- bugfix {include} with scope attribute could execute in wrong scope
-- optimization of compile_check processing
-
-03/08/2011
-- allow comment tags to comment {block} tags out in child templates
-
-26/07/2011
-- bugfix experimental getTags() method did not work
-
-24/07/2011
-- sure opened output buffers are closed on exception
-- bugfix {foreach} did not work on IteratorAggregate
-
-22/07/2011
-- clear internal caches on clearAllCache(), clearCache(), clearCompiledTemplate()
-
-21/07/2011
-- bugfix value changes of variable values assigned to Smarty object could not be seen on repeated $smarty->fetch() calls
-
-17/07/2011
-- bugfix {$smarty.block.child} did drop a notice at undefined child
-
-15/07/2011
-- bugfix individual cache_lifetime of {include} did not work correctly inside {block} tags
-- added caches for Smarty_Internal_TemplateSource and Smarty_Internal_TemplateCompiled to reduce I/O for multiple cache_id rendering
-
-14/07/2011
-- made Smarty::loadPlugin() respect the include_path if required
-
-13/07/2011
-- optimized internal file write functionality
-- bugfix PHP did eat line break on nocache sections
-- fixed typo of Smarty_Security properties $allowed_modifiers and $disabled_modifiers
-
-06/07/2011
-- bugfix variable modifier must run befor gereral filtering/escaping
-
-04/07/2011
-- bugfix use (?P<name>) syntax at preg_match as some pcre libraries failed on (?<name>)
-- some performance improvement when using generic getter/setter on template objects
-
-30/06/2011
-- bugfix generic getter/setter of Smarty properties used on template objects did throw exception
-- removed is_dir and is_readable checks from directory setters for better performance
-
-28/06/2011
-- added back support of php template resource as undocumented feature
-- bugfix automatic recompilation on version change could drop undefined index notice on old 3.0 cache and compiled files
-- update of README_3_1_DEV.txt and moved into the distribution folder
-- improvement show first characters of eval and string templates instead sha1 Uid in debug window
-
-===== Smarty 3.1-RC1 =====
-25/06/2011
-- revert change of 17/06/2011. $_smarty varibale removed. call loadPlugin() from inside plugin code if required
-- code cleanup, remove no longer used properties and methods
-- update of PHPdoc comments
-
-23/06/2011
-- bugfix {html_select_date} would not respect current time zone
-
-19/06/2011
-- added $errors argument to testInstall() functions to suppress output.
-- added plugin-file checks to testInstall()
-
-18/06/2011
-- bugfix mixed use of same subtemplate inline and not inline in same script could cause a warning during compilation
-
-17/06/2011
-- bugfix/change use $_smarty->loadPlugin() when loading nested depending plugins via loadPlugin
-- bugfix {include ... inline} within {block}...{/block} did fail
-
-16/06/2011
-- bugfix do not overwrite '$smarty' template variable when {include ... scope=parent} is called
-- bugfix complete empty inline subtemplates did fail
-
-15/06/2011
-- bugfix template variables where not accessable within inline subtemplates
-
-12/06/2011
-- bugfix removed unneeded merging of template variable when fetching includled subtemplates
-
-10/06/2011
-- made protected properties $template_dir, $plugins_dir, $cache_dir, $compile_dir, $config_dir accessible via magic methods
-
-09/06/2011
-- fix smarty security_policy issue in plugins {html_image} and {fetch}
-
-05/06/2011
-- update of SMARTY_VERSION
-- bugfix made getTags() working again
-
-04/06/2011
-- allow extends resource in file attribute of {extends} tag
-
-03/06/2011
-- added {setfilter} tag to set filters for variable output
-- added escape_html property to control autoescaping of variable output
-
-27/05/2011
-- added allowed/disabled tags and modifiers in security for sandboxing
-
-23/05/2011
-- added base64: and urlencode: arguments to eval and string resource types
-
-22/05/2011
-- made time-attribute of {html_select_date} and {html_select_time} accept arrays as defined by attributes prefix and field_array
-
-13/05/2011
-- remove setOption / getOption calls from SamrtyBC class
-
-02/05/2011
-- removed experimental setOption() getOption() methods
-- output returned content also on opening tag calls of block plugins
-- rewrite of default plugin handler
-- compile code of variable filters for better performance
-
-20/04/2011
-- allow {php} {include_php} tags and PHP_ALLOW handling only with the SmartyBC class
-- removed support of php template resource
-
-20/04/2011
-- added extendsall resource example
-- optimization of template variable access
-- optimization of subtemplate handling {include}
-- optimization of template class
-
-01/04/2011
-- bugfix quote handling in capitalize modifier
-
-28/03/2011
-- bugfix stripslashes() requried when using PCRE e-modifier
-
-04/03/2011
-- upgrade to new PHP_LexerGenerator version 0.4.0 for better performance
-
-27/02/2011
-- ignore .svn folders when clearing cache and compiled files
-- string resources do not need a modify check
-
-26/02/2011
-- replaced smarty_internal_wrapper by SmartyBC class
-- load utility functions as static methods instead through __call()
-- bugfix in extends resource when subresources are used
-- optimization of modify checks
-
-25/02/2011
-- use $smarty->error_unassigned to control NOTICE handling on unassigned variables
-
-21/02/2011
-- added new new compile_check mode COMPILECHECK_CACHEMISS
-- corrected new cloning behaviour of createTemplate()
-- do no longer store the compiler object as property in the compile_tag classes to avoid possible memory leaks
- during compilation
-
-19/02/2011
-- optimizations on merge_compiled_includes handling
-- a couple of optimizations and bugfixes related to new resource structure
-
-17/02/2011
-- changed ./ and ../ behaviour
-
-14/02/2011
-- added {block ... hide} option to suppress block if no child is defined
-
-13/02/2011
-- update handling of recursive subtemplate calls
-- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
-
-12/02/2011
-- new class Smarty_Internal_TemplateBase with shared methods of Smarty and Template objects
-- optimizations of template processing
-- made register... methods permanet
-- code for default_plugin_handler
-- add automatic recompilation at version change
-
-04/02/2011
-- change in Smarty_CacheResource_Custom
-- bugfix cache_lifetime did not compile correctly at {include} after last update
-- moved isCached processing into CacheResource class
-- bugfix new CacheResource API did not work with disabled compile_check
-
-03/02/2011
-- handle template content as function to improve speed on multiple calls of same subtemplate and isCached()/display() calls
-- bugfixes and improvents in the new resource API
-- optimizations of template class code
-
-25/01/2011
-- optimized function html_select_time
-
-22/01/2011
-- added Smarty::$use_include_path configuration directive for Resource API
-
-21/01/2011
-- optimized function html_select_date
-
-19/01/2011
-- optimized outputfilter trimwhitespace
-
-18/01/2011
-- bugfix Config to use Smarty_Resource to fetch sources
-- optimized Smarty_Security's isTrustedDir() and isTrustedPHPDir()
-
-17/01/2011
-- bugfix HTTP headers for CGI SAPIs
-
-16/01/2011
-- optimized internals of Smarty_Resource and Smarty_CacheResource
-
-14/01/2011
-- added modifiercompiler escape to improve performance of escaping html, htmlall, url, urlpathinfo, quotes, javascript
-- added support to choose template_dir to load from: [index]filename.tpl
-
-12/01/2011
-- added unencode modifier to revert results of encode modifier
-- added to_charset and from_charset modifier for character encoding
-
-11/01/2011
-- added SMARTY_MBSTRING to generalize MBString detection
-- added argument $lc_rest to modifier.capitalize to lower-case anything but the first character of a word
-- changed strip modifier to consider unicode white-space, too
-- changed wordwrap modifier to accept UTF-8 strings
-- changed count_sentences modifier to consider unicode characters and treat sequences delimited by ? and ! as sentences, too
-- added argument $double_encode to modifier.escape (applies to html and htmlall only)
-- changed escape modifier to be UTF-8 compliant
-- changed textformat block to be UTF-8 compliant
-- optimized performance of mailto function
-- fixed spacify modifier so characters are not prepended and appended, made it unicode compatible
-- fixed truncate modifier to properly use mb_string if possible
-- removed UTF-8 frenzy from count_characters modifier
-- fixed count_words modifier to treat "hello-world" as a single word like str_count_words() does
-- removed UTF-8 frenzy from upper modifier
-- removed UTF-8 frenzy from lower modifier
-
-01/01/2011
-- optimize smarty_modified_escape for hex, hexentity, decentity.
-
-28/12/2010
-- changed $tpl_vars, $config_vars and $parent to belong to Smarty_Internal_Data
-- added Smarty::registerCacheResource() for dynamic cache resource object registration
-
-27/12/2010
-- added Smarty_CacheResource API and refactored existing cache resources accordingly
-- added Smarty_CacheResource_Custom and Smarty_CacheResource_Mysql
-
-26/12/2010
-- added Smarty_Resource API and refactored existing resources accordingly
-- added Smarty_Resource_Custom and Smarty_Resource_Mysql
-- bugfix Smarty::createTemplate() to return properly cloned template instances
-
-24/12/2010
-- optimize smarty_function_escape_special_chars() for PHP >= 5.2.3
-
-===== SVN 3.0 trunk =====
-14/05/2011
-- bugfix error handling at stream resources
-
-13/05/2011
-- bugfix condition starting with "-" did fail at {if} and {while} tags
-
-22/04/2011
-- bugfix allow only fixed string as file attribute at {extends} tag
-
-01/04/2011
-- bugfix do not run filters and default modifier when displaying the debug template
-- bugfix of embedded double quotes within multi line strings (""")
-
-29/03/2011
-- bugfix on error message in smarty_internal_compile_block.php
-- bugfix mb handling in strip modifier
-- bugfix for Smarty2 style registered compiler function on unnamed attribute passing like {tag $foo $bar}
-
-17/03/2011
-- bugfix on default {function} parameters when {function} was used in nocache sections
-- bugfix on compiler object destruction. compiler_object property was by mistake unset.
-
-09/03/2011
--bugfix a variable filter should run before modifiers on an output tag (see change of 23/07/2010)
-
-08/03/2011
-- bugfix loading config file without section should load only defaults
-
-03/03/2011
-- bugfix "smarty" template variable was not recreated when cached templated had expired
-- bugfix internal rendered_content must be cleared after subtemplate was included
-
-01/03/2011
-- bugfix replace modifier did not work in 3.0.7 on systems without multibyte support
-- bugfix {$smarty.template} could return in 3.0.7 parent template name instead of
- child name when it needed to compile
-
-25/02/2011
-- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}
-
-24/02/2011
-- bugfix $smarty->clearCache('some.tpl') did by mistake cache the template object
-
-18/02/2011
-- bugfix removed possible race condition when isCached() was called for an individually cached subtemplate
-- bugfix force default debug.tpl to be loaded by the file resource
-
-17/02/2011
--improvement not to delete files starting with '.' from cache and template_c folders on clearCompiledTemplate() and clearCache()
-
-16/02/2011
--fixed typo in exception message of Smarty_Internal_Template
--improvement allow leading spaces on } tag closing if auto_literal is enabled
-
-13/02/2011
-- bufix replace $smarty->triggerError() by exception
-- removed obsolete {popup_init..} plugin from demo templates
-- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
-
-===== Smarty 3.0.7 =====
-09/02/2011
-- patched vulnerability when using {$smarty.template}
-
-01/02/2011
-- removed assert() from config and template parser
-
-31/01/2011
-- bugfix the lexer/parser did fail on special characters like VT
-
-16/01/2011
--bugfix of ArrayAccess object handling in internal _count() method
--bugfix of Iterator object handling in internal _count() method
-
-14/01/2011
--bugfix removed memory leak while processing compileAllTemplates
-
-12/01/2011
-- bugfix in {if} and {while} tag compiler when using assignments as condition and nocache mode
-
-10/01/2011
-- bugfix when using {$smarty.block.child} and name of {block} was in double quoted string
-- bugfix updateParentVariables() was called twice when leaving {include} processing
-
-- bugfix mb_str_replace in replace and escape modifiers work with utf8
-
-31/12/2010
-- bugfix dynamic configuration of $debugging_crtl did not work
-- bugfix default value of $config_read_hidden changed to false
-- bugfix format of attribute array on compiler plugins
-- bugfix getTemplateVars() could return value from wrong scope
-
-28/12/2010
-- bugfix multiple {append} tags failed to compile.
-
-22/12/2010
-- update do not clone the Smarty object an internal createTemplate() calls to increase performance
-
-21/12/2010
-- update html_options to support class and id attrs
-
-17/12/2010
-- bugfix added missing support of $cache_attrs for registered plugins
-
-15/12/2010
-- bugfix assignment as condition in {while} did drop an E_NOTICE
-
-14/12/2010
-- bugfix when passing an array as default parameter at {function} tag
-
-13/12/2010
-- bugfix {$smarty.template} in child template did not return right content
-- bugfix Smarty3 did not search the PHP include_path for template files
-
-===== Smarty 3.0.6 =====
-
-12/12/2010
-- bugfix fixed typo regarding yesterdays change to allow streamWrapper
-
-11/12/2010
-- bugfix nested block tags in template inheritance child templates did not work correctly
-- bugfix {$smarty.current_dir} in child template did not point to dir of child template
-- bugfix changed code when writing temporary compiled files to allow stream_wrapper
-
-06/12/2010
-- bugfix getTemplateVars() should return 'null' instead dropping E_NOTICE on an unassigned variable
-
-05/12/2010
-- bugfix missing declaration of $smarty in Smarty class
-- bugfix empty($foo) in {if} did drop a notice when $foo was not assigned
-
-01/12/2010
-- improvement of {debug} tag output
-
-27/11/2010
--change run output filter before cache file is written. (same as in Smarty2)
-
-24/11/2011
--bugfix on parser at !$foo|modifier
--change parser logic when assignments used as condition in {if] and {while} to allow assign to array element
-
-23/11/2011
--bugfix allow integer as attribute name in plugin calls
--change trimm whitespace from error message, removed long list of expected tokens
-
-22/11/2010
-- bugfix on template inheritance when an {extends} tag was inserted by a prefilter
-- added error message for illegal variable file attributes at {extends...} tags
-
-===== Smarty 3.0.5 =====
-
-
-19/11/2010
-- bugfix on block plugins with modifiers
-
-18/11/2010
-- change on handling of unassigned template variable -- default will drop E_NOTICE
-- bugfix on Smarty2 wrapper load_filter() did not work
-
-17/11/2010
-- bugfix on {call} with variable function name
-- bugfix on {block} if name did contain '-'
-- bugfix in function.fetch.php , referece to undefined $smarty
-
-16/11/2010
-- bugfix whitespace in front of "<?php" in smarty_internal_compile_private_block_plugin.php
-- bugfix {$smarty.now} did compile incorrectly
-- bugfix on reset(),end(),next(),prev(),current() within templates
-- bugfix on default parameter for {function}
-
-15/11/2010
-- bugfix when using {$smarty.session} as object
-- bugfix scoping problem on $smarty object passed to filters
-- bugfix captured content could not be accessed globally
-- bugfix Smarty2 wrapper functions could not be call from within plugins
-
-===== Smarty 3.0.4 =====
-
-14/11/2010
-- bugfix isset() did not allow multiple parameter
-- improvment of some error messages
-- bugfix html_image did use removed property $request_use_auto_globals
-- small performace patch in Smarty class
-
-13/11/2010
-- bugfix overloading problem when $smarty->fetch()/display() have been used in plugins
- (introduced with 3.0.2)
-- code cleanup
-
-===== Smarty 3.0.3 =====
-
-13/11/2010
-- bugfix on {debug}
-- reverted location of loadPlugin() to Smarty class
-- fixed comments in plugins
-- fixed internal_config (removed unwanted code line)
-- improvement remove last linebreak from {function} definition
-
-===== Smarty 3.0.2 =====
-
-12/11/2010
-- reactivated $error_reporting property handling
-- fixed typo in compile_continue
-- fixed security in {fetch} plugin
-- changed back plugin parameters to two. second is template object
- with transparent access to Smarty object
-- fixed {config_load} scoping form compile time to run time
-
-===== Smarty 3.0.0 =====
-
-
-
-11/11/2010
-- major update including some API changes
-
-10/11/2010
-- observe compile_id also for config files
-
-09/11/2010
--bugfix on complex expressions as start value for {for} tag
-request_use_auto_globals
-04/11/2010
-- bugfix do not allow access of dynamic and private object members of assigned objects when
- security is enabled.
-
-01/11/2010
-- bugfix related to E_NOTICE change. {if empty($foo)} did fail when $foo contained a string
-
-28/10/2010
-- bugfix on compiling modifiers within $smarty special vars like {$smarty.post.{$foo|lower}}
-
-27/10/2010
-- bugfix default parameter values did not work for template functions included with {include}
-
-25/10/2010
-- bugfix for E_NOTICE change, array elements did not work as modifier parameter
-
-20/10/2010
-- bugfix for the E_NOTICE change
-
-19/10/2010
-- change Smarty does no longer mask out E_NOTICE by default during template processing
-
-13/10/2010
-- bugfix removed ambiguity between ternary and stream variable in template syntax
-- bugfix use caching properties of template instead of smarty object when compiling child {block}
-- bugfix {*block}...{/block*} did throw an exception in template inheritance
-- bugfix on template inheritance using nested eval or string resource in {extends} tags
-- bugfix on output buffer handling in isCached() method
-
-===== RC4 =====
-
-01/10/2010
-- added {break} and {continue} tags for flow control of {foreach},{section},{for} and {while} loops
-- change of 'string' resource. It's no longer evaluated and compiled files are now stored
-- new 'eval' resource which evaluates a template without saving the compiled file
-- change in isCached() method to allow multiple calls for the same template
-
-25/09/2010
-- bugfix on some compiling modifiers
-
-24/09/2010
-- bugfix merge_compiled_includes flag was not restored correctly in {block} tag
-
-22/09/2010
-- bugfix on default modifier
-
-18/09/2010
-- bugfix untility compileAllConfig() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
-- bugfix on templateExists() for extends resource
-
-17/09/2010
-- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags
-- bugfix corrected error message on missing template files in extends resource
-- bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
-
-16/09/2010
-- bugfix when a doublequoted modifier parameter did contain Smarty tags and ':'
-
-15/09/2010
-- bugfix resolving conflict between '<%'/'%>' as custom Smarty delimiter and ASP tags
-- use ucfirst for resource name on internal resource class names
-
-12/09/2010
-- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)
-
-10/09/2010
-- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)
-
-08/09/2010
-- allow multiple template inheritance branches starting in subtemplates
-
-07/09/2010
-- bugfix {counter} and {cycle} plugin assigned result to smarty variable not in local(template) scope
-- bugfix templates containing just {strip} {/strip} tags did produce an error
-
-
-23/08/2010
-- fixed E_STRICT errors for uninitialized variables
-
-22/08/2010
-- added attribute cache_id to {include} tag
-
-13/08/2010
-- remove exception_handler property from Smarty class
-- added Smarty's own exceptions SmartyException and SmartyCompilerException
-
-09/08/2010
-- bugfix on modifier with doublequoted strings as parameter containing embedded tags
-
-06/08/2010
-- bugfix when cascading some modifier like |strip|strip_tags modifier
-
-05/08/2010
-- added plugin type modifiercompiler to produce compiled modifier code
-- changed standard modifier plugins to the compiling versions whenever possible
-- bugfix in nocache sections {include} must not cache the subtemplate
-
-02/08/2010
-- bugfix strip did not work correctly in conjunction with comment lines
-
-31/07/2010
-- bugfix on nocache attribute at {assign} and {append}
-
-30/07/2010
-- bugfix passing scope attributes in doublequoted strings did not work at {include} {assign} and {append}
-
-25/07/2010
-- another bugfix of change from 23/07/2010 when compiling modifier
-
-24/07/2010
-- bugfix of change from 23/07/2010 when compiling modifier
-
-23/07/2010
-- changed execution order. A variable filter does now run before modifiers on output of variables
-- bugfix use always { and } as delimiter for debug.tpl
-
-
-22/07/2010
-- bugfix in templateExists() method
-
-20/07/2010
-- fixed handling of { strip } tag with whitespaces
-
-15/07/2010
-- bufix {$smarty.template} does include now the relative path, not just filename
-
-===== RC3 =====
-
-
-
-
-15/07/2010
-- make the date_format modifier work also on objects of the DateTime class
-- implementation of parsetrees in the parser to close security holes and remove unwanted empty line in HTML output
-
-08/07/2010
-- bugfix on assigning multidimensional arrays within templates
-- corrected bugfix for truncate modifier
-
-07/07/2010
-- bugfix the truncate modifier needs to check if the string is utf-8 encoded or not
-- bugfix support of script files relative to trusted_dir
-
-06/07/2010
-- create exception on recursive {extends} calls
-- fixed reported line number at "unexpected closing tag " exception
-- bugfix on escape:'mail' modifier
-- drop exception if 'item' variable is equal 'from' variable in {foreach} tag
-
-01/07/2010
-- removed call_user_func_array calls for optimization of compiled code when using registered modifiers and plugins
-
-25/06/2010
-- bugfix escaping " when block tags are used within doublequoted strings
-
-24/06/2010
-- replace internal get_time() calls with standard PHP5 microtime(true) calls in Smarty_Internal_Utility
-- added $smarty->register->templateClass() and $smarty->unregister->templateClass() methods for supporting static classes with namespace
-
-
-22/06/2010
-- allow spaces between typecast and value in template syntax
-- bugfix get correct count of traversables in {foreach} tag
-
-21/06/2010
-- removed use of PHP shortags SMARTY_PHP_PASSTHRU mode
-- improved speed of cache->clear() when a compile_id was specified and use_sub_dirs is true
-
-20/06/2010
-- replace internal get_time() calls with standard PHP5 microtime(true) calls
-- closed security hole when php.ini asp_tags = on
-
-18/06/2010
-- added __toString method to the Smarty_Variable class
-
-
-14/06/2010
-- make handling of Smarty comments followed by newline BC to Smarty2
-
-
-===== RC2 =====
-
-
-
-13/06/2010
-- bugfix Smarty3 did not handle hexadecimals like 0x0F as numerical value
-- bugifx Smarty3 did not accept numerical constants like .1 or 2. (without a leading or trailing digit)
-
-11/06/2010
-- bugfix the lexer did fail on larger {literal} ... {/literal} sections
-
-03/06/2010
-- bugfix on calling template functions like Smarty tags
-
-01/06/2010
-- bugfix on template functions used with template inheritance
-- removed /* vim: set expandtab: */ comments
-- bugfix of auto literal problem introduce with fix of 31/05/2010
-
-31/05/2010
-- bugfix the parser did not allow some smarty variables with special name like $for, $if, $else and others.
-
-27/05/2010
-- bugfix on object chaining using variable properties
-- make scope of {counter} and {cycle} tags again global as in Smarty2
-
-26/05/2010
-- bugfix removed decrepated register_resource call in smarty_internal_template.php
-
-25/05/2010
-- rewrite of template function handling to improve speed
-- bugfix on file dependency when merge_compiled_includes = true
-
-
-16/05/2010
-- bugfix when passing parameter with numeric name like {foo 1='bar' 2='blar'}
-
-14/05/2010
-- bugfix compile new config files if compile_check and force_compile = false
-- added variable static classes names to template syntax
-
-11/05/2010
-- bugfix make sure that the cache resource is loaded in all conditions when template methods getCached... are called externally
-- reverted the change 0f 30/04/2010. With the exception of forward references template functions can be again called by a standard tag.
-
-10/05/2010
-- bugfix on {foreach} and {for} optimizations of 27/04/2010
-
-09/05/2010
-- update of template and config file parser because of minor parser generator bugs
-
-07/05/2010
-- bugfix on {insert}
-
-06/05/2010
-- bugfix when merging compiled templates and objects are passed as parameter of the {include} tag
-
-05/05/2010
-- bugfix on {insert} to cache parameter
-- implementation of $smarty->default_modifiers as in Smarty2
-- bugfix on getTemplateVars method
-
-01/05/2010
-- bugfix on handling of variable method names at object chaning
-
-30/04/2010
-- bugfix when comparing timestamps in sysplugins/smarty_internal_config.php
-- work around of a substr_compare bug in older PHP5 versions
-- bugfix on template inheritance for tag names starting with "block"
-- bugfix on {function} tag with name attribute in doublequoted strings
-- fix to make calling of template functions unambiguously by madatory usage of the {call} tag
-
-===== RC1 =====
-
-27/04/2010
-- change default of $debugging_ctrl to 'NONE'
-- optimization of compiled code of {foreach} and {for} loops
-- change of compiler for config variables
-
-27/04/2010
-- bugfix in $smarty->cache->clear() method. (do not cache template object)
-
-
-17/04/2010
-- security fix in {math} plugin
-
-
-12/04/2010
-- bugfix in smarty_internal_templatecompilerbase (overloaded property)
-- removed parser restrictions in using true,false and null as ID
-
-07/04/2010
-- bugfix typo in smarty_internal_templatecompilerbase
-
-31/03/2010
-- compile locking by touching old compiled files to avoid concurrent compilations
-
-29/03/2010
-- bugfix allow array definitions as modifier parameter
-- bugfix observe compile_check property when loading config files
-- added the template object as third filter parameter
-
-25/03/2010
-- change of utility->compileAllTemplates() log messages
-- bugfix on nocache code in {function} tags
-- new method utility->compileAllConfig() to compile all config files
-
-24/03/2010
-- bugfix on register->modifier() error messages
-
-23/03/2010
-- bugfix on template inheritance when calling multiple child/parent relations
-- bugfix on caching mode SMARTY_CACHING_LIFETIME_SAVED and cache_lifetime = 0
-
-22/03/2010
-- bugfix make directory separator operating system independend in compileAllTemplates()
-
-21/03/2010
-- removed unused code in compileAllTemplates()
-
-19/03/2010
-- bugfix for multiple {/block} tags on same line
-
-17/03/2010
-- bugfix make $smarty->cache->clear() function independent from caching status
-
-16/03/2010
-- bugfix on assign attribute at registered template objects
-- make handling of modifiers on expression BC to Smarty2
-
-15/03/2010
-- bugfix on block plugin calls
-
-11/03/2010
-- changed parsing of <?php and ?> back to Smarty2 behaviour
-
-08/03/2010
-- bugfix on uninitialized properties in smarty_internal_template
-- bugfix on $smarty->disableSecurity()
-
-04/03/2010
-- bugfix allow uppercase chars in registered resource names
-- bugfix on accessing chained objects of static classes
-
-01/03/2010
-- bugfix on nocache code in {block} tags if child template was included by {include}
-
-27/02/2010
-- allow block tags inside double quoted string
-
-26/02/2010
-- cache modified check implemented
-- support of access to a class constant from an object (since PHP 5.3)
-
-24/02/2010
-- bugfix on expressions in doublequoted string enclosed in backticks
-- added security property $static_classes for static class security
-
-18/02/2010
-- bugfix on parsing Smarty tags inside <?xml ... ?>
-- bugfix on truncate modifier
-
-17/02/2010
-- removed restriction that modifiers did require surrounding parenthesis in some cases
-- added {$smarty.block.child} special variable for template inheritance
-
-16/02/2010
-- bugfix on <?xml ... ?> tags for all php_handling modes
-- bugfix on parameter of variablefilter.htmlspecialchars.php plugin
-
-14/02/2010
-- added missing _plugins property in smarty.class.php
-- bugfix $smarty.const... inside doublequoted strings and backticks was compiled into wrong PHP code
-
-12/02/2010
-- bugfix on nested {block} tags
-- changed Smarty special variable $smarty.parent to $smarty.block.parent
-- added support of nested {bock} tags
-
-10/02/2010
-- avoid possible notice on $smarty->cache->clear(...), $smarty->clear_cache(....)
-- allow Smarty tags inside <? ... ?> tags in SMARTY_PHP_QUOTE and SMARTY_PHP_PASSTHRU mode
-- bugfix at new "for" syntax like {for $x=1 to 10 step 2}
-
-09/02/2010
-- added $smarty->_tag_stack for tracing block tag hierarchy
-
-08/02/2010
-- bugfix use template fullpath at §smarty->cache->clear(...), $smarty->clear_cache(....)
-- bugfix of cache filename on extended templates when force_compile=true
-
-07/02/2010
-- bugfix on changes of 05/02/2010
-- preserve line endings type form template source
-- API changes (see README file)
-
-05/02/2010
-- bugfix on modifier and block plugins with same name
-
-02/02/2010
-- retaining newlines at registered functions and function plugins
-
-01/25/2010
-- bugfix cache resource was not loaded when caching was globally off but enabled at a template object
-- added test that $_SERVER['SCRIPT_NAME'] does exist in Smarty.class.php
-
-01/22/2010
-- new method $smarty->createData([$parent]) for creating a data object (required for bugfixes below)
-- bugfix config_load() method now works also on a data object
-- bugfix get_config_vars() method now works also on a data and template objects
-- bugfix clear_config() method now works also on a data and template objects
-
-01/19/2010
-- bugfix on plugins if same plugin was called from a nocache section first and later from a cached section
-
-
-###beta 7###
-
-
-01/17/2010
-- bugfix on $smarty.const... in double quoted strings
-
-01/16/2010
-- internal change of config file lexer/parser on handling of section names
-- bugfix on registered objects (format parameter of register_object was not handled correctly)
-
-01/14/2010
-- bugfix on backslash within single quoted strings
-- bugfix allow absolute filepath for config files
-- bugfix on special Smarty variable $smarty.cookies
-- revert handling of newline on no output tags like {if...}
-- allow special characters in config file section names for Smarty2 BC
-
-01/13/2010
-- bugfix on {if} tags
-
-01/12/2010
-- changed back modifier handling in parser. Some restrictions still apply:
- if modifiers are used in side {if...} expression or in mathematical expressions
- parentheses must be used.
-- bugfix the {function..} tag did not accept the name attribute in double quotes
-- closed possible security hole at <?php ... ?> tags
-- bugfix of config file parser on large config files
-
-
-###beta 6####
-
-01/11/2010
-- added \n to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source
-- added missing support of insert plugins
-- added optional nocache attribute to {block} tags in parent template
-- updated <?php...?> handling supporting now heredocs and newdocs. (thanks to Thue Jnaus Kristensen)
-
-01/09/2010
-- bugfix on nocache {block} tags in parent templates
-
-01/08/2010
-- bugfix on variable filters. filter/nofilter attributes did not work on output statements
-
-01/07/2010
-- bugfix on file dependency at template inheritance
-- bugfix on nocache code at template inheritance
-
-01/06/2010
-- fixed typo in smarty_internal_resource_registered
-- bugfix for custom delimiter at extends resource and {extends} tag
-
-01/05/2010
-- bugfix sha1() calculations at extends resource and some general improvments on sha1() handling
-
-
-01/03/2010
-- internal change on building cache files
-
-01/02/2010
-- update cached_timestamp at the template object after cache file is written to avoid possible side effects
-- use internally always SMARTY_CACHING_LIFETIME_* constants
-
-01/01/2010
-- bugfix for obtaining plugins which must be included (related to change of 12/30/2009)
-- bugfix for {php} tag (trow an exception if allow_php_tag = false)
-
-12/31/2009
-- optimization of generated code for doublequoted strings containing variables
-- rewrite of {function} tag handling
- - can now be declared in an external subtemplate
- - can contain nocache sections (nocache_hash handling)
- - can be called in noccache sections (nocache_hash handling)
- - new {call..} tag to call template functions with a variable name {call name=$foo}
-- fixed nocache_hash handling in merged compiled templates
-
-12/30/2009
-- bugfix for plugins defined in the script as smarty_function_foo
-
-12/29/2009
-- use sha1() for filepath encoding
-- updates on nocache_hash handling
-- internal change on merging some data
-- fixed cache filename for custom resources
-
-12/28/2009
-- update for security fixes
-- make modifier plugins always trusted
-- fixed bug loading modifiers in child template at template inheritance
-
-12/27/2009
---- this is a major update with a couple of internal changes ---
-- new config file lexer/parser (thanks to Thue Jnaus Kristensen)
-- template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen)
-- fix on registered plugins with different type but same name
-- rewrite of plugin handling (optimized execution speed)
-- closed a security hole regarding PHP code injection into cache files
-- fixed bug in clear cache handling
-- Renamed a couple of internal classes
-- code cleanup for merging compiled templates
-- couple of runtime optimizations (still not all done)
-- update of getCachedTimestamp()
-- fixed bug on modifier plugins at nocache output
-
-12/19/2009
-- bugfix on comment lines in config files
-
-12/17/2009
-- bugfix of parent/global variable update at included/merged subtemplates
-- encode final template filepath into filename of compiled and cached files
-- fixed {strip} handling in auto literals
-
-12/16/2009
-- update of changelog
-- added {include file='foo.tpl' inline} inline option to merge compiled code of subtemplate into the calling template
-
-12/14/2009
-- fixed sideefect of last modification (objects in array index did not work anymore)
-
-12/13/2009
-- allow boolean negation ("!") as operator on variables outside {if} tag
-
-12/12/2009
-- bugfix on single quotes inside {function} tag
-- fix short append/prepend attributes in {block} tags
-
-12/11/2009
-- bugfix on clear_compiled_tpl (avoid possible warning)
-
-12/10/2009
-- bugfix on {function} tags and template inheritance
-
-12/05/2009
-- fixed problem when a cached file was fetched several times
-- removed unneeded lexer code
-
-12/04/2009
-- added max attribute to for loop
-- added security mode allow_super_globals
-
-12/03/2009
-- template inheritance: child templates can now call functions defined by the {function} tag in the parent template
-- added {for $foo = 1 to 5 step 2} syntax
-- bugfix for {$foo.$x.$y.$z}
-
-12/01/2009
-- fixed parsing of names of special formated tags like if,elseif,while,for,foreach
-- removed direct access to constants in templates because of some syntax problems
-- removed cache resource plugin for mysql from the distribution
-- replaced most hard errors (exceptions) by softerrors(trigger_error) in plugins
-- use $template_class property for template class name when compiling {include},{eval} and {extends} tags
-
-11/30/2009
-- map 'true' to SMARTY_CACHING_LIFETIME_CURRENT for the $smarty->caching parameter
-- allow {function} tags within {block} tags
-
-11/28/2009
-- ignore compile_id at debug template
-- added direct access to constants in templates
-- some lexer/parser optimizations
-
-11/27/2009
-- added cache resource MYSQL plugin
-
-11/26/2009
-- bugfix on nested doublequoted strings
-- correct line number on unknown tag error message
-- changed {include} compiled code
-- fix on checking dynamic varibales with error_unassigned = true
-
-11/25/2009
-- allow the following writing for boolean: true, TRUE, True, false, FALSE, False
-- {strip} tag functionality rewritten
-
-11/24/2009
-- bugfix for $smarty->config_overwrite = false
-
-11/23/2009
-- suppress warnings on unlink caused by race conditions
-- correct line number on unknown tag error message
-
-------- beta 5
-11/23/2009
-- fixed configfile parser for text starting with a numeric char
-- the default_template_handler_func may now return a filepath to a template source
-
-11/20/2009
-- bugfix for empty config files
-- convert timestamps of registered resources to integer
-
-11/19/2009
-- compiled templates are no longer touched with the filemtime of template source
-
-11/18/2009
-- allow integer as attribute name in plugin calls
-
-------- beta 4
-11/18/2009
-- observe umask settings when setting file permissions
-- avoide unneeded cache file creation for subtemplates which did occur in some situations
-- make $smarty->_current_file available during compilation for Smarty2 BC
-
-11/17/2009
-- sanitize compile_id and cache_id (replace illegal chars with _)
-- use _dir_perms and _file_perms properties at file creation
-- new constant SMARTY_RESOURCE_DATE_FORMAT (default '%b %e, %Y') which is used as default format in modifier date_format
-- added {foreach $array as $key=>$value} syntax
-- renamed extend tag and resource to extends: {extends file='foo.tol'} , $smarty->display('extends:foo.tpl|bar.tpl);
-- bugfix cycle plugin
-
-11/15/2009
-- lexer/parser optimizations on quoted strings
-
-11/14/2009
-- bugfix on merging compiled templates when source files got removed or renamed.
-- bugfix modifiers on registered object tags
-- fixed locaion where outputfilters are running
-- fixed config file definitions at EOF
-- fix on merging compiled templates with nocache sections in nocache includes
-- parser could run into a PHP error on wrong file attribute
-
-11/12/2009
-- fixed variable filenames in {include_php} and {insert}
-- added scope to Smarty variables in the {block} tag compiler
-- fix on nocache code in child {block} tags
-
-11/11/2009
-- fixed {foreachelse}, {forelse}, {sectionelse} compiled code at nocache variables
-- removed checking for reserved variables
-- changed debugging handling
-
-11/10/2009
-- fixed preg_qoute on delimiters
-
-11/09/2009
-- lexer/parser bugfix
-- new SMARTY_SPL_AUTOLOAD constant to control the autoloader option
-- bugfix for {function} block tags in included templates
-
-11/08/2009
-- fixed alphanumeric array index
-- bugfix on complex double quoted strings
-
-11/05/2009
-- config_load method can now be called on data and template objects
-
-11/04/2009
-- added typecasting support for template variables
-- bugfix on complex indexed special Smarty variables
-
-11/03/2009
-- fixed parser error on objects with special smarty vars
-- fixed file dependency for {incude} inside {block} tag
-- fixed not compiling on non existing compiled templates when compile_check = false
-- renamed function names of autoloaded Smarty methods to Smarty_Method_....
-- new security_class property (default is Smarty_Security)
-
-11/02/2009
-- added neq,lte,gte,mod as aliases to if conditions
-- throw exception on illegal Smarty() constructor calls
-
-10/31/2009
-- change of filenames in sysplugins folder for internal spl_autoload function
-- lexer/parser changed for increased compilation speed
-
-10/27/2009
-- fixed missing quotes in include_php.php
-
-10/27/2009
-- fixed typo in method.register_resource
-- pass {} through as literal
-
-10/26/2009
-- merge only compiled subtemplates into the compiled code of the main template
-
-10/24/2009
-- fixed nocache vars at internal block tags
-- fixed merging of recursive includes
-
-10/23/2009
-- fixed nocache var problem
-
-10/22/2009
-- fix trimwhitespace outputfilter parameter
-
-10/21/2009
-- added {$foo++}{$foo--} syntax
-- buxfix changed PHP "if (..):" to "if (..){" because of possible bad code when concenating PHP tags
-- autoload Smarty internal classes
-- fixed file dependency for config files
-- some code optimizations
-- fixed function definitions on some autoloaded methods
-- fixed nocache variable inside if condition of {if} tag
-
-10/20/2009
-- check at compile time for variable filter to improve rendering speed if no filter is used
-- fixed bug at combination of {elseif} tag and {...} in double quoted strings of static class parameter
-
-10/19/2009
-- fixed compiled template merging on variable double quoted strings as name
-- fixed bug in caching mode 2 and cache_lifetime -1
-- fixed modifier support on block tags
-
-10/17/2009
-- remove ?>\n<?php and ?><?php sequences from compiled template
-
-10/15/2009
-- buxfix on assigning array elements inside templates
-- parser bugfix on array access
-
-10/15/2009
-- allow bit operator '&' inside {if} tag
-- implementation of ternary operator
-
-10/13/2009
-- do not recompile evaluated templates if reused just with other data
-- recompile config files when config properties did change
-- some lexer/parser otimizations
-
-10/11/2009
-- allow {block} tags inside included templates
-- bugfix for resource plugins in Smarty2 format
-- some optimizations of internal.template.php
-
-10/11/2009
-- fixed bug when template with same name is used with different data objects
-- fixed bug with double quoted name attribute at {insert} tag
-- reenabled assign_by_ref and append_by_ref methods
-
-10/07/2009
-- removed block nesting checks for {capture}
-
-10/05/2009
-- added support of "isinstance" to {if} tag
-
-10/03/2009
-- internal changes to improve performance
-- fix registering of filters for classes
-
-10/01/2009
-- removed default timezone setting
-- reactivated PHP resource for simple PHP templates. Must set allow_php_templates = true to enable
-- {PHP} tag can be enabled by allow_php_tag = true
-
-09/30/2009
-- fixed handling template_exits method for all resource types
-- bugfix for other cache resources than file
-- the methods assign_by_ref is now wrapped to assign, append_by_ref to append
-- allow arrays of variables pass in display, fetch and createTemplate calls
- $data = array('foo'=>'bar','foo2'=>'blar');
- $smarty->display('my.tpl',$data);
-
-09/29/2009
-- changed {php} tag handling
-- removed support of Smarty::instance()
-- removed support of PHP resource type
-- improved execution speed of {foreach} tags
-- fixed bug in {section} tag
-
-09/23/2009
-- improvements and bugfix on {include} tag handling
-NOTICE: existing compiled template and cache files must be deleted
-
-09/19/2009
-- replace internal "eval()" calls by "include" during rendering process
-- speed improvment for templates which have included subtemplates
- the compiled code of included templates is merged into the compiled code of the parent template
-- added logical operator "xor" for {if} tag
-- changed parameter ordering for Smarty2 BC
- fetch($template, $cache_id = null, $compile_id = null, $parent = null)
- display($template, $cache_id = null, $compile_id = null, $parent = null)
- createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
-- property resource_char_set is now replaced by constant SMARTY_RESOURCE_CHAR_SET
-- fixed handling of classes in registered blocks
-- speed improvement of lexer on text sections
-
-09/01/2009
-- dropped nl2br as plugin
-- added '<>' as comparission operator in {if} tags
-- cached caching_lifetime property to cache_liftime for backward compatibility with Smarty2.
- {include} optional attribute is also now cache_lifetime
-- fixed trigger_error method (moved into Smarty class)
-- version is now Beta!!!
-
-
-08/30/2009
-- some speed optimizations on loading internal plugins
-
-
-08/29/2009
-- implemented caching of registered Resources
-- new property 'auto_literal'. if true(default) '{ ' and ' }' interpreted as literal, not as Smarty delimiter
-
-
-08/28/2009
-- Fix on line breaks inside {if} tags
-
-08/26/2009
-- implemented registered resources as in Smarty2. NOTE: caching does not work yet
-- new property 'force_cache'. if true it forces the creation of a new cache file
-- fixed modifiers on arrays
-- some speed optimization on loading internal classes
-
-
-08/24/2009
-- fixed typo in lexer definition for '!==' operator
-- bugfix - the ouput of plugins was not cached
-- added global variable SCRIPT_NAME
-
-08/21/2009
-- fixed problems whitespace in conjuction with custom delimiters
-- Smarty tags can now be used as value anywhere
-
-08/18/2009
-- definition of template class name moded in internal.templatebase.php
-- whitespace parser changes
-
-08/12/2009
-- fixed parser problems
-
-08/11/2009
-- fixed parser problems with custom delimiter
-
-08/10/2009
-- update of mb support in plugins
-
-
-08/09/2009
-- fixed problems with doublequoted strings at name attribute of {block} tag
-- bugfix at scope attribute of {append} tag
-
-08/08/2009
-- removed all internal calls of Smarty::instance()
-- fixed code in double quoted strings
-
-08/05/2009
-- bugfix mb_string support
-- bugfix of \n.\t etc in double quoted strings
-
-07/29/2009
-- added syntax for variable config vars like #$foo#
-
-07/28/2009
-- fixed parsing of $smarty.session vars containing objects
-
-07/22/2009
-- fix of "$" handling in double quoted strings
-
-07/21/2009
-- fix that {$smarty.current_dir} return correct value within {block} tags.
-
-07/20/2009
-- drop error message on unmatched {block} {/block} pairs
-
-07/01/2009
-- fixed smarty_function_html_options call in plugin function.html_select_date.php (missing ,)
-
-06/24/2009
-- fixed smarty_function_html_options call in plugin function.html_select_date.php
-
-06/22/2009
-- fix on \n and spaces inside smarty tags
-- removed request_use_auto_globals propert as it is no longer needed because Smarty 3 will always run under PHP 5
-
-
-06/18/2009
-- fixed compilation of block plugins when caching enabled
-- added $smarty.current_dir which returns the current working directory
-
-06/14/2009
-- fixed array access on super globals
-- allow smarty tags within xml tags
-
-06/13/2009
-- bugfix at extend resource: create unique files for compiled template and cache for each combination of template files
-- update extend resource to handle appen and prepend block attributes
-- instantiate classes of plugins instead of calling them static
-
-06/03/2009
-- fixed repeat at block plugins
-
-05/25/2009
-- fixed problem with caching of compiler plugins
-
-05/14/2009
-- fixed directory separator handling
-
-05/09/2009
-- syntax change for stream variables
-- fixed bug when using absolute template filepath and caching
-
-05/08/2009
-- fixed bug of {nocache} tag in included templates
-
-05/06/2009
-- allow that plugins_dir folder names can end without directory separator
-
-05/05/2009
-- fixed E_STRICT incompabilities
-- {function} tag bug fix
-- security policy definitions have been moved from plugins folder to file Security.class.php in libs folder
-- added allow_super_global configuration to security
-
-04/30/2009
-- functions defined with the {function} tag now always have global scope
-
-04/29/2009
-- fixed problem with directory setter methods
-- allow that cache_dir can end without directory separator
-
-04/28/2009
-- the {function} tag can no longer overwrite standard smarty tags
-- inherit functions defined by the {fuction} tag into subtemplates
-- added {while <statement>} sytax to while tag
-
-04/26/2009
-- added trusted stream checking to security
-- internal changes at file dependency check for caching
-
-04/24/2009
-- changed name of {template} tag to {function}
-- added new {template} tag
-
-04/23/2009
-- fixed access of special smarty variables from included template
-
-04/22/2009
-- unified template stream syntax with standard Smarty resource syntax $smarty->display('mystream:mytemplate')
-
-04/21/2009
-- change of new style syntax for forach. Now: {foreach $array as $var} like in PHP
-
-04/20/2009
-- fixed "$foo.bar ..." variable replacement in double quoted strings
-- fixed error in {include} tag with variable file attribute
-
-04/18/2009
-- added stream resources ($smarty->display('mystream://mytemplate'))
-- added stream variables {$mystream:myvar}
-
-04/14/2009
-- fixed compile_id handling on {include} tags
-- fixed append/prepend attributes in {block} tag
-- added {if 'expression' is in 'array'} syntax
-- use crc32 as hash for compiled config files.
-
-04/13/2009
-- fixed scope problem with parent variables when appending variables within templates.
-- fixed code for {block} without childs (possible sources for notice errors removed)
-
-04/12/2009
-- added append and prepend attribute to {block} tag
-
-04/11/2009
-- fixed variables in 'file' attribute of {extend} tag
-- fixed problems in modifiers (if mb string functions not present)
-
-04/10/2009
-- check if mb string functions available otherwise fallback to normal string functions
-- added global variable scope SMARTY_GLOBAL_SCOPE
-- enable 'variable' filter by default
-- fixed {$smarty.block.parent.foo}
-- implementation of a 'variable' filter as replacement for default modifier
-
-04/09/2009
-- fixed execution of filters defined by classes
-- compile the always the content of {block} tags to make shure that the filters are running over it
-- syntax corrections on variable object property
-- syntax corrections on array access in dot syntax
-
-04/08/2009
-- allow variable object property
-
-04/07/2009
-- changed variable scopes to SMARTY_LOCAL_SCOPE, SMARTY_PARENT_SCOPE, SMARTY_ROOT_SCOPE to avoid possible conflicts with user constants
-- Smarty variable global attribute replaced with scope attribute
-
-04/06/2009
-- variable scopes LOCAL_SCOPE, PARENT_SCOPE, ROOT_SCOPE
-- more getter/setter methods
-
-04/05/2009
-- replaced new array looping syntax {for $foo in $array} with {foreach $foo in $array} to avoid confusion
-- added append array for short form of assign {$foo[]='bar'} and allow assignments to nested arrays {$foo['bla']['blue']='bar'}
-
-04/04/2009
-- make output of template default handlers cachable and save compiled source
-- some fixes on yesterdays update
-
-04/03/2006
-- added registerDefaultTemplateHandler method and functionallity
-- added registerDefaultPluginHandler method and functionallity
-- added {append} tag to extend Smarty array variabled
-
-04/02/2009
-- added setter/getter methods
-- added $foo@first and $foo@last properties at {for} tag
-- added $set_timezone (true/false) property to setup optionally the default time zone
-
-03/31/2009
-- bugfix smarty.class and internal.security_handler
-- added compile_check configuration
-- added setter/getter methods
-
-03/30/2009
-- added all major setter/getter methods
-
-03/28/2009
-- {block} tags can be nested now
-- md5 hash function replace with crc32 for speed optimization
-- file order for exted resource inverted
-- clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer
-
-03/27/2009
-- added extend resource
-
-03/26/2009
-- fixed parser not to create error on `word` in double quoted strings
-- allow PHP array(...)
-- implemented $smarty.block.name.parent to access parent block content
-- fixed smarty.class
-
-
-03/23/2009
-- fixed {foreachelse} and {forelse} tags
-
-03/22/2009
-- fixed possible sources for notice errors
-- rearrange SVN into distribution and development folders
-
-03/21/2009
-- fixed exceptions in function plugins
-- fixed notice error in Smarty.class.php
-- allow chained objects to span multiple lines
-- fixed error in modifiers
-
-03/20/2009
-- moved /plugins folder into /libs folder
-- added noprint modifier
-- autoappend a directory separator if the xxxxx_dir definition have no trailing one
-
-03/19/2009
-- allow array definition as modifier parameter
-- changed modifier to use multi byte string funktions.
-
-03/17/2009
-- bugfix
-
-03/15/2009
-- added {include_php} tag for BC
-- removed @ error suppression
-- bugfix fetch did always repeat output of first call when calling same template several times
-- PHPunit tests extended
-
-03/13/2009
-- changed block syntax to be Smarty like {block:titel} -> {block name=titel}
-- compiling of {block} and {extend} tags rewriten for better performance
-- added special Smarty variable block ($smarty.block.foo} returns the parent definition of block foo
-- optimization of {block} tag compiled code.
-- fixed problem with escaped double quotes in double quoted strings
-
-03/12/2009
-- added support of template inheritance by {extend } and {block } tags.
-- bugfix comments within literals
-- added scope attribuie to {include} tag
-
-03/10/2009
-- couple of bugfixes and improvements
-- PHPunit tests extended
-
-03/09/2009
-- added support for global template vars. {assign_global...} $smarty->assign_global(...)
-- added direct_access_security
-- PHPunit tests extended
-- added missing {if} tag conditions like "is div by" etc.
-
-03/08/2009
-- splitted up the Compiler class to make it easier to use a coustom compiler
-- made default plugins_dir relative to Smarty root and not current working directory
-- some changes to make the lexer parser better configurable
-- implemented {section} tag for Smarty2 BC
-
-03/07/2009
-- fixed problem with comment tags
-- fixed problem with #xxxx in double quoted string
-- new {while} tag implemented
-- made lexer and paser class configurable as $smarty property
-- Smarty method get_template_vars implemented
-- Smarty method get_registered_object implemented
-- Smarty method trigger_error implemented
-- PHPunit tests extended
-
-03/06/2009
-- final changes on config variable handling
-- parser change - unquoted strings will by be converted into single quoted strings
-- PHPunit tests extended
-- some code cleanup
-- fixed problem on catenate strings with expression
-- update of count_words modifier
-- bugfix on comment tags
-
-
-03/05/2009
-- bugfix on <?xml...> tag with caching enabled
-- changes on exception handling (by Monte)
-
-03/04/2009
-- added support for config variables
-- bugfix on <?xml...> tag
-
-03/02/2009
-- fixed unqouted strings within modifier parameter
-- bugfix parsing of mofifier parameter
-
-03/01/2009
-- modifier chaining works now as in Smarty2
-
-02/28/2009
-- changed handling of unqouted strings
-
-02/26/2009
-- bugfix
-- changed $smarty.capture.foo to be global for Smarty2 BC.
-
-02/24/2009
-- bugfix {php} {/php} tags for backward compatibility
-- bugfix for expressions on arrays
-- fixed usage of "null" value
-- added $smarty.foreach.foo.first and $smarty.foreach.foo.last
-
-02/06/2009
-- bugfix for request variables without index for example $smarty.get
-- experimental solution for variable functions in static class
-
-02/05/2009
-- update of popup plugin
-- added config variables to template parser (load config functions still missing)
-- parser bugfix for empty quoted strings
-
-02/03/2009
-- allow array of objects as static class variabales.
-- use htmlentities at source output at template errors.
-
-02/02/2009
-- changed search order on modifiers to look at plugins folder first
-- parser bug fix for modifier on array elements $foo.bar|modifier
-- parser bug fix on single quoted srings
-- internal: splitted up compiler plugin files
-
-02/01/2009
-- allow method chaining on static classes
-- special Smarty variables $smarty.... implemented
-- added {PHP} {/PHP} tags for backward compatibility
-
-01/31/2009
-- added {math} plugin for Smarty2 BC
-- added template_exists method
-- changed Smarty3 method enable_security() to enableSecurity() to follow camelCase standards
-
-01/30/2009
-- bugfix in single quoted strings
-- changed syntax for variable property access from $foo:property to $foo@property because of ambiguous syntax at modifiers
-
-01/29/2009
-- syntax for array definition changed from (1,2,3) to [1,2,3] to remove ambiguous syntax
-- allow {for $foo in [1,2,3]} syntax
-- bugfix in double quoted strings
-- allow <?xml...?> tags in template even if short_tags are enabled
-
-01/28/2009
-- fixed '!==' if condition.
-
-01/28/2009
-- added support of {strip} {/strip} tag.
-
-01/27/2009
-- bug fix on backticks in double quoted strings at objects
-
-01/25/2009
-- Smarty2 modfiers added to SVN
-
-01/25/2009
-- bugfix allow arrays at object properties in Smarty syntax
-- the template object is now passed as additional parameter at plugin calls
-- clear_compiled_tpl method completed
-
-01/20/2009
-- access to class constants implemented ( class::CONSTANT )
-- access to static class variables implemented ( class::$variable )
-- call of static class methods implemented ( class::method() )
-
-01/16/2009
-- reallow leading _ in variable names {$_var}
-- allow array of objects {$array.index->method()} syntax
-- finished work on clear_cache and clear_cache_all methods
-
-01/11/2009
-- added support of {literal} tag
-- added support of {ldelim} and {rdelim} tags
-- make code compatible to run with E_STRICT error setting
-
-01/08/2009
-- moved clear_assign and clear_all_assign to internal.templatebase.php
-- added assign_by_ref, append and append_by_ref methods
-
-01/02/2009
-- added load_filter method
-- fished work on filter handling
-- optimization of plugin loading
-
-12/30/2008
-- added compiler support of registered object
-- added backtick support in doubled quoted strings for backward compatibility
-- some minor bug fixes and improvments
-
-12/23/2008
-- fixed problem of not working "not" operator in if-expressions
-- added handling of compiler function plugins
-- finished work on (un)register_compiler_function method
-- finished work on (un)register_modifier method
-- plugin handling from plugins folder changed for modifier plugins
- deleted - internal.modifier.php
-- added modifier chaining to parser
-
-12/17/2008
-- finished (un)register_function method
-- finished (un)register_block method
-- added security checking for PHP functions in PHP templates
-- plugin handling from plugins folder rewritten
- new - internal.plugin_handler.php
- deleted - internal.block.php
- deleted - internal.function.php
-- removed plugin checking from security handler
-
-12/16/2008
-
-- new start of this change_log file
diff --git a/library/Smarty/libs/Autoloader.php b/library/Smarty/libs/Autoloader.php
deleted file mode 100644
index 7d0c388a6..000000000
--- a/library/Smarty/libs/Autoloader.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-/**
- * Smarty Autoloader
- *
- * @package Smarty
- */
-
-/**
- * Smarty Autoloader
- *
- * @package Smarty
- * @author Uwe Tews
- * Usage:
- * require_once '...path/Autoloader.php';
- * Smarty_Autoloader::register();
- * $smarty = new Smarty();
- * Note: This autoloader is not needed if you use Composer.
- * Composer will automatically add the classes of the Smarty package to it common autoloader.
- */
-class Smarty_Autoloader
-{
- /**
- * Filepath to Smarty root
- *
- * @var string
- */
- public static $SMARTY_DIR = '';
-
- /**
- * Filepath to Smarty internal plugins
- *
- * @var string
- */
- public static $SMARTY_SYSPLUGINS_DIR = '';
-
- /**
- * Array with Smarty core classes and their filename
- *
- * @var array
- */
- public static $rootClasses = array('smarty' => 'Smarty.class.php', 'smartybc' => 'SmartyBC.class.php',);
-
- /**
- * Registers Smarty_Autoloader backward compatible to older installations.
- *
- * @param bool $prepend Whether to prepend the autoloader or not.
- */
- public static function registerBC($prepend = false)
- {
- /**
- * register the class autoloader
- */
- if (!defined('SMARTY_SPL_AUTOLOAD')) {
- define('SMARTY_SPL_AUTOLOAD', 0);
- }
- if (SMARTY_SPL_AUTOLOAD &&
- set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
- ) {
- $registeredAutoLoadFunctions = spl_autoload_functions();
- if (!isset($registeredAutoLoadFunctions['spl_autoload'])) {
- spl_autoload_register();
- }
- } else {
- self::register($prepend);
- }
- }
-
- /**
- * Registers Smarty_Autoloader as an SPL autoloader.
- *
- * @param bool $prepend Whether to prepend the autoloader or not.
- */
- public static function register($prepend = false)
- {
- self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : dirname(__FILE__) . DIRECTORY_SEPARATOR;
- self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
- self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
- if (version_compare(phpversion(), '5.3.0', '>=')) {
- spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
- } else {
- spl_autoload_register(array(__CLASS__, 'autoload'));
- }
- }
-
- /**
- * Handles auto loading of classes.
- *
- * @param string $class A class name.
- */
- public static function autoload($class)
- {
- $_class = strtolower($class);
- $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
- if (strpos($_class, 'smarty_internal_') === 0) {
- if (strpos($_class, 'smarty_internal_compile_') === 0) {
- if (is_file($file)) {
- require $file;
- }
- return;
- }
- @include $file;
- return;
- }
- if (preg_match('/^(smarty_(((template_(source|config|cache|compiled|resource_base))|((cached|compiled)?resource)|(variable|security)))|(smarty(bc)?)$)/',
- $_class, $match)) {
- if (!empty($match[3])) {
- @include $file;
- return;
- } elseif (!empty($match[9]) && isset(self::$rootClasses[$_class])) {
- $file = self::$rootClasses[$_class];
- require $file;
- return;
- }
- }
- if (0 !== strpos($_class, 'smarty')) {
- return;
- }
- if (is_file($file)) {
- require $file;
- return;
- }
- return;
- }
-}
diff --git a/library/Smarty/libs/Smarty.class.php b/library/Smarty/libs/Smarty.class.php
deleted file mode 100644
index a029f942e..000000000
--- a/library/Smarty/libs/Smarty.class.php
+++ /dev/null
@@ -1,1482 +0,0 @@
-<?php
-/**
- * Project: Smarty: the PHP compiling template engine
- * File: Smarty.class.php
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * For questions, help, comments, discussion, etc., please join the
- * Smarty mailing list. Send a blank e-mail to
- * smarty-discussion-subscribe@googlegroups.com
- *
- * @link http://www.smarty.net/
- * @copyright 2015 New Digital Group, Inc.
- * @copyright 2015 Uwe Tews
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- * @author Rodney Rehm
- * @package Smarty
- * @version 3.1.29
- */
-
-/**
- * define shorthand directory separator constant
- */
-if (!defined('DS')) {
- define('DS', DIRECTORY_SEPARATOR);
-}
-
-/**
- * set SMARTY_DIR to absolute path to Smarty library files.
- * Sets SMARTY_DIR only if user application has not already defined it.
- */
-if (!defined('SMARTY_DIR')) {
- define('SMARTY_DIR', dirname(__FILE__) . DS);
-}
-
-/**
- * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins.
- * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it.
- */
-if (!defined('SMARTY_SYSPLUGINS_DIR')) {
- define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS);
-}
-if (!defined('SMARTY_PLUGINS_DIR')) {
- define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);
-}
-if (!defined('SMARTY_MBSTRING')) {
- define('SMARTY_MBSTRING', function_exists('mb_get_info'));
-}
-if (!defined('SMARTY_RESOURCE_CHAR_SET')) {
- // UTF-8 can only be done properly when mbstring is available!
- /**
- * @deprecated in favor of Smarty::$_CHARSET
- */
- define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1');
-}
-if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) {
- /**
- * @deprecated in favor of Smarty::$_DATE_FORMAT
- */
- define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y');
-}
-
-/**
- * Try loading the Smarty_Internal_Data class
- * If we fail we must load Smarty's autoloader.
- * Otherwise we may have a global autoloader like Composer
- */
-if (!class_exists('Smarty_Autoloader', false)) {
- if (!class_exists('Smarty_Internal_Data', true)) {
- require_once dirname(__FILE__) . '/Autoloader.php';
- Smarty_Autoloader::registerBC();
- }
-}
-
-/**
- * Load always needed external class files
- */
-if (!class_exists('Smarty_Internal_Data', false)) {
- require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
-}
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php';
-require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php';
-
-/**
- * This is the main Smarty class
- *
- * @package Smarty
- *
- * @method int clearAllCache(int $exp_time = null, string $type = null)
- * @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null)
- * @method int compileAllTemplates(Smarty $smarty, string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
- * @method int compileAllConfig(Smarty $smarty, string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
- *
- */
-class Smarty extends Smarty_Internal_TemplateBase
-{
- /**#@+
- * constant definitions
- */
-
- /**
- * smarty version
- */
- const SMARTY_VERSION = '3.1.29';
-
- /**
- * define variable scopes
- */
- const SCOPE_LOCAL = 0;
-
- const SCOPE_PARENT = 2;
-
- const SCOPE_TPL_ROOT = 4;
-
- const SCOPE_ROOT = 8;
-
- const SCOPE_SMARTY = 16;
-
- const SCOPE_GLOBAL = 32;
-
- const SCOPE_BUBBLE_UP = 64;
-
- /**
- * define caching modes
- */
- const CACHING_OFF = 0;
-
- const CACHING_LIFETIME_CURRENT = 1;
-
- const CACHING_LIFETIME_SAVED = 2;
-
- /**
- * define constant for clearing cache files be saved expiration dates
- */
- const CLEAR_EXPIRED = - 1;
-
- /**
- * define compile check modes
- */
- const COMPILECHECK_OFF = 0;
-
- const COMPILECHECK_ON = 1;
-
- const COMPILECHECK_CACHEMISS = 2;
-
- /**
- * define debug modes
- */
- const DEBUG_OFF = 0;
-
- const DEBUG_ON = 1;
-
- const DEBUG_INDIVIDUAL = 2;
-
- /**
- * modes for handling of "<?php ... ?>" tags in templates.
- */
- const PHP_PASSTHRU = 0; //-> print tags as plain text
-
- const PHP_QUOTE = 1; //-> escape tags as entities
-
- const PHP_REMOVE = 2; //-> escape tags as entities
-
- const PHP_ALLOW = 3; //-> escape tags as entities
-
- /**
- * filter types
- */
- const FILTER_POST = 'post';
-
- const FILTER_PRE = 'pre';
-
- const FILTER_OUTPUT = 'output';
-
- const FILTER_VARIABLE = 'variable';
-
- /**
- * plugin types
- */
- const PLUGIN_FUNCTION = 'function';
-
- const PLUGIN_BLOCK = 'block';
-
- const PLUGIN_COMPILER = 'compiler';
-
- const PLUGIN_MODIFIER = 'modifier';
-
- const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
-
- /**
- * Resource caching modes
- */
- const RESOURCE_CACHE_OFF = 0;
-
- const RESOURCE_CACHE_AUTOMATIC = 1; // cache template objects by rules
-
- const RESOURCE_CACHE_TEMPLATE = 2; // cache all template objects
-
- const RESOURCE_CACHE_ON = 4; // cache source and compiled resources
-
- /**#@-*/
-
- /**
- * assigned global tpl vars
- */
- public static $global_tpl_vars = array();
-
- /**
- * error handler returned by set_error_handler() in Smarty::muteExpectedErrors()
- */
- public static $_previous_error_handler = null;
-
- /**
- * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors()
- */
- public static $_muted_directories = array();
-
- /**
- * Flag denoting if Multibyte String functions are available
- */
- public static $_MBSTRING = SMARTY_MBSTRING;
-
- /**
- * The character set to adhere to (e.g. "UTF-8")
- */
- public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET;
-
- /**
- * The date format to be used internally
- * (accepts date() and strftime())
- */
- public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT;
-
- /**
- * Flag denoting if PCRE should run in UTF-8 mode
- */
- public static $_UTF8_MODIFIER = 'u';
-
- /**
- * Flag denoting if operating system is windows
- */
- public static $_IS_WINDOWS = false;
-
- /**#@+
- * variables
- */
-
- /**
- * auto literal on delimiters with whitespace
- *
- * @var boolean
- */
- public $auto_literal = true;
-
- /**
- * display error on not assigned variables
- *
- * @var boolean
- */
- public $error_unassigned = false;
-
- /**
- * look up relative file path in include_path
- *
- * @var boolean
- */
- public $use_include_path = false;
-
- /**
- * template directory
- *
- * @var array
- */
- private $template_dir = array('./templates/');
-
- /**
- * joined template directory string used in cache keys
- *
- * @var string
- */
- public $_joined_template_dir = null;
-
- /**
- * joined config directory string used in cache keys
- *
- * @var string
- */
- public $_joined_config_dir = null;
-
- /**
- * default template handler
- *
- * @var callable
- */
- public $default_template_handler_func = null;
-
- /**
- * default config handler
- *
- * @var callable
- */
- public $default_config_handler_func = null;
-
- /**
- * default plugin handler
- *
- * @var callable
- */
- public $default_plugin_handler_func = null;
-
- /**
- * compile directory
- *
- * @var string
- */
- private $compile_dir = './templates_c/';
-
- /**
- * plugins directory
- *
- * @var array
- */
- private $plugins_dir = null;
-
- /**
- * cache directory
- *
- * @var string
- */
- private $cache_dir = './cache/';
-
- /**
- * config directory
- *
- * @var array
- */
- private $config_dir = array('./configs/');
-
- /**
- * force template compiling?
- *
- * @var boolean
- */
- public $force_compile = false;
-
- /**
- * check template for modifications?
- *
- * @var boolean
- */
- public $compile_check = true;
-
- /**
- * use sub dirs for compiled/cached files?
- *
- * @var boolean
- */
- public $use_sub_dirs = false;
-
- /**
- * allow ambiguous resources (that are made unique by the resource handler)
- *
- * @var boolean
- */
- public $allow_ambiguous_resources = false;
-
- /**
- * merge compiled includes
- *
- * @var boolean
- */
- public $merge_compiled_includes = false;
-
- /**
- * force cache file creation
- *
- * @var boolean
- */
- public $force_cache = false;
-
- /**
- * template left-delimiter
- *
- * @var string
- */
- public $left_delimiter = "{";
-
- /**
- * template right-delimiter
- *
- * @var string
- */
- public $right_delimiter = "}";
-
- /**#@+
- * security
- */
- /**
- * class name
- * This should be instance of Smarty_Security.
- *
- * @var string
- * @see Smarty_Security
- */
- public $security_class = 'Smarty_Security';
-
- /**
- * implementation of security class
- *
- * @var Smarty_Security
- */
- public $security_policy = null;
-
- /**
- * controls handling of PHP-blocks
- *
- * @var integer
- */
- public $php_handling = self::PHP_PASSTHRU;
-
- /**
- * controls if the php template file resource is allowed
- *
- * @var bool
- */
- public $allow_php_templates = false;
-
- /**#@-*/
- /**
- * debug mode
- * Setting this to true enables the debug-console.
- *
- * @var boolean
- */
- public $debugging = false;
-
- /**
- * This determines if debugging is enable-able from the browser.
- * <ul>
- * <li>NONE => no debugging control allowed</li>
- * <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
- * </ul>
- *
- * @var string
- */
- public $debugging_ctrl = 'NONE';
-
- /**
- * Name of debugging URL-param.
- * Only used when $debugging_ctrl is set to 'URL'.
- * The name of the URL-parameter that activates debugging.
- *
- * @var string
- */
- public $smarty_debug_id = 'SMARTY_DEBUG';
-
- /**
- * Path of debug template.
- *
- * @var string
- */
- public $debug_tpl = null;
-
- /**
- * When set, smarty uses this value as error_reporting-level.
- *
- * @var int
- */
- public $error_reporting = null;
-
- /**#@+
- * config var settings
- */
-
- /**
- * Controls whether variables with the same name overwrite each other.
- *
- * @var boolean
- */
- public $config_overwrite = true;
-
- /**
- * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
- *
- * @var boolean
- */
- public $config_booleanize = true;
-
- /**
- * Controls whether hidden config sections/vars are read from the file.
- *
- * @var boolean
- */
- public $config_read_hidden = false;
-
- /**#@-*/
-
- /**#@+
- * resource locking
- */
-
- /**
- * locking concurrent compiles
- *
- * @var boolean
- */
- public $compile_locking = true;
-
- /**
- * Controls whether cache resources should use locking mechanism
- *
- * @var boolean
- */
- public $cache_locking = false;
-
- /**
- * seconds to wait for acquiring a lock before ignoring the write lock
- *
- * @var float
- */
- public $locking_timeout = 10;
-
- /**#@-*/
-
- /**
- * resource type used if none given
- * Must be an valid key of $registered_resources.
- *
- * @var string
- */
- public $default_resource_type = 'file';
-
- /**
- * caching type
- * Must be an element of $cache_resource_types.
- *
- * @var string
- */
- public $caching_type = 'file';
-
- /**
- * config type
- *
- * @var string
- */
- public $default_config_type = 'file';
-
- /**
- * enable resource caching
- *
- * @var bool
- */
- public $resource_cache_mode = 1;
-
- /**
- * check If-Modified-Since headers
- *
- * @var boolean
- */
- public $cache_modified_check = false;
-
- /**
- * registered plugins
- *
- * @var array
- */
- public $registered_plugins = array();
-
- /**
- * registered objects
- *
- * @var array
- */
- public $registered_objects = array();
-
- /**
- * registered classes
- *
- * @var array
- */
- public $registered_classes = array();
-
- /**
- * registered filters
- *
- * @var array
- */
- public $registered_filters = array();
-
- /**
- * registered resources
- *
- * @var array
- */
- public $registered_resources = array();
-
- /**
- * registered cache resources
- *
- * @var array
- */
- public $registered_cache_resources = array();
-
- /**
- * autoload filter
- *
- * @var array
- */
- public $autoload_filters = array();
-
- /**
- * default modifier
- *
- * @var array
- */
- public $default_modifiers = array();
-
- /**
- * autoescape variable output
- *
- * @var boolean
- */
- public $escape_html = false;
-
- /**
- * start time for execution time calculation
- *
- * @var int
- */
- public $start_time = 0;
-
- /**
- * required by the compiler for BC
- *
- * @var string
- */
- public $_current_file = null;
-
- /**
- * internal flag to enable parser debugging
- *
- * @var bool
- */
- public $_parserdebug = false;
-
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 1;
-
- /**
- * Debug object
- *
- * @var Smarty_Internal_Debug
- */
- public $_debug = null;
-
- /**
- * removed properties
- *
- * @var string[]
- */
- private static $obsoleteProperties = array('resource_caching', 'template_resource_caching',
- 'direct_access_security', '_dir_perms', '_file_perms',
- 'plugin_search_order', 'inheritance_merge_compiled_includes');
-
- /**
- * List of private properties which will call getter/setter ona direct access
- *
- * @var array
- */
- private static $accessMap = array('template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
- 'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
- 'cache_dir' => 'CacheDir',);
-
- /**#@-*/
-
- /**
- * Initialize new Smarty object
- */
- public function __construct()
- {
- parent::__construct();
- if (is_callable('mb_internal_encoding')) {
- mb_internal_encoding(Smarty::$_CHARSET);
- }
- $this->start_time = microtime(true);
-
- if (isset($_SERVER['SCRIPT_NAME'])) {
- Smarty::$global_tpl_vars['SCRIPT_NAME'] = new Smarty_Variable($_SERVER['SCRIPT_NAME']);
- }
-
- // Check if we're running on windows
- Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
-
- // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
- if (Smarty::$_CHARSET !== 'UTF-8') {
- Smarty::$_UTF8_MODIFIER = '';
- }
- }
-
- /**
- * Check if a template resource exists
- *
- * @param string $resource_name template name
- *
- * @return boolean status
- */
- public function templateExists($resource_name)
- {
- // create source object
- $source = Smarty_Template_Source::load(null, $this, $resource_name);
- return $source->exists;
- }
-
- /**
- * Returns a single or all global variables
- *
- * @param string $varname variable name or null
- *
- * @return string variable value or or array of variables
- */
- public function getGlobal($varname = null)
- {
- if (isset($varname)) {
- if (isset(self::$global_tpl_vars[$varname])) {
- return self::$global_tpl_vars[$varname]->value;
- } else {
- return '';
- }
- } else {
- $_result = array();
- foreach (self::$global_tpl_vars AS $key => $var) {
- $_result[$key] = $var->value;
- }
-
- return $_result;
- }
- }
-
- /**
- * Loads security class and enables security
- *
- * @param string|Smarty_Security $security_class if a string is used, it must be class-name
- *
- * @return Smarty current Smarty instance for chaining
- * @throws SmartyException when an invalid class name is provided
- */
- public function enableSecurity($security_class = null)
- {
- Smarty_Security::enableSecurity($this, $security_class);
- return $this;
- }
-
- /**
- * Disable security
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function disableSecurity()
- {
- $this->security_policy = null;
-
- return $this;
- }
-
- /**
- * Set template directory
- *
- * @param string|array $template_dir directory(s) of template sources
- * @param bool $isConfig true for config_dir
- *
- * @return \Smarty current Smarty instance for chaining
- */
- public function setTemplateDir($template_dir, $isConfig = false)
- {
- $type = $isConfig ? 'config_dir' : 'template_dir';
- $joined = '_joined_' . $type;
- $this->{$type} = (array) $template_dir;
- $this->{$joined} = join(' # ', $this->{$type});
- $this->_cache[$type . '_new'] = true;
- $this->_cache[$type] = false;
- return $this;
- }
-
- /**
- * Add template directory(s)
- *
- * @param string|array $template_dir directory(s) of template sources
- * @param string $key of the array element to assign the template dir to
- * @param bool $isConfig true for config_dir
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function addTemplateDir($template_dir, $key = null, $isConfig = false)
- {
- $type = $isConfig ? 'config_dir' : 'template_dir';
- $joined = '_joined_' . $type;
- if (!isset($this->_cache[$type])) {
- $this->{$type} = (array) $this->{$type};
- $this->{$joined} = join(' # ', $this->{$type});
- $this->_cache[$type . '_new'] = true;
- $this->_cache[$type] = false;
- }
- $this->{$joined} .= ' # ' . join(' # ', (array) $template_dir);
- $this->_addDir($type, $template_dir, $key);
- return $this;
- }
-
- /**
- * Get template directories
- *
- * @param mixed $index index of directory to get, null to get all
- * @param bool $isConfig true for config_dir
- *
- * @return array list of template directories, or directory of $index
- */
- public function getTemplateDir($index = null, $isConfig = false)
- {
- $type = $isConfig ? 'config_dir' : 'template_dir';
- if (!isset($this->_cache[$type])) {
- $joined = '_joined_' . $type;
- $this->{$type} = (array) $this->{$type};
- $this->{$joined} = join(' # ', $this->{$type});
- $this->_cache[$type] = false;
- }
- if ($this->_cache[$type] == false) {
- foreach ($this->{$type} as $k => $v) {
- $this->{$type}[$k] = $this->_realpath($v . DS, true);
- }
- $this->_cache[$type . '_new'] = true;
- $this->_cache[$type] = true;
- }
- if ($index !== null) {
- return isset($this->{$type}[$index]) ? $this->{$type}[$index] : null;
- }
- return $this->{$type};
- }
-
- /**
- * Set config directory
- *
- * @param $config_dir
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setConfigDir($config_dir)
- {
- return $this->setTemplateDir($config_dir, true);
- }
-
- /**
- * Add config directory(s)
- *
- * @param string|array $config_dir directory(s) of config sources
- * @param mixed $key key of the array element to assign the config dir to
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function addConfigDir($config_dir, $key = null)
- {
- return $this->addTemplateDir($config_dir, $key, true);
- }
-
- /**
- * Get config directory
- *
- * @param mixed $index index of directory to get, null to get all
- *
- * @return array configuration directory
- */
- public function getConfigDir($index = null)
- {
- return $this->getTemplateDir($index, true);
- }
-
- /**
- * Set plugins directory
- *
- * @param string|array $plugins_dir directory(s) of plugins
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setPluginsDir($plugins_dir)
- {
- $this->plugins_dir = (array) $plugins_dir;
- if (isset($this->_cache['plugins_dir'])) {
- unset($this->_cache['plugins_dir']);
- }
- return $this;
- }
-
- /**
- * Adds directory of plugin files
- *
- * @param $plugins_dir
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function addPluginsDir($plugins_dir)
- {
- if (!isset($this->plugins_dir)) {
- $this->plugins_dir = array(SMARTY_PLUGINS_DIR);
- }
- $this->plugins_dir = array_merge((array) $this->plugins_dir, (array) $plugins_dir);
- if (isset($this->_cache['plugins_dir'])) {
- unset($this->_cache['plugins_dir']);
- }
- return $this;
- }
-
- /**
- * Get plugin directories
- *
- * @return array list of plugin directories
- */
- public function getPluginsDir()
- {
- if (!isset($this->_cache['plugins_dir'])) {
- if (!isset($this->plugins_dir)) {
- $this->plugins_dir = array(SMARTY_PLUGINS_DIR);
- } else {
- $plugins_dir = (array) $this->plugins_dir;
- $this->plugins_dir = array();
- foreach ($plugins_dir as $v) {
- $this->plugins_dir[] = $this->_realpath($v . DS, true);
- }
- $this->plugins_dir = array_unique($this->plugins_dir);
- }
- $this->_cache['plugin_files'] = array();
- $this->_cache['plugins_dir'] = true;
- }
- return $this->plugins_dir;
- }
-
- /**
- * Set compile directory
- *
- * @param string $compile_dir directory to store compiled templates in
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setCompileDir($compile_dir)
- {
- $this->compile_dir = $this->_realpath($compile_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->compile_dir])) {
- Smarty::$_muted_directories[$this->compile_dir] = null;
- }
- $this->_cache['compile_dir'] = true;
- return $this;
- }
-
- /**
- * Get compiled directory
- *
- * @return string path to compiled templates
- */
- public function getCompileDir()
- {
- if (!isset($this->_cache['compile_dir'])) {
- $this->compile_dir = $this->_realpath($this->compile_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->compile_dir])) {
- Smarty::$_muted_directories[$this->compile_dir] = null;
- }
- $this->_cache['compile_dir'] = true;
- }
- return $this->compile_dir;
- }
-
- /**
- * Set cache directory
- *
- * @param string $cache_dir directory to store cached templates in
- *
- * @return Smarty current Smarty instance for chaining
- */
- public function setCacheDir($cache_dir)
- {
- $this->cache_dir = $this->_realpath($cache_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->cache_dir])) {
- Smarty::$_muted_directories[$this->cache_dir] = null;
- }
- $this->_cache['cache_dir'] = true;
- return $this;
- }
-
- /**
- * Get cache directory
- *
- * @return string path of cache directory
- */
- public function getCacheDir()
- {
- if (!isset($this->_cache['cache_dir'])) {
- $this->cache_dir = $this->_realpath($this->cache_dir . DS, true);
- if (!isset(Smarty::$_muted_directories[$this->cache_dir])) {
- Smarty::$_muted_directories[$this->cache_dir] = null;
- }
- $this->_cache['cache_dir'] = true;
- }
- return $this->cache_dir;
- }
-
- /**
- * add directories to given property name
- *
- * @param string $dirName directory property name
- * @param string|array $dir directory string or array of strings
- * @param mixed $key optional key
- */
- private function _addDir($dirName, $dir, $key = null)
- {
- $rp = $this->_cache[$dirName];
- if (is_array($dir)) {
- foreach ($dir as $k => $v) {
- $path = $rp ? $this->_realpath($v . DS, true) : $v;
- if (is_int($k)) {
- // indexes are not merged but appended
- $this->{$dirName}[] = $path;
- } else {
- // string indexes are overridden
- $this->{$dirName}[$k] = $path;
- }
- }
- } else {
- $path = $rp ? $this->_realpath($dir . DS, true) : $dir;
- if ($key !== null) {
- // override directory at specified index
- $this->{$dirName}[$key] = $path;
- } else {
- // append new directory
- $this->{$dirName}[] = $path;
- }
- }
- }
-
- /**
- * creates a template object
- *
- * @param string $template the resource handle of the template file
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @param boolean $do_clone flag is Smarty object shall be cloned
- *
- * @return object template object
- */
- public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
- {
- if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) {
- $parent = $cache_id;
- $cache_id = null;
- }
- if ($parent !== null && is_array($parent)) {
- $data = $parent;
- $parent = null;
- } else {
- $data = null;
- }
- if ($this->caching &&
- isset($this->_cache['isCached'][$_templateId = $this->_getTemplateId($template, $cache_id, $compile_id)])
- ) {
- $tpl = $do_clone ? clone $this->_cache['isCached'][$_templateId] : $this->_cache['isCached'][$_templateId];
- $tpl->parent = $parent;
- $tpl->tpl_vars = array();
- $tpl->config_vars = array();
- } else {
- /* @var Smarty_Internal_Template $tpl */
- $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id, null, null);
- }
- if ($do_clone) {
- $tpl->smarty = clone $tpl->smarty;
- } elseif ($parent === null) {
- $tpl->parent = $this;
- }
- // fill data if present
- if (!empty($data) && is_array($data)) {
- // set up variable values
- foreach ($data as $_key => $_val) {
- $tpl->tpl_vars[$_key] = new Smarty_Variable($_val);
- }
- }
- if ($this->debugging || $this->debugging_ctrl == 'URL') {
- $tpl->smarty->_debug = new Smarty_Internal_Debug();
- // check URL debugging control
- if (!$this->debugging && $this->debugging_ctrl == 'URL') {
- $tpl->smarty->_debug->debugUrl($tpl->smarty);
- }
- }
- return $tpl;
- }
-
- /**
- * Takes unknown classes and loads plugin files for them
- * class name format: Smarty_PluginType_PluginName
- * plugin filename format: plugintype.pluginname.php
- *
- * @param string $plugin_name class plugin name to load
- * @param bool $check check if already loaded
- *
- * @throws SmartyException
- * @return string |boolean filepath of loaded file or false
- */
- public function loadPlugin($plugin_name, $check = true)
- {
- return $this->ext->loadPlugin->loadPlugin($this, $plugin_name, $check);
- }
-
- /**
- * Get unique template id
- *
- * @param string $template_name
- * @param null|mixed $cache_id
- * @param null|mixed $compile_id
- * @param null $caching
- *
- * @return string
- */
- public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null)
- {
- $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
- $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
- $caching = (int) ($caching === null ? $this->caching : $caching);
-
- if ($this->allow_ambiguous_resources) {
- $_templateId =
- Smarty_Resource::getUniqueTemplateName($this, $template_name) . "#{$cache_id}#{$compile_id}#{$caching}";
- } else {
- $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
- }
- if (isset($_templateId[150])) {
- $_templateId = sha1($_templateId);
- }
- return $_templateId;
- }
-
- /**
- * Normalize path
- * - remove /./ and /../
- * - make it absolute if required
- *
- * @param string $path file path
- * @param bool $realpath leave $path relative
- *
- * @return string
- */
- public function _realpath($path, $realpath = null)
- {
- static $pattern = null;
- static $nds = null;
- if ($pattern == null) {
- $nds = DS == '/' ? '\\' : '/';
- $ds = '\\' . DS;
- $pattern =
- "#([{$ds}]+[^{$ds}]+[{$ds}]+[.]([{$ds}]+[.])*[.][{$ds}]+([.][{$ds}]+)*)|([{$ds}]+([.][{$ds}]+)+)|[{$ds}]{2,}#";
- }
- // normalize DS
- if (strpos($path, $nds) !== false) {
- $path = str_replace($nds, DS, $path);
- }
-
- if ($realpath === true && (($path[0] !== '/' && DS == '/') || ($path[1] !== ':' && DS != '/'))) {
- $path = getcwd() . DS . $path;
- }
- while ((strpos($path, '.' . DS) !== false) || (strpos($path, DS . DS) !== false)) {
- $path = preg_replace($pattern, DS, $path);
- }
- if ($realpath === false && ($path[0] == '/' || $path[1] == ':')) {
- $path = str_ireplace(getcwd(), '.', $path);
- }
- return $path;
- }
-
- /**
- * @param boolean $compile_check
- */
- public function setCompileCheck($compile_check)
- {
- $this->compile_check = $compile_check;
- }
-
- /**
- * @param boolean $use_sub_dirs
- */
- public function setUseSubDirs($use_sub_dirs)
- {
- $this->use_sub_dirs = $use_sub_dirs;
- }
-
- /**
- * @param int $error_reporting
- */
- public function setErrorReporting($error_reporting)
- {
- $this->error_reporting = $error_reporting;
- }
-
- /**
- * @param boolean $escape_html
- */
- public function setEscapeHtml($escape_html)
- {
- $this->escape_html = $escape_html;
- }
-
- /**
- * @param boolean $auto_literal
- */
- public function setAutoLiteral($auto_literal)
- {
- $this->auto_literal = $auto_literal;
- }
-
- /**
- * @param boolean $force_compile
- */
- public function setForceCompile($force_compile)
- {
- $this->force_compile = $force_compile;
- }
-
- /**
- * @param boolean $merge_compiled_includes
- */
- public function setMergeCompiledIncludes($merge_compiled_includes)
- {
- $this->merge_compiled_includes = $merge_compiled_includes;
- }
-
- /**
- * @param string $left_delimiter
- */
- public function setLeftDelimiter($left_delimiter)
- {
- $this->left_delimiter = $left_delimiter;
- }
-
- /**
- * @param string $right_delimiter
- */
- public function setRightDelimiter($right_delimiter)
- {
- $this->right_delimiter = $right_delimiter;
- }
-
- /**
- * @param boolean $debugging
- */
- public function setDebugging($debugging)
- {
- $this->debugging = $debugging;
- }
-
- /**
- * @param boolean $config_overwrite
- */
- public function setConfigOverwrite($config_overwrite)
- {
- $this->config_overwrite = $config_overwrite;
- }
-
- /**
- * @param boolean $config_booleanize
- */
- public function setConfigBooleanize($config_booleanize)
- {
- $this->config_booleanize = $config_booleanize;
- }
-
- /**
- * @param boolean $config_read_hidden
- */
- public function setConfigReadHidden($config_read_hidden)
- {
- $this->config_read_hidden = $config_read_hidden;
- }
-
- /**
- * @param boolean $compile_locking
- */
- public function setCompileLocking($compile_locking)
- {
- $this->compile_locking = $compile_locking;
- }
-
- /**
- * @param string $default_resource_type
- */
- public function setDefaultResourceType($default_resource_type)
- {
- $this->default_resource_type = $default_resource_type;
- }
-
- /**
- * @param string $caching_type
- */
- public function setCachingType($caching_type)
- {
- $this->caching_type = $caching_type;
- }
-
- /**
- * Test install
- *
- * @param null $errors
- */
- public function testInstall(&$errors = null)
- {
- Smarty_Internal_TestInstall::testInstall($this, $errors);
- }
-
- /**
- * Class destructor
- */
- public function __destruct()
- {
- $i = 0;// intentionally left blank
- }
-
- /**
- * <<magic>> Generic getter.
- * Calls the appropriate getter function.
- * Issues an E_USER_NOTICE if no valid getter is found.
- *
- * @param string $name property name
- *
- * @return mixed
- */
- public function __get($name)
- {
-
- if (isset(self::$accessMap[$name])) {
- $method = 'get' . self::$accessMap[$name];
- return $this->{$method}();
- } elseif (in_array($name, self::$obsoleteProperties)) {
- return null;
- } else {
- trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
- }
- }
-
- /**
- * <<magic>> Generic setter.
- * Calls the appropriate setter function.
- * Issues an E_USER_NOTICE if no valid setter is found.
- *
- * @param string $name property name
- * @param mixed $value parameter passed to setter
- */
- public function __set($name, $value)
- {
- if (isset(self::$accessMap[$name])) {
- $method = 'set' . self::$accessMap[$name];
- $this->{$method}($value);
- } elseif (in_array($name, self::$obsoleteProperties)) {
- return;
- } else {
- if (is_object($value) && method_exists($value, $name)) {
- $this->$name = $value;
- } else {
- trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
- }
- }
- }
-
- /**
- * Error Handler to mute expected messages
- *
- * @link http://php.net/set_error_handler
- *
- * @param integer $errno Error level
- * @param $errstr
- * @param $errfile
- * @param $errline
- * @param $errcontext
- *
- * @return boolean
- */
- public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
- {
- $_is_muted_directory = false;
-
- // add the SMARTY_DIR to the list of muted directories
- if (!isset(Smarty::$_muted_directories[SMARTY_DIR])) {
- $smarty_dir = realpath(SMARTY_DIR);
- if ($smarty_dir !== false) {
- Smarty::$_muted_directories[SMARTY_DIR] =
- array('file' => $smarty_dir, 'length' => strlen($smarty_dir),);
- }
- }
-
- // walk the muted directories and test against $errfile
- foreach (Smarty::$_muted_directories as $key => &$dir) {
- if (!$dir) {
- // resolve directory and length for speedy comparisons
- $file = realpath($key);
- if ($file === false) {
- // this directory does not exist, remove and skip it
- unset(Smarty::$_muted_directories[$key]);
- continue;
- }
- $dir = array('file' => $file, 'length' => strlen($file),);
- }
- if (!strncmp($errfile, $dir['file'], $dir['length'])) {
- $_is_muted_directory = true;
- break;
- }
- }
-
- // pass to next error handler if this error did not occur inside SMARTY_DIR
- // or the error was within smarty but masked to be ignored
- if (!$_is_muted_directory || ($errno && $errno & error_reporting())) {
- if (Smarty::$_previous_error_handler) {
- return call_user_func(Smarty::$_previous_error_handler, $errno, $errstr, $errfile, $errline,
- $errcontext);
- } else {
- return false;
- }
- }
- }
-
- /**
- * Enable error handler to mute expected messages
- *
- * @return void
- */
- public static function muteExpectedErrors()
- {
- /*
- error muting is done because some people implemented custom error_handlers using
- http://php.net/set_error_handler and for some reason did not understand the following paragraph:
-
- It is important to remember that the standard PHP error handler is completely bypassed for the
- error types specified by error_types unless the callback function returns FALSE.
- error_reporting() settings will have no effect and your error handler will be called regardless -
- however you are still able to read the current value of error_reporting and act appropriately.
- Of particular note is that this value will be 0 if the statement that caused the error was
- prepended by the @ error-control operator.
-
- Smarty deliberately uses @filemtime() over file_exists() and filemtime() in some places. Reasons include
- - @filemtime() is almost twice as fast as using an additional file_exists()
- - between file_exists() and filemtime() a possible race condition is opened,
- which does not exist using the simple @filemtime() approach.
- */
- $error_handler = array('Smarty', 'mutingErrorHandler');
- $previous = set_error_handler($error_handler);
-
- // avoid dead loops
- if ($previous !== $error_handler) {
- Smarty::$_previous_error_handler = $previous;
- }
- }
-
- /**
- * Disable error handler muting expected messages
- *
- * @return void
- */
- public static function unmuteExpectedErrors()
- {
- restore_error_handler();
- }
-}
diff --git a/library/Smarty/libs/SmartyBC.class.php b/library/Smarty/libs/SmartyBC.class.php
deleted file mode 100644
index 1dd529c9c..000000000
--- a/library/Smarty/libs/SmartyBC.class.php
+++ /dev/null
@@ -1,455 +0,0 @@
-<?php
-/**
- * Project: Smarty: the PHP compiling template engine
- * File: SmartyBC.class.php
- * SVN: $Id: $
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * For questions, help, comments, discussion, etc., please join the
- * Smarty mailing list. Send a blank e-mail to
- * smarty-discussion-subscribe@googlegroups.com
- *
- * @link http://www.smarty.net/
- * @copyright 2008 New Digital Group, Inc.
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- * @author Rodney Rehm
- * @package Smarty
- */
-/**
- * @ignore
- */
-require_once(dirname(__FILE__) . '/Smarty.class.php');
-
-/**
- * Smarty Backward Compatability Wrapper Class
- *
- * @package Smarty
- */
-class SmartyBC extends Smarty
-{
- /**
- * Smarty 2 BC
- *
- * @var string
- */
- public $_version = self::SMARTY_VERSION;
-
- /**
- * This is an array of directories where trusted php scripts reside.
- *
- * @var array
- */
- public $trusted_dir = array();
-
- /**
- * Initialize new SmartyBC object
- *
- * @param array $options options to set during initialization, e.g. array( 'forceCompile' => false )
- */
- public function __construct(array $options = array())
- {
- parent::__construct($options);
- }
-
- /**
- * wrapper for assign_by_ref
- *
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to assign
- */
- public function assign_by_ref($tpl_var, &$value)
- {
- $this->assignByRef($tpl_var, $value);
- }
-
- /**
- * wrapper for append_by_ref
- *
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param boolean $merge flag if array elements shall be merged
- */
- public function append_by_ref($tpl_var, &$value, $merge = false)
- {
- $this->appendByRef($tpl_var, $value, $merge);
- }
-
- /**
- * clear the given assigned template variable.
- *
- * @param string $tpl_var the template variable to clear
- */
- public function clear_assign($tpl_var)
- {
- $this->clearAssign($tpl_var);
- }
-
- /**
- * Registers custom function to be used in templates
- *
- * @param string $function the name of the template function
- * @param string $function_impl the name of the PHP function to register
- * @param bool $cacheable
- * @param mixed $cache_attrs
- */
- public function register_function($function, $function_impl, $cacheable = true, $cache_attrs = null)
- {
- $this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
- }
-
- /**
- * Unregisters custom function
- *
- * @param string $function name of template function
- */
- public function unregister_function($function)
- {
- $this->unregisterPlugin('function', $function);
- }
-
- /**
- * Registers object to be used in templates
- *
- * @param string $object name of template object
- * @param object $object_impl the referenced PHP object to register
- * @param array $allowed list of allowed methods (empty = all)
- * @param boolean $smarty_args smarty argument format, else traditional
- * @param array $block_methods list of methods that are block format
- *
- * @throws SmartyException
- * @internal param array $block_functs list of methods that are block format
- */
- public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
- {
- settype($allowed, 'array');
- settype($smarty_args, 'boolean');
- $this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
- }
-
- /**
- * Unregisters object
- *
- * @param string $object name of template object
- */
- public function unregister_object($object)
- {
- $this->unregisterObject($object);
- }
-
- /**
- * Registers block function to be used in templates
- *
- * @param string $block name of template block
- * @param string $block_impl PHP function to register
- * @param bool $cacheable
- * @param mixed $cache_attrs
- */
- public function register_block($block, $block_impl, $cacheable = true, $cache_attrs = null)
- {
- $this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
- }
-
- /**
- * Unregisters block function
- *
- * @param string $block name of template function
- */
- public function unregister_block($block)
- {
- $this->unregisterPlugin('block', $block);
- }
-
- /**
- * Registers compiler function
- *
- * @param string $function name of template function
- * @param string $function_impl name of PHP function to register
- * @param bool $cacheable
- */
- public function register_compiler_function($function, $function_impl, $cacheable = true)
- {
- $this->registerPlugin('compiler', $function, $function_impl, $cacheable);
- }
-
- /**
- * Unregisters compiler function
- *
- * @param string $function name of template function
- */
- public function unregister_compiler_function($function)
- {
- $this->unregisterPlugin('compiler', $function);
- }
-
- /**
- * Registers modifier to be used in templates
- *
- * @param string $modifier name of template modifier
- * @param string $modifier_impl name of PHP function to register
- */
- public function register_modifier($modifier, $modifier_impl)
- {
- $this->registerPlugin('modifier', $modifier, $modifier_impl);
- }
-
- /**
- * Unregisters modifier
- *
- * @param string $modifier name of template modifier
- */
- public function unregister_modifier($modifier)
- {
- $this->unregisterPlugin('modifier', $modifier);
- }
-
- /**
- * Registers a resource to fetch a template
- *
- * @param string $type name of resource
- * @param array $functions array of functions to handle resource
- */
- public function register_resource($type, $functions)
- {
- $this->registerResource($type, $functions);
- }
-
- /**
- * Unregisters a resource
- *
- * @param string $type name of resource
- */
- public function unregister_resource($type)
- {
- $this->unregisterResource($type);
- }
-
- /**
- * Registers a prefilter function to apply
- * to a template before compiling
- *
- * @param callable $function
- */
- public function register_prefilter($function)
- {
- $this->registerFilter('pre', $function);
- }
-
- /**
- * Unregisters a prefilter function
- *
- * @param callable $function
- */
- public function unregister_prefilter($function)
- {
- $this->unregisterFilter('pre', $function);
- }
-
- /**
- * Registers a postfilter function to apply
- * to a compiled template after compilation
- *
- * @param callable $function
- */
- public function register_postfilter($function)
- {
- $this->registerFilter('post', $function);
- }
-
- /**
- * Unregisters a postfilter function
- *
- * @param callable $function
- */
- public function unregister_postfilter($function)
- {
- $this->unregisterFilter('post', $function);
- }
-
- /**
- * Registers an output filter function to apply
- * to a template output
- *
- * @param callable $function
- */
- public function register_outputfilter($function)
- {
- $this->registerFilter('output', $function);
- }
-
- /**
- * Unregisters an outputfilter function
- *
- * @param callable $function
- */
- public function unregister_outputfilter($function)
- {
- $this->unregisterFilter('output', $function);
- }
-
- /**
- * load a filter of specified type and name
- *
- * @param string $type filter type
- * @param string $name filter name
- */
- public function load_filter($type, $name)
- {
- $this->loadFilter($type, $name);
- }
-
- /**
- * clear cached content for the given template and cache id
- *
- * @param string $tpl_file name of template file
- * @param string $cache_id name of cache_id
- * @param string $compile_id name of compile_id
- * @param string $exp_time expiration time
- *
- * @return boolean
- */
- public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
- {
- return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
- }
-
- /**
- * clear the entire contents of cache (all templates)
- *
- * @param string $exp_time expire time
- *
- * @return boolean
- */
- public function clear_all_cache($exp_time = null)
- {
- return $this->clearCache(null, null, null, $exp_time);
- }
-
- /**
- * test to see if valid cache exists for this template
- *
- * @param string $tpl_file name of template file
- * @param string $cache_id
- * @param string $compile_id
- *
- * @return boolean
- */
- public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
- {
- return $this->isCached($tpl_file, $cache_id, $compile_id);
- }
-
- /**
- * clear all the assigned template variables.
- */
- public function clear_all_assign()
- {
- $this->clearAllAssign();
- }
-
- /**
- * clears compiled version of specified template resource,
- * or all compiled template files if one is not specified.
- * This function is for advanced use only, not normally needed.
- *
- * @param string $tpl_file
- * @param string $compile_id
- * @param string $exp_time
- *
- * @return boolean results of {@link smarty_core_rm_auto()}
- */
- public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
- {
- return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
- }
-
- /**
- * Checks whether requested template exists.
- *
- * @param string $tpl_file
- *
- * @return boolean
- */
- public function template_exists($tpl_file)
- {
- return $this->templateExists($tpl_file);
- }
-
- /**
- * Returns an array containing template variables
- *
- * @param string $name
- *
- * @return array
- */
- public function get_template_vars($name = null)
- {
- return $this->getTemplateVars($name);
- }
-
- /**
- * Returns an array containing config variables
- *
- * @param string $name
- *
- * @return array
- */
- public function get_config_vars($name = null)
- {
- return $this->getConfigVars($name);
- }
-
- /**
- * load configuration values
- *
- * @param string $file
- * @param string $section
- * @param string $scope
- */
- public function config_load($file, $section = null, $scope = 'global')
- {
- $this->ConfigLoad($file, $section, $scope);
- }
-
- /**
- * return a reference to a registered object
- *
- * @param string $name
- *
- * @return object
- */
- public function get_registered_object($name)
- {
- return $this->getRegisteredObject($name);
- }
-
- /**
- * clear configuration values
- *
- * @param string $var
- */
- public function clear_config($var = null)
- {
- $this->clearConfig($var);
- }
-
- /**
- * trigger Smarty error
- *
- * @param string $error_msg
- * @param integer $error_type
- */
- public function trigger_error($error_msg, $error_type = E_USER_WARNING)
- {
- trigger_error("Smarty error: $error_msg", $error_type);
- }
-}
diff --git a/library/Smarty/libs/plugins/block.textformat.php b/library/Smarty/libs/plugins/block.textformat.php
deleted file mode 100644
index abf544939..000000000
--- a/library/Smarty/libs/plugins/block.textformat.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-/**
- * Smarty plugin to format text blocks
- *
- * @package Smarty
- * @subpackage PluginsBlock
- */
-
-/**
- * Smarty {textformat}{/textformat} block plugin
- * Type: block function<br>
- * Name: textformat<br>
- * Purpose: format text a certain way with preset styles
- * or custom wrap/indent settings<br>
- * Params:
- * <pre>
- * - style - string (email)
- * - indent - integer (0)
- * - wrap - integer (80)
- * - wrap_char - string ("\n")
- * - indent_char - string (" ")
- * - wrap_boundary - boolean (true)
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
- * (Smarty online manual)
- *
- * @param array $params parameters
- * @param string $content contents of the block
- * @param Smarty_Internal_Template $template template object
- * @param boolean &$repeat repeat flag
- *
- * @return string content re-formatted
- * @author Monte Ohrt <monte at ohrt dot com>
- */
-function smarty_block_textformat($params, $content, $template, &$repeat)
-{
- if (is_null($content)) {
- return;
- }
-
- $style = null;
- $indent = 0;
- $indent_first = 0;
- $indent_char = ' ';
- $wrap = 80;
- $wrap_char = "\n";
- $wrap_cut = false;
- $assign = null;
-
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'style':
- case 'indent_char':
- case 'wrap_char':
- case 'assign':
- $$_key = (string) $_val;
- break;
-
- case 'indent':
- case 'indent_first':
- case 'wrap':
- $$_key = (int) $_val;
- break;
-
- case 'wrap_cut':
- $$_key = (bool) $_val;
- break;
-
- default:
- trigger_error("textformat: unknown attribute '$_key'");
- }
- }
-
- if ($style == 'email') {
- $wrap = 72;
- }
- // split into paragraphs
- $_paragraphs = preg_split('![\r\n]{2}!', $content);
-
- foreach ($_paragraphs as &$_paragraph) {
- if (!$_paragraph) {
- continue;
- }
- // convert mult. spaces & special chars to single space
- $_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph);
- // indent first line
- if ($indent_first > 0) {
- $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
- }
- // wordwrap sentences
- if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
- $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
- } else {
- $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
- }
- // indent lines
- if ($indent > 0) {
- $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
- }
- }
- $_output = implode($wrap_char . $wrap_char, $_paragraphs);
-
- if ($assign) {
- $template->assign($assign, $_output);
- } else {
- return $_output;
- }
-}
diff --git a/library/Smarty/libs/plugins/function.counter.php b/library/Smarty/libs/plugins/function.counter.php
deleted file mode 100644
index 4da85a14e..000000000
--- a/library/Smarty/libs/plugins/function.counter.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {counter} function plugin
- * Type: function<br>
- * Name: counter<br>
- * Purpose: print out a counter value
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
- * (Smarty online manual)
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_counter($params, $template)
-{
- static $counters = array();
-
- $name = (isset($params['name'])) ? $params['name'] : 'default';
- if (!isset($counters[$name])) {
- $counters[$name] = array(
- 'start' => 1,
- 'skip' => 1,
- 'direction' => 'up',
- 'count' => 1
- );
- }
- $counter =& $counters[$name];
-
- if (isset($params['start'])) {
- $counter['start'] = $counter['count'] = (int) $params['start'];
- }
-
- if (!empty($params['assign'])) {
- $counter['assign'] = $params['assign'];
- }
-
- if (isset($counter['assign'])) {
- $template->assign($counter['assign'], $counter['count']);
- }
-
- if (isset($params['print'])) {
- $print = (bool) $params['print'];
- } else {
- $print = empty($counter['assign']);
- }
-
- if ($print) {
- $retval = $counter['count'];
- } else {
- $retval = null;
- }
-
- if (isset($params['skip'])) {
- $counter['skip'] = $params['skip'];
- }
-
- if (isset($params['direction'])) {
- $counter['direction'] = $params['direction'];
- }
-
- if ($counter['direction'] == "down") {
- $counter['count'] -= $counter['skip'];
- } else {
- $counter['count'] += $counter['skip'];
- }
-
- return $retval;
-}
diff --git a/library/Smarty/libs/plugins/function.cycle.php b/library/Smarty/libs/plugins/function.cycle.php
deleted file mode 100644
index 8dc5cd9d5..000000000
--- a/library/Smarty/libs/plugins/function.cycle.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {cycle} function plugin
- * Type: function<br>
- * Name: cycle<br>
- * Date: May 3, 2002<br>
- * Purpose: cycle through given values<br>
- * Params:
- * <pre>
- * - name - name of cycle (optional)
- * - values - comma separated list of values to cycle, or an array of values to cycle
- * (this can be left out for subsequent calls)
- * - reset - boolean - resets given var to true
- * - print - boolean - print var or not. default is true
- * - advance - boolean - whether or not to advance the cycle
- * - delimiter - the value delimiter, default is ","
- * - assign - boolean, assigns to template var instead of printed.
- * </pre>
- * Examples:<br>
- * <pre>
- * {cycle values="#eeeeee,#d0d0d0d"}
- * {cycle name=row values="one,two,three" reset=true}
- * {cycle name=row}
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credit to Mark Priatel <mpriatel@rogers.com>
- * @author credit to Gerard <gerard@interfold.com>
- * @author credit to Jason Sweat <jsweat_php@yahoo.com>
- * @version 1.3
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-
-function smarty_function_cycle($params, $template)
-{
- static $cycle_vars;
-
- $name = (empty($params['name'])) ? 'default' : $params['name'];
- $print = (isset($params['print'])) ? (bool) $params['print'] : true;
- $advance = (isset($params['advance'])) ? (bool) $params['advance'] : true;
- $reset = (isset($params['reset'])) ? (bool) $params['reset'] : false;
-
- if (!isset($params['values'])) {
- if (!isset($cycle_vars[$name]['values'])) {
- trigger_error("cycle: missing 'values' parameter");
-
- return;
- }
- } else {
- if (isset($cycle_vars[$name]['values'])
- && $cycle_vars[$name]['values'] != $params['values']
- ) {
- $cycle_vars[$name]['index'] = 0;
- }
- $cycle_vars[$name]['values'] = $params['values'];
- }
-
- if (isset($params['delimiter'])) {
- $cycle_vars[$name]['delimiter'] = $params['delimiter'];
- } elseif (!isset($cycle_vars[$name]['delimiter'])) {
- $cycle_vars[$name]['delimiter'] = ',';
- }
-
- if (is_array($cycle_vars[$name]['values'])) {
- $cycle_array = $cycle_vars[$name]['values'];
- } else {
- $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']);
- }
-
- if (!isset($cycle_vars[$name]['index']) || $reset) {
- $cycle_vars[$name]['index'] = 0;
- }
-
- if (isset($params['assign'])) {
- $print = false;
- $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
- }
-
- if ($print) {
- $retval = $cycle_array[$cycle_vars[$name]['index']];
- } else {
- $retval = null;
- }
-
- if ($advance) {
- if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) {
- $cycle_vars[$name]['index'] = 0;
- } else {
- $cycle_vars[$name]['index'] ++;
- }
- }
-
- return $retval;
-}
diff --git a/library/Smarty/libs/plugins/function.fetch.php b/library/Smarty/libs/plugins/function.fetch.php
deleted file mode 100644
index 3506d4a8d..000000000
--- a/library/Smarty/libs/plugins/function.fetch.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {fetch} plugin
- * Type: function<br>
- * Name: fetch<br>
- * Purpose: fetch file, web or ftp data and display results
- *
- * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @throws SmartyException
- * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
- */
-function smarty_function_fetch($params, $template)
-{
- if (empty($params['file'])) {
- trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE);
-
- return;
- }
-
- // strip file protocol
- if (stripos($params['file'], 'file://') === 0) {
- $params['file'] = substr($params['file'], 7);
- }
-
- $protocol = strpos($params['file'], '://');
- if ($protocol !== false) {
- $protocol = strtolower(substr($params['file'], 0, $protocol));
- }
-
- if (isset($template->smarty->security_policy)) {
- if ($protocol) {
- // remote resource (or php stream, …)
- if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
- return;
- }
- } else {
- // local file
- if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
- return;
- }
- }
- }
-
- $content = '';
- if ($protocol == 'http') {
- // http fetch
- if ($uri_parts = parse_url($params['file'])) {
- // set defaults
- $host = $server_name = $uri_parts['host'];
- $timeout = 30;
- $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
- $agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION;
- $referer = "";
- $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
- $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
- $_is_proxy = false;
- if (empty($uri_parts['port'])) {
- $port = 80;
- } else {
- $port = $uri_parts['port'];
- }
- if (!empty($uri_parts['user'])) {
- $user = $uri_parts['user'];
- }
- if (!empty($uri_parts['pass'])) {
- $pass = $uri_parts['pass'];
- }
- // loop through parameters, setup headers
- foreach ($params as $param_key => $param_value) {
- switch ($param_key) {
- case "file":
- case "assign":
- case "assign_headers":
- break;
- case "user":
- if (!empty($param_value)) {
- $user = $param_value;
- }
- break;
- case "pass":
- if (!empty($param_value)) {
- $pass = $param_value;
- }
- break;
- case "accept":
- if (!empty($param_value)) {
- $accept = $param_value;
- }
- break;
- case "header":
- if (!empty($param_value)) {
- if (!preg_match('![\w\d-]+: .+!', $param_value)) {
- trigger_error("[plugin] invalid header format '" . $param_value . "'", E_USER_NOTICE);
-
- return;
- } else {
- $extra_headers[] = $param_value;
- }
- }
- break;
- case "proxy_host":
- if (!empty($param_value)) {
- $proxy_host = $param_value;
- }
- break;
- case "proxy_port":
- if (!preg_match('!\D!', $param_value)) {
- $proxy_port = (int) $param_value;
- } else {
- trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
-
- return;
- }
- break;
- case "agent":
- if (!empty($param_value)) {
- $agent = $param_value;
- }
- break;
- case "referer":
- if (!empty($param_value)) {
- $referer = $param_value;
- }
- break;
- case "timeout":
- if (!preg_match('!\D!', $param_value)) {
- $timeout = (int) $param_value;
- } else {
- trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
-
- return;
- }
- break;
- default:
- trigger_error("[plugin] unrecognized attribute '" . $param_key . "'", E_USER_NOTICE);
-
- return;
- }
- }
- if (!empty($proxy_host) && !empty($proxy_port)) {
- $_is_proxy = true;
- $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
- } else {
- $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
- }
-
- if (!$fp) {
- trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
-
- return;
- } else {
- if ($_is_proxy) {
- fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
- } else {
- fputs($fp, "GET $uri HTTP/1.0\r\n");
- }
- if (!empty($host)) {
- fputs($fp, "Host: $host\r\n");
- }
- if (!empty($accept)) {
- fputs($fp, "Accept: $accept\r\n");
- }
- if (!empty($agent)) {
- fputs($fp, "User-Agent: $agent\r\n");
- }
- if (!empty($referer)) {
- fputs($fp, "Referer: $referer\r\n");
- }
- if (isset($extra_headers) && is_array($extra_headers)) {
- foreach ($extra_headers as $curr_header) {
- fputs($fp, $curr_header . "\r\n");
- }
- }
- if (!empty($user) && !empty($pass)) {
- fputs($fp, "Authorization: BASIC " . base64_encode("$user:$pass") . "\r\n");
- }
-
- fputs($fp, "\r\n");
- while (!feof($fp)) {
- $content .= fgets($fp, 4096);
- }
- fclose($fp);
- $csplit = preg_split("!\r\n\r\n!", $content, 2);
-
- $content = $csplit[1];
-
- if (!empty($params['assign_headers'])) {
- $template->assign($params['assign_headers'], preg_split("!\r\n!", $csplit[0]));
- }
- }
- } else {
- trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
-
- return;
- }
- } else {
- $content = @file_get_contents($params['file']);
- if ($content === false) {
- throw new SmartyException("{fetch} cannot read resource '" . $params['file'] . "'");
- }
- }
-
- if (!empty($params['assign'])) {
- $template->assign($params['assign'], $content);
- } else {
- return $content;
- }
-}
diff --git a/library/Smarty/libs/plugins/function.html_checkboxes.php b/library/Smarty/libs/plugins/function.html_checkboxes.php
deleted file mode 100644
index d78680368..000000000
--- a/library/Smarty/libs/plugins/function.html_checkboxes.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {html_checkboxes} function plugin
- * File: function.html_checkboxes.php<br>
- * Type: function<br>
- * Name: html_checkboxes<br>
- * Date: 24.Feb.2003<br>
- * Purpose: Prints out a list of checkbox input types<br>
- * Examples:
- * <pre>
- * {html_checkboxes values=$ids output=$names}
- * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
- * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
- * </pre>
- * Params:
- * <pre>
- * - name (optional) - string default "checkbox"
- * - values (required) - array
- * - options (optional) - associative array
- * - checked (optional) - array default not set
- * - separator (optional) - ie <br> or &nbsp;
- * - output (optional) - the output next to each checkbox
- * - assign (optional) - assign the output as an array to this variable
- * - escape (optional) - escape the content (not value), defaults to true
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
- * @version 1.0
- *
- * @param array $params parameters
- * @param object $template template object
- *
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_checkboxes($params, $template)
-{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-
- $name = 'checkbox';
- $values = null;
- $options = null;
- $selected = array();
- $separator = '';
- $escape = true;
- $labels = true;
- $label_ids = false;
- $output = null;
-
- $extra = '';
-
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'name':
- case 'separator':
- $$_key = (string) $_val;
- break;
-
- case 'escape':
- case 'labels':
- case 'label_ids':
- $$_key = (bool) $_val;
- break;
-
- case 'options':
- $$_key = (array) $_val;
- break;
-
- case 'values':
- case 'output':
- $$_key = array_values((array) $_val);
- break;
-
- case 'checked':
- case 'selected':
- if (is_array($_val)) {
- $selected = array();
- foreach ($_val as $_sel) {
- if (is_object($_sel)) {
- if (method_exists($_sel, "__toString")) {
- $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
- } else {
- trigger_error("html_checkboxes: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
- continue;
- }
- } else {
- $_sel = smarty_function_escape_special_chars((string) $_sel);
- }
- $selected[$_sel] = true;
- }
- } elseif (is_object($_val)) {
- if (method_exists($_val, "__toString")) {
- $selected = smarty_function_escape_special_chars((string) $_val->__toString());
- } else {
- trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
- }
- } else {
- $selected = smarty_function_escape_special_chars((string) $_val);
- }
- break;
-
- case 'checkboxes':
- trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
- $options = (array) $_val;
- break;
-
- case 'assign':
- break;
-
- case 'strict':
- break;
-
- case 'disabled':
- case 'readonly':
- if (!empty($params['strict'])) {
- if (!is_scalar($_val)) {
- trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
- }
-
- if ($_val === true || $_val === $_key) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
- }
-
- break;
- }
- // omit break; to fall through!
-
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (!isset($options) && !isset($values)) {
- return '';
- } /* raise error here? */
-
- $_html_result = array();
-
- if (isset($options)) {
- foreach ($options as $_key => $_val) {
- $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
- }
- } else {
- foreach ($values as $_i => $_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
- }
- }
-
- if (!empty($params['assign'])) {
- $template->assign($params['assign'], $_html_result);
- } else {
- return implode("\n", $_html_result);
- }
-}
-
-function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true)
-{
- $_output = '';
-
- if (is_object($value)) {
- if (method_exists($value, "__toString")) {
- $value = (string) $value->__toString();
- } else {
- trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
-
- return '';
- }
- } else {
- $value = (string) $value;
- }
-
- if (is_object($output)) {
- if (method_exists($output, "__toString")) {
- $output = (string) $output->__toString();
- } else {
- trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
-
- return '';
- }
- } else {
- $output = (string) $output;
- }
-
- if ($labels) {
- if ($label_ids) {
- $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
- $_output .= '<label for="' . $_id . '">';
- } else {
- $_output .= '<label>';
- }
- }
-
- $name = smarty_function_escape_special_chars($name);
- $value = smarty_function_escape_special_chars($value);
- if ($escape) {
- $output = smarty_function_escape_special_chars($output);
- }
-
- $_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
-
- if ($labels && $label_ids) {
- $_output .= ' id="' . $_id . '"';
- }
-
- if (is_array($selected)) {
- if (isset($selected[$value])) {
- $_output .= ' checked="checked"';
- }
- } elseif ($value === $selected) {
- $_output .= ' checked="checked"';
- }
-
- $_output .= $extra . ' />' . $output;
- if ($labels) {
- $_output .= '</label>';
- }
-
- $_output .= $separator;
-
- return $_output;
-}
diff --git a/library/Smarty/libs/plugins/function.html_image.php b/library/Smarty/libs/plugins/function.html_image.php
deleted file mode 100644
index 5037e8bd1..000000000
--- a/library/Smarty/libs/plugins/function.html_image.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {html_image} function plugin
- * Type: function<br>
- * Name: html_image<br>
- * Date: Feb 24, 2003<br>
- * Purpose: format HTML tags for the image<br>
- * Examples: {html_image file="/images/masthead.gif"}<br>
- * Output: <img src="/images/masthead.gif" width=400 height=23><br>
- * Params:
- * <pre>
- * - file - (required) - file (and path) of image
- * - height - (optional) - image height (default actual height)
- * - width - (optional) - image width (default actual width)
- * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
- * - path_prefix - prefix for path output (optional, default empty)
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credits to Duda <duda@big.hu>
- * @version 1.0
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @throws SmartyException
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_image($params, $template)
-{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-
- $alt = '';
- $file = '';
- $height = '';
- $width = '';
- $extra = '';
- $prefix = '';
- $suffix = '';
- $path_prefix = '';
- $basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'file':
- case 'height':
- case 'width':
- case 'dpi':
- case 'path_prefix':
- case 'basedir':
- $$_key = $_val;
- break;
-
- case 'alt':
- if (!is_array($_val)) {
- $$_key = smarty_function_escape_special_chars($_val);
- } else {
- throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
-
- case 'link':
- case 'href':
- $prefix = '<a href="' . $_val . '">';
- $suffix = '</a>';
- break;
-
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (empty($file)) {
- trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
-
- return;
- }
-
- if ($file[0] == '/') {
- $_image_path = $basedir . $file;
- } else {
- $_image_path = $file;
- }
-
- // strip file protocol
- if (stripos($params['file'], 'file://') === 0) {
- $params['file'] = substr($params['file'], 7);
- }
-
- $protocol = strpos($params['file'], '://');
- if ($protocol !== false) {
- $protocol = strtolower(substr($params['file'], 0, $protocol));
- }
-
- if (isset($template->smarty->security_policy)) {
- if ($protocol) {
- // remote resource (or php stream, …)
- if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
- return;
- }
- } else {
- // local file
- if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
- return;
- }
- }
- }
-
- if (!isset($params['width']) || !isset($params['height'])) {
- // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
- if (!$_image_data = @getimagesize($_image_path)) {
- if (!file_exists($_image_path)) {
- trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
-
- return;
- } elseif (!is_readable($_image_path)) {
- trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
-
- return;
- } else {
- trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
-
- return;
- }
- }
-
- if (!isset($params['width'])) {
- $width = $_image_data[0];
- }
- if (!isset($params['height'])) {
- $height = $_image_data[1];
- }
- }
-
- if (isset($params['dpi'])) {
- if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
- // FIXME: (rodneyrehm) wrong dpi assumption
- // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
- $dpi_default = 72;
- } else {
- $dpi_default = 96;
- }
- $_resize = $dpi_default / $params['dpi'];
- $width = round($width * $_resize);
- $height = round($height * $_resize);
- }
-
- return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
-}
diff --git a/library/Smarty/libs/plugins/function.html_options.php b/library/Smarty/libs/plugins/function.html_options.php
deleted file mode 100644
index 7ec3e065c..000000000
--- a/library/Smarty/libs/plugins/function.html_options.php
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {html_options} function plugin
- * Type: function<br>
- * Name: html_options<br>
- * Purpose: Prints the list of <option> tags generated from
- * the passed parameters<br>
- * Params:
- * <pre>
- * - name (optional) - string default "select"
- * - values (required) - if no options supplied) - array
- * - options (required) - if no values supplied) - associative array
- * - selected (optional) - string default not set
- * - output (required) - if not options supplied) - array
- * - id (optional) - string default not set
- * - class (optional) - string default not set
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
- *
- * @param array $params parameters
- *
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_options($params)
-{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-
- $name = null;
- $values = null;
- $options = null;
- $selected = null;
- $output = null;
- $id = null;
- $class = null;
-
- $extra = '';
-
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'name':
- case 'class':
- case 'id':
- $$_key = (string) $_val;
- break;
-
- case 'options':
- $options = (array) $_val;
- break;
-
- case 'values':
- case 'output':
- $$_key = array_values((array) $_val);
- break;
-
- case 'selected':
- if (is_array($_val)) {
- $selected = array();
- foreach ($_val as $_sel) {
- if (is_object($_sel)) {
- if (method_exists($_sel, "__toString")) {
- $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
- } else {
- trigger_error("html_options: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
- continue;
- }
- } else {
- $_sel = smarty_function_escape_special_chars((string) $_sel);
- }
- $selected[$_sel] = true;
- }
- } elseif (is_object($_val)) {
- if (method_exists($_val, "__toString")) {
- $selected = smarty_function_escape_special_chars((string) $_val->__toString());
- } else {
- trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
- }
- } else {
- $selected = smarty_function_escape_special_chars((string) $_val);
- }
- break;
-
- case 'strict':
- break;
-
- case 'disabled':
- case 'readonly':
- if (!empty($params['strict'])) {
- if (!is_scalar($_val)) {
- trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
- }
-
- if ($_val === true || $_val === $_key) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
- }
-
- break;
- }
- // omit break; to fall through!
-
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (!isset($options) && !isset($values)) {
- /* raise error here? */
-
- return '';
- }
-
- $_html_result = '';
- $_idx = 0;
-
- if (isset($options)) {
- foreach ($options as $_key => $_val) {
- $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
- }
- } else {
- foreach ($values as $_i => $_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
- }
- }
-
- if (!empty($name)) {
- $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
- $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
- $_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
- }
-
- return $_html_result;
-}
-
-function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
-{
- if (!is_array($value)) {
- $_key = smarty_function_escape_special_chars($key);
- $_html_result = '<option value="' . $_key . '"';
- if (is_array($selected)) {
- if (isset($selected[$_key])) {
- $_html_result .= ' selected="selected"';
- }
- } elseif ($_key === $selected) {
- $_html_result .= ' selected="selected"';
- }
- $_html_class = !empty($class) ? ' class="' . $class . ' option"' : '';
- $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
- if (is_object($value)) {
- if (method_exists($value, "__toString")) {
- $value = smarty_function_escape_special_chars((string) $value->__toString());
- } else {
- trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
-
- return '';
- }
- } else {
- $value = smarty_function_escape_special_chars((string) $value);
- }
- $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
- $idx ++;
- } else {
- $_idx = 0;
- $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null, $class, $_idx);
- $idx ++;
- }
-
- return $_html_result;
-}
-
-function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
-{
- $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
- foreach ($values as $key => $value) {
- $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
- }
- $optgroup_html .= "</optgroup>\n";
-
- return $optgroup_html;
-}
diff --git a/library/Smarty/libs/plugins/function.html_radios.php b/library/Smarty/libs/plugins/function.html_radios.php
deleted file mode 100644
index f121d5eae..000000000
--- a/library/Smarty/libs/plugins/function.html_radios.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {html_radios} function plugin
- * File: function.html_radios.php<br>
- * Type: function<br>
- * Name: html_radios<br>
- * Date: 24.Feb.2003<br>
- * Purpose: Prints out a list of radio input types<br>
- * Params:
- * <pre>
- * - name (optional) - string default "radio"
- * - values (required) - array
- * - options (required) - associative array
- * - checked (optional) - array default not set
- * - separator (optional) - ie <br> or &nbsp;
- * - output (optional) - the output next to each radio button
- * - assign (optional) - assign the output as an array to this variable
- * - escape (optional) - escape the content (not value), defaults to true
- * </pre>
- * Examples:
- * <pre>
- * {html_radios values=$ids output=$names}
- * {html_radios values=$ids name='box' separator='<br>' output=$names}
- * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
- * </pre>
- *
- * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
- * @version 1.0
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string
- * @uses smarty_function_escape_special_chars()
- */
-function smarty_function_html_radios($params, $template)
-{
- require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-
- $name = 'radio';
- $values = null;
- $options = null;
- $selected = null;
- $separator = '';
- $escape = true;
- $labels = true;
- $label_ids = false;
- $output = null;
- $extra = '';
-
- foreach ($params as $_key => $_val) {
- switch ($_key) {
- case 'name':
- case 'separator':
- $$_key = (string) $_val;
- break;
-
- case 'checked':
- case 'selected':
- if (is_array($_val)) {
- trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
- } elseif (is_object($_val)) {
- if (method_exists($_val, "__toString")) {
- $selected = smarty_function_escape_special_chars((string) $_val->__toString());
- } else {
- trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
- }
- } else {
- $selected = (string) $_val;
- }
- break;
-
- case 'escape':
- case 'labels':
- case 'label_ids':
- $$_key = (bool) $_val;
- break;
-
- case 'options':
- $$_key = (array) $_val;
- break;
-
- case 'values':
- case 'output':
- $$_key = array_values((array) $_val);
- break;
-
- case 'radios':
- trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
- $options = (array) $_val;
- break;
-
- case 'assign':
- break;
-
- case 'strict':
- break;
-
- case 'disabled':
- case 'readonly':
- if (!empty($params['strict'])) {
- if (!is_scalar($_val)) {
- trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
- }
-
- if ($_val === true || $_val === $_key) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
- }
-
- break;
- }
- // omit break; to fall through!
-
- default:
- if (!is_array($_val)) {
- $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
- } else {
- trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (!isset($options) && !isset($values)) {
- /* raise error here? */
-
- return '';
- }
-
- $_html_result = array();
-
- if (isset($options)) {
- foreach ($options as $_key => $_val) {
- $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
- }
- } else {
- foreach ($values as $_i => $_key) {
- $_val = isset($output[$_i]) ? $output[$_i] : '';
- $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
- }
- }
-
- if (!empty($params['assign'])) {
- $template->assign($params['assign'], $_html_result);
- } else {
- return implode("\n", $_html_result);
- }
-}
-
-function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape)
-{
- $_output = '';
-
- if (is_object($value)) {
- if (method_exists($value, "__toString")) {
- $value = (string) $value->__toString();
- } else {
- trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
-
- return '';
- }
- } else {
- $value = (string) $value;
- }
-
- if (is_object($output)) {
- if (method_exists($output, "__toString")) {
- $output = (string) $output->__toString();
- } else {
- trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
-
- return '';
- }
- } else {
- $output = (string) $output;
- }
-
- if ($labels) {
- if ($label_ids) {
- $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
- $_output .= '<label for="' . $_id . '">';
- } else {
- $_output .= '<label>';
- }
- }
-
- $name = smarty_function_escape_special_chars($name);
- $value = smarty_function_escape_special_chars($value);
- if ($escape) {
- $output = smarty_function_escape_special_chars($output);
- }
-
- $_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
-
- if ($labels && $label_ids) {
- $_output .= ' id="' . $_id . '"';
- }
-
- if ($value === $selected) {
- $_output .= ' checked="checked"';
- }
-
- $_output .= $extra . ' />' . $output;
- if ($labels) {
- $_output .= '</label>';
- }
-
- $_output .= $separator;
-
- return $_output;
-}
diff --git a/library/Smarty/libs/plugins/function.html_select_date.php b/library/Smarty/libs/plugins/function.html_select_date.php
deleted file mode 100644
index d66256651..000000000
--- a/library/Smarty/libs/plugins/function.html_select_date.php
+++ /dev/null
@@ -1,387 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
-
-/**
- * Smarty {html_select_date} plugin
- * Type: function<br>
- * Name: html_select_date<br>
- * Purpose: Prints the dropdowns for date selection.
- * ChangeLog:
- * <pre>
- * - 1.0 initial release
- * - 1.1 added support for +/- N syntax for begin
- * and end year values. (Monte)
- * - 1.2 added support for yyyy-mm-dd syntax for
- * time value. (Jan Rosier)
- * - 1.3 added support for choosing format for
- * month values (Gary Loescher)
- * - 1.3.1 added support for choosing format for
- * day values (Marcus Bointon)
- * - 1.3.2 support negative timestamps, force year
- * dropdown to include given date unless explicitly set (Monte)
- * - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
- * of 0000-00-00 dates (cybot, boots)
- * - 2.0 complete rewrite for performance,
- * added attributes month_names, *_id
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
- * (Smarty online manual)
- * @version 2.0
- * @author Andrei Zmievski
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string
- */
-function smarty_function_html_select_date($params)
-{
- // generate timestamps used for month names only
- static $_month_timestamps = null;
- static $_current_year = null;
- if ($_month_timestamps === null) {
- $_current_year = date('Y');
- $_month_timestamps = array();
- for ($i = 1; $i <= 12; $i ++) {
- $_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
- }
- }
-
- /* Default values. */
- $prefix = "Date_";
- $start_year = null;
- $end_year = null;
- $display_days = true;
- $display_months = true;
- $display_years = true;
- $month_format = "%B";
- /* Write months as numbers by default GL */
- $month_value_format = "%m";
- $day_format = "%02d";
- /* Write day values using this format MB */
- $day_value_format = "%d";
- $year_as_text = false;
- /* Display years in reverse order? Ie. 2000,1999,.... */
- $reverse_years = false;
- /* Should the select boxes be part of an array when returned from PHP?
- e.g. setting it to "birthday", would create "birthday[Day]",
- "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
- $field_array = null;
- /* <select size>'s of the different <select> tags.
- If not set, uses default dropdown. */
- $day_size = null;
- $month_size = null;
- $year_size = null;
- /* Unparsed attributes common to *ALL* the <select>/<input> tags.
- An example might be in the template: all_extra ='class ="foo"'. */
- $all_extra = null;
- /* Separate attributes for the tags. */
- $day_extra = null;
- $month_extra = null;
- $year_extra = null;
- /* Order in which to display the fields.
- "D" -> day, "M" -> month, "Y" -> year. */
- $field_order = 'MDY';
- /* String printed between the different fields. */
- $field_separator = "\n";
- $option_separator = "\n";
- $time = null;
- // $all_empty = null;
- // $day_empty = null;
- // $month_empty = null;
- // $year_empty = null;
- $extra_attrs = '';
- $all_id = null;
- $day_id = null;
- $month_id = null;
- $year_id = null;
-
- foreach ($params as $_key => $_value) {
- switch ($_key) {
- case 'time':
- if (!is_array($_value) && $_value !== null) {
- $time = smarty_make_timestamp($_value);
- }
- break;
-
- case 'month_names':
- if (is_array($_value) && count($_value) == 12) {
- $$_key = $_value;
- } else {
- trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE);
- }
- break;
-
- case 'prefix':
- case 'field_array':
- case 'start_year':
- case 'end_year':
- case 'day_format':
- case 'day_value_format':
- case 'month_format':
- case 'month_value_format':
- case 'day_size':
- case 'month_size':
- case 'year_size':
- case 'all_extra':
- case 'day_extra':
- case 'month_extra':
- case 'year_extra':
- case 'field_order':
- case 'field_separator':
- case 'option_separator':
- case 'all_empty':
- case 'month_empty':
- case 'day_empty':
- case 'year_empty':
- case 'all_id':
- case 'month_id':
- case 'day_id':
- case 'year_id':
- $$_key = (string) $_value;
- break;
-
- case 'display_days':
- case 'display_months':
- case 'display_years':
- case 'year_as_text':
- case 'reverse_years':
- $$_key = (bool) $_value;
- break;
-
- default:
- if (!is_array($_value)) {
- $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
- } else {
- trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- // Note: date() is faster than strftime()
- // Note: explode(date()) is faster than date() date() date()
- if (isset($params['time']) && is_array($params['time'])) {
- if (isset($params['time'][$prefix . 'Year'])) {
- // $_REQUEST[$field_array] given
- foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$prefix . $_elementName])
- ? $params['time'][$prefix . $_elementName]
- : date($_elementKey);
- }
- } elseif (isset($params['time'][$field_array][$prefix . 'Year'])) {
- // $_REQUEST given
- foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
- ? $params['time'][$field_array][$prefix . $_elementName]
- : date($_elementKey);
- }
- } else {
- // no date found, use NOW
- list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
- }
- } elseif ($time === null) {
- if (array_key_exists('time', $params)) {
- $_year = $_month = $_day = $time = null;
- } else {
- list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
- }
- } else {
- list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time));
- }
-
- // make syntax "+N" or "-N" work with $start_year and $end_year
- // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
- foreach (array('start', 'end') as $key) {
- $key .= '_year';
- $t = $$key;
- if ($t === null) {
- $$key = (int) $_current_year;
- } elseif ($t[0] == '+') {
- $$key = (int) ($_current_year + (int)trim(substr($t, 1)));
- } elseif ($t[0] == '-') {
- $$key = (int) ($_current_year - (int)trim(substr($t, 1)));
- } else {
- $$key = (int) $$key;
- }
- }
-
- // flip for ascending or descending
- if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
- $t = $end_year;
- $end_year = $start_year;
- $start_year = $t;
- }
-
- // generate year <select> or <input>
- if ($display_years) {
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($year_extra) {
- $_extra .= ' ' . $year_extra;
- }
-
- if ($year_as_text) {
- $_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . $extra_attrs . ' />';
- } else {
- $_html_years = '<select name="' . $_name . '"';
- if ($year_id !== null || $all_id !== null) {
- $_html_years .= ' id="' . smarty_function_escape_special_chars(
- $year_id !== null ? ($year_id ? $year_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($year_size) {
- $_html_years .= ' size="' . $year_size . '"';
- }
- $_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($year_empty) || isset($all_empty)) {
- $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- $op = $start_year > $end_year ? - 1 : 1;
- for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
- $_html_years .= '<option value="' . $i . '"'
- . ($_year == $i ? ' selected="selected"' : '')
- . '>' . $i . '</option>' . $option_separator;
- }
-
- $_html_years .= '</select>';
- }
- }
-
- // generate month <select> or <input>
- if ($display_months) {
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($month_extra) {
- $_extra .= ' ' . $month_extra;
- }
-
- $_html_months = '<select name="' . $_name . '"';
- if ($month_id !== null || $all_id !== null) {
- $_html_months .= ' id="' . smarty_function_escape_special_chars(
- $month_id !== null ? ($month_id ? $month_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($month_size) {
- $_html_months .= ' size="' . $month_size . '"';
- }
- $_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($month_empty) || isset($all_empty)) {
- $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- for ($i = 1; $i <= 12; $i ++) {
- $_val = sprintf('%02d', $i);
- $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) : ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[$i]));
- $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[$i]);
- $_html_months .= '<option value="' . $_value . '"'
- . ($_val == $_month ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
- }
-
- $_html_months .= '</select>';
- }
-
- // generate day <select> or <input>
- if ($display_days) {
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($day_extra) {
- $_extra .= ' ' . $day_extra;
- }
-
- $_html_days = '<select name="' . $_name . '"';
- if ($day_id !== null || $all_id !== null) {
- $_html_days .= ' id="' . smarty_function_escape_special_chars(
- $day_id !== null ? ($day_id ? $day_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($day_size) {
- $_html_days .= ' size="' . $day_size . '"';
- }
- $_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($day_empty) || isset($all_empty)) {
- $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- for ($i = 1; $i <= 31; $i ++) {
- $_val = sprintf('%02d', $i);
- $_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
- $_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
- $_html_days .= '<option value="' . $_value . '"'
- . ($_val == $_day ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
- }
-
- $_html_days .= '</select>';
- }
-
- // order the fields for output
- $_html = '';
- for ($i = 0; $i <= 2; $i ++) {
- switch ($field_order[$i]) {
- case 'Y':
- case 'y':
- if (isset($_html_years)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $_html_years;
- }
- break;
-
- case 'm':
- case 'M':
- if (isset($_html_months)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $_html_months;
- }
- break;
-
- case 'd':
- case 'D':
- if (isset($_html_days)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $_html_days;
- }
- break;
- }
- }
-
- return $_html;
-}
diff --git a/library/Smarty/libs/plugins/function.html_select_time.php b/library/Smarty/libs/plugins/function.html_select_time.php
deleted file mode 100644
index 9af6aad5b..000000000
--- a/library/Smarty/libs/plugins/function.html_select_time.php
+++ /dev/null
@@ -1,364 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
-
-/**
- * Smarty {html_select_time} function plugin
- * Type: function<br>
- * Name: html_select_time<br>
- * Purpose: Prints the dropdowns for time selection
- *
- * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
- * (Smarty online manual)
- * @author Roberto Berto <roberto@berto.net>
- * @author Monte Ohrt <monte AT ohrt DOT com>
- *
- * @param array $params parameters
- *
- * @return string
- * @uses smarty_make_timestamp()
- */
-function smarty_function_html_select_time($params)
-{
- $prefix = "Time_";
- $field_array = null;
- $field_separator = "\n";
- $option_separator = "\n";
- $time = null;
-
- $display_hours = true;
- $display_minutes = true;
- $display_seconds = true;
- $display_meridian = true;
-
- $hour_format = '%02d';
- $hour_value_format = '%02d';
- $minute_format = '%02d';
- $minute_value_format = '%02d';
- $second_format = '%02d';
- $second_value_format = '%02d';
-
- $hour_size = null;
- $minute_size = null;
- $second_size = null;
- $meridian_size = null;
-
- $all_empty = null;
- $hour_empty = null;
- $minute_empty = null;
- $second_empty = null;
- $meridian_empty = null;
-
- $all_id = null;
- $hour_id = null;
- $minute_id = null;
- $second_id = null;
- $meridian_id = null;
-
- $use_24_hours = true;
- $minute_interval = 1;
- $second_interval = 1;
-
- $extra_attrs = '';
- $all_extra = null;
- $hour_extra = null;
- $minute_extra = null;
- $second_extra = null;
- $meridian_extra = null;
-
- foreach ($params as $_key => $_value) {
- switch ($_key) {
- case 'time':
- if (!is_array($_value) && $_value !== null) {
- $time = smarty_make_timestamp($_value);
- }
- break;
-
- case 'prefix':
- case 'field_array':
-
- case 'field_separator':
- case 'option_separator':
-
- case 'all_extra':
- case 'hour_extra':
- case 'minute_extra':
- case 'second_extra':
- case 'meridian_extra':
-
- case 'all_empty':
- case 'hour_empty':
- case 'minute_empty':
- case 'second_empty':
- case 'meridian_empty':
-
- case 'all_id':
- case 'hour_id':
- case 'minute_id':
- case 'second_id':
- case 'meridian_id':
-
- case 'hour_format':
- case 'hour_value_format':
- case 'minute_format':
- case 'minute_value_format':
- case 'second_format':
- case 'second_value_format':
- $$_key = (string) $_value;
- break;
-
- case 'display_hours':
- case 'display_minutes':
- case 'display_seconds':
- case 'display_meridian':
- case 'use_24_hours':
- $$_key = (bool) $_value;
- break;
-
- case 'minute_interval':
- case 'second_interval':
-
- case 'hour_size':
- case 'minute_size':
- case 'second_size':
- case 'meridian_size':
- $$_key = (int) $_value;
- break;
-
- default:
- if (!is_array($_value)) {
- $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
- } else {
- trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
- break;
- }
- }
-
- if (isset($params['time']) && is_array($params['time'])) {
- if (isset($params['time'][$prefix . 'Hour'])) {
- // $_REQUEST[$field_array] given
- foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$prefix . $_elementName])
- ? $params['time'][$prefix . $_elementName]
- : date($_elementKey);
- }
- $_meridian = isset($params['time'][$prefix . 'Meridian'])
- ? (' ' . $params['time'][$prefix . 'Meridian'])
- : '';
- $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
- // $_REQUEST given
- foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
- $_variableName = '_' . strtolower($_elementName);
- $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
- ? $params['time'][$field_array][$prefix . $_elementName]
- : date($_elementKey);
- }
- $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian'])
- ? (' ' . $params['time'][$field_array][$prefix . 'Meridian'])
- : '';
- $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- } else {
- // no date found, use NOW
- list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
- }
- } elseif ($time === null) {
- if (array_key_exists('time', $params)) {
- $_hour = $_minute = $_second = $time = null;
- } else {
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s'));
- }
- } else {
- list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
- }
-
- // generate hour <select>
- if ($display_hours) {
- $_html_hours = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($hour_extra) {
- $_extra .= ' ' . $hour_extra;
- }
-
- $_html_hours = '<select name="' . $_name . '"';
- if ($hour_id !== null || $all_id !== null) {
- $_html_hours .= ' id="' . smarty_function_escape_special_chars(
- $hour_id !== null ? ($hour_id ? $hour_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($hour_size) {
- $_html_hours .= ' size="' . $hour_size . '"';
- }
- $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($hour_empty) || isset($all_empty)) {
- $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- $start = $use_24_hours ? 0 : 1;
- $end = $use_24_hours ? 23 : 12;
- for ($i = $start; $i <= $end; $i ++) {
- $_val = sprintf('%02d', $i);
- $_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i);
- $_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
-
- if (!$use_24_hours) {
- $_hour12 = $_hour == 0
- ? 12
- : ($_hour <= 12 ? $_hour : $_hour - 12);
- }
-
- $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
- $_html_hours .= '<option value="' . $_value . '"'
- . ($selected ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
- }
-
- $_html_hours .= '</select>';
- }
-
- // generate minute <select>
- if ($display_minutes) {
- $_html_minutes = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($minute_extra) {
- $_extra .= ' ' . $minute_extra;
- }
-
- $_html_minutes = '<select name="' . $_name . '"';
- if ($minute_id !== null || $all_id !== null) {
- $_html_minutes .= ' id="' . smarty_function_escape_special_chars(
- $minute_id !== null ? ($minute_id ? $minute_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($minute_size) {
- $_html_minutes .= ' size="' . $minute_size . '"';
- }
- $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($minute_empty) || isset($all_empty)) {
- $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
- for ($i = 0; $i <= 59; $i += $minute_interval) {
- $_val = sprintf('%02d', $i);
- $_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
- $_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
- $_html_minutes .= '<option value="' . $_value . '"'
- . ($selected === $i ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
- }
-
- $_html_minutes .= '</select>';
- }
-
- // generate second <select>
- if ($display_seconds) {
- $_html_seconds = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($second_extra) {
- $_extra .= ' ' . $second_extra;
- }
-
- $_html_seconds = '<select name="' . $_name . '"';
- if ($second_id !== null || $all_id !== null) {
- $_html_seconds .= ' id="' . smarty_function_escape_special_chars(
- $second_id !== null ? ($second_id ? $second_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($second_size) {
- $_html_seconds .= ' size="' . $second_size . '"';
- }
- $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($second_empty) || isset($all_empty)) {
- $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
- for ($i = 0; $i <= 59; $i += $second_interval) {
- $_val = sprintf('%02d', $i);
- $_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
- $_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
- $_html_seconds .= '<option value="' . $_value . '"'
- . ($selected === $i ? ' selected="selected"' : '')
- . '>' . $_text . '</option>' . $option_separator;
- }
-
- $_html_seconds .= '</select>';
- }
-
- // generate meridian <select>
- if ($display_meridian && !$use_24_hours) {
- $_html_meridian = '';
- $_extra = '';
- $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
- if ($all_extra) {
- $_extra .= ' ' . $all_extra;
- }
- if ($meridian_extra) {
- $_extra .= ' ' . $meridian_extra;
- }
-
- $_html_meridian = '<select name="' . $_name . '"';
- if ($meridian_id !== null || $all_id !== null) {
- $_html_meridian .= ' id="' . smarty_function_escape_special_chars(
- $meridian_id !== null ? ($meridian_id ? $meridian_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
- ) . '"';
- }
- if ($meridian_size) {
- $_html_meridian .= ' size="' . $meridian_size . '"';
- }
- $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
-
- if (isset($meridian_empty) || isset($all_empty)) {
- $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) . '</option>' . $option_separator;
- }
-
- $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') . '>AM</option>' . $option_separator
- . '<option value="pm"' . ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator
- . '</select>';
- }
-
- $_html = '';
- foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) {
- if (isset($$k)) {
- if ($_html) {
- $_html .= $field_separator;
- }
- $_html .= $$k;
- }
- }
-
- return $_html;
-}
diff --git a/library/Smarty/libs/plugins/function.html_table.php b/library/Smarty/libs/plugins/function.html_table.php
deleted file mode 100644
index ec7ba48a4..000000000
--- a/library/Smarty/libs/plugins/function.html_table.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {html_table} function plugin
- * Type: function<br>
- * Name: html_table<br>
- * Date: Feb 17, 2003<br>
- * Purpose: make an html table from an array of data<br>
- * Params:
- * <pre>
- * - loop - array to loop through
- * - cols - number of columns, comma separated list of column names
- * or array of column names
- * - rows - number of rows
- * - table_attr - table attributes
- * - th_attr - table heading attributes (arrays are cycled)
- * - tr_attr - table row attributes (arrays are cycled)
- * - td_attr - table cell attributes (arrays are cycled)
- * - trailpad - value to pad trailing cells with
- * - caption - text for caption element
- * - vdir - vertical direction (default: "down", means top-to-bottom)
- * - hdir - horizontal direction (default: "right", means left-to-right)
- * - inner - inner loop (default "cols": print $loop line by line,
- * $loop will be printed column by column otherwise)
- * </pre>
- * Examples:
- * <pre>
- * {table loop=$data}
- * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
- * {table loop=$data cols="first,second,third" tr_attr=$colors}
- * </pre>
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
- * @author credit to boots <boots dot smarty at yahoo dot com>
- * @version 1.1
- * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
- * (Smarty online manual)
- *
- * @param array $params parameters
- *
- * @return string
- */
-function smarty_function_html_table($params)
-{
- $table_attr = 'border="1"';
- $tr_attr = '';
- $th_attr = '';
- $td_attr = '';
- $cols = $cols_count = 3;
- $rows = 3;
- $trailpad = '&nbsp;';
- $vdir = 'down';
- $hdir = 'right';
- $inner = 'cols';
- $caption = '';
- $loop = null;
-
- if (!isset($params['loop'])) {
- trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
-
- return;
- }
-
- foreach ($params as $_key => $_value) {
- switch ($_key) {
- case 'loop':
- $$_key = (array) $_value;
- break;
-
- case 'cols':
- if (is_array($_value) && !empty($_value)) {
- $cols = $_value;
- $cols_count = count($_value);
- } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
- $cols = explode(',', $_value);
- $cols_count = count($cols);
- } elseif (!empty($_value)) {
- $cols_count = (int) $_value;
- } else {
- $cols_count = $cols;
- }
- break;
-
- case 'rows':
- $$_key = (int) $_value;
- break;
-
- case 'table_attr':
- case 'trailpad':
- case 'hdir':
- case 'vdir':
- case 'inner':
- case 'caption':
- $$_key = (string) $_value;
- break;
-
- case 'tr_attr':
- case 'td_attr':
- case 'th_attr':
- $$_key = $_value;
- break;
- }
- }
-
- $loop_count = count($loop);
- if (empty($params['rows'])) {
- /* no rows specified */
- $rows = ceil($loop_count / $cols_count);
- } elseif (empty($params['cols'])) {
- if (!empty($params['rows'])) {
- /* no cols specified, but rows */
- $cols_count = ceil($loop_count / $rows);
- }
- }
-
- $output = "<table $table_attr>\n";
-
- if (!empty($caption)) {
- $output .= '<caption>' . $caption . "</caption>\n";
- }
-
- if (is_array($cols)) {
- $cols = ($hdir == 'right') ? $cols : array_reverse($cols);
- $output .= "<thead><tr>\n";
-
- for ($r = 0; $r < $cols_count; $r ++) {
- $output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
- $output .= $cols[$r];
- $output .= "</th>\n";
- }
- $output .= "</tr></thead>\n";
- }
-
- $output .= "<tbody>\n";
- for ($r = 0; $r < $rows; $r ++) {
- $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
- $rx = ($vdir == 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
-
- for ($c = 0; $c < $cols_count; $c ++) {
- $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
- if ($inner != 'cols') {
- /* shuffle x to loop over rows*/
- $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
- }
-
- if ($x < $loop_count) {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
- } else {
- $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
- }
- }
- $output .= "</tr>\n";
- }
- $output .= "</tbody>\n";
- $output .= "</table>\n";
-
- return $output;
-}
-
-function smarty_function_html_table_cycle($name, $var, $no)
-{
- if (!is_array($var)) {
- $ret = $var;
- } else {
- $ret = $var[$no % count($var)];
- }
-
- return ($ret) ? ' ' . $ret : '';
-}
diff --git a/library/Smarty/libs/plugins/function.mailto.php b/library/Smarty/libs/plugins/function.mailto.php
deleted file mode 100644
index 520fb7aa6..000000000
--- a/library/Smarty/libs/plugins/function.mailto.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {mailto} function plugin
- * Type: function<br>
- * Name: mailto<br>
- * Date: May 21, 2002
- * Purpose: automate mailto address link creation, and optionally encode them.<br>
- * Params:
- * <pre>
- * - address - (required) - e-mail address
- * - text - (optional) - text to display, default is address
- * - encode - (optional) - can be one of:
- * * none : no encoding (default)
- * * javascript : encode with javascript
- * * javascript_charcode : encode with javascript charcode
- * * hex : encode with hexidecimal (no javascript)
- * - cc - (optional) - address(es) to carbon copy
- * - bcc - (optional) - address(es) to blind carbon copy
- * - subject - (optional) - e-mail subject
- * - newsgroups - (optional) - newsgroup(s) to post to
- * - followupto - (optional) - address(es) to follow up to
- * - extra - (optional) - extra tags for the href link
- * </pre>
- * Examples:
- * <pre>
- * {mailto address="me@domain.com"}
- * {mailto address="me@domain.com" encode="javascript"}
- * {mailto address="me@domain.com" encode="hex"}
- * {mailto address="me@domain.com" subject="Hello to you!"}
- * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
- * {mailto address="me@domain.com" extra='class="mailto"'}
- * </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
- * (Smarty online manual)
- * @version 1.2
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credits to Jason Sweat (added cc, bcc and subject functionality)
- *
- * @param array $params parameters
- *
- * @return string
- */
-function smarty_function_mailto($params)
-{
- static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
- $extra = '';
-
- if (empty($params['address'])) {
- trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
-
- return;
- } else {
- $address = $params['address'];
- }
-
- $text = $address;
- // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
- // so, don't encode it.
- $search = array('%40', '%2C');
- $replace = array('@', ',');
- $mail_parms = array();
- foreach ($params as $var => $value) {
- switch ($var) {
- case 'cc':
- case 'bcc':
- case 'followupto':
- if (!empty($value)) {
- $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
- }
- break;
-
- case 'subject':
- case 'newsgroups':
- $mail_parms[] = $var . '=' . rawurlencode($value);
- break;
-
- case 'extra':
- case 'text':
- $$var = $value;
-
- default:
- }
- }
-
- if ($mail_parms) {
- $address .= '?' . join('&', $mail_parms);
- }
-
- $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
- if (!isset($_allowed_encoding[$encode])) {
- trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING);
-
- return;
- }
- // FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
- if ($encode == 'javascript') {
- $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
-
- $js_encode = '';
- for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) {
- $js_encode .= '%' . bin2hex($string[$x]);
- }
-
- return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
- } elseif ($encode == 'javascript_charcode') {
- $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
-
- for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
- $ord[] = ord($string[$x]);
- }
-
- $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n"
- . "{document.write(String.fromCharCode("
- . implode(',', $ord)
- . "))"
- . "}\n"
- . "</script>\n";
-
- return $_ret;
- } elseif ($encode == 'hex') {
- preg_match('!^(.*)(\?.*)$!', $address, $match);
- if (!empty($match[2])) {
- trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
-
- return;
- }
- $address_encode = '';
- for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) {
- if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[$x])) {
- $address_encode .= '%' . bin2hex($address[$x]);
- } else {
- $address_encode .= $address[$x];
- }
- }
- $text_encode = '';
- for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) {
- $text_encode .= '&#x' . bin2hex($text[$x]) . ';';
- }
-
- $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
-
- return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
- } else {
- // no encoding
- return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
- }
-}
diff --git a/library/Smarty/libs/plugins/function.math.php b/library/Smarty/libs/plugins/function.math.php
deleted file mode 100644
index aba76e825..000000000
--- a/library/Smarty/libs/plugins/function.math.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * This plugin is only for Smarty2 BC
- *
- * @package Smarty
- * @subpackage PluginsFunction
- */
-
-/**
- * Smarty {math} function plugin
- * Type: function<br>
- * Name: math<br>
- * Purpose: handle math computations in template
- *
- * @link http://www.smarty.net/manual/en/language.function.math.php {math}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- *
- * @return string|null
- */
-function smarty_function_math($params, $template)
-{
- static $_allowed_funcs = array(
- 'int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
- 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true,
- 'rand' => true, 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true
- );
- // be sure equation parameter is present
- if (empty($params['equation'])) {
- trigger_error("math: missing equation parameter", E_USER_WARNING);
-
- return;
- }
-
- $equation = $params['equation'];
-
- // make sure parenthesis are balanced
- if (substr_count($equation, "(") != substr_count($equation, ")")) {
- trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
-
- return;
- }
-
- // match all vars in equation, make sure all are passed
- preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]*)!", $equation, $match);
-
- foreach ($match[1] as $curr_var) {
- if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) {
- trigger_error("math: function call $curr_var not allowed", E_USER_WARNING);
-
- return;
- }
- }
-
- foreach ($params as $key => $val) {
- if ($key != "equation" && $key != "format" && $key != "assign") {
- // make sure value is not empty
- if (strlen($val) == 0) {
- trigger_error("math: parameter $key is empty", E_USER_WARNING);
-
- return;
- }
- if (!is_numeric($val)) {
- trigger_error("math: parameter $key: is not numeric", E_USER_WARNING);
-
- return;
- }
- $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
- }
- }
- $smarty_math_result = null;
- eval("\$smarty_math_result = " . $equation . ";");
-
- if (empty($params['format'])) {
- if (empty($params['assign'])) {
- return $smarty_math_result;
- } else {
- $template->assign($params['assign'], $smarty_math_result);
- }
- } else {
- if (empty($params['assign'])) {
- printf($params['format'], $smarty_math_result);
- } else {
- $template->assign($params['assign'], sprintf($params['format'], $smarty_math_result));
- }
- }
-}
diff --git a/library/Smarty/libs/plugins/modifier.capitalize.php b/library/Smarty/libs/plugins/modifier.capitalize.php
deleted file mode 100644
index a8ad76370..000000000
--- a/library/Smarty/libs/plugins/modifier.capitalize.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty capitalize modifier plugin
- * Type: modifier<br>
- * Name: capitalize<br>
- * Purpose: capitalize words in the string
- * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
- *
- * @param string $string string to capitalize
- * @param boolean $uc_digits also capitalize "x123" to "X123"
- * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
- *
- * @return string capitalized string
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Rodney Rehm
- */
-function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
-{
- if (Smarty::$_MBSTRING) {
- if ($lc_rest) {
- // uppercase (including hyphenated words)
- $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
- } else {
- // uppercase word breaks
- $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert_cb', $string);
- }
- // check uc_digits case
- if (!$uc_digits) {
- if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
- foreach ($matches[1] as $match) {
- $upper_string = substr_replace($upper_string, mb_strtolower($match[0], Smarty::$_CHARSET), $match[1], strlen($match[0]));
- }
- }
- }
- $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb', $upper_string);
- return $upper_string;
- }
-
- // lowercase first
- if ($lc_rest) {
- $string = strtolower($string);
- }
- // uppercase (including hyphenated words)
- $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb', $string);
- // check uc_digits case
- if (!$uc_digits) {
- if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
- foreach ($matches[1] as $match) {
- $upper_string = substr_replace($upper_string, strtolower($match[0]), $match[1], strlen($match[0]));
- }
- }
- }
- $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb', $upper_string);
- return $upper_string;
-}
-
-/*
- *
- * Bug: create_function() use exhausts memory when used in long loops
- * Fix: use declared functions for callbacks instead of using create_function()
- * Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3
- *
- * @author Kyle Renfrow
- */
-function smarty_mod_cap_mbconvert_cb($matches)
-{
- return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, Smarty::$_CHARSET);
-}
-
-function smarty_mod_cap_mbconvert2_cb($matches)
-{
- return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[3]), MB_CASE_UPPER, Smarty::$_CHARSET);
-}
-
-function smarty_mod_cap_ucfirst_cb($matches)
-{
- return stripslashes($matches[1]) . ucfirst(stripslashes($matches[2]));
-}
-
-function smarty_mod_cap_ucfirst2_cb($matches)
-{
- return stripslashes($matches[1]) . ucfirst(stripslashes($matches[3]));
-}
diff --git a/library/Smarty/libs/plugins/modifier.date_format.php b/library/Smarty/libs/plugins/modifier.date_format.php
deleted file mode 100644
index 28d6ff021..000000000
--- a/library/Smarty/libs/plugins/modifier.date_format.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty date_format modifier plugin
- * Type: modifier<br>
- * Name: date_format<br>
- * Purpose: format datestamps via strftime<br>
- * Input:<br>
- * - string: input date string
- * - format: strftime format for output
- * - default_date: default date if $string is empty
- *
- * @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input date string
- * @param string $format strftime format for output
- * @param string $default_date default date if $string is empty
- * @param string $formatter either 'strftime' or 'auto'
- *
- * @return string |void
- * @uses smarty_make_timestamp()
- */
-function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
-{
- if ($format === null) {
- $format = Smarty::$_DATE_FORMAT;
- }
- /**
- * require_once the {@link shared.make_timestamp.php} plugin
- */
- require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
- if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') {
- $timestamp = smarty_make_timestamp($string);
- } elseif ($default_date != '') {
- $timestamp = smarty_make_timestamp($default_date);
- } else {
- return;
- }
- if ($formatter == 'strftime' || ($formatter == 'auto' && strpos($format, '%') !== false)) {
- if (DS == '\\') {
- $_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
- $_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
- if (strpos($format, '%e') !== false) {
- $_win_from[] = '%e';
- $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
- }
- if (strpos($format, '%l') !== false) {
- $_win_from[] = '%l';
- $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
- }
- $format = str_replace($_win_from, $_win_to, $format);
- }
-
- return strftime($format, $timestamp);
- } else {
- return date($format, $timestamp);
- }
-}
diff --git a/library/Smarty/libs/plugins/modifier.debug_print_var.php b/library/Smarty/libs/plugins/modifier.debug_print_var.php
deleted file mode 100644
index 4ff8213ce..000000000
--- a/library/Smarty/libs/plugins/modifier.debug_print_var.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage Debug
- */
-
-/**
- * Smarty debug_print_var modifier plugin
- * Type: modifier<br>
- * Name: debug_print_var<br>
- * Purpose: formats variable contents for display in the console
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param array|object $var variable to be formatted
- * @param int $max maximum recursion depth if $var is an array or object
- * @param int $length maximum string length if $var is a string
- * @param int $depth actual recursion depth
- * @param array $objects processed objects in actual depth to prevent recursive object processing
- *
- * @return string
- */
-function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
-{
- $_replace = array("\n" => '\n',
- "\r" => '\r',
- "\t" => '\t'
- );
- switch (gettype($var)) {
- case 'array' :
- $results = '<b>Array (' . count($var) . ')</b>';
- if ($depth == $max) {
- break;
- }
- foreach ($var as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
- . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
- $depth --;
- }
- break;
-
- case 'object' :
- $object_vars = get_object_vars($var);
- $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
- if (in_array($var, $objects)) {
- $results .= ' called recursive';
- break;
- }
- if ($depth == $max) {
- break;
- }
- $objects[] = $var;
- foreach ($object_vars as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
- . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
- $depth --;
- }
- break;
-
- case 'boolean' :
- case 'NULL' :
- case 'resource' :
- if (true === $var) {
- $results = 'true';
- } elseif (false === $var) {
- $results = 'false';
- } elseif (null === $var) {
- $results = 'null';
- } else {
- $results = htmlspecialchars((string) $var);
- }
- $results = '<i>' . $results . '</i>';
- break;
-
- case 'integer' :
- case 'float' :
- $results = htmlspecialchars((string) $var);
- break;
-
- case 'string' :
- $results = strtr($var, $_replace);
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($var, Smarty::$_CHARSET) > $length) {
- $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...';
- }
- } else {
- if (isset($var[$length])) {
- $results = substr($var, 0, $length - 3) . '...';
- }
- }
-
- $results = htmlspecialchars('"' . $results . '"');
- break;
-
- case 'unknown type' :
- default :
- $results = strtr((string) $var, $_replace);
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($results, Smarty::$_CHARSET) > $length) {
- $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...';
- }
- } else {
- if (strlen($results) > $length) {
- $results = substr($results, 0, $length - 3) . '...';
- }
- }
-
- $results = htmlspecialchars($results);
- }
-
- return $results;
-}
diff --git a/library/Smarty/libs/plugins/modifier.escape.php b/library/Smarty/libs/plugins/modifier.escape.php
deleted file mode 100644
index 9fdb0702f..000000000
--- a/library/Smarty/libs/plugins/modifier.escape.php
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty escape modifier plugin
- * Type: modifier<br>
- * Name: escape<br>
- * Purpose: escape string for output
- *
- * @link http://www.smarty.net/docs/en/language.modifier.escape
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param string $esc_type escape type
- * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
- * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
- *
- * @return string escaped input string
- */
-function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
-{
- static $_double_encode = null;
- if ($_double_encode === null) {
- $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
- }
-
- if (!$char_set) {
- $char_set = Smarty::$_CHARSET;
- }
-
- switch ($esc_type) {
- case 'html':
- if ($_double_encode) {
- // php >=5.3.2 - go native
- return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
- } else {
- if ($double_encode) {
- // php <5.2.3 - only handle double encoding
- return htmlspecialchars($string, ENT_QUOTES, $char_set);
- } else {
- // php <5.2.3 - prevent double encoding
- $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
- $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
-
- return $string;
- }
- }
-
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- // mb_convert_encoding ignores htmlspecialchars()
- if ($_double_encode) {
- // php >=5.3.2 - go native
- $string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
- } else {
- if ($double_encode) {
- // php <5.2.3 - only handle double encoding
- $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
- } else {
- // php <5.2.3 - prevent double encoding
- $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
- $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
-
- return $string;
- }
- }
-
- // htmlentities() won't convert everything, so use mb_convert_encoding
- return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set);
- }
-
- // no MBString fallback
- if ($_double_encode) {
- return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
- } else {
- if ($double_encode) {
- return htmlentities($string, ENT_QUOTES, $char_set);
- } else {
- $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
- $string = htmlentities($string, ENT_QUOTES, $char_set);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
-
- return $string;
- }
- }
-
- case 'url':
- return rawurlencode($string);
-
- case 'urlpathinfo':
- return str_replace('%2F', '/', rawurlencode($string));
-
- case 'quotes':
- // escape unescaped single quotes
- return preg_replace("%(?<!\\\\)'%", "\\'", $string);
-
- case 'hex':
- // escape every byte into hex
- // Note that the UTF-8 encoded character ä will be represented as %c3%a4
- $return = '';
- $_length = strlen($string);
- for ($x = 0; $x < $_length; $x ++) {
- $return .= '%' . bin2hex($string[$x]);
- }
-
- return $return;
-
- case 'hexentity':
- $return = '';
- if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
- $return = '';
- foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
- $return .= '&#x' . strtoupper(dechex($unicode)) . ';';
- }
-
- return $return;
- }
- // no MBString fallback
- $_length = strlen($string);
- for ($x = 0; $x < $_length; $x ++) {
- $return .= '&#x' . bin2hex($string[$x]) . ';';
- }
-
- return $return;
-
- case 'decentity':
- $return = '';
- if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
- $return = '';
- foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
- $return .= '&#' . $unicode . ';';
- }
-
- return $return;
- }
- // no MBString fallback
- $_length = strlen($string);
- for ($x = 0; $x < $_length; $x ++) {
- $return .= '&#' . ord($string[$x]) . ';';
- }
-
- return $return;
-
- case 'javascript':
- // escape quotes and backslashes, newlines, etc.
- return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/'));
-
- case 'mail':
- if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
-
- return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
- }
- // no MBString fallback
- return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
-
- case 'nonstd':
- // escape non-standard chars, such as ms document quotes
- $return = '';
- if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
- foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
- if ($unicode >= 126) {
- $return .= '&#' . $unicode . ';';
- } else {
- $return .= chr($unicode);
- }
- }
-
- return $return;
- }
-
- $_length = strlen($string);
- for ($_i = 0; $_i < $_length; $_i ++) {
- $_ord = ord(substr($string, $_i, 1));
- // non-standard char, escape it
- if ($_ord >= 126) {
- $return .= '&#' . $_ord . ';';
- } else {
- $return .= substr($string, $_i, 1);
- }
- }
-
- return $return;
-
- default:
- return $string;
- }
-}
diff --git a/library/Smarty/libs/plugins/modifier.regex_replace.php b/library/Smarty/libs/plugins/modifier.regex_replace.php
deleted file mode 100644
index ffea16755..000000000
--- a/library/Smarty/libs/plugins/modifier.regex_replace.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty regex_replace modifier plugin
- * Type: modifier<br>
- * Name: regex_replace<br>
- * Purpose: regular expression search/replace
- *
- * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
- * regex_replace (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param string|array $search regular expression(s) to search for
- * @param string|array $replace string(s) that should be replaced
- * @param int $limit the maximum number of replacements
- *
- * @return string
- */
-function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1)
-{
- if (is_array($search)) {
- foreach ($search as $idx => $s) {
- $search[$idx] = _smarty_regex_replace_check($s);
- }
- } else {
- $search = _smarty_regex_replace_check($search);
- }
-
- return preg_replace($search, $replace, $string, $limit);
-}
-
-/**
- * @param string $search string(s) that should be replaced
- *
- * @return string
- * @ignore
- */
-function _smarty_regex_replace_check($search)
-{
- // null-byte injection detection
- // anything behind the first null-byte is ignored
- if (($pos = strpos($search, "\0")) !== false) {
- $search = substr($search, 0, $pos);
- }
- // remove eval-modifier from $search
- if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
- $search = substr($search, 0, - strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
- }
-
- return $search;
-}
diff --git a/library/Smarty/libs/plugins/modifier.replace.php b/library/Smarty/libs/plugins/modifier.replace.php
deleted file mode 100644
index aa5e8570b..000000000
--- a/library/Smarty/libs/plugins/modifier.replace.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty replace modifier plugin
- * Type: modifier<br>
- * Name: replace<br>
- * Purpose: simple search/replace
- *
- * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- *
- * @param string $string input string
- * @param string $search text to search for
- * @param string $replace replacement text
- *
- * @return string
- */
-function smarty_modifier_replace($string, $search, $replace)
-{
- if (Smarty::$_MBSTRING) {
- require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
-
- return smarty_mb_str_replace($search, $replace, $string);
- }
-
- return str_replace($search, $replace, $string);
-}
diff --git a/library/Smarty/libs/plugins/modifier.truncate.php b/library/Smarty/libs/plugins/modifier.truncate.php
deleted file mode 100644
index fbe62e823..000000000
--- a/library/Smarty/libs/plugins/modifier.truncate.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifier
- */
-
-/**
- * Smarty truncate modifier plugin
- * Type: modifier<br>
- * Name: truncate<br>
- * Purpose: Truncate a string to a certain length if necessary,
- * optionally splitting in the middle of a word, and
- * appending the $etc string or inserting $etc into the middle.
- *
- * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string input string
- * @param integer $length length of truncated text
- * @param string $etc end string
- * @param boolean $break_words truncate at word boundary
- * @param boolean $middle truncate in the middle of text
- *
- * @return string truncated string
- */
-function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
-{
- if ($length == 0) {
- return '';
- }
-
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
- $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
- if (!$break_words && !$middle) {
- $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
- }
- if (!$middle) {
- return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
- }
-
- return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
- }
-
- return $string;
- }
-
- // no MBString fallback
- if (isset($string[$length])) {
- $length -= min($length, strlen($etc));
- if (!$break_words && !$middle) {
- $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
- }
- if (!$middle) {
- return substr($string, 0, $length) . $etc;
- }
-
- return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
- }
-
- return $string;
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php b/library/Smarty/libs/plugins/modifiercompiler.count_characters.php
deleted file mode 100644
index f8463d80a..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_characters modifier plugin
- * Type: modifier<br>
- * Name: count_characteres<br>
- * Purpose: count the number of characters in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_characters($params)
-{
- if (!isset($params[1]) || $params[1] != 'true') {
- return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)';
- }
- if (Smarty::$_MBSTRING) {
- return 'mb_strlen(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strlen(' . $params[0] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php b/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php
deleted file mode 100644
index 34f0bbb8a..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_paragraphs modifier plugin
- * Type: modifier<br>
- * Name: count_paragraphs<br>
- * Purpose: count the number of paragraphs in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
- * count_paragraphs (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_paragraphs($params)
-{
- // count \r or \n characters
- return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php b/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php
deleted file mode 100644
index f1ec56007..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_sentences modifier plugin
- * Type: modifier<br>
- * Name: count_sentences
- * Purpose: count the number of sentences in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
- * count_sentences (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_sentences($params)
-{
- // find periods, question marks, exclamation marks with a word before but not after.
- return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_words.php b/library/Smarty/libs/plugins/modifiercompiler.count_words.php
deleted file mode 100644
index 8b4330f1e..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.count_words.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_words modifier plugin
- * Type: modifier<br>
- * Name: count_words<br>
- * Purpose: count the number of words in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_words($params)
-{
- if (Smarty::$_MBSTRING) {
- // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
- // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
- return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
- }
- // no MBString fallback
- return 'str_word_count(' . $params[0] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.default.php b/library/Smarty/libs/plugins/modifiercompiler.default.php
deleted file mode 100644
index fe777623e..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.default.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty default modifier plugin
- * Type: modifier<br>
- * Name: default<br>
- * Purpose: designate default value for empty variables
- *
- * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_default($params)
-{
- $output = $params[0];
- if (!isset($params[1])) {
- $params[1] = "''";
- }
-
- array_shift($params);
- foreach ($params as $param) {
- $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)';
- }
-
- return $output;
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.escape.php b/library/Smarty/libs/plugins/modifiercompiler.escape.php
deleted file mode 100644
index 0b29220ef..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.escape.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * @ignore
- */
-require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
-
-/**
- * Smarty escape modifier plugin
- * Type: modifier<br>
- * Name: escape<br>
- * Purpose: escape string for output
- *
- * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
- * @author Rodney Rehm
- *
- * @param array $params parameters
- * @param $compiler
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_escape($params, $compiler)
-{
- static $_double_encode = null;
- if ($_double_encode === null) {
- $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
- }
-
- try {
- $esc_type = smarty_literal_compiler_param($params, 1, 'html');
- $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
- $double_encode = smarty_literal_compiler_param($params, 3, true);
-
- if (!$char_set) {
- $char_set = Smarty::$_CHARSET;
- }
-
- switch ($esc_type) {
- case 'html':
- if ($_double_encode) {
- return 'htmlspecialchars('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true) . ')';
- } elseif ($double_encode) {
- return 'htmlspecialchars('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ')';
- } else {
- // fall back to modifier.escape.php
- }
-
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- if ($_double_encode) {
- // php >=5.2.3 - go native
- return 'mb_convert_encoding(htmlspecialchars('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true)
- . '), "HTML-ENTITIES", '
- . var_export($char_set, true) . ')';
- } elseif ($double_encode) {
- // php <5.2.3 - only handle double encoding
- return 'mb_convert_encoding(htmlspecialchars('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true)
- . '), "HTML-ENTITIES", '
- . var_export($char_set, true) . ')';
- } else {
- // fall back to modifier.escape.php
- }
- }
-
- // no MBString fallback
- if ($_double_encode) {
- // php >=5.2.3 - go native
- return 'htmlentities('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true) . ')';
- } elseif ($double_encode) {
- // php <5.2.3 - only handle double encoding
- return 'htmlentities('
- . $params[0] . ', ENT_QUOTES, '
- . var_export($char_set, true) . ')';
- } else {
- // fall back to modifier.escape.php
- }
-
- case 'url':
- return 'rawurlencode(' . $params[0] . ')';
-
- case 'urlpathinfo':
- return 'str_replace("%2F", "/", rawurlencode(' . $params[0] . '))';
-
- case 'quotes':
- // escape unescaped single quotes
- return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[0] . ')';
-
- case 'javascript':
- // escape quotes and backslashes, newlines, etc.
- return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
- }
- }
- catch (SmartyException $e) {
- // pass through to regular plugin fallback
- }
-
- // could not optimize |escape call, so fallback to regular plugin
- if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
- $compiler->parent_compiler->template->compiled->required_plugins['nocache']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php';
- $compiler->parent_compiler->template->compiled->required_plugins['nocache']['escape']['modifier']['function'] = 'smarty_modifier_escape';
- } else {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php';
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['escape']['modifier']['function'] = 'smarty_modifier_escape';
- }
-
- return 'smarty_modifier_escape(' . join(', ', $params) . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php b/library/Smarty/libs/plugins/modifiercompiler.from_charset.php
deleted file mode 100644
index dab43e9c3..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty from_charset modifier plugin
- * Type: modifier<br>
- * Name: from_charset<br>
- * Purpose: convert character encoding from $charset to internal encoding
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_from_charset($params)
-{
- if (!Smarty::$_MBSTRING) {
- // FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[0];
- }
-
- if (!isset($params[1])) {
- $params[1] = '"ISO-8859-1"';
- }
-
- return 'mb_convert_encoding(' . $params[0] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[1] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.indent.php b/library/Smarty/libs/plugins/modifiercompiler.indent.php
deleted file mode 100644
index e3ca20821..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.indent.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty indent modifier plugin
- * Type: modifier<br>
- * Name: indent<br>
- * Purpose: indent lines of text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-
-function smarty_modifiercompiler_indent($params)
-{
- if (!isset($params[1])) {
- $params[1] = 4;
- }
- if (!isset($params[2])) {
- $params[2] = "' '";
- }
-
- return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.lower.php b/library/Smarty/libs/plugins/modifiercompiler.lower.php
deleted file mode 100644
index 1d255f371..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.lower.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty lower modifier plugin
- * Type: modifier<br>
- * Name: lower<br>
- * Purpose: convert string to lowercase
- *
- * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-
-function smarty_modifiercompiler_lower($params)
-{
- if (Smarty::$_MBSTRING) {
- return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strtolower(' . $params[0] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.string_format.php b/library/Smarty/libs/plugins/modifiercompiler.string_format.php
deleted file mode 100644
index 71cdf2819..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.string_format.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty string_format modifier plugin
- * Type: modifier<br>
- * Name: string_format<br>
- * Purpose: format strings via sprintf
- *
- * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_string_format($params)
-{
- return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip.php b/library/Smarty/libs/plugins/modifiercompiler.strip.php
deleted file mode 100644
index fcd6cbaea..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.strip.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty strip modifier plugin
- * Type: modifier<br>
- * Name: strip<br>
- * Purpose: Replace all repeated spaces, newlines, tabs
- * with a single space or supplied replacement string.<br>
- * Example: {$var|strip} {$var|strip:"&nbsp;"}<br>
- * Date: September 25th, 2002
- *
- * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-
-function smarty_modifiercompiler_strip($params)
-{
- if (!isset($params[1])) {
- $params[1] = "' '";
- }
-
- return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php b/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php
deleted file mode 100644
index da5d364cb..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty strip_tags modifier plugin
- * Type: modifier<br>
- * Name: strip_tags<br>
- * Purpose: strip html tags from text
- *
- * @link http://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_strip_tags($params)
-{
- if (!isset($params[1]) || $params[1] === true || trim($params[1], '"') == 'true') {
- return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
- } else {
- return 'strip_tags(' . $params[0] . ')';
- }
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php b/library/Smarty/libs/plugins/modifiercompiler.to_charset.php
deleted file mode 100644
index 9122d8bbb..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty to_charset modifier plugin
- * Type: modifier<br>
- * Name: to_charset<br>
- * Purpose: convert character encoding from internal encoding to $charset
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_to_charset($params)
-{
- if (!Smarty::$_MBSTRING) {
- // FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[0];
- }
-
- if (!isset($params[1])) {
- $params[1] = '"ISO-8859-1"';
- }
-
- return 'mb_convert_encoding(' . $params[0] . ', ' . $params[1] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.unescape.php b/library/Smarty/libs/plugins/modifiercompiler.unescape.php
deleted file mode 100644
index 3b17ea2e1..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.unescape.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty unescape modifier plugin
- * Type: modifier<br>
- * Name: unescape<br>
- * Purpose: unescape html entities
- *
- * @author Rodney Rehm
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_unescape($params)
-{
- if (!isset($params[1])) {
- $params[1] = 'html';
- }
- if (!isset($params[2])) {
- $params[2] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
- } else {
- $params[2] = "'" . $params[2] . "'";
- }
-
- switch (trim($params[1], '"\'')) {
- case 'entity':
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- return 'mb_convert_encoding(' . $params[0] . ', ' . $params[2] . ', \'HTML-ENTITIES\')';
- }
-
- return 'html_entity_decode(' . $params[0] . ', ENT_NOQUOTES, ' . $params[2] . ')';
-
- case 'html':
- return 'htmlspecialchars_decode(' . $params[0] . ', ENT_QUOTES)';
-
- case 'url':
- return 'rawurldecode(' . $params[0] . ')';
-
- default:
- return $params[0];
- }
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.upper.php b/library/Smarty/libs/plugins/modifiercompiler.upper.php
deleted file mode 100644
index 52ca4e8ff..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.upper.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty upper modifier plugin
- * Type: modifier<br>
- * Name: lower<br>
- * Purpose: convert string to uppercase
- *
- * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_upper($params)
-{
- if (Smarty::$_MBSTRING) {
- return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strtoupper(' . $params[0] . ')';
-}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php b/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php
deleted file mode 100644
index 6bb63247d..000000000
--- a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty wordwrap modifier plugin
- * Type: modifier<br>
- * Name: wordwrap<br>
- * Purpose: wrap a string of text at a given length
- *
- * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
- * @author Uwe Tews
- *
- * @param array $params parameters
- * @param $compiler
- *
- * @return string with compiled code
- */
-function smarty_modifiercompiler_wordwrap($params, $compiler)
-{
- if (!isset($params[1])) {
- $params[1] = 80;
- }
- if (!isset($params[2])) {
- $params[2] = '"\n"';
- }
- if (!isset($params[3])) {
- $params[3] = 'false';
- }
- $function = 'wordwrap';
- if (Smarty::$_MBSTRING) {
- if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
- $compiler->parent_compiler->template->compiled->required_plugins['nocache']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
- $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
- } else {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
- $compiler->parent_compiler->template->compiled->required_plugins['compiled']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
- }
- $function = 'smarty_mb_wordwrap';
- }
-
- return $function . '(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')';
-}
diff --git a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php b/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php
deleted file mode 100644
index ad35d11a2..000000000
--- a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsFilter
- */
-
-/**
- * Smarty trimwhitespace outputfilter plugin
- * Trim unnecessary whitespace from HTML markup.
- *
- * @author Rodney Rehm
- *
- * @param string $source input string
- *
- * @return string filtered output
- * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
- */
-function smarty_outputfilter_trimwhitespace($source)
-{
- $store = array();
- $_store = 0;
- $_offset = 0;
-
- // Unify Line-Breaks to \n
- $source = preg_replace("/\015\012|\015|\012/", "\n", $source);
-
- // capture Internet Explorer Conditional Comments
- if (preg_match_all('#<!--\[[^\]]+\]>.*?<!\[[^\]]+\]-->#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
- foreach ($matches as $match) {
- $store[] = $match[0][0];
- $_length = strlen($match[0][0]);
- $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
-
- $_offset += $_length - strlen($replace);
- $_store ++;
- }
- }
-
- // Strip all HTML-Comments
- // yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124
- $source = preg_replace('#<!--.*?-->#ms', '', $source);
-
- // capture html elements not to be messed with
- $_offset = 0;
- if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
- foreach ($matches as $match) {
- $store[] = $match[0][0];
- $_length = strlen($match[0][0]);
- $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
-
- $_offset += $_length - strlen($replace);
- $_store ++;
- }
- }
-
- $expressions = array(
- // replace multiple spaces between tags by a single space
- // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
- '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
- // remove spaces between attributes (but not in attribute values!)
- '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
- // note: for some very weird reason trim() seems to remove spaces inside attributes.
- // maybe a \0 byte or something is interfering?
- '#^\s+<#Ss' => '<',
- '#>\s+$#Ss' => '>',
- );
-
- $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
- // note: for some very weird reason trim() seems to remove spaces inside attributes.
- // maybe a \0 byte or something is interfering?
- // $source = trim( $source );
-
- $_offset = 0;
- if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
- foreach ($matches as $match) {
- $_length = strlen($match[0][0]);
- $replace = $store[$match[1][0]];
- $source = substr_replace($source, $replace, $match[0][1] + $_offset, $_length);
-
- $_offset += strlen($replace) - $_length;
- $_store ++;
- }
- }
-
- return $source;
-}
diff --git a/library/Smarty/libs/plugins/shared.escape_special_chars.php b/library/Smarty/libs/plugins/shared.escape_special_chars.php
deleted file mode 100644
index d3bd756b1..000000000
--- a/library/Smarty/libs/plugins/shared.escape_special_chars.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-
-if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
- /**
- * escape_special_chars common function
- * Function: smarty_function_escape_special_chars<br>
- * Purpose: used by other smarty functions to escape
- * special chars except for already escaped ones
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string text that should by escaped
- *
- * @return string
- */
- function smarty_function_escape_special_chars($string)
- {
- if (!is_array($string)) {
- $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false);
- }
-
- return $string;
- }
-} else {
- /**
- * escape_special_chars common function
- * Function: smarty_function_escape_special_chars<br>
- * Purpose: used by other smarty functions to escape
- * special chars except for already escaped ones
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param string $string text that should by escaped
- *
- * @return string
- */
- function smarty_function_escape_special_chars($string)
- {
- if (!is_array($string)) {
- $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
- $string = htmlspecialchars($string);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
- }
-
- return $string;
- }
-}
diff --git a/library/Smarty/libs/plugins/shared.literal_compiler_param.php b/library/Smarty/libs/plugins/shared.literal_compiler_param.php
deleted file mode 100644
index 47d728a76..000000000
--- a/library/Smarty/libs/plugins/shared.literal_compiler_param.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-
-/**
- * evaluate compiler parameter
- *
- * @param array $params parameter array as given to the compiler function
- * @param integer $index array index of the parameter to convert
- * @param mixed $default value to be returned if the parameter is not present
- *
- * @return mixed evaluated value of parameter or $default
- * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
- * @author Rodney Rehm
- */
-function smarty_literal_compiler_param($params, $index, $default = null)
-{
- // not set, go default
- if (!isset($params[$index])) {
- return $default;
- }
- // test if param is a literal
- if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) {
- throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time');
- }
-
- $t = null;
- eval("\$t = " . $params[$index] . ";");
-
- return $t;
-}
diff --git a/library/Smarty/libs/plugins/shared.make_timestamp.php b/library/Smarty/libs/plugins/shared.make_timestamp.php
deleted file mode 100644
index f87d40c7e..000000000
--- a/library/Smarty/libs/plugins/shared.make_timestamp.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-
-/**
- * Function: smarty_make_timestamp<br>
- * Purpose: used by other smarty functions to make a timestamp from a string.
- *
- * @author Monte Ohrt <monte at ohrt dot com>
- *
- * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
- *
- * @return int
- */
-function smarty_make_timestamp($string)
-{
- if (empty($string)) {
- // use "now":
- return time();
- } elseif ($string instanceof DateTime || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)) {
- return (int) $string->format('U'); // PHP 5.2 BC
- } elseif (strlen($string) == 14 && ctype_digit($string)) {
- // it is mysql timestamp format of YYYYMMDDHHMMSS?
- return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2),
- substr($string, 4, 2), substr($string, 6, 2), substr($string, 0, 4));
- } elseif (is_numeric($string)) {
- // it is a numeric string, we handle it as timestamp
- return (int) $string;
- } else {
- // strtotime should handle it
- $time = strtotime($string);
- if ($time == - 1 || $time === false) {
- // strtotime() was not able to parse $string, use "now":
- return time();
- }
-
- return $time;
- }
-}
diff --git a/library/Smarty/libs/plugins/shared.mb_str_replace.php b/library/Smarty/libs/plugins/shared.mb_str_replace.php
deleted file mode 100644
index a5682ed30..000000000
--- a/library/Smarty/libs/plugins/shared.mb_str_replace.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-if (!function_exists('smarty_mb_str_replace')) {
-
- /**
- * Multibyte string replace
- *
- * @param string $search the string to be searched
- * @param string $replace the replacement string
- * @param string $subject the source string
- * @param int &$count number of matches found
- *
- * @return string replaced string
- * @author Rodney Rehm
- */
- function smarty_mb_str_replace($search, $replace, $subject, &$count = 0)
- {
- if (!is_array($search) && is_array($replace)) {
- return false;
- }
- if (is_array($subject)) {
- // call mb_replace for each single string in $subject
- foreach ($subject as &$string) {
- $string = & smarty_mb_str_replace($search, $replace, $string, $c);
- $count += $c;
- }
- } elseif (is_array($search)) {
- if (!is_array($replace)) {
- foreach ($search as &$string) {
- $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
- $count += $c;
- }
- } else {
- $n = max(count($search), count($replace));
- while ($n --) {
- $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
- $count += $c;
- next($search);
- next($replace);
- }
- }
- } else {
- $parts = mb_split(preg_quote($search), $subject);
- $count = count($parts) - 1;
- $subject = implode($replace, $parts);
- }
-
- return $subject;
- }
-}
diff --git a/library/Smarty/libs/plugins/shared.mb_wordwrap.php b/library/Smarty/libs/plugins/shared.mb_wordwrap.php
deleted file mode 100644
index 31f4acf01..000000000
--- a/library/Smarty/libs/plugins/shared.mb_wordwrap.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Smarty shared plugin
- *
- * @package Smarty
- * @subpackage PluginsShared
- */
-
-if (!function_exists('smarty_mb_wordwrap')) {
-
- /**
- * Wrap a string to a given number of characters
- *
- * @link http://php.net/manual/en/function.wordwrap.php for similarity
- *
- * @param string $str the string to wrap
- * @param int $width the width of the output
- * @param string $break the character used to break the line
- * @param boolean $cut ignored parameter, just for the sake of
- *
- * @return string wrapped string
- * @author Rodney Rehm
- */
- function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
- {
- // break words into tokens using white space as a delimiter
- $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
- $length = 0;
- $t = '';
- $_previous = false;
- $_space = false;
-
- foreach ($tokens as $_token) {
- $token_length = mb_strlen($_token, Smarty::$_CHARSET);
- $_tokens = array($_token);
- if ($token_length > $width) {
- if ($cut) {
- $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
- }
- }
-
- foreach ($_tokens as $token) {
- $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
- $token_length = mb_strlen($token, Smarty::$_CHARSET);
- $length += $token_length;
-
- if ($length > $width) {
- // remove space before inserted break
- if ($_previous) {
- $t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
- }
-
- if (!$_space) {
- // add the break before the token
- if (!empty($t)) {
- $t .= $break;
- }
- $length = $token_length;
- }
- } elseif ($token == "\n") {
- // hard break must reset counters
- $_previous = 0;
- $length = 0;
- }
- $_previous = $_space;
- // add the token
- $t .= $token;
- }
- }
-
- return $t;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource.php b/library/Smarty/libs/sysplugins/smarty_cacheresource.php
deleted file mode 100644
index 14ab62fd9..000000000
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin
- *
- * @package Smarty
- * @subpackage Cacher
- */
-
-/**
- * Cache Handler API
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Rodney Rehm
- */
-abstract class Smarty_CacheResource
-{
- /**
- * resource types provided by the core
- *
- * @var array
- */
- protected static $sysplugins = array('file' => 'smarty_internal_cacheresource_file.php',);
-
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- abstract public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached
- *
- * @return void
- */
- abstract public function populateTimestamp(Smarty_Template_Cached $cached);
-
- /**
- * Read the cached template and process header
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
- *
- * @return bool true or false if the cached content does not exist
- */
- abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false);
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
-
- /**
- * Return cached content
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return null|string
- */
- public function getCachedContent(Smarty_Internal_Template $_template)
- {
- if ($_template->cached->handler->process($_template)) {
- ob_start();
- $unifunc = $_template->cached->unifunc;
- $unifunc($_template);
- return ob_get_clean();
- }
-
- return null;
- }
-
- /**
- * Empty cache
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- abstract public function clearAll(Smarty $smarty, $exp_time = null);
-
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
-
- /**
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool|null
- */
- public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // theoretically locking_timeout should be checked against time_limit (max_execution_time)
- $start = microtime(true);
- $hadLock = null;
- while ($this->hasLock($smarty, $cached)) {
- $hadLock = true;
- if (microtime(true) - $start > $smarty->locking_timeout) {
- // abort waiting for lock release
- return false;
- }
- sleep(1);
- }
-
- return $hadLock;
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // check if lock exists
- return false;
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // create lock
- return true;
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty
- * @param Smarty_Template_Cached $cached
- *
- * @return bool
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- // release lock
- return true;
- }
-
- /**
- * Load Cache Resource Handler
- *
- * @param Smarty $smarty Smarty object
- * @param string $type name of the cache resource
- *
- * @throws SmartyException
- * @return Smarty_CacheResource Cache Resource Handler
- */
- public static function load(Smarty $smarty, $type = null)
- {
- if (!isset($type)) {
- $type = $smarty->caching_type;
- }
-
- // try smarty's cache
- if (isset($smarty->_cache['cacheresource_handlers'][$type])) {
- return $smarty->_cache['cacheresource_handlers'][$type];
- }
-
- // try registered resource
- if (isset($smarty->registered_cache_resources[$type])) {
- // do not cache these instances as they may vary from instance to instance
- return $smarty->_cache['cacheresource_handlers'][$type] = $smarty->registered_cache_resources[$type];
- }
- // try sysplugins dir
- if (isset(self::$sysplugins[$type])) {
- $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
- return $smarty->_cache['cacheresource_handlers'][$type] = new $cache_resource_class();
- }
- // try plugins dir
- $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type);
- if ($smarty->loadPlugin($cache_resource_class)) {
- return $smarty->_cache['cacheresource_handlers'][$type] = new $cache_resource_class();
- }
- // give up
- throw new SmartyException("Unable to load cache resource '{$type}'");
- }
-
- /**
- * Invalid Loaded Cache Files
- *
- * @param Smarty $smarty Smarty object
- */
- public function invalidLoadedCache(Smarty $smarty)
- {
- $smarty->_cache['isCached'] = array();
- if (isset($smarty->ext->_subtemplate)) {
- $smarty->ext->_subtemplate->tplObjects = array();
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php b/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php
deleted file mode 100644
index 4e9606ef1..000000000
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php
+++ /dev/null
@@ -1,281 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin
- *
- * @package Smarty
- * @subpackage Cacher
- */
-
-/**
- * Cache Handler API
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Rodney Rehm
- */
-abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
-{
- /**
- * fetch cached content and its modification time from data source
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
- *
- * @return void
- */
- abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
-
- /**
- * Fetch cached content's modification timestamp from data source
- * {@internal implementing this method is optional.
- * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- *
- * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
- */
- protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
- {
- return null;
- }
-
- /**
- * Save content to cache
- *
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @param string $content content to cache
- *
- * @return boolean success
- */
- abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
-
- /**
- * Delete content from cache
- *
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- *
- * @return integer number of deleted caches
- */
- abstract protected function delete($name, $cache_id, $compile_id, $exp_time);
-
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
- {
- $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
- $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null;
- $path = $cached->source->filepath . $_cache_id . $_compile_id;
- $cached->filepath = sha1($path);
- if ($_template->smarty->cache_locking) {
- $cached->lock_id = sha1('lock.' . $path);
- }
- $this->populateTimestamp($cached);
- }
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Cached $cached)
- {
- $mtime = $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
- if ($mtime !== null) {
- $cached->timestamp = $mtime;
- $cached->exists = !!$cached->timestamp;
-
- return;
- }
- $timestamp = null;
- $this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $cached->content, $timestamp);
- $cached->timestamp = isset($timestamp) ? $timestamp : false;
- $cached->exists = !!$cached->timestamp;
- }
-
- /**
- * Read the cached template and process the header
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false)
- {
- if (!$cached) {
- $cached = $_template->cached;
- }
- $content = $cached->content ? $cached->content : null;
- $timestamp = $cached->timestamp ? $cached->timestamp : null;
- if ($content === null || !$timestamp) {
- $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp);
- }
- if (isset($content)) {
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in evaluated code
- */
- $_smarty_tpl = $_template;
- eval("?>" . $content);
- $cached->content = null;
- return true;
- }
-
- return false;
- }
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- return $this->save($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $_template->cache_lifetime, $content);
- }
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function readCachedContent(Smarty_Internal_Template $_template)
- {
- $content = $_template->cached->content ? $_template->cached->content : null;
- $timestamp = null;
- if ($content === null) {
- $timestamp = null;
- $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp);
- }
- if (isset($content)) {
- return $content;
- }
- return false;
- }
-
- /**
- * Empty cache
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clearAll(Smarty $smarty, $exp_time = null)
- {
- return $this->delete(null, null, null, $exp_time);
- }
-
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- $cache_name = null;
-
- if (isset($resource_name)) {
- $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
- if ($source->exists) {
- $cache_name = $source->name;
- } else {
- return 0;
- }
- // remove from template cache
- if (isset($smarty->_cache['template_objects'])) {
- foreach ($smarty->_cache['template_objects'] as $key => $_tpl) {
- if (isset($_tpl->cached) && $_tpl->source->uid == $source->uid) {
- unset($smarty->_cache['template_objects'][$key]);
- }
- }
- }
- }
-
- return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return boolean true or false if cache is locked
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $id = $cached->lock_id;
- $name = $cached->source->name . '.lock';
-
- $mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id);
- if ($mtime === null) {
- $this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime);
- }
- return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout;
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = true;
- $id = $cached->lock_id;
- $name = $cached->source->name . '.lock';
- $this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, '');
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = false;
- $name = $cached->source->name . '.lock';
- $this->delete($name, $cached->cache_id, $cached->compile_id, null);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
deleted file mode 100644
index ee4021a19..000000000
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
+++ /dev/null
@@ -1,513 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin
- *
- * @package Smarty
- * @subpackage Cacher
- */
-
-/**
- * Smarty Cache Handler Base for Key/Value Storage Implementations
- * This class implements the functionality required to use simple key/value stores
- * for hierarchical cache groups. key/value stores like memcache or APC do not support
- * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
- * is no problem to filesystem and RDBMS implementations.
- * This implementation is based on the concept of invalidation. While one specific cache
- * can be identified and cleared, any range of caches cannot be identified. For this reason
- * each level of the cache group hierarchy can have its own value in the store. These values
- * are nothing but microtimes, telling us when a particular cache group was cleared for the
- * last time. These keys are evaluated for every cache read to determine if the cache has
- * been invalidated since it was created and should hence be treated as inexistent.
- * Although deep hierarchies are possible, they are not recommended. Try to keep your
- * cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
- * »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
- * cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever«
- * consider using »a|b|c|$page-$items-$whatever« instead.
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Rodney Rehm
- */
-abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
-{
- /**
- * cache for contents
- *
- * @var array
- */
- protected $contents = array();
-
- /**
- * cache for timestamps
- *
- * @var array
- */
- protected $timestamps = array();
-
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
- {
- $cached->filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' .
- $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
-
- $this->populateTimestamp($cached);
- }
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Cached $cached)
- {
- if (!$this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $content, $timestamp, $cached->source->uid)) {
- return;
- }
- $cached->content = $content;
- $cached->timestamp = (int) $timestamp;
- $cached->exists = $cached->timestamp;
- }
-
- /**
- * Read the cached template and process the header
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false)
- {
- if (!$cached) {
- $cached = $_template->cached;
- }
- $content = $cached->content ? $cached->content : null;
- $timestamp = $cached->timestamp ? $cached->timestamp : null;
- if ($content === null || !$timestamp) {
- if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp, $_template->source->uid)) {
- return false;
- }
- }
- if (isset($content)) {
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in evaluated code
- */
- $_smarty_tpl = $_template;
- eval("?>" . $content);
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- $this->addMetaTimestamp($content);
-
- return $this->write(array($_template->cached->filepath => $content), $_template->cache_lifetime);
- }
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function readCachedContent(Smarty_Internal_Template $_template)
- {
- $content = $_template->cached->content ? $_template->cached->content : null;
- $timestamp = null;
- if ($content === null) {
- if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp, $_template->source->uid)) {
- return false;
- }
- }
- if (isset($content)) {
- return $content;
- }
- return false;
- }
-
- /**
- * Empty cache
- * {@internal the $exp_time argument is ignored altogether }}
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time [being ignored]
- *
- * @return integer number of cache files deleted [always -1]
- * @uses purge() to clear the whole store
- * @uses invalidate() to mark everything outdated if purge() is inapplicable
- */
- public function clearAll(Smarty $smarty, $exp_time = null)
- {
- if (!$this->purge()) {
- $this->invalidate(null);
- }
- // remove from template cache
- if (isset($smarty->_cache['template_objects'])) {
- foreach ($smarty->_cache['template_objects'] as $key => $tpl) {
- if (isset($tpl->cached)) {
- unset($smarty->_cache['template_objects'][$key]);
- }
- }
- }
- return - 1;
- }
-
- /**
- * Empty cache for a specific template
- * {@internal the $exp_time argument is ignored altogether}}
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time [being ignored]
- *
- * @return integer number of cache files deleted [always -1]
- * @uses buildCachedFilepath() to generate the CacheID
- * @uses invalidate() to mark CacheIDs parent chain as outdated
- * @uses delete() to remove CacheID from cache
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- $uid = $this->getTemplateUid($smarty, $resource_name);
- $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' .
- $this->sanitize($compile_id);
- $this->delete(array($cid));
- $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
- // remove from template cache
- if (isset($resource_name) && isset($smarty->_cache['template_objects'])) {
- if (isset($smarty->_cache['template_objects'])) {
- foreach ($smarty->_cache['template_objects'] as $key => $tpl) {
- if ($tpl->source->uid == $uid && isset($tpl->cached)) {
- unset($smarty->_cache['template_objects'][$key]);
- }
- }
- }
- }
- return - 1;
- }
-
- /**
- * Get template's unique ID
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- *
- * @return string filepath of cache file
- * @throws \SmartyException
- *
- */
- protected function getTemplateUid(Smarty $smarty, $resource_name)
- {
- if (isset($resource_name)) {
- $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
- if ($source->exists) {
- return $source->uid;
- }
- }
- return '';
- }
-
- /**
- * Sanitize CacheID components
- *
- * @param string $string CacheID component to sanitize
- *
- * @return string sanitized CacheID component
- */
- protected function sanitize($string)
- {
- $string = trim($string, '|');
- if (!$string) {
- return null;
- }
- return preg_replace('#[^\w\|]+#S', '_', $string);
- }
-
- /**
- * Fetch and prepare a cache object.
- *
- * @param string $cid CacheID to fetch
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer &$timestamp cached timestamp (epoch)
- * @param string $resource_uid resource's uid
- *
- * @return boolean success
- */
- protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null, &$timestamp = null, $resource_uid = null)
- {
- $t = $this->read(array($cid));
- $content = !empty($t[$cid]) ? $t[$cid] : null;
- $timestamp = null;
-
- if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
- $invalidated = $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
- if ($invalidated > $timestamp) {
- $timestamp = null;
- $content = null;
- }
- }
-
- return !!$content;
- }
-
- /**
- * Add current microtime to the beginning of $cache_content
- * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
- *
- * @param string &$content the content to be cached
- */
- protected function addMetaTimestamp(&$content)
- {
- $mt = explode(" ", microtime());
- $ts = pack("NN", $mt[1], (int) ($mt[0] * 100000000));
- $content = $ts . $content;
- }
-
- /**
- * Extract the timestamp the $content was cached
- *
- * @param string &$content the cached content
- *
- * @return float the microtime the content was cached
- */
- protected function getMetaTimestamp(&$content)
- {
- extract(unpack('N1s/N1m/a*content', $content));
- return $s + ($m / 100000000);
- }
-
- /**
- * Invalidate CacheID
- *
- * @param string $cid CacheID
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's uid
- *
- * @return void
- */
- protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
- {
- $now = microtime(true);
- $key = null;
- // invalidate everything
- if (!$resource_name && !$cache_id && !$compile_id) {
- $key = 'IVK#ALL';
- } // invalidate all caches by template
- else {
- if ($resource_name && !$cache_id && !$compile_id) {
- $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
- } // invalidate all caches by cache group
- else {
- if (!$resource_name && $cache_id && !$compile_id) {
- $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
- } // invalidate all caches by compile id
- else {
- if (!$resource_name && !$cache_id && $compile_id) {
- $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
- } // invalidate by combination
- else {
- $key = 'IVK#CID#' . $cid;
- }
- }
- }
- }
- $this->write(array($key => $now));
- }
-
- /**
- * Determine the latest timestamp known to the invalidation chain
- *
- * @param string $cid CacheID to determine latest invalidation timestamp of
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's filepath
- *
- * @return float the microtime the CacheID was invalidated
- */
- protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
- {
- // abort if there is no CacheID
- if (false && !$cid) {
- return 0;
- }
- // abort if there are no InvalidationKeys to check
- if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
- return 0;
- }
-
- // there are no InValidationKeys
- if (!($values = $this->read($_cid))) {
- return 0;
- }
- // make sure we're dealing with floats
- $values = array_map('floatval', $values);
-
- return max($values);
- }
-
- /**
- * Translate a CacheID into the list of applicable InvalidationKeys.
- * Splits "some|chain|into|an|array" into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
- *
- * @param string $cid CacheID to translate
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's filepath
- *
- * @return array list of InvalidationKeys
- * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
- */
- protected function listInvalidationKeys($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
- {
- $t = array('IVK#ALL');
- $_name = $_compile = '#';
- if ($resource_name) {
- $_name .= $resource_uid . '#' . $this->sanitize($resource_name);
- $t[] = 'IVK#TEMPLATE' . $_name;
- }
- if ($compile_id) {
- $_compile .= $this->sanitize($compile_id);
- $t[] = 'IVK#COMPILE' . $_compile;
- }
- $_name .= '#';
- $cid = trim($cache_id, '|');
- if (!$cid) {
- return $t;
- }
- $i = 0;
- while (true) {
- // determine next delimiter position
- $i = strpos($cid, '|', $i);
- // add complete CacheID if there are no more delimiters
- if ($i === false) {
- $t[] = 'IVK#CACHE#' . $cid;
- $t[] = 'IVK#CID' . $_name . $cid . $_compile;
- $t[] = 'IVK#CID' . $_name . $_compile;
- break;
- }
- $part = substr($cid, 0, $i);
- // add slice to list
- $t[] = 'IVK#CACHE#' . $part;
- $t[] = 'IVK#CID' . $_name . $part . $_compile;
- // skip past delimiter position
- $i ++;
- }
-
- return $t;
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return boolean true or false if cache is locked
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $key = 'LOCK#' . $cached->filepath;
- $data = $this->read(array($key));
-
- return $data && time() - $data[$key] < $smarty->locking_timeout;
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = true;
- $key = 'LOCK#' . $cached->filepath;
- $this->write(array($key => time()), $smarty->locking_timeout);
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = false;
- $key = 'LOCK#' . $cached->filepath;
- $this->delete(array($key));
- }
-
- /**
- * Read values for a set of keys from cache
- *
- * @param array $keys list of keys to fetch
- *
- * @return array list of values with the given keys used as indexes
- */
- abstract protected function read(array $keys);
-
- /**
- * Save values for a set of keys to cache
- *
- * @param array $keys list of values to save
- * @param int $expire expiration time
- *
- * @return boolean true on success, false on failure
- */
- abstract protected function write(array $keys, $expire = null);
-
- /**
- * Remove values from cache
- *
- * @param array $keys list of keys to delete
- *
- * @return boolean true on success, false on failure
- */
- abstract protected function delete(array $keys);
-
- /**
- * Remove *all* values from cache
- *
- * @return boolean true on success, false on failure
- */
- protected function purge()
- {
- return false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_data.php b/library/Smarty/libs/sysplugins/smarty_data.php
deleted file mode 100644
index 7cf18a43e..000000000
--- a/library/Smarty/libs/sysplugins/smarty_data.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * Smarty Plugin Data
- * This file contains the data object
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * class for the Smarty data object
- * The Smarty data object will hold Smarty variables in the current scope
- *
- * @package Smarty
- * @subpackage Template
- */
-class Smarty_Data extends Smarty_Internal_Data
-{
- /**
- * Counter
- *
- * @var int
- */
- static $count = 0;
-
- /**
- * Data block name
- *
- * @var string
- */
- public $dataObjectName = '';
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * create Smarty data object
- *
- * @param Smarty|array $_parent parent template
- * @param Smarty|Smarty_Internal_Template $smarty global smarty instance
- * @param string $name optional data block name
- *
- * @throws SmartyException
- */
- public function __construct($_parent = null, $smarty = null, $name = null)
- {
- parent::__construct();
- self::$count ++;
- $this->dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count);
- $this->smarty = $smarty;
- if (is_object($_parent)) {
- // when object set up back pointer
- $this->parent = $_parent;
- } elseif (is_array($_parent)) {
- // set up variable values
- foreach ($_parent as $_key => $_val) {
- $this->tpl_vars[$_key] = new Smarty_Variable($_val);
- }
- } elseif ($_parent != null) {
- throw new SmartyException("Wrong type for template variables");
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
deleted file mode 100644
index 64d02dfe5..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin CacheResource File
- *
- * @package Smarty
- * @subpackage Cacher
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * This class does contain all necessary methods for the HTML cache on file system
- * Implements the file system as resource for the HTML cache Version ussing nocache inserts.
- *
- * @package Smarty
- * @subpackage Cacher
- */
-class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
-{
- /**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
- {
- $_source_file_path = str_replace(':', '.', $_template->source->filepath);
- $_cache_id = isset($_template->cache_id) ? preg_replace('![^\w\|]+!', '_', $_template->cache_id) : null;
- $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w]+!', '_', $_template->compile_id) : null;
- $_filepath = $_template->source->uid;
- // if use_sub_dirs, break file into directories
- if ($_template->smarty->use_sub_dirs) {
- $_filepath = substr($_filepath, 0, 2) . DS . substr($_filepath, 2, 2) . DS . substr($_filepath, 4, 2) . DS .
- $_filepath;
- }
- $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
- if (isset($_cache_id)) {
- $_cache_id = str_replace('|', $_compile_dir_sep, $_cache_id) . $_compile_dir_sep;
- } else {
- $_cache_id = '';
- }
- if (isset($_compile_id)) {
- $_compile_id = $_compile_id . $_compile_dir_sep;
- } else {
- $_compile_id = '';
- }
- $_cache_dir = $_template->smarty->getCacheDir();
- if ($_template->smarty->cache_locking) {
- // create locking file name
- // relative file name?
- if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_cache_dir)) {
- $_lock_dir = rtrim(getcwd(), '/\\') . DS . $_cache_dir;
- } else {
- $_lock_dir = $_cache_dir;
- }
- $cached->lock_id = $_lock_dir . sha1($_cache_id . $_compile_id . $_template->source->uid) . '.lock';
- }
- $cached->filepath = $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_source_file_path) .
- '.php';
- $cached->timestamp = $cached->exists = is_file($cached->filepath);
- if ($cached->exists) {
- $cached->timestamp = filemtime($cached->filepath);
- }
- }
-
- /**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Cached $cached)
- {
- $cached->timestamp = $cached->exists = is_file($cached->filepath);
- if ($cached->exists) {
- $cached->timestamp = filemtime($cached->filepath);
- }
- }
-
- /**
- * Read the cached template and process its header
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @param bool $update flag if called because cache update
- *
- * @return boolean true or false if the cached content does not exist
- */
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false)
- {
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in included file
- */
- $_smarty_tpl = $_template;
- $_template->cached->valid = false;
- if ($update && defined('HHVM_VERSION')) {
- return $_template->smarty->ext->_hhvm->includeHhvm($_template, $_template->cached->filepath);
- } else {
- return @include $_template->cached->filepath;
- }
- }
-
- /**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return boolean success
- */
- public function writeCachedContent(Smarty_Internal_Template $_template, $content)
- {
- if ($_template->smarty->ext->_writeFile->writeFile($_template->cached->filepath, $content, $_template->smarty) === true) {
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate($_template->cached->filepath);
- }
- $cached = $_template->cached;
- $cached->timestamp = $cached->exists = is_file($cached->filepath);
- if ($cached->exists) {
- $cached->timestamp = filemtime($cached->filepath);
- return true;
- }
- }
- return false;
- }
-
- /**
- * Read cached template from cache
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function readCachedContent(Smarty_Internal_Template $_template)
- {
- if (is_file($_template->cached->filepath)) {
- return file_get_contents($_template->cached->filepath);
- }
- return false;
- }
-
- /**
- * Empty cache
- *
- * @param Smarty $smarty
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clearAll(Smarty $smarty, $exp_time = null)
- {
- return Smarty_Internal_Extension_Clear::clear($smarty, null, null, null, $exp_time);
- }
-
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- return Smarty_Internal_Extension_Clear::clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time);
- }
-
- /**
- * Check is cache is locked for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return boolean true or false if cache is locked
- */
- public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
- clearstatcache(true, $cached->lock_id);
- } else {
- clearstatcache();
- }
- if (is_file($cached->lock_id)) {
- $t = @filemtime($cached->lock_id);
- return $t && (time() - $t < $smarty->locking_timeout);
- } else {
- return false;
- }
- }
-
- /**
- * Lock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = true;
- touch($cached->lock_id);
- }
-
- /**
- * Unlock cache for this template
- *
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- *
- * @return bool|void
- */
- public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
- {
- $cached->is_locked = false;
- @unlink($cached->lock_id);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php
deleted file mode 100644
index bd2ffe474..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Append
- * Compiles the {append} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Append Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
-{
- /**
- * Compiles code for the {append} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // the following must be assigned at runtime because it will be overwritten in parent class
- $this->required_attributes = array('var', 'value');
- $this->shorttag_order = array('var', 'value');
- $this->optional_attributes = array('scope', 'index');
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // map to compile assign attributes
- if (isset($_attr['index'])) {
- $_params['smarty_internal_index'] = '[' . $_attr['index'] . ']';
- unset($_attr['index']);
- } else {
- $_params['smarty_internal_index'] = '[]';
- }
- $_new_attr = array();
- foreach ($_attr as $key => $value) {
- $_new_attr[] = array($key => $value);
- }
- // call compile assign
- return parent::compile($_new_attr, $compiler, $_params);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
deleted file mode 100644
index 5e3fce3cc..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Assign
- * Compiles the {assign} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Assign Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
-{
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array('local' => true, 'parent' => true, 'root' => true, 'global' => true,
- 'smarty' => true, 'tpl_root' => true);
-
- /**
- * Compiles code for the {assign} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
- $this->required_attributes = array('var', 'value');
- $this->shorttag_order = array('var', 'value');
- $this->optional_attributes = array('scope', 'bubble_up');
- $_nocache = 'null';
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // nocache ?
- if ($compiler->tag_nocache || $compiler->nocache) {
- $_nocache = 'true';
- // create nocache var to make it know for further compiling
- if (isset($compiler->template->tpl_vars[trim($_attr['var'], "'")])) {
- $compiler->template->tpl_vars[trim($_attr['var'], "'")]->nocache = true;
- } else {
- $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_Variable(null, true);
- }
- }
- // scope setup
- $_scope = Smarty::SCOPE_LOCAL;
- if (isset($_attr['scope'])) {
- $_attr['scope'] = trim($_attr['scope'], "'\"");
- if (!isset($this->valid_scopes[$_attr['scope']])) {
- $compiler->trigger_template_error("illegal value '{$_attr['scope']}' for \"scope\" attribute", null, true);
- }
- if ($_attr['scope'] != 'local') {
- if ($_attr['scope'] == 'parent') {
- $_scope = Smarty::SCOPE_PARENT;
- } elseif ($_attr['scope'] == 'root') {
- $_scope = Smarty::SCOPE_ROOT;
- } elseif ($_attr['scope'] == 'global') {
- $_scope = Smarty::SCOPE_GLOBAL;
- } elseif ($_attr['scope'] == 'smarty') {
- $_scope = Smarty::SCOPE_SMARTY;
- } elseif ($_attr['scope'] == 'tpl_root') {
- $_scope = Smarty::SCOPE_TPL_ROOT;
- }
- $_scope += (isset($_attr['bubble_up']) && $_attr['bubble_up'] == 'false') ? 0 : Smarty::SCOPE_BUBBLE_UP;
- }
- }
- // compiled output
- if (isset($parameter['smarty_internal_index'])) {
- $output =
- "<?php \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, $_attr[var], $_nocache);\n\$_smarty_tpl->tpl_vars[$_attr[var]]->value$parameter[smarty_internal_index] = $_attr[value];";
- } else {
- // implement Smarty2's behaviour of variables assigned by reference
- if ($compiler->template->smarty instanceof SmartyBC) {
- $output =
- "<?php if (isset(\$_smarty_tpl->tpl_vars[$_attr[var]])) {\$_smarty_tpl->tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]];";
- $output .= "\n\$_smarty_tpl->tpl_vars[$_attr[var]]->value = $_attr[value]; \$_smarty_tpl->tpl_vars[$_attr[var]]->nocache = $_nocache;";
- $output .= "\n} else \$_smarty_tpl->tpl_vars[$_attr[var]] = new Smarty_Variable($_attr[value], $_nocache);";
- } else {
- $output = "<?php \$_smarty_tpl->tpl_vars[$_attr[var]] = new Smarty_Variable($_attr[value], $_nocache);";
- }
- }
- $output .= "\n\$_smarty_tpl->ext->_updateScope->updateScope(\$_smarty_tpl, $_attr[var], $_scope);";
- $output .= '?>';
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
deleted file mode 100644
index ab1fc6e00..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
+++ /dev/null
@@ -1,292 +0,0 @@
-<?php
-/*
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty Internal Plugin Compile Block Class
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('hide', 'nocache');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * nesting level of block tags
- *
- * @var int
- */
- public static $blockTagNestingLevel = 0;
-
- /**
- * Saved compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * Compiles code for the {block} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- if (!isset($compiler->_cache['blockNesting'])) {
- $compiler->_cache['blockNesting'] = 0;
- }
- if ($compiler->_cache['blockNesting'] == 0) {
- // make sure that inheritance gets initialized in template code
- $this->registerInit($compiler);
- $this->option_flags = array('hide', 'nocache', 'append', 'prepend');
- } else {
- $this->option_flags = array('hide', 'nocache');
- }
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $compiler->_cache['blockNesting'] ++;
- $compiler->_cache['blockName'][$compiler->_cache['blockNesting']] = $_attr['name'];
- $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']][0] = 'block_' . preg_replace('![^\w]+!', '_', uniqid(rand(), true));
- $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']][1] = false;
- $this->openTag($compiler, 'block', array($_attr, $compiler->nocache, $compiler->parser->current_buffer,
- $compiler->template->compiled->has_nocache_code,
- $compiler->template->caching));
- // must whole block be nocache ?
- if ($compiler->tag_nocache) {
- $i = 0;
- }
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // $compiler->suppressNocacheProcessing = true;
- if ($_attr['nocache'] === true) {
- //$compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->taglineno);
- }
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $compiler->template->compiled->has_nocache_code = false;
- $compiler->suppressNocacheProcessing = true;
- }
-
- /**
- * Compile saved child block source
- *
- * @param \Smarty_Internal_TemplateCompilerBase compiler object
- * @param string $_name optional name of child block
- *
- * @return string compiled code of child block
- */
- static function compileChildBlock(Smarty_Internal_TemplateCompilerBase $compiler, $_name = null)
- {
- if (!isset($compiler->_cache['blockNesting'])) {
- $compiler->trigger_template_error(' tag {$smarty.block.child} used outside {block} tags ',
- $compiler->parser->lex->taglineno);
- }
- $compiler->has_code = true;
- $compiler->suppressNocacheProcessing = true;
- $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']][1] = true;
- $output = "<?php \n\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 2, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, null, \$_blockParentStack);\n?>\n";
- return $output;
- }
-
- /**
- * Compile $smarty.block.parent
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param string $_name optional name of child block
- *
- * @return string compiled code of child block
- */
- static function compileParentBlock(Smarty_Internal_TemplateCompilerBase $compiler, $_name = null)
- {
- if (!isset($compiler->_cache['blockNesting'])) {
- $compiler->trigger_template_error(' tag {$smarty.block.parent} used outside {block} tags ',
- $compiler->parser->lex->taglineno);
- }
- $compiler->suppressNocacheProcessing = true;
- $compiler->has_code = true;
- $output = "<?php \n\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 4, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, null, \$_blockParentStack);\n?>\n";
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile BlockClose Class
- *
- */
-class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Compiles code for the {/block} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block'));
- // init block parameter
- $_block = $compiler->_cache['blockParams'][$compiler->_cache['blockNesting']];
- unset($compiler->_cache['blockParams'][$compiler->_cache['blockNesting']]);
- $_block[2] = $_block[3] = 0;
- $_name = trim($_attr['name'], "'\"");
- $_assign = isset($_attr['assign']) ? $_attr['assign'] : null;
- unset($_attr['assign'], $_attr['name']);
- foreach ($_attr as $name => $stat) {
- if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat != 'false')) {
- $_block[$name] = is_string($stat) ? trim($stat, "'\"") : $stat;
- }
- }
- $_funcName = $_block[0];
- // get compiled block code
- $_functionCode = $compiler->parser->current_buffer;
- // setup buffer for template function code
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
-
- if ($compiler->template->compiled->has_nocache_code) {
- // $compiler->parent_compiler->template->tpl_function[$_name]['call_name_caching'] = $_funcNameCaching;
- $_block[6] = $_funcNameCaching = $_funcName . '_nocache';
- $output = "<?php\n";
- $output .= "/* {block '{$_name}'} {$compiler->template->source->type}:{$compiler->template->source->name} */\n";
- $output .= "function {$_funcNameCaching} (\$_smarty_tpl, \$_blockParentStack) {\n";
- $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n";
- $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n";
- if (isset($_assign)) {
- $output .= "ob_start();\n";
- }
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php\n";
- if (isset($_assign)) {
- $output .= "\$_smarty_tpl->tpl_vars[{$_assign}] = new Smarty_Variable(ob_get_clean());\n";
- }
- $output .= "/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n";
- $output .= "}\n";
- $output .= "/* {/block '{$_name}'} */\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->blockOrFunctionCode .= $f = $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $this->compiler = $compiler;
- $_functionCode = new Smarty_Internal_ParseTree_Tag($compiler->parser,
- preg_replace_callback("/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
- array($this, 'removeNocache'),
- $_functionCode->to_smarty_php($compiler->parser)));
- $this->compiler = null;
- }
- $output = "<?php\n";
- $output .= "/* {block '{$_name}'} {$compiler->template->source->type}:{$compiler->template->source->name} */\n";
- $output .= "function {$_funcName}(\$_smarty_tpl, \$_blockParentStack) {\n";
- if (isset($_assign)) {
- $output .= "ob_start();\n";
- }
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php\n";
- if (isset($_assign)) {
- $output .= "\$_smarty_tpl->tpl_vars[{$_assign}] = new Smarty_Variable(ob_get_clean());\n";
- }
- $output .= "}\n";
- $output .= "/* {/block '{$_name}'} */\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser,
- new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $output));
- $compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- // nocache plugins must be copied
- if (!empty($compiler->template->compiled->required_plugins['nocache'])) {
- foreach ($compiler->template->compiled->required_plugins['nocache'] as $plugin => $tmp) {
- foreach ($tmp as $type => $data) {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$plugin][$type] =
- $data;
- }
- }
- }
-
-
- // restore old status
- $compiler->template->compiled->has_nocache_code = $_has_nocache_code;
- $compiler->tag_nocache = $compiler->nocache;
- $compiler->nocache = $_nocache;
- $compiler->parser->current_buffer = $_buffer;
- $output = "<?php \n";
- if ($compiler->_cache['blockNesting'] == 1) {
- $output .= "\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 0, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, " .
- var_export($_block, true) . ");\n";
- } else {
- $output .= "\$_smarty_tpl->ext->_inheritance->processBlock(\$_smarty_tpl, 0, {$compiler->_cache['blockName'][$compiler->_cache['blockNesting']]}, " .
- var_export($_block, true) . ", \$_blockParentStack);\n";
-
- }
- $output .= "?>\n";
- $compiler->_cache['blockNesting'] --;
- if ($compiler->_cache['blockNesting'] == 0) {
- unset($compiler->_cache['blockNesting']);
- }
- $compiler->has_code = true;
- $compiler->suppressNocacheProcessing = true;
- return $output;
- }
-
- /**
- * @param $match
- *
- * @return mixed
- */
- function removeNocache($match)
- {
- $code =
- preg_replace("/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
- '', $match[0]);
- $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
- return $code;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
deleted file mode 100644
index cbc73d36a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Break
- * Compiles the {break} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Break Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Compiles code for the {break} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
-
- if (isset($_attr['levels'])) {
- if (!is_numeric($_attr['levels'])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
- }
- $_levels = $_attr['levels'];
- } else {
- $_levels = 1;
- }
- $level_count = $_levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
- $level_count --;
- }
- $stack_count --;
- }
- if ($level_count != 0) {
- $compiler->trigger_template_error("cannot break {$_levels} level(s)", null, true);
- }
-
- return "<?php break {$_levels};?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php
deleted file mode 100644
index b7204bec0..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Function_Call
- * Compiles the calls of user defined tags defined by {function}
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Function_Call Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles the calls of user defined tags defined by {function}
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // save possible attributes
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- }
- //$_name = trim($_attr['name'], "'\"");
- $_name = $_attr['name'];
- unset($_attr['name'], $_attr['assign'], $_attr['nocache']);
- // set flag (compiled code of {function} must be included in cache file
- if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) {
- $_nocache = 'true';
- } else {
- $_nocache = 'false';
- }
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- //$compiler->suppressNocacheProcessing = true;
- // was there an assign attribute
- if (isset($_assign)) {
- $_output =
- "<?php ob_start();\n\$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
- } else {
- $_output =
- "<?php \$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n";
- }
- return $_output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
deleted file mode 100644
index be45f3e94..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Capture
- * Compiles the {capture} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Capture Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('name', 'assign', 'append');
-
- /**
- * Compiles code for the {capture} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'";
- $assign = isset($_attr['assign']) ? $_attr['assign'] : 'null';
- $append = isset($_attr['append']) ? $_attr['append'] : 'null';
-
- $compiler->_capture_stack[0][] = array($buffer, $assign, $append, $compiler->nocache);
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $_output = "<?php \$_smarty_tpl->_cache['capture_stack'][] = array($buffer, $assign, $append); ob_start(); ?>";
-
- return $_output;
- }
-
- /**
- * Compiles code for the {$smarty.capture.xxx}
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public static function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $tag = strtolower(trim($parameter[ 0 ], '"\''));
- $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
- if (!$name) {
- $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
- }
- return "(isset(\$_smarty_tpl->_cache['__smarty_capture']['{$name}']) ? \$_smarty_tpl->_cache['__smarty_capture']['{$name}'] : null)";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Captureclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/capture} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
-
- list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack[0]);
-
- $_output = "<?php list(\$_capture_buffer, \$_capture_assign, \$_capture_append) = array_pop(\$_smarty_tpl->_cache['capture_stack']);\n";
- $_output .= "if (!empty(\$_capture_buffer)) {\n";
- $_output .= " if (isset(\$_capture_assign)) \$_smarty_tpl->assign(\$_capture_assign, ob_get_contents());\n";
- $_output .= " if (isset( \$_capture_append)) \$_smarty_tpl->append( \$_capture_append, ob_get_contents());\n";
- $_output .= "\$_smarty_tpl->_cache['__smarty_capture'][\$_capture_buffer]=ob_get_clean();\n";
- $_output .= "} else \$_smarty_tpl->capture_error();?>";
-
- return $_output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php
deleted file mode 100644
index d2e50a08f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Config Load
- * Compiles the {config load} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Config Load Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file', 'section');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('section', 'scope', 'bubble_up');
-
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array('local' => true, 'parent' => true, 'root' => true, 'global' => true,
- 'smarty' => true, 'tpl_root' => true);
-
- /**
- * Compiles code for the {config_load} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
-
- // save possible attributes
- $conf_file = $_attr['file'];
- if (isset($_attr['section'])) {
- $section = $_attr['section'];
- } else {
- $section = 'null';
- }
- $_scope = Smarty::SCOPE_LOCAL;
- if (isset($_attr['scope'])) {
- $_attr['scope'] = trim($_attr['scope'], "'\"");
- if (!isset($this->valid_scopes[$_attr['scope']])) {
- $compiler->trigger_template_error("illegal value '{$_attr['scope']}' for \"scope\" attribute", null, true);
- }
- if ($_attr['scope'] != 'local') {
- if ($_attr['scope'] == 'parent') {
- $_scope = Smarty::SCOPE_PARENT;
- } elseif ($_attr['scope'] == 'root') {
- $_scope = Smarty::SCOPE_ROOT;
- } elseif ($_attr['scope'] == 'global') {
- $_scope = Smarty::SCOPE_GLOBAL;
- } elseif ($_attr['scope'] == 'smarty') {
- $_scope = Smarty::SCOPE_SMARTY;
- } elseif ($_attr['scope'] == 'tpl_root') {
- $_scope = Smarty::SCOPE_TPL_ROOT;
- }
- $_scope += (isset($_attr['bubble_up']) && $_attr['bubble_up'] == 'false') ? 0 : Smarty::SCOPE_BUBBLE_UP;
- }
- }
-
- // create config object
- $_output =
- "<?php\n\$_smarty_tpl->smarty->ext->configLoad->_loadConfigFile(\$_smarty_tpl, {$conf_file}, {$section}, {$_scope});\n?>\n";
-
- return $_output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
deleted file mode 100644
index 2ee04c94e..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Continue
- * Compiles the {continue} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Continue Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Compiles code for the {continue} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
-
- if (isset($_attr['levels'])) {
- if (!is_numeric($_attr['levels'])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
- }
- $_levels = $_attr['levels'];
- } else {
- $_levels = 1;
- }
- $level_count = $_levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
- $level_count --;
- }
- $stack_count --;
- }
- if ($level_count != 0) {
- $compiler->trigger_template_error("cannot continue {$_levels} level(s)", null, true);
- }
-
- return "<?php continue {$_levels};?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php
deleted file mode 100644
index d73c81a10..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Debug
- * Compiles the {debug} tag.
- * It opens a window the the Smarty Debugging Console.
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Debug Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {debug} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- // compile always as nocache
- $compiler->tag_nocache = true;
-
- // display debug template
- $_output = "<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n";
- $_output .= "unset(\$_smarty_debug);\n?>";
- return $_output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php
deleted file mode 100644
index 407482f07..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Eval
- * Compiles the {eval} tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Eval Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('var');
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('var', 'assign');
-
- /**
- * Compiles code for the {eval} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- $this->required_attributes = array('var');
- $this->optional_attributes = array('assign');
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- }
-
- // create template object
- $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr['var'] . ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
- //was there an assign attribute?
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
- } else {
- $_output .= "echo \$_template->fetch();";
- }
-
- return "<?php $_output ?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
deleted file mode 100644
index 7ce3dcf6f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Compile extend
- * Compiles the {extends} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile extend Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inheritance
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Array of names of optional attribute required by tag
- * use array('_any') if there is no restriction of attributes names
- *
- * @var array
- */
- public $optional_attributes = array('extends_resource');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file');
-
- /**
- * Compiles code for the {extends} tag extends: resource
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1);
- }
- if (strpos($_attr['file'], '$_tmp') !== false) {
- $compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1);
- }
- // add code to initialize inheritance
- $this->registerInit($compiler, true);
- $file = trim($_attr['file'], '\'"');
- if (strlen($file) > 8 && substr($file, 0, 8) == 'extends:') {
- // generate code for each template
- $files = array_reverse(explode('|', substr($file, 8)));
- $i = 0;
- foreach ($files as $file) {
- if ($file[0] == '"') {
- $file = trim($file, '".');
- } else {
- $file = "'{$file}'";
- }
- $i ++;
- if ($i == count($files) && isset($_attr['extends_resource'])) {
- $this->compileEndChild($compiler);
- }
- $this->compileInclude($compiler, $file);
- }
- if (!isset($_attr['extends_resource'])) {
- $this->compileEndChild($compiler);
- }
- } else {
- $this->compileEndChild($compiler);
- $this->compileInclude($compiler, $_attr['file']);
- }
- $compiler->has_code = false;
- return '';
- }
-
- /**
- * Add code for inheritance endChild() method to end of template
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag($compiler->parser,
- "<?php \$_smarty_tpl->ext->_inheritance->endChild(\$_smarty_tpl);\n?>\n");
- }
-
- /**
- * Add code for including subtemplate to end of template
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param string $file subtemplate name
- */
- private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $file)
- {
- $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag($compiler->parser,
- $compiler->compileTag('include',
- array($file,
- array('scope' => 'parent'))));
- }
-
- /**
- * Create source code for {extends} from source components array
- *
- * @param []\Smarty_Internal_Template_Source $components
- *
- * @return string
- */
- public static function extendsSourceArrayCode($components)
- {
- $resources = array();
- foreach ($components as $source) {
- $resources[] = $source->resource;
- }
- return '{extends file=\'extends:' . join('|', $resources) . '\' extends_resource=true}';
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php
deleted file mode 100644
index 7b86d4859..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile For
- * Compiles the {for} {forelse} {/for} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile For Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {for} tag
- * Smarty 3 does implement two different syntax's:
- * - {for $var in $array}
- * For looping over arrays or iterators
- * - {for $x=0; $x<$y; $x++}
- * For general loops
- * The parser is generating different sets of attribute by which this compiler can
- * determine which syntax is used.
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- $compiler->loopNesting++;
- if ($parameter == 0) {
- $this->required_attributes = array('start', 'to');
- $this->optional_attributes = array('max', 'step');
- } else {
- $this->required_attributes = array('start', 'ifexp', 'var', 'step');
- $this->optional_attributes = array();
- }
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- $output = "<?php\n";
- if ($parameter == 1) {
- foreach ($_attr['start'] as $_statement) {
- if (is_array($_statement['var'])) {
- $var = $_statement['var']['var'];
- $index = $_statement['var']['smarty_internal_index'];
- } else {
- $var = $_statement['var'];
- $index = '';
- }
- $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable;\n";
- $output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n";
- }
- if (is_array($_attr['var'])) {
- $var = $_attr['var']['var'];
- $index = $_attr['var']['smarty_internal_index'];
- } else {
- $var = $_attr['var'];
- $index = '';
- }
- $output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n";
- } else {
- $_statement = $_attr['start'];
- if (is_array($_statement['var'])) {
- $var = $_statement['var']['var'];
- $index = $_statement['var']['smarty_internal_index'];
- } else {
- $var = $_statement['var'];
- $index = '';
- }
- $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable;";
- if (isset($_attr['step'])) {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];";
- } else {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;";
- }
- if (isset($_attr['max'])) {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n";
- } else {
- $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n";
- }
- $output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n";
- $output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n";
- $output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration == 1;";
- $output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration == \$_smarty_tpl->tpl_vars[$var]->total;";
- }
- $output .= "?>";
-
- $this->openTag($compiler, 'for', array('for', $compiler->nocache));
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // return compiled code
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Forelse Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {forelse} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- list($openTag, $nocache) = $this->closeTag($compiler, array('for'));
- $this->openTag($compiler, 'forelse', array('forelse', $nocache));
-
- return "<?php }} else { ?>";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Forclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/for} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- $compiler->loopNesting--;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
-
- list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse'));
-
- $output = "<?php }\n";
- if ($openTag != 'forelse') {
- $output .= "}\n";
- }
- $output .= "?>\n";
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php
deleted file mode 100644
index 178a0a52c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php
+++ /dev/null
@@ -1,347 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Foreach
- * Compiles the {foreach} {foreachelse} {/foreach} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Foreach Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_ForeachSection
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('from', 'item');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('name', 'key');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('from', 'item', 'key', 'name');
-
- /**
- * counter
- *
- * @var int
- */
- public $counter = 0;
-
- /**
- * Name of this tag
- *
- * @var string
- */
- public $tagName = 'foreach';
-
- /**
- * Valid properties of $smarty.foreach.name.xxx variable
- *
- * @var array
- */
- public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total');
-
- /**
- * Valid properties of $item@xxx variable
- *
- * @var array
- */
- public $itemProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'key');
-
- /**
- * Flag if tag had name attribute
- *
- * @var bool
- */
- public $isNamed = false;
-
- /**
- * Compiles code for the {foreach} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting ++;
- // init
- $this->isNamed = false;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $from = $_attr['from'];
- $item = $compiler->getId($_attr['item']);
- if ($item === false) {
- $item = $compiler->getVariableName($_attr['item']);
- }
- $attributes = array('item' => $item);
- if (isset($_attr['key'])) {
- $key = $compiler->getId($_attr['key']);
- if ($key === false) {
- $key = $compiler->getVariableName($_attr['key']);
- }
- $attributes['key'] = $key;
- }
- if (isset($_attr['name'])) {
- $this->isNamed = true;
- $attributes['name'] = $compiler->getId($_attr['name']);
- }
- foreach ($attributes as $a => $v) {
- if ($v === false) {
- $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
- }
- }
- $fromName = $compiler->getVariableName($_attr['from']);
- if ($fromName) {
- foreach (array('item', 'key') as $a) {
- if (isset($attributes[$a]) && $attributes[$a] == $fromName) {
- $compiler->trigger_template_error("'{$a}' and 'from' may not have same variable name '{$fromName}'",
- null, true);
- }
- }
- }
-
- $itemVar = "\$_smarty_tpl->tpl_vars['{$item}']";
- $local = '$__foreach_' . (isset($attributes['name']) ? $attributes['name'] : $attributes['item']) . '_' .
- $this->counter ++ . '_';
- $needIteration = false;
- // search for used tag attributes
- $itemAttr = array();
- $namedAttr = array();
- $this->scanForProperties($attributes, $compiler);
- if (!empty($this->matchResults['item'])) {
- $itemAttr = $this->matchResults['item'];
- }
- if (!empty($this->matchResults['named'])) {
- $namedAttr = $this->matchResults['named'];
- }
- if (isset($itemAttr['last'])) {
- $needIteration = true;
- }
- if (isset($namedAttr['last'])) {
- $needIteration = true;
- }
-
- $keyTerm = '';
- if (isset($itemAttr['key'])) {
- $keyTerm = "{$itemVar}->key => ";
- } elseif (isset($attributes['key'])) {
- $keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => ";
- }
-
- $saveVars = array();
- $restoreVars = array();
- if ($this->isNamed) {
- $foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']";
- if (!empty($namedAttr)) {
- $saveVars['saved'] = "isset({$foreachVar}) ? {$foreachVar} : false;";
- $restoreVars[] = "if ({$local}saved) {\n{$foreachVar} = {$local}saved;\n}\n";
- }
- }
- foreach (array('item', 'key') as $a) {
- if (isset($attributes[$a])) {
- $saveVars['saved_' . $a] =
- "isset(\$_smarty_tpl->tpl_vars['{$attributes[$a]}']) ? \$_smarty_tpl->tpl_vars['{$attributes[$a]}'] : false;";
- $restoreVars[] =
- "if ({$local}saved_{$a}) {\n\$_smarty_tpl->tpl_vars['{$attributes[$a]}'] = {$local}saved_{$a};\n}\n";
- }
- }
- $this->openTag($compiler, 'foreach',
- array('foreach', $compiler->nocache, $local, $restoreVars, $itemVar, true));
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
-
- // generate output code
- $output = "<?php\n";
- $output .= "\$_from = $from;\n";
- $output .= "if (!is_array(\$_from) && !is_object(\$_from)) {\n";
- $output .= "settype(\$_from, 'array');\n";
- $output .= "}\n";
- foreach ($saveVars as $k => $code) {
- $output .= "{$local}{$k} = {$code}\n";
- }
- if (isset($itemAttr['show']) || isset($itemAttr['total']) || isset($namedAttr['total']) || isset($namedAttr['show']) || isset($itemAttr['last']) || isset($namedAttr['last'])) {
- $output .= "{$local}total = \$_smarty_tpl->smarty->ext->_foreach->count(\$_from);\n";
- }
- $output .= "{$itemVar} = new Smarty_Variable();\n";
- if (isset($itemAttr['show'])) {
- $output .= "{$itemVar}->show = ({$local}total > 0);\n";
- }
- if (isset($itemAttr['total'])) {
- $output .= "{$itemVar}->total= {$local}total;\n";
- }
- if ($this->isNamed) {
- $prop = array();
- if (isset($namedAttr['total'])) {
- $prop['total'] = "'total' => {$local}total";
- }
- if (isset($namedAttr['iteration'])) {
- $prop['iteration'] = "'iteration' => 0";
- }
- if (isset($namedAttr['index'])) {
- $prop['index'] = "'index' => -1";
- }
- if (isset($namedAttr['show'])) {
- $prop['show'] = "'show' => ({$local}total > 0)";
- }
- if (!empty($namedAttr)) {
- $_vars = 'array(' . join(', ', $prop) . ')';
- $output .= "{$foreachVar} = new Smarty_Variable({$_vars});\n";
- }
- }
- if (isset($attributes['key'])) {
- $output .= "\$_smarty_tpl->tpl_vars['{$key}'] = new Smarty_Variable();\n";
- }
- if (isset($namedAttr['first']) || isset($itemAttr['first'])) {
- $output .= "{$local}first = true;\n";
- }
- if (isset($itemAttr['iteration'])) {
- $output .= "{$itemVar}->iteration=0;\n";
- }
- if (isset($itemAttr['index'])) {
- $output .= "{$itemVar}->index=-1;\n";
- }
- if ($needIteration) {
- $output .= "{$local}iteration=0;\n";
- }
- $output .= "{$itemVar}->_loop = false;\n";
- $output .= "foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n";
- $output .= "{$itemVar}->_loop = true;\n";
- if (isset($attributes['key']) && isset($itemAttr['key'])) {
- $output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n";
- }
- if (isset($itemAttr['iteration'])) {
- $output .= "{$itemVar}->iteration++;\n";
- }
- if (isset($itemAttr['index'])) {
- $output .= "{$itemVar}->index++;\n";
- }
- if ($needIteration) {
- $output .= "{$local}iteration++;\n";
- }
- if (isset($itemAttr['first'])) {
- $output .= "{$itemVar}->first = {$local}first;\n";
- }
- if (isset($itemAttr['last'])) {
- $output .= "{$itemVar}->last = {$local}iteration == {$local}total;\n";
- }
- if ($this->isNamed) {
- if (isset($namedAttr['iteration'])) {
- $output .= "{$foreachVar}->value['iteration']++;\n";
- }
- if (isset($namedAttr['index'])) {
- $output .= "{$foreachVar}->value['index']++;\n";
- }
- if (isset($namedAttr['first'])) {
- $output .= "{$foreachVar}->value['first'] = {$local}first;\n";
- }
- if (isset($namedAttr['last'])) {
- $output .= "{$foreachVar}->value['last'] = {$local}iteration == {$local}total;\n";
- }
- }
- if (isset($namedAttr['first']) || isset($itemAttr['first'])) {
- $output .= "{$local}first = false;\n";
- }
- $output .= "{$local}saved_local_item = {$itemVar};\n";
- $output .= "?>";
-
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Foreachelse Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {foreachelse} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- list($openTag, $nocache, $local, $restoreVars, $itemVar, $foo) = $this->closeTag($compiler, array('foreach'));
- $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $restoreVars, $itemVar, false));
- $output = "<?php\n";
- $output .= "{$itemVar} = {$local}saved_local_item;\n";
- $output .= "}\n";
- $output .= "if (!{$itemVar}->_loop) {\n?>";
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Foreachclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/foreach} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting --;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
-
- list($openTag, $compiler->nocache, $local, $restoreVars, $itemVar, $restore) =
- $this->closeTag($compiler, array('foreach', 'foreachelse'));
- $output = "<?php\n";
-
- if ($restore) {
- $output .= "{$itemVar} = {$local}saved_local_item;\n";
- }
- $output .= "}\n";
- foreach ($restoreVars as $restore) {
- $output .= $restore;
- }
- $output .= "?>";
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php
deleted file mode 100644
index 28f335949..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Function
- * Compiles the {function} {/function} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
-{
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the {function} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting++;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- unset($_attr['nocache']);
- $_name = trim($_attr['name'], "'\"");
- $compiler->parent_compiler->tpl_function[$_name] = $compiler->parent_compiler->template->tpl_function[$_name] = array();
- $save = array($_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code,
- $compiler->template->caching);
- $this->openTag($compiler, 'function', $save);
- // Init temporary context
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
- $compiler->template->compiled->has_nocache_code = false;
- return true;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Functionclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
-{
-
- /**
- * Compiler object
- *
- * @var object
- */
- private $compiler = null;
-
- /**
- * Compiles code for the {/function} tag
- *
- * @param array $args array with attributes from parser
- * @param object|\Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return bool true
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting--;
- $this->compiler = $compiler;
- $saved_data = $this->closeTag($compiler, array('function'));
- $_attr = $saved_data[0];
- $_name = trim($_attr['name'], "'\"");
- $compiler->parent_compiler->tpl_function[$_name]['called_functions'] = $compiler->parent_compiler->template->tpl_function[$_name]['called_functions'] = $compiler->called_functions;
- $compiler->parent_compiler->tpl_function[$_name]['compiled_filepath'] = $compiler->parent_compiler->template->tpl_function[$_name]['compiled_filepath'] = $compiler->parent_compiler->template->compiled->filepath;
- $compiler->parent_compiler->tpl_function[$_name]['uid'] = $compiler->parent_compiler->template->tpl_function[$_name]['uid'] = $compiler->template->source->uid;
- $compiler->called_functions = array();
- $_parameter = $_attr;
- unset($_parameter['name']);
- // default parameter
- $_paramsArray = array();
- foreach ($_parameter as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- if (!empty($_paramsArray)) {
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- $_paramsCode = "\$params = array_merge($_params, \$params);\n";
- } else {
- $_paramsCode = '';
- }
- $_functionCode = $compiler->parser->current_buffer;
- // setup buffer for template function code
- $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
-
- $_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}";
- $_funcNameCaching = $_funcName . '_nocache';
- if ($compiler->template->compiled->has_nocache_code) {
- $compiler->parent_compiler->tpl_function[$_name]['call_name_caching'] = $compiler->parent_compiler->template->tpl_function[$_name]['call_name_caching'] = $_funcNameCaching;
- $output = "<?php\n";
- $output .= "/* {$_funcNameCaching} */\n";
- $output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
- $output .= "function {$_funcNameCaching} (\$_smarty_tpl,\$params) {\n";
- $output .= "ob_start();\n";
- $output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n";
- $output .= $_paramsCode;
- $output .= "\$_smarty_tpl->_cache['saved_tpl_vars'][] = \$_smarty_tpl->tpl_vars;\n";
- $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value);\n}";
- $output .= "\$params = var_export(\$params, true);\n";
- $output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
- $output .= "\\\$saved_tpl_vars = \\\$_smarty_tpl->tpl_vars;\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value);\n}\n?>";
- $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n\";?>";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
- $output .= "foreach (Smarty::\\\$global_tpl_vars as \\\$key => \\\$value){\n";
- $output .= "if (!isset(\\\$_smarty_tpl->tpl_vars[\\\$key]) || \\\$_smarty_tpl->tpl_vars[\\\$key] === \\\$value) \\\$saved_tpl_vars[\\\$key] = \\\$value;\n}\n";
- $output .= "\\\$_smarty_tpl->tpl_vars = \\\$saved_tpl_vars;?>\n";
- $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>";
- $output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash, ob_get_clean());\n";
- $output .= "\$_smarty_tpl->tpl_vars = array_pop(\$_smarty_tpl->_cache['saved_tpl_vars']);\n}\n}\n";
- $output .= "/*/ {$_funcName}_nocache */\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
- $_functionCode = new Smarty_Internal_ParseTree_Tag($compiler->parser, preg_replace_callback("/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", array($this,
- 'removeNocache'), $_functionCode->to_smarty_php($compiler->parser)));
- }
- $compiler->parent_compiler->tpl_function[$_name]['call_name'] = $compiler->parent_compiler->template->tpl_function[$_name]['call_name'] = $_funcName;
- $output = "<?php\n";
- $output .= "/* {$_funcName} */\n";
- $output .= "if (!function_exists('{$_funcName}')) {\n";
- $output .= "function {$_funcName}(\$_smarty_tpl,\$params) {\n";
- $output .= "\$saved_tpl_vars = \$_smarty_tpl->tpl_vars;\n";
- $output .= $_paramsCode;
- $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value);\n}?>";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
- $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
- $output = "<?php foreach (Smarty::\$global_tpl_vars as \$key => \$value){\n";
- $output .= "if (!isset(\$_smarty_tpl->tpl_vars[\$key]) || \$_smarty_tpl->tpl_vars[\$key] === \$value) \$saved_tpl_vars[\$key] = \$value;\n}\n";
- $output .= "\$_smarty_tpl->tpl_vars = \$saved_tpl_vars;\n}\n}\n";
- $output .= "/*/ {$_funcName} */\n\n";
- $output .= "?>\n";
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $output));
- $compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
- // nocache plugins must be copied
- if (!empty($compiler->template->compiled->required_plugins['nocache'])) {
- foreach ($compiler->template->compiled->required_plugins['nocache'] as $plugin => $tmp) {
- foreach ($tmp as $type => $data) {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$plugin][$type] = $data;
- }
- }
- }
- // restore old buffer
-
- $compiler->parser->current_buffer = $saved_data[1];
- // restore old status
- $compiler->template->compiled->has_nocache_code = $saved_data[2];
- $compiler->template->caching = $saved_data[3];
- return true;
- }
-
- /**
- * @param $match
- *
- * @return mixed
- */
- function removeNocache($match)
- {
- $code = preg_replace("/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", '', $match[0]);
- $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
- return $code;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
deleted file mode 100644
index 541e21816..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile If
- * Compiles the {if} {else} {elseif} {/if} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile If Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {if} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'if', array(1, $compiler->nocache));
- // must whole block be nocache ?
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing if condition", null, true);
- }
-
- if (is_array($parameter['if condition'])) {
- if ($compiler->nocache) {
- $_nocache = ',true';
- // create nocache var to make it know for further compiling
- if (is_array($parameter['if condition']['var'])) {
- $var = trim($parameter['if condition']['var']['var'], "'");
- } else {
- $var = trim($parameter['if condition']['var'], "'");
- }
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- } else {
- $_nocache = '';
- }
- if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " . $parameter['if condition']['var']['var'] .
- "$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
-
- return $_output;
- } else {
- return "<?php if ({$parameter['if condition']}) {?>";
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Else Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {else} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
- $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
-
- return "<?php } else { ?>";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile ElseIf Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {elseif} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing elseif condition", null, true);
- }
-
- if (is_array($parameter['if condition'])) {
- $condition_by_assign = true;
- if ($compiler->nocache) {
- $_nocache = ',true';
- // create nocache var to make it know for further compiling
- if (is_array($parameter['if condition']['var'])) {
- $var = trim($parameter['if condition']['var']['var'], "'");
- } else {
- $var = trim($parameter['if condition']['var'], "'");
- }
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- } else {
- $_nocache = '';
- }
- } else {
- $condition_by_assign = false;
- }
-
- if (empty($compiler->prefix_code)) {
- if ($condition_by_assign) {
- $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
- if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php } else { if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " .
- $parameter['if condition']['var']['var'] . "$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output = "<?php } else { if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
-
- return $_output;
- } else {
- $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
-
- return "<?php } elseif ({$parameter['if condition']}) {?>";
- }
- } else {
- $tmp = '';
- foreach ($compiler->prefix_code as $code) {
- $tmp = $compiler->appendCode($tmp, $code);
- }
- $compiler->prefix_code = array();
- $tmp = $compiler->appendCode("<?php } else {?>", $tmp);
- $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
- if ($condition_by_assign) {
- if (is_array($parameter['if condition']['var'])) {
- $_output = $compiler->appendCode($tmp, "<?php if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] .
- "]) || !is_array(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " .
- $parameter['if condition']['var']['var'] . "$_nocache);\n");
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output = $compiler->appendCode($tmp, "<?php if (!isset(\$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] .
- "])) \$_smarty_tpl->tpl_vars[" .
- $parameter['if condition']['var'] .
- "] = new Smarty_Variable(null{$_nocache});");
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
-
- return $_output;
- } else {
- return $compiler->appendCode($tmp, "<?php if ({$parameter['if condition']}) {?>");
- }
- }
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Ifclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/if} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
- $tmp = '';
- for ($i = 0; $i < $nesting; $i ++) {
- $tmp .= '}';
- }
-
- return "<?php {$tmp}?>";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php
deleted file mode 100644
index 09fa11d6c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php
+++ /dev/null
@@ -1,366 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Include
- * Compiles the {include} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Include Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
-{
- /**
- * caching mode to create nocache code but no cache file
- */
- const CACHING_NOCACHE_CODE = 9999;
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('nocache', 'inline', 'caching', 'bubble_up');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Valid scope names
- *
- * @var array
- */
- public $valid_scopes = array('local' => true, 'parent' => true, 'root' => true, 'global' => true,
- 'smarty' => true, 'tpl_root' => true);
-
- /**
- * Compiles code for the {include} tag
- *
- * @param array $args array with attributes from parser
- * @param Smarty_Internal_SmartyTemplateCompiler $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @throws SmartyCompilerException
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- $hashResourceName = $fullResourceName = $source_resource = $_attr['file'];
- $variable_template = false;
- $cache_tpl = false;
- // parse resource_name
- if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) {
- $type = !empty($match[3]) ? $match[3] : $compiler->template->smarty->default_resource_type;
- $name = !empty($match[5]) ? $match[5] : $match[6];
- $handler = Smarty_Resource::load($compiler->smarty, $type);
- if ($handler->recompiled || $handler->uncompiled) {
- $variable_template = true;
- }
- if (!$variable_template) {
- if ($type != 'string') {
- $fullResourceName = "{$type}:{$name}";
- $compiled = $compiler->parent_compiler->template->compiled;
- if (isset($compiled->includes[$fullResourceName])) {
- $compiled->includes[$fullResourceName] ++;
- $cache_tpl = true;
- } else {
- $compiled->includes[$fullResourceName] = 1;
- }
- $fullResourceName = '"' . $fullResourceName . '"';
- }
- }
- if (empty($match[5])) {
- $variable_template = true;
- }
- } else {
- $variable_template = true;
- }
-
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- }
-
- // scope setup
- $_scope = Smarty::SCOPE_LOCAL;
- if (isset($_attr['scope'])) {
- $_attr['scope'] = trim($_attr['scope'], "'\"");
- if (!isset($this->valid_scopes[$_attr['scope']])) {
- $compiler->trigger_template_error("illegal value '{$_attr['scope']}' for \"scope\" attribute", null, true);
- }
- if ($_attr['scope'] != 'local') {
- if ($_attr['scope'] == 'parent') {
- $_scope = Smarty::SCOPE_PARENT;
- } elseif ($_attr['scope'] == 'root') {
- $_scope = Smarty::SCOPE_ROOT;
- } elseif ($_attr['scope'] == 'global') {
- $_scope = Smarty::SCOPE_GLOBAL;
- } elseif ($_attr['scope'] == 'smarty') {
- $_scope = Smarty::SCOPE_SMARTY;
- } elseif ($_attr['scope'] == 'tpl_root') {
- $_scope = Smarty::SCOPE_TPL_ROOT;
- }
- if ($_attr['bubble_up'] === true) {
- $_scope = $_scope + Smarty::SCOPE_BUBBLE_UP;
- }
- }
- }
-
- // set flag to cache subtemplate object when called within loop or template name is variable.
- if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) {
- $_cache_tpl = 'true';
- } else {
- $_cache_tpl = 'false';
- }
- // assume caching is off
- $_caching = Smarty::CACHING_OFF;
-
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
-
- $call_nocache = $compiler->tag_nocache || $compiler->nocache;
-
- // caching was on and {include} is not in nocache mode
- if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) {
- $_caching = self::CACHING_NOCACHE_CODE;
- }
-
- // flag if included template code should be merged into caller
- $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr['inline'] === true) &&
- !$compiler->template->source->handler->recompiled;
-
- if ($merge_compiled_includes && $_attr['inline'] !== true) {
- // variable template name ?
- if ($variable_template) {
- $merge_compiled_includes = false;
- if ($compiler->template->caching) {
- // must use individual cache file
- //$_attr['caching'] = 1;
- }
- }
- // variable compile_id?
- if (isset($_attr['compile_id'])) {
- if (!((substr_count($_attr['compile_id'], '"') == 2 || substr_count($_attr['compile_id'], "'") == 2 ||
- is_numeric($_attr['compile_id']))) || substr_count($_attr['compile_id'], '(') != 0 ||
- substr_count($_attr['compile_id'], '$_smarty_tpl->') != 0
- ) {
- $merge_compiled_includes = false;
- if ($compiler->template->caching) {
- // must use individual cache file
- //$_attr['caching'] = 1;
- }
- }
- }
- }
-
- /*
- * if the {include} tag provides individual parameter for caching or compile_id
- * the subtemplate must not be included into the common cache file and is treated like
- * a call in nocache mode.
- *
- */
- if ($_attr['nocache'] !== true && $_attr['caching']) {
- $_caching = $_new_caching = (int) $_attr['caching'];
- $call_nocache = true;
- } else {
- $_new_caching = Smarty::CACHING_LIFETIME_CURRENT;
- }
- if (isset($_attr['cache_lifetime'])) {
- $_cache_lifetime = $_attr['cache_lifetime'];
- $call_nocache = true;
- $_caching = $_new_caching;
- } else {
- $_cache_lifetime = '$_smarty_tpl->cache_lifetime';
- }
- if (isset($_attr['cache_id'])) {
- $_cache_id = $_attr['cache_id'];
- $call_nocache = true;
- $_caching = $_new_caching;
- } else {
- $_cache_id = '$_smarty_tpl->cache_id';
- }
- if (isset($_attr['compile_id'])) {
- $_compile_id = $_attr['compile_id'];
- } else {
- $_compile_id = '$_smarty_tpl->compile_id';
- }
-
- // if subtemplate will be called in nocache mode do not merge
- if ($compiler->template->caching && $call_nocache) {
- $merge_compiled_includes = false;
- }
-
- $has_compiled_template = false;
- if ($merge_compiled_includes) {
- $c_id = isset($_attr['compile_id']) ? $_attr['compile_id'] : $compiler->template->compile_id;
- // we must observe different compile_id and caching
- $t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching'));
- if (!isset($compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash])) {
- $has_compiled_template =
- $this->compileInlineTemplate($compiler, $fullResourceName, $_caching, $hashResourceName, $t_hash,
- $c_id);
- } else {
- $has_compiled_template = true;
- }
- }
- // delete {include} standard attributes
- unset($_attr['file'], $_attr['assign'], $_attr['cache_id'], $_attr['compile_id'], $_attr['cache_lifetime'], $_attr['nocache'], $_attr['caching'], $_attr['scope'], $_attr['inline'], $_attr['bubble_up']);
- // remaining attributes must be assigned as smarty variable
- $_vars_nc = '';
- if (!empty($_attr)) {
- if ($_scope == Smarty::SCOPE_LOCAL) {
- $_pairs = array();
- // create variables
- foreach ($_attr as $key => $value) {
- $_pairs[] = "'$key'=>$value";
- $_vars_nc .= "\$_smarty_tpl->tpl_vars['$key'] = new Smarty_Variable($value);\n";
- }
- $_vars = 'array(' . join(',', $_pairs) . ')';
- } else {
- $compiler->trigger_template_error('variable passing not allowed in parent/global scope', null, true);
- }
- } else {
- $_vars = 'array()';
- }
- $update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache &&
- $_compile_id != '$_smarty_tpl->compile_id';
- if ($has_compiled_template && !$call_nocache) {
- $_output = "<?php\n";
- if ($update_compile_id) {
- $_output .= $compiler->makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n");
- }
- if (!empty($_vars_nc) && $_caching == 9999 && $compiler->template->caching) {
- //$compiler->suppressNocacheProcessing = false;
- $_output .= substr($compiler->processNocacheCode('<?php ' . $_vars_nc . "?>\n", true), 6, - 3);
- //$compiler->suppressNocacheProcessing = true;
- }
- if (isset($_assign)) {
- $_output .= "ob_start();\n";
- }
- $_output .= "\$_smarty_tpl->smarty->ext->_subtemplate->render(\$_smarty_tpl, {$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['func']}');\n";
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
- }
- if ($update_compile_id) {
- $_output .= $compiler->makeNocacheCode("\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n");
- }
- $_output .= "?>\n";
-
- return $_output;
- }
-
- if ($call_nocache) {
- $compiler->tag_nocache = true;
- }
- $_output = "<?php ";
- if ($update_compile_id) {
- $_output .= "\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n";
- }
- // was there an assign attribute
- if (isset($_assign)) {
- $_output .= "ob_start();\n";
- }
- $_output .= "\$_smarty_tpl->smarty->ext->_subtemplate->render(\$_smarty_tpl, {$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n";
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
- }
- if ($update_compile_id) {
- $_output .= "\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n";
- }
- $_output .= "?>\n";
- return $_output;
- }
-
- /**
- * Compile inline sub template
- *
- * @param \Smarty_Internal_SmartyTemplateCompiler $compiler
- * @param $fullResourceName
- * @param $_caching
- * @param $hashResourceName
- * @param $t_hash
- * @param $c_id
- *
- * @return bool
- */
- public function compileInlineTemplate(Smarty_Internal_SmartyTemplateCompiler $compiler, $fullResourceName,
- $_caching, $hashResourceName, $t_hash, $c_id)
- {
- $compiler->smarty->allow_ambiguous_resources = true;
- /* @var Smarty_Internal_Template $tpl */
- $tpl =
- new $compiler->smarty->template_class (trim($fullResourceName, '"\''), $compiler->smarty, $compiler->template,
- $compiler->template->cache_id, $c_id, $_caching);
- if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) {
- $compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['uid'] = $tpl->source->uid;
- if (isset($compiler->template->_inheritance)) {
- $tpl->_inheritance = clone $compiler->template->_inheritance;
- }
- $tpl->compiled = new Smarty_Template_Compiled();
- $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
- $tpl->loadCompiler();
- // save unique function name
- $compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['func'] =
- $tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
- // make sure whole chain gets compiled
- $tpl->mustCompile = true;
- $compiler->parent_compiler->mergedSubTemplatesData[$hashResourceName][$t_hash]['nocache_hash'] =
- $tpl->compiled->nocache_hash;
- // get compiled code
- $compiled_code = "<?php\n\n";
- $compiled_code .= "/* Start inline template \"{$tpl->source->type}:{$tpl->source->name}\" =============================*/\n";
- $compiled_code .= "function {$tpl->compiled->unifunc} (\$_smarty_tpl) {\n";
- $compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler);
- $compiled_code .= "<?php\n";
- $compiled_code .= "}\n?>\n";
- $compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode);
- $compiled_code .= "<?php\n\n";
- $compiled_code .= "/* End inline template \"{$tpl->source->type}:{$tpl->source->name}\" =============================*/\n";
- $compiled_code .= "?>";
- unset($tpl->compiler);
- if ($tpl->compiled->has_nocache_code) {
- // replace nocache_hash
- $compiled_code =
- str_replace("{$tpl->compiled->nocache_hash}", $compiler->template->compiled->nocache_hash,
- $compiled_code);
- $compiler->template->compiled->has_nocache_code = true;
- }
- $compiler->parent_compiler->mergedSubTemplatesCode[$tpl->compiled->unifunc] = $compiled_code;
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php
deleted file mode 100644
index e7e62997c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Include PHP
- * Compiles the {include_php} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Insert Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('file');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('once', 'assign');
-
- /**
- * Compiles code for the {include_php} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string
- * @throws \SmartyCompilerException
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- if (!($compiler->smarty instanceof SmartyBC)) {
- throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable");
- }
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- /** @var Smarty_Internal_Template $_smarty_tpl
- * used in evaluated code
- */
- $_smarty_tpl = $compiler->template;
- $_filepath = false;
- $_file = null;
- eval('$_file = @' . $_attr['file'] . ';');
- if (!isset($compiler->smarty->security_policy) && file_exists($_file)) {
- $_filepath = $compiler->smarty->_realpath($_file, true);
- } else {
- if (isset($compiler->smarty->security_policy)) {
- $_dir = $compiler->smarty->security_policy->trusted_dir;
- } else {
- $_dir = $compiler->smarty->trusted_dir;
- }
- if (!empty($_dir)) {
- foreach ((array) $_dir as $_script_dir) {
- $_path = $compiler->smarty->_realpath($_script_dir . DS . $_file, true);
- if (file_exists($_path)) {
- $_filepath = $_path;
- break;
- }
- }
- }
- }
- if ($_filepath == false) {
- $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", null, true);
- }
-
- if (isset($compiler->smarty->security_policy)) {
- $compiler->smarty->security_policy->isTrustedPHPDir($_filepath);
- }
-
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- }
- $_once = '_once';
- if (isset($_attr['once'])) {
- if ($_attr['once'] == 'false') {
- $_once = '';
- }
- }
-
- if (isset($_assign)) {
- return "<?php ob_start();\ninclude{$_once} ('{$_filepath}');\n\$_smarty_tpl->assign({$_assign},ob_get_clean());\n?>";
- } else {
- return "<?php include{$_once} ('{$_filepath}');?>\n";
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php
deleted file mode 100644
index 2ebde1661..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Compile Insert
- * Compiles the {insert} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Insert Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the {insert} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache);
- if (!$nocacheParam) {
- // do not compile as nocache code
- $compiler->suppressNocacheProcessing = true;
- }
- $compiler->tag_nocache = true;
- $_smarty_tpl = $compiler->template;
- $_name = null;
- $_script = null;
-
- $_output = '<?php ';
- // save possible attributes
- eval('$_name = @' . $_attr['name'] . ';');
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- // create variable to make sure that the compiler knows about its nocache status
- $var = trim($_attr['assign'], "'");
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- }
- if (isset($_attr['script'])) {
- // script which must be included
- $_function = "smarty_insert_{$_name}";
- $_smarty_tpl = $compiler->template;
- $_filepath = false;
- eval('$_script = @' . $_attr['script'] . ';');
- if (!isset($compiler->smarty->security_policy) && file_exists($_script)) {
- $_filepath = $_script;
- } else {
- if (isset($compiler->smarty->security_policy)) {
- $_dir = $compiler->smarty->security_policy->trusted_dir;
- } else {
- $_dir = $compiler->smarty->trusted_dir;
- }
- if (!empty($_dir)) {
- foreach ((array) $_dir as $_script_dir) {
- $_script_dir = rtrim($_script_dir, '/\\') . DS;
- if (file_exists($_script_dir . $_script)) {
- $_filepath = $_script_dir . $_script;
- break;
- }
- }
- }
- }
- if ($_filepath == false) {
- $compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true);
- }
- // code for script file loading
- $_output .= "require_once '{$_filepath}' ;";
- require_once $_filepath;
- if (!is_callable($_function)) {
- $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'", null, true);
- }
- } else {
- $_filepath = 'null';
- $_function = "insert_{$_name}";
- // function in PHP script ?
- if (!is_callable($_function)) {
- // try plugin
- if (!$_function = $compiler->getPlugin($_name, 'insert')) {
- $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", null, true);
- }
- }
- }
- // delete {insert} standard attributes
- unset($_attr['name'], $_attr['assign'], $_attr['script'], $_attr['nocache']);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- $_paramsArray[] = "'$_key' => $_value";
- }
- $_params = 'array(' . implode(", ", $_paramsArray) . ')';
- // call insert
- if (isset($_assign)) {
- if ($_smarty_tpl->caching && !$nocacheParam) {
- $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>";
- } else {
- $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
- }
- } else {
- $compiler->has_output = true;
- if ($_smarty_tpl->caching && !$nocacheParam) {
- $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
- } else {
- $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>";
- }
- }
-
- return $_output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
deleted file mode 100644
index 8c6b701e1..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Ldelim
- * Compiles the {ldelim} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Ldelim Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {ldelim} tag
- * This tag does output the left delimiter
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- // this tag does not return compiled code
- $compiler->has_code = true;
-
- return $compiler->smarty->left_delimiter;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
deleted file mode 100644
index 9e2eea233..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Block Plugin
- * Compiles code for the execution of block plugin
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Block Plugin Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of block plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block plugin
- * @param string $function PHP function name
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
- {
- if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // compile code
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, substr($tag, 0, - 5));
- // This tag does create output
- $compiler->has_output = true;
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post = '';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo ' .
- $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'],
- 'value' => 'ob_get_clean()')) . ';';
- }
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post .
- " } array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- }
-
- return $output . "\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
deleted file mode 100644
index 16f233359..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile ForeachSection
- * Shared methods for {foreach} {section} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile ForeachSection Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_CompileBase
-{
-
- /**
- * Preg search pattern
- *
- * @var string
- */
- private $propertyPreg = '';
-
- /**
- * Offsets in preg match result
- *
- * @var array
- */
- private $resultOffsets = array();
-
- /**
- * Start offset
- *
- * @var int
- */
- private $startOffset = 0;
-
- /**
- * Name of this tag
- *
- * @var string
- */
- public $tagName = '';
-
- /**
- * Valid properties of $smarty.xxx variable
- *
- * @var array
- */
- public $nameProperties = array();
-
- /**
- * {section} tag has no item properties
- *
- * @var array
- */
- public $itemProperties = null;
-
- /**
- * {section} tag has always name attribute
- *
- * @var bool
- */
- public $isNamed = true;
-
- /**
- * @var array
- */
- public $matchResults = array();
-
- /**
- * Scan sources for used tag attributes
- *
- * @param array $attributes
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function scanForProperties($attributes, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->propertyPreg = '~(';
- $this->startOffset = 0;
- $this->resultOffsets = array();
- $this->matchResults = array('named' => array(), 'item' => array());
- if ($this->isNamed) {
- $this->buildPropertyPreg(true, $attributes);
- }
- if (isset($this->itemProperties)) {
- if ($this->isNamed) {
- $this->propertyPreg .= '|';
- }
- $this->buildPropertyPreg(false, $attributes);
- }
- $this->propertyPreg .= ')\W~i';
- // Template source
- $this->matchTemplateSource($compiler);
- // Parent template source
- $this->matchParentTemplateSource($compiler);
- // {block} source
- $this->matchBlockSource($compiler);
- }
-
- /**
- * Build property preg string
- *
- * @param bool $named
- * @param array $attributes
- */
- public function buildPropertyPreg($named, $attributes)
- {
- if ($named) {
- $this->resultOffsets['named'] = $this->startOffset + 3;
- $this->propertyPreg .= "([\$]smarty[.]{$this->tagName}[.]{$attributes['name']}[.](";
- $properties = $this->nameProperties;
- } else {
- $this->resultOffsets['item'] = $this->startOffset + 3;
- $this->propertyPreg .= "([\$]{$attributes['item']}[@](";
- $properties = $this->itemProperties;
- }
- $this->startOffset += count($properties) + 2;
- $propName = reset($properties);
- while ($propName) {
- $this->propertyPreg .= "({$propName})";
- $propName = next($properties);
- if ($propName) {
- $this->propertyPreg .= '|';
- }
- }
- $this->propertyPreg .= '))';
- }
-
- /**
- * Find matches in source string
- *
- * @param string $source
- */
- public function matchProperty($source)
- {
- preg_match_all($this->propertyPreg, $source, $match, PREG_SET_ORDER);
- foreach ($this->resultOffsets as $key => $offset) {
- foreach ($match as $m) {
- if (isset($m[$offset]) && !empty($m[$offset])) {
- $this->matchResults[$key][strtolower($m[$offset])] = true;
- }
- }
- }
- }
-
- /**
- * Find matches in template source
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function matchTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->matchProperty($compiler->parser->lex->data);
- }
-
- /**
- * Find matches in all parent template source
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function matchParentTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // search parent compiler template source
- $nextCompiler = $compiler;
- while ($nextCompiler !== $nextCompiler->parent_compiler) {
- $nextCompiler = $nextCompiler->parent_compiler;
- if ($compiler !== $nextCompiler) {
- // get template source
- $_content = $nextCompiler->template->source->getContent();
- if ($_content != '') {
- // run pre filter if required
- if ((isset($nextCompiler->smarty->autoload_filters['pre']) ||
- isset($nextCompiler->smarty->registered_filters['pre']))) {
- $_content = $nextCompiler->smarty->ext->_filter_Handler->runFilter('pre', $_content, $nextCompiler->template);
- }
- $this->matchProperty($_content);
- }
- }
- }
- }
-
- /**
- * Find matches in {block} tag source
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- */
- public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler)
- {
-
- }
-
- /**
- * Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $tag = strtolower(trim($parameter[ 0 ], '"\''));
- $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
- if (!$name) {
- $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
- }
- $property = isset($parameter[ 2 ]) ? strtolower($compiler->getId($parameter[ 2 ])) : false;
- if (!$property || !in_array($property, $this->nameProperties)) {
- $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true);
- }
- $tagVar = "'__smarty_{$tag}_{$name}'";
- return "(isset(\$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}']) ? \$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}'] : null)";
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
deleted file mode 100644
index 0d0ab8138..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Function Plugin
- * Compiles code for the execution of function plugin
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Function Plugin Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array();
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of function plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function plugin
- * @param string $function PHP function name
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
- {
- // This tag does create output
- $compiler->has_output = true;
-
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- // compile code
- $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
deleted file mode 100644
index 9594d2ae7..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Compile Modifier
- * Compiles code for modifier execution
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Modifier Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for modifier execution
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $output = $parameter['value'];
- // loop over list of modifiers
- foreach ($parameter['modifierlist'] as $single_modifier) {
- $modifier = $single_modifier[0];
- $single_modifier[0] = $output;
- $params = implode(',', $single_modifier);
- // check if we know already the type of modifier
- if (isset($compiler->known_modifier_type[$modifier])) {
- $modifier_types = array($compiler->known_modifier_type[$modifier]);
- } else {
- $modifier_types = array(1, 2, 3, 4, 5, 6);
- }
- foreach ($modifier_types as $type) {
- switch ($type) {
- case 1:
- // registered modifier
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
- $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
- if (!is_array($function)) {
- $output = "{$function}({$params})";
- } else {
- if (is_object($function[0])) {
- $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' .
- $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
- } else {
- $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
- }
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 2:
- // registered modifier compiler
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
- $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 3:
- // modifiercompiler plugin
- if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) ||
- $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
- ) {
- $plugin = 'smarty_modifiercompiler_' . $modifier;
- $output = $plugin($single_modifier, $compiler);
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 4:
- // modifier plugin
- if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) ||
- $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
- ) {
- $output = "{$function}({$params})";
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 5:
- // PHP function
- if (is_callable($modifier)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) ||
- $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)
- ) {
- $output = "{$modifier}({$params})";
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 6:
- // default plugin handler
- if (isset($compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier]) ||
- (is_callable($compiler->smarty->default_plugin_handler_func) &&
- $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))
- ) {
- $function = $compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) ||
- $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
- ) {
- if (!is_array($function)) {
- $output = "{$function}({$params})";
- } else {
- if (is_object($function[0])) {
- $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' .
- $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
- } else {
- $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
- }
- }
- }
- if (isset($compiler->parent_compiler->template->compiled->required_plugins['nocache'][$modifier][Smarty::PLUGIN_MODIFIER]['file']) ||
- isset($compiler->parent_compiler->template->compiled->required_plugins['compiled'][$modifier][Smarty::PLUGIN_MODIFIER]['file'])
- ) {
- // was a plugin
- $compiler->known_modifier_type[$modifier] = 4;
- } else {
- $compiler->known_modifier_type[$modifier] = $type;
- }
- break 2;
- }
- }
- }
- if (!isset($compiler->known_modifier_type[$modifier])) {
- $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", null, true);
- }
- }
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
deleted file mode 100644
index d2bc5d60c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Object Block Function
- * Compiles code for registered objects as block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Object Block Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of block plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block object
- * @param string $method name of method to call
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method)
- {
- if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag . '->' . $method, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- // compile code
- $output =
- "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}->{$method}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- $base_tag = substr($tag, 0, - 5);
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag . '->' . $method);
- // This tag does create output
- $compiler->has_output = true;
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post = '';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(),
- array('modifierlist' => $parameter['modifier_list'],
- 'value' => 'ob_get_clean()')) . ';';
- }
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo \$_smarty_tpl->smarty->registered_objects['{$base_tag}'][0]->{$method}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " .
- $mod_post . " } array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- }
-
- return $output . "\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
deleted file mode 100644
index e306e0f6d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Object Function
- * Compiles code for registered objects as function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Object Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of function plugin
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- * @param string $method name of method to call
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- $_assign = null;
- if (isset($_attr['assign'])) {
- $_assign = $_attr['assign'];
- unset($_attr['assign']);
- }
- // method or property ?
- if (method_exists($compiler->smarty->registered_objects[$tag][0], $method)) {
- // convert attributes into parameter array string
- if ($compiler->smarty->registered_objects[$tag][2]) {
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
- } else {
- $_params = implode(",", $_attr);
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
- }
- } else {
- // object property
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
- }
-
- if (empty($_assign)) {
- // This tag does create output
- $compiler->has_output = true;
- $output = "<?php echo {$return};?>\n";
- } else {
- $output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n";
- }
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php
deleted file mode 100644
index 3ca63a548..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_php.php
+++ /dev/null
@@ -1,209 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile PHP Expression
- * Compiles any tag which will output an expression or variable
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile PHP Expression Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
-{
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('code', 'type');
-
- /**
- * Compiles code for generating output from any expression
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $compiler->has_code = false;
- if ($_attr['type'] == 'xml') {
- $compiler->tag_nocache = true;
- $save = $compiler->template->compiled->has_nocache_code;
- $output = addcslashes($_attr['code'], "'\\");
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $compiler->processNocacheCode("<?php echo '" .
- $output .
- "';?>", $compiler, true)));
- $compiler->template->compiled->has_nocache_code = $save;
- return '';
- }
- if ($_attr['type'] != 'tag') {
- if ($compiler->php_handling == Smarty::PHP_REMOVE) {
- return '';
- } elseif ($compiler->php_handling == Smarty::PHP_QUOTE) {
- $output = preg_replace_callback('#(<\?(?:php|=)?)|(<%)|(<script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*>)|(\?>)|(%>)|(<\/script>)#i', array($this,
- 'quote'), $_attr['code']);
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Text($output));
- return '';
- } elseif ($compiler->php_handling == Smarty::PHP_PASSTHRU || $_attr['type'] == 'unmatched') {
- $compiler->tag_nocache = true;
- $save = $compiler->template->compiled->has_nocache_code;
- $output = addcslashes($_attr['code'], "'\\");
- $compiler->parser->current_buffer->append_subtree($compiler->parser, new Smarty_Internal_ParseTree_Tag($compiler->parser, $compiler->processNocacheCode("<?php echo '" .
- $output .
- "';?>", $compiler, true)));
- $compiler->template->compiled->has_nocache_code = $save;
- return '';
- } elseif ($compiler->php_handling == Smarty::PHP_ALLOW) {
- if (!($compiler->smarty instanceof SmartyBC)) {
- $compiler->trigger_template_error('$smarty->php_handling PHP_ALLOW not allowed. Use SmartyBC to enable it', null, true);
- }
- $compiler->has_code = true;
- return $_attr['code'];
- } else {
- $compiler->trigger_template_error('Illegal $smarty->php_handling value', null, true);
- }
- } else {
- $compiler->has_code = true;
- if (!($compiler->smarty instanceof SmartyBC)) {
- $compiler->trigger_template_error('{php}{/php} tags not allowed. Use SmartyBC to enable them', null, true);
- }
- $ldel = preg_quote($compiler->smarty->left_delimiter, '#');
- $rdel = preg_quote($compiler->smarty->right_delimiter, '#');
- preg_match("#^({$ldel}php\\s*)((.)*?)({$rdel})#", $_attr['code'], $match);
- if (!empty($match[2])) {
- if ('nocache' == trim($match[2])) {
- $compiler->tag_nocache = true;
- } else {
- $compiler->trigger_template_error("illegal value of option flag \"{$match[2]}\"", null, true);
- }
- }
- return preg_replace(array("#^{$ldel}\\s*php\\s*(.)*?{$rdel}#",
- "#{$ldel}\\s*/\\s*php\\s*{$rdel}$#"), array('<?php ', '?>'), $_attr['code']);
- }
- }
-
- /**
- * Lexer code for PHP tags
- *
- * This code has been moved from lexer here fo easier debugging and maintenance
- *
- * @param $lex
- */
- public function parsePhp($lex)
- {
- $lex->token = Smarty_Internal_Templateparser::TP_PHP;
- $close = 0;
- $lex->taglineno = $lex->line;
- $closeTag = '?>';
- if (strpos($lex->value, '<?xml') === 0) {
- $lex->is_xml = true;
- $lex->token = Smarty_Internal_Templateparser::TP_NOCACHE;
- return;
- } elseif (strpos($lex->value, '<?') === 0) {
- $lex->phpType = 'php';
- } elseif (strpos($lex->value, '<%') === 0) {
- $lex->phpType = 'asp';
- $closeTag = '%>';
- } elseif (strpos($lex->value, '%>') === 0) {
- $lex->phpType = 'unmatched';
- } elseif (strpos($lex->value, '?>') === 0) {
- if ($lex->is_xml) {
- $lex->is_xml = false;
- $lex->token = Smarty_Internal_Templateparser::TP_NOCACHE;
- return;
- }
- $lex->phpType = 'unmatched';
- } elseif (strpos($lex->value, '<s') === 0) {
- $lex->phpType = 'script';
- $closeTag = '</script>';
- } elseif (strpos($lex->value, $lex->smarty->left_delimiter) === 0) {
- if ($lex->isAutoLiteral()) {
- $lex->token = Smarty_Internal_Templateparser::TP_TEXT;
- return;
- }
- $closeTag = "{$lex->smarty->left_delimiter}/php{$lex->smarty->right_delimiter}";
- if ($lex->value == $closeTag) {
- $lex->compiler->trigger_template_error("unexpected closing tag '{$closeTag}'");
- }
- $lex->phpType = 'tag';
- }
- if ($lex->phpType == 'unmatched') {
- return;
- }
- if (($lex->phpType == 'php' || $lex->phpType == 'asp') &&
- ($lex->compiler->php_handling == Smarty::PHP_PASSTHRU || $lex->compiler->php_handling == Smarty::PHP_QUOTE)
- ) {
- return;
- }
- $start = $lex->counter + strlen($lex->value);
- $body = true;
- if (preg_match('~' . preg_quote($closeTag, '~') . '~i', $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
- $close = $match[0][1];
- } else {
- $lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'");
- }
- while ($body) {
- if (preg_match('~([/][*])|([/][/][^\n]*)|(\'[^\'\\\\]*(?:\\.[^\'\\\\]*)*\')|("[^"\\\\]*(?:\\.[^"\\\\]*)*")~', $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
- $value = $match[0][0];
- $from = $pos = $match[0][1];
- if ($pos > $close) {
- $body = false;
- } else {
- $start = $pos + strlen($value);
- $phpCommentStart = $value == '/*';
- if ($phpCommentStart) {
- $phpCommentEnd = preg_match('~([*][/])~', $lex->data, $match, PREG_OFFSET_CAPTURE, $start);
- if ($phpCommentEnd) {
- $pos2 = $match[0][1];
- $start = $pos2 + strlen($match[0][0]);
- }
- }
- while ($close > $pos && $close < $start) {
- if (preg_match('~' . preg_quote($closeTag, '~') .
- '~i', $lex->data, $match, PREG_OFFSET_CAPTURE, $from)) {
- $close = $match[0][1];
- $from = $close + strlen($match[0][0]);
- } else {
- $lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'");
- }
- }
- if ($phpCommentStart && (!$phpCommentEnd || $pos2 > $close)) {
- $lex->taglineno = $lex->line + substr_count(substr($lex->data, $lex->counter, $start), "\n");
- $lex->compiler->trigger_template_error("missing PHP comment closing tag '*/'");
- }
- }
- } else {
- $body = false;
- }
- }
- $lex->value = substr($lex->data, $lex->counter, $close + strlen($closeTag) - $lex->counter);
- }
-
- /*
- * Call back function for $php_handling = PHP_QUOTE
- *
- */
- /**
- * @param $match
- *
- * @return string
- */
- private function quote($match)
- {
- return htmlspecialchars($match[0], ENT_QUOTES);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
deleted file mode 100644
index c0c089bff..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Print Expression
- * Compiles any tag which will output an expression or variable
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Print Expression Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $option_flags = array('nocache', 'nofilter');
-
- /**
- * Compiles code for generating output from any expression
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string
- * @throws \SmartyException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- // nocache option
- if ($_attr['nocache'] === true) {
- $compiler->tag_nocache = true;
- }
- if (isset($_attr['assign'])) {
- // assign output to variable
- $output = "<?php \$_smarty_tpl->assign({$_attr['assign']},{$parameter['value']});?>";
- } else {
- // display value
- $output = $parameter['value'];
- // tag modifier
- if (!empty($parameter['modifierlist'])) {
- $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifierlist'],
- 'value' => $output));
- }
- if (!$_attr['nofilter']) {
- // default modifier
- if (!empty($compiler->smarty->default_modifiers)) {
- if (empty($compiler->default_modifier_list)) {
- $modifierlist = array();
- foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
- preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', $single_default_modifier, $mod_array);
- for ($i = 0, $count = count($mod_array[0]); $i < $count; $i ++) {
- if ($mod_array[0][$i] != ':') {
- $modifierlist[$key][] = $mod_array[0][$i];
- }
- }
- }
- $compiler->default_modifier_list = $modifierlist;
- }
- $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $compiler->default_modifier_list,
- 'value' => $output));
- }
- // autoescape html
- if ($compiler->template->smarty->escape_html) {
- $output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
- }
- // loop over registered filters
- if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) {
- foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key =>
- $function) {
- if (!is_array($function)) {
- $output = "{$function}({$output},\$_smarty_tpl)";
- } elseif (is_object($function[0])) {
- $output = "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
- } else {
- $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
- }
- }
- }
- // auto loaded filters
- if (isset($compiler->smarty->autoload_filters[Smarty::FILTER_VARIABLE])) {
- foreach ((array) $compiler->template->smarty->autoload_filters[Smarty::FILTER_VARIABLE] as $name) {
- $result = $this->compile_output_filter($compiler, $name, $output);
- if ($result !== false) {
- $output = $result;
- } else {
- // not found, throw exception
- throw new SmartyException("Unable to load filter '{$name}'");
- }
- }
- }
- foreach ($compiler->variable_filters as $filter) {
- if (count($filter) == 1 &&
- ($result = $this->compile_output_filter($compiler, $filter[0], $output)) !== false
- ) {
- $output = $result;
- } else {
- $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => array($filter),
- 'value' => $output));
- }
- }
- }
-
- $compiler->has_output = true;
- $output = "<?php echo {$output};?>";
- }
-
- return $output;
- }
-
- /**
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param string $name name of variable filter
- * @param string $output embedded output
- *
- * @return string
- */
- private function compile_output_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output)
- {
- $plugin_name = "smarty_variablefilter_{$name}";
- $path = $compiler->smarty->loadPlugin($plugin_name, false);
- if ($path) {
- if ($compiler->template->caching) {
- $compiler->parent_compiler->template->compiled->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['file'] = $path;
- $compiler->parent_compiler->template->compiled->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name;
- } else {
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['file'] = $path;
- $compiler->parent_compiler->template->compiled->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name;
- }
- } else {
- // not found
- return false;
- }
-
- return "{$plugin_name}({$output},\$_smarty_tpl)";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
deleted file mode 100644
index 78d95f720..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Block
- * Compiles code for the execution of a registered block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Block Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of a block function
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block function
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
- {
- if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache']) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag])) {
- $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag];
- } else {
- $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$tag];
- }
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
- $_value = str_replace("'", "^#^", $_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = !$tag_info[1] | $compiler->nocache | $compiler->tag_nocache;
- $function = $tag_info[0];
- // compile code
- if (!is_array($function)) {
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } elseif (is_object($function[0])) {
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]->{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- $output = "<?php \$_smarty_tpl->smarty->_cache['tag_stack'][] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function[0]}::{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- }
- } else {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- $base_tag = substr($tag, 0, - 5);
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag);
- // This tag does create output
- $compiler->has_output = true;
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
- $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
- } else {
- $function = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
- }
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post = '';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo ' .
- $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'],
- 'value' => 'ob_get_clean()')) . ';';
- }
- if (!is_array($function)) {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat);" . $mod_post .
- " } array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- } elseif (is_object($function[0])) {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo \$_smarty_tpl->smarty->registered_plugins['block']['{$base_tag}'][0][0]->{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " .
- $mod_post . "} array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- } else {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre .
- " echo {$function[0]}::{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " .
- $mod_post . "} array_pop(\$_smarty_tpl->smarty->_cache['tag_stack']);?>";
- }
- }
-
- return $output . "\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
deleted file mode 100644
index 6bddc7529..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Function
- * Compiles code for the execution of a registered function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of a registered function
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
- {
- // This tag does create output
- $compiler->has_output = true;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache']) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag])) {
- $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag];
- } else {
- $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_FUNCTION][$tag];
- }
- // not cachable?
- $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[1];
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
- $_value = str_replace("'", "^#^", $_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- $function = $tag_info[0];
- // compile code
- if (!is_array($function)) {
- $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
- } elseif (is_object($function[0])) {
- $output = "<?php echo \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl);?>\n";
- } else {
- $output = "<?php echo {$function[0]}::{$function[1]}({$_params},\$_smarty_tpl);?>\n";
- }
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
deleted file mode 100644
index b83e824af..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Special Smarty Variable
- * Compiles the special $smarty variables
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile special Smarty Variable Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the special $smarty variables
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param $parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2));
- $variable = strtolower($compiler->getId($_index[ 0 ]));
- if ($variable === false) {
- $compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true);
- }
- if (!isset($compiler->smarty->security_policy) ||
- $compiler->smarty->security_policy->isTrustedSpecialSmartyVar($variable, $compiler)
- ) {
- switch ($variable) {
- case 'foreach':
- case 'section':
- if (!isset($compiler->_tag_objects[ $variable ])) {
- $class = 'Smarty_Internal_Compile_' . ucfirst($variable);
- $compiler->_tag_objects[ $variable ] = new $class;
- }
- return $compiler->_tag_objects[ $variable ]->compileSpecialVariable(array(), $compiler, $_index);
- case 'capture':
- if (class_exists('Smarty_Internal_Compile_Capture')) {
- return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index);
- }
- return '';
- case 'now':
- return 'time()';
- case 'cookies':
- if (isset($compiler->smarty->security_policy) &&
- !$compiler->smarty->security_policy->allow_super_globals
- ) {
- $compiler->trigger_template_error("(secure mode) super globals not permitted");
- break;
- }
- $compiled_ref = '$_COOKIE';
- break;
- case 'get':
- case 'post':
- case 'env':
- case 'server':
- case 'session':
- case 'request':
- if (isset($compiler->smarty->security_policy) &&
- !$compiler->smarty->security_policy->allow_super_globals
- ) {
- $compiler->trigger_template_error("(secure mode) super globals not permitted");
- break;
- }
- $compiled_ref = '$_' . strtoupper($variable);
- break;
-
- case 'template':
- return 'basename($_smarty_tpl->source->filepath)';
-
- case 'template_object':
- return '$_smarty_tpl';
-
- case 'current_dir':
- return 'dirname($_smarty_tpl->source->filepath)';
-
- case 'version':
- return "Smarty::SMARTY_VERSION";
-
- case 'const':
- if (isset($compiler->smarty->security_policy) &&
- !$compiler->smarty->security_policy->allow_constants
- ) {
- $compiler->trigger_template_error("(secure mode) constants not permitted");
- break;
- }
- if (strpos($_index[ 1 ], '$') === false && strpos($_index[ 1 ], '\'') === false) {
- return "@constant('{$_index[1]}')";
- } else {
- return "@constant({$_index[1]})";
- }
-
- case 'config':
- if (isset($_index[ 2 ])) {
- return "(is_array(\$tmp = \$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])) ? \$tmp[$_index[2]] : null)";
- } else {
- return "\$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])";
- }
- case 'ldelim':
- return "\$_smarty_tpl->smarty->left_delimiter";
- case 'rdelim':
- return "\$_smarty_tpl->smarty->right_delimiter";
- default:
- $compiler->trigger_template_error('$smarty.' . trim($_index[ 0 ], "'") . ' is not defined');
- break;
- }
- if (isset($_index[ 1 ])) {
- array_shift($_index);
- foreach ($_index as $_ind) {
- $compiled_ref = $compiled_ref . "[$_ind]";
- }
- }
- return $compiled_ref;
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
deleted file mode 100644
index 22b33eaa2..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Rdelim
- * Compiles the {rdelim} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Rdelim Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {rdelim} tag
- * This tag does output the right delimiter.
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', null, true);
- }
- // this tag does not return compiled code
- $compiler->has_code = true;
-
- return $compiler->smarty->right_delimiter;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php
deleted file mode 100644
index 40b297a64..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php
+++ /dev/null
@@ -1,454 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Section
- * Compiles the {section} {sectionelse} {/section} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Section Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_ForeachSection
-{
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('name', 'loop');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('name', 'loop');
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('start', 'step', 'max', 'show');
-
- /**
- * counter
- *
- * @var int
- */
- public $counter = 0;
-
- /**
- * Name of this tag
- *
- * @var string
- */
- public $tagName = 'section';
-
- /**
- * Valid properties of $smarty.section.name.xxx variable
- *
- * @var array
- */
- public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'rownum',
- 'index_prev', 'index_next');
-
- /**
- * {section} tag has no item properties
- *
- * @var array
- */
- public $itemProperties = null;
-
- /**
- * {section} tag has always name attribute
- *
- * @var bool
- */
- public $isNamed = true;
-
- /**
- * Compiles code for the {section} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting++;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $attributes = array('name' => $compiler->getId($_attr['name']));
- unset($_attr['name']);
- foreach ($attributes as $a => $v) {
- if ($v === false) {
- $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
- }
- }
- $local = "\$__section_{$attributes['name']}_" . $this->counter ++ . '_';
- $sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']";
- $this->openTag($compiler, 'section', array('section', $compiler->nocache, $local, $sectionVar));
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
-
- $initLocal = array('saved' => "isset(\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']) ? \$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}'] : false",);
- $initNamedProperty = array();
- $initFor = array();
- $incFor = array();
- $cmpFor = array();
- $propValue = array('index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
- 'iteration' => "{$local}iteration",
-
- );
- $propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,);
- // search for used tag attributes
- $this->scanForProperties($attributes, $compiler);
- if (!empty($this->matchResults['named'])) {
- $namedAttr = $this->matchResults['named'];
- }
- $namedAttr['index'] = true;
- $output = "<?php\n";
- foreach ($_attr as $attr_name => $attr_value) {
- switch ($attr_name) {
- case 'loop':
- if (is_numeric($attr_value)) {
- $v = (int) $attr_value;
- $t = 0;
- } else {
- $v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))";
- $t = 1;
- }
- if (isset($namedAttr['loop'])) {
- $initNamedProperty['loop'] = "'loop' => {$v}";
- if ($t == 1) {
- $v = "{$sectionVar}->value['loop']";
- }
- } elseif ($t == 1) {
- $initLocal['loop'] = $v;
- $v = "{$local}loop";
- }
- break;
- case 'show':
- if (is_bool($attr_value)) {
- $v = $attr_value ? 'true' : 'false';
- $t = 0;
- } else {
- $v = "(bool) $attr_value";
- $t = 3;
- }
- break;
- case 'step':
- if (is_numeric($attr_value)) {
- $v = (int) $attr_value;
- $v = ($v == 0) ? 1 : $v;
- $t = 0;
- break;
- }
- $initLocal['step'] = "((int)@$attr_value) == 0 ? 1 : (int)@$attr_value";
- $v = "{$local}step";
- $t = 2;
- break;
-
- case 'max':
- case 'start':
- if (is_numeric($attr_value)) {
- $v = (int) $attr_value;
- $t = 0;
- break;
- }
- $v = "(int)@$attr_value";
- $t = 3;
- break;
- }
- if ($t == 3 && $compiler->getId($attr_value)) {
- $t = 1;
- }
- $propValue[$attr_name] = $v;
- $propType[$attr_name] = $t;
- }
-
- if (isset($namedAttr['step'])) {
- $initNamedProperty['step'] = $propValue['step'];
- }
- if (isset($namedAttr['iteration'])) {
- $propValue['iteration'] = "{$sectionVar}->value['iteration']";
- }
- $incFor['iteration'] = "{$propValue['iteration']}++";
- $initFor['iteration'] = "{$propValue['iteration']} = 1";
-
- if ($propType['step'] == 0) {
- if ($propValue['step'] == 1) {
- $incFor['index'] = "{$sectionVar}->value['index']++";
- } elseif ($propValue['step'] > 1) {
- $incFor['index'] = "{$sectionVar}->value['index'] += {$propValue['step']}";
- } else {
- $incFor['index'] = "{$sectionVar}->value['index'] -= " . - $propValue['step'];
- }
- } else {
- $incFor['index'] = "{$sectionVar}->value['index'] += {$propValue['step']}";
- }
-
- if (!isset($propValue['max'])) {
- $propValue['max'] = $propValue['loop'];
- $propType['max'] = $propType['loop'];
- } elseif ($propType['max'] != 0) {
- $propValue['max'] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
- $propType['max'] = 1;
- } else {
- if ($propValue['max'] < 0) {
- $propValue['max'] = $propValue['loop'];
- $propType['max'] = $propType['loop'];
- }
- }
-
- if (!isset($propValue['start'])) {
- $start_code = array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue['loop'],
- 5 => ' - 1');
- if ($propType['loop'] == 0) {
- $start_code[5] = '';
- $start_code[4] = $propValue['loop'] - 1;
- }
- if ($propType['step'] == 0) {
- if ($propValue['step'] > 0) {
- $start_code = array(1 => '0');
- $propType['start'] = 0;
- } else {
- $start_code[1] = $start_code[2] = $start_code[3] = '';
- $propType['start'] = $propType['loop'];
- }
- } else {
- $propType['start'] = 1;
- }
- $propValue['start'] = join('', $start_code);
- } else {
- $start_code = array(1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ",
- 4 => '0', 5 => ' : ', 6 => '-1', 7 => ', ',
- 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')', 11 => ' : ',
- 12 => 'min(', 13 => $propValue['start'], 14 => ', ',
- 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue['loop'], 17 => ' : ',
- 18 => $propType['loop'] == 0 ? $propValue['loop'] - 1 : "{$propValue['loop']} - 1",
- 19 => ')');
- if ($propType['step'] == 0) {
- $start_code[3] = $start_code[5] = $start_code[15] = $start_code[17] = '';
- if ($propValue['step'] > 0) {
- $start_code[6] = $start_code[18] = '';
- } else {
- $start_code[4] = $start_code[16] = '';
- }
- }
- if ($propType['start'] == 0) {
- if ($propType['loop'] == 0) {
- $start_code[8] = $propValue['start'] + $propValue['loop'];
- }
- $propType['start'] = $propType['step'] + $propType['loop'];
- $start_code[1] = '';
- if ($propValue['start'] < 0) {
- for ($i = 11; $i <= 19; $i ++) {
- $start_code[$i] = '';
- }
- if ($propType['start'] == 0) {
- $start_code = array(max($propValue['step'] > 0 ? 0 : - 1, $propValue['start'] +
- $propValue['loop']));
- }
- } else {
- for ($i = 1; $i <= 11; $i ++) {
- $start_code[$i] = '';
- }
- if ($propType['start'] == 0) {
- $start_code = array(min($propValue['step'] > 0 ? $propValue['loop'] : $propValue['loop'] -
- 1, $propValue['start']));
- }
- }
- }
- $propValue['start'] = join('', $start_code);
- }
- if ($propType['start'] != 0) {
- $initLocal['start'] = $propValue['start'];
- $propValue['start'] = "{$local}start";
- }
-
- $initFor['index'] = "{$sectionVar}->value['index'] = {$propValue['start']}";
-
- if (!isset($_attr['start']) && !isset($_attr['step']) && !isset($_attr['max'])) {
- $propValue['total'] = $propValue['loop'];
- $propType['total'] = $propType['loop'];
- } else {
- $propType['total'] = $propType['start'] + $propType['loop'] + $propType['step'] + $propType['max'];
- if ($propType['total'] == 0) {
- $propValue['total'] = min(ceil(($propValue['step'] > 0 ? $propValue['loop'] -
- $propValue['start'] : (int) $propValue['start'] + 1) /
- abs($propValue['step'])), $propValue['max']);
- } else {
- $total_code = array(1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
- 5 => $propValue['loop'], 6 => ' - ', 7 => $propValue['start'], 8 => ' : ',
- 9 => $propValue['start'], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
- 14 => $propValue['step'], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",);
- if (!isset($propValue['max'])) {
- $total_code[1] = $total_code[17] = '';
- }
- if ($propType['loop'] + $propType['start'] == 0) {
- $total_code[5] = $propValue['loop'] - $propValue['start'];
- $total_code[6] = $total_code[7] = '';
- }
- if ($propType['start'] == 0) {
- $total_code[9] = (int) $propValue['start'] + 1;
- $total_code[10] = '';
- }
- if ($propType['step'] == 0) {
- $total_code[13] = $total_code[15] = '';
- if ($propValue['step'] == 1 || $propValue['step'] == - 1) {
- $total_code[2] = $total_code[12] = $total_code[14] = $total_code[16] = '';
- } elseif ($propValue['step'] < 0) {
- $total_code[14] = - $propValue['step'];
- }
- $total_code[4] = '';
- if ($propValue['step'] > 0) {
- $total_code[8] = $total_code[9] = $total_code[10] = '';
- } else {
- $total_code[5] = $total_code[6] = $total_code[7] = $total_code[8] = '';
- }
- }
- $propValue['total'] = join('', $total_code);
- }
- }
-
- if (isset($namedAttr['total'])) {
- $initNamedProperty['total'] = "'total' => {$propValue['total']}";
- if ($propType['total'] > 0) {
- $propValue['total'] = "{$sectionVar}->value['total']";
- }
- } elseif ($propType['total'] > 0) {
- $initLocal['total'] = $propValue['total'];
- $propValue['total'] = "{$local}total";
- }
-
- $cmpFor['iteration'] = "{$propValue['iteration']} <= {$propValue['total']}";
-
- foreach ($initLocal as $key => $code) {
- $output .= "{$local}{$key} = {$code};\n";
- }
-
- $_vars = 'array(' . join(', ', $initNamedProperty) . ')';
- $output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n";
- $cond_code = "{$propValue['total']} != 0";
- if ($propType['total'] == 0) {
- if ($propValue['total'] == 0) {
- $cond_code = 'false';
- } else {
- $cond_code = 'true';
- }
- }
- if ($propType['show'] > 0) {
- $output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n";
- $output .= "if ({$local}show) {\n";
- } elseif ($propValue['show'] == 'true') {
- $output .= "if ({$cond_code}) {\n";
- } else {
- $output .= "if (false) {\n";
- }
- $jinit = join(', ', $initFor);
- $jcmp = join(', ', $cmpFor);
- $jinc = join(', ', $incFor);
- $output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n";
- if (isset($namedAttr['rownum'])) {
- $output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n";
- }
- if (isset($namedAttr['index_prev'])) {
- $output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n";
- }
- if (isset($namedAttr['index_next'])) {
- $output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n";
- }
- if (isset($namedAttr['first'])) {
- $output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} == 1);\n";
- }
- if (isset($namedAttr['last'])) {
- $output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} == {$propValue['total']});\n";
- }
- $output .= "?>";
-
- return $output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Sectionelse Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {sectionelse} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- list($openTag, $nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section'));
- $this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache, $local, $sectionVar));
-
- return "<?php }} else {\n ?>";
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Sectionclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/section} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting--;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
-
- list($openTag, $compiler->nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section',
- 'sectionelse'));
-
- $output = "<?php\n";
- if ($openTag == 'sectionelse') {
- $output .= "}\n";
- } else {
- $output .= "}\n}\n";
- }
- $output .= "if ({$local}saved) {\n";
- $output .= "{$sectionVar} = {$local}saved;\n";
- $output .= "}\n";
- $output .= "?>";
-
- return $output;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
deleted file mode 100644
index b4932c1e1..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Setfilter
- * Compiles code for setfilter tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Setfilter Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for setfilter tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->variable_filter_stack[] = $compiler->variable_filters;
- $compiler->variable_filters = $parameter['modifier_list'];
- // this tag does not return compiled code
- $compiler->has_code = false;
-
- return true;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Setfilterclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/setfilter} tag
- * This tag does not generate compiled output. It resets variable filter.
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- // reset variable filter to previous state
- if (count($compiler->variable_filter_stack)) {
- $compiler->variable_filters = array_pop($compiler->variable_filter_stack);
- } else {
- $compiler->variable_filters = array();
- }
- // this tag does not return compiled code
- $compiler->has_code = false;
-
- return true;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
deleted file mode 100644
index c7bf1f8fb..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Shared Inheritance
- * Shared methods for {extends} and {block} tags
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Shared Inheritance Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase
-{
- /**
- * Register post compile callback to compile inheritance initialization code
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param bool|false $initChildSequence if true force child template
- */
- public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
- {
- if ($initChildSequence || !isset($compiler->_cache['inheritanceInit'])) {
- $compiler->registerPostCompileCallback(array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
- array($initChildSequence), 'inheritanceInit', $initChildSequence);
-
- $compiler->_cache['inheritanceInit'] = true;
- }
- }
-
- /**
- * Compile inheritance initialization code as prefix
- *
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- * @param bool|false $initChildSequence if true force child template
- */
- static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
- {
- $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->ext->_inheritance->init(\$_smarty_tpl, " .
- var_export($initChildSequence, true) . ");\n?>\n";
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
deleted file mode 100644
index bd31f6671..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Compile While
- * Compiles the {while} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile While Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {while} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
- *
- * @return string compiled code
- * @throws \SmartyCompilerException
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
- {
- $compiler->loopNesting++;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $this->openTag($compiler, 'while', $compiler->nocache);
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing while condition", null, true);
- }
-
- // maybe nocache because of nocache variables
- $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $_output = "<?php\n";
- if (is_array($parameter['if condition'])) {
- if ($compiler->nocache) {
- $_nocache = ',true';
- // create nocache var to make it know for further compiling
- if (is_array($parameter['if condition']['var'])) {
- $var = trim($parameter['if condition']['var']['var'], "'");
- } else {
- $var = trim($parameter['if condition']['var'], "'");
- }
- if (isset($compiler->template->tpl_vars[$var])) {
- $compiler->template->tpl_vars[$var]->nocache = true;
- } else {
- $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
- }
- } else {
- $_nocache = '';
- }
- if (is_array($parameter['if condition']['var'])) {
- $_output .= "if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] .
- "]->value)) \$_smarty_tpl->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " . $parameter['if condition']['var']['var'] .
- "$_nocache);\n";
- $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" .
- $parameter['if condition']['var']['smarty_internal_index'] . " = " .
- $parameter['if condition']['value'] . ") {?>";
- } else {
- $_output .= "if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] .
- "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " .
- $parameter['if condition']['value'] . ") {?>";
- }
- } else {
- $_output .= "while ({$parameter['if condition']}) {?>";
- }
- return $_output;
- }
-}
-
-/**
- * Smarty Internal Plugin Compile Whileclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
-{
- /**
- * Compiles code for the {/while} tag
- *
- * @param array $args array with attributes from parser
- * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $compiler->loopNesting--;
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- $compiler->nocache = $this->closeTag($compiler, array('while'));
- return "<?php }?>\n";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php b/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php
deleted file mode 100644
index 0803f27a6..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin CompileBase
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * This class does extend all internal compile plugins
- *
- * @package Smarty
- * @subpackage Compiler
- */
-abstract class Smarty_Internal_CompileBase
-{
- /**
- * Array of names of required attribute required by tag
- *
- * @var array
- */
- public $required_attributes = array();
-
- /**
- * Array of names of optional attribute required by tag
- * use array('_any') if there is no restriction of attributes names
- *
- * @var array
- */
- public $optional_attributes = array();
-
- /**
- * Shorttag attribute order defined by its names
- *
- * @var array
- */
- public $shorttag_order = array();
-
- /**
- * Array of names of valid option flags
- *
- * @var array
- */
- public $option_flags = array('nocache');
-
- /**
- * This function checks if the attributes passed are valid
- * The attributes passed for the tag to compile are checked against the list of required and
- * optional attributes. Required attributes must be present. Optional attributes are check against
- * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
- * as valid
- *
- * @param object $compiler compiler object
- * @param array $attributes attributes applied to the tag
- *
- * @return array of mapped attributes for further processing
- */
- public function getAttributes($compiler, $attributes)
- {
- $_indexed_attr = array();
- // loop over attributes
- foreach ($attributes as $key => $mixed) {
- // shorthand ?
- if (!is_array($mixed)) {
- // option flag ?
- if (in_array(trim($mixed, '\'"'), $this->option_flags)) {
- $_indexed_attr[trim($mixed, '\'"')] = true;
- // shorthand attribute ?
- } elseif (isset($this->shorttag_order[$key])) {
- $_indexed_attr[$this->shorttag_order[$key]] = $mixed;
- } else {
- // too many shorthands
- $compiler->trigger_template_error('too many shorthand attributes', null, true);
- }
- // named attribute
- } else {
- $kv = each($mixed);
- // option flag?
- if (in_array($kv['key'], $this->option_flags)) {
- if (is_bool($kv['value'])) {
- $_indexed_attr[$kv['key']] = $kv['value'];
- } elseif (is_string($kv['value']) && in_array(trim($kv['value'], '\'"'), array('true', 'false'))) {
- if (trim($kv['value']) == 'true') {
- $_indexed_attr[$kv['key']] = true;
- } else {
- $_indexed_attr[$kv['key']] = false;
- }
- } elseif (is_numeric($kv['value']) && in_array($kv['value'], array(0, 1))) {
- if ($kv['value'] == 1) {
- $_indexed_attr[$kv['key']] = true;
- } else {
- $_indexed_attr[$kv['key']] = false;
- }
- } else {
- $compiler->trigger_template_error("illegal value of option flag \"{$kv['key']}\"", null, true);
- }
- // must be named attribute
- } else {
- reset($mixed);
- $_indexed_attr[key($mixed)] = $mixed[key($mixed)];
- }
- }
- }
- // check if all required attributes present
- foreach ($this->required_attributes as $attr) {
- if (!array_key_exists($attr, $_indexed_attr)) {
- $compiler->trigger_template_error("missing \"" . $attr . "\" attribute", null, true);
- }
- }
- // check for not allowed attributes
- if ($this->optional_attributes != array('_any')) {
- $tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags);
- foreach ($_indexed_attr as $key => $dummy) {
- if (!in_array($key, $tmp_array) && $key !== 0) {
- $compiler->trigger_template_error("unexpected \"" . $key . "\" attribute", null, true);
- }
- }
- }
- // default 'false' for all option flags not set
- foreach ($this->option_flags as $flag) {
- if (!isset($_indexed_attr[$flag])) {
- $_indexed_attr[$flag] = false;
- }
- }
-
- return $_indexed_attr;
- }
-
- /**
- * Push opening tag name on stack
- * Optionally additional data can be saved on stack
- *
- * @param object $compiler compiler object
- * @param string $openTag the opening tag's name
- * @param mixed $data optional data saved
- */
- public function openTag($compiler, $openTag, $data = null)
- {
- array_push($compiler->_tag_stack, array($openTag, $data));
- }
-
- /**
- * Pop closing tag
- * Raise an error if this stack-top doesn't match with expected opening tags
- *
- * @param object $compiler compiler object
- * @param array|string $expectedTag the expected opening tag names
- *
- * @return mixed any type the opening tag's name or saved data
- */
- public function closeTag($compiler, $expectedTag)
- {
- if (count($compiler->_tag_stack) > 0) {
- // get stacked info
- list($_openTag, $_data) = array_pop($compiler->_tag_stack);
- // open tag must match with the expected ones
- if (in_array($_openTag, (array) $expectedTag)) {
- if (is_null($_data)) {
- // return opening tag
- return $_openTag;
- } else {
- // return restored data
- return $_data;
- }
- }
- // wrong nesting of tags
- $compiler->trigger_template_error("unclosed {$compiler->smarty->left_delimiter}" . $_openTag .
- "{$compiler->smarty->right_delimiter} tag");
-
- return;
- }
- // wrong nesting of tags
- $compiler->trigger_template_error("unexpected closing tag", null, true);
-
- return;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
deleted file mode 100644
index 56d3b0665..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Config File Compiler
- * This is the config file compiler class. It calls the lexer and parser to
- * perform the compiling.
- *
- * @package Smarty
- * @subpackage Config
- * @author Uwe Tews
- */
-
-/**
- * Main config file compiler class
- *
- * @package Smarty
- * @subpackage Config
- */
-class Smarty_Internal_Config_File_Compiler
-{
- /**
- * Lexer class name
- *
- * @var string
- */
- public $lexer_class;
-
- /**
- * Parser class name
- *
- * @var string
- */
- public $parser_class;
-
- /**
- * Lexer object
- *
- * @var object
- */
- public $lex;
-
- /**
- * Parser object
- *
- * @var object
- */
- public $parser;
-
- /**
- * Smarty object
- *
- * @var Smarty object
- */
- public $smarty;
-
- /**
- * Smarty object
- *
- * @var Smarty_Internal_Template object
- */
- public $template;
-
- /**
- * Compiled config data sections and variables
- *
- * @var array
- */
- public $config_data = array();
-
- /**
- * compiled config data must always be written
- *
- * @var bool
- */
- public $write_compiled_code = true;
-
- /**
- * Initialize compiler
- *
- * @param string $lexer_class class name
- * @param string $parser_class class name
- * @param Smarty $smarty global instance
- */
- public function __construct($lexer_class, $parser_class, Smarty $smarty)
- {
- $this->smarty = $smarty;
- // get required plugins
- $this->lexer_class = $lexer_class;
- $this->parser_class = $parser_class;
- $this->smarty = $smarty;
- $this->config_data['sections'] = array();
- $this->config_data['vars'] = array();
- }
-
- /**
- * Method to compile Smarty config source.
- *
- * @param Smarty_Internal_Template $template
- *
- * @return bool true if compiling succeeded, false if it failed
- */
- public function compileTemplate(Smarty_Internal_Template $template)
- {
- $this->template = $template;
- $this->template->compiled->file_dependency[$this->template->source->uid] = array($this->template->source->filepath,
- $this->template->source->getTimeStamp(),
- $this->template->source->type);
- if ($this->smarty->debugging) {
- $this->smarty->_debug->start_compile($this->template);
- }
- // init the lexer/parser to compile the config file
- /* @var Smarty_Internal_ConfigFileLexer $lex */
- $lex = new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $template->source->getContent()) .
- "\n", $this);
- /* @var Smarty_Internal_ConfigFileParser $parser */
- $parser = new $this->parser_class($lex, $this);
-
- if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
- $mbEncoding = mb_internal_encoding();
- mb_internal_encoding('ASCII');
- } else {
- $mbEncoding = null;
- }
-
- if ($this->smarty->_parserdebug) {
- $parser->PrintTrace();
- }
- // get tokens from lexer and parse them
- while ($lex->yylex()) {
- if ($this->smarty->_parserdebug) {
- echo "<br>Parsing {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
- }
- $parser->doParse($lex->token, $lex->value);
- }
- // finish parsing process
- $parser->doParse(0, 0);
-
- if ($mbEncoding) {
- mb_internal_encoding($mbEncoding);
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_compile($this->template);
- }
- // template header code
- $template_header = "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " .
- strftime("%Y-%m-%d %H:%M:%S") . "\n";
- $template_header .= " compiled from \"" . $this->template->source->filepath . "\" */ ?>\n";
-
- $code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .
- var_export($this->config_data, true) . '); ?>';
- return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code);
- }
-
- /**
- * display compiler error messages without dying
- * If parameter $args is empty it is a parser detected syntax error.
- * In this case the parser is called to obtain information about expected tokens.
- * If parameter $args contains a string this is used as error message
- *
- * @param string $args individual error message or null
- *
- * @throws SmartyCompilerException
- */
- public function trigger_config_file_error($args = null)
- {
- $this->lex = Smarty_Internal_Configfilelexer::instance();
- $this->parser = Smarty_Internal_Configfileparser::instance();
- // get config source line which has error
- $line = $this->lex->line;
- if (isset($args)) {
- // $line--;
- }
- $match = preg_split("/\n/", $this->lex->data);
- $error_text = "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
- if (isset($args)) {
- // individual error message
- $error_text .= $args;
- } else {
- // expected token from parser
- foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
- $exp_token = $this->parser->yyTokenName[$token];
- if (isset($this->lex->smarty_token_names[$exp_token])) {
- // token type from lexer
- $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
- } else {
- // otherwise internal token name
- $expect[] = $this->parser->yyTokenName[$token];
- }
- }
- // output parser error message
- $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
- }
- throw new SmartyCompilerException($error_text);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php b/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php
deleted file mode 100644
index e62728c2c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php
+++ /dev/null
@@ -1,699 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Configfilelexer
- *
- * This is the lexer to break the config file source into tokens
- *
- * @package Smarty
- * @subpackage Config
- * @author Uwe Tews
- */
-
-/**
- * Smarty_Internal_Configfilelexer
- *
- * This is the config file lexer.
- * It is generated from the smarty_internal_configfilelexer.plex file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-class Smarty_Internal_Configfilelexer
-{
- /**
- * Source
- *
- * @var string
- */
- public $data;
-
- /**
- * byte counter
- *
- * @var int
- */
- public $counter;
-
- /**
- * token number
- *
- * @var int
- */
- public $token;
-
- /**
- * token value
- *
- * @var string
- */
- public $value;
-
- /**
- * current line
- *
- * @var int
- */
- public $line;
-
- /**
- * state number
- *
- * @var int
- */
- public $state = 1;
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_Config_File_Compiler
- */
- private $compiler = null;
-
- /**
- * copy of config_booleanize
- *
- * @var bool
- */
- private $configBooleanize = false;
-
- /**
- * trace file
- *
- * @var resource
- */
- public $yyTraceFILE;
-
- /**
- * trace prompt
- *
- * @var string
- */
- public $yyTracePrompt;
-
- /**
- * state names
- *
- * @var array
- */
- public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION',
- 6 => 'TRIPPLE');
-
- /**
- * storage for assembled token patterns
- *
- * @var sring
- */
- private $yy_global_pattern1 = null;
-
- private $yy_global_pattern2 = null;
-
- private $yy_global_pattern3 = null;
-
- private $yy_global_pattern4 = null;
-
- private $yy_global_pattern5 = null;
-
- private $yy_global_pattern6 = null;
-
- /**
- * token names
- *
- * @var array
- */
- public $smarty_token_names = array( // Text for parser error messages
- );
-
- /**
- * constructor
- *
- * @param string $data template source
- * @param Smarty_Internal_Config_File_Compiler $compiler
- */
- function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
- {
- // set instance object
- self::instance($this);
- $this->data = $data . "\n"; //now all lines are \n-terminated
- $this->counter = 0;
- if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
- $this->counter += strlen($match[0]);
- }
- $this->line = 1;
- $this->compiler = $compiler;
- $this->smarty = $compiler->smarty;
- $this->configBooleanize = $this->smarty->config_booleanize;
- }
-
- public static function &instance($new_instance = null)
- {
- static $instance = null;
- if (isset($new_instance) && is_object($new_instance)) {
- $instance = $new_instance;
- }
- return $instance;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- private $_yy_state = 1;
-
- private $_yy_stack = array();
-
- public function yylex()
- {
- return $this->{'yylex' . $this->_yy_state}();
- }
-
- public function yypushstate($state)
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- array_push($this->_yy_stack, $this->_yy_state);
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- }
-
- public function yypopstate()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- $this->_yy_state = array_pop($this->_yy_stack);
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- }
-
- public function yybegin($state)
- {
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
- }
- }
-
- public function yylex1()
- {
- if (!isset($this->yy_global_pattern1)) {
- $this->yy_global_pattern1 = "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state START');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r1_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
- } // end function
-
- const START = 1;
-
- function yy_r1_1()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
- $this->yypushstate(self::COMMENT);
- }
-
- function yy_r1_2()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
- $this->yypushstate(self::SECTION);
- }
-
- function yy_r1_3()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
- }
-
- function yy_r1_4()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
- $this->yypushstate(self::VALUE);
- }
-
- function yy_r1_5()
- {
-
- return false;
- }
-
- function yy_r1_6()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
- }
-
- function yy_r1_7()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_ID;
- }
-
- function yy_r1_8()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
- }
-
- public function yylex2()
- {
- if (!isset($this->yy_global_pattern2)) {
- $this->yy_global_pattern2 = "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state VALUE');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r2_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
- } // end function
-
- const VALUE = 2;
-
- function yy_r2_1()
- {
-
- return false;
- }
-
- function yy_r2_2()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
- $this->yypopstate();
- }
-
- function yy_r2_3()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_INT;
- $this->yypopstate();
- }
-
- function yy_r2_4()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
- $this->yypushstate(self::TRIPPLE);
- }
-
- function yy_r2_5()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
- $this->yypopstate();
- }
-
- function yy_r2_6()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
- $this->yypopstate();
- }
-
- function yy_r2_7()
- {
-
- if (!$this->configBooleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes",
- "no"))
- ) {
- $this->yypopstate();
- $this->yypushstate(self::NAKED_STRING_VALUE);
- return true; //reprocess in new state
- } else {
- $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
- $this->yypopstate();
- }
- }
-
- function yy_r2_8()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
- }
-
- function yy_r2_9()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->value = "";
- $this->yypopstate();
- }
-
- public function yylex3()
- {
- if (!isset($this->yy_global_pattern3)) {
- $this->yy_global_pattern3 = "/\G([^\n]+?(?=[ \t\r]*\n))/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state NAKED_STRING_VALUE');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r3_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
- } // end function
-
- const NAKED_STRING_VALUE = 3;
-
- function yy_r3_1()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
- }
-
- public function yylex4()
- {
- if (!isset($this->yy_global_pattern4)) {
- $this->yy_global_pattern4 = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state COMMENT');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r4_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
- } // end function
-
- const COMMENT = 4;
-
- function yy_r4_1()
- {
-
- return false;
- }
-
- function yy_r4_2()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- }
-
- function yy_r4_3()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
- $this->yypopstate();
- }
-
- public function yylex5()
- {
- if (!isset($this->yy_global_pattern5)) {
- $this->yy_global_pattern5 = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state SECTION');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r5_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
- } // end function
-
- const SECTION = 5;
-
- function yy_r5_1()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
- }
-
- function yy_r5_2()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
- $this->yypopstate();
- }
-
- public function yylex6()
- {
- if (!isset($this->yy_global_pattern6)) {
- $this->yy_global_pattern6 = "/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[0]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr($this->data, $this->counter, 5) . '... state TRIPPLE');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r6_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[$this->counter]);
- }
- break;
- } while (true);
- } // end function
-
- const TRIPPLE = 6;
-
- function yy_r6_1()
- {
-
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
- $this->yypopstate();
- $this->yypushstate(self::START);
- }
-
- function yy_r6_2()
- {
-
- $to = strlen($this->data);
- preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- } else {
- $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
- }
- $this->value = substr($this->data, $this->counter, $to - $this->counter);
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
- }
-
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php b/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php
deleted file mode 100644
index 69aaf990f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php
+++ /dev/null
@@ -1,1010 +0,0 @@
-<?php
-
-class TPC_yyToken implements ArrayAccess
-{
- public $string = '';
-
- public $metadata = array();
-
- public function __construct($s, $m = array())
- {
- if ($s instanceof TPC_yyToken) {
- $this->string = $s->string;
- $this->metadata = $s->metadata;
- } else {
- $this->string = (string) $s;
- if ($m instanceof TPC_yyToken) {
- $this->metadata = $m->metadata;
- } elseif (is_array($m)) {
- $this->metadata = $m;
- }
- }
- }
-
- public function __toString()
- {
- return $this->string;
- }
-
- public function offsetExists($offset)
- {
- return isset($this->metadata[$offset]);
- }
-
- public function offsetGet($offset)
- {
- return $this->metadata[$offset];
- }
-
- public function offsetSet($offset, $value)
- {
- if ($offset === null) {
- if (isset($value[0])) {
- $x = ($value instanceof TPC_yyToken) ? $value->metadata : $value;
- $this->metadata = array_merge($this->metadata, $x);
-
- return;
- }
- $offset = count($this->metadata);
- }
- if ($value === null) {
- return;
- }
- if ($value instanceof TPC_yyToken) {
- if ($value->metadata) {
- $this->metadata[$offset] = $value->metadata;
- }
- } elseif ($value) {
- $this->metadata[$offset] = $value;
- }
- }
-
- public function offsetUnset($offset)
- {
- unset($this->metadata[$offset]);
- }
-}
-
-class TPC_yyStackEntry
-{
- public $stateno; /* The state-number */
- public $major; /* The major token value. This is the code
- ** number for the token at this stack level */
- public $minor; /* The user-supplied minor token value. This
- ** is the value of the token */
-}
-
-;
-
-#line 12 "../smarty/lexer/smarty_internal_configfileparser.y"
-
-/**
- * Smarty Internal Plugin Configfileparse
- *
- * This is the config file parser.
- * It is generated from the smarty_internal_configfileparser.y file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-class Smarty_Internal_Configfileparser
-{
- #line 25 "../smarty/lexer/smarty_internal_configfileparser.y"
-
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
-
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
-
- /**
- * @var
- */
- public $yymajor;
-
- /**
- * lexer object
- *
- * @var Smarty_Internal_Configfilelexer
- */
- private $lex;
-
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_Config_File_Compiler
- */
- public $compiler = null;
-
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * copy of config_overwrite property
- *
- * @var bool
- */
- private $configOverwrite = false;
-
- /**
- * copy of config_read_hidden property
- *
- * @var bool
- */
- private $configReadHidden = false;
-
- /**
- * helper map
- *
- * @var array
- */
- private static $escapes_single = Array('\\' => '\\', '\'' => '\'');
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Configfilelexer $lex
- * @param Smarty_Internal_Config_File_Compiler $compiler
- */
- function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
- {
- // set instance object
- self::instance($this);
- $this->lex = $lex;
- $this->smarty = $compiler->smarty;
- $this->compiler = $compiler;
- $this->configOverwrite = $this->smarty->config_overwrite;
- $this->configReadHidden = $this->smarty->config_read_hidden;
- }
-
- /**
- * @param null $new_instance
- *
- * @return null
- */
- public static function &instance($new_instance = null)
- {
- static $instance = null;
- if (isset($new_instance) && is_object($new_instance)) {
- $instance = $new_instance;
- }
- return $instance;
- }
-
- /**
- * parse optional boolean keywords
- *
- * @param string $str
- *
- * @return bool
- */
- private function parse_bool($str)
- {
- $str = strtolower($str);
- if (in_array($str, array('on', 'yes', 'true'))) {
- $res = true;
- } else {
- $res = false;
- }
- return $res;
- }
-
- /**
- * parse single quoted string
- * remove outer quotes
- * unescape inner quotes
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_single_quoted_string($qstr)
- {
- $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
-
- $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
-
- $str = "";
- foreach ($ss as $s) {
- if (strlen($s) === 2 && $s[0] === '\\') {
- if (isset(self::$escapes_single[$s[1]])) {
- $s = self::$escapes_single[$s[1]];
- }
- }
- $str .= $s;
- }
- return $str;
- }
-
- /**
- * parse double quoted string
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_double_quoted_string($qstr)
- {
- $inner_str = substr($qstr, 1, strlen($qstr) - 2);
- return stripcslashes($inner_str);
- }
-
- /**
- * parse triple quoted string
- *
- * @param string $qstr
- *
- * @return string
- */
- private static function parse_tripple_double_quoted_string($qstr)
- {
- return stripcslashes($qstr);
- }
-
- /**
- * set a config variable in target array
- *
- * @param array $var
- * @param array $target_array
- */
- private function set_var(Array $var, Array &$target_array)
- {
- $key = $var["key"];
- $value = $var["value"];
-
- if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
- $target_array['vars'][$key] = $value;
- } else {
- settype($target_array['vars'][$key], 'array');
- $target_array['vars'][$key][] = $value;
- }
- }
-
- /**
- * add config variable to global vars
- *
- * @param array $vars
- */
- private function add_global_vars(Array $vars)
- {
- if (!isset($this->compiler->config_data['vars'])) {
- $this->compiler->config_data['vars'] = Array();
- }
- foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data);
- }
- }
-
- /**
- * add config variable to section
- *
- * @param string $section_name
- * @param array $vars
- */
- private function add_section_vars($section_name, Array $vars)
- {
- if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
- $this->compiler->config_data['sections'][$section_name]['vars'] = Array();
- }
- foreach ($vars as $var) {
- $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
- }
- }
-
- const TPC_OPENB = 1;
-
- const TPC_SECTION = 2;
-
- const TPC_CLOSEB = 3;
-
- const TPC_DOT = 4;
-
- const TPC_ID = 5;
-
- const TPC_EQUAL = 6;
-
- const TPC_FLOAT = 7;
-
- const TPC_INT = 8;
-
- const TPC_BOOL = 9;
-
- const TPC_SINGLE_QUOTED_STRING = 10;
-
- const TPC_DOUBLE_QUOTED_STRING = 11;
-
- const TPC_TRIPPLE_QUOTES = 12;
-
- const TPC_TRIPPLE_TEXT = 13;
-
- const TPC_TRIPPLE_QUOTES_END = 14;
-
- const TPC_NAKED_STRING = 15;
-
- const TPC_OTHER = 16;
-
- const TPC_NEWLINE = 17;
-
- const TPC_COMMENTSTART = 18;
-
- const YY_NO_ACTION = 60;
-
- const YY_ACCEPT_ACTION = 59;
-
- const YY_ERROR_ACTION = 58;
-
- const YY_SZ_ACTTAB = 38;
-
- static public $yy_action = array(29, 30, 34, 33, 24, 13, 19, 25, 35, 21, 59, 8, 3, 1, 20, 12, 14, 31, 20, 12, 15,
- 17, 23, 18, 27, 26, 4, 5, 6, 32, 2, 11, 28, 22, 16, 9, 7, 10,);
-
- static public $yy_lookahead = array(7, 8, 9, 10, 11, 12, 5, 27, 15, 16, 20, 21, 23, 23, 17, 18, 13, 14, 17, 18, 15,
- 2, 17, 4, 25, 26, 6, 3, 3, 14, 23, 1, 24, 17, 2, 25, 22, 25,);
-
- const YY_SHIFT_USE_DFLT = - 8;
-
- const YY_SHIFT_MAX = 19;
-
- static public $yy_shift_ofst = array(- 8, 1, 1, 1, - 7, - 3, - 3, 30, - 8, - 8, - 8, 19, 5, 3, 15, 16, 24, 25, 32,
- 20,);
-
- const YY_REDUCE_USE_DFLT = - 21;
-
- const YY_REDUCE_MAX = 10;
-
- static public $yy_reduce_ofst = array(- 10, - 1, - 1, - 1, - 20, 10, 12, 8, 14, 7, - 11,);
-
- static public $yyExpectedTokens = array(array(), array(5, 17, 18,), array(5, 17, 18,), array(5, 17, 18,),
- array(7, 8, 9, 10, 11, 12, 15, 16,), array(17, 18,), array(17, 18,), array(1,), array(), array(), array(),
- array(2, 4,), array(15, 17,), array(13, 14,), array(14,), array(17,), array(3,), array(3,), array(2,),
- array(6,), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(),);
-
- static public $yy_default = array(44, 37, 41, 40, 58, 58, 58, 36, 39, 44, 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 55, 54, 57, 56, 50, 45, 43, 42, 38, 46, 47, 52, 51, 49, 48, 53,);
-
- const YYNOCODE = 29;
-
- const YYSTACKDEPTH = 100;
-
- const YYNSTATE = 36;
-
- const YYNRULE = 22;
-
- const YYERRORSYMBOL = 19;
-
- const YYERRSYMDT = 'yy0';
-
- const YYFALLBACK = 0;
-
- public static $yyFallback = array();
-
- public function Trace($TraceFILE, $zTracePrompt)
- {
- if (!$TraceFILE) {
- $zTracePrompt = 0;
- } elseif (!$zTracePrompt) {
- $TraceFILE = 0;
- }
- $this->yyTraceFILE = $TraceFILE;
- $this->yyTracePrompt = $zTracePrompt;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- public $yyTraceFILE;
-
- public $yyTracePrompt;
-
- public $yyidx; /* Index of top element in stack */
- public $yyerrcnt; /* Shifts left before out of the error */
- public $yystack = array(); /* The parser's stack */
-
- public $yyTokenName = array('$', 'OPENB', 'SECTION', 'CLOSEB', 'DOT', 'ID', 'EQUAL', 'FLOAT', 'INT', 'BOOL',
- 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END',
- 'NAKED_STRING', 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error', 'start', 'global_vars', 'sections', 'var_list',
- 'section', 'newline', 'var', 'value',);
-
- public static $yyRuleName = array('start ::= global_vars sections', 'global_vars ::= var_list',
- 'sections ::= sections section', 'sections ::=', 'section ::= OPENB SECTION CLOSEB newline var_list',
- 'section ::= OPENB DOT SECTION CLOSEB newline var_list', 'var_list ::= var_list newline',
- 'var_list ::= var_list var', 'var_list ::=', 'var ::= ID EQUAL value', 'value ::= FLOAT', 'value ::= INT',
- 'value ::= BOOL', 'value ::= SINGLE_QUOTED_STRING', 'value ::= DOUBLE_QUOTED_STRING',
- 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END', 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END',
- 'value ::= NAKED_STRING', 'value ::= OTHER', 'newline ::= NEWLINE', 'newline ::= COMMENTSTART NEWLINE',
- 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',);
-
- public function tokenName($tokenType)
- {
- if ($tokenType === 0) {
- return 'End of Input';
- }
- if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
- return $this->yyTokenName[$tokenType];
- } else {
- return "Unknown";
- }
- }
-
- public static function yy_destructor($yymajor, $yypminor)
- {
- switch ($yymajor) {
- default:
- break; /* If no destructor action specified: do nothing */
- }
- }
-
- public function yy_pop_parser_stack()
- {
- if (empty($this->yystack)) {
- return;
- }
- $yytos = array_pop($this->yystack);
- if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . "\n");
- }
- $yymajor = $yytos->major;
- self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx --;
-
- return $yymajor;
- }
-
- public function __destruct()
- {
- while ($this->yystack !== Array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- public function yy_get_expected_tokens($token)
- {
- static $res3 = array();
- static $res4 = array();
- $state = $this->yystack[$this->yyidx]->stateno;
- $expected = self::$yyExpectedTokens[$state];
- if (isset($res3[$state][$token])) {
- if ($res3[$state][$token]) {
- return $expected;
- }
- } else {
- if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
- return $expected;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done ++ == 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return array_unique($expected);
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
- $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
- if (isset(self::$yyExpectedTokens[$nextstate])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
- if (isset($res4[$nextstate][$token])) {
- if ($res4[$nextstate][$token]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- } else {
- if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx ++;
- $x = new TPC_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[$yyruleno][0];
- $this->yystack[$this->yyidx] = $x;
- continue 2;
- } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return array_unique($expected);
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return $expected;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return array_unique($expected);
- }
-
- public function yy_is_expected_token($token)
- {
- static $res = array();
- static $res2 = array();
- if ($token === 0) {
- return true; // 0 is not part of this
- }
- $state = $this->yystack[$this->yyidx]->stateno;
- if (isset($res[$state][$token])) {
- if ($res[$state][$token]) {
- return true;
- }
- } else {
- if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
- return true;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done ++ == 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return true;
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
- $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
- if (isset($res2[$nextstate][$token])) {
- if ($res2[$nextstate][$token]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- } else {
- if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx ++;
- $x = new TPC_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[$yyruleno][0];
- $this->yystack[$this->yyidx] = $x;
- continue 2;
- } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- if (!$token) {
- // end of input: this is valid
- return true;
- }
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return false;
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return true;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return true;
- }
-
- public function yy_find_shift_action($iLookAhead)
- {
- $stateno = $this->yystack[$this->yyidx]->stateno;
-
- /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
- if (!isset(self::$yy_shift_ofst[$stateno])) {
- // no shift actions
- return self::$yy_default[$stateno];
- }
- $i = self::$yy_shift_ofst[$stateno];
- if ($i === self::YY_SHIFT_USE_DFLT) {
- return self::$yy_default[$stateno];
- }
- if ($iLookAhead == self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
- if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
- if ($this->yyTraceFILE) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[$iLookAhead] . " => " . $this->yyTokenName[$iFallback] . "\n");
- }
-
- return $this->yy_find_shift_action($iFallback);
- }
-
- return self::$yy_default[$stateno];
- } else {
- return self::$yy_action[$i];
- }
- }
-
- public function yy_find_reduce_action($stateno, $iLookAhead)
- {
- /* $stateno = $this->yystack[$this->yyidx]->stateno; */
-
- if (!isset(self::$yy_reduce_ofst[$stateno])) {
- return self::$yy_default[$stateno];
- }
- $i = self::$yy_reduce_ofst[$stateno];
- if ($i == self::YY_REDUCE_USE_DFLT) {
- return self::$yy_default[$stateno];
- }
- if ($iLookAhead == self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
- return self::$yy_default[$stateno];
- } else {
- return self::$yy_action[$i];
- }
- }
-
- public function yy_shift($yyNewState, $yyMajor, $yypMinor)
- {
- $this->yyidx ++;
- if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx --;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- #line 255 "../smarty/lexer/smarty_internal_configfileparser.y"
-
- $this->internalError = true;
- $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
-
- return;
- }
- $yytos = new TPC_yyStackEntry;
- $yytos->stateno = $yyNewState;
- $yytos->major = $yyMajor;
- $yytos->minor = $yypMinor;
- $this->yystack[] = $yytos;
- if ($this->yyTraceFILE && $this->yyidx > 0) {
- fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
- fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
- for ($i = 1; $i <= $this->yyidx; $i ++) {
- fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[$this->yystack[$i]->major]);
- }
- fwrite($this->yyTraceFILE, "\n");
- }
- }
-
- public static $yyRuleInfo = array(array(0 => 20, 1 => 2), array(0 => 21, 1 => 1), array(0 => 22, 1 => 2),
- array(0 => 22, 1 => 0), array(0 => 24, 1 => 5), array(0 => 24, 1 => 6), array(0 => 23, 1 => 2),
- array(0 => 23, 1 => 2), array(0 => 23, 1 => 0), array(0 => 26, 1 => 3), array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
- array(0 => 27, 1 => 3), array(0 => 27, 1 => 2), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
- array(0 => 25, 1 => 1), array(0 => 25, 1 => 2), array(0 => 25, 1 => 3),);
-
- public static $yyReduceMap = array(0 => 0, 2 => 0, 3 => 0, 19 => 0, 20 => 0, 21 => 0, 1 => 1, 4 => 4, 5 => 5,
- 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13,
- 14 => 14, 15 => 15, 16 => 16, 17 => 17, 18 => 17,);
-
- #line 261 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r0()
- {
- $this->_retvalue = null;
- }
-
- #line 266 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r1()
- {
- $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor);
- $this->_retvalue = null;
- }
-
- #line 280 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r4()
- {
- $this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
- $this->_retvalue = null;
- }
-
- #line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r5()
- {
- if ($this->configReadHidden) {
- $this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
- }
- $this->_retvalue = null;
- }
-
- #line 293 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r6()
- {
- $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
- }
-
- #line 297 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r7()
- {
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
- }
-
- #line 301 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r8()
- {
- $this->_retvalue = Array();
- }
-
- #line 307 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r9()
- {
- $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + - 2]->minor,
- "value" => $this->yystack[$this->yyidx + 0]->minor);
- }
-
- #line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r10()
- {
- $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
- }
-
- #line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r11()
- {
- $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
- }
-
- #line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r12()
- {
- $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
- }
-
- #line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r13()
- {
- $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
- }
-
- #line 328 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r14()
- {
- $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
- }
-
- #line 332 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r15()
- {
- $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + - 1]->minor);
- }
-
- #line 336 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r16()
- {
- $this->_retvalue = '';
- }
-
- #line 340 "../smarty/lexer/smarty_internal_configfileparser.y"
- function yy_r17()
- {
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-
- private $_retvalue;
-
- public function yy_reduce($yyruleno)
- {
- if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
- fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno, self::$yyRuleName[$yyruleno]);
- }
-
- $this->_retvalue = $yy_lefthand_side = null;
- if (isset(self::$yyReduceMap[$yyruleno])) {
- // call the action
- $this->_retvalue = null;
- $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
- $yy_lefthand_side = $this->_retvalue;
- }
- $yygoto = self::$yyRuleInfo[$yyruleno][0];
- $yysize = self::$yyRuleInfo[$yyruleno][1];
- $this->yyidx -= $yysize;
- for ($i = $yysize; $i; $i --) {
- // pop all of the right-hand side parameters
- array_pop($this->yystack);
- }
- $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
- if ($yyact < self::YYNSTATE) {
- if (!$this->yyTraceFILE && $yysize) {
- $this->yyidx ++;
- $x = new TPC_yyStackEntry;
- $x->stateno = $yyact;
- $x->major = $yygoto;
- $x->minor = $yy_lefthand_side;
- $this->yystack[$this->yyidx] = $x;
- } else {
- $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
- }
- } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yy_accept();
- }
- }
-
- public function yy_parse_failed()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- }
-
- public function yy_syntax_error($yymajor, $TOKEN)
- {
- #line 248 "../smarty/lexer/smarty_internal_configfileparser.y"
-
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_config_file_error();
- }
-
- public function yy_accept()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- #line 241 "../smarty/lexer/smarty_internal_configfileparser.y"
-
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- }
-
- public function doParse($yymajor, $yytokenvalue)
- {
- $yyerrorhit = 0; /* True if yymajor has invoked an error */
-
- if ($this->yyidx === null || $this->yyidx < 0) {
- $this->yyidx = 0;
- $this->yyerrcnt = - 1;
- $x = new TPC_yyStackEntry;
- $x->stateno = 0;
- $x->major = 0;
- $this->yystack = array();
- $this->yystack[] = $x;
- }
- $yyendofinput = ($yymajor == 0);
-
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
- }
-
- do {
- $yyact = $this->yy_find_shift_action($yymajor);
- if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
- // force a syntax error
- $yyact = self::YY_ERROR_ACTION;
- }
- if ($yyact < self::YYNSTATE) {
- $this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt --;
- if ($yyendofinput && $this->yyidx >= 0) {
- $yymajor = 0;
- } else {
- $yymajor = self::YYNOCODE;
- }
- } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
- $this->yy_reduce($yyact - self::YYNSTATE);
- } elseif ($yyact == self::YY_ERROR_ACTION) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
- }
- if (self::YYERRORSYMBOL) {
- if ($this->yyerrcnt < 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $yymx = $this->yystack[$this->yyidx]->major;
- if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
- }
- $this->yy_destructor($yymajor, $yytokenvalue);
- $yymajor = self::YYNOCODE;
- } else {
- while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL && ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
- $this->yy_pop_parser_stack();
- }
- if ($this->yyidx < 0 || $yymajor == 0) {
- $this->yy_destructor($yymajor, $yytokenvalue);
- $this->yy_parse_failed();
- $yymajor = self::YYNOCODE;
- } elseif ($yymx != self::YYERRORSYMBOL) {
- $u2 = 0;
- $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
- }
- }
- $this->yyerrcnt = 3;
- $yyerrorhit = 1;
- } else {
- if ($this->yyerrcnt <= 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $this->yyerrcnt = 3;
- $this->yy_destructor($yymajor, $yytokenvalue);
- if ($yyendofinput) {
- $this->yy_parse_failed();
- }
- $yymajor = self::YYNOCODE;
- }
- } else {
- $this->yy_accept();
- $yymajor = self::YYNOCODE;
- }
- } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
- }
-}
-
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_data.php b/library/Smarty/libs/sysplugins/smarty_internal_data.php
deleted file mode 100644
index bba95d303..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_data.php
+++ /dev/null
@@ -1,240 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Data
- * This file contains the basic classes and methods for template and variable creation
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Base class with template and variable methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @method mixed getConfigVars(string $varName = null, bool $searchParents = true)
- * @method mixed getStreamVariable(string $variable)
- * @method Smarty_Internal_Data clearAssign(mixed $tpl_var)
- * @method Smarty_Internal_Data clearAllAssign()
- * @method Smarty_Internal_Data clearConfig(string $varName = null)
- * @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local')
- * @property int $scope
- */
-class Smarty_Internal_Data
-{
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 4;
-
- /**
- * name of class used for templates
- *
- * @var string
- */
- public $template_class = 'Smarty_Internal_Template';
-
- /**
- * template variables
- *
- * @var Smarty_Variable[]
- */
- public $tpl_vars = array();
-
- /**
- * parent template (if any)
- *
- * @var Smarty|Smarty_Internal_Template|Smarty_Internal_Data
- */
- public $parent = null;
-
- /**
- * configuration settings
- *
- * @var string[]
- */
- public $config_vars = array();
-
- /**
- * extension handler
- *
- * @var Smarty_Internal_Extension_Handler
- */
- public $ext = null;
-
- /**
- * Smarty_Internal_Data constructor.
- *
- * Install extension handler
- */
- public function __construct()
- {
- $this->ext = new Smarty_Internal_Extension_Handler();
- $this->ext->objType = $this->_objType;
- }
-
- /**
- * assigns a Smarty variable
- *
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for
- * chaining
- */
- public function assign($tpl_var, $value = null, $nocache = false)
- {
- if (is_array($tpl_var)) {
- foreach ($tpl_var as $_key => $_val) {
- if ($_key != '') {
- $this->tpl_vars[$_key] = new Smarty_Variable($_val, $nocache);
- if ($this->_objType == 2 && $this->scope) {
- $this->ext->_updateScope->updateScope($this, $_key);
- }
- }
- }
- } else {
- if ($tpl_var != '') {
- $this->tpl_vars[$tpl_var] = new Smarty_Variable($value, $nocache);
- if ($this->_objType == 2 && $this->scope) {
- $this->ext->_updateScope->updateScope($this, $tpl_var);
- }
- }
- }
- return $this;
- }
-
- /**
- * appends values to template variables
- *
- * @api Smarty::append()
- * @link http://www.smarty.net/docs/en/api.append.tpl
- *
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to append
- * @param bool $merge flag if array elements shall be merged
- * @param bool $nocache if true any output of this variable will
- * be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function append($tpl_var, $value = null, $merge = false, $nocache = false)
- {
- return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache);
- }
-
- /**
- * assigns a global Smarty variable
- *
- * @param string $varName the global variable name
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignGlobal($varName, $value = null, $nocache = false)
- {
- return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache);
- }
-
- /**
- * appends values to template variables by reference
- *
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param boolean $merge flag if array elements shall be merged
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function appendByRef($tpl_var, &$value, $merge = false)
- {
- return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge);
- }
-
- /**
- * assigns values to template variables by reference
- *
- * @param string $tpl_var the template variable name
- * @param $value
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignByRef($tpl_var, &$value, $nocache = false)
- {
- return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache);
- }
-
- /**
- * Returns a single or all template variables
- *
- * @api Smarty::getTemplateVars()
- * @link http://www.smarty.net/docs/en/api.get.template.vars.tpl
- *
- * @param string $varName variable name or null
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents include parent templates?
- *
- * @return mixed variable value or or array of variables
- */
- public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
- {
- return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents);
- }
-
- /**
- * gets the object of a Smarty variable
- *
- * @param string $variable the name of the Smarty variable
- * @param Smarty_Internal_Data $_ptr optional pointer to data object
- * @param boolean $searchParents search also in parent data
- * @param bool $error_enable
- *
- * @return Smarty_Variable|Smarty_Undefined_Variable the object of the variable
- * @deprecated since 3.1.28 please use Smarty_Internal_Data::getTemplateVars() instead.
- */
- public function getVariable($variable = null, Smarty_Internal_Data $_ptr = null, $searchParents = true, $error_enable = true){
- return $this->ext->getTemplateVars->_getVariable($this, $variable, $_ptr, $searchParents, $error_enable);
- }
-
- /**
- * Follow the parent chain an merge template and config variables
- *
- * @param \Smarty_Internal_Data|null $data
- */
- public function _mergeVars(Smarty_Internal_Data $data = null)
- {
- if (isset($data)) {
- if (!empty($this->tpl_vars)) {
- $data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars);
- }
- if (!empty($this->config_vars)) {
- $data->config_vars = array_merge($this->config_vars, $data->config_vars);
- }
- } else {
- $data = $this;
- }
- if (isset($this->parent)) {
- $this->parent->_mergeVars($data);
- }
- }
-
- /**
- * Handle unknown class methods
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- return $this->ext->_callExternalMethod($this, $name, $args);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_debug.php b/library/Smarty/libs/sysplugins/smarty_internal_debug.php
deleted file mode 100644
index 0cbd54955..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_debug.php
+++ /dev/null
@@ -1,430 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Debug
- * Class to collect data for the Smarty Debugging Console
- *
- * @package Smarty
- * @subpackage Debug
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Debug Class
- *
- * @package Smarty
- * @subpackage Debug
- */
-class Smarty_Internal_Debug extends Smarty_Internal_Data
-{
- /**
- * template data
- *
- * @var array
- */
- public $template_data = array();
-
- /**
- * List of uid's which shall be ignored
- *
- * @var array
- */
- public $ignore_uid = array();
-
- /**
- * Index of display() and fetch() calls
- *
- * @var int
- */
- public $index = 0;
-
- /**
- * Counter for window offset
- *
- * @var int
- */
- public $offset = 0;
-
- /**
- * Start logging template
- *
- * @param \Smarty_Internal_Template $template template
- * @param null $mode true: display false: fetch null: subtemplate
- */
- public function start_template(Smarty_Internal_Template $template, $mode = null)
- {
- if (isset($mode)) {
- $this->index ++;
- $this->offset ++;
- $this->template_data[$this->index] = null;
- }
- $key = $this->get_key($template);
- $this->template_data[$this->index][$key]['start_template_time'] = microtime(true);
- }
-
- /**
- * End logging of cache time
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function end_template(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[$this->index][$key]['total_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_template_time'];
- //$this->template_data[$this->index][$key]['properties'] = $template->properties;
- }
-
- /**
- * Start logging of compile time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function start_compile(Smarty_Internal_Template $template)
- {
- static $_is_stringy = array('string' => true, 'eval' => true);
- if (!empty($template->compiler->trace_uid)) {
- $key = $template->compiler->trace_uid;
- if (!isset($this->template_data[$this->index][$key])) {
- if (isset($_is_stringy[$template->source->type])) {
- $this->template_data[$this->index][$key]['name'] =
- '\'' . substr($template->source->name, 0, 25) . '...\'';
- } else {
- $this->template_data[$this->index][$key]['name'] = $template->source->filepath;
- }
- $this->template_data[$this->index][$key]['compile_time'] = 0;
- $this->template_data[$this->index][$key]['render_time'] = 0;
- $this->template_data[$this->index][$key]['cache_time'] = 0;
- }
- } else {
- if (isset($this->ignore_uid[$template->source->uid])) {
- return;
- }
- $key = $this->get_key($template);
- }
- $this->template_data[$this->index][$key]['start_time'] = microtime(true);
- }
-
- /**
- * End logging of compile time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function end_compile(Smarty_Internal_Template $template)
- {
- if (!empty($template->compiler->trace_uid)) {
- $key = $template->compiler->trace_uid;
- } else {
- if (isset($this->ignore_uid[$template->source->uid])) {
- return;
- }
-
- $key = $this->get_key($template);
- }
- $this->template_data[$this->index][$key]['compile_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_time'];
- }
-
- /**
- * Start logging of render time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function start_render(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[$this->index][$key]['start_time'] = microtime(true);
- }
-
- /**
- * End logging of compile time
- *
- * @param \Smarty_Internal_Template $template
- */
- public function end_render(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[$this->index][$key]['render_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_time'];
- }
-
- /**
- * Start logging of cache time
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function start_cache(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[$this->index][$key]['start_time'] = microtime(true);
- }
-
- /**
- * End logging of cache time
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function end_cache(Smarty_Internal_Template $template)
- {
- $key = $this->get_key($template);
- $this->template_data[$this->index][$key]['cache_time'] +=
- microtime(true) - $this->template_data[$this->index][$key]['start_time'];
- }
-
- /**
- * Register template object
- *
- * @param \Smarty_Internal_Template $template cached template
- */
- public function register_template(Smarty_Internal_Template $template)
- {
- }
-
- /**
- * Register data object
- *
- * @param \Smarty_Data $data data object
- */
- public static function register_data(Smarty_Data $data)
- {
- }
-
- /**
- * Opens a window for the Smarty Debugging Console and display the data
- *
- * @param Smarty_Internal_Template|Smarty $obj object to debug
- * @param bool $full
- */
- public function display_debug($obj, $full = false)
- {
- if (!$full) {
- $this->offset ++;
- $savedIndex = $this->index;
- $this->index = 9999;
- }
- if ($obj->_objType == 1) {
- $smarty = $obj;
- } else {
- $smarty = $obj->smarty;
- }
- // create fresh instance of smarty for displaying the debug console
- // to avoid problems if the application did overload the Smarty class
- $debObj = new Smarty();
- // copy the working dirs from application
- $debObj->setCompileDir($smarty->getCompileDir());
- // init properties by hand as user may have edited the original Smarty class
- $debObj->setPluginsDir(is_dir(__DIR__ . '/../plugins') ? __DIR__ . '/../plugins' : $smarty->getPluginsDir());
- $debObj->force_compile = false;
- $debObj->compile_check = true;
- $debObj->left_delimiter = '{';
- $debObj->right_delimiter = '}';
- $debObj->security_policy = null;
- $debObj->debugging = false;
- $debObj->debugging_ctrl = 'NONE';
- $debObj->error_reporting = E_ALL & ~E_NOTICE;
- $debObj->debug_tpl = isset($smarty->debug_tpl) ? $smarty->debug_tpl : 'file:' . __DIR__ . '/../debug.tpl';
- $debObj->registered_plugins = array();
- $debObj->registered_resources = array();
- $debObj->registered_filters = array();
- $debObj->autoload_filters = array();
- $debObj->default_modifiers = array();
- $debObj->escape_html = true;
- $debObj->caching = false;
- $debObj->compile_id = null;
- $debObj->cache_id = null;
- // prepare information of assigned variables
- $ptr = $this->get_debug_vars($obj);
- $_assigned_vars = $ptr->tpl_vars;
- ksort($_assigned_vars);
- $_config_vars = $ptr->config_vars;
- ksort($_config_vars);
- $debugging = $smarty->debugging;
-
- $_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj);
- if ($obj->_objType == 2) {
- $_template->assign('template_name', $obj->source->type . ':' . $obj->source->name);
- }
- if ($obj->_objType == 1 || $full) {
- $_template->assign('template_data', $this->template_data[$this->index]);
- } else {
- $_template->assign('template_data', null);
- }
- $_template->assign('assigned_vars', $_assigned_vars);
- $_template->assign('config_vars', $_config_vars);
- $_template->assign('execution_time', microtime(true) - $smarty->start_time);
- $_template->assign('display_mode', $debugging == 2 || !$full);
- $_template->assign('offset', $this->offset * 50);
- echo $_template->fetch();
- if (isset($full)) {
- $this->index --;
- }
- if (!$full) {
- $this->index = $savedIndex;
- }
- }
-
- /**
- * Recursively gets variables from all template/data scopes
- *
- * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
- *
- * @return StdClass
- */
- public function get_debug_vars($obj)
- {
- $config_vars = array();
- foreach ($obj->config_vars as $key => $var) {
- $config_vars[$key]['value'] = $var;
- if ($obj->_objType == 2) {
- $config_vars[$key]['scope'] = $obj->source->type . ':' . $obj->source->name;
- } elseif ($obj->_objType == 4) {
- $tpl_vars[$key]['scope'] = $obj->dataObjectName;
- } else {
- $config_vars[$key]['scope'] = 'Smarty object';
- }
- }
- $tpl_vars = array();
- foreach ($obj->tpl_vars as $key => $var) {
- foreach ($var as $varkey => $varvalue) {
- if ($varkey == 'value') {
- $tpl_vars[$key][$varkey] = $varvalue;
- } else {
- if ($varkey == 'nocache') {
- if ($varvalue == true) {
- $tpl_vars[$key][$varkey] = $varvalue;
- }
- } else {
- if ($varkey != 'scope' || $varvalue !== 0) {
- $tpl_vars[$key]['attributes'][$varkey] = $varvalue;
- }
- }
- }
- }
- if ($obj->_objType == 2) {
- $tpl_vars[$key]['scope'] = $obj->source->type . ':' . $obj->source->name;
- } elseif ($obj->_objType == 4) {
- $tpl_vars[$key]['scope'] = $obj->dataObjectName;
- } else {
- $tpl_vars[$key]['scope'] = 'Smarty object';
- }
- }
-
- if (isset($obj->parent)) {
- $parent = $this->get_debug_vars($obj->parent);
- foreach ($parent->tpl_vars as $name => $pvar) {
- if (isset($tpl_vars[$name]) && $tpl_vars[$name]['value'] === $pvar['value']) {
- $tpl_vars[$name]['scope'] = $pvar['scope'];
- }
- }
- $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
-
- foreach ($parent->config_vars as $name => $pvar) {
- if (isset($config_vars[$name]) && $config_vars[$name]['value'] === $pvar['value']) {
- $config_vars[$name]['scope'] = $pvar['scope'];
- }
- }
- $config_vars = array_merge($parent->config_vars, $config_vars);
- } else {
- foreach (Smarty::$global_tpl_vars as $key => $var) {
- if (!array_key_exists($key, $tpl_vars)) {
- foreach ($var as $varkey => $varvalue) {
- if ($varkey == 'value') {
- $tpl_vars[$key][$varkey] = $varvalue;
- } else {
- if ($varkey == 'nocache') {
- if ($varvalue == true) {
- $tpl_vars[$key][$varkey] = $varvalue;
- }
- } else {
- if ($varkey != 'scope' || $varvalue !== 0) {
- $tpl_vars[$key]['attributes'][$varkey] = $varvalue;
- }
- }
- }
- }
- $tpl_vars[$key]['scope'] = 'Global';
- }
- }
- }
-
- return (object) array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
- }
-
- /**
- * Return key into $template_data for template
- *
- * @param \Smarty_Internal_Template $template template object
- *
- * @return string key into $template_data
- */
- private function get_key(Smarty_Internal_Template $template)
- {
- static $_is_stringy = array('string' => true, 'eval' => true);
- // calculate Uid if not already done
- if ($template->source->uid == '') {
- $template->source->filepath;
- }
- $key = $template->source->uid;
- if (isset($this->template_data[$this->index][$key])) {
- return $key;
- } else {
- if (isset($_is_stringy[$template->source->type])) {
- $this->template_data[$this->index][$key]['name'] =
- '\'' . substr($template->source->name, 0, 25) . '...\'';
- } else {
- $this->template_data[$this->index][$key]['name'] = $template->source->filepath;
- }
- $this->template_data[$this->index][$key]['compile_time'] = 0;
- $this->template_data[$this->index][$key]['render_time'] = 0;
- $this->template_data[$this->index][$key]['cache_time'] = 0;
- $this->template_data[$this->index][$key]['total_time'] = 0;
-
- return $key;
- }
- }
-
- /**
- * Ignore template
- *
- * @param \Smarty_Internal_Template $template
- */
- public function ignore(Smarty_Internal_Template $template)
- {
- // calculate Uid if not already done
- if ($template->source->uid == '') {
- $template->source->filepath;
- }
- $this->ignore_uid[$template->source->uid] = true;
- }
-
- /**
- * handle 'URL' debugging mode
- *
- * @param Smarty $smarty
- */
- public function debugUrl(Smarty $smarty)
- {
- if (isset($_SERVER['QUERY_STRING'])) {
- $_query_string = $_SERVER['QUERY_STRING'];
- } else {
- $_query_string = '';
- }
- if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
- if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
- // enable debugging for this browser session
- setcookie('SMARTY_DEBUG', true);
- $smarty->debugging = true;
- } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
- // disable debugging for this browser session
- setcookie('SMARTY_DEBUG', false);
- $smarty->debugging = false;
- } else {
- // enable debugging for this page
- $smarty->debugging = true;
- }
- } else {
- if (isset($_COOKIE['SMARTY_DEBUG'])) {
- $smarty->debugging = true;
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php b/library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php
deleted file mode 100644
index 00edc5abf..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_extension_clear.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/**
- * Smarty Extension Clear
- *
- * $smarty->clear() method file cache file resource
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Extension_Clear
-{
- /**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- *
- * @return integer number of cache files deleted
- */
- public static function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
- {
- $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
- $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
- $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
- $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
- $_dir = $smarty->getCacheDir();
- if ($_dir == '/') { //We should never want to delete this!
- return 0;
- }
- $_dir_length = strlen($_dir);
- if (isset($_cache_id)) {
- $_cache_id_parts = explode('|', $_cache_id);
- $_cache_id_parts_count = count($_cache_id_parts);
- if ($smarty->use_sub_dirs) {
- foreach ($_cache_id_parts as $id_part) {
- $_dir .= $id_part . DS;
- }
- }
- }
- if (isset($resource_name)) {
- $_save_stat = $smarty->caching;
- $smarty->caching = true;
- $tpl = new $smarty->template_class($resource_name, $smarty);
- $smarty->caching = $_save_stat;
-
- // remove from template cache
- $tpl->source; // have the template registered before unset()
-
- if ($tpl->source->exists) {
- $_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath));
- } else {
- return 0;
- }
- }
- $_count = 0;
- $_time = time();
- if (file_exists($_dir)) {
- $_cacheDirs = new RecursiveDirectoryIterator($_dir);
- $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
- foreach ($_cache as $_file) {
- if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
- continue;
- }
- // directory ?
- if ($_file->isDir()) {
- if (!$_cache->isDot()) {
- // delete folder if empty
- @rmdir($_file->getPathname());
- }
- } else {
- $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string) $_file, $_dir_length)));
- $_parts_count = count($_parts);
- // check name
- if (isset($resource_name)) {
- if ($_parts[$_parts_count - 1] != $_resourcename_parts) {
- continue;
- }
- }
- // check compile id
- if (isset($_compile_id) && (!isset($_parts[$_parts_count - 2 - $_compile_id_offset]) ||
- $_parts[$_parts_count - 2 - $_compile_id_offset] != $_compile_id)
- ) {
- continue;
- }
- // check cache id
- if (isset($_cache_id)) {
- // count of cache id parts
- $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset :
- $_parts_count - 1 - $_compile_id_offset;
- if ($_parts_count < $_cache_id_parts_count) {
- continue;
- }
- for ($i = 0; $i < $_cache_id_parts_count; $i ++) {
- if ($_parts[$i] != $_cache_id_parts[$i]) {
- continue 2;
- }
- }
- }
- // expired ?
- if (isset($exp_time)) {
- if ($exp_time < 0) {
- preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_file), $match);
- if ($_time < (@filemtime($_file) + $match[1])) {
- continue;
- }
- } else {
- if ($_time - @filemtime($_file) < $exp_time) {
- continue;
- }
- }
- }
- $_count += @unlink((string) $_file) ? 1 : 0;
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate((string) $_file);
- }
- }
- }
- }
- return $_count;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php b/library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php
deleted file mode 100644
index 68012d86f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_extension_handler.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/**
- * Smarty Extension handler
- *
- * Load extensions dynamically
- *
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- * @property Smarty_Internal_Runtime_Inheritance $_inheritance
- * @property Smarty_Internal_Runtime_SubTemplate $_subTemplate
- * @property Smarty_Internal_Runtime_TplFunction $_tplFunction
- * @property Smarty_Internal_Runtime_Var $_var
- * @property Smarty_Internal_Runtime_Config $_config
- * @property Smarty_Internal_Runtime_Foreach $_foreach
- * @property Smarty_Internal_Runtime_Hhvm $_hhvm
- * @property Smarty_Internal_Runtime_WriteFile $_writeFile
- * @property Smarty_Internal_Runtime_ValidateCompiled $_validateCompiled
- * @property Smarty_Internal_Runtime_CodeFrame $_codeFrame
- * @property Smarty_Internal_Runtime_FilterHandler $_filterHandler
- * @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath
- * @property Smarty_Internal_Runtime_UpdateScope $_updateScope
- * @property Smarty_Internal_Runtime_IsCached $_isCached
- * @property Smarty_Internal_Runtime_CacheModify $_cacheModify
- * @property Smarty_Internal_Runtime_UpdateCache $_updateCache
- * @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars
- * @property Smarty_Internal_Method_Append $append
- * @property Smarty_Internal_Method_AppendByRef $appendByRef
- * @property Smarty_Internal_Method_AssignGlobal $assignGlobal
- * @property Smarty_Internal_Method_AssignByRef $assignByRef
- * @property Smarty_Internal_Method_LoadFilter $loadFilter
- * @property Smarty_Internal_Method_LoadPlugin $loadPlugin
- * @property Smarty_Internal_Method_RegisterFilter $registerFilter
- * @property Smarty_Internal_Method_RegisterObject $registerObject
- * @property Smarty_Internal_Method_RegisterPlugin $registerPlugin
- */
-class Smarty_Internal_Extension_Handler
-{
-
- public $objType = null;
-
- /**
- * Cache for property information from generic getter/setter
- * Preloaded with names which should not use with generic getter/setter
- *
- * @var array
- */
- private $_property_info = array('AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0,
- 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0,
- 'TemplateVars' => 0,);#
-
- private $resolvedProperties = array();
-
- /**
- * Call external Method
- *
- * @param \Smarty_Internal_Data $data
- * @param string $name external method names
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args)
- {
- /* @var Smarty $data ->smarty */
- $smarty = isset($data->smarty) ? $data->smarty : $data;
- if (!isset($smarty->ext->$name)) {
- $class = 'Smarty_Internal_Method_' . ucfirst($name);
- if (preg_match('/^(set|get)([A-Z].*)$/', $name, $match)) {
- if (!isset($this->_property_info[$prop = $match[2]])) {
- // convert camel case to underscored name
- $this->resolvedProperties[$prop] = $pn = strtolower(join('_',
- preg_split('/([A-Z][^A-Z]*)/', $prop, - 1,
- PREG_SPLIT_NO_EMPTY |
- PREG_SPLIT_DELIM_CAPTURE)));
- $this->_property_info[$prop] = property_exists($data, $pn) ? 1 :
- ($data->_objType == 2 && property_exists($smarty, $pn) ? 2 : 0);
- }
- if ($this->_property_info[$prop]) {
- $pn = $this->resolvedProperties[$prop];
- if ($match[1] == 'get') {
- return $this->_property_info[$prop] == 1 ? $data->$pn : $data->smarty->$pn;
- } else {
- return $this->_property_info[$prop] == 1 ? $data->$pn = $args[0] :
- $data->smarty->$pn = $args[0];
- }
- } elseif (!class_exists($class)) {
- throw new SmartyException("property '$pn' does not exist.");
- }
- }
- if (class_exists($class)) {
- $callback = array($smarty->ext->$name = new $class(), $name);
- }
- } else {
- $callback = array($smarty->ext->$name, $name);
- }
- array_unshift($args, $data);
- if (isset($callback) && $callback[0]->objMap | $data->_objType) {
- return call_user_func_array($callback, $args);
- }
- return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
- }
-
- /**
- * set extension property
- *
- * @param string $property_name property name
- * @param mixed $value value
- *
- * @throws SmartyException
- */
- public function __set($property_name, $value)
- {
- $this->$property_name = $value;
- }
-
- /**
- * get extension object
- *
- * @param string $property_name property name
- *
- * @return mixed|Smarty_Template_Cached
- * @throws SmartyException
- */
- public function __get($property_name)
- {
- // object properties of runtime template extensions will start with '_'
- if ($property_name[0] == '_') {
- $class = 'Smarty_Internal_Runtime_' . ucfirst(substr($property_name, 1));
- } else {
- $class = 'Smarty_Internal_Method_' . ucfirst($property_name);
- }
- if (class_exists($class)) {
- return $this->$property_name = new $class();
- }
- return $this;
- }
-
- /**
- * Call error handler for undefined method
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
- }
-
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php b/library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
deleted file mode 100644
index b739f0e3e..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/**
- * Smarty Method AddAutoloadFilters
- *
- * Smarty::addAutoloadFilters() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AddAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters
-{
-
- /**
- * Add autoload filters
- *
- * @api Smarty::setAutoloadFilters()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array $filters filters to load automatically
- * @param string $type "pre", "output", … specify the
- * filter type to set. Defaults to
- * none treating $filters' keys as
- * the appropriate types
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function addAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if ($type !== null) {
- $this->_checkFilterType($type);
- if (!empty($smarty->autoload_filters[$type])) {
- $smarty->autoload_filters[$type] = array_merge($smarty->autoload_filters[$type], (array) $filters);
- } else {
- $smarty->autoload_filters[$type] = (array) $filters;
- }
- } else {
- foreach ((array) $filters as $type => $value) {
- $this->_checkFilterType($type);
- if (!empty($smarty->autoload_filters[$type])) {
- $smarty->autoload_filters[$type] = array_merge($smarty->autoload_filters[$type], (array) $value);
- } else {
- $smarty->autoload_filters[$type] = (array) $value;
- }
- }
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php b/library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
deleted file mode 100644
index 55d2c9e71..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method AddDefaultModifiers
- *
- * Smarty::addDefaultModifiers() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AddDefaultModifiers
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Add default modifiers
- *
- * @api Smarty::addDefaultModifiers()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array|string $modifiers modifier or list of modifiers
- * to add
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function addDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (is_array($modifiers)) {
- $this->default_modifiers = array_merge($smarty->default_modifiers, $modifiers);
- } else {
- $smarty->default_modifiers[] = $modifiers;
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_append.php b/library/Smarty/libs/sysplugins/smarty_internal_method_append.php
deleted file mode 100644
index 43df8803f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_append.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/**
- * Smarty Method Append
- *
- * Smarty::append() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_Append
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * appends values to template variables
- *
- * @api Smarty::append()
- * @link http://www.smarty.net/docs/en/api.append.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to append
- * @param bool $merge flag if array elements shall be merged
- * @param bool $nocache if true any output of this variable will
- * be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function append(Smarty_Internal_Data $data, $tpl_var, $value = null, $merge = false, $nocache = false)
- {
- if (is_array($tpl_var)) {
- // $tpl_var is an array, ignore $value
- foreach ($tpl_var as $_key => $_val) {
- if ($_key != '') {
- $this->append($data, $_key, $_val, $merge, $nocache);
- }
- }
- } else {
- if ($tpl_var != '' && isset($value)) {
- if (!isset($data->tpl_vars[$tpl_var])) {
- $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false);
- if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
- $data->tpl_vars[$tpl_var] = new Smarty_Variable(null, $nocache);
- } else {
- $data->tpl_vars[$tpl_var] = clone $tpl_var_inst;
- }
- }
- if (!(is_array($data->tpl_vars[$tpl_var]->value) ||
- $data->tpl_vars[$tpl_var]->value instanceof ArrayAccess)
- ) {
- settype($data->tpl_vars[$tpl_var]->value, 'array');
- }
- if ($merge && is_array($value)) {
- foreach ($value as $_mkey => $_mval) {
- $data->tpl_vars[$tpl_var]->value[$_mkey] = $_mval;
- }
- } else {
- $data->tpl_vars[$tpl_var]->value[] = $value;
- }
- }
- if ($data->_objType == 2 && $data->scope) {
- $data->ext->_updateScope->updateScope($data, $tpl_var);
- }
- }
- return $data;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php b/library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
deleted file mode 100644
index 124bb803a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * Smarty Method AppendByRef
- *
- * Smarty::appendByRef() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AppendByRef
-{
-
- /**
- * appends values to template variables by reference
- *
- * @api Smarty::appendByRef()
- * @link http://www.smarty.net/docs/en/api.append.by.ref.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param bool $merge flag if array elements shall be merged
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false)
- {
- if ($tpl_var != '' && isset($value)) {
- if (!isset($data->tpl_vars[$tpl_var])) {
- $data->tpl_vars[$tpl_var] = new Smarty_Variable();
- }
- if (!is_array($data->tpl_vars[$tpl_var]->value)) {
- settype($data->tpl_vars[$tpl_var]->value, 'array');
- }
- if ($merge && is_array($value)) {
- foreach ($value as $_key => $_val) {
- $data->tpl_vars[$tpl_var]->value[$_key] = &$value[$_key];
- }
- } else {
- $data->tpl_vars[$tpl_var]->value[] = &$value;
- }
- if ($data->_objType == 2 && $data->scope) {
- $data->ext->_updateScope->updateScope($data, $tpl_var);
- }
- }
- return $data;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php b/library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
deleted file mode 100644
index a97125e30..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * Smarty Method AssignByRef
- *
- * Smarty::assignByRef() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AssignByRef
-{
-
- /**
- * assigns values to template variables by reference
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $tpl_var the template variable name
- * @param $value
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $nocache)
- {
- if ($tpl_var != '') {
- $data->tpl_vars[$tpl_var] = new Smarty_Variable(null, $nocache);
- $data->tpl_vars[$tpl_var]->value = &$value;
- if ($data->_objType == 2 && $data->scope) {
- $data->ext->_updateScope->updateScope($data, $tpl_var);
- }
- }
- return $data;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php b/library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
deleted file mode 100644
index 23b13b3a2..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method AssignGlobal
- *
- * Smarty::assignGlobal() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_AssignGlobal
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * assigns a global Smarty variable
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName the global variable name
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function assignGlobal(Smarty_Internal_Data $data, $varName, $value = null, $nocache = false)
- {
- if ($varName != '') {
- Smarty::$global_tpl_vars[$varName] = new Smarty_Variable($value, $nocache);
- $ptr = $data;
- while ($ptr->_objType == 2) {
- $ptr->tpl_vars[$varName] = clone Smarty::$global_tpl_vars[$varName];
- $ptr = $ptr->parent;
- }
- }
- return $data;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php b/library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
deleted file mode 100644
index 6ae0af15f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearAllCache
- *
- * Smarty::clearAllCache() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearAllCache
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Empty cache folder
- *
- * @api Smarty::clearAllCache()
- * @link http://www.smarty.net/docs/en/api.clear.all.cache.tpl
- *
- * @param \Smarty $smarty
- * @param integer $exp_time expiration time
- * @param string $type resource type
- *
- * @return integer number of cache files deleted
- */
- public function clearAllCache(Smarty $smarty, $exp_time = null, $type = null)
- {
- // load cache resource and call clearAll
- $_cache_resource = Smarty_CacheResource::load($smarty, $type);
- $_cache_resource->invalidLoadedCache($smarty);
- return $_cache_resource->clearAll($smarty, $exp_time);
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php b/library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php
deleted file mode 100644
index 3a7bd1e47..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearassign.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearAssign
- *
- * Smarty::clearAssign() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearAssign
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * clear the given assigned template variable(s).
- *
- * @api Smarty::clearAssign()
- * @link http://www.smarty.net/docs/en/api.clear.assign.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string|array $tpl_var the template variable(s) to clear
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function clearAssign(Smarty_Internal_Data $data, $tpl_var)
- {
- if (is_array($tpl_var)) {
- foreach ($tpl_var as $curr_var) {
- unset($data->tpl_vars[$curr_var]);
- }
- } else {
- unset($data->tpl_vars[$tpl_var]);
- }
-
- return $data;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php b/library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php
deleted file mode 100644
index 063c57cde..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcache.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearCache
- *
- * Smarty::clearCache() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearCache
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Empty cache for a specific template
- *
- * @api Smarty::clearCache()
- * @link http://www.smarty.net/docs/en/api.clear.cache.tpl
- *
- * @param \Smarty $smarty
- * @param string $template_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
- * @param string $type resource type
- *
- * @return integer number of cache files deleted
- */
- public function clearCache(Smarty $smarty, $template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
- {
- // load cache resource and call clear
- $_cache_resource = Smarty_CacheResource::load($smarty, $type);
- $_cache_resource->invalidLoadedCache($smarty);
- return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time);
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php b/library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
deleted file mode 100644
index cce8553f5..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearCompiledTemplate
- *
- * Smarty::clearCompiledTemplate() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearCompiledTemplate
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Delete compiled template file
- *
- * @api Smarty::clearCompiledTemplate()
- * @link http://www.smarty.net/docs/en/api.clear.compiled.template.tpl
- *
- * @param \Smarty $smarty
- * @param string $resource_name template name
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
- *
- * @return integer number of template files deleted
- */
- public function clearCompiledTemplate(Smarty $smarty, $resource_name = null, $compile_id = null, $exp_time = null)
- {
-
- $_compile_dir = $smarty->getCompileDir();
- if ($_compile_dir == '/') { //We should never want to delete this!
- return 0;
- }
- $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
- $_dir_sep = $smarty->use_sub_dirs ? DS : '^';
- if (isset($resource_name)) {
- $_save_stat = $smarty->caching;
- $smarty->caching = false;
- /* @var Smarty_Internal_Template $tpl */
- $tpl = new $smarty->template_class($resource_name, $smarty);
- $smarty->caching = $_save_stat;
- if ($tpl->source->exists) {
- // remove from compileds cache
- $tpl->source->compileds = array();
- $_resource_part_1 = basename(str_replace('^', DS, $tpl->compiled->filepath));
- $_resource_part_1_length = strlen($_resource_part_1);
- } else {
- return 0;
- }
- $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
- $_resource_part_2_length = strlen($_resource_part_2);
- }
- $_dir = $_compile_dir;
- if ($smarty->use_sub_dirs && isset($_compile_id)) {
- $_dir .= $_compile_id . $_dir_sep;
- }
- if (isset($_compile_id)) {
- $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
- $_compile_id_part_length = strlen($_compile_id_part);
- }
- $_count = 0;
- try {
- $_compileDirs = new RecursiveDirectoryIterator($_dir);
- // NOTE: UnexpectedValueException thrown for PHP >= 5.3
- }
- catch (Exception $e) {
- return 0;
- }
- $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
- foreach ($_compile as $_file) {
- if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
- continue;
- }
-
- $_filepath = (string) $_file;
-
- if ($_file->isDir()) {
- if (!$_compile->isDot()) {
- // delete folder if empty
- @rmdir($_file->getPathname());
- }
- } else {
- $unlink = false;
- if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) &&
- $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) &&
- (!isset($resource_name) || (isset($_filepath[$_resource_part_1_length]) &&
- substr_compare($_filepath, $_resource_part_1, - $_resource_part_1_length,
- $_resource_part_1_length) == 0) ||
- (isset($_filepath[$_resource_part_2_length]) &&
- substr_compare($_filepath, $_resource_part_2, - $_resource_part_2_length,
- $_resource_part_2_length) == 0))
- ) {
- if (isset($exp_time)) {
- if (time() - @filemtime($_filepath) >= $exp_time) {
- $unlink = true;
- }
- } else {
- $unlink = true;
- }
- }
-
- if ($unlink && @unlink($_filepath)) {
- $_count ++;
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate($_filepath);
- }
- }
- }
- }
- // clear template objects cache
- $smarty->_cache['isCached'] = array();
- if (isset($smarty->ext->_subtemplate)) {
- $smarty->ext->_subtemplate->tplObjects = array();
- }
- return $_count;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php b/library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
deleted file mode 100644
index 9c6167f4d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method ClearConfig
- *
- * Smarty::clearConfig() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ClearConfig
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * clear a single or all config variables
- *
- * @api Smarty::clearConfig()
- * @link http://www.smarty.net/docs/en/api.clear.config.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string|null $name variable name or null
- *
- * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
- */
- public function clearConfig(Smarty_Internal_Data $data, $name = null)
- {
- if (isset($name)) {
- unset($data->config_vars[$name]);
- } else {
- $data->config_vars = array();
- }
- return $data;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php b/library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
deleted file mode 100644
index 4d6be65c4..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * Smarty Method CompileAllConfig
- *
- * Smarty::compileAllConfig() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_CompileAllConfig extends Smarty_Internal_Method_CompileAllTemplates
-{
-
- /**
- * Compile all config files
- *
- * @api Smarty::compileAllConfig()
- *
- * @param \Smarty $smarty
- * @param string $extension file extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit
- * @param int $max_errors
- *
- * @return integer number of template files recompiled
- */
- public function compileAllConfig(Smarty $smarty, $extension = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null)
- {
- return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true);
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php b/library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
deleted file mode 100644
index 685fc0c0d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/**
- * Smarty Method CompileAllTemplates
- *
- * Smarty::compileAllTemplates() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_CompileAllTemplates
-{
- /**
- * Valid for Smarty object
- *
- * @var int
- */
- public $objMap = 1;
-
- /**
- * Compile all template files
- *
- * @api Smarty::compileAllTemplates()
- *
- * @param \Smarty $smarty
- * @param string $extension file extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit
- * @param int $max_errors
- *
- * @return integer number of template files recompiled
- */
- public function compileAllTemplates(Smarty $smarty, $extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
- {
- return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors);
- }
-
- /**
- * Compile all template or config files
- *
- * @param \Smarty $smarty
- * @param string $extension template file name extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit set maximum execution time
- * @param int $max_errors set maximum allowed errors
- * @param bool $isConfig flag true if called for config files
- *
- * @return int number of template files compiled
- */
- protected function compileAll(Smarty $smarty, $extension, $force_compile, $time_limit, $max_errors, $isConfig = false)
- {
- // switch off time limit
- if (function_exists('set_time_limit')) {
- @set_time_limit($time_limit);
- }
- $_count = 0;
- $_error_count = 0;
- $sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir();
- // loop over array of source directories
- foreach ($sourceDir as $_dir) {
- $_dir_1 = new RecursiveDirectoryIterator($_dir);
- $_dir_2 = new RecursiveIteratorIterator($_dir_1);
- foreach ($_dir_2 as $_fileinfo) {
- $_file = $_fileinfo->getFilename();
- if (substr(basename($_fileinfo->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
- continue;
- }
- if (!substr_compare($_file, $extension, - strlen($extension)) == 0) {
- continue;
- }
- if ($_fileinfo->getPath() == !substr($_dir, 0, - 1)) {
- $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
- }
- echo "\n<br>", $_dir, '---', $_file;
- flush();
- $_start_time = microtime(true);
- $_smarty = clone $smarty;
- $_smarty->force_compile = $force_compile;
- try {
- /* @var Smarty_Internal_Template $_tpl */
- $_tpl = new $smarty->template_class($_file, $_smarty);
- $_tpl->caching = Smarty::CACHING_OFF;
- $_tpl->source = $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl);
- if ($_tpl->mustCompile()) {
- $_tpl->compileTemplateSource();
- $_count ++;
- echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
- flush();
- } else {
- echo ' is up to date';
- flush();
- }
- }
- catch (Exception $e) {
- echo "\n<br> ------>Error: ", $e->getMessage(), "<br><br>\n";
- $_error_count ++;
- }
- // free memory
- unset($_tpl);
- $_smarty->_cache['template_objects'] = array();
- if ($max_errors !== null && $_error_count == $max_errors) {
- echo "\n<br><br>too many errors\n";
- exit();
- }
- }
- }
- echo "\n<br>";
- return $_count;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_configload.php b/library/Smarty/libs/sysplugins/smarty_internal_method_configload.php
deleted file mode 100644
index 7b99e35c6..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_configload.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/**
- * Smarty Method ConfigLoad
- *
- * Smarty::configLoad() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_ConfigLoad
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * load a config file, optionally load just selected sections
- *
- * @api Smarty::configLoad()
- * @link http://www.smarty.net/docs/en/api.config.load.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $config_file filename
- * @param mixed $sections array of section names, single
- * section or null
- *
- * @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function configLoad(Smarty_Internal_Data $data, $config_file, $sections = null)
- {
- $this->_loadConfigFile($data, $config_file, $sections, 0);
- return $data;
- }
-
- /**
- * load a config file, optionally load just selected sections
- *
- * @api Smarty::configLoad()
- * @link http://www.smarty.net/docs/en/api.config.load.tpl
- *
- * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
- * @param string $config_file filename
- * @param mixed $sections array of section names, single
- * section or null
- * @param int $scope scope into which config variables
- * shall be loaded
- *
- * @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0)
- {
- /* @var \Smarty $smarty */
- $smarty = isset($data->smarty) ? $data->smarty : $data;
- /* @var \Smarty_Internal_Template $confObj */
- $confObj = new Smarty_Internal_Template($config_file, $smarty, $data);
- $confObj->caching = Smarty::CACHING_OFF;
- $confObj->source = Smarty_Template_Config::load($confObj);
- $confObj->source->config_sections = $sections;
- $confObj->source->scope = $scope;
- $confObj->compiled = Smarty_Template_Compiled::load($confObj);
- $confObj->compiled->render($confObj);
- if ($data->_objType == 2) {
- $data->compiled->file_dependency[$confObj->source->uid] =
- array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type);
- }
- }
-
- /**
- * load config variables into template object
- *
- * @param \Smarty_Internal_Template $tpl
- * @param array $_config_vars
- *
- */
- public function _loadConfigVars(Smarty_Internal_Template $tpl, $_config_vars)
- {
- $this->_assignConfigVars($tpl->parent, $tpl, $_config_vars);
- $scope = $tpl->source->scope;
- if (!$scope && !$tpl->scope) {
- return;
- }
- foreach (array($scope, $tpl->scope) as $s) {
- $s = ($bubble_up = $s >= Smarty::SCOPE_BUBBLE_UP) ? $s - Smarty::SCOPE_BUBBLE_UP : $s;
- if ($bubble_up && $s) {
- $ptr = $tpl->parent->parent;
- if (isset($ptr)) {
- $this->_assignConfigVars($ptr, $tpl, $_config_vars);
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_PARENT) {
- continue;
- }
- while (isset($ptr) && $ptr->_objType == 2) {
- $this->_assignConfigVars($ptr, $tpl, $_config_vars);
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_TPL_ROOT) {
- continue;
- } elseif ($s == Smarty::SCOPE_SMARTY) {
- $this->_assignConfigVars($tpl->smarty, $tpl, $_config_vars);
- } elseif ($s == Smarty::SCOPE_GLOBAL) {
- $this->_assignConfigVars($tpl->smarty, $tpl, $_config_vars);
- } elseif ($s == Smarty::SCOPE_ROOT) {
- while (isset($ptr->parent)) {
- $ptr = $ptr->parent;
- }
- $this->_assignConfigVars($ptr, $tpl, $_config_vars);
- }
- }
- }
- }
-
- /**
- * Assign all config variables in given scope
- *
- * @param \Smarty_Internal_Data $scope_ptr
- * @param \Smarty_Internal_Template $tpl
- * @param array $_config_vars
- */
- public function _assignConfigVars(Smarty_Internal_Data $scope_ptr, Smarty_Internal_Template $tpl, $_config_vars)
- {
- // copy global config vars
- foreach ($_config_vars['vars'] as $variable => $value) {
- if ($tpl->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
- $scope_ptr->config_vars[$variable] = $value;
- } else {
- $scope_ptr->config_vars[$variable] =
- array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
- }
- }
- // scan sections
- $sections = $tpl->source->config_sections;
- if (!empty($sections)) {
- foreach ((array) $sections as $tpl_section) {
- if (isset($_config_vars['sections'][$tpl_section])) {
- foreach ($_config_vars['sections'][$tpl_section]['vars'] as $variable => $value) {
- if ($tpl->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
- $scope_ptr->config_vars[$variable] = $value;
- } else {
- $scope_ptr->config_vars[$variable] =
- array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
- }
- }
- }
- }
- }
- }
-
- /**
- * gets a config variable value
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $varName the name of the config variable
- * @param bool $errorEnable
- *
- * @return mixed the value of the config variable
- */
- public function _getConfigVariable(Smarty_Internal_Template $tpl, $varName, $errorEnable = true)
- {
- $_ptr = $tpl;
- while ($_ptr !== null) {
- if (isset($_ptr->config_vars[$varName])) {
- // found it, return it
- return $_ptr->config_vars[$varName];
- }
- // not found, try at parent
- $_ptr = $_ptr->parent;
- }
- if ($tpl->smarty->error_unassigned && $errorEnable) {
- // force a notice
- $x = $$varName;
- }
- return null;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php b/library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php
deleted file mode 100644
index 600bc777c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_createdata.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method CreateData
- *
- * Smarty::createData() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_CreateData
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * creates a data object
- *
- * @api Smarty::createData()
- * @link http://www.smarty.net/docs/en/api.create.data.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty $parent next higher level of Smarty
- * variables
- * @param string $name optional data block name
- *
- * @returns Smarty_Data data object
- */
- public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null)
- {
- /* @var Smarty $smarty */
- $smarty = isset($this->smarty) ? $this->smarty : $obj;
- $dataObj = new Smarty_Data($parent, $smarty, $name);
- if ($smarty->debugging) {
- Smarty_Internal_Debug::register_data($dataObj);
- }
- return $dataObj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php b/library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
deleted file mode 100644
index e1a7801f7..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetAutoloadFilters
- *
- * Smarty::getAutoloadFilters() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters
-{
-
- /**
- * Get autoload filters
- *
- * @api Smarty::getAutoloadFilters()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type type of filter to get auto loads
- * for. Defaults to all autoload
- * filters
- *
- * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type
- * was specified
- */
- public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if ($type !== null) {
- $this->_checkFilterType($type);
- return isset($smarty->autoload_filters[$type]) ? $smarty->autoload_filters[$type] : array();
- }
- return $smarty->autoload_filters;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php b/library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
deleted file mode 100644
index b15672168..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetConfigVars
- *
- * Smarty::getConfigVars() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetConfigVars
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * Returns a single or all config variables
- *
- * @api Smarty::getConfigVars()
- * @link http://www.smarty.net/docs/en/api.get.config.vars.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varname variable name or null
- * @param bool $search_parents include parent templates?
- *
- * @return mixed variable value or or array of variables
- */
- public function getConfigVars(Smarty_Internal_Data $data, $varname = null, $search_parents = true)
- {
- $_ptr = $data;
- $var_array = array();
- while ($_ptr !== null) {
- if (isset($varname)) {
- if (isset($_ptr->config_vars[$varname])) {
- return $_ptr->config_vars[$varname];
- }
- } else {
- $var_array = array_merge($_ptr->config_vars, $var_array);
- }
- // not found, try at parent
- if ($search_parents) {
- $_ptr = $_ptr->parent;
- } else {
- $_ptr = null;
- }
- }
- if (isset($varname)) {
- return '';
- } else {
- return $var_array;
- }
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php b/library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
deleted file mode 100644
index 3c3432ce1..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetDebugTemplate
- *
- * Smarty::getDebugTemplate() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetDebugTemplate
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * return name of debugging template
- *
- * @api Smarty::getDebugTemplate()
-
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- *
- * @return string
- */
- public function getDebugTemplate(Smarty_Internal_TemplateBase $obj)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- return $smarty->debug_tpl;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php b/library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
deleted file mode 100644
index 32e0cc413..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetDefaultModifiers
- *
- * Smarty::getDefaultModifiers() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetDefaultModifiers
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Get default modifiers
- *
- * @api Smarty::getDefaultModifiers()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- *
- * @return array list of default modifiers
- */
- public function getDefaultModifiers(Smarty_Internal_TemplateBase $obj)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- return $smarty->default_modifiers;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php b/library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
deleted file mode 100644
index be0c0dba2..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetRegisteredObject
- *
- * Smarty::getRegisteredObject() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetRegisteredObject
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * return a reference to a registered object
- *
- * @api Smarty::getRegisteredObject()
- * @link http://www.smarty.net/docs/en/api.get.registered.object.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $object_name object name
- *
- * @return object
- * @throws \SmartyException if no such object is found
- */
- public function getRegisteredObject(Smarty_Internal_TemplateBase $obj, $object_name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (!isset($smarty->registered_objects[$object_name])) {
- throw new SmartyException("'$object_name' is not a registered object");
- }
- if (!is_object($smarty->registered_objects[$object_name][0])) {
- throw new SmartyException("registered '$object_name' is not an object");
- }
- return $smarty->registered_objects[$object_name][0];
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php b/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php
deleted file mode 100644
index dd9e8d1ca..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetTags
- *
- * Smarty::getTags() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetTags
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Return array of tag/attributes of all tags used by an template
- *
- * @api Smarty::getTags()
- * @link http://www.smarty.net/docs/en/api.get.tags.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param null|string|Smarty_Internal_Template $template
- *
- * @return array of tag/attributes
- * @throws \SmartyException
- */
- public function getTags(Smarty_Internal_TemplateBase $obj, $template = null)
- {
- /* @var Smarty $smarty */
- $smarty = isset($this->smarty) ? $this->smarty : $obj;
- if ($obj->_objType == 2 && !isset($template)) {
- $tpl = clone $obj;
- } elseif (isset($template) && $template->_objType == 2) {
- $tpl = clone $template;
- } elseif (isset($template) && is_string($template)) {
- /* @var Smarty_Internal_Template $tpl */
- $tpl = new $smarty->template_class($template, $smarty);
- // checks if template exists
- if (!$tpl->source->exists) {
- throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'");
- }
- }
- if (isset($tpl)) {
- $tpl->smarty = clone $tpl->smarty;
- $tpl->smarty->_cache['get_used_tags'] = true;
- $tpl->_cache['used_tags'] = array();
- $tpl->smarty->merge_compiled_includes = false;
- $tpl->smarty->disableSecurity();
- $tpl->caching = false;
- $tpl->loadCompiler();
- $tpl->compiler->compileTemplate($tpl);
- return $tpl->_cache['used_tags'];
- }
- throw new SmartyException("Missing template specification");
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
deleted file mode 100644
index 235bece46..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-/**
- * Smarty Method GetTemplateVars
- *
- * Smarty::getTemplateVars() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_GetTemplateVars
-{
- /**
- * Valid for all objects
- *
- * @var int
- */
- public $objMap = 7;
-
- /**
- * Returns a single or all template variables
- *
- * @api Smarty::getTemplateVars()
- * @link http://www.smarty.net/docs/en/api.get.template.vars.tpl
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName variable name or null
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents include parent templates?
- *
- * @return mixed variable value or or array of variables
- */
- public function getTemplateVars(Smarty_Internal_Data $data, $varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
- {
- if (isset($varName)) {
- $_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false);
- if (is_object($_var)) {
- return $_var->value;
- } else {
- return null;
- }
- } else {
- $_result = array();
- if ($_ptr === null) {
- $_ptr = $data;
- }
- while ($_ptr !== null) {
- foreach ($_ptr->tpl_vars AS $key => $var) {
- if (!array_key_exists($key, $_result)) {
- $_result[$key] = $var->value;
- }
- }
- // not found, try at parent
- if ($searchParents) {
- $_ptr = $_ptr->parent;
- } else {
- $_ptr = null;
- }
- }
- if ($searchParents && isset(Smarty::$global_tpl_vars)) {
- foreach (Smarty::$global_tpl_vars AS $key => $var) {
- if (!array_key_exists($key, $_result)) {
- $_result[$key] = $var->value;
- }
- }
- }
- return $_result;
- }
- }
-
- /**
- * gets the object of a Smarty variable
- *
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
- * @param string $varName the name of the Smarty variable
- * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
- * @param bool $searchParents search also in parent data
- * @param bool $errorEnable
- *
- * @return \Smarty_Variable
- */
- public function _getVariable(Smarty_Internal_Data $data, $varName, Smarty_Internal_Data $_ptr = null, $searchParents = true, $errorEnable = true)
- {
- if ($_ptr === null) {
- $_ptr = $data;
- }
- while ($_ptr !== null) {
- if (isset($_ptr->tpl_vars[$varName])) {
- // found it, return it
- return $_ptr->tpl_vars[$varName];
- }
- // not found, try at parent
- if ($searchParents) {
- $_ptr = $_ptr->parent;
- } else {
- $_ptr = null;
- }
- }
- if (isset(Smarty::$global_tpl_vars[$varName])) {
- // found it, return it
- return Smarty::$global_tpl_vars[$varName];
- }
- /* @var \Smarty $smarty */
- $smarty = isset($data->smarty) ? $data->smarty : $data;
- if ($smarty->error_unassigned && $errorEnable) {
- // force a notice
- $x = $$varName;
- }
-
- return new Smarty_Undefined_Variable;
- }
-
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php b/library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
deleted file mode 100644
index 7fb11179f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/**
- * Smarty Method LoadFilter
- *
- * Smarty::loadFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_LoadFilter
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Valid filter types
- *
- * @var array
- */
- private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
-
- /**
- * load a filter of specified type and name
- *
- * @api Smarty::loadFilter()
- *
- * @link http://www.smarty.net/docs/en/api.load.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param string $name filter name
- *
- * @return bool
- * @throws SmartyException if filter could not be loaded
- */
- public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $this->_checkFilterType($type);
- $_plugin = "smarty_{$type}filter_{$name}";
- $_filter_name = $_plugin;
- if (is_callable($_plugin)) {
- $smarty->registered_filters[$type][$_filter_name] = $_plugin;
- return true;
- }
- if ($smarty->loadPlugin($_plugin)) {
- if (class_exists($_plugin, false)) {
- $_plugin = array($_plugin, 'execute');
- }
- if (is_callable($_plugin)) {
- $smarty->registered_filters[$type][$_filter_name] = $_plugin;
- return true;
- }
- }
- throw new SmartyException("{$type}filter \"{$name}\" not found or callable");
- }
-
- /**
- * Check if filter type is valid
- *
- * @param string $type
- *
- * @throws \SmartyException
- */
- public function _checkFilterType($type)
- {
- if (!isset($this->filterTypes[$type])) {
- throw new SmartyException("Illegal filter type \"{$type}\"");
- }
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php b/library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
deleted file mode 100644
index c153f55f0..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/**
- * Smarty Extension Loadplugin
- *
- * $smarty->loadPlugin() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_LoadPlugin
-{
- /**
- * Cache of searched plugin files
- *
- * @var array
- */
- public $plugin_files = array();
-
- /**
- * Takes unknown classes and loads plugin files for them
- * class name format: Smarty_PluginType_PluginName
- * plugin filename format: plugintype.pluginname.php
- *
- * @param \Smarty $smarty
- * @param string $plugin_name class plugin name to load
- * @param bool $check check if already loaded
- *
- * @return bool|string
- * @throws \SmartyException
- */
- public function loadPlugin(Smarty $smarty, $plugin_name, $check)
- {
- // if function or class exists, exit silently (already loaded)
- if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) {
- return true;
- }
- if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) {
- throw new SmartyException("plugin {$plugin_name} is not a valid name format");
- }
- if (!empty($match[2])) {
- $file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php';
- if (isset($this->plugin_files[$file])) {
- if ($this->plugin_files[$file] !== false) {
- return $this->plugin_files[$file];
- } else {
- return false;
- }
- } else {
- if (is_file($file)) {
- $this->plugin_files[$file] = $file;
- require_once($file);
- return $file;
- } else {
- $this->plugin_files[$file] = false;
- return false;
- }
- }
- }
- // plugin filename is expected to be: [type].[name].php
- $_plugin_filename = "{$match[1]}.{$match[4]}.php";
- $_lower_filename = strtolower($_plugin_filename);
- if (isset($this->plugin_files)) {
- if (isset($this->plugin_files['plugins_dir'][$_lower_filename])) {
- if (!$smarty->use_include_path || $this->plugin_files['plugins_dir'][$_lower_filename] !== false) {
- return $this->plugin_files['plugins_dir'][$_lower_filename];
- }
- }
- if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) {
- unset($this->plugin_files['include_path']);
- } else {
- if (isset($this->plugin_files['include_path'][$_lower_filename])) {
- return $this->plugin_files['include_path'][$_lower_filename];
- }
- }
- }
- $_file_names = array($_plugin_filename);
- if ($_lower_filename != $_plugin_filename) {
- $_file_names[] = $_lower_filename;
- }
- $_p_dirs = $smarty->getPluginsDir();
- if (!isset($this->plugin_files['plugins_dir'][$_lower_filename])) {
- // loop through plugin dirs and find the plugin
- foreach ($_p_dirs as $_plugin_dir) {
- foreach ($_file_names as $name) {
- $file = $_plugin_dir . $name;
- if (is_file($file)) {
- $this->plugin_files['plugins_dir'][$_lower_filename] = $file;
- require_once($file);
- return $file;
- }
- $this->plugin_files['plugins_dir'][$_lower_filename] = false;
- }
- }
- }
- if ($smarty->use_include_path) {
- foreach ($_file_names as $_file_name) {
- // try PHP include_path
- $file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty);
- $this->plugin_files['include_path'][$_lower_filename] = $file;
- if ($file !== false) {
- require_once($file);
- return $file;
- }
- }
- }
- // no plugin loaded
- return false;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php b/library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
deleted file mode 100644
index f28a68e6d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnloadFilter
- *
- * Smarty_Internal_Template::mustCompile() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_MustCompile
-{
- /**
- * Valid for template object
- *
- * @var int
- */
- public $objMap = 2;
-
- /**
- * Returns if the current template must be compiled by the Smarty compiler
- * It does compare the timestamps of template source and the compiled templates and checks the force compile
- * configuration
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @return bool
- * @throws \SmartyException
- */
- public function mustCompile(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->exists) {
- if (isset($_template->parent) && $_template->parent->_objType == 2) {
- $parent_resource = " in '$_template->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
- }
- if ($_template->mustCompile === null) {
- $_template->mustCompile = (!$_template->source->handler->uncompiled &&
- ($_template->smarty->force_compile || $_template->source->handler->recompiled || !$_template->compiled->exists ||
- ($_template->smarty->compile_check && $_template->compiled->getTimeStamp() < $_template->source->getTimeStamp())));
- }
-
- return $_template->mustCompile;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
deleted file mode 100644
index 55c5090ac..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterCacheResource
- *
- * Smarty::registerCacheResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterCacheResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::registerCacheResource()
- * @link http://www.smarty.net/docs/en/api.register.cacheresource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $name name of resource type
- * @param \Smarty_CacheResource $resource_handler
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function registerCacheResource(Smarty_Internal_TemplateBase $obj, $name, Smarty_CacheResource $resource_handler)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $smarty->registered_cache_resources[$name] = $resource_handler;
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php
deleted file mode 100644
index d2e5e20bb..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerclass.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterClass
- *
- * Smarty::registerClass() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterClass
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers static classes to be used in templates
- *
- * @api Smarty::registerClass()
- * @link http://www.smarty.net/docs/en/api.register.class.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $class_name
- * @param string $class_impl the referenced PHP class to
- * register
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerClass(Smarty_Internal_TemplateBase $obj, $class_name, $class_impl)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- // test if exists
- if (!class_exists($class_impl)) {
- throw new SmartyException("Undefined class '$class_impl' in register template class");
- }
- // register the class
- $smarty->registered_classes[$class_name] = $class_impl;
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
deleted file mode 100644
index 370aa38dc..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterDefaultConfigHandler
- *
- * Smarty::registerDefaultConfigHandler() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterDefaultConfigHandler
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Register config default handler
- *
- * @api Smarty::registerDefaultConfigHandler()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param callable $callback class/method name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if $callback is not callable
- */
- public function registerDefaultConfigHandler(Smarty_Internal_TemplateBase $obj, $callback)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (is_callable($callback)) {
- $smarty->default_config_handler_func = $callback;
- } else {
- throw new SmartyException("Default config handler not callable");
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
deleted file mode 100644
index 80b801ce5..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterDefaultPluginHandler
- *
- * Smarty::registerDefaultPluginHandler() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterDefaultPluginHandler
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a default plugin handler
- *
- * @api Smarty::registerDefaultPluginHandler()
- * @link http://www.smarty.net/docs/en/api.register.default.plugin.handler.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param callable $callback class/method name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if $callback is not callable
- */
- public function registerDefaultPluginHandler(Smarty_Internal_TemplateBase $obj, $callback)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (is_callable($callback)) {
- $smarty->default_plugin_handler_func = $callback;
- } else {
- throw new SmartyException("Default plugin handler '$callback' not callable");
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
deleted file mode 100644
index 40979e7a6..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterDefaultTemplateHandler
- *
- * Smarty::registerDefaultTemplateHandler() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterDefaultTemplateHandler
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Register template default handler
- *
- * @api Smarty::registerDefaultTemplateHandler()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param callable $callback class/method name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if $callback is not callable
- */
- public function registerDefaultTemplateHandler(Smarty_Internal_TemplateBase $obj, $callback)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (is_callable($callback)) {
- $smarty->default_template_handler_func = $callback;
- } else {
- throw new SmartyException("Default template handler not callable");
- }
- return $obj;
- }
-
- /**
- * get default content from template or config resource handler
- *
- * @param Smarty_Template_Source $source
- */
- public static function _getDefaultTemplate(Smarty_Template_Source $source)
- {
- if ($source->isConfig) {
- $default_handler = $source->smarty->default_config_handler_func;
- } else {
- $default_handler = $source->smarty->default_template_handler_func;
- }
- $_content = $_timestamp = null;
- $_return = call_user_func_array($default_handler, array($source->type, $source->name, &$_content, &$_timestamp,
- $source->smarty));
- if (is_string($_return)) {
- $source->exists = is_file($_return);
- if ($source->exists) {
- $source->timestamp = filemtime($_return);
- }
- $source->filepath = $_return;
- } elseif ($_return === true) {
- $source->content = $_content;
- $source->timestamp = $_timestamp;
- $source->exists = true;
- $source->handler->recompiled = true;
- $source->filepath = false;
- }
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
deleted file mode 100644
index 84b2c2630..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterFilter
- *
- * Smarty::registerFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterFilter
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Valid filter types
- *
- * @var array
- */
- private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
-
- /**
- * Registers a filter function
- *
- * @api Smarty::registerFilter()
- *
- * @link http://www.smarty.net/docs/en/api.register.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param callback $callback
- * @param string|null $name optional filter name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $this->_checkFilterType($type);
- $name = isset($name) ? $name : $this->_getFilterName($callback);
- if (!is_callable($callback)) {
- throw new SmartyException("{$type}filter \"{$name}\" not callable");
- }
- $smarty->registered_filters[$type][$name] = $callback;
- return $obj;
- }
-
- /**
- * Return internal filter name
- *
- * @param callback $function_name
- *
- * @return string internal filter name
- */
- public function _getFilterName($function_name)
- {
- if (is_array($function_name)) {
- $_class_name = (is_object($function_name[0]) ? get_class($function_name[0]) : $function_name[0]);
-
- return $_class_name . '_' . $function_name[1];
- } elseif (is_string($function_name)) {
- return $function_name;
- } else {
- return 'closure';
- }
- }
-
- /**
- * Check if filter type is valid
- *
- * @param string $type
- *
- * @throws \SmartyException
- */
- public function _checkFilterType($type)
- {
- if (!isset($this->filterTypes[$type])) {
- throw new SmartyException("Illegal filter type \"{$type}\"");
- }
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php
deleted file mode 100644
index f27f1720b..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerobject.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterObject
- *
- * Smarty::registerObject() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterObject
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers object to be used in templates
- *
- * @api Smarty::registerObject()
- * @link http://www.smarty.net/docs/en/api.register.object.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $object_name
- * @param object $object the
- * referenced
- * PHP object to
- * register
- * @param array $allowed_methods_properties list of
- * allowed
- * methods
- * (empty = all)
- * @param bool $format smarty
- * argument
- * format, else
- * traditional
- * @param array $block_methods list of
- * block-methods
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerObject(Smarty_Internal_TemplateBase $obj, $object_name, $object, $allowed_methods_properties = array(), $format = true, $block_methods = array())
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- // test if allowed methods callable
- if (!empty($allowed_methods_properties)) {
- foreach ((array) $allowed_methods_properties as $method) {
- if (!is_callable(array($object, $method)) && !property_exists($object, $method)) {
- throw new SmartyException("Undefined method or property '$method' in registered object");
- }
- }
- }
- // test if block methods callable
- if (!empty($block_methods)) {
- foreach ((array) $block_methods as $method) {
- if (!is_callable(array($object, $method))) {
- throw new SmartyException("Undefined method '$method' in registered object");
- }
- }
- }
- // register the object
- $smarty->registered_objects[$object_name] = array($object, (array) $allowed_methods_properties,
- (boolean) $format, (array) $block_methods);
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
deleted file mode 100644
index 95814581d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterPlugin
- *
- * Smarty::registerPlugin() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterPlugin
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::registerPlugin()
- * @link http://www.smarty.net/docs/en/api.register.plugin.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type plugin type
- * @param string $name name of template tag
- * @param callback $callback PHP callback to register
- * @param bool $cacheable if true (default) this
- * function is cache able
- * @param mixed $cache_attr caching attributes if any
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException when the plugin tag is invalid
- */
- public function registerPlugin(Smarty_Internal_TemplateBase $obj, $type, $name, $callback, $cacheable = true, $cache_attr = null)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_plugins[$type][$name])) {
- throw new SmartyException("Plugin tag \"{$name}\" already registered");
- } elseif (!is_callable($callback)) {
- throw new SmartyException("Plugin \"{$name}\" not callable");
- } else {
- $smarty->registered_plugins[$type][$name] = array($callback, (bool) $cacheable, (array) $cache_attr);
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php b/library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php
deleted file mode 100644
index 43246ee9b..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_registerresource.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Smarty Method RegisterResource
- *
- * Smarty::registerResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_RegisterResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::registerResource()
- * @link http://www.smarty.net/docs/en/api.register.resource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $name name of resource type
- * @param Smarty_Resource|array $resource_handler or instance of
- * Smarty_Resource, or
- * array of callbacks to
- * handle resource
- * (deprecated)
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function registerResource(Smarty_Internal_TemplateBase $obj, $name, $resource_handler)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $smarty->registered_resources[$name] = $resource_handler instanceof
- Smarty_Resource ? $resource_handler : array($resource_handler, false);
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php b/library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
deleted file mode 100644
index b1f965cd9..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/**
- * Smarty Method SetAutoloadFilters
- *
- * Smarty::setAutoloadFilters() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_SetAutoloadFilters
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Valid filter types
- *
- * @var array
- */
- private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
-
- /**
- * Set autoload filters
- *
- * @api Smarty::setAutoloadFilters()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array $filters filters to load automatically
- * @param string $type "pre", "output", … specify the
- * filter type to set. Defaults to
- * none treating $filters' keys as
- * the appropriate types
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if ($type !== null) {
- $this->_checkFilterType($type);
- $smarty->autoload_filters[$type] = (array) $filters;
- } else {
- foreach ((array) $filters as $type => $value) {
- $this->_checkFilterType($type);
- }
- $smarty->autoload_filters = (array) $filters;
- }
- return $obj;
- }
-
- /**
- * Check if filter type is valid
- *
- * @param string $type
- *
- * @throws \SmartyException
- */
- public function _checkFilterType($type)
- {
- if (!isset($this->filterTypes[$type])) {
- throw new SmartyException("Illegal filter type \"{$type}\"");
- }
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php b/library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
deleted file mode 100644
index 4ff5d7f82..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method SetDebugTemplate
- *
- * Smarty::setDebugTemplate() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_SetDebugTemplate
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * set the debug template
- *
- * @api Smarty::setDebugTemplate()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $tpl_name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException if file is not readable
- */
- public function setDebugTemplate(Smarty_Internal_TemplateBase $obj, $tpl_name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (!is_readable($tpl_name)) {
- throw new SmartyException("Unknown file '{$tpl_name}'");
- }
- $smarty->debug_tpl = $tpl_name;
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php b/library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
deleted file mode 100644
index 5a707287a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/**
- * Smarty Method SetDefaultModifiers
- *
- * Smarty::setDefaultModifiers() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_SetDefaultModifiers
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Set default modifiers
- *
- * @api Smarty::setDefaultModifiers()
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param array|string $modifiers modifier or list of modifiers
- * to set
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function setDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $smarty->default_modifiers = (array) $modifiers;
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php b/library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
deleted file mode 100644
index e3d966e1c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnloadFilter
- *
- * Smarty::unloadFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnloadFilter extends Smarty_Internal_Method_LoadFilter
-{
- /**
- * load a filter of specified type and name
- *
- * @api Smarty::unloadFilter()
- *
- * @link http://www.smarty.net/docs/en/api.unload.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param string $name filter name
- *
- * @return bool
- */
- public function unloadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $this->_checkFilterType($type);
- if (isset($smarty->registered_filters[$type])) {
- $_filter_name = "smarty_{$type}filter_{$name}";
- if (isset($smarty->registered_filters[$type][$_filter_name])) {
- unset ($smarty->registered_filters[$type][$_filter_name]);
- if (empty($smarty->registered_filters[$type])) {
- unset($smarty->registered_filters[$type]);
- }
- }
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php b/library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
deleted file mode 100644
index 80381015a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterCacheResource
- *
- * Smarty::unregisterCacheResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterCacheResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::unregisterCacheResource()
- * @link http://www.smarty.net/docs/en/api.unregister.cacheresource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type name of cache resource type
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterCacheResource(Smarty_Internal_TemplateBase $obj, $name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_cache_resources[$name])) {
- unset($smarty->registered_cache_resources[$name]);
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php b/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
deleted file mode 100644
index c80ae9a65..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterFilter
- *
- * Smarty::unregisterFilter() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterFilter extends Smarty_Internal_Method_RegisterFilter
-{
- /**
- * Unregisters a filter function
- *
- * @api Smarty::unregisterFilter()
- *
- * @link http://www.smarty.net/docs/en/api.unregister.filter.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type filter type
- * @param callback|string $callback
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterFilter(Smarty_Internal_TemplateBase $obj, $type, $callback)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- $this->_checkFilterType($type);
- if (isset($smarty->registered_filters[$type])) {
- $name = is_string($callback) ? $callback : $this->_getFilterName($callback);
- if (isset($smarty->registered_filters[$type][$name])) {
- unset($smarty->registered_filters[$type][$name]);
- if (empty($smarty->registered_filters[$type])) {
- unset($smarty->registered_filters[$type]);
- }
- }
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php b/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
deleted file mode 100644
index a94331683..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterObject
- *
- * Smarty::unregisterObject() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterObject
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::unregisterObject()
- * @link http://www.smarty.net/docs/en/api.unregister.object.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $object_name name of object
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterObject(Smarty_Internal_TemplateBase $obj, $object_name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_objects[$object_name])) {
- unset($smarty->registered_objects[$object_name]);
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php b/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
deleted file mode 100644
index 06cb2d354..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterPlugin
- *
- * Smarty::unregisterPlugin() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterPlugin
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::unregisterPlugin()
- * @link http://www.smarty.net/docs/en/api.unregister.plugin.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type plugin type
- * @param string $name name of template tag
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterPlugin(Smarty_Internal_TemplateBase $obj, $type, $name)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_plugins[$type][$name])) {
- unset($smarty->registered_plugins[$type][$name]);
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php b/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
deleted file mode 100644
index 767bd74ab..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * Smarty Method UnregisterResource
- *
- * Smarty::unregisterResource() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Method_UnregisterResource
-{
- /**
- * Valid for Smarty and template object
- *
- * @var int
- */
- public $objMap = 3;
-
- /**
- * Registers a resource to fetch a template
- *
- * @api Smarty::unregisterResource()
- * @link http://www.smarty.net/docs/en/api.unregister.resource.tpl
- *
- * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
- * @param string $type name of resource type
- *
- * @return \Smarty|\Smarty_Internal_Template
- */
- public function unregisterResource(Smarty_Internal_TemplateBase $obj, $type)
- {
- $smarty = isset($obj->smarty) ? $obj->smarty : $obj;
- if (isset($smarty->registered_resources[$type])) {
- unset($smarty->registered_resources[$type]);
- }
- return $obj;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php b/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php
deleted file mode 100644
index b3d5fa86a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Nocache Insert
- * Compiles the {insert} tag into the cache file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Insert Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Nocache_Insert
-{
- /**
- * Compiles code for the {insert} tag into cache file
- *
- * @param string $_function insert function name
- * @param array $_attr array with parameter
- * @param Smarty_Internal_Template $_template template object
- * @param string $_script script name to load or 'null'
- * @param string $_assign optional variable name
- *
- * @return string compiled code
- */
- public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
- {
- $_output = '<?php ';
- if ($_script != 'null') {
- // script which must be included
- // code for script file loading
- $_output .= "require_once '{$_script}';";
- }
- // call insert
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . ",\$_smarty_tpl), true);?>";
- } else {
- $_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
- }
- $_tpl = $_template;
- while (isset($_tpl->parent) && $_tpl->parent->_objType == 2) {
- $_tpl = $_tpl->parent;
- }
-
- return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/";
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php b/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
deleted file mode 100644
index 607389cb5..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-
-/**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
-{
- /**
- * Create parse tree buffer for double quoted string subtrees
- *
- * @param object $parser parser object
- * @param Smarty_Internal_ParseTree $subtree parse tree buffer
- */
- public function __construct($parser, Smarty_Internal_ParseTree $subtree)
- {
- $this->subtrees[] = $subtree;
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $parser->block_nesting_level = count($parser->compiler->_tag_stack);
- }
- }
-
- /**
- * Append buffer to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param Smarty_Internal_ParseTree $subtree parse tree buffer
- */
- public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
- {
- $last_subtree = count($this->subtrees) - 1;
- if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof Smarty_Internal_ParseTree_Tag && $this->subtrees[$last_subtree]->saved_block_nesting < $parser->block_nesting_level) {
- if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
- $this->subtrees[$last_subtree]->data = $parser->compiler->appendCode($this->subtrees[$last_subtree]->data, '<?php echo ' . $subtree->data . ';?>');
- } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $this->subtrees[$last_subtree]->data = $parser->compiler->appendCode($this->subtrees[$last_subtree]->data, '<?php echo "' . $subtree->data . '";?>');
- } else {
- $this->subtrees[$last_subtree]->data = $parser->compiler->appendCode($this->subtrees[$last_subtree]->data, $subtree->data);
- }
- } else {
- $this->subtrees[] = $subtree;
- }
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $parser->block_nesting_level = count($parser->compiler->_tag_stack);
- }
- }
-
- /**
- * Merge subtree buffer content together
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string compiled template code
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- $code = '';
- foreach ($this->subtrees as $subtree) {
- if ($code !== "") {
- $code .= ".";
- }
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $more_php = $subtree->assign_to_var($parser);
- } else {
- $more_php = $subtree->to_smarty_php($parser);
- }
-
- $code .= $more_php;
-
- if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $parser->compiler->has_variable_string = true;
- }
- }
-
- return $code;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php b/library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
deleted file mode 100644
index 575c8c9e8..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse tree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * A complete smarty tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree
-{
-
- /**
- * Saved block nesting level
- *
- * @var int
- */
- public $saved_block_nesting;
-
- /**
- * Create parse tree buffer for Smarty tag
- *
- * @param \Smarty_Internal_Templateparser $parser parser object
- * @param string $data content
- */
- public function __construct(Smarty_Internal_Templateparser $parser, $data)
- {
- $this->data = $data;
- $this->saved_block_nesting = $parser->block_nesting_level;
- }
-
- /**
- * Return buffer content
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string content
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- return $this->data;
- }
-
- /**
- * Return complied code that loads the evaluated output of buffer content into a temporary variable
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string template code
- */
- public function assign_to_var(Smarty_Internal_Templateparser $parser)
- {
- $var = sprintf('$_tmp%d', ++ Smarty_Internal_Templateparser::$prefix_number);
- $tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data);
- $tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>");
- $parser->compiler->prefix_code[] = sprintf("%s", $tmp);
-
- return $var;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php b/library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php
deleted file mode 100644
index 623ae51a3..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_template.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parse Tree
- * These are classes to build parse tree in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * Template element
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree
-{
-
- /**
- * Array of template elements
- *
- * @var array
- */
- public $subtrees = Array();
-
- /**
- * Create root of parse tree for template elements
- *
- */
- public function __construct()
- {
- }
-
- /**
- * Append buffer to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param Smarty_Internal_ParseTree $subtree
- */
- public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
- {
- if (!empty($subtree->subtrees)) {
- $this->subtrees = array_merge($this->subtrees, $subtree->subtrees);
- } else {
- if ($subtree->data !== '') {
- $this->subtrees[] = $subtree;
- }
- }
- }
-
- /**
- * Append array to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param \Smarty_Internal_ParseTree[] $array
- */
- public function append_array(Smarty_Internal_Templateparser $parser, $array = array())
- {
- if (!empty($array)) {
- $this->subtrees = array_merge($this->subtrees, (array) $array);
- }
- }
-
- /**
- * Prepend array to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param \Smarty_Internal_ParseTree[] $array
- */
- public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array())
- {
- if (!empty($array)) {
- $this->subtrees = array_merge((array) $array, $this->subtrees);
- }
- }
-
- /**
- * Sanitize and merge subtree buffers together
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string template code content
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- $code = '';
- for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key ++) {
- if ($this->subtrees[$key] instanceof Smarty_Internal_ParseTree_Text) {
- $subtree = $this->subtrees[$key]->to_smarty_php($parser);
- while ($key + 1 < $cnt && ($this->subtrees[$key + 1] instanceof Smarty_Internal_ParseTree_Text ||
- $this->subtrees[$key + 1]->data == '')) {
- $key ++;
- if ($this->subtrees[$key]->data == '') {
- continue;
- }
- $subtree .= $this->subtrees[$key]->to_smarty_php($parser);
- }
- if ($subtree == '') {
- continue;
- }
- $code .= preg_replace('/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', "<?php echo '\$1'; ?>\n",
- $subtree);
- continue;
- }
- if ($this->subtrees[$key] instanceof Smarty_Internal_ParseTree_Tag) {
- $subtree = $this->subtrees[$key]->to_smarty_php($parser);
- while ($key + 1 < $cnt && ($this->subtrees[$key + 1] instanceof Smarty_Internal_ParseTree_Tag ||
- $this->subtrees[$key + 1]->data == '')) {
- $key ++;
- if ($this->subtrees[$key]->data == '') {
- continue;
- }
- $subtree = $parser->compiler->appendCode($subtree, $this->subtrees[$key]->to_smarty_php($parser));
- }
- if ($subtree == '') {
- continue;
- }
- $code .= $subtree;
- continue;
- }
- $code .= $this->subtrees[$key]->to_smarty_php($parser);
- }
- return $code;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php
deleted file mode 100644
index aca710350..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Eval
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Eval
- * Implements the strings as resource for Smarty template
- * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->uid = $source->filepath = sha1($source->name);
- $source->timestamp = false;
- $source->exists = true;
- }
-
- /**
- * Load template's source from $resource_name into current template object
- *
- * @uses decode() to decode base64 and urlencoded template_resources
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- */
- public function getContent(Smarty_Template_Source $source)
- {
- return $this->decode($source->name);
- }
-
- /**
- * decode base64 and urlencode
- *
- * @param string $string template_resource to decode
- *
- * @return string decoded template_resource
- */
- protected function decode($string)
- {
- // decode if specified
- if (($pos = strpos($string, ':')) !== false) {
- if (!strncmp($string, 'base64', 6)) {
- return base64_decode(substr($string, 7));
- } elseif (!strncmp($string, 'urlencode', 9)) {
- return urldecode(substr($string, 10));
- }
- }
-
- return $string;
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- return get_class($this) . '#' . $this->decode($resource_name);
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return '';
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
deleted file mode 100644
index 3d687dca8..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Extends
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Extends
- * Implements the file system as resource for Smarty which {extend}s a chain of template files templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Extends extends Smarty_Resource
-{
- /**
- * mbstring.overload flag
- *
- * @var int
- */
- public $mbstring_overload = 0;
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @throws SmartyException
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $uid = '';
- $sources = array();
- $components = explode('|', $source->name);
- $exists = true;
- foreach ($components as $component) {
- /* @var \Smarty_Template_Source $_s */
- $_s = Smarty_Template_Source::load(null, $source->smarty, $component);
- if ($_s->type == 'php') {
- throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type");
- }
- $sources[ $_s->uid ] = $_s;
- $uid .= $_s->filepath;
- if ($_template) {
- $exists = $exists && $_s->exists;
- }
- }
- $source->components = $sources;
- $source->filepath = $_s->filepath;
- $source->uid = sha1($uid);
- $source->exists = $exists;
- if ($_template) {
- $source->timestamp = $_s->timestamp;
- }
- }
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- $source->exists = true;
- /* @var \Smarty_Template_Source $_s */
- foreach ($source->components as $_s) {
- $source->exists = $source->exists && $_s->exists;
- }
- $source->timestamp = $source->exists ? $_s->getTimeStamp() : false;
- }
-
- /**
- * Load template's source from files into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if (!$source->exists) {
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
- }
-
- $_components = array_reverse($source->components);
-
- $_content = '';
- /* @var \Smarty_Template_Source $_s */
- foreach ($_components as $_s) {
- // read content
- $_content .= $_s->getContent();
- }
- return $_content;
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return str_replace(':', '.', basename($source->filepath));
- }
-
- /*
- * Disable timestamp checks for extends resource.
- * The individual source components will be checked.
- *
- * @return bool
- */
- public function checkTimestamps()
- {
- return false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php
deleted file mode 100644
index b15e3cc6a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource File
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource File
- * Implements the file system as resource for Smarty templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_File extends Smarty_Resource
-{
- /**
- * build template filepath by traversing the template_dir array
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string fully qualified filepath
- * @throws SmartyException
- */
- protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $file = $source->name;
- // absolute file ?
- if ($file[0] == '/' || $file[1] == ':') {
- $file = $source->smarty->_realpath($file, true);
- return is_file($file) ? $file : false;
- }
- // go relative to a given template?
- if ($file[0] == '.' && $_template && isset($_template->parent) && $_template->parent->_objType == 2 &&
- preg_match('#^[.]{1,2}[\\\/]#', $file)
- ) {
- if ($_template->parent->source->type != 'file' && $_template->parent->source->type != 'extends' &&
- !isset($_template->parent->_cache['allow_relative_path'])
- ) {
- throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'");
- }
- $path = dirname($_template->parent->source->filepath) . DS . $file;
- // normalize path
- $path = $source->smarty->_realpath($path);
- // files relative to a template only get one shot
- return is_file($path) ? $path : false;
- }
- // normalize DS
- if (strpos($file, DS == '/' ? '\\' : '/') !== false) {
- $file = str_replace(DS == '/' ? '\\' : '/', DS, $file);
- }
-
- $_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
- // template_dir index?
- if ($file[0] == '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
- $file = $fileMatch[2];
- $_indices = explode(',', $fileMatch[1]);
- $_index_dirs = array();
- foreach ($_indices as $index) {
- $index = trim($index);
- // try string indexes
- if (isset($_directories[$index])) {
- $_index_dirs[] = $_directories[$index];
- } elseif (is_numeric($index)) {
- // try numeric index
- $index = (int) $index;
- if (isset($_directories[$index])) {
- $_index_dirs[] = $_directories[$index];
- } else {
- // try at location index
- $keys = array_keys($_directories);
- if (isset($_directories[$keys[$index]])) {
- $_index_dirs[] = $_directories[$keys[$index]];
- }
- }
- }
- }
- if (empty($_index_dirs)) {
- // index not found
- return false;
- } else {
- $_directories = $_index_dirs;
- }
- }
-
- // relative file name?
- foreach ($_directories as $_directory) {
- $path = $_directory . $file;
- if (is_file($path)) {
- return (strpos($path, '.' . DS) !== false) ? $source->smarty->_realpath($path) : $path;
- }
- }
- if (!isset($_index_dirs)) {
- // Could be relative to cwd
- $path = $source->smarty->_realpath($file, true);
- if (is_file($path)) {
- return $path;
- }
- }
- // Use include path ?
- if ($source->smarty->use_include_path) {
- return $source->smarty->ext->_getIncludePath->getIncludePath($_directories, $file, $source->smarty);
- }
- return false;
- }
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->filepath = $this->buildFilepath($source, $_template);
-
- if ($source->filepath !== false) {
- if (isset($source->smarty->security_policy) && is_object($source->smarty->security_policy)) {
- $source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig);
- }
- $source->exists = true;
- $source->uid = sha1($source->filepath);
- if ($source->smarty->compile_check == 1) {
- $source->timestamp = filemtime($source->filepath);
- }
- } else {
- $source->timestamp = false;
- $source->exists = false;
- }
- }
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- if (!$source->exists) {
- $source->timestamp = $source->exists = is_file($source->filepath);
- }
- if ($source->exists) {
- $source->timestamp = filemtime($source->filepath);
- }
- }
-
- /**
- * Load template's source from file into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if ($source->exists) {
- return file_get_contents($source->filepath);
- }
- throw new SmartyException('Unable to read ' . ($source->isConfig ? 'config' : 'template') .
- " {$source->type} '{$source->name}'");
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return basename($source->filepath);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php
deleted file mode 100644
index 62680625c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Resource PHP
- * Implements the file system as resource for PHP templates
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
-{
- /**
- * Flag that it's an uncompiled resource
- *
- * @var bool
- */
- public $uncompiled = true;
- /**
- * container for short_open_tag directive's value before executing PHP templates
- *
- * @var string
- */
- protected $short_open_tag;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
-
- /**
- * Create a new PHP Resource
-
- */
- public function __construct()
- {
- $this->short_open_tag = ini_get('short_open_tag');
- }
-
- /**
- * Load template's source from file into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- if ($source->exists) {
- return '';
- }
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
- }
-
- /**
- * Render and output the template (without using the compiler)
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
- */
- public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
- {
- if (!$source->smarty->allow_php_templates) {
- throw new SmartyException("PHP templates are disabled");
- }
- if (!$source->exists) {
- if (isset($_template->parent) && $_template->parent->_objType == 2) {
- $parent_resource = " in '{$_template->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
- }
-
- // prepare variables
- extract($_template->getTemplateVars());
-
- // include PHP template with short open tags enabled
- ini_set('short_open_tag', '1');
- /** @var Smarty_Internal_Template $_smarty_template
- * used in included file
- */
- $_smarty_template = $_template;
- include($source->filepath);
- ini_set('short_open_tag', $this->short_open_tag);
- }
-
- /**
- * populate compiled object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object (is ignored)
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php
deleted file mode 100644
index 69b396b6a..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Registered
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Registered
- * Implements the registered resource for Smarty template
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @deprecated
- */
-class Smarty_Internal_Resource_Registered extends Smarty_Resource
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->filepath = $source->type . ':' . $source->name;
- $source->uid = sha1($source->filepath);
- if ($source->smarty->compile_check) {
- $source->timestamp = $this->getTemplateTimestamp($source);
- $source->exists = !!$source->timestamp;
- }
- }
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return void
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- $source->timestamp = $this->getTemplateTimestamp($source);
- $source->exists = !!$source->timestamp;
- }
-
- /**
- * Get timestamp (epoch) the template source was modified
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
- */
- public function getTemplateTimestamp(Smarty_Template_Source $source)
- {
- // return timestamp
- $time_stamp = false;
- call_user_func_array($source->smarty->registered_resources[$source->type][0][1], array($source->name, &$time_stamp, $source->smarty));
-
- return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
- }
-
- /**
- * Load template's source by invoking the registered callback into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- // return template string
- $content = null;
- $t = call_user_func_array($source->smarty->registered_resources[$source->type][0][0], array($source->name, &$content, $source->smarty));
- if (is_bool($t) && !$t) {
- throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
- }
-
- return $content;
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return basename($source->name);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php
deleted file mode 100644
index 8a902268c..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Stream
- * Implements the streams as resource for Smarty template
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Stream
- * Implements the streams as resource for Smarty template
- *
- * @link http://php.net/streams
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- if (strpos($source->resource, '://') !== false) {
- $source->filepath = $source->resource;
- } else {
- $source->filepath = str_replace(':', '://', $source->resource);
- }
- $source->uid = false;
- $source->content = $this->getContent($source);
- $source->timestamp = false;
- $source->exists = !!$source->content;
- }
-
- /**
- * Load template's source from stream into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- public function getContent(Smarty_Template_Source $source)
- {
- $t = '';
- // the availability of the stream has already been checked in Smarty_Resource::fetch()
- $fp = fopen($source->filepath, 'r+');
- if ($fp) {
- while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
- $t .= $current_line;
- }
- fclose($fp);
-
- return $t;
- } else {
- return false;
- }
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- return get_class($this) . '#' . $resource_name;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php
deleted file mode 100644
index 75e99e6fb..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Resource String
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource String
- * Implements the strings as resource for Smarty template
- * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}}
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_String extends Smarty_Resource
-{
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
- {
- $source->uid = $source->filepath = sha1($source->name);
- $source->timestamp = 0;
- $source->exists = true;
- }
-
- /**
- * Load template's source from $resource_name into current template object
- *
- * @uses decode() to decode base64 and urlencoded template_resources
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- */
- public function getContent(Smarty_Template_Source $source)
- {
- return $this->decode($source->name);
- }
-
- /**
- * decode base64 and urlencode
- *
- * @param string $string template_resource to decode
- *
- * @return string decoded template_resource
- */
- protected function decode($string)
- {
- // decode if specified
- if (($pos = strpos($string, ':')) !== false) {
- if (!strncmp($string, 'base64', 6)) {
- return base64_decode(substr($string, 7));
- } elseif (!strncmp($string, 'urlencode', 9)) {
- return urldecode(substr($string, 10));
- }
- }
-
- return $string;
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- return get_class($this) . '#' . $this->decode($resource_name);
- }
-
- /**
- * Determine basename for compiled filename
- * Always returns an empty string.
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return '';
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
deleted file mode 100644
index 4e2fb83e6..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/**
- * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_CacheModify
-{
- /**
- * check client side cache
- *
- * @param Smarty_Internal_Template $_template
- * @param string $content
- */
- public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
- {
- $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code;
- $_last_modified_date =
- @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
- if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
- switch (PHP_SAPI) {
- case 'cgi': // php-cgi < 5.3
- case 'cgi-fcgi': // php-cgi >= 5.3
- case 'fpm-fcgi': // php-fpm >= 5.3.3
- header('Status: 304 Not Modified');
- break;
-
- case 'cli':
- if ( /* ^phpunit */
- !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
- ) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
- }
- break;
-
- default:
- if ( /* ^phpunit */
- !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
- ) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
- } else {
- header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
- }
- break;
- }
- } else {
- switch (PHP_SAPI) {
- case 'cli':
- if ( /* ^phpunit */
- !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
- ) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] =
- 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
- }
- break;
- default:
- header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
- break;
- }
- echo $content;
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
deleted file mode 100644
index ce6749770..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * Smarty Internal Extension
- * This file contains the Smarty template extension to create a code frame
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Class Smarty_Internal_Extension_CodeFrame
- * Create code frame for compiled and cached templates
- */
-class Smarty_Internal_Runtime_CodeFrame
-{
- /**
- * Create code frame for compiled and cached templates
- *
- * @param Smarty_Internal_Template $_template
- * @param string $content optional template content
- * @param string $functions compiled template function and block code
- * @param bool $cache flag for cache file
- * @param \Smarty_Internal_TemplateCompilerBase $compiler
- *
- * @return string
- */
- public function create(Smarty_Internal_Template $_template, $content = '', $functions = '', $cache = false,
- Smarty_Internal_TemplateCompilerBase $compiler = null)
- {
- // build property code
- $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code;
- $properties[ 'version' ] = Smarty::SMARTY_VERSION;
- $properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
- if (!$cache) {
- $properties[ 'file_dependency' ] = $_template->compiled->file_dependency;
- $properties[ 'includes' ] = $_template->compiled->includes;
- if (!empty($compiler->tpl_function)) {
- $properties[ 'tpl_function' ] = $compiler->tpl_function;
- }
- } else {
- $properties[ 'file_dependency' ] = $_template->cached->file_dependency;
- $properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
- if (!empty($_template->tpl_function)) {
- $properties[ 'tpl_function' ] = $_template->tpl_function;
- }
- }
- $output = "<?php\n";
- $output .= "/* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") .
- "\n from \"" . $_template->source->filepath . "\" */\n\n";
-
- $dec = "\$_smarty_tpl->smarty->ext->_validateCompiled->decodeProperties(\$_smarty_tpl, " .
- var_export($properties, true) . ',' . ($cache ? 'true' : 'false') . ")";
- $output .= "if ({$dec}) {\n";
- $output .= "function {$properties['unifunc']} (\$_smarty_tpl) {\n";
- // include code for plugins
- if (!$cache) {
- if (!empty($_template->compiled->required_plugins[ 'compiled' ])) {
- foreach ($_template->compiled->required_plugins[ 'compiled' ] as $tmp) {
- foreach ($tmp as $data) {
- $file = addslashes($data[ 'file' ]);
- if (is_array($data[ 'function' ])) {
- $output .= "if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) require_once '{$file}';\n";
- } else {
- $output .= "if (!is_callable('{$data['function']}')) require_once '{$file}';\n";
- }
- }
- }
- }
- if ($_template->caching && !empty($_template->compiled->required_plugins[ 'nocache' ])) {
- $_template->compiled->has_nocache_code = true;
- $output .= "echo '/*%%SmartyNocache:{$_template->compiled->nocache_hash}%%*/<?php \$_smarty = \$_smarty_tpl->smarty; ";
- foreach ($_template->compiled->required_plugins[ 'nocache' ] as $tmp) {
- foreach ($tmp as $data) {
- $file = addslashes($data[ 'file' ]);
- if (is_Array($data[ 'function' ])) {
- $output .= addslashes("if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) require_once '{$file}';\n");
- } else {
- $output .= addslashes("if (!is_callable('{$data['function']}')) require_once '{$file}';\n");
- }
- }
- }
- $output .= "?>/*/%%SmartyNocache:{$_template->compiled->nocache_hash}%%*/';\n";
- }
- }
- $output .= "?>\n";
- $output .= $content;
- $output .= "<?php }\n?>";
- $output .= $functions;
- $output .= "<?php }\n";
- // remove unneeded PHP tags
- return preg_replace(array('/\s*\?>[\n]?<\?php\s*/', '/\?>\s*$/'), array("\n", ''), $output);
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
deleted file mode 100644
index 9af266758..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Filter Handler
- * Smarty filter handler class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-
-/**
- * Class for filter processing
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_FilterHandler
-{
- /**
- * Run filters over content
- * The filters will be lazy loaded if required
- * class name format: Smarty_FilterType_FilterName
- * plugin filename format: filtertype.filtername.php
- * Smarty2 filter plugins could be used
- *
- * @param string $type the type of filter ('pre','post','output') which shall run
- * @param string $content the content which shall be processed by the filters
- * @param Smarty_Internal_Template $template template object
- *
- * @throws SmartyException
- * @return string the filtered content
- */
- public function runFilter($type, $content, Smarty_Internal_Template $template)
- {
- // loop over autoload filters of specified type
- if (!empty($template->smarty->autoload_filters[$type])) {
- foreach ((array) $template->smarty->autoload_filters[$type] as $name) {
- $plugin_name = "Smarty_{$type}filter_{$name}";
- if (function_exists($plugin_name)) {
- $callback = $plugin_name;
- } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
- $callback = array($plugin_name, 'execute');
- } elseif ($template->smarty->loadPlugin($plugin_name, false)) {
- if (function_exists($plugin_name)) {
- // use loaded Smarty2 style plugin
- $callback = $plugin_name;
- } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
- // loaded class of filter plugin
- $callback = array($plugin_name, 'execute');
- } else {
- throw new SmartyException("Auto load {$type}-filter plugin method \"{$plugin_name}::execute\" not callable");
- }
- } else {
- // nothing found, throw exception
- throw new SmartyException("Unable to auto load {$type}-filter plugin \"{$plugin_name}\"");
- }
- $content = call_user_func($callback, $content, $template);
- }
- }
- // loop over registered filters of specified type
- if (!empty($template->smarty->registered_filters[$type])) {
- foreach ($template->smarty->registered_filters[$type] as $key => $name) {
- $content = call_user_func($template->smarty->registered_filters[$type][$key], $content, $template);
- }
- }
- // return filtered output
- return $content;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
deleted file mode 100644
index 689636adb..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/**
- * Foreach Runtime Methods count
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_Foreach
-{
- /**
- * [util function] counts an array, arrayAccess/traversable or PDOStatement object
- *
- * @param mixed $value
- *
- * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
- * for empty elements
- */
- public function count($value)
- {
- if (is_array($value) === true || $value instanceof Countable) {
- return count($value);
- } elseif ($value instanceof IteratorAggregate) {
- // Note: getIterator() returns a Traversable, not an Iterator
- // thus rewind() and valid() methods may not be present
- return iterator_count($value->getIterator());
- } elseif ($value instanceof Iterator) {
- if ($value instanceof Generator) {
- return 1;
- }
- return iterator_count($value);
- } elseif ($value instanceof PDOStatement) {
- return $value->rowCount();
- } elseif ($value instanceof Traversable) {
- return iterator_count($value);
- } elseif ($value instanceof ArrayAccess) {
- if ($value->offsetExists(0)) {
- return 1;
- }
- } elseif (is_object($value)) {
- return count($value);
- }
- return 0;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
deleted file mode 100644
index 72149cd35..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-/**
- * Smarty read include path plugin
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Monte Ohrt
- */
-
-/**
- * Smarty Internal Read Include Path Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_GetIncludePath
-{
- /**
- * include path cache
- *
- * @var string
- */
- public $_include_path = '';
-
- /**
- * include path directory cache
- *
- * @var array
- */
- public $_include_dirs = array();
-
- /**
- * include path directory cache
- *
- * @var array
- */
- public $_user_dirs = array();
-
- /**
- * stream cache
- *
- * @var string[]
- */
- public $isFile = array();
-
- /**
- * stream cache
- *
- * @var string[]
- */
- public $isPath = array();
-
- /**
- * stream cache
- *
- * @var int[]
- */
- public $number = array();
-
- /**
- * status cache
- *
- * @var bool
- */
- public $_has_stream_include = null;
-
- /**
- * Number for array index
- *
- * @var int
- */
- public $counter = 0;
-
- /**
- * Check if include path was updated
- *
- * @param \Smarty $smarty
- *
- * @return bool
- */
- public function isNewIncludePath(Smarty $smarty)
- {
- $_i_path = get_include_path();
- if ($this->_include_path != $_i_path) {
- $this->_include_dirs = array();
- $this->_include_path = $_i_path;
- $_dirs = (array) explode(PATH_SEPARATOR, $_i_path);
- foreach ($_dirs as $_path) {
- if (is_dir($_path)) {
- $this->_include_dirs[] = $smarty->_realpath($_path . DS, true);
- }
- }
- return true;
- }
- return false;
- }
-
- /**
- * return array with include path directories
- *
- * @param \Smarty $smarty
- *
- * @return array
- */
- public function getIncludePathDirs(Smarty $smarty)
- {
- $this->isNewIncludePath($smarty);
- return $this->_include_dirs;
- }
-
- /**
- * Return full file path from PHP include_path
- *
- * @param string[] $dirs
- * @param string $file
- * @param \Smarty $smarty
- *
- * @return bool|string full filepath or false
- *
- */
- public function getIncludePath($dirs, $file, Smarty $smarty)
- {
- //if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) {
- if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = function_exists('stream_resolve_include_path'))) {
- $this->isNewIncludePath($smarty);
- }
- // try PHP include_path
- foreach ($dirs as $dir) {
- $dir_n = isset($this->number[$dir]) ? $this->number[$dir] : $this->number[$dir] = $this->counter ++;
- if (isset($this->isFile[$dir_n][$file])) {
- if ($this->isFile[$dir_n][$file]) {
- return $this->isFile[$dir_n][$file];
- } else {
- continue;
- }
- }
- if (isset($this->_user_dirs[$dir_n])) {
- if (false === $this->_user_dirs[$dir_n]) {
- continue;
- } else {
- $dir = $this->_user_dirs[$dir_n];
- }
- } else {
- if ($dir[0] == '/' || $dir[1] == ':') {
- $dir = str_ireplace(getcwd(), '.', $dir);
- if ($dir[0] == '/' || $dir[1] == ':') {
- $this->_user_dirs[$dir_n] = false;
- continue;
- }
- }
- $dir = substr($dir, 2);
- $this->_user_dirs[$dir_n] = $dir;
- }
- if ($this->_has_stream_include) {
- $path = stream_resolve_include_path($dir . (isset($file) ? $file : ''));
- if ($path) {
- return $this->isFile[$dir_n][$file] = $path;
- }
- } else {
- foreach ($this->_include_dirs as $key => $_i_path) {
- $path = isset($this->isPath[$key][$dir_n]) ? $this->isPath[$key][$dir_n] : $this->isPath[$key][$dir_n] = is_dir($_dir_path = $_i_path .
- $dir) ? $_dir_path : false;
- if ($path === false) {
- continue;
- }
- if (isset($file)) {
- $_file = $this->isFile[$dir_n][$file] = (is_file($path . $file)) ? $path . $file : false;
- if ($_file) {
- return $_file;
- }
- } else {
- // no file was given return directory path
- return $path;
- }
- }
- }
- }
- return false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php
deleted file mode 100644
index 117cd8166..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_hhvm.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/**
- * Runtime Extension Hhvm
- *
- * include patch for modified compiled or cached templates
- * HHVM does not check if file was modified when including same file multiple times
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Runtime_Hhvm
-{
- /**
- * @param \Smarty_Internal_Template $_template
- * @param string $file file name
- *
- * @return mixed
- */
- static function includeHhvm(Smarty_Internal_Template $_template, $file)
- {
- $_smarty_tpl = $_template;
- $tmp_file = $file . preg_replace('![^\w]+!', '_', uniqid(rand(), true)) . '.php';
- file_put_contents($tmp_file, file_get_contents($file));
- $result = @include $tmp_file;
- @unlink($tmp_file);
- return $result;
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
deleted file mode 100644
index 08a560606..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-
-/**
- * Inheritance Runtime Methods processBlock, endChild, init
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_Inheritance
-{
-
- /**
- * State machine
- * - 0 idle next extends will create a new inheritance tree
- * - 1 processing child template
- * - 2 wait for next inheritance template
- * - 3 assume parent template, if child will loaded goto state 1
- * a call to a sub template resets the state to 0
- *
- * @var int
- */
- public $state = 0;
-
- /**
- * Array of block parameter of known {block} tags
- *
- * @var array
- */
- public $blockParameter = array();
-
- /**
- * inheritance template nesting level
- *
- * @var int
- */
- public $inheritanceLevel = 0;
-
- /**
- * inheritance template index
- *
- * @var int
- */
- public $tplIndex = - 1;
-
- /**
- * Array of compiled template file path
- * - key template index
- * only used when caching is enabled
- *
- * @var []string
- */
- public $compiledFilePath = array();
-
- /**
- * Current {block} nesting level
- *
- * @var int
- */
- public $blockNesting = 0;
-
- /**
- * Initialize inheritance
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- * @param bool $initChild if true init for child template
- * @param array $blockNames outer level block name
- *
- */
- public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array())
- {
- // if template was from an inner block or template is a parent template create new inheritance root
- if ($initChild && ($this->blockNesting || $this->state == 3)) {
- $tpl->ext->_inheritance = new Smarty_Internal_Runtime_Inheritance();
- $tpl->ext->_inheritance->init($tpl, $initChild, $blockNames);
- return;
- }
- // start of child sub template(s)
- if ($initChild) {
- $this->state = 1;
- if (!$this->inheritanceLevel) {
- //grab any output of child templates
- ob_start();
- }
- $this->inheritanceLevel ++;
- }
- // in parent state {include} will not increment template index
- if ($this->state != 3) {
- $this->tplIndex ++;
- }
- // if state was waiting for parent change state to parent
- if ($this->state == 2) {
- $this->state = 3;
- }
- }
-
- /**
- * End of child template(s)
- * - if outer level is reached flush output buffer and switch to wait for parent template state
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- */
- public function endChild(Smarty_Internal_Template $tpl)
- {
- $this->inheritanceLevel --;
- if (!$this->inheritanceLevel) {
- ob_end_clean();
- $this->state = 2;
- }
- }
-
- /**
- * Process inheritance {block} tag
- *
- * $type 0 = {block}:
- * - search in inheritance template hierarchy for child blocks
- * if found call it, otherwise call current block
- * - ignored for outer level blocks in child templates
- *
- * $type 1 = {block}:
- * - nested {block}
- * - search in inheritance template hierarchy for child blocks
- * if found call it, otherwise call current block
- *
- * $type 2 = {$smarty.block.child}:
- * - search in inheritance template hierarchy for child blocks
- * if found call it, otherwise ignore
- *
- * $type 3 = {block append} {block prepend}:
- * - call parent block
- *
- * $type 4 = {$smarty.block.parent}:
- * - call parent block
- *
- * @param \Smarty_Internal_Template $tpl template object of caller
- * @param int $type call type see above
- * @param string $name block name
- * @param array $block block parameter
- * @param array $callStack call stack with block parameters
- *
- * @throws \SmartyException
- */
- public function processBlock(Smarty_Internal_Template $tpl, $type = 0, $name, $block, $callStack = array())
- {
- if (!isset($this->blockParameter[ $name ])) {
- $this->blockParameter[ $name ] = array();
- }
- if ($this->state == 1) {
- $block[ 2 ] = count($this->blockParameter[ $name ]);
- $block[ 3 ] = $this->tplIndex;
- $this->blockParameter[ $name ][] = $block;
- return;
- }
- if ($type == 3) {
- if (!empty($callStack)) {
- $block = array_shift($callStack);
- } else {
- return;
- }
- } elseif ($type == 4) {
- if (!empty($callStack)) {
- array_shift($callStack);
- if (empty($callStack)) {
- throw new SmartyException("inheritance: tag {\$smarty.block.parent} used in parent template block '{$name}'");
- }
- $block = array_shift($callStack);
- } else {
- return;
- }
- } else {
- $index = 0;
- $blockParameter = &$this->blockParameter[ $name ];
- if ($type == 0) {
- $index = $block[ 2 ] = count($blockParameter);
- $block[ 3 ] = $this->tplIndex;
- $callStack = array(&$block);
- } elseif ($type == 1) {
- $block[ 3 ] = $callStack[ 0 ][ 3 ];
- for ($i = 0; $i < count($blockParameter); $i ++) {
- if ($blockParameter[ $i ][ 3 ] <= $block[ 3 ]) {
- $index = $blockParameter[ $i ][ 2 ];
- }
- }
- $block[ 2 ] = $index;
- $callStack = array(&$block);
- } elseif ($type == 2) {
- $index = $callStack[ 0 ][ 2 ];
- if ($index == 0) {
- return;
- }
- $callStack = $block = array(1 => false);
- }
- $index --;
- // find lowest level child block
- while ($index >= 0 && ($type || !$block[ 1 ])) {
- $block = &$blockParameter[ $index ];
- array_unshift($callStack, $block);
- if ($block[ 1 ]) {
- break;
- }
- $index --;
- }
- if (isset($block[ 'hide' ]) && $index <= 0) {
- return;
- }
- }
- $this->blockNesting ++;
- // {block append} ?
- if (isset($block[ 'append' ])) {
- $appendStack = $callStack;
- if ($type == 0) {
- array_shift($appendStack);
- }
- $this->processBlock($tpl, 3, $name, null, $appendStack);
- }
- // call block of current stack level
- if (isset($block[6])) {
- $block[6]($tpl, $callStack);
- } else {
- $block[0]($tpl, $callStack);
- }
- // {block prepend} ?
- if (isset($block[ 'prepend' ])) {
- $prependStack = $callStack;
- if ($type == 0) {
- array_shift($prependStack);
- }
- $this->processBlock($tpl, 3, $name, null, $prependStack);
- }
- $this->blockNesting --;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php
deleted file mode 100644
index 2c7623f93..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_subtemplate.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-
-/**
- * Sub Template Runtime Methods render, setupSubTemplate
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_SubTemplate
-{
-
- /**
- * Subtemplate template object cache
- *
- * @var Smarty_Internal_Template[]
- */
- public $tplObjects = array();
-
- /**
- * Subtemplate call count
- *
- * @var int[]
- */
- public $subTplInfo = array();
-
- /**
- * Runtime function to render subtemplate
- *
- * @param \Smarty_Internal_Template $parent
- * @param string $template template name
- * @param mixed $cache_id cache id
- * @param mixed $compile_id compile id
- * @param integer $caching cache mode
- * @param integer $cache_lifetime life time of cache data
- * @param array $data passed parameter template variables
- * @param int $scope scope in which {include} should execute
- * @param bool $forceTplCache cache template object
- * @param string $uid file dependency uid
- * @param string $content_func function name
- *
- */
- public function render(Smarty_Internal_Template $parent, $template, $cache_id, $compile_id, $caching,
- $cache_lifetime, $data, $scope, $forceTplCache, $uid = null, $content_func = null)
- {
- // if there are cached template objects calculate $templateID
- $_templateId =
- !empty($this->tplObjects) ? $parent->smarty->_getTemplateId($template, $cache_id, $compile_id, $caching) :
- null;
- // already in template cache?
- /* @var Smarty_Internal_Template $tpl */
- if (isset($_templateId) && isset($this->tplObjects[$_templateId])) {
- // clone cached template object because of possible recursive call
- $tpl = clone $this->tplObjects[$_templateId];
- $tpl->parent = $parent;
- // if $caching mode changed the compiled resource is invalid
- if ((bool) $tpl->caching !== (bool) $caching) {
- unset($tpl->compiled);
- }
- // get variables from calling scope
- $tpl->tpl_vars = $parent->tpl_vars;
- $tpl->config_vars = $parent->config_vars;
- // get template functions
- $tpl->tpl_function = $parent->tpl_function;
- // copy inheritance object?
- if (isset($parent->ext->_inheritance)) {
- $tpl->ext->_inheritance = $parent->ext->_inheritance;
- } else {
- unset($tpl->ext->_inheritance);
- }
- } else {
- $tpl = clone $parent;
- $tpl->parent = $parent;
- if (!isset($tpl->templateId) || $tpl->templateId !== $_templateId) {
- $tpl->templateId = $_templateId;
- $tpl->template_resource = $template;
- $tpl->cache_id = $cache_id;
- $tpl->compile_id = $compile_id;
- if (isset($uid)) {
- // for inline templates we can get all resource information from file dependency
- if (isset($tpl->compiled->file_dependency[$uid])) {
- list($filepath, $timestamp, $resource) = $tpl->compiled->file_dependency[$uid];
- $tpl->source =
- new Smarty_Template_Source(isset($tpl->smarty->_cache['resource_handlers'][$resource]) ?
- $tpl->smarty->_cache['resource_handlers'][$resource] :
- Smarty_Resource::load($tpl->smarty, $resource), $tpl->smarty,
- $filepath, $resource, $filepath);
- $tpl->source->filepath = $filepath;
- $tpl->source->timestamp = $timestamp;
- $tpl->source->exists = true;
- $tpl->source->uid = $uid;
- } else {
- $tpl->source = null;
- }
- } else {
- $tpl->source = null;
- }
- if (!isset($tpl->source)) {
- $tpl->source = Smarty_Template_Source::load($tpl);
- unset($tpl->compiled);
- }
- unset($tpl->cached);
- }
- }
- $tpl->caching = $caching;
- $tpl->cache_lifetime = $cache_lifetime;
- if ($caching == 9999) {
- $tpl->cached = $parent->cached;
- }
- // set template scope
- $tpl->scope = $scope;
- $scopePtr = false;
- if ($scope & ~Smarty::SCOPE_BUBBLE_UP) {
- if ($scope == Smarty::SCOPE_GLOBAL) {
- $tpl->tpl_vars = Smarty::$global_tpl_vars;
- $tpl->config_vars = $tpl->smarty->config_vars;
- $scopePtr = true;
- } else {
- if ($scope == Smarty::SCOPE_PARENT) {
- $scopePtr = $parent;
- } elseif ($scope == Smarty::SCOPE_SMARTY) {
- $scopePtr = $tpl->smarty;
- } else {
- $scopePtr = $tpl;
- while (isset($scopePtr->parent)) {
- if ($scopePtr->parent->_objType != 2 && $scope & Smarty::SCOPE_TPL_ROOT) {
- break;
- }
- $scopePtr = $scopePtr->parent;
- }
- }
- $tpl->tpl_vars = $scopePtr->tpl_vars;
- $tpl->config_vars = $scopePtr->config_vars;
- }
- }
-
- if (!isset($this->tplObjects[$tpl->_getTemplateId()]) && !$tpl->source->handler->recompiled) {
- // if template is called multiple times set flag to to cache template objects
- $forceTplCache = $forceTplCache ||
- (isset($this->subTplInfo[$tpl->template_resource]) && $this->subTplInfo[$tpl->template_resource] > 1);
- // check if template object should be cached
- if ($tpl->parent->_objType == 2 && isset($this->tplObjects[$tpl->parent->templateId]) ||
- ($forceTplCache && $tpl->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_AUTOMATIC) ||
- ($tpl->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON)
- ) {
- $this->tplObjects[$tpl->_getTemplateId()] = $tpl;
- }
- }
-
- if (!empty($data)) {
- // set up variable values
- foreach ($data as $_key => $_val) {
- $tpl->tpl_vars[$_key] = new Smarty_Variable($_val);
- }
- }
- if (isset($uid)) {
- if ($parent->smarty->debugging) {
- $parent->smarty->_debug->start_template($tpl);
- $parent->smarty->_debug->start_render($tpl);
- }
- $tpl->compiled->getRenderedTemplateCode($tpl, $content_func);
- if ($parent->smarty->debugging) {
- $parent->smarty->_debug->end_template($tpl);
- $parent->smarty->_debug->end_render($tpl);
- }
- if ($tpl->caching == 9999 && $tpl->compiled->has_nocache_code) {
- $parent->cached->hashes[$tpl->compiled->nocache_hash] = true;
- }
- } else {
- if (isset($tpl->compiled)) {
- $tpl->compiled->render($tpl);
- } else {
- $tpl->render();
- }
- }
- if ($scopePtr) {
- if ($scope == Smarty::SCOPE_GLOBAL) {
- Smarty::$global_tpl_vars = $tpl->tpl_vars;
- $tpl->smarty->config_vars = $tpl->config_vars;
- } else {
- $scopePtr->tpl_vars = $tpl->tpl_vars;
- $scopePtr->config_vars = $tpl->config_vars;
- }
- }
- }
-
- /**
- * Get called subtemplates from compiled template and save call count
- *
- * @param \Smarty_Internal_Template $tpl
- */
- public function registerSubTemplates(Smarty_Internal_Template $tpl)
- {
- foreach ($tpl->compiled->includes as $name => $count) {
- if (isset($this->subTplInfo[$name])) {
- $this->subTplInfo[$name] += $count;
- } else {
- $this->subTplInfo[$name] = $count;
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
deleted file mode 100644
index 634ed5dc6..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-/**
- * Tplfunc Runtime Methods callTemplateFunction
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_TplFunction
-{
- /**
- * Call template function
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $name template function name
- * @param array $params parameter array
- * @param bool $nocache true if called nocache
- *
- * @throws \SmartyException
- */
- public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache)
- {
- if (isset($tpl->tpl_function[$name])) {
- if (!$tpl->caching || ($tpl->caching && $nocache)) {
- $function = $tpl->tpl_function[$name]['call_name'];
- } else {
- if (isset($tpl->tpl_function[$name]['call_name_caching'])) {
- $function = $tpl->tpl_function[$name]['call_name_caching'];
- } else {
- $function = $tpl->tpl_function[$name]['call_name'];
- }
- }
- if (function_exists($function)) {
- $function ($tpl, $params);
- return;
- }
- // try to load template function dynamically
- if ($this->addTplFuncToCache($tpl, $name, $function)) {
- $function ($tpl, $params);
- return;
- }
- }
- throw new SmartyException("Unable to find template function '{$name}'");
- }
-
- /**
- *
- * Add template function to cache file for nocache calls
- *
- * @param Smarty_Internal_Template $tpl
- * @param string $_name template function name
- * @param string $_function PHP function name
- *
- * @return bool
- */
- public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function)
- {
- $funcParam = $tpl->tpl_function[$_name];
- if (is_file($funcParam['compiled_filepath'])) {
- // read compiled file
- $code = file_get_contents($funcParam['compiled_filepath']);
- // grab template function
- if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
- // grab source info from file dependency
- preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
- unset($code);
- // make PHP function known
- eval($match[0]);
- if (function_exists($_function)) {
- // search cache file template
- $tplPtr = $tpl;
- while (!isset($tplPtr->cached) && isset($tplPtr->parent)) {
- $tplPtr = $tplPtr->parent;
- }
- // add template function code to cache file
- if (isset($tplPtr->cached)) {
- $cache = $tplPtr->cached;
- $content = $cache->read($tplPtr);
- if ($content) {
- // check if we must update file dependency
- if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
- $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
- }
- $tplPtr->smarty->ext->_updateCache->write($cache, $tplPtr, preg_replace('/\s*\?>\s*$/', "\n", $content) . "\n" .
- preg_replace(array('/^\s*<\?php\s+/', '/\s*\?>\s*$/'), "\n",
- $match[0]));
- }
- }
- return true;
- }
- }
- }
- return false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
deleted file mode 100644
index a895a3070..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-
-/**
- * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_UpdateCache
-{
- /**
- * check client side cache
- *
- * @param \Smarty_Template_Cached $cached
- * @param Smarty_Internal_Template $_template
- * @param string $content
- */
- public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
- {
- }
-
- /**
- * Sanitize content and write it to cache resource
- *
- * @param \Smarty_Template_Cached $cached
- * @param Smarty_Internal_Template $_template
- * @param bool $no_output_filter
- *
- * @throws \SmartyException
- */
- public function removeNoCacheHash(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template,
- $no_output_filter)
- {
- $content = ob_get_clean();
- unset($cached->hashes[$_template->compiled->nocache_hash]);
- if (!empty($cached->hashes)) {
- $hash_array = array();
- foreach ($cached->hashes as $hash => $foo) {
- $hash_array[] = "/{$hash}/";
- }
- $content = preg_replace($hash_array, $_template->compiled->nocache_hash, $content);
- }
- $_template->cached->has_nocache_code = false;
- // get text between non-cached items
- $cache_split =
- preg_split("!/\*%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*/!s",
- $content);
- // get non-cached items
- preg_match_all("!/\*%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*/!s",
- $content, $cache_parts);
- $content = '';
- // loop over items, stitch back together
- foreach ($cache_split as $curr_idx => $curr_split) {
- // escape PHP tags in template content
- $content .= preg_replace('/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/',
- "<?php echo '\$1'; ?>\n", $curr_split);
- if (isset($cache_parts[0][$curr_idx])) {
- $_template->cached->has_nocache_code = true;
- $content .= $cache_parts[1][$curr_idx];
- }
- }
- if (!$no_output_filter && !$_template->compiled->has_nocache_code &&
- (isset($_template->smarty->autoload_filters['output']) ||
- isset($_template->smarty->registered_filters['output']))
- ) {
- $content = $_template->smarty->ext->_filterHandler->runFilter('output', $content, $_template);
- }
- // write cache file content
- $this->writeCachedContent($cached, $_template, $content);
- }
-
- /**
- * Cache was invalid , so render from compiled and write to cache
- *
- * @param \Smarty_Template_Cached $cached
- * @param \Smarty_Internal_Template $_template
- * @param $no_output_filter
- *
- * @throws \Exception
- */
- public function updateCache(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $no_output_filter)
- {
- if ($_template->source->handler->uncompiled) {
- ob_start();
- $_template->source->render($_template);
- } else {
- ob_start();
- if (!isset($_template->compiled)) {
- $_template->loadCompiled();
- }
- $_template->compiled->render($_template);
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_cache($_template);
- }
- $this->removeNoCacheHash($cached, $_template, $no_output_filter);
- $compile_check = $_template->smarty->compile_check;
- $_template->smarty->compile_check = false;
- if (isset($_template->parent) && $_template->parent->_objType == 2) {
- $_template->compiled->unifunc = $_template->parent->compiled->unifunc;
- }
- if (!$_template->cached->processed) {
- $_template->cached->process($_template, true);
- }
- $_template->smarty->compile_check = $compile_check;
- $cached->getRenderedTemplateCode($_template);
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_cache($_template);
- }
- }
-
- /**
- * Writes the content to cache resource
- *
- * @param \Smarty_Template_Cached $cached
- * @param Smarty_Internal_Template $_template
- * @param string $content
- *
- * @return bool
- */
- public function writeCachedContent(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
- {
- if ($_template->source->handler->recompiled || !($_template->caching == Smarty::CACHING_LIFETIME_CURRENT ||
- $_template->caching == Smarty::CACHING_LIFETIME_SAVED)
- ) {
- // don't write cache file
- return false;
- }
- $content = $_template->smarty->ext->_codeFrame->create($_template, $content, '', true);
- return $this->write($cached, $_template, $content);
- }
-
- /**
- * Write this cache object to handler
- *
- * @param \Smarty_Template_Cached $cached
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- *
- * @return bool success
- */
- public function write(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
- {
- if (!$_template->source->handler->recompiled) {
- if ($cached->handler->writeCachedContent($_template, $content)) {
- $cached->content = null;
- $cached->timestamp = time();
- $cached->exists = true;
- $cached->valid = true;
- $cached->cache_lifetime = $_template->cache_lifetime;
- $cached->processed = false;
- if ($_template->smarty->cache_locking) {
- $cached->handler->releaseLock($_template->smarty, $cached);
- }
-
- return true;
- }
- $cached->content = null;
- $cached->timestamp = false;
- $cached->exists = false;
- $cached->valid = false;
- $cached->processed = false;
- }
-
- return false;
- }
-
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
deleted file mode 100644
index 5a125a4a7..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/**
- * Runtime Methods updateScope
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_UpdateScope
-{
- /**
- * Update new assigned template variable in other effected scopes
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $varName variable name
- * @param int $scope scope to which bubble up variable value
- */
- public function updateScope(Smarty_Internal_Template $tpl, $varName, $scope = Smarty::SCOPE_LOCAL)
- {
- if (!$scope && !$tpl->scope) {
- return;
- }
- foreach (array($scope, $tpl->scope) as $s) {
- $s = ($bubble_up = $s >= Smarty::SCOPE_BUBBLE_UP) ? $s - Smarty::SCOPE_BUBBLE_UP : $s;
- if ($bubble_up && $s) {
- $ptr = $tpl->parent;
- if (isset($ptr)) {
- $ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_PARENT) {
- continue;
- }
- while (isset($ptr) && $ptr->_objType == 2) {
- $ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- $ptr = $ptr->parent;
- }
- if ($s == Smarty::SCOPE_TPL_ROOT) {
- continue;
- } elseif ($s == Smarty::SCOPE_SMARTY) {
- $tpl->smarty->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- } elseif ($s == Smarty::SCOPE_GLOBAL) {
- Smarty::$global_tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- } elseif ($s == Smarty::SCOPE_ROOT) {
- while (isset($ptr->parent)) {
- $ptr = $ptr->parent;
- }
- $ptr->tpl_vars[$varName] = $tpl->tpl_vars[$varName];
- }
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php
deleted file mode 100644
index 7defd6c92..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_validatecompiled.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/**
- * Runtime Methods decodeProperties
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_ValidateCompiled
-{
- /**
- * This function is executed automatically when a compiled or cached template file is included
- * - Decode saved properties from compiled template and cache files
- * - Check if compiled or cache file is valid
- *
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- *
- * @return bool flag if compiled or cache file is valid
- */
- public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
- {
- $is_valid = true;
- if (Smarty::SMARTY_VERSION != $properties['version']) {
- // new version must rebuild
- $is_valid = false;
- } elseif ($is_valid && !empty($properties['file_dependency']) &&
- ((!$cache && $tpl->smarty->compile_check) || $tpl->smarty->compile_check == 1)
- ) {
- // check file dependencies at compiled code
- foreach ($properties['file_dependency'] as $_file_to_check) {
- if ($_file_to_check[2] == 'file' || $_file_to_check[2] == 'extends' || $_file_to_check[2] == 'php') {
- if ($tpl->source->filepath == $_file_to_check[0]) {
- // do not recheck current template
- continue;
- //$mtime = $tpl->source->getTimeStamp();
- } else {
- // file and php types can be checked without loading the respective resource handlers
- $mtime = is_file($_file_to_check[0]) ? filemtime($_file_to_check[0]) : false;
- }
- } elseif ($_file_to_check[2] == 'string') {
- continue;
- } else {
- $handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[2]);
- if ($handler->checkTimestamps()) {
- $source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]);
- $mtime = $source->getTimeStamp();
- } else {
- continue;
- }
- }
- if (!$mtime || $mtime > $_file_to_check[1]) {
- $is_valid = false;
- break;
- }
- }
- }
- if ($cache) {
- // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
- if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties['cache_lifetime'] >= 0 &&
- (time() > ($tpl->cached->timestamp + $properties['cache_lifetime']))
- ) {
- $is_valid = false;
- }
- $tpl->cached->cache_lifetime = $properties['cache_lifetime'];
- $tpl->cached->valid = $is_valid;
- $resource = $tpl->cached;
- } else {
- $tpl->mustCompile = !$is_valid;
- $resource = $tpl->compiled;
- $resource->includes = isset($properties['includes']) ? $properties['includes'] : array();
- }
- if ($is_valid) {
- $resource->unifunc = $properties['unifunc'];
- $resource->has_nocache_code = $properties['has_nocache_code'];
- // $tpl->compiled->nocache_hash = $properties['nocache_hash'];
- $resource->file_dependency = $properties['file_dependency'];
- if (isset($properties['tpl_function'])) {
- $tpl->tpl_function = $properties['tpl_function'];
- }
- }
- return $is_valid && !function_exists($properties['unifunc']);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php
deleted file mode 100644
index 8e09108fe..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_var.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/**
- * Runtime Methods createLocalArrayVariable
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- *
- **/
-class Smarty_Internal_Runtime_Var
-{
- /**
- * Template code runtime function to create a local Smarty variable for array assignments
- *
- * @param \Smarty_Internal_Template $tpl template object
- * @param string $varName template variable name
- * @param bool $nocache cache mode of variable
- */
- public function createLocalArrayVariable(Smarty_Internal_Template $tpl, $varName, $nocache = false)
- {
- if (!isset($tpl->tpl_vars[$varName])) {
- $tpl->tpl_vars[$varName] = new Smarty_Variable(array(), $nocache);
- } else {
- $tpl->tpl_vars[$varName] = clone $tpl->tpl_vars[$varName];
- if (!(is_array($tpl->tpl_vars[$varName]->value) ||
- $tpl->tpl_vars[$varName]->value instanceof ArrayAccess)
- ) {
- settype($tpl->tpl_vars[$varName]->value, 'array');
- }
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php b/library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
deleted file mode 100644
index 05c973783..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Smarty write file plugin
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Monte Ohrt
- */
-
-/**
- * Smarty Internal Write File Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Runtime_WriteFile
-{
- /**
- * Writes file in a safe way to disk
- *
- * @param string $_filepath complete filepath
- * @param string $_contents file content
- * @param Smarty $smarty smarty instance
- *
- * @throws SmartyException
- * @return boolean true
- */
- public function writeFile($_filepath, $_contents, Smarty $smarty)
- {
- $_error_reporting = error_reporting();
- error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
- $_file_perms = property_exists($smarty, '_file_perms') ? $smarty->_file_perms : 0644;
- $_dir_perms = property_exists($smarty, '_dir_perms') ? (isset($smarty->_dir_perms) ? $smarty->_dir_perms : 0777) : 0771;
- if ($_file_perms !== null) {
- $old_umask = umask(0);
- }
-
- $_dirpath = dirname($_filepath);
- // if subdirs, create dir structure
- if ($_dirpath !== '.' && !file_exists($_dirpath)) {
- mkdir($_dirpath, $_dir_perms, true);
- }
-
- // write to tmp file, then move to overt file lock race condition
- $_tmp_file = $_dirpath . DS . str_replace(array('.', ','), '_', uniqid('wrt', true));
- if (!file_put_contents($_tmp_file, $_contents)) {
- error_reporting($_error_reporting);
- throw new SmartyException("unable to write file {$_tmp_file}");
- }
-
- /*
- * Windows' rename() fails if the destination exists,
- * Linux' rename() properly handles the overwrite.
- * Simply unlink()ing a file might cause other processes
- * currently reading that file to fail, but linux' rename()
- * seems to be smart enough to handle that for us.
- */
- if (Smarty::$_IS_WINDOWS) {
- // remove original file
- if (is_file($_filepath)) {
- @unlink($_filepath);
- }
- // rename tmp file
- $success = @rename($_tmp_file, $_filepath);
- } else {
- // rename tmp file
- $success = @rename($_tmp_file, $_filepath);
- if (!$success) {
- // remove original file
- if (is_file($_filepath)) {
- @unlink($_filepath);
- }
- // rename tmp file
- $success = @rename($_tmp_file, $_filepath);
- }
- }
- if (!$success) {
- error_reporting($_error_reporting);
- throw new SmartyException("unable to write file {$_filepath}");
- }
- if ($_file_perms !== null) {
- // set file permissions
- chmod($_filepath, $_file_perms);
- umask($old_umask);
- }
- error_reporting($_error_reporting);
-
- return true;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
deleted file mode 100644
index 116bbea7b..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Smarty Template Compiler Base
- * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Class SmartyTemplateCompiler
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase
-{
- /**
- * Lexer class name
- *
- * @var string
- */
- public $lexer_class;
-
- /**
- * Parser class name
- *
- * @var string
- */
- public $parser_class;
-
- /**
- * array of vars which can be compiled in local scope
- *
- * @var array
- */
- public $local_var = array();
-
- /**
- * array of callbacks called when the normal compile process of template is finished
- *
- * @var array
- */
- public $postCompileCallbacks = array();
-
- /**
- * prefix code
- *
- * @var string
- */
- public $prefixCompiledCode = '';
-
- /**
- * postfix code
- *
- * @var string
- */
- public $postfixCompiledCode = '';
-
- /**
- * Initialize compiler
- *
- * @param string $lexer_class class name
- * @param string $parser_class class name
- * @param Smarty $smarty global instance
- */
- public function __construct($lexer_class, $parser_class, Smarty $smarty)
- {
- parent::__construct($smarty);
- // get required plugins
- $this->lexer_class = $lexer_class;
- $this->parser_class = $parser_class;
- }
-
- /**
- * method to compile a Smarty template
- *
- * @param mixed $_content template source
- * @param bool $isTemplateSource
- *
- * @return bool true if compiling succeeded, false if it failed
- * @throws \SmartyCompilerException
- */
- protected function doCompile($_content, $isTemplateSource = false)
- {
- /* here is where the compiling takes place. Smarty
- tags in the templates are replaces with PHP code,
- then written to compiled files. */
- // init the lexer/parser to compile the template
- $this->parser =
- new $this->parser_class(new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $_content), $this),
- $this);
- if ($isTemplateSource && $this->template->caching) {
- $this->parser->insertPhpCode("<?php\n\$_smarty_tpl->compiled->nocache_hash = '{$this->nocache_hash}';\n?>\n");
- }
- if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
- $mbEncoding = mb_internal_encoding();
- mb_internal_encoding('ASCII');
- } else {
- $mbEncoding = null;
- }
-
- if ($this->smarty->_parserdebug) {
- $this->parser->PrintTrace();
- $this->parser->lex->PrintTrace();
- }
- // get tokens from lexer and parse them
- while ($this->parser->lex->yylex()) {
- if ($this->smarty->_parserdebug) {
- echo "<pre>Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " .
- htmlentities($this->parser->lex->value) . "</pre>";
- }
- $this->parser->doParse($this->parser->lex->token, $this->parser->lex->value);
- }
-
- // finish parsing process
- $this->parser->doParse(0, 0);
- if ($mbEncoding) {
- mb_internal_encoding($mbEncoding);
- }
- // check for unclosed tags
- if (count($this->_tag_stack) > 0) {
- // get stacked info
- list($openTag, $_data) = array_pop($this->_tag_stack);
- $this->trigger_template_error("unclosed {$this->smarty->left_delimiter}" . $openTag .
- "{$this->smarty->right_delimiter} tag");
- }
- // call post compile callbacks
- foreach ($this->postCompileCallbacks as $cb) {
- $parameter = $cb;
- $parameter[0] = $this;
- call_user_func_array($cb[0], $parameter);
- }
- // return compiled code
- return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode;
- }
-
- /**
- * Register a post compile callback
- * - when the callback is called after template compiling the compiler object will be inserted as first parameter
- *
- * @param callback $callback
- * @param array $parameter optional parameter array
- * @param string $key optional key for callback
- * @param bool $replace if true replace existing keyed callback
- */
- public function registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
- {
- array_unshift($parameter, $callback);
- if (isset($key)) {
- if ($replace || !isset($this->postCompileCallbacks[$key])) {
- $this->postCompileCallbacks[$key] = $parameter;
- }
- } else {
- $this->postCompileCallbacks[] = $parameter;
- }
- }
-
- /**
- * Remove a post compile callback
- *
- * @param string $key callback key
- */
- public function unregisterPostCompileCallback($key)
- {
- unset($this->postCompileCallbacks[$key]);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_template.php b/library/Smarty/libs/sysplugins/smarty_internal_template.php
deleted file mode 100644
index 7c16a53db..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_template.php
+++ /dev/null
@@ -1,376 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Template
- * This file contains the Smarty template engine
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Main class with template data structures and methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @property Smarty_Template_Source|Smarty_Template_Config $source
- * @property Smarty_Template_Compiled $compiled
- * @property Smarty_Template_Cached $cached
- * @method bool mustCompile()
- */
-class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
-{
- /**
- * This object type (Smarty = 1, template = 2, data = 4)
- *
- * @var int
- */
- public $_objType = 2;
-
- /**
- * Global smarty instance
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Source instance
- *
- * @var Smarty_Template_Source|Smarty_Template_Config
- */
- public $source = null;
-
- /**
- * Template resource
- *
- * @var string
- */
- public $template_resource = null;
-
- /**
- * flag if compiled template is invalid and must be (re)compiled
- *
- * @var bool
- */
- public $mustCompile = null;
-
- /**
- * Template Id
- *
- * @var null|string
- */
- public $templateId = null;
-
- /**
- * Known template functions
- *
- * @var array
- */
- public $tpl_function = array();
-
- /**
- * Scope in which template is rendered
- *
- * @var int
- */
- public $scope = 0;
-
- /**
- * Create template data object
- * Some of the global Smarty settings copied to template scope
- * It load the required template resources and caching plugins
- *
- * @param string $template_resource template resource string
- * @param Smarty $smarty Smarty instance
- * @param \Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent object
- * with variables or null
- * @param mixed $_cache_id cache id or null
- * @param mixed $_compile_id compile id or null
- * @param bool $_caching use caching?
- * @param int $_cache_lifetime cache life-time in seconds
- *
- * @throws \SmartyException
- */
- public function __construct($template_resource, Smarty $smarty, Smarty_Internal_Data $_parent = null,
- $_cache_id = null, $_compile_id = null, $_caching = null, $_cache_lifetime = null)
- {
- $this->smarty = &$smarty;
- // Smarty parameter
- $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
- $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
- $this->caching = $_caching === null ? $this->smarty->caching : $_caching;
- if ($this->caching === true) {
- $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
- }
- $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
- $this->parent = $_parent;
- // Template resource
- $this->template_resource = $template_resource;
- $this->source = Smarty_Template_Source::load($this);
- parent::__construct();
- }
-
- /**
- * render template
- *
- * @param bool $merge_tpl_vars if true parent template variables merged in to local scope
- * @param bool $no_output_filter if true do not run output filter
- * @param bool $display true: display, false: fetch null: subtemplate
- *
- * @throws Exception
- * @throws SmartyException
- * @return string rendered template output
- */
- public function render($no_output_filter = true, $display = null)
- {
- $parentIsTpl = isset($this->parent) && $this->parent->_objType == 2;
- if ($this->smarty->debugging) {
- $this->smarty->_debug->start_template($this, $display);
- }
- // checks if template exists
- if (!$this->source->exists) {
- if ($parentIsTpl) {
- $parent_resource = " in '{$this->parent->template_resource}'";
- } else {
- $parent_resource = '';
- }
- throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'{$parent_resource}");
- }
- // disable caching for evaluated code
- if ($this->source->handler->recompiled) {
- $this->caching = false;
- }
- // read from cache or render
- $isCacheTpl =
- $this->caching == Smarty::CACHING_LIFETIME_CURRENT || $this->caching == Smarty::CACHING_LIFETIME_SAVED;
- if ($isCacheTpl) {
- if (!isset($this->cached)) {
- $this->loadCached();
- }
- $this->cached->render($this, $no_output_filter);
- } elseif ($this->source->handler->uncompiled) {
- $this->source->render($this);
- } else {
- if (!isset($this->compiled)) {
- $this->loadCompiled();
- }
- $this->compiled->render($this);
- }
-
- // display or fetch
- if ($display) {
- if ($this->caching && $this->smarty->cache_modified_check) {
- $this->smarty->ext->_cachemodify->cacheModifiedCheck($this->cached, $this,
- isset($content) ? $content : ob_get_clean());
- } else {
- if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
- !$no_output_filter && (isset($this->smarty->autoload_filters['output']) ||
- isset($this->smarty->registered_filters['output']))
- ) {
- echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
- } else {
- ob_end_flush();
- flush();
- }
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_template($this);
- // debug output
- $this->smarty->_debug->display_debug($this, true);
- }
- return '';
- } else {
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_template($this);
- if ($this->smarty->debugging === 2 && $display === false) {
- $this->smarty->_debug->display_debug($this, true);
- }
- }
- if ($parentIsTpl) {
- if (!empty($this->tpl_function)) {
- $this->parent->tpl_function = array_merge($this->parent->tpl_function, $this->tpl_function);
- }
- foreach ($this->compiled->required_plugins as $code => $tmp1) {
- foreach ($tmp1 as $name => $tmp) {
- foreach ($tmp as $type => $data) {
- $this->parent->compiled->required_plugins[$code][$name][$type] = $data;
- }
- }
- }
- }
- if (!$no_output_filter &&
- (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
- (isset($this->smarty->autoload_filters['output']) || isset($this->smarty->registered_filters['output']))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
- }
- // return cache content
- return null;
- }
- }
-
- /**
- * Compiles the template
- * If the template is not evaluated the compiled template is saved on disk
- */
- public function compileTemplateSource()
- {
- return $this->compiled->compileTemplateSource($this);
- }
-
- /**
- * Writes the content to cache resource
- *
- * @param string $content
- *
- * @return bool
- */
- public function writeCachedContent($content)
- {
- return $this->smarty->ext->_updateCache->writeCachedContent($this->cached, $this, $content);
- }
-
- /**
- * Get unique template id
- *
- * @return string
- */
- public function _getTemplateId()
- {
- return isset($this->templateId) ? $this->templateId : $this->templateId =
- $this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id);
- }
-
- /**
- * runtime error not matching capture tags
- */
- public function capture_error()
- {
- throw new SmartyException("Not matching {capture} open/close in \"{$this->template_resource}\"");
- }
-
- /**
- * Load compiled object
- *
- */
- public function loadCompiled()
- {
- if (!isset($this->compiled)) {
- $this->compiled = Smarty_Template_Compiled::load($this);
- }
- }
-
- /**
- * Load cached object
- *
- */
- public function loadCached()
- {
- if (!isset($this->cached)) {
- $this->cached = Smarty_Template_Cached::load($this);
- }
- }
-
- /**
- * Load compiler object
- *
- * @throws \SmartyException
- */
- public function loadCompiler()
- {
- if (!class_exists($this->source->handler->compiler_class)) {
- $this->smarty->loadPlugin($this->source->handler->compiler_class);
- }
- $this->compiler = new $this->source->handler->compiler_class($this->source->handler->template_lexer_class,
- $this->source->handler->template_parser_class,
- $this->smarty);
- }
-
- /**
- * Handle unknown class methods
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- // method of Smarty object?
- if (method_exists($this->smarty, $name)) {
- return call_user_func_array(array($this->smarty, $name), $args);
- }
- // parent
- return parent::__call($name, $args);
- }
-
- /**
- * set Smarty property in template context
- *
- * @param string $property_name property name
- * @param mixed $value value
- *
- * @throws SmartyException
- */
- public function __set($property_name, $value)
- {
- switch ($property_name) {
- case 'compiled':
- case 'cached':
- case 'compiler':
- $this->$property_name = $value;
- return;
- default:
- // Smarty property ?
- if (property_exists($this->smarty, $property_name)) {
- $this->smarty->$property_name = $value;
- return;
- }
- }
- throw new SmartyException("invalid template property '$property_name'.");
- }
-
- /**
- * get Smarty property in template context
- *
- * @param string $property_name property name
- *
- * @return mixed|Smarty_Template_Cached
- * @throws SmartyException
- */
- public function __get($property_name)
- {
- switch ($property_name) {
- case 'compiled':
- $this->loadCompiled();
- return $this->compiled;
-
- case 'cached':
- $this->loadCached();
- return $this->cached;
-
- case 'compiler':
- $this->loadCompiler();
- return $this->compiler;
- default:
- // Smarty property ?
- if (property_exists($this->smarty, $property_name)) {
- return $this->smarty->$property_name;
- }
- }
- throw new SmartyException("template property '$property_name' does not exist.");
- }
-
- /**
- * Template data object destructor
- */
- public function __destruct()
- {
- if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) {
- $this->cached->handler->releaseLock($this->smarty, $this->cached);
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php b/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php
deleted file mode 100644
index 9b4953dee..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php
+++ /dev/null
@@ -1,316 +0,0 @@
-<?php
-/**
- * Smarty Internal Plugin Smarty Template Base
- * This file contains the basic shared methods for template handling
- *
- * @package Smarty
- * @subpackage Template
- * @author Uwe Tews
- */
-
-/**
- * Class with shared template methods
- *
- * @package Smarty
- * @subpackage Template
- *
- * @property Smarty $smarty
- * @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null)
- * @method Smarty_Internal_TemplateBase addAutoloadFilters(mixed $filters, string $type = null)
- * @method array getAutoloadFilters(string $type = null)
- * @local_method Smarty_Internal_TemplateBase registerFilter(string $type, callback $callback, string $name = null)
- * @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback)
- * @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name)
- * @method string getDebugTemplate()
- * @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name)
- * @method Smarty_Internal_TemplateBase setDefaultModifier(mixed $modifiers)
- * @method Smarty_Internal_TemplateBase addDefaultModifier(mixed $modifiers)
- * @method array getDefaultModifier()
- * @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback)
- * @method Smarty_Internal_TemplateBase registerResource(string $name, Smarty_Resource $resource_handler)
- * @method Smarty_Internal_TemplateBase unregisterResource(string $name)
- * @method Smarty_Internal_TemplateBase registerCacheResource(string $name, Smarty_CacheResource $resource_handler)
- * @method Smarty_Internal_TemplateBase unregisterCacheResource(string $name)
- * @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name)
- * @method Smarty_Internal_TemplateBase unregisterObject(string $object_name)
- * @method object getRegisteredObject(string $object_name)
- * @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl)
- * @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null)
- * @method array getTags(mixed $template = null)
- */
-abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
-{
- /**
- * Set this if you want different sets of cache files for the same
- * templates.
- *
- * @var string
- */
- public $cache_id = null;
-
- /**
- * Set this if you want different sets of compiled files for the same
- * templates.
- *
- * @var string
- */
- public $compile_id = null;
-
- /**
- * caching enabled
- *
- * @var boolean
- */
- public $caching = false;
-
- /**
- * cache lifetime in seconds
- *
- * @var integer
- */
- public $cache_lifetime = 3600;
-
- /**
- * universal cache
- *
- * @var array()
- */
- public $_cache = array();
-
- /**
- * fetches a rendered Smarty template
- *
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- *
- * @throws Exception
- * @throws SmartyException
- * @return string rendered template output
- */
- public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null)
- {
- $result = $this->_execute($template, $cache_id, $compile_id, $parent, 0);
- return $result === null ? ob_get_clean() : $result;
- }
-
- /**
- * displays a Smarty template
- *
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- */
- public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
- {
- // display template
- $this->_execute($template, $cache_id, $compile_id, $parent, 1);
- }
-
- /**
- * test if cache is valid
- *
- * @api Smarty::isCached()
- * @link http://www.smarty.net/docs/en/api.is.cached.tpl
- *
- * @param null|string|\Smarty_Internal_Template $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- *
- * @return boolean cache status
- */
- public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null)
- {
- return $this->_execute($template, $cache_id, $compile_id, $parent, 2);
- }
-
- /**
- * fetches a rendered Smarty template
- *
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
- *
- * @return mixed
- * @throws \Exception
- * @throws \SmartyException
- */
- private function _execute($template, $cache_id, $compile_id, $parent, $function)
- {
- $smarty = $this->_objType == 1 ? $this : $this->smarty;
- if ($template === null) {
- if ($this->_objType != 2) {
- throw new SmartyException($function . '():Missing \'$template\' parameter');
- } else {
- $template = clone $this;
- }
- } elseif (is_object($template)) {
- if (!isset($template->_objType) || $template->_objType != 2) {
- throw new SmartyException($function . '():Template object expected');
- } else {
- /* @var Smarty_Internal_Template $template */
- $template = clone $template;
- }
- } else {
- // get template object
- /* @var Smarty_Internal_Template $template */
- $template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent, false);
- if ($this->_objType == 1) {
- // set caching in template object
- $template->caching = $this->caching;
- }
- }
- // fetch template content
- $level = ob_get_level();
- try {
- $_smarty_old_error_level =
- ($this->_objType == 1 && isset($smarty->error_reporting)) ? error_reporting($smarty->error_reporting) :
- null;
- if ($function == 2) {
- if ($template->caching) {
- // return cache status of template
- if (!isset($template->cached)) {
- $template->loadCached();
- }
- $result = $template->cached->isCached($template);
- $template->smarty->_cache['isCached'][$template->_getTemplateId()] = $template;
- } else {
- return false;
- }
- } else {
- ob_start();
- $template->_mergeVars();
- if (!empty(Smarty::$global_tpl_vars)) {
- $template->tpl_vars = array_merge(Smarty::$global_tpl_vars, $template->tpl_vars);
- }
- $result = $template->render(false, $function);
- }
- if (isset($_smarty_old_error_level)) {
- error_reporting($_smarty_old_error_level);
- }
- return $result;
- }
- catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- throw $e;
- }
- }
-
- /**
- * Registers plugin to be used in templates
- *
- * @api Smarty::registerPlugin()
- * @link http://www.smarty.net/docs/en/api.register.plugin.tpl
- *
- * @param string $type plugin type
- * @param string $name name of template tag
- * @param callback $callback PHP callback to register
- * @param bool $cacheable if true (default) this function is cache able
- * @param mixed $cache_attr caching attributes if any
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws SmartyException when the plugin tag is invalid
- */
- public function registerPlugin($type, $name, $callback, $cacheable = true, $cache_attr = null)
- {
- return $this->ext->registerPlugin->registerPlugin($this, $type, $name, $callback, $cacheable, $cache_attr);
- }
-
- /**
- * load a filter of specified type and name
- *
- * @api Smarty::loadFilter()
- * @link http://www.smarty.net/docs/en/api.load.filter.tpl
- *
- * @param string $type filter type
- * @param string $name filter name
- *
- * @return bool
- * @throws SmartyException if filter could not be loaded
- */
- public function loadFilter($type, $name)
- {
- return $this->ext->loadFilter->loadFilter($this, $type, $name);
- }
-
- /**
- * Registers a filter function
- *
- * @api Smarty::registerFilter()
- * @link http://www.smarty.net/docs/en/api.register.filter.tpl
- *
- * @param string $type filter type
- * @param callback $callback
- * @param string|null $name optional filter name
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerFilter($type, $callback, $name = null)
- {
- return $this->ext->registerFilter->registerFilter($this, $type, $callback, $name);
- }
-
- /**
- * Registers object to be used in templates
- *
- * @api Smarty::registerObject()
- * @link http://www.smarty.net/docs/en/api.register.object.tpl
- *
- * @param string $object_name
- * @param object $object the referenced PHP object to register
- * @param array $allowed_methods_properties list of allowed methods (empty = all)
- * @param bool $format smarty argument format, else traditional
- * @param array $block_methods list of block-methods
- *
- * @return \Smarty|\Smarty_Internal_Template
- * @throws \SmartyException
- */
- public function registerObject($object_name, $object, $allowed_methods_properties = array(), $format = true,
- $block_methods = array())
- {
- return $this->ext->registerObject->registerObject($this, $object_name, $object, $allowed_methods_properties,
- $format, $block_methods);
- }
-
- /**
- * @param boolean $caching
- */
- public function setCaching($caching)
- {
- $this->caching = $caching;
- }
-
- /**
- * @param int $cache_lifetime
- */
- public function setCacheLifetime($cache_lifetime)
- {
- $this->cache_lifetime = $cache_lifetime;
- }
-
- /**
- * @param string $compile_id
- */
- public function setCompileId($compile_id)
- {
- $this->compile_id = $compile_id;
- }
-
- /**
- * @param string $cache_id
- */
- public function setCacheId($cache_id)
- {
- $this->cache_id = $cache_id;
- }
-
-}
-
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
deleted file mode 100644
index 6c3ea5f5d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ /dev/null
@@ -1,1170 +0,0 @@
-<?php
-
-/**
- * Smarty Internal Plugin Smarty Template Compiler Base
- * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Main abstract compiler class
- *
- * @package Smarty
- * @subpackage Compiler
- *
- * @property Smarty_Internal_SmartyTemplateCompiler $prefixCompiledCode = ''
- * @property Smarty_Internal_SmartyTemplateCompiler $postfixCompiledCode = ''
- * @method Smarty_Internal_SmartyTemplateCompiler registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
- * @method Smarty_Internal_SmartyTemplateCompiler unregisterPostCompileCallback($key)
- */
-abstract class Smarty_Internal_TemplateCompilerBase
-{
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Parser object
- *
- * @var Smarty_Internal_Templateparser
- */
- public $parser = null;
-
- /**
- * hash for nocache sections
- *
- * @var mixed
- */
- public $nocache_hash = null;
-
- /**
- * suppress generation of nocache code
- *
- * @var bool
- */
- public $suppressNocacheProcessing = false;
-
- /**
- * compile tag objects cache
- *
- * @var array
- */
- public $_tag_objects = array();
-
- /**
- * tag stack
- *
- * @var array
- */
- public $_tag_stack = array();
-
- /**
- * current template
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * merged included sub template data
- *
- * @var array
- */
- public $mergedSubTemplatesData = array();
-
- /**
- * merged sub template code
- *
- * @var array
- */
- public $mergedSubTemplatesCode = array();
-
- /**
- * collected template properties during compilation
- *
- * @var array
- */
- public $templateProperties = array();
-
- /**
- * source line offset for error messages
- *
- * @var int
- */
- public $trace_line_offset = 0;
-
- /**
- * trace uid
- *
- * @var string
- */
- public $trace_uid = '';
-
- /**
- * trace file path
- *
- * @var string
- */
- public $trace_filepath = '';
-
- /**
- * stack for tracing file and line of nested {block} tags
- *
- * @var array
- */
- public $trace_stack = array();
-
- /**
- * plugins loaded by default plugin handler
- *
- * @var array
- */
- public $default_handler_plugins = array();
-
- /**
- * saved preprocessed modifier list
- *
- * @var mixed
- */
- public $default_modifier_list = null;
-
- /**
- * force compilation of complete template as nocache
- *
- * @var boolean
- */
- public $forceNocache = false;
-
- /**
- * flag if compiled template file shall we written
- *
- * @var bool
- */
- public $write_compiled_code = true;
-
- /**
- * Template functions
- *
- * @var array
- */
- public $tpl_function = array();
-
- /**
- * called sub functions from template function
- *
- * @var array
- */
- public $called_functions = array();
-
- /**
- * compiled template or block function code
- *
- * @var string
- */
- public $blockOrFunctionCode = '';
-
- /**
- * php_handling setting either from Smarty or security
- *
- * @var int
- */
- public $php_handling = 0;
-
- /**
- * flags for used modifier plugins
- *
- * @var array
- */
- public $modifier_plugins = array();
-
- /**
- * type of already compiled modifier
- *
- * @var array
- */
- public $known_modifier_type = array();
-
- /**
- * parent compiler object for merged subtemplates and template functions
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $parent_compiler = null;
-
- /**
- * Flag true when compiling nocache section
- *
- * @var bool
- */
- public $nocache = false;
-
- /**
- * Flag true when tag is compiled as nocache
- *
- * @var bool
- */
- public $tag_nocache = false;
-
- /**
- * Compiled tag prefix code
- *
- * @var array
- */
- public $prefix_code = array();
-
- /**
- * Prefix code stack
- *
- * @var array
- */
- public $prefixCodeStack = array();
-
- /**
- * Tag has compiled code
- *
- * @var bool
- */
- public $has_code = false;
-
- /**
- * A variable string was compiled
- *
- * @var bool
- */
- public $has_variable_string = false;
-
- /**
- * Tag creates output
- *
- * @var bool
- */
- public $has_output = false;
-
- /**
- * Stack for {setfilter} {/setfilter}
- *
- * @var array
- */
- public $variable_filter_stack = array();
-
- /**
- * variable filters for {setfilter} {/setfilter}
- *
- * @var array
- */
- public $variable_filters = array();
-
- /**
- * Nesting count of looping tags like {foreach}, {for}, {section}, {while}
- *
- * @var int
- */
- public $loopNesting = 0;
-
- /**
- * Strip preg pattern
- *
- * @var string
- */
- public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!';
-
- /**
- * plugin search order
- *
- * @var array
- */
- public $plugin_search_order = array('function', 'block', 'compiler', 'class');
-
- /**
- * General storage area for tag compiler plugins
- *
- * @var array
- */
- public $_cache = array();
-
- /**
- * method to compile a Smarty template
- *
- * @param mixed $_content template source
- * @param bool $isTemplateSource
- *
- * @return bool true if compiling succeeded, false if it failed
- */
- abstract protected function doCompile($_content, $isTemplateSource = false);
-
- /**
- * Initialize compiler
- *
- * @param Smarty $smarty global instance
- */
- public function __construct(Smarty $smarty)
- {
- $this->smarty = $smarty;
- $this->nocache_hash = str_replace(array('.', ','), '_', uniqid(rand(), true));
- }
-
- /**
- * Method to compile a Smarty template
- *
- * @param Smarty_Internal_Template $template template object to compile
- * @param bool $nocache true is shall be compiled in nocache mode
- * @param null|Smarty_Internal_TemplateCompilerBase $parent_compiler
- *
- * @return bool true if compiling succeeded, false if it failed
- * @throws \Exception
- */
- public function compileTemplate(Smarty_Internal_Template $template, $nocache = null,
- Smarty_Internal_TemplateCompilerBase $parent_compiler = null)
- {
- // get code frame of compiled template
- $_compiled_code = $template->smarty->ext->_codeFrame->create($template,
- $this->compileTemplateSource($template, $nocache,
- $parent_compiler),
- $this->postFilter($this->blockOrFunctionCode) .
- join('', $this->mergedSubTemplatesCode), false,
- $this);
- return $_compiled_code;
- }
-
- /**
- * Compile template source and run optional post filter
- *
- * @param \Smarty_Internal_Template $template
- * @param null|bool $nocache flag if template must be compiled in nocache mode
- * @param \Smarty_Internal_TemplateCompilerBase $parent_compiler
- *
- * @return string
- * @throws \Exception
- */
- public function compileTemplateSource(Smarty_Internal_Template $template, $nocache = null,
- Smarty_Internal_TemplateCompilerBase $parent_compiler = null)
- {
- try {
- // save template object in compiler class
- $this->template = $template;
- if (property_exists($this->template->smarty, 'plugin_search_order')) {
- $this->plugin_search_order = $this->template->smarty->plugin_search_order;
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->start_compile($this->template);
- }
- if (isset($this->template->smarty->security_policy)) {
- $this->php_handling = $this->template->smarty->security_policy->php_handling;
- } else {
- $this->php_handling = $this->template->smarty->php_handling;
- }
- $this->parent_compiler = $parent_compiler ? $parent_compiler : $this;
- $nocache = isset($nocache) ? $nocache : false;
- if (empty($template->compiled->nocache_hash)) {
- $template->compiled->nocache_hash = $this->nocache_hash;
- } else {
- $this->nocache_hash = $template->compiled->nocache_hash;
- }
- // flag for nocache sections
- $this->nocache = $nocache;
- $this->tag_nocache = false;
- // reset has nocache code flag
- $this->template->compiled->has_nocache_code = false;
- $this->has_variable_string = false;
- $this->prefix_code = array();
- // add file dependency
- $this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] =
- array($this->template->source->filepath, $this->template->source->getTimeStamp(),
- $this->template->source->type);
- $this->smarty->_current_file = $this->template->source->filepath;
- // get template source
- if (!empty($this->template->source->components)) {
- // we have array of inheritance templates by extends: resource
- // generate corresponding source code sequence
- $_content =
- Smarty_Internal_Compile_Extends::extendsSourceArrayCode($this->template->source->components);
- } else {
- // get template source
- $_content = $this->template->source->getContent();
- }
- $_compiled_code = $this->postFilter($this->doCompile($this->preFilter($_content), true));
- }
- catch (Exception $e) {
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_compile($this->template);
- }
- $this->_tag_stack = array();
- $this->_tag_objects = array();
- // free memory
- $this->parent_compiler = null;
- $this->template = null;
- $this->parser = null;
- throw $e;
- }
- if ($this->smarty->debugging) {
- $this->smarty->_debug->end_compile($this->template);
- }
- $this->parent_compiler = null;
- $this->template = null;
- $this->parser = null;
- return $_compiled_code;
- }
-
- /**
- * Optionally process compiled code by post filter
- *
- * @param string $code compiled code
- *
- * @return string
- * @throws \SmartyException
- */
- public function postFilter($code)
- {
- // run post filter if on code
- if (!empty($code) &&
- (isset($this->smarty->autoload_filters[ 'post' ]) || isset($this->smarty->registered_filters[ 'post' ]))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('post', $code, $this->template);
- } else {
- return $code;
- }
- }
-
- /**
- * Run optional prefilter
- *
- * @param string $_content template source
- *
- * @return string
- * @throws \SmartyException
- */
- public function preFilter($_content)
- {
- // run pre filter if required
- if ($_content != '' &&
- ((isset($this->smarty->autoload_filters[ 'pre' ]) || isset($this->smarty->registered_filters[ 'pre' ])))
- ) {
- return $this->smarty->ext->_filterHandler->runFilter('pre', $_content, $this->template);
- } else {
- return $_content;
- }
- }
-
- /**
- * Compile Tag
- * This is a call back from the lexer/parser
- *
- * Save current prefix code
- * Compile tag
- * Merge tag prefix code with saved one
- * (required nested tags in attributes)
- *
- * @param string $tag tag name
- * @param array $args array with tag attributes
- * @param array $parameter array with compilation parameter
- *
- * @throws SmartyCompilerException
- * @throws SmartyException
- * @return string compiled code
- */
- public function compileTag($tag, $args, $parameter = array())
- {
- $this->prefixCodeStack[] = $this->prefix_code;
- $this->prefix_code = array();
- $result = $this->compileTag2($tag, $args, $parameter);
- $this->prefix_code = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
- return $result;
- }
-
- /**
- * Compile Tag
- *
- * @param string $tag tag name
- * @param array $args array with tag attributes
- * @param array $parameter array with compilation parameter
- *
- * @throws SmartyCompilerException
- * @throws SmartyException
- * @return string compiled code
- */
- private function compileTag2($tag, $args, $parameter)
- {
- $plugin_type = '';
- // $args contains the attributes parsed and compiled by the lexer/parser
- // assume that tag does compile into code, but creates no HTML output
- $this->has_code = true;
- $this->has_output = false;
- // log tag/attributes
- if (isset($this->smarty->_cache[ 'get_used_tags' ])) {
- $this->template->_cache[ 'used_tags' ][] = array($tag, $args);
- }
- // check nocache option flag
- if (in_array("'nocache'", $args) || in_array(array('nocache' => 'true'), $args) ||
- in_array(array('nocache' => '"true"'), $args) || in_array(array('nocache' => "'true'"), $args)
- ) {
- $this->tag_nocache = true;
- }
- // compile the smarty tag (required compile classes to compile the tag are auto loaded)
- if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
- if (isset($this->parent_compiler->template->tpl_function[ $tag ])) {
- // template defined by {template} tag
- $args[ '_attr' ][ 'name' ] = "'" . $tag . "'";
- $_output = $this->callTagCompiler('call', $args, $parameter);
- }
- }
- if ($_output !== false) {
- if ($_output !== true) {
- // did we get compiled code
- if ($this->has_code) {
- // Does it create output?
- if ($this->has_output) {
- $_output .= "\n";
- }
- // return compiled code
- return $_output;
- }
- }
- // tag did not produce compiled code
- return null;
- } else {
- // map_named attributes
- if (isset($args[ '_attr' ])) {
- foreach ($args[ '_attr' ] as $key => $attribute) {
- if (is_array($attribute)) {
- $args = array_merge($args, $attribute);
- }
- }
- }
- // not an internal compiler tag
- if (strlen($tag) < 6 || substr($tag, - 5) != 'close') {
- // check if tag is a registered object
- if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) {
- $method = $parameter[ 'object_method' ];
- if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ]) &&
- (empty($this->smarty->registered_objects[ $tag ][ 1 ]) ||
- in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
- ) {
- return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
- } elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) {
- return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag,
- $method);
- } else {
- // throw exception
- $this->trigger_template_error('not allowed method "' . $method . '" in registered object "' .
- $tag . '"', null, true);
- }
- }
- // check if tag is registered
- foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK) as $plugin_type)
- {
- if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) {
- // if compiler function plugin call it now
- if ($plugin_type == Smarty::PLUGIN_COMPILER) {
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[ $key ] = $mixed;
- }
- }
- if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) {
- $this->tag_nocache = true;
- }
- $function = $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ];
- if (!is_array($function)) {
- return $function($new_args, $this);
- } elseif (is_object($function[ 0 ])) {
- return $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ][ 0 ]->{$function[ 1 ]}($new_args,
- $this);
- } else {
- return call_user_func_array($function, array($new_args, $this));
- }
- }
- // compile registered function or block function
- if ($plugin_type == Smarty::PLUGIN_FUNCTION || $plugin_type == Smarty::PLUGIN_BLOCK) {
- return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter,
- $tag);
- }
- }
- }
- // check plugins from plugins folder
- foreach ($this->plugin_search_order as $plugin_type) {
- if ($plugin_type == Smarty::PLUGIN_COMPILER &&
- $this->smarty->loadPlugin('smarty_compiler_' . $tag) &&
- (!isset($this->smarty->security_policy) ||
- $this->smarty->security_policy->isTrustedTag($tag, $this))
- ) {
- $plugin = 'smarty_compiler_' . $tag;
- if (is_callable($plugin)) {
- // convert arguments format for old compiler plugins
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[ $key ] = $mixed;
- }
- }
-
- return $plugin($new_args, $this->smarty);
- }
- if (class_exists($plugin, false)) {
- $plugin_object = new $plugin;
- if (method_exists($plugin_object, 'compile')) {
- return $plugin_object->compile($args, $this);
- }
- }
- throw new SmartyException("Plugin \"{$tag}\" not callable");
- } else {
- if ($function = $this->getPlugin($tag, $plugin_type)) {
- if (!isset($this->smarty->security_policy) ||
- $this->smarty->security_policy->isTrustedTag($tag, $this)
- ) {
- return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $parameter,
- $tag, $function);
- }
- }
- }
- }
- if (is_callable($this->smarty->default_plugin_handler_func)) {
- $found = false;
- // look for already resolved tags
- foreach ($this->plugin_search_order as $plugin_type) {
- if (isset($this->default_handler_plugins[ $plugin_type ][ $tag ])) {
- $found = true;
- break;
- }
- }
- if (!$found) {
- // call default handler
- foreach ($this->plugin_search_order as $plugin_type) {
- if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
- $found = true;
- break;
- }
- }
- }
- if ($found) {
- // if compiler function plugin call it now
- if ($plugin_type == Smarty::PLUGIN_COMPILER) {
- $new_args = array();
- foreach ($args as $mixed) {
- $new_args = array_merge($new_args, $mixed);
- }
- $function = $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ];
- if (!is_array($function)) {
- return $function($new_args, $this);
- } elseif (is_object($function[ 0 ])) {
- return $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ][ 0 ]->$function[ 1 ]($new_args,
- $this);
- } else {
- return call_user_func_array($function, array($new_args, $this));
- }
- } else {
- return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter,
- $tag);
- }
- }
- }
- } else {
- // compile closing tag of block function
- $base_tag = substr($tag, 0, - 5);
- // check if closing tag is a registered object
- if (isset($this->smarty->registered_objects[ $base_tag ]) && isset($parameter[ 'object_method' ])) {
- $method = $parameter[ 'object_method' ];
- if (in_array($method, $this->smarty->registered_objects[ $base_tag ][ 3 ])) {
- return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag,
- $method);
- } else {
- // throw exception
- $this->trigger_template_error('not allowed closing tag method "' . $method .
- '" in registered object "' . $base_tag . '"', null, true);
- }
- }
- // registered block tag ?
- if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ]) ||
- isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
- ) {
- return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
- }
- // registered function tag ?
- if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
- return $this->callTagCompiler('private_registered_function', $args, $parameter, $tag);
- }
- // block plugin?
- if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
- return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
- }
- // function plugin?
- if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) {
- if (!isset($this->smarty->security_policy) ||
- $this->smarty->security_policy->isTrustedTag($tag, $this)
- ) {
- return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function);
- }
- }
- // registered compiler plugin ?
- if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ])) {
- // if compiler function plugin call it now
- $args = array();
- if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) {
- $this->tag_nocache = true;
- }
- $function = $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ];
- if (!is_array($function)) {
- return $function($args, $this);
- } elseif (is_object($function[ 0 ])) {
- return $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ][ 0 ]->$function[ 1 ]($args,
- $this);
- } else {
- return call_user_func_array($function, array($args, $this));
- }
- }
- if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
- $plugin = 'smarty_compiler_' . $tag;
- if (is_callable($plugin)) {
- return $plugin($args, $this->smarty);
- }
- if (class_exists($plugin, false)) {
- $plugin_object = new $plugin;
- if (method_exists($plugin_object, 'compile')) {
- return $plugin_object->compile($args, $this);
- }
- }
- throw new SmartyException("Plugin \"{$tag}\" not callable");
- }
- }
- $this->trigger_template_error("unknown tag \"" . $tag . "\"", null, true);
- }
- }
-
- /**
- * compile variable
- *
- * @param string $variable
- *
- * @return string
- */
- public function compileVariable($variable)
- {
- if (strpos($variable, '(') == 0) {
- // not a variable variable
- $var = trim($variable, '\'');
- $this->tag_nocache = $this->tag_nocache |
- $this->template->ext->getTemplateVars->_getVariable($this->template, $var, null, true, false)->nocache;
- // todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache;
- }
- return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
- }
-
- /**
- * compile config variable
- *
- * @param string $variable
- *
- * @return string
- */
- public function compileConfigVariable($variable)
- {
- // return '$_smarty_tpl->config_vars[' . $variable . ']';
- return '$_smarty_tpl->smarty->ext->configLoad->_getConfigVariable($_smarty_tpl, ' . $variable . ')';
- }
-
- /**
- * This method is called from parser to process a text content section
- * - remove text from inheritance child templates as they may generate output
- * - strip text if strip is enabled
- *
- * @param string $text
- *
- * @return null|\Smarty_Internal_ParseTree_Text
- */
- public function processText($text)
- {
- if ((string) $text != '') {
- $store = array();
- $_store = 0;
- $_offset = 0;
- if ($this->parser->strip) {
- if (strpos($text, '<') !== false) {
- // capture html elements not to be messed with
- $_offset = 0;
- if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
- $text, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
- foreach ($matches as $match) {
- $store[] = $match[ 0 ][ 0 ];
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
- $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
-
- $_offset += $_length - strlen($replace);
- $_store ++;
- }
- }
-
- $expressions = array(// replace multiple spaces between tags by a single space
- // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
- '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
- // remove spaces between attributes (but not in attribute values!)
- '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
- '#^\s+<#Ss' => '<',
- '#>\s+$#Ss' => '>',
- $this->stripRegEx => '');
-
- $text = preg_replace(array_keys($expressions), array_values($expressions), $text);
- $_offset = 0;
- if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $text, $matches,
- PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
- foreach ($matches as $match) {
- $_length = strlen($match[ 0 ][ 0 ]);
- $replace = $store[ $match[ 1 ][ 0 ] ];
- $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
-
- $_offset += strlen($replace) - $_length;
- $_store ++;
- }
- }
- } else {
- $text = preg_replace($this->stripRegEx, '', $text);
- }
- }
- return new Smarty_Internal_ParseTree_Text($text);
- }
- return null;
- }
-
- /**
- * lazy loads internal compile plugin for tag and calls the compile method
- * compile objects cached for reuse.
- * class name format: Smarty_Internal_Compile_TagName
- * plugin filename format: Smarty_Internal_TagName.php
- *
- * @param string $tag tag name
- * @param array $args list of tag attributes
- * @param mixed $param1 optional parameter
- * @param mixed $param2 optional parameter
- * @param mixed $param3 optional parameter
- *
- * @return string compiled code
- */
- public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
- {
- // re-use object if already exists
- if (!isset($this->_tag_objects[ $tag ])) {
- // lazy load internal compiler plugin
- $_tag = explode('_', $tag);
- $_tag = array_map('ucfirst', $_tag);
- $class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag);
- if (class_exists($class_name) &&
- (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))
- ) {
- $this->_tag_objects[ $tag ] = new $class_name;
- } else {
- $this->_tag_objects[ $tag ] = false;
- return false;
- }
- }
- // compile this tag
- return $this->_tag_objects[ $tag ] === false ? false :
- $this->_tag_objects[ $tag ]->compile($args, $this, $param1, $param2, $param3);
- }
-
- /**
- * Check for plugins and return function name
- *
- * @param $plugin_name
- * @param string $plugin_type type of plugin
- *
- * @return string call name of function
- */
- public function getPlugin($plugin_name, $plugin_type)
- {
- $function = null;
- if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
- if (isset($this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
- $function =
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- } elseif (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ] =
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ];
- $function =
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- }
- } else {
- if (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
- $function =
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- } elseif (isset($this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ] =
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ];
- $function =
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
- }
- }
- if (isset($function)) {
- if ($plugin_type == 'modifier') {
- $this->modifier_plugins[ $plugin_name ] = true;
- }
-
- return $function;
- }
- // loop through plugin dirs and find the plugin
- $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
- $file = $this->smarty->loadPlugin($function, false);
-
- if (is_string($file)) {
- if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
- $file;
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
- $function;
- } else {
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
- $file;
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
- $function;
- }
- if ($plugin_type == 'modifier') {
- $this->modifier_plugins[ $plugin_name ] = true;
- }
-
- return $function;
- }
- if (is_callable($function)) {
- // plugin function is defined in the script
- return $function;
- }
-
- return false;
- }
-
- /**
- * Check for plugins by default plugin handler
- *
- * @param string $tag name of tag
- * @param string $plugin_type type of plugin
- *
- * @return boolean true if found
- */
- public function getPluginFromDefaultHandler($tag, $plugin_type)
- {
- $callback = null;
- $script = null;
- $cacheable = true;
- $result = call_user_func_array($this->smarty->default_plugin_handler_func,
- array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable));
- if ($result) {
- $this->tag_nocache = $this->tag_nocache || !$cacheable;
- if ($script !== null) {
- if (is_file($script)) {
- if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'file' ] =
- $script;
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'function' ] =
- $callback;
- } else {
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'file' ] =
- $script;
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'function' ] =
- $callback;
- }
- require_once $script;
- } else {
- $this->trigger_template_error("Default plugin handler: Returned script file \"{$script}\" for \"{$tag}\" not found");
- }
- }
- if (!is_string($callback) &&
- !(is_array($callback) && is_string($callback[ 0 ]) && is_string($callback[ 1 ]))
- ) {
- $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" must be a static function name or array of class and function name");
- }
- if (is_callable($callback)) {
- $this->default_handler_plugins[ $plugin_type ][ $tag ] = array($callback, true, array());
-
- return true;
- } else {
- $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" not callable");
- }
- }
-
- return false;
- }
-
- /**
- * Append code segments and remove unneeded ?> <?php transitions
- *
- * @param string $left
- * @param string $right
- *
- * @return string
- */
- public function appendCode($left, $right)
- {
- if (preg_match('/\s*\?>\s*$/', $left) && preg_match('/^\s*<\?php\s+/', $right)) {
- $left = preg_replace('/\s*\?>\s*$/', "\n", $left);
- $left .= preg_replace('/^\s*<\?php\s+/', '', $right);
- } else {
- $left .= $right;
- }
- return $left;
- }
-
- /**
- * Inject inline code for nocache template sections
- * This method gets the content of each template element from the parser.
- * If the content is compiled code and it should be not cached the code is injected
- * into the rendered output.
- *
- * @param string $content content of template element
- * @param boolean $is_code true if content is compiled code
- *
- * @return string content
- */
- public function processNocacheCode($content, $is_code)
- {
- // If the template is not evaluated and we have a nocache section and or a nocache tag
- if ($is_code && !empty($content)) {
- // generate replacement code
- if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->template->caching &&
- !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache)
- ) {
- $this->template->compiled->has_nocache_code = true;
- $_output = addcslashes($content, '\'\\');
- $_output = str_replace("^#^", "'", $_output);
- $_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output .
- "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
- // make sure we include modifier plugins for nocache code
- foreach ($this->modifier_plugins as $plugin_name => $dummy) {
- if (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) {
- $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ 'modifier' ] =
- $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ];
- }
- }
- } else {
- $_output = $content;
- }
- } else {
- $_output = $content;
- }
- $this->modifier_plugins = array();
- $this->suppressNocacheProcessing = false;
- $this->tag_nocache = false;
-
- return $_output;
- }
-
- /**
- * Get Id
- *
- * @param string $input
- *
- * @return bool|string
- */
- public function getId($input)
- {
- if (preg_match('~^[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*$~', $input, $match)) {
- return $match[ 1 ];
- }
- return false;
- }
-
- /**
- * Get variable name from string
- *
- * @param string $input
- *
- * @return bool|string
- */
- public function getVariableName($input)
- {
- if (preg_match('~^[$]_smarty_tpl->tpl_vars\[[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]->value$~', $input, $match)) {
- return $match[ 1 ];
- }
- return false;
- }
-
- /**
- * Generate nocache code string
- *
- * @param string $code PHP code
- *
- * @return string
- */
- public function makeNocacheCode($code)
- {
- return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/<?php " .
- str_replace("^#^", "'", addcslashes($code, '\'\\')) . "?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n";
- }
-
- /**
- * display compiler error messages without dying
- * If parameter $args is empty it is a parser detected syntax error.
- * In this case the parser is called to obtain information about expected tokens.
- * If parameter $args contains a string this is used as error message
- *
- * @param string $args individual error message or null
- * @param string $line line-number
- * @param null|bool $tagline if true the line number of last tag
- *
- * @throws \SmartyCompilerException when an unexpected token is found
- */
- public function trigger_template_error($args = null, $line = null, $tagline = null)
- {
- $lex = $this->parser->lex;
- if ($tagline === true) {
- // get line number of Tag
- $line = $lex->taglineno;
- } elseif (!isset($line)) {
- // get template source line which has error
- $line = $lex->line;
- } else {
- $line = (int) $line;
- }
-
- if (in_array($this->template->source->type, array('eval', 'string'))) {
- $templateName = $this->template->source->type . ':' . trim(preg_replace('![\t\r\n]+!', ' ',
- strlen($lex->data) > 40 ?
- substr($lex->data, 0, 40) .
- '...' : $lex->data));
- } else {
- $templateName = $this->template->source->type . ':' . $this->template->source->filepath;
- }
-
- // $line += $this->trace_line_offset;
- $match = preg_split("/\n/", $lex->data);
- $error_text =
- 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) .
- '" on line ' . ($line + $this->trace_line_offset) . ' "' .
- trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])) . '" ';
- if (isset($args)) {
- // individual error message
- $error_text .= $args;
- } else {
- $expect = array();
- // expected token from parser
- $error_text .= ' - Unexpected "' . $lex->value . '"';
- if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
- foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
- $exp_token = $this->parser->yyTokenName[ $token ];
- if (isset($lex->smarty_token_names[ $exp_token ])) {
- // token type from lexer
- $expect[] = '"' . $lex->smarty_token_names[ $exp_token ] . '"';
- } else {
- // otherwise internal token name
- $expect[] = $this->parser->yyTokenName[ $token ];
- }
- }
- $error_text .= ', expected one of: ' . implode(' , ', $expect);
- }
- }
- $e = new SmartyCompilerException($error_text);
- $e->line = $line;
- $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ]));
- $e->desc = $args;
- $e->template = $this->template->source->filepath;
- throw $e;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php b/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
deleted file mode 100644
index 993b7be62..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
+++ /dev/null
@@ -1,1135 +0,0 @@
-<?php
-/*
- * This file is part of Smarty.
- *
- * (c) 2015 Uwe Tews
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Smarty_Internal_Templatelexer
- * This is the template file lexer.
- * It is generated from the smarty_internal_templatelexer.plex file
- *
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Templatelexer
-{
- /**
- * Source
- *
- * @var string
- */
- public $data;
-
- /**
- * byte counter
- *
- * @var int
- */
- public $counter;
-
- /**
- * token number
- *
- * @var int
- */
- public $token;
-
- /**
- * token value
- *
- * @var string
- */
- public $value;
-
- /**
- * current line
- *
- * @var int
- */
- public $line;
-
- /**
- * tag start line
- *
- * @var
- */
- public $taglineno;
-
- /**
- * php code type
- *
- * @var string
- */
- public $phpType = '';
-
- /**
- * escaped left delimiter
- *
- * @var string
- */
- public $ldel = '';
-
- /**
- * escaped left delimiter length
- *
- * @var int
- */
- public $ldel_length = 0;
-
- /**
- * escaped right delimiter
- *
- * @var string
- */
- public $rdel = '';
-
- /**
- * escaped right delimiter length
- *
- * @var int
- */
- public $rdel_length = 0;
-
- /**
- * state number
- *
- * @var int
- */
- public $state = 1;
-
- /**
- * Smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * literal tag nesting level
- *
- * @var int
- */
- private $literal_cnt = 0;
-
- /**
- * PHP start tag string
- *
- * @var string
- */
-
- /**
- * trace file
- *
- * @var resource
- */
- public $yyTraceFILE;
-
- /**
- * trace prompt
- *
- * @var string
- */
- public $yyTracePrompt;
-
- /**
- * XML flag true while processing xml
- *
- * @var bool
- */
- public $is_xml = false;
-
- /**
- * state names
- *
- * @var array
- */
- public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
-
- /**
- * storage for assembled token patterns
- *
- * @var string
- */
- private $yy_global_pattern1 = null;
-
- private $yy_global_pattern2 = null;
-
- private $yy_global_pattern3 = null;
-
- private $yy_global_pattern4 = null;
-
- private $yy_global_pattern5 = null;
-
- /**
- * token names
- *
- * @var array
- */
- public $smarty_token_names = array( // Text for parser error messages
- 'NOT' => '(!,not)', 'OPENP' => '(', 'CLOSEP' => ')',
- 'OPENB' => '[', 'CLOSEB' => ']', 'PTR' => '->', 'APTR' => '=>',
- 'EQUAL' => '=', 'NUMBER' => 'number', 'UNIMATH' => '+" , "-',
- 'MATH' => '*" , "/" , "%', 'INCDEC' => '++" , "--',
- 'SPACE' => ' ', 'DOLLAR' => '$', 'SEMICOLON' => ';',
- 'COLON' => ':', 'DOUBLECOLON' => '::', 'AT' => '@', 'HATCH' => '#',
- 'QUOTE' => '"', 'BACKTICK' => '`', 'VERT' => '"|" modifier',
- 'DOT' => '.', 'COMMA' => '","', 'QMARK' => '"?"',
- 'ID' => 'id, name', 'TEXT' => 'text',
- 'LDELSLASH' => '{/..} closing tag', 'LDEL' => '{...} Smarty tag',
- 'COMMENT' => 'comment', 'AS' => 'as', 'TO' => 'to',
- 'PHP' => '"<?php", "<%", "{php}" tag',
- 'LOGOP' => '"<", "==" ... logical operator',
- 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
- 'SCOND' => '"is even" ... if condition',);
-
- /**
- * constructor
- *
- * @param string $data template source
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- function __construct($data, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->data = $data;
- $this->counter = 0;
- if (preg_match('~^\xEF\xBB\xBF~i', $this->data, $match)) {
- $this->counter += strlen($match[ 0 ]);
- }
- $this->line = 1;
- $this->smarty = $compiler->smarty;
- $this->compiler = $compiler;
- $this->ldel = preg_quote($this->smarty->left_delimiter, '~');
- $this->ldel_length = strlen($this->smarty->left_delimiter);
- $this->rdel = preg_quote($this->smarty->right_delimiter, '~');
- $this->rdel_length = strlen($this->smarty->right_delimiter);
- $this->smarty_token_names[ 'LDEL' ] = $this->smarty->left_delimiter;
- $this->smarty_token_names[ 'RDEL' ] = $this->smarty->right_delimiter;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- /*
- * Check if this tag is autoliteral
- */
- public function isAutoLiteral()
- {
- return $this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false;
- }
-
- private $_yy_state = 1;
-
- private $_yy_stack = array();
-
- public function yylex()
- {
- return $this->{'yylex' . $this->_yy_state}();
- }
-
- public function yypushstate($state)
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
- $this->_yy_state);
- }
- array_push($this->_yy_stack, $this->_yy_state);
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
- $this->_yy_state);
- }
- }
-
- public function yypopstate()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
- $this->_yy_state);
- }
- $this->_yy_state = array_pop($this->_yy_stack);
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
- $this->_yy_state);
- }
- }
-
- public function yybegin($state)
- {
- $this->_yy_state = $state;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt,
- isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
- $this->_yy_state);
- }
- }
-
- public function yylex1()
- {
- if (!isset($this->yy_global_pattern1)) {
- $this->yy_global_pattern1 =
- "/\G([{][}])|\G(" . $this->ldel . "[*])|\G((" . $this->ldel . "\\s*php(.*?)" . $this->rdel . ")|(" .
- $this->ldel . "\\s*[\/]php" . $this->rdel . "))|\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel .
- ")|\G(" . $this->ldel . "\\s*)|\G(\\s*" . $this->rdel .
- ")|\G((<[?]((php\\s+|=)|\\s+))|(<[%])|(<[?]xml\\s+)|(<script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*>)|([?][>])|([%][>]))|\G([\S\s])/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
- substr($this->data, $this->counter, 5) . '... state TEXT');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r1_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- } // end function
-
- const TEXT = 1;
-
- function yy_r1_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- function yy_r1_2()
- {
-
- preg_match("~[*]{$this->rdel}~", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
- if (isset($match[ 0 ][ 1 ])) {
- $to = $match[ 0 ][ 1 ] + strlen($match[ 0 ][ 0 ]);
- } else {
- $this->compiler->trigger_template_error("missing or misspelled comment closing tag '*{$this->smarty->right_delimiter}'");
- }
- $this->value = substr($this->data, $this->counter, $to - $this->counter);
- return false;
- }
-
- function yy_r1_3()
- {
-
- $obj = new Smarty_Internal_Compile_Private_Php();
- $obj->parsePhp($this);
- }
-
- function yy_r1_7()
- {
-
- if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
- ) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
- $this->yypushstate(self::LITERAL);
- }
- }
-
- function yy_r1_8()
- {
-
- if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
- ) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->yypushstate(self::TAG);
- return true;
- }
- }
-
- function yy_r1_9()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- function yy_r1_10()
- {
-
- $obj = new Smarty_Internal_Compile_Private_Php();
- $obj->parsePhp($this);
- }
-
- function yy_r1_19()
- {
-
- $to = strlen($this->data);
- preg_match("~($this->ldel)|(<[?]((php\s+|=)|\s+))|(<[%])|(<[?]xml\s+)|(<script\s+language\s*=\s*[\"']?\s*php\s*[\"']?\s*>)|([?][>])|([%][>])~i",
- $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
- if (isset($match[ 0 ][ 1 ])) {
- $to = $match[ 0 ][ 1 ];
- }
- $this->value = substr($this->data, $this->counter, $to - $this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- public function yylex2()
- {
- if (!isset($this->yy_global_pattern2)) {
- $this->yy_global_pattern2 =
- "/\G(" . $this->ldel . "\\s*(if|elseif|else if|while)\\s+)|\G(" . $this->ldel . "\\s*for\\s+)|\G(" .
- $this->ldel . "\\s*foreach(?![^\s]))|\G(" . $this->ldel . "\\s*setfilter\\s+)|\G(" . $this->ldel .
- "\\s*[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel . ")|\G(" . $this->ldel .
- "\\s*[\/](?:(?!block)[0-9]*[a-zA-Z_]\\w*)\\s*" . $this->rdel . ")|\G(" . $this->ldel .
- "\\s*[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/])|\G(" .
- $this->ldel . "\\s*)/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
- substr($this->data, $this->counter, 5) . '... state TAG');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r2_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- } // end function
-
- const TAG = 2;
-
- function yy_r2_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- function yy_r2_3()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- function yy_r2_4()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- function yy_r2_5()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- function yy_r2_6()
- {
-
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
- $this->taglineno = $this->line;
- }
-
- function yy_r2_8()
- {
-
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG;
- $this->taglineno = $this->line;
- }
-
- function yy_r2_9()
- {
-
- if ($this->_yy_stack[ count($this->_yy_stack) - 1 ] == self::TEXT) {
- $this->yypopstate();
- $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT;
- $this->taglineno = $this->line;
- } else {
- $this->value = $this->smarty->left_delimiter;
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
- }
-
- function yy_r2_11()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- function yy_r2_12()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yybegin(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- public function yylex3()
- {
- if (!isset($this->yy_global_pattern3)) {
- $this->yy_global_pattern3 = "/\G(\\s*" . $this->rdel . ")|\G(" . $this->ldel .
- "\\s*)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$]smarty\\.block\\.(child|parent))|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*(([!=][=]{1,2})|([<][=>]?)|([>][=]?)|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor|(is\\s+(not\\s+)?(odd|even|div)\\s+by))\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G(([!]\\s*)|(not\\s+))|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|])|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
- substr($this->data, $this->counter, 5) . '... state TAGBODY');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r3_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- } // end function
-
- const TAGBODY = 3;
-
- function yy_r3_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_RDEL;
- $this->yypopstate();
- }
-
- function yy_r3_2()
- {
-
- if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
- ) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->yypushstate(self::TAG);
- return true;
- }
- }
-
- function yy_r3_3()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypushstate(self::DOUBLEQUOTEDSTRING);
- }
-
- function yy_r3_4()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
- }
-
- function yy_r3_5()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
- $this->taglineno = $this->line;
- }
-
- function yy_r3_7()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
- }
-
- function yy_r3_8()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
- }
-
- function yy_r3_9()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_ISIN;
- }
-
- function yy_r3_10()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_AS;
- }
-
- function yy_r3_11()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TO;
- }
-
- function yy_r3_12()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_STEP;
- }
-
- function yy_r3_13()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
- }
-
- function yy_r3_14()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_LOGOP;
- }
-
- function yy_r3_19()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
- }
-
- function yy_r3_24()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
- }
-
- function yy_r3_27()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_NOT;
- }
-
- function yy_r3_30()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
- }
-
- function yy_r3_34()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_OPENP;
- }
-
- function yy_r3_35()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
- }
-
- function yy_r3_36()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_OPENB;
- }
-
- function yy_r3_37()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
- }
-
- function yy_r3_38()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_PTR;
- }
-
- function yy_r3_39()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_APTR;
- }
-
- function yy_r3_40()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
- }
-
- function yy_r3_41()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
- }
-
- function yy_r3_43()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
- }
-
- function yy_r3_45()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_MATH;
- }
-
- function yy_r3_47()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_AT;
- }
-
- function yy_r3_48()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_HATCH;
- }
-
- function yy_r3_49()
- {
-
- // resolve conflicts with shorttag and right_delimiter starting with '='
- if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->rdel_length) ==
- $this->smarty->right_delimiter
- ) {
- preg_match("~\s+~", $this->value, $match);
- $this->value = $match[ 0 ];
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_ATTR;
- }
- }
-
- function yy_r3_50()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
- }
-
- function yy_r3_53()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_ID;
- }
-
- function yy_r3_54()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
- }
-
- function yy_r3_55()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->yypopstate();
- }
-
- function yy_r3_56()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_VERT;
- }
-
- function yy_r3_57()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOT;
- }
-
- function yy_r3_58()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_COMMA;
- }
-
- function yy_r3_59()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
- }
-
- function yy_r3_60()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
- }
-
- function yy_r3_61()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_COLON;
- }
-
- function yy_r3_62()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_QMARK;
- }
-
- function yy_r3_63()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_HEX;
- }
-
- function yy_r3_64()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
- }
-
- function yy_r3_65()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- public function yylex4()
- {
- if (!isset($this->yy_global_pattern4)) {
- $this->yy_global_pattern4 =
- "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/]literal\\s*" .
- $this->rdel . ")|\G([\S\s])/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
- substr($this->data, $this->counter, 5) . '... state LITERAL');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r4_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- } // end function
-
- const LITERAL = 4;
-
- function yy_r4_1()
- {
-
- $this->literal_cnt ++;
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- }
-
- function yy_r4_2()
- {
-
- if ($this->literal_cnt) {
- $this->literal_cnt --;
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
- $this->yypopstate();
- }
- }
-
- function yy_r4_3()
- {
-
- $to = strlen($this->data);
- preg_match("~{$this->ldel}[/]?literal{$this->rdel}~i", $this->data, $match, PREG_OFFSET_CAPTURE,
- $this->counter);
- if (isset($match[ 0 ][ 1 ])) {
- $to = $match[ 0 ][ 1 ];
- } else {
- $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
- }
- $this->value = substr($this->data, $this->counter, $to - $this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
- }
-
- public function yylex5()
- {
- if (!isset($this->yy_global_pattern5)) {
- $this->yy_global_pattern5 =
- "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/]literal\\s*" .
- $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/])|\G(" . $this->ldel . "\\s*[0-9]*[a-zA-Z_]\\w*)|\G(" .
- $this->ldel .
- "\\s*)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(" .
- $this->ldel . "|\\$|`\\$|\")))|\G([\S\s])/isS";
- }
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
-
- do {
- if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, null, $this->counter)) {
- $yysubmatches = $yymatches;
- if (strlen($yysubmatches[ 0 ]) < 200) {
- $yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
- } else {
- $yymatches = array_filter($yymatches, 'strlen');
- }
- if (empty($yymatches)) {
- throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
- substr($this->data, $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
- }
- next($yymatches); // skip global match
- $this->token = key($yymatches); // token number
- $this->value = current($yymatches); // token value
- $r = $this->{'yy_r5_' . $this->token}();
- if ($r === null) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- // accept this token
- return true;
- } elseif ($r === true) {
- // we have changed state
- // process this token in the new state
- return $this->yylex();
- } elseif ($r === false) {
- $this->counter += strlen($this->value);
- $this->line += substr_count($this->value, "\n");
- if ($this->counter >= strlen($this->data)) {
- return false; // end of input
- }
- // skip this token
- continue;
- }
- } else {
- throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
- }
- break;
- } while (true);
- } // end function
-
- const DOUBLEQUOTEDSTRING = 5;
-
- function yy_r5_1()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- function yy_r5_2()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- function yy_r5_3()
- {
-
- if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
- ) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->yypushstate(self::TAG);
- return true;
- }
- }
-
- function yy_r5_4()
- {
-
- if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
- ) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->yypushstate(self::TAG);
- return true;
- }
- }
-
- function yy_r5_5()
- {
-
- if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
- strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
- ) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->taglineno = $this->line;
- $this->yypushstate(self::TAGBODY);
- }
- }
-
- function yy_r5_6()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypopstate();
- }
-
- function yy_r5_7()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->value = substr($this->value, 0, - 1);
- $this->yypushstate(self::TAGBODY);
- $this->taglineno = $this->line;
- }
-
- function yy_r5_8()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
- }
-
- function yy_r5_9()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- function yy_r5_10()
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
- function yy_r5_14()
- {
-
- $to = strlen($this->data);
- $this->value = substr($this->data, $this->counter, $to - $this->counter);
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
-}
-
- \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php b/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
deleted file mode 100644
index a745d1dc2..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
+++ /dev/null
@@ -1,2833 +0,0 @@
-<?php
-
-class TP_yyToken implements ArrayAccess
-{
- public $string = '';
-
- public $metadata = array();
-
- public function __construct($s, $m = array())
- {
- if ($s instanceof TP_yyToken) {
- $this->string = $s->string;
- $this->metadata = $s->metadata;
- } else {
- $this->string = (string) $s;
- if ($m instanceof TP_yyToken) {
- $this->metadata = $m->metadata;
- } elseif (is_array($m)) {
- $this->metadata = $m;
- }
- }
- }
-
- public function __toString()
- {
- return $this->string;
- }
-
- public function offsetExists($offset)
- {
- return isset($this->metadata[ $offset ]);
- }
-
- public function offsetGet($offset)
- {
- return $this->metadata[ $offset ];
- }
-
- public function offsetSet($offset, $value)
- {
- if ($offset === null) {
- if (isset($value[ 0 ])) {
- $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
- $this->metadata = array_merge($this->metadata, $x);
-
- return;
- }
- $offset = count($this->metadata);
- }
- if ($value === null) {
- return;
- }
- if ($value instanceof TP_yyToken) {
- if ($value->metadata) {
- $this->metadata[ $offset ] = $value->metadata;
- }
- } elseif ($value) {
- $this->metadata[ $offset ] = $value;
- }
- }
-
- public function offsetUnset($offset)
- {
- unset($this->metadata[ $offset ]);
- }
-}
-
-class TP_yyStackEntry
-{
- public $stateno; /* The state-number */
- public $major; /* The major token value. This is the code
- ** number for the token at this stack level */
- public $minor; /* The user-supplied minor token value. This
- ** is the value of the token */
-}
-
-;
-
-#line 11 "../smarty/lexer/smarty_internal_templateparser.y"
-
-/**
- * Smarty Template Parser Class
- *
- * This is the template parser.
- * It is generated from the smarty_internal_templateparser.y file
- *
- * @author Uwe Tews <uwe.tews@googlemail.com>
- */
-class Smarty_Internal_Templateparser
-{
- #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
-
- const Err1 = "Security error: Call to private object member not allowed";
-
- const Err2 = "Security error: Call to dynamic object member not allowed";
-
- const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
-
- /**
- * result status
- *
- * @var bool
- */
- public $successful = true;
-
- /**
- * return value
- *
- * @var mixed
- */
- public $retvalue = 0;
-
- /**
- * counter for prefix code
- *
- * @var int
- */
- public static $prefix_number = 0;
-
- /**
- * @var
- */
- public $yymajor;
-
- /**
- * last index of array variable
- *
- * @var mixed
- */
- public $last_index;
-
- /**
- * last variable name
- *
- * @var string
- */
- public $last_variable;
-
- /**
- * root parse tree buffer
- *
- * @var Smarty_Internal_ParseTree
- */
- public $root_buffer;
-
- /**
- * current parse tree object
- *
- * @var Smarty_Internal_ParseTree
- */
- public $current_buffer;
-
- /**
- * lexer object
- *
- * @var Smarty_Internal_Templatelexer
- */
- public $lex;
-
- /**
- * internal error flag
- *
- * @var bool
- */
- private $internalError = false;
-
- /**
- * {strip} status
- *
- * @var bool
- */
- public $strip = false;
-
- /**
- * compiler object
- *
- * @var Smarty_Internal_TemplateCompilerBase
- */
- public $compiler = null;
-
- /**
- * smarty object
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * template object
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * block nesting level
- *
- * @var int
- */
- public $block_nesting_level = 0;
-
- /**
- * security object
- *
- * @var Smarty_Security
- */
- public $security = null;
-
- /**
- * template prefix array
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_prefix = array();
-
- /**
- * security object
- *
- * @var \Smarty_Internal_ParseTree[]
- */
- public $template_postfix = array();
-
- /**
- * constructor
- *
- * @param Smarty_Internal_Templatelexer $lex
- * @param Smarty_Internal_TemplateCompilerBase $compiler
- */
- function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
- {
- $this->lex = $lex;
- $this->compiler = $compiler;
- $this->template = $this->compiler->template;
- $this->smarty = $this->template->smarty;
- $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
- $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
- }
-
- /**
- * insert PHP code in current buffer
- *
- * @param string $code
- */
- public function insertPhpCode($code)
- {
- $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
- }
-
- /**
- * merge PHP code with prefix code and return parse tree tag object
- *
- * @param string $code
- *
- * @return Smarty_Internal_ParseTree_Tag
- */
- public function mergePrefixCode($code)
- {
- $tmp = '';
- foreach ($this->compiler->prefix_code as $preCode) {
- $tmp .= $preCode;
- }
- $this->compiler->prefix_code = array();
- $tmp .= $code;
- return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
- }
-
- const TP_VERT = 1;
-
- const TP_COLON = 2;
-
- const TP_PHP = 3;
-
- const TP_NOCACHE = 4;
-
- const TP_TEXT = 5;
-
- const TP_STRIPON = 6;
-
- const TP_STRIPOFF = 7;
-
- const TP_LITERALSTART = 8;
-
- const TP_LITERALEND = 9;
-
- const TP_LITERAL = 10;
-
- const TP_RDEL = 11;
-
- const TP_SIMPELOUTPUT = 12;
-
- const TP_LDEL = 13;
-
- const TP_DOLLARID = 14;
-
- const TP_EQUAL = 15;
-
- const TP_SIMPLETAG = 16;
-
- const TP_ID = 17;
-
- const TP_PTR = 18;
-
- const TP_LDELIF = 19;
-
- const TP_LDELFOR = 20;
-
- const TP_SEMICOLON = 21;
-
- const TP_INCDEC = 22;
-
- const TP_TO = 23;
-
- const TP_STEP = 24;
-
- const TP_LDELFOREACH = 25;
-
- const TP_SPACE = 26;
-
- const TP_AS = 27;
-
- const TP_APTR = 28;
-
- const TP_LDELSETFILTER = 29;
-
- const TP_SMARTYBLOCKCHILDPARENT = 30;
-
- const TP_CLOSETAG = 31;
-
- const TP_LDELSLASH = 32;
-
- const TP_ATTR = 33;
-
- const TP_INTEGER = 34;
-
- const TP_COMMA = 35;
-
- const TP_OPENP = 36;
-
- const TP_CLOSEP = 37;
-
- const TP_MATH = 38;
-
- const TP_UNIMATH = 39;
-
- const TP_ISIN = 40;
-
- const TP_INSTANCEOF = 41;
-
- const TP_QMARK = 42;
-
- const TP_NOT = 43;
-
- const TP_TYPECAST = 44;
-
- const TP_HEX = 45;
-
- const TP_DOT = 46;
-
- const TP_SINGLEQUOTESTRING = 47;
-
- const TP_DOUBLECOLON = 48;
-
- const TP_NAMESPACE = 49;
-
- const TP_AT = 50;
-
- const TP_HATCH = 51;
-
- const TP_OPENB = 52;
-
- const TP_CLOSEB = 53;
-
- const TP_DOLLAR = 54;
-
- const TP_LOGOP = 55;
-
- const TP_TLOGOP = 56;
-
- const TP_SINGLECOND = 57;
-
- const TP_QUOTE = 58;
-
- const TP_BACKTICK = 59;
-
- const YY_NO_ACTION = 527;
-
- const YY_ACCEPT_ACTION = 526;
-
- const YY_ERROR_ACTION = 525;
-
- const YY_SZ_ACTTAB = 2021;
-
- static public $yy_action = array(242, 10, 131, 178, 255, 76, 157, 5, 83, 293, 12, 149, 152, 116, 292, 93, 331, 217,
- 284, 295, 221, 331, 226, 36, 21, 169, 35, 43, 308, 99, 26, 42, 39, 294, 235, 244,
- 30, 200, 187, 80, 1, 251, 320, 206, 442, 123, 53, 242, 10, 130, 98, 255, 194, 399,
- 5, 83, 442, 240, 298, 107, 116, 310, 174, 220, 217, 36, 295, 221, 399, 208, 135,
- 21, 26, 161, 43, 399, 8, 174, 42, 39, 294, 235, 218, 331, 200, 187, 80, 1, 312,
- 320, 11, 290, 313, 53, 242, 10, 133, 306, 255, 205, 187, 5, 83, 264, 266, 267, 211,
- 116, 353, 220, 52, 217, 298, 295, 221, 206, 226, 220, 21, 290, 290, 43, 321, 36,
- 249, 42, 39, 294, 235, 244, 26, 200, 206, 80, 1, 11, 320, 283, 52, 52, 53, 242, 10,
- 132, 248, 255, 205, 455, 5, 83, 84, 301, 151, 455, 116, 323, 92, 36, 217, 2, 295,
- 221, 331, 226, 26, 21, 290, 304, 43, 137, 36, 111, 42, 39, 294, 235, 244, 26, 200,
- 187, 80, 1, 225, 320, 320, 52, 123, 53, 242, 10, 133, 98, 255, 193, 175, 5, 83,
- 177, 280, 273, 234, 116, 310, 23, 278, 217, 13, 295, 221, 320, 203, 223, 21, 290,
- 442, 43, 138, 187, 326, 42, 39, 294, 235, 244, 216, 200, 442, 80, 1, 4, 320, 329,
- 52, 15, 53, 242, 10, 134, 91, 255, 205, 176, 5, 83, 293, 12, 16, 90, 116, 292, 300,
- 99, 217, 241, 295, 221, 320, 226, 215, 28, 213, 201, 43, 105, 187, 286, 42, 39,
- 294, 235, 244, 215, 200, 214, 80, 1, 105, 320, 11, 135, 285, 53, 242, 10, 133, 8,
- 255, 205, 164, 5, 83, 442, 215, 19, 239, 116, 99, 105, 331, 217, 6, 295, 221, 442,
- 192, 311, 21, 182, 289, 43, 308, 443, 32, 42, 39, 294, 235, 244, 296, 200, 17, 80,
- 1, 443, 320, 262, 107, 26, 53, 242, 10, 133, 122, 255, 191, 172, 5, 83, 183, 188,
- 148, 231, 116, 223, 168, 331, 217, 181, 295, 221, 331, 226, 206, 21, 331, 141, 43,
- 308, 206, 38, 42, 39, 294, 235, 244, 331, 200, 188, 80, 1, 187, 320, 155, 206, 308,
- 53, 242, 10, 133, 25, 255, 198, 188, 5, 83, 206, 145, 160, 308, 116, 228, 146, 206,
- 217, 180, 295, 221, 331, 226, 286, 21, 331, 359, 43, 179, 289, 38, 42, 39, 294,
- 235, 244, 250, 200, 271, 80, 1, 272, 320, 122, 94, 103, 53, 242, 10, 129, 3, 255,
- 205, 144, 5, 83, 185, 289, 170, 99, 116, 270, 322, 331, 217, 184, 295, 221, 331,
- 226, 99, 7, 171, 35, 43, 308, 89, 105, 42, 39, 294, 235, 244, 120, 200, 328, 80, 1,
- 187, 320, 82, 223, 4, 53, 242, 10, 134, 142, 255, 205, 107, 5, 83, 309, 324, 302,
- 20, 116, 316, 206, 291, 217, 290, 295, 221, 33, 226, 277, 28, 399, 243, 43, 257,
- 219, 189, 42, 39, 294, 235, 244, 110, 200, 140, 80, 399, 147, 320, 253, 327, 258,
- 53, 399, 14, 236, 220, 207, 154, 113, 65, 108, 319, 159, 238, 311, 98, 471, 471,
- 330, 237, 279, 471, 210, 325, 245, 299, 310, 86, 308, 143, 268, 263, 259, 260, 269,
- 177, 204, 287, 136, 242, 10, 150, 87, 255, 320, 139, 5, 83, 293, 12, 22, 195, 116,
- 292, 247, 258, 217, 153, 295, 221, 220, 207, 36, 126, 50, 104, 109, 112, 88, 26,
- 98, 246, 397, 330, 237, 85, 212, 210, 325, 245, 258, 310, 102, 299, 299, 220, 207,
- 397, 113, 65, 108, 320, 299, 134, 397, 98, 222, 442, 330, 237, 299, 299, 210, 325,
- 245, 258, 310, 299, 299, 442, 220, 207, 299, 126, 69, 108, 299, 288, 31, 299, 98,
- 299, 299, 330, 237, 299, 299, 210, 325, 245, 80, 310, 299, 320, 299, 258, 299, 299,
- 209, 299, 220, 207, 299, 126, 69, 108, 206, 299, 299, 455, 98, 299, 206, 330, 237,
- 455, 365, 210, 325, 245, 299, 310, 355, 227, 258, 299, 299, 299, 199, 220, 207, 36,
- 126, 64, 104, 299, 214, 36, 26, 98, 299, 442, 330, 237, 26, 299, 210, 325, 245,
- 258, 310, 471, 471, 442, 220, 207, 471, 126, 69, 108, 293, 12, 299, 299, 98, 292,
- 299, 330, 237, 299, 299, 210, 325, 245, 36, 310, 163, 299, 258, 299, 299, 26, 202,
- 220, 207, 299, 126, 44, 108, 471, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299,
- 210, 325, 245, 299, 310, 299, 299, 258, 134, 299, 299, 252, 220, 207, 206, 126, 72,
- 108, 299, 299, 299, 299, 98, 299, 396, 330, 237, 299, 299, 210, 325, 245, 258, 310,
- 299, 299, 299, 220, 207, 396, 126, 74, 108, 254, 299, 80, 396, 98, 320, 299, 330,
- 237, 299, 297, 210, 325, 245, 299, 310, 299, 242, 9, 299, 299, 255, 299, 258, 5,
- 83, 299, 299, 220, 207, 116, 126, 68, 108, 217, 299, 295, 221, 98, 299, 299, 330,
- 237, 299, 299, 210, 325, 245, 299, 310, 299, 258, 299, 299, 299, 299, 220, 207,
- 299, 100, 70, 108, 299, 303, 29, 299, 98, 299, 299, 330, 237, 299, 297, 210, 325,
- 245, 299, 310, 299, 242, 9, 299, 299, 255, 299, 299, 5, 83, 299, 299, 299, 299,
- 116, 299, 299, 258, 217, 299, 295, 221, 220, 207, 299, 126, 66, 108, 299, 299, 299,
- 299, 98, 293, 12, 330, 237, 299, 292, 210, 325, 245, 299, 310, 258, 299, 299, 305,
- 29, 220, 207, 299, 126, 60, 108, 299, 293, 12, 299, 98, 299, 292, 330, 237, 299,
- 299, 210, 325, 245, 299, 310, 232, 299, 258, 299, 206, 299, 299, 220, 207, 299,
- 126, 49, 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 230, 210, 325, 245,
- 299, 310, 258, 167, 299, 299, 299, 220, 207, 299, 126, 58, 108, 299, 41, 40, 37,
- 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282,
- 220, 97, 299, 81, 45, 106, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299,
- 210, 325, 245, 299, 310, 299, 299, 258, 299, 206, 299, 299, 220, 207, 299, 126, 63,
- 108, 299, 186, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310,
- 258, 299, 299, 299, 299, 220, 197, 299, 114, 59, 108, 299, 41, 40, 37, 98, 299,
- 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220,
- 207, 299, 126, 55, 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210,
- 325, 245, 299, 310, 299, 299, 258, 299, 206, 299, 299, 220, 207, 299, 126, 57, 108,
- 299, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258,
- 299, 256, 275, 282, 220, 95, 299, 81, 48, 106, 233, 41, 40, 37, 98, 299, 299, 330,
- 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299,
- 126, 78, 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245,
- 299, 310, 299, 299, 258, 299, 206, 18, 299, 220, 207, 299, 96, 61, 108, 299, 299,
- 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299,
- 299, 299, 220, 207, 299, 126, 47, 108, 299, 41, 40, 37, 98, 299, 299, 330, 237,
- 299, 299, 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299, 126, 75,
- 108, 299, 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310,
- 299, 299, 258, 299, 206, 299, 299, 220, 207, 299, 126, 64, 108, 299, 299, 299, 299,
- 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299,
- 220, 207, 299, 126, 56, 108, 317, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299,
- 210, 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299, 115, 46, 108, 299,
- 299, 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 299, 299,
- 258, 299, 206, 299, 299, 220, 207, 299, 126, 79, 108, 299, 190, 299, 299, 98, 299,
- 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299, 220,
- 207, 299, 126, 62, 108, 299, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299, 210,
- 325, 245, 299, 310, 258, 299, 256, 275, 282, 220, 207, 299, 126, 71, 108, 299, 299,
- 299, 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 299, 299, 258,
- 299, 206, 299, 299, 220, 207, 299, 101, 67, 108, 299, 318, 299, 299, 98, 299, 299,
- 330, 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299, 220, 207,
- 299, 126, 77, 108, 299, 41, 40, 37, 98, 299, 299, 330, 237, 299, 299, 210, 325,
- 245, 299, 310, 258, 299, 256, 275, 282, 220, 196, 299, 126, 54, 108, 299, 299, 299,
- 299, 98, 299, 299, 330, 237, 299, 299, 210, 325, 245, 299, 310, 299, 299, 258, 299,
- 206, 299, 299, 220, 207, 299, 126, 73, 108, 299, 274, 299, 299, 98, 299, 299, 330,
- 237, 299, 299, 210, 325, 245, 299, 310, 258, 299, 299, 299, 299, 220, 224, 299,
- 118, 299, 108, 299, 41, 40, 37, 98, 299, 299, 299, 261, 299, 299, 210, 325, 245,
- 299, 310, 258, 299, 256, 275, 282, 220, 224, 299, 128, 299, 108, 299, 299, 299,
- 299, 98, 299, 299, 229, 315, 206, 299, 210, 325, 245, 299, 310, 299, 471, 471, 307,
- 27, 299, 471, 455, 526, 51, 265, 266, 267, 211, 299, 299, 220, 299, 36, 299, 409,
- 409, 299, 299, 299, 26, 299, 299, 299, 299, 41, 40, 37, 206, 299, 455, 299, 455,
- 299, 471, 299, 455, 299, 299, 299, 299, 299, 256, 275, 282, 229, 299, 299, 117,
- 299, 442, 299, 409, 409, 409, 471, 471, 299, 299, 299, 471, 455, 442, 299, 299, 41,
- 40, 37, 299, 409, 409, 409, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 256,
- 275, 282, 299, 299, 299, 299, 455, 299, 455, 258, 471, 299, 455, 281, 220, 224,
- 299, 127, 299, 108, 299, 299, 299, 299, 98, 299, 299, 299, 299, 299, 299, 210, 325,
- 245, 258, 310, 206, 156, 299, 220, 224, 175, 121, 299, 108, 299, 299, 331, 299, 98,
- 23, 278, 299, 299, 299, 299, 210, 325, 245, 34, 310, 36, 299, 299, 187, 299, 299,
- 299, 26, 299, 299, 258, 299, 41, 40, 37, 220, 224, 299, 125, 299, 108, 299, 299,
- 299, 299, 98, 299, 299, 229, 256, 275, 282, 210, 325, 245, 299, 310, 299, 471, 471,
- 258, 31, 299, 471, 455, 220, 224, 299, 124, 299, 108, 299, 299, 299, 299, 98, 299,
- 299, 299, 299, 299, 299, 210, 325, 245, 258, 310, 206, 299, 299, 220, 224, 455,
- 119, 455, 108, 471, 299, 455, 299, 98, 299, 299, 229, 299, 299, 24, 210, 325, 245,
- 299, 310, 299, 471, 471, 299, 471, 471, 471, 455, 299, 471, 455, 206, 41, 40, 37,
- 299, 299, 299, 471, 471, 299, 299, 299, 471, 455, 299, 299, 276, 299, 256, 275,
- 282, 299, 299, 299, 455, 36, 455, 455, 471, 455, 455, 471, 26, 455, 299, 206, 403,
- 41, 40, 37, 206, 455, 299, 455, 299, 471, 403, 455, 403, 299, 299, 403, 299, 299,
- 256, 275, 282, 299, 403, 299, 403, 299, 403, 299, 299, 299, 299, 299, 299, 299,
- 299, 223, 41, 40, 37, 299, 299, 41, 40, 37, 299, 299, 299, 299, 299, 299, 299, 299,
- 173, 256, 275, 282, 175, 314, 256, 275, 282, 299, 331, 166, 299, 23, 278, 175, 162,
- 299, 299, 299, 175, 331, 299, 299, 23, 278, 331, 187, 299, 23, 278, 158, 299, 299,
- 299, 175, 299, 299, 187, 299, 299, 331, 165, 187, 23, 278, 175, 299, 299, 299, 299,
- 299, 331, 299, 299, 23, 278, 299, 187, 299, 299, 299, 299, 299, 299, 299, 299, 299,
- 299, 187,);
-
- static public $yy_lookahead = array(12, 13, 14, 80, 16, 17, 71, 19, 20, 12, 13, 71, 91, 25, 17, 75, 81, 29, 30, 31,
- 32, 81, 34, 26, 36, 28, 15, 39, 93, 18, 33, 43, 44, 45, 46, 47, 28, 49, 98, 51,
- 52, 70, 54, 1, 36, 74, 58, 12, 13, 14, 79, 16, 17, 11, 19, 20, 48, 86, 64, 48,
- 25, 90, 75, 69, 29, 26, 31, 32, 26, 34, 46, 36, 33, 71, 39, 33, 52, 75, 43, 44,
- 45, 46, 47, 81, 49, 98, 51, 52, 53, 54, 35, 22, 37, 58, 12, 13, 14, 103, 16, 17,
- 98, 19, 20, 63, 64, 65, 66, 25, 11, 69, 41, 29, 64, 31, 32, 1, 34, 69, 36, 22,
- 22, 39, 53, 26, 95, 43, 44, 45, 46, 47, 33, 49, 1, 51, 52, 35, 54, 37, 41, 41,
- 58, 12, 13, 14, 14, 16, 17, 46, 19, 20, 102, 103, 71, 52, 25, 11, 75, 26, 29,
- 36, 31, 32, 81, 34, 33, 36, 22, 17, 39, 14, 26, 48, 43, 44, 45, 46, 47, 33, 49,
- 98, 51, 52, 70, 54, 54, 41, 74, 58, 12, 13, 14, 79, 16, 17, 75, 19, 20, 8, 9,
- 10, 50, 25, 90, 84, 85, 29, 13, 31, 32, 54, 34, 46, 36, 22, 36, 39, 14, 98, 53,
- 43, 44, 45, 46, 47, 46, 49, 48, 51, 52, 36, 54, 53, 41, 21, 58, 12, 13, 14, 36,
- 16, 17, 75, 19, 20, 12, 13, 15, 35, 25, 17, 59, 18, 29, 22, 31, 32, 54, 34, 74,
- 36, 76, 77, 39, 79, 98, 99, 43, 44, 45, 46, 47, 74, 49, 76, 51, 52, 79, 54, 35,
- 46, 37, 58, 12, 13, 14, 52, 16, 17, 71, 19, 20, 36, 74, 15, 76, 25, 18, 79, 81,
- 29, 35, 31, 32, 48, 34, 92, 36, 94, 95, 39, 93, 36, 15, 43, 44, 45, 46, 47, 53,
- 49, 26, 51, 52, 48, 54, 89, 48, 33, 58, 12, 13, 14, 96, 16, 17, 71, 19, 20, 14,
- 98, 71, 17, 25, 46, 71, 81, 29, 75, 31, 32, 81, 34, 1, 36, 81, 71, 39, 93, 1, 2,
- 43, 44, 45, 46, 47, 81, 49, 98, 51, 52, 98, 54, 91, 1, 93, 58, 12, 13, 14, 28,
- 16, 17, 98, 19, 20, 1, 91, 71, 93, 25, 18, 71, 1, 29, 80, 31, 32, 81, 34, 99,
- 36, 81, 11, 39, 94, 95, 2, 43, 44, 45, 46, 47, 89, 49, 65, 51, 52, 68, 54, 96,
- 80, 79, 58, 12, 13, 14, 36, 16, 17, 71, 19, 20, 94, 95, 71, 18, 25, 53, 96, 81,
- 29, 75, 31, 32, 81, 34, 18, 36, 74, 15, 39, 93, 91, 79, 43, 44, 45, 46, 47, 17,
- 49, 17, 51, 52, 98, 54, 17, 46, 36, 58, 12, 13, 14, 51, 16, 17, 48, 19, 20, 17,
- 34, 17, 42, 25, 17, 1, 34, 29, 22, 31, 32, 23, 34, 37, 36, 11, 17, 39, 5, 17,
- 17, 43, 44, 45, 46, 47, 17, 49, 51, 51, 26, 27, 54, 11, 53, 64, 58, 33, 13, 14,
- 69, 70, 17, 72, 73, 74, 53, 91, 81, 92, 79, 12, 13, 82, 83, 9, 17, 86, 87, 88,
- 104, 90, 79, 93, 91, 3, 4, 5, 6, 7, 8, 100, 101, 79, 12, 13, 91, 79, 16, 54, 91,
- 19, 20, 12, 13, 13, 14, 25, 17, 17, 64, 29, 91, 31, 32, 69, 70, 26, 72, 73, 74,
- 78, 76, 79, 33, 79, 34, 11, 82, 83, 79, 15, 86, 87, 88, 64, 90, 67, 104, 104,
- 69, 70, 26, 72, 73, 74, 54, 104, 14, 33, 79, 17, 36, 82, 83, 104, 104, 86, 87,
- 88, 64, 90, 104, 104, 48, 69, 70, 104, 72, 73, 74, 104, 101, 15, 104, 79, 104,
- 104, 82, 83, 104, 104, 86, 87, 88, 51, 90, 104, 54, 104, 64, 104, 104, 97, 104,
- 69, 70, 104, 72, 73, 74, 1, 104, 104, 46, 79, 104, 1, 82, 83, 52, 11, 86, 87,
- 88, 104, 90, 11, 18, 64, 104, 104, 104, 97, 69, 70, 26, 72, 73, 74, 104, 76, 26,
- 33, 79, 104, 36, 82, 83, 33, 104, 86, 87, 88, 64, 90, 12, 13, 48, 69, 70, 17,
- 72, 73, 74, 12, 13, 104, 104, 79, 17, 104, 82, 83, 104, 104, 86, 87, 88, 26, 90,
- 28, 104, 64, 104, 104, 33, 97, 69, 70, 104, 72, 73, 74, 50, 104, 104, 104, 79,
- 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 14, 104, 104, 17,
- 69, 70, 1, 72, 73, 74, 104, 104, 104, 104, 79, 104, 11, 82, 83, 104, 104, 86,
- 87, 88, 64, 90, 104, 104, 104, 69, 70, 26, 72, 73, 74, 49, 104, 51, 33, 79, 54,
- 104, 82, 83, 104, 5, 86, 87, 88, 104, 90, 104, 12, 13, 14, 104, 16, 104, 64, 19,
- 20, 104, 104, 69, 70, 25, 72, 73, 74, 29, 104, 31, 32, 79, 104, 104, 82, 83,
- 104, 104, 86, 87, 88, 104, 90, 104, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73,
- 74, 104, 58, 59, 104, 79, 104, 104, 82, 83, 104, 5, 86, 87, 88, 104, 90, 104,
- 12, 13, 14, 104, 16, 104, 104, 19, 20, 104, 104, 104, 104, 25, 104, 104, 64, 29,
- 104, 31, 32, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 12, 13, 82, 83,
- 104, 17, 86, 87, 88, 104, 90, 64, 104, 104, 58, 59, 69, 70, 104, 72, 73, 74,
- 104, 12, 13, 104, 79, 104, 17, 82, 83, 104, 104, 86, 87, 88, 104, 90, 50, 104,
- 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104,
- 82, 83, 104, 50, 86, 87, 88, 104, 90, 64, 27, 104, 104, 104, 69, 70, 104, 72,
- 73, 74, 104, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90,
- 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104,
- 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70,
- 104, 72, 73, 74, 104, 11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88,
- 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 104, 38, 39, 40, 79,
- 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70,
- 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88,
- 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 38, 39,
- 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57,
- 69, 70, 104, 72, 73, 74, 37, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87,
- 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104,
- 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 2,
- 104, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104,
- 104, 86, 87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 104,
- 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55,
- 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104,
- 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73,
- 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64,
- 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 37, 38, 39, 40, 79, 104, 104, 82,
- 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74,
- 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104,
- 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 11, 104, 104, 79, 104,
- 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104,
- 72, 73, 74, 104, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104,
- 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104,
- 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69,
- 70, 104, 72, 73, 74, 104, 11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87,
- 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 72, 73, 74, 104, 38, 39, 40,
- 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69,
- 70, 104, 72, 73, 74, 104, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87,
- 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 72, 73, 74, 104, 11,
- 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104,
- 104, 104, 69, 70, 104, 72, 104, 74, 104, 38, 39, 40, 79, 104, 104, 104, 83, 104,
- 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 72, 104, 74, 104,
- 104, 104, 104, 79, 104, 104, 2, 83, 1, 104, 86, 87, 88, 104, 90, 104, 12, 13,
- 11, 15, 104, 17, 18, 61, 62, 63, 64, 65, 66, 104, 104, 69, 104, 26, 104, 1, 2,
- 104, 104, 104, 33, 104, 104, 104, 104, 38, 39, 40, 1, 104, 46, 104, 48, 104, 50,
- 104, 52, 104, 104, 104, 104, 104, 55, 56, 57, 2, 104, 104, 21, 104, 36, 104, 38,
- 39, 40, 12, 13, 104, 104, 104, 17, 18, 48, 104, 104, 38, 39, 40, 104, 55, 56,
- 57, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 55, 56, 57, 104, 104, 104,
- 104, 46, 104, 48, 64, 50, 104, 52, 53, 69, 70, 104, 72, 104, 74, 104, 104, 104,
- 104, 79, 104, 104, 104, 104, 104, 104, 86, 87, 88, 64, 90, 1, 71, 104, 69, 70,
- 75, 72, 104, 74, 104, 104, 81, 104, 79, 84, 85, 104, 104, 104, 104, 86, 87, 88,
- 24, 90, 26, 104, 104, 98, 104, 104, 104, 33, 104, 104, 64, 104, 38, 39, 40, 69,
- 70, 104, 72, 104, 74, 104, 104, 104, 104, 79, 104, 104, 2, 55, 56, 57, 86, 87,
- 88, 104, 90, 104, 12, 13, 64, 15, 104, 17, 18, 69, 70, 104, 72, 104, 74, 104,
- 104, 104, 104, 79, 104, 104, 104, 104, 104, 104, 86, 87, 88, 64, 90, 1, 104,
- 104, 69, 70, 46, 72, 48, 74, 50, 104, 52, 104, 79, 104, 104, 2, 104, 104, 2, 86,
- 87, 88, 104, 90, 104, 12, 13, 104, 12, 13, 17, 18, 104, 17, 18, 1, 38, 39, 40,
- 104, 104, 104, 12, 13, 104, 104, 104, 17, 18, 104, 104, 53, 104, 55, 56, 57,
- 104, 104, 104, 46, 26, 48, 46, 50, 48, 52, 50, 33, 52, 104, 1, 11, 38, 39, 40,
- 1, 46, 104, 48, 104, 50, 21, 52, 23, 104, 104, 26, 104, 104, 55, 56, 57, 104,
- 33, 104, 35, 104, 37, 104, 104, 104, 104, 104, 104, 104, 104, 46, 38, 39, 40,
- 104, 104, 38, 39, 40, 104, 104, 104, 104, 104, 104, 104, 104, 71, 55, 56, 57,
- 75, 59, 55, 56, 57, 104, 81, 71, 104, 84, 85, 75, 71, 104, 104, 104, 75, 81,
- 104, 104, 84, 85, 81, 98, 104, 84, 85, 71, 104, 104, 104, 75, 104, 104, 98, 104,
- 104, 81, 71, 98, 84, 85, 75, 104, 104, 104, 104, 104, 81, 104, 104, 84, 85, 104,
- 98, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 98,);
-
- const YY_SHIFT_USE_DFLT = - 13;
-
- const YY_SHIFT_MAX = 236;
-
- static public $yy_shift_ofst = array(542, 364, 82, 82, 82, 411, 364, 411, 35, - 12, - 12, 82, 82, 82, 82, 82, 82,
- 176, 82, 82, 129, 82, 82, 82, 317, 82, 82, 82, 82, 82, 82, 270, 82, 82, 82, 82,
- 176, 223, 223, 458, 458, 458, 458, 458, 1734, 1603, 1862, 1862, 1862, 1862,
- 1862, 542, 749, 803, 1897, 1448, 1531, 1199, 1643, 1826, 1365, 950, 1282, 1033,
- 1116, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 660,
- 1902, 1089, 1089, 594, 666, 131, 202, 865, - 3, 703, 551, 551, 233, 202, 202,
- 131, 131, 357, 97, 484, 144, 920, 505, 42, 768, 189, 232, 11, 232, 278, 324,
- 428, 39, 372, 324, 39, 351, 384, 391, 294, 155, 114, 114, 114, 114, 417, 417,
- 114, 114, 114, 114, - 13, 1786, 1659, 1600, 1844, 1841, 1858, 552, 897, 519,
- 618, 24, 101, 39, 101, 24, 39, 24, 39, 130, 39, 39, 24, 39, 24, 24, 193, 24,
- 39, 39, 39, 24, 39, 39, 39, 130, 39, 39, 39, 130, 39, 130, 39, 231, 39, 39,
- 114, 114, 114, 526, 404, 417, 404, 114, 417, 390, 114, 417, - 13, - 13, - 13,
- - 13, - 13, 1630, 1888, 576, 178, 694, 191, 69, 8, 100, 275, 212, 243, 297,
- 265, 255, 150, 98, 165, 55, 123, 493, 479, 468, 456, 434, 482, 483, 473, 461,
- 502, 489, 457, 452, 466, 422, 421, 449, 442, 444, 462, 432, 467, 440, 464, 446,
- 390,);
-
- const YY_REDUCE_USE_DFLT = - 80;
-
- const YY_REDUCE_MAX = 190;
-
- static public $yy_reduce_ofst = array(1558, 451, 556, 640, 586, 506, 531, 615, 995, 939, 1078, 723, 1244, 968, 856,
- 912, 1354, 1134, 1105, 1161, 1051, 1217, 1022, 1188, 1300, 1466, 1383, 1271,
- 1327, 1437, 1410, 757, 698, 669, 885, 829, 785, 1493, 1520, 1761, 1706, 1669,
- 1644, 1736, 1880, 1665, 1896, 1911, 1665, 1891, 1922, 40, - 29, 48, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 81, 119, 119, 119, 112, 2, - 60, 184, - 6, 264, 358,
- - 65, 217, 213, 218, 197, 284, 269, 166, 363, - 13, 363, 295, 342, - 13, - 13,
- 349, 281, 310, 295, 310, 323, 310, 316, 272, 236, 273, - 13, - 13, - 13, 320,
- 374, - 13, - 13, 366, - 13, 338, 310, - 13, - 13, - 13, - 13, - 13, 465, 465,
- 465, 465, 465, 465, 474, 450, 465, 465, 437, 469, 447, 453, 437, 447, 437,
- 447, 463, 447, 447, 437, 447, 437, 437, 481, 437, 447, 447, 447, 437, 447,
- 447, 447, 478, 447, 447, 447, 511, 447, 504, 447, 503, 447, 447, 241, 241,
- 241, 530, 300, 29, 300, 241, 29, 361, 241, 29, - 79, - 77, 314, 340, 436,);
-
- static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 25, 29, 31, 32,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 53, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 43, 44,
- 45, 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 43, 44,
- 45, 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 52, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
- 46, 47, 49, 51, 54, 58,),
- array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
- array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 25, 29, 31, 32,),
- array(14, 17, 49, 51, 54,),
- array(5, 12, 13, 14, 16, 19, 20, 25, 29, 31, 32, 58, 59,),
- array(1, 38, 39, 40, 55, 56, 57, 59,),
- array(1, 11, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 38, 39, 40, 55, 56, 57,), array(1, 2, 38, 39, 40, 55, 56, 57,),
- array(1, 21, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 53, 55, 56, 57,),
- array(1, 11, 38, 39, 40, 55, 56, 57,),
- array(1, 27, 38, 39, 40, 55, 56, 57,),
- array(1, 37, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 38, 39, 40, 55, 56, 57,),
- array(1, 37, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
- array(1, 11, 18, 26, 33, 36, 48,), array(1, 38, 39, 40, 55, 56, 57,),
- array(38, 39, 40, 55, 56, 57,), array(38, 39, 40, 55, 56, 57,),
- array(14, 17, 51, 54,), array(1, 11, 26, 33,), array(1, 26, 33,),
- array(14, 36, 54,),
- array(5, 12, 13, 14, 16, 19, 20, 25, 29, 31, 32, 58, 59,),
- array(12, 13, 17, 26, 28, 33,), array(12, 13, 17, 26, 28, 33,),
- array(12, 13, 17, 26, 33,), array(12, 13, 17, 26, 33,), array(18, 46, 52,),
- array(14, 36, 54,), array(14, 36, 54,), array(1, 26, 33,),
- array(1, 26, 33,), array(1, 2,), array(11, 22, 26, 33, 41,),
- array(1, 11, 26, 27, 33,), array(11, 22, 26, 33, 41,),
- array(12, 13, 17, 50,), array(13, 14, 17, 54,), array(1, 11, 26, 33,),
- array(1, 11, 26, 33,), array(8, 9, 10,), array(12, 13, 17,),
- array(15, 18, 48,), array(12, 13, 17,), array(15, 18, 48,), array(14, 17,),
- array(18, 48,), array(26, 33,), array(1, 18,), array(14, 17,),
- array(26, 33,), array(1, 28,), array(1, 53,), array(1, 11,), array(26, 33,),
- array(14, 54,), array(1,), array(1,), array(1,), array(1,), array(18,),
- array(18,), array(1,), array(1,), array(1,), array(1,), array(),
- array(2, 12, 13, 15, 17, 18, 46, 48, 50, 52,),
- array(2, 12, 13, 17, 18, 46, 48, 50, 52, 53,),
- array(2, 12, 13, 15, 17, 18, 46, 48, 50, 52,),
- array(2, 12, 13, 17, 18, 46, 48, 50, 52,),
- array(2, 12, 13, 17, 18, 46, 48, 50, 52,),
- array(12, 13, 17, 18, 46, 48, 50, 52,), array(13, 14, 17, 34, 54,),
- array(12, 13, 17, 50,), array(12, 13, 17,), array(15, 46, 52,),
- array(46, 52,), array(46, 52,), array(26, 33,), array(46, 52,),
- array(46, 52,), array(26, 33,), array(46, 52,), array(26, 33,),
- array(14, 54,), array(26, 33,), array(26, 33,), array(46, 52,),
- array(26, 33,), array(46, 52,), array(46, 52,), array(13, 36,),
- array(46, 52,), array(26, 33,), array(26, 33,), array(26, 33,),
- array(46, 52,), array(26, 33,), array(26, 33,), array(26, 33,),
- array(14, 54,), array(26, 33,), array(26, 33,), array(26, 33,),
- array(14, 54,), array(26, 33,), array(14, 54,), array(26, 33,),
- array(15, 22,), array(26, 33,), array(26, 33,), array(1,), array(1,),
- array(1,), array(9,), array(2,), array(18,), array(2,), array(1,),
- array(18,), array(36,), array(1,), array(18,), array(), array(), array(),
- array(), array(), array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57,),
- array(11, 21, 23, 26, 33, 35, 37, 46,), array(11, 15, 26, 33, 36, 48,),
- array(36, 46, 48, 53,), array(12, 13, 17, 50,), array(22, 41, 59,),
- array(22, 41, 53,), array(28, 36, 48,), array(35, 37,), array(36, 48,),
- array(21, 35,), array(35, 37,), array(15, 46,), array(35, 53,),
- array(36, 48,), array(17, 50,), array(22, 41,), array(46, 53,),
- array(35, 37,), array(36, 48,), array(5,), array(17,), array(23,),
- array(37,), array(15,), array(17,), array(17,), array(53,), array(53,),
- array(11,), array(17,), array(51,), array(34,), array(22,), array(51,),
- array(46,), array(17,), array(17,), array(17,), array(17,), array(36,),
- array(17,), array(42,), array(17,), array(34,), array(36,), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(),);
-
- static public $yy_default = array(335, 510, 490, 490, 490, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 393, 525, 360, 393,
- 357, 393, 369, 332, 525, 525, 525, 525, 525, 525, 525, 525, 525, 398, 525, 525,
- 525, 513, 405, 395, 404, 489, 398, 374, 400, 511, 488, 414, 432, 512, 421, 420,
- 525, 407, 393, 525, 525, 393, 393, 393, 393, 502, 525, 525, 393, 393, 383, 422,
- 407, 422, 455, 525, 407, 407, 525, 455, 445, 455, 445, 525, 445, 393, 387, 525,
- 371, 407, 407, 407, 393, 525, 417, 425, 389, 410, 499, 445, 423, 411, 407, 424,
- 497, 444, 444, 444, 444, 444, 444, 525, 457, 455, 471, 449, 448, 366, 450, 451,
- 379, 453, 378, 525, 368, 367, 452, 364, 483, 480, 455, 481, 358, 380, 362, 482,
- 373, 356, 361, 525, 382, 370, 377, 525, 372, 525, 354, 525, 381, 376, 439, 413,
- 384, 348, 492, 477, 491, 388, 503, 455, 390, 500, 455, 496, 496, 496, 455, 432,
- 428, 432, 432, 456, 422, 422, 432, 525, 440, 525, 525, 428, 525, 432, 525, 422,
- 428, 525, 525, 340, 525, 401, 525, 525, 525, 525, 435, 525, 525, 525, 525, 430,
- 422, 525, 428, 525, 525, 525, 525, 501, 525, 434, 525, 525, 471, 412, 391, 402,
- 418, 375, 352, 394, 435, 436, 460, 459, 471, 479, 437, 419, 442, 351, 443, 363,
- 504, 342, 438, 341, 343, 416, 441, 339, 334, 333, 336, 337, 338, 344, 468, 349,
- 347, 350, 476, 505, 469, 406, 415, 345, 346, 466, 506, 486, 385, 487, 495, 508,
- 509, 478, 426, 429, 474, 475, 427, 386, 507, 524, 523, 520, 518, 517, 493, 514,
- 494, 515, 516, 522, 473, 446, 447, 454, 470, 485, 519, 498, 458, 434, 461, 464,
- 472, 467, 484, 521, 431, 433, 465, 463, 409, 462, 408, 392,);
-
- const YYNOCODE = 105;
-
- const YYSTACKDEPTH = 500;
-
- const YYNSTATE = 332;
-
- const YYNRULE = 193;
-
- const YYERRORSYMBOL = 60;
-
- const YYERRSYMDT = 'yy0';
-
- const YYFALLBACK = 0;
-
- public static $yyFallback = array();
-
- public function Trace($TraceFILE, $zTracePrompt)
- {
- if (!$TraceFILE) {
- $zTracePrompt = 0;
- } elseif (!$zTracePrompt) {
- $TraceFILE = 0;
- }
- $this->yyTraceFILE = $TraceFILE;
- $this->yyTracePrompt = $zTracePrompt;
- }
-
- public function PrintTrace()
- {
- $this->yyTraceFILE = fopen('php://output', 'w');
- $this->yyTracePrompt = '<br>';
- }
-
- public $yyTraceFILE;
-
- public $yyTracePrompt;
-
- public $yyidx; /* Index of top element in stack */
- public $yyerrcnt; /* Shifts left before out of the error */
- public $yystack = array(); /* The parser's stack */
-
- public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'NOCACHE', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
- 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
- 'SIMPLETAG', 'ID', 'PTR', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', 'STEP',
- 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT',
- 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP', 'CLOSEP', 'MATH',
- 'UNIMATH', 'ISIN', 'INSTANCEOF', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
- 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB',
- 'DOLLAR', 'LOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK', 'error', 'start',
- 'template', 'template_element', 'smartytag', 'literal', 'text_content',
- 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes', 'value', 'expr',
- 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction', 'varvar',
- 'modparameters', 'attribute', 'ternary', 'array', 'lop', 'scond', 'ns1', 'function',
- 'doublequoted_with_quotes', 'static_class_access', 'object', 'arrayindex', 'indexdef',
- 'varvarele', 'objectchain', 'objectelement', 'method', 'params', 'modifier',
- 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
- 'doublequotedcontent',);
-
- public static $yyRuleName = array('start ::= template', 'template ::= template_element',
- 'template ::= template template_element', 'template ::=',
- 'template_element ::= smartytag', 'template_element ::= literal',
- 'template_element ::= PHP', 'template_element ::= NOCACHE',
- 'template_element ::= text_content', 'text_content ::= TEXT',
- 'text_content ::= text_content TEXT', 'template_element ::= STRIPON',
- 'template_element ::= STRIPOFF', 'literal ::= LITERALSTART LITERALEND',
- 'literal ::= LITERALSTART literal_elements LITERALEND',
- 'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
- 'literal_element ::= literal', 'literal_element ::= LITERAL',
- 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
- 'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
- 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
- 'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
- 'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
- 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
- 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
- 'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
- 'tag ::= LDEL ID PTR ID modifierlist attributes', 'tag ::= LDELIF expr',
- 'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
- 'tag ::= LDELIF statement attributes',
- 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
- 'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
- 'tag ::= LDELFOR statement TO expr attributes',
- 'tag ::= LDELFOR statement TO expr STEP expr attributes',
- 'tag ::= LDELFOREACH attributes',
- 'tag ::= LDELFOREACH SPACE value AS varvar attributes',
- 'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
- 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
- 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
- 'tag ::= LDELSETFILTER ID modparameters',
- 'tag ::= LDELSETFILTER ID modparameters modifierlist',
- 'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
- 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
- 'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
- 'attributes ::= attributes attribute', 'attributes ::= attribute',
- 'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
- 'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
- 'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
- 'statements ::= statement', 'statements ::= statements COMMA statement',
- 'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
- 'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
- 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
- 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
- 'expr ::= expr modifierlist', 'expr ::= expr lop expr', 'expr ::= expr scond',
- 'expr ::= expr ISIN array', 'expr ::= expr ISIN value',
- 'expr ::= variable INSTANCEOF ns1', 'expr ::= variable INSTANCEOF variable',
- 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
- 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
- 'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
- 'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
- 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
- 'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
- 'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
- 'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
- 'value ::= value modifierlist', 'value ::= NAMESPACE',
- 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
- 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
- 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
- 'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
- 'variable ::= HATCH variable HATCH arrayindex',
- 'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
- 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
- 'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
- 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
- 'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
- 'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
- 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
- 'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
- 'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
- 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
- 'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
- 'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
- 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
- 'objectchain ::= objectchain objectelement',
- 'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
- 'objectelement ::= PTR LDEL expr RDEL arrayindex',
- 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
- 'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
- 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
- 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
- 'modifierlist ::= modifierlist modifier modparameters',
- 'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
- 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
- 'modparameters ::=', 'modparameter ::= COLON value',
- 'modparameter ::= COLON array', 'static_class_access ::= method',
- 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
- 'static_class_access ::= DOLLARID arrayindex',
- 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
- 'lop ::= TLOGOP', 'scond ::= SINGLECOND', 'array ::= OPENB arrayelements CLOSEB',
- 'arrayelements ::= arrayelement',
- 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
- 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
- 'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
- 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
- 'doublequoted ::= doublequoted doublequotedcontent',
- 'doublequoted ::= doublequotedcontent',
- 'doublequotedcontent ::= BACKTICK variable BACKTICK',
- 'doublequotedcontent ::= BACKTICK expr BACKTICK',
- 'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
- 'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
- 'doublequotedcontent ::= TEXT',);
-
- public function tokenName($tokenType)
- {
- if ($tokenType === 0) {
- return 'End of Input';
- }
- if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
- return $this->yyTokenName[ $tokenType ];
- } else {
- return "Unknown";
- }
- }
-
- public static function yy_destructor($yymajor, $yypminor)
- {
- switch ($yymajor) {
- default:
- break; /* If no destructor action specified: do nothing */
- }
- }
-
- public function yy_pop_parser_stack()
- {
- if (empty($this->yystack)) {
- return;
- }
- $yytos = array_pop($this->yystack);
- if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
- }
- $yymajor = $yytos->major;
- self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx --;
-
- return $yymajor;
- }
-
- public function __destruct()
- {
- while ($this->yystack !== Array()) {
- $this->yy_pop_parser_stack();
- }
- if (is_resource($this->yyTraceFILE)) {
- fclose($this->yyTraceFILE);
- }
- }
-
- public function yy_get_expected_tokens($token)
- {
- static $res3 = array();
- static $res4 = array();
- $state = $this->yystack[ $this->yyidx ]->stateno;
- $expected = self::$yyExpectedTokens[ $state ];
- if (isset($res3[ $state ][ $token ])) {
- if ($res3[ $state ][ $token ]) {
- return $expected;
- }
- } else {
- if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
- return $expected;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done ++ == 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return array_unique($expected);
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
- self::$yyRuleInfo[ $yyruleno ][ 0 ]);
- if (isset(self::$yyExpectedTokens[ $nextstate ])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
- if (isset($res4[ $nextstate ][ $token ])) {
- if ($res4[ $nextstate ][ $token ]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- } else {
- if ($res4[ $nextstate ][ $token ] =
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
- ) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return array_unique($expected);
- }
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx ++;
- $x = new TP_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $this->yystack[ $this->yyidx ] = $x;
- continue 2;
- } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return array_unique($expected);
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return $expected;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return array_unique($expected);
- }
-
- public function yy_is_expected_token($token)
- {
- static $res = array();
- static $res2 = array();
- if ($token === 0) {
- return true; // 0 is not part of this
- }
- $state = $this->yystack[ $this->yyidx ]->stateno;
- if (isset($res[ $state ][ $token ])) {
- if ($res[ $state ][ $token ]) {
- return true;
- }
- } else {
- if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
- return true;
- }
- }
- $stack = $this->yystack;
- $yyidx = $this->yyidx;
- do {
- $yyact = $this->yy_find_shift_action($token);
- if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
- // reduce action
- $done = 0;
- do {
- if ($done ++ == 100) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // too much recursion prevents proper detection
- // so give up
- return true;
- }
- $yyruleno = $yyact - self::YYNSTATE;
- $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
- self::$yyRuleInfo[ $yyruleno ][ 0 ]);
- if (isset($res2[ $nextstate ][ $token ])) {
- if ($res2[ $nextstate ][ $token ]) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- } else {
- if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true))
- ) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- return true;
- }
- }
- if ($nextstate < self::YYNSTATE) {
- // we need to shift a non-terminal
- $this->yyidx ++;
- $x = new TP_yyStackEntry;
- $x->stateno = $nextstate;
- $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $this->yystack[ $this->yyidx ] = $x;
- continue 2;
- } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- if (!$token) {
- // end of input: this is valid
- return true;
- }
- // the last token was just ignored, we can't accept
- // by ignoring input, this is in essence ignoring a
- // syntax error!
- return false;
- } elseif ($nextstate === self::YY_NO_ACTION) {
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
- // input accepted, but not shifted (I guess)
- return true;
- } else {
- $yyact = $nextstate;
- }
- } while (true);
- }
- break;
- } while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
-
- return true;
- }
-
- public function yy_find_shift_action($iLookAhead)
- {
- $stateno = $this->yystack[ $this->yyidx ]->stateno;
-
- /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
- if (!isset(self::$yy_shift_ofst[ $stateno ])) {
- // no shift actions
- return self::$yy_default[ $stateno ];
- }
- $i = self::$yy_shift_ofst[ $stateno ];
- if ($i === self::YY_SHIFT_USE_DFLT) {
- return self::$yy_default[ $stateno ];
- }
- if ($iLookAhead == self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
- if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
- ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
- ) {
- if ($this->yyTraceFILE) {
- fwrite($this->yyTraceFILE,
- $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
- $this->yyTokenName[ $iFallback ] . "\n");
- }
-
- return $this->yy_find_shift_action($iFallback);
- }
-
- return self::$yy_default[ $stateno ];
- } else {
- return self::$yy_action[ $i ];
- }
- }
-
- public function yy_find_reduce_action($stateno, $iLookAhead)
- {
- /* $stateno = $this->yystack[$this->yyidx]->stateno; */
-
- if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
- return self::$yy_default[ $stateno ];
- }
- $i = self::$yy_reduce_ofst[ $stateno ];
- if ($i == self::YY_REDUCE_USE_DFLT) {
- return self::$yy_default[ $stateno ];
- }
- if ($iLookAhead == self::YYNOCODE) {
- return self::YY_NO_ACTION;
- }
- $i += $iLookAhead;
- if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
- return self::$yy_default[ $stateno ];
- } else {
- return self::$yy_action[ $i ];
- }
- }
-
- public function yy_shift($yyNewState, $yyMajor, $yypMinor)
- {
- $this->yyidx ++;
- if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx --;
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- #line 214 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->internalError = true;
- $this->compiler->trigger_template_error("Stack overflow in template parser");
-
- return;
- }
- $yytos = new TP_yyStackEntry;
- $yytos->stateno = $yyNewState;
- $yytos->major = $yyMajor;
- $yytos->minor = $yypMinor;
- $this->yystack[] = $yytos;
- if ($this->yyTraceFILE && $this->yyidx > 0) {
- fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
- fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
- for ($i = 1; $i <= $this->yyidx; $i ++) {
- fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
- }
- fwrite($this->yyTraceFILE, "\n");
- }
- }
-
- public static $yyRuleInfo = array(array(0 => 61, 1 => 1), array(0 => 62, 1 => 1), array(0 => 62, 1 => 2),
- array(0 => 62, 1 => 0), array(0 => 63, 1 => 1), array(0 => 63, 1 => 1),
- array(0 => 63, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 1),
- array(0 => 66, 1 => 1), array(0 => 66, 1 => 2), array(0 => 63, 1 => 1),
- array(0 => 63, 1 => 1), array(0 => 65, 1 => 2), array(0 => 65, 1 => 3),
- array(0 => 67, 1 => 2), array(0 => 67, 1 => 0), array(0 => 68, 1 => 1),
- array(0 => 68, 1 => 1), array(0 => 64, 1 => 2), array(0 => 64, 1 => 1),
- array(0 => 69, 1 => 2), array(0 => 69, 1 => 3), array(0 => 69, 1 => 2),
- array(0 => 69, 1 => 3), array(0 => 69, 1 => 2), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 4), array(0 => 69, 1 => 4), array(0 => 69, 1 => 5),
- array(0 => 69, 1 => 5), array(0 => 64, 1 => 1), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 2), array(0 => 69, 1 => 4), array(0 => 69, 1 => 5),
- array(0 => 69, 1 => 6), array(0 => 69, 1 => 2), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 2), array(0 => 69, 1 => 3), array(0 => 69, 1 => 8),
- array(0 => 78, 1 => 2), array(0 => 78, 1 => 1), array(0 => 69, 1 => 5),
- array(0 => 69, 1 => 7), array(0 => 69, 1 => 2), array(0 => 69, 1 => 6),
- array(0 => 69, 1 => 8), array(0 => 69, 1 => 6), array(0 => 69, 1 => 8),
- array(0 => 69, 1 => 3), array(0 => 69, 1 => 4), array(0 => 69, 1 => 2),
- array(0 => 64, 1 => 1), array(0 => 69, 1 => 2), array(0 => 69, 1 => 3),
- array(0 => 69, 1 => 4), array(0 => 69, 1 => 5), array(0 => 71, 1 => 2),
- array(0 => 71, 1 => 1), array(0 => 71, 1 => 0), array(0 => 81, 1 => 4),
- array(0 => 81, 1 => 2), array(0 => 81, 1 => 2), array(0 => 81, 1 => 2),
- array(0 => 81, 1 => 2), array(0 => 81, 1 => 2), array(0 => 81, 1 => 4),
- array(0 => 77, 1 => 1), array(0 => 77, 1 => 3), array(0 => 76, 1 => 3),
- array(0 => 76, 1 => 3), array(0 => 76, 1 => 3), array(0 => 76, 1 => 3),
- array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
- array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
- array(0 => 73, 1 => 2), array(0 => 73, 1 => 3), array(0 => 73, 1 => 2),
- array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 3),
- array(0 => 73, 1 => 3), array(0 => 82, 1 => 7), array(0 => 82, 1 => 7),
- array(0 => 72, 1 => 1), array(0 => 72, 1 => 2), array(0 => 72, 1 => 2),
- array(0 => 72, 1 => 2), array(0 => 72, 1 => 2), array(0 => 72, 1 => 1),
- array(0 => 72, 1 => 1), array(0 => 72, 1 => 3), array(0 => 72, 1 => 2),
- array(0 => 72, 1 => 2), array(0 => 72, 1 => 1), array(0 => 72, 1 => 1),
- array(0 => 72, 1 => 3), array(0 => 72, 1 => 1), array(0 => 72, 1 => 1),
- array(0 => 72, 1 => 3), array(0 => 72, 1 => 1), array(0 => 72, 1 => 2),
- array(0 => 72, 1 => 1), array(0 => 72, 1 => 3), array(0 => 86, 1 => 1),
- array(0 => 86, 1 => 1), array(0 => 70, 1 => 1), array(0 => 70, 1 => 1),
- array(0 => 70, 1 => 3), array(0 => 70, 1 => 1), array(0 => 70, 1 => 3),
- array(0 => 70, 1 => 4), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
- array(0 => 74, 1 => 2), array(0 => 74, 1 => 2), array(0 => 91, 1 => 2),
- array(0 => 91, 1 => 0), array(0 => 92, 1 => 2), array(0 => 92, 1 => 2),
- array(0 => 92, 1 => 4), array(0 => 92, 1 => 2), array(0 => 92, 1 => 2),
- array(0 => 92, 1 => 4), array(0 => 92, 1 => 3), array(0 => 92, 1 => 5),
- array(0 => 92, 1 => 3), array(0 => 92, 1 => 3), array(0 => 92, 1 => 3),
- array(0 => 92, 1 => 3), array(0 => 92, 1 => 3), array(0 => 92, 1 => 3),
- array(0 => 92, 1 => 2), array(0 => 79, 1 => 1), array(0 => 79, 1 => 1),
- array(0 => 79, 1 => 2), array(0 => 93, 1 => 1), array(0 => 93, 1 => 1),
- array(0 => 93, 1 => 3), array(0 => 90, 1 => 2), array(0 => 94, 1 => 1),
- array(0 => 94, 1 => 2), array(0 => 95, 1 => 3), array(0 => 95, 1 => 3),
- array(0 => 95, 1 => 5), array(0 => 95, 1 => 6), array(0 => 95, 1 => 2),
- array(0 => 87, 1 => 4), array(0 => 96, 1 => 4), array(0 => 96, 1 => 4),
- array(0 => 97, 1 => 3), array(0 => 97, 1 => 1), array(0 => 97, 1 => 0),
- array(0 => 75, 1 => 3), array(0 => 75, 1 => 2), array(0 => 98, 1 => 3),
- array(0 => 98, 1 => 2), array(0 => 80, 1 => 2), array(0 => 80, 1 => 0),
- array(0 => 99, 1 => 2), array(0 => 99, 1 => 2), array(0 => 89, 1 => 1),
- array(0 => 89, 1 => 2), array(0 => 89, 1 => 1), array(0 => 89, 1 => 2),
- array(0 => 89, 1 => 3), array(0 => 84, 1 => 1), array(0 => 84, 1 => 1),
- array(0 => 85, 1 => 1), array(0 => 83, 1 => 3), array(0 => 100, 1 => 1),
- array(0 => 100, 1 => 3), array(0 => 100, 1 => 0), array(0 => 101, 1 => 3),
- array(0 => 101, 1 => 3), array(0 => 101, 1 => 1), array(0 => 88, 1 => 2),
- array(0 => 88, 1 => 3), array(0 => 102, 1 => 2), array(0 => 102, 1 => 1),
- array(0 => 103, 1 => 3), array(0 => 103, 1 => 3), array(0 => 103, 1 => 1),
- array(0 => 103, 1 => 3), array(0 => 103, 1 => 3), array(0 => 103, 1 => 1),
- array(0 => 103, 1 => 1),);
-
- public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9,
- 17 => 9, 18 => 9, 43 => 9, 66 => 9, 67 => 9, 75 => 9, 76 => 9, 80 => 9, 90 => 9,
- 95 => 9, 96 => 9, 101 => 9, 103 => 9, 104 => 9, 108 => 9, 110 => 9, 115 => 9,
- 176 => 9, 181 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 16 => 13, 14 => 14,
- 74 => 14, 15 => 15, 91 => 15, 93 => 15, 94 => 15, 122 => 15, 19 => 19, 20 => 20,
- 21 => 21, 23 => 21, 25 => 21, 22 => 22, 24 => 22, 26 => 22, 27 => 27, 28 => 27,
- 29 => 29, 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36,
- 37 => 37, 38 => 38, 40 => 38, 39 => 39, 41 => 41, 42 => 42, 44 => 44, 45 => 45,
- 46 => 46, 47 => 47, 49 => 47, 48 => 48, 50 => 48, 51 => 51, 52 => 52, 53 => 53,
- 54 => 54, 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 69 => 60,
- 157 => 60, 161 => 60, 165 => 60, 166 => 60, 61 => 61, 158 => 61, 164 => 61,
- 62 => 62, 63 => 63, 64 => 63, 65 => 65, 142 => 65, 68 => 68, 70 => 70, 71 => 71,
- 72 => 71, 73 => 73, 77 => 77, 78 => 78, 79 => 78, 81 => 81, 107 => 81, 82 => 82,
- 83 => 83, 84 => 84, 85 => 85, 86 => 86, 87 => 86, 88 => 88, 89 => 89, 92 => 92,
- 97 => 97, 98 => 98, 99 => 99, 100 => 100, 102 => 102, 105 => 105, 106 => 106,
- 109 => 109, 111 => 111, 112 => 112, 113 => 113, 114 => 114, 116 => 116,
- 117 => 117, 118 => 118, 119 => 119, 120 => 120, 121 => 121, 123 => 123,
- 178 => 123, 124 => 124, 125 => 125, 126 => 126, 127 => 127, 128 => 128,
- 129 => 129, 137 => 129, 130 => 130, 131 => 131, 132 => 132, 133 => 132,
- 135 => 132, 136 => 132, 134 => 134, 138 => 138, 139 => 139, 140 => 140,
- 182 => 140, 141 => 141, 143 => 143, 144 => 144, 145 => 145, 146 => 146,
- 147 => 147, 148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152,
- 153 => 153, 154 => 154, 155 => 155, 156 => 156, 159 => 159, 160 => 160,
- 162 => 162, 163 => 163, 167 => 167, 168 => 168, 169 => 169, 170 => 170,
- 171 => 171, 172 => 172, 173 => 173, 174 => 174, 175 => 175, 177 => 177,
- 179 => 179, 180 => 180, 183 => 183, 184 => 184, 185 => 185, 186 => 186,
- 187 => 186, 189 => 186, 188 => 188, 190 => 190, 191 => 191, 192 => 192,);
-
- #line 225 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r0()
- {
- $this->root_buffer->prepend_array($this, $this->template_prefix);
- $this->root_buffer->append_array($this, $this->template_postfix);
- $this->_retvalue = $this->root_buffer->to_smarty_php($this);
- }
-
- #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r1()
- {
- if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
- $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
- }
-
- #line 242 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r2()
- {
- if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
- // because of possible code injection
- $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
- }
-
- #line 256 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r4()
- {
- if ($this->compiler->has_code) {
- $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
- } else {
- $this->_retvalue = null;
- }
- $this->compiler->has_variable_string = false;
- $this->block_nesting_level = count($this->compiler->_tag_stack);
- }
-
- #line 267 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r5()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 271 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r6()
- {
- $code = $this->compiler->compileTag('private_php',
- array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
- array('type' => $this->lex->phpType)), array());
- if ($this->compiler->has_code && !empty($code)) {
- $tmp = '';
- foreach ($this->compiler->prefix_code as $code) {
- $tmp .= $code;
- }
- $this->compiler->prefix_code = array();
- $this->_retvalue =
- new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
- } else {
- $this->_retvalue = null;
- }
- }
-
- #line 282 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r7()
- {
- $this->compiler->tag_nocache = true;
- $save = $this->template->compiled->has_nocache_code;
- $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this,
- $this->compiler->processNocacheCode("<?php echo '{$this->yystack[$this->yyidx + 0]->minor}';?>\n",
- $this->compiler,
- true));
- $this->template->compiled->has_nocache_code = $save;
- }
-
- #line 289 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r8()
- {
- $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 293 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r9()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r10()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 302 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r11()
- {
- $this->strip = true;
- }
-
- #line 306 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r12()
- {
- $this->strip = false;
- }
-
- #line 311 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r13()
- {
- $this->_retvalue = '';
- }
-
- #line 315 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r14()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- }
-
- #line 319 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r15()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 335 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r19()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- }
-
- #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r20()
- {
- $var =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
- ' $');
- if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
- array('value' => $this->compiler->compileVariable('\'' .
- $match[ 1 ] .
- '\'')));
- } else {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
- array('value' => $this->compiler->compileVariable('\'' .
- $var .
- '\'')));
- }
- }
-
- #line 351 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r21()
- {
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
- array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 355 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r22()
- {
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
- array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
- }
-
- #line 378 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r27()
- {
- $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
- 0 ]->minor), array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'')));
- }
-
- #line 386 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r29()
- {
- $this->_retvalue = $this->compiler->compileTag('assign',
- array_merge(array(array('value' => $this->yystack[ $this->yyidx +
- - 1 ]->minor), array('var' => '\'' .
- substr($this->yystack[ $this->yyidx + - 3 ]->minor, 1) .
- '\'')), $this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 390 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r30()
- {
- $this->_retvalue = $this->compiler->compileTag('assign',
- array_merge(array(array('value' => $this->yystack[ $this->yyidx +
- - 1 ]->minor), array('var' => $this->yystack[ $this->yyidx +
- - 3 ]->minor[ 'var' ])),
- $this->yystack[ $this->yyidx + 0 ]->minor),
- array('smarty_internal_index' => $this->yystack[ $this->yyidx +
- - 3 ]->minor[ 'smarty_internal_index' ]));
- }
-
- #line 395 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r31()
- {
- $tag =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
- if ($tag == 'strip') {
- $this->strip = true;
- $this->_retvalue = null;;
- } else {
- if (defined($tag)) {
- if ($this->security) {
- $this->security->isTrustedConstant($tag, $this->compiler);
- }
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
- } else {
- if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
- $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
- } else {
- $this->_retvalue = $this->compiler->compileTag($tag, array());
- }
- }
- }
- }
-
- #line 417 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r32()
- {
- if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
- }
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
- array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor);
- }
- }
-
- #line 427 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r33()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
- array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
- } else {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
- }
- }
-
- #line 440 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r34()
- {
- if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
- }
- $this->_retvalue =
- $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
- array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
- 'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
- } else {
- $this->_retvalue = '<?php ob_start();?>' .
- $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor) . '<?php echo ';
- $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(),
- array('modifierlist' => $this->yystack[ $this->yyidx +
- - 1 ]->minor, 'value' => 'ob_get_clean()')) . ';?>';
- }
- }
-
- #line 453 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r35()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor,
- array('object_method' => $this->yystack[ $this->yyidx +
- - 1 ]->minor));
- }
-
- #line 458 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r36()
- {
- $this->_retvalue = '<?php ob_start();?>' .
- $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor,
- array('object_method' => $this->yystack[ $this->yyidx + - 2 ]->minor)) .
- '<?php echo ';
- $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(),
- array('modifierlist' => $this->yystack[ $this->yyidx +
- - 1 ]->minor, 'value' => 'ob_get_clean()')) . ';?>';
- }
-
- #line 464 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r37()
- {
- $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
- array('if condition' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 469 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r38()
- {
- $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
- $this->yystack[ $this->yyidx + 0 ]->minor,
- array('if condition' => $this->yystack[ $this->yyidx +
- - 1 ]->minor));
- }
-
- #line 474 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r39()
- {
- $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
- array('if condition' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 485 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r41()
- {
- $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('start' => $this->yystack[ $this->yyidx +
- - 6 ]->minor),
- array('ifexp' => $this->yystack[ $this->yyidx +
- - 4 ]->minor),
- array('var' => $this->yystack[ $this->yyidx +
- - 2 ]->minor),
- array('step' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))), 1);
- }
-
- #line 489 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r42()
- {
- $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 497 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r44()
- {
- $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('start' => $this->yystack[ $this->yyidx +
- - 3 ]->minor),
- array('to' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))), 0);
- }
-
- #line 501 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r45()
- {
- $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('start' => $this->yystack[ $this->yyidx +
- - 5 ]->minor),
- array('to' => $this->yystack[ $this->yyidx +
- - 3 ]->minor),
- array('step' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))), 0);
- }
-
- #line 506 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r46()
- {
- $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 511 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r47()
- {
- $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('from' => $this->yystack[ $this->yyidx +
- - 3 ]->minor),
- array('item' => $this->yystack[ $this->yyidx +
- - 1 ]->minor))));
- }
-
- #line 515 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r48()
- {
- $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
- array(array('from' => $this->yystack[ $this->yyidx +
- - 5 ]->minor),
- array('item' => $this->yystack[ $this->yyidx +
- - 1 ]->minor),
- array('key' => $this->yystack[ $this->yyidx +
- - 3 ]->minor))));
- }
-
- #line 528 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r51()
- {
- $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
- array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
- - 1 ]->minor), $this->yystack[ $this->yyidx + 0 ]->minor))));
- }
-
- #line 532 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r52()
- {
- $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
- array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
- - 2 ]->minor), $this->yystack[ $this->yyidx + - 1 ]->minor)),
- $this->yystack[ $this->yyidx +
- 0 ]->minor)));
- }
-
- #line 537 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r53()
- {
- $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
- if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
- // {$smarty.block.child}
- $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
- } else {
- // {$smarty.block.parent}
- $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
- }
- }
-
- #line 550 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r54()
- {
- $tag =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
- ' /');
- if ($tag == 'strip') {
- $this->strip = false;
- $this->_retvalue = null;
- } else {
- $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
- }
- }
-
- #line 559 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r55()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
- }
-
- #line 563 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r56()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
- array('modifier_list' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 568 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r57()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
- array('object_method' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 572 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r58()
- {
- $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
- array('object_method' => $this->yystack[ $this->yyidx +
- - 1 ]->minor, 'modifier_list' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r59()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 586 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r60()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 591 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r61()
- {
- $this->_retvalue = array();
- }
-
- #line 596 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r62()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
- } else {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
- '\'');
- }
- }
-
- #line 607 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r63()
- {
- $this->_retvalue =
- array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
- 0 ]->minor);
- }
-
- #line 615 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r65()
- {
- $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
- }
-
- #line 627 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r68()
- {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 640 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r70()
- {
- $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
- $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
- }
-
- #line 645 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r71()
- {
- $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
- 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 652 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r73()
- {
- $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
- 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 676 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r77()
- {
- $this->_retvalue =
- '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
- $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
- }
-
- #line 681 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r78()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 695 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r81()
- {
- $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
- array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
- 'modifierlist' => $this->yystack[ $this->yyidx +
- 0 ]->minor));
- }
-
- #line 701 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r82()
- {
- $this->_retvalue = (isset($this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ]) ?
- $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] : '') .
- $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] .
- $this->yystack[ $this->yyidx + 0 ]->minor .
- (isset($this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ]) ? ')' : '');
- }
-
- #line 704 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r83()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
- }
-
- #line 708 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r84()
- {
- $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
- $this->yystack[ $this->yyidx + 0 ]->minor . ')';
- }
-
- #line 712 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r85()
- {
- $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
- $this->yystack[ $this->yyidx + 0 ]->minor . ')';
- }
-
- #line 716 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r86()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 728 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r88()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' .
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'') .
- ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 732 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r89()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 747 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r92()
- {
- $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 768 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r97()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 772 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r98()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
- }
-
- #line 776 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r99()
- {
- $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 781 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r100()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- } else {
- $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
- }
- }
-
- #line 798 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r102()
- {
- $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
- }
-
- #line 813 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r105()
- {
- self::$prefix_number ++;
- if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
- $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' .
- $this->compiler->compileTag('private_special_variable', array(),
- $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ]) .
- ';?>';
- } else {
- $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' .
- $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ]) .
- $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] . ';?>';
- }
- $this->_retvalue = '$_tmp' . self::$prefix_number . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
- }
-
- #line 824 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r106()
- {
- self::$prefix_number ++;
- $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
- $this->compiler->prefix_code[] =
- $this->compiler->appendCode($tmp, '<?php $_tmp' . self::$prefix_number . '=ob_get_clean();?>');
- $this->_retvalue = '$_tmp' . self::$prefix_number;
- }
-
- #line 841 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r109()
- {
- if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
- (!$this->security ||
- $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
- ) {
- if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
- $this->_retvalue =
- $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
- } else {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
- }
- } else {
- $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
- "' is undefined or not allowed by security setting");
- }
- }
-
- #line 860 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r111()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 871 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r112()
- {
- $this->_retvalue =
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
- }
-
- #line 874 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r113()
- {
- if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
- $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
- $this->yystack[ $this->yyidx +
- 0 ]->minor[ 'smarty_internal_index' ]);
- $this->_retvalue = $smarty_var;
- } else {
- // used for array reset,next,prev,end,current
- $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
- $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
- $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
- }
- }
-
- #line 887 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r114()
- {
- $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 897 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r116()
- {
- $this->_retvalue =
- $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
- }
-
- #line 901 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r117()
- {
- $this->_retvalue = '(is_array($tmp = ' .
- $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor . "'") .
- ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
- }
-
- #line 905 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r118()
- {
- $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
- }
-
- #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r119()
- {
- $this->_retvalue =
- '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
- ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
- }
-
- #line 913 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r120()
- {
- $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
- 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 916 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r121()
- {
- $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
- 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 929 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r123()
- {
- return;
- }
-
- #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r124()
- {
- $this->_retvalue =
- '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
- ']';
- }
-
- #line 938 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r125()
- {
- $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
- }
-
- #line 942 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r126()
- {
- $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
- $this->yystack[ $this->yyidx + 0 ]->minor . ']';
- }
-
- #line 946 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r127()
- {
- if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
- if ($this->security) {
- $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
- }
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
- } else {
- $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
- }
- }
-
- #line 957 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r128()
- {
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
- }
-
- #line 962 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r129()
- {
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
- }
-
- #line 967 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r130()
- {
- $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
- $this->yystack[ $this->yyidx +
- - 1 ]->minor .
- '\'][\'index\']') . ']';
- }
-
- #line 971 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r131()
- {
- $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
- $this->yystack[ $this->yyidx +
- - 3 ]->minor . '\'][\'' .
- $this->yystack[ $this->yyidx +
- - 1 ]->minor . '\']') . ']';
- }
-
- #line 974 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r132()
- {
- $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
- }
-
- #line 980 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r134()
- {
- $this->_retvalue = '[' .
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'') .
- ']';;
- }
-
- #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r138()
- {
- $this->_retvalue = '[]';
- }
-
- #line 1006 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r139()
- {
- $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
- }
-
- #line 1010 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r140()
- {
- $this->_retvalue = "''";
- }
-
- #line 1015 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r141()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1023 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r143()
- {
- $var =
- trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
- ' $');
- $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
- }
-
- #line 1029 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r144()
- {
- $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
- }
-
- #line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r145()
- {
- if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
- $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
- $this->yystack[ $this->yyidx +
- - 1 ]->minor[ 'smarty_internal_index' ]) .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- } else {
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
- $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
- $this->yystack[ $this->yyidx + 0 ]->minor;
- }
- }
-
- #line 1045 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r146()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1050 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r147()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r148()
- {
- if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
- $this->compiler->trigger_template_error(self::Err1);
- }
- $this->_retvalue =
- '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r149()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
- $this->yystack[ $this->yyidx + 0 ]->minor . '}';
- }
-
- #line 1069 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r150()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- $this->_retvalue =
- '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
- }
-
- #line 1076 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r151()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
- $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
- }
-
- #line 1084 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r152()
- {
- $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1092 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r153()
- {
- if (!$this->security ||
- $this->security->isTrustedPhpFunction($this->yystack[ $this->yyidx + - 3 ]->minor, $this->compiler)
- ) {
- if (strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'isset') === 0 ||
- strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'empty') === 0 ||
- strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'array') === 0 ||
- is_callable($this->yystack[ $this->yyidx + - 3 ]->minor)
- ) {
- $func_name = strtolower($this->yystack[ $this->yyidx + - 3 ]->minor);
- if ($func_name == 'isset') {
- if (count($this->yystack[ $this->yyidx + - 1 ]->minor) == 0) {
- $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
- }
- $par = implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor);
- if (strncasecmp($par, '$_smarty_tpl->smarty->ext->_config->_getConfigVariable',
- strlen('$_smarty_tpl->smarty->ext->_config->_getConfigVariable')) === 0
- ) {
- self::$prefix_number ++;
- $this->compiler->prefix_code[] =
- '<?php $_tmp' . self::$prefix_number . '=' . str_replace(')', ', false)', $par) . ';?>';
- $isset_par = '$_tmp' . self::$prefix_number;
- } else {
- $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
- }
- $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" . $isset_par . ")";
- } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
- if (count($this->yystack[ $this->yyidx + - 1 ]->minor) != 1) {
- $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
- }
- if ($func_name == 'empty') {
- $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value",
- $this->yystack[ $this->yyidx +
- - 1 ]->minor[ 0 ]) . ')';
- } else {
- $this->_retvalue = $func_name . '(' . $this->yystack[ $this->yyidx + - 1 ]->minor[ 0 ] . ')';
- }
- } else {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
- implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
- }
- } else {
- $this->compiler->trigger_template_error("unknown function \"" .
- $this->yystack[ $this->yyidx + - 3 ]->minor . "\"");
- }
- }
- }
-
- #line 1131 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r154()
- {
- if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
- $this->compiler->trigger_template_error(self::Err1);
- }
- $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
- implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
- }
-
- #line 1138 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r155()
- {
- if ($this->security) {
- $this->compiler->trigger_template_error(self::Err2);
- }
- self::$prefix_number ++;
- $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' .
- $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + - 3 ]->minor, 1) . '\'') .
- ';?>';
- $this->_retvalue =
- '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
- }
-
- #line 1149 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r156()
- {
- $this->_retvalue =
- array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 1166 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r159()
- {
- $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
- array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
- $this->yystack[ $this->yyidx + 0 ]->minor)));
- }
-
- #line 1170 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r160()
- {
- $this->_retvalue =
- array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
- }
-
- #line 1178 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r162()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r163()
- {
- $this->_retvalue =
- array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1205 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r167()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
- }
-
- #line 1210 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r168()
- {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
- }
-
- #line 1215 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r169()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
- }
-
- #line 1220 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r170()
- {
- $this->_retvalue =
- array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
- }
-
- #line 1225 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r171()
- {
- $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
- $this->yystack[ $this->yyidx + - 1 ]->minor .
- $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
- }
-
- #line 1231 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r172()
- {
- $this->_retvalue[ 'op' ] = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
- }
-
- #line 1235 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r173()
- {
- static $lops = array('eq' => array('op' => ' == ', 'pre' => null),
- 'ne' => array('op' => ' != ', 'pre' => null),
- 'neq' => array('op' => ' != ', 'pre' => null),
- 'gt' => array('op' => ' > ', 'pre' => null),
- 'ge' => array('op' => ' >= ', 'pre' => null),
- 'gte' => array('op' => ' >= ', 'pre' => null),
- 'lt' => array('op' => ' < ', 'pre' => null),
- 'le' => array('op' => ' <= ', 'pre' => null),
- 'lte' => array('op' => ' <= ', 'pre' => null),
- 'mod' => array('op' => ' % ', 'pre' => null),
- 'and' => array('op' => ' && ', 'pre' => null),
- 'or' => array('op' => ' || ', 'pre' => null),
- 'xor' => array('op' => ' xor ', 'pre' => null),
- 'isdivby' => array('op' => ' % ', 'pre' => '!('),
- 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
- 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
- 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
- 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
- $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
- $this->_retvalue = $lops[ $op ];
- }
-
- #line 1261 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r174()
- {
- static $scond =
- array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
- $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
- $this->_retvalue = $scond[ $op ];
- }
-
- #line 1275 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r175()
- {
- $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
- }
-
- #line 1283 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r177()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1291 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r179()
- {
- $this->_retvalue =
- $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1295 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r180()
- {
- $this->_retvalue =
- '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
- }
-
- #line 1311 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r183()
- {
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
- }
-
- #line 1316 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r184()
- {
- $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
- }
-
- #line 1321 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r185()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1325 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r186()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
- }
-
- #line 1333 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r188()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
- substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
- '\']->value');
- }
-
- #line 1341 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r190()
- {
- $this->_retvalue =
- new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
- }
-
- #line 1345 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r191()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- #line 1349 "../smarty/lexer/smarty_internal_templateparser.y"
- function yy_r192()
- {
- $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
- }
-
- private $_retvalue;
-
- public function yy_reduce($yyruleno)
- {
- if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
- fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
- self::$yyRuleName[ $yyruleno ]);
- }
-
- $this->_retvalue = $yy_lefthand_side = null;
- if (isset(self::$yyReduceMap[ $yyruleno ])) {
- // call the action
- $this->_retvalue = null;
- $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
- $yy_lefthand_side = $this->_retvalue;
- }
- $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
- $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
- $this->yyidx -= $yysize;
- for ($i = $yysize; $i; $i --) {
- // pop all of the right-hand side parameters
- array_pop($this->yystack);
- }
- $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
- if ($yyact < self::YYNSTATE) {
- if (!$this->yyTraceFILE && $yysize) {
- $this->yyidx ++;
- $x = new TP_yyStackEntry;
- $x->stateno = $yyact;
- $x->major = $yygoto;
- $x->minor = $yy_lefthand_side;
- $this->yystack[ $this->yyidx ] = $x;
- } else {
- $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
- }
- } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
- $this->yy_accept();
- }
- }
-
- public function yy_parse_failed()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- }
-
- public function yy_syntax_error($yymajor, $TOKEN)
- {
- #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_template_error();
- }
-
- public function yy_accept()
- {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
- }
- while ($this->yyidx >= 0) {
- $this->yy_pop_parser_stack();
- }
- #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
-
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- }
-
- public function doParse($yymajor, $yytokenvalue)
- {
- $yyerrorhit = 0; /* True if yymajor has invoked an error */
-
- if ($this->yyidx === null || $this->yyidx < 0) {
- $this->yyidx = 0;
- $this->yyerrcnt = - 1;
- $x = new TP_yyStackEntry;
- $x->stateno = 0;
- $x->major = 0;
- $this->yystack = array();
- $this->yystack[] = $x;
- }
- $yyendofinput = ($yymajor == 0);
-
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
- }
-
- do {
- $yyact = $this->yy_find_shift_action($yymajor);
- if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
- // force a syntax error
- $yyact = self::YY_ERROR_ACTION;
- }
- if ($yyact < self::YYNSTATE) {
- $this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt --;
- if ($yyendofinput && $this->yyidx >= 0) {
- $yymajor = 0;
- } else {
- $yymajor = self::YYNOCODE;
- }
- } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
- $this->yy_reduce($yyact - self::YYNSTATE);
- } elseif ($yyact == self::YY_ERROR_ACTION) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
- }
- if (self::YYERRORSYMBOL) {
- if ($this->yyerrcnt < 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $yymx = $this->yystack[ $this->yyidx ]->major;
- if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
- if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
- $this->yyTokenName[ $yymajor ]);
- }
- $this->yy_destructor($yymajor, $yytokenvalue);
- $yymajor = self::YYNOCODE;
- } else {
- while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
- ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
- $this->yy_pop_parser_stack();
- }
- if ($this->yyidx < 0 || $yymajor == 0) {
- $this->yy_destructor($yymajor, $yytokenvalue);
- $this->yy_parse_failed();
- $yymajor = self::YYNOCODE;
- } elseif ($yymx != self::YYERRORSYMBOL) {
- $u2 = 0;
- $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
- }
- }
- $this->yyerrcnt = 3;
- $yyerrorhit = 1;
- } else {
- if ($this->yyerrcnt <= 0) {
- $this->yy_syntax_error($yymajor, $yytokenvalue);
- }
- $this->yyerrcnt = 3;
- $this->yy_destructor($yymajor, $yytokenvalue);
- if ($yyendofinput) {
- $this->yy_parse_failed();
- }
- $yymajor = self::YYNOCODE;
- }
- } else {
- $this->yy_accept();
- $yymajor = self::YYNOCODE;
- }
- } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
- }
-}
-
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_testinstall.php b/library/Smarty/libs/sysplugins/smarty_internal_testinstall.php
deleted file mode 100644
index 72d9a5211..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_testinstall.php
+++ /dev/null
@@ -1,604 +0,0 @@
-<?php
-/**
- * Smarty Internal TestInstall
- * Test Smarty installation
- *
- * @package Smarty
- * @subpackage Utilities
- * @author Uwe Tews
- */
-
-/**
- * TestInstall class
- *
- * @package Smarty
- * @subpackage Utilities
- */
-class Smarty_Internal_TestInstall
-{
- /**
- * diagnose Smarty setup
- * If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
- *
- * @param array $errors array to push results into rather than outputting them
- *
- * @return bool status, true if everything is fine, false else
- */
- public static function testInstall(Smarty $smarty, &$errors = null)
- {
- $status = true;
-
- if ($errors === null) {
- echo "<PRE>\n";
- echo "Smarty Installation test...\n";
- echo "Testing template directory...\n";
- }
-
- $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
-
- // test if all registered template_dir are accessible
- foreach ($smarty->getTemplateDir() as $template_dir) {
- $_template_dir = $template_dir;
- $template_dir = realpath($template_dir);
- // resolve include_path or fail existence
- if (!$template_dir) {
- if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
- // try PHP include_path
- if ($_stream_resolve_include_path) {
- $template_dir = stream_resolve_include_path($_template_dir);
- } else {
- $template_dir = $smarty->ext->_getIncludePath->getIncludePath($_template_dir, null, $smarty);
- }
-
- if ($template_dir !== false) {
- if ($errors === null) {
- echo "$template_dir is OK.\n";
- }
-
- continue;
- } else {
- $status = false;
- $message =
- "FAILED: $_template_dir does not exist (and couldn't be found in include_path either)";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
-
- continue;
- }
- } else {
- $status = false;
- $message = "FAILED: $_template_dir does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
-
- continue;
- }
- }
-
- if (!is_dir($template_dir)) {
- $status = false;
- $message = "FAILED: $template_dir is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
- } elseif (!is_readable($template_dir)) {
- $status = false;
- $message = "FAILED: $template_dir is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'template_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "$template_dir is OK.\n";
- }
- }
- }
-
- if ($errors === null) {
- echo "Testing compile directory...\n";
- }
-
- // test if registered compile_dir is accessible
- $__compile_dir = $smarty->getCompileDir();
- $_compile_dir = realpath($__compile_dir);
- if (!$_compile_dir) {
- $status = false;
- $message = "FAILED: {$__compile_dir} does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } elseif (!is_dir($_compile_dir)) {
- $status = false;
- $message = "FAILED: {$_compile_dir} is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } elseif (!is_readable($_compile_dir)) {
- $status = false;
- $message = "FAILED: {$_compile_dir} is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } elseif (!is_writable($_compile_dir)) {
- $status = false;
- $message = "FAILED: {$_compile_dir} is not writable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'compile_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "{$_compile_dir} is OK.\n";
- }
- }
-
- if ($errors === null) {
- echo "Testing plugins directory...\n";
- }
-
- // test if all registered plugins_dir are accessible
- // and if core plugins directory is still registered
- $_core_plugins_dir = realpath(dirname(__FILE__) . '/../plugins');
- $_core_plugins_available = false;
- foreach ($smarty->getPluginsDir() as $plugin_dir) {
- $_plugin_dir = $plugin_dir;
- $plugin_dir = realpath($plugin_dir);
- // resolve include_path or fail existence
- if (!$plugin_dir) {
- if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
- // try PHP include_path
- if ($_stream_resolve_include_path) {
- $plugin_dir = stream_resolve_include_path($_plugin_dir);
- } else {
- $plugin_dir = $smarty->ext->_getIncludePath->getIncludePath($_plugin_dir, null, $smarty);
- }
-
- if ($plugin_dir !== false) {
- if ($errors === null) {
- echo "$plugin_dir is OK.\n";
- }
-
- continue;
- } else {
- $status = false;
- $message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
-
- continue;
- }
- } else {
- $status = false;
- $message = "FAILED: $_plugin_dir does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
-
- continue;
- }
- }
-
- if (!is_dir($plugin_dir)) {
- $status = false;
- $message = "FAILED: $plugin_dir is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
- } elseif (!is_readable($plugin_dir)) {
- $status = false;
- $message = "FAILED: $plugin_dir is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir' ] = $message;
- }
- } elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) {
- $_core_plugins_available = true;
- if ($errors === null) {
- echo "$plugin_dir is OK.\n";
- }
- } else {
- if ($errors === null) {
- echo "$plugin_dir is OK.\n";
- }
- }
- }
- if (!$_core_plugins_available) {
- $status = false;
- $message = "WARNING: Smarty's own libs/plugins is not available";
- if ($errors === null) {
- echo $message . ".\n";
- } elseif (!isset($errors[ 'plugins_dir' ])) {
- $errors[ 'plugins_dir' ] = $message;
- }
- }
-
- if ($errors === null) {
- echo "Testing cache directory...\n";
- }
-
- // test if all registered cache_dir is accessible
- $__cache_dir = $smarty->getCacheDir();
- $_cache_dir = realpath($__cache_dir);
- if (!$_cache_dir) {
- $status = false;
- $message = "FAILED: {$__cache_dir} does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } elseif (!is_dir($_cache_dir)) {
- $status = false;
- $message = "FAILED: {$_cache_dir} is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } elseif (!is_readable($_cache_dir)) {
- $status = false;
- $message = "FAILED: {$_cache_dir} is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } elseif (!is_writable($_cache_dir)) {
- $status = false;
- $message = "FAILED: {$_cache_dir} is not writable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'cache_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "{$_cache_dir} is OK.\n";
- }
- }
-
- if ($errors === null) {
- echo "Testing configs directory...\n";
- }
-
- // test if all registered config_dir are accessible
- foreach ($smarty->getConfigDir() as $config_dir) {
- $_config_dir = $config_dir;
- // resolve include_path or fail existence
- if (!$config_dir) {
- if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
- // try PHP include_path
- if ($_stream_resolve_include_path) {
- $config_dir = stream_resolve_include_path($_config_dir);
- } else {
- $config_dir = $smarty->ext->_getIncludePath->getIncludePath($_config_dir, null, $smarty);
- }
-
- if ($config_dir !== false) {
- if ($errors === null) {
- echo "$config_dir is OK.\n";
- }
-
- continue;
- } else {
- $status = false;
- $message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
-
- continue;
- }
- } else {
- $status = false;
- $message = "FAILED: $_config_dir does not exist";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
-
- continue;
- }
- }
-
- if (!is_dir($config_dir)) {
- $status = false;
- $message = "FAILED: $config_dir is not a directory";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
- } elseif (!is_readable($config_dir)) {
- $status = false;
- $message = "FAILED: $config_dir is not readable";
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'config_dir' ] = $message;
- }
- } else {
- if ($errors === null) {
- echo "$config_dir is OK.\n";
- }
- }
- }
-
- if ($errors === null) {
- echo "Testing sysplugin files...\n";
- }
- // test if sysplugins are available
- $source = SMARTY_SYSPLUGINS_DIR;
- if (is_dir($source)) {
- $expectedSysplugins = array('smartycompilerexception.php' => true,
- 'smartyexception.php' => true,
- 'smarty_cacheresource.php' => true,
- 'smarty_cacheresource_custom.php' => true,
- 'smarty_cacheresource_keyvaluestore.php' => true,
- 'smarty_data.php' => true,
- 'smarty_internal_cacheresource_file.php' => true,
- 'smarty_internal_compilebase.php' => true,
- 'smarty_internal_compile_append.php' => true,
- 'smarty_internal_compile_assign.php' => true,
- 'smarty_internal_compile_block.php' => true,
- 'smarty_internal_compile_break.php' => true,
- 'smarty_internal_compile_call.php' => true,
- 'smarty_internal_compile_capture.php' => true,
- 'smarty_internal_compile_config_load.php' => true,
- 'smarty_internal_compile_continue.php' => true,
- 'smarty_internal_compile_debug.php' => true,
- 'smarty_internal_compile_eval.php' => true,
- 'smarty_internal_compile_extends.php' => true,
- 'smarty_internal_compile_for.php' => true,
- 'smarty_internal_compile_foreach.php' => true,
- 'smarty_internal_compile_function.php' => true,
- 'smarty_internal_compile_if.php' => true,
- 'smarty_internal_compile_include.php' => true,
- 'smarty_internal_compile_include_php.php' => true,
- 'smarty_internal_compile_insert.php' => true,
- 'smarty_internal_compile_ldelim.php' => true,
- 'smarty_internal_compile_nocache.php' => true,
- 'smarty_internal_compile_private_block_plugin.php' => true,
- 'smarty_internal_compile_private_foreachsection.php' => true,
- 'smarty_internal_compile_private_function_plugin.php' => true,
- 'smarty_internal_compile_private_modifier.php' => true,
- 'smarty_internal_compile_private_object_block_function.php' => true,
- 'smarty_internal_compile_private_object_function.php' => true,
- 'smarty_internal_compile_private_php.php' => true,
- 'smarty_internal_compile_private_print_expression.php' => true,
- 'smarty_internal_compile_private_registered_block.php' => true,
- 'smarty_internal_compile_private_registered_function.php' => true,
- 'smarty_internal_compile_private_special_variable.php' => true,
- 'smarty_internal_compile_rdelim.php' => true,
- 'smarty_internal_compile_section.php' => true,
- 'smarty_internal_compile_setfilter.php' => true,
- 'smarty_internal_compile_shared_inheritance.php' => true,
- 'smarty_internal_compile_while.php' => true,
- 'smarty_internal_configfilelexer.php' => true,
- 'smarty_internal_configfileparser.php' => true,
- 'smarty_internal_config_file_compiler.php' => true,
- 'smarty_internal_data.php' => true,
- 'smarty_internal_debug.php' => true,
- 'smarty_internal_extension_clear.php' => true,
- 'smarty_internal_extension_handler.php' => true,
- 'smarty_internal_method_addautoloadfilters.php' => true,
- 'smarty_internal_method_adddefaultmodifiers.php' => true,
- 'smarty_internal_method_append.php' => true,
- 'smarty_internal_method_appendbyref.php' => true,
- 'smarty_internal_method_assignbyref.php' => true,
- 'smarty_internal_method_assignglobal.php' => true,
- 'smarty_internal_method_clearallassign.php' => true,
- 'smarty_internal_method_clearallcache.php' => true,
- 'smarty_internal_method_clearassign.php' => true,
- 'smarty_internal_method_clearcache.php' => true,
- 'smarty_internal_method_clearcompiledtemplate.php' => true,
- 'smarty_internal_method_clearconfig.php' => true,
- 'smarty_internal_method_compileallconfig.php' => true,
- 'smarty_internal_method_compilealltemplates.php' => true,
- 'smarty_internal_method_configload.php' => true,
- 'smarty_internal_method_createdata.php' => true,
- 'smarty_internal_method_getautoloadfilters.php' => true,
- 'smarty_internal_method_getconfigvars.php' => true,
- 'smarty_internal_method_getdebugtemplate.php' => true,
- 'smarty_internal_method_getdefaultmodifiers.php' => true,
- 'smarty_internal_method_getregisteredobject.php' => true,
- 'smarty_internal_method_getstreamvariable.php' => true,
- 'smarty_internal_method_gettags.php' => true,
- 'smarty_internal_method_gettemplatevars.php' => true,
- 'smarty_internal_method_loadfilter.php' => true,
- 'smarty_internal_method_loadplugin.php' => true,
- 'smarty_internal_method_mustcompile.php' => true,
- 'smarty_internal_method_registercacheresource.php' => true,
- 'smarty_internal_method_registerclass.php' => true,
- 'smarty_internal_method_registerdefaultconfighandler.php' => true,
- 'smarty_internal_method_registerdefaultpluginhandler.php' => true,
- 'smarty_internal_method_registerdefaulttemplatehandler.php' => true,
- 'smarty_internal_method_registerfilter.php' => true,
- 'smarty_internal_method_registerobject.php' => true,
- 'smarty_internal_method_registerplugin.php' => true,
- 'smarty_internal_method_registerresource.php' => true,
- 'smarty_internal_method_setautoloadfilters.php' => true,
- 'smarty_internal_method_setdebugtemplate.php' => true,
- 'smarty_internal_method_setdefaultmodifiers.php' => true,
- 'smarty_internal_method_unloadfilter.php' => true,
- 'smarty_internal_method_unregistercacheresource.php' => true,
- 'smarty_internal_method_unregisterfilter.php' => true,
- 'smarty_internal_method_unregisterobject.php' => true,
- 'smarty_internal_method_unregisterplugin.php' => true,
- 'smarty_internal_method_unregisterresource.php' => true,
- 'smarty_internal_nocache_insert.php' => true,
- 'smarty_internal_parsetree.php' => true,
- 'smarty_internal_parsetree_code.php' => true,
- 'smarty_internal_parsetree_dq.php' => true,
- 'smarty_internal_parsetree_dqcontent.php' => true,
- 'smarty_internal_parsetree_tag.php' => true,
- 'smarty_internal_parsetree_template.php' => true,
- 'smarty_internal_parsetree_text.php' => true,
- 'smarty_internal_resource_eval.php' => true,
- 'smarty_internal_resource_extends.php' => true,
- 'smarty_internal_resource_file.php' => true,
- 'smarty_internal_resource_php.php' => true,
- 'smarty_internal_resource_registered.php' => true,
- 'smarty_internal_resource_stream.php' => true,
- 'smarty_internal_resource_string.php' => true,
- 'smarty_internal_runtime_cachemodify.php' => true,
- 'smarty_internal_runtime_codeframe.php' => true,
- 'smarty_internal_runtime_filterhandler.php' => true,
- 'smarty_internal_runtime_foreach.php' => true,
- 'smarty_internal_runtime_getincludepath.php' => true,
- 'smarty_internal_runtime_hhvm.php' => true,
- 'smarty_internal_runtime_inheritance.php' => true,
- 'smarty_internal_runtime_subtemplate.php' => true,
- 'smarty_internal_runtime_tplfunction.php' => true,
- 'smarty_internal_runtime_updatecache.php' => true,
- 'smarty_internal_runtime_updatescope.php' => true,
- 'smarty_internal_runtime_validatecompiled.php' => true,
- 'smarty_internal_runtime_var.php' => true,
- 'smarty_internal_runtime_writefile.php' => true,
- 'smarty_internal_smartytemplatecompiler.php' => true,
- 'smarty_internal_template.php' => true,
- 'smarty_internal_templatebase.php' => true,
- 'smarty_internal_templatecompilerbase.php' => true,
- 'smarty_internal_templatelexer.php' => true,
- 'smarty_internal_templateparser.php' => true,
- 'smarty_internal_testinstall.php' => true,
- 'smarty_internal_undefined.php' => true,
- 'smarty_resource.php' => true,
- 'smarty_resource_custom.php' => true,
- 'smarty_resource_recompiled.php' => true,
- 'smarty_resource_uncompiled.php' => true,
- 'smarty_security.php' => true,
- 'smarty_template_cached.php' => true,
- 'smarty_template_compiled.php' => true,
- 'smarty_template_config.php' => true,
- 'smarty_template_resource_base.php' => true,
- 'smarty_template_source.php' => true,
- 'smarty_undefined_variable.php' => true,
- 'smarty_variable.php' => true,);
- $iterator = new DirectoryIterator($source);
- foreach ($iterator as $file) {
- if (!$file->isDot()) {
- $filename = $file->getFilename();
- if (isset($expectedSysplugins[ $filename ])) {
- unset($expectedSysplugins[ $filename ]);
- }
- }
- }
- if ($expectedSysplugins) {
- $status = false;
- $message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expectedSysplugins));
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'sysplugins' ] = $message;
- }
- } elseif ($errors === null) {
- echo "... OK\n";
- }
- } else {
- $status = false;
- $message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory';
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'sysplugins_dir_constant' ] = $message;
- }
- }
-
- if ($errors === null) {
- echo "Testing plugin files...\n";
- }
- // test if core plugins are available
- $source = SMARTY_PLUGINS_DIR;
- if (is_dir($source)) {
- $expectedPlugins =
- array('block.textformat.php' => true, 'function.counter.php' => true,
- 'function.cycle.php' => true, 'function.fetch.php' => true,
- 'function.html_checkboxes.php' => true, 'function.html_image.php' => true,
- 'function.html_options.php' => true, 'function.html_radios.php' => true,
- 'function.html_select_date.php' => true, 'function.html_select_time.php' => true,
- 'function.html_table.php' => true, 'function.mailto.php' => true,
- 'function.math.php' => true, 'modifier.capitalize.php' => true,
- 'modifier.date_format.php' => true, 'modifier.debug_print_var.php' => true,
- 'modifier.escape.php' => true, 'modifier.regex_replace.php' => true,
- 'modifier.replace.php' => true, 'modifier.spacify.php' => true,
- 'modifier.truncate.php' => true, 'modifiercompiler.cat.php' => true,
- 'modifiercompiler.count_characters.php' => true, 'modifiercompiler.count_paragraphs.php' => true,
- 'modifiercompiler.count_sentences.php' => true, 'modifiercompiler.count_words.php' => true,
- 'modifiercompiler.default.php' => true, 'modifiercompiler.escape.php' => true,
- 'modifiercompiler.from_charset.php' => true, 'modifiercompiler.indent.php' => true,
- 'modifiercompiler.lower.php' => true, 'modifiercompiler.noprint.php' => true,
- 'modifiercompiler.string_format.php' => true, 'modifiercompiler.strip.php' => true,
- 'modifiercompiler.strip_tags.php' => true, 'modifiercompiler.to_charset.php' => true,
- 'modifiercompiler.unescape.php' => true, 'modifiercompiler.upper.php' => true,
- 'modifiercompiler.wordwrap.php' => true, 'outputfilter.trimwhitespace.php' => true,
- 'shared.escape_special_chars.php' => true, 'shared.literal_compiler_param.php' => true,
- 'shared.make_timestamp.php' => true, 'shared.mb_str_replace.php' => true,
- 'shared.mb_unicode.php' => true, 'shared.mb_wordwrap.php' => true,
- 'variablefilter.htmlspecialchars.php' => true,);
- $iterator = new DirectoryIterator($source);
- foreach ($iterator as $file) {
- if (!$file->isDot()) {
- $filename = $file->getFilename();
- if (isset($expectedPlugins[ $filename ])) {
- unset($expectedPlugins[ $filename ]);
- }
- }
- }
- if ($expectedPlugins) {
- $status = false;
- $message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expectedPlugins));
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins' ] = $message;
- }
- } elseif ($errors === null) {
- echo "... OK\n";
- }
- } else {
- $status = false;
- $message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory';
- if ($errors === null) {
- echo $message . ".\n";
- } else {
- $errors[ 'plugins_dir_constant' ] = $message;
- }
- }
-
- if ($errors === null) {
- echo "Tests complete.\n";
- echo "</PRE>\n";
- }
-
- return $status;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_undefined.php b/library/Smarty/libs/sysplugins/smarty_internal_undefined.php
deleted file mode 100644
index 93fca8ec1..000000000
--- a/library/Smarty/libs/sysplugins/smarty_internal_undefined.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/**
- * Smarty Method AppendByRef
- *
- * Smarty::appendByRef() method
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-class Smarty_Internal_Undefined
-{
-
- /**
- * This function is executed automatically when a compiled or cached template file is included
- * - Decode saved properties from compiled template and cache files
- * - Check if compiled or cache file is valid
- *
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- *
- * @return bool flag if compiled or cache file is valid
- */
- public function decodeProperties($tpl, $properties, $cache = false)
- {
- if ($cache) {
- $tpl->cached->valid = false;
- } else {
- $tpl->mustCompile = true;
- }
- return false;
- }
-
- /**
- * Call error handler for undefined method
- *
- * @param string $name unknown method-name
- * @param array $args argument array
- *
- * @return mixed
- * @throws SmartyException
- */
- public function __call($name, $args)
- {
- throw new SmartyException(get_class($args[0]) . "->{$name}() undefined method");
- }
-} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource.php b/library/Smarty/libs/sysplugins/smarty_resource.php
deleted file mode 100644
index 93d9fa7a3..000000000
--- a/library/Smarty/libs/sysplugins/smarty_resource.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource
-{
- /**
- * Source is bypassing compiler
- *
- * @var boolean
- */
- public $uncompiled = false;
-
- /**
- * Source must be recompiled on every occasion
- *
- * @var boolean
- */
- public $recompiled = false;
-
- /**
- * resource types provided by the core
- *
- * @var array
- */
- public static $sysplugins = array('file' => 'smarty_internal_resource_file.php',
- 'string' => 'smarty_internal_resource_string.php',
- 'extends' => 'smarty_internal_resource_extends.php',
- 'stream' => 'smarty_internal_resource_stream.php',
- 'eval' => 'smarty_internal_resource_eval.php',
- 'php' => 'smarty_internal_resource_php.php');
-
- /**
- * Flag if resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = false;
-
- /**
- * Name of the Class to compile this resource's contents with
- *
- * @var string
- */
- public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
-
- /**
- * Name of the Class to tokenize this resource's contents with
- *
- * @var string
- */
- public $template_lexer_class = 'Smarty_Internal_Templatelexer';
-
- /**
- * Name of the Class to parse this resource's contents with
- *
- * @var string
- */
- public $template_parser_class = 'Smarty_Internal_Templateparser';
-
- /**
- * Load template's source into current template object
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
- abstract public function getContent(Smarty_Template_Source $source);
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- */
- abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
-
- /**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
- public function populateTimestamp(Smarty_Template_Source $source)
- {
- // intentionally left blank
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @param boolean $isConfig flag for config resource
- *
- * @return string unique resource name
- */
- public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
- {
- if ($isConfig) {
- if (!isset($smarty->_joined_config_dir)) {
- $smarty->getTemplateDir(null, true);
- }
- return get_class($this) . '#' . $smarty->_joined_config_dir . '#' . $resource_name;
- } else {
- if (!isset($smarty->_joined_template_dir)) {
- $smarty->getTemplateDir();
- }
- return get_class($this) . '#' . $smarty->_joined_template_dir . '#' . $resource_name;
- }
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- *
- * @return string resource's basename
- */
- public function getBasename(Smarty_Template_Source $source)
- {
- return null;
- }
-
- /**
- * Load Resource Handler
- *
- * @param Smarty $smarty smarty object
- * @param string $type name of the resource
- *
- * @throws SmartyException
- * @return Smarty_Resource Resource Handler
- */
- public static function load(Smarty $smarty, $type)
- {
- // try smarty's cache
- if (isset($smarty->_cache['resource_handlers'][$type])) {
- return $smarty->_cache['resource_handlers'][$type];
- }
-
- // try registered resource
- if (isset($smarty->registered_resources[$type])) {
- return $smarty->_cache['resource_handlers'][$type] =
- $smarty->registered_resources[$type] instanceof Smarty_Resource ? $smarty->registered_resources[$type] :
- new Smarty_Internal_Resource_Registered();
- }
-
- // try sysplugins dir
- if (isset(self::$sysplugins[$type])) {
- $_resource_class = 'Smarty_Internal_Resource_' . ucfirst($type);
- return $smarty->_cache['resource_handlers'][$type] = new $_resource_class();
- }
-
- // try plugins dir
- $_resource_class = 'Smarty_Resource_' . ucfirst($type);
- if ($smarty->loadPlugin($_resource_class)) {
- if (class_exists($_resource_class, false)) {
- return $smarty->_cache['resource_handlers'][$type] = new $_resource_class();
- } else {
- $smarty->registerResource($type,
- array("smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp",
- "smarty_resource_{$type}_secure", "smarty_resource_{$type}_trusted"));
- // give it another try, now that the resource is registered properly
- return self::load($smarty, $type);
- }
- }
-
- // try streams
- $_known_stream = stream_get_wrappers();
- if (in_array($type, $_known_stream)) {
- // is known stream
- if (is_object($smarty->security_policy)) {
- $smarty->security_policy->isTrustedStream($type);
- }
- return $smarty->_cache['resource_handlers'][$type] = new Smarty_Internal_Resource_Stream();
- }
-
- // TODO: try default_(template|config)_handler
-
- // give up
- throw new SmartyException("Unknown resource type '{$type}'");
- }
-
- /**
- * extract resource_type and resource_name from template_resource and config_resource
- * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
- *
- * @param string $resource_name template_resource or config_resource to parse
- * @param string $default_resource the default resource_type defined in $smarty
- *
- * @return array with parsed resource name and type
- */
- public static function parseResourceName($resource_name, $default_resource)
- {
- if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) {
- $type = $match[1];
- $name = substr($resource_name, strlen($match[0]));
- } else {
- // no resource given, use default
- // or single character before the colon is not a resource type, but part of the filepath
- $type = $default_resource;
- $name = $resource_name;
- }
- return array($name, $type);
- }
-
- /**
- * modify template_resource according to resource handlers specifications
- *
- * @param \Smarty_Internal_Template|\Smarty $obj Smarty instance
- * @param string $template_resource template_resource to extract resource handler and name of
- *
- * @return string unique resource name
- */
- public static function getUniqueTemplateName($obj, $template_resource)
- {
- $smarty = $obj->_objType == 2 ? $obj->smarty : $obj;
- list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type);
- // TODO: optimize for Smarty's internal resource types
- $resource = Smarty_Resource::load($smarty, $type);
- // go relative to a given template?
- $_file_is_dotted = $name[0] == '.' && ($name[1] == '.' || $name[1] == '/');
- if ($obj->_objType == 2 && $_file_is_dotted &&
- ($obj->source->type == 'file' || $obj->parent->source->type == 'extends')
- ) {
- $name = dirname($obj->source->filepath) . DS . $name;
- }
- return $resource->buildUniqueResourceName($smarty, $name);
- }
-
- /*
- * Check if resource must check time stamps when when loading complied or cached templates.
- * Resources like 'extends' which use source components my disable timestamp checks on own resource.
- *
- * @return bool
- */
- public function checkTimestamps() {
- return true;
- }
-
- /**
- * initialize Source Object for given resource
- * wrapper for backward compatibility to versions < 3.1.22
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return Smarty_Template_Source Source Object
- */
- public static function source(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
- $template_resource = null)
- {
- return Smarty_Template_Source::load($_template, $smarty, $template_resource);
- }
-}
-
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php b/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
deleted file mode 100644
index cfd73401b..000000000
--- a/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins that don't compile cache
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Recompiled extends Smarty_Resource
-{
- /**
- * Flag that it's an recompiled resource
- *
- * @var bool
- */
- public $recompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * populate Compiled Object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object
- *
- * @return void
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php b/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
deleted file mode 100644
index 88d2bba81..000000000
--- a/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Smarty Resource Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Resource Plugin
- * Base implementation for resource plugins that don't use the compiler
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-abstract class Smarty_Resource_Uncompiled extends Smarty_Resource
-{
- /**
- * Flag that it's an uncompiled resource
- *
- * @var bool
- */
- public $uncompiled = true;
-
- /**
- * Resource does implement populateCompiledFilepath() method
- *
- * @var bool
- */
- public $hasCompiledHandler = true;
-
- /**
- * Render and output the template (without using the compiler)
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- *
- * @throws SmartyException on failure
- */
- abstract public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template);
-
- /**
- * populate compiled object with compiled filepath
- *
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object (is ignored)
- */
- public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
- {
- $compiled->filepath = false;
- $compiled->timestamp = false;
- $compiled->exists = false;
- }
-
- /**
- * render compiled template code
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return string
- * @throws Exception
- */
- public function render($_template)
- {
- $level = ob_get_level();
- ob_start();
- try {
- $this->renderUncompiled($_template->source, $_template);
- return ob_get_clean();
- }
- catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- throw $e;
- }
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_security.php b/library/Smarty/libs/sysplugins/smarty_security.php
deleted file mode 100644
index 9d48bcb21..000000000
--- a/library/Smarty/libs/sysplugins/smarty_security.php
+++ /dev/null
@@ -1,715 +0,0 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage Security
- * @author Uwe Tews
- */
-
-/*
- * FIXME: Smarty_Security API
- * - getter and setter instead of public properties would allow cultivating an internal cache properly
- * - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir are immutable
- * the cache is killed every time either of the variables change. That means that two distinct Smarty objects with differing
- * $template_dir or $config_dir should NOT share the same Smarty_Security instance,
- * as this would lead to (severe) performance penalty! how should this be handled?
- */
-
-/**
- * This class does contain the security settings
- */
-class Smarty_Security
-{
- /**
- * This determines how Smarty handles "<?php ... ?>" tags in templates.
- * possible values:
- * <ul>
- * <li>Smarty::PHP_PASSTHRU -> echo PHP tags as they are</li>
- * <li>Smarty::PHP_QUOTE -> escape tags as entities</li>
- * <li>Smarty::PHP_REMOVE -> remove php tags</li>
- * <li>Smarty::PHP_ALLOW -> execute php tags</li>
- * </ul>
- *
- * @var integer
- */
- public $php_handling = Smarty::PHP_PASSTHRU;
-
- /**
- * This is the list of template directories that are considered secure.
- * $template_dir is in this list implicitly.
- *
- * @var array
- */
- public $secure_dir = array();
-
- /**
- * This is an array of directories where trusted php scripts reside.
- * {@link $security} is disabled during their inclusion/execution.
- *
- * @var array
- */
- public $trusted_dir = array();
-
- /**
- * List of regular expressions (PCRE) that include trusted URIs
- *
- * @var array
- */
- public $trusted_uri = array();
-
- /**
- * List of trusted constants names
- *
- * @var array
- */
- public $trusted_constants = array();
-
- /**
- * This is an array of trusted static classes.
- * If empty access to all static classes is allowed.
- * If set to 'none' none is allowed.
- *
- * @var array
- */
- public $static_classes = array();
-
- /**
- * This is an nested array of trusted classes and static methods.
- * If empty access to all static classes and methods is allowed.
- * Format:
- * array (
- * 'class_1' => array('method_1', 'method_2'), // allowed methods listed
- * 'class_2' => array(), // all methods of class allowed
- * )
- * If set to null none is allowed.
- *
- * @var array
- */
- public $trusted_static_methods = array();
-
- /**
- * This is an array of trusted static properties.
- * If empty access to all static classes and properties is allowed.
- * Format:
- * array (
- * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
- * 'class_2' => array(), // all properties of class allowed
- * )
- * If set to null none is allowed.
- *
- * @var array
- */
- public $trusted_static_properties = array();
-
- /**
- * This is an array of trusted PHP functions.
- * If empty all functions are allowed.
- * To disable all PHP functions set $php_functions = null.
- *
- * @var array
- */
- public $php_functions = array('isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array', 'time',);
-
- /**
- * This is an array of trusted PHP modifiers.
- * If empty all modifiers are allowed.
- * To disable all modifier set $php_modifiers = null.
- *
- * @var array
- */
- public $php_modifiers = array('escape', 'count', 'nl2br',);
-
- /**
- * This is an array of allowed tags.
- * If empty no restriction by allowed_tags.
- *
- * @var array
- */
- public $allowed_tags = array();
-
- /**
- * This is an array of disabled tags.
- * If empty no restriction by disabled_tags.
- *
- * @var array
- */
- public $disabled_tags = array();
-
- /**
- * This is an array of allowed modifier plugins.
- * If empty no restriction by allowed_modifiers.
- *
- * @var array
- */
- public $allowed_modifiers = array();
-
- /**
- * This is an array of disabled modifier plugins.
- * If empty no restriction by disabled_modifiers.
- *
- * @var array
- */
- public $disabled_modifiers = array();
-
- /**
- * This is an array of disabled special $smarty variables.
- *
- * @var array
- */
- public $disabled_special_smarty_vars = array();
-
- /**
- * This is an array of trusted streams.
- * If empty all streams are allowed.
- * To disable all streams set $streams = null.
- *
- * @var array
- */
- public $streams = array('file');
-
- /**
- * + flag if constants can be accessed from template
- *
- * @var boolean
- */
- public $allow_constants = true;
-
- /**
- * + flag if super globals can be accessed from template
- *
- * @var boolean
- */
- public $allow_super_globals = true;
-
- /**
- * max template nesting level
- *
- * @var int
- */
- public $max_template_nesting = 0;
-
- /**
- * current template nesting level
- *
- * @var int
- */
- private $_current_template_nesting = 0;
-
- /**
- * Cache for $resource_dir lookup
- *
- * @var array
- */
- protected $_resource_dir = array();
-
- /**
- * Cache for $template_dir lookup
- *
- * @var array
- */
- protected $_template_dir = array();
-
- /**
- * Cache for $config_dir lookup
- *
- * @var array
- */
- protected $_config_dir = array();
-
- /**
- * Cache for $secure_dir lookup
- *
- * @var array
- */
- protected $_secure_dir = array();
-
- /**
- * Cache for $php_resource_dir lookup
- *
- * @var array
- */
- protected $_php_resource_dir = null;
-
- /**
- * Cache for $trusted_dir lookup
- *
- * @var array
- */
- protected $_trusted_dir = null;
-
- /**
- * Cache for include path status
- *
- * @var bool
- */
- protected $_include_path_status = false;
-
- /**
- * Cache for $_include_array lookup
- *
- * @var array
- */
- protected $_include_dir = array();
-
- /**
- * @param Smarty $smarty
- */
- public function __construct($smarty)
- {
- $this->smarty = $smarty;
- }
-
- /**
- * Check if PHP function is trusted.
- *
- * @param string $function_name
- * @param object $compiler compiler object
- *
- * @return boolean true if function is trusted
- * @throws SmartyCompilerException if php function is not trusted
- */
- public function isTrustedPhpFunction($function_name, $compiler)
- {
- if (isset($this->php_functions) &&
- (empty($this->php_functions) || in_array($function_name, $this->php_functions))
- ) {
- return true;
- }
-
- $compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting");
-
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if static class is trusted.
- *
- * @param string $class_name
- * @param object $compiler compiler object
- *
- * @return boolean true if class is trusted
- * @throws SmartyCompilerException if static class is not trusted
- */
- public function isTrustedStaticClass($class_name, $compiler)
- {
- if (isset($this->static_classes) &&
- (empty($this->static_classes) || in_array($class_name, $this->static_classes))
- ) {
- return true;
- }
-
- $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
-
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if static class method/property is trusted.
- *
- * @param string $class_name
- * @param string $params
- * @param object $compiler compiler object
- *
- * @return boolean true if class method is trusted
- * @throws SmartyCompilerException if static class method is not trusted
- */
- public function isTrustedStaticClassAccess($class_name, $params, $compiler)
- {
- if (!isset($params[2])) {
- // fall back
- return $this->isTrustedStaticClass($class_name, $compiler);
- }
- if ($params[2] == 'method') {
- $allowed = $this->trusted_static_methods;
- $name = substr($params[0], 0, strpos($params[0], '('));
- } else {
- $allowed = $this->trusted_static_properties;
- // strip '$'
- $name = substr($params[0], 1);
- }
- if (isset($allowed)) {
- if (empty($allowed)) {
- // fall back
- return $this->isTrustedStaticClass($class_name, $compiler);
- }
- if (isset($allowed[$class_name]) &&
- (empty($allowed[$class_name]) || in_array($name, $allowed[$class_name]))
- ) {
- return true;
- }
- }
- $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting");
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if PHP modifier is trusted.
- *
- * @param string $modifier_name
- * @param object $compiler compiler object
- *
- * @return boolean true if modifier is trusted
- * @throws SmartyCompilerException if modifier is not trusted
- */
- public function isTrustedPhpModifier($modifier_name, $compiler)
- {
- if (isset($this->php_modifiers) &&
- (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers))
- ) {
- return true;
- }
-
- $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting");
-
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if tag is trusted.
- *
- * @param string $tag_name
- * @param object $compiler compiler object
- *
- * @return boolean true if tag is trusted
- * @throws SmartyCompilerException if modifier is not trusted
- */
- public function isTrustedTag($tag_name, $compiler)
- {
- // check for internal always required tags
- if (in_array($tag_name, array('assign', 'call', 'private_filter', 'private_block_plugin',
- 'private_function_plugin', 'private_object_block_function',
- 'private_object_function', 'private_registered_function',
- 'private_registered_block', 'private_special_variable',
- 'private_print_expression', 'private_modifier'))) {
- return true;
- }
- // check security settings
- if (empty($this->allowed_tags)) {
- if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
- return true;
- } else {
- $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true);
- }
- } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
- return true;
- } else {
- $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true);
- }
-
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if special $smarty variable is trusted.
- *
- * @param string $var_name
- * @param object $compiler compiler object
- *
- * @return boolean true if tag is trusted
- * @throws SmartyCompilerException if modifier is not trusted
- */
- public function isTrustedSpecialSmartyVar($var_name, $compiler)
- {
- if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
- return true;
- } else {
- $compiler->trigger_template_error("special variable '\$smarty.{$var_name}' not allowed by security setting", null, true);
- }
-
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if modifier plugin is trusted.
- *
- * @param string $modifier_name
- * @param object $compiler compiler object
- *
- * @return boolean true if tag is trusted
- * @throws SmartyCompilerException if modifier is not trusted
- */
- public function isTrustedModifier($modifier_name, $compiler)
- {
- // check for internal always allowed modifier
- if (in_array($modifier_name, array('default'))) {
- return true;
- }
- // check security settings
- if (empty($this->allowed_modifiers)) {
- if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
- return true;
- } else {
- $compiler->trigger_template_error("modifier '{$modifier_name}' disabled by security setting", null, true);
- }
- } elseif (in_array($modifier_name, $this->allowed_modifiers) &&
- !in_array($modifier_name, $this->disabled_modifiers)
- ) {
- return true;
- } else {
- $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting", null, true);
- }
-
- return false; // should not, but who knows what happens to the compiler in the future?
- }
-
- /**
- * Check if constants are enabled or trusted
- *
- * @param string $const constant name
- * @param object $compiler compiler object
- *
- * @return bool
- */
- public function isTrustedConstant($const, $compiler)
- {
- if (in_array($const, array('true', 'false', 'null'))) {
- return true;
- }
- if (!empty($this->trusted_constants)) {
- if (!in_array($const, $this->trusted_constants)) {
- $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
- return false;
- }
- return true;
- }
- if ($this->allow_constants) {
- return true;
- }
- $compiler->trigger_template_error("Security: access to constants not permitted");
- return false;
- }
-
- /**
- * Check if stream is trusted.
- *
- * @param string $stream_name
- *
- * @return boolean true if stream is trusted
- * @throws SmartyException if stream is not trusted
- */
- public function isTrustedStream($stream_name)
- {
- if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
- return true;
- }
-
- throw new SmartyException("stream '{$stream_name}' not allowed by security setting");
- }
-
- /**
- * Check if directory of file resource is trusted.
- *
- * @param string $filepath
- * @param null|bool $isConfig
- *
- * @return bool true if directory is trusted
- * @throws \SmartyException if directory is not trusted
- */
- public function isTrustedResourceDir($filepath, $isConfig = null)
- {
- if ($this->_include_path_status !== $this->smarty->use_include_path) {
- foreach ($this->_include_dir as $directory) {
- unset($this->_resource_dir[$directory]);
- }
- if ($this->smarty->use_include_path) {
- $this->_include_dir = array();
- $_dirs = $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty);
- foreach ($_dirs as $directory) {
- $this->_include_dir[] = $directory;
- $this->_resource_dir[$directory] = true;
- }
- }
- $this->_include_path_status = $this->smarty->use_include_path;
- }
- if ($isConfig !== true &&
- (!isset($this->smarty->_cache['template_dir_new']) || $this->smarty->_cache['template_dir_new'])
- ) {
- $_dir = $this->smarty->getTemplateDir();
- if ($this->_template_dir !== $_dir) {
- foreach ($this->_template_dir as $directory) {
- unset($this->_resource_dir[$directory]);
- }
- foreach ($_dir as $directory) {
- $this->_resource_dir[$directory] = true;
- }
- $this->_template_dir = $_dir;
- }
- $this->smarty->_cache['template_dir_new'] = false;
- }
- if ($isConfig !== false &&
- (!isset($this->smarty->_cache['config_dir_new']) || $this->smarty->_cache['config_dir_new'])
- ) {
- $_dir = $this->smarty->getConfigDir();
- if ($this->_config_dir !== $_dir) {
- foreach ($this->_config_dir as $directory) {
- unset($this->_resource_dir[$directory]);
- }
- foreach ($_dir as $directory) {
- $this->_resource_dir[$directory] = true;
- }
- $this->_config_dir = $_dir;
- }
- $this->smarty->_cache['config_dir_new'] = false;
- }
- if ($this->_secure_dir !== (array) $this->secure_dir) {
- foreach ($this->_secure_dir as $directory) {
- unset($this->_resource_dir[$directory]);
- }
- foreach ((array) $this->secure_dir as $directory) {
- $directory = $this->smarty->_realpath($directory . DS, true);
- $this->_resource_dir[$directory] = true;
- }
- $this->_secure_dir = (array) $this->secure_dir;
- }
- $this->_resource_dir = $this->_checkDir($filepath, $this->_resource_dir);
- return true;
- }
-
- /**
- * Check if URI (e.g. {fetch} or {html_image}) is trusted
- * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
- * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
- * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
- *
- * @param string $uri
- *
- * @return boolean true if URI is trusted
- * @throws SmartyException if URI is not trusted
- * @uses $trusted_uri for list of patterns to match against $uri
- */
- public function isTrustedUri($uri)
- {
- $_uri = parse_url($uri);
- if (!empty($_uri['scheme']) && !empty($_uri['host'])) {
- $_uri = $_uri['scheme'] . '://' . $_uri['host'];
- foreach ($this->trusted_uri as $pattern) {
- if (preg_match($pattern, $_uri)) {
- return true;
- }
- }
- }
-
- throw new SmartyException("URI '{$uri}' not allowed by security setting");
- }
-
- /**
- * Check if directory of file resource is trusted.
- *
- * @param string $filepath
- *
- * @return boolean true if directory is trusted
- * @throws SmartyException if PHP directory is not trusted
- */
- public function isTrustedPHPDir($filepath)
- {
- if (empty($this->trusted_dir)) {
- throw new SmartyException("directory '{$filepath}' not allowed by security setting (no trusted_dir specified)");
- }
-
- // check if index is outdated
- if (!$this->_trusted_dir || $this->_trusted_dir !== $this->trusted_dir) {
- $this->_php_resource_dir = array();
-
- $this->_trusted_dir = $this->trusted_dir;
- foreach ((array) $this->trusted_dir as $directory) {
- $directory = $this->smarty->_realpath($directory . DS, true);
- $this->_php_resource_dir[$directory] = true;
- }
- }
-
- $this->_php_resource_dir = $this->_checkDir($this->smarty->_realpath($filepath, true), $this->_php_resource_dir);
- return true;
- }
-
- /**
- * Start template processing
- *
- * @param $template
- *
- * @throws SmartyException
- */
- public function startTemplate($template)
- {
- if ($this->max_template_nesting > 0 && $this->_current_template_nesting ++ >= $this->max_template_nesting) {
- throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
- }
- }
-
- /**
- * Exit template processing
- *
- * @internal param $template
- */
- public function exitTemplate()
- {
- if ($this->max_template_nesting > 0) {
- $this->_current_template_nesting --;
- }
- }
-
- /**
- * Check if file is inside a valid directory
- *
- * @param string $filepath
- * @param array $dirs valid directories
- *
- * @return array
- * @throws \SmartyException
- */
- private function _checkDir($filepath, $dirs)
- {
- $directory = dirname($filepath) . DS;
- $_directory = array();
- while (true) {
- // remember the directory to add it to _resource_dir in case we're successful
- $_directory[$directory] = true;
- // test if the directory is trusted
- if (isset($dirs[$directory])) {
- // merge sub directories of current $directory into _resource_dir to speed up subsequent lookup
- $dirs = array_merge($dirs, $_directory);
-
- return $dirs;
- }
- // abort if we've reached root
- if (!preg_match('#[\\\/][^\\\/]+[\\\/]$#', $directory)) {
- break;
- }
- // bubble up one level
- $directory = preg_replace('#[\\\/][^\\\/]+[\\\/]$#', DS, $directory);
- }
-
- // give up
- throw new SmartyException("directory '{$filepath}' not allowed by security setting");
- }
-
- /**
- * Loads security class and enables security
- *
- * @param \Smarty $smarty
- * @param string|Smarty_Security $security_class if a string is used, it must be class-name
- *
- * @return \Smarty current Smarty instance for chaining
- * @throws \SmartyException when an invalid class name is provided
- */
- public static function enableSecurity(Smarty $smarty, $security_class)
- {
- if ($security_class instanceof Smarty_Security) {
- $smarty->security_policy = $security_class;
- return;
- } elseif (is_object($security_class)) {
- throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security.");
- }
- if ($security_class == null) {
- $security_class = $smarty->security_class;
- }
- if (!class_exists($security_class)) {
- throw new SmartyException("Security class '$security_class' is not defined");
- } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) {
- throw new SmartyException("Class '$security_class' must extend Smarty_Security.");
- } else {
- $smarty->security_policy = new $security_class($smarty);
- }
- return;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_cached.php b/library/Smarty/libs/sysplugins/smarty_template_cached.php
deleted file mode 100644
index cecf42986..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_cached.php
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/**
- * Created by PhpStorm.
- * User: Uwe Tews
- * Date: 04.12.2014
- * Time: 06:08
- */
-
-/**
- * Smarty Resource Data Object
- * Cache Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-class Smarty_Template_Cached extends Smarty_Template_Resource_Base
-{
- /**
- * Cache Is Valid
- *
- * @var boolean
- */
- public $valid = null;
-
- /**
- * CacheResource Handler
- *
- * @var Smarty_CacheResource
- */
- public $handler = null;
-
- /**
- * Template Cache Id (Smarty_Internal_Template::$cache_id)
- *
- * @var string
- */
- public $cache_id = null;
-
- /**
- * saved cache lifetime in seconds
- *
- * @var integer
- */
- public $cache_lifetime = 0;
-
- /**
- * Id for cache locking
- *
- * @var string
- */
- public $lock_id = null;
-
- /**
- * flag that cache is locked by this instance
- *
- * @var bool
- */
- public $is_locked = false;
-
- /**
- * Source Object
- *
- * @var Smarty_Template_Source
- */
- public $source = null;
-
- /**
- * Nocache hash codes of processed compiled templates
- *
- * @var array
- */
- public $hashes = array();
-
- /**
- * create Cached Object container
- *
- * @param Smarty_Internal_Template $_template template object
- */
- public function __construct(Smarty_Internal_Template $_template)
- {
- $this->compile_id = $_template->compile_id;
- $this->cache_id = $_template->cache_id;
- $this->source = $_template->source;
- if (!class_exists('Smarty_CacheResource', false)) {
- require SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
- }
- $this->handler = Smarty_CacheResource::load($_template->smarty);
- }
-
- /**
- * @param Smarty_Internal_Template $_template
- *
- * @return Smarty_Template_Cached
- */
- static function load(Smarty_Internal_Template $_template)
- {
- $_template->cached = new Smarty_Template_Cached($_template);
- $_template->cached->handler->populate($_template->cached, $_template);
- // caching enabled ?
- if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT ||
- $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->handler->recompiled
- ) {
- $_template->cached->valid = false;
- }
- return $_template->cached;
- }
-
- /**
- * Render cache template
- *
- * @param \Smarty_Internal_Template $_template
- * @param bool $no_output_filter
- *
- * @throws \Exception
- */
- public function render(Smarty_Internal_Template $_template, $no_output_filter = true)
- {
- if ($this->isCached($_template)) {
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_cache($_template);
- }
- if (!$this->processed) {
- $this->process($_template);
- }
- $this->getRenderedTemplateCode($_template);
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_cache($_template);
- }
- return;
- } else {
- $_template->smarty->ext->_updateCache->updateCache($this, $_template, $no_output_filter);
- }
- }
-
- /**
- * Check if cache is valid, lock cache if required
- *
- * @param \Smarty_Internal_Template $_template
- *
- * @return bool flag true if cache is valid
- */
- public function isCached(Smarty_Internal_Template $_template)
- {
- if ($this->valid !== null) {
- return $this->valid;
- }
- while (true) {
- while (true) {
- if ($this->exists === false || $_template->smarty->force_compile || $_template->smarty->force_cache) {
- $this->valid = false;
- } else {
- $this->valid = true;
- }
- if ($this->valid && $_template->caching == Smarty::CACHING_LIFETIME_CURRENT &&
- $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)
- ) {
- // lifetime expired
- $this->valid = false;
- }
- if ($this->valid && $_template->smarty->compile_check == 1 &&
- $_template->source->getTimeStamp() > $this->timestamp
- ) {
- $this->valid = false;
- }
- if ($this->valid || !$_template->smarty->cache_locking) {
- break;
- }
- if (!$this->handler->locked($_template->smarty, $this)) {
- $this->handler->acquireLock($_template->smarty, $this);
- break 2;
- }
- $this->handler->populate($this, $_template);
- }
- if ($this->valid) {
- if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) {
- // load cache file for the following checks
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_cache($_template);
- }
- if ($this->handler->process($_template, $this) === false) {
- $this->valid = false;
- } else {
- $this->processed = true;
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_cache($_template);
- }
- } else {
- $this->is_locked = true;
- continue;
- }
- } else {
- return $this->valid;
- }
- if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED &&
- $_template->cached->cache_lifetime >= 0 &&
- (time() > ($_template->cached->timestamp + $_template->cached->cache_lifetime))
- ) {
- $this->valid = false;
- }
- if ($_template->smarty->cache_locking) {
- if (!$this->valid) {
- $this->handler->acquireLock($_template->smarty, $this);
- } elseif ($this->is_locked) {
- $this->handler->releaseLock($_template->smarty, $this);
- }
- }
- return $this->valid;
- }
- return $this->valid;
- }
-
- /**
- * Process cached template
- *
- * @param Smarty_Internal_Template $_template template object
- * @param bool $update flag if called because cache update
- */
- public function process(Smarty_Internal_Template $_template, $update = false)
- {
- if ($this->handler->process($_template, $this, $update) === false) {
- $this->valid = false;
- }
- if ($this->valid) {
- $this->processed = true;
- } else {
- $this->processed = false;
- }
- }
-
- /**
- * Read cache content from handler
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function read(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->handler->recompiled) {
- return $this->handler->readCachedContent($_template);
- }
- return false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_compiled.php b/library/Smarty/libs/sysplugins/smarty_template_compiled.php
deleted file mode 100644
index e7710f85e..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_compiled.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-/**
- * Smarty Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- * @property string $content compiled content
- */
-class Smarty_Template_Compiled extends Smarty_Template_Resource_Base
-{
-
- /**
- * nocache hash
- *
- * @var string|null
- */
- public $nocache_hash = null;
-
- /**
- * get a Compiled Object of this source
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return Smarty_Template_Compiled compiled object
- */
- static function load($_template)
- {
- // check runtime cache
- if (!$_template->source->handler->recompiled &&
- ($_template->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON)
- ) {
- $_cache_key = $_template->source->unique_resource . '#';
- if ($_template->caching) {
- $_cache_key .= 'caching#';
- }
- $_cache_key .= $_template->compile_id;
- if (isset($_template->source->compileds[$_cache_key])) {
- return $_template->source->compileds[$_cache_key];
- }
- }
- $compiled = new Smarty_Template_Compiled();
- if ($_template->source->handler->hasCompiledHandler) {
- $_template->source->handler->populateCompiledFilepath($compiled, $_template);
- } else {
- $compiled->populateCompiledFilepath($_template);
- }
- // runtime cache
- if (!$_template->source->handler->recompiled &&
- ($_template->smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON)
- ) {
- $_template->source->compileds[$_cache_key] = $compiled;
- }
- return $compiled;
- }
-
- /**
- * populate Compiled Object with compiled filepath
- *
- * @param Smarty_Internal_Template $_template template object
- **/
- public function populateCompiledFilepath(Smarty_Internal_Template $_template)
- {
- $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w]+!', '_', $_template->compile_id) : null;
- if ($_template->source->isConfig) {
- $_flag = '_' .
- ((int) $_template->smarty->config_read_hidden + (int) $_template->smarty->config_booleanize * 2 +
- (int) $_template->smarty->config_overwrite * 4);
- } else {
- $_flag =
- '_' . ((int) $_template->smarty->merge_compiled_includes + (int) $_template->smarty->escape_html * 2);
- }
- $_filepath = $_template->source->uid . $_flag;
- // if use_sub_dirs, break file into directories
- if ($_template->smarty->use_sub_dirs) {
- $_filepath = substr($_filepath, 0, 2) . DS . substr($_filepath, 2, 2) . DS . substr($_filepath, 4, 2) . DS .
- $_filepath;
- }
- $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
- if (isset($_compile_id)) {
- $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
- }
- // caching token
- if ($_template->caching) {
- $_cache = '.cache';
- } else {
- $_cache = '';
- }
- $_compile_dir = $_template->smarty->getCompileDir();
- // set basename if not specified
- $_basename = $_template->source->handler->getBasename($_template->source);
- if ($_basename === null) {
- $_basename = basename(preg_replace('![^\w]+!', '_', $_template->source->name));
- }
- // separate (optional) basename by dot
- if ($_basename) {
- $_basename = '.' . $_basename;
- }
-
- $this->filepath = $_compile_dir . $_filepath . '.' . $_template->source->type . $_basename . $_cache . '.php';
- $this->exists = is_file($this->filepath);
- if (!$this->exists) {
- $this->timestamp = false;
- }
- }
-
- /**
- * load compiled template or compile from source
- *
- * @param Smarty_Internal_Template $_template
- *
- * @throws Exception
- */
- public function process(Smarty_Internal_Template $_template)
- {
- $_smarty_tpl = $_template;
- if ($_template->source->handler->recompiled || !$_template->compiled->exists ||
- $_template->smarty->force_compile || ($_template->smarty->compile_check &&
- $_template->source->getTimeStamp() > $_template->compiled->getTimeStamp())
- ) {
- $this->compileTemplateSource($_template);
- $compileCheck = $_template->smarty->compile_check;
- $_template->smarty->compile_check = false;
- if ($_template->source->handler->recompiled) {
- $level = ob_get_level();
- ob_start();
- try {
- eval("?>" . $this->content);
- }
- catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- throw $e;
- }
- ob_get_clean();
- $this->content = null;
- } else {
- $this->loadCompiledTemplate($_template);
- }
- $_template->smarty->compile_check = $compileCheck;
- } else {
- $_template->mustCompile = true;
- @include($_template->compiled->filepath);
- if ($_template->mustCompile) {
- $this->compileTemplateSource($_template);
- $compileCheck = $_template->smarty->compile_check;
- $_template->smarty->compile_check = false;
- $this->loadCompiledTemplate($_template);
- $_template->smarty->compile_check = $compileCheck;
- }
- }
- $_template->smarty->ext->_subTemplate->registerSubTemplates($_template);
-
- $this->processed = true;
- }
-
- /**
- * Load fresh compiled template by including the PHP file
- * HHVM requires a work around because of a PHP incompatibility
- *
- * @param \Smarty_Internal_Template $_template
- */
- private function loadCompiledTemplate(Smarty_Internal_Template $_template)
- {
- if (function_exists('opcache_invalidate')) {
- opcache_invalidate($_template->compiled->filepath);
- }
- $_smarty_tpl = $_template;
- if (defined('HHVM_VERSION')) {
- $_template->smarty->ext->_hhvm->includeHhvm($_template, $_template->compiled->filepath);
- } else {
- include($_template->compiled->filepath);
- }
- }
-
- /**
- * render compiled template code
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return string
- * @throws Exception
- */
- public function render(Smarty_Internal_Template $_template)
- {
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_render($_template);
- }
- if (!$this->processed) {
- $this->process($_template);
- }
- if (isset($_template->cached)) {
- $_template->cached->file_dependency =
- array_merge($_template->cached->file_dependency, $this->file_dependency);
- }
- $this->getRenderedTemplateCode($_template);
- if ($_template->caching && $this->has_nocache_code) {
- $_template->cached->hashes[$this->nocache_hash] = true;
- }
- if (isset($_template->parent) && $_template->parent->_objType == 2 && !empty($_template->tpl_function)) {
- $_template->parent->tpl_function = array_merge($_template->parent->tpl_function, $_template->tpl_function);
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_render($_template);
- }
- }
-
- /**
- * compile template from source
- *
- * @param Smarty_Internal_Template $_template
- *
- * @return string
- * @throws Exception
- */
- public function compileTemplateSource(Smarty_Internal_Template $_template)
- {
- $_template->source->compileds = array();
- $this->file_dependency = array();
- $this->tpl_function = array();
- $this->includes = array();
- $this->nocache_hash = null;
- $this->unifunc = null;
- // compile locking
- if (!$_template->source->handler->recompiled) {
- if ($saved_timestamp = $_template->compiled->getTimeStamp()) {
- touch($_template->compiled->filepath);
- }
- }
- // call compiler
- try {
- $_template->loadCompiler();
- $code = $_template->compiler->compileTemplate($_template);
- }
- catch (Exception $e) {
- // restore old timestamp in case of error
- if (!$_template->source->handler->recompiled && $saved_timestamp) {
- touch($_template->compiled->filepath, $saved_timestamp);
- }
- throw $e;
- }
- // compiling succeeded
- if ($_template->compiler->write_compiled_code) {
- // write compiled template
- $this->write($_template, $code);
- $code = '';
- }
- // release compiler object to free memory
- unset($_template->compiler);
- return $code;
- }
-
- /**
- * Write compiled code by handler
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $code compiled code
- *
- * @return boolean success
- */
- public function write(Smarty_Internal_Template $_template, $code)
- {
- if (!$_template->source->handler->recompiled) {
- if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) {
- $this->timestamp = $this->exists = is_file($this->filepath);
- if ($this->exists) {
- $this->timestamp = filemtime($this->filepath);
- return true;
- }
- }
- return false;
- } else {
- $this->content = $code;
- }
- $this->timestamp = time();
- $this->exists = true;
- return true;
- }
-
- /**
- * Read compiled content from handler
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string content
- */
- public function read(Smarty_Internal_Template $_template)
- {
- if (!$_template->source->handler->recompiled) {
- return file_get_contents($this->filepath);
- }
- return isset($this->content) ? $this->content : false;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_config.php b/library/Smarty/libs/sysplugins/smarty_template_config.php
deleted file mode 100644
index f0fff5080..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_config.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Smarty Config Source Plugin
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- */
-
-/**
- * Smarty Connfig Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- *
- */
-class Smarty_Template_Config extends Smarty_Template_Source
-{
- /**
- * array of section names, single section or null
- *
- * @var null|string|array
- */
- public $config_sections = null;
-
- /**
- * scope into which the config variables shall be loaded
- *
- * @var string
- */
- public $scope = 'local';
-
- /**
- * Flag that source is a config file
- *
- * @var bool
- */
- public $isConfig = true;
-
- /**
- * create Source Object container
- *
- * @param Smarty_Resource $handler Resource Handler this source object communicates with
- * @param Smarty $smarty Smarty instance this source object belongs to
- * @param string $resource full template_resource
- * @param string $type type of resource
- * @param string $name resource name
- */
- public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name)
- {
- // must clone handler as we change class names
- $this->handler = clone $handler; // Note: prone to circular references
- $this->handler->compiler_class = 'Smarty_Internal_Config_File_Compiler';
- $this->handler->template_lexer_class = 'Smarty_Internal_Configfilelexer';
- $this->handler->template_parser_class = 'Smarty_Internal_Configfileparser';
- $this->resource = $resource;
- $this->type = $type;
- $this->name = $name;
- $this->smarty = $smarty;
- }
-
- /**
- * initialize Source Object for given resource
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return Smarty_Template_Config Source Object
- * @throws SmartyException
- */
- public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null, $template_resource = null)
- {
- static $_incompatible_resources = array('extends' => true, 'php' => true);
- $template_resource = $_template->template_resource;
- if (empty($template_resource)) {
- throw new SmartyException('Missing config name');
- }
- // parse resource_name, load resource handler
- list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $_template->smarty->default_config_type);
- // make sure configs are not loaded via anything smarty can't handle
- if (isset($_incompatible_resources[$type])) {
- throw new SmartyException ("Unable to use resource '{$type}' for config");
- }
- $resource = Smarty_Resource::load($_template->smarty, $type);
- $source = new Smarty_Template_Config($resource, $_template->smarty, $template_resource, $type, $name);
- $resource->populate($source, $_template);
- if (!$source->exists && isset($_template->smarty->default_config_handler_func)) {
- Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
- }
- $source->unique_resource = $resource->buildUniqueResourceName($_template->smarty, $name, true);
- return $source;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_resource_base.php b/library/Smarty/libs/sysplugins/smarty_template_resource_base.php
deleted file mode 100644
index 0911feb8d..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_resource_base.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-/**
- * Smarty Template Resource Base Object
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- */
-abstract class Smarty_Template_Resource_Base
-{
- /**
- * Compiled Filepath
- *
- * @var string
- */
- public $filepath = null;
-
- /**
- * Compiled Timestamp
- *
- * @var integer
- */
- public $timestamp = null;
-
- /**
- * Compiled Existence
- *
- * @var boolean
- */
- public $exists = false;
-
- /**
- * Template Compile Id (Smarty_Internal_Template::$compile_id)
- *
- * @var string
- */
- public $compile_id = null;
-
- /**
- * Compiled Content Loaded
- *
- * @var boolean
- */
- public $processed = false;
-
- /**
- * unique function name for compiled template code
- *
- * @var string
- */
- public $unifunc = '';
-
- /**
- * flag if template does contain nocache code sections
- *
- * @var bool
- */
- public $has_nocache_code = false;
-
- /**
- * resource file dependency
- *
- * @var array
- */
- public $file_dependency = array();
-
- /**
- * Content buffer
- *
- * @var string
- */
- public $content = null;
-
- /**
- * required plugins
- *
- * @var array
- */
- public $required_plugins = array();
-
- /**
- * Included subtemplates
- *
- * @var array
- */
- public $includes = array();
-
- /**
- * Process resource
- *
- * @param Smarty_Internal_Template $_template template object
- */
- abstract public function process(Smarty_Internal_Template $_template);
-
- /**
- * get rendered template content by calling compiled or cached template code
- *
- * @param string $unifunc function with template code
- *
- * @return string
- * @throws \Exception
- */
- public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null)
- {
- $unifunc = isset($unifunc) ? $unifunc : $this->unifunc;
- $level = ob_get_level();
- try {
- if (empty($unifunc) || !is_callable($unifunc)) {
- throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
- }
- if (isset($_template->smarty->security_policy)) {
- $_template->smarty->security_policy->startTemplate($_template);
- }
- //
- // render compiled or saved template code
- //
- if (!isset($_template->_cache['capture_stack'])) {
- $_template->_cache['capture_stack'] = array();
- }
- $_saved_capture_level = count($_template->_cache['capture_stack']);
- $unifunc($_template);
- // any unclosed {capture} tags ?
- if ($_saved_capture_level != count($_template->_cache['capture_stack'])) {
- $_template->capture_error();
- }
- if (isset($_template->smarty->security_policy)) {
- $_template->smarty->security_policy->exitTemplate();
- }
- return null;
- }
- catch (Exception $e) {
- while (ob_get_level() > $level) {
- ob_end_clean();
- }
- if (isset($_template->smarty->security_policy)) {
- $_template->smarty->security_policy->exitTemplate();
- }
- throw $e;
- }
- }
-
- /**
- * Get compiled time stamp
- *
- * @return int
- */
- public function getTimeStamp()
- {
- if ($this->exists && !isset($this->timestamp)) {
- $this->timestamp = @filemtime($this->filepath);
- }
- return $this->timestamp;
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_template_source.php b/library/Smarty/libs/sysplugins/smarty_template_source.php
deleted file mode 100644
index be5b62809..000000000
--- a/library/Smarty/libs/sysplugins/smarty_template_source.php
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-
-/**
- * Smarty Resource Data Object
- * Meta Data Container for Template Files
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Rodney Rehm
- *
- */
-class Smarty_Template_Source
-{
- /**
- * Unique Template ID
- *
- * @var string
- */
- public $uid = null;
-
- /**
- * Template Resource (Smarty_Internal_Template::$template_resource)
- *
- * @var string
- */
- public $resource = null;
-
- /**
- * Resource Type
- *
- * @var string
- */
- public $type = null;
-
- /**
- * Resource Name
- *
- * @var string
- */
- public $name = null;
-
- /**
- * Unique Resource Name
- *
- * @var string
- */
- public $unique_resource = null;
-
- /**
- * Source Filepath
- *
- * @var string
- */
- public $filepath = null;
-
- /**
- * Source Timestamp
- *
- * @var integer
- */
- public $timestamp = null;
-
- /**
- * Source Existence
- *
- * @var boolean
- */
- public $exists = false;
-
- /**
- * Source File Base name
- *
- * @var string
- */
- public $basename = null;
-
- /**
- * The Components an extended template is made of
- *
- * @var \Smarty_Template_Source[]
- */
- public $components = null;
-
- /**
- * Resource Handler
- *
- * @var \Smarty_Resource
- */
- public $handler = null;
-
- /**
- * Smarty instance
- *
- * @var Smarty
- */
- public $smarty = null;
-
- /**
- * Resource is source
- *
- * @var bool
- */
- public $isConfig = false;
-
- /**
- * cache for Smarty_Template_Compiled instances
- *
- * @var Smarty_Template_Compiled[]
- */
- public $compileds = array();
-
- /**
- * Template source content eventually set by default handler
- *
- * @var string
- */
- public $content = null;
-
- /**
- * create Source Object container
- *
- * @param Smarty_Resource $handler Resource Handler this source object communicates with
- * @param Smarty $smarty Smarty instance this source object belongs to
- * @param string $resource full template_resource
- * @param string $type type of resource
- * @param string $name resource name
- *
- */
- public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name)
- {
- $this->handler = $handler; // Note: prone to circular references
- $this->smarty = $smarty;
- $this->resource = $resource;
- $this->type = $type;
- $this->name = $name;
- }
-
- /**
- * initialize Source Object for given resource
- * Either [$_template] or [$smarty, $template_resource] must be specified
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- *
- * @return Smarty_Template_Source Source Object
- * @throws SmartyException
- */
- public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
- $template_resource = null)
- {
- if ($_template) {
- $smarty = $_template->smarty;
- $template_resource = $_template->template_resource;
- }
- if (empty($template_resource)) {
- throw new SmartyException('Missing template name');
- }
- // parse resource_name, load resource handler, identify unique resource name
- if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) {
- $type = $match[1];
- $name = $match[2];
- } else {
- // no resource given, use default
- // or single character before the colon is not a resource type, but part of the filepath
- $type = $smarty->default_resource_type;
- $name = $template_resource;
- }
-
- $handler = isset($smarty->_cache['resource_handlers'][$type]) ?
- $smarty->_cache['resource_handlers'][$type] :
- Smarty_Resource::load($smarty, $type);
- // if resource is not recompiling and resource name is not dotted we can check the source cache
- if (($smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON) && !$handler->recompiled &&
- !(isset($name[1]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/'))
- ) {
- $unique_resource = $handler->buildUniqueResourceName($smarty, $name);
- if (isset($smarty->_cache['source_objects'][$unique_resource])) {
- return $smarty->_cache['source_objects'][$unique_resource];
- }
- } else {
- $unique_resource = null;
- }
- // create new source object
- $source = new Smarty_Template_Source($handler, $smarty, $template_resource, $type, $name);
- $handler->populate($source, $_template);
- if (!$source->exists && isset($_template->smarty->default_template_handler_func)) {
- Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
- }
- // on recompiling resources we are done
- if (($smarty->resource_cache_mode & Smarty::RESOURCE_CACHE_ON) && !$handler->recompiled) {
- // may by we have already $unique_resource
- $is_relative = false;
- if (!isset($unique_resource)) {
- $is_relative = isset($name[1]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/') &&
- ($type == 'file' ||
- (isset($_template->parent->source) && $_template->parent->source->type == 'extends'));
- $unique_resource =
- $handler->buildUniqueResourceName($smarty, $is_relative ? $source->filepath . $name : $name);
- }
- $source->unique_resource = $unique_resource;
- // save in runtime cache if not relative
- if (!$is_relative) {
- $smarty->_cache['source_objects'][$unique_resource] = $source;
- }
- }
- return $source;
- }
-
- /**
- * render the uncompiled source
- *
- * @param Smarty_Internal_Template $_template template object
- *
- * @return string
- * @throws \Exception
- */
- public function renderUncompiled(Smarty_Internal_Template $_template)
- {
- $this->handler->renderUncompiled($_template->source, $_template);
- }
-
- /**
- * Render uncompiled source
- *
- * @param \Smarty_Internal_Template $_template
- */
- public function render(Smarty_Internal_Template $_template)
- {
- if ($_template->source->handler->uncompiled) {
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->start_render($_template);
- }
- $this->handler->renderUncompiled($_template->source, $_template);
- if (isset($_template->parent) && $_template->parent->_objType == 2 && !empty($_template->tpl_function)) {
- $_template->parent->tpl_function =
- array_merge($_template->parent->tpl_function, $_template->tpl_function);
- }
- if ($_template->smarty->debugging) {
- $_template->smarty->_debug->end_render($_template);
- }
- }
- }
-
- /**
- * Get source time stamp
- *
- * @return int
- */
- public function getTimeStamp()
- {
- if (!isset($this->timestamp)) {
- $this->handler->populateTimestamp($this);
- }
- return $this->timestamp;
- }
-
- /**
- * Get source content
- *
- * @return string
- */
- public function getContent()
- {
- return isset($this->content) ? $this->content : $this->handler->getContent($this);
- }
-}
diff --git a/library/Smarty/libs/sysplugins/smarty_variable.php b/library/Smarty/libs/sysplugins/smarty_variable.php
deleted file mode 100644
index a6504b18f..000000000
--- a/library/Smarty/libs/sysplugins/smarty_variable.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/**
- * class for the Smarty variable object
- * This class defines the Smarty variable object
- *
- * @package Smarty
- * @subpackage Template
- */
-class Smarty_Variable
-{
- /**
- * template variable
- *
- * @var mixed
- */
- public $value = null;
- /**
- * if true any output of this variable will be not cached
- *
- * @var boolean
- */
- public $nocache = false;
-
- /**
- * create Smarty variable object
- *
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- */
- public function __construct($value = null, $nocache = false)
- {
- $this->value = $value;
- $this->nocache = $nocache;
- }
-
- /**
- * <<magic>> String conversion
- *
- * @return string
- */
- public function __toString()
- {
- return (string) $this->value;
- }
-}
-
diff --git a/library/Smarty/libs/sysplugins/smartycompilerexception.php b/library/Smarty/libs/sysplugins/smartycompilerexception.php
deleted file mode 100644
index 4d5d77875..000000000
--- a/library/Smarty/libs/sysplugins/smartycompilerexception.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/**
- * Smarty compiler exception class
- *
- * @package Smarty
- */
-class SmartyCompilerException extends SmartyException
-{
- public function __toString()
- {
- return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
- }
-
- /**
- * The line number of the template error
- *
- * @type int|null
- */
- public $line = null;
- /**
- * The template source snippet relating to the error
- *
- * @type string|null
- */
- public $source = null;
- /**
- * The raw text of the error message
- *
- * @type string|null
- */
- public $desc = null;
- /**
- * The resource identifier or template name
- *
- * @type string|null
- */
- public $template = null;
-}
diff --git a/library/Smarty/libs/sysplugins/smartyexception.php b/library/Smarty/libs/sysplugins/smartyexception.php
deleted file mode 100644
index 3da16c276..000000000
--- a/library/Smarty/libs/sysplugins/smartyexception.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Smarty exception class
- *
- * @package Smarty
- */
-class SmartyException extends Exception
-{
- public static $escape = false;
-
- public function __toString()
- {
- return ' --> Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- ';
- }
-}
diff --git a/library/bootstrap/css/bootstrap-grid.css b/library/bootstrap/css/bootstrap-grid.css
index b5f77b27c..5a71a41aa 100644
--- a/library/bootstrap/css/bootstrap-grid.css
+++ b/library/bootstrap/css/bootstrap-grid.css
@@ -1,3 +1,9 @@
+/*!
+ * Bootstrap Grid v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
@-ms-viewport {
width: device-width;
}
@@ -14,11 +20,11 @@ html {
}
.container {
- margin-right: auto;
- margin-left: auto;
+ width: 100%;
padding-right: 15px;
padding-left: 15px;
- width: 100%;
+ margin-right: auto;
+ margin-left: auto;
}
@media (min-width: 576px) {
@@ -47,18 +53,18 @@ html {
.container-fluid {
width: 100%;
- margin-right: auto;
- margin-left: auto;
padding-right: 15px;
padding-left: 15px;
- width: 100%;
+ margin-right: auto;
+ margin-left: auto;
}
.row {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
}
@@ -89,1265 +95,1956 @@ html {
.col {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+.order-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+}
+
+.order-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+}
+
+.order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+}
+
.order-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+}
+
+.offset-1 {
+ margin-left: 8.333333%;
+}
+
+.offset-2 {
+ margin-left: 16.666667%;
+}
+
+.offset-3 {
+ margin-left: 25%;
+}
+
+.offset-4 {
+ margin-left: 33.333333%;
+}
+
+.offset-5 {
+ margin-left: 41.666667%;
+}
+
+.offset-6 {
+ margin-left: 50%;
+}
+
+.offset-7 {
+ margin-left: 58.333333%;
+}
+
+.offset-8 {
+ margin-left: 66.666667%;
+}
+
+.offset-9 {
+ margin-left: 75%;
+}
+
+.offset-10 {
+ margin-left: 83.333333%;
+}
+
+.offset-11 {
+ margin-left: 91.666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-sm-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-sm-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-sm-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-sm-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-sm-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-sm-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-sm-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-sm-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-sm-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-sm-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-sm-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-sm-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-sm-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-sm-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-sm-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-sm-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-sm-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-sm-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-sm-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-sm-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-sm-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-sm-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-sm-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-sm-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-sm-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-sm-0 {
+ margin-left: 0;
+ }
+ .offset-sm-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.666667%;
}
}
@media (min-width: 768px) {
.col-md {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-md-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-md-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-md-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-md-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-md-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-md-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-md-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-md-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-md-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-md-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-md-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-md-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-md-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-md-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-md-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-md-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-md-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-md-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-md-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-md-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-md-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-md-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-md-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-md-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-md-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-md-0 {
+ margin-left: 0;
+ }
+ .offset-md-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.666667%;
}
}
@media (min-width: 992px) {
.col-lg {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-lg-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-lg-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-lg-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-lg-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-lg-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-lg-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-lg-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-lg-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-lg-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-lg-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-lg-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-lg-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-lg-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-lg-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-lg-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-lg-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-lg-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-lg-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-lg-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-lg-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-lg-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-lg-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-lg-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-lg-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-lg-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-lg-0 {
+ margin-left: 0;
+ }
+ .offset-lg-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-xl-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-xl-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-xl-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-xl-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-xl-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-xl-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-xl-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-xl-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-xl-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-xl-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-xl-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-xl-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-xl-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-xl-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-xl-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-xl-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-xl-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-xl-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-xl-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-xl-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-xl-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-xl-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-xl-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-xl-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-xl-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-xl-0 {
+ margin-left: 0;
+ }
+ .offset-xl-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.666667%;
+ }
+}
+
+.d-none {
+ display: none !important;
+}
+
+.d-inline {
+ display: inline !important;
+}
+
+.d-inline-block {
+ display: inline-block !important;
+}
+
+.d-block {
+ display: block !important;
+}
+
+.d-table {
+ display: table !important;
+}
+
+.d-table-row {
+ display: table-row !important;
+}
+
+.d-table-cell {
+ display: table-cell !important;
+}
+
+.d-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+}
+
+.d-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+}
+
+@media (min-width: 576px) {
+ .d-sm-none {
+ display: none !important;
+ }
+ .d-sm-inline {
+ display: inline !important;
+ }
+ .d-sm-inline-block {
+ display: inline-block !important;
+ }
+ .d-sm-block {
+ display: block !important;
+ }
+ .d-sm-table {
+ display: table !important;
+ }
+ .d-sm-table-row {
+ display: table-row !important;
+ }
+ .d-sm-table-cell {
+ display: table-cell !important;
+ }
+ .d-sm-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+ .d-sm-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .d-md-none {
+ display: none !important;
+ }
+ .d-md-inline {
+ display: inline !important;
+ }
+ .d-md-inline-block {
+ display: inline-block !important;
+ }
+ .d-md-block {
+ display: block !important;
+ }
+ .d-md-table {
+ display: table !important;
+ }
+ .d-md-table-row {
+ display: table-row !important;
+ }
+ .d-md-table-cell {
+ display: table-cell !important;
+ }
+ .d-md-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+ .d-md-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .d-lg-none {
+ display: none !important;
+ }
+ .d-lg-inline {
+ display: inline !important;
+ }
+ .d-lg-inline-block {
+ display: inline-block !important;
+ }
+ .d-lg-block {
+ display: block !important;
+ }
+ .d-lg-table {
+ display: table !important;
+ }
+ .d-lg-table-row {
+ display: table-row !important;
+ }
+ .d-lg-table-cell {
+ display: table-cell !important;
+ }
+ .d-lg-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+ .d-lg-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .d-xl-none {
+ display: none !important;
+ }
+ .d-xl-inline {
+ display: inline !important;
+ }
+ .d-xl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xl-block {
+ display: block !important;
+ }
+ .d-xl-table {
+ display: table !important;
+ }
+ .d-xl-table-row {
+ display: table-row !important;
+ }
+ .d-xl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xl-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+ .d-xl-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media print {
+ .d-print-none {
+ display: none !important;
+ }
+ .d-print-inline {
+ display: inline !important;
+ }
+ .d-print-inline-block {
+ display: inline-block !important;
+ }
+ .d-print-block {
+ display: block !important;
+ }
+ .d-print-table {
+ display: table !important;
+ }
+ .d-print-table-row {
+ display: table-row !important;
+ }
+ .d-print-table-cell {
+ display: table-cell !important;
+ }
+ .d-print-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+ .d-print-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
}
}
.flex-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
@media (min-width: 576px) {
.flex-sm-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-sm-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-sm-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-sm-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-sm-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-sm-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-sm-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-sm-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-sm-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-sm-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-sm-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-sm-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-sm-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-sm-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-sm-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-sm-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-sm-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-sm-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-sm-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-sm-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-sm-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-sm-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-sm-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-sm-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-sm-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-sm-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-sm-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-sm-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-sm-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@media (min-width: 768px) {
.flex-md-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-md-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-md-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-md-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-md-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-md-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-md-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-md-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-md-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-md-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-md-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-md-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-md-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-md-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-md-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-md-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-md-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-md-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-md-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-md-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-md-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-md-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-md-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-md-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-md-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-md-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-md-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-md-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-md-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@media (min-width: 992px) {
.flex-lg-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-lg-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-lg-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-lg-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-lg-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-lg-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-lg-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-lg-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-lg-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-lg-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-lg-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-lg-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-lg-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-lg-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-lg-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-lg-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-lg-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-lg-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-lg-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-lg-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-lg-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-lg-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-lg-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-lg-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-lg-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-lg-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-lg-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-lg-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-lg-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@media (min-width: 1200px) {
.flex-xl-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-xl-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-xl-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-xl-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-xl-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-xl-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-xl-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-xl-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-xl-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-xl-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-xl-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-xl-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-xl-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-xl-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-xl-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-xl-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-xl-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-xl-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-xl-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-xl-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-xl-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-xl-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-xl-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-xl-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-xl-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-xl-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-xl-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-xl-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-xl-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap-grid.css.map b/library/bootstrap/css/bootstrap-grid.css.map
index a5145bdb0..c62a598a4 100644
--- a/library/bootstrap/css/bootstrap-grid.css.map
+++ b/library/bootstrap/css/bootstrap-grid.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAUE;EAAgB,oBAAmB;CCRpC;;ADWD;EACE,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,oBAAmB;CACpB;;AEjBC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,oBAAuC;EACvC,mBAAuC;EACvC,YAAW;CDDV;;AEgDC;EFnDF;ICYI,iBE8KK;GHvLR;CDmBF;;AG6BG;EFnDF;ICYI,iBE+KK;GHxLR;CDyBF;;AGuBG;EFnDF;ICYI,iBEgLK;GHzLR;CD+BF;;AGiBG;EFnDF;ICYI,kBEiLM;GH1LT;CDqCF;;AC5BC;EACE,YAAW;ECbb,mBAAkB;EAClB,kBAAiB;EACjB,oBAAuC;EACvC,mBAAuC;EACvC,YAAW;CDWV;;AAQD;ECLA,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,oBAAuC;EACvC,mBAAuC;CDItC;;AAID;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iBAAgB;EAChB,gBAAe;CAChB;;AInCH;;;;;;EACE,mBAAkB;EAClB,YAAW;EACX,gBAAe;EACf,oBAA4B;EAC5B,mBAA4B;CAC7B;;AAkBG;EACE,2BAAa;MAAb,cAAa;EACb,qBAAY;MAAZ,aAAY;EACZ,gBAAe;CAChB;;AACD;EACE,mBAAc;MAAd,eAAc;EACd,YAAW;EACX,gBAAe;CAChB;;AAGC;EHFN,wBAAsC;MAAtC,oBAAsC;EAItC,qBAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,kBAAsC;MAAtC,cAAsC;EAItC,eAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,kBAAsC;MAAtC,cAAsC;EAItC,eAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,kBAAsC;MAAtC,cAAsC;EAItC,eAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,mBAAsC;MAAtC,eAAsC;EAItC,gBAAuC;CGAhC;;AAID;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,mBAFU;MAEV,UAFU;CAGX;;AAFD;EACE,mBAFU;MAEV,UAFU;CAGX;;AAFD;EACE,mBAFU;MAEV,UAFU;CAGX;;AFKL;EEzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;CL2PR;;AGtPG;EEzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;CL4VR;;AGvVG;EEzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;CL6bR;;AGxbG;EEzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;CL8hBR;;AMzkBG;EAAgC,mCAA8B;MAA9B,+BAA8B;CAAK;;AACnE;EAAgC,sCAAiC;MAAjC,kCAAiC;CAAK;;AACtE;EAAgC,2CAAsC;MAAtC,uCAAsC;CAAK;;AAC3E;EAAgC,8CAAyC;MAAzC,0CAAyC;CAAK;;AAE9E;EAA8B,+BAA0B;MAA1B,2BAA0B;CAAK;;AAC7D;EAA8B,iCAA4B;MAA5B,6BAA4B;CAAK;;AAC/D;EAA8B,uCAAkC;MAAlC,mCAAkC;CAAK;;AAErE;EAAoC,gCAAsC;MAAtC,uCAAsC;CAAK;;AAC/E;EAAoC,8BAAoC;MAApC,qCAAoC;CAAK;;AAC7E;EAAoC,iCAAkC;MAAlC,mCAAkC;CAAK;;AAC3E;EAAoC,kCAAyC;MAAzC,0CAAyC;CAAK;;AAClF;EAAoC,qCAAwC;MAAxC,yCAAwC;CAAK;;AAEjF;EAAiC,iCAAkC;MAAlC,mCAAkC;CAAK;;AACxE;EAAiC,+BAAgC;MAAhC,iCAAgC;CAAK;;AACtE;EAAiC,kCAA8B;MAA9B,+BAA8B;CAAK;;AACpE;EAAiC,oCAAgC;MAAhC,iCAAgC;CAAK;;AACtE;EAAiC,mCAA+B;MAA/B,gCAA+B;CAAK;;AAErE;EAAkC,qCAAoC;MAApC,qCAAoC;CAAK;;AAC3E;EAAkC,mCAAkC;MAAlC,mCAAkC;CAAK;;AACzE;EAAkC,sCAAgC;MAAhC,iCAAgC;CAAK;;AACvE;EAAkC,uCAAuC;MAAvC,wCAAuC;CAAK;;AAC9E;EAAkC,0CAAsC;MAAtC,uCAAsC;CAAK;;AAC7E;EAAkC,uCAAiC;MAAjC,kCAAiC;CAAK;;AAExE;EAAgC,qCAA2B;MAA3B,4BAA2B;CAAK;;AAChE;EAAgC,sCAAiC;MAAjC,kCAAiC;CAAK;;AACtE;EAAgC,oCAA+B;MAA/B,gCAA+B;CAAK;;AACpE;EAAgC,uCAA6B;MAA7B,8BAA6B;CAAK;;AAClE;EAAgC,yCAA+B;MAA/B,gCAA+B;CAAK;;AACpE;EAAgC,wCAA8B;MAA9B,+BAA8B;CAAK;;AHenE;EGhDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CNsvBtE;;AGvuBG;EGhDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CNg1BtE;;AGj0BG;EGhDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CN06BtE;;AG35BG;EGhDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CNogCtE","file":"bootstrap-grid.css","sourcesContent":["// Bootstrap Grid only\n//\n// Includes relevant variables and mixins for the flexbox grid\n// system, as well as the generated predefined classes (e.g., `.col-sm-4`).\n\n//\n// Box sizing, responsive, and more\n//\n\n@at-root {\n @-ms-viewport { width: device-width; }\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"functions\";\n@import \"variables\";\n\n//\n// Grid mixins\n//\n\n@import \"mixins/breakpoints\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n\n@import \"grid\";\n@import \"utilities/flex\";\n","@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n width: 100%;\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n margin-right: auto;\n margin-left: auto;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n width: 100%;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.1.\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name)\n } @else if $min == null {\n @include media-breakpoint-down($name)\n }\n}\n","// Variables\n//\n// Copy settings from this file into the provided `_custom.scss` to override\n// the Bootstrap defaults without modifying key, versioned files.\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Table of Contents\n//\n// Color system\n// Options\n// Spacing\n// Body\n// Links\n// Grid breakpoints\n// Grid containers\n// Grid columns\n// Fonts\n// Components\n// Tables\n// Buttons\n// Forms\n// Dropdowns\n// Z-index master list\n// Navs\n// Navbar\n// Pagination\n// Jumbotron\n// Form states and alerts\n// Cards\n// Tooltips\n// Popovers\n// Badges\n// Modals\n// Alerts\n// Progress bars\n// List group\n// Image thumbnails\n// Figures\n// Breadcrumbs\n// Carousel\n// Close\n// Code\n\n\n//\n// Color system\n//\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #868e96 !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: (\n 100: $gray-100,\n 200: $gray-200,\n 300: $gray-300,\n 400: $gray-400,\n 500: $gray-500,\n 600: $gray-600,\n 700: $gray-700,\n 800: $gray-800,\n 900: $gray-900\n) !default;\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: (\n blue: $blue,\n indigo: $indigo,\n purple: $purple,\n pink: $pink,\n red: $red,\n orange: $orange,\n yellow: $yellow,\n green: $green,\n teal: $teal,\n cyan: $cyan,\n white: $white,\n gray: $gray-600,\n gray-dark: $gray-800\n) !default;\n\n$theme-colors: (\n primary: $blue,\n secondary: $gray-600,\n success: $green,\n info: $cyan,\n warning: $yellow,\n danger: $red,\n light: $gray-100,\n dark: $gray-800\n) !default;\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-hover-media-query: false !default;\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n) !default;\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n) !default;\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$font-family-monospace: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: 1.25rem !default;\n$font-size-sm: .875rem !default;\n\n$font-weight-normal: normal !default;\n$font-weight-bold: bold !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: 2.5rem !default;\n$h2-font-size: 2rem !default;\n$h3-font-size: 1.75rem !default;\n$h4-font-size: 1.5rem !default;\n$h5-font-size: 1.25rem !default;\n$h6-font-size: 1rem !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.1 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: 1.25rem !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black,.1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black,.25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: 5px !default;\n\n$mark-bg: #fcf8e3 !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black,.05) !default;\n$table-hover-bg: rgba($black,.075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-200 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-inverse-bg: $gray-900 !default;\n$table-inverse-accent-bg: rgba($white, .05) !default;\n$table-inverse-hover-bg: rgba($white, .075) !default;\n$table-inverse-border-color: lighten($gray-900, 7.5%) !default;\n$table-inverse-color: $body-bg !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background and border color.\n\n$input-btn-padding-y: .5rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: 1.25 !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: 1.5 !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: 1.5 !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white,.15), 0 1px 1px rgba($black,.075) !default;\n$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color(\"primary\"), .25) !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black,.125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: all .15s ease-in-out !default;\n\n\n// Forms\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: rgba($black,.15) !default;\n$input-btn-border-width: $border-width !default; // For form controls and buttons\n$input-box-shadow: inset 0 1px 1px rgba($black,.075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten(theme-color(\"primary\"), 25%) !default;\n$input-focus-box-shadow: $input-box-shadow, $btn-focus-box-shadow !default;\n$input-focus-color: $input-color !default;\n\n$input-placeholder-color: $gray-600 !default;\n\n$input-height-border: $input-btn-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-sm * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-margin-bottom: .5rem !default;\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .25rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-y: .25rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: #ddd !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-description-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $white !default;\n$custom-control-indicator-checked-bg: theme-color(\"primary\") !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px theme-color(\"primary\") !default;\n\n$custom-control-indicator-active-color: $white !default;\n$custom-control-indicator-active-bg: lighten(theme-color(\"primary\"), 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: theme-color(\"primary\") !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: #333 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: lighten(theme-color(\"primary\"), 25%) !default;\n$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-file-height: 2.5rem !default;\n$custom-file-width: 14rem !default;\n$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem theme-color(\"primary\") !default;\n\n$custom-file-padding-y: 1rem !default;\n$custom-file-padding-x: .5rem !default;\n$custom-file-line-height: 1.5 !default;\n$custom-file-color: $gray-700 !default;\n$custom-file-bg: $white !default;\n$custom-file-border-width: $border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $border-radius !default;\n$custom-file-box-shadow: inset 0 .2rem .4rem rgba($black,.05) !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $gray-200 !default;\n$custom-file-text: (\n placeholder: (\n en: \"Choose file...\"\n ),\n button-label: (\n en: \"Browse\"\n )\n) !default;\n\n\n// Form validation\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black,.15) !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black,.175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: #ddd !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: #ddd !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-padding-y: ($navbar-brand-height - $nav-link-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white,.5) !default;\n$navbar-dark-hover-color: rgba($white,.75) !default;\n$navbar-dark-active-color: rgba($white,1) !default;\n$navbar-dark-disabled-color: rgba($white,.25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white,.1) !default;\n\n$navbar-light-color: rgba($black,.5) !default;\n$navbar-light-hover-color: rgba($black,.7) !default;\n$navbar-light-active-color: rgba($black,.9) !default;\n$navbar-light-disabled-color: rgba($black,.3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black,.1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: #ddd !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: #ddd !default;\n\n$pagination-active-color: $white !default;\n$pagination-active-bg: theme-color(\"primary\") !default;\n$pagination-active-border-color: theme-color(\"primary\") !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: #ddd !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: 1px !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black,.125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-deck-margin: ($grid-gutter-width / 2) !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: 3px !default;\n$tooltip-padding-x: 8px !default;\n$tooltip-margin: 0 !default;\n\n\n$tooltip-arrow-width: 5px !default;\n$tooltip-arrow-height: 5px !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n\n// Popovers\n\n$popover-inner-padding: 1px !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black,.2) !default;\n$popover-box-shadow: 0 5px 10px rgba($black,.2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: 8px !default;\n$popover-header-padding-x: 14px !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: 9px !default;\n$popover-body-padding-x: 14px !default;\n\n$popover-arrow-width: 10px !default;\n$popover-arrow-height: 5px !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-width: ($popover-arrow-width + 1px) !default;\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-color: $white !default;\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 15px !default;\n\n$modal-dialog-margin: 10px !default;\n$modal-dialog-margin-y-sm-up: 30px !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black,.2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 3px 9px rgba($black,.5) !default;\n$modal-content-box-shadow-sm-up: 0 5px 15px rgba($black,.5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 15px !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: .75rem !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black,.1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black,.125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: #ddd !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black,.075) !default;\n$thumbnail-transition: all .2s ease-in-out !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 90% !default;\n$code-padding-y: .2rem !default;\n$code-padding-x: .4rem !default;\n$code-color: #bd4147 !default;\n$code-bg: $gray-100 !default;\n\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n @for $i from 1 through $columns {\n .order#{$infix}-#{$i} {\n order: $i;\n }\n }\n }\n }\n}\n","// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGD;EAAgB,oBAAmB;CCApC;;ADGD;EACE,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,oBAAmB;CACpB;;AEfC;ECAA,YAAW;EACX,oBAAuC;EACvC,mBAAsC;EACtC,mBAAkB;EAClB,kBAAiB;CDDhB;;AEoDC;EFvDF;ICYI,iBEsKK;GH/KR;CDyBF;;AG2BG;EFvDF;ICYI,iBEuKK;GHhLR;CD+BF;;AGqBG;EFvDF;ICYI,iBEwKK;GHjLR;CDqCF;;AGeG;EFvDF;ICYI,kBEyKM;GHlLT;CD2CF;;AClCC;ECZA,YAAW;EACX,oBAAuC;EACvC,mBAAsC;EACtC,mBAAkB;EAClB,kBAAiB;CDUhB;;AAQD;ECJA,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,oBAAuC;EACvC,mBAAsC;CDGrC;;AAID;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iBAAgB;EAChB,gBAAe;CAChB;;AIlCH;;;;;;EACE,mBAAkB;EAClB,YAAW;EACX,gBAAe;EACf,oBAA4B;EAC5B,mBAA2B;CAC5B;;AAkBG;EACE,2BAAa;EAAb,cAAa;EACb,oBAAY;EAAZ,qBAAY;EAAZ,aAAY;EACZ,gBAAe;CAChB;;AACD;EACE,oBAAc;EAAd,mBAAc;EAAd,eAAc;EACd,YAAW;EACX,gBAAe;CAChB;;AAGC;EHFN,oBAAsC;EAAtC,wBAAsC;EAAtC,oBAAsC;EAItC,qBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,kBAAsC;EAAtC,cAAsC;EAItC,eAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,kBAAsC;EAAtC,cAAsC;EAItC,eAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,kBAAsC;EAAtC,cAAsC;EAItC,eAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CGAhC;;AAFD;EHFN,oBAAsC;EAAtC,mBAAsC;EAAtC,eAAsC;EAItC,gBAAuC;CGAhC;;AAGH;EAAwB,6BAAS;EAAT,mBAAS;EAAT,UAAS;CAAK;;AAEtC;EAAuB,8BAAmB;EAAnB,mBAAmB;EAAnB,UAAmB;CAAI;;AAG5C;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,mBADZ;EACY,UADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,mBADZ;EACY,UADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,mBADZ;EACY,UADZ;CACyB;;AAMnC;EHTR,uBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AAFD;EHTR,iBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AAFD;EHTR,iBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AAFD;EHTR,iBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AAFD;EHTR,wBAA8C;CGWrC;;AFDP;EE7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IHTR,eAA4B;GGWnB;EAFD;IHTR,uBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;CL2VV;;AG5VG;EE7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IHTR,eAA4B;GGWnB;EAFD;IHTR,uBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;CLyeV;;AG1eG;EE7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IHTR,eAA4B;GGWnB;EAFD;IHTR,uBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;CLunBV;;AGxnBG;EE7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IHFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GGAhC;EAFD;IHFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GGAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IHTR,eAA4B;GGWnB;EAFD;IHTR,uBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,iBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;EAFD;IHTR,wBAA8C;GGWrC;CLqwBV;;AMxzBG;EAA2B,yBAAwB;CAAK;;AACxD;EAA2B,2BAA0B;CAAK;;AAC1D;EAA2B,iCAAgC;CAAK;;AAChE;EAA2B,0BAAyB;CAAK;;AACzD;EAA2B,0BAAyB;CAAK;;AACzD;EAA2B,8BAA6B;CAAK;;AAC7D;EAA2B,+BAA8B;CAAK;;AAC9D;EAA2B,gCAAwB;EAAxB,gCAAwB;EAAxB,yBAAwB;CAAK;;AACxD;EAA2B,uCAA+B;EAA/B,uCAA+B;EAA/B,gCAA+B;CAAK;;AH0C/D;EGlDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CNk3BlE;;AGx0BG;EGlDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CNg5BlE;;AGt2BG;EGlDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CN86BlE;;AGp4BG;EGlDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CN48BlE;;AMn8BD;EACE;IAAwB,yBAAwB;GAAK;EACrD;IAAwB,2BAA0B;GAAK;EACvD;IAAwB,iCAAgC;GAAK;EAC7D;IAAwB,0BAAyB;GAAK;EACtD;IAAwB,0BAAyB;GAAK;EACtD;IAAwB,8BAA6B;GAAK;EAC1D;IAAwB,+BAA8B;GAAK;EAC3D;IAAwB,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACrD;IAAwB,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CNw9B7D;;AOl/BG;EAAgC,0CAA8B;EAA9B,yCAA8B;EAA9B,mCAA8B;EAA9B,+BAA8B;CAAK;;AACnE;EAAgC,wCAAiC;EAAjC,yCAAiC;EAAjC,sCAAiC;EAAjC,kCAAiC;CAAK;;AACtE;EAAgC,0CAAsC;EAAtC,0CAAsC;EAAtC,2CAAsC;EAAtC,uCAAsC;CAAK;;AAC3E;EAAgC,wCAAyC;EAAzC,0CAAyC;EAAzC,8CAAyC;EAAzC,0CAAyC;CAAK;;AAE9E;EAA8B,+BAA0B;EAA1B,2BAA0B;CAAK;;AAC7D;EAA8B,iCAA4B;EAA5B,6BAA4B;CAAK;;AAC/D;EAA8B,uCAAkC;EAAlC,mCAAkC;CAAK;;AAErE;EAAoC,mCAAsC;EAAtC,gCAAsC;EAAtC,uCAAsC;CAAK;;AAC/E;EAAoC,iCAAoC;EAApC,8BAAoC;EAApC,qCAAoC;CAAK;;AAC7E;EAAoC,oCAAkC;EAAlC,iCAAkC;EAAlC,mCAAkC;CAAK;;AAC3E;EAAoC,qCAAyC;EAAzC,kCAAyC;EAAzC,0CAAyC;CAAK;;AAClF;EAAoC,qCAAwC;EAAxC,yCAAwC;CAAK;;AAEjF;EAAiC,oCAAkC;EAAlC,iCAAkC;EAAlC,mCAAkC;CAAK;;AACxE;EAAiC,kCAAgC;EAAhC,+BAAgC;EAAhC,iCAAgC;CAAK;;AACtE;EAAiC,qCAA8B;EAA9B,kCAA8B;EAA9B,+BAA8B;CAAK;;AACpE;EAAiC,uCAAgC;EAAhC,oCAAgC;EAAhC,iCAAgC;CAAK;;AACtE;EAAiC,sCAA+B;EAA/B,mCAA+B;EAA/B,gCAA+B;CAAK;;AAErE;EAAkC,qCAAoC;EAApC,qCAAoC;CAAK;;AAC3E;EAAkC,mCAAkC;EAAlC,mCAAkC;CAAK;;AACzE;EAAkC,sCAAgC;EAAhC,iCAAgC;CAAK;;AACvE;EAAkC,uCAAuC;EAAvC,wCAAuC;CAAK;;AAC9E;EAAkC,0CAAsC;EAAtC,uCAAsC;CAAK;;AAC7E;EAAkC,uCAAiC;EAAjC,kCAAiC;CAAK;;AAExE;EAAgC,qCAA2B;EAA3B,4BAA2B;CAAK;;AAChE;EAAgC,sCAAiC;EAAjC,kCAAiC;CAAK;;AACtE;EAAgC,oCAA+B;EAA/B,gCAA+B;CAAK;;AACpE;EAAgC,uCAA6B;EAA7B,8BAA6B;CAAK;;AAClE;EAAgC,yCAA+B;EAA/B,gCAA+B;CAAK;;AACpE;EAAgC,wCAA8B;EAA9B,+BAA8B;CAAK;;AJiBnE;EIlDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CP+pCtE;;AG9oCG;EIlDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CPyvCtE;;AGxuCG;EIlDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CPm1CtE;;AGl0CG;EIlDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CP66CtE","file":"bootstrap-grid.css","sourcesContent":["/*!\n * Bootstrap Grid v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@at-root {\n @-ms-viewport { width: device-width; } // stylelint-disable-line at-rule-no-vendor-prefix\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/breakpoints\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n\n@import \"grid\";\n@import \"utilities/display\";\n@import \"utilities/flex\";\n","/*!\n * Bootstrap Grid v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n width: 100%;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: ($font-size-base * 1.25) !default;\n$font-size-sm: ($font-size-base * .875) !default;\n\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: ($font-size-base * 1.25) !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-300 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-bg: $gray-900 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($gray-900, 7.5%) !default;\n$table-dark-color: $body-bg !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $gray-300 !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-font-size-lg: 125% !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$custom-file-padding-y: $input-btn-padding-y !default;\n$custom-file-padding-x: $input-btn-padding-x !default;\n$custom-file-line-height: $input-btn-line-height !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-btn-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: ($grid-gutter-width / 2) !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 1rem !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: ($font-size-base * .75) !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Printing\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .d#{$infix}-none { display: none !important; }\n .d#{$infix}-inline { display: inline !important; }\n .d#{$infix}-inline-block { display: inline-block !important; }\n .d#{$infix}-block { display: block !important; }\n .d#{$infix}-table { display: table !important; }\n .d#{$infix}-table-row { display: table-row !important; }\n .d#{$infix}-table-cell { display: table-cell !important; }\n .d#{$infix}-flex { display: flex !important; }\n .d#{$infix}-inline-flex { display: inline-flex !important; }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n@media print {\n .d-print-none { display: none !important; }\n .d-print-inline { display: inline !important; }\n .d-print-inline-block { display: inline-block !important; }\n .d-print-block { display: block !important; }\n .d-print-table { display: table !important; }\n .d-print-table-row { display: table-row !important; }\n .d-print-table-cell { display: table-cell !important; }\n .d-print-flex { display: flex !important; }\n .d-print-inline-flex { display: inline-flex !important; }\n}\n","// stylelint-disable declaration-no-important\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap-grid.min.css b/library/bootstrap/css/bootstrap-grid.min.css
index b775555cc..ea073e98a 100644
--- a/library/bootstrap/css/bootstrap-grid.min.css
+++ b/library/bootstrap/css/bootstrap-grid.min.css
@@ -1,2 +1,7 @@
-@-ms-viewport{width:device-width}html{box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{box-sizing:inherit}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}
+/*!
+ * Bootstrap Grid v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */@-ms-viewport{width:device-width}html{box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{box-sizing:inherit}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}
/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap-grid.min.css.map b/library/bootstrap/css/bootstrap-grid.min.css.map
index 5e16e09e5..ed4a87d42 100644
--- a/library/bootstrap/css/bootstrap-grid.min.css.map
+++ b/library/bootstrap/css/bootstrap-grid.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap-grid.scss","dist/css/bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAUE,cAAgB,MAAA,aAGlB,KACE,WAAA,WACA,mBAAA,UAGF,ECPA,QADA,SDWE,WAAA,QEhBA,WCAA,aAAA,KACA,YAAA,KACA,cAAA,KACA,aAAA,KACA,MAAA,KC+CE,yBFnDF,WCYI,UAAA,OCuCF,yBFnDF,WCYI,UAAA,OCuCF,yBFnDF,WCYI,UAAA,OCuCF,0BFnDF,WCYI,UAAA,QDAJ,iBACE,MAAA,KCbF,aAAA,KACA,YAAA,KACA,cAAA,KACA,aAAA,KACA,MAAA,KDmBA,KCLA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,MACA,YAAA,MDQA,YACE,aAAA,EACA,YAAA,EAFF,iBDqCF,0BC/BM,cAAA,EACA,aAAA,EGlCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJsEF,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aIzEI,SAAA,SACA,MAAA,KACA,WAAA,IACA,cAAA,KACA,aAAA,KAmBE,KACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,OFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,QFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,UACE,eAAA,GAAA,MAAA,GADF,UACE,eAAA,GAAA,MAAA,GADF,UACE,eAAA,GAAA,MAAA,GDMN,yBCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IDMN,yBCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IDMN,yBCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IDMN,0BCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IC1CN,UAAgC,mBAAA,cAAA,eAAA,cAChC,aAAgC,mBAAA,iBAAA,eAAA,iBAChC,kBAAgC,mBAAA,sBAAA,eAAA,sBAChC,qBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,WAA8B,cAAA,eAAA,UAAA,eAC9B,aAA8B,cAAA,iBAAA,UAAA,iBAC9B,mBAA8B,cAAA,uBAAA,UAAA,uBAE9B,uBAAoC,cAAA,gBAAA,gBAAA,qBACpC,qBAAoC,cAAA,cAAA,gBAAA,mBACpC,wBAAoC,cAAA,iBAAA,gBAAA,iBACpC,yBAAoC,cAAA,kBAAA,gBAAA,wBACpC,wBAAoC,cAAA,qBAAA,gBAAA,uBAEpC,mBAAiC,eAAA,gBAAA,YAAA,qBACjC,iBAAiC,eAAA,cAAA,YAAA,mBACjC,oBAAiC,eAAA,iBAAA,YAAA,iBACjC,sBAAiC,eAAA,mBAAA,YAAA,mBACjC,qBAAiC,eAAA,kBAAA,YAAA,kBAEjC,qBAAkC,mBAAA,gBAAA,cAAA,qBAClC,mBAAkC,mBAAA,cAAA,cAAA,mBAClC,sBAAkC,mBAAA,iBAAA,cAAA,iBAClC,uBAAkC,mBAAA,kBAAA,cAAA,wBAClC,sBAAkC,mBAAA,qBAAA,cAAA,uBAClC,uBAAkC,mBAAA,kBAAA,cAAA,kBAElC,iBAAgC,oBAAA,eAAA,WAAA,eAChC,kBAAgC,oBAAA,gBAAA,WAAA,qBAChC,gBAAgC,oBAAA,cAAA,WAAA,mBAChC,mBAAgC,oBAAA,iBAAA,WAAA,iBAChC,qBAAgC,oBAAA,mBAAA,WAAA,mBAChC,oBAAgC,oBAAA,kBAAA,WAAA,kBFehC,yBEhDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBFehC,yBEhDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBFehC,yBEhDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBFehC,0BEhDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA","sourcesContent":["// Bootstrap Grid only\n//\n// Includes relevant variables and mixins for the flexbox grid\n// system, as well as the generated predefined classes (e.g., `.col-sm-4`).\n\n//\n// Box sizing, responsive, and more\n//\n\n@at-root {\n @-ms-viewport { width: device-width; }\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"functions\";\n@import \"variables\";\n\n//\n// Grid mixins\n//\n\n@import \"mixins/breakpoints\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n\n@import \"grid\";\n@import \"utilities/flex\";\n","@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n.row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-1 {\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -ms-flex-order: 12;\n order: 12;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n.flex-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n width: 100%;\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n margin-right: auto;\n margin-left: auto;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n width: 100%;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.1.\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name)\n } @else if $min == null {\n @include media-breakpoint-down($name)\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n @for $i from 1 through $columns {\n .order#{$infix}-#{$i} {\n order: $i;\n }\n }\n }\n }\n}\n","// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap-grid.scss","dist/css/bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAAA;;;;;AAQE,cAAgB,MAAA,aAGlB,KACE,WAAA,WACA,mBAAA,UAGF,ECCA,QADA,SDGE,WAAA,QEdA,WCAA,MAAA,KACA,cAAA,KACA,aAAA,KACA,aAAA,KACA,YAAA,KCmDE,yBFvDF,WCYI,UAAA,OC2CF,yBFvDF,WCYI,UAAA,OC2CF,yBFvDF,WCYI,UAAA,OC2CF,0BFvDF,WCYI,UAAA,QDAJ,iBCZA,MAAA,KACA,cAAA,KACA,aAAA,KACA,aAAA,KACA,YAAA,KDkBA,KCJA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,MACA,YAAA,MDOA,YACE,aAAA,EACA,YAAA,EAFF,iBD4CF,0BCtCM,cAAA,EACA,aAAA,EGjCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJ4EF,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aI/EI,SAAA,SACA,MAAA,KACA,WAAA,IACA,cAAA,KACA,aAAA,KAmBE,KACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,QFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,aAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,YAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,UAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,UAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,UAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,UFTR,YAAA,UESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,UFTR,YAAA,WESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,UFTR,YAAA,WESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,WFTR,YAAA,WESQ,WFTR,YAAA,WCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,0BC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YGxCE,QAA2B,QAAA,eAC3B,UAA2B,QAAA,iBAC3B,gBAA2B,QAAA,uBAC3B,SAA2B,QAAA,gBAC3B,SAA2B,QAAA,gBAC3B,aAA2B,QAAA,oBAC3B,cAA2B,QAAA,qBAC3B,QAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,eAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,sBF0C3B,yBElDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBF0C3B,yBElDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBF0C3B,yBElDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBF0C3B,0BElDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBAS/B,aACE,cAAwB,QAAA,eACxB,gBAAwB,QAAA,iBACxB,sBAAwB,QAAA,uBACxB,eAAwB,QAAA,gBACxB,eAAwB,QAAA,gBACxB,mBAAwB,QAAA,oBACxB,oBAAwB,QAAA,qBACxB,cAAwB,QAAA,sBAAA,QAAA,sBAAA,QAAA,eACxB,qBAAwB,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBC1BtB,UAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,aAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,kBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,qBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,WAA8B,cAAA,eAAA,UAAA,eAC9B,aAA8B,cAAA,iBAAA,UAAA,iBAC9B,mBAA8B,cAAA,uBAAA,UAAA,uBAE9B,uBAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,qBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,wBAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,yBAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,wBAAoC,cAAA,qBAAA,gBAAA,uBAEpC,mBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,iBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,oBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,sBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,qBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,qBAAkC,mBAAA,gBAAA,cAAA,qBAClC,mBAAkC,mBAAA,cAAA,cAAA,mBAClC,sBAAkC,mBAAA,iBAAA,cAAA,iBAClC,uBAAkC,mBAAA,kBAAA,cAAA,wBAClC,sBAAkC,mBAAA,qBAAA,cAAA,uBAClC,uBAAkC,mBAAA,kBAAA,cAAA,kBAElC,iBAAgC,oBAAA,eAAA,WAAA,eAChC,kBAAgC,oBAAA,gBAAA,WAAA,qBAChC,gBAAgC,oBAAA,cAAA,WAAA,mBAChC,mBAAgC,oBAAA,iBAAA,WAAA,iBAChC,qBAAgC,oBAAA,mBAAA,WAAA,mBAChC,oBAAgC,oBAAA,kBAAA,WAAA,kBHiBhC,yBGlDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBHiBhC,yBGlDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBHiBhC,yBGlDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBHiBhC,0BGlDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA","sourcesContent":["/*!\n * Bootstrap Grid v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@at-root {\n @-ms-viewport { width: device-width; } // stylelint-disable-line at-rule-no-vendor-prefix\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/breakpoints\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n\n@import \"grid\";\n@import \"utilities/display\";\n@import \"utilities/flex\";\n","/*!\n * Bootstrap Grid v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n}\n\n.order-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n}\n\n.order-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n}\n\n.order-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-sm-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-sm-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-sm-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-md-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-md-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-md-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-lg-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-lg-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-lg-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-xl-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-xl-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-xl-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.d-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-print-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n.flex-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n width: 100%;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .d#{$infix}-none { display: none !important; }\n .d#{$infix}-inline { display: inline !important; }\n .d#{$infix}-inline-block { display: inline-block !important; }\n .d#{$infix}-block { display: block !important; }\n .d#{$infix}-table { display: table !important; }\n .d#{$infix}-table-row { display: table-row !important; }\n .d#{$infix}-table-cell { display: table-cell !important; }\n .d#{$infix}-flex { display: flex !important; }\n .d#{$infix}-inline-flex { display: inline-flex !important; }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n@media print {\n .d-print-none { display: none !important; }\n .d-print-inline { display: inline !important; }\n .d-print-inline-block { display: inline-block !important; }\n .d-print-block { display: block !important; }\n .d-print-table { display: table !important; }\n .d-print-table-row { display: table-row !important; }\n .d-print-table-cell { display: table-cell !important; }\n .d-print-flex { display: flex !important; }\n .d-print-inline-flex { display: inline-flex !important; }\n}\n","// stylelint-disable declaration-no-important\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap-reboot.css b/library/bootstrap/css/bootstrap-reboot.css
index 867ee1771..5a75a62b6 100644
--- a/library/bootstrap/css/bootstrap-reboot.css
+++ b/library/bootstrap/css/bootstrap-reboot.css
@@ -1,5 +1,17 @@
-html {
+/*!
+ * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+*,
+*::before,
+*::after {
box-sizing: border-box;
+}
+
+html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
@@ -8,12 +20,6 @@ html {
-webkit-tap-highlight-color: transparent;
}
-*,
-*::before,
-*::after {
- box-sizing: inherit;
-}
-
@-ms-viewport {
width: device-width;
}
@@ -24,16 +30,17 @@ article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, s
body {
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
- font-weight: normal;
+ font-weight: 400;
line-height: 1.5;
color: #212529;
+ text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
- outline: none !important;
+ outline: 0 !important;
}
hr {
@@ -44,7 +51,7 @@ hr {
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
- margin-bottom: .5rem;
+ margin-bottom: 0.5rem;
}
p {
@@ -56,7 +63,7 @@ abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
- text-decoration: underline dotted;
+ text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
@@ -82,7 +89,7 @@ ul ol {
}
dt {
- font-weight: bold;
+ font-weight: 700;
}
dd {
@@ -140,7 +147,7 @@ a:not([href]):not([tabindex]) {
text-decoration: none;
}
-a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
+a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
@@ -161,6 +168,7 @@ pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
+ -ms-overflow-style: scrollbar;
}
figure {
@@ -176,19 +184,6 @@ svg:not(:root) {
overflow: hidden;
}
-a,
-area,
-button,
-[role="button"],
-input,
-label,
-select,
-summary,
-textarea {
- -ms-touch-action: manipulation;
- touch-action: manipulation;
-}
-
table {
border-collapse: collapse;
}
@@ -196,13 +191,13 @@ table {
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
- color: #868e96;
+ color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
- text-align: left;
+ text-align: inherit;
}
label {
@@ -210,6 +205,10 @@ label {
margin-bottom: .5rem;
}
+button {
+ border-radius: 0;
+}
+
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
@@ -318,6 +317,7 @@ output {
summary {
display: list-item;
+ cursor: pointer;
}
template {
diff --git a/library/bootstrap/css/bootstrap-reboot.css.map b/library/bootstrap/css/bootstrap-reboot.css.map
index 425ac48c7..3f1840671 100644
--- a/library/bootstrap/css/bootstrap-reboot.css.map
+++ b/library/bootstrap/css/bootstrap-reboot.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA;EACE,uBAAsB;EACtB,wBAAuB;EACvB,kBAAiB;EACjB,+BAA8B;EAC9B,2BAA0B;EAC1B,8BAA6B;EAC7B,yCAA0C;CAC3C;;AAED;;;EAGE,oBAAmB;CACpB;;AAIC;EAAgB,oBAAmB;CCpBpC;;ADwBD;EACE,eAAc;CACf;;AAOD;EACE,UAAS;EACT,wGEoLiH;EFnLjH,gBEuLmB;EFtLnB,oBE0LyB;EFzLzB,iBE6LoB;EF5LpB,eEEgB;EFDhB,uBERW;CFSZ;;ACzBD;EDiCE,yBAAwB;CACzB;;AAQD;EACE,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAWD;EACE,cAAa;EACb,qBAAoB;CACrB;;AAMD;EACE,cAAa;EACb,oBAAmB;CACpB;;AASD;;EAEE,2BAA0B;EAC1B,0CAAiC;UAAjC,kCAAiC;EACjC,aAAY;EACZ,iBAAgB;CACjB;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,kBEqGqB;CFpGtB;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAED;EACE,mBAAkB;CACnB;;AAED;;EAEE,oBAAmB;CACpB;;AAED;EACE,eAAc;CACf;;AAOD;;EAEE,mBAAkB;EAClB,eAAc;EACd,eAAc;EACd,yBAAwB;CACzB;;AAED;EAAM,eAAc;CAAK;;AACzB;EAAM,WAAU;CAAK;;AAOrB;EACE,eElHe;EFmHf,sBExB0B;EFyB1B,8BAA6B;EAC7B,sCAAqC;CAMtC;;AG1LG;EHuLA,eE5B4C;EF6B5C,2BE5B6B;CC5JR;;AHkMzB;EACE,eAAc;EACd,sBAAqB;CAUtB;;AGnMG;EH4LA,eAAc;EACd,sBAAqB;CG1LpB;;AHoLL;EAUI,WAAU;CACX;;AAQH;;;;EAIE,kCAAiC;EACjC,eAAc;CACf;;AAED;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;CACf;;AAOD;EAEE,iBAAgB;CACjB;;AAOD;EACE,uBAAsB;EACtB,mBAAkB;CACnB;;AAED;EACE,iBAAgB;CACjB;;AAaD;;;;;;;;;EASE,+BAA0B;MAA1B,2BAA0B;CAC3B;;AAOD;EACE,0BAAyB;CAC1B;;AAED;EACE,qBEEoC;EFDpC,wBECoC;EFApC,eEpPgB;EFqPhB,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAEE,iBAAgB;CACjB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;;EAKE,UAAS;EACT,qBAAoB;EACpB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;EAEE,kBAAiB;CAClB;;AAED;;EAEE,qBAAoB;CACrB;;AAKD;;;;EAIE,2BAA0B;CAC3B;;AAGD;;;;EAIE,WAAU;EACV,mBAAkB;CACnB;;AAED;;EAEE,uBAAsB;EACtB,WAAU;CACX;;AAGD;;;;EASE,4BAA2B;CAC5B;;AAED;EACE,eAAc;EAEd,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAID;EACE,eAAc;EACd,YAAW;EACX,gBAAe;EACf,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;EACpB,eAAc;EACd,oBAAmB;CACpB;;AAED;EACE,yBAAwB;CACzB;;ACpID;;EDyIE,aAAY;CACb;;ACrID;ED4IE,qBAAoB;EACpB,yBAAwB;CACzB;;ACzID;;EDiJE,yBAAwB;CACzB;;AAOD;EACE,cAAa;EACb,2BAA0B;CAC3B;;AAMD;EACE,sBAAqB;CACtB;;AAED;EACE,mBAAkB;CACnB;;AAED;EACE,cAAa;CACd;;ACtJD;ED2JE,yBAAwB;CACzB","file":"bootstrap-reboot.css","sourcesContent":["// scss-lint:disable QualifyingElement, DuplicateProperty, VendorPrefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\nhtml {\n box-sizing: border-box; // 1\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0,0,0,0); // 6\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit; // 1\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport { width: device-width; }\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.\n//\n// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11\n// DON'T remove the click delay when `<meta name=\"viewport\" content=\"width=device-width\">` is present.\n// However, they DO support removing the click delay via `touch-action: manipulation`.\n// See:\n// * https://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch\n// * http://caniuse.com/#feat=css-touch-action\n// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment\n text-align: left;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","html {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// Variables\n//\n// Copy settings from this file into the provided `_custom.scss` to override\n// the Bootstrap defaults without modifying key, versioned files.\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Table of Contents\n//\n// Color system\n// Options\n// Spacing\n// Body\n// Links\n// Grid breakpoints\n// Grid containers\n// Grid columns\n// Fonts\n// Components\n// Tables\n// Buttons\n// Forms\n// Dropdowns\n// Z-index master list\n// Navs\n// Navbar\n// Pagination\n// Jumbotron\n// Form states and alerts\n// Cards\n// Tooltips\n// Popovers\n// Badges\n// Modals\n// Alerts\n// Progress bars\n// List group\n// Image thumbnails\n// Figures\n// Breadcrumbs\n// Carousel\n// Close\n// Code\n\n\n//\n// Color system\n//\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #868e96 !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: (\n 100: $gray-100,\n 200: $gray-200,\n 300: $gray-300,\n 400: $gray-400,\n 500: $gray-500,\n 600: $gray-600,\n 700: $gray-700,\n 800: $gray-800,\n 900: $gray-900\n) !default;\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: (\n blue: $blue,\n indigo: $indigo,\n purple: $purple,\n pink: $pink,\n red: $red,\n orange: $orange,\n yellow: $yellow,\n green: $green,\n teal: $teal,\n cyan: $cyan,\n white: $white,\n gray: $gray-600,\n gray-dark: $gray-800\n) !default;\n\n$theme-colors: (\n primary: $blue,\n secondary: $gray-600,\n success: $green,\n info: $cyan,\n warning: $yellow,\n danger: $red,\n light: $gray-100,\n dark: $gray-800\n) !default;\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-hover-media-query: false !default;\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n) !default;\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n) !default;\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$font-family-monospace: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: 1.25rem !default;\n$font-size-sm: .875rem !default;\n\n$font-weight-normal: normal !default;\n$font-weight-bold: bold !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: 2.5rem !default;\n$h2-font-size: 2rem !default;\n$h3-font-size: 1.75rem !default;\n$h4-font-size: 1.5rem !default;\n$h5-font-size: 1.25rem !default;\n$h6-font-size: 1rem !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.1 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: 1.25rem !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black,.1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black,.25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: 5px !default;\n\n$mark-bg: #fcf8e3 !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black,.05) !default;\n$table-hover-bg: rgba($black,.075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-200 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-inverse-bg: $gray-900 !default;\n$table-inverse-accent-bg: rgba($white, .05) !default;\n$table-inverse-hover-bg: rgba($white, .075) !default;\n$table-inverse-border-color: lighten($gray-900, 7.5%) !default;\n$table-inverse-color: $body-bg !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background and border color.\n\n$input-btn-padding-y: .5rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: 1.25 !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: 1.5 !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: 1.5 !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white,.15), 0 1px 1px rgba($black,.075) !default;\n$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color(\"primary\"), .25) !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black,.125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: all .15s ease-in-out !default;\n\n\n// Forms\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: rgba($black,.15) !default;\n$input-btn-border-width: $border-width !default; // For form controls and buttons\n$input-box-shadow: inset 0 1px 1px rgba($black,.075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten(theme-color(\"primary\"), 25%) !default;\n$input-focus-box-shadow: $input-box-shadow, $btn-focus-box-shadow !default;\n$input-focus-color: $input-color !default;\n\n$input-placeholder-color: $gray-600 !default;\n\n$input-height-border: $input-btn-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-sm * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-margin-bottom: .5rem !default;\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .25rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-y: .25rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: #ddd !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-description-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $white !default;\n$custom-control-indicator-checked-bg: theme-color(\"primary\") !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px theme-color(\"primary\") !default;\n\n$custom-control-indicator-active-color: $white !default;\n$custom-control-indicator-active-bg: lighten(theme-color(\"primary\"), 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: theme-color(\"primary\") !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: #333 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: lighten(theme-color(\"primary\"), 25%) !default;\n$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-file-height: 2.5rem !default;\n$custom-file-width: 14rem !default;\n$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem theme-color(\"primary\") !default;\n\n$custom-file-padding-y: 1rem !default;\n$custom-file-padding-x: .5rem !default;\n$custom-file-line-height: 1.5 !default;\n$custom-file-color: $gray-700 !default;\n$custom-file-bg: $white !default;\n$custom-file-border-width: $border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $border-radius !default;\n$custom-file-box-shadow: inset 0 .2rem .4rem rgba($black,.05) !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $gray-200 !default;\n$custom-file-text: (\n placeholder: (\n en: \"Choose file...\"\n ),\n button-label: (\n en: \"Browse\"\n )\n) !default;\n\n\n// Form validation\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black,.15) !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black,.175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: #ddd !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: #ddd !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-padding-y: ($navbar-brand-height - $nav-link-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white,.5) !default;\n$navbar-dark-hover-color: rgba($white,.75) !default;\n$navbar-dark-active-color: rgba($white,1) !default;\n$navbar-dark-disabled-color: rgba($white,.25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white,.1) !default;\n\n$navbar-light-color: rgba($black,.5) !default;\n$navbar-light-hover-color: rgba($black,.7) !default;\n$navbar-light-active-color: rgba($black,.9) !default;\n$navbar-light-disabled-color: rgba($black,.3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black,.1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: #ddd !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: #ddd !default;\n\n$pagination-active-color: $white !default;\n$pagination-active-bg: theme-color(\"primary\") !default;\n$pagination-active-border-color: theme-color(\"primary\") !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: #ddd !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: 1px !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black,.125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-deck-margin: ($grid-gutter-width / 2) !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: 3px !default;\n$tooltip-padding-x: 8px !default;\n$tooltip-margin: 0 !default;\n\n\n$tooltip-arrow-width: 5px !default;\n$tooltip-arrow-height: 5px !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n\n// Popovers\n\n$popover-inner-padding: 1px !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black,.2) !default;\n$popover-box-shadow: 0 5px 10px rgba($black,.2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: 8px !default;\n$popover-header-padding-x: 14px !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: 9px !default;\n$popover-body-padding-x: 14px !default;\n\n$popover-arrow-width: 10px !default;\n$popover-arrow-height: 5px !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-width: ($popover-arrow-width + 1px) !default;\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-color: $white !default;\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 15px !default;\n\n$modal-dialog-margin: 10px !default;\n$modal-dialog-margin-y-sm-up: 30px !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black,.2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 3px 9px rgba($black,.5) !default;\n$modal-content-box-shadow-sm-up: 0 5px 15px rgba($black,.5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 15px !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: .75rem !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black,.1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black,.125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: #ddd !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black,.075) !default;\n$thumbnail-transition: all .2s ease-in-out !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 90% !default;\n$code-padding-y: .2rem !default;\n$code-padding-x: .4rem !default;\n$code-color: #bd4147 !default;\n$code-bg: $gray-100 !default;\n\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n","@mixin hover {\n // TODO: re-enable along with mq4-hover-shim\n// @if $enable-hover-media-query {\n// // See Media Queries Level 4: https://drafts.csswg.org/mediaqueries/#hover\n// // Currently shimmed by https://github.com/twbs/mq4-hover-shim\n// @media (hover: hover) {\n// &:hover { @content }\n// }\n// }\n// @else {\n// scss-lint:disable Indentation\n &:hover { @content }\n// scss-lint:enable Indentation\n// }\n}\n\n\n@mixin hover-focus {\n @if $enable-hover-media-query {\n &:focus { @content }\n @include hover { @content }\n } @else {\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin plain-hover-focus {\n @if $enable-hover-media-query {\n &,\n &:focus {\n @content\n }\n @include hover { @content }\n } @else {\n &,\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin hover-focus-active {\n @if $enable-hover-media-query {\n &:focus,\n &:active {\n @content\n }\n @include hover { @content }\n } @else {\n &:focus,\n &:active,\n &:hover {\n @content\n }\n }\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAAA;;;;;;GAMG;ACcH;;;EAGE,uBAAsB;CACvB;;AAED;EACE,wBAAuB;EACvB,kBAAiB;EACjB,+BAA8B;EAC9B,2BAA0B;EAC1B,8BAA6B;EAC7B,yCAA6C;CAC9C;;AAIC;EACE,oBAAmB;CCdtB;;ADoBD;EACE,eAAc;CACf;;AAUD;EACE,UAAS;EACT,kKE0KgL;EFzKhL,gBE8KgC;EF7KhC,iBEkL+B;EFjL/B,iBEqL+B;EFpL/B,eE1CgB;EF2ChB,iBAAgB;EAChB,uBErDa;CFsDd;;ACxBD;EDgCE,sBAAqB;CACtB;;AAQD;EACE,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAYD;EACE,cAAa;EACb,sBEuJyC;CFtJ1C;;AAOD;EACE,cAAa;EACb,oBEgD8B;CF/C/B;;AASD;;EAEE,2BAA0B;EAC1B,0CAAiC;EAAjC,kCAAiC;EACjC,aAAY;EACZ,iBAAgB;CACjB;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,iBE0F+B;CFzFhC;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAED;EACE,mBAAkB;CACnB;;AAGD;;EAEE,oBAAmB;CACpB;;AAGD;EACE,eAAc;CACf;;AAOD;;EAEE,mBAAkB;EAClB,eAAc;EACd,eAAc;EACd,yBAAwB;CACzB;;AAED;EAAM,eAAc;CAAK;;AACzB;EAAM,WAAU;CAAK;;AAOrB;EACE,eElKe;EFmKf,sBEjD8B;EFkD9B,8BAA6B;EAC7B,sCAAqC;CAMtC;;AGjMC;EH8LE,eErDgD;EFsDhD,2BErDiC;CC1Ib;;AHyMxB;EACE,eAAc;EACd,sBAAqB;CAUtB;;AGjNC;EH0ME,eAAc;EACd,sBAAqB;CGxMtB;;AHkMH;EAUI,WAAU;CACX;;AASH;;;;EAIE,kCAAiC;EACjC,eAAc;CACf;;AAGD;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;EAGd,8BAA6B;CAC9B;;AAOD;EAEE,iBAAgB;CACjB;;AAOD;EACE,uBAAsB;EACtB,mBAAkB;CACnB;;AAED;EACE,iBAAgB;CACjB;;AAOD;EACE,0BAAyB;CAC1B;;AAED;EACE,qBESkC;EFRlC,wBEQkC;EFPlC,eEnRgB;EFoRhB,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAGE,oBAAmB;CACpB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAKD;EACE,iBAAgB;CACjB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;;EAKE,UAAS;EACT,qBAAoB;EACpB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;EAEE,kBAAiB;CAClB;;AAED;;EAEE,qBAAoB;CACrB;;AAKD;;;;EAIE,2BAA0B;CAC3B;;AAGD;;;;EAIE,WAAU;EACV,mBAAkB;CACnB;;AAED;;EAEE,uBAAsB;EACtB,WAAU;CACX;;AAGD;;;;EASE,4BAA2B;CAC5B;;AAED;EACE,eAAc;EAEd,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAID;EACE,eAAc;EACd,YAAW;EACX,gBAAe;EACf,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;EACpB,eAAc;EACd,oBAAmB;CACpB;;AAED;EACE,yBAAwB;CACzB;;ACpID;;EDyIE,aAAY;CACb;;ACrID;ED4IE,qBAAoB;EACpB,yBAAwB;CACzB;;ACzID;;EDiJE,yBAAwB;CACzB;;AAOD;EACE,cAAa;EACb,2BAA0B;CAC3B;;AAMD;EACE,sBAAqB;CACtB;;AAED;EACE,mBAAkB;EAClB,gBAAe;CAChB;;AAED;EACE,cAAa;CACd;;ACtJD;ED2JE,yBAAwB;CACzB","file":"bootstrap-reboot.css","sourcesContent":["/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 6\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport {\n width: device-width;\n }\n}\n\n// stylelint-disable selector-list-comma-newline-after\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use the\n// the `inherit` value on things like `<th>` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\n// stylelint-disable font-weight-notation\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n// stylelint-enable font-weight-notation\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\n// stylelint-disable font-family-no-duplicate-names\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n// stylelint-enable font-family-no-duplicate-names\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so\n // we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment by inheriting from the `<body>`, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: ($font-size-base * 1.25) !default;\n$font-size-sm: ($font-size-base * .875) !default;\n\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: ($font-size-base * 1.25) !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-300 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-bg: $gray-900 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($gray-900, 7.5%) !default;\n$table-dark-color: $body-bg !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $gray-300 !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-font-size-lg: 125% !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$custom-file-padding-y: $input-btn-padding-y !default;\n$custom-file-padding-x: $input-btn-padding-x !default;\n$custom-file-line-height: $input-btn-line-height !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-btn-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: ($grid-gutter-width / 2) !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 1rem !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: ($font-size-base * .75) !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Printing\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n","// stylelint-disable indentation\n\n// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Origally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS—an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular psuedo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap-reboot.min.css b/library/bootstrap/css/bootstrap-reboot.min.css
index 4ee4a4069..ced046825 100644
--- a/library/bootstrap/css/bootstrap-reboot.min.css
+++ b/library/bootstrap/css/bootstrap-reboot.min.css
@@ -1,2 +1,8 @@
-html{box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{box-sizing:inherit}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
+/*!
+ * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */ \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap-reboot.min.css.map b/library/bootstrap/css/bootstrap-reboot.min.css.map
index d461cb58f..7212ab675 100644
--- a/library/bootstrap/css/bootstrap-reboot.min.css.map
+++ b/library/bootstrap/css/bootstrap-reboot.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,EClBA,QADA,SDsBE,WAAA,QAKA,cAAgB,MAAA,aAIlB,QAAA,MAAA,OAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAQF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC/CF,0BDyDA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QCpDF,GDuDA,GCxDA,GD2DE,WAAA,EACA,cAAA,KAGF,MCvDA,MACA,MAFA,MD4DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECxDA,OD0DE,YAAA,OAGF,MACE,UAAA,IAQF,IC7DA,ID+DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGpLE,QHuLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGzLE,oCAAA,oCH4LA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC/DJ,KACA,IDuEA,ICtEA,KD0EE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OCjFF,cD+FA,ECjGA,KACA,OAEA,MACA,MACA,OACA,QACA,SDmGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC7GF,ODgHA,MC9GA,SADA,OAEA,SDkHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OChHA,MDkHE,SAAA,QAGF,OChHA,ODkHE,eAAA,KC5GF,aACA,cDiHA,OCnHA,mBDuHE,mBAAA,OChHF,gCACA,+BACA,gCDkHA,yBAIE,QAAA,EACA,aAAA,KCjHF,qBDoHA,kBAEE,WAAA,WACA,QAAA,EAIF,iBCpHA,2BACA,kBAFA,iBD8HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SEnIF,yCDGA,yCDsIE,OAAA,KEpIF,cF4IE,eAAA,KACA,mBAAA,KExIF,4CDGA,yCD8IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KErJF,SF2JE,QAAA","sourcesContent":["// scss-lint:disable QualifyingElement, DuplicateProperty, VendorPrefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\nhtml {\n box-sizing: border-box; // 1\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0,0,0,0); // 6\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit; // 1\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport { width: device-width; }\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.\n//\n// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11\n// DON'T remove the click delay when `<meta name=\"viewport\" content=\"width=device-width\">` is present.\n// However, they DO support removing the click delay via `touch-action: manipulation`.\n// See:\n// * https://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch\n// * http://caniuse.com/#feat=css-touch-action\n// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment\n text-align: left;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","html {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n/*# sourceMappingURL=bootstrap-reboot.css.map */","html {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","@mixin hover {\n // TODO: re-enable along with mq4-hover-shim\n// @if $enable-hover-media-query {\n// // See Media Queries Level 4: https://drafts.csswg.org/mediaqueries/#hover\n// // Currently shimmed by https://github.com/twbs/mq4-hover-shim\n// @media (hover: hover) {\n// &:hover { @content }\n// }\n// }\n// @else {\n// scss-lint:disable Indentation\n &:hover { @content }\n// scss-lint:enable Indentation\n// }\n}\n\n\n@mixin hover-focus {\n @if $enable-hover-media-query {\n &:focus { @content }\n @include hover { @content }\n } @else {\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin plain-hover-focus {\n @if $enable-hover-media-query {\n &,\n &:focus {\n @content\n }\n @include hover { @content }\n } @else {\n &,\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin hover-focus-active {\n @if $enable-hover-media-query {\n &:focus,\n &:active {\n @content\n }\n @include hover { @content }\n } @else {\n &:focus,\n &:active,\n &:hover {\n @content\n }\n }\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAAA;;;;;;ACoBA,ECXA,QADA,SDeE,WAAA,WAGF,KACE,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAKA,cACE,MAAA,aAMJ,QAAA,MAAA,OAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAWF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,KACA,iBAAA,KEvBF,sBFgCE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAaF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAQF,EACE,WAAA,EACA,cAAA,KChDF,0BD0DA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QCrDF,GDwDA,GCzDA,GD4DE,WAAA,EACA,cAAA,KAGF,MCxDA,MACA,MAFA,MD6DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAIF,EC1DA,OD4DE,YAAA,OAIF,MACE,UAAA,IAQF,IChEA,IDkEE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QG3LA,QH8LE,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGvMA,oCAAA,oCH0ME,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EClEJ,KACA,ID2EA,IC1EA,KD8EE,YAAA,SAAA,CAAA,UACA,UAAA,IAIF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAGA,mBAAA,UAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAGE,WAAA,QAQF,MAEE,QAAA,aACA,cAAA,MAMF,OACE,cAAA,EAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC9GF,ODiHA,MC/GA,SADA,OAEA,SDmHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OCjHA,MDmHE,SAAA,QAGF,OCjHA,ODmHE,eAAA,KC7GF,aACA,cDkHA,OCpHA,mBDwHE,mBAAA,OCjHF,gCACA,+BACA,gCDmHA,yBAIE,QAAA,EACA,aAAA,KClHF,qBDqHA,kBAEE,WAAA,WACA,QAAA,EAIF,iBCrHA,2BACA,kBAFA,iBD+HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SEnIF,yCDEA,yCDuIE,OAAA,KEpIF,cF4IE,eAAA,KACA,mBAAA,KExIF,4CDEA,yCD+IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UACA,OAAA,QAGF,SACE,QAAA,KErJF,SF2JE,QAAA","sourcesContent":["/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 6\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport {\n width: device-width;\n }\n}\n\n// stylelint-disable selector-list-comma-newline-after\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use the\n// the `inherit` value on things like `<th>` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\n// stylelint-disable font-weight-notation\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n// stylelint-enable font-weight-notation\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\n// stylelint-disable font-family-no-duplicate-names\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n// stylelint-enable font-family-no-duplicate-names\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so\n // we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment by inheriting from the `<body>`, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n/*# sourceMappingURL=bootstrap-reboot.css.map */","/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// stylelint-disable indentation\n\n// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Origally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS—an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular psuedo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap.css b/library/bootstrap/css/bootstrap.css
index b39107f6f..aa497136c 100644
--- a/library/bootstrap/css/bootstrap.css
+++ b/library/bootstrap/css/bootstrap.css
@@ -1,69 +1,47 @@
/*!
- * Bootstrap v4.0.0-beta (https://getbootstrap.com)
- * Copyright 2011-2017 The Bootstrap Authors
- * Copyright 2011-2017 Twitter, Inc.
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-@media print {
- *,
- *::before,
- *::after {
- text-shadow: none !important;
- box-shadow: none !important;
- }
- a,
- a:visited {
- text-decoration: underline;
- }
- abbr[title]::after {
- content: " (" attr(title) ")";
- }
- pre {
- white-space: pre-wrap !important;
- }
- pre,
- blockquote {
- border: 1px solid #999;
- page-break-inside: avoid;
- }
- thead {
- display: table-header-group;
- }
- tr,
- img {
- page-break-inside: avoid;
- }
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
- h2,
- h3 {
- page-break-after: avoid;
- }
- .navbar {
- display: none;
- }
- .badge {
- border: 1px solid #000;
- }
- .table {
- border-collapse: collapse !important;
- }
- .table td,
- .table th {
- background-color: #fff !important;
- }
- .table-bordered th,
- .table-bordered td {
- border: 1px solid #ddd !important;
- }
+:root {
+ --blue: #007bff;
+ --indigo: #6610f2;
+ --purple: #6f42c1;
+ --pink: #e83e8c;
+ --red: #dc3545;
+ --orange: #fd7e14;
+ --yellow: #ffc107;
+ --green: #28a745;
+ --teal: #20c997;
+ --cyan: #17a2b8;
+ --white: #fff;
+ --gray: #6c757d;
+ --gray-dark: #343a40;
+ --primary: #007bff;
+ --secondary: #6c757d;
+ --success: #28a745;
+ --info: #17a2b8;
+ --warning: #ffc107;
+ --danger: #dc3545;
+ --light: #f8f9fa;
+ --dark: #343a40;
+ --breakpoint-xs: 0;
+ --breakpoint-sm: 576px;
+ --breakpoint-md: 768px;
+ --breakpoint-lg: 992px;
+ --breakpoint-xl: 1200px;
+ --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
-html {
+*,
+*::before,
+*::after {
box-sizing: border-box;
+}
+
+html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
@@ -72,12 +50,6 @@ html {
-webkit-tap-highlight-color: transparent;
}
-*,
-*::before,
-*::after {
- box-sizing: inherit;
-}
-
@-ms-viewport {
width: device-width;
}
@@ -88,16 +60,17 @@ article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, s
body {
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
- font-weight: normal;
+ font-weight: 400;
line-height: 1.5;
color: #212529;
+ text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
- outline: none !important;
+ outline: 0 !important;
}
hr {
@@ -108,7 +81,7 @@ hr {
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
- margin-bottom: .5rem;
+ margin-bottom: 0.5rem;
}
p {
@@ -120,7 +93,7 @@ abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
- text-decoration: underline dotted;
+ text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
@@ -146,7 +119,7 @@ ul ol {
}
dt {
- font-weight: bold;
+ font-weight: 700;
}
dd {
@@ -204,7 +177,7 @@ a:not([href]):not([tabindex]) {
text-decoration: none;
}
-a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
+a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
@@ -225,6 +198,7 @@ pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
+ -ms-overflow-style: scrollbar;
}
figure {
@@ -240,19 +214,6 @@ svg:not(:root) {
overflow: hidden;
}
-a,
-area,
-button,
-[role="button"],
-input,
-label,
-select,
-summary,
-textarea {
- -ms-touch-action: manipulation;
- touch-action: manipulation;
-}
-
table {
border-collapse: collapse;
}
@@ -260,13 +221,13 @@ table {
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
- color: #868e96;
+ color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
- text-align: left;
+ text-align: inherit;
}
label {
@@ -274,6 +235,10 @@ label {
margin-bottom: .5rem;
}
+button {
+ border-radius: 0;
+}
+
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
@@ -382,6 +347,7 @@ output {
summary {
display: list-item;
+ cursor: pointer;
}
template {
@@ -397,7 +363,7 @@ h1, h2, h3, h4, h5, h6,
margin-bottom: 0.5rem;
font-family: inherit;
font-weight: 500;
- line-height: 1.1;
+ line-height: 1.2;
color: inherit;
}
@@ -433,25 +399,25 @@ h6, .h6 {
.display-1 {
font-size: 6rem;
font-weight: 300;
- line-height: 1.1;
+ line-height: 1.2;
}
.display-2 {
font-size: 5.5rem;
font-weight: 300;
- line-height: 1.1;
+ line-height: 1.2;
}
.display-3 {
font-size: 4.5rem;
font-weight: 300;
- line-height: 1.1;
+ line-height: 1.2;
}
.display-4 {
font-size: 3.5rem;
font-weight: 300;
- line-height: 1.1;
+ line-height: 1.2;
}
hr {
@@ -464,7 +430,7 @@ hr {
small,
.small {
font-size: 80%;
- font-weight: normal;
+ font-weight: 400;
}
mark,
@@ -488,7 +454,7 @@ mark,
}
.list-inline-item:not(:last-child) {
- margin-right: 5px;
+ margin-right: 0.5rem;
}
.initialism {
@@ -504,7 +470,7 @@ mark,
.blockquote-footer {
display: block;
font-size: 80%;
- color: #868e96;
+ color: #6c757d;
}
.blockquote-footer::before {
@@ -519,9 +485,8 @@ mark,
.img-thumbnail {
padding: 0.25rem;
background-color: #fff;
- border: 1px solid #ddd;
+ border: 1px solid #dee2e6;
border-radius: 0.25rem;
- transition: all 0.2s ease-in-out;
max-width: 100%;
height: auto;
}
@@ -537,33 +502,29 @@ mark,
.figure-caption {
font-size: 90%;
- color: #868e96;
+ color: #6c757d;
}
code,
kbd,
pre,
samp {
- font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
code {
- padding: 0.2rem 0.4rem;
- font-size: 90%;
- color: #bd4147;
- background-color: #f8f9fa;
- border-radius: 0.25rem;
+ font-size: 87.5%;
+ color: #e83e8c;
+ word-break: break-word;
}
a > code {
- padding: 0;
color: inherit;
- background-color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
- font-size: 90%;
+ font-size: 87.5%;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
@@ -572,23 +533,19 @@ kbd {
kbd kbd {
padding: 0;
font-size: 100%;
- font-weight: bold;
+ font-weight: 700;
}
pre {
display: block;
- margin-top: 0;
- margin-bottom: 1rem;
- font-size: 90%;
+ font-size: 87.5%;
color: #212529;
}
pre code {
- padding: 0;
font-size: inherit;
color: inherit;
- background-color: transparent;
- border-radius: 0;
+ word-break: normal;
}
.pre-scrollable {
@@ -597,11 +554,11 @@ pre code {
}
.container {
- margin-right: auto;
- margin-left: auto;
+ width: 100%;
padding-right: 15px;
padding-left: 15px;
- width: 100%;
+ margin-right: auto;
+ margin-left: auto;
}
@media (min-width: 576px) {
@@ -630,18 +587,18 @@ pre code {
.container-fluid {
width: 100%;
- margin-right: auto;
- margin-left: auto;
padding-right: 15px;
padding-left: 15px;
- width: 100%;
+ margin-right: auto;
+ margin-left: auto;
}
.row {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
}
@@ -672,644 +629,1040 @@ pre code {
.col {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+.order-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+}
+
+.order-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+}
+
+.order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+}
+
.order-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+}
+
+.offset-1 {
+ margin-left: 8.333333%;
+}
+
+.offset-2 {
+ margin-left: 16.666667%;
+}
+
+.offset-3 {
+ margin-left: 25%;
+}
+
+.offset-4 {
+ margin-left: 33.333333%;
+}
+
+.offset-5 {
+ margin-left: 41.666667%;
+}
+
+.offset-6 {
+ margin-left: 50%;
+}
+
+.offset-7 {
+ margin-left: 58.333333%;
+}
+
+.offset-8 {
+ margin-left: 66.666667%;
+}
+
+.offset-9 {
+ margin-left: 75%;
+}
+
+.offset-10 {
+ margin-left: 83.333333%;
+}
+
+.offset-11 {
+ margin-left: 91.666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-sm-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-sm-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-sm-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-sm-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-sm-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-sm-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-sm-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-sm-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-sm-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-sm-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-sm-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-sm-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-sm-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-sm-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-sm-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-sm-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-sm-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-sm-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-sm-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-sm-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-sm-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-sm-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-sm-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-sm-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-sm-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-sm-0 {
+ margin-left: 0;
+ }
+ .offset-sm-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.666667%;
}
}
@media (min-width: 768px) {
.col-md {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-md-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-md-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-md-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-md-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-md-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-md-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-md-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-md-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-md-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-md-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-md-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-md-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-md-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-md-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-md-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-md-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-md-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-md-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-md-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-md-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-md-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-md-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-md-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-md-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-md-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-md-0 {
+ margin-left: 0;
+ }
+ .offset-md-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.666667%;
}
}
@media (min-width: 992px) {
.col-lg {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-lg-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-lg-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-lg-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-lg-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-lg-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-lg-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-lg-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-lg-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-lg-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-lg-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-lg-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-lg-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-lg-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-lg-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-lg-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-lg-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-lg-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-lg-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-lg-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-lg-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-lg-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-lg-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-lg-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-lg-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-lg-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-lg-0 {
+ margin-left: 0;
+ }
+ .offset-lg-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
max-width: 100%;
}
.col-xl-auto {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-xl-1 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 8.333333%;
- flex: 0 0 8.333333%;
+ flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-xl-2 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 16.666667%;
- flex: 0 0 16.666667%;
+ flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-xl-3 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 25%;
- flex: 0 0 25%;
+ flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 33.333333%;
- flex: 0 0 33.333333%;
+ flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-xl-5 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 41.666667%;
- flex: 0 0 41.666667%;
+ flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-xl-6 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 50%;
- flex: 0 0 50%;
+ flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 58.333333%;
- flex: 0 0 58.333333%;
+ flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-xl-8 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 66.666667%;
- flex: 0 0 66.666667%;
+ flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-xl-9 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 75%;
- flex: 0 0 75%;
+ flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 83.333333%;
- flex: 0 0 83.333333%;
+ flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-xl-11 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 91.666667%;
- flex: 0 0 91.666667%;
+ flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-xl-12 {
+ -webkit-box-flex: 0;
-ms-flex: 0 0 100%;
- flex: 0 0 100%;
+ flex: 0 0 100%;
max-width: 100%;
}
+ .order-xl-first {
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ }
+ .order-xl-last {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13;
+ }
+ .order-xl-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0;
+ }
.order-xl-1 {
+ -webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
- order: 1;
+ order: 1;
}
.order-xl-2 {
+ -webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
- order: 2;
+ order: 2;
}
.order-xl-3 {
+ -webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
- order: 3;
+ order: 3;
}
.order-xl-4 {
+ -webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
- order: 4;
+ order: 4;
}
.order-xl-5 {
+ -webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
- order: 5;
+ order: 5;
}
.order-xl-6 {
+ -webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
- order: 6;
+ order: 6;
}
.order-xl-7 {
+ -webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
- order: 7;
+ order: 7;
}
.order-xl-8 {
+ -webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
- order: 8;
+ order: 8;
}
.order-xl-9 {
+ -webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
- order: 9;
+ order: 9;
}
.order-xl-10 {
+ -webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
- order: 10;
+ order: 10;
}
.order-xl-11 {
+ -webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
- order: 11;
+ order: 11;
}
.order-xl-12 {
+ -webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
- order: 12;
+ order: 12;
+ }
+ .offset-xl-0 {
+ margin-left: 0;
+ }
+ .offset-xl-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.666667%;
}
}
@@ -1324,16 +1677,16 @@ pre code {
.table td {
padding: 0.75rem;
vertical-align: top;
- border-top: 1px solid #e9ecef;
+ border-top: 1px solid #dee2e6;
}
.table thead th {
vertical-align: bottom;
- border-bottom: 2px solid #e9ecef;
+ border-bottom: 2px solid #dee2e6;
}
.table tbody + tbody {
- border-top: 2px solid #e9ecef;
+ border-top: 2px solid #dee2e6;
}
.table .table {
@@ -1346,12 +1699,12 @@ pre code {
}
.table-bordered {
- border: 1px solid #e9ecef;
+ border: 1px solid #dee2e6;
}
.table-bordered th,
.table-bordered td {
- border: 1px solid #e9ecef;
+ border: 1px solid #dee2e6;
}
.table-bordered thead th,
@@ -1385,16 +1738,16 @@ pre code {
.table-secondary,
.table-secondary > th,
.table-secondary > td {
- background-color: #dddfe2;
+ background-color: #d6d8db;
}
.table-hover .table-secondary:hover {
- background-color: #cfd2d6;
+ background-color: #c8cbcf;
}
.table-hover .table-secondary:hover > td,
.table-hover .table-secondary:hover > th {
- background-color: #cfd2d6;
+ background-color: #c8cbcf;
}
.table-success,
@@ -1502,64 +1855,117 @@ pre code {
background-color: rgba(0, 0, 0, 0.075);
}
-.thead-inverse th {
+.table .thead-dark th {
color: #fff;
background-color: #212529;
+ border-color: #32383e;
}
-.thead-default th {
+.table .thead-light th {
color: #495057;
background-color: #e9ecef;
+ border-color: #dee2e6;
}
-.table-inverse {
+.table-dark {
color: #fff;
background-color: #212529;
}
-.table-inverse th,
-.table-inverse td,
-.table-inverse thead th {
+.table-dark th,
+.table-dark td,
+.table-dark thead th {
border-color: #32383e;
}
-.table-inverse.table-bordered {
+.table-dark.table-bordered {
border: 0;
}
-.table-inverse.table-striped tbody tr:nth-of-type(odd) {
+.table-dark.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(255, 255, 255, 0.05);
}
-.table-inverse.table-hover tbody tr:hover {
+.table-dark.table-hover tbody tr:hover {
background-color: rgba(255, 255, 255, 0.075);
}
-@media (max-width: 991px) {
- .table-responsive {
+@media (max-width: 575.98px) {
+ .table-responsive-sm {
display: block;
width: 100%;
overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
}
- .table-responsive.table-bordered {
+ .table-responsive-sm > .table-bordered {
border: 0;
}
}
+@media (max-width: 767.98px) {
+ .table-responsive-md {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ }
+ .table-responsive-md > .table-bordered {
+ border: 0;
+ }
+}
+
+@media (max-width: 991.98px) {
+ .table-responsive-lg {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ }
+ .table-responsive-lg > .table-bordered {
+ border: 0;
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ }
+ .table-responsive-xl > .table-bordered {
+ border: 0;
+ }
+}
+
+.table-responsive {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+}
+
+.table-responsive > .table-bordered {
+ border: 0;
+}
+
.form-control {
display: block;
width: 100%;
- padding: 0.5rem 0.75rem;
+ padding: 0.375rem 0.75rem;
font-size: 1rem;
- line-height: 1.25;
+ line-height: 1.5;
color: #495057;
background-color: #fff;
- background-image: none;
background-clip: padding-box;
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border: 1px solid #ced4da;
border-radius: 0.25rem;
- transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.form-control::-ms-expand {
@@ -1571,21 +1977,32 @@ pre code {
color: #495057;
background-color: #fff;
border-color: #80bdff;
- outline: none;
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.form-control::-webkit-input-placeholder {
- color: #868e96;
+ color: #6c757d;
+ opacity: 1;
+}
+
+.form-control::-moz-placeholder {
+ color: #6c757d;
opacity: 1;
}
.form-control:-ms-input-placeholder {
- color: #868e96;
+ color: #6c757d;
+ opacity: 1;
+}
+
+.form-control::-ms-input-placeholder {
+ color: #6c757d;
opacity: 1;
}
.form-control::placeholder {
- color: #868e96;
+ color: #6c757d;
opacity: 1;
}
@@ -1606,54 +2023,61 @@ select.form-control:focus::-ms-value {
.form-control-file,
.form-control-range {
display: block;
+ width: 100%;
}
.col-form-label {
- padding-top: calc(0.5rem - 1px * 2);
- padding-bottom: calc(0.5rem - 1px * 2);
+ padding-top: calc(0.375rem + 1px);
+ padding-bottom: calc(0.375rem + 1px);
margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5;
}
.col-form-label-lg {
- padding-top: calc(0.5rem - 1px * 2);
- padding-bottom: calc(0.5rem - 1px * 2);
+ padding-top: calc(0.5rem + 1px);
+ padding-bottom: calc(0.5rem + 1px);
font-size: 1.25rem;
+ line-height: 1.5;
}
.col-form-label-sm {
- padding-top: calc(0.25rem - 1px * 2);
- padding-bottom: calc(0.25rem - 1px * 2);
+ padding-top: calc(0.25rem + 1px);
+ padding-bottom: calc(0.25rem + 1px);
font-size: 0.875rem;
-}
-
-.col-form-legend {
- padding-top: 0.5rem;
- padding-bottom: 0.5rem;
- margin-bottom: 0;
- font-size: 1rem;
+ line-height: 1.5;
}
.form-control-plaintext {
- padding-top: 0.5rem;
- padding-bottom: 0.5rem;
+ display: block;
+ width: 100%;
+ padding-top: 0.375rem;
+ padding-bottom: 0.375rem;
margin-bottom: 0;
- line-height: 1.25;
+ line-height: 1.5;
+ background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,
-.input-group-sm > .form-control-plaintext.input-group-addon,
-.input-group-sm > .input-group-btn > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,
-.input-group-lg > .form-control-plaintext.input-group-addon,
-.input-group-lg > .input-group-btn > .form-control-plaintext.btn {
+.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,
+.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,
+.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,
+.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,
+.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,
+.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,
+.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,
+.input-group-lg > .input-group-append > .form-control-plaintext.btn {
padding-right: 0;
padding-left: 0;
}
.form-control-sm, .input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
+.input-group-sm > .input-group-prepend > .input-group-text,
+.input-group-sm > .input-group-append > .input-group-text,
+.input-group-sm > .input-group-prepend > .btn,
+.input-group-sm > .input-group-append > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
@@ -1661,14 +2085,18 @@ select.form-control:focus::-ms-value {
}
select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),
-.input-group-sm > select.input-group-addon:not([size]):not([multiple]),
-.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {
+.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),
+.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),
+.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),
+.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {
height: calc(1.8125rem + 2px);
}
.form-control-lg, .input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
+.input-group-lg > .input-group-prepend > .input-group-text,
+.input-group-lg > .input-group-append > .input-group-text,
+.input-group-lg > .input-group-prepend > .btn,
+.input-group-lg > .input-group-append > .btn {
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
@@ -1676,9 +2104,11 @@ select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.for
}
select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),
-.input-group-lg > select.input-group-addon:not([size]):not([multiple]),
-.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {
- height: calc(2.3125rem + 2px);
+.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),
+.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),
+.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),
+.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {
+ height: calc(2.875rem + 2px);
}
.form-group {
@@ -1691,10 +2121,11 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
}
.form-row {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
margin-right: -5px;
margin-left: -5px;
}
@@ -1708,59 +2139,61 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
.form-check {
position: relative;
display: block;
- margin-bottom: 0.5rem;
-}
-
-.form-check.disabled .form-check-label {
- color: #868e96;
-}
-
-.form-check-label {
padding-left: 1.25rem;
- margin-bottom: 0;
}
.form-check-input {
position: absolute;
- margin-top: 0.25rem;
+ margin-top: 0.3rem;
margin-left: -1.25rem;
}
-.form-check-input:only-child {
- position: static;
+.form-check-input:disabled ~ .form-check-label {
+ color: #6c757d;
}
-.form-check-inline {
- display: inline-block;
+.form-check-label {
+ margin-bottom: 0;
}
-.form-check-inline .form-check-label {
- vertical-align: middle;
+.form-check-inline {
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding-left: 0;
+ margin-right: 0.75rem;
}
-.form-check-inline + .form-check-inline {
- margin-left: 0.75rem;
+.form-check-inline .form-check-input {
+ position: static;
+ margin-top: 0;
+ margin-right: 0.3125rem;
+ margin-left: 0;
}
-.invalid-feedback {
+.valid-feedback {
display: none;
- margin-top: .25rem;
- font-size: .875rem;
- color: #dc3545;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 80%;
+ color: #28a745;
}
-.invalid-tooltip {
+.valid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
- width: 250px;
+ max-width: 100%;
padding: .5rem;
margin-top: .1rem;
font-size: .875rem;
line-height: 1;
color: #fff;
- background-color: rgba(220, 53, 69, 0.8);
+ background-color: rgba(40, 167, 69, 0.8);
border-radius: .2rem;
}
@@ -1773,44 +2206,94 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated
.custom-select:valid:focus,
.custom-select.is-valid:focus {
+ border-color: #28a745;
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
-.was-validated .form-control:valid ~ .invalid-feedback,
-.was-validated .form-control:valid ~ .invalid-tooltip, .form-control.is-valid ~ .invalid-feedback,
-.form-control.is-valid ~ .invalid-tooltip, .was-validated
-.custom-select:valid ~ .invalid-feedback,
+.was-validated .form-control:valid ~ .valid-feedback,
+.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,
+.form-control.is-valid ~ .valid-tooltip, .was-validated
+.custom-select:valid ~ .valid-feedback,
.was-validated
-.custom-select:valid ~ .invalid-tooltip,
-.custom-select.is-valid ~ .invalid-feedback,
-.custom-select.is-valid ~ .invalid-tooltip {
+.custom-select:valid ~ .valid-tooltip,
+.custom-select.is-valid ~ .valid-feedback,
+.custom-select.is-valid ~ .valid-tooltip {
display: block;
}
-.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label {
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
color: #28a745;
}
-.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator {
- background-color: rgba(40, 167, 69, 0.25);
+.was-validated .form-check-input:valid ~ .valid-feedback,
+.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
+.form-check-input.is-valid ~ .valid-tooltip {
+ display: block;
}
-.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description {
+.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
color: #28a745;
}
-.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control {
+.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
+ background-color: #71dd8a;
+}
+
+.was-validated .custom-control-input:valid ~ .valid-feedback,
+.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,
+.custom-control-input.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
+.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
+ background-color: #34ce57;
+}
+
+.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
+}
+
+.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
border-color: #28a745;
}
-.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before {
+.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {
border-color: inherit;
}
-.was-validated .custom-file-input:valid:focus, .custom-file-input.is-valid:focus {
+.was-validated .custom-file-input:valid ~ .valid-feedback,
+.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,
+.custom-file-input.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
+.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 80%;
+ color: #dc3545;
+}
+
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: .5rem;
+ margin-top: .1rem;
+ font-size: .875rem;
+ line-height: 1;
+ color: #fff;
+ background-color: rgba(220, 53, 69, 0.8);
+ border-radius: .2rem;
+}
+
.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated
.custom-select:invalid,
.custom-select.is-invalid {
@@ -1820,6 +2303,7 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated
.custom-select:invalid:focus,
.custom-select.is-invalid:focus {
+ border-color: #dc3545;
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
@@ -1834,37 +2318,67 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
display: block;
}
-.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label {
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
color: #dc3545;
}
-.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator {
- background-color: rgba(220, 53, 69, 0.25);
+.was-validated .form-check-input:invalid ~ .invalid-feedback,
+.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
+.form-check-input.is-invalid ~ .invalid-tooltip {
+ display: block;
}
-.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description {
+.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
color: #dc3545;
}
-.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control {
+.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
+ background-color: #efa2a9;
+}
+
+.was-validated .custom-control-input:invalid ~ .invalid-feedback,
+.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,
+.custom-control-input.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
+.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
+ background-color: #e4606d;
+}
+
+.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
+}
+
+.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
border-color: #dc3545;
}
-.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before {
+.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {
border-color: inherit;
}
-.was-validated .custom-file-input:invalid:focus, .custom-file-input.is-invalid:focus {
+.was-validated .custom-file-input:invalid ~ .invalid-feedback,
+.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,
+.custom-file-input.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
+.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.form-inline {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-flow: row wrap;
- flex-flow: row wrap;
+ flex-flow: row wrap;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
}
.form-inline .form-check {
@@ -1873,23 +2387,31 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
@media (min-width: 576px) {
.form-inline label {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: center;
-ms-flex-pack: center;
- justify-content: center;
+ justify-content: center;
margin-bottom: 0;
}
.form-inline .form-group {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-flex: 0;
-ms-flex: 0 0 auto;
- flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-flow: row wrap;
- flex-flow: row wrap;
+ flex-flow: row wrap;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
margin-bottom: 0;
}
.form-inline .form-control {
@@ -1903,22 +2425,17 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
.form-inline .input-group {
width: auto;
}
- .form-inline .form-control-label {
- margin-bottom: 0;
- vertical-align: middle;
- }
.form-inline .form-check {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: center;
-ms-flex-pack: center;
- justify-content: center;
+ justify-content: center;
width: auto;
- margin-top: 0;
- margin-bottom: 0;
- }
- .form-inline .form-check-label {
padding-left: 0;
}
.form-inline .form-check-input {
@@ -1928,62 +2445,59 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
margin-left: 0;
}
.form-inline .custom-control {
- display: -ms-flexbox;
- display: flex;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: center;
-ms-flex-pack: center;
- justify-content: center;
- padding-left: 0;
+ justify-content: center;
}
- .form-inline .custom-control-indicator {
- position: static;
- display: inline-block;
- margin-right: 0.25rem;
- vertical-align: text-bottom;
- }
- .form-inline .has-feedback .form-control-feedback {
- top: 0;
+ .form-inline .custom-control-label {
+ margin-bottom: 0;
}
}
.btn {
display: inline-block;
- font-weight: normal;
+ font-weight: 400;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
border: 1px solid transparent;
- padding: 0.5rem 0.75rem;
+ padding: 0.375rem 0.75rem;
font-size: 1rem;
- line-height: 1.25;
+ line-height: 1.5;
border-radius: 0.25rem;
- transition: all 0.15s ease-in-out;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
-.btn:focus, .btn:hover {
+.btn:hover, .btn:focus {
text-decoration: none;
}
.btn:focus, .btn.focus {
outline: 0;
- box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.btn.disabled, .btn:disabled {
- opacity: .65;
+ opacity: 0.65;
+}
+
+.btn:not(:disabled):not(.disabled) {
+ cursor: pointer;
}
-.btn:active, .btn.active {
+.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {
background-image: none;
}
a.btn.disabled,
-fieldset[disabled] a.btn {
+fieldset:disabled a.btn {
pointer-events: none;
}
@@ -2000,47 +2514,59 @@ fieldset[disabled] a.btn {
}
.btn-primary:focus, .btn-primary.focus {
- box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-primary.disabled, .btn-primary:disabled {
+ color: #fff;
background-color: #007bff;
border-color: #007bff;
}
-.btn-primary:active, .btn-primary.active,
+.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle {
- background-color: #0069d9;
- background-image: none;
- border-color: #0062cc;
+ color: #fff;
+ background-color: #0062cc;
+ border-color: #005cbf;
+}
+
+.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-primary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-secondary {
color: #fff;
- background-color: #868e96;
- border-color: #868e96;
+ background-color: #6c757d;
+ border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
- background-color: #727b84;
- border-color: #6c757d;
+ background-color: #5a6268;
+ border-color: #545b62;
}
.btn-secondary:focus, .btn-secondary.focus {
- box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-secondary.disabled, .btn-secondary:disabled {
- background-color: #868e96;
- border-color: #868e96;
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d;
}
-.btn-secondary:active, .btn-secondary.active,
+.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
.show > .btn-secondary.dropdown-toggle {
- background-color: #727b84;
- background-image: none;
- border-color: #6c757d;
+ color: #fff;
+ background-color: #545b62;
+ border-color: #4e555b;
+}
+
+.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-secondary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-success {
@@ -2056,19 +2582,25 @@ fieldset[disabled] a.btn {
}
.btn-success:focus, .btn-success.focus {
- box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-success.disabled, .btn-success:disabled {
+ color: #fff;
background-color: #28a745;
border-color: #28a745;
}
-.btn-success:active, .btn-success.active,
+.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
.show > .btn-success.dropdown-toggle {
- background-color: #218838;
- background-image: none;
- border-color: #1e7e34;
+ color: #fff;
+ background-color: #1e7e34;
+ border-color: #1c7430;
+}
+
+.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
+.show > .btn-success.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-info {
@@ -2084,47 +2616,59 @@ fieldset[disabled] a.btn {
}
.btn-info:focus, .btn-info.focus {
- box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-info.disabled, .btn-info:disabled {
+ color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
-.btn-info:active, .btn-info.active,
+.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
.show > .btn-info.dropdown-toggle {
- background-color: #138496;
- background-image: none;
- border-color: #117a8b;
+ color: #fff;
+ background-color: #117a8b;
+ border-color: #10707f;
+}
+
+.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
+.show > .btn-info.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-warning {
- color: #111;
+ color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:hover {
- color: #111;
+ color: #212529;
background-color: #e0a800;
border-color: #d39e00;
}
.btn-warning:focus, .btn-warning.focus {
- box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-warning.disabled, .btn-warning:disabled {
+ color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
-.btn-warning:active, .btn-warning.active,
+.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
.show > .btn-warning.dropdown-toggle {
- background-color: #e0a800;
- background-image: none;
- border-color: #d39e00;
+ color: #212529;
+ background-color: #d39e00;
+ border-color: #c69500;
+}
+
+.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
+.show > .btn-warning.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-danger {
@@ -2140,47 +2684,59 @@ fieldset[disabled] a.btn {
}
.btn-danger:focus, .btn-danger.focus {
- box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-danger.disabled, .btn-danger:disabled {
+ color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
-.btn-danger:active, .btn-danger.active,
+.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
.show > .btn-danger.dropdown-toggle {
- background-color: #c82333;
- background-image: none;
- border-color: #bd2130;
+ color: #fff;
+ background-color: #bd2130;
+ border-color: #b21f2d;
+}
+
+.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
+.show > .btn-danger.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-light {
- color: #111;
+ color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:hover {
- color: #111;
+ color: #212529;
background-color: #e2e6ea;
border-color: #dae0e5;
}
.btn-light:focus, .btn-light.focus {
- box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-light.disabled, .btn-light:disabled {
+ color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
-.btn-light:active, .btn-light.active,
+.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
.show > .btn-light.dropdown-toggle {
- background-color: #e2e6ea;
- background-image: none;
- border-color: #dae0e5;
+ color: #212529;
+ background-color: #dae0e5;
+ border-color: #d3d9df;
+}
+
+.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
+.show > .btn-light.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-dark {
@@ -2196,19 +2752,25 @@ fieldset[disabled] a.btn {
}
.btn-dark:focus, .btn-dark.focus {
- box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-dark.disabled, .btn-dark:disabled {
+ color: #fff;
background-color: #343a40;
border-color: #343a40;
}
-.btn-dark:active, .btn-dark.active,
+.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
.show > .btn-dark.dropdown-toggle {
- background-color: #23272b;
- background-image: none;
- border-color: #1d2124;
+ color: #fff;
+ background-color: #1d2124;
+ border-color: #171a1d;
+}
+
+.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
+.show > .btn-dark.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-outline-primary {
@@ -2225,7 +2787,7 @@ fieldset[disabled] a.btn {
}
.btn-outline-primary:focus, .btn-outline-primary.focus {
- box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-outline-primary.disabled, .btn-outline-primary:disabled {
@@ -2233,40 +2795,50 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-primary:active, .btn-outline-primary.active,
+.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
.show > .btn-outline-primary.dropdown-toggle {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
+.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-primary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
+}
+
.btn-outline-secondary {
- color: #868e96;
+ color: #6c757d;
background-color: transparent;
background-image: none;
- border-color: #868e96;
+ border-color: #6c757d;
}
.btn-outline-secondary:hover {
color: #fff;
- background-color: #868e96;
- border-color: #868e96;
+ background-color: #6c757d;
+ border-color: #6c757d;
}
.btn-outline-secondary:focus, .btn-outline-secondary.focus {
- box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
- color: #868e96;
+ color: #6c757d;
background-color: transparent;
}
-.btn-outline-secondary:active, .btn-outline-secondary.active,
+.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
.show > .btn-outline-secondary.dropdown-toggle {
color: #fff;
- background-color: #868e96;
- border-color: #868e96;
+ background-color: #6c757d;
+ border-color: #6c757d;
+}
+
+.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-secondary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-outline-success {
@@ -2283,7 +2855,7 @@ fieldset[disabled] a.btn {
}
.btn-outline-success:focus, .btn-outline-success.focus {
- box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-outline-success.disabled, .btn-outline-success:disabled {
@@ -2291,13 +2863,18 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-success:active, .btn-outline-success.active,
+.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
.show > .btn-outline-success.dropdown-toggle {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
+.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-success.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
+}
+
.btn-outline-info {
color: #17a2b8;
background-color: transparent;
@@ -2312,7 +2889,7 @@ fieldset[disabled] a.btn {
}
.btn-outline-info:focus, .btn-outline-info.focus {
- box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-outline-info.disabled, .btn-outline-info:disabled {
@@ -2320,13 +2897,18 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-info:active, .btn-outline-info.active,
+.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
.show > .btn-outline-info.dropdown-toggle {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
+.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-info.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
+}
+
.btn-outline-warning {
color: #ffc107;
background-color: transparent;
@@ -2335,13 +2917,13 @@ fieldset[disabled] a.btn {
}
.btn-outline-warning:hover {
- color: #fff;
+ color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:focus, .btn-outline-warning.focus {
- box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-outline-warning.disabled, .btn-outline-warning:disabled {
@@ -2349,13 +2931,18 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-warning:active, .btn-outline-warning.active,
+.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
.show > .btn-outline-warning.dropdown-toggle {
- color: #fff;
+ color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
+.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-warning.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
+}
+
.btn-outline-danger {
color: #dc3545;
background-color: transparent;
@@ -2370,7 +2957,7 @@ fieldset[disabled] a.btn {
}
.btn-outline-danger:focus, .btn-outline-danger.focus {
- box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-outline-danger.disabled, .btn-outline-danger:disabled {
@@ -2378,13 +2965,18 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-danger:active, .btn-outline-danger.active,
+.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
.show > .btn-outline-danger.dropdown-toggle {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
+.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-danger.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
+}
+
.btn-outline-light {
color: #f8f9fa;
background-color: transparent;
@@ -2393,13 +2985,13 @@ fieldset[disabled] a.btn {
}
.btn-outline-light:hover {
- color: #fff;
+ color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:focus, .btn-outline-light.focus {
- box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-outline-light.disabled, .btn-outline-light:disabled {
@@ -2407,13 +2999,18 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-light:active, .btn-outline-light.active,
+.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
.show > .btn-outline-light.dropdown-toggle {
- color: #fff;
+ color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
+.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-light.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
+}
+
.btn-outline-dark {
color: #343a40;
background-color: transparent;
@@ -2428,7 +3025,7 @@ fieldset[disabled] a.btn {
}
.btn-outline-dark:focus, .btn-outline-dark.focus {
- box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);
+ box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-outline-dark.disabled, .btn-outline-dark:disabled {
@@ -2436,44 +3033,39 @@ fieldset[disabled] a.btn {
background-color: transparent;
}
-.btn-outline-dark:active, .btn-outline-dark.active,
+.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
.show > .btn-outline-dark.dropdown-toggle {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
-.btn-link {
- font-weight: normal;
- color: #007bff;
- border-radius: 0;
+.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
+.show > .btn-outline-dark.dropdown-toggle:focus {
+ box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
-.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {
+.btn-link {
+ font-weight: 400;
+ color: #007bff;
background-color: transparent;
}
-.btn-link, .btn-link:focus, .btn-link:active {
- border-color: transparent;
- box-shadow: none;
-}
-
.btn-link:hover {
- border-color: transparent;
-}
-
-.btn-link:focus, .btn-link:hover {
color: #0056b3;
text-decoration: underline;
background-color: transparent;
+ border-color: transparent;
}
-.btn-link:disabled {
- color: #868e96;
+.btn-link:focus, .btn-link.focus {
+ text-decoration: underline;
+ border-color: transparent;
+ box-shadow: none;
}
-.btn-link:disabled:focus, .btn-link:disabled:hover {
- text-decoration: none;
+.btn-link:disabled, .btn-link.disabled {
+ color: #6c757d;
}
.btn-lg, .btn-group-lg > .btn {
@@ -2551,6 +3143,7 @@ tbody.collapse.show {
content: "";
border-top: 0.3em solid;
border-right: 0.3em solid transparent;
+ border-bottom: 0;
border-left: 0.3em solid transparent;
}
@@ -2558,16 +3151,6 @@ tbody.collapse.show {
margin-left: 0;
}
-.dropup .dropdown-menu {
- margin-top: 0;
- margin-bottom: 0.125rem;
-}
-
-.dropup .dropdown-toggle::after {
- border-top: 0;
- border-bottom: 0.3em solid;
-}
-
.dropdown-menu {
position: absolute;
top: 100%;
@@ -2588,6 +3171,91 @@ tbody.collapse.show {
border-radius: 0.25rem;
}
+.dropup .dropdown-menu {
+ margin-top: 0;
+ margin-bottom: 0.125rem;
+}
+
+.dropup .dropdown-toggle::after {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0.3em solid;
+ border-left: 0.3em solid transparent;
+}
+
+.dropup .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropright .dropdown-menu {
+ margin-top: 0;
+ margin-left: 0.125rem;
+}
+
+.dropright .dropdown-toggle::after {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-bottom: 0.3em solid transparent;
+ border-left: 0.3em solid;
+}
+
+.dropright .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropright .dropdown-toggle::after {
+ vertical-align: 0;
+}
+
+.dropleft .dropdown-menu {
+ margin-top: 0;
+ margin-right: 0.125rem;
+}
+
+.dropleft .dropdown-toggle::after {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+}
+
+.dropleft .dropdown-toggle::after {
+ display: none;
+}
+
+.dropleft .dropdown-toggle::before {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0.3em solid;
+ border-bottom: 0.3em solid transparent;
+}
+
+.dropleft .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropleft .dropdown-toggle::before {
+ vertical-align: 0;
+}
+
.dropdown-divider {
height: 0;
margin: 0.5rem 0;
@@ -2600,15 +3268,15 @@ tbody.collapse.show {
width: 100%;
padding: 0.25rem 1.5rem;
clear: both;
- font-weight: normal;
+ font-weight: 400;
color: #212529;
text-align: inherit;
white-space: nowrap;
- background: none;
+ background-color: transparent;
border: 0;
}
-.dropdown-item:focus, .dropdown-item:hover {
+.dropdown-item:hover, .dropdown-item:focus {
color: #16181b;
text-decoration: none;
background-color: #f8f9fa;
@@ -2621,14 +3289,10 @@ tbody.collapse.show {
}
.dropdown-item.disabled, .dropdown-item:disabled {
- color: #868e96;
+ color: #6c757d;
background-color: transparent;
}
-.show > a {
- outline: 0;
-}
-
.dropdown-menu.show {
display: block;
}
@@ -2638,13 +3302,14 @@ tbody.collapse.show {
padding: 0.5rem 1.5rem;
margin-bottom: 0;
font-size: 0.875rem;
- color: #868e96;
+ color: #6c757d;
white-space: nowrap;
}
.btn-group,
.btn-group-vertical {
position: relative;
+ display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
vertical-align: middle;
@@ -2653,21 +3318,21 @@ tbody.collapse.show {
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
+ -webkit-box-flex: 0;
-ms-flex: 0 1 auto;
- flex: 0 1 auto;
- margin-bottom: 0;
+ flex: 0 1 auto;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover {
- z-index: 2;
+ z-index: 1;
}
.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
.btn-group-vertical > .btn:focus,
.btn-group-vertical > .btn:active,
.btn-group-vertical > .btn.active {
- z-index: 2;
+ z-index: 1;
}
.btn-group .btn + .btn,
@@ -2682,62 +3347,42 @@ tbody.collapse.show {
}
.btn-toolbar {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-pack: start;
-ms-flex-pack: start;
- justify-content: flex-start;
+ justify-content: flex-start;
}
.btn-toolbar .input-group {
width: auto;
}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius: 0;
-}
-
.btn-group > .btn:first-child {
margin-left: 0;
}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-
-.btn-group > .btn-group {
- float: left;
-}
-
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-
-.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn-group:not(:last-child) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
-.btn + .dropdown-toggle-split {
+.dropdown-toggle-split {
padding-right: 0.5625rem;
padding-left: 0.5625rem;
}
-.btn + .dropdown-toggle-split::after {
+.dropdown-toggle-split::after {
margin-left: 0;
}
@@ -2752,14 +3397,16 @@ tbody.collapse.show {
}
.btn-group-vertical {
- display: -ms-inline-flexbox;
- display: inline-flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
-ms-flex-direction: column;
- flex-direction: column;
+ flex-direction: column;
+ -webkit-box-align: start;
-ms-flex-align: start;
- align-items: flex-start;
+ align-items: flex-start;
+ -webkit-box-pack: center;
-ms-flex-pack: center;
- justify-content: center;
+ justify-content: center;
}
.btn-group-vertical .btn,
@@ -2775,39 +3422,27 @@ tbody.collapse.show {
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) {
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group-vertical > .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-top-right-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-left-radius: 0;
- border-top-right-radius: 0;
+.btn-group-toggle > .btn,
+.btn-group-toggle > .btn-group > .btn {
+ margin-bottom: 0;
}
-[data-toggle="buttons"] > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+.btn-group-toggle > .btn input[type="radio"],
+.btn-group-toggle > .btn input[type="checkbox"],
+.btn-group-toggle > .btn-group > .btn input[type="radio"],
+.btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
@@ -2815,151 +3450,167 @@ tbody.collapse.show {
.input-group {
position: relative;
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
width: 100%;
}
-.input-group .form-control {
+.input-group > .form-control,
+.input-group > .custom-select,
+.input-group > .custom-file {
position: relative;
- z-index: 2;
+ -webkit-box-flex: 1;
-ms-flex: 1 1 auto;
- flex: 1 1 auto;
+ flex: 1 1 auto;
width: 1%;
margin-bottom: 0;
}
-.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {
+.input-group > .form-control:focus,
+.input-group > .custom-select:focus,
+.input-group > .custom-file:focus {
z-index: 3;
}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-align: center;
- align-items: center;
-}
-
-.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 {
- white-space: nowrap;
- vertical-align: middle;
-}
-
-.input-group-addon {
- padding: 0.5rem 0.75rem;
- margin-bottom: 0;
- font-size: 1rem;
- font-weight: normal;
- line-height: 1.25;
- color: #495057;
- text-align: center;
- background-color: #e9ecef;
- border: 1px solid rgba(0, 0, 0, 0.15);
- border-radius: 0.25rem;
+.input-group > .form-control + .form-control,
+.input-group > .form-control + .custom-select,
+.input-group > .form-control + .custom-file,
+.input-group > .custom-select + .form-control,
+.input-group > .custom-select + .custom-select,
+.input-group > .custom-select + .custom-file,
+.input-group > .custom-file + .form-control,
+.input-group > .custom-file + .custom-select,
+.input-group > .custom-file + .custom-file {
+ margin-left: -1px;
}
-.input-group-addon.form-control-sm,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .input-group-addon.btn {
- padding: 0.25rem 0.5rem;
- font-size: 0.875rem;
- border-radius: 0.2rem;
+.input-group > .form-control:not(:last-child),
+.input-group > .custom-select:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
}
-.input-group-addon.form-control-lg,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .input-group-addon.btn {
- padding: 0.5rem 1rem;
- font-size: 1.25rem;
- border-radius: 0.3rem;
+.input-group > .form-control:not(:first-child),
+.input-group > .custom-select:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
- margin-top: 0;
+.input-group > .custom-file {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
}
-.input-group .form-control:not(:last-child),
-.input-group-addon:not(:last-child),
-.input-group-btn:not(:last-child) > .btn,
-.input-group-btn:not(:last-child) > .btn-group > .btn,
-.input-group-btn:not(:last-child) > .dropdown-toggle,
-.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {
+.input-group > .custom-file:not(:last-child) .custom-file-label,
+.input-group > .custom-file:not(:last-child) .custom-file-label::before {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
-.input-group-addon:not(:last-child) {
- border-right: 0;
-}
-
-.input-group .form-control:not(:first-child),
-.input-group-addon:not(:first-child),
-.input-group-btn:not(:first-child) > .btn,
-.input-group-btn:not(:first-child) > .btn-group > .btn,
-.input-group-btn:not(:first-child) > .dropdown-toggle,
-.input-group-btn:not(:last-child) > .btn:not(:first-child),
-.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {
+.input-group > .custom-file:not(:first-child) .custom-file-label,
+.input-group > .custom-file:not(:first-child) .custom-file-label::before {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
-.form-control + .input-group-addon:not(:first-child) {
- border-left: 0;
+.input-group-prepend,
+.input-group-append {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
}
-.input-group-btn {
+.input-group-prepend .btn,
+.input-group-append .btn {
position: relative;
- font-size: 0;
- white-space: nowrap;
+ z-index: 2;
}
-.input-group-btn > .btn {
- position: relative;
+.input-group-prepend .btn + .btn,
+.input-group-prepend .btn + .input-group-text,
+.input-group-prepend .input-group-text + .input-group-text,
+.input-group-prepend .input-group-text + .btn,
+.input-group-append .btn + .btn,
+.input-group-append .btn + .input-group-text,
+.input-group-append .input-group-text + .input-group-text,
+.input-group-append .input-group-text + .btn {
+ margin-left: -1px;
+}
+
+.input-group-prepend {
+ margin-right: -1px;
}
-.input-group-btn > .btn + .btn {
+.input-group-append {
margin-left: -1px;
}
-.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {
- z-index: 3;
+.input-group-text {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding: 0.375rem 0.75rem;
+ margin-bottom: 0;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #495057;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #e9ecef;
+ border: 1px solid #ced4da;
+ border-radius: 0.25rem;
}
-.input-group-btn:not(:last-child) > .btn,
-.input-group-btn:not(:last-child) > .btn-group {
- margin-right: -1px;
+.input-group-text input[type="radio"],
+.input-group-text input[type="checkbox"] {
+ margin-top: 0;
}
-.input-group-btn:not(:first-child) > .btn,
-.input-group-btn:not(:first-child) > .btn-group {
- z-index: 2;
- margin-left: -1px;
+.input-group > .input-group-prepend > .btn,
+.input-group > .input-group-prepend > .input-group-text,
+.input-group > .input-group-append:not(:last-child) > .btn,
+.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
}
-.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,
-.input-group-btn:not(:first-child) > .btn-group:focus,
-.input-group-btn:not(:first-child) > .btn-group:active,
-.input-group-btn:not(:first-child) > .btn-group:hover {
- z-index: 3;
+.input-group > .input-group-append > .btn,
+.input-group > .input-group-append > .input-group-text,
+.input-group > .input-group-prepend:not(:first-child) > .btn,
+.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
+.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
+.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
}
.custom-control {
position: relative;
- display: -ms-inline-flexbox;
- display: inline-flex;
+ display: block;
min-height: 1.5rem;
padding-left: 1.5rem;
+}
+
+.custom-control-inline {
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
margin-right: 1rem;
}
@@ -2969,29 +3620,33 @@ tbody.collapse.show {
opacity: 0;
}
-.custom-control-input:checked ~ .custom-control-indicator {
+.custom-control-input:checked ~ .custom-control-label::before {
color: #fff;
background-color: #007bff;
}
-.custom-control-input:focus ~ .custom-control-indicator {
- box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff;
+.custom-control-input:focus ~ .custom-control-label::before {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
-.custom-control-input:active ~ .custom-control-indicator {
+.custom-control-input:active ~ .custom-control-label::before {
color: #fff;
background-color: #b3d7ff;
}
-.custom-control-input:disabled ~ .custom-control-indicator {
+.custom-control-input:disabled ~ .custom-control-label {
+ color: #6c757d;
+}
+
+.custom-control-input:disabled ~ .custom-control-label::before {
background-color: #e9ecef;
}
-.custom-control-input:disabled ~ .custom-control-description {
- color: #868e96;
+.custom-control-label {
+ margin-bottom: 0;
}
-.custom-control-indicator {
+.custom-control-label::before {
position: absolute;
top: 0.25rem;
left: 0;
@@ -2999,72 +3654,92 @@ tbody.collapse.show {
width: 1rem;
height: 1rem;
pointer-events: none;
+ content: "";
-webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- background-color: #ddd;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: #dee2e6;
+}
+
+.custom-control-label::after {
+ position: absolute;
+ top: 0.25rem;
+ left: 0;
+ display: block;
+ width: 1rem;
+ height: 1rem;
+ content: "";
background-repeat: no-repeat;
background-position: center center;
background-size: 50% 50%;
}
-.custom-checkbox .custom-control-indicator {
+.custom-checkbox .custom-control-label::before {
border-radius: 0.25rem;
}
-.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
+ background-color: #007bff;
+}
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E");
}
-.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
background-color: #007bff;
+}
+
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E");
}
-.custom-radio .custom-control-indicator {
- border-radius: 50%;
+.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
+ background-color: rgba(0, 123, 255, 0.5);
}
-.custom-radio .custom-control-input:checked ~ .custom-control-indicator {
- background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E");
+.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
+ background-color: rgba(0, 123, 255, 0.5);
}
-.custom-controls-stacked {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-direction: column;
- flex-direction: column;
+.custom-radio .custom-control-label::before {
+ border-radius: 50%;
}
-.custom-controls-stacked .custom-control {
- margin-bottom: 0.25rem;
+.custom-radio .custom-control-input:checked ~ .custom-control-label::before {
+ background-color: #007bff;
}
-.custom-controls-stacked .custom-control + .custom-control {
- margin-left: 0;
+.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E");
+}
+
+.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
+ background-color: rgba(0, 123, 255, 0.5);
}
.custom-select {
display: inline-block;
- max-width: 100%;
+ width: 100%;
height: calc(2.25rem + 2px);
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
- line-height: 1.25;
+ line-height: 1.5;
color: #495057;
vertical-align: middle;
- background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;
+ background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;
background-size: 8px 10px;
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border: 1px solid #ced4da;
border-radius: 0.25rem;
-webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
+ -moz-appearance: none;
+ appearance: none;
}
.custom-select:focus {
border-color: #80bdff;
- outline: none;
+ outline: 0;
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);
}
.custom-select:focus::-ms-value {
@@ -3072,8 +3747,14 @@ tbody.collapse.show {
background-color: #fff;
}
+.custom-select[multiple], .custom-select[size]:not([size="1"]) {
+ height: auto;
+ padding-right: 0.75rem;
+ background-image: none;
+}
+
.custom-select:disabled {
- color: #868e96;
+ color: #6c757d;
background-color: #e9ecef;
}
@@ -3088,71 +3769,81 @@ tbody.collapse.show {
font-size: 75%;
}
+.custom-select-lg {
+ height: calc(2.875rem + 2px);
+ padding-top: 0.375rem;
+ padding-bottom: 0.375rem;
+ font-size: 125%;
+}
+
.custom-file {
position: relative;
display: inline-block;
- max-width: 100%;
- height: 2.5rem;
+ width: 100%;
+ height: calc(2.25rem + 2px);
margin-bottom: 0;
}
.custom-file-input {
- min-width: 14rem;
- max-width: 100%;
- height: 2.5rem;
+ position: relative;
+ z-index: 2;
+ width: 100%;
+ height: calc(2.25rem + 2px);
margin: 0;
opacity: 0;
}
-.custom-file-control {
+.custom-file-input:focus ~ .custom-file-control {
+ border-color: #80bdff;
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
+}
+
+.custom-file-input:focus ~ .custom-file-control::before {
+ border-color: #80bdff;
+}
+
+.custom-file-input:lang(en) ~ .custom-file-label::after {
+ content: "Browse";
+}
+
+.custom-file-label {
position: absolute;
top: 0;
right: 0;
left: 0;
- z-index: 5;
- height: 2.5rem;
- padding: 0.5rem 1rem;
+ z-index: 1;
+ height: calc(2.25rem + 2px);
+ padding: 0.375rem 0.75rem;
line-height: 1.5;
color: #495057;
- pointer-events: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
background-color: #fff;
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border: 1px solid #ced4da;
border-radius: 0.25rem;
}
-.custom-file-control:lang(en):empty::after {
- content: "Choose file...";
-}
-
-.custom-file-control::before {
+.custom-file-label::after {
position: absolute;
- top: -1px;
- right: -1px;
- bottom: -1px;
- z-index: 6;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 3;
display: block;
- height: 2.5rem;
- padding: 0.5rem 1rem;
+ height: calc(calc(2.25rem + 2px) - 1px * 2);
+ padding: 0.375rem 0.75rem;
line-height: 1.5;
color: #495057;
+ content: "Browse";
background-color: #e9ecef;
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border-left: 1px solid #ced4da;
border-radius: 0 0.25rem 0.25rem 0;
}
-.custom-file-control:lang(en)::before {
- content: "Browse";
-}
-
.nav {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
@@ -3163,16 +3854,16 @@ tbody.collapse.show {
padding: 0.5rem 1rem;
}
-.nav-link:focus, .nav-link:hover {
+.nav-link:hover, .nav-link:focus {
text-decoration: none;
}
.nav-link.disabled {
- color: #868e96;
+ color: #6c757d;
}
.nav-tabs {
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid #dee2e6;
}
.nav-tabs .nav-item {
@@ -3185,12 +3876,12 @@ tbody.collapse.show {
border-top-right-radius: 0.25rem;
}
-.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {
- border-color: #e9ecef #e9ecef #ddd;
+.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+ border-color: #e9ecef #e9ecef #dee2e6;
}
.nav-tabs .nav-link.disabled {
- color: #868e96;
+ color: #6c757d;
background-color: transparent;
border-color: transparent;
}
@@ -3199,7 +3890,7 @@ tbody.collapse.show {
.nav-tabs .nav-item.show .nav-link {
color: #495057;
background-color: #fff;
- border-color: #ddd #ddd #fff;
+ border-color: #dee2e6 #dee2e6 #fff;
}
.nav-tabs .dropdown-menu {
@@ -3213,22 +3904,24 @@ tbody.collapse.show {
}
.nav-pills .nav-link.active,
-.show > .nav-pills .nav-link {
+.nav-pills .show > .nav-link {
color: #fff;
background-color: #007bff;
}
.nav-fill .nav-item {
+ -webkit-box-flex: 1;
-ms-flex: 1 1 auto;
- flex: 1 1 auto;
+ flex: 1 1 auto;
text-align: center;
}
.nav-justified .nav-item {
-ms-flex-preferred-size: 0;
- flex-basis: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
-ms-flex-positive: 1;
- flex-grow: 1;
+ flex-grow: 1;
text-align: center;
}
@@ -3242,27 +3935,33 @@ tbody.collapse.show {
.navbar {
position: relative;
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: justify;
-ms-flex-pack: justify;
- justify-content: space-between;
+ justify-content: space-between;
padding: 0.5rem 1rem;
}
.navbar > .container,
.navbar > .container-fluid {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: justify;
-ms-flex-pack: justify;
- justify-content: space-between;
+ justify-content: space-between;
}
.navbar-brand {
@@ -3275,15 +3974,18 @@ tbody.collapse.show {
white-space: nowrap;
}
-.navbar-brand:focus, .navbar-brand:hover {
+.navbar-brand:hover, .navbar-brand:focus {
text-decoration: none;
}
.navbar-nav {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
-ms-flex-direction: column;
- flex-direction: column;
+ flex-direction: column;
padding-left: 0;
margin-bottom: 0;
list-style: none;
@@ -3307,24 +4009,32 @@ tbody.collapse.show {
.navbar-collapse {
-ms-flex-preferred-size: 100%;
- flex-basis: 100%;
+ flex-basis: 100%;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
}
.navbar-toggler {
padding: 0.25rem 0.75rem;
font-size: 1.25rem;
line-height: 1;
- background: transparent;
+ background-color: transparent;
border: 1px solid transparent;
border-radius: 0.25rem;
}
-.navbar-toggler:focus, .navbar-toggler:hover {
+.navbar-toggler:hover, .navbar-toggler:focus {
text-decoration: none;
}
+.navbar-toggler:not(:disabled):not(.disabled) {
+ cursor: pointer;
+}
+
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
@@ -3335,7 +4045,7 @@ tbody.collapse.show {
background-size: 100% 100%;
}
-@media (max-width: 575px) {
+@media (max-width: 575.98px) {
.navbar-expand-sm > .container,
.navbar-expand-sm > .container-fluid {
padding-right: 0;
@@ -3345,16 +4055,19 @@ tbody.collapse.show {
@media (min-width: 576px) {
.navbar-expand-sm {
- -ms-flex-direction: row;
- flex-direction: row;
- -ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-flow: row nowrap;
+ flex-flow: row nowrap;
+ -webkit-box-pack: start;
-ms-flex-pack: start;
- justify-content: flex-start;
+ justify-content: flex-start;
}
.navbar-expand-sm .navbar-nav {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-direction: row;
- flex-direction: row;
+ flex-direction: row;
}
.navbar-expand-sm .navbar-nav .dropdown-menu {
position: absolute;
@@ -3364,24 +4077,31 @@ tbody.collapse.show {
left: auto;
}
.navbar-expand-sm .navbar-nav .nav-link {
- padding-right: .5rem;
- padding-left: .5rem;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
}
.navbar-expand-sm > .container,
.navbar-expand-sm > .container-fluid {
-ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ flex-wrap: nowrap;
}
.navbar-expand-sm .navbar-collapse {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
}
.navbar-expand-sm .navbar-toggler {
display: none;
}
+ .navbar-expand-sm .dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ }
}
-@media (max-width: 767px) {
+@media (max-width: 767.98px) {
.navbar-expand-md > .container,
.navbar-expand-md > .container-fluid {
padding-right: 0;
@@ -3391,16 +4111,19 @@ tbody.collapse.show {
@media (min-width: 768px) {
.navbar-expand-md {
- -ms-flex-direction: row;
- flex-direction: row;
- -ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-flow: row nowrap;
+ flex-flow: row nowrap;
+ -webkit-box-pack: start;
-ms-flex-pack: start;
- justify-content: flex-start;
+ justify-content: flex-start;
}
.navbar-expand-md .navbar-nav {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-direction: row;
- flex-direction: row;
+ flex-direction: row;
}
.navbar-expand-md .navbar-nav .dropdown-menu {
position: absolute;
@@ -3410,24 +4133,31 @@ tbody.collapse.show {
left: auto;
}
.navbar-expand-md .navbar-nav .nav-link {
- padding-right: .5rem;
- padding-left: .5rem;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
}
.navbar-expand-md > .container,
.navbar-expand-md > .container-fluid {
-ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ flex-wrap: nowrap;
}
.navbar-expand-md .navbar-collapse {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
}
.navbar-expand-md .navbar-toggler {
display: none;
}
+ .navbar-expand-md .dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ }
}
-@media (max-width: 991px) {
+@media (max-width: 991.98px) {
.navbar-expand-lg > .container,
.navbar-expand-lg > .container-fluid {
padding-right: 0;
@@ -3437,16 +4167,19 @@ tbody.collapse.show {
@media (min-width: 992px) {
.navbar-expand-lg {
- -ms-flex-direction: row;
- flex-direction: row;
- -ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-flow: row nowrap;
+ flex-flow: row nowrap;
+ -webkit-box-pack: start;
-ms-flex-pack: start;
- justify-content: flex-start;
+ justify-content: flex-start;
}
.navbar-expand-lg .navbar-nav {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-direction: row;
- flex-direction: row;
+ flex-direction: row;
}
.navbar-expand-lg .navbar-nav .dropdown-menu {
position: absolute;
@@ -3456,24 +4189,31 @@ tbody.collapse.show {
left: auto;
}
.navbar-expand-lg .navbar-nav .nav-link {
- padding-right: .5rem;
- padding-left: .5rem;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
}
.navbar-expand-lg > .container,
.navbar-expand-lg > .container-fluid {
-ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ flex-wrap: nowrap;
}
.navbar-expand-lg .navbar-collapse {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
}
.navbar-expand-lg .navbar-toggler {
display: none;
}
+ .navbar-expand-lg .dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ }
}
-@media (max-width: 1199px) {
+@media (max-width: 1199.98px) {
.navbar-expand-xl > .container,
.navbar-expand-xl > .container-fluid {
padding-right: 0;
@@ -3483,16 +4223,19 @@ tbody.collapse.show {
@media (min-width: 1200px) {
.navbar-expand-xl {
- -ms-flex-direction: row;
- flex-direction: row;
- -ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-flow: row nowrap;
+ flex-flow: row nowrap;
+ -webkit-box-pack: start;
-ms-flex-pack: start;
- justify-content: flex-start;
+ justify-content: flex-start;
}
.navbar-expand-xl .navbar-nav {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-direction: row;
- flex-direction: row;
+ flex-direction: row;
}
.navbar-expand-xl .navbar-nav .dropdown-menu {
position: absolute;
@@ -3502,30 +4245,38 @@ tbody.collapse.show {
left: auto;
}
.navbar-expand-xl .navbar-nav .nav-link {
- padding-right: .5rem;
- padding-left: .5rem;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
}
.navbar-expand-xl > .container,
.navbar-expand-xl > .container-fluid {
-ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ flex-wrap: nowrap;
}
.navbar-expand-xl .navbar-collapse {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
}
.navbar-expand-xl .navbar-toggler {
display: none;
}
+ .navbar-expand-xl .dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ }
}
.navbar-expand {
- -ms-flex-direction: row;
- flex-direction: row;
- -ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-flow: row nowrap;
+ flex-flow: row nowrap;
+ -webkit-box-pack: start;
-ms-flex-pack: start;
- justify-content: flex-start;
+ justify-content: flex-start;
}
.navbar-expand > .container,
@@ -3535,8 +4286,10 @@ tbody.collapse.show {
}
.navbar-expand .navbar-nav {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-direction: row;
- flex-direction: row;
+ flex-direction: row;
}
.navbar-expand .navbar-nav .dropdown-menu {
@@ -3549,30 +4302,38 @@ tbody.collapse.show {
}
.navbar-expand .navbar-nav .nav-link {
- padding-right: .5rem;
- padding-left: .5rem;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
}
.navbar-expand > .container,
.navbar-expand > .container-fluid {
-ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ flex-wrap: nowrap;
}
.navbar-expand .navbar-collapse {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
}
.navbar-expand .navbar-toggler {
display: none;
}
+.navbar-expand .dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+}
+
.navbar-light .navbar-brand {
color: rgba(0, 0, 0, 0.9);
}
-.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {
+.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
color: rgba(0, 0, 0, 0.9);
}
@@ -3580,7 +4341,7 @@ tbody.collapse.show {
color: rgba(0, 0, 0, 0.5);
}
-.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {
+.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
color: rgba(0, 0, 0, 0.7);
}
@@ -3608,19 +4369,27 @@ tbody.collapse.show {
color: rgba(0, 0, 0, 0.5);
}
+.navbar-light .navbar-text a {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {
+ color: rgba(0, 0, 0, 0.9);
+}
+
.navbar-dark .navbar-brand {
- color: white;
+ color: #fff;
}
-.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {
- color: white;
+.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
+ color: #fff;
}
.navbar-dark .navbar-nav .nav-link {
color: rgba(255, 255, 255, 0.5);
}
-.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {
+.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
color: rgba(255, 255, 255, 0.75);
}
@@ -3632,7 +4401,7 @@ tbody.collapse.show {
.navbar-dark .navbar-nav .active > .nav-link,
.navbar-dark .navbar-nav .nav-link.show,
.navbar-dark .navbar-nav .nav-link.active {
- color: white;
+ color: #fff;
}
.navbar-dark .navbar-toggler {
@@ -3648,12 +4417,23 @@ tbody.collapse.show {
color: rgba(255, 255, 255, 0.5);
}
+.navbar-dark .navbar-text a {
+ color: #fff;
+}
+
+.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {
+ color: #fff;
+}
+
.card {
position: relative;
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
-ms-flex-direction: column;
- flex-direction: column;
+ flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #fff;
@@ -3662,9 +4442,25 @@ tbody.collapse.show {
border-radius: 0.25rem;
}
+.card > hr {
+ margin-right: 0;
+ margin-left: 0;
+}
+
+.card > .list-group:first-child .list-group-item:first-child {
+ border-top-left-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+}
+
+.card > .list-group:last-child .list-group-item:last-child {
+ border-bottom-right-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+}
+
.card-body {
+ -webkit-box-flex: 1;
-ms-flex: 1 1 auto;
- flex: 1 1 auto;
+ flex: 1 1 auto;
padding: 1.25rem;
}
@@ -3689,16 +4485,6 @@ tbody.collapse.show {
margin-left: 1.25rem;
}
-.card > .list-group:first-child .list-group-item:first-child {
- border-top-left-radius: 0.25rem;
- border-top-right-radius: 0.25rem;
-}
-
-.card > .list-group:last-child .list-group-item:last-child {
- border-bottom-right-radius: 0.25rem;
- border-bottom-left-radius: 0.25rem;
-}
-
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
@@ -3710,6 +4496,10 @@ tbody.collapse.show {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
+.card-header + .list-group .list-group-item:first-child {
+ border-top: 0;
+}
+
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
@@ -3758,67 +4548,121 @@ tbody.collapse.show {
border-bottom-left-radius: calc(0.25rem - 1px);
}
+.card-deck {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.card-deck .card {
+ margin-bottom: 15px;
+}
+
@media (min-width: 576px) {
.card-deck {
- display: -ms-flexbox;
- display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-flow: row wrap;
- flex-flow: row wrap;
+ flex-flow: row wrap;
margin-right: -15px;
margin-left: -15px;
}
.card-deck .card {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-flex: 1;
-ms-flex: 1 0 0%;
- flex: 1 0 0%;
+ flex: 1 0 0%;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
-ms-flex-direction: column;
- flex-direction: column;
+ flex-direction: column;
margin-right: 15px;
+ margin-bottom: 0;
margin-left: 15px;
}
}
+.card-group {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.card-group > .card {
+ margin-bottom: 15px;
+}
+
@media (min-width: 576px) {
.card-group {
- display: -ms-flexbox;
- display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
-ms-flex-flow: row wrap;
- flex-flow: row wrap;
+ flex-flow: row wrap;
}
- .card-group .card {
+ .card-group > .card {
+ -webkit-box-flex: 1;
-ms-flex: 1 0 0%;
- flex: 1 0 0%;
+ flex: 1 0 0%;
+ margin-bottom: 0;
}
- .card-group .card + .card {
+ .card-group > .card + .card {
margin-left: 0;
border-left: 0;
}
- .card-group .card:first-child {
+ .card-group > .card:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
- .card-group .card:first-child .card-img-top {
+ .card-group > .card:first-child .card-img-top,
+ .card-group > .card:first-child .card-header {
border-top-right-radius: 0;
}
- .card-group .card:first-child .card-img-bottom {
+ .card-group > .card:first-child .card-img-bottom,
+ .card-group > .card:first-child .card-footer {
border-bottom-right-radius: 0;
}
- .card-group .card:last-child {
+ .card-group > .card:last-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
- .card-group .card:last-child .card-img-top {
+ .card-group > .card:last-child .card-img-top,
+ .card-group > .card:last-child .card-header {
border-top-left-radius: 0;
}
- .card-group .card:last-child .card-img-bottom {
+ .card-group > .card:last-child .card-img-bottom,
+ .card-group > .card:last-child .card-footer {
border-bottom-left-radius: 0;
}
- .card-group .card:not(:first-child):not(:last-child) {
+ .card-group > .card:only-child {
+ border-radius: 0.25rem;
+ }
+ .card-group > .card:only-child .card-img-top,
+ .card-group > .card:only-child .card-header {
+ border-top-left-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+ }
+ .card-group > .card:only-child .card-img-bottom,
+ .card-group > .card:only-child .card-footer {
+ border-bottom-right-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+ }
+ .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {
border-radius: 0;
}
- .card-group .card:not(:first-child):not(:last-child) .card-img-top,
- .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {
+ .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
+ .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,
+ .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,
+ .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {
border-radius: 0;
}
}
@@ -3830,9 +4674,11 @@ tbody.collapse.show {
@media (min-width: 576px) {
.card-columns {
-webkit-column-count: 3;
- column-count: 3;
+ -moz-column-count: 3;
+ column-count: 3;
-webkit-column-gap: 1.25rem;
- column-gap: 1.25rem;
+ -moz-column-gap: 1.25rem;
+ column-gap: 1.25rem;
}
.card-columns .card {
display: inline-block;
@@ -3841,6 +4687,11 @@ tbody.collapse.show {
}
.breadcrumb {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
padding: 0.75rem 1rem;
margin-bottom: 1rem;
list-style: none;
@@ -3848,21 +4699,11 @@ tbody.collapse.show {
border-radius: 0.25rem;
}
-.breadcrumb::after {
- display: block;
- clear: both;
- content: "";
-}
-
-.breadcrumb-item {
- float: left;
-}
-
.breadcrumb-item + .breadcrumb-item::before {
display: inline-block;
padding-right: 0.5rem;
padding-left: 0.5rem;
- color: #868e96;
+ color: #6c757d;
content: "/";
}
@@ -3875,10 +4716,11 @@ tbody.collapse.show {
}
.breadcrumb-item.active {
- color: #868e96;
+ color: #6c757d;
}
.pagination {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding-left: 0;
@@ -3886,6 +4728,34 @@ tbody.collapse.show {
border-radius: 0.25rem;
}
+.page-link {
+ position: relative;
+ display: block;
+ padding: 0.5rem 0.75rem;
+ margin-left: -1px;
+ line-height: 1.25;
+ color: #007bff;
+ background-color: #fff;
+ border: 1px solid #dee2e6;
+}
+
+.page-link:hover {
+ color: #0056b3;
+ text-decoration: none;
+ background-color: #e9ecef;
+ border-color: #dee2e6;
+}
+
+.page-link:focus {
+ z-index: 2;
+ outline: 0;
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
+}
+
+.page-link:not(:disabled):not(.disabled) {
+ cursor: pointer;
+}
+
.page-item:first-child .page-link {
margin-left: 0;
border-top-left-radius: 0.25rem;
@@ -3898,35 +4768,18 @@ tbody.collapse.show {
}
.page-item.active .page-link {
- z-index: 2;
+ z-index: 1;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.page-item.disabled .page-link {
- color: #868e96;
+ color: #6c757d;
pointer-events: none;
+ cursor: auto;
background-color: #fff;
- border-color: #ddd;
-}
-
-.page-link {
- position: relative;
- display: block;
- padding: 0.5rem 0.75rem;
- margin-left: -1px;
- line-height: 1.25;
- color: #007bff;
- background-color: #fff;
- border: 1px solid #ddd;
-}
-
-.page-link:focus, .page-link:hover {
- color: #0056b3;
- text-decoration: none;
- background-color: #e9ecef;
- border-color: #ddd;
+ border-color: #dee2e6;
}
.pagination-lg .page-link {
@@ -3965,9 +4818,8 @@ tbody.collapse.show {
display: inline-block;
padding: 0.25em 0.4em;
font-size: 75%;
- font-weight: bold;
+ font-weight: 700;
line-height: 1;
- color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
@@ -3994,7 +4846,7 @@ tbody.collapse.show {
background-color: #007bff;
}
-.badge-primary[href]:focus, .badge-primary[href]:hover {
+.badge-primary[href]:hover, .badge-primary[href]:focus {
color: #fff;
text-decoration: none;
background-color: #0062cc;
@@ -4002,13 +4854,13 @@ tbody.collapse.show {
.badge-secondary {
color: #fff;
- background-color: #868e96;
+ background-color: #6c757d;
}
-.badge-secondary[href]:focus, .badge-secondary[href]:hover {
+.badge-secondary[href]:hover, .badge-secondary[href]:focus {
color: #fff;
text-decoration: none;
- background-color: #6c757d;
+ background-color: #545b62;
}
.badge-success {
@@ -4016,7 +4868,7 @@ tbody.collapse.show {
background-color: #28a745;
}
-.badge-success[href]:focus, .badge-success[href]:hover {
+.badge-success[href]:hover, .badge-success[href]:focus {
color: #fff;
text-decoration: none;
background-color: #1e7e34;
@@ -4027,19 +4879,19 @@ tbody.collapse.show {
background-color: #17a2b8;
}
-.badge-info[href]:focus, .badge-info[href]:hover {
+.badge-info[href]:hover, .badge-info[href]:focus {
color: #fff;
text-decoration: none;
background-color: #117a8b;
}
.badge-warning {
- color: #111;
+ color: #212529;
background-color: #ffc107;
}
-.badge-warning[href]:focus, .badge-warning[href]:hover {
- color: #111;
+.badge-warning[href]:hover, .badge-warning[href]:focus {
+ color: #212529;
text-decoration: none;
background-color: #d39e00;
}
@@ -4049,19 +4901,19 @@ tbody.collapse.show {
background-color: #dc3545;
}
-.badge-danger[href]:focus, .badge-danger[href]:hover {
+.badge-danger[href]:hover, .badge-danger[href]:focus {
color: #fff;
text-decoration: none;
background-color: #bd2130;
}
.badge-light {
- color: #111;
+ color: #212529;
background-color: #f8f9fa;
}
-.badge-light[href]:focus, .badge-light[href]:hover {
- color: #111;
+.badge-light[href]:hover, .badge-light[href]:focus {
+ color: #212529;
text-decoration: none;
background-color: #dae0e5;
}
@@ -4071,7 +4923,7 @@ tbody.collapse.show {
background-color: #343a40;
}
-.badge-dark[href]:focus, .badge-dark[href]:hover {
+.badge-dark[href]:hover, .badge-dark[href]:focus {
color: #fff;
text-decoration: none;
background-color: #1d2124;
@@ -4097,6 +4949,7 @@ tbody.collapse.show {
}
.alert {
+ position: relative;
padding: 0.75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid transparent;
@@ -4108,13 +4961,17 @@ tbody.collapse.show {
}
.alert-link {
- font-weight: bold;
+ font-weight: 700;
+}
+
+.alert-dismissible {
+ padding-right: 4rem;
}
.alert-dismissible .close {
- position: relative;
- top: -0.75rem;
- right: -1.25rem;
+ position: absolute;
+ top: 0;
+ right: 0;
padding: 0.75rem 1.25rem;
color: inherit;
}
@@ -4134,17 +4991,17 @@ tbody.collapse.show {
}
.alert-secondary {
- color: #464a4e;
- background-color: #e7e8ea;
- border-color: #dddfe2;
+ color: #383d41;
+ background-color: #e2e3e5;
+ border-color: #d6d8db;
}
.alert-secondary hr {
- border-top-color: #cfd2d6;
+ border-top-color: #c8cbcf;
}
.alert-secondary .alert-link {
- color: #2e3133;
+ color: #202326;
}
.alert-success {
@@ -4250,20 +5107,29 @@ tbody.collapse.show {
}
.progress {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ height: 1rem;
overflow: hidden;
font-size: 0.75rem;
- line-height: 1rem;
- text-align: center;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.progress-bar {
- height: 1rem;
- line-height: 1rem;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
color: #fff;
+ text-align: center;
background-color: #007bff;
transition: width 0.6s ease;
}
@@ -4275,26 +5141,32 @@ tbody.collapse.show {
.progress-bar-animated {
-webkit-animation: progress-bar-stripes 1s linear infinite;
- animation: progress-bar-stripes 1s linear infinite;
+ animation: progress-bar-stripes 1s linear infinite;
}
.media {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-align: start;
-ms-flex-align: start;
- align-items: flex-start;
+ align-items: flex-start;
}
.media-body {
+ -webkit-box-flex: 1;
-ms-flex: 1;
- flex: 1;
+ flex: 1;
}
.list-group {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
-ms-flex-direction: column;
- flex-direction: column;
+ flex-direction: column;
padding-left: 0;
margin-bottom: 0;
}
@@ -4305,7 +5177,7 @@ tbody.collapse.show {
text-align: inherit;
}
-.list-group-item-action:focus, .list-group-item-action:hover {
+.list-group-item-action:hover, .list-group-item-action:focus {
color: #495057;
text-decoration: none;
background-color: #f8f9fa;
@@ -4336,12 +5208,13 @@ tbody.collapse.show {
border-bottom-left-radius: 0.25rem;
}
-.list-group-item:focus, .list-group-item:hover {
+.list-group-item:hover, .list-group-item:focus {
+ z-index: 1;
text-decoration: none;
}
.list-group-item.disabled, .list-group-item:disabled {
- color: #868e96;
+ color: #6c757d;
background-color: #fff;
}
@@ -4371,47 +5244,31 @@ tbody.collapse.show {
background-color: #b8daff;
}
-a.list-group-item-primary,
-button.list-group-item-primary {
- color: #004085;
-}
-
-a.list-group-item-primary:focus, a.list-group-item-primary:hover,
-button.list-group-item-primary:focus,
-button.list-group-item-primary:hover {
+.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
color: #004085;
background-color: #9fcdff;
}
-a.list-group-item-primary.active,
-button.list-group-item-primary.active {
+.list-group-item-primary.list-group-item-action.active {
color: #fff;
background-color: #004085;
border-color: #004085;
}
.list-group-item-secondary {
- color: #464a4e;
- background-color: #dddfe2;
-}
-
-a.list-group-item-secondary,
-button.list-group-item-secondary {
- color: #464a4e;
+ color: #383d41;
+ background-color: #d6d8db;
}
-a.list-group-item-secondary:focus, a.list-group-item-secondary:hover,
-button.list-group-item-secondary:focus,
-button.list-group-item-secondary:hover {
- color: #464a4e;
- background-color: #cfd2d6;
+.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
+ color: #383d41;
+ background-color: #c8cbcf;
}
-a.list-group-item-secondary.active,
-button.list-group-item-secondary.active {
+.list-group-item-secondary.list-group-item-action.active {
color: #fff;
- background-color: #464a4e;
- border-color: #464a4e;
+ background-color: #383d41;
+ border-color: #383d41;
}
.list-group-item-success {
@@ -4419,20 +5276,12 @@ button.list-group-item-secondary.active {
background-color: #c3e6cb;
}
-a.list-group-item-success,
-button.list-group-item-success {
- color: #155724;
-}
-
-a.list-group-item-success:focus, a.list-group-item-success:hover,
-button.list-group-item-success:focus,
-button.list-group-item-success:hover {
+.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
color: #155724;
background-color: #b1dfbb;
}
-a.list-group-item-success.active,
-button.list-group-item-success.active {
+.list-group-item-success.list-group-item-action.active {
color: #fff;
background-color: #155724;
border-color: #155724;
@@ -4443,20 +5292,12 @@ button.list-group-item-success.active {
background-color: #bee5eb;
}
-a.list-group-item-info,
-button.list-group-item-info {
- color: #0c5460;
-}
-
-a.list-group-item-info:focus, a.list-group-item-info:hover,
-button.list-group-item-info:focus,
-button.list-group-item-info:hover {
+.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
color: #0c5460;
background-color: #abdde5;
}
-a.list-group-item-info.active,
-button.list-group-item-info.active {
+.list-group-item-info.list-group-item-action.active {
color: #fff;
background-color: #0c5460;
border-color: #0c5460;
@@ -4467,20 +5308,12 @@ button.list-group-item-info.active {
background-color: #ffeeba;
}
-a.list-group-item-warning,
-button.list-group-item-warning {
- color: #856404;
-}
-
-a.list-group-item-warning:focus, a.list-group-item-warning:hover,
-button.list-group-item-warning:focus,
-button.list-group-item-warning:hover {
+.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
color: #856404;
background-color: #ffe8a1;
}
-a.list-group-item-warning.active,
-button.list-group-item-warning.active {
+.list-group-item-warning.list-group-item-action.active {
color: #fff;
background-color: #856404;
border-color: #856404;
@@ -4491,20 +5324,12 @@ button.list-group-item-warning.active {
background-color: #f5c6cb;
}
-a.list-group-item-danger,
-button.list-group-item-danger {
- color: #721c24;
-}
-
-a.list-group-item-danger:focus, a.list-group-item-danger:hover,
-button.list-group-item-danger:focus,
-button.list-group-item-danger:hover {
+.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
color: #721c24;
background-color: #f1b0b7;
}
-a.list-group-item-danger.active,
-button.list-group-item-danger.active {
+.list-group-item-danger.list-group-item-action.active {
color: #fff;
background-color: #721c24;
border-color: #721c24;
@@ -4515,20 +5340,12 @@ button.list-group-item-danger.active {
background-color: #fdfdfe;
}
-a.list-group-item-light,
-button.list-group-item-light {
- color: #818182;
-}
-
-a.list-group-item-light:focus, a.list-group-item-light:hover,
-button.list-group-item-light:focus,
-button.list-group-item-light:hover {
+.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
color: #818182;
background-color: #ececf6;
}
-a.list-group-item-light.active,
-button.list-group-item-light.active {
+.list-group-item-light.list-group-item-action.active {
color: #fff;
background-color: #818182;
border-color: #818182;
@@ -4539,20 +5356,12 @@ button.list-group-item-light.active {
background-color: #c6c8ca;
}
-a.list-group-item-dark,
-button.list-group-item-dark {
- color: #1b1e21;
-}
-
-a.list-group-item-dark:focus, a.list-group-item-dark:hover,
-button.list-group-item-dark:focus,
-button.list-group-item-dark:hover {
+.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
color: #1b1e21;
background-color: #b9bbbe;
}
-a.list-group-item-dark.active,
-button.list-group-item-dark.active {
+.list-group-item-dark.list-group-item-action.active {
color: #fff;
background-color: #1b1e21;
border-color: #1b1e21;
@@ -4561,22 +5370,26 @@ button.list-group-item-dark.active {
.close {
float: right;
font-size: 1.5rem;
- font-weight: bold;
+ font-weight: 700;
line-height: 1;
color: #000;
text-shadow: 0 1px 0 #fff;
opacity: .5;
}
-.close:focus, .close:hover {
+.close:hover, .close:focus {
color: #000;
text-decoration: none;
opacity: .75;
}
+.close:not(:disabled):not(.disabled) {
+ cursor: pointer;
+}
+
button.close {
padding: 0;
- background: transparent;
+ background-color: transparent;
border: 0;
-webkit-appearance: none;
}
@@ -4597,36 +5410,52 @@ button.close {
outline: 0;
}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 0.5rem;
+ pointer-events: none;
+}
+
.modal.fade .modal-dialog {
transition: -webkit-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;
-webkit-transform: translate(0, -25%);
- transform: translate(0, -25%);
+ transform: translate(0, -25%);
}
.modal.show .modal-dialog {
-webkit-transform: translate(0, 0);
- transform: translate(0, 0);
+ transform: translate(0, 0);
}
-.modal-open .modal {
- overflow-x: hidden;
- overflow-y: auto;
-}
-
-.modal-dialog {
- position: relative;
- width: auto;
- margin: 10px;
+.modal-dialog-centered {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ min-height: calc(100% - (0.5rem * 2));
}
.modal-content {
position: relative;
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
-ms-flex-direction: column;
- flex-direction: column;
+ flex-direction: column;
+ width: 100%;
+ pointer-events: auto;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.2);
@@ -4653,14 +5482,24 @@ button.close {
}
.modal-header {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
- -ms-flex-align: center;
- align-items: center;
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ -webkit-box-pack: justify;
-ms-flex-pack: justify;
- justify-content: space-between;
- padding: 15px;
+ justify-content: space-between;
+ padding: 1rem;
border-bottom: 1px solid #e9ecef;
+ border-top-left-radius: 0.3rem;
+ border-top-right-radius: 0.3rem;
+}
+
+.modal-header .close {
+ padding: 1rem;
+ margin: -1rem -1rem -1rem auto;
}
.modal-title {
@@ -4670,19 +5509,23 @@ button.close {
.modal-body {
position: relative;
+ -webkit-box-flex: 1;
-ms-flex: 1 1 auto;
- flex: 1 1 auto;
- padding: 15px;
+ flex: 1 1 auto;
+ padding: 1rem;
}
.modal-footer {
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: end;
-ms-flex-pack: end;
- justify-content: flex-end;
- padding: 15px;
+ justify-content: flex-end;
+ padding: 1rem;
border-top: 1px solid #e9ecef;
}
@@ -4705,7 +5548,10 @@ button.close {
@media (min-width: 576px) {
.modal-dialog {
max-width: 500px;
- margin: 30px auto;
+ margin: 1.75rem auto;
+ }
+ .modal-dialog-centered {
+ min-height: calc(100% - (1.75rem * 2));
}
.modal-sm {
max-width: 300px;
@@ -4723,9 +5569,9 @@ button.close {
z-index: 1070;
display: block;
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-style: normal;
- font-weight: normal;
+ font-weight: 400;
line-height: 1.5;
text-align: left;
text-align: start;
@@ -4749,80 +5595,80 @@ button.close {
.tooltip .arrow {
position: absolute;
display: block;
- width: 5px;
- height: 5px;
+ width: 0.8rem;
+ height: 0.4rem;
+}
+
+.tooltip .arrow::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
}
-.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^="top"] {
- padding: 5px 0;
+.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] {
+ padding: 0.4rem 0;
}
-.tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow {
+.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow {
bottom: 0;
}
-.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow::before {
- margin-left: -3px;
- content: "";
- border-width: 5px 5px 0;
+.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
+ top: 0;
+ border-width: 0.4rem 0.4rem 0;
border-top-color: #000;
}
-.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^="right"] {
- padding: 0 5px;
+.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] {
+ padding: 0 0.4rem;
}
-.tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow {
+.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow {
left: 0;
+ width: 0.4rem;
+ height: 0.8rem;
}
-.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow::before {
- margin-top: -3px;
- content: "";
- border-width: 5px 5px 5px 0;
+.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before {
+ right: 0;
+ border-width: 0.4rem 0.4rem 0.4rem 0;
border-right-color: #000;
}
-.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^="bottom"] {
- padding: 5px 0;
+.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] {
+ padding: 0.4rem 0;
}
-.tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow {
+.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow {
top: 0;
}
-.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
- margin-left: -3px;
- content: "";
- border-width: 0 5px 5px;
+.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
+ bottom: 0;
+ border-width: 0 0.4rem 0.4rem;
border-bottom-color: #000;
}
-.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^="left"] {
- padding: 0 5px;
+.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] {
+ padding: 0 0.4rem;
}
-.tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow {
+.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow {
right: 0;
+ width: 0.4rem;
+ height: 0.8rem;
}
-.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow::before {
- right: 0;
- margin-top: -3px;
- content: "";
- border-width: 5px 0 5px 5px;
+.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before {
+ left: 0;
+ border-width: 0.4rem 0 0.4rem 0.4rem;
border-left-color: #000;
}
-.tooltip .arrow::before {
- position: absolute;
- border-color: transparent;
- border-style: solid;
-}
-
.tooltip-inner {
max-width: 200px;
- padding: 3px 8px;
+ padding: 0.25rem 0.5rem;
color: #fff;
text-align: center;
background-color: #000;
@@ -4836,10 +5682,9 @@ button.close {
z-index: 1060;
display: block;
max-width: 276px;
- padding: 1px;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-style: normal;
- font-weight: normal;
+ font-weight: 400;
line-height: 1.5;
text-align: left;
text-align: start;
@@ -4862,138 +5707,130 @@ button.close {
.popover .arrow {
position: absolute;
display: block;
- width: 10px;
- height: 5px;
+ width: 1rem;
+ height: 0.5rem;
+ margin: 0 0.3rem;
}
-.popover .arrow::before,
-.popover .arrow::after {
+.popover .arrow::before, .popover .arrow::after {
position: absolute;
display: block;
+ content: "";
border-color: transparent;
border-style: solid;
}
-.popover .arrow::before {
- content: "";
- border-width: 11px;
+.bs-popover-top, .bs-popover-auto[x-placement^="top"] {
+ margin-bottom: 0.5rem;
}
-.popover .arrow::after {
- content: "";
- border-width: 11px;
+.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow {
+ bottom: calc((0.5rem + 1px) * -1);
}
-.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^="top"] {
- margin-bottom: 10px;
+.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before,
+.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after {
+ border-width: 0.5rem 0.5rem 0;
}
-.popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^="top"] .arrow {
+.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before {
bottom: 0;
-}
-
-.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^="top"] .arrow::before,
-.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^="top"] .arrow::after {
- border-bottom-width: 0;
-}
-
-.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^="top"] .arrow::before {
- bottom: -11px;
- margin-left: -6px;
border-top-color: rgba(0, 0, 0, 0.25);
}
-.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^="top"] .arrow::after {
- bottom: -10px;
- margin-left: -6px;
+.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after {
+ bottom: 1px;
border-top-color: #fff;
}
-.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^="right"] {
- margin-left: 10px;
+.bs-popover-right, .bs-popover-auto[x-placement^="right"] {
+ margin-left: 0.5rem;
}
-.popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^="right"] .arrow {
- left: 0;
+.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow {
+ left: calc((0.5rem + 1px) * -1);
+ width: 0.5rem;
+ height: 1rem;
+ margin: 0.3rem 0;
}
-.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^="right"] .arrow::before,
-.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^="right"] .arrow::after {
- margin-top: -8px;
- border-left-width: 0;
+.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before,
+.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after {
+ border-width: 0.5rem 0.5rem 0.5rem 0;
}
-.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^="right"] .arrow::before {
- left: -11px;
+.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before {
+ left: 0;
border-right-color: rgba(0, 0, 0, 0.25);
}
-.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^="right"] .arrow::after {
- left: -10px;
+.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after {
+ left: 1px;
border-right-color: #fff;
}
-.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^="bottom"] {
- margin-top: 10px;
+.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] {
+ margin-top: 0.5rem;
}
-.popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^="bottom"] .arrow {
- top: 0;
+.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow {
+ top: calc((0.5rem + 1px) * -1);
}
-.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::before,
-.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::after {
- margin-left: -7px;
- border-top-width: 0;
+.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before,
+.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after {
+ border-width: 0 0.5rem 0.5rem 0.5rem;
}
-.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::before {
- top: -11px;
+.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before {
+ top: 0;
border-bottom-color: rgba(0, 0, 0, 0.25);
}
-.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::after {
- top: -10px;
+.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after {
+ top: 1px;
border-bottom-color: #fff;
}
-.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^="bottom"] .popover-header::before {
+.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before {
position: absolute;
top: 0;
left: 50%;
display: block;
- width: 20px;
- margin-left: -10px;
+ width: 1rem;
+ margin-left: -0.5rem;
content: "";
border-bottom: 1px solid #f7f7f7;
}
-.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^="left"] {
- margin-right: 10px;
+.bs-popover-left, .bs-popover-auto[x-placement^="left"] {
+ margin-right: 0.5rem;
}
-.popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^="left"] .arrow {
- right: 0;
+.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow {
+ right: calc((0.5rem + 1px) * -1);
+ width: 0.5rem;
+ height: 1rem;
+ margin: 0.3rem 0;
}
-.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^="left"] .arrow::before,
-.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^="left"] .arrow::after {
- margin-top: -8px;
- border-right-width: 0;
+.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before,
+.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after {
+ border-width: 0.5rem 0 0.5rem 0.5rem;
}
-.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^="left"] .arrow::before {
- right: -11px;
+.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before {
+ right: 0;
border-left-color: rgba(0, 0, 0, 0.25);
}
-.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^="left"] .arrow::after {
- right: -10px;
+.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after {
+ right: 1px;
border-left-color: #fff;
}
.popover-header {
- padding: 8px 14px;
+ padding: 0.5rem 0.75rem;
margin-bottom: 0;
font-size: 1rem;
color: inherit;
@@ -5008,7 +5845,7 @@ button.close {
}
.popover-body {
- padding: 9px 14px;
+ padding: 0.5rem 0.75rem;
color: #212529;
}
@@ -5025,16 +5862,17 @@ button.close {
.carousel-item {
position: relative;
display: none;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
width: 100%;
transition: -webkit-transform 0.6s ease;
transition: transform 0.6s ease;
transition: transform 0.6s ease, -webkit-transform 0.6s ease;
-webkit-backface-visibility: hidden;
- backface-visibility: hidden;
+ backface-visibility: hidden;
-webkit-perspective: 1000px;
- perspective: 1000px;
+ perspective: 1000px;
}
.carousel-item.active,
@@ -5052,42 +5890,42 @@ button.close {
.carousel-item-next.carousel-item-left,
.carousel-item-prev.carousel-item-right {
-webkit-transform: translateX(0);
- transform: translateX(0);
+ transform: translateX(0);
}
@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {
.carousel-item-next.carousel-item-left,
.carousel-item-prev.carousel-item-right {
-webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
}
}
.carousel-item-next,
.active.carousel-item-right {
-webkit-transform: translateX(100%);
- transform: translateX(100%);
+ transform: translateX(100%);
}
@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {
.carousel-item-next,
.active.carousel-item-right {
-webkit-transform: translate3d(100%, 0, 0);
- transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
}
}
.carousel-item-prev,
.active.carousel-item-left {
-webkit-transform: translateX(-100%);
- transform: translateX(-100%);
+ transform: translateX(-100%);
}
@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {
.carousel-item-prev,
.active.carousel-item-left {
-webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
}
}
@@ -5096,21 +5934,24 @@ button.close {
position: absolute;
top: 0;
bottom: 0;
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-align: center;
-ms-flex-align: center;
- align-items: center;
+ align-items: center;
+ -webkit-box-pack: center;
-ms-flex-pack: center;
- justify-content: center;
+ justify-content: center;
width: 15%;
color: #fff;
text-align: center;
opacity: 0.5;
}
-.carousel-control-prev:focus, .carousel-control-prev:hover,
-.carousel-control-next:focus,
-.carousel-control-next:hover {
+.carousel-control-prev:hover, .carousel-control-prev:focus,
+.carousel-control-next:hover,
+.carousel-control-next:focus {
color: #fff;
text-decoration: none;
outline: 0;
@@ -5135,11 +5976,11 @@ button.close {
}
.carousel-control-prev-icon {
- background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E");
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E");
}
.carousel-control-next-icon {
- background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E");
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E");
}
.carousel-indicators {
@@ -5148,10 +5989,12 @@ button.close {
bottom: 10px;
left: 0;
z-index: 15;
+ display: -webkit-box;
display: -ms-flexbox;
display: flex;
+ -webkit-box-pack: center;
-ms-flex-pack: center;
- justify-content: center;
+ justify-content: center;
padding-left: 0;
margin-right: 15%;
margin-left: 15%;
@@ -5160,8 +6003,9 @@ button.close {
.carousel-indicators li {
position: relative;
+ -webkit-box-flex: 0;
-ms-flex: 0 1 auto;
- flex: 0 1 auto;
+ flex: 0 1 auto;
width: 30px;
height: 3px;
margin-right: 3px;
@@ -5234,23 +6078,29 @@ button.close {
background-color: #007bff !important;
}
-a.bg-primary:focus, a.bg-primary:hover {
+a.bg-primary:hover, a.bg-primary:focus,
+button.bg-primary:hover,
+button.bg-primary:focus {
background-color: #0062cc !important;
}
.bg-secondary {
- background-color: #868e96 !important;
+ background-color: #6c757d !important;
}
-a.bg-secondary:focus, a.bg-secondary:hover {
- background-color: #6c757d !important;
+a.bg-secondary:hover, a.bg-secondary:focus,
+button.bg-secondary:hover,
+button.bg-secondary:focus {
+ background-color: #545b62 !important;
}
.bg-success {
background-color: #28a745 !important;
}
-a.bg-success:focus, a.bg-success:hover {
+a.bg-success:hover, a.bg-success:focus,
+button.bg-success:hover,
+button.bg-success:focus {
background-color: #1e7e34 !important;
}
@@ -5258,7 +6108,9 @@ a.bg-success:focus, a.bg-success:hover {
background-color: #17a2b8 !important;
}
-a.bg-info:focus, a.bg-info:hover {
+a.bg-info:hover, a.bg-info:focus,
+button.bg-info:hover,
+button.bg-info:focus {
background-color: #117a8b !important;
}
@@ -5266,7 +6118,9 @@ a.bg-info:focus, a.bg-info:hover {
background-color: #ffc107 !important;
}
-a.bg-warning:focus, a.bg-warning:hover {
+a.bg-warning:hover, a.bg-warning:focus,
+button.bg-warning:hover,
+button.bg-warning:focus {
background-color: #d39e00 !important;
}
@@ -5274,7 +6128,9 @@ a.bg-warning:focus, a.bg-warning:hover {
background-color: #dc3545 !important;
}
-a.bg-danger:focus, a.bg-danger:hover {
+a.bg-danger:hover, a.bg-danger:focus,
+button.bg-danger:hover,
+button.bg-danger:focus {
background-color: #bd2130 !important;
}
@@ -5282,7 +6138,9 @@ a.bg-danger:focus, a.bg-danger:hover {
background-color: #f8f9fa !important;
}
-a.bg-light:focus, a.bg-light:hover {
+a.bg-light:hover, a.bg-light:focus,
+button.bg-light:hover,
+button.bg-light:focus {
background-color: #dae0e5 !important;
}
@@ -5290,7 +6148,9 @@ a.bg-light:focus, a.bg-light:hover {
background-color: #343a40 !important;
}
-a.bg-dark:focus, a.bg-dark:hover {
+a.bg-dark:hover, a.bg-dark:focus,
+button.bg-dark:hover,
+button.bg-dark:focus {
background-color: #1d2124 !important;
}
@@ -5303,7 +6163,23 @@ a.bg-dark:focus, a.bg-dark:hover {
}
.border {
- border: 1px solid #e9ecef !important;
+ border: 1px solid #dee2e6 !important;
+}
+
+.border-top {
+ border-top: 1px solid #dee2e6 !important;
+}
+
+.border-right {
+ border-right: 1px solid #dee2e6 !important;
+}
+
+.border-bottom {
+ border-bottom: 1px solid #dee2e6 !important;
+}
+
+.border-left {
+ border-left: 1px solid #dee2e6 !important;
}
.border-0 {
@@ -5331,7 +6207,7 @@ a.bg-dark:focus, a.bg-dark:hover {
}
.border-secondary {
- border-color: #868e96 !important;
+ border-color: #6c757d !important;
}
.border-success {
@@ -5387,11 +6263,11 @@ a.bg-dark:focus, a.bg-dark:hover {
}
.rounded-circle {
- border-radius: 50%;
+ border-radius: 50% !important;
}
.rounded-0 {
- border-radius: 0;
+ border-radius: 0 !important;
}
.clearfix::after {
@@ -5420,16 +6296,22 @@ a.bg-dark:focus, a.bg-dark:hover {
display: table !important;
}
+.d-table-row {
+ display: table-row !important;
+}
+
.d-table-cell {
display: table-cell !important;
}
.d-flex {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
.d-inline-flex {
+ display: -webkit-inline-box !important;
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
@@ -5450,14 +6332,19 @@ a.bg-dark:focus, a.bg-dark:hover {
.d-sm-table {
display: table !important;
}
+ .d-sm-table-row {
+ display: table-row !important;
+ }
.d-sm-table-cell {
display: table-cell !important;
}
.d-sm-flex {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
.d-sm-inline-flex {
+ display: -webkit-inline-box !important;
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
@@ -5479,14 +6366,19 @@ a.bg-dark:focus, a.bg-dark:hover {
.d-md-table {
display: table !important;
}
+ .d-md-table-row {
+ display: table-row !important;
+ }
.d-md-table-cell {
display: table-cell !important;
}
.d-md-flex {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
.d-md-inline-flex {
+ display: -webkit-inline-box !important;
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
@@ -5508,14 +6400,19 @@ a.bg-dark:focus, a.bg-dark:hover {
.d-lg-table {
display: table !important;
}
+ .d-lg-table-row {
+ display: table-row !important;
+ }
.d-lg-table-cell {
display: table-cell !important;
}
.d-lg-flex {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
.d-lg-inline-flex {
+ display: -webkit-inline-box !important;
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
@@ -5537,52 +6434,55 @@ a.bg-dark:focus, a.bg-dark:hover {
.d-xl-table {
display: table !important;
}
+ .d-xl-table-row {
+ display: table-row !important;
+ }
.d-xl-table-cell {
display: table-cell !important;
}
.d-xl-flex {
+ display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
}
.d-xl-inline-flex {
+ display: -webkit-inline-box !important;
display: -ms-inline-flexbox !important;
display: inline-flex !important;
}
}
-.d-print-block {
- display: none !important;
-}
-
@media print {
- .d-print-block {
- display: block !important;
+ .d-print-none {
+ display: none !important;
}
-}
-
-.d-print-inline {
- display: none !important;
-}
-
-@media print {
.d-print-inline {
display: inline !important;
}
-}
-
-.d-print-inline-block {
- display: none !important;
-}
-
-@media print {
.d-print-inline-block {
display: inline-block !important;
}
-}
-
-@media print {
- .d-print-none {
- display: none !important;
+ .d-print-block {
+ display: block !important;
+ }
+ .d-print-table {
+ display: table !important;
+ }
+ .d-print-table-row {
+ display: table-row !important;
+ }
+ .d-print-table-cell {
+ display: table-cell !important;
+ }
+ .d-print-flex {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+ .d-print-inline-flex {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
}
}
@@ -5630,623 +6530,708 @@ a.bg-dark:focus, a.bg-dark:hover {
}
.flex-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
@media (min-width: 576px) {
.flex-sm-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-sm-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-sm-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-sm-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-sm-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-sm-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-sm-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-sm-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-sm-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-sm-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-sm-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-sm-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-sm-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-sm-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-sm-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-sm-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-sm-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-sm-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-sm-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-sm-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-sm-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-sm-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-sm-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-sm-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-sm-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-sm-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-sm-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-sm-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-sm-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@media (min-width: 768px) {
.flex-md-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-md-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-md-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-md-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-md-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-md-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-md-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-md-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-md-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-md-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-md-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-md-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-md-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-md-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-md-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-md-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-md-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-md-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-md-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-md-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-md-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-md-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-md-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-md-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-md-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-md-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-md-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-md-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-md-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@media (min-width: 992px) {
.flex-lg-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-lg-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-lg-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-lg-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-lg-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-lg-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-lg-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-lg-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-lg-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-lg-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-lg-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-lg-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-lg-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-lg-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-lg-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-lg-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-lg-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-lg-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-lg-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-lg-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-lg-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-lg-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-lg-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-lg-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-lg-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-lg-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-lg-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-lg-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-lg-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@media (min-width: 1200px) {
.flex-xl-row {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: row !important;
- flex-direction: row !important;
+ flex-direction: row !important;
}
.flex-xl-column {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: normal !important;
-ms-flex-direction: column !important;
- flex-direction: column !important;
+ flex-direction: column !important;
}
.flex-xl-row-reverse {
+ -webkit-box-orient: horizontal !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: row-reverse !important;
- flex-direction: row-reverse !important;
+ flex-direction: row-reverse !important;
}
.flex-xl-column-reverse {
+ -webkit-box-orient: vertical !important;
+ -webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
- flex-direction: column-reverse !important;
+ flex-direction: column-reverse !important;
}
.flex-xl-wrap {
-ms-flex-wrap: wrap !important;
- flex-wrap: wrap !important;
+ flex-wrap: wrap !important;
}
.flex-xl-nowrap {
-ms-flex-wrap: nowrap !important;
- flex-wrap: nowrap !important;
+ flex-wrap: nowrap !important;
}
.flex-xl-wrap-reverse {
-ms-flex-wrap: wrap-reverse !important;
- flex-wrap: wrap-reverse !important;
+ flex-wrap: wrap-reverse !important;
}
.justify-content-xl-start {
+ -webkit-box-pack: start !important;
-ms-flex-pack: start !important;
- justify-content: flex-start !important;
+ justify-content: flex-start !important;
}
.justify-content-xl-end {
+ -webkit-box-pack: end !important;
-ms-flex-pack: end !important;
- justify-content: flex-end !important;
+ justify-content: flex-end !important;
}
.justify-content-xl-center {
+ -webkit-box-pack: center !important;
-ms-flex-pack: center !important;
- justify-content: center !important;
+ justify-content: center !important;
}
.justify-content-xl-between {
+ -webkit-box-pack: justify !important;
-ms-flex-pack: justify !important;
- justify-content: space-between !important;
+ justify-content: space-between !important;
}
.justify-content-xl-around {
-ms-flex-pack: distribute !important;
- justify-content: space-around !important;
+ justify-content: space-around !important;
}
.align-items-xl-start {
+ -webkit-box-align: start !important;
-ms-flex-align: start !important;
- align-items: flex-start !important;
+ align-items: flex-start !important;
}
.align-items-xl-end {
+ -webkit-box-align: end !important;
-ms-flex-align: end !important;
- align-items: flex-end !important;
+ align-items: flex-end !important;
}
.align-items-xl-center {
+ -webkit-box-align: center !important;
-ms-flex-align: center !important;
- align-items: center !important;
+ align-items: center !important;
}
.align-items-xl-baseline {
+ -webkit-box-align: baseline !important;
-ms-flex-align: baseline !important;
- align-items: baseline !important;
+ align-items: baseline !important;
}
.align-items-xl-stretch {
+ -webkit-box-align: stretch !important;
-ms-flex-align: stretch !important;
- align-items: stretch !important;
+ align-items: stretch !important;
}
.align-content-xl-start {
-ms-flex-line-pack: start !important;
- align-content: flex-start !important;
+ align-content: flex-start !important;
}
.align-content-xl-end {
-ms-flex-line-pack: end !important;
- align-content: flex-end !important;
+ align-content: flex-end !important;
}
.align-content-xl-center {
-ms-flex-line-pack: center !important;
- align-content: center !important;
+ align-content: center !important;
}
.align-content-xl-between {
-ms-flex-line-pack: justify !important;
- align-content: space-between !important;
+ align-content: space-between !important;
}
.align-content-xl-around {
-ms-flex-line-pack: distribute !important;
- align-content: space-around !important;
+ align-content: space-around !important;
}
.align-content-xl-stretch {
-ms-flex-line-pack: stretch !important;
- align-content: stretch !important;
+ align-content: stretch !important;
}
.align-self-xl-auto {
-ms-flex-item-align: auto !important;
- align-self: auto !important;
+ align-self: auto !important;
}
.align-self-xl-start {
-ms-flex-item-align: start !important;
- align-self: flex-start !important;
+ align-self: flex-start !important;
}
.align-self-xl-end {
-ms-flex-item-align: end !important;
- align-self: flex-end !important;
+ align-self: flex-end !important;
}
.align-self-xl-center {
-ms-flex-item-align: center !important;
- align-self: center !important;
+ align-self: center !important;
}
.align-self-xl-baseline {
-ms-flex-item-align: baseline !important;
- align-self: baseline !important;
+ align-self: baseline !important;
}
.align-self-xl-stretch {
-ms-flex-item-align: stretch !important;
- align-self: stretch !important;
+ align-self: stretch !important;
}
}
@@ -6310,6 +7295,27 @@ a.bg-dark:focus, a.bg-dark:hover {
}
}
+.position-static {
+ position: static !important;
+}
+
+.position-relative {
+ position: relative !important;
+}
+
+.position-absolute {
+ position: absolute !important;
+}
+
+.position-fixed {
+ position: fixed !important;
+}
+
+.position-sticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+}
+
.fixed-top {
position: fixed;
top: 0;
@@ -6344,7 +7350,7 @@ a.bg-dark:focus, a.bg-dark:hover {
clip: rect(0, 0, 0, 0);
white-space: nowrap;
-webkit-clip-path: inset(50%);
- clip-path: inset(50%);
+ clip-path: inset(50%);
border: 0;
}
@@ -6356,7 +7362,7 @@ a.bg-dark:focus, a.bg-dark:hover {
clip: auto;
white-space: normal;
-webkit-clip-path: none;
- clip-path: none;
+ clip-path: none;
}
.w-25 {
@@ -6403,1598 +7409,1312 @@ a.bg-dark:focus, a.bg-dark:hover {
margin: 0 !important;
}
-.mt-0 {
+.mt-0,
+.my-0 {
margin-top: 0 !important;
}
-.mr-0 {
+.mr-0,
+.mx-0 {
margin-right: 0 !important;
}
-.mb-0 {
+.mb-0,
+.my-0 {
margin-bottom: 0 !important;
}
-.ml-0 {
- margin-left: 0 !important;
-}
-
+.ml-0,
.mx-0 {
- margin-right: 0 !important;
margin-left: 0 !important;
}
-.my-0 {
- margin-top: 0 !important;
- margin-bottom: 0 !important;
-}
-
.m-1 {
margin: 0.25rem !important;
}
-.mt-1 {
+.mt-1,
+.my-1 {
margin-top: 0.25rem !important;
}
-.mr-1 {
+.mr-1,
+.mx-1 {
margin-right: 0.25rem !important;
}
-.mb-1 {
+.mb-1,
+.my-1 {
margin-bottom: 0.25rem !important;
}
-.ml-1 {
- margin-left: 0.25rem !important;
-}
-
+.ml-1,
.mx-1 {
- margin-right: 0.25rem !important;
margin-left: 0.25rem !important;
}
-.my-1 {
- margin-top: 0.25rem !important;
- margin-bottom: 0.25rem !important;
-}
-
.m-2 {
margin: 0.5rem !important;
}
-.mt-2 {
+.mt-2,
+.my-2 {
margin-top: 0.5rem !important;
}
-.mr-2 {
+.mr-2,
+.mx-2 {
margin-right: 0.5rem !important;
}
-.mb-2 {
+.mb-2,
+.my-2 {
margin-bottom: 0.5rem !important;
}
-.ml-2 {
- margin-left: 0.5rem !important;
-}
-
+.ml-2,
.mx-2 {
- margin-right: 0.5rem !important;
margin-left: 0.5rem !important;
}
-.my-2 {
- margin-top: 0.5rem !important;
- margin-bottom: 0.5rem !important;
-}
-
.m-3 {
margin: 1rem !important;
}
-.mt-3 {
+.mt-3,
+.my-3 {
margin-top: 1rem !important;
}
-.mr-3 {
+.mr-3,
+.mx-3 {
margin-right: 1rem !important;
}
-.mb-3 {
+.mb-3,
+.my-3 {
margin-bottom: 1rem !important;
}
-.ml-3 {
- margin-left: 1rem !important;
-}
-
+.ml-3,
.mx-3 {
- margin-right: 1rem !important;
margin-left: 1rem !important;
}
-.my-3 {
- margin-top: 1rem !important;
- margin-bottom: 1rem !important;
-}
-
.m-4 {
margin: 1.5rem !important;
}
-.mt-4 {
+.mt-4,
+.my-4 {
margin-top: 1.5rem !important;
}
-.mr-4 {
+.mr-4,
+.mx-4 {
margin-right: 1.5rem !important;
}
-.mb-4 {
+.mb-4,
+.my-4 {
margin-bottom: 1.5rem !important;
}
-.ml-4 {
- margin-left: 1.5rem !important;
-}
-
+.ml-4,
.mx-4 {
- margin-right: 1.5rem !important;
margin-left: 1.5rem !important;
}
-.my-4 {
- margin-top: 1.5rem !important;
- margin-bottom: 1.5rem !important;
-}
-
.m-5 {
margin: 3rem !important;
}
-.mt-5 {
+.mt-5,
+.my-5 {
margin-top: 3rem !important;
}
-.mr-5 {
+.mr-5,
+.mx-5 {
margin-right: 3rem !important;
}
-.mb-5 {
+.mb-5,
+.my-5 {
margin-bottom: 3rem !important;
}
-.ml-5 {
- margin-left: 3rem !important;
-}
-
+.ml-5,
.mx-5 {
- margin-right: 3rem !important;
margin-left: 3rem !important;
}
-.my-5 {
- margin-top: 3rem !important;
- margin-bottom: 3rem !important;
-}
-
.p-0 {
padding: 0 !important;
}
-.pt-0 {
+.pt-0,
+.py-0 {
padding-top: 0 !important;
}
-.pr-0 {
+.pr-0,
+.px-0 {
padding-right: 0 !important;
}
-.pb-0 {
+.pb-0,
+.py-0 {
padding-bottom: 0 !important;
}
-.pl-0 {
- padding-left: 0 !important;
-}
-
+.pl-0,
.px-0 {
- padding-right: 0 !important;
padding-left: 0 !important;
}
-.py-0 {
- padding-top: 0 !important;
- padding-bottom: 0 !important;
-}
-
.p-1 {
padding: 0.25rem !important;
}
-.pt-1 {
+.pt-1,
+.py-1 {
padding-top: 0.25rem !important;
}
-.pr-1 {
+.pr-1,
+.px-1 {
padding-right: 0.25rem !important;
}
-.pb-1 {
+.pb-1,
+.py-1 {
padding-bottom: 0.25rem !important;
}
-.pl-1 {
- padding-left: 0.25rem !important;
-}
-
+.pl-1,
.px-1 {
- padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
}
-.py-1 {
- padding-top: 0.25rem !important;
- padding-bottom: 0.25rem !important;
-}
-
.p-2 {
padding: 0.5rem !important;
}
-.pt-2 {
+.pt-2,
+.py-2 {
padding-top: 0.5rem !important;
}
-.pr-2 {
+.pr-2,
+.px-2 {
padding-right: 0.5rem !important;
}
-.pb-2 {
+.pb-2,
+.py-2 {
padding-bottom: 0.5rem !important;
}
-.pl-2 {
- padding-left: 0.5rem !important;
-}
-
+.pl-2,
.px-2 {
- padding-right: 0.5rem !important;
padding-left: 0.5rem !important;
}
-.py-2 {
- padding-top: 0.5rem !important;
- padding-bottom: 0.5rem !important;
-}
-
.p-3 {
padding: 1rem !important;
}
-.pt-3 {
+.pt-3,
+.py-3 {
padding-top: 1rem !important;
}
-.pr-3 {
+.pr-3,
+.px-3 {
padding-right: 1rem !important;
}
-.pb-3 {
+.pb-3,
+.py-3 {
padding-bottom: 1rem !important;
}
-.pl-3 {
- padding-left: 1rem !important;
-}
-
+.pl-3,
.px-3 {
- padding-right: 1rem !important;
padding-left: 1rem !important;
}
-.py-3 {
- padding-top: 1rem !important;
- padding-bottom: 1rem !important;
-}
-
.p-4 {
padding: 1.5rem !important;
}
-.pt-4 {
+.pt-4,
+.py-4 {
padding-top: 1.5rem !important;
}
-.pr-4 {
+.pr-4,
+.px-4 {
padding-right: 1.5rem !important;
}
-.pb-4 {
+.pb-4,
+.py-4 {
padding-bottom: 1.5rem !important;
}
-.pl-4 {
- padding-left: 1.5rem !important;
-}
-
+.pl-4,
.px-4 {
- padding-right: 1.5rem !important;
padding-left: 1.5rem !important;
}
-.py-4 {
- padding-top: 1.5rem !important;
- padding-bottom: 1.5rem !important;
-}
-
.p-5 {
padding: 3rem !important;
}
-.pt-5 {
+.pt-5,
+.py-5 {
padding-top: 3rem !important;
}
-.pr-5 {
+.pr-5,
+.px-5 {
padding-right: 3rem !important;
}
-.pb-5 {
+.pb-5,
+.py-5 {
padding-bottom: 3rem !important;
}
-.pl-5 {
- padding-left: 3rem !important;
-}
-
+.pl-5,
.px-5 {
- padding-right: 3rem !important;
padding-left: 3rem !important;
}
-.py-5 {
- padding-top: 3rem !important;
- padding-bottom: 3rem !important;
-}
-
.m-auto {
margin: auto !important;
}
-.mt-auto {
+.mt-auto,
+.my-auto {
margin-top: auto !important;
}
-.mr-auto {
+.mr-auto,
+.mx-auto {
margin-right: auto !important;
}
-.mb-auto {
+.mb-auto,
+.my-auto {
margin-bottom: auto !important;
}
-.ml-auto {
- margin-left: auto !important;
-}
-
+.ml-auto,
.mx-auto {
- margin-right: auto !important;
margin-left: auto !important;
}
-.my-auto {
- margin-top: auto !important;
- margin-bottom: auto !important;
-}
-
@media (min-width: 576px) {
.m-sm-0 {
margin: 0 !important;
}
- .mt-sm-0 {
+ .mt-sm-0,
+ .my-sm-0 {
margin-top: 0 !important;
}
- .mr-sm-0 {
+ .mr-sm-0,
+ .mx-sm-0 {
margin-right: 0 !important;
}
- .mb-sm-0 {
+ .mb-sm-0,
+ .my-sm-0 {
margin-bottom: 0 !important;
}
- .ml-sm-0 {
- margin-left: 0 !important;
- }
+ .ml-sm-0,
.mx-sm-0 {
- margin-right: 0 !important;
margin-left: 0 !important;
}
- .my-sm-0 {
- margin-top: 0 !important;
- margin-bottom: 0 !important;
- }
.m-sm-1 {
margin: 0.25rem !important;
}
- .mt-sm-1 {
+ .mt-sm-1,
+ .my-sm-1 {
margin-top: 0.25rem !important;
}
- .mr-sm-1 {
+ .mr-sm-1,
+ .mx-sm-1 {
margin-right: 0.25rem !important;
}
- .mb-sm-1 {
+ .mb-sm-1,
+ .my-sm-1 {
margin-bottom: 0.25rem !important;
}
- .ml-sm-1 {
- margin-left: 0.25rem !important;
- }
+ .ml-sm-1,
.mx-sm-1 {
- margin-right: 0.25rem !important;
margin-left: 0.25rem !important;
}
- .my-sm-1 {
- margin-top: 0.25rem !important;
- margin-bottom: 0.25rem !important;
- }
.m-sm-2 {
margin: 0.5rem !important;
}
- .mt-sm-2 {
+ .mt-sm-2,
+ .my-sm-2 {
margin-top: 0.5rem !important;
}
- .mr-sm-2 {
+ .mr-sm-2,
+ .mx-sm-2 {
margin-right: 0.5rem !important;
}
- .mb-sm-2 {
+ .mb-sm-2,
+ .my-sm-2 {
margin-bottom: 0.5rem !important;
}
- .ml-sm-2 {
- margin-left: 0.5rem !important;
- }
+ .ml-sm-2,
.mx-sm-2 {
- margin-right: 0.5rem !important;
margin-left: 0.5rem !important;
}
- .my-sm-2 {
- margin-top: 0.5rem !important;
- margin-bottom: 0.5rem !important;
- }
.m-sm-3 {
margin: 1rem !important;
}
- .mt-sm-3 {
+ .mt-sm-3,
+ .my-sm-3 {
margin-top: 1rem !important;
}
- .mr-sm-3 {
+ .mr-sm-3,
+ .mx-sm-3 {
margin-right: 1rem !important;
}
- .mb-sm-3 {
+ .mb-sm-3,
+ .my-sm-3 {
margin-bottom: 1rem !important;
}
- .ml-sm-3 {
- margin-left: 1rem !important;
- }
+ .ml-sm-3,
.mx-sm-3 {
- margin-right: 1rem !important;
margin-left: 1rem !important;
}
- .my-sm-3 {
- margin-top: 1rem !important;
- margin-bottom: 1rem !important;
- }
.m-sm-4 {
margin: 1.5rem !important;
}
- .mt-sm-4 {
+ .mt-sm-4,
+ .my-sm-4 {
margin-top: 1.5rem !important;
}
- .mr-sm-4 {
+ .mr-sm-4,
+ .mx-sm-4 {
margin-right: 1.5rem !important;
}
- .mb-sm-4 {
+ .mb-sm-4,
+ .my-sm-4 {
margin-bottom: 1.5rem !important;
}
- .ml-sm-4 {
- margin-left: 1.5rem !important;
- }
+ .ml-sm-4,
.mx-sm-4 {
- margin-right: 1.5rem !important;
margin-left: 1.5rem !important;
}
- .my-sm-4 {
- margin-top: 1.5rem !important;
- margin-bottom: 1.5rem !important;
- }
.m-sm-5 {
margin: 3rem !important;
}
- .mt-sm-5 {
+ .mt-sm-5,
+ .my-sm-5 {
margin-top: 3rem !important;
}
- .mr-sm-5 {
+ .mr-sm-5,
+ .mx-sm-5 {
margin-right: 3rem !important;
}
- .mb-sm-5 {
+ .mb-sm-5,
+ .my-sm-5 {
margin-bottom: 3rem !important;
}
- .ml-sm-5 {
- margin-left: 3rem !important;
- }
+ .ml-sm-5,
.mx-sm-5 {
- margin-right: 3rem !important;
margin-left: 3rem !important;
}
- .my-sm-5 {
- margin-top: 3rem !important;
- margin-bottom: 3rem !important;
- }
.p-sm-0 {
padding: 0 !important;
}
- .pt-sm-0 {
+ .pt-sm-0,
+ .py-sm-0 {
padding-top: 0 !important;
}
- .pr-sm-0 {
+ .pr-sm-0,
+ .px-sm-0 {
padding-right: 0 !important;
}
- .pb-sm-0 {
+ .pb-sm-0,
+ .py-sm-0 {
padding-bottom: 0 !important;
}
- .pl-sm-0 {
- padding-left: 0 !important;
- }
+ .pl-sm-0,
.px-sm-0 {
- padding-right: 0 !important;
padding-left: 0 !important;
}
- .py-sm-0 {
- padding-top: 0 !important;
- padding-bottom: 0 !important;
- }
.p-sm-1 {
padding: 0.25rem !important;
}
- .pt-sm-1 {
+ .pt-sm-1,
+ .py-sm-1 {
padding-top: 0.25rem !important;
}
- .pr-sm-1 {
+ .pr-sm-1,
+ .px-sm-1 {
padding-right: 0.25rem !important;
}
- .pb-sm-1 {
+ .pb-sm-1,
+ .py-sm-1 {
padding-bottom: 0.25rem !important;
}
- .pl-sm-1 {
- padding-left: 0.25rem !important;
- }
+ .pl-sm-1,
.px-sm-1 {
- padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
}
- .py-sm-1 {
- padding-top: 0.25rem !important;
- padding-bottom: 0.25rem !important;
- }
.p-sm-2 {
padding: 0.5rem !important;
}
- .pt-sm-2 {
+ .pt-sm-2,
+ .py-sm-2 {
padding-top: 0.5rem !important;
}
- .pr-sm-2 {
+ .pr-sm-2,
+ .px-sm-2 {
padding-right: 0.5rem !important;
}
- .pb-sm-2 {
+ .pb-sm-2,
+ .py-sm-2 {
padding-bottom: 0.5rem !important;
}
- .pl-sm-2 {
- padding-left: 0.5rem !important;
- }
+ .pl-sm-2,
.px-sm-2 {
- padding-right: 0.5rem !important;
padding-left: 0.5rem !important;
}
- .py-sm-2 {
- padding-top: 0.5rem !important;
- padding-bottom: 0.5rem !important;
- }
.p-sm-3 {
padding: 1rem !important;
}
- .pt-sm-3 {
+ .pt-sm-3,
+ .py-sm-3 {
padding-top: 1rem !important;
}
- .pr-sm-3 {
+ .pr-sm-3,
+ .px-sm-3 {
padding-right: 1rem !important;
}
- .pb-sm-3 {
+ .pb-sm-3,
+ .py-sm-3 {
padding-bottom: 1rem !important;
}
- .pl-sm-3 {
- padding-left: 1rem !important;
- }
+ .pl-sm-3,
.px-sm-3 {
- padding-right: 1rem !important;
padding-left: 1rem !important;
}
- .py-sm-3 {
- padding-top: 1rem !important;
- padding-bottom: 1rem !important;
- }
.p-sm-4 {
padding: 1.5rem !important;
}
- .pt-sm-4 {
+ .pt-sm-4,
+ .py-sm-4 {
padding-top: 1.5rem !important;
}
- .pr-sm-4 {
+ .pr-sm-4,
+ .px-sm-4 {
padding-right: 1.5rem !important;
}
- .pb-sm-4 {
+ .pb-sm-4,
+ .py-sm-4 {
padding-bottom: 1.5rem !important;
}
- .pl-sm-4 {
- padding-left: 1.5rem !important;
- }
+ .pl-sm-4,
.px-sm-4 {
- padding-right: 1.5rem !important;
padding-left: 1.5rem !important;
}
- .py-sm-4 {
- padding-top: 1.5rem !important;
- padding-bottom: 1.5rem !important;
- }
.p-sm-5 {
padding: 3rem !important;
}
- .pt-sm-5 {
+ .pt-sm-5,
+ .py-sm-5 {
padding-top: 3rem !important;
}
- .pr-sm-5 {
+ .pr-sm-5,
+ .px-sm-5 {
padding-right: 3rem !important;
}
- .pb-sm-5 {
+ .pb-sm-5,
+ .py-sm-5 {
padding-bottom: 3rem !important;
}
- .pl-sm-5 {
- padding-left: 3rem !important;
- }
+ .pl-sm-5,
.px-sm-5 {
- padding-right: 3rem !important;
padding-left: 3rem !important;
}
- .py-sm-5 {
- padding-top: 3rem !important;
- padding-bottom: 3rem !important;
- }
.m-sm-auto {
margin: auto !important;
}
- .mt-sm-auto {
+ .mt-sm-auto,
+ .my-sm-auto {
margin-top: auto !important;
}
- .mr-sm-auto {
+ .mr-sm-auto,
+ .mx-sm-auto {
margin-right: auto !important;
}
- .mb-sm-auto {
+ .mb-sm-auto,
+ .my-sm-auto {
margin-bottom: auto !important;
}
- .ml-sm-auto {
- margin-left: auto !important;
- }
+ .ml-sm-auto,
.mx-sm-auto {
- margin-right: auto !important;
margin-left: auto !important;
}
- .my-sm-auto {
- margin-top: auto !important;
- margin-bottom: auto !important;
- }
}
@media (min-width: 768px) {
.m-md-0 {
margin: 0 !important;
}
- .mt-md-0 {
+ .mt-md-0,
+ .my-md-0 {
margin-top: 0 !important;
}
- .mr-md-0 {
+ .mr-md-0,
+ .mx-md-0 {
margin-right: 0 !important;
}
- .mb-md-0 {
+ .mb-md-0,
+ .my-md-0 {
margin-bottom: 0 !important;
}
- .ml-md-0 {
- margin-left: 0 !important;
- }
+ .ml-md-0,
.mx-md-0 {
- margin-right: 0 !important;
margin-left: 0 !important;
}
- .my-md-0 {
- margin-top: 0 !important;
- margin-bottom: 0 !important;
- }
.m-md-1 {
margin: 0.25rem !important;
}
- .mt-md-1 {
+ .mt-md-1,
+ .my-md-1 {
margin-top: 0.25rem !important;
}
- .mr-md-1 {
+ .mr-md-1,
+ .mx-md-1 {
margin-right: 0.25rem !important;
}
- .mb-md-1 {
+ .mb-md-1,
+ .my-md-1 {
margin-bottom: 0.25rem !important;
}
- .ml-md-1 {
- margin-left: 0.25rem !important;
- }
+ .ml-md-1,
.mx-md-1 {
- margin-right: 0.25rem !important;
margin-left: 0.25rem !important;
}
- .my-md-1 {
- margin-top: 0.25rem !important;
- margin-bottom: 0.25rem !important;
- }
.m-md-2 {
margin: 0.5rem !important;
}
- .mt-md-2 {
+ .mt-md-2,
+ .my-md-2 {
margin-top: 0.5rem !important;
}
- .mr-md-2 {
+ .mr-md-2,
+ .mx-md-2 {
margin-right: 0.5rem !important;
}
- .mb-md-2 {
+ .mb-md-2,
+ .my-md-2 {
margin-bottom: 0.5rem !important;
}
- .ml-md-2 {
- margin-left: 0.5rem !important;
- }
+ .ml-md-2,
.mx-md-2 {
- margin-right: 0.5rem !important;
margin-left: 0.5rem !important;
}
- .my-md-2 {
- margin-top: 0.5rem !important;
- margin-bottom: 0.5rem !important;
- }
.m-md-3 {
margin: 1rem !important;
}
- .mt-md-3 {
+ .mt-md-3,
+ .my-md-3 {
margin-top: 1rem !important;
}
- .mr-md-3 {
+ .mr-md-3,
+ .mx-md-3 {
margin-right: 1rem !important;
}
- .mb-md-3 {
+ .mb-md-3,
+ .my-md-3 {
margin-bottom: 1rem !important;
}
- .ml-md-3 {
- margin-left: 1rem !important;
- }
+ .ml-md-3,
.mx-md-3 {
- margin-right: 1rem !important;
margin-left: 1rem !important;
}
- .my-md-3 {
- margin-top: 1rem !important;
- margin-bottom: 1rem !important;
- }
.m-md-4 {
margin: 1.5rem !important;
}
- .mt-md-4 {
+ .mt-md-4,
+ .my-md-4 {
margin-top: 1.5rem !important;
}
- .mr-md-4 {
+ .mr-md-4,
+ .mx-md-4 {
margin-right: 1.5rem !important;
}
- .mb-md-4 {
+ .mb-md-4,
+ .my-md-4 {
margin-bottom: 1.5rem !important;
}
- .ml-md-4 {
- margin-left: 1.5rem !important;
- }
+ .ml-md-4,
.mx-md-4 {
- margin-right: 1.5rem !important;
margin-left: 1.5rem !important;
}
- .my-md-4 {
- margin-top: 1.5rem !important;
- margin-bottom: 1.5rem !important;
- }
.m-md-5 {
margin: 3rem !important;
}
- .mt-md-5 {
+ .mt-md-5,
+ .my-md-5 {
margin-top: 3rem !important;
}
- .mr-md-5 {
+ .mr-md-5,
+ .mx-md-5 {
margin-right: 3rem !important;
}
- .mb-md-5 {
+ .mb-md-5,
+ .my-md-5 {
margin-bottom: 3rem !important;
}
- .ml-md-5 {
- margin-left: 3rem !important;
- }
+ .ml-md-5,
.mx-md-5 {
- margin-right: 3rem !important;
margin-left: 3rem !important;
}
- .my-md-5 {
- margin-top: 3rem !important;
- margin-bottom: 3rem !important;
- }
.p-md-0 {
padding: 0 !important;
}
- .pt-md-0 {
+ .pt-md-0,
+ .py-md-0 {
padding-top: 0 !important;
}
- .pr-md-0 {
+ .pr-md-0,
+ .px-md-0 {
padding-right: 0 !important;
}
- .pb-md-0 {
+ .pb-md-0,
+ .py-md-0 {
padding-bottom: 0 !important;
}
- .pl-md-0 {
- padding-left: 0 !important;
- }
+ .pl-md-0,
.px-md-0 {
- padding-right: 0 !important;
padding-left: 0 !important;
}
- .py-md-0 {
- padding-top: 0 !important;
- padding-bottom: 0 !important;
- }
.p-md-1 {
padding: 0.25rem !important;
}
- .pt-md-1 {
+ .pt-md-1,
+ .py-md-1 {
padding-top: 0.25rem !important;
}
- .pr-md-1 {
+ .pr-md-1,
+ .px-md-1 {
padding-right: 0.25rem !important;
}
- .pb-md-1 {
+ .pb-md-1,
+ .py-md-1 {
padding-bottom: 0.25rem !important;
}
- .pl-md-1 {
- padding-left: 0.25rem !important;
- }
+ .pl-md-1,
.px-md-1 {
- padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
}
- .py-md-1 {
- padding-top: 0.25rem !important;
- padding-bottom: 0.25rem !important;
- }
.p-md-2 {
padding: 0.5rem !important;
}
- .pt-md-2 {
+ .pt-md-2,
+ .py-md-2 {
padding-top: 0.5rem !important;
}
- .pr-md-2 {
+ .pr-md-2,
+ .px-md-2 {
padding-right: 0.5rem !important;
}
- .pb-md-2 {
+ .pb-md-2,
+ .py-md-2 {
padding-bottom: 0.5rem !important;
}
- .pl-md-2 {
- padding-left: 0.5rem !important;
- }
+ .pl-md-2,
.px-md-2 {
- padding-right: 0.5rem !important;
padding-left: 0.5rem !important;
}
- .py-md-2 {
- padding-top: 0.5rem !important;
- padding-bottom: 0.5rem !important;
- }
.p-md-3 {
padding: 1rem !important;
}
- .pt-md-3 {
+ .pt-md-3,
+ .py-md-3 {
padding-top: 1rem !important;
}
- .pr-md-3 {
+ .pr-md-3,
+ .px-md-3 {
padding-right: 1rem !important;
}
- .pb-md-3 {
+ .pb-md-3,
+ .py-md-3 {
padding-bottom: 1rem !important;
}
- .pl-md-3 {
- padding-left: 1rem !important;
- }
+ .pl-md-3,
.px-md-3 {
- padding-right: 1rem !important;
padding-left: 1rem !important;
}
- .py-md-3 {
- padding-top: 1rem !important;
- padding-bottom: 1rem !important;
- }
.p-md-4 {
padding: 1.5rem !important;
}
- .pt-md-4 {
+ .pt-md-4,
+ .py-md-4 {
padding-top: 1.5rem !important;
}
- .pr-md-4 {
+ .pr-md-4,
+ .px-md-4 {
padding-right: 1.5rem !important;
}
- .pb-md-4 {
+ .pb-md-4,
+ .py-md-4 {
padding-bottom: 1.5rem !important;
}
- .pl-md-4 {
- padding-left: 1.5rem !important;
- }
+ .pl-md-4,
.px-md-4 {
- padding-right: 1.5rem !important;
padding-left: 1.5rem !important;
}
- .py-md-4 {
- padding-top: 1.5rem !important;
- padding-bottom: 1.5rem !important;
- }
.p-md-5 {
padding: 3rem !important;
}
- .pt-md-5 {
+ .pt-md-5,
+ .py-md-5 {
padding-top: 3rem !important;
}
- .pr-md-5 {
+ .pr-md-5,
+ .px-md-5 {
padding-right: 3rem !important;
}
- .pb-md-5 {
+ .pb-md-5,
+ .py-md-5 {
padding-bottom: 3rem !important;
}
- .pl-md-5 {
- padding-left: 3rem !important;
- }
+ .pl-md-5,
.px-md-5 {
- padding-right: 3rem !important;
padding-left: 3rem !important;
}
- .py-md-5 {
- padding-top: 3rem !important;
- padding-bottom: 3rem !important;
- }
.m-md-auto {
margin: auto !important;
}
- .mt-md-auto {
+ .mt-md-auto,
+ .my-md-auto {
margin-top: auto !important;
}
- .mr-md-auto {
+ .mr-md-auto,
+ .mx-md-auto {
margin-right: auto !important;
}
- .mb-md-auto {
+ .mb-md-auto,
+ .my-md-auto {
margin-bottom: auto !important;
}
- .ml-md-auto {
- margin-left: auto !important;
- }
+ .ml-md-auto,
.mx-md-auto {
- margin-right: auto !important;
margin-left: auto !important;
}
- .my-md-auto {
- margin-top: auto !important;
- margin-bottom: auto !important;
- }
}
@media (min-width: 992px) {
.m-lg-0 {
margin: 0 !important;
}
- .mt-lg-0 {
+ .mt-lg-0,
+ .my-lg-0 {
margin-top: 0 !important;
}
- .mr-lg-0 {
+ .mr-lg-0,
+ .mx-lg-0 {
margin-right: 0 !important;
}
- .mb-lg-0 {
+ .mb-lg-0,
+ .my-lg-0 {
margin-bottom: 0 !important;
}
- .ml-lg-0 {
- margin-left: 0 !important;
- }
+ .ml-lg-0,
.mx-lg-0 {
- margin-right: 0 !important;
margin-left: 0 !important;
}
- .my-lg-0 {
- margin-top: 0 !important;
- margin-bottom: 0 !important;
- }
.m-lg-1 {
margin: 0.25rem !important;
}
- .mt-lg-1 {
+ .mt-lg-1,
+ .my-lg-1 {
margin-top: 0.25rem !important;
}
- .mr-lg-1 {
+ .mr-lg-1,
+ .mx-lg-1 {
margin-right: 0.25rem !important;
}
- .mb-lg-1 {
+ .mb-lg-1,
+ .my-lg-1 {
margin-bottom: 0.25rem !important;
}
- .ml-lg-1 {
- margin-left: 0.25rem !important;
- }
+ .ml-lg-1,
.mx-lg-1 {
- margin-right: 0.25rem !important;
margin-left: 0.25rem !important;
}
- .my-lg-1 {
- margin-top: 0.25rem !important;
- margin-bottom: 0.25rem !important;
- }
.m-lg-2 {
margin: 0.5rem !important;
}
- .mt-lg-2 {
+ .mt-lg-2,
+ .my-lg-2 {
margin-top: 0.5rem !important;
}
- .mr-lg-2 {
+ .mr-lg-2,
+ .mx-lg-2 {
margin-right: 0.5rem !important;
}
- .mb-lg-2 {
+ .mb-lg-2,
+ .my-lg-2 {
margin-bottom: 0.5rem !important;
}
- .ml-lg-2 {
- margin-left: 0.5rem !important;
- }
+ .ml-lg-2,
.mx-lg-2 {
- margin-right: 0.5rem !important;
margin-left: 0.5rem !important;
}
- .my-lg-2 {
- margin-top: 0.5rem !important;
- margin-bottom: 0.5rem !important;
- }
.m-lg-3 {
margin: 1rem !important;
}
- .mt-lg-3 {
+ .mt-lg-3,
+ .my-lg-3 {
margin-top: 1rem !important;
}
- .mr-lg-3 {
+ .mr-lg-3,
+ .mx-lg-3 {
margin-right: 1rem !important;
}
- .mb-lg-3 {
+ .mb-lg-3,
+ .my-lg-3 {
margin-bottom: 1rem !important;
}
- .ml-lg-3 {
- margin-left: 1rem !important;
- }
+ .ml-lg-3,
.mx-lg-3 {
- margin-right: 1rem !important;
margin-left: 1rem !important;
}
- .my-lg-3 {
- margin-top: 1rem !important;
- margin-bottom: 1rem !important;
- }
.m-lg-4 {
margin: 1.5rem !important;
}
- .mt-lg-4 {
+ .mt-lg-4,
+ .my-lg-4 {
margin-top: 1.5rem !important;
}
- .mr-lg-4 {
+ .mr-lg-4,
+ .mx-lg-4 {
margin-right: 1.5rem !important;
}
- .mb-lg-4 {
+ .mb-lg-4,
+ .my-lg-4 {
margin-bottom: 1.5rem !important;
}
- .ml-lg-4 {
- margin-left: 1.5rem !important;
- }
+ .ml-lg-4,
.mx-lg-4 {
- margin-right: 1.5rem !important;
margin-left: 1.5rem !important;
}
- .my-lg-4 {
- margin-top: 1.5rem !important;
- margin-bottom: 1.5rem !important;
- }
.m-lg-5 {
margin: 3rem !important;
}
- .mt-lg-5 {
+ .mt-lg-5,
+ .my-lg-5 {
margin-top: 3rem !important;
}
- .mr-lg-5 {
+ .mr-lg-5,
+ .mx-lg-5 {
margin-right: 3rem !important;
}
- .mb-lg-5 {
+ .mb-lg-5,
+ .my-lg-5 {
margin-bottom: 3rem !important;
}
- .ml-lg-5 {
- margin-left: 3rem !important;
- }
+ .ml-lg-5,
.mx-lg-5 {
- margin-right: 3rem !important;
margin-left: 3rem !important;
}
- .my-lg-5 {
- margin-top: 3rem !important;
- margin-bottom: 3rem !important;
- }
.p-lg-0 {
padding: 0 !important;
}
- .pt-lg-0 {
+ .pt-lg-0,
+ .py-lg-0 {
padding-top: 0 !important;
}
- .pr-lg-0 {
+ .pr-lg-0,
+ .px-lg-0 {
padding-right: 0 !important;
}
- .pb-lg-0 {
+ .pb-lg-0,
+ .py-lg-0 {
padding-bottom: 0 !important;
}
- .pl-lg-0 {
- padding-left: 0 !important;
- }
+ .pl-lg-0,
.px-lg-0 {
- padding-right: 0 !important;
padding-left: 0 !important;
}
- .py-lg-0 {
- padding-top: 0 !important;
- padding-bottom: 0 !important;
- }
.p-lg-1 {
padding: 0.25rem !important;
}
- .pt-lg-1 {
+ .pt-lg-1,
+ .py-lg-1 {
padding-top: 0.25rem !important;
}
- .pr-lg-1 {
+ .pr-lg-1,
+ .px-lg-1 {
padding-right: 0.25rem !important;
}
- .pb-lg-1 {
+ .pb-lg-1,
+ .py-lg-1 {
padding-bottom: 0.25rem !important;
}
- .pl-lg-1 {
- padding-left: 0.25rem !important;
- }
+ .pl-lg-1,
.px-lg-1 {
- padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
}
- .py-lg-1 {
- padding-top: 0.25rem !important;
- padding-bottom: 0.25rem !important;
- }
.p-lg-2 {
padding: 0.5rem !important;
}
- .pt-lg-2 {
+ .pt-lg-2,
+ .py-lg-2 {
padding-top: 0.5rem !important;
}
- .pr-lg-2 {
+ .pr-lg-2,
+ .px-lg-2 {
padding-right: 0.5rem !important;
}
- .pb-lg-2 {
+ .pb-lg-2,
+ .py-lg-2 {
padding-bottom: 0.5rem !important;
}
- .pl-lg-2 {
- padding-left: 0.5rem !important;
- }
+ .pl-lg-2,
.px-lg-2 {
- padding-right: 0.5rem !important;
padding-left: 0.5rem !important;
}
- .py-lg-2 {
- padding-top: 0.5rem !important;
- padding-bottom: 0.5rem !important;
- }
.p-lg-3 {
padding: 1rem !important;
}
- .pt-lg-3 {
+ .pt-lg-3,
+ .py-lg-3 {
padding-top: 1rem !important;
}
- .pr-lg-3 {
+ .pr-lg-3,
+ .px-lg-3 {
padding-right: 1rem !important;
}
- .pb-lg-3 {
+ .pb-lg-3,
+ .py-lg-3 {
padding-bottom: 1rem !important;
}
- .pl-lg-3 {
- padding-left: 1rem !important;
- }
+ .pl-lg-3,
.px-lg-3 {
- padding-right: 1rem !important;
padding-left: 1rem !important;
}
- .py-lg-3 {
- padding-top: 1rem !important;
- padding-bottom: 1rem !important;
- }
.p-lg-4 {
padding: 1.5rem !important;
}
- .pt-lg-4 {
+ .pt-lg-4,
+ .py-lg-4 {
padding-top: 1.5rem !important;
}
- .pr-lg-4 {
+ .pr-lg-4,
+ .px-lg-4 {
padding-right: 1.5rem !important;
}
- .pb-lg-4 {
+ .pb-lg-4,
+ .py-lg-4 {
padding-bottom: 1.5rem !important;
}
- .pl-lg-4 {
- padding-left: 1.5rem !important;
- }
+ .pl-lg-4,
.px-lg-4 {
- padding-right: 1.5rem !important;
padding-left: 1.5rem !important;
}
- .py-lg-4 {
- padding-top: 1.5rem !important;
- padding-bottom: 1.5rem !important;
- }
.p-lg-5 {
padding: 3rem !important;
}
- .pt-lg-5 {
+ .pt-lg-5,
+ .py-lg-5 {
padding-top: 3rem !important;
}
- .pr-lg-5 {
+ .pr-lg-5,
+ .px-lg-5 {
padding-right: 3rem !important;
}
- .pb-lg-5 {
+ .pb-lg-5,
+ .py-lg-5 {
padding-bottom: 3rem !important;
}
- .pl-lg-5 {
- padding-left: 3rem !important;
- }
+ .pl-lg-5,
.px-lg-5 {
- padding-right: 3rem !important;
padding-left: 3rem !important;
}
- .py-lg-5 {
- padding-top: 3rem !important;
- padding-bottom: 3rem !important;
- }
.m-lg-auto {
margin: auto !important;
}
- .mt-lg-auto {
+ .mt-lg-auto,
+ .my-lg-auto {
margin-top: auto !important;
}
- .mr-lg-auto {
+ .mr-lg-auto,
+ .mx-lg-auto {
margin-right: auto !important;
}
- .mb-lg-auto {
+ .mb-lg-auto,
+ .my-lg-auto {
margin-bottom: auto !important;
}
- .ml-lg-auto {
- margin-left: auto !important;
- }
+ .ml-lg-auto,
.mx-lg-auto {
- margin-right: auto !important;
margin-left: auto !important;
}
- .my-lg-auto {
- margin-top: auto !important;
- margin-bottom: auto !important;
- }
}
@media (min-width: 1200px) {
.m-xl-0 {
margin: 0 !important;
}
- .mt-xl-0 {
+ .mt-xl-0,
+ .my-xl-0 {
margin-top: 0 !important;
}
- .mr-xl-0 {
+ .mr-xl-0,
+ .mx-xl-0 {
margin-right: 0 !important;
}
- .mb-xl-0 {
+ .mb-xl-0,
+ .my-xl-0 {
margin-bottom: 0 !important;
}
- .ml-xl-0 {
- margin-left: 0 !important;
- }
+ .ml-xl-0,
.mx-xl-0 {
- margin-right: 0 !important;
margin-left: 0 !important;
}
- .my-xl-0 {
- margin-top: 0 !important;
- margin-bottom: 0 !important;
- }
.m-xl-1 {
margin: 0.25rem !important;
}
- .mt-xl-1 {
+ .mt-xl-1,
+ .my-xl-1 {
margin-top: 0.25rem !important;
}
- .mr-xl-1 {
+ .mr-xl-1,
+ .mx-xl-1 {
margin-right: 0.25rem !important;
}
- .mb-xl-1 {
+ .mb-xl-1,
+ .my-xl-1 {
margin-bottom: 0.25rem !important;
}
- .ml-xl-1 {
- margin-left: 0.25rem !important;
- }
+ .ml-xl-1,
.mx-xl-1 {
- margin-right: 0.25rem !important;
margin-left: 0.25rem !important;
}
- .my-xl-1 {
- margin-top: 0.25rem !important;
- margin-bottom: 0.25rem !important;
- }
.m-xl-2 {
margin: 0.5rem !important;
}
- .mt-xl-2 {
+ .mt-xl-2,
+ .my-xl-2 {
margin-top: 0.5rem !important;
}
- .mr-xl-2 {
+ .mr-xl-2,
+ .mx-xl-2 {
margin-right: 0.5rem !important;
}
- .mb-xl-2 {
+ .mb-xl-2,
+ .my-xl-2 {
margin-bottom: 0.5rem !important;
}
- .ml-xl-2 {
- margin-left: 0.5rem !important;
- }
+ .ml-xl-2,
.mx-xl-2 {
- margin-right: 0.5rem !important;
margin-left: 0.5rem !important;
}
- .my-xl-2 {
- margin-top: 0.5rem !important;
- margin-bottom: 0.5rem !important;
- }
.m-xl-3 {
margin: 1rem !important;
}
- .mt-xl-3 {
+ .mt-xl-3,
+ .my-xl-3 {
margin-top: 1rem !important;
}
- .mr-xl-3 {
+ .mr-xl-3,
+ .mx-xl-3 {
margin-right: 1rem !important;
}
- .mb-xl-3 {
+ .mb-xl-3,
+ .my-xl-3 {
margin-bottom: 1rem !important;
}
- .ml-xl-3 {
- margin-left: 1rem !important;
- }
+ .ml-xl-3,
.mx-xl-3 {
- margin-right: 1rem !important;
margin-left: 1rem !important;
}
- .my-xl-3 {
- margin-top: 1rem !important;
- margin-bottom: 1rem !important;
- }
.m-xl-4 {
margin: 1.5rem !important;
}
- .mt-xl-4 {
+ .mt-xl-4,
+ .my-xl-4 {
margin-top: 1.5rem !important;
}
- .mr-xl-4 {
+ .mr-xl-4,
+ .mx-xl-4 {
margin-right: 1.5rem !important;
}
- .mb-xl-4 {
+ .mb-xl-4,
+ .my-xl-4 {
margin-bottom: 1.5rem !important;
}
- .ml-xl-4 {
- margin-left: 1.5rem !important;
- }
+ .ml-xl-4,
.mx-xl-4 {
- margin-right: 1.5rem !important;
margin-left: 1.5rem !important;
}
- .my-xl-4 {
- margin-top: 1.5rem !important;
- margin-bottom: 1.5rem !important;
- }
.m-xl-5 {
margin: 3rem !important;
}
- .mt-xl-5 {
+ .mt-xl-5,
+ .my-xl-5 {
margin-top: 3rem !important;
}
- .mr-xl-5 {
+ .mr-xl-5,
+ .mx-xl-5 {
margin-right: 3rem !important;
}
- .mb-xl-5 {
+ .mb-xl-5,
+ .my-xl-5 {
margin-bottom: 3rem !important;
}
- .ml-xl-5 {
- margin-left: 3rem !important;
- }
+ .ml-xl-5,
.mx-xl-5 {
- margin-right: 3rem !important;
margin-left: 3rem !important;
}
- .my-xl-5 {
- margin-top: 3rem !important;
- margin-bottom: 3rem !important;
- }
.p-xl-0 {
padding: 0 !important;
}
- .pt-xl-0 {
+ .pt-xl-0,
+ .py-xl-0 {
padding-top: 0 !important;
}
- .pr-xl-0 {
+ .pr-xl-0,
+ .px-xl-0 {
padding-right: 0 !important;
}
- .pb-xl-0 {
+ .pb-xl-0,
+ .py-xl-0 {
padding-bottom: 0 !important;
}
- .pl-xl-0 {
- padding-left: 0 !important;
- }
+ .pl-xl-0,
.px-xl-0 {
- padding-right: 0 !important;
padding-left: 0 !important;
}
- .py-xl-0 {
- padding-top: 0 !important;
- padding-bottom: 0 !important;
- }
.p-xl-1 {
padding: 0.25rem !important;
}
- .pt-xl-1 {
+ .pt-xl-1,
+ .py-xl-1 {
padding-top: 0.25rem !important;
}
- .pr-xl-1 {
+ .pr-xl-1,
+ .px-xl-1 {
padding-right: 0.25rem !important;
}
- .pb-xl-1 {
+ .pb-xl-1,
+ .py-xl-1 {
padding-bottom: 0.25rem !important;
}
- .pl-xl-1 {
- padding-left: 0.25rem !important;
- }
+ .pl-xl-1,
.px-xl-1 {
- padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
}
- .py-xl-1 {
- padding-top: 0.25rem !important;
- padding-bottom: 0.25rem !important;
- }
.p-xl-2 {
padding: 0.5rem !important;
}
- .pt-xl-2 {
+ .pt-xl-2,
+ .py-xl-2 {
padding-top: 0.5rem !important;
}
- .pr-xl-2 {
+ .pr-xl-2,
+ .px-xl-2 {
padding-right: 0.5rem !important;
}
- .pb-xl-2 {
+ .pb-xl-2,
+ .py-xl-2 {
padding-bottom: 0.5rem !important;
}
- .pl-xl-2 {
- padding-left: 0.5rem !important;
- }
+ .pl-xl-2,
.px-xl-2 {
- padding-right: 0.5rem !important;
padding-left: 0.5rem !important;
}
- .py-xl-2 {
- padding-top: 0.5rem !important;
- padding-bottom: 0.5rem !important;
- }
.p-xl-3 {
padding: 1rem !important;
}
- .pt-xl-3 {
+ .pt-xl-3,
+ .py-xl-3 {
padding-top: 1rem !important;
}
- .pr-xl-3 {
+ .pr-xl-3,
+ .px-xl-3 {
padding-right: 1rem !important;
}
- .pb-xl-3 {
+ .pb-xl-3,
+ .py-xl-3 {
padding-bottom: 1rem !important;
}
- .pl-xl-3 {
- padding-left: 1rem !important;
- }
+ .pl-xl-3,
.px-xl-3 {
- padding-right: 1rem !important;
padding-left: 1rem !important;
}
- .py-xl-3 {
- padding-top: 1rem !important;
- padding-bottom: 1rem !important;
- }
.p-xl-4 {
padding: 1.5rem !important;
}
- .pt-xl-4 {
+ .pt-xl-4,
+ .py-xl-4 {
padding-top: 1.5rem !important;
}
- .pr-xl-4 {
+ .pr-xl-4,
+ .px-xl-4 {
padding-right: 1.5rem !important;
}
- .pb-xl-4 {
+ .pb-xl-4,
+ .py-xl-4 {
padding-bottom: 1.5rem !important;
}
- .pl-xl-4 {
- padding-left: 1.5rem !important;
- }
+ .pl-xl-4,
.px-xl-4 {
- padding-right: 1.5rem !important;
padding-left: 1.5rem !important;
}
- .py-xl-4 {
- padding-top: 1.5rem !important;
- padding-bottom: 1.5rem !important;
- }
.p-xl-5 {
padding: 3rem !important;
}
- .pt-xl-5 {
+ .pt-xl-5,
+ .py-xl-5 {
padding-top: 3rem !important;
}
- .pr-xl-5 {
+ .pr-xl-5,
+ .px-xl-5 {
padding-right: 3rem !important;
}
- .pb-xl-5 {
+ .pb-xl-5,
+ .py-xl-5 {
padding-bottom: 3rem !important;
}
- .pl-xl-5 {
- padding-left: 3rem !important;
- }
+ .pl-xl-5,
.px-xl-5 {
- padding-right: 3rem !important;
padding-left: 3rem !important;
}
- .py-xl-5 {
- padding-top: 3rem !important;
- padding-bottom: 3rem !important;
- }
.m-xl-auto {
margin: auto !important;
}
- .mt-xl-auto {
+ .mt-xl-auto,
+ .my-xl-auto {
margin-top: auto !important;
}
- .mr-xl-auto {
+ .mr-xl-auto,
+ .mx-xl-auto {
margin-right: auto !important;
}
- .mb-xl-auto {
+ .mb-xl-auto,
+ .my-xl-auto {
margin-bottom: auto !important;
}
- .ml-xl-auto {
- margin-left: auto !important;
- }
+ .ml-xl-auto,
.mx-xl-auto {
- margin-right: auto !important;
margin-left: auto !important;
}
- .my-xl-auto {
- margin-top: auto !important;
- margin-bottom: auto !important;
- }
}
.text-justify {
@@ -8083,16 +8803,20 @@ a.bg-dark:focus, a.bg-dark:hover {
text-transform: capitalize !important;
}
+.font-weight-light {
+ font-weight: 300 !important;
+}
+
.font-weight-normal {
- font-weight: normal;
+ font-weight: 400 !important;
}
.font-weight-bold {
- font-weight: bold;
+ font-weight: 700 !important;
}
.font-italic {
- font-style: italic;
+ font-style: italic !important;
}
.text-white {
@@ -8103,23 +8827,23 @@ a.bg-dark:focus, a.bg-dark:hover {
color: #007bff !important;
}
-a.text-primary:focus, a.text-primary:hover {
+a.text-primary:hover, a.text-primary:focus {
color: #0062cc !important;
}
.text-secondary {
- color: #868e96 !important;
+ color: #6c757d !important;
}
-a.text-secondary:focus, a.text-secondary:hover {
- color: #6c757d !important;
+a.text-secondary:hover, a.text-secondary:focus {
+ color: #545b62 !important;
}
.text-success {
color: #28a745 !important;
}
-a.text-success:focus, a.text-success:hover {
+a.text-success:hover, a.text-success:focus {
color: #1e7e34 !important;
}
@@ -8127,7 +8851,7 @@ a.text-success:focus, a.text-success:hover {
color: #17a2b8 !important;
}
-a.text-info:focus, a.text-info:hover {
+a.text-info:hover, a.text-info:focus {
color: #117a8b !important;
}
@@ -8135,7 +8859,7 @@ a.text-info:focus, a.text-info:hover {
color: #ffc107 !important;
}
-a.text-warning:focus, a.text-warning:hover {
+a.text-warning:hover, a.text-warning:focus {
color: #d39e00 !important;
}
@@ -8143,7 +8867,7 @@ a.text-warning:focus, a.text-warning:hover {
color: #dc3545 !important;
}
-a.text-danger:focus, a.text-danger:hover {
+a.text-danger:hover, a.text-danger:focus {
color: #bd2130 !important;
}
@@ -8151,7 +8875,7 @@ a.text-danger:focus, a.text-danger:hover {
color: #f8f9fa !important;
}
-a.text-light:focus, a.text-light:hover {
+a.text-light:hover, a.text-light:focus {
color: #dae0e5 !important;
}
@@ -8159,12 +8883,12 @@ a.text-light:focus, a.text-light:hover {
color: #343a40 !important;
}
-a.text-dark:focus, a.text-dark:hover {
+a.text-dark:hover, a.text-dark:focus {
color: #1d2124 !important;
}
.text-muted {
- color: #868e96 !important;
+ color: #6c757d !important;
}
.text-hide {
@@ -8182,4 +8906,70 @@ a.text-dark:focus, a.text-dark:hover {
.invisible {
visibility: hidden !important;
}
+
+@media print {
+ *,
+ *::before,
+ *::after {
+ text-shadow: none !important;
+ box-shadow: none !important;
+ }
+ a:not(.btn) {
+ text-decoration: underline;
+ }
+ abbr[title]::after {
+ content: " (" attr(title) ")";
+ }
+ pre {
+ white-space: pre-wrap !important;
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ @page {
+ size: a3;
+ }
+ body {
+ min-width: 992px !important;
+ }
+ .container {
+ min-width: 992px !important;
+ }
+ .navbar {
+ display: none;
+ }
+ .badge {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap.css.map b/library/bootstrap/css/bootstrap.css.map
index 14530357a..a4532ecc7 100644
--- a/library/bootstrap/css/bootstrap.css.map
+++ b/library/bootstrap/css/bootstrap.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_print.scss","bootstrap.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/mixins/_transition.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_functions.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"AAAA;;;;;GAKG;ACMD;EACE;;;IAME,6BAA4B;IAE5B,4BAA2B;GAC5B;EAED;;IAEE,2BAA0B;GAC3B;EAOD;IACE,8BAA6B;GAC9B;EAaD;IACE,iCAAgC;GACjC;EACD;;IAEE,uBAAgC;IAChC,yBAAwB;GACzB;EAOD;IACE,4BAA2B;GAC5B;EAED;;IAEE,yBAAwB;GACzB;EAED;;;IAGE,WAAU;IACV,UAAS;GACV;EAED;;IAEE,wBAAuB;GACxB;EAKD;IACE,cAAa;GACd;EACD;IACE,uBAAgC;GACjC;EAED;IACE,qCAAoC;GAMrC;EAPD;;IAKI,kCAAiC;GAClC;EAEH;;IAGI,kCAAiC;GAClC;CC3CN;;AC1CD;EACE,uBAAsB;EACtB,wBAAuB;EACvB,kBAAiB;EACjB,+BAA8B;EAC9B,2BAA0B;EAC1B,8BAA6B;EAC7B,yCAA0C;CAC3C;;AAED;;;EAGE,oBAAmB;CACpB;;AAIC;EAAgB,oBAAmB;CD4CpC;;ACxCD;EACE,eAAc;CACf;;AAOD;EACE,UAAS;EACT,wGCoLiH;EDnLjH,gBCuLmB;EDtLnB,oBC0LyB;EDzLzB,iBC6LoB;ED5LpB,eCEgB;EDDhB,uBCRW;CDSZ;;ADuCD;EC/BE,yBAAwB;CACzB;;AAQD;EACE,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAWD;EACE,cAAa;EACb,qBAAoB;CACrB;;AAMD;EACE,cAAa;EACb,oBAAmB;CACpB;;AASD;;EAEE,2BAA0B;EAC1B,0CAAiC;UAAjC,kCAAiC;EACjC,aAAY;EACZ,iBAAgB;CACjB;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,kBCqGqB;CDpGtB;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAED;EACE,mBAAkB;CACnB;;AAED;;EAEE,oBAAmB;CACpB;;AAED;EACE,eAAc;CACf;;AAOD;;EAEE,mBAAkB;EAClB,eAAc;EACd,eAAc;EACd,yBAAwB;CACzB;;AAED;EAAM,eAAc;CAAK;;AACzB;EAAM,WAAU;CAAK;;AAOrB;EACE,eClHe;EDmHf,sBCxB0B;EDyB1B,8BAA6B;EAC7B,sCAAqC;CAMtC;;AE1LG;EFuLA,eC5B4C;ED6B5C,2BC5B6B;CC5JR;;AFkMzB;EACE,eAAc;EACd,sBAAqB;CAUtB;;AEnMG;EF4LA,eAAc;EACd,sBAAqB;CE1LpB;;AFoLL;EAUI,WAAU;CACX;;AAQH;;;;EAIE,kCAAiC;EACjC,eAAc;CACf;;AAED;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;CACf;;AAOD;EAEE,iBAAgB;CACjB;;AAOD;EACE,uBAAsB;EACtB,mBAAkB;CACnB;;AAED;EACE,iBAAgB;CACjB;;AAaD;;;;;;;;;EASE,+BAA0B;MAA1B,2BAA0B;CAC3B;;AAOD;EACE,0BAAyB;CAC1B;;AAED;EACE,qBCEoC;EDDpC,wBCCoC;EDApC,eCpPgB;EDqPhB,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAEE,iBAAgB;CACjB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;;EAKE,UAAS;EACT,qBAAoB;EACpB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;EAEE,kBAAiB;CAClB;;AAED;;EAEE,qBAAoB;CACrB;;AAKD;;;;EAIE,2BAA0B;CAC3B;;AAGD;;;;EAIE,WAAU;EACV,mBAAkB;CACnB;;AAED;;EAEE,uBAAsB;EACtB,WAAU;CACX;;AAGD;;;;EASE,4BAA2B;CAC5B;;AAED;EACE,eAAc;EAEd,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAID;EACE,eAAc;EACd,YAAW;EACX,gBAAe;EACf,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;EACpB,eAAc;EACd,oBAAmB;CACpB;;AAED;EACE,yBAAwB;CACzB;;ADpED;;ECyEE,aAAY;CACb;;ADrED;EC4EE,qBAAoB;EACpB,yBAAwB;CACzB;;ADzED;;ECiFE,yBAAwB;CACzB;;AAOD;EACE,cAAa;EACb,2BAA0B;CAC3B;;AAMD;EACE,sBAAqB;CACtB;;AAED;EACE,mBAAkB;CACnB;;AAED;EACE,cAAa;CACd;;ADtFD;EC2FE,yBAAwB;CACzB;;AG5dD;;EAEE,sBFwPoC;EEvPpC,qBFwP8B;EEvP9B,iBFwP0B;EEvP1B,iBFwP0B;EEvP1B,eFwP8B;CEvP/B;;AAED;EAAU,kBF0OW;CE1OiB;;AACtC;EAAU,gBF0OS;CE1OmB;;AACtC;EAAU,mBF0OY;CE1OgB;;AACtC;EAAU,kBF0OW;CE1OiB;;AACtC;EAAU,mBF0OY;CE1OgB;;AACtC;EAAU,gBF0OS;CE1OmB;;AAEtC;EACE,mBF0PwB;EEzPxB,iBF0PoB;CEzPrB;;AAGD;EACE,gBFyOkB;EExOlB,iBF6OuB;EE5OvB,iBFoO0B;CEnO3B;;AACD;EACE,kBFqOoB;EEpOpB,iBFyOuB;EExOvB,iBF+N0B;CE9N3B;;AACD;EACE,kBFiOoB;EEhOpB,iBFqOuB;EEpOvB,iBF0N0B;CEzN3B;;AACD;EACE,kBF6NoB;EE5NpB,iBFiOuB;EEhOvB,iBFqN0B;CEpN3B;;AAOD;EACE,iBAAgB;EAChB,oBAAmB;EACnB,UAAS;EACT,yCFIW;CEHZ;;AAOD;;EAEE,eFgNmB;EE/MnB,oBF8KyB;CE7K1B;;AAED;;EAEE,eFoNiB;EEnNjB,0BF4Ne;CE3NhB;;AAOD;EC7EE,gBAAe;EACf,iBAAgB;CD8EjB;;AAGD;EClFE,gBAAe;EACf,iBAAgB;CDmFjB;;AACD;EACE,sBAAqB;CAKtB;;AAND;EAII,kBFsMqB;CErMtB;;AASH;EACE,eAAc;EACd,0BAAyB;CAC1B;;AAGD;EACE,oBFyBW;EExBX,mBFwKgD;CEvKjD;;AAED;EACE,eAAc;EACd,eAAc;EACd,eF7DgB;CEkEjB;;AARD;EAMI,uBAAsB;CACvB;;AElHH;ECIE,gBAAe;EAGf,aAAY;CDLb;;AAID;EACE,iBJkvBkC;EIjvBlC,uBJmCW;EIlCX,uBJmvBgC;EM/vB9B,uBNmN2B;EOlNzB,iCPiwB2C;EK3vB/C,gBAAe;EAGf,aAAY;CDSb;;AAMD;EAEE,sBAAqB;CACtB;;AAED;EACE,sBAA4B;EAC5B,eAAc;CACf;;AAED;EACE,eJmuB4B;EIluB5B,eJegB;CIdjB;;AIzCD;;;;EAIE,kFRqO2F;CQpO5F;;AAGD;EACE,uBRkzBiC;EQjzBjC,eR+yB+B;EQ9yB/B,eRizBmC;EQhzBnC,0BRsCgB;EM/Cd,uBNmN2B;CQjM9B;;AALC;EACE,WAAU;EACV,eAAc;EACd,0BAAyB;CAC1B;;AAIH;EACE,uBRkyBiC;EQjyBjC,eR+xB+B;EQ9xB/B,YRsBW;EQrBX,0BR8BgB;EMvDd,sBNqN0B;CQlL7B;;AAdD;EASI,WAAU;EACV,gBAAe;EACf,kBR8MmB;CQ5MpB;;AAIH;EACE,eAAc;EACd,cAAa;EACb,oBAAmB;EACnB,eR4wB+B;EQ3wB/B,eRYgB;CQFjB;;AAfD;EASI,WAAU;EACV,mBAAkB;EAClB,eAAc;EACd,8BAA6B;EAC7B,iBAAgB;CACjB;;AAIH;EACE,kBRuwBiC;EQtwBjC,mBAAkB;CACnB;;AC1DC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,oBAAuC;EACvC,mBAAuC;EACvC,YAAW;CDDV;;AEgDC;EFnDF;ICYI,iBV8KK;GSvLR;CXwlBF;;AaxiBG;EFnDF;ICYI,iBV+KK;GSxLR;CX8lBF;;Aa9iBG;EFnDF;ICYI,iBVgLK;GSzLR;CXomBF;;AapjBG;EFnDF;ICYI,kBViLM;GS1LT;CX0mBF;;AWjmBC;EACE,YAAW;ECbb,mBAAkB;EAClB,kBAAiB;EACjB,oBAAuC;EACvC,mBAAuC;EACvC,YAAW;CDWV;;AAQD;ECLA,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,oBAAuC;EACvC,mBAAuC;CDItC;;AAID;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iBAAgB;EAChB,gBAAe;CAChB;;AGnCH;;;;;;EACE,mBAAkB;EAClB,YAAW;EACX,gBAAe;EACf,oBAA4B;EAC5B,mBAA4B;CAC7B;;AAkBG;EACE,2BAAa;MAAb,cAAa;EACb,qBAAY;MAAZ,aAAY;EACZ,gBAAe;CAChB;;AACD;EACE,mBAAc;MAAd,eAAc;EACd,YAAW;EACX,gBAAe;CAChB;;AAGC;EFFN,wBAAsC;MAAtC,oBAAsC;EAItC,qBAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,kBAAsC;MAAtC,cAAsC;EAItC,eAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,kBAAsC;MAAtC,cAAsC;EAItC,eAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,kBAAsC;MAAtC,cAAsC;EAItC,eAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,yBAAsC;MAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,mBAAsC;MAAtC,eAAsC;EAItC,gBAAuC;CEAhC;;AAID;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,kBAFU;MAEV,SAFU;CAGX;;AAFD;EACE,mBAFU;MAEV,UAFU;CAGX;;AAFD;EACE,mBAFU;MAEV,UAFU;CAGX;;AAFD;EACE,mBAFU;MAEV,UAFU;CAGX;;ADKL;ECzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;Cdg0BR;;Aa3zBG;ECzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;Cdi6BR;;Aa55BG;ECzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;CdkgCR;;Aa7/BG;ECzBE;IACE,2BAAa;QAAb,cAAa;IACb,qBAAY;QAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,mBAAc;QAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,wBAAsC;QAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,kBAAsC;QAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,yBAAsC;QAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,mBAAsC;QAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAID;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,kBAFU;QAEV,SAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;EAFD;IACE,mBAFU;QAEV,UAFU;GAGX;CdmmCR;;AelpCD;EACE,YAAW;EACX,gBAAe;EACf,oBbgIW;Ea/HX,8BbuSyC;CalR1C;;AAzBD;;EAQI,iBbgSkC;Ea/RlC,oBAAmB;EACnB,8BbsCc;CarCf;;AAXH;EAcI,uBAAsB;EACtB,iCbiCc;CahCf;;AAhBH;EAmBI,8Bb6Bc;Ca5Bf;;AApBH;EAuBI,uBbuBS;CatBV;;AAQH;;EAGI,gBbsQiC;CarQlC;;AAQH;EACE,0BbGgB;CaUjB;;AAdD;;EAKI,0BbDc;CaEf;;AANH;;EAWM,yBAA8C;CAC/C;;AASL;EAEI,sCbXS;CaYV;;AAQH;EAGM,uCbvBO;CCjDY;;AaNvB;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC4EmE;CD3EpE;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,uCdmDO;CclDR;;AAKH;EAKM,uCAJsC;CbLrB;;AaIvB;;EASQ,uCARoC;CASrC;;ADgFT;EAEI,YbzDS;Ea0DT,0BbjDc;CakDf;;AAGH;EAEI,ebzDc;Ea0Dd,0Bb/Dc;CagEf;;AAGH;EACE,YbtEW;EauEX,0Bb9DgB;CauFjB;;AA3BD;;;EAOI,sBb+LoD;Ca9LrD;;AARH;EAWI,UAAS;CACV;;AAZH;EAgBM,4CbrFO;CasFR;;AAjBL;EAuBQ,6Cb5FK;CCvCY;;AU0DrB;EEsFJ;IAEI,eAAc;IACd,YAAW;IACX,iBAAgB;IAChB,6CAA4C;GAO/C;EAZD;IASM,UAAS;GACV;Cf2tCJ;;AkB13CD;EACE,eAAc;EACd,YAAW;EAGX,wBhB2TgC;EgB1ThC,gBhBiOmB;EgBhOnB,kBhB0T8B;EgBzT9B,ehB2CgB;EgB1ChB,uBhBmCW;EgBjCX,uBAAsB;EACtB,6BAA4B;EAC5B,sChByCW;EgBpCT,uBhB+L2B;EOlNzB,yEP6XqF;CgBtU1F;;AAtDD;EA6BI,8BAA6B;EAC7B,UAAS;CACV;;ACxBD;EACE,ejB2Cc;EiB1Cd,uBjBmCS;EiBlCT,sBjBiWiE;EiBhWjE,cAAa;CAEd;;ADbH;EAsCI,ehBYc;EgBVd,WAAU;CACX;;AAzCH;EAsCI,ehBYc;EgBVd,WAAU;CACX;;AAzCH;EAsCI,ehBYc;EgBVd,WAAU;CACX;;AAzCH;EAkDI,0BhBJc;EgBMd,WAAU;CACX;;AAGH;EAEI,4BhB0TkF;CgBzTnF;;AAHH;EAWI,ehBhBc;EgBiBd,uBhBxBS;CgByBV;;AAIH;;EAEE,eAAc;CACf;;AASD;EACE,oCAA2E;EAC3E,uCAA8E;EAC9E,iBAAgB;CACjB;;AAED;EACE,oCAA8E;EAC9E,uCAAiF;EACjF,mBhB0IsB;CgBzIvB;;AAED;EACE,qCAA8E;EAC9E,wCAAiF;EACjF,oBhBqIsB;CgBpIvB;;AASD;EACE,oBhBgN+B;EgB/M/B,uBhB+M+B;EgB9M/B,iBAAgB;EAChB,gBhBqHmB;CgBpHpB;;AAQD;EACE,oBhBmM+B;EgBlM/B,uBhBkM+B;EgBjM/B,iBAAgB;EAChB,kBhBkM8B;EgBjM9B,0BAAyB;EACzB,oBAAuC;CAOxC;;AAbD;;;;;EAUI,iBAAgB;EAChB,gBAAe;CAChB;;AAYH;;;EACE,wBhBgL+B;EgB/K/B,oBhBoFsB;EgBnFtB,iBhB+K6B;EMvU3B,sBNqN0B;CgB3D7B;;AAED;;;EAEI,8BhB2NqF;CgB1NtF;;AAGH;;;EACE,qBhBuK8B;EgBtK9B,mBhBsEsB;EgBrEtB,iBhBsK6B;EM3U3B,sBNoN0B;CgB7C7B;;AAED;;;EAEI,8BhBiNqF;CgBhNtF;;AASH;EACE,oBhBmNmC;CgBlNpC;;AAED;EACE,eAAc;EACd,oBhBqM+B;CgBpMhC;;AAOD;EACE,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,mBAAkB;EAClB,kBAAiB;CAOlB;;AAXD;;EAQI,mBAAkB;EAClB,kBAAiB;CAClB;;AAQH;EACE,mBAAkB;EAClB,eAAc;EACd,sBhB0K+B;CgBnKhC;;AAVD;EAOM,ehBxKY;CgByKb;;AAIL;EACE,sBhBiKiC;EgBhKjC,iBAAgB;CACjB;;AAED;EACE,mBAAkB;EAClB,oBhB4JgC;EgB3JhC,sBhB0JiC;CgBrJlC;;AARD;EAMI,iBAAgB;CACjB;;AAIH;EACE,sBAAqB;CAStB;;AAVD;EAII,uBAAsB;CACvB;;AALH;EAQI,qBhB8I+B;CgB7IhC;;AAWH;EACE,cAAa;EACb,mBAAkB;EAClB,mBAAkB;EAClB,ehB/Le;CgBgMhB;;AAED;EACE,mBAAkB;EAClB,UAAS;EACT,WAAU;EACV,cAAa;EACb,aAAY;EACZ,eAAc;EACd,kBAAiB;EACjB,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,yChB7Me;EgB8Mf,qBAAoB;CACrB;;AClQG;;;EAEE,sBjBoDW;CiB1CZ;;AAZD;;;EAKI,iDjBiDS;CiBhDV;;AANH;;;;;;;;EAUI,eAAc;CACf;;AAOH;EAGI,ejBiCS;CiBhCV;;AAMH;EAGI,0CjBuBS;CiBtBV;;AAJH;EAMI,ejBoBS;CiBnBV;;AAMH;EAGI,sBjBUS;CiBPV;;AANH;EAKgB,sBAAqB;CAAK;;AAL1C;EAQI,iDjBKS;CiBJV;;AAlDH;;;EAEE,sBjBiDW;CiBvCZ;;AAZD;;;EAKI,iDjB8CS;CiB7CV;;AANH;;;;;;;;EAUI,eAAc;CACf;;AAOH;EAGI,ejB8BS;CiB7BV;;AAMH;EAGI,0CjBoBS;CiBnBV;;AAJH;EAMI,ejBiBS;CiBhBV;;AAMH;EAGI,sBjBOS;CiBJV;;AANH;EAKgB,sBAAqB;CAAK;;AAL1C;EAQI,iDjBES;CiBDV;;AD8NP;EACE,qBAAa;EAAb,cAAa;EACb,wBAAmB;MAAnB,oBAAmB;EACnB,uBAAmB;MAAnB,oBAAmB;CAuFpB;;AA1FD;EASI,YAAW;CACZ;;AL7PC;EKmPJ;IAeM,qBAAa;IAAb,cAAa;IACb,uBAAmB;QAAnB,oBAAmB;IACnB,sBAAuB;QAAvB,wBAAuB;IACvB,iBAAgB;GACjB;EAnBL;IAuBM,qBAAa;IAAb,cAAa;IACb,mBAAc;QAAd,eAAc;IACd,wBAAmB;QAAnB,oBAAmB;IACnB,uBAAmB;QAAnB,oBAAmB;IACnB,iBAAgB;GACjB;EA5BL;IAgCM,sBAAqB;IACrB,YAAW;IACX,uBAAsB;GACvB;EAnCL;IAuCM,sBAAqB;GACtB;EAxCL;IA2CM,YAAW;GACZ;EA5CL;IA+CM,iBAAgB;IAChB,uBAAsB;GACvB;EAjDL;IAsDM,qBAAa;IAAb,cAAa;IACb,uBAAmB;QAAnB,oBAAmB;IACnB,sBAAuB;QAAvB,wBAAuB;IACvB,YAAW;IACX,cAAa;IACb,iBAAgB;GACjB;EA5DL;IA8DM,gBAAe;GAChB;EA/DL;IAiEM,mBAAkB;IAClB,cAAa;IACb,sBhB2B4B;IgB1B5B,eAAc;GACf;EArEL;IAyEM,qBAAa;IAAb,cAAa;IACb,uBAAmB;QAAnB,oBAAmB;IACnB,sBAAuB;QAAvB,wBAAuB;IACvB,gBAAe;GAChB;EA7EL;IA+EM,iBAAgB;IAChB,sBAAqB;IACrB,sBhBa4B;IgBZ5B,4BAA2B;GAC5B;EAnFL;IAuFM,OAAM;GACP;ClBi3CJ;;AoB9uDD;EACE,sBAAqB;EACrB,oBlByOyB;EkBxOzB,mBAAkB;EAClB,oBAAmB;EACnB,uBAAsB;EACtB,0BAAiB;KAAjB,uBAAiB;MAAjB,sBAAiB;UAAjB,kBAAiB;EACjB,8BAAiD;ECiEjD,wBnBwPgC;EmBvPhC,gBnB8JmB;EmB7JnB,kBnBuP8B;EMnU5B,uBNmN2B;EOlNzB,kCP0V+C;CkBxTpD;;AjBjBG;EiBHA,sBAAqB;CjBMpB;;AiBnBL;EAiBI,WAAU;EACV,8ClBkDa;CkBjDd;;AAnBH;EAwBI,aAAY;CAEb;;AA1BH;EA8BI,uBAAsB;CAEvB;;AAIH;;EAEE,qBAAoB;CACrB;;AAQC;EHQE,YAAW;EItDb,0BnBmEe;EmBlEf,sBnBkEe;CkBnBd;;AC5CD;EJkDE,YAAW;EIhDX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,6CnBmDW;CmBjDd;;AAGD;EAEE,0BnB4Ca;EmB3Cb,sBnB2Ca;CmB1Cd;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHQE,YAAW;EItDb,0BnBiDgB;EmBhDhB,sBnBgDgB;CkBDf;;AC5CD;EJkDE,YAAW;EIhDX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,+CnBiCY;CmB/Bf;;AAGD;EAEE,0BnB0Bc;EmBzBd,sBnByBc;CmBxBf;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHQE,YAAW;EItDb,0BnB0Ee;EmBzEf,sBnByEe;CkB1Bd;;AC5CD;EJkDE,YAAW;EIhDX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,6CnB0DW;CmBxDd;;AAGD;EAEE,0BnBmDa;EmBlDb,sBnBkDa;CmBjDd;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHQE,YAAW;EItDb,0BnB4Ee;EmB3Ef,sBnB2Ee;CkB5Bd;;AC5CD;EJkDE,YAAW;EIhDX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,8CnB4DW;CmB1Dd;;AAGD;EAEE,0BnBqDa;EmBpDb,sBnBoDa;CmBnDd;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHME,YAAW;EIpDb,0BnByEe;EmBxEf,sBnBwEe;CkBzBd;;AC5CD;EJgDE,YAAW;EI9CX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,6CnByDW;CmBvDd;;AAGD;EAEE,0BnBkDa;EmBjDb,sBnBiDa;CmBhDd;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHQE,YAAW;EItDb,0BnBuEe;EmBtEf,sBnBsEe;CkBvBd;;AC5CD;EJkDE,YAAW;EIhDX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,6CnBuDW;CmBrDd;;AAGD;EAEE,0BnBgDa;EmB/Cb,sBnB+Ca;CmB9Cd;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHME,YAAW;EIpDb,0BnB4CgB;EmB3ChB,sBnB2CgB;CkBIf;;AC5CD;EJgDE,YAAW;EI9CX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,+CnB4BY;CmB1Bf;;AAGD;EAEE,0BnBqBc;EmBpBd,sBnBoBc;CmBnBf;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADYD;EHQE,YAAW;EItDb,0BnBmDgB;EmBlDhB,sBnBkDgB;CkBHf;;AC5CD;EJkDE,YAAW;EIhDX,0BARqF;EASrF,sBAT2H;CAU5H;;AAED;EAMI,4CnBmCY;CmBjCf;;AAGD;EAEE,0BnB4Bc;EmB3Bd,sBnB2Bc;CmB1Bf;;AAED;;EAGE,0BAhCqF;EAiCrF,uBAAsB;EACtB,sBAlC2H;CAoC5H;;ADkBD;ECdA,enB6Be;EmB5Bf,8BAA6B;EAC7B,uBAAsB;EACtB,sBnB0Be;CkBbd;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnBsBa;EmBrBb,sBnBqBa;CC/DQ;;AkB6CvB;EAEE,6CnBgBa;CmBfd;;AAED;EAEE,enBWa;EmBVb,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBGa;EmBFb,sBnBEa;CmBDd;;ADdD;ECdA,enBWgB;EmBVhB,8BAA6B;EAC7B,uBAAsB;EACtB,sBnBQgB;CkBKf;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnBIc;EmBHd,sBnBGc;CC7CO;;AkB6CvB;EAEE,+CnBFc;CmBGf;;AAED;EAEE,enBPc;EmBQd,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBfc;EmBgBd,sBnBhBc;CmBiBf;;ADdD;ECdA,enBoCe;EmBnCf,8BAA6B;EAC7B,uBAAsB;EACtB,sBnBiCe;CkBpBd;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnB6Ba;EmB5Bb,sBnB4Ba;CCtEQ;;AkB6CvB;EAEE,6CnBuBa;CmBtBd;;AAED;EAEE,enBkBa;EmBjBb,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBUa;EmBTb,sBnBSa;CmBRd;;ADdD;ECdA,enBsCe;EmBrCf,8BAA6B;EAC7B,uBAAsB;EACtB,sBnBmCe;CkBtBd;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnB+Ba;EmB9Bb,sBnB8Ba;CCxEQ;;AkB6CvB;EAEE,8CnByBa;CmBxBd;;AAED;EAEE,enBoBa;EmBnBb,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBYa;EmBXb,sBnBWa;CmBVd;;ADdD;ECdA,enBmCe;EmBlCf,8BAA6B;EAC7B,uBAAsB;EACtB,sBnBgCe;CkBnBd;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnB4Ba;EmB3Bb,sBnB2Ba;CCrEQ;;AkB6CvB;EAEE,6CnBsBa;CmBrBd;;AAED;EAEE,enBiBa;EmBhBb,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBSa;EmBRb,sBnBQa;CmBPd;;ADdD;ECdA,enBiCe;EmBhCf,8BAA6B;EAC7B,uBAAsB;EACtB,sBnB8Be;CkBjBd;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnB0Ba;EmBzBb,sBnByBa;CCnEQ;;AkB6CvB;EAEE,6CnBoBa;CmBnBd;;AAED;EAEE,enBea;EmBdb,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBOa;EmBNb,sBnBMa;CmBLd;;ADdD;ECdA,enBMgB;EmBLhB,8BAA6B;EAC7B,uBAAsB;EACtB,sBnBGgB;CkBUf;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnBDc;EmBEd,sBnBFc;CCxCO;;AkB6CvB;EAEE,+CnBPc;CmBQf;;AAED;EAEE,enBZc;EmBad,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBpBc;EmBqBd,sBnBrBc;CmBsBf;;ADdD;ECdA,enBagB;EmBZhB,8BAA6B;EAC7B,uBAAsB;EACtB,sBnBUgB;CkBGf;;AjBlDC;EkBwCA,YDS4C;ECR5C,0BnBMc;EmBLd,sBnBKc;CC/CO;;AkB6CvB;EAEE,4CnBAc;CmBCf;;AAED;EAEE,enBLc;EmBMd,8BAA6B;CAC9B;;AAED;;EAGE,YDV4C;ECW5C,0BnBbc;EmBcd,sBnBdc;CmBef;;ADHH;EACE,oBlB0KyB;EkBzKzB,elBEe;EkBDf,iBAAgB;CA8BjB;;AAjCD;EASI,8BAA6B;CAE9B;;AAXH;EAeI,0BAAyB;EACzB,iBAAgB;CACjB;;AjB5EC;EiB8EA,0BAAyB;CjB9EJ;;AAWrB;EiBsEA,elB0E4C;EkBzE5C,2BlB0E6B;EkBzE7B,8BAA6B;CjBrE5B;;AiB6CL;EA2BI,elBzCc;CkB8Cf;;AjBhFC;EiB8EE,sBAAqB;CjB3EtB;;AiBqFL;EChCE,qBnBgQ8B;EmB/P9B,mBnB+JsB;EmB9JtB,iBnBkI0B;EM9MxB,sBNoN0B;CkBxG7B;;AAED;ECpCE,wBnB4P+B;EmB3P/B,oBnBgKsB;EmB/JtB,iBnBmI0B;EM/MxB,sBNqN0B;CkBrG7B;;AAOD;EACE,eAAc;EACd,YAAW;CACZ;;AAGD;EACE,mBlBsNoC;CkBrNrC;;AAGD;;;EAII,YAAW;CACZ;;AE3IH;EACE,WAAU;EbIN,iCP4NsC;CoB1N3C;;AAPD;EAKI,WAAU;CACX;;AAGH;EACE,cAAa;CAId;;AALD;EAGI,eAAc;CACf;;AAGH;EAEI,mBAAkB;CACnB;;AAGH;EAEI,yBAAwB;CACzB;;AAGH;EACE,mBAAkB;EAClB,UAAS;EACT,iBAAgB;Eb1BZ,8BP6NmC;CoBjMxC;;AChCD;;EAEE,mBAAkB;CACnB;;AAED;EAGI,sBAAqB;EACrB,SAAQ;EACR,UAAS;EACT,qBAA+B;EAC/B,wBAAkC;EAClC,YAAW;EACX,wBAA8B;EAC9B,sCAA4C;EAC5C,qCAA2C;CAC5C;;AAZH;EAeI,eAAc;CACf;;AAKH;EAEI,cAAa;EACb,wBrB+coC;CqB9crC;;AAJH;EAQM,cAAa;EACb,2BAAiC;CAClC;;AAKL;EACE,mBAAkB;EAClB,UAAS;EACT,QAAO;EACP,crB0d8B;EqBzd9B,cAAa;EACb,YAAW;EACX,iBrB0boC;EqBzbpC,kBAA8B;EAC9B,qBAA4B;EAC5B,gBrByLmB;EqBxLnB,erBMgB;EqBLhB,iBAAgB;EAChB,iBAAgB;EAChB,uBrBNW;EqBOX,6BAA4B;EAC5B,sCrBEW;EMxDT,uBNmN2B;CqB1J9B;;AAGD;EC3DE,UAAS;EACT,iBAAuB;EACvB,iBAAgB;EAChB,8BtB4CgB;CqBcjB;;AAKD;EACE,eAAc;EACd,YAAW;EACX,wBrBobqC;EqBnbrC,YAAW;EACX,oBrBqKyB;EqBpKzB,erBlBgB;EqBmBhB,oBAAmB;EACnB,oBAAmB;EACnB,iBAAgB;EAChB,UAAS;CAwBV;;ApBnFG;EoB8DA,erBiakD;EqBhalD,sBAAqB;EACrB,0BrBnCc;CC1Bb;;AoB8CL;EAoBI,YrBzCS;EqB0CT,sBAAqB;EACrB,0BrBnBa;CqBoBd;;AAvBH;EA2BI,erB1Cc;EqB2Cd,8BAA6B;CAK9B;;AAIH;EAGI,WAAU;CACX;;AAGH;EACE,eAAc;CACf;;AAGD;EACE,eAAc;EACd,uBrBoYqC;EqBnYrC,iBAAgB;EAChB,oBrBmHsB;EqBlHtB,erBrEgB;EqBsEhB,oBAAmB;CACpB;;AE5HD;;EAEE,mBAAkB;EAClB,4BAAoB;EAApB,qBAAoB;EACpB,uBAAsB;CA0BvB;;AA9BD;;EAOI,mBAAkB;EAClB,mBAAc;MAAd,eAAc;EACd,iBAAgB;CAYjB;;AArBH;;EAcM,WAAU;CtBNS;;AsBRzB;;;;EAmBM,WAAU;CACX;;AApBL;;;;;;;;EA4BI,kBvBsLc;CuBrLf;;AAIH;EACE,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,qBAA2B;MAA3B,4BAA2B;CAK5B;;AARD;EAMI,YAAW;CACZ;;AAGH;EACE,iBAAgB;CACjB;;AAGD;EACE,eAAc;CAKf;;AAND;EjBlCI,2BiBsC8B;EjBrC9B,8BiBqC8B;CAC/B;;AAGH;;EjB5BI,0BiB8B2B;EjB7B3B,6BiB6B2B;CAC9B;;AAGD;EACE,YAAW;CACZ;;AACD;EACE,iBAAgB;CACjB;;AACD;;EjBtDI,2BiByD8B;EjBxD9B,8BiBwD8B;CAC/B;;AAEH;EjB9CI,0BiB+C2B;EjB9C3B,6BiB8C2B;CAC9B;;AAeD;EACE,yBAAyC;EACzC,wBAAwC;CAKzC;;AAPD;EAKI,eAAc;CACf;;AAGH;EACE,wBAA4C;EAC5C,uBAA2C;CAC5C;;AAED;EACE,uBAA4C;EAC5C,sBAA2C;CAC5C;;AAmBD;EACE,4BAAoB;EAApB,qBAAoB;EACpB,2BAAsB;MAAtB,uBAAsB;EACtB,sBAAuB;MAAvB,wBAAuB;EACvB,sBAAuB;MAAvB,wBAAuB;CAcxB;;AAlBD;;EAQI,YAAW;CACZ;;AATH;;;;EAeI,iBvBoEc;EuBnEd,eAAc;CACf;;AAGH;EAEI,iBAAgB;CACjB;;AAHH;EjB9HI,8BiBmI+B;EjBlI/B,6BiBkI+B;CAChC;;AANH;EjB5II,0BiBoJ4B;EjBnJ5B,2BiBmJ4B;CAC7B;;AAEH;EACE,iBAAgB;CACjB;;AACD;;EjB5II,8BiB+I+B;EjB9I/B,6BiB8I+B;CAChC;;AAEH;EjBhKI,0BiBiK0B;EjBhK1B,2BiBgK0B;CAC7B;;AzBu5ED;;;;EyBn4EM,mBAAkB;EAClB,uBAAmB;EACnB,qBAAoB;CACrB;;AC/LL;EACE,mBAAkB;EAClB,qBAAa;EAAb,cAAa;EACb,YAAW;CAkBZ;;AArBD;EAQI,mBAAkB;EAClB,WAAU;EACV,mBAAc;MAAd,eAAc;EAGd,UAAS;EACT,iBAAgB;CAMjB;;AApBH;EAkBM,WAAU;CvBmCX;;AuB9BL;;;EAIE,qBAAa;EAAb,cAAa;EACb,uBAAmB;MAAnB,oBAAmB;CAKpB;;AAVD;;;ElBvBI,iBkB+BwB;CACzB;;AAGH;;EAEE,oBAAmB;EACnB,uBAAsB;CACvB;;AAwBD;EACE,wBxBkQgC;EwBjQhC,iBAAgB;EAChB,gBxBuKmB;EwBtKnB,oBxB0KyB;EwBzKzB,kBxB+P8B;EwB9P9B,exBhBgB;EwBiBhB,mBAAkB;EAClB,0BxBvBgB;EwBwBhB,sCxBhBW;EMxDT,uBNmN2B;CwBpH9B;;AAhCD;;;EAcI,wBxByP6B;EwBxP7B,oBxB6JoB;EM3OpB,sBNqN0B;CwBrI3B;;AAjBH;;;EAoBI,qBxBuP4B;EwBtP5B,mBxBsJoB;EM1OpB,sBNoN0B;CwB9H3B;;AAvBH;;EA6BI,cAAa;CACd;;AASH;;;;;;;ElBzFI,2BkBgG4B;ElB/F5B,8BkB+F4B;CAC/B;;AACD;EACE,gBAAe;CAChB;;AACD;;;;;;;ElBvFI,0BkB8F2B;ElB7F3B,6BkB6F2B;CAC9B;;AACD;EACE,eAAc;CACf;;AAMD;EACE,mBAAkB;EAGlB,aAAY;EACZ,oBAAmB;CAmCpB;;AAxCD;EAUI,mBAAkB;CAUnB;;AApBH;EAaM,kBxBiEY;CwBhEb;;AAdL;EAkBM,WAAU;CvBhGX;;AuB8EL;;EA0BM,mBxBoDY;CwBnDb;;AA3BL;;EAgCM,WAAU;EACV,kBxB6CY;CwBxCb;;AAtCL;;;;EAoCQ,WAAU;CvBlHb;;AwB9CL;EACE,mBAAkB;EAClB,4BAAoB;EAApB,qBAAoB;EACpB,mBAAsC;EACtC,qBzBmY8B;EyBlY9B,mBzBoY4B;CyBnY7B;;AAED;EACE,mBAAkB;EAClB,YAAW;EACX,WAAU;CA4BX;;AA/BD;EAMI,YzByBS;EyBxBT,0BzBgDa;CyB9Cd;;AATH;EAaI,8CzB0Ca;CyBzCd;;AAdH;EAiBI,YzBcS;EyBbT,0BzBgY6E;CyB9X9E;;AApBH;EAwBM,0BzBSY;CyBRb;;AAzBL;EA4BM,ezBSY;CyBRb;;AAQL;EACE,mBAAkB;EAClB,aAA+D;EAC/D,QAAO;EACP,eAAc;EACd,YzByVwC;EyBxVxC,azBwVwC;EyBvVxC,qBAAoB;EACpB,0BAAiB;KAAjB,uBAAiB;MAAjB,sBAAiB;UAAjB,kBAAiB;EACjB,uBzBsVwC;EyBrVxC,6BAA4B;EAC5B,mCAAkC;EAClC,yBzBoV2C;CyBlV5C;;AAMD;EnBxEI,uBNmN2B;CyBxI5B;;AAHH;EAMI,2NVtCuI;CUuCxI;;AAPH;EAUI,0BzBZa;EyBab,wKV3CuI;CU6CxI;;AAOH;EAEI,mBzB8UsC;CyB7UvC;;AAHH;EAMI,qKV1DuI;CU2DxI;;AASH;EACE,qBAAa;EAAb,cAAa;EACb,2BAAsB;MAAtB,uBAAsB;CASvB;;AAXD;EAKI,uBzB8R4B;CyBzR7B;;AAVH;EAQM,eAAc;CACf;;AAWL;EACE,sBAAqB;EACrB,gBAAe;EACf,4BzBmPoF;EyBlPpF,2CzB4SuC;EyB3SvC,kBzB8L8B;EyB7L9B,ezBjFgB;EyBkFhB,uBAAsB;EACtB,oNAAsG;EACtG,0BzB+SoC;EyB9SpC,sCzBlFW;EyBoFT,uBzBuE2B;EyBnE7B,yBAAgB;KAAhB,sBAAgB;UAAhB,iBAAgB;CA2BjB;;AA3CD;EAmBI,sBzB4SmE;EyB3SnE,cAAa;CAYd;;AAhCH;EA6BM,ezBxGY;EyByGZ,uBzBhHO;CyBiHR;;AA/BL;EAmCI,ezB/Gc;EyBgHd,0BzBpHc;CyBqHf;;AArCH;EAyCI,WAAU;CACX;;AAGH;EACE,8BzB2MuF;EyB1MvF,sBzBgQwC;EyB/PxC,yBzB+PwC;EyB9PxC,ezBiR+B;CyBhRhC;;AAOD;EACE,mBAAkB;EAClB,sBAAqB;EACrB,gBAAe;EACf,ezBwQmC;EyBvQnC,iBAAgB;CACjB;;AAED;EACE,iBzBoQkC;EyBnQlC,gBAAe;EACf,ezBiQmC;EyBhQnC,UAAS;EACT,WAAU;CAKX;;AAED;EACE,mBAAkB;EAClB,OAAM;EACN,SAAQ;EACR,QAAO;EACP,WAAU;EACV,ezBkPmC;EyBjPnC,qBzBqP8B;EyBpP9B,iBzBsP6B;EyBrP7B,ezBjKgB;EyBkKhB,qBAAoB;EACpB,0BAAiB;KAAjB,uBAAiB;MAAjB,sBAAiB;UAAjB,kBAAiB;EACjB,uBzB3KW;EyB4KX,sCzBlKW;EMxDT,uBNmN2B;CyBsC9B;;AA5CD;EAmBM,0BzBsPkB;CyBrPnB;;AApBL;EAwBI,mBAAkB;EAClB,UzBrBc;EyBsBd,YzBtBc;EyBuBd,azBvBc;EyBwBd,WAAU;EACV,eAAc;EACd,ezB0NiC;EyBzNjC,qBzB6N4B;EyB5N5B,iBzB8N2B;EyB7N3B,ezBzLc;EyB0Ld,0BzB/Lc;EyBgMd,sCzBxLS;EMxDT,mCmBiPgF;CACjF;;AArCH;EAyCM,kBzBmOU;CyBlOX;;ACtPL;EACE,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,gBAAe;EACf,iBAAgB;EAChB,iBAAgB;CACjB;;AAED;EACE,eAAc;EACd,qB1BogBkC;C0B1fnC;;AzBHG;EyBJA,sBAAqB;CzBOpB;;AyBZL;EAUI,e1BiCc;C0BhCf;;AAOH;EACE,8B1BsfgD;C0BpdjD;;AAnCD;EAII,oB1BkLc;C0BjLf;;AALH;EAQI,8BAAgD;EpB7BhD,gCN6M2B;EM5M3B,iCN4M2B;C0BpK5B;;AApBH;EAYM,mC1B2e4C;CC7f7C;;AyBML;EAgBM,e1BSY;E0BRZ,8BAA6B;EAC7B,0BAAyB;CAC1B;;AAnBL;;EAwBI,e1BEc;E0BDd,uB1BNS;E0BOT,6B1BPS;C0BQV;;AA3BH;EA+BI,iB1BuJc;EM3Md,0BoBsD4B;EpBrD5B,2BoBqD4B;CAC7B;;AAQH;EpBrEI,uBNmN2B;C0BrI5B;;AATH;;EAMM,Y1B7BO;E0B8BP,0B1BNW;C0BOZ;;AASL;EAEI,mBAAc;MAAd,eAAc;EACd,mBAAkB;CACnB;;AAGH;EAEI,2BAAa;MAAb,cAAa;EACb,qBAAY;MAAZ,aAAY;EACZ,mBAAkB;CACnB;;AAQH;EAEI,cAAa;CACd;;AAHH;EAKI,eAAc;CACf;;ACnGH;EACE,mBAAkB;EAClB,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,uBAAmB;MAAnB,oBAAmB;EACnB,uBAA8B;MAA9B,+BAA8B;EAC9B,qB3BgHW;C2BrGZ;;AAjBD;;EAYI,qBAAa;EAAb,cAAa;EACb,oBAAe;MAAf,gBAAe;EACf,uBAAmB;MAAnB,oBAAmB;EACnB,uBAA8B;MAA9B,+BAA8B;CAC/B;;AAQH;EACE,sBAAqB;EACrB,uB3BggB+E;E2B/f/E,0B3B+f+E;E2B9f/E,mB3B0FW;E2BzFX,mB3BgMsB;E2B/LtB,qBAAoB;EACpB,oBAAmB;CAKpB;;A1B/BG;E0B6BA,sBAAqB;C1B1BpB;;A0BmCL;EACE,qBAAa;EAAb,cAAa;EACb,2BAAsB;MAAtB,uBAAsB;EACtB,gBAAe;EACf,iBAAgB;EAChB,iBAAgB;CAWjB;;AAhBD;EAQI,iBAAgB;EAChB,gBAAe;CAChB;;AAVH;EAaI,iBAAgB;EAChB,YAAW;CACZ;;AAQH;EACE,sBAAqB;EACrB,oB3B6bmC;E2B5bnC,uB3B4bmC;C2B3bpC;;AAWD;EACE,8BAAgB;MAAhB,iBAAgB;EAGhB,uBAAmB;MAAnB,oBAAmB;CACpB;;AAGD;EACE,yB3BmcyC;E2BlczC,mB3BkIsB;E2BjItB,eAAc;EACd,wBAAuB;EACvB,8BAAuC;ErB3GrC,uBNmN2B;C2BlG9B;;A1B/FG;E0B6FA,sBAAqB;C1B1FpB;;A0BgGL;EACE,sBAAqB;EACrB,aAAY;EACZ,cAAa;EACb,uBAAsB;EACtB,YAAW;EACX,oCAAmC;EACnC,2BAA0B;CAC3B;;AhB5DG;EgBqEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C7B46FR;;AapgGG;EgBkFA;IAUI,wBAAmB;QAAnB,oBAAmB;IACnB,sBAAiB;QAAjB,kBAAiB;IACjB,qBAA2B;QAA3B,4BAA2B;GAoC9B;EAhDD;IAeM,wBAAmB;QAAnB,oBAAmB;GAepB;EA9BL;IAkBQ,mBAAkB;GACnB;EAnBP;IAsBQ,SAAQ;IACR,WAAU;GACX;EAxBP;IA2BQ,qBAAoB;IACpB,oBAAmB;GACpB;EA7BP;;IAmCM,sBAAiB;QAAjB,kBAAiB;GAClB;EApCL;IAwCM,gCAAwB;IAAxB,yBAAwB;GACzB;EAzCL;IA6CM,cAAa;GACd;C7Bo6FR;;AavhGG;EgBqEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C7Bo9FR;;Aa5iGG;EgBkFA;IAUI,wBAAmB;QAAnB,oBAAmB;IACnB,sBAAiB;QAAjB,kBAAiB;IACjB,qBAA2B;QAA3B,4BAA2B;GAoC9B;EAhDD;IAeM,wBAAmB;QAAnB,oBAAmB;GAepB;EA9BL;IAkBQ,mBAAkB;GACnB;EAnBP;IAsBQ,SAAQ;IACR,WAAU;GACX;EAxBP;IA2BQ,qBAAoB;IACpB,oBAAmB;GACpB;EA7BP;;IAmCM,sBAAiB;QAAjB,kBAAiB;GAClB;EApCL;IAwCM,gCAAwB;IAAxB,yBAAwB;GACzB;EAzCL;IA6CM,cAAa;GACd;C7B48FR;;Aa/jGG;EgBqEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C7B4/FR;;AaplGG;EgBkFA;IAUI,wBAAmB;QAAnB,oBAAmB;IACnB,sBAAiB;QAAjB,kBAAiB;IACjB,qBAA2B;QAA3B,4BAA2B;GAoC9B;EAhDD;IAeM,wBAAmB;QAAnB,oBAAmB;GAepB;EA9BL;IAkBQ,mBAAkB;GACnB;EAnBP;IAsBQ,SAAQ;IACR,WAAU;GACX;EAxBP;IA2BQ,qBAAoB;IACpB,oBAAmB;GACpB;EA7BP;;IAmCM,sBAAiB;QAAjB,kBAAiB;GAClB;EApCL;IAwCM,gCAAwB;IAAxB,yBAAwB;GACzB;EAzCL;IA6CM,cAAa;GACd;C7Bo/FR;;AavmGG;EgBqEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C7BoiGR;;Aa5nGG;EgBkFA;IAUI,wBAAmB;QAAnB,oBAAmB;IACnB,sBAAiB;QAAjB,kBAAiB;IACjB,qBAA2B;QAA3B,4BAA2B;GAoC9B;EAhDD;IAeM,wBAAmB;QAAnB,oBAAmB;GAepB;EA9BL;IAkBQ,mBAAkB;GACnB;EAnBP;IAsBQ,SAAQ;IACR,WAAU;GACX;EAxBP;IA2BQ,qBAAoB;IACpB,oBAAmB;GACpB;EA7BP;;IAmCM,sBAAiB;QAAjB,kBAAiB;GAClB;EApCL;IAwCM,gCAAwB;IAAxB,yBAAwB;GACzB;EAzCL;IA6CM,cAAa;GACd;C7B4hGR;;A6B/kGD;EAeQ,wBAAmB;MAAnB,oBAAmB;EACnB,sBAAiB;MAAjB,kBAAiB;EACjB,qBAA2B;MAA3B,4BAA2B;CAoC9B;;AArDL;;EASU,iBAAgB;EAChB,gBAAe;CAChB;;AAXT;EAoBU,wBAAmB;MAAnB,oBAAmB;CAepB;;AAnCT;EAuBY,mBAAkB;CACnB;;AAxBX;EA2BY,SAAQ;EACR,WAAU;CACX;;AA7BX;EAgCY,qBAAoB;EACpB,oBAAmB;CACpB;;AAlCX;;EAwCU,sBAAiB;MAAjB,kBAAiB;CAClB;;AAzCT;EA6CU,gCAAwB;EAAxB,yBAAwB;CACzB;;AA9CT;EAkDU,cAAa;CACd;;AAYT;EAEI,0B3B1IS;C2B+IV;;AAPH;EAKM,0B3B7IO;CCnCR;;A0B2KL;EAWM,0B3BnJO;C2B4JR;;AApBL;EAcQ,0B3BtJK;CCnCR;;A0B2KL;EAkBQ,0B3B1JK;C2B2JN;;AAnBP;;;;EA0BM,0B3BlKO;C2BmKR;;AA3BL;EA+BI,0B3BvKS;E2BwKT,iC3BxKS;C2ByKV;;AAjCH;EAoCI,sQ3BqV8R;C2BpV/R;;AArCH;EAwCI,0B3BhLS;C2BiLV;;AAIH;EAEI,a3BjMS;C2BsMV;;AAPH;EAKM,a3BpMO;CCzBR;;A0BwNL;EAWM,gC3B1MO;C2BmNR;;AApBL;EAcQ,iC3B7MK;CCzBR;;A0BwNL;EAkBQ,iC3BjNK;C2BkNN;;AAnBP;;;;EA0BM,a3BzNO;C2B0NR;;AA3BL;EA+BI,gC3B9NS;E2B+NT,uC3B/NS;C2BgOV;;AAjCH;EAoCI,4Q3BiS4R;C2BhS7R;;AArCH;EAwCI,gC3BvOS;C2BwOV;;ACtRH;EACE,mBAAkB;EAClB,qBAAa;EAAb,cAAa;EACb,2BAAsB;MAAtB,uBAAsB;EACtB,aAAY;EACZ,sBAAqB;EACrB,uB5BwCW;E4BvCX,4BAA2B;EAC3B,uC5BgDW;EMxDT,uBNmN2B;C4BzM9B;;AAED;EAGE,mBAAc;MAAd,eAAc;EACd,iB5BilBgC;C4BhlBjC;;AAED;EACE,uB5B4kB+B;C4B3kBhC;;AAED;EACE,sBAAgC;EAChC,iBAAgB;CACjB;;AAED;EACE,iBAAgB;CACjB;;A3BvBG;E2B2BA,sBAAqB;C3B3BA;;A2ByBzB;EAMI,qB5B2jB8B;C4B1jB/B;;AAGH;EtBpCI,gCN6M2B;EM5M3B,iCN4M2B;C4BrK1B;;AAJL;EtBtBI,oCN+L2B;EM9L3B,mCN8L2B;C4B/J1B;;AASL;EACE,yB5BmiBgC;E4BliBhC,iBAAgB;EAChB,sC5BRW;E4BSX,8C5BTW;C4BcZ;;AATD;EtB7DI,2DsBoE8E;CAC/E;;AAGH;EACE,yB5BwhBgC;E4BvhBhC,sC5BlBW;E4BmBX,2C5BnBW;C4BwBZ;;AARD;EtBxEI,2DNqmB2E;C4BthB5E;;AAQH;EACE,wBAAkC;EAClC,wB5BugB+B;E4BtgB/B,uBAAiC;EACjC,iBAAgB;CACjB;;AAED;EACE,wBAAkC;EAClC,uBAAiC;CAClC;;AAGD;EACE,mBAAkB;EAClB,OAAM;EACN,SAAQ;EACR,UAAS;EACT,QAAO;EACP,iB5B+fgC;C4B9fjC;;AAED;EACE,YAAW;EtB9GT,mCNqmB2E;C4Brf9E;;AAGD;EACE,YAAW;EtB9GT,4CN+lB2E;EM9lB3E,6CN8lB2E;C4B/e9E;;AAED;EACE,YAAW;EtBrGT,gDNilB2E;EMhlB3E,+CNglB2E;C4B1e9E;;AjBvEG;EiB6EF;IACE,qBAAa;IAAb,cAAa;IACb,wBAAmB;QAAnB,oBAAmB;IACnB,oB5BuegD;I4BtehD,mB5BsegD;G4B7djD;EAbD;IAOI,qBAAa;IAAb,cAAa;IACb,iBAAY;QAAZ,aAAY;IACZ,2BAAsB;QAAtB,uBAAsB;IACtB,mB5Bge8C;I4B/d9C,kB5B+d8C;G4B9d/C;C9ByzGJ;;Aal5GG;EiBmGF;IACE,qBAAa;IAAb,cAAa;IACb,wBAAmB;QAAnB,oBAAmB;GA2CpB;EA7CD;IAKI,iBAAY;QAAZ,aAAY;GAuCb;EA5CH;IAQM,eAAc;IACd,eAAc;GACf;EAVL;ItB1IE,2BsByJoC;ItBxJpC,8BsBwJoC;GAQ/B;EAvBP;IAkBU,2BAA0B;GAC3B;EAnBT;IAqBU,8BAA6B;GAC9B;EAtBT;ItB5HE,0BsBqJmC;ItBpJnC,6BsBoJmC;GAQ9B;EAjCP;IA4BU,0BAAyB;GAC1B;EA7BT;IA+BU,6BAA4B;GAC7B;EAhCT;IAoCQ,iBAAgB;GAMjB;EA1CP;;IAwCU,iBAAgB;GACjB;C9B+yGV;;A8BnyGD;EAEI,uB5BkZ6B;C4BjZ9B;;AjB3JC;EiBwJJ;IAMI,wB5B2ZyB;Y4B3ZzB,gB5B2ZyB;I4B1ZzB,4B5B2Z+B;Y4B3Z/B,oB5B2Z+B;G4BpZlC;EAdD;IAUM,sBAAqB;IACrB,YAAW;GACZ;C9BsyGJ;;A+BlgHD;EACE,sB7BixBkC;E6BhxBlC,oBAAmB;EACnB,iBAAgB;EAChB,0B7BgDgB;EMhDd,uBNmN2B;C6BhN9B;;ACNC;EACE,eAAc;EACd,YAAW;EACX,YAAW;CACZ;;ADIH;EACE,YAAW;CA2BZ;;AA5BD;EAKI,sBAAqB;EACrB,sB7BowBiC;E6BnwBjC,qB7BmwBiC;E6BlwBjC,e7BuCc;E6BtCd,aAAiC;CAClC;;AAVH;EAmBI,2BAA0B;CAC3B;;AApBH;EAsBI,sBAAqB;CACtB;;AAvBH;EA0BI,e7BqBc;C6BpBf;;AEpCH;EACE,qBAAa;EAAb,cAAa;EAEb,gBAAe;EACf,iBAAgB;EzBAd,uBNmN2B;C+BjN9B;;AAED;EAGM,eAAc;EzBoBhB,gCNwL2B;EMvL3B,mCNuL2B;C+B1M1B;;AALL;EzBSI,iCNsM2B;EMrM3B,oCNqM2B;C+BrM1B;;AAVL;EAcI,WAAU;EACV,Y/B2BS;E+B1BT,0B/BkDa;E+BjDb,sB/BiDa;C+BhDd;;AAlBH;EAqBI,e/B2Bc;E+B1Bd,qBAAoB;EACpB,uB/BmBS;E+BlBT,mB/ByjBuC;C+BxjBxC;;AAGH;EACE,mBAAkB;EAClB,eAAc;EACd,wB/B4hB0C;E+B3hB1C,kBAAiB;EACjB,kB/B+hBwC;E+B9hBxC,e/BgCe;E+B/Bf,uB/BOW;E+BNX,uB/BiiByC;C+BzhB1C;;A9B9BG;E8ByBA,e/BuH4C;E+BtH5C,sBAAqB;EACrB,0B/BGc;E+BFd,mB/B+hBuC;CCxjBtC;;A+BtBH;EACE,wBhCmkBwC;EgClkBxC,mBhCyOoB;EgCxOpB,iBhC4MwB;CgC3MzB;;AAIG;E1BoBF,+BNyL0B;EMxL1B,kCNwL0B;CgC3MvB;;AAGD;E1BCF,gCNuM0B;EMtM1B,mCNsM0B;CgCtMvB;;AAfL;EACE,wBhCikBuC;EgChkBvC,oBhC0OoB;EgCzOpB,iBhC6MwB;CgC5MzB;;AAIG;E1BoBF,+BN0L0B;EMzL1B,kCNyL0B;CgC5MvB;;AAGD;E1BCF,gCNwM0B;EMvM1B,mCNuM0B;CgCvMvB;;ACbP;EACE,sBAAqB;EACrB,sBjC+pBgC;EiC9pBhC,ejC2pB+B;EiC1pB/B,kBjCyOqB;EiCxOrB,eAAc;EACd,YjCuCW;EiCtCX,mBAAkB;EAClB,oBAAmB;EACnB,yBAAwB;E3BVtB,uBNmN2B;CiClM9B;;AAhBD;EAcI,cAAa;CACd;;AAIH;EACE,mBAAkB;EAClB,UAAS;CACV;;AAMD;EACE,qBjCsoBgC;EiCroBhC,oBjCqoBgC;EMpqB9B,qBNuqB+B;CiCtoBlC;;AAOC;ElBiBE,YAAW;EmB3Db,0BlCwEe;CiC5Bd;;AhCxBC;EcuCA,YAAW;EmBtDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBiBE,YAAW;EmB3Db,0BlCsDgB;CiCVf;;AhCxBC;EcuCA,YAAW;EmBtDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBiBE,YAAW;EmB3Db,0BlC+Ee;CiCnCd;;AhCxBC;EcuCA,YAAW;EmBtDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBiBE,YAAW;EmB3Db,0BlCiFe;CiCrCd;;AhCxBC;EcuCA,YAAW;EmBtDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBeE,YAAW;EmBzDb,0BlC8Ee;CiClCd;;AhCxBC;EcqCA,YAAW;EmBpDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBiBE,YAAW;EmB3Db,0BlC4Ee;CiChCd;;AhCxBC;EcuCA,YAAW;EmBtDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBeE,YAAW;EmBzDb,0BlCiDgB;CiCLf;;AhCxBC;EcqCA,YAAW;EmBpDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AgCmBH;ElBiBE,YAAW;EmB3Db,0BlCwDgB;CiCZf;;AhCxBC;EcuCA,YAAW;EmBtDT,sBAAqB;EACrB,0BAAkC;CjCiBnC;;AkCzBL;EACE,mBAAoD;EACpD,oBnC4lBmC;EmC3lBnC,0BnCiDgB;EMhDd,sBNoN0B;CmC/M7B;;AxB+CG;EwBxDJ;IAOI,mBnCulBiC;GmCrlBpC;CrCkvHA;;AqChvHD;EACE,iBAAgB;EAChB,gBAAe;E7BTb,iB6BUsB;CACzB;;ACXD;EACE,yBpC6sBmC;EoC5sBnC,oBpC6sBgC;EoC5sBhC,8BAA6C;E9BH3C,uBNmN2B;CoC9M9B;;AAGD;EAEE,eAAc;CACf;;AAGD;EACE,kBpC+NqB;CoC9NtB;;AAOD;EAGI,mBAAkB;EAClB,cpCkrBgC;EoCjrBhC,gBpCkrBiC;EoCjrBjC,yBpCirBiC;EoChrBjC,eAAc;CACf;;AASD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADiCD;EC3CA,etBsFkE;EsBrFlE,0BtBmFuE;EsBlFvE,sBtBkFuE;CqBvCtE;;ACzCD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ACXH;EACE;IAAO,4BAAuC;GxC44H7C;EwC34HD;IAAK,yBAAwB;GxC84H5B;CACF;;AwCj5HD;EACE;IAAO,4BAAuC;GxC44H7C;EwC34HD;IAAK,yBAAwB;GxC84H5B;CACF;;AwC54HD;EACE,qBAAa;EAAb,cAAa;EACb,iBAAgB;EAChB,mBtCotBoC;EsCntBpC,kBtCktBkC;EsCjtBlC,mBAAkB;EAClB,0BtCyCgB;EMhDd,uBNmN2B;CsCzM9B;;AAED;EACE,atC0sBkC;EsCzsBlC,kBtCysBkC;EsCxsBlC,YtC+BW;EsC9BX,0BtCsDe;EOrEX,4BP8tBwC;CsC7sB7C;;AAED;ECWE,sMAA6I;EDT7I,2BtCisBkC;CsChsBnC;;AAED;EACE,2DtCosBgD;UsCpsBhD,mDtCosBgD;CsCnsBjD;;AE/BD;EACE,qBAAa;EAAb,cAAa;EACb,sBAAuB;MAAvB,wBAAuB;CACxB;;AAED;EACE,YAAO;MAAP,QAAO;CACR;;ACHD;EACE,qBAAa;EAAb,cAAa;EACb,2BAAsB;MAAtB,uBAAsB;EAGtB,gBAAe;EACf,iBAAgB;CACjB;;AAQD;EACE,YAAW;EACX,ezCoCgB;EyCnChB,oBAAmB;CAapB;;AxCbG;EwCIA,ezC+Bc;EyC9Bd,sBAAqB;EACrB,0BzCuBc;CC1Bb;;AwCNL;EAaI,ezC2Bc;EyC1Bd,0BzCmBc;CyClBf;;AAQH;EACE,mBAAkB;EAClB,eAAc;EACd,yBzCgsBsC;EyC9rBtC,oBzCsKgB;EyCrKhB,uBzCEW;EyCDX,uCzCWW;CyCiBZ;;AAnCD;EnChCI,gCN6M2B;EM5M3B,iCN4M2B;CyClK5B;;AAXH;EAcI,iBAAgB;EnChChB,oCN+L2B;EM9L3B,mCN8L2B;CyC7J5B;;AxCpCC;EwCuCA,sBAAqB;CxCpCpB;;AwCiBL;EAwBI,ezCVc;EyCWd,uBzCjBS;CyCkBV;;AA1BH;EA8BI,WAAU;EACV,YzCvBS;EyCwBT,0BzCAa;EyCCb,sBzCDa;CyCEd;;AASH;EAEI,gBAAe;EACf,eAAc;EACd,iBAAgB;CACjB;;AALH;EASM,cAAa;CACd;;AAVL;EAeM,iBAAgB;CACjB;;AClGH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;AAnBH;EACE,e3BmFgE;E2BlFhE,0B3BgFqE;C2B/EtE;;AAGD;;EAEE,e3B4EgE;C2BhEjE;;AzCDC;;;EyCRE,e3ByE8D;E2BxE9D,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B3BmE8D;E2BlE9D,sB3BkE8D;C2BjE/D;;ACtBL;EACE,aAAY;EACZ,kB3CizBiD;E2ChzBjD,kB3C+OqB;E2C9OrB,eAAc;EACd,Y3CuDW;E2CtDX,0B3C4CW;E2C3CX,YAAW;CAOZ;;A1CQG;E0CZA,Y3CkDS;E2CjDT,sBAAqB;EACrB,aAAY;C1CaX;;A0CHL;EACE,WAAU;EACV,wBAAuB;EACvB,UAAS;EACT,yBAAwB;CACzB;;ACpBD;EACE,iBAAgB;CACjB;;AAGD;EACE,gBAAe;EACf,OAAM;EACN,SAAQ;EACR,UAAS;EACT,QAAO;EACP,c5C0f8B;E4Czf9B,cAAa;EACb,iBAAgB;EAGhB,WAAU;CAWX;;AAtBD;ErCPM,4CPqsB8C;EOrsB9C,oCPqsB8C;EOrsB9C,qEPqsB8C;E4C3qBhD,sCAA6B;UAA7B,8BAA6B;CAC9B;;AApBH;EAqByB,mCAA0B;UAA1B,2BAA0B;CAAI;;AAEvD;EACE,mBAAkB;EAClB,iBAAgB;CACjB;;AAGD;EACE,mBAAkB;EAClB,YAAW;EACX,a5CuoBgC;C4CtoBjC;;AAGD;EACE,mBAAkB;EAClB,qBAAa;EAAb,cAAa;EACb,2BAAsB;MAAtB,uBAAsB;EACtB,uB5CFW;E4CGX,6BAA4B;EAC5B,qC5CMW;EMxDT,sBNoN0B;E4C9J5B,WAAU;CACX;;AAGD;EACE,gBAAe;EACf,OAAM;EACN,SAAQ;EACR,UAAS;EACT,QAAO;EACP,c5Cuc8B;E4Ctc9B,uB5CTW;C4CcZ;;AAZD;EAUW,WAAU;CAAK;;AAV1B;EAWW,a5CsnBqB;C4CtnBe;;AAK/C;EACE,qBAAa;EAAb,cAAa;EACb,uBAAmB;MAAnB,oBAAmB;EACnB,uBAA8B;MAA9B,+BAA8B;EAC9B,c5CknBgC;E4CjnBhC,iC5C/BgB;C4CgCjB;;AAGD;EACE,iBAAgB;EAChB,iB5C4JoB;C4C3JrB;;AAID;EACE,mBAAkB;EAGlB,mBAAc;MAAd,eAAc;EACd,c5C8kBgC;C4C7kBjC;;AAGD;EACE,qBAAa;EAAb,cAAa;EACb,uBAAmB;MAAnB,oBAAmB;EACnB,mBAAyB;MAAzB,0BAAyB;EACzB,c5CskBgC;E4CrkBhC,8B5CxDgB;C4C6DjB;;AAVD;EAQyB,oBAAmB;CAAK;;AARjD;EASwB,qBAAoB;CAAK;;AAIjD;EACE,mBAAkB;EAClB,aAAY;EACZ,YAAW;EACX,aAAY;EACZ,iBAAgB;CACjB;;AjClEG;EiCuEF;IACE,iB5CukB+B;I4CtkB/B,kBAAyC;GAC1C;EAMD;IAAY,iB5CgkBqB;G4ChkBG;C9CosIrC;;AapxIG;EiCoFF;IAAY,iB5C0jBqB;G4C1jBG;C9CssIrC;;A+Cj1ID;EACE,mBAAkB;EAClB,c7C2gB8B;E6C1gB9B,eAAc;EACd,U7CynB6B;E8C5nB7B,wG9CuOiH;E8CrOjH,mBAAkB;EAClB,oB9C4OyB;E8C3OzB,iB9C+OoB;E8C9OpB,iBAAgB;EAChB,kBAAiB;EACjB,sBAAqB;EACrB,kBAAiB;EACjB,qBAAoB;EACpB,uBAAsB;EACtB,mBAAkB;EAClB,qBAAoB;EACpB,oBAAmB;EACnB,iBAAgB;EDPhB,oB7CsOsB;E6CpOtB,sBAAqB;EACrB,WAAU;CAoFX;;AA/FD;EAaW,a7C6mBqB;C6C7mBQ;;AAbxC;EAgBI,mBAAkB;EAClB,eAAc;EACd,W7C8mB6B;E6C7mB7B,Y7C8mB6B;C6C7mB9B;;AApBH;EAuBI,eAA+B;CAWhC;;AAlCH;EAyBM,UAAS;CACV;;AA1BL;EA6BM,kBAAuC;EACvC,YAAW;EACX,wBAAyD;EACzD,uB7C2BO;C6C1BR;;AAjCL;EAoCI,e7C4lB6B;C6CjlB9B;;AA/CH;EAsCM,QAAO;CACR;;AAvCL;EA0CM,iBAAsC;EACtC,YAAW;EACX,4BAA8E;EAC9E,yB7CcO;C6CbR;;AA9CL;EAiDI,eAA+B;CAWhC;;AA5DH;EAmDM,OAAM;CACP;;AApDL;EAuDM,kBAAuC;EACvC,YAAW;EACX,wB7CukB2B;E6CtkB3B,0B7CCO;C6CAR;;AA3DL;EA8DI,e7CkkB6B;C6CtjB9B;;AA1EH;EAgEM,SAAQ;CACT;;AAjEL;EAoEM,SAAQ;EACR,iBAAsC;EACtC,YAAW;EACX,4B7CyjB2B;E6CxjB3B,wB7CbO;C6CcR;;AAzEL;EA2FI,mBAAkB;EAClB,0BAAyB;EACzB,oBAAmB;CACpB;;AAIH;EACE,iB7CohBiC;E6CnhBjC,iB7CwhB+B;E6CvhB/B,Y7CpDW;E6CqDX,mBAAkB;EAClB,uB7C5CW;EMxDT,uBNmN2B;C6C7G9B;;AE1GD;EACE,mBAAkB;EAClB,OAAM;EACN,QAAO;EACP,c/CygB8B;E+CxgB9B,eAAc;EACd,iB/CooByC;E+CnoBzC,a/CioBuC;E8CtoBvC,wG9CuOiH;E8CrOjH,mBAAkB;EAClB,oB9C4OyB;E8C3OzB,iB9C+OoB;E8C9OpB,iBAAgB;EAChB,kBAAiB;EACjB,sBAAqB;EACrB,kBAAiB;EACjB,qBAAoB;EACpB,uBAAsB;EACtB,mBAAkB;EAClB,qBAAoB;EACpB,oBAAmB;EACnB,iBAAgB;ECLhB,oB/CoOsB;E+ClOtB,sBAAqB;EACrB,uB/CoCW;E+CnCX,6BAA4B;EAC5B,qC/C4CW;EMxDT,sBNoN0B;C+C5C7B;;AA5KD;EAyBI,mBAAkB;EAClB,eAAc;EACd,Y/C6nBsC;E+C5nBtC,Y/C6nBqC;C+C5nBtC;;AA7BH;;EAiCI,mBAAkB;EAClB,eAAc;EACd,0BAAyB;EACzB,oBAAmB;CACpB;;AArCH;EAwCI,YAAW;EACX,mB/CmnB8D;C+ClnB/D;;AA1CH;EA4CI,YAAW;EACX,mB/C+mB8D;C+C9mB/D;;AA9CH;EAmDI,oB/CqmBsC;C+C/kBvC;;AAzEH;EAsDM,UAAS;CACV;;AAvDL;;EA2DM,uBAAsB;CACvB;;AA5DL;EA+DM,c/C6lB4D;E+C5lB5D,kBAA6C;EAC7C,sC/C4lBmE;C+C3lBpE;;AAlEL;EAqEM,cAAwC;EACxC,kBAA6C;EAC7C,uB/CrBO;C+CsBR;;AAxEL;EA4EI,kB/C4kBsC;C+CvjBvC;;AAjGH;EA+EM,QAAO;CACR;;AAhFL;;EAoFM,iBAA4C;EAC5C,qBAAoB;CACrB;;AAtFL;EAyFM,Y/CmkB4D;E+ClkB5D,wC/CmkBmE;C+ClkBpE;;AA3FL;EA8FM,YAAsC;EACtC,yB/C7CO;C+C8CR;;AAhGL;EAoGI,iB/CojBsC;C+CnhBvC;;AArIH;EAuGM,OAAM;CACP;;AAxGL;;EA4GM,kBAAuC;EACvC,oBAAmB;CACpB;;AA9GL;EAiHM,W/C2iB4D;E+C1iB5D,yC/C2iBmE;C+C1iBpE;;AAnHL;EAsHM,WAAqC;EACrC,0B/CrEO;C+CsER;;AAxHL;EA4HM,mBAAkB;EAClB,OAAM;EACN,UAAS;EACT,eAAc;EACd,YAAW;EACX,mBAAkB;EAClB,YAAW;EACX,iC/C4gBwD;C+C3gBzD;;AApIL;EAwII,mB/CghBsC;C+C3fvC;;AA7JH;EA2IM,SAAQ;CACT;;AA5IL;;EAgJM,iBAA4C;EAC5C,sBAAqB;CACtB;;AAlJL;EAqJM,a/CugB4D;E+CtgB5D,uC/CugBmE;C+CtgBpE;;AAvJL;EA0JM,aAAuC;EACvC,wB/CzGO;C+C0GR;;AAoBL;EACE,kB/CieyC;E+ChezC,iBAAgB;EAChB,gB/C0DmB;E+CzDnB,e/C8E8B;E+C7E9B,0B/C0d4D;E+Czd5D,iCAAyE;EzC5KvE,2CyC6KyE;EzC5KzE,4CyC4KyE;CAM5E;;AAbD;EAWI,cAAa;CACd;;AAGH;EACE,kB/CsdqC;E+CrdrC,e/CtIgB;C+CuIjB;;ACjMD;EACE,mBAAkB;CACnB;;AAED;EACE,mBAAkB;EAClB,YAAW;EACX,iBAAgB;CACjB;;AAED;EACE,mBAAkB;EAClB,cAAa;EACb,uBAAmB;MAAnB,oBAAmB;EACnB,YAAW;EzCVP,wCPyyB4C;EOzyB5C,gCPyyB4C;EOzyB5C,6DPyyB4C;EgD7xBhD,oCAA2B;UAA3B,4BAA2B;EAC3B,4BAAmB;UAAnB,oBAAmB;CACpB;;AAED;;;EAGE,eAAc;CACf;;AAED;;EAEE,mBAAkB;EAClB,OAAM;CACP;;AAGD;;EAEE,iCAAwB;UAAxB,yBAAwB;CAKzB;;AAHyC;EAJ1C;;IAKI,wCAA+B;YAA/B,gCAA+B;GAElC;ClD2nJA;;AkDznJD;;EAEE,oCAA2B;UAA3B,4BAA2B;CAK5B;;AAHyC;EAJ1C;;IAKI,2CAAkC;YAAlC,mCAAkC;GAErC;ClD8nJA;;AkD5nJD;;EAEE,qCAA4B;UAA5B,6BAA4B;CAK7B;;AAHyC;EAJ1C;;IAKI,4CAAmC;YAAnC,oCAAmC;GAEtC;ClDioJA;;AkD1nJD;;EAEE,mBAAkB;EAClB,OAAM;EACN,UAAS;EAET,qBAAa;EAAb,cAAa;EACb,uBAAmB;MAAnB,oBAAmB;EACnB,sBAAuB;MAAvB,wBAAuB;EACvB,WhDmtB+C;EgDltB/C,YhD1BW;EgD2BX,mBAAkB;EAClB,ahDitB8C;CgDtsB/C;;A/CnEG;;;E+C8DA,YhDlCS;EgDmCT,sBAAqB;EACrB,WAAU;EACV,YAAW;C/C9DV;;A+CiEL;EACE,QAAO;CACR;;AACD;EACE,SAAQ;CACT;;AAGD;;EAEE,sBAAqB;EACrB,YhDosBgD;EgDnsBhD,ahDmsBgD;EgDlsBhD,gDAA+C;EAC/C,2BAA0B;CAC3B;;AACD;EACE,8MjC/DyI;CiCgE1I;;AACD;EACE,gNjClEyI;CiCmE1I;;AAQD;EACE,mBAAkB;EAClB,SAAQ;EACR,aAAY;EACZ,QAAO;EACP,YAAW;EACX,qBAAa;EAAb,cAAa;EACb,sBAAuB;MAAvB,wBAAuB;EACvB,gBAAe;EAEf,kBhD6pB+C;EgD5pB/C,iBhD4pB+C;EgD3pB/C,iBAAgB;CAoCjB;;AAhDD;EAeI,mBAAkB;EAClB,mBAAc;MAAd,eAAc;EACd,YhDypB8C;EgDxpB9C,YhDypB6C;EgDxpB7C,kBhDypB6C;EgDxpB7C,iBhDwpB6C;EgDvpB7C,oBAAmB;EACnB,2ChD3FS;CgDgHV;;AA3CH;EA0BM,mBAAkB;EAClB,WAAU;EACV,QAAO;EACP,sBAAqB;EACrB,YAAW;EACX,aAAY;EACZ,YAAW;CACZ;;AAjCL;EAmCM,mBAAkB;EAClB,cAAa;EACb,QAAO;EACP,sBAAqB;EACrB,YAAW;EACX,aAAY;EACZ,YAAW;CACZ;;AA1CL;EA8CI,uBhDnHS;CgDoHV;;AAQH;EACE,mBAAkB;EAClB,WAA6C;EAC7C,aAAY;EACZ,UAA4C;EAC5C,YAAW;EACX,kBAAiB;EACjB,qBAAoB;EACpB,YhDpIW;EgDqIX,mBAAkB;CACnB;;ACxLD;EAAqB,oCAAmC;CAAK;;AAC7D;EAAqB,+BAA8B;CAAK;;AACxD;EAAqB,kCAAiC;CAAK;;AAC3D;EAAqB,kCAAiC;CAAK;;AAC3D;EAAqB,uCAAsC;CAAK;;AAChE;EAAqB,oCAAmC;CAAK;;ACF3D;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AiDtBH;EACE,qCAAmC;CACpC;;AjDiBC;EiDdE,qCAAgD;CjDiBjD;;AkDrBL;EAAY,kCAAmC;CAAI;;AACnD;EAAkB,yCAAwC;CAAK;;ACD/D;EAAmB,qCAAsC;CAAI;;AAC7D;EAAmB,qBAAoB;CAAK;;AAC5C;EAAmB,yBAAwB;CAAK;;AAChD;EAAmB,2BAA0B;CAAK;;AAClD;EAAmB,4BAA2B;CAAK;;AACnD;EAAmB,0BAAyB;CAAK;;AAG/C;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAGH;EACE,8BAA+B;CAChC;;AAMD;EACE,kCAAwC;CACzC;;AACD;EACE,2CAAiD;EACjD,4CAAkD;CACnD;;AACD;EACE,4CAAkD;EAClD,+CAAqD;CACtD;;AACD;EACE,+CAAqD;EACrD,8CAAoD;CACrD;;AACD;EACE,2CAAiD;EACjD,8CAAoD;CACrD;;AAED;EACE,mBAAkB;CACnB;;AAED;EACE,iBAAgB;CACjB;;AtBlDC;EACE,eAAc;EACd,YAAW;EACX,YAAW;CACZ;;AuBGC;EAA2B,yBAAwB;CAAK;;AACxD;EAA2B,2BAA0B;CAAK;;AAC1D;EAA2B,iCAAgC;CAAK;;AAChE;EAA2B,0BAAyB;CAAK;;AACzD;EAA2B,0BAAyB;CAAK;;AACzD;EAA2B,+BAA8B;CAAK;;AAC9D;EAA2B,gCAAwB;EAAxB,yBAAwB;CAAK;;AACxD;EAA2B,uCAA+B;EAA/B,gCAA+B;CAAK;;A1CyC/D;E0ChDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,gCAA+B;GAAK;CvDuhKlE;;Aa9+JG;E0ChDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,gCAA+B;GAAK;CvDkjKlE;;AazgKG;E0ChDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,gCAA+B;GAAK;CvD6kKlE;;AapiKG;E0ChDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,gCAA+B;GAAK;CvDwmKlE;;AuD/lKD;EACE,yBAAwB;CAKzB;;AAHC;EAHF;IAII,0BAAyB;GAE5B;CvDmmKA;;AuDjmKD;EACE,yBAAwB;CAKzB;;AAHC;EAHF;IAII,2BAA0B;GAE7B;CvDqmKA;;AuDnmKD;EACE,yBAAwB;CAKzB;;AAHC;EAHF;IAII,iCAAgC;GAEnC;CvDumKA;;AuDpmKC;EADF;IAEI,yBAAwB;GAE3B;CvDumKA;;AwDzpKD;EACE,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,WAAU;EACV,iBAAgB;CAoBjB;;AAzBD;EAQI,eAAc;EACd,YAAW;CACZ;;AAVH;;;;;EAiBI,mBAAkB;EAClB,OAAM;EACN,UAAS;EACT,QAAO;EACP,YAAW;EACX,aAAY;EACZ,UAAS;CACV;;AAGH;EAEI,wBAA+B;CAChC;;AAGH;EAEI,oBAA+B;CAChC;;AAGH;EAEI,iBAA8B;CAC/B;;AAGH;EAEI,kBAA8B;CAC/B;;AC1CC;EAAgC,mCAA8B;MAA9B,+BAA8B;CAAK;;AACnE;EAAgC,sCAAiC;MAAjC,kCAAiC;CAAK;;AACtE;EAAgC,2CAAsC;MAAtC,uCAAsC;CAAK;;AAC3E;EAAgC,8CAAyC;MAAzC,0CAAyC;CAAK;;AAE9E;EAA8B,+BAA0B;MAA1B,2BAA0B;CAAK;;AAC7D;EAA8B,iCAA4B;MAA5B,6BAA4B;CAAK;;AAC/D;EAA8B,uCAAkC;MAAlC,mCAAkC;CAAK;;AAErE;EAAoC,gCAAsC;MAAtC,uCAAsC;CAAK;;AAC/E;EAAoC,8BAAoC;MAApC,qCAAoC;CAAK;;AAC7E;EAAoC,iCAAkC;MAAlC,mCAAkC;CAAK;;AAC3E;EAAoC,kCAAyC;MAAzC,0CAAyC;CAAK;;AAClF;EAAoC,qCAAwC;MAAxC,yCAAwC;CAAK;;AAEjF;EAAiC,iCAAkC;MAAlC,mCAAkC;CAAK;;AACxE;EAAiC,+BAAgC;MAAhC,iCAAgC;CAAK;;AACtE;EAAiC,kCAA8B;MAA9B,+BAA8B;CAAK;;AACpE;EAAiC,oCAAgC;MAAhC,iCAAgC;CAAK;;AACtE;EAAiC,mCAA+B;MAA/B,gCAA+B;CAAK;;AAErE;EAAkC,qCAAoC;MAApC,qCAAoC;CAAK;;AAC3E;EAAkC,mCAAkC;MAAlC,mCAAkC;CAAK;;AACzE;EAAkC,sCAAgC;MAAhC,iCAAgC;CAAK;;AACvE;EAAkC,uCAAuC;MAAvC,wCAAuC;CAAK;;AAC9E;EAAkC,0CAAsC;MAAtC,uCAAsC;CAAK;;AAC7E;EAAkC,uCAAiC;MAAjC,kCAAiC;CAAK;;AAExE;EAAgC,qCAA2B;MAA3B,4BAA2B;CAAK;;AAChE;EAAgC,sCAAiC;MAAjC,kCAAiC;CAAK;;AACtE;EAAgC,oCAA+B;MAA/B,gCAA+B;CAAK;;AACpE;EAAgC,uCAA6B;MAA7B,8BAA6B;CAAK;;AAClE;EAAgC,yCAA+B;MAA/B,gCAA+B;CAAK;;AACpE;EAAgC,wCAA8B;MAA9B,+BAA8B;CAAK;;A5CenE;E4ChDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CzD22KtE;;Aa51KG;E4ChDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CzDq8KtE;;Aat7KG;E4ChDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CzD+hLtE;;AahhLG;E4ChDA;IAAgC,mCAA8B;QAA9B,+BAA8B;GAAK;EACnE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,2CAAsC;QAAtC,uCAAsC;GAAK;EAC3E;IAAgC,8CAAyC;QAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;QAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;QAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;QAAlC,mCAAkC;GAAK;EAErE;IAAoC,gCAAsC;QAAtC,uCAAsC;GAAK;EAC/E;IAAoC,8BAAoC;QAApC,qCAAoC;GAAK;EAC7E;IAAoC,iCAAkC;QAAlC,mCAAkC;GAAK;EAC3E;IAAoC,kCAAyC;QAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;QAAxC,yCAAwC;GAAK;EAEjF;IAAiC,iCAAkC;QAAlC,mCAAkC;GAAK;EACxE;IAAiC,+BAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,kCAA8B;QAA9B,+BAA8B;GAAK;EACpE;IAAiC,oCAAgC;QAAhC,iCAAgC;GAAK;EACtE;IAAiC,mCAA+B;QAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;QAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;QAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;QAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;QAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;QAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;QAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;QAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;QAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;QAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;QAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;QAA9B,+BAA8B;GAAK;CzDynLtE;;A0D9pLG;ECHF,uBAAsB;CDG2B;;AAC/C;ECDF,wBAAuB;CDC2B;;AAChD;ECCF,uBAAsB;CDD2B;;A7CkD/C;E6CpDA;ICHF,uBAAsB;GDG2B;EAC/C;ICDF,wBAAuB;GDC2B;EAChD;ICCF,uBAAsB;GDD2B;C1DorLlD;;AaloLG;E6CpDA;ICHF,uBAAsB;GDG2B;EAC/C;ICDF,wBAAuB;GDC2B;EAChD;ICCF,uBAAsB;GDD2B;C1DgsLlD;;Aa9oLG;E6CpDA;ICHF,uBAAsB;GDG2B;EAC/C;ICDF,wBAAuB;GDC2B;EAChD;ICCF,uBAAsB;GDD2B;C1D4sLlD;;Aa1pLG;E6CpDA;ICHF,uBAAsB;GDG2B;EAC/C;ICDF,wBAAuB;GDC2B;EAChD;ICCF,uBAAsB;GDD2B;C1DwtLlD;;A4D5tLD;EACE,gBAAe;EACf,OAAM;EACN,SAAQ;EACR,QAAO;EACP,c1DmgB8B;C0DlgB/B;;AAED;EACE,gBAAe;EACf,SAAQ;EACR,UAAS;EACT,QAAO;EACP,c1D2f8B;C0D1f/B;;AAG6B;EAD9B;IAEI,yBAAgB;IAAhB,iBAAgB;IAChB,OAAM;IACN,c1Dmf4B;G0Djf/B;C5D8tLA;;A6DlvLD;ECEE,mBAAkB;EAClB,WAAU;EACV,YAAW;EACX,WAAU;EACV,iBAAgB;EAChB,uBAAmB;EACnB,oBAAmB;EACnB,8BAAqB;UAArB,sBAAqB;EACrB,UAAS;CDRV;;ACkBC;EAEE,iBAAgB;EAChB,YAAW;EACX,aAAY;EACZ,kBAAiB;EACjB,WAAU;EACV,oBAAmB;EACnB,wBAAe;UAAf,gBAAe;CAChB;;AC7BC;EAAuB,sBAA4B;CAAI;;AAAvD;EAAuB,sBAA4B;CAAI;;AAAvD;EAAuB,sBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,wBAA4B;CAAI;;AAI3D;EAAU,2BAA0B;CAAK;;AACzC;EAAU,4BAA2B;CAAK;;ACAlC;EAAiC,qBAAmC;CAAI;;AACxE;EAAiC,yBAAuC;CAAI;;AAC5E;EAAiC,2BAAyC;CAAI;;AAC9E;EAAiC,4BAA0C;CAAI;;AAC/E;EAAiC,0BAAwC;CAAI;;AAC7E;EACE,2BAAwC;EACxC,0BAAuC;CACxC;;AACD;EACE,yBAAuC;EACvC,4BAA0C;CAC3C;;AAZD;EAAiC,2BAAmC;CAAI;;AACxE;EAAiC,+BAAuC;CAAI;;AAC5E;EAAiC,iCAAyC;CAAI;;AAC9E;EAAiC,kCAA0C;CAAI;;AAC/E;EAAiC,gCAAwC;CAAI;;AAC7E;EACE,iCAAwC;EACxC,gCAAuC;CACxC;;AACD;EACE,+BAAuC;EACvC,kCAA0C;CAC3C;;AAZD;EAAiC,0BAAmC;CAAI;;AACxE;EAAiC,8BAAuC;CAAI;;AAC5E;EAAiC,gCAAyC;CAAI;;AAC9E;EAAiC,iCAA0C;CAAI;;AAC/E;EAAiC,+BAAwC;CAAI;;AAC7E;EACE,gCAAwC;EACxC,+BAAuC;CACxC;;AACD;EACE,8BAAuC;EACvC,iCAA0C;CAC3C;;AAZD;EAAiC,wBAAmC;CAAI;;AACxE;EAAiC,4BAAuC;CAAI;;AAC5E;EAAiC,8BAAyC;CAAI;;AAC9E;EAAiC,+BAA0C;CAAI;;AAC/E;EAAiC,6BAAwC;CAAI;;AAC7E;EACE,8BAAwC;EACxC,6BAAuC;CACxC;;AACD;EACE,4BAAuC;EACvC,+BAA0C;CAC3C;;AAZD;EAAiC,0BAAmC;CAAI;;AACxE;EAAiC,8BAAuC;CAAI;;AAC5E;EAAiC,gCAAyC;CAAI;;AAC9E;EAAiC,iCAA0C;CAAI;;AAC/E;EAAiC,+BAAwC;CAAI;;AAC7E;EACE,gCAAwC;EACxC,+BAAuC;CACxC;;AACD;EACE,8BAAuC;EACvC,iCAA0C;CAC3C;;AAZD;EAAiC,wBAAmC;CAAI;;AACxE;EAAiC,4BAAuC;CAAI;;AAC5E;EAAiC,8BAAyC;CAAI;;AAC9E;EAAiC,+BAA0C;CAAI;;AAC/E;EAAiC,6BAAwC;CAAI;;AAC7E;EACE,8BAAwC;EACxC,6BAAuC;CACxC;;AACD;EACE,4BAAuC;EACvC,+BAA0C;CAC3C;;AAZD;EAAiC,sBAAmC;CAAI;;AACxE;EAAiC,0BAAuC;CAAI;;AAC5E;EAAiC,4BAAyC;CAAI;;AAC9E;EAAiC,6BAA0C;CAAI;;AAC/E;EAAiC,2BAAwC;CAAI;;AAC7E;EACE,4BAAwC;EACxC,2BAAuC;CACxC;;AACD;EACE,0BAAuC;EACvC,6BAA0C;CAC3C;;AAZD;EAAiC,4BAAmC;CAAI;;AACxE;EAAiC,gCAAuC;CAAI;;AAC5E;EAAiC,kCAAyC;CAAI;;AAC9E;EAAiC,mCAA0C;CAAI;;AAC/E;EAAiC,iCAAwC;CAAI;;AAC7E;EACE,kCAAwC;EACxC,iCAAuC;CACxC;;AACD;EACE,gCAAuC;EACvC,mCAA0C;CAC3C;;AAZD;EAAiC,2BAAmC;CAAI;;AACxE;EAAiC,+BAAuC;CAAI;;AAC5E;EAAiC,iCAAyC;CAAI;;AAC9E;EAAiC,kCAA0C;CAAI;;AAC/E;EAAiC,gCAAwC;CAAI;;AAC7E;EACE,iCAAwC;EACxC,gCAAuC;CACxC;;AACD;EACE,+BAAuC;EACvC,kCAA0C;CAC3C;;AAZD;EAAiC,yBAAmC;CAAI;;AACxE;EAAiC,6BAAuC;CAAI;;AAC5E;EAAiC,+BAAyC;CAAI;;AAC9E;EAAiC,gCAA0C;CAAI;;AAC/E;EAAiC,8BAAwC;CAAI;;AAC7E;EACE,+BAAwC;EACxC,8BAAuC;CACxC;;AACD;EACE,6BAAuC;EACvC,gCAA0C;CAC3C;;AAZD;EAAiC,2BAAmC;CAAI;;AACxE;EAAiC,+BAAuC;CAAI;;AAC5E;EAAiC,iCAAyC;CAAI;;AAC9E;EAAiC,kCAA0C;CAAI;;AAC/E;EAAiC,gCAAwC;CAAI;;AAC7E;EACE,iCAAwC;EACxC,gCAAuC;CACxC;;AACD;EACE,+BAAuC;EACvC,kCAA0C;CAC3C;;AAZD;EAAiC,yBAAmC;CAAI;;AACxE;EAAiC,6BAAuC;CAAI;;AAC5E;EAAiC,+BAAyC;CAAI;;AAC9E;EAAiC,gCAA0C;CAAI;;AAC/E;EAAiC,8BAAwC;CAAI;;AAC7E;EACE,+BAAwC;EACxC,8BAAuC;CACxC;;AACD;EACE,6BAAuC;EACvC,gCAA0C;CAC3C;;AAKL;EAAoB,wBAA8B;CAAK;;AACvD;EAAoB,4BAA8B;CAAK;;AACvD;EAAoB,8BAA8B;CAAK;;AACvD;EAAoB,+BAA8B;CAAK;;AACvD;EAAoB,6BAA8B;CAAK;;AACvD;EACE,8BAA6B;EAC7B,6BAA6B;CAC9B;;AACD;EACE,4BAA8B;EAC9B,+BAA8B;CAC/B;;AnDkBD;EmD/CI;IAAiC,qBAAmC;GAAI;EACxE;IAAiC,yBAAuC;GAAI;EAC5E;IAAiC,2BAAyC;GAAI;EAC9E;IAAiC,4BAA0C;GAAI;EAC/E;IAAiC,0BAAwC;GAAI;EAC7E;IACE,2BAAwC;IACxC,0BAAuC;GACxC;EACD;IACE,yBAAuC;IACvC,4BAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,sBAAmC;GAAI;EACxE;IAAiC,0BAAuC;GAAI;EAC5E;IAAiC,4BAAyC;GAAI;EAC9E;IAAiC,6BAA0C;GAAI;EAC/E;IAAiC,2BAAwC;GAAI;EAC7E;IACE,4BAAwC;IACxC,2BAAuC;GACxC;EACD;IACE,0BAAuC;IACvC,6BAA0C;GAC3C;EAZD;IAAiC,4BAAmC;GAAI;EACxE;IAAiC,gCAAuC;GAAI;EAC5E;IAAiC,kCAAyC;GAAI;EAC9E;IAAiC,mCAA0C;GAAI;EAC/E;IAAiC,iCAAwC;GAAI;EAC7E;IACE,kCAAwC;IACxC,iCAAuC;GACxC;EACD;IACE,gCAAuC;IACvC,mCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAKL;IAAoB,wBAA8B;GAAK;EACvD;IAAoB,4BAA8B;GAAK;EACvD;IAAoB,8BAA8B;GAAK;EACvD;IAAoB,+BAA8B;GAAK;EACvD;IAAoB,6BAA8B;GAAK;EACvD;IACE,8BAA6B;IAC7B,6BAA6B;GAC9B;EACD;IACE,4BAA8B;IAC9B,+BAA8B;GAC/B;ChEk8MJ;;Aah7MG;EmD/CI;IAAiC,qBAAmC;GAAI;EACxE;IAAiC,yBAAuC;GAAI;EAC5E;IAAiC,2BAAyC;GAAI;EAC9E;IAAiC,4BAA0C;GAAI;EAC/E;IAAiC,0BAAwC;GAAI;EAC7E;IACE,2BAAwC;IACxC,0BAAuC;GACxC;EACD;IACE,yBAAuC;IACvC,4BAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,sBAAmC;GAAI;EACxE;IAAiC,0BAAuC;GAAI;EAC5E;IAAiC,4BAAyC;GAAI;EAC9E;IAAiC,6BAA0C;GAAI;EAC/E;IAAiC,2BAAwC;GAAI;EAC7E;IACE,4BAAwC;IACxC,2BAAuC;GACxC;EACD;IACE,0BAAuC;IACvC,6BAA0C;GAC3C;EAZD;IAAiC,4BAAmC;GAAI;EACxE;IAAiC,gCAAuC;GAAI;EAC5E;IAAiC,kCAAyC;GAAI;EAC9E;IAAiC,mCAA0C;GAAI;EAC/E;IAAiC,iCAAwC;GAAI;EAC7E;IACE,kCAAwC;IACxC,iCAAuC;GACxC;EACD;IACE,gCAAuC;IACvC,mCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAKL;IAAoB,wBAA8B;GAAK;EACvD;IAAoB,4BAA8B;GAAK;EACvD;IAAoB,8BAA8B;GAAK;EACvD;IAAoB,+BAA8B;GAAK;EACvD;IAAoB,6BAA8B;GAAK;EACvD;IACE,8BAA6B;IAC7B,6BAA6B;GAC9B;EACD;IACE,4BAA8B;IAC9B,+BAA8B;GAC/B;ChEgvNJ;;Aa9tNG;EmD/CI;IAAiC,qBAAmC;GAAI;EACxE;IAAiC,yBAAuC;GAAI;EAC5E;IAAiC,2BAAyC;GAAI;EAC9E;IAAiC,4BAA0C;GAAI;EAC/E;IAAiC,0BAAwC;GAAI;EAC7E;IACE,2BAAwC;IACxC,0BAAuC;GACxC;EACD;IACE,yBAAuC;IACvC,4BAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,sBAAmC;GAAI;EACxE;IAAiC,0BAAuC;GAAI;EAC5E;IAAiC,4BAAyC;GAAI;EAC9E;IAAiC,6BAA0C;GAAI;EAC/E;IAAiC,2BAAwC;GAAI;EAC7E;IACE,4BAAwC;IACxC,2BAAuC;GACxC;EACD;IACE,0BAAuC;IACvC,6BAA0C;GAC3C;EAZD;IAAiC,4BAAmC;GAAI;EACxE;IAAiC,gCAAuC;GAAI;EAC5E;IAAiC,kCAAyC;GAAI;EAC9E;IAAiC,mCAA0C;GAAI;EAC/E;IAAiC,iCAAwC;GAAI;EAC7E;IACE,kCAAwC;IACxC,iCAAuC;GACxC;EACD;IACE,gCAAuC;IACvC,mCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAKL;IAAoB,wBAA8B;GAAK;EACvD;IAAoB,4BAA8B;GAAK;EACvD;IAAoB,8BAA8B;GAAK;EACvD;IAAoB,+BAA8B;GAAK;EACvD;IAAoB,6BAA8B;GAAK;EACvD;IACE,8BAA6B;IAC7B,6BAA6B;GAC9B;EACD;IACE,4BAA8B;IAC9B,+BAA8B;GAC/B;ChE8hOJ;;Aa5gOG;EmD/CI;IAAiC,qBAAmC;GAAI;EACxE;IAAiC,yBAAuC;GAAI;EAC5E;IAAiC,2BAAyC;GAAI;EAC9E;IAAiC,4BAA0C;GAAI;EAC/E;IAAiC,0BAAwC;GAAI;EAC7E;IACE,2BAAwC;IACxC,0BAAuC;GACxC;EACD;IACE,yBAAuC;IACvC,4BAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,0BAAmC;GAAI;EACxE;IAAiC,8BAAuC;GAAI;EAC5E;IAAiC,gCAAyC;GAAI;EAC9E;IAAiC,iCAA0C;GAAI;EAC/E;IAAiC,+BAAwC;GAAI;EAC7E;IACE,gCAAwC;IACxC,+BAAuC;GACxC;EACD;IACE,8BAAuC;IACvC,iCAA0C;GAC3C;EAZD;IAAiC,wBAAmC;GAAI;EACxE;IAAiC,4BAAuC;GAAI;EAC5E;IAAiC,8BAAyC;GAAI;EAC9E;IAAiC,+BAA0C;GAAI;EAC/E;IAAiC,6BAAwC;GAAI;EAC7E;IACE,8BAAwC;IACxC,6BAAuC;GACxC;EACD;IACE,4BAAuC;IACvC,+BAA0C;GAC3C;EAZD;IAAiC,sBAAmC;GAAI;EACxE;IAAiC,0BAAuC;GAAI;EAC5E;IAAiC,4BAAyC;GAAI;EAC9E;IAAiC,6BAA0C;GAAI;EAC/E;IAAiC,2BAAwC;GAAI;EAC7E;IACE,4BAAwC;IACxC,2BAAuC;GACxC;EACD;IACE,0BAAuC;IACvC,6BAA0C;GAC3C;EAZD;IAAiC,4BAAmC;GAAI;EACxE;IAAiC,gCAAuC;GAAI;EAC5E;IAAiC,kCAAyC;GAAI;EAC9E;IAAiC,mCAA0C;GAAI;EAC/E;IAAiC,iCAAwC;GAAI;EAC7E;IACE,kCAAwC;IACxC,iCAAuC;GACxC;EACD;IACE,gCAAuC;IACvC,mCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAZD;IAAiC,2BAAmC;GAAI;EACxE;IAAiC,+BAAuC;GAAI;EAC5E;IAAiC,iCAAyC;GAAI;EAC9E;IAAiC,kCAA0C;GAAI;EAC/E;IAAiC,gCAAwC;GAAI;EAC7E;IACE,iCAAwC;IACxC,gCAAuC;GACxC;EACD;IACE,+BAAuC;IACvC,kCAA0C;GAC3C;EAZD;IAAiC,yBAAmC;GAAI;EACxE;IAAiC,6BAAuC;GAAI;EAC5E;IAAiC,+BAAyC;GAAI;EAC9E;IAAiC,gCAA0C;GAAI;EAC/E;IAAiC,8BAAwC;GAAI;EAC7E;IACE,+BAAwC;IACxC,8BAAuC;GACxC;EACD;IACE,6BAAuC;IACvC,gCAA0C;GAC3C;EAKL;IAAoB,wBAA8B;GAAK;EACvD;IAAoB,4BAA8B;GAAK;EACvD;IAAoB,8BAA8B;GAAK;EACvD;IAAoB,+BAA8B;GAAK;EACvD;IAAoB,6BAA8B;GAAK;EACvD;IACE,8BAA6B;IAC7B,6BAA6B;GAC9B;EACD;IACE,4BAA8B;IAC9B,+BAA8B;GAC/B;ChE40OJ;;AiE52OD;EAAiB,+BAA8B;CAAK;;AACpD;EAAiB,+BAA8B;CAAK;;AACpD;ECJE,iBAAgB;EAChB,wBAAuB;EACvB,oBAAmB;CDEsB;;AAQvC;EAAwB,4BAA2B;CAAK;;AACxD;EAAwB,6BAA4B;CAAK;;AACzD;EAAwB,8BAA6B;CAAK;;ApDsC1D;EoDxCA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjEs4O7D;;Aah2OG;EoDxCA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjEk5O7D;;Aa52OG;EoDxCA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjE85O7D;;Aax3OG;EoDxCA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjE06O7D;;AiEp6OD;EAAmB,qCAAoC;CAAK;;AAC5D;EAAmB,qCAAoC;CAAK;;AAC5D;EAAmB,sCAAqC;CAAK;;AAI7D;EAAsB,oB/DmNK;C+DnN+B;;AAC1D;EAAsB,kB/DmNC;C+DnNiC;;AACxD;EAAsB,mBAAkB;CAAK;;AAI7C;EAAc,uBAAsB;CAAK;;AEjCvC;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;AgEtBH;EACE,0BAAwB;CACzB;;AhEiBC;EgEdE,0BAAqC;ChEiBtC;;A8DiBL;EAAc,0BAA6B;CAAI;;AAI/C;EG5CE,YAAW;EACX,mBAAkB;EAClB,kBAAiB;EACjB,8BAA6B;EAC7B,UAAS;CH0CV;;AI5CD;ECDE,+BAAkC;CDGnC;;AAED;ECLE,8BAAkC;CDOnC","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v4.0.0-beta (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"print\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"utilities\";\n","// scss-lint:disable QualifyingElement\n\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request:\n// http://www.phpied.com/delay-loading-your-print-css/\n// ==========================================================================\n\n@if $enable-print-styles {\n @media print {\n *,\n *::before,\n *::after {\n // Bootstrap specific; comment out `color` and `background`\n //color: #000 !important; // Black prints faster:\n // http://www.sanbeiji.com/archives/953\n text-shadow: none !important;\n //background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n // Bootstrap specific; comment the following selector out\n //a[href]::after {\n // content: \" (\" attr(href) \")\";\n //}\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n // Bootstrap specific; comment the following selector out\n //\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n //\n\n //a[href^=\"#\"]::after,\n //a[href^=\"javascript:\"]::after {\n // content: \"\";\n //}\n\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: $border-width solid #999; // Bootstrap custom code; using `$border-width` instead of 1px\n page-break-inside: avoid;\n }\n\n //\n // Printing Tables:\n // http://css-discuss.incutio.com/wiki/Printing_Tables\n //\n\n thead {\n display: table-header-group;\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .badge {\n border: $border-width solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n }\n}\n","/*!\n * Bootstrap v4.0.0-beta (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #868e96;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #868e96;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f8f9fa;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #212529;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #e9ecef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #dddfe2;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #cfd2d6;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #212529;\n}\n\n.thead-default th {\n color: #495057;\n background-color: #e9ecef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #212529;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #32383e;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive.table-bordered {\n border: 0;\n }\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #495057;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-plaintext {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .form-control-plaintext.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .form-control-plaintext.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(2.3125rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #868e96;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.invalid-feedback {\n display: none;\n margin-top: .25rem;\n font-size: .875rem;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .invalid-feedback,\n.was-validated .form-control:valid ~ .invalid-tooltip, .form-control.is-valid ~ .invalid-feedback,\n.form-control.is-valid ~ .invalid-tooltip, .was-validated\n.custom-select:valid ~ .invalid-feedback,\n.was-validated\n.custom-select:valid ~ .invalid-tooltip,\n.custom-select.is-valid ~ .invalid-feedback,\n.custom-select.is-valid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator {\n background-color: rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description {\n color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid:focus, .custom-file-input.is-valid:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator {\n background-color: rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description {\n color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid:focus, .custom-file-input.is-invalid:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n border-radius: 0.25rem;\n transition: all 0.15s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n background-color: #0069d9;\n background-image: none;\n border-color: #0062cc;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #727b84;\n border-color: #6c757d;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n background-color: #727b84;\n background-image: none;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n background-color: #218838;\n background-image: none;\n border-color: #1e7e34;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n background-color: #138496;\n background-image: none;\n border-color: #117a8b;\n}\n\n.btn-warning {\n color: #111;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #111;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n background-color: #e0a800;\n background-image: none;\n border-color: #d39e00;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n background-color: #c82333;\n background-image: none;\n border-color: #bd2130;\n}\n\n.btn-light {\n color: #111;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #111;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:active, .btn-light.active,\n.show > .btn-light.dropdown-toggle {\n background-color: #e2e6ea;\n background-image: none;\n border-color: #dae0e5;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:active, .btn-dark.active,\n.show > .btn-dark.dropdown-toggle {\n background-color: #23272b;\n background-image: none;\n border-color: #1d2124;\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-secondary {\n color: #868e96;\n background-color: transparent;\n background-image: none;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:active, .btn-outline-light.active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:active, .btn-outline-dark.active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: normal;\n color: #007bff;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #868e96;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: normal;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #868e96;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n margin-bottom: 0;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: flex;\n align-items: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #495057;\n text-align: center;\n background-color: #e9ecef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n background-color: #e9ecef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #868e96;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #007bff;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #868e96;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #495057;\n pointer-events: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #e9ecef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #868e96;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #e9ecef #e9ecef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.show > .nav-pills .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-dark .navbar-brand {\n color: white;\n}\n\n.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {\n color: white;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0%;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #868e96;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #868e96;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #868e96;\n pointer-events: none;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #868e96;\n}\n\n.badge-secondary[href]:focus, .badge-secondary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #6c757d;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #111;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n color: #111;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #111;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:focus, .badge-light[href]:hover {\n color: #111;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:focus, .badge-dark[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #464a4e;\n background-color: #e7e8ea;\n border-color: #dddfe2;\n}\n\n.alert-secondary hr {\n border-top-color: #cfd2d6;\n}\n\n.alert-secondary .alert-link {\n color: #2e3133;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n line-height: 1rem;\n color: #fff;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #868e96;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\na.list-group-item-primary,\nbutton.list-group-item-primary {\n color: #004085;\n}\n\na.list-group-item-primary:focus, a.list-group-item-primary:hover,\nbutton.list-group-item-primary:focus,\nbutton.list-group-item-primary:hover {\n color: #004085;\n background-color: #9fcdff;\n}\n\na.list-group-item-primary.active,\nbutton.list-group-item-primary.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #464a4e;\n background-color: #dddfe2;\n}\n\na.list-group-item-secondary,\nbutton.list-group-item-secondary {\n color: #464a4e;\n}\n\na.list-group-item-secondary:focus, a.list-group-item-secondary:hover,\nbutton.list-group-item-secondary:focus,\nbutton.list-group-item-secondary:hover {\n color: #464a4e;\n background-color: #cfd2d6;\n}\n\na.list-group-item-secondary.active,\nbutton.list-group-item-secondary.active {\n color: #fff;\n background-color: #464a4e;\n border-color: #464a4e;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #155724;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #155724;\n background-color: #b1dfbb;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #0c5460;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #0c5460;\n background-color: #abdde5;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #856404;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #856404;\n background-color: #ffe8a1;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #721c24;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\na.list-group-item-light,\nbutton.list-group-item-light {\n color: #818182;\n}\n\na.list-group-item-light:focus, a.list-group-item-light:hover,\nbutton.list-group-item-light:focus,\nbutton.list-group-item-light:hover {\n color: #818182;\n background-color: #ececf6;\n}\n\na.list-group-item-light.active,\nbutton.list-group-item-light.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\na.list-group-item-dark,\nbutton.list-group-item-dark {\n color: #1b1e21;\n}\n\na.list-group-item-dark:focus, a.list-group-item-dark:hover,\nbutton.list-group-item-dark:focus,\nbutton.list-group-item-dark:hover {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\na.list-group-item-dark.active,\nbutton.list-group-item-dark.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #e9ecef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 5px;\n height: 5px;\n}\n\n.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 5px 0;\n}\n\n.tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n margin-left: -3px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 5px;\n}\n\n.tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n}\n\n.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n margin-top: -3px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 5px 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n margin-left: -3px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 5px;\n}\n\n.tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n}\n\n.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n margin-top: -3px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 10px;\n height: 5px;\n}\n\n.popover .arrow::before,\n.popover .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover .arrow::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover .arrow::after {\n content: \"\";\n border-width: 11px;\n}\n\n.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 10px;\n}\n\n.popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-bottom-width: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: -11px;\n margin-left: -6px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: -10px;\n margin-left: -6px;\n border-top-color: #fff;\n}\n\n.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 10px;\n}\n\n.popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n margin-top: -8px;\n border-left-width: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: -10px;\n border-right-color: #fff;\n}\n\n.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 10px;\n}\n\n.popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n margin-left: -7px;\n border-top-width: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: -10px;\n border-bottom-color: #fff;\n}\n\n.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 10px;\n}\n\n.popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n margin-top: -8px;\n border-right-width: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: -10px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 9px 14px;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n transition: transform 0.6s ease;\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #868e96 !important;\n}\n\na.bg-secondary:focus, a.bg-secondary:hover {\n background-color: #6c757d !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:focus, a.bg-light:hover {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:focus, a.bg-dark:hover {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #e9ecef !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #868e96 !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.d-print-block {\n display: none !important;\n}\n\n@media print {\n .d-print-block {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #868e96 !important;\n}\n\na.text-secondary:focus, a.text-secondary:hover {\n color: #6c757d !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:focus, a.text-light:hover {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:focus, a.text-dark:hover {\n color: #1d2124 !important;\n}\n\n.text-muted {\n color: #868e96 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// scss-lint:disable QualifyingElement, DuplicateProperty, VendorPrefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\nhtml {\n box-sizing: border-box; // 1\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0,0,0,0); // 6\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit; // 1\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport { width: device-width; }\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.\n//\n// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11\n// DON'T remove the click delay when `<meta name=\"viewport\" content=\"width=device-width\">` is present.\n// However, they DO support removing the click delay via `touch-action: manipulation`.\n// See:\n// * https://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch\n// * http://caniuse.com/#feat=css-touch-action\n// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment\n text-align: left;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","// Variables\n//\n// Copy settings from this file into the provided `_custom.scss` to override\n// the Bootstrap defaults without modifying key, versioned files.\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Table of Contents\n//\n// Color system\n// Options\n// Spacing\n// Body\n// Links\n// Grid breakpoints\n// Grid containers\n// Grid columns\n// Fonts\n// Components\n// Tables\n// Buttons\n// Forms\n// Dropdowns\n// Z-index master list\n// Navs\n// Navbar\n// Pagination\n// Jumbotron\n// Form states and alerts\n// Cards\n// Tooltips\n// Popovers\n// Badges\n// Modals\n// Alerts\n// Progress bars\n// List group\n// Image thumbnails\n// Figures\n// Breadcrumbs\n// Carousel\n// Close\n// Code\n\n\n//\n// Color system\n//\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #868e96 !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: (\n 100: $gray-100,\n 200: $gray-200,\n 300: $gray-300,\n 400: $gray-400,\n 500: $gray-500,\n 600: $gray-600,\n 700: $gray-700,\n 800: $gray-800,\n 900: $gray-900\n) !default;\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: (\n blue: $blue,\n indigo: $indigo,\n purple: $purple,\n pink: $pink,\n red: $red,\n orange: $orange,\n yellow: $yellow,\n green: $green,\n teal: $teal,\n cyan: $cyan,\n white: $white,\n gray: $gray-600,\n gray-dark: $gray-800\n) !default;\n\n$theme-colors: (\n primary: $blue,\n secondary: $gray-600,\n success: $green,\n info: $cyan,\n warning: $yellow,\n danger: $red,\n light: $gray-100,\n dark: $gray-800\n) !default;\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-hover-media-query: false !default;\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n) !default;\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n) !default;\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$font-family-monospace: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: 1.25rem !default;\n$font-size-sm: .875rem !default;\n\n$font-weight-normal: normal !default;\n$font-weight-bold: bold !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: 2.5rem !default;\n$h2-font-size: 2rem !default;\n$h3-font-size: 1.75rem !default;\n$h4-font-size: 1.5rem !default;\n$h5-font-size: 1.25rem !default;\n$h6-font-size: 1rem !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.1 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: 1.25rem !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black,.1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black,.25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: 5px !default;\n\n$mark-bg: #fcf8e3 !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black,.05) !default;\n$table-hover-bg: rgba($black,.075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-200 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-inverse-bg: $gray-900 !default;\n$table-inverse-accent-bg: rgba($white, .05) !default;\n$table-inverse-hover-bg: rgba($white, .075) !default;\n$table-inverse-border-color: lighten($gray-900, 7.5%) !default;\n$table-inverse-color: $body-bg !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background and border color.\n\n$input-btn-padding-y: .5rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: 1.25 !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: 1.5 !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: 1.5 !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white,.15), 0 1px 1px rgba($black,.075) !default;\n$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color(\"primary\"), .25) !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black,.125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: all .15s ease-in-out !default;\n\n\n// Forms\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: rgba($black,.15) !default;\n$input-btn-border-width: $border-width !default; // For form controls and buttons\n$input-box-shadow: inset 0 1px 1px rgba($black,.075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten(theme-color(\"primary\"), 25%) !default;\n$input-focus-box-shadow: $input-box-shadow, $btn-focus-box-shadow !default;\n$input-focus-color: $input-color !default;\n\n$input-placeholder-color: $gray-600 !default;\n\n$input-height-border: $input-btn-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-sm * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-margin-bottom: .5rem !default;\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .25rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-y: .25rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: #ddd !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-description-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $white !default;\n$custom-control-indicator-checked-bg: theme-color(\"primary\") !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px theme-color(\"primary\") !default;\n\n$custom-control-indicator-active-color: $white !default;\n$custom-control-indicator-active-bg: lighten(theme-color(\"primary\"), 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: theme-color(\"primary\") !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: #333 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: lighten(theme-color(\"primary\"), 25%) !default;\n$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-file-height: 2.5rem !default;\n$custom-file-width: 14rem !default;\n$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem theme-color(\"primary\") !default;\n\n$custom-file-padding-y: 1rem !default;\n$custom-file-padding-x: .5rem !default;\n$custom-file-line-height: 1.5 !default;\n$custom-file-color: $gray-700 !default;\n$custom-file-bg: $white !default;\n$custom-file-border-width: $border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $border-radius !default;\n$custom-file-box-shadow: inset 0 .2rem .4rem rgba($black,.05) !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $gray-200 !default;\n$custom-file-text: (\n placeholder: (\n en: \"Choose file...\"\n ),\n button-label: (\n en: \"Browse\"\n )\n) !default;\n\n\n// Form validation\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black,.15) !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black,.175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: #ddd !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: #ddd !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-padding-y: ($navbar-brand-height - $nav-link-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white,.5) !default;\n$navbar-dark-hover-color: rgba($white,.75) !default;\n$navbar-dark-active-color: rgba($white,1) !default;\n$navbar-dark-disabled-color: rgba($white,.25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white,.1) !default;\n\n$navbar-light-color: rgba($black,.5) !default;\n$navbar-light-hover-color: rgba($black,.7) !default;\n$navbar-light-active-color: rgba($black,.9) !default;\n$navbar-light-disabled-color: rgba($black,.3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black,.1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: #ddd !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: #ddd !default;\n\n$pagination-active-color: $white !default;\n$pagination-active-bg: theme-color(\"primary\") !default;\n$pagination-active-border-color: theme-color(\"primary\") !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: #ddd !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: 1px !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black,.125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-deck-margin: ($grid-gutter-width / 2) !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: 3px !default;\n$tooltip-padding-x: 8px !default;\n$tooltip-margin: 0 !default;\n\n\n$tooltip-arrow-width: 5px !default;\n$tooltip-arrow-height: 5px !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n\n// Popovers\n\n$popover-inner-padding: 1px !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black,.2) !default;\n$popover-box-shadow: 0 5px 10px rgba($black,.2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: 8px !default;\n$popover-header-padding-x: 14px !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: 9px !default;\n$popover-body-padding-x: 14px !default;\n\n$popover-arrow-width: 10px !default;\n$popover-arrow-height: 5px !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-width: ($popover-arrow-width + 1px) !default;\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-color: $white !default;\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 15px !default;\n\n$modal-dialog-margin: 10px !default;\n$modal-dialog-margin-y-sm-up: 30px !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black,.2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 3px 9px rgba($black,.5) !default;\n$modal-content-box-shadow-sm-up: 0 5px 15px rgba($black,.5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 15px !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: .75rem !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black,.1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black,.125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: #ddd !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black,.075) !default;\n$thumbnail-transition: all .2s ease-in-out !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 90% !default;\n$code-padding-y: .2rem !default;\n$code-padding-x: .4rem !default;\n$code-color: #bd4147 !default;\n$code-bg: $gray-100 !default;\n\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n","@mixin hover {\n // TODO: re-enable along with mq4-hover-shim\n// @if $enable-hover-media-query {\n// // See Media Queries Level 4: https://drafts.csswg.org/mediaqueries/#hover\n// // Currently shimmed by https://github.com/twbs/mq4-hover-shim\n// @media (hover: hover) {\n// &:hover { @content }\n// }\n// }\n// @else {\n// scss-lint:disable Indentation\n &:hover { @content }\n// scss-lint:enable Indentation\n// }\n}\n\n\n@mixin hover-focus {\n @if $enable-hover-media-query {\n &:focus { @content }\n @include hover { @content }\n } @else {\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin plain-hover-focus {\n @if $enable-hover-media-query {\n &,\n &:focus {\n @content\n }\n @include hover { @content }\n } @else {\n &,\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin hover-focus-active {\n @if $enable-hover-media-query {\n &:focus,\n &:active {\n @content\n }\n @include hover { @content }\n } @else {\n &:focus,\n &:active,\n &:hover {\n @content\n }\n }\n}\n","//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { font-size: $h1-font-size; }\nh2, .h2 { font-size: $h2-font-size; }\nh3, .h3 { font-size: $h3-font-size; }\nh4, .h4 { font-size: $h4-font-size; }\nh5, .h5 { font-size: $h5-font-size; }\nh6, .h6 { font-size: $h6-font-size; }\n\n.lead {\n font-size: $lead-font-size;\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n font-size: $display1-size;\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n font-size: $display2-size;\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n font-size: $display3-size;\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n font-size: $display4-size;\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n font-size: $small-font-size;\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n font-size: $blockquote-font-size;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%; // back to default font-size\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include transition($thumbnail-transition);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: ($spacer / 2);\n line-height: 1;\n}\n\n.figure-caption {\n font-size: $figure-caption-font-size;\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: http://caniuse.com/#feat=css-media-resolution\n @media\n only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n}\n","// Single side border-radius\n\n@mixin border-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n","@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n}\n","// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: $font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: $code-padding-y $code-padding-x;\n font-size: $code-font-size;\n color: $code-color;\n background-color: $code-bg;\n @include border-radius($border-radius);\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n padding: 0;\n color: inherit;\n background-color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $code-padding-y $code-padding-x;\n font-size: $code-font-size;\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: $code-font-size;\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n width: 100%;\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n margin-right: auto;\n margin-left: auto;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n width: 100%;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.1.\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name)\n } @else if $min == null {\n @include media-breakpoint-down($name)\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n @for $i from 1 through $columns {\n .order#{$infix}-#{$i} {\n order: $i;\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: $spacer;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n\n .table {\n background-color: $body-bg;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: (2 * $table-border-width);\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, -9));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Inverse styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n.thead-inverse {\n th {\n color: $table-inverse-color;\n background-color: $table-inverse-bg;\n }\n}\n\n.thead-default {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n }\n}\n\n.table-inverse {\n color: $table-inverse-color;\n background-color: $table-inverse-bg;\n\n th,\n td,\n thead th {\n border-color: $table-inverse-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-inverse-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-inverse-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Add `.table-responsive` to `.table`s and we'll make them mobile friendly by\n// enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n @include media-breakpoint-down(md) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n &.table-bordered {\n border: 0;\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// Bootstrap functions\n//\n// Utility mixins and functions for evalutating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map) {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@mixin color-yiq($color) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= 150) {\n color: #111;\n } @else {\n color: #fff;\n }\n}\n\n// Retreive color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function grayscale($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, #000, #fff);\n\n @if $level < 0 {\n // Lighter values need a quick double negative for the Sass math to work\n @return mix($color-base, $color, $level * -1 * $theme-color-interval);\n } @else {\n @return mix($color-base, $color, $level * $theme-color-interval);\n }\n}\n","// scss-lint:disable QualifyingElement, VendorPrefix\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n // // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n // height: $input-height;\n padding: $input-btn-padding-y $input-btn-padding-x;\n font-size: $font-size-base;\n line-height: $input-btn-line-height;\n color: $input-color;\n background-color: $input-bg;\n // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214.\n background-image: none;\n background-clip: padding-box;\n border: $input-btn-border-width solid $input-border-color;\n\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n @if $enable-rounded {\n // Manually use the if/else instead of the mixin to account for iOS override\n border-radius: $input-border-radius;\n } @else {\n // Otherwise undo the iOS default\n border-radius: 0;\n }\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Customize the `:focus` state to imitate native WebKit styles.\n @include form-control-focus();\n\n // Placeholder\n &::placeholder {\n color: $input-placeholder-color;\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n opacity: 1;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &:disabled,\n &[readonly] {\n background-color: $input-disabled-bg;\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n opacity: 1;\n }\n}\n\nselect.form-control {\n &:not([size]):not([multiple]) {\n height: $input-height;\n }\n\n &:focus::-ms-value {\n // Suppress the nested default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label text to\n// align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);\n padding-bottom: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);\n margin-bottom: 0; // Override the `<label>` default\n}\n\n.col-form-label-lg {\n padding-top: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);\n padding-bottom: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);\n font-size: $font-size-lg;\n}\n\n.col-form-label-sm {\n padding-top: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);\n padding-bottom: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);\n font-size: $font-size-sm;\n}\n\n\n//\n// Legends\n//\n\n// For use with horizontal and inline forms, when you need the legend text to\n// be the same size as regular labels, and to align with the form controls.\n.col-form-legend {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n margin-bottom: 0;\n font-size: $font-size-base;\n}\n\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n line-height: $input-btn-line-height;\n border: solid transparent;\n border-width: $input-btn-border-width 0;\n\n &.form-control-sm,\n &.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.form-control-sm {\n padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;\n font-size: $font-size-sm;\n line-height: $input-btn-line-height-sm;\n @include border-radius($input-border-radius-sm);\n}\n\nselect.form-control-sm {\n &:not([size]):not([multiple]) {\n height: $input-height-sm;\n }\n}\n\n.form-control-lg {\n padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;\n font-size: $font-size-lg;\n line-height: $input-btn-line-height-lg;\n @include border-radius($input-border-radius-lg);\n}\n\nselect.form-control-lg {\n &:not([size]):not([multiple]) {\n height: $input-height-lg;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: $form-group-margin-bottom;\n}\n\n.form-text {\n display: block;\n margin-top: $form-text-margin-top;\n}\n\n\n// Form grid\n//\n// Special replacement for our grid system's `.row` for tighter form layouts.\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: $form-check-margin-bottom;\n\n &.disabled {\n .form-check-label {\n color: $text-muted;\n }\n }\n}\n\n.form-check-label {\n padding-left: $form-check-input-gutter;\n margin-bottom: 0; // Override default `<label>` bottom margin\n}\n\n.form-check-input {\n position: absolute;\n margin-top: $form-check-input-margin-y;\n margin-left: -$form-check-input-gutter;\n\n &:only-child {\n position: static;\n }\n}\n\n// Radios and checkboxes on same line\n.form-check-inline {\n display: inline-block;\n\n .form-check-label {\n vertical-align: middle;\n }\n\n + .form-check-inline {\n margin-left: $form-check-inline-margin-x;\n }\n}\n\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server side validation.\n\n.invalid-feedback {\n display: none;\n margin-top: .25rem;\n font-size: .875rem;\n color: $form-feedback-invalid-color;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba($form-feedback-invalid-color,.8);\n border-radius: .2rem;\n}\n\n@include form-validation-state(\"valid\", $form-feedback-valid-color);\n@include form-validation-state(\"invalid\", $form-feedback-invalid-color);\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)\n\n // Because we use flex, the initial sizing of checkboxes is collapsed and\n // doesn't occupy the full-width (which is what we want for xs grid tier),\n // so we force that here.\n .form-check {\n width: 100%;\n }\n\n // Kick in the inline\n @include media-breakpoint-up(sm) {\n label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n\n // Inline-block all the things for \"inline\"\n .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n\n // Allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-plaintext {\n display: inline-block;\n }\n\n .input-group {\n width: auto;\n }\n\n .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-check-label {\n padding-left: 0;\n }\n .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: $form-check-input-margin-x;\n margin-left: 0;\n }\n\n // Custom form controls\n .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: $form-check-input-margin-x; // Flexbox alignment means we lose our HTML space here, so we compensate.\n vertical-align: text-bottom;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n","// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-color-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: none;\n @include box-shadow($input-focus-box-shadow);\n }\n}\n\n\n@mixin form-validation-state($state, $color) {\n\n .form-control,\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n &:focus {\n box-shadow: 0 0 0 .2rem rgba($color,.25);\n }\n\n ~ .invalid-feedback,\n ~ .invalid-tooltip {\n display: block;\n }\n }\n }\n\n\n // TODO: redo check markup lol crap\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n + .form-check-label {\n color: $color;\n }\n }\n }\n\n // custom radios and checks\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-indicator {\n background-color: rgba($color, .25);\n }\n ~ .custom-control-description {\n color: $color;\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-control {\n border-color: $color;\n\n &::before { border-color: inherit; }\n }\n &:focus {\n box-shadow: 0 0 0 .2rem rgba($color,.25);\n }\n }\n }\n}\n","// scss-lint:disable QualifyingElement\n\n//\n// Base styles\n//\n\n.btn {\n display: inline-block;\n font-weight: $btn-font-weight;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: $input-btn-border-width solid transparent;\n @include button-size($input-btn-padding-y, $input-btn-padding-x, $font-size-base, $input-btn-line-height, $btn-border-radius);\n @include transition($btn-transition);\n\n // Share hover and focus styles\n @include hover-focus {\n text-decoration: none;\n }\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: $btn-focus-box-shadow;\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n opacity: .65;\n @include box-shadow(none);\n }\n\n &:active,\n &.active {\n background-image: none;\n @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n }\n}\n\n// Future-proof disabling of clicks on `<a>` elements\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value, #fff);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &:disabled {\n background-color: transparent;\n @include box-shadow(none);\n }\n &,\n &:focus,\n &:active {\n border-color: transparent;\n box-shadow: none;\n }\n @include hover {\n border-color: transparent;\n }\n @include hover-focus {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n background-color: transparent;\n }\n &:disabled {\n color: $btn-link-disabled-color;\n\n @include hover-focus {\n text-decoration: none;\n }\n }\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: $btn-block-spacing-y;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $active-background: darken($background, 7.5%), $active-border: darken($border, 10%)) {\n @include color-yiq($background);\n background-color: $background;\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n &:hover {\n @include color-yiq($background);\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 3px rgba($border, .5);\n } @else {\n box-shadow: 0 0 0 3px rgba($border, .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n background-color: $background;\n border-color: $border;\n }\n\n &:active,\n &.active,\n .show > &.dropdown-toggle {\n background-color: $active-background;\n background-image: none; // Remove the gradient for the pressed/active state\n border-color: $active-border;\n @include box-shadow($btn-active-box-shadow);\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: #fff) {\n color: $color;\n background-color: transparent;\n background-image: none;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $color;\n border-color: $color;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 3px rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:active,\n &.active,\n .show > &.dropdown-toggle {\n color: $color-hover;\n background-color: $color;\n border-color: $color;\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n @include border-radius($border-radius);\n}\n",".fade {\n opacity: 0;\n @include transition($transition-fade);\n\n &.show {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.show {\n display: block;\n }\n}\n\ntr {\n &.collapse.show {\n display: table-row;\n }\n}\n\ntbody {\n &.collapse.show {\n display: table-row-group;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle {\n // Generate the caret automatically\n &::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: $caret-width * .85;\n vertical-align: $caret-width * .85;\n content: \"\";\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-left: $caret-width solid transparent;\n }\n\n &:empty::after {\n margin-left: 0;\n }\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n &::after {\n border-top: 0;\n border-bottom: $caret-width solid;\n }\n }\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues\n color: $body-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n display: block;\n width: 100%; // For `<button>`s\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n clear: both;\n font-weight: $font-weight-normal;\n color: $dropdown-link-color;\n text-align: inherit; // For `<button>`s\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n background: none; // For `<button>`s\n border: 0; // For `<button>`s\n\n @include hover-focus {\n color: $dropdown-link-hover-color;\n text-decoration: none;\n background-color: $dropdown-link-hover-bg;\n }\n\n &.active,\n &:active {\n color: $dropdown-link-active-color;\n text-decoration: none;\n background-color: $dropdown-link-active-bg;\n }\n\n &.disabled,\n &:disabled {\n color: $dropdown-link-disabled-color;\n background-color: transparent;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n}\n\n// Open state for the dropdown\n.show {\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n margin-bottom: 0; // for use with heading elements\n font-size: $font-size-sm;\n color: $dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: #e5e5e5) {\n height: 0;\n margin: ($spacer / 2) 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n","// scss-lint:disable QualifyingElement\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle; // match .btn alignment given font-size hack above\n\n > .btn {\n position: relative;\n flex: 0 1 auto;\n margin-bottom: 0;\n\n // Bring the hover, focused, and \"active\" buttons to the front to overlay\n // the borders properly\n @include hover {\n z-index: 2;\n }\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n\n // Prevent double borders when buttons are next to each other\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -$input-btn-border-width;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n\n .input-group {\n width: auto;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n\n &:not(:last-child):not(.dropdown-toggle) {\n @include border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n @include border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n @include border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n @include border-left-radius(0);\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.btn + .dropdown-toggle-split {\n padding-right: $input-btn-padding-x * .75;\n padding-left: $input-btn-padding-x * .75;\n\n &::after {\n margin-left: 0;\n }\n}\n\n.btn-sm + .dropdown-toggle-split {\n padding-right: $input-btn-padding-x-sm * .75;\n padding-left: $input-btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n padding-right: $input-btn-padding-x-lg * .75;\n padding-left: $input-btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n @include box-shadow($btn-active-box-shadow);\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n @include box-shadow(none);\n }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n .btn,\n .btn-group {\n width: 100%;\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -$input-btn-border-width;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n @include border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n @include border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n @include border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n @include border-top-radius(0);\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","//\n// Base styles\n//\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n // Add width 1% and flex-basis auto to ensure that button will not wrap out\n // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.\n width: 1%;\n margin-bottom: 0;\n\n // Bring the \"active\" form control to the front\n @include hover-focus-active {\n z-index: 3;\n }\n }\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n // Vertically centers the content of the addons within the input group\n display: flex;\n align-items: center;\n\n &:not(:first-child):not(:last-child) {\n @include border-radius(0);\n }\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n @extend .form-control-lg;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n @extend .form-control-sm;\n}\n\n\n//\n// Text input groups\n//\n\n.input-group-addon {\n padding: $input-btn-padding-y $input-btn-padding-x;\n margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\n font-size: $font-size-base; // Match inputs\n font-weight: $font-weight-normal;\n line-height: $input-btn-line-height;\n color: $input-color;\n text-align: center;\n background-color: $input-group-addon-bg;\n border: $input-btn-border-width solid $input-group-addon-border-color;\n @include border-radius($input-border-radius);\n\n // Sizing\n &.form-control-sm {\n padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;\n font-size: $font-size-sm;\n @include border-radius($input-border-radius-sm);\n }\n\n &.form-control-lg {\n padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;\n font-size: $font-size-lg;\n @include border-radius($input-border-radius-lg);\n }\n\n // scss-lint:disable QualifyingElement\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n // scss-lint:enable QualifyingElement\n}\n\n\n//\n// Reset rounded corners\n//\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n @include border-right-radius(0);\n}\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n @include border-left-radius(0);\n}\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n//\n// Button input groups\n//\n\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n\n + .btn {\n margin-left: (-$input-btn-border-width);\n }\n\n // Bring the \"active\" button to the front\n @include hover-focus-active {\n z-index: 3;\n }\n }\n\n // Negative margin to only have a single, shared border between the two\n &:not(:last-child) {\n > .btn,\n > .btn-group {\n margin-right: (-$input-btn-border-width);\n }\n }\n &:not(:first-child) {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: (-$input-btn-border-width);\n // Because specificity\n @include hover-focus-active {\n z-index: 3;\n }\n }\n }\n}\n","// scss-lint:disable PropertyCount, VendorPrefix\n\n// Embedded icons from Open Iconic.\n// Released under MIT and copyright 2014 Waybury.\n// https://useiconic.com/open\n\n\n// Checkboxes and radios\n//\n// Base class takes care of all the key behavioral aspects.\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: (1rem * $line-height-base);\n padding-left: $custom-control-gutter;\n margin-right: $custom-control-spacer-x;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1; // Put the input behind the label so it doesn't overlay text\n opacity: 0;\n\n &:checked ~ .custom-control-indicator {\n color: $custom-control-indicator-checked-color;\n background-color: $custom-control-indicator-checked-bg;\n @include box-shadow($custom-control-indicator-checked-box-shadow);\n }\n\n &:focus ~ .custom-control-indicator {\n // the mixin is not used here to make sure there is feedback\n box-shadow: $custom-control-indicator-focus-box-shadow;\n }\n\n &:active ~ .custom-control-indicator {\n color: $custom-control-indicator-active-color;\n background-color: $custom-control-indicator-active-bg;\n @include box-shadow($custom-control-indicator-active-box-shadow);\n }\n\n &:disabled {\n ~ .custom-control-indicator {\n background-color: $custom-control-indicator-disabled-bg;\n }\n\n ~ .custom-control-description {\n color: $custom-control-description-disabled-color;\n }\n }\n}\n\n// Custom indicator\n//\n// Generates a shadow element to create our makeshift checkbox/radio background.\n\n.custom-control-indicator {\n position: absolute;\n top: (($line-height-base - $custom-control-indicator-size) / 2);\n left: 0;\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n pointer-events: none;\n user-select: none;\n background-color: $custom-control-indicator-bg;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: $custom-control-indicator-bg-size;\n @include box-shadow($custom-control-indicator-box-shadow);\n}\n\n// Checkboxes\n//\n// Tweak just a few things for checkboxes.\n\n.custom-checkbox {\n .custom-control-indicator {\n @include border-radius($custom-checkbox-indicator-border-radius);\n }\n\n .custom-control-input:checked ~ .custom-control-indicator {\n background-image: $custom-checkbox-indicator-icon-checked;\n }\n\n .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: $custom-checkbox-indicator-indeterminate-bg;\n background-image: $custom-checkbox-indicator-icon-indeterminate;\n @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\n }\n}\n\n// Radios\n//\n// Tweak just a few things for radios.\n\n.custom-radio {\n .custom-control-indicator {\n border-radius: $custom-radio-indicator-border-radius;\n }\n\n .custom-control-input:checked ~ .custom-control-indicator {\n background-image: $custom-radio-indicator-icon-checked;\n }\n}\n\n\n// Layout options\n//\n// By default radios and checkboxes are `inline-block` with no additional spacing\n// set. Use these optional classes to tweak the layout.\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n\n .custom-control {\n margin-bottom: $custom-control-spacer-y;\n\n + .custom-control {\n margin-left: 0;\n }\n }\n}\n\n\n// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// http://primercss.io.\n//\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: $input-height;\n padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;\n line-height: $custom-select-line-height;\n color: $custom-select-color;\n vertical-align: middle;\n background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;\n background-size: $custom-select-bg-size;\n border: $custom-select-border-width solid $custom-select-border-color;\n @if $enable-rounded {\n border-radius: $custom-select-border-radius;\n } @else {\n border-radius: 0;\n }\n appearance: none;\n\n &:focus {\n border-color: $custom-select-focus-border-color;\n outline: none;\n @include box-shadow($custom-select-focus-box-shadow);\n\n &::-ms-value {\n // For visual consistency with other platforms/browsers,\n // supress the default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n }\n\n &:disabled {\n color: $custom-select-disabled-color;\n background-color: $custom-select-disabled-bg;\n }\n\n // Hides the default caret in IE11\n &::-ms-expand {\n opacity: 0;\n }\n}\n\n.custom-select-sm {\n height: $custom-select-height-sm;\n padding-top: $custom-select-padding-y;\n padding-bottom: $custom-select-padding-y;\n font-size: $custom-select-font-size-sm;\n}\n\n\n// File\n//\n// Custom file input.\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: $custom-file-height;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: $custom-file-width;\n max-width: 100%;\n height: $custom-file-height;\n margin: 0;\n opacity: 0;\n\n &:focus ~ .custom-file-control {\n @include box-shadow($custom-file-focus-box-shadow);\n }\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: $custom-file-height;\n padding: $custom-file-padding-x $custom-file-padding-y;\n line-height: $custom-file-line-height;\n color: $custom-file-color;\n pointer-events: none;\n user-select: none;\n background-color: $custom-file-bg;\n border: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius($custom-file-border-radius);\n @include box-shadow($custom-file-box-shadow);\n\n @each $lang, $text in map-get($custom-file-text, placeholder) {\n &:lang(#{$lang}):empty::after {\n content: $text;\n }\n }\n\n &::before {\n position: absolute;\n top: -$custom-file-border-width;\n right: -$custom-file-border-width;\n bottom: -$custom-file-border-width;\n z-index: 6;\n display: block;\n height: $custom-file-height;\n padding: $custom-file-padding-x $custom-file-padding-y;\n line-height: $custom-file-line-height;\n color: $custom-file-button-color;\n background-color: $custom-file-button-bg;\n border: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);\n }\n\n @each $lang, $text in map-get($custom-file-text, button-label) {\n &:lang(#{$lang})::before {\n content: $text;\n }\n }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s or `<ul>`s.\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: $nav-link-padding-y $nav-link-padding-x;\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Disabled state lightens text\n &.disabled {\n color: $nav-link-disabled-color;\n }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n .nav-item {\n margin-bottom: -$nav-tabs-border-width;\n }\n\n .nav-link {\n border: $nav-tabs-border-width solid transparent;\n @include border-top-radius($nav-tabs-border-radius);\n\n @include hover-focus {\n border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;\n }\n\n &.disabled {\n color: $nav-link-disabled-color;\n background-color: transparent;\n border-color: transparent;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n color: $nav-tabs-link-active-color;\n background-color: $nav-tabs-link-active-bg;\n border-color: $nav-tabs-link-active-border-color $nav-tabs-link-active-border-color $nav-tabs-link-active-bg;\n }\n\n .dropdown-menu {\n // Make dropdown border overlap tab border\n margin-top: -$nav-tabs-border-width;\n // Remove the top rounded corners here since there is a hard edge above the menu\n @include border-top-radius(0);\n }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n .nav-link {\n @include border-radius($nav-pills-border-radius);\n\n &.active,\n .show > & {\n color: $nav-pills-link-active-color;\n background-color: $nav-pills-link-active-bg;\n }\n }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n .nav-item {\n flex: 1 1 auto;\n text-align: center;\n }\n}\n\n.nav-justified {\n .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Navbar divider\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap; // allow us to do the line break for collapsing content\n align-items: center;\n justify-content: space-between; // space out brand from logo\n padding: $navbar-padding-y $navbar-padding-x;\n\n // Because flex properties aren't inherited, we need to redeclare these first\n // few properities so that content nested within behave properly.\n > .container,\n > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n display: inline-block;\n padding-top: $navbar-brand-padding-y;\n padding-bottom: $navbar-brand-padding-y;\n margin-right: $navbar-padding-x;\n font-size: $navbar-brand-font-size;\n line-height: inherit;\n white-space: nowrap;\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n display: flex;\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-link {\n padding-right: 0;\n padding-left: 0;\n }\n\n .dropdown-menu {\n position: static;\n float: none;\n }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n display: inline-block;\n padding-top: $nav-link-padding-y;\n padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orienation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n flex-basis: 100%;\n // For always expanded or extra full navbars, ensure content aligns itself\n // properly vertically. Can be easily overridden with flex utilities.\n align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n font-size: $navbar-toggler-font-size;\n line-height: 1;\n background: transparent; // remove default button style\n border: $border-width solid transparent; // remove default button style\n @include border-radius($navbar-toggler-border-radius);\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n > .container,\n > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n @include media-breakpoint-up($next) {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n\n .navbar-nav {\n flex-direction: row;\n\n .dropdown-menu {\n position: absolute;\n }\n\n .dropdown-menu-right {\n right: 0;\n left: auto; // Reset the default from `.dropdown-menu`\n }\n\n .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n }\n\n // For nesting containers, have to redeclare for alignment purposes\n > .container,\n > .container-fluid {\n flex-wrap: nowrap;\n }\n\n // scss-lint:disable ImportantRule\n .navbar-collapse {\n display: flex !important;\n }\n // scss-lint:enable ImportantRule\n\n .navbar-toggler {\n display: none;\n }\n }\n }\n }\n}\n\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n .navbar-brand {\n color: $navbar-light-active-color;\n\n @include hover-focus {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-light-color;\n\n @include hover-focus {\n color: $navbar-light-hover-color;\n }\n\n &.disabled {\n color: $navbar-light-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-light-color;\n border-color: $navbar-light-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-light-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-light-color;\n }\n}\n\n// White links against a dark background\n.navbar-dark {\n .navbar-brand {\n color: $navbar-dark-active-color;\n\n @include hover-focus {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-dark-color;\n\n @include hover-focus {\n color: $navbar-dark-hover-color;\n }\n\n &.disabled {\n color: $navbar-dark-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-dark-color;\n border-color: $navbar-dark-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-dark-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-dark-color;\n }\n}\n","//\n// Base styles\n//\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: $card-bg;\n background-clip: border-box;\n border: $card-border-width solid $card-border-color;\n @include border-radius($card-border-radius);\n}\n\n.card-body {\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n // as much space as possible, ensuring footers are aligned to the bottom.\n flex: 1 1 auto;\n padding: $card-spacer-x;\n}\n\n.card-title {\n margin-bottom: $card-spacer-y;\n}\n\n.card-subtitle {\n margin-top: -($card-spacer-y / 2);\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link {\n @include hover {\n text-decoration: none;\n }\n\n + .card-link {\n margin-left: $card-spacer-x;\n }\n}\n\n.card {\n > .list-group:first-child {\n .list-group-item:first-child {\n @include border-top-radius($card-border-radius);\n }\n }\n\n > .list-group:last-child {\n .list-group-item:last-child {\n @include border-bottom-radius($card-border-radius);\n }\n }\n}\n\n\n//\n// Optional textual caps\n//\n\n.card-header {\n padding: $card-spacer-y $card-spacer-x;\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\n background-color: $card-cap-bg;\n border-bottom: $card-border-width solid $card-border-color;\n\n &:first-child {\n @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n }\n}\n\n.card-footer {\n padding: $card-spacer-y $card-spacer-x;\n background-color: $card-cap-bg;\n border-top: $card-border-width solid $card-border-color;\n\n &:last-child {\n @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n margin-right: -($card-spacer-x / 2);\n margin-bottom: -$card-spacer-y;\n margin-left: -($card-spacer-x / 2);\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -($card-spacer-x / 2);\n margin-left: -($card-spacer-x / 2);\n}\n\n// Card image\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: $card-img-overlay-padding;\n}\n\n.card-img {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-radius($card-inner-border-radius);\n}\n\n// Card image caps\n.card-img-top {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img-bottom {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n// Card deck\n\n@include media-breakpoint-up(sm) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -$card-deck-margin;\n margin-left: -$card-deck-margin;\n\n .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: $card-deck-margin;\n margin-left: $card-deck-margin;\n }\n }\n}\n\n\n//\n// Card groups\n//\n\n@include media-breakpoint-up(sm) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n\n .card {\n flex: 1 0 0%;\n\n + .card {\n margin-left: 0;\n border-left: 0;\n }\n\n // Handle rounded corners\n @if $enable-rounded {\n &:first-child {\n @include border-right-radius(0);\n\n .card-img-top {\n border-top-right-radius: 0;\n }\n .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n }\n &:last-child {\n @include border-left-radius(0);\n\n .card-img-top {\n border-top-left-radius: 0;\n }\n .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n }\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n\n .card-img-top,\n .card-img-bottom {\n border-radius: 0;\n }\n }\n }\n }\n }\n}\n\n\n//\n// Columns\n//\n\n.card-columns {\n .card {\n margin-bottom: $card-columns-margin;\n }\n\n @include media-breakpoint-up(sm) {\n column-count: $card-columns-count;\n column-gap: $card-columns-gap;\n\n .card {\n display: inline-block; // Don't let them vertically span multiple columns\n width: 100%; // Don't let their width change\n }\n }\n}\n",".breadcrumb {\n padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n margin-bottom: 1rem;\n list-style: none;\n background-color: $breadcrumb-bg;\n @include border-radius($border-radius);\n @include clearfix;\n}\n\n.breadcrumb-item {\n float: left;\n\n // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n + .breadcrumb-item::before {\n display: inline-block; // Suppress underlining of the separator in modern browsers\n padding-right: $breadcrumb-item-padding;\n padding-left: $breadcrumb-item-padding;\n color: $breadcrumb-divider-color;\n content: \"#{$breadcrumb-divider}\";\n }\n\n // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\n // without `<ul>`s. The `::before` pseudo-element generates an element\n // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\n //\n // To trick IE into suppressing the underline, we give the pseudo-element an\n // underline and then immediately remove it.\n + .breadcrumb-item:hover::before {\n text-decoration: underline;\n }\n + .breadcrumb-item:hover::before {\n text-decoration: none;\n }\n\n &.active {\n color: $breadcrumb-active-color;\n }\n}\n","@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",".pagination {\n display: flex;\n // 1-2: Disable browser default list styles\n padding-left: 0; // 1\n list-style: none; // 2\n @include border-radius();\n}\n\n.page-item {\n &:first-child {\n .page-link {\n margin-left: 0;\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n\n &.active .page-link {\n z-index: 2;\n color: $pagination-active-color;\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n color: $pagination-disabled-color;\n pointer-events: none;\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: $pagination-padding-y $pagination-padding-x;\n margin-left: -1px;\n line-height: $pagination-line-height;\n color: $pagination-color;\n background-color: $pagination-bg;\n border: $pagination-border-width solid $pagination-border-color;\n\n @include hover-focus {\n color: $pagination-hover-color;\n text-decoration: none;\n background-color: $pagination-hover-bg;\n border-color: $pagination-hover-border-color;\n }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);\n}\n\n.pagination-sm {\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);\n}\n","// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n display: inline-block;\n padding: $badge-padding-y $badge-padding-x;\n font-size: $badge-font-size;\n font-weight: $badge-font-weight;\n line-height: 1;\n color: $badge-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n @include border-radius();\n\n // Empty badges collapse automatically\n &:empty {\n display: none;\n }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n// Pill badges\n//\n// Make them extra rounded with a modifier to replace v3's badges.\n\n.badge-pill {\n padding-right: $badge-pill-padding-x;\n padding-left: $badge-pill-padding-x;\n @include border-radius($badge-pill-border-radius);\n}\n\n// Colors\n//\n// Contextual variations (linked badges get darker on :hover).\n\n@each $color, $value in $theme-colors {\n .badge-#{$color} {\n @include badge-variant($value);\n }\n}\n","@mixin badge-variant($bg) {\n @include color-yiq($bg);\n background-color: $bg;\n\n &[href] {\n @include hover-focus {\n @include color-yiq($bg);\n text-decoration: none;\n background-color: darken($bg, 10%);\n }\n }\n}\n",".jumbotron {\n padding: $jumbotron-padding ($jumbotron-padding / 2);\n margin-bottom: $jumbotron-padding;\n background-color: $jumbotron-bg;\n @include border-radius($border-radius-lg);\n\n @include media-breakpoint-up(sm) {\n padding: ($jumbotron-padding * 2) $jumbotron-padding;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n @include border-radius(0);\n}\n","//\n// Base styles\n//\n\n.alert {\n padding: $alert-padding-y $alert-padding-x;\n margin-bottom: $alert-margin-bottom;\n border: $alert-border-width solid transparent;\n @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n // Specified to prevent conflicts of changing $headings-color\n color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n // Adjust close link position\n .close {\n position: relative;\n top: -$alert-padding-y;\n right: -$alert-padding-x;\n padding: $alert-padding-y $alert-padding-x;\n color: inherit;\n }\n}\n\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n @include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));\n }\n}\n","@mixin alert-variant($background, $border, $color) {\n color: $color;\n background-color: $background;\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n","@keyframes progress-bar-stripes {\n from { background-position: $progress-height 0; }\n to { background-position: 0 0; }\n}\n\n.progress {\n display: flex;\n overflow: hidden; // force rounded corners by cropping it\n font-size: $progress-font-size;\n line-height: $progress-height;\n text-align: center;\n background-color: $progress-bg;\n @include border-radius($progress-border-radius);\n @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n height: $progress-height;\n line-height: $progress-height;\n color: $progress-bar-color;\n background-color: $progress-bar-bg;\n @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: $progress-height $progress-height;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes $progress-bar-animation-timing;\n}\n","// Gradients\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: #555, $outer-color: #333) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",".media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n display: flex;\n flex-direction: column;\n\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 0;\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n width: 100%; // For `<button>`s (anchors become 100% by default though)\n color: $list-group-action-color;\n text-align: inherit; // For `<button>`s (anchors inherit)\n\n // Hover state\n @include hover-focus {\n color: $list-group-action-hover-color;\n text-decoration: none;\n background-color: $list-group-hover-bg;\n }\n\n &:active {\n color: $list-group-action-active-color;\n background-color: $list-group-action-active-bg;\n }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: $list-group-item-padding-y $list-group-item-padding-x;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -$list-group-border-width;\n background-color: $list-group-bg;\n border: $list-group-border-width solid $list-group-border-color;\n\n &:first-child {\n @include border-top-radius($list-group-border-radius);\n }\n\n &:last-child {\n margin-bottom: 0;\n @include border-bottom-radius($list-group-border-radius);\n }\n\n @include hover-focus {\n text-decoration: none;\n }\n\n &.disabled,\n &:disabled {\n color: $list-group-disabled-color;\n background-color: $list-group-disabled-bg;\n }\n\n // Include both here for `<a>`s and `<button>`s\n &.active {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: $list-group-active-color;\n background-color: $list-group-active-bg;\n border-color: $list-group-active-border-color;\n }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n }\n\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $color, $value in $theme-colors {\n @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\n}\n","// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n }\n\n //scss-lint:disable QualifyingElement\n a.list-group-item-#{$state},\n button.list-group-item-#{$state} {\n color: $color;\n\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: #fff;\n background-color: $color;\n border-color: $color;\n }\n }\n // scss-lint:enable QualifyingElement\n}\n",".close {\n float: right;\n font-size: $close-font-size;\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n @include hover-focus {\n color: $close-color;\n text-decoration: none;\n opacity: .75;\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// scss-lint:disable QualifyingElement\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n// scss-lint:enable QualifyingElement\n","// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal;\n display: none;\n overflow: hidden;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n @include transition($modal-transition);\n transform: translate(0, -25%);\n }\n &.show .modal-dialog { transform: translate(0, 0); }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: $modal-dialog-margin;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: $modal-content-bg;\n background-clip: padding-box;\n border: $modal-content-border-width solid $modal-content-border-color;\n @include border-radius($border-radius-lg);\n @include box-shadow($modal-content-box-shadow-xs);\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal-backdrop;\n background-color: $modal-backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $modal-backdrop-opacity; }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n align-items: center; // vertically center it\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n padding: $modal-header-padding;\n border-bottom: $modal-header-border-width solid $modal-header-border-color;\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when should there be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n padding: $modal-inner-padding;\n border-top: $modal-footer-border-width solid $modal-footer-border-color;\n\n // Easily place margin between footer elements\n > :not(:first-child) { margin-left: .25rem; }\n > :not(:last-child) { margin-right: .25rem; }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n max-width: $modal-md;\n margin: $modal-dialog-margin-y-sm-up auto;\n }\n\n .modal-content {\n @include box-shadow($modal-content-box-shadow-sm-up);\n }\n\n .modal-sm { max-width: $modal-sm; }\n}\n\n@include media-breakpoint-up(lg) {\n .modal-lg { max-width: $modal-lg; }\n}\n","// Base class\n.tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n margin: $tooltip-margin;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $font-size-sm;\n // Allow breaking very long words so they don't overflow the tooltip's bounds\n word-wrap: break-word;\n opacity: 0;\n\n &.show { opacity: $tooltip-opacity; }\n\n .arrow {\n position: absolute;\n display: block;\n width: $tooltip-arrow-width;\n height: $tooltip-arrow-height;\n }\n\n &.bs-tooltip-top {\n padding: $tooltip-arrow-width 0;\n .arrow {\n bottom: 0;\n }\n\n .arrow::before {\n margin-left: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n border-top-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-right {\n padding: 0 $tooltip-arrow-width;\n .arrow {\n left: 0;\n }\n\n .arrow::before {\n margin-top: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;\n border-right-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-bottom {\n padding: $tooltip-arrow-width 0;\n .arrow {\n top: 0;\n }\n\n .arrow::before {\n margin-left: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-bottom-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-left {\n padding: 0 $tooltip-arrow-width;\n .arrow {\n right: 0;\n }\n\n .arrow::before {\n right: 0;\n margin-top: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-left-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-tooltip-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-tooltip-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-tooltip-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-tooltip-left;\n }\n }\n\n .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: $tooltip-max-width;\n padding: $tooltip-padding-y $tooltip-padding-x;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n @include border-radius($border-radius);\n}\n","// scss-lint:disable DuplicateProperty\n@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",".popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: $zindex-popover;\n display: block;\n max-width: $popover-max-width;\n padding: $popover-inner-padding;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $font-size-sm;\n // Allow breaking very long words so they don't overflow the popover's bounds\n word-wrap: break-word;\n background-color: $popover-bg;\n background-clip: padding-box;\n border: $popover-border-width solid $popover-border-color;\n @include border-radius($border-radius-lg);\n @include box-shadow($popover-box-shadow);\n\n // Arrows\n //\n // .arrow is outer, .arrow::after is inner\n\n .arrow {\n position: absolute;\n display: block;\n width: $popover-arrow-width;\n height: $popover-arrow-height;\n }\n\n .arrow::before,\n .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n }\n\n .arrow::before {\n content: \"\";\n border-width: $popover-arrow-outer-width;\n }\n .arrow::after {\n content: \"\";\n border-width: $popover-arrow-outer-width;\n }\n\n // Popover directions\n\n &.bs-popover-top {\n margin-bottom: $popover-arrow-width;\n\n .arrow {\n bottom: 0;\n }\n\n .arrow::before,\n .arrow::after {\n border-bottom-width: 0;\n }\n\n .arrow::before {\n bottom: -$popover-arrow-outer-width;\n margin-left: -($popover-arrow-outer-width - 5);\n border-top-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n bottom: -($popover-arrow-outer-width - 1);\n margin-left: -($popover-arrow-outer-width - 5);\n border-top-color: $popover-arrow-color;\n }\n }\n\n &.bs-popover-right {\n margin-left: $popover-arrow-width;\n\n .arrow {\n left: 0;\n }\n\n .arrow::before,\n .arrow::after {\n margin-top: -($popover-arrow-outer-width - 3);\n border-left-width: 0;\n }\n\n .arrow::before {\n left: -$popover-arrow-outer-width;\n border-right-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n left: -($popover-arrow-outer-width - 1);\n border-right-color: $popover-arrow-color;\n }\n }\n\n &.bs-popover-bottom {\n margin-top: $popover-arrow-width;\n\n .arrow {\n top: 0;\n }\n\n .arrow::before,\n .arrow::after {\n margin-left: -($popover-arrow-width - 3);\n border-top-width: 0;\n }\n\n .arrow::before {\n top: -$popover-arrow-outer-width;\n border-bottom-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n top: -($popover-arrow-outer-width - 1);\n border-bottom-color: $popover-arrow-color;\n }\n\n // This will remove the popover-header's border just below the arrow\n .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid $popover-header-bg;\n }\n }\n\n &.bs-popover-left {\n margin-right: $popover-arrow-width;\n\n .arrow {\n right: 0;\n }\n\n .arrow::before,\n .arrow::after {\n margin-top: -($popover-arrow-outer-width - 3);\n border-right-width: 0;\n }\n\n .arrow::before {\n right: -$popover-arrow-outer-width;\n border-left-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n right: -($popover-arrow-outer-width - 1);\n border-left-color: $popover-arrow-color;\n }\n }\n &.bs-popover-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-popover-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-popover-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-popover-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-popover-left;\n }\n }\n}\n\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n padding: $popover-header-padding-y $popover-header-padding-x;\n margin-bottom: 0; // Reset the default from Reboot\n font-size: $font-size-base;\n color: $popover-header-color;\n background-color: $popover-header-bg;\n border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\n $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});\n @include border-top-radius($offset-border-width);\n\n &:empty {\n display: none;\n }\n}\n\n.popover-body {\n padding: $popover-body-padding-y $popover-body-padding-x;\n color: $popover-body-color;\n}\n","// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n @include transition($carousel-transition);\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n// CSS3 transforms when supported by the browser\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n // Use flex for alignment (1-3)\n display: flex; // 1. allow flex styles\n align-items: center; // 2. vertically center contents\n justify-content: center; // 3. horizontally center contents\n width: $carousel-control-width;\n color: $carousel-control-color;\n text-align: center;\n opacity: $carousel-control-opacity;\n // We can't have a transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Hover/focus state\n @include hover-focus {\n color: $carousel-control-color;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n }\n}\n.carousel-control-prev {\n left: 0;\n}\n.carousel-control-next {\n right: 0;\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: $carousel-control-icon-width;\n height: $carousel-control-icon-width;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: $carousel-control-prev-icon-bg;\n}\n.carousel-control-next-icon {\n background-image: $carousel-control-next-icon-bg;\n}\n\n\n// Optional indicator pips\n//\n// Add an ordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0; // override <ol> default\n // Use the .carousel-control's width as margin so we don't overlay those\n margin-right: $carousel-control-width;\n margin-left: $carousel-control-width;\n list-style: none;\n\n li {\n position: relative;\n flex: 0 1 auto;\n width: $carousel-indicator-width;\n height: $carousel-indicator-height;\n margin-right: $carousel-indicator-spacer;\n margin-left: $carousel-indicator-spacer;\n text-indent: -999px;\n background-color: rgba($carousel-indicator-active-bg, .5);\n\n // Use pseudo classes to increase the hit area by 10px on top and bottom.\n &::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n &::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n }\n\n .active {\n background-color: $carousel-indicator-active-bg;\n }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n position: absolute;\n right: ((100% - $carousel-caption-width) / 2);\n bottom: 20px;\n left: ((100% - $carousel-caption-width) / 2);\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: $carousel-caption-color;\n text-align: center;\n}\n",".align-baseline { vertical-align: baseline !important; } // Browser default\n.align-top { vertical-align: top !important; }\n.align-middle { vertical-align: middle !important; }\n.align-bottom { vertical-align: bottom !important; }\n.align-text-bottom { vertical-align: text-bottom !important; }\n.align-text-top { vertical-align: text-top !important; }\n","// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n","@each $color, $value in $theme-colors {\n @include bg-variant('.bg-#{$color}', $value);\n}\n\n.bg-white { background-color: $white !important; }\n.bg-transparent { background-color: transparent !important; }\n","//\n// Border\n//\n\n.border { border: 1px solid $gray-200 !important; }\n.border-0 { border: 0 !important; }\n.border-top-0 { border-top: 0 !important; }\n.border-right-0 { border-right: 0 !important; }\n.border-bottom-0 { border-bottom: 0 !important; }\n.border-left-0 { border-left: 0 !important; }\n\n@each $color, $value in $theme-colors {\n .border-#{$color} {\n border-color: $value !important;\n }\n}\n\n.border-white {\n border-color: $white !important;\n}\n\n//\n// Border-radius\n//\n\n.rounded {\n border-radius: $border-radius !important;\n}\n.rounded-top {\n border-top-left-radius: $border-radius !important;\n border-top-right-radius: $border-radius !important;\n}\n.rounded-right {\n border-top-right-radius: $border-radius !important;\n border-bottom-right-radius: $border-radius !important;\n}\n.rounded-bottom {\n border-bottom-right-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n.rounded-left {\n border-top-left-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n","//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .d#{$infix}-none { display: none !important; }\n .d#{$infix}-inline { display: inline !important; }\n .d#{$infix}-inline-block { display: inline-block !important; }\n .d#{$infix}-block { display: block !important; }\n .d#{$infix}-table { display: table !important; }\n .d#{$infix}-table-cell { display: table-cell !important; }\n .d#{$infix}-flex { display: flex !important; }\n .d#{$infix}-inline-flex { display: inline-flex !important; }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n.d-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.d-print-none {\n @media print {\n display: none !important;\n }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n\n &::before {\n display: block;\n content: \"\";\n }\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n.embed-responsive-21by9 {\n &::before {\n padding-top: percentage(9 / 21);\n }\n}\n\n.embed-responsive-16by9 {\n &::before {\n padding-top: percentage(9 / 16);\n }\n}\n\n.embed-responsive-4by3 {\n &::before {\n padding-top: percentage(3 / 4);\n }\n}\n\n.embed-responsive-1by1 {\n &::before {\n padding-top: percentage(1 / 1);\n }\n}\n","// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n","@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .float#{$infix}-left { @include float-left; }\n .float#{$infix}-right { @include float-right; }\n .float#{$infix}-none { @include float-none; }\n }\n}\n","@mixin float-left {\n float: left !important;\n}\n@mixin float-right {\n float: right !important;\n}\n@mixin float-none {\n float: none !important;\n}\n","// Positioning\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.sticky-top {\n @supports (position: sticky) {\n position: sticky;\n top: 0;\n z-index: $zindex-sticky;\n }\n}\n","//\n// Screenreaders\n//\n\n.sr-only {\n @include sr-only();\n}\n\n.sr-only-focusable {\n @include sr-only-focusable();\n}\n","// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n// See: http://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n }\n}\n","// Width and height\n\n@each $prop, $abbrev in (width: w, height: h) {\n @each $size, $length in $sizes {\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n }\n}\n\n.mw-100 { max-width: 100% !important; }\n.mh-100 { max-height: 100% !important; }\n","// Margin and Padding\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @each $prop, $abbrev in (margin: m, padding: p) {\n @each $size, $length in $spacers {\n\n .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\n .#{$abbrev}t#{$infix}-#{$size} { #{$prop}-top: $length !important; }\n .#{$abbrev}r#{$infix}-#{$size} { #{$prop}-right: $length !important; }\n .#{$abbrev}b#{$infix}-#{$size} { #{$prop}-bottom: $length !important; }\n .#{$abbrev}l#{$infix}-#{$size} { #{$prop}-left: $length !important; }\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-right: $length !important;\n #{$prop}-left: $length !important;\n }\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-top: $length !important;\n #{$prop}-bottom: $length !important;\n }\n }\n }\n\n // Some special margin utils\n .m#{$infix}-auto { margin: auto !important; }\n .mt#{$infix}-auto { margin-top: auto !important; }\n .mr#{$infix}-auto { margin-right: auto !important; }\n .mb#{$infix}-auto { margin-bottom: auto !important; }\n .ml#{$infix}-auto { margin-left: auto !important; }\n .mx#{$infix}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my#{$infix}-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n }\n}\n","//\n// Text\n//\n\n// Alignment\n\n.text-justify { text-align: justify !important; }\n.text-nowrap { white-space: nowrap !important; }\n.text-truncate { @include text-truncate; }\n\n// Responsive alignment\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .text#{$infix}-left { text-align: left !important; }\n .text#{$infix}-right { text-align: right !important; }\n .text#{$infix}-center { text-align: center !important; }\n }\n}\n\n// Transformation\n\n.text-lowercase { text-transform: lowercase !important; }\n.text-uppercase { text-transform: uppercase !important; }\n.text-capitalize { text-transform: capitalize !important; }\n\n// Weight and italics\n\n.font-weight-normal { font-weight: $font-weight-normal; }\n.font-weight-bold { font-weight: $font-weight-bold; }\n.font-italic { font-style: italic; }\n\n// Contextual colors\n\n.text-white { color: #fff !important; }\n\n@each $color, $value in $theme-colors {\n @include text-emphasis-variant('.text-#{$color}', $value);\n}\n\n.text-muted { color: $text-muted !important; }\n\n// Misc\n\n.text-hide {\n @include text-hide();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n a#{$parent} {\n @include hover-focus {\n color: darken($color, 10%) !important;\n }\n }\n}\n","// CSS image replacement\n@mixin text-hide() {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","//\n// Visibility utilities\n//\n\n.visible {\n @include invisible(visible);\n}\n\n.invisible {\n @include invisible(hidden);\n}\n","// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","bootstrap.css","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_functions.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/mixins/_clearfix.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"AAAA;;;;;GAKG;ACLH;EAGI,gBAAe;EAAf,kBAAe;EAAf,kBAAe;EAAf,gBAAe;EAAf,eAAe;EAAf,kBAAe;EAAf,kBAAe;EAAf,iBAAe;EAAf,gBAAe;EAAf,gBAAe;EAAf,cAAe;EAAf,gBAAe;EAAf,qBAAe;EAIf,mBAAe;EAAf,qBAAe;EAAf,mBAAe;EAAf,gBAAe;EAAf,mBAAe;EAAf,kBAAe;EAAf,iBAAe;EAAf,gBAAe;EAIf,mBAAkC;EAAlC,uBAAkC;EAAlC,uBAAkC;EAAlC,uBAAkC;EAAlC,wBAAkC;EAKpC,+KAA0B;EAC1B,8GAAyB;CAC1B;;ACED;;;EAGE,uBAAsB;CACvB;;AAED;EACE,wBAAuB;EACvB,kBAAiB;EACjB,+BAA8B;EAC9B,2BAA0B;EAC1B,8BAA6B;EAC7B,yCAA6C;CAC9C;;AAIC;EACE,oBAAmB;CCgBtB;;ADVD;EACE,eAAc;CACf;;AAUD;EACE,UAAS;EACT,kKE0KgL;EFzKhL,gBE8KgC;EF7KhC,iBEkL+B;EFjL/B,iBEqL+B;EFpL/B,eE1CgB;EF2ChB,iBAAgB;EAChB,uBErDa;CFsDd;;ACMD;EDEE,sBAAqB;CACtB;;AAQD;EACE,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAYD;EACE,cAAa;EACb,sBEuJyC;CFtJ1C;;AAOD;EACE,cAAa;EACb,oBEgD8B;CF/C/B;;AASD;;EAEE,2BAA0B;EAC1B,0CAAiC;EAAjC,kCAAiC;EACjC,aAAY;EACZ,iBAAgB;CACjB;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,iBE0F+B;CFzFhC;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAED;EACE,mBAAkB;CACnB;;AAGD;;EAEE,oBAAmB;CACpB;;AAGD;EACE,eAAc;CACf;;AAOD;;EAEE,mBAAkB;EAClB,eAAc;EACd,eAAc;EACd,yBAAwB;CACzB;;AAED;EAAM,eAAc;CAAK;;AACzB;EAAM,WAAU;CAAK;;AAOrB;EACE,eElKe;EFmKf,sBEjD8B;EFkD9B,8BAA6B;EAC7B,sCAAqC;CAMtC;;AGjMC;EH8LE,eErDgD;EFsDhD,2BErDiC;CC1Ib;;AHyMxB;EACE,eAAc;EACd,sBAAqB;CAUtB;;AGjNC;EH0ME,eAAc;EACd,sBAAqB;CGxMtB;;AHkMH;EAUI,WAAU;CACX;;AASH;;;;EAIE,kCAAiC;EACjC,eAAc;CACf;;AAGD;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;EAGd,8BAA6B;CAC9B;;AAOD;EAEE,iBAAgB;CACjB;;AAOD;EACE,uBAAsB;EACtB,mBAAkB;CACnB;;AAED;EACE,iBAAgB;CACjB;;AAOD;EACE,0BAAyB;CAC1B;;AAED;EACE,qBESkC;EFRlC,wBEQkC;EFPlC,eEnRgB;EFoRhB,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAGE,oBAAmB;CACpB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAKD;EACE,iBAAgB;CACjB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;;EAKE,UAAS;EACT,qBAAoB;EACpB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;EAEE,kBAAiB;CAClB;;AAED;;EAEE,qBAAoB;CACrB;;AAKD;;;;EAIE,2BAA0B;CAC3B;;AAGD;;;;EAIE,WAAU;EACV,mBAAkB;CACnB;;AAED;;EAEE,uBAAsB;EACtB,WAAU;CACX;;AAGD;;;;EASE,4BAA2B;CAC5B;;AAED;EACE,eAAc;EAEd,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAID;EACE,eAAc;EACd,YAAW;EACX,gBAAe;EACf,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;EACpB,eAAc;EACd,oBAAmB;CACpB;;AAED;EACE,yBAAwB;CACzB;;ACtGD;;ED2GE,aAAY;CACb;;ACvGD;ED8GE,qBAAoB;EACpB,yBAAwB;CACzB;;AC3GD;;EDmHE,yBAAwB;CACzB;;AAOD;EACE,cAAa;EACb,2BAA0B;CAC3B;;AAMD;EACE,sBAAqB;CACtB;;AAED;EACE,mBAAkB;EAClB,gBAAe;CAChB;;AAED;EACE,cAAa;CACd;;ACxHD;ED6HE,yBAAwB;CACzB;;AI3dD;;EAEE,sBFmPyC;EElPzC,qBFmPmC;EElPnC,iBFmP+B;EElP/B,iBFmP+B;EElP/B,eFmPmC;CElPpC;;AAED;EAAU,kBFqOyC;CErOb;;AACtC;EAAU,gBFqOuC;CErOX;;AACtC;EAAU,mBFqO0C;CErOd;;AACtC;EAAU,kBFqOyC;CErOb;;AACtC;EAAU,mBFqO0C;CErOd;;AACtC;EAAU,gBFqNwB;CErNI;;AAEtC;EACE,mBFqPoD;EEpPpD,iBFqP+B;CEpPhC;;AAGD;EACE,gBFoOgC;EEnOhC,iBFwO+B;EEvO/B,iBF+N+B;CE9NhC;;AACD;EACE,kBFgOkC;EE/NlC,iBFoO+B;EEnO/B,iBF0N+B;CEzNhC;;AACD;EACE,kBF4NkC;EE3NlC,iBFgO+B;EE/N/B,iBFqN+B;CEpNhC;;AACD;EACE,kBFwNkC;EEvNlC,iBF4N+B;EE3N/B,iBFgN+B;CE/MhC;;AAOD;EACE,iBF8DW;EE7DX,oBF6DW;EE5DX,UAAS;EACT,yCFrCa;CEsCd;;AAOD;;EAEE,eF2M+B;EE1M/B,iBFyK+B;CExKhC;;AAED;;EAEE,eF+MgC;EE9MhC,0BFuNmC;CEtNpC;;AAOD;EC/EE,gBAAe;EACf,iBAAgB;CDgFjB;;AAGD;ECpFE,gBAAe;EACf,iBAAgB;CDqFjB;;AACD;EACE,sBAAqB;CAKtB;;AAND;EAII,qBFiM+B;CEhMhC;;AASH;EACE,eAAc;EACd,0BAAyB;CAC1B;;AAGD;EACE,oBFKW;EEJX,mBFmKoD;CElKrD;;AAED;EACE,eAAc;EACd,eAAc;EACd,eFtGgB;CE2GjB;;AARD;EAMI,uBAAsB;CACvB;;AEpHH;ECIE,gBAAe;EAGf,aAAY;CDLb;;AAID;EACE,iBJqyBwC;EIpyBxC,uBJJa;EIKb,0BJFgB;EMVd,uBN6MgC;EKtMlC,gBAAe;EAGf,aAAY;CDQb;;AAMD;EAEE,sBAAqB;CACtB;;AAED;EACE,sBAA4B;EAC5B,eAAc;CACf;;AAED;EACE,eJsxBqC;EIrxBrC,eJvBgB;CIwBjB;;AGxCD;;;;EAIE,kGPgOgH;CO/NjH;;AAGD;EACE,iBPo2BuC;EOn2BvC,eP4Be;EO3Bf,uBAAsB;CAMvB;;AAHC;EACE,eAAc;CACf;;AAIH;EACE,uBP41BuC;EO31BvC,iBPu1BuC;EOt1BvC,YPba;EOcb,0BPLgB;EMhBd,sBN+M+B;COhLlC;;AAdD;EASI,WAAU;EACV,gBAAe;EACf,iBP+M6B;CO7M9B;;AAIH;EACE,eAAc;EACd,iBPs0BuC;EOr0BvC,ePrBgB;CO6BjB;;AAXD;EAOI,mBAAkB;EAClB,eAAc;EACd,mBAAkB;CACnB;;AAIH;EACE,kBPm0BuC;EOl0BvC,mBAAkB;CACnB;;AClDC;ECAA,YAAW;EACX,oBAAuC;EACvC,mBAAsC;EACtC,mBAAkB;EAClB,kBAAiB;CDDhB;;AEoDC;EFvDF;ICYI,iBTsKK;GQ/KR;CT8iBF;;AW1fG;EFvDF;ICYI,iBTuKK;GQhLR;CTojBF;;AWhgBG;EFvDF;ICYI,iBTwKK;GQjLR;CT0jBF;;AWtgBG;EFvDF;ICYI,kBTyKM;GQlLT;CTgkBF;;ASvjBC;ECZA,YAAW;EACX,oBAAuC;EACvC,mBAAsC;EACtC,mBAAkB;EAClB,kBAAiB;CDUhB;;AAQD;ECJA,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,oBAAuC;EACvC,mBAAsC;CDGrC;;AAID;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iBAAgB;EAChB,gBAAe;CAChB;;AGlCH;;;;;;EACE,mBAAkB;EAClB,YAAW;EACX,gBAAe;EACf,oBAA4B;EAC5B,mBAA2B;CAC5B;;AAkBG;EACE,2BAAa;EAAb,cAAa;EACb,oBAAY;EAAZ,qBAAY;EAAZ,aAAY;EACZ,gBAAe;CAChB;;AACD;EACE,oBAAc;EAAd,mBAAc;EAAd,eAAc;EACd,YAAW;EACX,gBAAe;CAChB;;AAGC;EFFN,oBAAsC;EAAtC,wBAAsC;EAAtC,oBAAsC;EAItC,qBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,kBAAsC;EAAtC,cAAsC;EAItC,eAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,kBAAsC;EAAtC,cAAsC;EAItC,eAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,kBAAsC;EAAtC,cAAsC;EAItC,eAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,yBAAsC;EAAtC,qBAAsC;EAItC,sBAAuC;CEAhC;;AAFD;EFFN,oBAAsC;EAAtC,mBAAsC;EAAtC,eAAsC;EAItC,gBAAuC;CEAhC;;AAGH;EAAwB,6BAAS;EAAT,mBAAS;EAAT,UAAS;CAAK;;AAEtC;EAAuB,8BAAmB;EAAnB,mBAAmB;EAAnB,UAAmB;CAAI;;AAG5C;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,6BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,kBADZ;EACY,SADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,mBADZ;EACY,UADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,mBADZ;EACY,UADZ;CACyB;;AAArC;EAAwB,8BADZ;EACY,mBADZ;EACY,UADZ;CACyB;;AAMnC;EFTR,uBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;AAFD;EFTR,iBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;AAFD;EFTR,iBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;AAFD;EFTR,iBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;AAFD;EFTR,wBAA8C;CEWrC;;ADDP;EC7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IFTR,eAA4B;GEWnB;EAFD;IFTR,uBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;CZg3BV;;AWj3BG;EC7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IFTR,eAA4B;GEWnB;EAFD;IFTR,uBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;CZ8/BV;;AW//BG;EC7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IFTR,eAA4B;GEWnB;EAFD;IFTR,uBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;CZ4oCV;;AW7oCG;EC7BE;IACE,2BAAa;IAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;IAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,YAAW;IACX,gBAAe;GAChB;EAGC;IFFN,oBAAsC;IAAtC,wBAAsC;IAAtC,oBAAsC;IAItC,qBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,kBAAsC;IAAtC,cAAsC;IAItC,eAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,yBAAsC;IAAtC,qBAAsC;IAItC,sBAAuC;GEAhC;EAFD;IFFN,oBAAsC;IAAtC,mBAAsC;IAAtC,eAAsC;IAItC,gBAAuC;GEAhC;EAGH;IAAwB,6BAAS;IAAT,mBAAS;IAAT,UAAS;GAAK;EAEtC;IAAuB,8BAAmB;IAAnB,mBAAmB;IAAnB,UAAmB;GAAI;EAG5C;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,6BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,kBADZ;IACY,SADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAArC;IAAwB,8BADZ;IACY,mBADZ;IACY,UADZ;GACyB;EAMnC;IFTR,eAA4B;GEWnB;EAFD;IFTR,uBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,iBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;EAFD;IFTR,wBAA8C;GEWrC;CZ0xCV;;Aan1CD;EACE,YAAW;EACX,gBAAe;EACf,oBZ8GW;EY7GX,8BZsSuC;CYjRxC;;AAzBD;;EAQI,iBZ+RgC;EY9RhC,oBAAmB;EACnB,8BZAc;CYCf;;AAXH;EAcI,uBAAsB;EACtB,iCZLc;CYMf;;AAhBH;EAmBI,8BZTc;CYUf;;AApBH;EAuBI,uBZhBW;CYiBZ;;AAQH;;EAGI,gBZqQ+B;CYpQhC;;AAQH;EACE,0BZnCgB;CYgDjB;;AAdD;;EAKI,0BZvCc;CYwCf;;AANH;;EAWM,yBAA8C;CAC/C;;AASL;EAEI,sCZlDW;CYmDZ;;AAQH;EAGM,uCZ9DS;CCPS;;AYTtB;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BC2E4D;CD1E7D;;AAKH;EAKM,0BAJsC;CZFtB;;AYCtB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,uCbYS;CaXV;;AAKH;EAKM,uCAJsC;CZFtB;;AYCtB;;EASQ,uCARoC;CASrC;;ADiFT;EAGM,YZlGS;EYmGT,0BZ1FY;EY2FZ,sBZ6MgD;CY5MjD;;AANL;EAWM,eZnGY;EYoGZ,0BZzGY;EY0GZ,sBZzGY;CY0Gb;;AAIL;EACE,YZlHa;EYmHb,0BZ1GgB;CYmIjB;;AA3BD;;;EAOI,sBZyLkD;CYxLnD;;AARH;EAWI,UAAS;CACV;;AAZH;EAgBM,4CZjIS;CYkIV;;AAjBL;EAuBQ,6CZxIO;CCGS;;AS2DpB;EE2FA;IAEI,eAAc;IACd,YAAW;IACX,iBAAgB;IAChB,kCAAiC;IACjC,6CAA4C;GAO/C;EAbD;IAUM,UAAS;GACV;Cbq5CR;;AW3/CG;EE2FA;IAEI,eAAc;IACd,YAAW;IACX,iBAAgB;IAChB,kCAAiC;IACjC,6CAA4C;GAO/C;EAbD;IAUM,UAAS;GACV;Cbk6CR;;AWxgDG;EE2FA;IAEI,eAAc;IACd,YAAW;IACX,iBAAgB;IAChB,kCAAiC;IACjC,6CAA4C;GAO/C;EAbD;IAUM,UAAS;GACV;Cb+6CR;;AWrhDG;EE2FA;IAEI,eAAc;IACd,YAAW;IACX,iBAAgB;IAChB,kCAAiC;IACjC,6CAA4C;GAO/C;EAbD;IAUM,UAAS;GACV;Cb47CR;;Aa58CD;EAOQ,eAAc;EACd,YAAW;EACX,iBAAgB;EAChB,kCAAiC;EACjC,6CAA4C;CAO/C;;AAlBL;EAeU,UAAS;CACV;;AGzKT;EACE,eAAc;EACd,YAAW;EACX,0Bf4TkC;Ee3TlC,gBf+NgC;Ee9NhC,iBfuO+B;EetO/B,efMgB;EeLhB,uBfFa;EeGb,6BAA4B;EAC5B,0BfAgB;EeKd,uBf6LgC;EgB5M9B,yEhBoa4F;CejXjG;;AAlDD;EAyBI,8BAA6B;EAC7B,UAAS;CACV;;AEpBD;EACE,ejBIc;EiBHd,uBjBJW;EiBKX,sBjBuYsE;EiBtYtE,WAAU;EAKR,iDjBcW;CiBZd;;AFlBH;EAkCI,efvBc;EeyBd,WAAU;CACX;;AArCH;EAkCI,efvBc;EeyBd,WAAU;CACX;;AArCH;EAkCI,efvBc;EeyBd,WAAU;CACX;;AArCH;EAkCI,efvBc;EeyBd,WAAU;CACX;;AArCH;EAkCI,efvBc;EeyBd,WAAU;CACX;;AArCH;EA8CI,0BfvCc;EeyCd,WAAU;CACX;;AAGH;EAEI,4BfqW0F;CepW3F;;AAHH;EAWI,efnDc;EeoDd,uBf3DW;Ce4DZ;;AAIH;;EAEE,eAAc;EACd,YAAW;CACZ;;AASD;EACE,kCAA+D;EAC/D,qCAAkE;EAClE,iBAAgB;EAChB,mBAAkB;EAClB,iBfqJ+B;CepJhC;;AAED;EACE,gCAAkE;EAClE,mCAAqE;EACrE,mBfuIoD;EetIpD,iBfuG+B;CetGhC;;AAED;EACE,iCAAkE;EAClE,oCAAqE;EACrE,oBfiIoD;EehIpD,iBfiG+B;CehGhC;;AAQD;EACE,eAAc;EACd,YAAW;EACX,sBf6MmC;Ee5MnC,yBf4MmC;Ee3MnC,iBAAgB;EAChB,iBfwH+B;EevH/B,8BAA6B;EAC7B,0BAAyB;EACzB,oBAAmC;CAOpC;;AAhBD;;;;;;;;;EAaI,iBAAgB;EAChB,gBAAe;CAChB;;AAYH;;;;;EACE,wBf6LiC;Ee5LjC,oBf0FoD;EezFpD,iBf0D+B;EMxM7B,sBN+M+B;Ce/DlC;;AAED;;;;;EAEI,8Bf4Q6F;Ce3Q9F;;AAGH;;;;;EACE,qBfoLgC;EenLhC,mBf4EoD;Ee3EpD,iBf4C+B;EMvM7B,sBN8M+B;CejDlC;;AAED;;;;;EAEI,6BfkQ6F;CejQ9F;;AASH;EACE,oBfoQ0C;CenQ3C;;AAED;EACE,eAAc;EACd,oBfsP4C;CerP7C;;AAOD;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,mBAAkB;EAClB,kBAAiB;CAOlB;;AAXD;;EAQI,mBAAkB;EAClB,kBAAiB;CAClB;;AAQH;EACE,mBAAkB;EAClB,eAAc;EACd,sBf2N6C;Ce1N9C;;AAED;EACE,mBAAkB;EAClB,mBfuN2C;EetN3C,sBfqN6C;CehN9C;;AARD;EAMI,ef1Mc;Ce2Mf;;AAGH;EACE,iBAAgB;CACjB;;AAED;EACE,4BAAoB;EAApB,4BAAoB;EAApB,qBAAoB;EACpB,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,gBAAe;EACf,sBf0M4C;CejM7C;;AAbD;EAQI,iBAAgB;EAChB,cAAa;EACb,wBfqM4C;EepM5C,eAAc;CACf;;AElND;EACE,cAAa;EACb,YAAW;EACX,oBjB2Y0C;EiB1Y1C,ejB8O6B;EiB7O7B,ejBSa;CiBRd;;AAED;EACE,mBAAkB;EAClB,UAAS;EACT,WAAU;EACV,cAAa;EACb,gBAAe;EACf,eAAc;EACd,kBAAiB;EACjB,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,yCjBLa;EiBMb,qBAAoB;CACrB;;AAIC;;;EAEE,sBjBbW;CiBwBZ;;AAbD;;;EAKI,sBjBhBS;EiBiBT,iDjBjBS;CiBkBV;;AAPH;;;;;;;;EAWI,eAAc;CACf;;AAKH;EAGI,ejB/BS;CiBgCV;;AAJH;;;EAQI,eAAc;CACf;;AAKH;EAGI,ejB7CS;CiBkDV;;AARH;EAMM,0BAAsC;CACvC;;AAPL;;;EAYI,eAAc;CACf;;AAbH;EC/EA,0BDgG+C;CAC1C;;AAlBL;EAuBM,iEjBjEO;CiBkER;;AAOL;EAGI,sBjB5ES;CiB+EV;;AANH;EAKgB,sBAAqB;CAAK;;AAL1C;;;EAUI,eAAc;CACf;;AAXH;EAeM,iDjBxFO;CiByFR;;AAvGP;EACE,cAAa;EACb,YAAW;EACX,oBjB2Y0C;EiB1Y1C,ejB8O6B;EiB7O7B,ejBMa;CiBLd;;AAED;EACE,mBAAkB;EAClB,UAAS;EACT,WAAU;EACV,cAAa;EACb,gBAAe;EACf,eAAc;EACd,kBAAiB;EACjB,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,yCjBRa;EiBSb,qBAAoB;CACrB;;AAIC;;;EAEE,sBjBhBW;CiB2BZ;;AAbD;;;EAKI,sBjBnBS;EiBoBT,iDjBpBS;CiBqBV;;AAPH;;;;;;;;EAWI,eAAc;CACf;;AAKH;EAGI,ejBlCS;CiBmCV;;AAJH;;;EAQI,eAAc;CACf;;AAKH;EAGI,ejBhDS;CiBqDV;;AARH;EAMM,0BAAsC;CACvC;;AAPL;;;EAYI,eAAc;CACf;;AAbH;EC/EA,0BDgG+C;CAC1C;;AAlBL;EAuBM,iEjBpEO;CiBqER;;AAOL;EAGI,sBjB/ES;CiBkFV;;AANH;EAKgB,sBAAqB;CAAK;;AAL1C;;;EAUI,eAAc;CACf;;AAXH;EAeM,iDjB3FO;CiB4FR;;AFkIT;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,+BAAmB;EAAnB,8BAAmB;EAAnB,wBAAmB;EAAnB,oBAAmB;EACnB,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;CAmEpB;;AAtED;EASI,YAAW;CACZ;;ALpNC;EK0MJ;IAeM,qBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,0BAAmB;IAAnB,uBAAmB;IAAnB,oBAAmB;IACnB,yBAAuB;IAAvB,sBAAuB;IAAvB,wBAAuB;IACvB,iBAAgB;GACjB;EAnBL;IAuBM,qBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,oBAAc;IAAd,mBAAc;IAAd,eAAc;IACd,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;IACnB,0BAAmB;IAAnB,uBAAmB;IAAnB,oBAAmB;IACnB,iBAAgB;GACjB;EA5BL;IAgCM,sBAAqB;IACrB,YAAW;IACX,uBAAsB;GACvB;EAnCL;IAuCM,sBAAqB;GACtB;EAxCL;IA2CM,YAAW;GACZ;EA5CL;IAiDM,qBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,0BAAmB;IAAnB,uBAAmB;IAAnB,oBAAmB;IACnB,yBAAuB;IAAvB,sBAAuB;IAAvB,wBAAuB;IACvB,YAAW;IACX,gBAAe;GAChB;EAtDL;IAwDM,mBAAkB;IAClB,cAAa;IACb,sBf+GwC;Ie9GxC,eAAc;GACf;EA5DL;IA+DM,0BAAmB;IAAnB,uBAAmB;IAAnB,oBAAmB;IACnB,yBAAuB;IAAvB,sBAAuB;IAAvB,wBAAuB;GACxB;EAjEL;IAmEM,iBAAgB;GACjB;ChByuDJ;;AoB7iED;EACE,sBAAqB;EACrB,iBnBsO+B;EmBrO/B,mBAAkB;EAClB,oBAAmB;EACnB,uBAAsB;EACtB,0BAAiB;EAAjB,uBAAiB;EAAjB,sBAAiB;EAAjB,kBAAiB;EACjB,8BAA2C;ECsF3C,0BpBkOkC;EoBjOlC,gBpBqIgC;EoBpIhC,iBpB6I+B;EoB1I7B,uBpByGgC;EgB5M9B,sIhBoX6I;CmBxUlJ;;AlB/BC;EkBCE,sBAAqB;ClBEtB;;AkBfH;EAkBI,WAAU;EACV,iDnBWa;CmBVd;;AApBH;EAyBI,cnB8U6B;CmB5U9B;;AA3BH;EA+BI,gBAAe;CAChB;;AAhCH;EAoCI,uBAAsB;CAMvB;;AAIH;;EAEE,qBAAoB;CACrB;;AAQC;ECzDA,YpBKa;EkBLX,0BlB8Ba;EoB5Bf,sBpB4Be;CmB6Bd;;AlBnDD;EmBFE,YpBDW;EkBLX,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,gDpBaW;CoBXd;;AAGD;EAEE,YpBnBW;EoBoBX,0BpBKa;EoBJb,sBpBIa;CoBHd;;AAED;;EAGE,YpB3BW;EoB4BX,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,gDpBdS;CoBgBZ;;ADWH;ECzDA,YpBKa;EkBLX,0BlBWc;EoBThB,sBpBSgB;CmBgDf;;AlBnDD;EmBFE,YpBDW;EkBLX,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,kDpBNY;CoBQf;;AAGD;EAEE,YpBnBW;EoBoBX,0BpBdc;EoBed,sBpBfc;CoBgBf;;AAED;;EAGE,YpB3BW;EoB4BX,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,kDpBjCU;CoBmCb;;ADWH;ECzDA,YpBKa;EkBLX,0BlBqCa;EoBnCf,sBpBmCe;CmBsBd;;AlBnDD;EmBFE,YpBDW;EkBLX,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,gDpBoBW;CoBlBd;;AAGD;EAEE,YpBnBW;EoBoBX,0BpBYa;EoBXb,sBpBWa;CoBVd;;AAED;;EAGE,YpB3BW;EoB4BX,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,gDpBPS;CoBSZ;;ADWH;ECzDA,YpBKa;EkBLX,0BlBuCa;EoBrCf,sBpBqCe;CmBoBd;;AlBnDD;EmBFE,YpBDW;EkBLX,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,iDpBsBW;CoBpBd;;AAGD;EAEE,YpBnBW;EoBoBX,0BpBca;EoBbb,sBpBaa;CoBZd;;AAED;;EAGE,YpB3BW;EoB4BX,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,iDpBLS;CoBOZ;;ADWH;ECzDA,epBcgB;EkBdd,0BlBoCa;EoBlCf,sBpBkCe;CmBuBd;;AlBnDD;EmBFE,epBQc;EkBdd,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,gDpBmBW;CoBjBd;;AAGD;EAEE,epBVc;EoBWd,0BpBWa;EoBVb,sBpBUa;CoBTd;;AAED;;EAGE,epBlBc;EoBmBd,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,gDpBRS;CoBUZ;;ADWH;ECzDA,YpBKa;EkBLX,0BlBkCa;EoBhCf,sBpBgCe;CmByBd;;AlBnDD;EmBFE,YpBDW;EkBLX,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,gDpBiBW;CoBfd;;AAGD;EAEE,YpBnBW;EoBoBX,0BpBSa;EoBRb,sBpBQa;CoBPd;;AAED;;EAGE,YpB3BW;EoB4BX,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,gDpBVS;CoBYZ;;ADWH;ECzDA,epBcgB;EkBdd,0BlBMc;EoBJhB,sBpBIgB;CmBqDf;;AlBnDD;EmBFE,epBQc;EkBdd,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,kDpBXY;CoBaf;;AAGD;EAEE,epBVc;EoBWd,0BpBnBc;EoBoBd,sBpBpBc;CoBqBf;;AAED;;EAGE,epBlBc;EoBmBd,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,kDpBtCU;CoBwCb;;ADWH;ECzDA,YpBKa;EkBLX,0BlBac;EoBXhB,sBpBWgB;CmB8Cf;;AlBnDD;EmBFE,YpBDW;EkBLX,0BEDoF;EASpF,sBATyH;CnBSrG;;AmBGtB;EAMI,+CpBJY;CoBMf;;AAGD;EAEE,YpBnBW;EoBoBX,0BpBZc;EoBad,sBpBbc;CoBcf;;AAED;;EAGE,YpB3BW;EoB4BX,0BAlCuK;EAsCvK,sBAtC+M;CAgDhN;;AARC;;EAKI,+CpB/BU;CoBiCb;;ADiBH;ECZA,epBrBe;EoBsBf,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBxBe;CmBmCd;;ACTD;EACE,YpBpDW;EoBqDX,0BpB5Ba;EoB6Bb,sBpB7Ba;CoB8Bd;;AAED;EAEE,gDpBlCa;CoBmCd;;AAED;EAEE,epBvCa;EoBwCb,8BAA6B;CAC9B;;AAED;;EAGE,YpBvEW;EoBwEX,0BpB/Ca;EoBgDb,sBpBhDa;CoB0Dd;;AARC;;EAKI,gDpBvDS;CoByDZ;;ADxBH;ECZA,epBxCgB;EoByChB,8BAA6B;EAC7B,uBAAsB;EACtB,sBpB3CgB;CmBsDf;;ACTD;EACE,YpBpDW;EoBqDX,0BpB/Cc;EoBgDd,sBpBhDc;CoBiDf;;AAED;EAEE,kDpBrDc;CoBsDf;;AAED;EAEE,epB1Dc;EoB2Dd,8BAA6B;CAC9B;;AAED;;EAGE,YpBvEW;EoBwEX,0BpBlEc;EoBmEd,sBpBnEc;CoB6Ef;;AARC;;EAKI,kDpB1EU;CoB4Eb;;ADxBH;ECZA,epBde;EoBef,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBjBe;CmB4Bd;;ACTD;EACE,YpBpDW;EoBqDX,0BpBrBa;EoBsBb,sBpBtBa;CoBuBd;;AAED;EAEE,gDpB3Ba;CoB4Bd;;AAED;EAEE,epBhCa;EoBiCb,8BAA6B;CAC9B;;AAED;;EAGE,YpBvEW;EoBwEX,0BpBxCa;EoByCb,sBpBzCa;CoBmDd;;AARC;;EAKI,gDpBhDS;CoBkDZ;;ADxBH;ECZA,epBZe;EoBaf,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBfe;CmB0Bd;;ACTD;EACE,YpBpDW;EoBqDX,0BpBnBa;EoBoBb,sBpBpBa;CoBqBd;;AAED;EAEE,iDpBzBa;CoB0Bd;;AAED;EAEE,epB9Ba;EoB+Bb,8BAA6B;CAC9B;;AAED;;EAGE,YpBvEW;EoBwEX,0BpBtCa;EoBuCb,sBpBvCa;CoBiDd;;AARC;;EAKI,iDpB9CS;CoBgDZ;;ADxBH;ECZA,epBfe;EoBgBf,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBlBe;CmB6Bd;;ACTD;EACE,epB3Cc;EoB4Cd,0BpBtBa;EoBuBb,sBpBvBa;CoBwBd;;AAED;EAEE,gDpB5Ba;CoB6Bd;;AAED;EAEE,epBjCa;EoBkCb,8BAA6B;CAC9B;;AAED;;EAGE,epB9Dc;EoB+Dd,0BpBzCa;EoB0Cb,sBpB1Ca;CoBoDd;;AARC;;EAKI,gDpBjDS;CoBmDZ;;ADxBH;ECZA,epBjBe;EoBkBf,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBpBe;CmB+Bd;;ACTD;EACE,YpBpDW;EoBqDX,0BpBxBa;EoByBb,sBpBzBa;CoB0Bd;;AAED;EAEE,gDpB9Ba;CoB+Bd;;AAED;EAEE,epBnCa;EoBoCb,8BAA6B;CAC9B;;AAED;;EAGE,YpBvEW;EoBwEX,0BpB3Ca;EoB4Cb,sBpB5Ca;CoBsDd;;AARC;;EAKI,gDpBnDS;CoBqDZ;;ADxBH;ECZA,epB7CgB;EoB8ChB,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBhDgB;CmB2Df;;ACTD;EACE,epB3Cc;EoB4Cd,0BpBpDc;EoBqDd,sBpBrDc;CoBsDf;;AAED;EAEE,kDpB1Dc;CoB2Df;;AAED;EAEE,epB/Dc;EoBgEd,8BAA6B;CAC9B;;AAED;;EAGE,epB9Dc;EoB+Dd,0BpBvEc;EoBwEd,sBpBxEc;CoBkFf;;AARC;;EAKI,kDpB/EU;CoBiFb;;ADxBH;ECZA,epBtCgB;EoBuChB,8BAA6B;EAC7B,uBAAsB;EACtB,sBpBzCgB;CmBoDf;;ACTD;EACE,YpBpDW;EoBqDX,0BpB7Cc;EoB8Cd,sBpB9Cc;CoB+Cf;;AAED;EAEE,+CpBnDc;CoBoDf;;AAED;EAEE,epBxDc;EoByDd,8BAA6B;CAC9B;;AAED;;EAGE,YpBvEW;EoBwEX,0BpBhEc;EoBiEd,sBpBjEc;CoB2Ef;;AARC;;EAKI,+CpBxEU;CoB0Eb;;ADbL;EACE,iBnB6J+B;EmB5J/B,enB9Ce;EmB+Cf,8BAA6B;CAsB9B;;AlB3FC;EkBwEE,enBiEgD;EmBhEhD,2BnBiEiC;EmBhEjC,8BAA6B;EAC7B,0BAAyB;ClB3EL;;AkBkExB;EAcI,2BnB0DiC;EmBzDjC,0BAAyB;EACzB,iBAAgB;CACjB;;AAjBH;EAqBI,enBpFc;CmBqFf;;AAUH;ECbE,qBpB8OgC;EoB7OhC,mBpBsIoD;EoBrIpD,iBpBsG+B;EoBnG7B,sBpB0G+B;CmBhGlC;;AAED;ECjBE,wBpB0OiC;EoBzOjC,oBpBuIoD;EoBtIpD,iBpBuG+B;EoBpG7B,sBpB2G+B;CmB7FlC;;AAOD;EACE,eAAc;EACd,YAAW;CAMZ;;AARD;EAMI,mBnB+O+B;CmB9OhC;;AAIH;;;EAII,YAAW;CACZ;;AE3IH;EACE,WAAU;ELEN,iChBsN2C;CqBlNhD;;AAPD;EAKI,WAAU;CACX;;AAGH;EACE,cAAa;CAId;;AALD;EAGI,eAAc;CACf;;AAGH;EAEI,mBAAkB;CACnB;;AAGH;EAEI,yBAAwB;CACzB;;AAGH;EACE,mBAAkB;EAClB,UAAS;EACT,iBAAgB;EL5BZ,8BhBuNwC;CqBzL7C;;AClCD;;EAEE,mBAAkB;CACnB;;ACwBG;EACE,sBAAqB;EACrB,SAAQ;EACR,UAAS;EACT,qBAA+B;EAC/B,wBAAkC;EAClC,YAAW;EAjCf,wBAA8B;EAC9B,sCAA4C;EAC5C,iBAAgB;EAChB,qCAA2C;CAsCxC;;AAkBD;EACE,eAAc;CACf;;ADlDL;EACE,mBAAkB;EAClB,UAAS;EACT,QAAO;EACP,ctBiiBsC;EsBhiBtC,cAAa;EACb,YAAW;EACX,iBtBggBuC;EsB/fvC,kBAA8B;EAC9B,qBAA4B;EAC5B,gBtBmNgC;EsBlNhC,etBHgB;EsBIhB,iBAAgB;EAChB,iBAAgB;EAChB,uBtBfa;EsBgBb,6BAA4B;EAC5B,sCtBPa;EMjBX,uBN6MgC;CsBlLnC;;AAID;EAEI,cAAa;EACb,wBtB+euC;CsB9exC;;AAJH;ECNM,sBAAqB;EACrB,SAAQ;EACR,UAAS;EACT,qBAA+B;EAC/B,wBAAkC;EAClC,YAAW;EA1Bf,cAAa;EACb,sCAA4C;EAC5C,2BAAiC;EACjC,qCAA2C;CA+BxC;;ADPL;EC0BM,eAAc;CACf;;ADhBL;EAEI,cAAa;EACb,sBtBoeuC;CsBnexC;;AAJH;ECjBM,sBAAqB;EACrB,SAAQ;EACR,UAAS;EACT,qBAA+B;EAC/B,wBAAkC;EAClC,YAAW;EAnBf,oCAA0C;EAC1C,uCAA6C;EAC7C,yBAA+B;CAyB5B;;ADIL;ECeM,eAAc;CACf;;ADhBL;EASM,kBAAiB;CAClB;;AAIL;EAEI,cAAa;EACb,uBtBsduC;CsBrdxC;;AAJH;EC/BM,sBAAqB;EACrB,SAAQ;EACR,UAAS;EACT,qBAA+B;EAC/B,wBAAkC;EAClC,YAAW;CAQZ;;ADkBL;ECdQ,cAAa;CACd;;ADaP;ECVQ,sBAAqB;EACrB,SAAQ;EACR,UAAS;EACT,sBAAgC;EAChC,wBAAkC;EAClC,YAAW;EAlCjB,oCAA0C;EAC1C,0BAAgC;EAChC,uCAA6C;CAkCxC;;ADGP;ECCM,eAAc;CACf;;ADFL;EASM,kBAAiB;CAClB;;AAKL;EEtEE,UAAS;EACT,iBAAuB;EACvB,iBAAgB;EAChB,8BxBKgB;CsBgEjB;;AAKD;EACE,eAAc;EACd,YAAW;EACX,wBtBkdwC;EsBjdxC,YAAW;EACX,iBtBuJ+B;EsBtJ/B,etBpEgB;EsBqEhB,oBAAmB;EACnB,oBAAmB;EACnB,8BAA6B;EAC7B,UAAS;CAwBV;;ArBlGC;EqB6EE,etB+bqD;EsB9brD,sBAAqB;EJ1FrB,0BlBMc;CCSf;;AqB6DH;EAoBI,YtB3FW;EsB4FX,sBAAqB;EJjGrB,0BlB8Ba;CsBqEd;;AAvBH;EA2BI,etB5Fc;EsB6Fd,8BAA6B;CAK9B;;AAGH;EACE,eAAc;CACf;;AAGD;EACE,eAAc;EACd,uBtB0awC;EsBzaxC,iBAAgB;EAChB,oBtB4GoD;EsB3GpD,etB/GgB;EsBgHhB,oBAAmB;CACpB;;AG/HD;;EAEE,mBAAkB;EAClB,4BAAoB;EAApB,4BAAoB;EAApB,qBAAoB;EACpB,uBAAsB;CAyBvB;;AA7BD;;EAOI,mBAAkB;EAClB,oBAAc;EAAd,mBAAc;EAAd,eAAc;CAYf;;AApBH;;EAaM,WAAU;CxBFQ;;AwBXxB;;;;EAkBM,WAAU;CACX;;AAnBL;;;;;;;;EA2BI,kBzBgL6B;CyB/K9B;;AAIH;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,wBAA2B;EAA3B,qBAA2B;EAA3B,4BAA2B;CAK5B;;AARD;EAMI,YAAW;CACZ;;AAGH;EAEI,eAAc;CACf;;AAHH;;EnB5BI,2BmBoC8B;EnBnC9B,8BmBmC8B;CAC/B;;AATH;;EnBdI,0BmB2B6B;EnB1B7B,6BmB0B6B;CAC9B;;AAeH;EACE,yBAAmC;EACnC,wBAAkC;CAKnC;;AAPD;EAKI,eAAc;CACf;;AAGH;EACE,wBAAsC;EACtC,uBAAqC;CACtC;;AAED;EACE,uBAAsC;EACtC,sBAAqC;CACtC;;AAmBD;EACE,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;EACtB,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;EACvB,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;CAyBxB;;AA5BD;;EAOI,YAAW;CACZ;;AARH;;;;EAcI,iBzBkF6B;EyBjF7B,eAAc;CACf;;AAhBH;;EnBtFI,8BmB2G+B;EnB1G/B,6BmB0G+B;CAChC;;AAtBH;;EnBpGI,0BmB8H4B;EnB7H5B,2BmB6H4B;CAC7B;;AAgBH;;EAGI,iBAAgB;CAQjB;;AAXH;;;;EAOM,mBAAkB;EAClB,uBAAsB;EACtB,qBAAoB;CACrB;;AC7JL;EACE,mBAAkB;EAClB,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,2BAAoB;EAApB,wBAAoB;EAApB,qBAAoB;EACpB,YAAW;CAyCZ;;AA9CD;;;EAUI,mBAAkB;EAClB,oBAAc;EAAd,mBAAc;EAAd,eAAc;EAGd,UAAS;EACT,iBAAgB;CAYjB;;AA3BH;;;EAmBM,WAAU;CACX;;AApBL;;;;;;;;;EAyBM,kB1B+K2B;C0B9K5B;;AA1BL;;EpBWI,2BoBoBmD;EpBnBnD,8BoBmBmD;CAAK;;AA/B5D;;EpByBI,0BoBOmD;EpBNnD,6BoBMmD;CAAK;;AAhC5D;EAsCI,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;CAMpB;;AA7CH;;EpBWI,2BoB+B8E;EpB9B9E,8BoB8B8E;CAAK;;AA1CvF;;EpByBI,0BoBmB8E;EpBlB9E,6BoBkB8E;CAAK;;AAWvF;;EAEE,qBAAa;EAAb,qBAAa;EAAb,cAAa;CAgBd;;AAlBD;;EAQI,mBAAkB;EAClB,WAAU;CACX;;AAVH;;;;;;;;EAgBI,kB1BiI6B;C0BhI9B;;AAGH;EAAuB,mB1B6HU;C0B7H4B;;AAC7D;EAAsB,kB1B4HW;C0B5H0B;;AAQ3D;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,0B1BwOkC;E0BvOlC,iBAAgB;EAChB,gB1B0IgC;E0BzIhC,iB1B8I+B;E0B7I/B,iB1BiJ+B;E0BhJ/B,e1BhFgB;E0BiFhB,mBAAkB;EAClB,oBAAmB;EACnB,0B1BxFgB;E0ByFhB,0B1BvFgB;EMXd,uBN6MgC;C0BnGnC;;AApBD;;EAkBI,cAAa;CACd;;AAiCH;;;;;;EpB7HI,2BoBmI4B;EpBlI5B,8BoBkI4B;CAC/B;;AAED;;;;;;EpBxHI,0BoB8H2B;EpB7H3B,6BoB6H2B;CAC9B;;ACrJD;EACE,mBAAkB;EAClB,eAAc;EACd,mBAAsC;EACtC,qB3B6a4C;C2B5a7C;;AAED;EACE,4BAAoB;EAApB,4BAAoB;EAApB,qBAAoB;EACpB,mB3Bya0C;C2Bxa3C;;AAED;EACE,mBAAkB;EAClB,YAAW;EACX,WAAU;CA4BX;;AA/BD;EAMI,Y3BhBW;EkBLX,0BlB8Ba;C2BNd;;AATH;EAaI,iE3BEa;C2BDd;;AAdH;EAiBI,Y3B3BW;E2B4BX,0B3Bsa8E;C2Bpa/E;;AApBH;EAwBM,e3B5BY;C2BiCb;;AA7BL;EA2BQ,0B3BnCU;C2BoCX;;AASP;EACE,iBAAgB;CA8BjB;;AA/BD;EAKI,mBAAkB;EAClB,aAA+D;EAC/D,QAAO;EACP,eAAc;EACd,Y3B0XwC;E2BzXxC,a3ByXwC;E2BxXxC,qBAAoB;EACpB,YAAW;EACX,0BAAiB;EAAjB,uBAAiB;EAAjB,sBAAiB;EAAjB,kBAAiB;EACjB,0B3B1Dc;C2B4Df;;AAhBH;EAoBI,mBAAkB;EAClB,aAA+D;EAC/D,QAAO;EACP,eAAc;EACd,Y3B2WwC;E2B1WxC,a3B0WwC;E2BzWxC,YAAW;EACX,6BAA4B;EAC5B,mCAAkC;EAClC,yB3BwW2C;C2BvW5C;;AAQH;ErB5FI,uBN6MgC;C2B9GjC;;AAHH;ET1FI,0BlB8Ba;C2BoEZ;;AARL;EAUM,2Nb9DqI;Ca+DtI;;AAXL;ET1FI,0BlB8Ba;C2B8EZ;;AAlBL;EAoBM,wKbxEqI;CayEtI;;AArBL;EA0BM,yC3BtFW;C2BuFZ;;AA3BL;EA6BM,yC3BzFW;C2B0FZ;;AAQL;EAEI,mB3BgV+C;C2B/UhD;;AAHH;EThII,0BlB8Ba;C2B0GZ;;AARL;EAUM,qKbpGqI;CaqGtI;;AAXL;EAgBM,yC3BlHW;C2BmHZ;;AAWL;EACE,sBAAqB;EACrB,YAAW;EACX,4B3B4P4F;E2B3P5F,2C3BsTuC;E2BrTvC,iB3B2E+B;E2B1E/B,e3BtJgB;E2BuJhB,uBAAsB;EACtB,uNAAsG;EACtG,0B3ByT0C;E2BxT1C,0B3B7JgB;E2B+Jd,uB3BmCgC;E2B/BlC,yBAAgB;EAAhB,sBAAgB;EAAhB,iBAAgB;CAkCjB;;AAlDD;EAmBI,sB3BkOsE;E2BjOtE,WAAU;EACV,mF3BgOsE;C2BrNvE;;AAhCH;EA6BM,e3B7KY;E2B8KZ,uB3BrLS;C2BsLV;;AA/BL;EAoCI,aAAY;EACZ,uB3BqRqC;E2BpRrC,uBAAsB;CACvB;;AAvCH;EA0CI,e3B3Lc;E2B4Ld,0B3BhMc;C2BiMf;;AA5CH;EAgDI,WAAU;CACX;;AAGH;EACE,8B3B6M+F;E2B5M/F,sB3BmQyC;E2BlQzC,yB3BkQyC;E2BjQzC,e3BoRqC;C2BnRtC;;AAED;EACE,6B3ByM+F;E2BxM/F,sB3B4PyC;E2B3PzC,yB3B2PyC;E2B1PzC,gB3BgRsC;C2B/QvC;;AAOD;EACE,mBAAkB;EAClB,sBAAqB;EACrB,YAAW;EACX,4B3BoL4F;E2BnL5F,iBAAgB;CACjB;;AAED;EACE,mBAAkB;EAClB,WAAU;EACV,YAAW;EACX,4B3B4K4F;E2B3K5F,UAAS;EACT,WAAU;CAgBX;;AAtBD;EASI,sB3B6JsE;E2B5JtE,iD3BvNa;C2B4Nd;;AAfH;EAaM,sB3ByJoE;C2BxJrE;;AAdL;EAmBM,kB3BgQQ;C2B/PT;;AAIL;EACE,mBAAkB;EAClB,OAAM;EACN,SAAQ;EACR,QAAO;EACP,WAAU;EACV,4B3BkJ4F;E2BjJ5F,0B3BqDkC;E2BpDlC,iB3B/B+B;E2BgC/B,e3BhQgB;E2BiQhB,uB3BxQa;E2ByQb,0B3BrQgB;EMXd,uBN6MgC;C2BuFnC;;AA/BD;EAgBI,mBAAkB;EAClB,OAAM;EACN,SAAQ;EACR,UAAS;EACT,WAAU;EACV,eAAc;EACd,4CAAuE;EACvE,0B3BqCgC;E2BpChC,iB3B/C6B;E2BgD7B,e3BhRc;E2BiRd,kBAAiB;ET7RjB,0BlBOc;E2BwRd,+B3BtRc;EMXd,mCqBkSgF;CACjF;;AClSH;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,gBAAe;EACf,iBAAgB;EAChB,iBAAgB;CACjB;;AAED;EACE,eAAc;EACd,qB5B6iBsC;C4BniBvC;;A3BPC;E2BAE,sBAAqB;C3BGtB;;A2BRH;EAUI,e5BNc;C4BOf;;AAOH;EACE,iC5BlBgB;C4BoDjB;;AAnCD;EAII,oB5B2K6B;C4B1K9B;;AALH;EAQI,8BAAgD;EtB7BhD,gCNuMgC;EMtMhC,iCNsMgC;C4B9JjC;;AApBH;EAYM,sC5B7BY;CCOf;;A2BUH;EAgBM,e5B9BY;E4B+BZ,8BAA6B;EAC7B,0BAAyB;CAC1B;;AAnBL;;EAwBI,e5BrCc;E4BsCd,uB5B7CW;E4B8CX,mC5B9CW;C4B+CZ;;AA3BH;EA+BI,iB5BgJ6B;EMpM7B,0BsBsD4B;EtBrD5B,2BsBqD4B;CAC7B;;AAQH;EtBrEI,uBN6MgC;C4BrIjC;;AAHH;;EAOI,Y5BrEW;E4BsEX,0B5B7Ca;C4B8Cd;;AAQH;EAEI,oBAAc;EAAd,mBAAc;EAAd,eAAc;EACd,mBAAkB;CACnB;;AAGH;EAEI,2BAAa;EAAb,cAAa;EACb,oBAAY;EAAZ,qBAAY;EAAZ,aAAY;EACZ,mBAAkB;CACnB;;AAQH;EAEI,cAAa;CACd;;AAHH;EAKI,eAAc;CACf;;ACnGH;EACE,mBAAkB;EAClB,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,0BAA8B;EAA9B,uBAA8B;EAA9B,+BAA8B;EAC9B,qB7B8FW;C6BnFZ;;AAjBD;;EAYI,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,0BAA8B;EAA9B,uBAA8B;EAA9B,+BAA8B;CAC/B;;AAQH;EACE,sBAAqB;EACrB,uB7B2iB+E;E6B1iB/E,0B7B0iB+E;E6BziB/E,mB7BwEW;E6BvEX,mB7B4LoD;E6B3LpD,qBAAoB;EACpB,oBAAmB;CAKpB;;A5BnCC;E4BiCE,sBAAqB;C5B9BtB;;A4BuCH;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;EACtB,gBAAe;EACf,iBAAgB;EAChB,iBAAgB;CAWjB;;AAhBD;EAQI,iBAAgB;EAChB,gBAAe;CAChB;;AAVH;EAaI,iBAAgB;EAChB,YAAW;CACZ;;AAQH;EACE,sBAAqB;EACrB,oB7BseuC;E6BrevC,uB7BqeuC;C6BpexC;;AAWD;EACE,8BAAgB;EAAhB,iBAAgB;EAChB,oBAAY;EAAZ,qBAAY;EAAZ,aAAY;EAGZ,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;CACpB;;AAGD;EACE,yB7B6ewC;E6B5exC,mB7B6HoD;E6B5HpD,eAAc;EACd,8BAA6B;EAC7B,8BAAuC;EvB5GrC,uBN6MgC;C6BtFnC;;A5BzGC;E4BkGE,sBAAqB;C5B/FtB;;A4BsFH;EAcI,gBAAe;CAChB;;AAKH;EACE,sBAAqB;EACrB,aAAY;EACZ,cAAa;EACb,uBAAsB;EACtB,YAAW;EACX,oCAAmC;EACnC,2BAA0B;CAC3B;;AnB9DG;EmBuEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C9B84GR;;AWx+GG;EmBoFA;IAUI,+BAAqB;IAArB,8BAAqB;IAArB,0BAAqB;IAArB,sBAAqB;IACrB,wBAA2B;IAA3B,qBAA2B;IAA3B,4BAA2B;GA4C9B;EAvDD;IAcM,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;GAepB;EA7BL;IAiBQ,mBAAkB;GACnB;EAlBP;IAqBQ,SAAQ;IACR,WAAU;GACX;EAvBP;IA0BQ,sB7Bsa6B;I6Bra7B,qB7Bqa6B;G6Bpa9B;EA5BP;;IAkCM,sBAAiB;IAAjB,kBAAiB;GAClB;EAnCL;IAsCM,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;IAGxB,8BAAgB;IAAhB,iBAAgB;GACjB;EA1CL;IA6CM,cAAa;GACd;EA9CL;IAkDQ,UAAS;IACT,aAAY;GACb;C9Bo4GV;;AW//GG;EmBuEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C9B07GR;;AWphHG;EmBoFA;IAUI,+BAAqB;IAArB,8BAAqB;IAArB,0BAAqB;IAArB,sBAAqB;IACrB,wBAA2B;IAA3B,qBAA2B;IAA3B,4BAA2B;GA4C9B;EAvDD;IAcM,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;GAepB;EA7BL;IAiBQ,mBAAkB;GACnB;EAlBP;IAqBQ,SAAQ;IACR,WAAU;GACX;EAvBP;IA0BQ,sB7Bsa6B;I6Bra7B,qB7Bqa6B;G6Bpa9B;EA5BP;;IAkCM,sBAAiB;IAAjB,kBAAiB;GAClB;EAnCL;IAsCM,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;IAGxB,8BAAgB;IAAhB,iBAAgB;GACjB;EA1CL;IA6CM,cAAa;GACd;EA9CL;IAkDQ,UAAS;IACT,aAAY;GACb;C9Bg7GV;;AW3iHG;EmBuEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C9Bs+GR;;AWhkHG;EmBoFA;IAUI,+BAAqB;IAArB,8BAAqB;IAArB,0BAAqB;IAArB,sBAAqB;IACrB,wBAA2B;IAA3B,qBAA2B;IAA3B,4BAA2B;GA4C9B;EAvDD;IAcM,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;GAepB;EA7BL;IAiBQ,mBAAkB;GACnB;EAlBP;IAqBQ,SAAQ;IACR,WAAU;GACX;EAvBP;IA0BQ,sB7Bsa6B;I6Bra7B,qB7Bqa6B;G6Bpa9B;EA5BP;;IAkCM,sBAAiB;IAAjB,kBAAiB;GAClB;EAnCL;IAsCM,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;IAGxB,8BAAgB;IAAhB,iBAAgB;GACjB;EA1CL;IA6CM,cAAa;GACd;EA9CL;IAkDQ,UAAS;IACT,aAAY;GACb;C9B49GV;;AWvlHG;EmBuEA;;IAIM,iBAAgB;IAChB,gBAAe;GAChB;C9BkhHR;;AW5mHG;EmBoFA;IAUI,+BAAqB;IAArB,8BAAqB;IAArB,0BAAqB;IAArB,sBAAqB;IACrB,wBAA2B;IAA3B,qBAA2B;IAA3B,4BAA2B;GA4C9B;EAvDD;IAcM,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;GAepB;EA7BL;IAiBQ,mBAAkB;GACnB;EAlBP;IAqBQ,SAAQ;IACR,WAAU;GACX;EAvBP;IA0BQ,sB7Bsa6B;I6Bra7B,qB7Bqa6B;G6Bpa9B;EA5BP;;IAkCM,sBAAiB;IAAjB,kBAAiB;GAClB;EAnCL;IAsCM,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;IAGxB,8BAAgB;IAAhB,iBAAgB;GACjB;EA1CL;IA6CM,cAAa;GACd;EA9CL;IAkDQ,UAAS;IACT,aAAY;GACb;C9BwgHV;;A8BjkHD;EAeQ,+BAAqB;EAArB,8BAAqB;EAArB,0BAAqB;EAArB,sBAAqB;EACrB,wBAA2B;EAA3B,qBAA2B;EAA3B,4BAA2B;CA4C9B;;AA5DL;;EASU,iBAAgB;EAChB,gBAAe;CAChB;;AAXT;EAmBU,+BAAmB;EAAnB,8BAAmB;EAAnB,wBAAmB;EAAnB,oBAAmB;CAepB;;AAlCT;EAsBY,mBAAkB;CACnB;;AAvBX;EA0BY,SAAQ;EACR,WAAU;CACX;;AA5BX;EA+BY,sB7Bsa6B;E6Bra7B,qB7Bqa6B;C6Bpa9B;;AAjCX;;EAuCU,sBAAiB;EAAjB,kBAAiB;CAClB;;AAxCT;EA2CU,gCAAwB;EAAxB,gCAAwB;EAAxB,yBAAwB;EAGxB,8BAAgB;EAAhB,iBAAgB;CACjB;;AA/CT;EAkDU,cAAa;CACd;;AAnDT;EAuDY,UAAS;EACT,aAAY;CACb;;AAaX;EAEI,0B7B9LW;C6BmMZ;;AAPH;EAKM,0B7BjMS;CCAZ;;A4B4LH;EAWM,0B7BvMS;C6BgNV;;AApBL;EAcQ,0B7B1MO;CCAZ;;A4B4LH;EAkBQ,0B7B9MO;C6B+MR;;AAnBP;;;;EA0BM,0B7BtNS;C6BuNV;;AA3BL;EA+BI,0B7B3NW;E6B4NX,iC7B5NW;C6B6NZ;;AAjCH;EAoCI,sQ7BmXmS;C6BlXpS;;AArCH;EAwCI,0B7BpOW;C6B4OZ;;AAhDH;EA0CM,0B7BtOS;C6B2OV;;AA/CL;EA6CQ,0B7BzOO;CCAZ;;A4BgPH;EAEI,Y7B5PW;C6BiQZ;;AAPH;EAKM,Y7B/PS;CCUZ;;A4BgPH;EAWM,gC7BrQS;C6B8QV;;AApBL;EAcQ,iC7BxQO;CCUZ;;A4BgPH;EAkBQ,iC7B5QO;C6B6QR;;AAnBP;;;;EA0BM,Y7BpRS;C6BqRV;;AA3BL;EA+BI,gC7BzRW;E6B0RX,uC7B1RW;C6B2RZ;;AAjCH;EAoCI,4Q7BwTkS;C6BvTnS;;AArCH;EAwCI,gC7BlSW;C6B0SZ;;AAhDH;EA0CM,Y7BpSS;C6BySV;;AA/CL;EA6CQ,Y7BvSO;CCUZ;;A6BjBH;EACE,mBAAkB;EAClB,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;EACtB,aAAY;EACZ,sBAAqB;EACrB,uB9BCa;E8BAb,4BAA2B;EAC3B,uC9BSa;EMjBX,uBN6MgC;C8BlLnC;;AA3BD;EAYI,gBAAe;EACf,eAAc;CACf;;AAdH;ExBMI,gCNuMgC;EMtMhC,iCNsMgC;C8B1L/B;;AAnBL;ExBoBI,oCNyLgC;EMxLhC,mCNwLgC;C8BpL/B;;AAIL;EAGE,oBAAc;EAAd,mBAAc;EAAd,eAAc;EACd,iB9B6mByC;C8B5mB1C;;AAED;EACE,uB9BwmBwC;C8BvmBzC;;AAED;EACE,sBAAgC;EAChC,iBAAgB;CACjB;;AAED;EACE,iBAAgB;CACjB;;A7BrCC;E6ByCE,sBAAqB;C7BzCD;;A6BuCxB;EAMI,qB9BulBuC;C8BtlBxC;;AAOH;EACE,yB9B8kByC;E8B7kBzC,iBAAgB;EAChB,sC9BjDa;E8BkDb,8C9BlDa;C8B6Dd;;AAfD;ExB/DI,2DwBsE8E;CAC/E;;AARH;EAYM,cAAa;CACd;;AAIL;EACE,yB9B6jByC;E8B5jBzC,sC9BjEa;E8BkEb,2C9BlEa;C8BuEd;;AARD;ExBhFI,2DNkpBoF;C8B3jBrF;;AAQH;EACE,wBAAkC;EAClC,wB9B4iBwC;E8B3iBxC,uBAAiC;EACjC,iBAAgB;CACjB;;AAED;EACE,wBAAkC;EAClC,uBAAiC;CAClC;;AAGD;EACE,mBAAkB;EAClB,OAAM;EACN,SAAQ;EACR,UAAS;EACT,QAAO;EACP,iB9BoiByC;C8BniB1C;;AAED;EACE,YAAW;ExBtHT,mCNkpBoF;C8B1hBvF;;AAGD;EACE,YAAW;ExBtHT,4CN4oBoF;EM3oBpF,6CN2oBoF;C8BphBvF;;AAED;EACE,YAAW;ExB7GT,gDN8nBoF;EM7nBpF,+CN6nBoF;C8B/gBvF;;AAKD;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;CAqBvB;;AAvBD;EAKI,oB9B2gBwD;C8B1gBzD;;ApBtFC;EoBgFJ;IASI,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;IACnB,oB9BsgBwD;I8BrgBxD,mB9BqgBwD;G8Bzf3D;EAvBD;IAcM,qBAAa;IAAb,qBAAa;IAAb,cAAa;IAEb,oBAAY;IAAZ,iBAAY;IAAZ,aAAY;IACZ,6BAAsB;IAAtB,8BAAsB;IAAtB,2BAAsB;IAAtB,uBAAsB;IACtB,mB9B8fsD;I8B7ftD,iBAAgB;IAChB,kB9B4fsD;G8B3fvD;C/Bw0HJ;;A+B/zHD;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;CA4EvB;;AA9ED;EAOI,oB9B2ewD;C8B1ezD;;ApBtHC;EoB8GJ;IAWI,+BAAmB;IAAnB,8BAAmB;IAAnB,wBAAmB;IAAnB,oBAAmB;GAmEtB;EA9ED;IAgBM,oBAAY;IAAZ,iBAAY;IAAZ,aAAY;IACZ,iBAAgB;GA2DjB;EA5EL;IAoBQ,eAAc;IACd,eAAc;GACf;EAtBP;IxBzJI,2BwBoLoC;IxBnLpC,8BwBmLoC;GAU/B;EArCT;;IA+BY,2BAA0B;GAC3B;EAhCX;;IAmCY,8BAA6B;GAC9B;EApCX;IxB3II,0BwBmLmC;IxBlLnC,6BwBkLmC;GAU9B;EAlDT;;IA4CY,0BAAyB;GAC1B;EA7CX;;IAgDY,6BAA4B;GAC7B;EAjDX;IxBtKI,uBN6MgC;G8BwB3B;EA/DT;;IxBhKI,gCNuMgC;IMtMhC,iCNsMgC;G8BmBzB;EA1DX;;IxBlJI,oCNyLgC;IMxLhC,mCNwLgC;G8BuBzB;EA9DX;IxBtKI,iBwBwO8B;GAQzB;EA1ET;;;;IxBtKI,iBwB8OgC;GACzB;C/B2zHV;;A+B/yHD;EAEI,uB9BgZsC;C8B/YvC;;ApBtMC;EoBmMJ;IAMI,wB9B0ZiC;I8B1ZjC,qB9B0ZiC;I8B1ZjC,gB9B0ZiC;I8BzZjC,4B9B0ZuC;I8B1ZvC,yB9B0ZuC;I8B1ZvC,oB9B0ZuC;G8BnZ1C;EAdD;IAUM,sBAAqB;IACrB,YAAW;GACZ;C/BkzHJ;;AgC7jID;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,oBAAe;EAAf,gBAAe;EACf,sB/Bi0BsC;E+Bh0BtC,oB/Bm0BsC;E+Bl0BtC,iBAAgB;EAChB,0B/BOgB;EMTd,uBN6MgC;C+BzMnC;;AAED;EAGI,sBAAqB;EACrB,sB/BuzBqC;E+BtzBrC,qB/BszBqC;E+BrzBrC,e/BCc;E+BAd,aAAiC;CAClC;;AARH;EAiBI,2BAA0B;CAC3B;;AAlBH;EAqBI,sBAAqB;CACtB;;AAtBH;EAyBI,e/BlBc;C+BmBf;;ACpCH;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;E7BGb,gBAAe;EACf,iBAAgB;EGDd,uBN6MgC;CgC7MnC;;AAED;EACE,mBAAkB;EAClB,eAAc;EACd,wBhCqmBwC;EgCpmBxC,kBhCoM+B;EgCnM/B,kBhCwmBsC;EgCvmBtC,ehCwBe;EgCvBf,uBhCFa;EgCGb,0BhCAgB;CgCmBjB;;AA3BD;EAWI,ehCsIgD;EgCrIhD,sBAAqB;EACrB,0BhCNc;EgCOd,sBhCNc;CgCOf;;AAfH;EAkBI,WAAU;EACV,WAAU;EACV,iDhCUa;CgCTd;;AArBH;EAyBI,gBAAe;CAChB;;AAGH;EAGM,eAAc;E1BPhB,gCNkLgC;EMjLhC,mCNiLgC;CgCzK/B;;AALL;E1BlBI,iCNgMgC;EM/LhC,oCN+LgC;CgCpK/B;;AAVL;EAcI,WAAU;EACV,YhCvCW;EgCwCX,0BhCfa;EgCgBb,sBhChBa;CgCiBd;;AAlBH;EAqBI,ehCvCc;EgCwCd,qBAAoB;EAEpB,aAAY;EACZ,uBhCjDW;EgCkDX,sBhC/Cc;CgCgDf;;AC3DD;EACE,wBjC8mBsC;EiC7mBtC,mBjCqOkD;EiCpOlD,iBjCqM6B;CiCpM9B;;AAIG;E3BoBF,+BNmL+B;EMlL/B,kCNkL+B;CiCrM5B;;AAGD;E3BCF,gCNiM+B;EMhM/B,mCNgM+B;CiChM5B;;AAfL;EACE,wBjC4mBqC;EiC3mBrC,oBjCsOkD;EiCrOlD,iBjCsM6B;CiCrM9B;;AAIG;E3BoBF,+BNoL+B;EMnL/B,kCNmL+B;CiCtM5B;;AAGD;E3BCF,gCNkM+B;EMjM/B,mCNiM+B;CiCjM5B;;ACbP;EACE,sBAAqB;EACrB,sBlC6sBsC;EkC5sBtC,elCysBqC;EkCxsBrC,iBlCsO+B;EkCrO/B,eAAc;EACd,mBAAkB;EAClB,oBAAmB;EACnB,yBAAwB;E5BTtB,uBN6MgC;CkC7LnC;;AAfD;EAaI,cAAa;CACd;;AAIH;EACE,mBAAkB;EAClB,UAAS;CACV;;AAMD;EACE,qBlCsrBsC;EkCrrBtC,oBlCqrBsC;EMntBpC,qBNstBqC;CkCtrBxC;;AAOC;EC1CA,YnCUa;EmCTb,0BnCkCe;CkCSd;;AjC3BD;EkCZI,YnCKS;EmCJT,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,YnCUa;EmCTb,0BnCegB;CkC4Bf;;AjC3BD;EkCZI,YnCKS;EmCJT,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,YnCUa;EmCTb,0BnCyCe;CkCEd;;AjC3BD;EkCZI,YnCKS;EmCJT,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,YnCUa;EmCTb,0BnC2Ce;CkCAd;;AjC3BD;EkCZI,YnCKS;EmCJT,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,enCmBgB;EmClBhB,0BnCwCe;CkCGd;;AjC3BD;EkCZI,enCcY;EmCbZ,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,YnCUa;EmCTb,0BnCsCe;CkCKd;;AjC3BD;EkCZI,YnCKS;EmCJT,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,enCmBgB;EmClBhB,0BnCUgB;CkCiCf;;AjC3BD;EkCZI,enCcY;EmCbZ,sBAAqB;EACrB,0BAAkC;ClCarC;;AiCsBD;EC1CA,YnCUa;EmCTb,0BnCiBgB;CkC0Bf;;AjC3BD;EkCZI,YnCKS;EmCJT,sBAAqB;EACrB,0BAAkC;ClCarC;;AmCrBH;EACE,mBAAoD;EACpD,oBpCyoBsC;EoCxoBtC,0BpCUgB;EMTd,sBN8M+B;CoCzMlC;;A1BmDG;E0B5DJ;IAOI,mBpCooBoC;GoCloBvC;CrC+yIA;;AqC7yID;EACE,iBAAgB;EAChB,gBAAe;E9BTb,iB8BUsB;CACzB;;ACXD;EACE,mBAAkB;EAClB,yBrC2vByC;EqC1vBzC,oBrC2vBsC;EqC1vBtC,8BAA6C;E/BJ3C,uBN6MgC;CqCvMnC;;AAGD;EAEE,eAAc;CACf;;AAGD;EACE,iBrC2N+B;CqC1NhC;;AAOD;EACE,oBAAwD;CAUzD;;AAXD;EAKI,mBAAkB;EAClB,OAAM;EACN,SAAQ;EACR,yBrC6tBuC;EqC5tBvC,eAAc;CACf;;AASD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ADoCD;EC9CA,exBmFgE;EI9E9D,0BJ8E8D;EwBjFhE,sBxBiFgE;CuBnC/D;;AC5CD;EACE,0BAAqC;CACtC;;AAED;EACE,eAA0B;CAC3B;;ACXH;EACE;IAAO,4BAAuC;GxC88I7C;EwC78ID;IAAK,yBAAwB;GxCg9I5B;CACF;;AwCn9ID;EACE;IAAO,4BAAuC;GxC88I7C;EwC78ID;IAAK,yBAAwB;GxCg9I5B;CACF;;AwC98ID;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,avCuwBsC;EuCtwBtC,iBAAgB;EAChB,mBvCswByD;EuCrwBzD,0BvCGgB;EMTd,uBN6MgC;CuCpMnC;;AAED;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;EACtB,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;EACvB,YvCRa;EuCSb,mBAAkB;EAClB,0BvCee;EgB/BX,4BhBixB4C;CuC/vBjD;;AAED;ErBkBE,sMAA6I;EqBhB7I,2BvCmvBsC;CuClvBvC;;AAED;EACE,2DvCsvBoD;EuCtvBpD,mDvCsvBoD;CuCrvBrD;;AChCD;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;CACxB;;AAED;EACE,oBAAO;EAAP,YAAO;EAAP,QAAO;CACR;;ACHD;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;EAGtB,gBAAe;EACf,iBAAgB;CACjB;;AAQD;EACE,YAAW;EACX,ezCHgB;EyCIhB,oBAAmB;CAapB;;AxCjBC;EwCQE,ezCRc;EyCSd,sBAAqB;EACrB,0BzChBc;CCSf;;AwCFH;EAaI,ezCZc;EyCad,0BzCpBc;CyCqBf;;AAQH;EACE,mBAAkB;EAClB,eAAc;EACd,yBzCmvByC;EyCjvBzC,oBzC+J+B;EyC9J/B,uBzCrCa;EyCsCb,uCzC5Ba;CyCyDd;;AApCD;EnChCI,gCNuMgC;EMtMhC,iCNsMgC;CyC5JjC;;AAXH;EAcI,iBAAgB;EnChChB,oCNyLgC;EMxLhC,mCNwLgC;CyCvJjC;;AxCxCD;EwC2CE,WAAU;EACV,sBAAqB;CxCzCtB;;AwCqBH;EAyBI,ezClDc;EyCmDd,uBzCzDW;CyC0DZ;;AA3BH;EA+BI,WAAU;EACV,YzC/DW;EyCgEX,0BzCvCa;EyCwCb,sBzCxCa;CyCyCd;;AASH;EAEI,gBAAe;EACf,eAAc;EnCrFd,iBmCsFwB;CACzB;;AALH;EASM,cAAa;CACd;;AAVL;EAeM,iBAAgB;CACjB;;ACnGH;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;AAdL;EACE,e5BgF8D;E4B/E9D,0B5B+E8D;C4BjE/D;;AzCDD;EyCTM,e5B2E0D;E4B1E1D,0BAAyC;CzCW9C;;AyClBD;EAWM,YAAW;EACX,0B5BqE0D;E4BpE1D,sB5BoE0D;C4BnE3D;;ACjBP;EACE,aAAY;EACZ,kB3Cq2BuD;E2Cp2BvD,iB3C4O+B;E2C3O/B,eAAc;EACd,Y3CgBa;E2Cfb,0B3CKa;E2CJb,YAAW;CAYZ;;A1CDC;E0CRE,Y3CWW;E2CVX,sBAAqB;EACrB,aAAY;C1CSb;;A0CrBH;EAiBI,gBAAe;CAChB;;AASH;EACE,WAAU;EACV,8BAA6B;EAC7B,UAAS;EACT,yBAAwB;CACzB;;ACzBD;EACE,iBAAgB;CACjB;;AAGD;EACE,gBAAe;EACf,OAAM;EACN,SAAQ;EACR,UAAS;EACT,QAAO;EACP,c5CmiBsC;E4CliBtC,cAAa;EACb,iBAAgB;EAGhB,WAAU;CASX;;AAJC;EACE,mBAAkB;EAClB,iBAAgB;CACjB;;AAIH;EACE,mBAAkB;EAClB,YAAW;EACX,e5C4rBiC;E4C1rBjC,qBAAoB;CAUrB;;AAPC;E5BtCI,4ChBovBoD;EgBpvBpD,oChBovBoD;EgBpvBpD,qEhBovBoD;E4C5sBtD,sCAA6B;EAA7B,8BAA6B;CAC9B;;AACD;EACE,mCAA0B;EAA1B,2BAA0B;CAC3B;;AAGH;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,sCAAsD;CACvD;;AAGD;EACE,mBAAkB;EAClB,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,2BAAsB;EAAtB,uBAAsB;EACtB,YAAW;EAEX,qBAAoB;EACpB,uB5CvDa;E4CwDb,6BAA4B;EAC5B,qC5C/Ca;EMjBX,sBN8M+B;E4C1IjC,WAAU;CACX;;AAGD;EACE,gBAAe;EACf,OAAM;EACN,SAAQ;EACR,UAAS;EACT,QAAO;EACP,c5CkesC;E4CjetC,uB5C9Da;C4CmEd;;AAZD;EAUW,WAAU;CAAK;;AAV1B;EAWW,a5CupBqB;C4CvpBe;;AAK/C;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;EACvB,0BAA8B;EAA9B,uBAA8B;EAA9B,+BAA8B;EAC9B,c5CmpBgC;E4ClpBhC,iC5CpFgB;EMHd,+BNwM+B;EMvM/B,gCNuM+B;C4CzGlC;;AAbD;EASI,c5C8oB8B;E4C5oB9B,+BAAuF;CACxF;;AAIH;EACE,iBAAgB;EAChB,iB5CoI+B;C4CnIhC;;AAID;EACE,mBAAkB;EAGlB,oBAAc;EAAd,mBAAc;EAAd,eAAc;EACd,c5CwmBgC;C4CvmBjC;;AAGD;EACE,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,sBAAyB;EAAzB,mBAAyB;EAAzB,0BAAyB;EACzB,c5CgmBgC;E4C/lBhC,8B5CpHgB;C4CyHjB;;AAVD;EAQyB,oBAAmB;CAAK;;AARjD;EASwB,qBAAoB;CAAK;;AAIjD;EACE,mBAAkB;EAClB,aAAY;EACZ,YAAW;EACX,aAAY;EACZ,iBAAgB;CACjB;;AlCnFG;EkCwFF;IACE,iB5CimBqC;I4ChmBrC,qBAAyC;GAC1C;EAED;IACE,uCAA8D;GAC/D;EAMD;IAAY,iB5CslB2B;G4CtlBH;C7CssJrC;;AW3yJG;EkC0GF;IAAY,iB5C+kB2B;G4C/kBH;C7CusJrC;;A8C52JD;EACE,mBAAkB;EAClB,c7CojBsC;E6CnjBtC,eAAc;EACd,U7CyqB6B;E8C7qB7B,kK9CmOgL;E8CjOhL,mBAAkB;EAClB,iB9C0O+B;E8CzO/B,iB9C6O+B;E8C5O/B,iBAAgB;EAChB,kBAAiB;EACjB,sBAAqB;EACrB,kBAAiB;EACjB,qBAAoB;EACpB,uBAAsB;EACtB,mBAAkB;EAClB,qBAAoB;EACpB,oBAAmB;EACnB,iBAAgB;EDNhB,oB7CkOoD;E6ChOpD,sBAAqB;EACrB,WAAU;CAiBX;;AA5BD;EAaW,a7C6pBqB;C6C7pBQ;;AAbxC;EAgBI,mBAAkB;EAClB,eAAc;EACd,c7C6pB+B;E6C5pB/B,e7C6pB+B;C6CrpBhC;;AA3BH;EAsBM,mBAAkB;EAClB,YAAW;EACX,0BAAyB;EACzB,oBAAmB;CACpB;;AAIL;EACE,kBAAgC;CAWjC;;AAZD;EAII,UAAS;CAOV;;AAXH;EAOM,OAAM;EACN,8BAAgE;EAChE,uB7CnBS;C6CoBV;;AAIL;EACE,kB7CmoBiC;C6CtnBlC;;AAdD;EAII,QAAO;EACP,c7C+nB+B;E6C9nB/B,e7C6nB+B;C6CtnBhC;;AAbH;EASM,SAAQ;EACR,qCAA2F;EAC3F,yB7CnCS;C6CoCV;;AAIL;EACE,kBAAgC;CAWjC;;AAZD;EAII,OAAM;CAOP;;AAXH;EAOM,UAAS;EACT,8B7C4mB6B;E6C3mB7B,0B7CjDS;C6CkDV;;AAIL;EACE,kB7CqmBiC;C6CxlBlC;;AAdD;EAII,SAAQ;EACR,c7CimB+B;E6ChmB/B,e7C+lB+B;C6CxlBhC;;AAbH;EASM,QAAO;EACP,qC7C4lB6B;E6C3lB7B,wB7CjES;C6CkEV;;AAoBL;EACE,iB7C2jBiC;E6C1jBjC,wB7CgkBiC;E6C/jBjC,Y7CnGa;E6CoGb,mBAAkB;EAClB,uB7C3Fa;EMjBX,uBN6MgC;C6C/FnC;;AElHD;EACE,mBAAkB;EAClB,OAAM;EACN,QAAO;EACP,c/CkjBsC;E+CjjBtC,eAAc;EACd,iB/CmrBuC;E8CxrBvC,kK9CmOgL;E8CjOhL,mBAAkB;EAClB,iB9C0O+B;E8CzO/B,iB9C6O+B;E8C5O/B,iBAAgB;EAChB,kBAAiB;EACjB,sBAAqB;EACrB,kBAAiB;EACjB,qBAAoB;EACpB,uBAAsB;EACtB,mBAAkB;EAClB,qBAAoB;EACpB,oBAAmB;EACnB,iBAAgB;ECLhB,oB/CiOoD;E+C/NpD,sBAAqB;EACrB,uB/CFa;E+CGb,6BAA4B;EAC5B,qC/CMa;EMjBX,sBN8M+B;C+C/KlC;;AAnCD;EAoBI,mBAAkB;EAClB,eAAc;EACd,Y/CkrBoC;E+CjrBpC,e/CkrBqC;E+CjrBrC,iB/C0L+B;C+ChLhC;;AAlCH;EA4BM,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,0BAAyB;EACzB,oBAAmB;CACpB;;AAIL;EACE,sB/CmqBuC;C+C/oBxC;;AArBD;EAII,kCAAwE;CACzE;;AALH;;EASI,8BAAgE;CACjE;;AAVH;EAaI,UAAS;EACT,sC/CypBmE;C+CxpBpE;;AAfH;EAkBI,Y/CuJ6B;E+CtJ7B,uB/C7CW;C+C8CZ;;AAGH;EACE,oB/C4oBuC;C+CrnBxC;;AAxBD;EAII,gCAAsE;EACtE,c/CwoBqC;E+CvoBrC,a/CsoBoC;E+CroBpC,iBAA2B;CAC5B;;AARH;;EAYI,qCAA2F;CAC5F;;AAbH;EAgBI,QAAO;EACP,wC/C+nBmE;C+C9nBpE;;AAlBH;EAqBI,U/C6H6B;E+C5H7B,yB/CvEW;C+CwEZ;;AAGH;EACE,mB/CknBuC;C+CllBxC;;AAjCD;EAII,+BAAqE;CACtE;;AALH;;EASI,qCAA2F;CAC5F;;AAVH;EAaI,OAAM;EACN,yC/CwmBmE;C+CvmBpE;;AAfH;EAkBI,S/CsG6B;E+CrG7B,0B/C9FW;C+C+FZ;;AApBH;EAwBI,mBAAkB;EAClB,OAAM;EACN,UAAS;EACT,eAAc;EACd,Y/CslBoC;E+CrlBpC,qBAAwC;EACxC,YAAW;EACX,iC/C0kBuD;C+CzkBxD;;AAGH;EACE,qB/C+kBuC;C+CxjBxC;;AAxBD;EAII,iCAAuE;EACvE,c/C2kBqC;E+C1kBrC,a/CykBoC;E+CxkBpC,iBAA2B;CAC5B;;AARH;;EAYI,qC/CokBqC;C+CnkBtC;;AAbH;EAgBI,SAAQ;EACR,uC/CkkBmE;C+CjkBpE;;AAlBH;EAqBI,W/CgE6B;E+C/D7B,wB/CpIW;C+CqIZ;;AAoBH;EACE,wB/C6hBwC;E+C5hBxC,iBAAgB;EAChB,gB/CkEgC;E+CjEhC,e/CuFmC;E+CtFnC,0B/CshByD;E+CrhBzD,iCAAyE;EzChKvE,2CyCiKyE;EzChKzE,4CyCgKyE;CAM5E;;AAbD;EAWI,cAAa;CACd;;AAGH;EACE,wB/C8gBwC;E+C7gBxC,e/CjKgB;C+CkKjB;;ACrLD;EACE,mBAAkB;CACnB;;AAED;EACE,mBAAkB;EAClB,YAAW;EACX,iBAAgB;CACjB;;AAED;EACE,mBAAkB;EAClB,cAAa;EACb,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,YAAW;EhCVP,wChB61BgD;EgB71BhD,gChB61BgD;EgB71BhD,6DhB61BgD;EgDj1BpD,oCAA2B;EAA3B,4BAA2B;EAC3B,4BAAmB;EAAnB,oBAAmB;CACpB;;AAED;;;EAGE,eAAc;CACf;;AAED;;EAEE,mBAAkB;EAClB,OAAM;CACP;;AAGD;;EAEE,iCAAwB;EAAxB,yBAAwB;CAKzB;;AAHyC;EAJ1C;;IAKI,wCAA+B;IAA/B,gCAA+B;GAElC;CjD6oKA;;AiD3oKD;;EAEE,oCAA2B;EAA3B,4BAA2B;CAK5B;;AAHyC;EAJ1C;;IAKI,2CAAkC;IAAlC,mCAAkC;GAErC;CjDgpKA;;AiD9oKD;;EAEE,qCAA4B;EAA5B,6BAA4B;CAK7B;;AAHyC;EAJ1C;;IAKI,4CAAmC;IAAnC,oCAAmC;GAEtC;CjDmpKA;;AiD5oKD;;EAEE,mBAAkB;EAClB,OAAM;EACN,UAAS;EAET,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,0BAAmB;EAAnB,uBAAmB;EAAnB,oBAAmB;EACnB,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;EACvB,WhDuwBqC;EgDtwBrC,YhDjEa;EgDkEb,mBAAkB;EAClB,ahDqwBoC;CgD1vBrC;;A/CvEC;;;E+CkEE,YhDzEW;EgD0EX,sBAAqB;EACrB,WAAU;EACV,YAAW;C/ClEZ;;A+CqEH;EACE,QAAO;CAIR;;AACD;EACE,SAAQ;CAIT;;AAGD;;EAEE,sBAAqB;EACrB,YhDkvBsC;EgDjvBtC,ahDivBsC;EgDhvBtC,gDAA+C;EAC/C,2BAA0B;CAC3B;;AACD;EACE,iNlCrEyI;CkCsE1I;;AACD;EACE,iNlCxEyI;CkCyE1I;;AAQD;EACE,mBAAkB;EAClB,SAAQ;EACR,aAAY;EACZ,QAAO;EACP,YAAW;EACX,qBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,yBAAuB;EAAvB,sBAAuB;EAAvB,wBAAuB;EACvB,gBAAe;EAEf,kBhD2sBqC;EgD1sBrC,iBhD0sBqC;EgDzsBrC,iBAAgB;CAoCjB;;AAhDD;EAeI,mBAAkB;EAClB,oBAAc;EAAd,mBAAc;EAAd,eAAc;EACd,YhDusBoC;EgDtsBpC,YhDusBmC;EgDtsBnC,kBhDusBmC;EgDtsBnC,iBhDssBmC;EgDrsBnC,oBAAmB;EACnB,2ChDxIW;CgD6JZ;;AA3CH;EA0BM,mBAAkB;EAClB,WAAU;EACV,QAAO;EACP,sBAAqB;EACrB,YAAW;EACX,aAAY;EACZ,YAAW;CACZ;;AAjCL;EAmCM,mBAAkB;EAClB,cAAa;EACb,QAAO;EACP,sBAAqB;EACrB,YAAW;EACX,aAAY;EACZ,YAAW;CACZ;;AA1CL;EA8CI,uBhDhKW;CgDiKZ;;AAQH;EACE,mBAAkB;EAClB,WAA6C;EAC7C,aAAY;EACZ,UAA4C;EAC5C,YAAW;EACX,kBAAiB;EACjB,qBAAoB;EACpB,YhDjLa;EgDkLb,mBAAkB;CACnB;;AC5LD;EAAqB,oCAAmC;CAAK;;AAC7D;EAAqB,+BAA8B;CAAK;;AACxD;EAAqB,kCAAiC;CAAK;;AAC3D;EAAqB,kCAAiC;CAAK;;AAC3D;EAAqB,uCAAsC;CAAK;;AAChE;EAAqB,oCAAmC;CAAK;;ACF3D;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AiDhBD;EACE,qCAAmC;CACpC;;AjDWD;;;EiDPI,qCAAgD;CjDUnD;;AkDTH;EACE,kCAAmC;CACpC;;AAED;EACE,yCAAwC;CACzC;;ACZD;EAAkB,qCAAoD;CAAI;;AAC1E;EAAkB,yCAAwD;CAAI;;AAC9E;EAAkB,2CAA0D;CAAI;;AAChF;EAAkB,4CAA2D;CAAI;;AACjF;EAAkB,0CAAyD;CAAI;;AAE/E;EAAmB,qBAAoB;CAAK;;AAC5C;EAAmB,yBAAwB;CAAK;;AAChD;EAAmB,2BAA0B;CAAK;;AAClD;EAAmB,4BAA2B;CAAK;;AACnD;EAAmB,0BAAyB;CAAK;;AAG/C;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAFD;EACE,iCAA+B;CAChC;;AAGH;EACE,8BAA+B;CAChC;;AAMD;EACE,kCAAwC;CACzC;;AACD;EACE,2CAAiD;EACjD,4CAAkD;CACnD;;AACD;EACE,4CAAkD;EAClD,+CAAqD;CACtD;;AACD;EACE,+CAAqD;EACrD,8CAAoD;CACrD;;AACD;EACE,2CAAiD;EACjD,8CAAoD;CACrD;;AAED;EACE,8BAA6B;CAC9B;;AAED;EACE,4BAA2B;CAC5B;;ACzDC;EACE,eAAc;EACd,YAAW;EACX,YAAW;CACZ;;ACKC;EAA2B,yBAAwB;CAAK;;AACxD;EAA2B,2BAA0B;CAAK;;AAC1D;EAA2B,iCAAgC;CAAK;;AAChE;EAA2B,0BAAyB;CAAK;;AACzD;EAA2B,0BAAyB;CAAK;;AACzD;EAA2B,8BAA6B;CAAK;;AAC7D;EAA2B,+BAA8B;CAAK;;AAC9D;EAA2B,gCAAwB;EAAxB,gCAAwB;EAAxB,yBAAwB;CAAK;;AACxD;EAA2B,uCAA+B;EAA/B,uCAA+B;EAA/B,gCAA+B;CAAK;;A5C0C/D;E4ClDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CvD6kLlE;;AWniLG;E4ClDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CvD2mLlE;;AWjkLG;E4ClDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CvDyoLlE;;AW/lLG;E4ClDA;IAA2B,yBAAwB;GAAK;EACxD;IAA2B,2BAA0B;GAAK;EAC1D;IAA2B,iCAAgC;GAAK;EAChE;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,0BAAyB;GAAK;EACzD;IAA2B,8BAA6B;GAAK;EAC7D;IAA2B,+BAA8B;GAAK;EAC9D;IAA2B,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACxD;IAA2B,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CvDuqLlE;;AuD9pLD;EACE;IAAwB,yBAAwB;GAAK;EACrD;IAAwB,2BAA0B;GAAK;EACvD;IAAwB,iCAAgC;GAAK;EAC7D;IAAwB,0BAAyB;GAAK;EACtD;IAAwB,0BAAyB;GAAK;EACtD;IAAwB,8BAA6B;GAAK;EAC1D;IAAwB,+BAA8B;GAAK;EAC3D;IAAwB,gCAAwB;IAAxB,gCAAwB;IAAxB,yBAAwB;GAAK;EACrD;IAAwB,uCAA+B;IAA/B,uCAA+B;IAA/B,gCAA+B;GAAK;CvDmrL7D;;AwDrtLD;EACE,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,WAAU;EACV,iBAAgB;CAoBjB;;AAzBD;EAQI,eAAc;EACd,YAAW;CACZ;;AAVH;;;;;EAiBI,mBAAkB;EAClB,OAAM;EACN,UAAS;EACT,QAAO;EACP,YAAW;EACX,aAAY;EACZ,UAAS;CACV;;AAGH;EAEI,wBAA+B;CAChC;;AAGH;EAEI,oBAA+B;CAChC;;AAGH;EAEI,iBAA8B;CAC/B;;AAGH;EAEI,kBAA8B;CAC/B;;ACxCC;EAAgC,0CAA8B;EAA9B,yCAA8B;EAA9B,mCAA8B;EAA9B,+BAA8B;CAAK;;AACnE;EAAgC,wCAAiC;EAAjC,yCAAiC;EAAjC,sCAAiC;EAAjC,kCAAiC;CAAK;;AACtE;EAAgC,0CAAsC;EAAtC,0CAAsC;EAAtC,2CAAsC;EAAtC,uCAAsC;CAAK;;AAC3E;EAAgC,wCAAyC;EAAzC,0CAAyC;EAAzC,8CAAyC;EAAzC,0CAAyC;CAAK;;AAE9E;EAA8B,+BAA0B;EAA1B,2BAA0B;CAAK;;AAC7D;EAA8B,iCAA4B;EAA5B,6BAA4B;CAAK;;AAC/D;EAA8B,uCAAkC;EAAlC,mCAAkC;CAAK;;AAErE;EAAoC,mCAAsC;EAAtC,gCAAsC;EAAtC,uCAAsC;CAAK;;AAC/E;EAAoC,iCAAoC;EAApC,8BAAoC;EAApC,qCAAoC;CAAK;;AAC7E;EAAoC,oCAAkC;EAAlC,iCAAkC;EAAlC,mCAAkC;CAAK;;AAC3E;EAAoC,qCAAyC;EAAzC,kCAAyC;EAAzC,0CAAyC;CAAK;;AAClF;EAAoC,qCAAwC;EAAxC,yCAAwC;CAAK;;AAEjF;EAAiC,oCAAkC;EAAlC,iCAAkC;EAAlC,mCAAkC;CAAK;;AACxE;EAAiC,kCAAgC;EAAhC,+BAAgC;EAAhC,iCAAgC;CAAK;;AACtE;EAAiC,qCAA8B;EAA9B,kCAA8B;EAA9B,+BAA8B;CAAK;;AACpE;EAAiC,uCAAgC;EAAhC,oCAAgC;EAAhC,iCAAgC;CAAK;;AACtE;EAAiC,sCAA+B;EAA/B,mCAA+B;EAA/B,gCAA+B;CAAK;;AAErE;EAAkC,qCAAoC;EAApC,qCAAoC;CAAK;;AAC3E;EAAkC,mCAAkC;EAAlC,mCAAkC;CAAK;;AACzE;EAAkC,sCAAgC;EAAhC,iCAAgC;CAAK;;AACvE;EAAkC,uCAAuC;EAAvC,wCAAuC;CAAK;;AAC9E;EAAkC,0CAAsC;EAAtC,uCAAsC;CAAK;;AAC7E;EAAkC,uCAAiC;EAAjC,kCAAiC;CAAK;;AAExE;EAAgC,qCAA2B;EAA3B,4BAA2B;CAAK;;AAChE;EAAgC,sCAAiC;EAAjC,kCAAiC;CAAK;;AACtE;EAAgC,oCAA+B;EAA/B,gCAA+B;CAAK;;AACpE;EAAgC,uCAA6B;EAA7B,8BAA6B;CAAK;;AAClE;EAAgC,yCAA+B;EAA/B,gCAA+B;CAAK;;AACpE;EAAgC,wCAA8B;EAA9B,+BAA8B;CAAK;;A9CiBnE;E8ClDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CzDq6LtE;;AWp5LG;E8ClDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CzD+/LtE;;AW9+LG;E8ClDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CzDylMtE;;AWxkMG;E8ClDA;IAAgC,0CAA8B;IAA9B,yCAA8B;IAA9B,mCAA8B;IAA9B,+BAA8B;GAAK;EACnE;IAAgC,wCAAiC;IAAjC,yCAAiC;IAAjC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,0CAAsC;IAAtC,0CAAsC;IAAtC,2CAAsC;IAAtC,uCAAsC;GAAK;EAC3E;IAAgC,wCAAyC;IAAzC,0CAAyC;IAAzC,8CAAyC;IAAzC,0CAAyC;GAAK;EAE9E;IAA8B,+BAA0B;IAA1B,2BAA0B;GAAK;EAC7D;IAA8B,iCAA4B;IAA5B,6BAA4B;GAAK;EAC/D;IAA8B,uCAAkC;IAAlC,mCAAkC;GAAK;EAErE;IAAoC,mCAAsC;IAAtC,gCAAsC;IAAtC,uCAAsC;GAAK;EAC/E;IAAoC,iCAAoC;IAApC,8BAAoC;IAApC,qCAAoC;GAAK;EAC7E;IAAoC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EAC3E;IAAoC,qCAAyC;IAAzC,kCAAyC;IAAzC,0CAAyC;GAAK;EAClF;IAAoC,qCAAwC;IAAxC,yCAAwC;GAAK;EAEjF;IAAiC,oCAAkC;IAAlC,iCAAkC;IAAlC,mCAAkC;GAAK;EACxE;IAAiC,kCAAgC;IAAhC,+BAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,qCAA8B;IAA9B,kCAA8B;IAA9B,+BAA8B;GAAK;EACpE;IAAiC,uCAAgC;IAAhC,oCAAgC;IAAhC,iCAAgC;GAAK;EACtE;IAAiC,sCAA+B;IAA/B,mCAA+B;IAA/B,gCAA+B;GAAK;EAErE;IAAkC,qCAAoC;IAApC,qCAAoC;GAAK;EAC3E;IAAkC,mCAAkC;IAAlC,mCAAkC;GAAK;EACzE;IAAkC,sCAAgC;IAAhC,iCAAgC;GAAK;EACvE;IAAkC,uCAAuC;IAAvC,wCAAuC;GAAK;EAC9E;IAAkC,0CAAsC;IAAtC,uCAAsC;GAAK;EAC7E;IAAkC,uCAAiC;IAAjC,kCAAiC;GAAK;EAExE;IAAgC,qCAA2B;IAA3B,4BAA2B;GAAK;EAChE;IAAgC,sCAAiC;IAAjC,kCAAiC;GAAK;EACtE;IAAgC,oCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,uCAA6B;IAA7B,8BAA6B;GAAK;EAClE;IAAgC,yCAA+B;IAA/B,gCAA+B;GAAK;EACpE;IAAgC,wCAA8B;IAA9B,+BAA8B;GAAK;CzDmrMtE;;A0D1tMG;ECDF,uBAAsB;CDC2B;;AAC/C;ECCF,wBAAuB;CDD2B;;AAChD;ECGF,uBAAsB;CDH2B;;A/CsD/C;E+CxDA;ICDF,uBAAsB;GDC2B;EAC/C;ICCF,wBAAuB;GDD2B;EAChD;ICGF,uBAAsB;GDH2B;C1DgvMlD;;AW1rMG;E+CxDA;ICDF,uBAAsB;GDC2B;EAC/C;ICCF,wBAAuB;GDD2B;EAChD;ICGF,uBAAsB;GDH2B;C1D4vMlD;;AWtsMG;E+CxDA;ICDF,uBAAsB;GDC2B;EAC/C;ICCF,wBAAuB;GDD2B;EAChD;ICGF,uBAAsB;GDH2B;C1DwwMlD;;AWltMG;E+CxDA;ICDF,uBAAsB;GDC2B;EAC/C;ICCF,wBAAuB;GDD2B;EAChD;ICGF,uBAAsB;GDH2B;C1DoxMlD;;A4DlxMC;EAAyB,4BAA8B;CAAI;;AAA3D;EAAyB,8BAA8B;CAAI;;AAA3D;EAAyB,8BAA8B;CAAI;;AAA3D;EAAyB,2BAA8B;CAAI;;AAA3D;EAAyB,oCAA8B;EAA9B,4BAA8B;CAAI;;AAK7D;EACE,gBAAe;EACf,OAAM;EACN,SAAQ;EACR,QAAO;EACP,c3DiiBsC;C2DhiBvC;;AAED;EACE,gBAAe;EACf,SAAQ;EACR,UAAS;EACT,QAAO;EACP,c3DyhBsC;C2DxhBvC;;AAG6B;EAD9B;IAEI,yBAAgB;IAAhB,iBAAgB;IAChB,OAAM;IACN,c3DihBoC;G2D/gBvC;C5DmyMA;;A6Dl0MD;ECEE,mBAAkB;EAClB,WAAU;EACV,YAAW;EACX,WAAU;EACV,iBAAgB;EAChB,uBAAsB;EACtB,oBAAmB;EACnB,8BAAqB;EAArB,sBAAqB;EACrB,UAAS;CDRV;;ACkBC;EAEE,iBAAgB;EAChB,YAAW;EACX,aAAY;EACZ,kBAAiB;EACjB,WAAU;EACV,oBAAmB;EACnB,wBAAe;EAAf,gBAAe;CAChB;;AC3BC;EAAuB,sBAA4B;CAAI;;AAAvD;EAAuB,sBAA4B;CAAI;;AAAvD;EAAuB,sBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,uBAA4B;CAAI;;AAAvD;EAAuB,wBAA4B;CAAI;;AAI3D;EAAU,2BAA0B;CAAK;;AACzC;EAAU,4BAA2B;CAAK;;ACAlC;EAAgC,qBAA4B;CAAI;;AAChE;;EAEE,yBAAoC;CACrC;;AACD;;EAEE,2BAAwC;CACzC;;AACD;;EAEE,4BAA0C;CAC3C;;AACD;;EAEE,0BAAsC;CACvC;;AAhBD;EAAgC,2BAA4B;CAAI;;AAChE;;EAEE,+BAAoC;CACrC;;AACD;;EAEE,iCAAwC;CACzC;;AACD;;EAEE,kCAA0C;CAC3C;;AACD;;EAEE,gCAAsC;CACvC;;AAhBD;EAAgC,0BAA4B;CAAI;;AAChE;;EAEE,8BAAoC;CACrC;;AACD;;EAEE,gCAAwC;CACzC;;AACD;;EAEE,iCAA0C;CAC3C;;AACD;;EAEE,+BAAsC;CACvC;;AAhBD;EAAgC,wBAA4B;CAAI;;AAChE;;EAEE,4BAAoC;CACrC;;AACD;;EAEE,8BAAwC;CACzC;;AACD;;EAEE,+BAA0C;CAC3C;;AACD;;EAEE,6BAAsC;CACvC;;AAhBD;EAAgC,0BAA4B;CAAI;;AAChE;;EAEE,8BAAoC;CACrC;;AACD;;EAEE,gCAAwC;CACzC;;AACD;;EAEE,iCAA0C;CAC3C;;AACD;;EAEE,+BAAsC;CACvC;;AAhBD;EAAgC,wBAA4B;CAAI;;AAChE;;EAEE,4BAAoC;CACrC;;AACD;;EAEE,8BAAwC;CACzC;;AACD;;EAEE,+BAA0C;CAC3C;;AACD;;EAEE,6BAAsC;CACvC;;AAhBD;EAAgC,sBAA4B;CAAI;;AAChE;;EAEE,0BAAoC;CACrC;;AACD;;EAEE,4BAAwC;CACzC;;AACD;;EAEE,6BAA0C;CAC3C;;AACD;;EAEE,2BAAsC;CACvC;;AAhBD;EAAgC,4BAA4B;CAAI;;AAChE;;EAEE,gCAAoC;CACrC;;AACD;;EAEE,kCAAwC;CACzC;;AACD;;EAEE,mCAA0C;CAC3C;;AACD;;EAEE,iCAAsC;CACvC;;AAhBD;EAAgC,2BAA4B;CAAI;;AAChE;;EAEE,+BAAoC;CACrC;;AACD;;EAEE,iCAAwC;CACzC;;AACD;;EAEE,kCAA0C;CAC3C;;AACD;;EAEE,gCAAsC;CACvC;;AAhBD;EAAgC,yBAA4B;CAAI;;AAChE;;EAEE,6BAAoC;CACrC;;AACD;;EAEE,+BAAwC;CACzC;;AACD;;EAEE,gCAA0C;CAC3C;;AACD;;EAEE,8BAAsC;CACvC;;AAhBD;EAAgC,2BAA4B;CAAI;;AAChE;;EAEE,+BAAoC;CACrC;;AACD;;EAEE,iCAAwC;CACzC;;AACD;;EAEE,kCAA0C;CAC3C;;AACD;;EAEE,gCAAsC;CACvC;;AAhBD;EAAgC,yBAA4B;CAAI;;AAChE;;EAEE,6BAAoC;CACrC;;AACD;;EAEE,+BAAwC;CACzC;;AACD;;EAEE,gCAA0C;CAC3C;;AACD;;EAEE,8BAAsC;CACvC;;AAKL;EAAmB,wBAAuB;CAAK;;AAC/C;;EAEE,4BAA2B;CAC5B;;AACD;;EAEE,8BAA6B;CAC9B;;AACD;;EAEE,+BAA8B;CAC/B;;AACD;;EAEE,6BAA4B;CAC7B;;ArDYD;EqDjDI;IAAgC,qBAA4B;GAAI;EAChE;;IAEE,yBAAoC;GACrC;EACD;;IAEE,2BAAwC;GACzC;EACD;;IAEE,4BAA0C;GAC3C;EACD;;IAEE,0BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,sBAA4B;GAAI;EAChE;;IAEE,0BAAoC;GACrC;EACD;;IAEE,4BAAwC;GACzC;EACD;;IAEE,6BAA0C;GAC3C;EACD;;IAEE,2BAAsC;GACvC;EAhBD;IAAgC,4BAA4B;GAAI;EAChE;;IAEE,gCAAoC;GACrC;EACD;;IAEE,kCAAwC;GACzC;EACD;;IAEE,mCAA0C;GAC3C;EACD;;IAEE,iCAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAKL;IAAmB,wBAAuB;GAAK;EAC/C;;IAEE,4BAA2B;GAC5B;EACD;;IAEE,8BAA6B;GAC9B;EACD;;IAEE,+BAA8B;GAC/B;EACD;;IAEE,6BAA4B;GAC7B;ChEs4NJ;;AW13NG;EqDjDI;IAAgC,qBAA4B;GAAI;EAChE;;IAEE,yBAAoC;GACrC;EACD;;IAEE,2BAAwC;GACzC;EACD;;IAEE,4BAA0C;GAC3C;EACD;;IAEE,0BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,sBAA4B;GAAI;EAChE;;IAEE,0BAAoC;GACrC;EACD;;IAEE,4BAAwC;GACzC;EACD;;IAEE,6BAA0C;GAC3C;EACD;;IAEE,2BAAsC;GACvC;EAhBD;IAAgC,4BAA4B;GAAI;EAChE;;IAEE,gCAAoC;GACrC;EACD;;IAEE,kCAAwC;GACzC;EACD;;IAEE,mCAA0C;GAC3C;EACD;;IAEE,iCAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAKL;IAAmB,wBAAuB;GAAK;EAC/C;;IAEE,4BAA2B;GAC5B;EACD;;IAEE,8BAA6B;GAC9B;EACD;;IAEE,+BAA8B;GAC/B;EACD;;IAEE,6BAA4B;GAC7B;ChEgoOJ;;AWpnOG;EqDjDI;IAAgC,qBAA4B;GAAI;EAChE;;IAEE,yBAAoC;GACrC;EACD;;IAEE,2BAAwC;GACzC;EACD;;IAEE,4BAA0C;GAC3C;EACD;;IAEE,0BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,sBAA4B;GAAI;EAChE;;IAEE,0BAAoC;GACrC;EACD;;IAEE,4BAAwC;GACzC;EACD;;IAEE,6BAA0C;GAC3C;EACD;;IAEE,2BAAsC;GACvC;EAhBD;IAAgC,4BAA4B;GAAI;EAChE;;IAEE,gCAAoC;GACrC;EACD;;IAEE,kCAAwC;GACzC;EACD;;IAEE,mCAA0C;GAC3C;EACD;;IAEE,iCAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAKL;IAAmB,wBAAuB;GAAK;EAC/C;;IAEE,4BAA2B;GAC5B;EACD;;IAEE,8BAA6B;GAC9B;EACD;;IAEE,+BAA8B;GAC/B;EACD;;IAEE,6BAA4B;GAC7B;ChE03OJ;;AW92OG;EqDjDI;IAAgC,qBAA4B;GAAI;EAChE;;IAEE,yBAAoC;GACrC;EACD;;IAEE,2BAAwC;GACzC;EACD;;IAEE,4BAA0C;GAC3C;EACD;;IAEE,0BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,0BAA4B;GAAI;EAChE;;IAEE,8BAAoC;GACrC;EACD;;IAEE,gCAAwC;GACzC;EACD;;IAEE,iCAA0C;GAC3C;EACD;;IAEE,+BAAsC;GACvC;EAhBD;IAAgC,wBAA4B;GAAI;EAChE;;IAEE,4BAAoC;GACrC;EACD;;IAEE,8BAAwC;GACzC;EACD;;IAEE,+BAA0C;GAC3C;EACD;;IAEE,6BAAsC;GACvC;EAhBD;IAAgC,sBAA4B;GAAI;EAChE;;IAEE,0BAAoC;GACrC;EACD;;IAEE,4BAAwC;GACzC;EACD;;IAEE,6BAA0C;GAC3C;EACD;;IAEE,2BAAsC;GACvC;EAhBD;IAAgC,4BAA4B;GAAI;EAChE;;IAEE,gCAAoC;GACrC;EACD;;IAEE,kCAAwC;GACzC;EACD;;IAEE,mCAA0C;GAC3C;EACD;;IAEE,iCAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAhBD;IAAgC,2BAA4B;GAAI;EAChE;;IAEE,+BAAoC;GACrC;EACD;;IAEE,iCAAwC;GACzC;EACD;;IAEE,kCAA0C;GAC3C;EACD;;IAEE,gCAAsC;GACvC;EAhBD;IAAgC,yBAA4B;GAAI;EAChE;;IAEE,6BAAoC;GACrC;EACD;;IAEE,+BAAwC;GACzC;EACD;;IAEE,gCAA0C;GAC3C;EACD;;IAEE,8BAAsC;GACvC;EAKL;IAAmB,wBAAuB;GAAK;EAC/C;;IAEE,4BAA2B;GAC5B;EACD;;IAEE,8BAA6B;GAC9B;EACD;;IAEE,+BAA8B;GAC/B;EACD;;IAEE,6BAA4B;GAC7B;ChEonPJ;;AiE5pPD;EAAiB,+BAA8B;CAAK;;AACpD;EAAiB,+BAA8B;CAAK;;AACpD;ECNE,iBAAgB;EAChB,wBAAuB;EACvB,oBAAmB;CDIsB;;AAQvC;EAAwB,4BAA2B;CAAK;;AACxD;EAAwB,6BAA4B;CAAK;;AACzD;EAAwB,8BAA6B;CAAK;;AtDwC1D;EsD1CA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjEsrP7D;;AW9oPG;EsD1CA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjEksP7D;;AW1pPG;EsD1CA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjE8sP7D;;AWtqPG;EsD1CA;IAAwB,4BAA2B;GAAK;EACxD;IAAwB,6BAA4B;GAAK;EACzD;IAAwB,8BAA6B;GAAK;CjE0tP7D;;AiEptPD;EAAmB,qCAAoC;CAAK;;AAC5D;EAAmB,qCAAoC;CAAK;;AAC5D;EAAmB,sCAAqC;CAAK;;AAI7D;EAAsB,4BAA0C;CAAI;;AACpE;EAAsB,4BAA2C;CAAI;;AACrE;EAAsB,4BAAyC;CAAI;;AACnE;EAAsB,8BAA6B;CAAK;;AAIxD;EAAc,uBAAsB;CAAK;;AElCvC;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;AiEhBD;EACE,0BAAwB;CACzB;;AjEWD;EiERI,0BAAqC;CjEWxC;;A+DwBH;EAAc,0BAA6B;CAAI;;AAI/C;EG9CE,YAAW;EACX,mBAAkB;EAClB,kBAAiB;EACjB,8BAA6B;EAC7B,UAAS;CH4CV;;AI/CD;ECCE,+BAAkC;CDCnC;;AAED;ECHE,8BAAkC;CDKnC;;AECC;EACE;;;IAKE,6BAA4B;IAE5B,4BAA2B;GAC5B;EAED;IAEI,2BAA0B;GAC3B;EAQH;IACE,8BAA6B;GAC9B;EAaD;IACE,iCAAgC;GACjC;EACD;;IAEE,uBAAgC;IAChC,yBAAwB;GACzB;EAOD;IACE,4BAA2B;GAC5B;EAED;;IAEE,yBAAwB;GACzB;EAED;;;IAGE,WAAU;IACV,UAAS;GACV;EAED;;IAEE,wBAAuB;GACxB;EAOD;IACE,StEmyBgC;GDghOnC;EuEjzPC;IACE,4BAA2C;GAC5C;EACD;IACE,4BAA2C;GAC5C;EAGD;IACE,cAAa;GACd;EACD;IACE,uBAAgC;GACjC;EAED;IACE,qCAAoC;GAMrC;EAPD;;IAKI,kCAAiC;GAClC;EAEH;;IAGI,kCAAiC;GAClC;CvE8yPN","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"utilities\";\n@import \"print\";\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 6\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport {\n width: device-width;\n }\n}\n\n// stylelint-disable selector-list-comma-newline-after\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use the\n// the `inherit` value on things like `<th>` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\n// stylelint-disable font-weight-notation\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n// stylelint-enable font-weight-notation\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\n// stylelint-disable font-family-no-duplicate-names\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n// stylelint-enable font-family-no-duplicate-names\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so\n // we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment by inheriting from the `<body>`, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n background-color: #71dd8a;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n background-color: #efa2a9;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n background-color: transparent;\n background-image: none;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::before {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label,\n.input-group > .custom-file:not(:first-child) .custom-file-label::before {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n margin-bottom: 0;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n user-select: none;\n background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n border-color: #80bdff;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(calc(2.25rem + 2px) - 1px * 2);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: 1px solid #ced4da;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: flex;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group {\n display: flex;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 2;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: #fff;\n text-align: center;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n z-index: 1;\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover, .close:focus {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2));\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: 1px;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: 1px;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: 0;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: 1px;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: 1px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n transition: transform 0.6s ease;\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: ($font-size-base * 1.25) !default;\n$font-size-sm: ($font-size-base * .875) !default;\n\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: ($font-size-base * 1.25) !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-300 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-bg: $gray-900 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($gray-900, 7.5%) !default;\n$table-dark-color: $body-bg !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $gray-300 !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-font-size-lg: 125% !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$custom-file-padding-y: $input-btn-padding-y !default;\n$custom-file-padding-x: $input-btn-padding-x !default;\n$custom-file-line-height: $input-btn-line-height !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-btn-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: ($grid-gutter-width / 2) !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 1rem !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: ($font-size-base * .75) !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Printing\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n","// stylelint-disable indentation\n\n// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Origally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS—an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular psuedo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { font-size: $h1-font-size; }\nh2, .h2 { font-size: $h2-font-size; }\nh3, .h3 { font-size: $h3-font-size; }\nh4, .h4 { font-size: $h4-font-size; }\nh5, .h5 { font-size: $h5-font-size; }\nh6, .h6 { font-size: $h6-font-size; }\n\n.lead {\n font-size: $lead-font-size;\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n font-size: $display1-size;\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n font-size: $display2-size;\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n font-size: $display3-size;\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n font-size: $display4-size;\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n font-size: $small-font-size;\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n font-size: $blockquote-font-size;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%; // back to default font-size\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: ($spacer / 2);\n line-height: 1;\n}\n\n.figure-caption {\n font-size: $figure-caption-font-size;\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n// stylelint-disable indentation, media-query-list-comma-newline-after\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n}\n","// Single side border-radius\n\n@mixin border-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n","// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: $font-family-monospace;\n}\n\n// Inline code\ncode {\n font-size: $code-font-size;\n color: $code-color;\n word-break: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n font-size: $kbd-font-size;\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n font-size: $code-font-size;\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n width: 100%;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: $spacer;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n\n .table {\n background-color: $body-bg;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: (2 * $table-border-width);\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, -9));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// Bootstrap functions\n//\n// Utility mixins and functions for evalutating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map) {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $yiq-text-dark;\n } @else {\n @return $yiq-text-light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, #000, #fff);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n padding: $input-padding-y $input-padding-x;\n font-size: $font-size-base;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n @if $enable-rounded {\n // Manually use the if/else instead of the mixin to account for iOS override\n border-radius: $input-border-radius;\n } @else {\n // Otherwise undo the iOS default\n border-radius: 0;\n }\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Customize the `:focus` state to imitate native WebKit styles.\n @include form-control-focus();\n\n // Placeholder\n &::placeholder {\n color: $input-placeholder-color;\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n opacity: 1;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &:disabled,\n &[readonly] {\n background-color: $input-disabled-bg;\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n opacity: 1;\n }\n}\n\nselect.form-control {\n &:not([size]):not([multiple]) {\n height: $input-height;\n }\n\n &:focus::-ms-value {\n // Suppress the nested default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n margin-bottom: 0; // Override the `<label>/<legend>` default\n font-size: inherit; // Override the `<legend>` default\n line-height: $input-line-height;\n}\n\n.col-form-label-lg {\n padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});\n font-size: $font-size-lg;\n line-height: $input-line-height-lg;\n}\n\n.col-form-label-sm {\n padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});\n font-size: $font-size-sm;\n line-height: $input-line-height-sm;\n}\n\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: $input-padding-y;\n padding-bottom: $input-padding-y;\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n line-height: $input-line-height;\n background-color: transparent;\n border: solid transparent;\n border-width: $input-border-width 0;\n\n &.form-control-sm,\n &.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.form-control-sm {\n padding: $input-padding-y-sm $input-padding-x-sm;\n font-size: $font-size-sm;\n line-height: $input-line-height-sm;\n @include border-radius($input-border-radius-sm);\n}\n\nselect.form-control-sm {\n &:not([size]):not([multiple]) {\n height: $input-height-sm;\n }\n}\n\n.form-control-lg {\n padding: $input-padding-y-lg $input-padding-x-lg;\n font-size: $font-size-lg;\n line-height: $input-line-height-lg;\n @include border-radius($input-border-radius-lg);\n}\n\nselect.form-control-lg {\n &:not([size]):not([multiple]) {\n height: $input-height-lg;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: $form-group-margin-bottom;\n}\n\n.form-text {\n display: block;\n margin-top: $form-text-margin-top;\n}\n\n\n// Form grid\n//\n// Special replacement for our grid system's `.row` for tighter form layouts.\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.form-check {\n position: relative;\n display: block;\n padding-left: $form-check-input-gutter;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: $form-check-input-margin-y;\n margin-left: -$form-check-input-gutter;\n\n &:disabled ~ .form-check-label {\n color: $text-muted;\n }\n}\n\n.form-check-label {\n margin-bottom: 0; // Override default `<label>` bottom margin\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0; // Override base .form-check\n margin-right: $form-check-inline-margin-x;\n\n // Undo .form-check-input defaults and add some `margin-right`.\n .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: $form-check-inline-input-margin-x;\n margin-left: 0;\n }\n}\n\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server side validation.\n\n@include form-validation-state(\"valid\", $form-feedback-valid-color);\n@include form-validation-state(\"invalid\", $form-feedback-invalid-color);\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)\n\n // Because we use flex, the initial sizing of checkboxes is collapsed and\n // doesn't occupy the full-width (which is what we want for xs grid tier),\n // so we force that here.\n .form-check {\n width: 100%;\n }\n\n // Kick in the inline\n @include media-breakpoint-up(sm) {\n label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n\n // Inline-block all the things for \"inline\"\n .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n\n // Allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-plaintext {\n display: inline-block;\n }\n\n .input-group {\n width: auto;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: $form-check-input-margin-x;\n margin-left: 0;\n }\n\n .custom-control {\n align-items: center;\n justify-content: center;\n }\n .custom-control-label {\n margin-bottom: 0;\n }\n }\n}\n","@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n}\n","// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n font-size: $form-feedback-font-size;\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba($color, .8);\n border-radius: .2rem;\n }\n\n .form-control,\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n background-color: lighten($color, 25%);\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n\n &::before { border-color: inherit; }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n}\n","// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: #555, $outer-color: #333) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.btn {\n display: inline-block;\n font-weight: $btn-font-weight;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: $btn-border-width solid transparent;\n @include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $btn-line-height, $btn-border-radius);\n @include transition($btn-transition);\n\n // Share hover and focus styles\n @include hover-focus {\n text-decoration: none;\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: $btn-focus-box-shadow;\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n opacity: $btn-disabled-opacity;\n @include box-shadow(none);\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .btn elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active {\n background-image: none;\n @include box-shadow($btn-active-box-shadow);\n\n &:focus {\n @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n }\n }\n}\n\n// Future-proof disabling of clicks on `<a>` elements\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n background-color: transparent;\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n background-color: transparent;\n border-color: transparent;\n }\n\n &:focus,\n &.focus {\n text-decoration: $link-hover-decoration;\n border-color: transparent;\n box-shadow: none;\n }\n\n &:disabled,\n &.disabled {\n color: $btn-link-disabled-color;\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n\n // Vertically space out multiple block buttons\n + .btn-block {\n margin-top: $btn-block-spacing-y;\n }\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n background-color: transparent;\n background-image: none;\n border-color: $color;\n\n &:hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @if $enable-rounded {\n border-radius: $border-radius;\n } @else {\n border-radius: 0;\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n.fade {\n opacity: 0;\n @include transition($transition-fade);\n\n &.show {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.show {\n display: block;\n }\n}\n\ntr {\n &.collapse.show {\n display: table-row;\n }\n}\n\ntbody {\n &.collapse.show {\n display: table-row-group;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle {\n // Generate the caret automatically\n @include caret;\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues\n color: $body-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($dropdown-border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(up);\n }\n}\n\n.dropright {\n .dropdown-menu {\n margin-top: 0;\n margin-left: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(right);\n &::after {\n vertical-align: 0;\n }\n }\n}\n\n.dropleft {\n .dropdown-menu {\n margin-top: 0;\n margin-right: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(left);\n &::before {\n vertical-align: 0;\n }\n }\n}\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n display: block;\n width: 100%; // For `<button>`s\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n clear: both;\n font-weight: $font-weight-normal;\n color: $dropdown-link-color;\n text-align: inherit; // For `<button>`s\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n background-color: transparent; // For `<button>`s\n border: 0; // For `<button>`s\n\n @include hover-focus {\n color: $dropdown-link-hover-color;\n text-decoration: none;\n @include gradient-bg($dropdown-link-hover-bg);\n }\n\n &.active,\n &:active {\n color: $dropdown-link-active-color;\n text-decoration: none;\n @include gradient-bg($dropdown-link-active-bg);\n }\n\n &.disabled,\n &:disabled {\n color: $dropdown-link-disabled-color;\n background-color: transparent;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n margin-bottom: 0; // for use with heading elements\n font-size: $font-size-sm;\n color: $dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n","@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: $caret-width * .85;\n vertical-align: $caret-width * .85;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: $caret-width * .85;\n vertical-align: $caret-width * .85;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: #e5e5e5) {\n height: 0;\n margin: ($spacer / 2) 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle; // match .btn alignment given font-size hack above\n\n > .btn {\n position: relative;\n flex: 0 1 auto;\n\n // Bring the hover, focused, and \"active\" buttons to the front to overlay\n // the borders properly\n @include hover {\n z-index: 1;\n }\n &:focus,\n &:active,\n &.active {\n z-index: 1;\n }\n }\n\n // Prevent double borders when buttons are next to each other\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -$btn-border-width;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n\n .input-group {\n width: auto;\n }\n}\n\n.btn-group {\n > .btn:first-child {\n margin-left: 0;\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-right-radius(0);\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) > .btn {\n @include border-left-radius(0);\n }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n padding-right: $btn-padding-x * .75;\n padding-left: $btn-padding-x * .75;\n\n &::after {\n margin-left: 0;\n }\n}\n\n.btn-sm + .dropdown-toggle-split {\n padding-right: $btn-padding-x-sm * .75;\n padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n padding-right: $btn-padding-x-lg * .75;\n padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n @include box-shadow($btn-active-box-shadow);\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n @include box-shadow(none);\n }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n .btn,\n .btn-group {\n width: 100%;\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -$btn-border-width;\n margin-left: 0;\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-bottom-radius(0);\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) > .btn {\n @include border-top-radius(0);\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n.btn-group-toggle {\n > .btn,\n > .btn-group > .btn {\n margin-bottom: 0; // Override default `<label>` value\n\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap; // For form validation feedback\n align-items: stretch;\n width: 100%;\n\n > .form-control,\n > .custom-select,\n > .custom-file {\n position: relative; // For focus state's z-index\n flex: 1 1 auto;\n // Add width 1% and flex-basis auto to ensure that button will not wrap out\n // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.\n width: 1%;\n margin-bottom: 0;\n\n // Bring the \"active\" form control to the top of surrounding elements\n &:focus {\n z-index: 3;\n }\n\n + .form-control,\n + .custom-select,\n + .custom-file {\n margin-left: -$input-border-width;\n }\n }\n\n > .form-control,\n > .custom-select {\n &:not(:last-child) { @include border-right-radius(0); }\n &:not(:first-child) { @include border-left-radius(0); }\n }\n\n // Custom file inputs have more complex markup, thus requiring different\n // border-radius overrides.\n > .custom-file {\n display: flex;\n align-items: center;\n\n &:not(:last-child) .custom-file-label,\n &:not(:last-child) .custom-file-label::before { @include border-right-radius(0); }\n &:not(:first-child) .custom-file-label,\n &:not(:first-child) .custom-file-label::before { @include border-left-radius(0); }\n }\n}\n\n\n// Prepend and append\n//\n// While it requires one extra layer of HTML for each, dedicated prepend and\n// append elements allow us to 1) be less clever, 2) simplify our selectors, and\n// 3) support HTML5 form validation.\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n\n // Ensure buttons are always above inputs for more visually pleasing borders.\n // This isn't needed for `.input-group-text` since it shares the same border-color\n // as our inputs.\n .btn {\n position: relative;\n z-index: 2;\n }\n\n .btn + .btn,\n .btn + .input-group-text,\n .input-group-text + .input-group-text,\n .input-group-text + .btn {\n margin-left: -$input-border-width;\n }\n}\n\n.input-group-prepend { margin-right: -$input-border-width; }\n.input-group-append { margin-left: -$input-border-width; }\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: $input-padding-y $input-padding-x;\n margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\n font-size: $font-size-base; // Match inputs\n font-weight: $font-weight-normal;\n line-height: $input-line-height;\n color: $input-group-addon-color;\n text-align: center;\n white-space: nowrap;\n background-color: $input-group-addon-bg;\n border: $input-border-width solid $input-group-addon-border-color;\n @include border-radius($input-border-radius);\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n @extend .form-control-lg;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n @extend .form-control-sm;\n}\n\n\n// Prepend and append rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n @include border-right-radius(0);\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n @include border-left-radius(0);\n}\n","// Embedded icons from Open Iconic.\n// Released under MIT and copyright 2014 Waybury.\n// https://useiconic.com/open\n\n\n// Checkboxes and radios\n//\n// Base class takes care of all the key behavioral aspects.\n\n.custom-control {\n position: relative;\n display: block;\n min-height: (1rem * $line-height-base);\n padding-left: $custom-control-gutter;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: $custom-control-spacer-x;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1; // Put the input behind the label so it doesn't overlay text\n opacity: 0;\n\n &:checked ~ .custom-control-label::before {\n color: $custom-control-indicator-checked-color;\n @include gradient-bg($custom-control-indicator-checked-bg);\n @include box-shadow($custom-control-indicator-checked-box-shadow);\n }\n\n &:focus ~ .custom-control-label::before {\n // the mixin is not used here to make sure there is feedback\n box-shadow: $custom-control-indicator-focus-box-shadow;\n }\n\n &:active ~ .custom-control-label::before {\n color: $custom-control-indicator-active-color;\n background-color: $custom-control-indicator-active-bg;\n @include box-shadow($custom-control-indicator-active-box-shadow);\n }\n\n &:disabled {\n ~ .custom-control-label {\n color: $custom-control-label-disabled-color;\n\n &::before {\n background-color: $custom-control-indicator-disabled-bg;\n }\n }\n }\n}\n\n// Custom control indicators\n//\n// Build the custom controls out of psuedo-elements.\n\n.custom-control-label {\n margin-bottom: 0;\n\n // Background-color and (when enabled) gradient\n &::before {\n position: absolute;\n top: (($line-height-base - $custom-control-indicator-size) / 2);\n left: 0;\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n pointer-events: none;\n content: \"\";\n user-select: none;\n background-color: $custom-control-indicator-bg;\n @include box-shadow($custom-control-indicator-box-shadow);\n }\n\n // Foreground (icon)\n &::after {\n position: absolute;\n top: (($line-height-base - $custom-control-indicator-size) / 2);\n left: 0;\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: $custom-control-indicator-bg-size;\n }\n}\n\n\n// Checkboxes\n//\n// Tweak just a few things for checkboxes.\n\n.custom-checkbox {\n .custom-control-label::before {\n @include border-radius($custom-checkbox-indicator-border-radius);\n }\n\n .custom-control-input:checked ~ .custom-control-label {\n &::before {\n @include gradient-bg($custom-control-indicator-checked-bg);\n }\n &::after {\n background-image: $custom-checkbox-indicator-icon-checked;\n }\n }\n\n .custom-control-input:indeterminate ~ .custom-control-label {\n &::before {\n @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);\n @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\n }\n &::after {\n background-image: $custom-checkbox-indicator-icon-indeterminate;\n }\n }\n\n .custom-control-input:disabled {\n &:checked ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n &:indeterminate ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n }\n}\n\n// Radios\n//\n// Tweak just a few things for radios.\n\n.custom-radio {\n .custom-control-label::before {\n border-radius: $custom-radio-indicator-border-radius;\n }\n\n .custom-control-input:checked ~ .custom-control-label {\n &::before {\n @include gradient-bg($custom-control-indicator-checked-bg);\n }\n &::after {\n background-image: $custom-radio-indicator-icon-checked;\n }\n }\n\n .custom-control-input:disabled {\n &:checked ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n }\n}\n\n\n// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// http://primercss.io.\n//\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: $custom-select-height;\n padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;\n line-height: $custom-select-line-height;\n color: $custom-select-color;\n vertical-align: middle;\n background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;\n background-size: $custom-select-bg-size;\n border: $custom-select-border-width solid $custom-select-border-color;\n @if $enable-rounded {\n border-radius: $custom-select-border-radius;\n } @else {\n border-radius: 0;\n }\n appearance: none;\n\n &:focus {\n border-color: $custom-select-focus-border-color;\n outline: 0;\n box-shadow: $custom-select-focus-box-shadow;\n\n &::-ms-value {\n // For visual consistency with other platforms/browsers,\n // suppress the default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n }\n\n &[multiple],\n &[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: $custom-select-padding-x;\n background-image: none;\n }\n\n &:disabled {\n color: $custom-select-disabled-color;\n background-color: $custom-select-disabled-bg;\n }\n\n // Hides the default caret in IE11\n &::-ms-expand {\n opacity: 0;\n }\n}\n\n.custom-select-sm {\n height: $custom-select-height-sm;\n padding-top: $custom-select-padding-y;\n padding-bottom: $custom-select-padding-y;\n font-size: $custom-select-font-size-sm;\n}\n\n.custom-select-lg {\n height: $custom-select-height-lg;\n padding-top: $custom-select-padding-y;\n padding-bottom: $custom-select-padding-y;\n font-size: $custom-select-font-size-lg;\n}\n\n\n// File\n//\n// Custom file input.\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: $custom-file-height;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: $custom-file-height;\n margin: 0;\n opacity: 0;\n\n &:focus ~ .custom-file-control {\n border-color: $custom-file-focus-border-color;\n box-shadow: $custom-file-focus-box-shadow;\n\n &::before {\n border-color: $custom-file-focus-border-color;\n }\n }\n\n @each $lang, $value in $custom-file-text {\n &:lang(#{$lang}) ~ .custom-file-label::after {\n content: $value;\n }\n }\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: $custom-file-height;\n padding: $custom-file-padding-y $custom-file-padding-x;\n line-height: $custom-file-line-height;\n color: $custom-file-color;\n background-color: $custom-file-bg;\n border: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius($custom-file-border-radius);\n @include box-shadow($custom-file-box-shadow);\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(#{$custom-file-height} - #{$custom-file-border-width} * 2);\n padding: $custom-file-padding-y $custom-file-padding-x;\n line-height: $custom-file-line-height;\n color: $custom-file-button-color;\n content: \"Browse\";\n @include gradient-bg($custom-file-button-bg);\n border-left: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);\n }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s or `<ul>`s.\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: $nav-link-padding-y $nav-link-padding-x;\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Disabled state lightens text\n &.disabled {\n color: $nav-link-disabled-color;\n }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n .nav-item {\n margin-bottom: -$nav-tabs-border-width;\n }\n\n .nav-link {\n border: $nav-tabs-border-width solid transparent;\n @include border-top-radius($nav-tabs-border-radius);\n\n @include hover-focus {\n border-color: $nav-tabs-link-hover-border-color;\n }\n\n &.disabled {\n color: $nav-link-disabled-color;\n background-color: transparent;\n border-color: transparent;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n color: $nav-tabs-link-active-color;\n background-color: $nav-tabs-link-active-bg;\n border-color: $nav-tabs-link-active-border-color;\n }\n\n .dropdown-menu {\n // Make dropdown border overlap tab border\n margin-top: -$nav-tabs-border-width;\n // Remove the top rounded corners here since there is a hard edge above the menu\n @include border-top-radius(0);\n }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n .nav-link {\n @include border-radius($nav-pills-border-radius);\n }\n\n .nav-link.active,\n .show > .nav-link {\n color: $nav-pills-link-active-color;\n background-color: $nav-pills-link-active-bg;\n }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n .nav-item {\n flex: 1 1 auto;\n text-align: center;\n }\n}\n\n.nav-justified {\n .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Navbar divider\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap; // allow us to do the line break for collapsing content\n align-items: center;\n justify-content: space-between; // space out brand from logo\n padding: $navbar-padding-y $navbar-padding-x;\n\n // Because flex properties aren't inherited, we need to redeclare these first\n // few properities so that content nested within behave properly.\n > .container,\n > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n display: inline-block;\n padding-top: $navbar-brand-padding-y;\n padding-bottom: $navbar-brand-padding-y;\n margin-right: $navbar-padding-x;\n font-size: $navbar-brand-font-size;\n line-height: inherit;\n white-space: nowrap;\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n display: flex;\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-link {\n padding-right: 0;\n padding-left: 0;\n }\n\n .dropdown-menu {\n position: static;\n float: none;\n }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n display: inline-block;\n padding-top: $nav-link-padding-y;\n padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orienation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n // For always expanded or extra full navbars, ensure content aligns itself\n // properly vertically. Can be easily overridden with flex utilities.\n align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n font-size: $navbar-toggler-font-size;\n line-height: 1;\n background-color: transparent; // remove default button style\n border: $border-width solid transparent; // remove default button style\n @include border-radius($navbar-toggler-border-radius);\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .navbar-toggler elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n > .container,\n > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n @include media-breakpoint-up($next) {\n flex-flow: row nowrap;\n justify-content: flex-start;\n\n .navbar-nav {\n flex-direction: row;\n\n .dropdown-menu {\n position: absolute;\n }\n\n .dropdown-menu-right {\n right: 0;\n left: auto; // Reset the default from `.dropdown-menu`\n }\n\n .nav-link {\n padding-right: $navbar-nav-link-padding-x;\n padding-left: $navbar-nav-link-padding-x;\n }\n }\n\n // For nesting containers, have to redeclare for alignment purposes\n > .container,\n > .container-fluid {\n flex-wrap: nowrap;\n }\n\n .navbar-collapse {\n display: flex !important; // stylelint-disable-line declaration-no-important\n\n // Changes flex-bases to auto because of an IE10 bug\n flex-basis: auto;\n }\n\n .navbar-toggler {\n display: none;\n }\n\n .dropup {\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n }\n }\n }\n}\n\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n .navbar-brand {\n color: $navbar-light-active-color;\n\n @include hover-focus {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-light-color;\n\n @include hover-focus {\n color: $navbar-light-hover-color;\n }\n\n &.disabled {\n color: $navbar-light-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-light-color;\n border-color: $navbar-light-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-light-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-light-color;\n a {\n color: $navbar-light-active-color;\n\n @include hover-focus {\n color: $navbar-light-active-color;\n }\n }\n }\n}\n\n// White links against a dark background\n.navbar-dark {\n .navbar-brand {\n color: $navbar-dark-active-color;\n\n @include hover-focus {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-dark-color;\n\n @include hover-focus {\n color: $navbar-dark-hover-color;\n }\n\n &.disabled {\n color: $navbar-dark-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-dark-color;\n border-color: $navbar-dark-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-dark-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-dark-color;\n a {\n color: $navbar-dark-active-color;\n\n @include hover-focus {\n color: $navbar-dark-active-color;\n }\n }\n }\n}\n","//\n// Base styles\n//\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: $card-bg;\n background-clip: border-box;\n border: $card-border-width solid $card-border-color;\n @include border-radius($card-border-radius);\n\n > hr {\n margin-right: 0;\n margin-left: 0;\n }\n\n > .list-group:first-child {\n .list-group-item:first-child {\n @include border-top-radius($card-border-radius);\n }\n }\n\n > .list-group:last-child {\n .list-group-item:last-child {\n @include border-bottom-radius($card-border-radius);\n }\n }\n}\n\n.card-body {\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n // as much space as possible, ensuring footers are aligned to the bottom.\n flex: 1 1 auto;\n padding: $card-spacer-x;\n}\n\n.card-title {\n margin-bottom: $card-spacer-y;\n}\n\n.card-subtitle {\n margin-top: -($card-spacer-y / 2);\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link {\n @include hover {\n text-decoration: none;\n }\n\n + .card-link {\n margin-left: $card-spacer-x;\n }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n padding: $card-spacer-y $card-spacer-x;\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\n background-color: $card-cap-bg;\n border-bottom: $card-border-width solid $card-border-color;\n\n &:first-child {\n @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n }\n\n + .list-group {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n}\n\n.card-footer {\n padding: $card-spacer-y $card-spacer-x;\n background-color: $card-cap-bg;\n border-top: $card-border-width solid $card-border-color;\n\n &:last-child {\n @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n margin-right: -($card-spacer-x / 2);\n margin-bottom: -$card-spacer-y;\n margin-left: -($card-spacer-x / 2);\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -($card-spacer-x / 2);\n margin-left: -($card-spacer-x / 2);\n}\n\n// Card image\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: $card-img-overlay-padding;\n}\n\n.card-img {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-radius($card-inner-border-radius);\n}\n\n// Card image caps\n.card-img-top {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img-bottom {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n// Card deck\n\n.card-deck {\n display: flex;\n flex-direction: column;\n\n .card {\n margin-bottom: $card-deck-margin;\n }\n\n @include media-breakpoint-up(sm) {\n flex-flow: row wrap;\n margin-right: -$card-deck-margin;\n margin-left: -$card-deck-margin;\n\n .card {\n display: flex;\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: $card-deck-margin;\n margin-bottom: 0; // Override the default\n margin-left: $card-deck-margin;\n }\n }\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n display: flex;\n flex-direction: column;\n\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n margin-bottom: $card-group-margin;\n }\n\n @include media-breakpoint-up(sm) {\n flex-flow: row wrap;\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored\n flex: 1 0 0%;\n margin-bottom: 0;\n\n + .card {\n margin-left: 0;\n border-left: 0;\n }\n\n // Handle rounded corners\n @if $enable-rounded {\n &:first-child {\n @include border-right-radius(0);\n\n .card-img-top,\n .card-header {\n border-top-right-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n border-bottom-right-radius: 0;\n }\n }\n\n &:last-child {\n @include border-left-radius(0);\n\n .card-img-top,\n .card-header {\n border-top-left-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n border-bottom-left-radius: 0;\n }\n }\n\n &:only-child {\n @include border-radius($card-border-radius);\n\n .card-img-top,\n .card-header {\n @include border-top-radius($card-border-radius);\n }\n .card-img-bottom,\n .card-footer {\n @include border-bottom-radius($card-border-radius);\n }\n }\n\n &:not(:first-child):not(:last-child):not(:only-child) {\n @include border-radius(0);\n\n .card-img-top,\n .card-img-bottom,\n .card-header,\n .card-footer {\n @include border-radius(0);\n }\n }\n }\n }\n }\n}\n\n\n//\n// Columns\n//\n\n.card-columns {\n .card {\n margin-bottom: $card-columns-margin;\n }\n\n @include media-breakpoint-up(sm) {\n column-count: $card-columns-count;\n column-gap: $card-columns-gap;\n\n .card {\n display: inline-block; // Don't let them vertically span multiple columns\n width: 100%; // Don't let their width change\n }\n }\n}\n",".breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n margin-bottom: $breadcrumb-margin-bottom;\n list-style: none;\n background-color: $breadcrumb-bg;\n @include border-radius($border-radius);\n}\n\n.breadcrumb-item {\n // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n + .breadcrumb-item::before {\n display: inline-block; // Suppress underlining of the separator in modern browsers\n padding-right: $breadcrumb-item-padding;\n padding-left: $breadcrumb-item-padding;\n color: $breadcrumb-divider-color;\n content: \"#{$breadcrumb-divider}\";\n }\n\n // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\n // without `<ul>`s. The `::before` pseudo-element generates an element\n // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\n //\n // To trick IE into suppressing the underline, we give the pseudo-element an\n // underline and then immediately remove it.\n + .breadcrumb-item:hover::before {\n text-decoration: underline;\n }\n // stylelint-disable-next-line no-duplicate-selectors\n + .breadcrumb-item:hover::before {\n text-decoration: none;\n }\n\n &.active {\n color: $breadcrumb-active-color;\n }\n}\n",".pagination {\n display: flex;\n @include list-unstyled();\n @include border-radius();\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: $pagination-padding-y $pagination-padding-x;\n margin-left: -$pagination-border-width;\n line-height: $pagination-line-height;\n color: $pagination-color;\n background-color: $pagination-bg;\n border: $pagination-border-width solid $pagination-border-color;\n\n &:hover {\n color: $pagination-hover-color;\n text-decoration: none;\n background-color: $pagination-hover-bg;\n border-color: $pagination-hover-border-color;\n }\n\n &:focus {\n z-index: 2;\n outline: 0;\n box-shadow: $pagination-focus-box-shadow;\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .page-link elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n}\n\n.page-item {\n &:first-child {\n .page-link {\n margin-left: 0;\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n\n &.active .page-link {\n z-index: 1;\n color: $pagination-active-color;\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n color: $pagination-disabled-color;\n pointer-events: none;\n // Opinionated: remove the \"hand\" cursor set previously for .page-link\n cursor: auto;\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);\n}\n\n.pagination-sm {\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);\n}\n","// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n display: inline-block;\n padding: $badge-padding-y $badge-padding-x;\n font-size: $badge-font-size;\n font-weight: $badge-font-weight;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n @include border-radius($badge-border-radius);\n\n // Empty badges collapse automatically\n &:empty {\n display: none;\n }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n// Pill badges\n//\n// Make them extra rounded with a modifier to replace v3's badges.\n\n.badge-pill {\n padding-right: $badge-pill-padding-x;\n padding-left: $badge-pill-padding-x;\n @include border-radius($badge-pill-border-radius);\n}\n\n// Colors\n//\n// Contextual variations (linked badges get darker on :hover).\n\n@each $color, $value in $theme-colors {\n .badge-#{$color} {\n @include badge-variant($value);\n }\n}\n","@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n &[href] {\n @include hover-focus {\n color: color-yiq($bg);\n text-decoration: none;\n background-color: darken($bg, 10%);\n }\n }\n}\n",".jumbotron {\n padding: $jumbotron-padding ($jumbotron-padding / 2);\n margin-bottom: $jumbotron-padding;\n background-color: $jumbotron-bg;\n @include border-radius($border-radius-lg);\n\n @include media-breakpoint-up(sm) {\n padding: ($jumbotron-padding * 2) $jumbotron-padding;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n @include border-radius(0);\n}\n","//\n// Base styles\n//\n\n.alert {\n position: relative;\n padding: $alert-padding-y $alert-padding-x;\n margin-bottom: $alert-margin-bottom;\n border: $alert-border-width solid transparent;\n @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n // Specified to prevent conflicts of changing $headings-color\n color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n padding-right: ($close-font-size + $alert-padding-x * 2);\n\n // Adjust close link position\n .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: $alert-padding-y $alert-padding-x;\n color: inherit;\n }\n}\n\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n }\n}\n","@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n","@keyframes progress-bar-stripes {\n from { background-position: $progress-height 0; }\n to { background-position: 0 0; }\n}\n\n.progress {\n display: flex;\n height: $progress-height;\n overflow: hidden; // force rounded corners by cropping it\n font-size: $progress-font-size;\n background-color: $progress-bg;\n @include border-radius($progress-border-radius);\n @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: $progress-bar-color;\n text-align: center;\n background-color: $progress-bar-bg;\n @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: $progress-height $progress-height;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes $progress-bar-animation-timing;\n}\n",".media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n display: flex;\n flex-direction: column;\n\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 0;\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n width: 100%; // For `<button>`s (anchors become 100% by default though)\n color: $list-group-action-color;\n text-align: inherit; // For `<button>`s (anchors inherit)\n\n // Hover state\n @include hover-focus {\n color: $list-group-action-hover-color;\n text-decoration: none;\n background-color: $list-group-hover-bg;\n }\n\n &:active {\n color: $list-group-action-active-color;\n background-color: $list-group-action-active-bg;\n }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: $list-group-item-padding-y $list-group-item-padding-x;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -$list-group-border-width;\n background-color: $list-group-bg;\n border: $list-group-border-width solid $list-group-border-color;\n\n &:first-child {\n @include border-top-radius($list-group-border-radius);\n }\n\n &:last-child {\n margin-bottom: 0;\n @include border-bottom-radius($list-group-border-radius);\n }\n\n @include hover-focus {\n z-index: 1; // Place hover/active items above their siblings for proper border styling\n text-decoration: none;\n }\n\n &.disabled,\n &:disabled {\n color: $list-group-disabled-color;\n background-color: $list-group-disabled-bg;\n }\n\n // Include both here for `<a>`s and `<button>`s\n &.active {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: $list-group-active-color;\n background-color: $list-group-active-bg;\n border-color: $list-group-active-border-color;\n }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n .list-group-item {\n border-right: 0;\n border-left: 0;\n @include border-radius(0);\n }\n\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $color, $value in $theme-colors {\n @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\n}\n","// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: #fff;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",".close {\n float: right;\n font-size: $close-font-size;\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n @include hover-focus {\n color: $close-color;\n text-decoration: none;\n opacity: .75;\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .close elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n// stylelint-enable\n","// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal;\n display: none;\n overflow: hidden;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n\n .modal-open & {\n overflow-x: hidden;\n overflow-y: auto;\n }\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: $modal-dialog-margin;\n // allow clicks to pass through for custom click handling to close modal\n pointer-events: none;\n\n // When fading in the modal, animate it to slide down\n .modal.fade & {\n @include transition($modal-transition);\n transform: translate(0, -25%);\n }\n .modal.show & {\n transform: translate(0, 0);\n }\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - (#{$modal-dialog-margin} * 2));\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n // counteract the pointer-events: none; in the .modal-dialog\n pointer-events: auto;\n background-color: $modal-content-bg;\n background-clip: padding-box;\n border: $modal-content-border-width solid $modal-content-border-color;\n @include border-radius($border-radius-lg);\n @include box-shadow($modal-content-box-shadow-xs);\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal-backdrop;\n background-color: $modal-backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $modal-backdrop-opacity; }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n align-items: flex-start; // so the close btn always stays on the upper right corner\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n padding: $modal-header-padding;\n border-bottom: $modal-header-border-width solid $modal-header-border-color;\n @include border-top-radius($border-radius-lg);\n\n .close {\n padding: $modal-header-padding;\n // auto on the left force icon to the right even when there is no .modal-title\n margin: (-$modal-header-padding) (-$modal-header-padding) (-$modal-header-padding) auto;\n }\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when should there be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n padding: $modal-inner-padding;\n border-top: $modal-footer-border-width solid $modal-footer-border-color;\n\n // Easily place margin between footer elements\n > :not(:first-child) { margin-left: .25rem; }\n > :not(:last-child) { margin-right: .25rem; }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n max-width: $modal-md;\n margin: $modal-dialog-margin-y-sm-up auto;\n }\n\n .modal-dialog-centered {\n min-height: calc(100% - (#{$modal-dialog-margin-y-sm-up} * 2));\n }\n\n .modal-content {\n @include box-shadow($modal-content-box-shadow-sm-up);\n }\n\n .modal-sm { max-width: $modal-sm; }\n\n}\n\n@include media-breakpoint-up(lg) {\n .modal-lg { max-width: $modal-lg; }\n}\n","// Base class\n.tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n margin: $tooltip-margin;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $tooltip-font-size;\n // Allow breaking very long words so they don't overflow the tooltip's bounds\n word-wrap: break-word;\n opacity: 0;\n\n &.show { opacity: $tooltip-opacity; }\n\n .arrow {\n position: absolute;\n display: block;\n width: $tooltip-arrow-width;\n height: $tooltip-arrow-height;\n\n &::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-tooltip-top {\n padding: $tooltip-arrow-height 0;\n\n .arrow {\n bottom: 0;\n\n &::before {\n top: 0;\n border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n border-top-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-right {\n padding: 0 $tooltip-arrow-height;\n\n .arrow {\n left: 0;\n width: $tooltip-arrow-height;\n height: $tooltip-arrow-width;\n\n &::before {\n right: 0;\n border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n border-right-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-bottom {\n padding: $tooltip-arrow-height 0;\n\n .arrow {\n top: 0;\n\n &::before {\n bottom: 0;\n border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n border-bottom-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-left {\n padding: 0 $tooltip-arrow-height;\n\n .arrow {\n right: 0;\n width: $tooltip-arrow-height;\n height: $tooltip-arrow-width;\n\n &::before {\n left: 0;\n border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n border-left-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-tooltip-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-tooltip-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-tooltip-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-tooltip-left;\n }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: $tooltip-max-width;\n padding: $tooltip-padding-y $tooltip-padding-x;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start; // stylelint-disable-line declaration-block-no-duplicate-properties\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",".popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: $zindex-popover;\n display: block;\n max-width: $popover-max-width;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $popover-font-size;\n // Allow breaking very long words so they don't overflow the popover's bounds\n word-wrap: break-word;\n background-color: $popover-bg;\n background-clip: padding-box;\n border: $popover-border-width solid $popover-border-color;\n @include border-radius($popover-border-radius);\n @include box-shadow($popover-box-shadow);\n\n .arrow {\n position: absolute;\n display: block;\n width: $popover-arrow-width;\n height: $popover-arrow-height;\n margin: 0 $border-radius-lg;\n\n &::before,\n &::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-popover-top {\n margin-bottom: $popover-arrow-height;\n\n .arrow {\n bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n }\n\n .arrow::before,\n .arrow::after {\n border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;\n }\n\n .arrow::before {\n bottom: 0;\n border-top-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n bottom: $popover-border-width;\n border-top-color: $popover-arrow-color;\n }\n}\n\n.bs-popover-right {\n margin-left: $popover-arrow-height;\n\n .arrow {\n left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n width: $popover-arrow-height;\n height: $popover-arrow-width;\n margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n }\n\n .arrow::before,\n .arrow::after {\n border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;\n }\n\n .arrow::before {\n left: 0;\n border-right-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n left: $popover-border-width;\n border-right-color: $popover-arrow-color;\n }\n}\n\n.bs-popover-bottom {\n margin-top: $popover-arrow-height;\n\n .arrow {\n top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n }\n\n .arrow::before,\n .arrow::after {\n border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);\n }\n\n .arrow::before {\n top: 0;\n border-bottom-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n top: $popover-border-width;\n border-bottom-color: $popover-arrow-color;\n }\n\n // This will remove the popover-header's border just below the arrow\n .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: $popover-arrow-width;\n margin-left: ($popover-arrow-width / -2);\n content: \"\";\n border-bottom: $popover-border-width solid $popover-header-bg;\n }\n}\n\n.bs-popover-left {\n margin-right: $popover-arrow-height;\n\n .arrow {\n right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n width: $popover-arrow-height;\n height: $popover-arrow-width;\n margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n }\n\n .arrow::before,\n .arrow::after {\n border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;\n }\n\n .arrow::before {\n right: 0;\n border-left-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n right: $popover-border-width;\n border-left-color: $popover-arrow-color;\n }\n}\n\n.bs-popover-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-popover-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-popover-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-popover-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-popover-left;\n }\n}\n\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n padding: $popover-header-padding-y $popover-header-padding-x;\n margin-bottom: 0; // Reset the default from Reboot\n font-size: $font-size-base;\n color: $popover-header-color;\n background-color: $popover-header-bg;\n border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\n $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});\n @include border-top-radius($offset-border-width);\n\n &:empty {\n display: none;\n }\n}\n\n.popover-body {\n padding: $popover-body-padding-y $popover-body-padding-x;\n color: $popover-body-color;\n}\n","// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n @include transition($carousel-transition);\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n// CSS3 transforms when supported by the browser\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n // Use flex for alignment (1-3)\n display: flex; // 1. allow flex styles\n align-items: center; // 2. vertically center contents\n justify-content: center; // 3. horizontally center contents\n width: $carousel-control-width;\n color: $carousel-control-color;\n text-align: center;\n opacity: $carousel-control-opacity;\n // We can't have a transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Hover/focus state\n @include hover-focus {\n color: $carousel-control-color;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n }\n}\n.carousel-control-prev {\n left: 0;\n @if $enable-gradients {\n background: linear-gradient(90deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001));\n }\n}\n.carousel-control-next {\n right: 0;\n @if $enable-gradients {\n background: linear-gradient(270deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001));\n }\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: $carousel-control-icon-width;\n height: $carousel-control-icon-width;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: $carousel-control-prev-icon-bg;\n}\n.carousel-control-next-icon {\n background-image: $carousel-control-next-icon-bg;\n}\n\n\n// Optional indicator pips\n//\n// Add an ordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0; // override <ol> default\n // Use the .carousel-control's width as margin so we don't overlay those\n margin-right: $carousel-control-width;\n margin-left: $carousel-control-width;\n list-style: none;\n\n li {\n position: relative;\n flex: 0 1 auto;\n width: $carousel-indicator-width;\n height: $carousel-indicator-height;\n margin-right: $carousel-indicator-spacer;\n margin-left: $carousel-indicator-spacer;\n text-indent: -999px;\n background-color: rgba($carousel-indicator-active-bg, .5);\n\n // Use pseudo classes to increase the hit area by 10px on top and bottom.\n &::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n &::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n }\n\n .active {\n background-color: $carousel-indicator-active-bg;\n }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n position: absolute;\n right: ((100% - $carousel-caption-width) / 2);\n bottom: 20px;\n left: ((100% - $carousel-caption-width) / 2);\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: $carousel-caption-color;\n text-align: center;\n}\n","// stylelint-disable declaration-no-important\n\n.align-baseline { vertical-align: baseline !important; } // Browser default\n.align-top { vertical-align: top !important; }\n.align-middle { vertical-align: middle !important; }\n.align-bottom { vertical-align: bottom !important; }\n.align-text-bottom { vertical-align: text-bottom !important; }\n.align-text-top { vertical-align: text-top !important; }\n","// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n","// stylelint-disable declaration-no-important\n\n@each $color, $value in $theme-colors {\n @include bg-variant(\".bg-#{$color}\", $value);\n}\n\n@if $enable-gradients {\n @each $color, $value in $theme-colors {\n @include bg-gradient-variant(\".bg-gradient-#{$color}\", $value);\n }\n}\n\n.bg-white {\n background-color: $white !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Border\n//\n\n.border { border: $border-width solid $border-color !important; }\n.border-top { border-top: $border-width solid $border-color !important; }\n.border-right { border-right: $border-width solid $border-color !important; }\n.border-bottom { border-bottom: $border-width solid $border-color !important; }\n.border-left { border-left: $border-width solid $border-color !important; }\n\n.border-0 { border: 0 !important; }\n.border-top-0 { border-top: 0 !important; }\n.border-right-0 { border-right: 0 !important; }\n.border-bottom-0 { border-bottom: 0 !important; }\n.border-left-0 { border-left: 0 !important; }\n\n@each $color, $value in $theme-colors {\n .border-#{$color} {\n border-color: $value !important;\n }\n}\n\n.border-white {\n border-color: $white !important;\n}\n\n//\n// Border-radius\n//\n\n.rounded {\n border-radius: $border-radius !important;\n}\n.rounded-top {\n border-top-left-radius: $border-radius !important;\n border-top-right-radius: $border-radius !important;\n}\n.rounded-right {\n border-top-right-radius: $border-radius !important;\n border-bottom-right-radius: $border-radius !important;\n}\n.rounded-bottom {\n border-bottom-right-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n.rounded-left {\n border-top-left-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .d#{$infix}-none { display: none !important; }\n .d#{$infix}-inline { display: inline !important; }\n .d#{$infix}-inline-block { display: inline-block !important; }\n .d#{$infix}-block { display: block !important; }\n .d#{$infix}-table { display: table !important; }\n .d#{$infix}-table-row { display: table-row !important; }\n .d#{$infix}-table-cell { display: table-cell !important; }\n .d#{$infix}-flex { display: flex !important; }\n .d#{$infix}-inline-flex { display: inline-flex !important; }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n@media print {\n .d-print-none { display: none !important; }\n .d-print-inline { display: inline !important; }\n .d-print-inline-block { display: inline-block !important; }\n .d-print-block { display: block !important; }\n .d-print-table { display: table !important; }\n .d-print-table-row { display: table-row !important; }\n .d-print-table-cell { display: table-cell !important; }\n .d-print-flex { display: flex !important; }\n .d-print-inline-flex { display: inline-flex !important; }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n\n &::before {\n display: block;\n content: \"\";\n }\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n.embed-responsive-21by9 {\n &::before {\n padding-top: percentage(9 / 21);\n }\n}\n\n.embed-responsive-16by9 {\n &::before {\n padding-top: percentage(9 / 16);\n }\n}\n\n.embed-responsive-4by3 {\n &::before {\n padding-top: percentage(3 / 4);\n }\n}\n\n.embed-responsive-1by1 {\n &::before {\n padding-top: percentage(1 / 1);\n }\n}\n","// stylelint-disable declaration-no-important\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n","@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .float#{$infix}-left { @include float-left; }\n .float#{$infix}-right { @include float-right; }\n .float#{$infix}-none { @include float-none; }\n }\n}\n","// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n}\n@mixin float-right {\n float: right !important;\n}\n@mixin float-none {\n float: none !important;\n}\n","// stylelint-disable declaration-no-important\n\n// Common values\n\n// Sass list not in variables since it's not intended for customization.\n$positions: static, relative, absolute, fixed, sticky;\n\n@each $position in $positions {\n .position-#{$position} { position: $position !important; }\n}\n\n// Shorthand\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.sticky-top {\n @supports (position: sticky) {\n position: sticky;\n top: 0;\n z-index: $zindex-sticky;\n }\n}\n","//\n// Screenreaders\n//\n\n.sr-only {\n @include sr-only();\n}\n\n.sr-only-focusable {\n @include sr-only-focusable();\n}\n","// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n }\n}\n","// stylelint-disable declaration-no-important\n\n// Width and height\n\n@each $prop, $abbrev in (width: w, height: h) {\n @each $size, $length in $sizes {\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n }\n}\n\n.mw-100 { max-width: 100% !important; }\n.mh-100 { max-height: 100% !important; }\n","// stylelint-disable declaration-no-important\n\n// Margin and Padding\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @each $prop, $abbrev in (margin: m, padding: p) {\n @each $size, $length in $spacers {\n\n .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\n .#{$abbrev}t#{$infix}-#{$size},\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-top: $length !important;\n }\n .#{$abbrev}r#{$infix}-#{$size},\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-right: $length !important;\n }\n .#{$abbrev}b#{$infix}-#{$size},\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-bottom: $length !important;\n }\n .#{$abbrev}l#{$infix}-#{$size},\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-left: $length !important;\n }\n }\n }\n\n // Some special margin utils\n .m#{$infix}-auto { margin: auto !important; }\n .mt#{$infix}-auto,\n .my#{$infix}-auto {\n margin-top: auto !important;\n }\n .mr#{$infix}-auto,\n .mx#{$infix}-auto {\n margin-right: auto !important;\n }\n .mb#{$infix}-auto,\n .my#{$infix}-auto {\n margin-bottom: auto !important;\n }\n .ml#{$infix}-auto,\n .mx#{$infix}-auto {\n margin-left: auto !important;\n }\n }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Text\n//\n\n// Alignment\n\n.text-justify { text-align: justify !important; }\n.text-nowrap { white-space: nowrap !important; }\n.text-truncate { @include text-truncate; }\n\n// Responsive alignment\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .text#{$infix}-left { text-align: left !important; }\n .text#{$infix}-right { text-align: right !important; }\n .text#{$infix}-center { text-align: center !important; }\n }\n}\n\n// Transformation\n\n.text-lowercase { text-transform: lowercase !important; }\n.text-uppercase { text-transform: uppercase !important; }\n.text-capitalize { text-transform: capitalize !important; }\n\n// Weight and italics\n\n.font-weight-light { font-weight: $font-weight-light !important; }\n.font-weight-normal { font-weight: $font-weight-normal !important; }\n.font-weight-bold { font-weight: $font-weight-bold !important; }\n.font-italic { font-style: italic !important; }\n\n// Contextual colors\n\n.text-white { color: #fff !important; }\n\n@each $color, $value in $theme-colors {\n @include text-emphasis-variant(\".text-#{$color}\", $value);\n}\n\n.text-muted { color: $text-muted !important; }\n\n// Misc\n\n.text-hide {\n @include text-hide();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n a#{$parent} {\n @include hover-focus {\n color: darken($color, 10%) !important;\n }\n }\n}\n","// CSS image replacement\n@mixin text-hide() {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","//\n// Visibility utilities\n//\n\n.visible {\n @include invisible(visible);\n}\n\n.invisible {\n @include invisible(hidden);\n}\n","// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request:\n// http://www.phpied.com/delay-loading-your-print-css/\n// ==========================================================================\n\n@if $enable-print-styles {\n @media print {\n *,\n *::before,\n *::after {\n // Bootstrap specific; comment out `color` and `background`\n //color: #000 !important; // Black prints faster: http://www.sanbeiji.com/archives/953\n text-shadow: none !important;\n //background: transparent !important;\n box-shadow: none !important;\n }\n\n a {\n &:not(.btn) {\n text-decoration: underline;\n }\n }\n\n // Bootstrap specific; comment the following selector out\n //a[href]::after {\n // content: \" (\" attr(href) \")\";\n //}\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n // Bootstrap specific; comment the following selector out\n //\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n //\n\n //a[href^=\"#\"]::after,\n //a[href^=\"javascript:\"]::after {\n // content: \"\";\n //}\n\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: $border-width solid #999; // Bootstrap custom code; using `$border-width` instead of 1px\n page-break-inside: avoid;\n }\n\n //\n // Printing Tables:\n // http://css-discuss.incutio.com/wiki/Printing_Tables\n //\n\n thead {\n display: table-header-group;\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Specify a size and min-width to make printing closer across browsers.\n // We don't set margin here because it breaks `size` in Chrome. We also\n // don't use `!important` on `size` as it breaks in Chrome.\n @page {\n size: $print-page-size;\n }\n body {\n min-width: $print-body-min-width !important;\n }\n .container {\n min-width: $print-body-min-width !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .badge {\n border: $border-width solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n }\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap.min.css b/library/bootstrap/css/bootstrap.min.css
index 622b5a94d..6561b6f4c 100644
--- a/library/bootstrap/css/bootstrap.min.css
+++ b/library/bootstrap/css/bootstrap.min.css
@@ -1,7 +1,7 @@
/*!
- * Bootstrap v4.0.0-beta (https://getbootstrap.com)
- * Copyright 2011-2017 The Bootstrap Authors
- * Copyright 2011-2017 Twitter, Inc.
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{box-sizing:inherit}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#868e96}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;transition:all .2s ease-in-out;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f8f9fa;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#212529}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #e9ecef}.table thead th{vertical-align:bottom;border-bottom:2px solid #e9ecef}.table tbody+tbody{border-top:2px solid #e9ecef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #e9ecef}.table-bordered td,.table-bordered th{border:1px solid #e9ecef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#dddfe2}.table-hover .table-secondary:hover{background-color:#cfd2d6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfd2d6}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.thead-inverse th{color:#fff;background-color:#212529}.thead-default th{color:#495057;background-color:#e9ecef}.table-inverse{color:#fff;background-color:#212529}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#32383e}.table-inverse.table-bordered{border:0}.table-inverse.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-inverse.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:991px){.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;color:#495057;background-color:#fff;background-image:none;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);margin-bottom:0}.col-form-label-lg{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem - 1px * 2);padding-bottom:calc(.25rem - 1px * 2);font-size:.875rem}.col-form-legend{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;font-size:1rem}.form-control-plaintext{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.form-control-plaintext.input-group-addon,.input-group-lg>.input-group-btn>.form-control-plaintext.btn,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.form-control-plaintext.input-group-addon,.input-group-sm>.input-group-btn>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.3125rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#868e96}.form-check-label{padding-left:1.25rem;margin-bottom:0}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{display:inline-block}.form-check-inline .form-check-label{vertical-align:middle}.form-check-inline+.form-check-inline{margin-left:.75rem}.invalid-feedback{display:none;margin-top:.25rem;font-size:.875rem;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;width:250px;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.invalid-feedback,.custom-select.is-valid~.invalid-tooltip,.form-control.is-valid~.invalid-feedback,.form-control.is-valid~.invalid-tooltip,.was-validated .custom-select:valid~.invalid-feedback,.was-validated .custom-select:valid~.invalid-tooltip,.was-validated .form-control:valid~.invalid-feedback,.was-validated .form-control:valid~.invalid-tooltip{display:block}.form-check-input.is-valid+.form-check-label,.was-validated .form-check-input:valid+.form-check-label{color:#28a745}.custom-control-input.is-valid~.custom-control-indicator,.was-validated .custom-control-input:valid~.custom-control-indicator{background-color:rgba(40,167,69,.25)}.custom-control-input.is-valid~.custom-control-description,.was-validated .custom-control-input:valid~.custom-control-description{color:#28a745}.custom-file-input.is-valid~.custom-file-control,.was-validated .custom-file-input:valid~.custom-file-control{border-color:#28a745}.custom-file-input.is-valid~.custom-file-control::before,.was-validated .custom-file-input:valid~.custom-file-control::before{border-color:inherit}.custom-file-input.is-valid:focus,.was-validated .custom-file-input:valid:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid+.form-check-label,.was-validated .form-check-input:invalid+.form-check-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-indicator,.was-validated .custom-control-input:invalid~.custom-control-indicator{background-color:rgba(220,53,69,.25)}.custom-control-input.is-invalid~.custom-control-description,.was-validated .custom-control-input:invalid~.custom-control-description{color:#dc3545}.custom-file-input.is-invalid~.custom-file-control,.was-validated .custom-file-input:invalid~.custom-file-control{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-control::before,.was-validated .custom-file-input:invalid~.custom-file-control::before{border-color:inherit}.custom-file-input.is-invalid:focus,.was-validated .custom-file-input:invalid:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem .75rem;font-size:1rem;line-height:1.25;border-radius:.25rem;transition:all .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 3px rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn.active,.btn:active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 3px rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#007bff;border-color:#007bff}.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{background-color:#0069d9;background-image:none;border-color:#0062cc}.btn-secondary{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary:hover{color:#fff;background-color:#727b84;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 3px rgba(134,142,150,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#868e96;border-color:#868e96}.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{background-color:#727b84;background-image:none;border-color:#6c757d}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 3px rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#28a745;border-color:#28a745}.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{background-color:#218838;background-image:none;border-color:#1e7e34}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 3px rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#17a2b8;border-color:#17a2b8}.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{background-color:#138496;background-image:none;border-color:#117a8b}.btn-warning{color:#111;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#111;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 3px rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#ffc107;border-color:#ffc107}.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{background-color:#e0a800;background-image:none;border-color:#d39e00}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 3px rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#dc3545;border-color:#dc3545}.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{background-color:#c82333;background-image:none;border-color:#bd2130}.btn-light{color:#111;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#111;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 3px rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{background-color:#e2e6ea;background-image:none;border-color:#dae0e5}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 3px rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{background-color:#343a40;border-color:#343a40}.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{background-color:#23272b;background-image:none;border-color:#1d2124}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 3px rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary.active,.btn-outline-primary:active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-secondary{color:#868e96;background-color:transparent;background-image:none;border-color:#868e96}.btn-outline-secondary:hover{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 3px rgba(134,142,150,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#868e96;background-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary:active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 3px rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success.active,.btn-outline-success:active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 3px rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info.active,.btn-outline-info:active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#fff;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 3px rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning.active,.btn-outline-warning:active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#ffc107;border-color:#ffc107}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 3px rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger.active,.btn-outline-danger:active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 3px rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light.active,.btn-outline-light:active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 3px rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark.active,.btn-outline-dark:active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-link{font-weight:400;color:#007bff;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent;box-shadow:none}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#868e96}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;background-color:transparent}.show>a{outline:0}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#868e96;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;margin-bottom:0}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn+.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn+.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;width:100%}.input-group .form-control{position:relative;z-index:2;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#495057;text-align:center;background-color:#e9ecef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.form-control+.input-group-addon:not(:first-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:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:-ms-inline-flexbox;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-indicator{box-shadow:0 0 0 1px #fff,0 0 0 3px #007bff}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-indicator{background-color:#e9ecef}.custom-control-input:disabled~.custom-control-description{color:#868e96}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#007bff;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.25;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select:disabled{color:#868e96;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;margin-bottom:0}.custom-file-input{min-width:14rem;max-width:100%;height:2.5rem;margin:0;opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#495057;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.custom-file-control:lang(en):empty::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#495057;background-color:#e9ecef;border:1px solid rgba(0,0,0,.15);border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#868e96}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.nav-tabs .nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#ddd #ddd #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.show>.nav-pills .nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-left:15px}}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group .card{-ms-flex:1 0 0%;flex:1 0 0%}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb::after{display:block;clear:both;content:""}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#868e96;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#868e96}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#868e96;pointer-events:none;background-color:#fff;border-color:#ddd}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#868e96}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#6c757d}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#111;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#111;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#111;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#111;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#464a4e;background-color:#e7e8ea;border-color:#dddfe2}.alert-secondary hr{border-top-color:#cfd2d6}.alert-secondary .alert-link{color:#2e3133}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;overflow:hidden;font-size:.75rem;line-height:1rem;text-align:center;background-color:#e9ecef;border-radius:.25rem}.progress-bar{height:1rem;line-height:1rem;color:#fff;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{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:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#868e96;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}a.list-group-item-primary,button.list-group-item-primary{color:#004085}a.list-group-item-primary:focus,a.list-group-item-primary:hover,button.list-group-item-primary:focus,button.list-group-item-primary:hover{color:#004085;background-color:#9fcdff}a.list-group-item-primary.active,button.list-group-item-primary.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#464a4e;background-color:#dddfe2}a.list-group-item-secondary,button.list-group-item-secondary{color:#464a4e}a.list-group-item-secondary:focus,a.list-group-item-secondary:hover,button.list-group-item-secondary:focus,button.list-group-item-secondary:hover{color:#464a4e;background-color:#cfd2d6}a.list-group-item-secondary.active,button.list-group-item-secondary.active{color:#fff;background-color:#464a4e;border-color:#464a4e}.list-group-item-success{color:#155724;background-color:#c3e6cb}a.list-group-item-success,button.list-group-item-success{color:#155724}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#155724;background-color:#b1dfbb}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}a.list-group-item-info,button.list-group-item-info{color:#0c5460}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#0c5460;background-color:#abdde5}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}a.list-group-item-warning,button.list-group-item-warning{color:#856404}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#856404;background-color:#ffe8a1}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}a.list-group-item-danger,button.list-group-item-danger{color:#721c24}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#721c24;background-color:#f1b0b7}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}a.list-group-item-light,button.list-group-item-light{color:#818182}a.list-group-item-light:focus,a.list-group-item-light:hover,button.list-group-item-light:focus,button.list-group-item-light:hover{color:#818182;background-color:#ececf6}a.list-group-item-light.active,button.list-group-item-light.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}a.list-group-item-dark,button.list-group-item-dark{color:#1b1e21}a.list-group-item-dark:focus,a.list-group-item-dark:hover,button.list-group-item-dark:focus,button.list-group-item-dark:hover{color:#1b1e21;background-color:#b9bbbe}a.list-group-item-dark.active,button.list-group-item-dark.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;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}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:15px;border-bottom:1px solid #e9ecef}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:15px}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:15px;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:5px;height:5px}.tooltip.bs-tooltip-auto[x-placement^=top],.tooltip.bs-tooltip-top{padding:5px 0}.tooltip.bs-tooltip-auto[x-placement^=top] .arrow,.tooltip.bs-tooltip-top .arrow{bottom:0}.tooltip.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.bs-tooltip-top .arrow::before{margin-left:-3px;content:"";border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tooltip-auto[x-placement^=right],.tooltip.bs-tooltip-right{padding:0 5px}.tooltip.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.bs-tooltip-right .arrow{left:0}.tooltip.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.bs-tooltip-right .arrow::before{margin-top:-3px;content:"";border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tooltip-auto[x-placement^=bottom],.tooltip.bs-tooltip-bottom{padding:5px 0}.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow,.tooltip.bs-tooltip-bottom .arrow{top:0}.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.bs-tooltip-bottom .arrow::before{margin-left:-3px;content:"";border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tooltip-auto[x-placement^=left],.tooltip.bs-tooltip-left{padding:0 5px}.tooltip.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.bs-tooltip-left .arrow{right:0}.tooltip.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.bs-tooltip-left .arrow::before{right:0;margin-top:-3px;content:"";border-width:5px 0 5px 5px;border-left-color:#000}.tooltip .arrow::before{position:absolute;border-color:transparent;border-style:solid}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:10px;height:5px}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;border-color:transparent;border-style:solid}.popover .arrow::before{content:"";border-width:11px}.popover .arrow::after{content:"";border-width:11px}.popover.bs-popover-auto[x-placement^=top],.popover.bs-popover-top{margin-bottom:10px}.popover.bs-popover-auto[x-placement^=top] .arrow,.popover.bs-popover-top .arrow{bottom:0}.popover.bs-popover-auto[x-placement^=top] .arrow::after,.popover.bs-popover-auto[x-placement^=top] .arrow::before,.popover.bs-popover-top .arrow::after,.popover.bs-popover-top .arrow::before{border-bottom-width:0}.popover.bs-popover-auto[x-placement^=top] .arrow::before,.popover.bs-popover-top .arrow::before{bottom:-11px;margin-left:-6px;border-top-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=top] .arrow::after,.popover.bs-popover-top .arrow::after{bottom:-10px;margin-left:-6px;border-top-color:#fff}.popover.bs-popover-auto[x-placement^=right],.popover.bs-popover-right{margin-left:10px}.popover.bs-popover-auto[x-placement^=right] .arrow,.popover.bs-popover-right .arrow{left:0}.popover.bs-popover-auto[x-placement^=right] .arrow::after,.popover.bs-popover-auto[x-placement^=right] .arrow::before,.popover.bs-popover-right .arrow::after,.popover.bs-popover-right .arrow::before{margin-top:-8px;border-left-width:0}.popover.bs-popover-auto[x-placement^=right] .arrow::before,.popover.bs-popover-right .arrow::before{left:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=right] .arrow::after,.popover.bs-popover-right .arrow::after{left:-10px;border-right-color:#fff}.popover.bs-popover-auto[x-placement^=bottom],.popover.bs-popover-bottom{margin-top:10px}.popover.bs-popover-auto[x-placement^=bottom] .arrow,.popover.bs-popover-bottom .arrow{top:0}.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,.popover.bs-popover-bottom .arrow::after,.popover.bs-popover-bottom .arrow::before{margin-left:-7px;border-top-width:0}.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,.popover.bs-popover-bottom .arrow::before{top:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,.popover.bs-popover-bottom .arrow::after{top:-10px;border-bottom-color:#fff}.popover.bs-popover-auto[x-placement^=bottom] .popover-header::before,.popover.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-popover-auto[x-placement^=left],.popover.bs-popover-left{margin-right:10px}.popover.bs-popover-auto[x-placement^=left] .arrow,.popover.bs-popover-left .arrow{right:0}.popover.bs-popover-auto[x-placement^=left] .arrow::after,.popover.bs-popover-auto[x-placement^=left] .arrow::before,.popover.bs-popover-left .arrow::after,.popover.bs-popover-left .arrow::before{margin-top:-8px;border-right-width:0}.popover.bs-popover-auto[x-placement^=left] .arrow::before,.popover.bs-popover-left .arrow::before{right:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=left] .arrow::after,.popover.bs-popover-left .arrow::after{right:-10px;border-left-color:#fff}.popover-header{padding:8px 14px;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:9px 14px;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#868e96!important}a.bg-secondary:focus,a.bg-secondary:hover{background-color:#6c757d!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #e9ecef!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#868e96!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%}.rounded-0{border-radius:0}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.d-print-block{display:none!important}@media print{.d-print-block{display:block!important}}.d-print-inline{display:none!important}@media print{.d-print-inline{display:inline!important}}.d-print-inline-block{display:none!important}@media print{.d-print-inline-block{display:inline-block!important}}@media print{.d-print-none{display:none!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:1rem!important}.mt-3{margin-top:1rem!important}.mr-3{margin-right:1rem!important}.mb-3{margin-bottom:1rem!important}.ml-3{margin-left:1rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-4{margin:1.5rem!important}.mt-4{margin-top:1.5rem!important}.mr-4{margin-right:1.5rem!important}.mb-4{margin-bottom:1.5rem!important}.ml-4{margin-left:1.5rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-5{margin:3rem!important}.mt-5{margin-top:3rem!important}.mr-5{margin-right:3rem!important}.mb-5{margin-bottom:3rem!important}.ml-5{margin-left:3rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:1rem!important}.pt-3{padding-top:1rem!important}.pr-3{padding-right:1rem!important}.pb-3{padding-bottom:1rem!important}.pl-3{padding-left:1rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-4{padding:1.5rem!important}.pt-4{padding-top:1.5rem!important}.pr-4{padding-right:1.5rem!important}.pb-4{padding-bottom:1.5rem!important}.pl-4{padding-left:1.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-5{padding:3rem!important}.pt-5{padding-top:3rem!important}.pr-5{padding-right:3rem!important}.pb-5{padding-bottom:3rem!important}.pl-5{padding-left:3rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0{margin-top:0!important}.mr-sm-0{margin-right:0!important}.mb-sm-0{margin-bottom:0!important}.ml-sm-0{margin-left:0!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1{margin-top:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.mb-sm-1{margin-bottom:.25rem!important}.ml-sm-1{margin-left:.25rem!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2{margin-top:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.mb-sm-2{margin-bottom:.5rem!important}.ml-sm-2{margin-left:.5rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3{margin-top:1rem!important}.mr-sm-3{margin-right:1rem!important}.mb-sm-3{margin-bottom:1rem!important}.ml-sm-3{margin-left:1rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4{margin-top:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.ml-sm-4{margin-left:1.5rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5{margin-top:3rem!important}.mr-sm-5{margin-right:3rem!important}.mb-sm-5{margin-bottom:3rem!important}.ml-sm-5{margin-left:3rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0{padding-top:0!important}.pr-sm-0{padding-right:0!important}.pb-sm-0{padding-bottom:0!important}.pl-sm-0{padding-left:0!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1{padding-top:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.pb-sm-1{padding-bottom:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2{padding-top:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3{padding-top:1rem!important}.pr-sm-3{padding-right:1rem!important}.pb-sm-3{padding-bottom:1rem!important}.pl-sm-3{padding-left:1rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4{padding-top:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5{padding-top:3rem!important}.pr-sm-5{padding-right:3rem!important}.pb-sm-5{padding-bottom:3rem!important}.pl-sm-5{padding-left:3rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-auto{margin-left:auto!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0{margin-top:0!important}.mr-md-0{margin-right:0!important}.mb-md-0{margin-bottom:0!important}.ml-md-0{margin-left:0!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.m-md-1{margin:.25rem!important}.mt-md-1{margin-top:.25rem!important}.mr-md-1{margin-right:.25rem!important}.mb-md-1{margin-bottom:.25rem!important}.ml-md-1{margin-left:.25rem!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2{margin-top:.5rem!important}.mr-md-2{margin-right:.5rem!important}.mb-md-2{margin-bottom:.5rem!important}.ml-md-2{margin-left:.5rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3{margin-top:1rem!important}.mr-md-3{margin-right:1rem!important}.mb-md-3{margin-bottom:1rem!important}.ml-md-3{margin-left:1rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4{margin-top:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.mb-md-4{margin-bottom:1.5rem!important}.ml-md-4{margin-left:1.5rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5{margin-top:3rem!important}.mr-md-5{margin-right:3rem!important}.mb-md-5{margin-bottom:3rem!important}.ml-md-5{margin-left:3rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-md-0{padding:0!important}.pt-md-0{padding-top:0!important}.pr-md-0{padding-right:0!important}.pb-md-0{padding-bottom:0!important}.pl-md-0{padding-left:0!important}.px-md-0{padding-right:0!important;padding-left:0!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.p-md-1{padding:.25rem!important}.pt-md-1{padding-top:.25rem!important}.pr-md-1{padding-right:.25rem!important}.pb-md-1{padding-bottom:.25rem!important}.pl-md-1{padding-left:.25rem!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2{padding-top:.5rem!important}.pr-md-2{padding-right:.5rem!important}.pb-md-2{padding-bottom:.5rem!important}.pl-md-2{padding-left:.5rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3{padding-top:1rem!important}.pr-md-3{padding-right:1rem!important}.pb-md-3{padding-bottom:1rem!important}.pl-md-3{padding-left:1rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4{padding-top:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5{padding-top:3rem!important}.pr-md-5{padding-right:3rem!important}.pb-md-5{padding-bottom:3rem!important}.pl-md-5{padding-left:3rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto{margin-top:auto!important}.mr-md-auto{margin-right:auto!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-auto{margin-left:auto!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0{margin-top:0!important}.mr-lg-0{margin-right:0!important}.mb-lg-0{margin-bottom:0!important}.ml-lg-0{margin-left:0!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1{margin-top:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.mb-lg-1{margin-bottom:.25rem!important}.ml-lg-1{margin-left:.25rem!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2{margin-top:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.mb-lg-2{margin-bottom:.5rem!important}.ml-lg-2{margin-left:.5rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3{margin-top:1rem!important}.mr-lg-3{margin-right:1rem!important}.mb-lg-3{margin-bottom:1rem!important}.ml-lg-3{margin-left:1rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4{margin-top:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.ml-lg-4{margin-left:1.5rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5{margin-top:3rem!important}.mr-lg-5{margin-right:3rem!important}.mb-lg-5{margin-bottom:3rem!important}.ml-lg-5{margin-left:3rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0{padding-top:0!important}.pr-lg-0{padding-right:0!important}.pb-lg-0{padding-bottom:0!important}.pl-lg-0{padding-left:0!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1{padding-top:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.pb-lg-1{padding-bottom:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2{padding-top:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3{padding-top:1rem!important}.pr-lg-3{padding-right:1rem!important}.pb-lg-3{padding-bottom:1rem!important}.pl-lg-3{padding-left:1rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4{padding-top:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5{padding-top:3rem!important}.pr-lg-5{padding-right:3rem!important}.pb-lg-5{padding-bottom:3rem!important}.pl-lg-5{padding-left:3rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-auto{margin-left:auto!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0{margin-top:0!important}.mr-xl-0{margin-right:0!important}.mb-xl-0{margin-bottom:0!important}.ml-xl-0{margin-left:0!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1{margin-top:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.mb-xl-1{margin-bottom:.25rem!important}.ml-xl-1{margin-left:.25rem!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2{margin-top:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.mb-xl-2{margin-bottom:.5rem!important}.ml-xl-2{margin-left:.5rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3{margin-top:1rem!important}.mr-xl-3{margin-right:1rem!important}.mb-xl-3{margin-bottom:1rem!important}.ml-xl-3{margin-left:1rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4{margin-top:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.ml-xl-4{margin-left:1.5rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5{margin-top:3rem!important}.mr-xl-5{margin-right:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.ml-xl-5{margin-left:3rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0{padding-top:0!important}.pr-xl-0{padding-right:0!important}.pb-xl-0{padding-bottom:0!important}.pl-xl-0{padding-left:0!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1{padding-top:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.pb-xl-1{padding-bottom:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2{padding-top:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3{padding-top:1rem!important}.pr-xl-3{padding-right:1rem!important}.pb-xl-3{padding-bottom:1rem!important}.pl-xl-3{padding-left:1rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4{padding-top:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5{padding-top:3rem!important}.pr-xl-5{padding-right:3rem!important}.pb-xl-5{padding-bottom:3rem!important}.pl-xl-5{padding-left:3rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-auto{margin-left:auto!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#868e96!important}a.text-secondary:focus,a.text-secondary:hover{color:#6c757d!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#868e96!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{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:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;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}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}
/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap.min.css.map b/library/bootstrap/css/bootstrap.min.css.map
index 24aa4f0c2..ee5c523cd 100644
--- a/library/bootstrap/css/bootstrap.min.css.map
+++ b/library/bootstrap/css/bootstrap.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_print.scss","dist/css/bootstrap.css","../../scss/_reboot.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/mixins/_transition.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_functions.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"AAAA;;;;;ACWE,aACE,ECHF,QADA,SDUI,YAAA,eAEA,WAAA,eAGF,ECTF,UDWI,gBAAA,UAQF,mBACE,QAAA,KAAA,YAAA,IAcF,IACE,YAAA,mBCzBJ,WD2BE,IAEE,OAAA,IAAA,MAAA,KACA,kBAAA,MAQF,MACE,QAAA,mBC/BJ,IDkCE,GAEE,kBAAA,MChCJ,GACA,GDkCE,EAGE,QAAA,EACA,OAAA,EAGF,GCpCF,GDsCI,iBAAA,MAMF,QACE,QAAA,KAEF,OACE,OAAA,IAAA,MAAA,KAGF,OACE,gBAAA,mBADF,UCtCF,UD2CM,iBAAA,eCvCN,mBD0CE,mBAGI,OAAA,IAAA,MAAA,gBEpFR,KACE,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ED8CA,QADA,SC1CE,WAAA,QAKA,cAAgB,MAAA,aAIlB,QAAA,MAAA,OAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAQF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KCwCF,sBD/BE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KDiBF,0BCPA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QDYF,GCTA,GDQA,GCLE,WAAA,EACA,cAAA,KAGF,MDSA,MACA,MAFA,MCJE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,EDQA,OCNE,YAAA,OAGF,MACE,UAAA,IAQF,IDGA,ICDE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QEpLE,QFuLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KEzLE,oCAAA,oCF4LA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EDCJ,KACA,ICOA,IDNA,KCUE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,ODjBF,cC+BA,EDjCA,KACA,OAEA,MACA,MACA,OACA,QACA,SCmCE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBD7CF,OCgDA,MD9CA,SADA,OAEA,SCkDE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,ODhDA,MCkDE,SAAA,QAGF,ODhDA,OCkDE,eAAA,KD5CF,aACA,cCiDA,ODnDA,mBCuDE,mBAAA,ODhDF,gCACA,+BACA,gCCkDA,yBAIE,QAAA,EACA,aAAA,KDjDF,qBCoDA,kBAEE,WAAA,WACA,QAAA,EAIF,iBDpDA,2BACA,kBAFA,iBC8DE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SCnEF,yCFGA,yCCsEE,OAAA,KCpEF,cD4EE,eAAA,KACA,mBAAA,KCxEF,4CFGA,yCC8EE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KCrFF,SD2FE,QAAA,eDpFF,IAAK,IAAK,IAAK,IAAK,IAAK,IIvYzB,GAAA,GAAA,GAAA,GAAA,GAAA,GAEE,cAAA,MACA,YAAA,QACA,YAAA,IACA,YAAA,IACA,MAAA,QAGF,IAAA,GAAU,UAAA,OACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,QACV,IAAA,GAAU,UAAA,OACV,IAAA,GAAU,UAAA,QACV,IAAA,GAAU,UAAA,KAEV,MACE,UAAA,QACA,YAAA,IAIF,WACE,UAAA,KACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAQF,GACE,WAAA,KACA,cAAA,KACA,OAAA,EACA,WAAA,IAAA,MAAA,eJwZF,OIhZA,MAEE,UAAA,IACA,YAAA,IJmZF,MIhZA,KAEE,QAAA,KACA,iBAAA,QAQF,eC7EE,aAAA,EACA,WAAA,KDiFF,aClFE,aAAA,EACA,WAAA,KDoFF,kBACE,QAAA,aADF,mCAII,aAAA,IAUJ,YACE,UAAA,IACA,eAAA,UAIF,YACE,cAAA,KACA,UAAA,QAGF,mBACE,QAAA,MACA,UAAA,IACA,MAAA,QAHF,2BAMI,QAAA,cEjHJ,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,KEZE,cAAA,OCCE,WAAA,IAAA,IAAA,YFMJ,UAAA,KAGA,OAAA,KDeF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBACE,UAAA,IACA,MAAA,QIxCF,KV8hBA,IACA,IACA,KU5hBE,YAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UAIF,KACE,QAAA,MAAA,MACA,UAAA,IACA,MAAA,QACA,iBAAA,QFTE,cAAA,OEaF,OACE,QAAA,EACA,MAAA,QACA,iBAAA,QAKJ,IACE,QAAA,MAAA,MACA,UAAA,IACA,MAAA,KACA,iBAAA,QFzBE,cAAA,MEqBJ,QASI,QAAA,EACA,UAAA,KACA,YAAA,IAMJ,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,UAAA,IACA,MAAA,QALF,SASI,QAAA,EACA,UAAA,QACA,MAAA,QACA,iBAAA,YACA,cAAA,EAKJ,gBACE,WAAA,MACA,WAAA,OCzDA,WCAA,aAAA,KACA,YAAA,KACA,cAAA,KACA,aAAA,KACA,MAAA,KC+CE,yBFnDF,WCYI,UAAA,OCuCF,yBFnDF,WCYI,UAAA,OCuCF,yBFnDF,WCYI,UAAA,OCuCF,0BFnDF,WCYI,UAAA,QDAJ,iBACE,MAAA,KCbF,aAAA,KACA,YAAA,KACA,cAAA,KACA,aAAA,KACA,MAAA,KDmBA,KCLA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,MACA,YAAA,MDQA,YACE,aAAA,EACA,YAAA,EAFF,iBX4mBF,0BWtmBM,cAAA,EACA,aAAA,EGlCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,Od6oBF,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,achpBI,SAAA,SACA,MAAA,KACA,WAAA,IACA,cAAA,KACA,aAAA,KAmBE,KACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,OFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,QFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,SACE,eAAA,EAAA,MAAA,EADF,UACE,eAAA,GAAA,MAAA,GADF,UACE,eAAA,GAAA,MAAA,GADF,UACE,eAAA,GAAA,MAAA,GDMN,yBCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IDMN,yBCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IDMN,yBCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IDMN,0BCzBE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEIM,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,YACE,eAAA,EAAA,MAAA,EADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,GADF,aACE,eAAA,GAAA,MAAA,IC9CV,OACE,MAAA,KACA,UAAA,KACA,cAAA,KACA,iBAAA,YfmyCF,UevyCA,UAQI,QAAA,OACA,eAAA,IACA,WAAA,IAAA,MAAA,QAVJ,gBAcI,eAAA,OACA,cAAA,IAAA,MAAA,QAfJ,mBAmBI,WAAA,IAAA,MAAA,QAnBJ,cAuBI,iBAAA,KfoyCJ,ae3xCA,aAGI,QAAA,MASJ,gBACE,OAAA,IAAA,MAAA,QfuxCF,mBexxCA,mBAKI,OAAA,IAAA,MAAA,QfwxCJ,yBe7xCA,yBAWM,oBAAA,IAUN,yCAEI,iBAAA,gBASJ,4BAGM,iBAAA,iBC9EJ,ehBs1CF,kBADA,kBgBj1CM,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qChBq1CF,qCgB50CU,iBAAA,QAnBR,iBhBq2CF,oBADA,oBgBh2CM,iBAAA,QAMJ,oCAKM,iBAAA,QALN,uChBo2CF,uCgB31CU,iBAAA,QAnBR,ehBo3CF,kBADA,kBgB/2CM,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qChBm3CF,qCgB12CU,iBAAA,QAnBR,YhBm4CF,eADA,egB93CM,iBAAA,QAMJ,+BAKM,iBAAA,QALN,kChBk4CF,kCgBz3CU,iBAAA,QAnBR,ehBk5CF,kBADA,kBgB74CM,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qChBi5CF,qCgBx4CU,iBAAA,QAnBR,chBi6CF,iBADA,iBgB55CM,iBAAA,QAMJ,iCAKM,iBAAA,QALN,oChBg6CF,oCgBv5CU,iBAAA,QAnBR,ahBg7CF,gBADA,gBgB36CM,iBAAA,QAMJ,gCAKM,iBAAA,QALN,mChB+6CF,mCgBt6CU,iBAAA,QAnBR,YhB+7CF,eADA,egB17CM,iBAAA,QAMJ,+BAKM,iBAAA,QALN,kChB87CF,kCgBr7CU,iBAAA,QAnBR,chB88CF,iBADA,iBgBz8CM,iBAAA,iBAMJ,iCAKM,iBAAA,iBALN,oChB68CF,oCgBp8CU,iBAAA,iBDiFV,kBAEI,MAAA,KACA,iBAAA,QAIJ,kBAEI,MAAA,QACA,iBAAA,QAIJ,eACE,MAAA,KACA,iBAAA,Qfu3CF,kBez3CA,kBf03CA,wBen3CI,aAAA,QAPJ,8BAWI,OAAA,EAXJ,uDAgBM,iBAAA,sBAhBN,0CAuBQ,iBAAA,uBFzEJ,yBEsFJ,kBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,mBAAA,yBALJ,iCASM,OAAA,GE9JN,cACE,QAAA,MACA,MAAA,KAGA,QAAA,MAAA,OACA,UAAA,KACA,YAAA,KACA,MAAA,QACA,iBAAA,KAEA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gBAKE,cAAA,ORnBE,WAAA,aAAA,YAAA,IAAA,CAAA,WAAA,YAAA,KQCN,0BA6BI,iBAAA,YACA,OAAA,ECvBF,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,EDXJ,yCAsCI,MAAA,QAEA,QAAA,EAxCJ,oCAsCI,MAAA,QAEA,QAAA,EAxCJ,2BAsCI,MAAA,QAEA,QAAA,EAxCJ,uBAAA,wBAkDI,iBAAA,QAEA,QAAA,EAIJ,gDAEI,OAAA,oBAFJ,qCAWI,MAAA,QACA,iBAAA,KAKJ,mBjBu/CA,oBiBr/CE,QAAA,MAUF,gBACE,YAAA,sBACA,eAAA,sBACA,cAAA,EAGF,mBACE,YAAA,sBACA,eAAA,sBACA,UAAA,QAGF,mBACE,YAAA,uBACA,eAAA,uBACA,UAAA,QAUF,iBACE,YAAA,MACA,eAAA,MACA,cAAA,EACA,UAAA,KASF,wBACE,YAAA,MACA,eAAA,MACA,cAAA,EACA,YAAA,KACA,OAAA,MAAA,YACA,aAAA,IAAA,EjBu+CgE,wCiB7+ClE,wCjB6+C2G,qDAC3G,0DACA,6DiB/+CA,qDjB4+CA,0DACA,6DiBn+CI,cAAA,EACA,aAAA,EAaJ,iBAAA,8BjB69CA,mCACA,sCiB79CE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,ITxJE,cAAA,MR4nDJ,wEiBh+CA,gEjB+9CA,qEiB/9CA,mDAEI,OAAA,sBAIJ,iBAAA,8BjB+9CA,mCACA,sCiB/9CE,QAAA,MAAA,KACA,UAAA,QACA,YAAA,ITrKE,cAAA,MR2oDJ,wEiBl+CA,gEjBi+CA,qEiBj+CA,mDAEI,OAAA,sBAUJ,YACE,cAAA,KAGF,WACE,QAAA,MACA,WAAA,OAQF,UACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,KACA,YAAA,KAJF,ejB+9CA,wBiBv9CI,cAAA,IACA,aAAA,IASJ,YACE,SAAA,SACA,QAAA,MACA,cAAA,MAHF,uCAOM,MAAA,QAKN,kBACE,aAAA,QACA,cAAA,EAGF,kBACE,SAAA,SACA,WAAA,OACA,YAAA,SAHF,6BAMI,SAAA,OAKJ,mBACE,QAAA,aADF,qCAII,eAAA,OAJJ,sCAQI,YAAA,OAYJ,kBACE,QAAA,KACA,WAAA,OACA,UAAA,QACA,MAAA,QAGF,iBACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,MAAA,MACA,QAAA,MACA,WAAA,MACA,UAAA,QACA,YAAA,EACA,MAAA,KACA,iBAAA,mBACA,cAAA,MjB48CF,wBkB7sDI,uBAAA,oCAAA,mCAEE,aAAA,QlBitDN,8BkBntDI,6BAAA,0CAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,MAAA,oBlBwtDR,0CACA,yCANuD,yCACvD,wCAA2C,sDAE3C,qDkB3tDI,qDlBwtDJ,oDkB9sDQ,QAAA,MAQJ,6CAAA,yDAGI,MAAA,QAOJ,yDAAA,qEAGI,iBAAA,oBAHJ,2DAAA,uEAMI,MAAA,QAOJ,iDAAA,6DAGI,aAAA,QAHJ,yDAAA,qEAKgB,aAAA,QALhB,kCAAA,8CAQI,WAAA,EAAA,EAAA,EAAA,MAAA,oBlB2sDR,0BkB5vDI,yBAAA,sCAAA,qCAEE,aAAA,QlBgwDN,gCkBlwDI,+BAAA,4CAAA,2CAKI,WAAA,EAAA,EAAA,EAAA,MAAA,oBlBuwDR,4CACA,2CANyD,2CACzD,0CAA6C,wDAE7C,uDkB1wDI,uDlBuwDJ,sDkB7vDQ,QAAA,MAQJ,+CAAA,2DAGI,MAAA,QAOJ,2DAAA,uEAGI,iBAAA,oBAHJ,6DAAA,yEAMI,MAAA,QAOJ,mDAAA,+DAGI,aAAA,QAHJ,2DAAA,uEAKgB,aAAA,QALhB,oCAAA,gDAQI,WAAA,EAAA,EAAA,EAAA,MAAA,oBD+NR,aACE,QAAA,YAAA,QAAA,KACA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,eAAA,OAAA,YAAA,OAHF,yBASI,MAAA,KJ5PA,yBImPJ,mBAeM,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,cAAA,EAlBN,yBAuBM,QAAA,YAAA,QAAA,KACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,EA3BN,2BAgCM,QAAA,aACA,MAAA,KACA,eAAA,OAlCN,qCAuCM,QAAA,aAvCN,0BA2CM,MAAA,KA3CN,iCA+CM,cAAA,EACA,eAAA,OAhDN,yBAsDM,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,MAAA,KACA,WAAA,EACA,cAAA,EA3DN,+BA8DM,aAAA,EA9DN,+BAiEM,SAAA,SACA,WAAA,EACA,aAAA,OACA,YAAA,EApEN,6BAyEM,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,aAAA,EA5EN,uCA+EM,SAAA,OACA,QAAA,aACA,aAAA,OACA,eAAA,YAlFN,kDAuFM,IAAA,GE5XN,KACE,QAAA,aACA,YAAA,IACA,WAAA,OACA,YAAA,OACA,eAAA,OACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,OAAA,IAAA,MAAA,YCiEA,QAAA,MAAA,OACA,UAAA,KACA,YAAA,KZ5EE,cAAA,OCCE,WAAA,IAAA,KAAA,YNiBF,WAAA,WgBHA,gBAAA,KAbJ,WAAA,WAiBI,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,IAAA,oBAlBJ,cAAA,cAwBI,QAAA,IAxBJ,YAAA,YA8BI,iBAAA,KAMJ,enBu5DA,yBmBr5DE,eAAA,KASA,aEQE,MAAA,KDtDF,iBAAA,QACA,aAAA,QAGA,mBCkDE,MAAA,KDhDA,iBAAA,QACA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,sBAAA,sBAEE,iBAAA,QACA,aAAA,QAGF,oBAAA,oBpBy7DF,mCoBt7DI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,eEQE,MAAA,KDtDF,iBAAA,QACA,aAAA,QAGA,qBCkDE,MAAA,KDhDA,iBAAA,QACA,aAAA,QAGF,qBAAA,qBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,qBAKJ,wBAAA,wBAEE,iBAAA,QACA,aAAA,QAGF,sBAAA,sBpBq9DF,qCoBl9DI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,aEQE,MAAA,KDtDF,iBAAA,QACA,aAAA,QAGA,mBCkDE,MAAA,KDhDA,iBAAA,QACA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,sBAAA,sBAEE,iBAAA,QACA,aAAA,QAGF,oBAAA,oBpBi/DF,mCoB9+DI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,UEQE,MAAA,KDtDF,iBAAA,QACA,aAAA,QAGA,gBCkDE,MAAA,KDhDA,iBAAA,QACA,aAAA,QAGF,gBAAA,gBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,oBAKJ,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAGF,iBAAA,iBpB6gEF,gCoB1gEI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,aEME,MAAA,KDpDF,iBAAA,QACA,aAAA,QAGA,mBCgDE,MAAA,KD9CA,iBAAA,QACA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,sBAAA,sBAEE,iBAAA,QACA,aAAA,QAGF,oBAAA,oBpByiEF,mCoBtiEI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,YEQE,MAAA,KDtDF,iBAAA,QACA,aAAA,QAGA,kBCkDE,MAAA,KDhDA,iBAAA,QACA,aAAA,QAGF,kBAAA,kBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,qBAAA,qBAEE,iBAAA,QACA,aAAA,QAGF,mBAAA,mBpBqkEF,kCoBlkEI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,WEME,MAAA,KDpDF,iBAAA,QACA,aAAA,QAGA,iBCgDE,MAAA,KD9CA,iBAAA,QACA,aAAA,QAGF,iBAAA,iBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,qBAKJ,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAGF,kBAAA,kBpBimEF,iCoB9lEI,iBAAA,QACA,iBAAA,KACA,aAAA,QDcF,UEQE,MAAA,KDtDF,iBAAA,QACA,aAAA,QAGA,gBCkDE,MAAA,KDhDA,iBAAA,QACA,aAAA,QAGF,gBAAA,gBAMI,WAAA,EAAA,EAAA,EAAA,IAAA,kBAKJ,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAGF,iBAAA,iBpB6nEF,gCoB1nEI,iBAAA,QACA,iBAAA,KACA,aAAA,QDoBF,qBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,2BiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,4BAAA,4BpBynEF,2CoBtnEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,uBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,6BiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,6BAAA,6BAEE,WAAA,EAAA,EAAA,EAAA,IAAA,qBAGF,gCAAA,gCAEE,MAAA,QACA,iBAAA,YAGF,8BAAA,8BpBspEF,6CoBnpEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,qBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,2BiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,4BAAA,4BpBmrEF,2CoBhrEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,kBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,wBiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,IAAA,oBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,yBAAA,yBpBgtEF,wCoB7sEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,qBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,2BiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,4BAAA,4BpB6uEF,2CoB1uEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,oBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,0BiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,0BAAA,0BAEE,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,6BAAA,6BAEE,MAAA,QACA,iBAAA,YAGF,2BAAA,2BpB0wEF,0CoBvwEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,mBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,yBiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,yBAAA,yBAEE,WAAA,EAAA,EAAA,EAAA,IAAA,qBAGF,4BAAA,4BAEE,MAAA,QACA,iBAAA,YAGF,0BAAA,0BpBuyEF,yCoBpyEI,MAAA,KACA,iBAAA,QACA,aAAA,QDbF,kBCdA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QjBrCE,wBiBwCA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,IAAA,kBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,yBAAA,yBpBo0EF,wCoBj0EI,MAAA,KACA,iBAAA,QACA,aAAA,QDFJ,UACE,YAAA,IACA,MAAA,QACA,cAAA,EAHF,UAAA,iBAAA,iBAAA,mBASI,iBAAA,YATJ,UAAA,iBAAA,gBAeI,aAAA,YACA,WAAA,KhB3EA,gBgB8EA,aAAA,YhBnEA,gBAAA,gBgBsEA,MAAA,QACA,gBAAA,UACA,iBAAA,YAxBJ,mBA2BI,MAAA,QhB3EA,yBAAA,yBgB8EE,gBAAA,KAUN,mBAAA,QChCE,QAAA,MAAA,KACA,UAAA,QACA,YAAA,IZ5EE,cAAA,MW8GJ,mBAAA,QCpCE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IZ5EE,cAAA,MWuHJ,WACE,QAAA,MACA,MAAA,KAIF,sBACE,WAAA,MnBq0EF,6BADA,4BmBh0EA,6BAII,MAAA,KG1IJ,MACE,QAAA,EbII,WAAA,QAAA,KAAA,OaLN,WAKI,QAAA,EAIJ,UACE,QAAA,KADF,eAGI,QAAA,MAIJ,iBAEI,QAAA,UAIJ,oBAEI,QAAA,gBAIJ,YACE,SAAA,SACA,OAAA,EACA,SAAA,Ob1BI,WAAA,OAAA,KAAA,KTu+EN,UuB3+EA,QAEE,SAAA,SAGF,wBAGI,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GACA,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,YAAA,KAAA,MAAA,YAXJ,8BAeI,YAAA,EAMJ,uBAEI,WAAA,EACA,cAAA,QAHJ,gCAQM,WAAA,EACA,cAAA,KAAA,MAMN,eACE,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,QAAA,EAAA,EACA,UAAA,KACA,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gBftDE,cAAA,Oe4DJ,kBC3DE,OAAA,EACA,OAAA,MAAA,EACA,SAAA,OACA,WAAA,IAAA,MAAA,QD+DF,eACE,QAAA,MACA,MAAA,KACA,QAAA,OAAA,OACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,YAAA,OACA,WAAA,IACA,OAAA,EpB3DE,qBAAA,qBoB8DA,MAAA,QACA,gBAAA,KACA,iBAAA,QAfJ,sBAAA,sBAoBI,MAAA,KACA,gBAAA,KACA,iBAAA,QAtBJ,wBAAA,wBA2BI,MAAA,QACA,iBAAA,YASJ,QAGI,QAAA,EAIJ,oBACE,QAAA,MAIF,iBACE,QAAA,MACA,QAAA,MAAA,OACA,cAAA,EACA,UAAA,QACA,MAAA,QACA,YAAA,OE3HF,WzBklFA,oByBhlFE,SAAA,SACA,QAAA,mBAAA,QAAA,YACA,eAAA,OzBslFF,yByB1lFA,gBAOI,SAAA,SACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,cAAA,EzBylFJ,+ByBlmFA,sBAcM,QAAA,EzB2lFN,gCADA,gCADA,+ByBvmFA,uBAAA,uBAAA,sBAmBM,QAAA,EAnBN,qBzB8mFA,2BACA,2BACA,iCACA,8BACA,oCACA,oCACA,0CyBxlFI,YAAA,KAKJ,aACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,cAAA,MAAA,gBAAA,WAHF,0BAMI,MAAA,KAIJ,yEACE,cAAA,EAIF,4BACE,YAAA,EADF,mEjBlCI,wBAAA,EACA,2BAAA,EiByCJ,6CzB2lFA,8CQvnFI,uBAAA,EACA,0BAAA,EiBiCJ,sBACE,MAAA,KAEF,8DACE,cAAA,EAEF,mEzB6lFA,oEQnpFI,wBAAA,EACA,2BAAA,EiB2DJ,oEjB9CI,uBAAA,EACA,0BAAA,EiB8DJ,4BACE,cAAA,SACA,aAAA,SAFF,mCAKI,YAAA,EAIJ,0CAAA,+BACE,cAAA,QACA,aAAA,QAGF,0CAAA,+BACE,cAAA,OACA,aAAA,OAoBF,oBACE,QAAA,mBAAA,QAAA,YACA,mBAAA,OAAA,eAAA,OACA,eAAA,MAAA,YAAA,WACA,cAAA,OAAA,gBAAA,OAJF,yBzB2kFA,+ByBnkFI,MAAA,KARJ,8BzBglFA,oCACA,oCACA,0CyBnkFI,WAAA,KACA,YAAA,EAIJ,4DAEI,cAAA,EAFJ,sDjB9HI,2BAAA,EACA,0BAAA,EiB6HJ,sDjB5II,uBAAA,EACA,wBAAA,EiBsJJ,uEACE,cAAA,EAEF,4EzBwkFA,6EQptFI,2BAAA,EACA,0BAAA,EiBiJJ,6EjBhKI,uBAAA,EACA,wBAAA,ER4uFJ,gDEpLA,6CFsLA,2DADA,wDyBxjFM,SAAA,SACA,KAAA,cACA,eAAA,KC9LN,aACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,MAAA,KAHF,2BAQI,SAAA,SACA,QAAA,EACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAGA,MAAA,GACA,cAAA,EAdJ,kCAAA,iCAAA,iCAkBM,QAAA,E1B+vFN,2B0B1vFA,mB1ByvFA,iB0BrvFE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,O1B8vFF,8D0BnwFA,sD1BkwFA,oDQzxFI,cAAA,EkBmCJ,mB1B4vFA,iB0B1vFE,YAAA,OACA,eAAA,OAyBF,mBACE,QAAA,MAAA,OACA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,KACA,MAAA,QACA,WAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,gBlBxEE,cAAA,OkB+DJ,mC1BmvFA,mCACA,wD0BtuFI,QAAA,OAAA,MACA,UAAA,QlB9EA,cAAA,MkB+DJ,mC1B2vFA,mCACA,wD0BxuFI,QAAA,MAAA,KACA,UAAA,QlBpFA,cAAA,MRk0FJ,wC0BnwFA,qCA6BI,WAAA,EAUJ,4C1BiuFA,oCAKA,oEADA,+EAHA,uCACA,kDACA,mDQ7zFI,wBAAA,EACA,2BAAA,EkBiGJ,oCACE,aAAA,EAEF,6C1BouFA,qCACA,wCACA,mDACA,oDAEA,oEADA,yDQ/zFI,uBAAA,EACA,0BAAA,EkB+FJ,mDACE,YAAA,EAOF,iBACE,SAAA,SAGA,UAAA,EACA,YAAA,OALF,sBAUI,SAAA,SAVJ,2BAaM,YAAA,KAbN,6BAAA,4BAAA,4BAkBM,QAAA,EAlBN,uC1BovFA,6C0B1tFM,aAAA,KA1BN,wC1ByvFA,8C0BztFM,QAAA,EACA,YAAA,K1B+tFN,qDADA,oDAEA,oD0BjwFA,+CAAA,8CAAA,8CAoCQ,QAAA,EChKR,gBACE,SAAA,SACA,QAAA,mBAAA,QAAA,YACA,WAAA,OACA,aAAA,OACA,aAAA,KAGF,sBACE,SAAA,SACA,QAAA,GACA,QAAA,EAHF,wDAMI,MAAA,KACA,iBAAA,QAPJ,sDAaI,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,QAbJ,uDAiBI,MAAA,KACA,iBAAA,QAlBJ,yDAwBM,iBAAA,QAxBN,2DA4BM,MAAA,QASN,0BACE,SAAA,SACA,IAAA,OACA,KAAA,EACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,KACA,kBAAA,UACA,oBAAA,OAAA,OACA,gBAAA,IAAA,IAQF,2CnBxEI,cAAA,OmBwEJ,yEAMI,iBAAA,yMANJ,+EAUI,iBAAA,QACA,iBAAA,sJASJ,wCAEI,cAAA,IAFJ,sEAMI,iBAAA,mJAUJ,yBACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OAFF,yCAKI,cAAA,OALJ,yDAQM,YAAA,EAYN,eACE,QAAA,aACA,UAAA,KACA,OAAA,oBACA,QAAA,QAAA,QAAA,QAAA,OACA,YAAA,KACA,MAAA,QACA,eAAA,OACA,WAAA,KAAA,oKAAA,UAAA,MAAA,OAAA,OACA,gBAAA,IAAA,KACA,OAAA,IAAA,MAAA,gBAEE,cAAA,OAIF,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAhBF,qBAmBI,aAAA,QACA,QAAA,EApBJ,gCA6BM,MAAA,QACA,iBAAA,KA9BN,wBAmCI,MAAA,QACA,iBAAA,QApCJ,2BAyCI,QAAA,EAIJ,kBACE,OAAA,sBACA,YAAA,QACA,eAAA,QACA,UAAA,IAQF,aACE,SAAA,SACA,QAAA,aACA,UAAA,KACA,OAAA,OACA,cAAA,EAGF,mBACE,UAAA,MACA,UAAA,KACA,OAAA,OACA,OAAA,EACA,QAAA,EAOF,qBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,EACA,OAAA,OACA,QAAA,MAAA,KACA,YAAA,IACA,MAAA,QACA,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,gBnB1NE,cAAA,OmB6MJ,2CAmBM,QAAA,iBAnBN,6BAwBI,SAAA,SACA,IAAA,KACA,MAAA,KACA,OAAA,KACA,QAAA,EACA,QAAA,MACA,OAAA,OACA,QAAA,MAAA,KACA,YAAA,IACA,MAAA,QACA,iBAAA,QACA,OAAA,IAAA,MAAA,gBnBhPA,cAAA,EAAA,OAAA,OAAA,EmB6MJ,sCAyCM,QAAA,SCrPN,KACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,MAAA,KzBOE,gBAAA,gByBJA,gBAAA,KALJ,mBAUI,MAAA,QAQJ,UACE,cAAA,IAAA,MAAA,KADF,oBAII,cAAA,KAJJ,oBAQI,OAAA,IAAA,MAAA,YpB7BA,uBAAA,OACA,wBAAA,OoBoBJ,0BAAA,0BAYM,aAAA,QAAA,QAAA,KAZN,6BAgBM,MAAA,QACA,iBAAA,YACA,aAAA,Y5B6kGN,mC4B/lGA,2BAwBI,MAAA,QACA,iBAAA,KACA,aAAA,KAAA,KAAA,KA1BJ,yBA+BI,WAAA,KpBpDA,uBAAA,EACA,wBAAA,EoB8DJ,qBpBrEI,cAAA,OoBqEJ,4B5BskGA,2B4BhkGM,MAAA,KACA,iBAAA,QAUN,oBAEI,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,WAAA,OAIJ,yBAEI,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,WAAA,OASJ,uBAEI,QAAA,KAFJ,qBAKI,QAAA,MClGJ,QACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,QAAA,gBAAA,cACA,QAAA,MAAA,KANF,mB7BuqGA,yB6B3pGI,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,QAAA,gBAAA,cASJ,cACE,QAAA,aACA,YAAA,SACA,eAAA,SACA,aAAA,KACA,UAAA,QACA,YAAA,QACA,YAAA,O1B1BE,oBAAA,oB0B6BA,gBAAA,KASJ,YACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KALF,sBAQI,cAAA,EACA,aAAA,EATJ,2BAaI,SAAA,OACA,MAAA,KASJ,aACE,QAAA,aACA,YAAA,MACA,eAAA,MAYF,iBACE,wBAAA,KAAA,WAAA,KAGA,eAAA,OAAA,YAAA,OAIF,gBACE,QAAA,OAAA,OACA,UAAA,QACA,YAAA,EACA,WAAA,IACA,OAAA,IAAA,MAAA,YrB3GE,cAAA,OLkBA,sBAAA,sB0B6FA,gBAAA,KAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,QAAA,GACA,WAAA,UAAA,OAAA,OACA,gBAAA,KAAA,KhB3DE,yBgBqEA,6B7BioGF,mC6B7nGQ,cAAA,EACA,aAAA,GhBvFN,yBgBkFA,kBAUI,mBAAA,IAAA,eAAA,IACA,cAAA,OAAA,UAAA,OACA,cAAA,MAAA,gBAAA,WAZJ,8BAeM,mBAAA,IAAA,eAAA,IAfN,6CAkBQ,SAAA,SAlBR,mDAsBQ,MAAA,EACA,KAAA,KAvBR,wCA2BQ,cAAA,MACA,aAAA,MA5BR,6B7BgqGF,mC6B7nGQ,cAAA,OAAA,UAAA,OAnCN,mCAwCM,QAAA,sBAAA,QAAA,eAxCN,kCA6CM,QAAA,MhBlHN,yBgBqEA,6B7B+qGF,mC6B3qGQ,cAAA,EACA,aAAA,GhBvFN,yBgBkFA,kBAUI,mBAAA,IAAA,eAAA,IACA,cAAA,OAAA,UAAA,OACA,cAAA,MAAA,gBAAA,WAZJ,8BAeM,mBAAA,IAAA,eAAA,IAfN,6CAkBQ,SAAA,SAlBR,mDAsBQ,MAAA,EACA,KAAA,KAvBR,wCA2BQ,cAAA,MACA,aAAA,MA5BR,6B7B8sGF,mC6B3qGQ,cAAA,OAAA,UAAA,OAnCN,mCAwCM,QAAA,sBAAA,QAAA,eAxCN,kCA6CM,QAAA,MhBlHN,yBgBqEA,6B7B6tGF,mC6BztGQ,cAAA,EACA,aAAA,GhBvFN,yBgBkFA,kBAUI,mBAAA,IAAA,eAAA,IACA,cAAA,OAAA,UAAA,OACA,cAAA,MAAA,gBAAA,WAZJ,8BAeM,mBAAA,IAAA,eAAA,IAfN,6CAkBQ,SAAA,SAlBR,mDAsBQ,MAAA,EACA,KAAA,KAvBR,wCA2BQ,cAAA,MACA,aAAA,MA5BR,6B7B4vGF,mC6BztGQ,cAAA,OAAA,UAAA,OAnCN,mCAwCM,QAAA,sBAAA,QAAA,eAxCN,kCA6CM,QAAA,MhBlHN,0BgBqEA,6B7B2wGF,mC6BvwGQ,cAAA,EACA,aAAA,GhBvFN,0BgBkFA,kBAUI,mBAAA,IAAA,eAAA,IACA,cAAA,OAAA,UAAA,OACA,cAAA,MAAA,gBAAA,WAZJ,8BAeM,mBAAA,IAAA,eAAA,IAfN,6CAkBQ,SAAA,SAlBR,mDAsBQ,MAAA,EACA,KAAA,KAvBR,wCA2BQ,cAAA,MACA,aAAA,MA5BR,6B7B0yGF,mC6BvwGQ,cAAA,OAAA,UAAA,OAnCN,mCAwCM,QAAA,sBAAA,QAAA,eAxCN,kCA6CM,QAAA,MAlDV,eAeQ,mBAAA,IAAA,eAAA,IACA,cAAA,OAAA,UAAA,OACA,cAAA,MAAA,gBAAA,WAjBR,0B7Bs0GA,gC6B7zGU,cAAA,EACA,aAAA,EAVV,2BAoBU,mBAAA,IAAA,eAAA,IApBV,0CAuBY,SAAA,SAvBZ,gDA2BY,MAAA,EACA,KAAA,KA5BZ,qCAgCY,cAAA,MACA,aAAA,MAjCZ,0B7B+1GA,gC6BvzGU,cAAA,OAAA,UAAA,OAxCV,gCA6CU,QAAA,sBAAA,QAAA,eA7CV,+BAkDU,QAAA,KAaV,4BAEI,MAAA,eAFJ,kCAAA,kCAKM,MAAA,eALN,oCAWM,MAAA,eAXN,0CAAA,0CAcQ,MAAA,eAdR,6CAkBQ,MAAA,e7BizGR,4CAEA,2CADA,yC6Bp0GA,0CA0BM,MAAA,eA1BN,8BA+BI,MAAA,eACA,aAAA,eAhCJ,mCAoCI,iBAAA,oPApCJ,2BAwCI,MAAA,eAKJ,2BAEI,MAAA,KAFJ,iCAAA,iCAKM,MAAA,KALN,mCAWM,MAAA,qBAXN,yCAAA,yCAcQ,MAAA,sBAdR,4CAkBQ,MAAA,sB7B4yGR,2CAEA,0CADA,wC6B/zGA,yCA0BM,MAAA,KA1BN,6BA+BI,MAAA,qBACA,aAAA,qBAhCJ,kCAoCI,iBAAA,0PApCJ,0BAwCI,MAAA,qBCrRJ,MACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,UAAA,EACA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,iBtBRE,cAAA,OsBYJ,WAGE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,QAGF,YACE,cAAA,OAGF,eACE,WAAA,SACA,cAAA,EAGF,sBACE,cAAA,E3BtBE,iB2B2BA,gBAAA,KAFJ,sBAMI,YAAA,QAIJ,2DtBpCI,uBAAA,OACA,wBAAA,OsBmCJ,yDtBtBI,2BAAA,OACA,0BAAA,OsBwCJ,aACE,QAAA,OAAA,QACA,cAAA,EACA,iBAAA,gBACA,cAAA,IAAA,MAAA,iBAJF,yBtB7DI,cAAA,mBAAA,mBAAA,EAAA,EsBwEJ,aACE,QAAA,OAAA,QACA,iBAAA,gBACA,WAAA,IAAA,MAAA,iBAHF,wBtBxEI,cAAA,EAAA,EAAA,mBAAA,mBsBuFJ,kBACE,aAAA,SACA,cAAA,QACA,YAAA,SACA,cAAA,EAGF,mBACE,aAAA,SACA,YAAA,SAIF,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,QAGF,UACE,MAAA,KtB9GE,cAAA,mBsBmHJ,cACE,MAAA,KtB9GE,uBAAA,mBACA,wBAAA,mBsBiHJ,iBACE,MAAA,KtBrGE,2BAAA,mBACA,0BAAA,mBK+BA,yBiB6EF,WACE,QAAA,YAAA,QAAA,KACA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,aAAA,MACA,YAAA,MAJF,iBAOI,QAAA,YAAA,QAAA,KACA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GACA,mBAAA,OAAA,eAAA,OACA,aAAA,KACA,YAAA,MjBxFF,yBiBmGF,YACE,QAAA,YAAA,QAAA,KACA,cAAA,IAAA,KAAA,UAAA,IAAA,KAFF,kBAKI,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GALJ,wBAQM,YAAA,EACA,YAAA,EATN,8BtB1IE,wBAAA,EACA,2BAAA,EsByIF,4CAkBU,wBAAA,EAlBV,+CAqBU,2BAAA,EArBV,6BtB5HE,uBAAA,EACA,0BAAA,EsB2HF,2CA4BU,uBAAA,EA5BV,8CA+BU,0BAAA,EA/BV,qDAoCQ,cAAA,E9B6iHR,sE8BjlHA,mEAwCU,cAAA,GAaZ,oBAEI,cAAA,OjB1JA,yBiBwJJ,cAMI,qBAAA,EAAA,aAAA,EACA,mBAAA,QAAA,WAAA,QAPJ,oBAUM,QAAA,aACA,MAAA,MC3NN,YACE,QAAA,OAAA,KACA,cAAA,KACA,WAAA,KACA,iBAAA,QvBAE,cAAA,OwBHF,mBACE,QAAA,MACA,MAAA,KACA,QAAA,GDKJ,iBACE,MAAA,KADF,0CAKI,QAAA,aACA,cAAA,MACA,aAAA,MACA,MAAA,QACA,QAAA,IATJ,gDAmBI,gBAAA,UAnBJ,gDAsBI,gBAAA,KAtBJ,wBA0BI,MAAA,QEnCJ,YACE,QAAA,YAAA,QAAA,KAEA,aAAA,EACA,WAAA,KzBAE,cAAA,OyBIJ,kCAGM,YAAA,EzBoBF,uBAAA,OACA,0BAAA,OyBxBJ,iCzBSI,wBAAA,OACA,2BAAA,OyBVJ,6BAcI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAjBJ,+BAqBI,MAAA,QACA,eAAA,KACA,iBAAA,KACA,aAAA,KAIJ,WACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,OACA,YAAA,KACA,YAAA,KACA,MAAA,QACA,iBAAA,KACA,OAAA,IAAA,MAAA,K9BtBE,iBAAA,iB8ByBA,MAAA,QACA,gBAAA,KACA,iBAAA,QACA,aAAA,KC/CF,0BACE,QAAA,OAAA,OACA,UAAA,QACA,YAAA,IAKE,iD1BoBF,uBAAA,MACA,0BAAA,M0BhBE,gD1BCF,wBAAA,MACA,2BAAA,M0BfF,0BACE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IAKE,iD1BoBF,uBAAA,MACA,0BAAA,M0BhBE,gD1BCF,wBAAA,MACA,2BAAA,M2BbJ,OACE,QAAA,aACA,QAAA,MAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,eAAA,S3BVE,cAAA,O2BCJ,aAcI,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KAOF,YACE,cAAA,KACA,aAAA,K3B/BE,cAAA,M2BwCF,ediBE,MAAA,Ke3DF,iBAAA,QjCoBE,2BAAA,2BkBuCA,MAAA,KetDE,gBAAA,KACA,iBAAA,QDoCJ,iBdiBE,MAAA,Ke3DF,iBAAA,QjCoBE,6BAAA,6BkBuCA,MAAA,KetDE,gBAAA,KACA,iBAAA,QDoCJ,ediBE,MAAA,Ke3DF,iBAAA,QjCoBE,2BAAA,2BkBuCA,MAAA,KetDE,gBAAA,KACA,iBAAA,QDoCJ,YdiBE,MAAA,Ke3DF,iBAAA,QjCoBE,wBAAA,wBkBuCA,MAAA,KetDE,gBAAA,KACA,iBAAA,QDoCJ,edeE,MAAA,KezDF,iBAAA,QjCoBE,2BAAA,2BkBqCA,MAAA,KepDE,gBAAA,KACA,iBAAA,QDoCJ,cdiBE,MAAA,Ke3DF,iBAAA,QjCoBE,0BAAA,0BkBuCA,MAAA,KetDE,gBAAA,KACA,iBAAA,QDoCJ,adeE,MAAA,KezDF,iBAAA,QjCoBE,yBAAA,yBkBqCA,MAAA,KepDE,gBAAA,KACA,iBAAA,QDoCJ,YdiBE,MAAA,Ke3DF,iBAAA,QjCoBE,wBAAA,wBkBuCA,MAAA,KetDE,gBAAA,KACA,iBAAA,QCRN,WACE,QAAA,KAAA,KACA,cAAA,KACA,iBAAA,Q7BCE,cAAA,MKoDA,yBwBxDJ,WAOI,QAAA,KAAA,MAIJ,iBACE,cAAA,EACA,aAAA,E7BTE,cAAA,E8BAJ,OACE,QAAA,OAAA,QACA,cAAA,KACA,OAAA,IAAA,MAAA,Y9BHE,cAAA,O8BQJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,0BAGI,SAAA,SACA,IAAA,QACA,MAAA,SACA,QAAA,OAAA,QACA,MAAA,QAUF,eC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDkCF,iBC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,oBACE,iBAAA,QAGF,6BACE,MAAA,QDkCF,eC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDkCF,YC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,eACE,iBAAA,QAGF,wBACE,MAAA,QDkCF,eC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDkCF,cC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,iBACE,iBAAA,QAGF,0BACE,MAAA,QDkCF,aC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,gBACE,iBAAA,QAGF,yBACE,MAAA,QDkCF,YC3CA,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,eACE,iBAAA,QAGF,wBACE,MAAA,QCVJ,wCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAFP,gCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAGP,UACE,QAAA,YAAA,QAAA,KACA,SAAA,OACA,UAAA,OACA,YAAA,KACA,WAAA,OACA,iBAAA,QhCPE,cAAA,OgCYJ,cACE,OAAA,KACA,YAAA,KACA,MAAA,KACA,iBAAA,Q/BfI,WAAA,MAAA,IAAA,K+BmBN,sBCWE,iBAAA,iKDTA,gBAAA,KAAA,KAGF,uBACE,kBAAA,qBAAA,GAAA,OAAA,SAAA,UAAA,qBAAA,GAAA,OAAA,SE9BF,OACE,QAAA,YAAA,QAAA,KACA,eAAA,MAAA,YAAA,WAGF,YACE,SAAA,EAAA,KAAA,ECFF,YACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OAGA,aAAA,EACA,cAAA,EASF,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QxCAE,8BAAA,8BwCIA,MAAA,QACA,gBAAA,KACA,iBAAA,QATJ,+BAaI,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,MACA,QAAA,OAAA,QAEA,cAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBAPF,6BnChCI,uBAAA,OACA,wBAAA,OmC+BJ,4BAcI,cAAA,EnChCA,2BAAA,OACA,0BAAA,OLHA,uBAAA,uBwCuCA,gBAAA,KAnBJ,0BAAA,0BAwBI,MAAA,QACA,iBAAA,KAzBJ,wBA8BI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAUJ,mCAEI,aAAA,EACA,YAAA,EACA,cAAA,EAJJ,2DASM,WAAA,EATN,yDAeM,cAAA,ECjGJ,yBACE,MAAA,QACA,iBAAA,QAIF,0B5C6wIF,+B4C3wII,MAAA,QzCWA,gCAAA,gCHqwIJ,qCACA,qC4C9wIM,MAAA,QACA,iBAAA,QANJ,iC5CyxIF,sC4C/wIM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,2BACE,MAAA,QACA,iBAAA,QAIF,4B5CqyIF,iC4CnyII,MAAA,QzCWA,kCAAA,kCH6xIJ,uCACA,uC4CtyIM,MAAA,QACA,iBAAA,QANJ,mC5CizIF,wC4CvyIM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,yBACE,MAAA,QACA,iBAAA,QAIF,0B5C6zIF,+B4C3zII,MAAA,QzCWA,gCAAA,gCHqzIJ,qCACA,qC4C9zIM,MAAA,QACA,iBAAA,QANJ,iC5Cy0IF,sC4C/zIM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,sBACE,MAAA,QACA,iBAAA,QAIF,uB5Cq1IF,4B4Cn1II,MAAA,QzCWA,6BAAA,6BH60IJ,kCACA,kC4Ct1IM,MAAA,QACA,iBAAA,QANJ,8B5Ci2IF,mC4Cv1IM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,yBACE,MAAA,QACA,iBAAA,QAIF,0B5C62IF,+B4C32II,MAAA,QzCWA,gCAAA,gCHq2IJ,qCACA,qC4C92IM,MAAA,QACA,iBAAA,QANJ,iC5Cy3IF,sC4C/2IM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,wBACE,MAAA,QACA,iBAAA,QAIF,yB5Cq4IF,8B4Cn4II,MAAA,QzCWA,+BAAA,+BH63IJ,oCACA,oC4Ct4IM,MAAA,QACA,iBAAA,QANJ,gC5Ci5IF,qC4Cv4IM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,uBACE,MAAA,QACA,iBAAA,QAIF,wB5C65IF,6B4C35II,MAAA,QzCWA,8BAAA,8BHq5IJ,mCACA,mC4C95IM,MAAA,QACA,iBAAA,QANJ,+B5Cy6IF,oC4C/5IM,MAAA,KACA,iBAAA,QACA,aAAA,QAlBJ,sBACE,MAAA,QACA,iBAAA,QAIF,uB5Cq7IF,4B4Cn7II,MAAA,QzCWA,6BAAA,6BH66IJ,kCACA,kC4Ct7IM,MAAA,QACA,iBAAA,QANJ,8B5Ci8IF,mC4Cv7IM,MAAA,KACA,iBAAA,QACA,aAAA,QCrBN,OACE,MAAA,MACA,UAAA,OACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,YAAA,EAAA,IAAA,EAAA,KACA,QAAA,G1CeE,aAAA,a0CZA,MAAA,KACA,gBAAA,KACA,QAAA,IAUJ,aACE,QAAA,EACA,WAAA,IACA,OAAA,EACA,mBAAA,KCnBF,YACE,SAAA,OAIF,OACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,SAAA,OAGA,QAAA,EAXF,0BrCPM,WAAA,kBAAA,IAAA,SAAA,WAAA,UAAA,IAAA,SAAA,WAAA,UAAA,IAAA,QAAA,CAAA,kBAAA,IAAA,SqC0BF,kBAAA,kBAAA,UAAA,kBAnBJ,0BAqByB,kBAAA,eAAA,UAAA,eAEzB,mBACE,WAAA,OACA,WAAA,KAIF,cACE,SAAA,SACA,MAAA,KACA,OAAA,KAIF,eACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,etClDE,cAAA,MsCsDF,QAAA,EAIF,gBACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,iBAAA,KAPF,qBAUW,QAAA,EAVX,qBAWW,QAAA,GAKX,cACE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,QAAA,gBAAA,cACA,QAAA,KACA,cAAA,IAAA,MAAA,QAIF,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,IAAA,gBAAA,SACA,QAAA,KACA,WAAA,IAAA,MAAA,QALF,iCAQyB,YAAA,OARzB,gCASwB,aAAA,OAIxB,yBACE,SAAA,SACA,IAAA,QACA,MAAA,KACA,OAAA,KACA,SAAA,OjCjEE,yBiCuEF,cACE,UAAA,MACA,OAAA,KAAA,KAOF,UAAY,UAAA,OjChFV,yBiCoFF,UAAY,UAAA,OC3Id,SACE,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,ECHA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KDPA,UAAA,QAEA,UAAA,WACA,QAAA,EAXF,cAaW,QAAA,GAbX,gBAgBI,SAAA,SACA,QAAA,MACA,MAAA,IACA,OAAA,IAnBJ,2CAAA,wBAuBI,QAAA,IAAA,EAvBJ,kDAAA,+BAyBM,OAAA,EAzBN,0DAAA,uCA6BM,YAAA,KACA,QAAA,GACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAhCN,6CAAA,0BAoCI,QAAA,EAAA,IApCJ,oDAAA,iCAsCM,KAAA,EAtCN,4DAAA,yCA0CM,WAAA,KACA,QAAA,GACA,aAAA,IAAA,IAAA,IAAA,EACA,mBAAA,KA7CN,8CAAA,2BAiDI,QAAA,IAAA,EAjDJ,qDAAA,kCAmDM,IAAA,EAnDN,6DAAA,0CAuDM,YAAA,KACA,QAAA,GACA,aAAA,EAAA,IAAA,IACA,oBAAA,KA1DN,4CAAA,yBA8DI,QAAA,EAAA,IA9DJ,mDAAA,gCAgEM,MAAA,EAhEN,2DAAA,wCAoEM,MAAA,EACA,WAAA,KACA,QAAA,GACA,aAAA,IAAA,EAAA,IAAA,IACA,kBAAA,KAxEN,wBA2FI,SAAA,SACA,aAAA,YACA,aAAA,MAKJ,eACE,UAAA,MACA,QAAA,IAAA,IACA,MAAA,KACA,WAAA,OACA,iBAAA,KvCpGE,cAAA,OyCJJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MACA,QAAA,IDLA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KCLA,UAAA,QAEA,UAAA,WACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,ezCZE,cAAA,MyCJJ,gBAyBI,SAAA,SACA,QAAA,MACA,MAAA,KACA,OAAA,IjDyuJJ,uBiDrwJA,wBAiCI,SAAA,SACA,QAAA,MACA,aAAA,YACA,aAAA,MApCJ,wBAwCI,QAAA,GACA,aAAA,KAzCJ,uBA4CI,QAAA,GACA,aAAA,KA7CJ,2CAAA,wBAmDI,cAAA,KAnDJ,kDAAA,+BAsDM,OAAA,EjDyuJiC,yDiD/xJvC,0DjD+xJA,sCiD/xJA,uCA2DM,oBAAA,EA3DN,0DAAA,uCA+DM,OAAA,MACA,YAAA,KACA,iBAAA,gBAjEN,yDAAA,sCAqEM,OAAA,MACA,YAAA,KACA,iBAAA,KAvEN,6CAAA,0BA4EI,YAAA,KA5EJ,oDAAA,iCA+EM,KAAA,EjDyuJmC,2DiDxzJzC,4DjDwzJA,wCiDxzJA,yCAoFM,WAAA,KACA,kBAAA,EArFN,4DAAA,yCAyFM,KAAA,MACA,mBAAA,gBA1FN,2DAAA,wCA8FM,KAAA,MACA,mBAAA,KA/FN,8CAAA,2BAoGI,WAAA,KApGJ,qDAAA,kCAuGM,IAAA,EjDyuJoC,4DiDh1J1C,6DjDg1JA,yCiDh1JA,0CA4GM,YAAA,KACA,iBAAA,EA7GN,6DAAA,0CAiHM,IAAA,MACA,oBAAA,gBAlHN,4DAAA,yCAsHM,IAAA,MACA,oBAAA,KAvHN,sEAAA,mDA4HM,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,MACA,QAAA,GACA,cAAA,IAAA,MAAA,QAnIN,4CAAA,yBAwII,aAAA,KAxIJ,mDAAA,gCA2IM,MAAA,EjDwuJkC,0DiDn3JxC,2DjDm3JA,uCiDn3JA,wCAgJM,WAAA,KACA,mBAAA,EAjJN,2DAAA,wCAqJM,MAAA,MACA,kBAAA,gBAtJN,0DAAA,uCA0JM,MAAA,MACA,kBAAA,KAqBN,gBACE,QAAA,IAAA,KACA,cAAA,EACA,UAAA,KACA,MAAA,QACA,iBAAA,QACA,cAAA,IAAA,MAAA,QzC5KE,uBAAA,kBACA,wBAAA,kByCqKJ,sBAWI,QAAA,KAIJ,cACE,QAAA,IAAA,KACA,MAAA,QChMF,UACE,SAAA,SAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OAGF,eACE,SAAA,SACA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,MAAA,KzCVI,WAAA,kBAAA,IAAA,KAAA,WAAA,UAAA,IAAA,KAAA,WAAA,UAAA,IAAA,IAAA,CAAA,kBAAA,IAAA,KyCYJ,4BAAA,OAAA,oBAAA,OACA,oBAAA,OAAA,YAAA,OlD85JF,oBACA,oBkD55JA,sBAGE,QAAA,MAGF,oBlD25JA,oBkDz5JE,SAAA,SACA,IAAA,EAIF,uClD05JA,wCkDx5JE,kBAAA,cAAA,UAAA,cAEwC,mFAJ1C,uClDi6JE,wCkD55JE,kBAAA,mBAAA,UAAA,oBlDm6JJ,4BkD/5JA,oBAEE,kBAAA,iBAAA,UAAA,iBAEwC,mFlDk6JxC,4BkDt6JF,oBAKI,kBAAA,sBAAA,UAAA,uBlDw6JJ,2BkDp6JA,oBAEE,kBAAA,kBAAA,UAAA,kBAEwC,mFlDu6JxC,2BkD36JF,oBAKI,kBAAA,uBAAA,UAAA,wBlD66JJ,uBkDp6JA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EAEA,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,MAAA,IACA,MAAA,KACA,WAAA,OACA,QAAA,GlDy6JF,6BACA,6BGl+JI,6BAAA,6B+C8DA,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAEF,uBACE,MAAA,ElD06JF,4BkDt6JA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,WAAA,YAAA,UAAA,OAAA,OACA,gBAAA,KAAA,KAEF,4BACE,iBAAA,4LAEF,4BACE,iBAAA,8LASF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,KACA,KAAA,EACA,QAAA,GACA,QAAA,YAAA,QAAA,KACA,cAAA,OAAA,gBAAA,OACA,aAAA,EAEA,aAAA,IACA,YAAA,IACA,WAAA,KAZF,wBAeI,SAAA,SACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,OAAA,IACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,iBAAA,qBAtBJ,gCA0BM,SAAA,SACA,IAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAA,GAhCN,+BAmCM,SAAA,SACA,OAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAA,GAzCN,6BA8CI,iBAAA,KASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,KACA,KAAA,IACA,QAAA,GACA,YAAA,KACA,eAAA,KACA,MAAA,KACA,WAAA,OCvLF,gBAAqB,eAAA,mBACrB,WAAqB,eAAA,cACrB,cAAqB,eAAA,iBACrB,cAAqB,eAAA,iBACrB,mBAAqB,eAAA,sBACrB,gBAAqB,eAAA,mBCFnB,YACE,iBAAA,kBjDkBA,mBAAA,mBiDdE,iBAAA,kBALJ,cACE,iBAAA,kBjDkBA,qBAAA,qBiDdE,iBAAA,kBALJ,YACE,iBAAA,kBjDkBA,mBAAA,mBiDdE,iBAAA,kBALJ,SACE,iBAAA,kBjDkBA,gBAAA,gBiDdE,iBAAA,kBALJ,YACE,iBAAA,kBjDkBA,mBAAA,mBiDdE,iBAAA,kBALJ,WACE,iBAAA,kBjDkBA,kBAAA,kBiDdE,iBAAA,kBALJ,UACE,iBAAA,kBjDkBA,iBAAA,iBiDdE,iBAAA,kBALJ,SACE,iBAAA,kBjDkBA,gBAAA,gBiDdE,iBAAA,kBCJN,UAAY,iBAAA,eACZ,gBAAkB,iBAAA,sBCDlB,QAAmB,OAAA,IAAA,MAAA,kBACnB,UAAmB,OAAA,YACnB,cAAmB,WAAA,YACnB,gBAAmB,aAAA,YACnB,iBAAmB,cAAA,YACnB,eAAmB,YAAA,YAGjB,gBACE,aAAA,kBADF,kBACE,aAAA,kBADF,gBACE,aAAA,kBADF,aACE,aAAA,kBADF,gBACE,aAAA,kBADF,eACE,aAAA,kBADF,cACE,aAAA,kBADF,aACE,aAAA,kBAIJ,cACE,aAAA,eAOF,SACE,cAAA,iBAEF,aACE,uBAAA,iBACA,wBAAA,iBAEF,eACE,wBAAA,iBACA,2BAAA,iBAEF,gBACE,2BAAA,iBACA,0BAAA,iBAEF,cACE,uBAAA,iBACA,0BAAA,iBAGF,gBACE,cAAA,IAGF,WACE,cAAA,EtBjDA,iBACE,QAAA,MACA,MAAA,KACA,QAAA,GuBIA,QAA2B,QAAA,eAC3B,UAA2B,QAAA,iBAC3B,gBAA2B,QAAA,uBAC3B,SAA2B,QAAA,gBAC3B,SAA2B,QAAA,gBAC3B,cAA2B,QAAA,qBAC3B,QAA2B,QAAA,sBAAA,QAAA,eAC3B,eAA2B,QAAA,6BAAA,QAAA,sB1CyC3B,yB0ChDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uB1CyC3B,yB0ChDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uB1CyC3B,yB0ChDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uB1CyC3B,0B0ChDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uBAS/B,eACE,QAAA,eAEA,aAHF,eAII,QAAA,iBAIJ,gBACE,QAAA,eAEA,aAHF,gBAII,QAAA,kBAIJ,sBACE,QAAA,eAEA,aAHF,sBAII,QAAA,wBAKF,aADF,cAEI,QAAA,gBChDJ,kBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,SAAA,OALF,0BAQI,QAAA,MACA,QAAA,GATJ,yCxDi+KA,wBADA,yBAEA,yBACA,wBwDl9KI,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KACA,OAAA,EAIJ,gCAEI,YAAA,WAIJ,gCAEI,YAAA,OAIJ,+BAEI,YAAA,IAIJ,+BAEI,YAAA,KCzCA,UAAgC,mBAAA,cAAA,eAAA,cAChC,aAAgC,mBAAA,iBAAA,eAAA,iBAChC,kBAAgC,mBAAA,sBAAA,eAAA,sBAChC,qBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,WAA8B,cAAA,eAAA,UAAA,eAC9B,aAA8B,cAAA,iBAAA,UAAA,iBAC9B,mBAA8B,cAAA,uBAAA,UAAA,uBAE9B,uBAAoC,cAAA,gBAAA,gBAAA,qBACpC,qBAAoC,cAAA,cAAA,gBAAA,mBACpC,wBAAoC,cAAA,iBAAA,gBAAA,iBACpC,yBAAoC,cAAA,kBAAA,gBAAA,wBACpC,wBAAoC,cAAA,qBAAA,gBAAA,uBAEpC,mBAAiC,eAAA,gBAAA,YAAA,qBACjC,iBAAiC,eAAA,cAAA,YAAA,mBACjC,oBAAiC,eAAA,iBAAA,YAAA,iBACjC,sBAAiC,eAAA,mBAAA,YAAA,mBACjC,qBAAiC,eAAA,kBAAA,YAAA,kBAEjC,qBAAkC,mBAAA,gBAAA,cAAA,qBAClC,mBAAkC,mBAAA,cAAA,cAAA,mBAClC,sBAAkC,mBAAA,iBAAA,cAAA,iBAClC,uBAAkC,mBAAA,kBAAA,cAAA,wBAClC,sBAAkC,mBAAA,qBAAA,cAAA,uBAClC,uBAAkC,mBAAA,kBAAA,cAAA,kBAElC,iBAAgC,oBAAA,eAAA,WAAA,eAChC,kBAAgC,oBAAA,gBAAA,WAAA,qBAChC,gBAAgC,oBAAA,cAAA,WAAA,mBAChC,mBAAgC,oBAAA,iBAAA,WAAA,iBAChC,qBAAgC,oBAAA,mBAAA,WAAA,mBAChC,oBAAgC,oBAAA,kBAAA,WAAA,kB5CehC,yB4ChDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB5CehC,yB4ChDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB5CehC,yB4ChDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB5CehC,0B4ChDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBCrChC,YCHF,MAAA,eDIE,aCDF,MAAA,gBDEE,YCCF,MAAA,e9CiDE,yB6CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gB9CiDE,yB6CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gB9CiDE,yB6CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gB9CiDE,0B6CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gBCLF,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAI4B,2DAD9B,YAEI,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MClBJ,SCEE,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EACA,SAAA,OACA,KAAA,cACA,YAAA,OACA,kBAAA,WAAA,UAAA,WACA,OAAA,EAUA,0BAAA,yBAEE,SAAA,OACA,MAAA,KACA,OAAA,KACA,SAAA,QACA,KAAA,KACA,YAAA,OACA,kBAAA,KAAA,UAAA,KC5BA,MAAuB,MAAA,cAAvB,MAAuB,MAAA,cAAvB,MAAuB,MAAA,cAAvB,OAAuB,MAAA,eAAvB,MAAuB,OAAA,cAAvB,MAAuB,OAAA,cAAvB,MAAuB,OAAA,cAAvB,OAAuB,OAAA,eAI3B,QAAU,UAAA,eACV,QAAU,WAAA,eCAF,KAAiC,OAAA,YACjC,MAAiC,WAAA,YACjC,MAAiC,aAAA,YACjC,MAAiC,cAAA,YACjC,MAAiC,YAAA,YACjC,MACE,aAAA,YACA,YAAA,YAEF,MACE,WAAA,YACA,cAAA,YAXF,KAAiC,OAAA,iBACjC,MAAiC,WAAA,iBACjC,MAAiC,aAAA,iBACjC,MAAiC,cAAA,iBACjC,MAAiC,YAAA,iBACjC,MACE,aAAA,iBACA,YAAA,iBAEF,MACE,WAAA,iBACA,cAAA,iBAXF,KAAiC,OAAA,gBACjC,MAAiC,WAAA,gBACjC,MAAiC,aAAA,gBACjC,MAAiC,cAAA,gBACjC,MAAiC,YAAA,gBACjC,MACE,aAAA,gBACA,YAAA,gBAEF,MACE,WAAA,gBACA,cAAA,gBAXF,KAAiC,OAAA,eACjC,MAAiC,WAAA,eACjC,MAAiC,aAAA,eACjC,MAAiC,cAAA,eACjC,MAAiC,YAAA,eACjC,MACE,aAAA,eACA,YAAA,eAEF,MACE,WAAA,eACA,cAAA,eAXF,KAAiC,OAAA,iBACjC,MAAiC,WAAA,iBACjC,MAAiC,aAAA,iBACjC,MAAiC,cAAA,iBACjC,MAAiC,YAAA,iBACjC,MACE,aAAA,iBACA,YAAA,iBAEF,MACE,WAAA,iBACA,cAAA,iBAXF,KAAiC,OAAA,eACjC,MAAiC,WAAA,eACjC,MAAiC,aAAA,eACjC,MAAiC,cAAA,eACjC,MAAiC,YAAA,eACjC,MACE,aAAA,eACA,YAAA,eAEF,MACE,WAAA,eACA,cAAA,eAXF,KAAiC,QAAA,YACjC,MAAiC,YAAA,YACjC,MAAiC,cAAA,YACjC,MAAiC,eAAA,YACjC,MAAiC,aAAA,YACjC,MACE,cAAA,YACA,aAAA,YAEF,MACE,YAAA,YACA,eAAA,YAXF,KAAiC,QAAA,iBACjC,MAAiC,YAAA,iBACjC,MAAiC,cAAA,iBACjC,MAAiC,eAAA,iBACjC,MAAiC,aAAA,iBACjC,MACE,cAAA,iBACA,aAAA,iBAEF,MACE,YAAA,iBACA,eAAA,iBAXF,KAAiC,QAAA,gBACjC,MAAiC,YAAA,gBACjC,MAAiC,cAAA,gBACjC,MAAiC,eAAA,gBACjC,MAAiC,aAAA,gBACjC,MACE,cAAA,gBACA,aAAA,gBAEF,MACE,YAAA,gBACA,eAAA,gBAXF,KAAiC,QAAA,eACjC,MAAiC,YAAA,eACjC,MAAiC,cAAA,eACjC,MAAiC,eAAA,eACjC,MAAiC,aAAA,eACjC,MACE,cAAA,eACA,aAAA,eAEF,MACE,YAAA,eACA,eAAA,eAXF,KAAiC,QAAA,iBACjC,MAAiC,YAAA,iBACjC,MAAiC,cAAA,iBACjC,MAAiC,eAAA,iBACjC,MAAiC,aAAA,iBACjC,MACE,cAAA,iBACA,aAAA,iBAEF,MACE,YAAA,iBACA,eAAA,iBAXF,KAAiC,QAAA,eACjC,MAAiC,YAAA,eACjC,MAAiC,cAAA,eACjC,MAAiC,eAAA,eACjC,MAAiC,aAAA,eACjC,MACE,cAAA,eACA,aAAA,eAEF,MACE,YAAA,eACA,eAAA,eAMN,QAAoB,OAAA,eACpB,SAAoB,WAAA,eACpB,SAAoB,aAAA,eACpB,SAAoB,cAAA,eACpB,SAAoB,YAAA,eACpB,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,enDmBF,yBmD/CI,QAAiC,OAAA,YACjC,SAAiC,WAAA,YACjC,SAAiC,aAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,YAAA,YACjC,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,gBACjC,SAAiC,WAAA,gBACjC,SAAiC,aAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,YAAA,gBACjC,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,QAAA,YACjC,SAAiC,YAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,eAAA,YACjC,SAAiC,aAAA,YACjC,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,gBACjC,SAAiC,YAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,eAAA,gBACjC,SAAiC,aAAA,gBACjC,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAoB,OAAA,eACpB,YAAoB,WAAA,eACpB,YAAoB,aAAA,eACpB,YAAoB,cAAA,eACpB,YAAoB,YAAA,eACpB,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBnDmBF,yBmD/CI,QAAiC,OAAA,YACjC,SAAiC,WAAA,YACjC,SAAiC,aAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,YAAA,YACjC,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,gBACjC,SAAiC,WAAA,gBACjC,SAAiC,aAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,YAAA,gBACjC,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,QAAA,YACjC,SAAiC,YAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,eAAA,YACjC,SAAiC,aAAA,YACjC,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,gBACjC,SAAiC,YAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,eAAA,gBACjC,SAAiC,aAAA,gBACjC,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAoB,OAAA,eACpB,YAAoB,WAAA,eACpB,YAAoB,aAAA,eACpB,YAAoB,cAAA,eACpB,YAAoB,YAAA,eACpB,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBnDmBF,yBmD/CI,QAAiC,OAAA,YACjC,SAAiC,WAAA,YACjC,SAAiC,aAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,YAAA,YACjC,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,gBACjC,SAAiC,WAAA,gBACjC,SAAiC,aAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,YAAA,gBACjC,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,QAAA,YACjC,SAAiC,YAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,eAAA,YACjC,SAAiC,aAAA,YACjC,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,gBACjC,SAAiC,YAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,eAAA,gBACjC,SAAiC,aAAA,gBACjC,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAoB,OAAA,eACpB,YAAoB,WAAA,eACpB,YAAoB,aAAA,eACpB,YAAoB,cAAA,eACpB,YAAoB,YAAA,eACpB,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBnDmBF,0BmD/CI,QAAiC,OAAA,YACjC,SAAiC,WAAA,YACjC,SAAiC,aAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,YAAA,YACjC,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,gBACjC,SAAiC,WAAA,gBACjC,SAAiC,aAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,YAAA,gBACjC,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,OAAA,iBACjC,SAAiC,WAAA,iBACjC,SAAiC,aAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,YAAA,iBACjC,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAiC,OAAA,eACjC,SAAiC,WAAA,eACjC,SAAiC,aAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,YAAA,eACjC,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAiC,QAAA,YACjC,SAAiC,YAAA,YACjC,SAAiC,cAAA,YACjC,SAAiC,eAAA,YACjC,SAAiC,aAAA,YACjC,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,gBACjC,SAAiC,YAAA,gBACjC,SAAiC,cAAA,gBACjC,SAAiC,eAAA,gBACjC,SAAiC,aAAA,gBACjC,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAiC,QAAA,iBACjC,SAAiC,YAAA,iBACjC,SAAiC,cAAA,iBACjC,SAAiC,eAAA,iBACjC,SAAiC,aAAA,iBACjC,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAiC,QAAA,eACjC,SAAiC,YAAA,eACjC,SAAiC,cAAA,eACjC,SAAiC,eAAA,eACjC,SAAiC,aAAA,eACjC,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAoB,OAAA,eACpB,YAAoB,WAAA,eACpB,YAAoB,aAAA,eACpB,YAAoB,cAAA,eACpB,YAAoB,YAAA,eACpB,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBC/BN,cAAiB,WAAA,kBACjB,aAAiB,YAAA,iBACjB,eCJE,SAAA,OACA,cAAA,SACA,YAAA,ODUE,WAAwB,WAAA,eACxB,YAAwB,WAAA,gBACxB,aAAwB,WAAA,iBpDsCxB,yBoDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBpDsCxB,yBoDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBpDsCxB,yBoDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBpDsCxB,0BoDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBAM5B,gBAAmB,eAAA,oBACnB,gBAAmB,eAAA,oBACnB,iBAAmB,eAAA,qBAInB,oBAAsB,YAAA,IACtB,kBAAsB,YAAA,IACtB,aAAsB,WAAA,OAItB,YAAc,MAAA,eEjCZ,cACE,MAAA,kBhEkBA,qBAAA,qBgEdE,MAAA,kBALJ,gBACE,MAAA,kBhEkBA,uBAAA,uBgEdE,MAAA,kBALJ,cACE,MAAA,kBhEkBA,qBAAA,qBgEdE,MAAA,kBALJ,WACE,MAAA,kBhEkBA,kBAAA,kBgEdE,MAAA,kBALJ,cACE,MAAA,kBhEkBA,qBAAA,qBgEdE,MAAA,kBALJ,aACE,MAAA,kBhEkBA,oBAAA,oBgEdE,MAAA,kBALJ,YACE,MAAA,kBhEkBA,mBAAA,mBgEdE,MAAA,kBALJ,WACE,MAAA,kBhEkBA,kBAAA,kBgEdE,MAAA,kBFkCN,YAAc,MAAA,kBAId,WG5CE,KAAA,CAAA,CAAA,EAAA,EACA,MAAA,YACA,YAAA,KACA,iBAAA,YACA,OAAA,ECFF,SCDE,WAAA,kBDKF,WCLE,WAAA","sourcesContent":["/*!\n * Bootstrap v4.0.0-beta (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"print\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"utilities\";\n","// scss-lint:disable QualifyingElement\n\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request:\n// http://www.phpied.com/delay-loading-your-print-css/\n// ==========================================================================\n\n@if $enable-print-styles {\n @media print {\n *,\n *::before,\n *::after {\n // Bootstrap specific; comment out `color` and `background`\n //color: #000 !important; // Black prints faster:\n // http://www.sanbeiji.com/archives/953\n text-shadow: none !important;\n //background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n // Bootstrap specific; comment the following selector out\n //a[href]::after {\n // content: \" (\" attr(href) \")\";\n //}\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n // Bootstrap specific; comment the following selector out\n //\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n //\n\n //a[href^=\"#\"]::after,\n //a[href^=\"javascript:\"]::after {\n // content: \"\";\n //}\n\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: $border-width solid #999; // Bootstrap custom code; using `$border-width` instead of 1px\n page-break-inside: avoid;\n }\n\n //\n // Printing Tables:\n // http://css-discuss.incutio.com/wiki/Printing_Tables\n //\n\n thead {\n display: table-header-group;\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .badge {\n border: $border-width solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n }\n}\n","/*!\n * Bootstrap v4.0.0-beta (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #868e96;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #868e96;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f8f9fa;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #212529;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n.row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-1 {\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -ms-flex-order: 12;\n order: 12;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #e9ecef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #dddfe2;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #cfd2d6;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #212529;\n}\n\n.thead-default th {\n color: #495057;\n background-color: #e9ecef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #212529;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #32383e;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive.table-bordered {\n border: 0;\n }\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #495057;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: none;\n}\n\n.form-control::-webkit-input-placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control::placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-plaintext {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .form-control-plaintext.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .form-control-plaintext.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(2.3125rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #868e96;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.invalid-feedback {\n display: none;\n margin-top: .25rem;\n font-size: .875rem;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .invalid-feedback,\n.was-validated .form-control:valid ~ .invalid-tooltip, .form-control.is-valid ~ .invalid-feedback,\n.form-control.is-valid ~ .invalid-tooltip, .was-validated\n.custom-select:valid ~ .invalid-feedback,\n.was-validated\n.custom-select:valid ~ .invalid-tooltip,\n.custom-select.is-valid ~ .invalid-feedback,\n.custom-select.is-valid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator {\n background-color: rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description {\n color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid:focus, .custom-file-input.is-valid:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator {\n background-color: rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description {\n color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid:focus, .custom-file-input.is-invalid:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n border-radius: 0.25rem;\n transition: all 0.15s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n background-color: #0069d9;\n background-image: none;\n border-color: #0062cc;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #727b84;\n border-color: #6c757d;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n background-color: #727b84;\n background-image: none;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n background-color: #218838;\n background-image: none;\n border-color: #1e7e34;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n background-color: #138496;\n background-image: none;\n border-color: #117a8b;\n}\n\n.btn-warning {\n color: #111;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #111;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n background-color: #e0a800;\n background-image: none;\n border-color: #d39e00;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n background-color: #c82333;\n background-image: none;\n border-color: #bd2130;\n}\n\n.btn-light {\n color: #111;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #111;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:active, .btn-light.active,\n.show > .btn-light.dropdown-toggle {\n background-color: #e2e6ea;\n background-image: none;\n border-color: #dae0e5;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:active, .btn-dark.active,\n.show > .btn-dark.dropdown-toggle {\n background-color: #23272b;\n background-image: none;\n border-color: #1d2124;\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-secondary {\n color: #868e96;\n background-color: transparent;\n background-image: none;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:active, .btn-outline-light.active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:active, .btn-outline-dark.active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: normal;\n color: #007bff;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #868e96;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: normal;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #868e96;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n margin-bottom: 0;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #495057;\n text-align: center;\n background-color: #e9ecef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n background-color: #e9ecef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #868e96;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #007bff;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #868e96;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #495057;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #e9ecef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #868e96;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #e9ecef #e9ecef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.show > .nav-pills .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-dark .navbar-brand {\n color: white;\n}\n\n.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {\n color: white;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #868e96;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #868e96;\n}\n\n.pagination {\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #868e96;\n pointer-events: none;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #868e96;\n}\n\n.badge-secondary[href]:focus, .badge-secondary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #6c757d;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #111;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n color: #111;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #111;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:focus, .badge-light[href]:hover {\n color: #111;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:focus, .badge-dark[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #464a4e;\n background-color: #e7e8ea;\n border-color: #dddfe2;\n}\n\n.alert-secondary hr {\n border-top-color: #cfd2d6;\n}\n\n.alert-secondary .alert-link {\n color: #2e3133;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: -ms-flexbox;\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n line-height: 1rem;\n color: #fff;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.media-body {\n -ms-flex: 1;\n flex: 1;\n}\n\n.list-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #868e96;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\na.list-group-item-primary,\nbutton.list-group-item-primary {\n color: #004085;\n}\n\na.list-group-item-primary:focus, a.list-group-item-primary:hover,\nbutton.list-group-item-primary:focus,\nbutton.list-group-item-primary:hover {\n color: #004085;\n background-color: #9fcdff;\n}\n\na.list-group-item-primary.active,\nbutton.list-group-item-primary.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #464a4e;\n background-color: #dddfe2;\n}\n\na.list-group-item-secondary,\nbutton.list-group-item-secondary {\n color: #464a4e;\n}\n\na.list-group-item-secondary:focus, a.list-group-item-secondary:hover,\nbutton.list-group-item-secondary:focus,\nbutton.list-group-item-secondary:hover {\n color: #464a4e;\n background-color: #cfd2d6;\n}\n\na.list-group-item-secondary.active,\nbutton.list-group-item-secondary.active {\n color: #fff;\n background-color: #464a4e;\n border-color: #464a4e;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #155724;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #155724;\n background-color: #b1dfbb;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #0c5460;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #0c5460;\n background-color: #abdde5;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #856404;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #856404;\n background-color: #ffe8a1;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #721c24;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\na.list-group-item-light,\nbutton.list-group-item-light {\n color: #818182;\n}\n\na.list-group-item-light:focus, a.list-group-item-light:hover,\nbutton.list-group-item-light:focus,\nbutton.list-group-item-light:hover {\n color: #818182;\n background-color: #ececf6;\n}\n\na.list-group-item-light.active,\nbutton.list-group-item-light.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\na.list-group-item-dark,\nbutton.list-group-item-dark {\n color: #1b1e21;\n}\n\na.list-group-item-dark:focus, a.list-group-item-dark:hover,\nbutton.list-group-item-dark:focus,\nbutton.list-group-item-dark:hover {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\na.list-group-item-dark.active,\nbutton.list-group-item-dark.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #e9ecef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 5px;\n height: 5px;\n}\n\n.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 5px 0;\n}\n\n.tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n margin-left: -3px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 5px;\n}\n\n.tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n}\n\n.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n margin-top: -3px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 5px 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n margin-left: -3px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 5px;\n}\n\n.tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n}\n\n.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n margin-top: -3px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 10px;\n height: 5px;\n}\n\n.popover .arrow::before,\n.popover .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover .arrow::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover .arrow::after {\n content: \"\";\n border-width: 11px;\n}\n\n.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 10px;\n}\n\n.popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-bottom-width: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: -11px;\n margin-left: -6px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: -10px;\n margin-left: -6px;\n border-top-color: #fff;\n}\n\n.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 10px;\n}\n\n.popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n margin-top: -8px;\n border-left-width: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: -10px;\n border-right-color: #fff;\n}\n\n.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 10px;\n}\n\n.popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n margin-left: -7px;\n border-top-width: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: -10px;\n border-bottom-color: #fff;\n}\n\n.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 10px;\n}\n\n.popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n margin-top: -8px;\n border-right-width: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: -10px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 9px 14px;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n transition: -webkit-transform 0.6s ease;\n transition: transform 0.6s ease;\n transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next,\n .active.carousel-item-right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-prev,\n .active.carousel-item-left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #868e96 !important;\n}\n\na.bg-secondary:focus, a.bg-secondary:hover {\n background-color: #6c757d !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:focus, a.bg-light:hover {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:focus, a.bg-dark:hover {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #e9ecef !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #868e96 !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.d-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n.d-print-block {\n display: none !important;\n}\n\n@media print {\n .d-print-block {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n -webkit-clip-path: none;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #868e96 !important;\n}\n\na.text-secondary:focus, a.text-secondary:hover {\n color: #6c757d !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:focus, a.text-light:hover {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:focus, a.text-dark:hover {\n color: #1d2124 !important;\n}\n\n.text-muted {\n color: #868e96 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n/*# sourceMappingURL=bootstrap.css.map */","// scss-lint:disable QualifyingElement, DuplicateProperty, VendorPrefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\nhtml {\n box-sizing: border-box; // 1\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0,0,0,0); // 6\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit; // 1\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport { width: device-width; }\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.\n//\n// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11\n// DON'T remove the click delay when `<meta name=\"viewport\" content=\"width=device-width\">` is present.\n// However, they DO support removing the click delay via `touch-action: manipulation`.\n// See:\n// * https://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch\n// * http://caniuse.com/#feat=css-touch-action\n// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment\n text-align: left;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap v4.0.0-beta (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #868e96;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #868e96;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f8f9fa;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #212529;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n width: 100%;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #e9ecef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #dddfe2;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #cfd2d6;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #212529;\n}\n\n.thead-default th {\n color: #495057;\n background-color: #e9ecef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #212529;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #32383e;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive.table-bordered {\n border: 0;\n }\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #495057;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-plaintext {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .form-control-plaintext.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .form-control-plaintext.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(2.3125rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #868e96;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.invalid-feedback {\n display: none;\n margin-top: .25rem;\n font-size: .875rem;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .invalid-feedback,\n.was-validated .form-control:valid ~ .invalid-tooltip, .form-control.is-valid ~ .invalid-feedback,\n.form-control.is-valid ~ .invalid-tooltip, .was-validated\n.custom-select:valid ~ .invalid-feedback,\n.was-validated\n.custom-select:valid ~ .invalid-tooltip,\n.custom-select.is-valid ~ .invalid-feedback,\n.custom-select.is-valid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator {\n background-color: rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description {\n color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid:focus, .custom-file-input.is-valid:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator {\n background-color: rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description {\n color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid:focus, .custom-file-input.is-invalid:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n border-radius: 0.25rem;\n transition: all 0.15s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n background-color: #0069d9;\n background-image: none;\n border-color: #0062cc;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #727b84;\n border-color: #6c757d;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n background-color: #727b84;\n background-image: none;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n background-color: #218838;\n background-image: none;\n border-color: #1e7e34;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n background-color: #138496;\n background-image: none;\n border-color: #117a8b;\n}\n\n.btn-warning {\n color: #111;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #111;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n background-color: #e0a800;\n background-image: none;\n border-color: #d39e00;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n background-color: #c82333;\n background-image: none;\n border-color: #bd2130;\n}\n\n.btn-light {\n color: #111;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #111;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:active, .btn-light.active,\n.show > .btn-light.dropdown-toggle {\n background-color: #e2e6ea;\n background-image: none;\n border-color: #dae0e5;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:active, .btn-dark.active,\n.show > .btn-dark.dropdown-toggle {\n background-color: #23272b;\n background-image: none;\n border-color: #1d2124;\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-secondary {\n color: #868e96;\n background-color: transparent;\n background-image: none;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:active, .btn-outline-light.active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:active, .btn-outline-dark.active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: normal;\n color: #007bff;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #868e96;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: normal;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #868e96;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n margin-bottom: 0;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: flex;\n align-items: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #495057;\n text-align: center;\n background-color: #e9ecef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n background-color: #e9ecef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #868e96;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #007bff;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #868e96;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #495057;\n pointer-events: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #e9ecef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #868e96;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #e9ecef #e9ecef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.show > .nav-pills .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-dark .navbar-brand {\n color: white;\n}\n\n.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {\n color: white;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0%;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #868e96;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #868e96;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #868e96;\n pointer-events: none;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #868e96;\n}\n\n.badge-secondary[href]:focus, .badge-secondary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #6c757d;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #111;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n color: #111;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #111;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:focus, .badge-light[href]:hover {\n color: #111;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:focus, .badge-dark[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #464a4e;\n background-color: #e7e8ea;\n border-color: #dddfe2;\n}\n\n.alert-secondary hr {\n border-top-color: #cfd2d6;\n}\n\n.alert-secondary .alert-link {\n color: #2e3133;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n line-height: 1rem;\n color: #fff;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #868e96;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\na.list-group-item-primary,\nbutton.list-group-item-primary {\n color: #004085;\n}\n\na.list-group-item-primary:focus, a.list-group-item-primary:hover,\nbutton.list-group-item-primary:focus,\nbutton.list-group-item-primary:hover {\n color: #004085;\n background-color: #9fcdff;\n}\n\na.list-group-item-primary.active,\nbutton.list-group-item-primary.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #464a4e;\n background-color: #dddfe2;\n}\n\na.list-group-item-secondary,\nbutton.list-group-item-secondary {\n color: #464a4e;\n}\n\na.list-group-item-secondary:focus, a.list-group-item-secondary:hover,\nbutton.list-group-item-secondary:focus,\nbutton.list-group-item-secondary:hover {\n color: #464a4e;\n background-color: #cfd2d6;\n}\n\na.list-group-item-secondary.active,\nbutton.list-group-item-secondary.active {\n color: #fff;\n background-color: #464a4e;\n border-color: #464a4e;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #155724;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #155724;\n background-color: #b1dfbb;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #0c5460;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #0c5460;\n background-color: #abdde5;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #856404;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #856404;\n background-color: #ffe8a1;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #721c24;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\na.list-group-item-light,\nbutton.list-group-item-light {\n color: #818182;\n}\n\na.list-group-item-light:focus, a.list-group-item-light:hover,\nbutton.list-group-item-light:focus,\nbutton.list-group-item-light:hover {\n color: #818182;\n background-color: #ececf6;\n}\n\na.list-group-item-light.active,\nbutton.list-group-item-light.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\na.list-group-item-dark,\nbutton.list-group-item-dark {\n color: #1b1e21;\n}\n\na.list-group-item-dark:focus, a.list-group-item-dark:hover,\nbutton.list-group-item-dark:focus,\nbutton.list-group-item-dark:hover {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\na.list-group-item-dark.active,\nbutton.list-group-item-dark.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #e9ecef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 5px;\n height: 5px;\n}\n\n.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 5px 0;\n}\n\n.tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n margin-left: -3px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 5px;\n}\n\n.tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n}\n\n.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n margin-top: -3px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 5px 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n margin-left: -3px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 5px;\n}\n\n.tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n}\n\n.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n margin-top: -3px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 10px;\n height: 5px;\n}\n\n.popover .arrow::before,\n.popover .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover .arrow::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover .arrow::after {\n content: \"\";\n border-width: 11px;\n}\n\n.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 10px;\n}\n\n.popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-bottom-width: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: -11px;\n margin-left: -6px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: -10px;\n margin-left: -6px;\n border-top-color: #fff;\n}\n\n.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 10px;\n}\n\n.popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n margin-top: -8px;\n border-left-width: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: -10px;\n border-right-color: #fff;\n}\n\n.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 10px;\n}\n\n.popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n margin-left: -7px;\n border-top-width: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: -10px;\n border-bottom-color: #fff;\n}\n\n.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 10px;\n}\n\n.popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n margin-top: -8px;\n border-right-width: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: -10px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 9px 14px;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n transition: transform 0.6s ease;\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #868e96 !important;\n}\n\na.bg-secondary:focus, a.bg-secondary:hover {\n background-color: #6c757d !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:focus, a.bg-light:hover {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:focus, a.bg-dark:hover {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #e9ecef !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #868e96 !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.d-print-block {\n display: none !important;\n}\n\n@media print {\n .d-print-block {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #868e96 !important;\n}\n\na.text-secondary:focus, a.text-secondary:hover {\n color: #6c757d !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:focus, a.text-light:hover {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:focus, a.text-dark:hover {\n color: #1d2124 !important;\n}\n\n.text-muted {\n color: #868e96 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","@mixin hover {\n // TODO: re-enable along with mq4-hover-shim\n// @if $enable-hover-media-query {\n// // See Media Queries Level 4: https://drafts.csswg.org/mediaqueries/#hover\n// // Currently shimmed by https://github.com/twbs/mq4-hover-shim\n// @media (hover: hover) {\n// &:hover { @content }\n// }\n// }\n// @else {\n// scss-lint:disable Indentation\n &:hover { @content }\n// scss-lint:enable Indentation\n// }\n}\n\n\n@mixin hover-focus {\n @if $enable-hover-media-query {\n &:focus { @content }\n @include hover { @content }\n } @else {\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin plain-hover-focus {\n @if $enable-hover-media-query {\n &,\n &:focus {\n @content\n }\n @include hover { @content }\n } @else {\n &,\n &:focus,\n &:hover {\n @content\n }\n }\n}\n\n@mixin hover-focus-active {\n @if $enable-hover-media-query {\n &:focus,\n &:active {\n @content\n }\n @include hover { @content }\n } @else {\n &:focus,\n &:active,\n &:hover {\n @content\n }\n }\n}\n","//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { font-size: $h1-font-size; }\nh2, .h2 { font-size: $h2-font-size; }\nh3, .h3 { font-size: $h3-font-size; }\nh4, .h4 { font-size: $h4-font-size; }\nh5, .h5 { font-size: $h5-font-size; }\nh6, .h6 { font-size: $h6-font-size; }\n\n.lead {\n font-size: $lead-font-size;\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n font-size: $display1-size;\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n font-size: $display2-size;\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n font-size: $display3-size;\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n font-size: $display4-size;\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n font-size: $small-font-size;\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n font-size: $blockquote-font-size;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%; // back to default font-size\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include transition($thumbnail-transition);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: ($spacer / 2);\n line-height: 1;\n}\n\n.figure-caption {\n font-size: $figure-caption-font-size;\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: http://caniuse.com/#feat=css-media-resolution\n @media\n only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n}\n","// Single side border-radius\n\n@mixin border-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n","@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n}\n","// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: $font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: $code-padding-y $code-padding-x;\n font-size: $code-font-size;\n color: $code-color;\n background-color: $code-bg;\n @include border-radius($border-radius);\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n padding: 0;\n color: inherit;\n background-color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $code-padding-y $code-padding-x;\n font-size: $code-font-size;\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: $code-font-size;\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n width: 100%;\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n margin-right: auto;\n margin-left: auto;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n width: 100%;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.1.\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name)\n } @else if $min == null {\n @include media-breakpoint-down($name)\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n @for $i from 1 through $columns {\n .order#{$infix}-#{$i} {\n order: $i;\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: $spacer;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n\n .table {\n background-color: $body-bg;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: (2 * $table-border-width);\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, -9));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Inverse styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n.thead-inverse {\n th {\n color: $table-inverse-color;\n background-color: $table-inverse-bg;\n }\n}\n\n.thead-default {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n }\n}\n\n.table-inverse {\n color: $table-inverse-color;\n background-color: $table-inverse-bg;\n\n th,\n td,\n thead th {\n border-color: $table-inverse-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-inverse-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-inverse-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Add `.table-responsive` to `.table`s and we'll make them mobile friendly by\n// enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n @include media-breakpoint-down(md) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n &.table-bordered {\n border: 0;\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// scss-lint:disable QualifyingElement, VendorPrefix\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n // // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n // height: $input-height;\n padding: $input-btn-padding-y $input-btn-padding-x;\n font-size: $font-size-base;\n line-height: $input-btn-line-height;\n color: $input-color;\n background-color: $input-bg;\n // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214.\n background-image: none;\n background-clip: padding-box;\n border: $input-btn-border-width solid $input-border-color;\n\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n @if $enable-rounded {\n // Manually use the if/else instead of the mixin to account for iOS override\n border-radius: $input-border-radius;\n } @else {\n // Otherwise undo the iOS default\n border-radius: 0;\n }\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Customize the `:focus` state to imitate native WebKit styles.\n @include form-control-focus();\n\n // Placeholder\n &::placeholder {\n color: $input-placeholder-color;\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n opacity: 1;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &:disabled,\n &[readonly] {\n background-color: $input-disabled-bg;\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n opacity: 1;\n }\n}\n\nselect.form-control {\n &:not([size]):not([multiple]) {\n height: $input-height;\n }\n\n &:focus::-ms-value {\n // Suppress the nested default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label text to\n// align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);\n padding-bottom: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);\n margin-bottom: 0; // Override the `<label>` default\n}\n\n.col-form-label-lg {\n padding-top: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);\n padding-bottom: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);\n font-size: $font-size-lg;\n}\n\n.col-form-label-sm {\n padding-top: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);\n padding-bottom: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);\n font-size: $font-size-sm;\n}\n\n\n//\n// Legends\n//\n\n// For use with horizontal and inline forms, when you need the legend text to\n// be the same size as regular labels, and to align with the form controls.\n.col-form-legend {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n margin-bottom: 0;\n font-size: $font-size-base;\n}\n\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n line-height: $input-btn-line-height;\n border: solid transparent;\n border-width: $input-btn-border-width 0;\n\n &.form-control-sm,\n &.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.form-control-sm {\n padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;\n font-size: $font-size-sm;\n line-height: $input-btn-line-height-sm;\n @include border-radius($input-border-radius-sm);\n}\n\nselect.form-control-sm {\n &:not([size]):not([multiple]) {\n height: $input-height-sm;\n }\n}\n\n.form-control-lg {\n padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;\n font-size: $font-size-lg;\n line-height: $input-btn-line-height-lg;\n @include border-radius($input-border-radius-lg);\n}\n\nselect.form-control-lg {\n &:not([size]):not([multiple]) {\n height: $input-height-lg;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: $form-group-margin-bottom;\n}\n\n.form-text {\n display: block;\n margin-top: $form-text-margin-top;\n}\n\n\n// Form grid\n//\n// Special replacement for our grid system's `.row` for tighter form layouts.\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: $form-check-margin-bottom;\n\n &.disabled {\n .form-check-label {\n color: $text-muted;\n }\n }\n}\n\n.form-check-label {\n padding-left: $form-check-input-gutter;\n margin-bottom: 0; // Override default `<label>` bottom margin\n}\n\n.form-check-input {\n position: absolute;\n margin-top: $form-check-input-margin-y;\n margin-left: -$form-check-input-gutter;\n\n &:only-child {\n position: static;\n }\n}\n\n// Radios and checkboxes on same line\n.form-check-inline {\n display: inline-block;\n\n .form-check-label {\n vertical-align: middle;\n }\n\n + .form-check-inline {\n margin-left: $form-check-inline-margin-x;\n }\n}\n\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server side validation.\n\n.invalid-feedback {\n display: none;\n margin-top: .25rem;\n font-size: .875rem;\n color: $form-feedback-invalid-color;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba($form-feedback-invalid-color,.8);\n border-radius: .2rem;\n}\n\n@include form-validation-state(\"valid\", $form-feedback-valid-color);\n@include form-validation-state(\"invalid\", $form-feedback-invalid-color);\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)\n\n // Because we use flex, the initial sizing of checkboxes is collapsed and\n // doesn't occupy the full-width (which is what we want for xs grid tier),\n // so we force that here.\n .form-check {\n width: 100%;\n }\n\n // Kick in the inline\n @include media-breakpoint-up(sm) {\n label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n\n // Inline-block all the things for \"inline\"\n .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n\n // Allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-plaintext {\n display: inline-block;\n }\n\n .input-group {\n width: auto;\n }\n\n .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-check-label {\n padding-left: 0;\n }\n .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: $form-check-input-margin-x;\n margin-left: 0;\n }\n\n // Custom form controls\n .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: $form-check-input-margin-x; // Flexbox alignment means we lose our HTML space here, so we compensate.\n vertical-align: text-bottom;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n","// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-color-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: none;\n @include box-shadow($input-focus-box-shadow);\n }\n}\n\n\n@mixin form-validation-state($state, $color) {\n\n .form-control,\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n &:focus {\n box-shadow: 0 0 0 .2rem rgba($color,.25);\n }\n\n ~ .invalid-feedback,\n ~ .invalid-tooltip {\n display: block;\n }\n }\n }\n\n\n // TODO: redo check markup lol crap\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n + .form-check-label {\n color: $color;\n }\n }\n }\n\n // custom radios and checks\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-indicator {\n background-color: rgba($color, .25);\n }\n ~ .custom-control-description {\n color: $color;\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-control {\n border-color: $color;\n\n &::before { border-color: inherit; }\n }\n &:focus {\n box-shadow: 0 0 0 .2rem rgba($color,.25);\n }\n }\n }\n}\n","// scss-lint:disable QualifyingElement\n\n//\n// Base styles\n//\n\n.btn {\n display: inline-block;\n font-weight: $btn-font-weight;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: $input-btn-border-width solid transparent;\n @include button-size($input-btn-padding-y, $input-btn-padding-x, $font-size-base, $input-btn-line-height, $btn-border-radius);\n @include transition($btn-transition);\n\n // Share hover and focus styles\n @include hover-focus {\n text-decoration: none;\n }\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: $btn-focus-box-shadow;\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n opacity: .65;\n @include box-shadow(none);\n }\n\n &:active,\n &.active {\n background-image: none;\n @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n }\n}\n\n// Future-proof disabling of clicks on `<a>` elements\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value, #fff);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &:disabled {\n background-color: transparent;\n @include box-shadow(none);\n }\n &,\n &:focus,\n &:active {\n border-color: transparent;\n box-shadow: none;\n }\n @include hover {\n border-color: transparent;\n }\n @include hover-focus {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n background-color: transparent;\n }\n &:disabled {\n color: $btn-link-disabled-color;\n\n @include hover-focus {\n text-decoration: none;\n }\n }\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: $btn-block-spacing-y;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $active-background: darken($background, 7.5%), $active-border: darken($border, 10%)) {\n @include color-yiq($background);\n background-color: $background;\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n &:hover {\n @include color-yiq($background);\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 3px rgba($border, .5);\n } @else {\n box-shadow: 0 0 0 3px rgba($border, .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n background-color: $background;\n border-color: $border;\n }\n\n &:active,\n &.active,\n .show > &.dropdown-toggle {\n background-color: $active-background;\n background-image: none; // Remove the gradient for the pressed/active state\n border-color: $active-border;\n @include box-shadow($btn-active-box-shadow);\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: #fff) {\n color: $color;\n background-color: transparent;\n background-image: none;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $color;\n border-color: $color;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 3px rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:active,\n &.active,\n .show > &.dropdown-toggle {\n color: $color-hover;\n background-color: $color;\n border-color: $color;\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n @include border-radius($border-radius);\n}\n","// Bootstrap functions\n//\n// Utility mixins and functions for evalutating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map) {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@mixin color-yiq($color) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= 150) {\n color: #111;\n } @else {\n color: #fff;\n }\n}\n\n// Retreive color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function grayscale($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, #000, #fff);\n\n @if $level < 0 {\n // Lighter values need a quick double negative for the Sass math to work\n @return mix($color-base, $color, $level * -1 * $theme-color-interval);\n } @else {\n @return mix($color-base, $color, $level * $theme-color-interval);\n }\n}\n",".fade {\n opacity: 0;\n @include transition($transition-fade);\n\n &.show {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.show {\n display: block;\n }\n}\n\ntr {\n &.collapse.show {\n display: table-row;\n }\n}\n\ntbody {\n &.collapse.show {\n display: table-row-group;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle {\n // Generate the caret automatically\n &::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: $caret-width * .85;\n vertical-align: $caret-width * .85;\n content: \"\";\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-left: $caret-width solid transparent;\n }\n\n &:empty::after {\n margin-left: 0;\n }\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n &::after {\n border-top: 0;\n border-bottom: $caret-width solid;\n }\n }\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues\n color: $body-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n display: block;\n width: 100%; // For `<button>`s\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n clear: both;\n font-weight: $font-weight-normal;\n color: $dropdown-link-color;\n text-align: inherit; // For `<button>`s\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n background: none; // For `<button>`s\n border: 0; // For `<button>`s\n\n @include hover-focus {\n color: $dropdown-link-hover-color;\n text-decoration: none;\n background-color: $dropdown-link-hover-bg;\n }\n\n &.active,\n &:active {\n color: $dropdown-link-active-color;\n text-decoration: none;\n background-color: $dropdown-link-active-bg;\n }\n\n &.disabled,\n &:disabled {\n color: $dropdown-link-disabled-color;\n background-color: transparent;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n}\n\n// Open state for the dropdown\n.show {\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n margin-bottom: 0; // for use with heading elements\n font-size: $font-size-sm;\n color: $dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: #e5e5e5) {\n height: 0;\n margin: ($spacer / 2) 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n","// scss-lint:disable QualifyingElement\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle; // match .btn alignment given font-size hack above\n\n > .btn {\n position: relative;\n flex: 0 1 auto;\n margin-bottom: 0;\n\n // Bring the hover, focused, and \"active\" buttons to the front to overlay\n // the borders properly\n @include hover {\n z-index: 2;\n }\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n\n // Prevent double borders when buttons are next to each other\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -$input-btn-border-width;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n\n .input-group {\n width: auto;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n\n &:not(:last-child):not(.dropdown-toggle) {\n @include border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n @include border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n @include border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n @include border-left-radius(0);\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.btn + .dropdown-toggle-split {\n padding-right: $input-btn-padding-x * .75;\n padding-left: $input-btn-padding-x * .75;\n\n &::after {\n margin-left: 0;\n }\n}\n\n.btn-sm + .dropdown-toggle-split {\n padding-right: $input-btn-padding-x-sm * .75;\n padding-left: $input-btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n padding-right: $input-btn-padding-x-lg * .75;\n padding-left: $input-btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n @include box-shadow($btn-active-box-shadow);\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n @include box-shadow(none);\n }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n .btn,\n .btn-group {\n width: 100%;\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -$input-btn-border-width;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n @include border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n @include border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n @include border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n @include border-top-radius(0);\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","//\n// Base styles\n//\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n // Add width 1% and flex-basis auto to ensure that button will not wrap out\n // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.\n width: 1%;\n margin-bottom: 0;\n\n // Bring the \"active\" form control to the front\n @include hover-focus-active {\n z-index: 3;\n }\n }\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n // Vertically centers the content of the addons within the input group\n display: flex;\n align-items: center;\n\n &:not(:first-child):not(:last-child) {\n @include border-radius(0);\n }\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n @extend .form-control-lg;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n @extend .form-control-sm;\n}\n\n\n//\n// Text input groups\n//\n\n.input-group-addon {\n padding: $input-btn-padding-y $input-btn-padding-x;\n margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\n font-size: $font-size-base; // Match inputs\n font-weight: $font-weight-normal;\n line-height: $input-btn-line-height;\n color: $input-color;\n text-align: center;\n background-color: $input-group-addon-bg;\n border: $input-btn-border-width solid $input-group-addon-border-color;\n @include border-radius($input-border-radius);\n\n // Sizing\n &.form-control-sm {\n padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;\n font-size: $font-size-sm;\n @include border-radius($input-border-radius-sm);\n }\n\n &.form-control-lg {\n padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;\n font-size: $font-size-lg;\n @include border-radius($input-border-radius-lg);\n }\n\n // scss-lint:disable QualifyingElement\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n // scss-lint:enable QualifyingElement\n}\n\n\n//\n// Reset rounded corners\n//\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n @include border-right-radius(0);\n}\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n @include border-left-radius(0);\n}\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n//\n// Button input groups\n//\n\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n\n + .btn {\n margin-left: (-$input-btn-border-width);\n }\n\n // Bring the \"active\" button to the front\n @include hover-focus-active {\n z-index: 3;\n }\n }\n\n // Negative margin to only have a single, shared border between the two\n &:not(:last-child) {\n > .btn,\n > .btn-group {\n margin-right: (-$input-btn-border-width);\n }\n }\n &:not(:first-child) {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: (-$input-btn-border-width);\n // Because specificity\n @include hover-focus-active {\n z-index: 3;\n }\n }\n }\n}\n","// scss-lint:disable PropertyCount, VendorPrefix\n\n// Embedded icons from Open Iconic.\n// Released under MIT and copyright 2014 Waybury.\n// https://useiconic.com/open\n\n\n// Checkboxes and radios\n//\n// Base class takes care of all the key behavioral aspects.\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: (1rem * $line-height-base);\n padding-left: $custom-control-gutter;\n margin-right: $custom-control-spacer-x;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1; // Put the input behind the label so it doesn't overlay text\n opacity: 0;\n\n &:checked ~ .custom-control-indicator {\n color: $custom-control-indicator-checked-color;\n background-color: $custom-control-indicator-checked-bg;\n @include box-shadow($custom-control-indicator-checked-box-shadow);\n }\n\n &:focus ~ .custom-control-indicator {\n // the mixin is not used here to make sure there is feedback\n box-shadow: $custom-control-indicator-focus-box-shadow;\n }\n\n &:active ~ .custom-control-indicator {\n color: $custom-control-indicator-active-color;\n background-color: $custom-control-indicator-active-bg;\n @include box-shadow($custom-control-indicator-active-box-shadow);\n }\n\n &:disabled {\n ~ .custom-control-indicator {\n background-color: $custom-control-indicator-disabled-bg;\n }\n\n ~ .custom-control-description {\n color: $custom-control-description-disabled-color;\n }\n }\n}\n\n// Custom indicator\n//\n// Generates a shadow element to create our makeshift checkbox/radio background.\n\n.custom-control-indicator {\n position: absolute;\n top: (($line-height-base - $custom-control-indicator-size) / 2);\n left: 0;\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n pointer-events: none;\n user-select: none;\n background-color: $custom-control-indicator-bg;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: $custom-control-indicator-bg-size;\n @include box-shadow($custom-control-indicator-box-shadow);\n}\n\n// Checkboxes\n//\n// Tweak just a few things for checkboxes.\n\n.custom-checkbox {\n .custom-control-indicator {\n @include border-radius($custom-checkbox-indicator-border-radius);\n }\n\n .custom-control-input:checked ~ .custom-control-indicator {\n background-image: $custom-checkbox-indicator-icon-checked;\n }\n\n .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: $custom-checkbox-indicator-indeterminate-bg;\n background-image: $custom-checkbox-indicator-icon-indeterminate;\n @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\n }\n}\n\n// Radios\n//\n// Tweak just a few things for radios.\n\n.custom-radio {\n .custom-control-indicator {\n border-radius: $custom-radio-indicator-border-radius;\n }\n\n .custom-control-input:checked ~ .custom-control-indicator {\n background-image: $custom-radio-indicator-icon-checked;\n }\n}\n\n\n// Layout options\n//\n// By default radios and checkboxes are `inline-block` with no additional spacing\n// set. Use these optional classes to tweak the layout.\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n\n .custom-control {\n margin-bottom: $custom-control-spacer-y;\n\n + .custom-control {\n margin-left: 0;\n }\n }\n}\n\n\n// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// http://primercss.io.\n//\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: $input-height;\n padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;\n line-height: $custom-select-line-height;\n color: $custom-select-color;\n vertical-align: middle;\n background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;\n background-size: $custom-select-bg-size;\n border: $custom-select-border-width solid $custom-select-border-color;\n @if $enable-rounded {\n border-radius: $custom-select-border-radius;\n } @else {\n border-radius: 0;\n }\n appearance: none;\n\n &:focus {\n border-color: $custom-select-focus-border-color;\n outline: none;\n @include box-shadow($custom-select-focus-box-shadow);\n\n &::-ms-value {\n // For visual consistency with other platforms/browsers,\n // supress the default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n }\n\n &:disabled {\n color: $custom-select-disabled-color;\n background-color: $custom-select-disabled-bg;\n }\n\n // Hides the default caret in IE11\n &::-ms-expand {\n opacity: 0;\n }\n}\n\n.custom-select-sm {\n height: $custom-select-height-sm;\n padding-top: $custom-select-padding-y;\n padding-bottom: $custom-select-padding-y;\n font-size: $custom-select-font-size-sm;\n}\n\n\n// File\n//\n// Custom file input.\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: $custom-file-height;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: $custom-file-width;\n max-width: 100%;\n height: $custom-file-height;\n margin: 0;\n opacity: 0;\n\n &:focus ~ .custom-file-control {\n @include box-shadow($custom-file-focus-box-shadow);\n }\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: $custom-file-height;\n padding: $custom-file-padding-x $custom-file-padding-y;\n line-height: $custom-file-line-height;\n color: $custom-file-color;\n pointer-events: none;\n user-select: none;\n background-color: $custom-file-bg;\n border: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius($custom-file-border-radius);\n @include box-shadow($custom-file-box-shadow);\n\n @each $lang, $text in map-get($custom-file-text, placeholder) {\n &:lang(#{$lang}):empty::after {\n content: $text;\n }\n }\n\n &::before {\n position: absolute;\n top: -$custom-file-border-width;\n right: -$custom-file-border-width;\n bottom: -$custom-file-border-width;\n z-index: 6;\n display: block;\n height: $custom-file-height;\n padding: $custom-file-padding-x $custom-file-padding-y;\n line-height: $custom-file-line-height;\n color: $custom-file-button-color;\n background-color: $custom-file-button-bg;\n border: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);\n }\n\n @each $lang, $text in map-get($custom-file-text, button-label) {\n &:lang(#{$lang})::before {\n content: $text;\n }\n }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s or `<ul>`s.\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: $nav-link-padding-y $nav-link-padding-x;\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Disabled state lightens text\n &.disabled {\n color: $nav-link-disabled-color;\n }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n .nav-item {\n margin-bottom: -$nav-tabs-border-width;\n }\n\n .nav-link {\n border: $nav-tabs-border-width solid transparent;\n @include border-top-radius($nav-tabs-border-radius);\n\n @include hover-focus {\n border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;\n }\n\n &.disabled {\n color: $nav-link-disabled-color;\n background-color: transparent;\n border-color: transparent;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n color: $nav-tabs-link-active-color;\n background-color: $nav-tabs-link-active-bg;\n border-color: $nav-tabs-link-active-border-color $nav-tabs-link-active-border-color $nav-tabs-link-active-bg;\n }\n\n .dropdown-menu {\n // Make dropdown border overlap tab border\n margin-top: -$nav-tabs-border-width;\n // Remove the top rounded corners here since there is a hard edge above the menu\n @include border-top-radius(0);\n }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n .nav-link {\n @include border-radius($nav-pills-border-radius);\n\n &.active,\n .show > & {\n color: $nav-pills-link-active-color;\n background-color: $nav-pills-link-active-bg;\n }\n }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n .nav-item {\n flex: 1 1 auto;\n text-align: center;\n }\n}\n\n.nav-justified {\n .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Navbar divider\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap; // allow us to do the line break for collapsing content\n align-items: center;\n justify-content: space-between; // space out brand from logo\n padding: $navbar-padding-y $navbar-padding-x;\n\n // Because flex properties aren't inherited, we need to redeclare these first\n // few properities so that content nested within behave properly.\n > .container,\n > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n display: inline-block;\n padding-top: $navbar-brand-padding-y;\n padding-bottom: $navbar-brand-padding-y;\n margin-right: $navbar-padding-x;\n font-size: $navbar-brand-font-size;\n line-height: inherit;\n white-space: nowrap;\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n display: flex;\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-link {\n padding-right: 0;\n padding-left: 0;\n }\n\n .dropdown-menu {\n position: static;\n float: none;\n }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n display: inline-block;\n padding-top: $nav-link-padding-y;\n padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orienation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n flex-basis: 100%;\n // For always expanded or extra full navbars, ensure content aligns itself\n // properly vertically. Can be easily overridden with flex utilities.\n align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n font-size: $navbar-toggler-font-size;\n line-height: 1;\n background: transparent; // remove default button style\n border: $border-width solid transparent; // remove default button style\n @include border-radius($navbar-toggler-border-radius);\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n > .container,\n > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n @include media-breakpoint-up($next) {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n\n .navbar-nav {\n flex-direction: row;\n\n .dropdown-menu {\n position: absolute;\n }\n\n .dropdown-menu-right {\n right: 0;\n left: auto; // Reset the default from `.dropdown-menu`\n }\n\n .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n }\n\n // For nesting containers, have to redeclare for alignment purposes\n > .container,\n > .container-fluid {\n flex-wrap: nowrap;\n }\n\n // scss-lint:disable ImportantRule\n .navbar-collapse {\n display: flex !important;\n }\n // scss-lint:enable ImportantRule\n\n .navbar-toggler {\n display: none;\n }\n }\n }\n }\n}\n\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n .navbar-brand {\n color: $navbar-light-active-color;\n\n @include hover-focus {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-light-color;\n\n @include hover-focus {\n color: $navbar-light-hover-color;\n }\n\n &.disabled {\n color: $navbar-light-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-light-color;\n border-color: $navbar-light-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-light-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-light-color;\n }\n}\n\n// White links against a dark background\n.navbar-dark {\n .navbar-brand {\n color: $navbar-dark-active-color;\n\n @include hover-focus {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-dark-color;\n\n @include hover-focus {\n color: $navbar-dark-hover-color;\n }\n\n &.disabled {\n color: $navbar-dark-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-dark-color;\n border-color: $navbar-dark-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-dark-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-dark-color;\n }\n}\n","//\n// Base styles\n//\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: $card-bg;\n background-clip: border-box;\n border: $card-border-width solid $card-border-color;\n @include border-radius($card-border-radius);\n}\n\n.card-body {\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n // as much space as possible, ensuring footers are aligned to the bottom.\n flex: 1 1 auto;\n padding: $card-spacer-x;\n}\n\n.card-title {\n margin-bottom: $card-spacer-y;\n}\n\n.card-subtitle {\n margin-top: -($card-spacer-y / 2);\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link {\n @include hover {\n text-decoration: none;\n }\n\n + .card-link {\n margin-left: $card-spacer-x;\n }\n}\n\n.card {\n > .list-group:first-child {\n .list-group-item:first-child {\n @include border-top-radius($card-border-radius);\n }\n }\n\n > .list-group:last-child {\n .list-group-item:last-child {\n @include border-bottom-radius($card-border-radius);\n }\n }\n}\n\n\n//\n// Optional textual caps\n//\n\n.card-header {\n padding: $card-spacer-y $card-spacer-x;\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\n background-color: $card-cap-bg;\n border-bottom: $card-border-width solid $card-border-color;\n\n &:first-child {\n @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n }\n}\n\n.card-footer {\n padding: $card-spacer-y $card-spacer-x;\n background-color: $card-cap-bg;\n border-top: $card-border-width solid $card-border-color;\n\n &:last-child {\n @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n margin-right: -($card-spacer-x / 2);\n margin-bottom: -$card-spacer-y;\n margin-left: -($card-spacer-x / 2);\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -($card-spacer-x / 2);\n margin-left: -($card-spacer-x / 2);\n}\n\n// Card image\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: $card-img-overlay-padding;\n}\n\n.card-img {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-radius($card-inner-border-radius);\n}\n\n// Card image caps\n.card-img-top {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img-bottom {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n// Card deck\n\n@include media-breakpoint-up(sm) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -$card-deck-margin;\n margin-left: -$card-deck-margin;\n\n .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: $card-deck-margin;\n margin-left: $card-deck-margin;\n }\n }\n}\n\n\n//\n// Card groups\n//\n\n@include media-breakpoint-up(sm) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n\n .card {\n flex: 1 0 0%;\n\n + .card {\n margin-left: 0;\n border-left: 0;\n }\n\n // Handle rounded corners\n @if $enable-rounded {\n &:first-child {\n @include border-right-radius(0);\n\n .card-img-top {\n border-top-right-radius: 0;\n }\n .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n }\n &:last-child {\n @include border-left-radius(0);\n\n .card-img-top {\n border-top-left-radius: 0;\n }\n .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n }\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n\n .card-img-top,\n .card-img-bottom {\n border-radius: 0;\n }\n }\n }\n }\n }\n}\n\n\n//\n// Columns\n//\n\n.card-columns {\n .card {\n margin-bottom: $card-columns-margin;\n }\n\n @include media-breakpoint-up(sm) {\n column-count: $card-columns-count;\n column-gap: $card-columns-gap;\n\n .card {\n display: inline-block; // Don't let them vertically span multiple columns\n width: 100%; // Don't let their width change\n }\n }\n}\n",".breadcrumb {\n padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n margin-bottom: 1rem;\n list-style: none;\n background-color: $breadcrumb-bg;\n @include border-radius($border-radius);\n @include clearfix;\n}\n\n.breadcrumb-item {\n float: left;\n\n // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n + .breadcrumb-item::before {\n display: inline-block; // Suppress underlining of the separator in modern browsers\n padding-right: $breadcrumb-item-padding;\n padding-left: $breadcrumb-item-padding;\n color: $breadcrumb-divider-color;\n content: \"#{$breadcrumb-divider}\";\n }\n\n // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\n // without `<ul>`s. The `::before` pseudo-element generates an element\n // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\n //\n // To trick IE into suppressing the underline, we give the pseudo-element an\n // underline and then immediately remove it.\n + .breadcrumb-item:hover::before {\n text-decoration: underline;\n }\n + .breadcrumb-item:hover::before {\n text-decoration: none;\n }\n\n &.active {\n color: $breadcrumb-active-color;\n }\n}\n","@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n",".pagination {\n display: flex;\n // 1-2: Disable browser default list styles\n padding-left: 0; // 1\n list-style: none; // 2\n @include border-radius();\n}\n\n.page-item {\n &:first-child {\n .page-link {\n margin-left: 0;\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n\n &.active .page-link {\n z-index: 2;\n color: $pagination-active-color;\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n color: $pagination-disabled-color;\n pointer-events: none;\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: $pagination-padding-y $pagination-padding-x;\n margin-left: -1px;\n line-height: $pagination-line-height;\n color: $pagination-color;\n background-color: $pagination-bg;\n border: $pagination-border-width solid $pagination-border-color;\n\n @include hover-focus {\n color: $pagination-hover-color;\n text-decoration: none;\n background-color: $pagination-hover-bg;\n border-color: $pagination-hover-border-color;\n }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);\n}\n\n.pagination-sm {\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);\n}\n","// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n display: inline-block;\n padding: $badge-padding-y $badge-padding-x;\n font-size: $badge-font-size;\n font-weight: $badge-font-weight;\n line-height: 1;\n color: $badge-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n @include border-radius();\n\n // Empty badges collapse automatically\n &:empty {\n display: none;\n }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n// Pill badges\n//\n// Make them extra rounded with a modifier to replace v3's badges.\n\n.badge-pill {\n padding-right: $badge-pill-padding-x;\n padding-left: $badge-pill-padding-x;\n @include border-radius($badge-pill-border-radius);\n}\n\n// Colors\n//\n// Contextual variations (linked badges get darker on :hover).\n\n@each $color, $value in $theme-colors {\n .badge-#{$color} {\n @include badge-variant($value);\n }\n}\n","@mixin badge-variant($bg) {\n @include color-yiq($bg);\n background-color: $bg;\n\n &[href] {\n @include hover-focus {\n @include color-yiq($bg);\n text-decoration: none;\n background-color: darken($bg, 10%);\n }\n }\n}\n",".jumbotron {\n padding: $jumbotron-padding ($jumbotron-padding / 2);\n margin-bottom: $jumbotron-padding;\n background-color: $jumbotron-bg;\n @include border-radius($border-radius-lg);\n\n @include media-breakpoint-up(sm) {\n padding: ($jumbotron-padding * 2) $jumbotron-padding;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n @include border-radius(0);\n}\n","//\n// Base styles\n//\n\n.alert {\n padding: $alert-padding-y $alert-padding-x;\n margin-bottom: $alert-margin-bottom;\n border: $alert-border-width solid transparent;\n @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n // Specified to prevent conflicts of changing $headings-color\n color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n // Adjust close link position\n .close {\n position: relative;\n top: -$alert-padding-y;\n right: -$alert-padding-x;\n padding: $alert-padding-y $alert-padding-x;\n color: inherit;\n }\n}\n\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n @include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));\n }\n}\n","@mixin alert-variant($background, $border, $color) {\n color: $color;\n background-color: $background;\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n","@keyframes progress-bar-stripes {\n from { background-position: $progress-height 0; }\n to { background-position: 0 0; }\n}\n\n.progress {\n display: flex;\n overflow: hidden; // force rounded corners by cropping it\n font-size: $progress-font-size;\n line-height: $progress-height;\n text-align: center;\n background-color: $progress-bg;\n @include border-radius($progress-border-radius);\n @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n height: $progress-height;\n line-height: $progress-height;\n color: $progress-bar-color;\n background-color: $progress-bar-bg;\n @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: $progress-height $progress-height;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes $progress-bar-animation-timing;\n}\n","// Gradients\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: #555, $outer-color: #333) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n",".media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n display: flex;\n flex-direction: column;\n\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 0;\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n width: 100%; // For `<button>`s (anchors become 100% by default though)\n color: $list-group-action-color;\n text-align: inherit; // For `<button>`s (anchors inherit)\n\n // Hover state\n @include hover-focus {\n color: $list-group-action-hover-color;\n text-decoration: none;\n background-color: $list-group-hover-bg;\n }\n\n &:active {\n color: $list-group-action-active-color;\n background-color: $list-group-action-active-bg;\n }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: $list-group-item-padding-y $list-group-item-padding-x;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -$list-group-border-width;\n background-color: $list-group-bg;\n border: $list-group-border-width solid $list-group-border-color;\n\n &:first-child {\n @include border-top-radius($list-group-border-radius);\n }\n\n &:last-child {\n margin-bottom: 0;\n @include border-bottom-radius($list-group-border-radius);\n }\n\n @include hover-focus {\n text-decoration: none;\n }\n\n &.disabled,\n &:disabled {\n color: $list-group-disabled-color;\n background-color: $list-group-disabled-bg;\n }\n\n // Include both here for `<a>`s and `<button>`s\n &.active {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: $list-group-active-color;\n background-color: $list-group-active-bg;\n border-color: $list-group-active-border-color;\n }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n }\n\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $color, $value in $theme-colors {\n @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\n}\n","// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n }\n\n //scss-lint:disable QualifyingElement\n a.list-group-item-#{$state},\n button.list-group-item-#{$state} {\n color: $color;\n\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: #fff;\n background-color: $color;\n border-color: $color;\n }\n }\n // scss-lint:enable QualifyingElement\n}\n",".close {\n float: right;\n font-size: $close-font-size;\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n @include hover-focus {\n color: $close-color;\n text-decoration: none;\n opacity: .75;\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// scss-lint:disable QualifyingElement\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n// scss-lint:enable QualifyingElement\n","// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal;\n display: none;\n overflow: hidden;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n @include transition($modal-transition);\n transform: translate(0, -25%);\n }\n &.show .modal-dialog { transform: translate(0, 0); }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: $modal-dialog-margin;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: $modal-content-bg;\n background-clip: padding-box;\n border: $modal-content-border-width solid $modal-content-border-color;\n @include border-radius($border-radius-lg);\n @include box-shadow($modal-content-box-shadow-xs);\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal-backdrop;\n background-color: $modal-backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $modal-backdrop-opacity; }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n align-items: center; // vertically center it\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n padding: $modal-header-padding;\n border-bottom: $modal-header-border-width solid $modal-header-border-color;\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when should there be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n padding: $modal-inner-padding;\n border-top: $modal-footer-border-width solid $modal-footer-border-color;\n\n // Easily place margin between footer elements\n > :not(:first-child) { margin-left: .25rem; }\n > :not(:last-child) { margin-right: .25rem; }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n max-width: $modal-md;\n margin: $modal-dialog-margin-y-sm-up auto;\n }\n\n .modal-content {\n @include box-shadow($modal-content-box-shadow-sm-up);\n }\n\n .modal-sm { max-width: $modal-sm; }\n}\n\n@include media-breakpoint-up(lg) {\n .modal-lg { max-width: $modal-lg; }\n}\n","// Base class\n.tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n margin: $tooltip-margin;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $font-size-sm;\n // Allow breaking very long words so they don't overflow the tooltip's bounds\n word-wrap: break-word;\n opacity: 0;\n\n &.show { opacity: $tooltip-opacity; }\n\n .arrow {\n position: absolute;\n display: block;\n width: $tooltip-arrow-width;\n height: $tooltip-arrow-height;\n }\n\n &.bs-tooltip-top {\n padding: $tooltip-arrow-width 0;\n .arrow {\n bottom: 0;\n }\n\n .arrow::before {\n margin-left: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n border-top-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-right {\n padding: 0 $tooltip-arrow-width;\n .arrow {\n left: 0;\n }\n\n .arrow::before {\n margin-top: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;\n border-right-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-bottom {\n padding: $tooltip-arrow-width 0;\n .arrow {\n top: 0;\n }\n\n .arrow::before {\n margin-left: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-bottom-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-left {\n padding: 0 $tooltip-arrow-width;\n .arrow {\n right: 0;\n }\n\n .arrow::before {\n right: 0;\n margin-top: -($tooltip-arrow-width - 2);\n content: \"\";\n border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-left-color: $tooltip-arrow-color;\n }\n }\n &.bs-tooltip-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-tooltip-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-tooltip-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-tooltip-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-tooltip-left;\n }\n }\n\n .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: $tooltip-max-width;\n padding: $tooltip-padding-y $tooltip-padding-x;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n @include border-radius($border-radius);\n}\n","// scss-lint:disable DuplicateProperty\n@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",".popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: $zindex-popover;\n display: block;\n max-width: $popover-max-width;\n padding: $popover-inner-padding;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $font-size-sm;\n // Allow breaking very long words so they don't overflow the popover's bounds\n word-wrap: break-word;\n background-color: $popover-bg;\n background-clip: padding-box;\n border: $popover-border-width solid $popover-border-color;\n @include border-radius($border-radius-lg);\n @include box-shadow($popover-box-shadow);\n\n // Arrows\n //\n // .arrow is outer, .arrow::after is inner\n\n .arrow {\n position: absolute;\n display: block;\n width: $popover-arrow-width;\n height: $popover-arrow-height;\n }\n\n .arrow::before,\n .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n }\n\n .arrow::before {\n content: \"\";\n border-width: $popover-arrow-outer-width;\n }\n .arrow::after {\n content: \"\";\n border-width: $popover-arrow-outer-width;\n }\n\n // Popover directions\n\n &.bs-popover-top {\n margin-bottom: $popover-arrow-width;\n\n .arrow {\n bottom: 0;\n }\n\n .arrow::before,\n .arrow::after {\n border-bottom-width: 0;\n }\n\n .arrow::before {\n bottom: -$popover-arrow-outer-width;\n margin-left: -($popover-arrow-outer-width - 5);\n border-top-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n bottom: -($popover-arrow-outer-width - 1);\n margin-left: -($popover-arrow-outer-width - 5);\n border-top-color: $popover-arrow-color;\n }\n }\n\n &.bs-popover-right {\n margin-left: $popover-arrow-width;\n\n .arrow {\n left: 0;\n }\n\n .arrow::before,\n .arrow::after {\n margin-top: -($popover-arrow-outer-width - 3);\n border-left-width: 0;\n }\n\n .arrow::before {\n left: -$popover-arrow-outer-width;\n border-right-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n left: -($popover-arrow-outer-width - 1);\n border-right-color: $popover-arrow-color;\n }\n }\n\n &.bs-popover-bottom {\n margin-top: $popover-arrow-width;\n\n .arrow {\n top: 0;\n }\n\n .arrow::before,\n .arrow::after {\n margin-left: -($popover-arrow-width - 3);\n border-top-width: 0;\n }\n\n .arrow::before {\n top: -$popover-arrow-outer-width;\n border-bottom-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n top: -($popover-arrow-outer-width - 1);\n border-bottom-color: $popover-arrow-color;\n }\n\n // This will remove the popover-header's border just below the arrow\n .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid $popover-header-bg;\n }\n }\n\n &.bs-popover-left {\n margin-right: $popover-arrow-width;\n\n .arrow {\n right: 0;\n }\n\n .arrow::before,\n .arrow::after {\n margin-top: -($popover-arrow-outer-width - 3);\n border-right-width: 0;\n }\n\n .arrow::before {\n right: -$popover-arrow-outer-width;\n border-left-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n right: -($popover-arrow-outer-width - 1);\n border-left-color: $popover-arrow-color;\n }\n }\n &.bs-popover-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-popover-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-popover-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-popover-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-popover-left;\n }\n }\n}\n\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n padding: $popover-header-padding-y $popover-header-padding-x;\n margin-bottom: 0; // Reset the default from Reboot\n font-size: $font-size-base;\n color: $popover-header-color;\n background-color: $popover-header-bg;\n border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\n $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});\n @include border-top-radius($offset-border-width);\n\n &:empty {\n display: none;\n }\n}\n\n.popover-body {\n padding: $popover-body-padding-y $popover-body-padding-x;\n color: $popover-body-color;\n}\n","// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n @include transition($carousel-transition);\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n// CSS3 transforms when supported by the browser\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n // Use flex for alignment (1-3)\n display: flex; // 1. allow flex styles\n align-items: center; // 2. vertically center contents\n justify-content: center; // 3. horizontally center contents\n width: $carousel-control-width;\n color: $carousel-control-color;\n text-align: center;\n opacity: $carousel-control-opacity;\n // We can't have a transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Hover/focus state\n @include hover-focus {\n color: $carousel-control-color;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n }\n}\n.carousel-control-prev {\n left: 0;\n}\n.carousel-control-next {\n right: 0;\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: $carousel-control-icon-width;\n height: $carousel-control-icon-width;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: $carousel-control-prev-icon-bg;\n}\n.carousel-control-next-icon {\n background-image: $carousel-control-next-icon-bg;\n}\n\n\n// Optional indicator pips\n//\n// Add an ordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0; // override <ol> default\n // Use the .carousel-control's width as margin so we don't overlay those\n margin-right: $carousel-control-width;\n margin-left: $carousel-control-width;\n list-style: none;\n\n li {\n position: relative;\n flex: 0 1 auto;\n width: $carousel-indicator-width;\n height: $carousel-indicator-height;\n margin-right: $carousel-indicator-spacer;\n margin-left: $carousel-indicator-spacer;\n text-indent: -999px;\n background-color: rgba($carousel-indicator-active-bg, .5);\n\n // Use pseudo classes to increase the hit area by 10px on top and bottom.\n &::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n &::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n }\n\n .active {\n background-color: $carousel-indicator-active-bg;\n }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n position: absolute;\n right: ((100% - $carousel-caption-width) / 2);\n bottom: 20px;\n left: ((100% - $carousel-caption-width) / 2);\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: $carousel-caption-color;\n text-align: center;\n}\n",".align-baseline { vertical-align: baseline !important; } // Browser default\n.align-top { vertical-align: top !important; }\n.align-middle { vertical-align: middle !important; }\n.align-bottom { vertical-align: bottom !important; }\n.align-text-bottom { vertical-align: text-bottom !important; }\n.align-text-top { vertical-align: text-top !important; }\n","// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n","@each $color, $value in $theme-colors {\n @include bg-variant('.bg-#{$color}', $value);\n}\n\n.bg-white { background-color: $white !important; }\n.bg-transparent { background-color: transparent !important; }\n","//\n// Border\n//\n\n.border { border: 1px solid $gray-200 !important; }\n.border-0 { border: 0 !important; }\n.border-top-0 { border-top: 0 !important; }\n.border-right-0 { border-right: 0 !important; }\n.border-bottom-0 { border-bottom: 0 !important; }\n.border-left-0 { border-left: 0 !important; }\n\n@each $color, $value in $theme-colors {\n .border-#{$color} {\n border-color: $value !important;\n }\n}\n\n.border-white {\n border-color: $white !important;\n}\n\n//\n// Border-radius\n//\n\n.rounded {\n border-radius: $border-radius !important;\n}\n.rounded-top {\n border-top-left-radius: $border-radius !important;\n border-top-right-radius: $border-radius !important;\n}\n.rounded-right {\n border-top-right-radius: $border-radius !important;\n border-bottom-right-radius: $border-radius !important;\n}\n.rounded-bottom {\n border-bottom-right-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n.rounded-left {\n border-top-left-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n","//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .d#{$infix}-none { display: none !important; }\n .d#{$infix}-inline { display: inline !important; }\n .d#{$infix}-inline-block { display: inline-block !important; }\n .d#{$infix}-block { display: block !important; }\n .d#{$infix}-table { display: table !important; }\n .d#{$infix}-table-cell { display: table-cell !important; }\n .d#{$infix}-flex { display: flex !important; }\n .d#{$infix}-inline-flex { display: inline-flex !important; }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n.d-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.d-print-none {\n @media print {\n display: none !important;\n }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n\n &::before {\n display: block;\n content: \"\";\n }\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n.embed-responsive-21by9 {\n &::before {\n padding-top: percentage(9 / 21);\n }\n}\n\n.embed-responsive-16by9 {\n &::before {\n padding-top: percentage(9 / 16);\n }\n}\n\n.embed-responsive-4by3 {\n &::before {\n padding-top: percentage(3 / 4);\n }\n}\n\n.embed-responsive-1by1 {\n &::before {\n padding-top: percentage(1 / 1);\n }\n}\n","// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n","@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .float#{$infix}-left { @include float-left; }\n .float#{$infix}-right { @include float-right; }\n .float#{$infix}-none { @include float-none; }\n }\n}\n","@mixin float-left {\n float: left !important;\n}\n@mixin float-right {\n float: right !important;\n}\n@mixin float-none {\n float: none !important;\n}\n","// Positioning\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.sticky-top {\n @supports (position: sticky) {\n position: sticky;\n top: 0;\n z-index: $zindex-sticky;\n }\n}\n","//\n// Screenreaders\n//\n\n.sr-only {\n @include sr-only();\n}\n\n.sr-only-focusable {\n @include sr-only-focusable();\n}\n","// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n// See: http://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n }\n}\n","// Width and height\n\n@each $prop, $abbrev in (width: w, height: h) {\n @each $size, $length in $sizes {\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n }\n}\n\n.mw-100 { max-width: 100% !important; }\n.mh-100 { max-height: 100% !important; }\n","// Margin and Padding\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @each $prop, $abbrev in (margin: m, padding: p) {\n @each $size, $length in $spacers {\n\n .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\n .#{$abbrev}t#{$infix}-#{$size} { #{$prop}-top: $length !important; }\n .#{$abbrev}r#{$infix}-#{$size} { #{$prop}-right: $length !important; }\n .#{$abbrev}b#{$infix}-#{$size} { #{$prop}-bottom: $length !important; }\n .#{$abbrev}l#{$infix}-#{$size} { #{$prop}-left: $length !important; }\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-right: $length !important;\n #{$prop}-left: $length !important;\n }\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-top: $length !important;\n #{$prop}-bottom: $length !important;\n }\n }\n }\n\n // Some special margin utils\n .m#{$infix}-auto { margin: auto !important; }\n .mt#{$infix}-auto { margin-top: auto !important; }\n .mr#{$infix}-auto { margin-right: auto !important; }\n .mb#{$infix}-auto { margin-bottom: auto !important; }\n .ml#{$infix}-auto { margin-left: auto !important; }\n .mx#{$infix}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my#{$infix}-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n }\n}\n","//\n// Text\n//\n\n// Alignment\n\n.text-justify { text-align: justify !important; }\n.text-nowrap { white-space: nowrap !important; }\n.text-truncate { @include text-truncate; }\n\n// Responsive alignment\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .text#{$infix}-left { text-align: left !important; }\n .text#{$infix}-right { text-align: right !important; }\n .text#{$infix}-center { text-align: center !important; }\n }\n}\n\n// Transformation\n\n.text-lowercase { text-transform: lowercase !important; }\n.text-uppercase { text-transform: uppercase !important; }\n.text-capitalize { text-transform: capitalize !important; }\n\n// Weight and italics\n\n.font-weight-normal { font-weight: $font-weight-normal; }\n.font-weight-bold { font-weight: $font-weight-bold; }\n.font-italic { font-style: italic; }\n\n// Contextual colors\n\n.text-white { color: #fff !important; }\n\n@each $color, $value in $theme-colors {\n @include text-emphasis-variant('.text-#{$color}', $value);\n}\n\n.text-muted { color: $text-muted !important; }\n\n// Misc\n\n.text-hide {\n @include text-hide();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n a#{$parent} {\n @include hover-focus {\n color: darken($color, 10%) !important;\n }\n }\n}\n","// CSS image replacement\n@mixin text-hide() {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","//\n// Visibility utilities\n//\n\n.visible {\n @include invisible(visible);\n}\n\n.invisible {\n @include invisible(hidden);\n}\n","// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/mixins/_clearfix.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"AAAA;;;;;ACAA,MAGI,OAAA,QAAA,SAAA,QAAA,SAAA,QAAA,OAAA,QAAA,MAAA,QAAA,SAAA,QAAA,SAAA,QAAA,QAAA,QAAA,OAAA,QAAA,OAAA,QAAA,QAAA,KAAA,OAAA,QAAA,YAAA,QAIA,UAAA,QAAA,YAAA,QAAA,UAAA,QAAA,OAAA,QAAA,UAAA,QAAA,SAAA,QAAA,QAAA,QAAA,OAAA,QAIA,gBAAA,EAAA,gBAAA,MAAA,gBAAA,MAAA,gBAAA,MAAA,gBAAA,OAKF,yBAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBACA,wBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UCGF,ECmBA,QADA,SDfE,WAAA,WAGF,KACE,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAKA,cACE,MAAA,aAMJ,QAAA,MAAA,OAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAWF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,KACA,iBAAA,KEOF,sBFEE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAaF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAQF,EACE,WAAA,EACA,cAAA,KClBF,0BD4BA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QCvBF,GD0BA,GC3BA,GD8BE,WAAA,EACA,cAAA,KAGF,MC1BA,MACA,MAFA,MD+BE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAIF,EC5BA,OD8BE,YAAA,OAIF,MACE,UAAA,IAQF,IClCA,IDoCE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QG3LA,QH8LE,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGvMA,oCAAA,oCH0ME,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,ECpCJ,KACA,ID6CA,IC5CA,KDgDE,YAAA,SAAA,CAAA,UACA,UAAA,IAIF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAGA,mBAAA,UAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAGE,WAAA,QAQF,MAEE,QAAA,aACA,cAAA,MAMF,OACE,cAAA,EAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBChFF,ODmFA,MCjFA,SADA,OAEA,SDqFE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OCnFA,MDqFE,SAAA,QAGF,OCnFA,ODqFE,eAAA,KC/EF,aACA,cDoFA,OCtFA,mBD0FE,mBAAA,OCnFF,gCACA,+BACA,gCDqFA,yBAIE,QAAA,EACA,aAAA,KCpFF,qBDuFA,kBAEE,WAAA,WACA,QAAA,EAIF,iBCvFA,2BACA,kBAFA,iBDiGE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SErGF,yCDEA,yCDyGE,OAAA,KEtGF,cF8GE,eAAA,KACA,mBAAA,KE1GF,4CDEA,yCDiHE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UACA,OAAA,QAGF,SACE,QAAA,KEvHF,SF6HE,QAAA,eCvHF,IAAK,IAAK,IAAK,IAAK,IAAK,IGnWzB,GAAA,GAAA,GAAA,GAAA,GAAA,GAEE,cAAA,MACA,YAAA,QACA,YAAA,IACA,YAAA,IACA,MAAA,QAGF,IAAA,GAAU,UAAA,OACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,QACV,IAAA,GAAU,UAAA,OACV,IAAA,GAAU,UAAA,QACV,IAAA,GAAU,UAAA,KAEV,MACE,UAAA,QACA,YAAA,IAIF,WACE,UAAA,KACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAQF,GACE,WAAA,KACA,cAAA,KACA,OAAA,EACA,WAAA,IAAA,MAAA,eHoXF,OG5WA,MAEE,UAAA,IACA,YAAA,IH+WF,MG5WA,KAEE,QAAA,KACA,iBAAA,QAQF,eC/EE,aAAA,EACA,WAAA,KDmFF,aCpFE,aAAA,EACA,WAAA,KDsFF,kBACE,QAAA,aADF,mCAII,aAAA,MAUJ,YACE,UAAA,IACA,eAAA,UAIF,YACE,cAAA,KACA,UAAA,QAGF,mBACE,QAAA,MACA,UAAA,IACA,MAAA,QAHF,2BAMI,QAAA,cEnHJ,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,QEZE,cAAA,ODOF,UAAA,KAGA,OAAA,KDcF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBACE,UAAA,IACA,MAAA,QGvCF,KR2fA,IACA,IACA,KQzfE,YAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UAIF,KACE,UAAA,MACA,MAAA,QACA,WAAA,WAGA,OACE,MAAA,QAKJ,IACE,QAAA,MAAA,MACA,UAAA,MACA,MAAA,KACA,iBAAA,QDrBE,cAAA,MCiBJ,QASI,QAAA,EACA,UAAA,KACA,YAAA,IAMJ,IACE,QAAA,MACA,UAAA,MACA,MAAA,QAHF,SAOI,UAAA,QACA,MAAA,QACA,WAAA,OAKJ,gBACE,WAAA,MACA,WAAA,OCjDA,WCAA,MAAA,KACA,cAAA,KACA,aAAA,KACA,aAAA,KACA,YAAA,KCmDE,yBFvDF,WCYI,UAAA,OC2CF,yBFvDF,WCYI,UAAA,OC2CF,yBFvDF,WCYI,UAAA,OC2CF,0BFvDF,WCYI,UAAA,QDAJ,iBCZA,MAAA,KACA,cAAA,KACA,aAAA,KACA,aAAA,KACA,YAAA,KDkBA,KCJA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,MACA,YAAA,MDOA,YACE,aAAA,EACA,YAAA,EAFF,iBTkkBF,0BS5jBM,cAAA,EACA,aAAA,EGjCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OZkmBF,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aYrmBI,SAAA,SACA,MAAA,KACA,WAAA,IACA,cAAA,KACA,aAAA,KAmBE,KACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,QFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,aAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,YAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,SAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,UAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,UAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,UAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,UFTR,YAAA,UESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,UFTR,YAAA,WESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,UFTR,YAAA,WESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,WFTR,YAAA,WESQ,WFTR,YAAA,WCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,0BC7BE,QACE,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,0BAAA,EAAA,eAAA,GAAA,MAAA,GAExB,eAAuB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAGrB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,EAAA,eAAA,EAAA,MAAA,EAAxB,YAAwB,0BAAA,GAAA,eAAA,EAAA,MAAA,EAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAAxB,aAAwB,0BAAA,GAAA,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YG9CF,OACE,MAAA,KACA,UAAA,KACA,cAAA,KACA,iBAAA,YbooDF,UaxoDA,UAQI,QAAA,OACA,eAAA,IACA,WAAA,IAAA,MAAA,QAVJ,gBAcI,eAAA,OACA,cAAA,IAAA,MAAA,QAfJ,mBAmBI,WAAA,IAAA,MAAA,QAnBJ,cAuBI,iBAAA,KbqoDJ,aa5nDA,aAGI,QAAA,MASJ,gBACE,OAAA,IAAA,MAAA,QbwnDF,mBaznDA,mBAKI,OAAA,IAAA,MAAA,QbynDJ,yBa9nDA,yBAWM,oBAAA,IAUN,yCAEI,iBAAA,gBASJ,4BAGM,iBAAA,iBC9EJ,edurDF,kBADA,kBclrDM,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qCdsrDF,qCc7qDU,iBAAA,QAnBR,iBdssDF,oBADA,oBcjsDM,iBAAA,QAMJ,oCAKM,iBAAA,QALN,uCdqsDF,uCc5rDU,iBAAA,QAnBR,edqtDF,kBADA,kBchtDM,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qCdotDF,qCc3sDU,iBAAA,QAnBR,YdouDF,eADA,ec/tDM,iBAAA,QAMJ,+BAKM,iBAAA,QALN,kCdmuDF,kCc1tDU,iBAAA,QAnBR,edmvDF,kBADA,kBc9uDM,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qCdkvDF,qCczuDU,iBAAA,QAnBR,cdkwDF,iBADA,iBc7vDM,iBAAA,QAMJ,iCAKM,iBAAA,QALN,oCdiwDF,oCcxvDU,iBAAA,QAnBR,adixDF,gBADA,gBc5wDM,iBAAA,QAMJ,gCAKM,iBAAA,QALN,mCdgxDF,mCcvwDU,iBAAA,QAnBR,YdgyDF,eADA,ec3xDM,iBAAA,QAMJ,+BAKM,iBAAA,QALN,kCd+xDF,kCctxDU,iBAAA,QAnBR,cd+yDF,iBADA,iBc1yDM,iBAAA,iBAMJ,iCAKM,iBAAA,iBALN,oCd8yDF,oCcryDU,iBAAA,iBDkFV,sBAGM,MAAA,KACA,iBAAA,QACA,aAAA,QALN,uBAWM,MAAA,QACA,iBAAA,QACA,aAAA,QAKN,YACE,MAAA,KACA,iBAAA,QbqtDF,eavtDA,ebwtDA,qBajtDI,aAAA,QAPJ,2BAWI,OAAA,EAXJ,oDAgBM,iBAAA,sBAhBN,uCAuBQ,iBAAA,uBF1EJ,4BE2FA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANJ,qCAUM,OAAA,GFrGN,4BE2FA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANJ,qCAUM,OAAA,GFrGN,4BE2FA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANJ,qCAUM,OAAA,GFrGN,6BE2FA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANJ,qCAUM,OAAA,GAfV,kBAOQ,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBAXR,kCAeU,OAAA,EExKV,cACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,OACA,UAAA,KACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,QAKE,cAAA,OCfE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YDCN,0BAyBI,iBAAA,YACA,OAAA,EEnBF,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,MAAA,oBFhBN,yCAkCI,MAAA,QAEA,QAAA,EApCJ,gCAkCI,MAAA,QAEA,QAAA,EApCJ,oCAkCI,MAAA,QAEA,QAAA,EApCJ,qCAkCI,MAAA,QAEA,QAAA,EApCJ,2BAkCI,MAAA,QAEA,QAAA,EApCJ,uBAAA,wBA8CI,iBAAA,QAEA,QAAA,EAIJ,gDAEI,OAAA,oBAFJ,qCAWI,MAAA,QACA,iBAAA,KAKJ,mBf45DA,oBe15DE,QAAA,MACA,MAAA,KAUF,gBACE,YAAA,oBACA,eAAA,oBACA,cAAA,EACA,UAAA,QACA,YAAA,IAGF,mBACE,YAAA,kBACA,eAAA,kBACA,UAAA,QACA,YAAA,IAGF,mBACE,YAAA,mBACA,eAAA,mBACA,UAAA,QACA,YAAA,IASF,wBACE,QAAA,MACA,MAAA,KACA,YAAA,QACA,eAAA,QACA,cAAA,EACA,YAAA,IACA,iBAAA,YACA,OAAA,MAAA,YACA,aAAA,IAAA,Efq5DmE,wCe95DrE,wCf85D8G,qDAI9G,gEAFA,6EACA,iEAFA,8Ee/5DA,qDf85DA,gEAFA,6EACA,iEAFA,8Ee94DI,cAAA,EACA,aAAA,EAaJ,iBAAA,8Bfg5DA,yCAFA,sDACA,0CAFA,uDe54DE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IR9IE,cAAA,MPsiEJ,2EAFA,wFACA,4EAFA,yFej5DA,gEAAA,mDAEI,OAAA,sBAIJ,iBAAA,8Bfs5DA,yCAFA,sDACA,0CAFA,uDel5DE,QAAA,MAAA,KACA,UAAA,QACA,YAAA,IR3JE,cAAA,MPyjEJ,2EAFA,wFACA,4EAFA,yFev5DA,gEAAA,mDAEI,OAAA,qBAUJ,YACE,cAAA,KAGF,WACE,QAAA,MACA,WAAA,OAQF,UACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,KACA,YAAA,KAJF,efw5DA,wBeh5DI,cAAA,IACA,aAAA,IASJ,YACE,SAAA,SACA,QAAA,MACA,aAAA,QAGF,kBACE,SAAA,SACA,WAAA,MACA,YAAA,SAHF,6CAMI,MAAA,QAIJ,kBACE,cAAA,EAGF,mBACE,QAAA,mBAAA,QAAA,mBAAA,QAAA,YACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,aAAA,EACA,aAAA,OAJF,qCAQI,SAAA,OACA,WAAA,EACA,aAAA,SACA,YAAA,EEjNF,gBACE,QAAA,KACA,MAAA,KACA,WAAA,OACA,UAAA,IACA,MAAA,QAGF,eACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,MACA,WAAA,MACA,UAAA,QACA,YAAA,EACA,MAAA,KACA,iBAAA,mBACA,cAAA,MjBwmEJ,wBiBnmEI,uBAAA,oCAAA,mCAEE,aAAA,QjBumEN,8BiBzmEI,6BAAA,0CAAA,yCAKI,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBjB8mER,wCACA,uCANqD,uCACrD,sCAAyC,oDAEzC,mDiBlnEI,mDjB+mEJ,kDiBpmEQ,QAAA,MAMJ,6CAAA,yDAGI,MAAA,QjB0mEiD,2CACzD,0CiB9mEI,uDjB6mEJ,sDiBrmEQ,QAAA,MAMJ,qDAAA,iEAGI,MAAA,QAHJ,6DAAA,yEAMM,iBAAA,QjBumEmD,+CAC7D,8CiB9mEI,2DjB6mEJ,0DiBjmEQ,QAAA,MAZJ,qEAAA,iFC/EA,iBAAA,QD+EA,mEAAA,+EAuBM,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAQN,+CAAA,2DAGI,aAAA,QAHJ,uDAAA,mEAKgB,aAAA,QjB+lEsC,4CAC1D,2CiBrmEI,wDjBomEJ,uDiB1lEQ,QAAA,MAVJ,qDAAA,iEAeM,WAAA,EAAA,EAAA,EAAA,MAAA,oBAtGR,kBACE,QAAA,KACA,MAAA,KACA,WAAA,OACA,UAAA,IACA,MAAA,QAGF,iBACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,MACA,WAAA,MACA,UAAA,QACA,YAAA,EACA,MAAA,KACA,iBAAA,mBACA,cAAA,MjBysEJ,0BiBpsEI,yBAAA,sCAAA,qCAEE,aAAA,QjBwsEN,gCiB1sEI,+BAAA,4CAAA,2CAKI,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBjB+sER,4CACA,2CANyD,2CACzD,0CAA6C,wDAE7C,uDiBntEI,uDjBgtEJ,sDiBrsEQ,QAAA,MAMJ,+CAAA,2DAGI,MAAA,QjB2sEqD,+CAC7D,8CiB/sEI,2DjB8sEJ,0DiBtsEQ,QAAA,MAMJ,uDAAA,mEAGI,MAAA,QAHJ,+DAAA,2EAMM,iBAAA,QjBwsEuD,mDACjE,kDiB/sEI,+DjB8sEJ,8DiBlsEQ,QAAA,MAZJ,uEAAA,mFC/EA,iBAAA,QD+EA,qEAAA,iFAuBM,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAQN,iDAAA,6DAGI,aAAA,QAHJ,yDAAA,qEAKgB,aAAA,QjBgsE0C,gDAC9D,+CiBtsEI,4DjBqsEJ,2DiB3rEQ,QAAA,MAVJ,uDAAA,mEAeM,WAAA,EAAA,EAAA,EAAA,MAAA,oBFmIV,aACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OAHF,yBASI,MAAA,KJnNA,yBI0MJ,mBAeM,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,cAAA,EAlBN,yBAuBM,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,cAAA,EA3BN,2BAgCM,QAAA,aACA,MAAA,KACA,eAAA,OAlCN,qCAuCM,QAAA,aAvCN,0BA2CM,MAAA,KA3CN,yBAiDM,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,MAAA,KACA,aAAA,EArDN,+BAwDM,SAAA,SACA,WAAA,EACA,aAAA,OACA,YAAA,EA3DN,6BA+DM,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OAhEN,mCAmEM,cAAA,GInUN,KACE,QAAA,aACA,YAAA,IACA,WAAA,OACA,YAAA,OACA,eAAA,OACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,OAAA,IAAA,MAAA,YCsFA,QAAA,QAAA,OACA,UAAA,KACA,YAAA,IAGE,cAAA,OJnGE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YdaJ,WAAA,WiBCE,gBAAA,KAbJ,WAAA,WAkBI,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBAnBJ,cAAA,cAyBI,QAAA,IAzBJ,mCA+BI,OAAA,QA/BJ,0CAAA,0CAoCI,iBAAA,KAUJ,enB+4EA,wBmB74EE,eAAA,KASA,aCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBMA,mBkBFE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,sBAAA,sBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kDAAA,kDpB27EF,mCoBx7EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,wDAAA,wDpBw7EJ,yCoBn7EQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,eCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBMA,qBkBFE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,qBAAA,qBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,qBAKJ,wBAAA,wBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,oDAAA,oDpB69EF,qCoB19EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,0DAAA,0DpB09EJ,2CoBr9EQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDaN,aCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBMA,mBkBFE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,sBAAA,sBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kDAAA,kDpB+/EF,mCoB5/EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,wDAAA,wDpB4/EJ,yCoBv/EQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,UCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBMA,gBkBFE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,gBAAA,gBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,oBAKJ,mBAAA,mBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,+CAAA,+CpBiiFF,gCoB9hFI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,qDAAA,qDpB8hFJ,sCoBzhFQ,WAAA,EAAA,EAAA,EAAA,MAAA,oBDaN,aCzDA,MAAA,QFAE,iBAAA,QEEF,aAAA,QlBMA,mBkBFE,MAAA,QFNA,iBAAA,QEQA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,sBAAA,sBAEE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,kDAAA,kDpBmkFF,mCoBhkFI,MAAA,QACA,iBAAA,QAIA,aAAA,QAEA,wDAAA,wDpBgkFJ,yCoB3jFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,YCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBMA,kBkBFE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,kBAAA,kBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,qBAAA,qBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,iDAAA,iDpBqmFF,kCoBlmFI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,uDAAA,uDpBkmFJ,wCoB7lFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,WCzDA,MAAA,QFAE,iBAAA,QEEF,aAAA,QlBMA,iBkBFE,MAAA,QFNA,iBAAA,QEQA,aAAA,QAGF,iBAAA,iBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,qBAKJ,oBAAA,oBAEE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,gDAAA,gDpBuoFF,iCoBpoFI,MAAA,QACA,iBAAA,QAIA,aAAA,QAEA,sDAAA,sDpBooFJ,uCoB/nFQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDaN,UCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBMA,gBkBFE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,gBAAA,gBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,kBAKJ,mBAAA,mBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,+CAAA,+CpByqFF,gCoBtqFI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,qDAAA,qDpBsqFJ,sCoBjqFQ,WAAA,EAAA,EAAA,EAAA,MAAA,kBDmBN,qBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,0DAAA,0DpB+pFF,2CoB5pFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,gEAAA,gEpB+pFJ,iDoB1pFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,uBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,6BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,6BAAA,6BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,qBAGF,gCAAA,gCAEE,MAAA,QACA,iBAAA,YAGF,4DAAA,4DpBisFF,6CoB9rFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,kEAAA,kEpBisFJ,mDoB5rFQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDtBN,qBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,0DAAA,0DpBmuFF,2CoBhuFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,gEAAA,gEpBmuFJ,iDoB9tFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,kBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,MAAA,oBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,uDAAA,uDpBqwFF,wCoBlwFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6DAAA,6DpBqwFJ,8CoBhwFQ,WAAA,EAAA,EAAA,EAAA,MAAA,oBDtBN,qBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,2BACE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,0DAAA,0DpBuyFF,2CoBpyFI,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,gEAAA,gEpBuyFJ,iDoBlyFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,oBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,0BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,0BAAA,0BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,6BAAA,6BAEE,MAAA,QACA,iBAAA,YAGF,yDAAA,yDpBy0FF,0CoBt0FI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,+DAAA,+DpBy0FJ,gDoBp0FQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,mBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,yBACE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,yBAAA,yBAEE,WAAA,EAAA,EAAA,EAAA,MAAA,qBAGF,4BAAA,4BAEE,MAAA,QACA,iBAAA,YAGF,wDAAA,wDpB22FF,yCoBx2FI,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,8DAAA,8DpB22FJ,+CoBt2FQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDtBN,kBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,MAAA,kBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,uDAAA,uDpB64FF,wCoB14FI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6DAAA,6DpB64FJ,8CoBx4FQ,WAAA,EAAA,EAAA,EAAA,MAAA,kBDXR,UACE,YAAA,IACA,MAAA,QACA,iBAAA,YjBrEA,gBiBwEE,MAAA,QACA,gBAAA,UACA,iBAAA,YACA,aAAA,YATJ,gBAAA,gBAcI,gBAAA,UACA,aAAA,YACA,WAAA,KAhBJ,mBAAA,mBAqBI,MAAA,QAWJ,mBAAA,QCbE,QAAA,MAAA,KACA,UAAA,QACA,YAAA,IAGE,cAAA,MDYJ,mBAAA,QCjBE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IAGE,cAAA,MDqBJ,WACE,QAAA,MACA,MAAA,KAFF,sBAMI,WAAA,MnBo5FJ,6BADA,4BmB94FA,6BAII,MAAA,KE1IJ,MACE,QAAA,ELEI,WAAA,QAAA,KAAA,OKHN,WAKI,QAAA,EAIJ,UACE,QAAA,KADF,eAGI,QAAA,MAIJ,iBAEI,QAAA,UAIJ,oBAEI,QAAA,gBAIJ,YACE,SAAA,SACA,OAAA,EACA,SAAA,OL5BI,WAAA,OAAA,KAAA,KhBujGN,UsB3jGA,QAEE,SAAA,SCyBE,wBACE,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GAjCJ,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,cAAA,EACA,YAAA,KAAA,MAAA,YAwDE,8BACE,YAAA,EDjDN,eACE,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,QAAA,EAAA,EACA,UAAA,KACA,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gBfxBE,cAAA,Oe+BJ,uBAEI,WAAA,EACA,cAAA,QAHJ,gCCNM,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GA1BJ,WAAA,EACA,aAAA,KAAA,MAAA,YACA,cAAA,KAAA,MACA,YAAA,KAAA,MAAA,YDwBF,sCC0BM,YAAA,EDfN,0BAEI,WAAA,EACA,YAAA,QAHJ,mCCjBM,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GAnBJ,WAAA,KAAA,MAAA,YACA,cAAA,KAAA,MAAA,YACA,YAAA,KAAA,MD6BF,yCCeM,YAAA,EDfN,mCASM,eAAA,EAKN,yBAEI,WAAA,EACA,aAAA,QAHJ,kCC/BM,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GD0BN,kCCdQ,QAAA,KDcR,mCCVQ,QAAA,aACA,MAAA,EACA,OAAA,EACA,aAAA,OACA,eAAA,OACA,QAAA,GAlCN,WAAA,KAAA,MAAA,YACA,aAAA,KAAA,MACA,cAAA,KAAA,MAAA,YDqCF,wCCCM,YAAA,EDDN,mCASM,eAAA,EAMN,kBEtEE,OAAA,EACA,OAAA,MAAA,EACA,SAAA,OACA,WAAA,IAAA,MAAA,QF0EF,eACE,QAAA,MACA,MAAA,KACA,QAAA,OAAA,OACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,YAAA,OACA,iBAAA,YACA,OAAA,EpB1EA,qBAAA,qBoB6EE,MAAA,QACA,gBAAA,KJ1FA,iBAAA,QI4EJ,sBAAA,sBAoBI,MAAA,KACA,gBAAA,KJjGA,iBAAA,QI4EJ,wBAAA,wBA2BI,MAAA,QACA,iBAAA,YAQJ,oBACE,QAAA,MAIF,iBACE,QAAA,MACA,QAAA,MAAA,OACA,cAAA,EACA,UAAA,QACA,MAAA,QACA,YAAA,OG9HF,WzB0uGA,oByBxuGE,SAAA,SACA,QAAA,mBAAA,QAAA,mBAAA,QAAA,YACA,eAAA,OzB+uGF,yByBnvGA,gBAOI,SAAA,SACA,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KzBmvGJ,+ByB3vGA,sBAaM,QAAA,EzBqvGN,gCADA,gCADA,+ByBhwGA,uBAAA,uBAAA,sBAkBM,QAAA,EAlBN,qBzBuwGA,2BACA,2BACA,iCACA,8BACA,oCACA,oCACA,0CyBlvGI,YAAA,KAKJ,aACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,iBAAA,MAAA,cAAA,MAAA,gBAAA,WAHF,0BAMI,MAAA,KAIJ,4BAEI,YAAA,EzByvGJ,4CyB3vGA,uDlB5BI,wBAAA,EACA,2BAAA,EP4xGJ,6CyBjwGA,kClBdI,uBAAA,EACA,0BAAA,EkB0CJ,uBACE,cAAA,SACA,aAAA,SAFF,8BAKI,YAAA,EAIJ,0CAAA,+BACE,cAAA,QACA,aAAA,QAGF,0CAAA,+BACE,cAAA,OACA,aAAA,OAoBF,oBACE,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,kBAAA,MAAA,eAAA,MAAA,YAAA,WACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OAHF,yBzBsuGA,+ByB/tGI,MAAA,KAPJ,8BzB2uGA,oCACA,oCACA,0CyB/tGI,WAAA,KACA,YAAA,EzBouGJ,qDyBnvGA,gElBtFI,2BAAA,EACA,0BAAA,EP80GJ,sDyBzvGA,2ClBpGI,uBAAA,EACA,wBAAA,EkB8IJ,uBzBotGA,kCyBjtGI,cAAA,EzBstGJ,4CyBztGA,yCzB2tGA,uDADA,oDyBntGM,SAAA,SACA,KAAA,cACA,eAAA,KC5JN,aACE,SAAA,SACA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,kBAAA,QAAA,eAAA,QAAA,YAAA,QACA,MAAA,K1B83GF,0BADA,4B0Bl4GA,2BAUI,SAAA,SACA,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAGA,MAAA,GACA,cAAA,E1B+3GJ,gCADA,kC0B74GA,iCAmBM,QAAA,E1Bu4GN,uCADA,yCADA,wCADA,yCADA,2CADA,0CADA,wCADA,0C0Bn5GA,yCAyBM,YAAA,K1Bs4GN,6C0B/5GA,4CnBWI,wBAAA,EACA,2BAAA,EPy5GJ,8C0Br6GA,6CnByBI,uBAAA,EACA,0BAAA,EmB1BJ,0BAsCI,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OAvCJ,8D1Bo7GA,sEOz6GI,wBAAA,EACA,2BAAA,EmBZJ,+D1B07GA,uEOj6GI,uBAAA,EACA,0BAAA,EPs6GJ,oB0Bz4GA,qBAEE,QAAA,YAAA,QAAA,YAAA,QAAA,K1B84GF,yB0Bh5GA,0BAQI,SAAA,SACA,QAAA,E1Bg5GJ,8BACA,2CAEA,2CADA,wD0B35GA,+B1Bs5GA,4CAEA,4CADA,yD0Bv4GI,YAAA,KAIJ,qBAAuB,aAAA,KACvB,oBAAsB,YAAA,KAQtB,kBACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,QAAA,QAAA,OACA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,YAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,QnBlGE,cAAA,OPs/GJ,uC0Bh6GA,oCAkBI,WAAA,E1Bs5GJ,wFACA,+EAHA,uDACA,oE0Bn3GA,uC1Bi3GA,oDO9+GI,wBAAA,EACA,2BAAA,EmBqIJ,sC1Bk3GA,mDAGA,qEACA,kFAHA,yDACA,sEO5+GI,uBAAA,EACA,0BAAA,EoBvBJ,gBACE,SAAA,SACA,QAAA,MACA,WAAA,OACA,aAAA,OAGF,uBACE,QAAA,mBAAA,QAAA,mBAAA,QAAA,YACA,aAAA,KAGF,sBACE,SAAA,SACA,QAAA,GACA,QAAA,EAHF,4DAMI,MAAA,KTrBA,iBAAA,QSeJ,0DAaI,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAbJ,2DAiBI,MAAA,KACA,iBAAA,QAlBJ,qDAwBM,MAAA,QAxBN,6DA2BQ,iBAAA,QAUR,sBACE,cAAA,EADF,8BAKI,SAAA,SACA,IAAA,OACA,KAAA,EACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,eAAA,KACA,QAAA,GACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,QAdJ,6BAoBI,SAAA,SACA,IAAA,OACA,KAAA,EACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,QAAA,GACA,kBAAA,UACA,oBAAA,OAAA,OACA,gBAAA,IAAA,IASJ,+CpB5FI,cAAA,OoB4FJ,6ET1FI,iBAAA,QS0FJ,4EAUM,iBAAA,yMAVN,mFT1FI,iBAAA,QS0FJ,kFAoBM,iBAAA,sJApBN,sFA0BM,iBAAA,mBA1BN,4FA6BM,iBAAA,mBASN,4CAEI,cAAA,IAFJ,0EThII,iBAAA,QSgIJ,yEAUM,iBAAA,mJAVN,mFAgBM,iBAAA,mBAYN,eACE,QAAA,aACA,MAAA,KACA,OAAA,oBACA,QAAA,QAAA,QAAA,QAAA,OACA,YAAA,IACA,MAAA,QACA,eAAA,OACA,WAAA,KAAA,uKAAA,UAAA,MAAA,OAAA,OACA,gBAAA,IAAA,KACA,OAAA,IAAA,MAAA,QAEE,cAAA,OAIF,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAhBF,qBAmBI,aAAA,QACA,QAAA,EACA,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,qBArBJ,gCA6BM,MAAA,QACA,iBAAA,KA9BN,yBAAA,qCAoCI,OAAA,KACA,cAAA,OACA,iBAAA,KAtCJ,wBA0CI,MAAA,QACA,iBAAA,QA3CJ,2BAgDI,QAAA,EAIJ,kBACE,OAAA,sBACA,YAAA,QACA,eAAA,QACA,UAAA,IAGF,kBACE,OAAA,qBACA,YAAA,QACA,eAAA,QACA,UAAA,KAQF,aACE,SAAA,SACA,QAAA,aACA,MAAA,KACA,OAAA,oBACA,cAAA,EAGF,mBACE,SAAA,SACA,QAAA,EACA,MAAA,KACA,OAAA,oBACA,OAAA,EACA,QAAA,EANF,8CASI,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBAVJ,sDAaM,aAAA,QAbN,sDAmBM,QAAA,SAKN,mBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,EACA,OAAA,oBACA,QAAA,QAAA,OACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,OAAA,IAAA,MAAA,QpBhRE,cAAA,OoBqQJ,0BAgBI,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,QAAA,EACA,QAAA,MACA,OAAA,oCACA,QAAA,QAAA,OACA,YAAA,IACA,MAAA,QACA,QAAA,ST7RA,iBAAA,QS+RA,YAAA,IAAA,MAAA,QpBjSA,cAAA,EAAA,OAAA,OAAA,EqBCJ,KACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,MAAA,K1BGA,gBAAA,gB0BAE,gBAAA,KALJ,mBAUI,MAAA,QAQJ,UACE,cAAA,IAAA,MAAA,QADF,oBAII,cAAA,KAJJ,oBAQI,OAAA,IAAA,MAAA,YrB7BA,uBAAA,OACA,wBAAA,OqBoBJ,0BAAA,0BAYM,aAAA,QAAA,QAAA,QAZN,6BAgBM,MAAA,QACA,iBAAA,YACA,aAAA,Y5BgwHN,mC4BlxHA,2BAwBI,MAAA,QACA,iBAAA,KACA,aAAA,QAAA,QAAA,KA1BJ,yBA+BI,WAAA,KrBpDA,uBAAA,EACA,wBAAA,EqB8DJ,qBrBrEI,cAAA,OqBqEJ,4B5ByvHA,2B4BlvHI,MAAA,KACA,iBAAA,QASJ,oBAEI,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,WAAA,OAIJ,yBAEI,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,WAAA,OASJ,uBAEI,QAAA,KAFJ,qBAKI,QAAA,MClGJ,QACE,SAAA,SACA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,QAAA,cAAA,QAAA,gBAAA,cACA,QAAA,MAAA,KANF,mB7B+1HA,yB6Bn1HI,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,QAAA,cAAA,QAAA,gBAAA,cASJ,cACE,QAAA,aACA,YAAA,SACA,eAAA,SACA,aAAA,KACA,UAAA,QACA,YAAA,QACA,YAAA,O3B9BA,oBAAA,oB2BiCE,gBAAA,KASJ,YACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KALF,sBAQI,cAAA,EACA,aAAA,EATJ,2BAaI,SAAA,OACA,MAAA,KASJ,aACE,QAAA,aACA,YAAA,MACA,eAAA,MAYF,iBACE,wBAAA,KAAA,WAAA,KACA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAGA,kBAAA,OAAA,eAAA,OAAA,YAAA,OAIF,gBACE,QAAA,OAAA,OACA,UAAA,QACA,YAAA,EACA,iBAAA,YACA,OAAA,IAAA,MAAA,YtB5GE,cAAA,OLcF,sBAAA,sB2BkGE,gBAAA,KATJ,8CAcI,OAAA,QAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,QAAA,GACA,WAAA,UAAA,OAAA,OACA,gBAAA,KAAA,KlB7DE,4BkBuEA,6B7Bi0HF,mC6B7zHQ,cAAA,EACA,aAAA,GlBzFN,yBkBoFA,kBAUI,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,iBAAA,MAAA,cAAA,MAAA,gBAAA,WAXJ,8BAcM,mBAAA,WAAA,sBAAA,OAAA,mBAAA,IAAA,eAAA,IAdN,6CAiBQ,SAAA,SAjBR,mDAqBQ,MAAA,EACA,KAAA,KAtBR,wCA0BQ,cAAA,MACA,aAAA,MA3BR,6B7Bm2HF,mC6Bj0HQ,cAAA,OAAA,UAAA,OAlCN,mCAsCM,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KAzCN,kCA6CM,QAAA,KA7CN,yCAkDQ,IAAA,KACA,OAAA,MlB1HR,4BkBuEA,6B7By3HF,mC6Br3HQ,cAAA,EACA,aAAA,GlBzFN,yBkBoFA,kBAUI,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,iBAAA,MAAA,cAAA,MAAA,gBAAA,WAXJ,8BAcM,mBAAA,WAAA,sBAAA,OAAA,mBAAA,IAAA,eAAA,IAdN,6CAiBQ,SAAA,SAjBR,mDAqBQ,MAAA,EACA,KAAA,KAtBR,wCA0BQ,cAAA,MACA,aAAA,MA3BR,6B7B25HF,mC6Bz3HQ,cAAA,OAAA,UAAA,OAlCN,mCAsCM,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KAzCN,kCA6CM,QAAA,KA7CN,yCAkDQ,IAAA,KACA,OAAA,MlB1HR,4BkBuEA,6B7Bi7HF,mC6B76HQ,cAAA,EACA,aAAA,GlBzFN,yBkBoFA,kBAUI,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,iBAAA,MAAA,cAAA,MAAA,gBAAA,WAXJ,8BAcM,mBAAA,WAAA,sBAAA,OAAA,mBAAA,IAAA,eAAA,IAdN,6CAiBQ,SAAA,SAjBR,mDAqBQ,MAAA,EACA,KAAA,KAtBR,wCA0BQ,cAAA,MACA,aAAA,MA3BR,6B7Bm9HF,mC6Bj7HQ,cAAA,OAAA,UAAA,OAlCN,mCAsCM,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KAzCN,kCA6CM,QAAA,KA7CN,yCAkDQ,IAAA,KACA,OAAA,MlB1HR,6BkBuEA,6B7By+HF,mC6Br+HQ,cAAA,EACA,aAAA,GlBzFN,0BkBoFA,kBAUI,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,iBAAA,MAAA,cAAA,MAAA,gBAAA,WAXJ,8BAcM,mBAAA,WAAA,sBAAA,OAAA,mBAAA,IAAA,eAAA,IAdN,6CAiBQ,SAAA,SAjBR,mDAqBQ,MAAA,EACA,KAAA,KAtBR,wCA0BQ,cAAA,MACA,aAAA,MA3BR,6B7B2gIF,mC6Bz+HQ,cAAA,OAAA,UAAA,OAlCN,mCAsCM,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KAzCN,kCA6CM,QAAA,KA7CN,yCAkDQ,IAAA,KACA,OAAA,MAxDZ,eAeQ,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,iBAAA,MAAA,cAAA,MAAA,gBAAA,WAhBR,0B7B+iIA,gC6BtiIU,cAAA,EACA,aAAA,EAVV,2BAmBU,mBAAA,WAAA,sBAAA,OAAA,mBAAA,IAAA,eAAA,IAnBV,0CAsBY,SAAA,SAtBZ,gDA0BY,MAAA,EACA,KAAA,KA3BZ,qCA+BY,cAAA,MACA,aAAA,MAhCZ,0B7B0kIA,gC6BniIU,cAAA,OAAA,UAAA,OAvCV,gCA2CU,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KA9CV,+BAkDU,QAAA,KAlDV,sCAuDY,IAAA,KACA,OAAA,KAcZ,4BAEI,MAAA,eAFJ,kCAAA,kCAKM,MAAA,eALN,oCAWM,MAAA,eAXN,0CAAA,0CAcQ,MAAA,eAdR,6CAkBQ,MAAA,e7B6hIR,4CAEA,2CADA,yC6BhjIA,0CA0BM,MAAA,eA1BN,8BA+BI,MAAA,eACA,aAAA,eAhCJ,mCAoCI,iBAAA,oPApCJ,2BAwCI,MAAA,eAxCJ,6BA0CM,MAAA,eA1CN,mCAAA,mCA6CQ,MAAA,eAOR,2BAEI,MAAA,KAFJ,iCAAA,iCAKM,MAAA,KALN,mCAWM,MAAA,qBAXN,yCAAA,yCAcQ,MAAA,sBAdR,4CAkBQ,MAAA,sB7ByhIR,2CAEA,0CADA,wC6B5iIA,yCA0BM,MAAA,KA1BN,6BA+BI,MAAA,qBACA,aAAA,qBAhCJ,kCAoCI,iBAAA,0PApCJ,0BAwCI,MAAA,qBAxCJ,4BA0CM,MAAA,KA1CN,kCAAA,kCA6CQ,MAAA,KC9SR,MACE,SAAA,SACA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,UAAA,EACA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,iBvBRE,cAAA,OuBAJ,SAYI,aAAA,EACA,YAAA,EAbJ,2DvBMI,uBAAA,OACA,wBAAA,OuBPJ,yDvBoBI,2BAAA,OACA,0BAAA,OuBQJ,WAGE,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,QAGF,YACE,cAAA,OAGF,eACE,WAAA,SACA,cAAA,EAGF,sBACE,cAAA,E5BpCA,iB4ByCE,gBAAA,KAFJ,sBAMI,YAAA,QAQJ,aACE,QAAA,OAAA,QACA,cAAA,EACA,iBAAA,gBACA,cAAA,IAAA,MAAA,iBAJF,yBvB/DI,cAAA,mBAAA,mBAAA,EAAA,EuB+DJ,sDAYM,WAAA,EAKN,aACE,QAAA,OAAA,QACA,iBAAA,gBACA,WAAA,IAAA,MAAA,iBAHF,wBvBhFI,cAAA,EAAA,EAAA,mBAAA,mBuB+FJ,kBACE,aAAA,SACA,cAAA,QACA,YAAA,SACA,cAAA,EAGF,mBACE,aAAA,SACA,YAAA,SAIF,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,QAGF,UACE,MAAA,KvBtHE,cAAA,mBuB2HJ,cACE,MAAA,KvBtHE,uBAAA,mBACA,wBAAA,mBuByHJ,iBACE,MAAA,KvB7GE,2BAAA,mBACA,0BAAA,mBuBmHJ,WACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OAFF,iBAKI,cAAA,KnBrFA,yBmBgFJ,WASI,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,aAAA,MACA,YAAA,MAXJ,iBAcM,QAAA,YAAA,QAAA,YAAA,QAAA,KAEA,iBAAA,EAAA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,aAAA,KACA,cAAA,EACA,YAAA,MAUN,YACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OAFF,kBAOI,cAAA,KnBrHA,yBmB8GJ,YAWI,mBAAA,WAAA,sBAAA,OAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KAXJ,kBAgBM,iBAAA,EAAA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GACA,cAAA,EAjBN,wBAoBQ,YAAA,EACA,YAAA,EArBR,8BvBzJI,wBAAA,EACA,2BAAA,EPggJF,2C8Bx2IF,4CA+BY,wBAAA,E9B60IV,2C8B52IF,+CAmCY,2BAAA,EAnCZ,6BvB3II,uBAAA,EACA,0BAAA,EP8/IF,0C8Bp3IF,2CA4CY,uBAAA,E9B40IV,0C8Bx3IF,8CAgDY,0BAAA,EAhDZ,6BvBtKI,cAAA,OPqiJF,0C8B/3IF,2CvBhKI,uBAAA,OACA,wBAAA,OPmiJF,0C8Bp4IF,8CvBlJI,2BAAA,OACA,0BAAA,OuBiJJ,sEvBtKI,cAAA,EPojJF,mFADA,mFADA,uF8B54IF,oFvBtKI,cAAA,GuB2PJ,oBAEI,cAAA,OnBrMA,yBmBmMJ,cAMI,qBAAA,EAAA,kBAAA,EAAA,aAAA,EACA,mBAAA,QAAA,gBAAA,QAAA,WAAA,QAPJ,oBAUM,QAAA,aACA,MAAA,MC1QN,YACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,QAAA,OAAA,KACA,cAAA,KACA,WAAA,KACA,iBAAA,QxBFE,cAAA,OwBMJ,0CAGI,QAAA,aACA,cAAA,MACA,aAAA,MACA,MAAA,QACA,QAAA,IAPJ,gDAiBI,gBAAA,UAjBJ,gDAqBI,gBAAA,KArBJ,wBAyBI,MAAA,QCnCJ,YACE,QAAA,YAAA,QAAA,YAAA,QAAA,K5BGA,aAAA,EACA,WAAA,KGDE,cAAA,OyBEJ,WACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,OACA,YAAA,KACA,YAAA,KACA,MAAA,QACA,iBAAA,KACA,OAAA,IAAA,MAAA,QARF,iBAWI,MAAA,QACA,gBAAA,KACA,iBAAA,QACA,aAAA,QAdJ,iBAkBI,QAAA,EACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBApBJ,yCAyBI,OAAA,QAIJ,kCAGM,YAAA,EzBPF,uBAAA,OACA,0BAAA,OyBGJ,iCzBlBI,wBAAA,OACA,2BAAA,OyBiBJ,6BAcI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAjBJ,+BAqBI,MAAA,QACA,eAAA,KAEA,OAAA,KACA,iBAAA,KACA,aAAA,QC1DF,0BACE,QAAA,OAAA,OACA,UAAA,QACA,YAAA,IAKE,iD1BoBF,uBAAA,MACA,0BAAA,M0BhBE,gD1BCF,wBAAA,MACA,2BAAA,M0BfF,0BACE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IAKE,iD1BoBF,uBAAA,MACA,0BAAA,M0BhBE,gD1BCF,wBAAA,MACA,2BAAA,M2BbJ,OACE,QAAA,aACA,QAAA,MAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,WAAA,OACA,YAAA,OACA,eAAA,S3BTE,cAAA,O2BCJ,aAaI,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KAOF,YACE,cAAA,KACA,aAAA,K3B9BE,cAAA,M2BuCF,eC1CA,MAAA,KACA,iBAAA,QjCgBA,2BAAA,2BiCZI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,iBC1CA,MAAA,KACA,iBAAA,QjCgBA,6BAAA,6BiCZI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,eC1CA,MAAA,KACA,iBAAA,QjCgBA,2BAAA,2BiCZI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,YC1CA,MAAA,KACA,iBAAA,QjCgBA,wBAAA,wBiCZI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,eC1CA,MAAA,QACA,iBAAA,QjCgBA,2BAAA,2BiCZI,MAAA,QACA,gBAAA,KACA,iBAAA,QDmCJ,cC1CA,MAAA,KACA,iBAAA,QjCgBA,0BAAA,0BiCZI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,aC1CA,MAAA,QACA,iBAAA,QjCgBA,yBAAA,yBiCZI,MAAA,QACA,gBAAA,KACA,iBAAA,QDmCJ,YC1CA,MAAA,KACA,iBAAA,QjCgBA,wBAAA,wBiCZI,MAAA,KACA,gBAAA,KACA,iBAAA,QCRN,WACE,QAAA,KAAA,KACA,cAAA,KACA,iBAAA,Q7BCE,cAAA,MIwDA,yByB5DJ,WAOI,QAAA,KAAA,MAIJ,iBACE,cAAA,EACA,aAAA,E7BTE,cAAA,E8BAJ,OACE,SAAA,SACA,QAAA,OAAA,QACA,cAAA,KACA,OAAA,IAAA,MAAA,Y9BJE,cAAA,O8BSJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,mBACE,cAAA,KADF,0BAKI,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,OAAA,QACA,MAAA,QAUF,eC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDqCF,iBC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,oBACE,iBAAA,QAGF,6BACE,MAAA,QDqCF,eC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDqCF,YC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,eACE,iBAAA,QAGF,wBACE,MAAA,QDqCF,eC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDqCF,cC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,iBACE,iBAAA,QAGF,0BACE,MAAA,QDqCF,aC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,gBACE,iBAAA,QAGF,yBACE,MAAA,QDqCF,YC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,eACE,iBAAA,QAGF,wBACE,MAAA,QCVJ,wCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAFP,gCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAGP,UACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,OAAA,KACA,SAAA,OACA,UAAA,OACA,iBAAA,QhCNE,cAAA,OgCWJ,cACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,MAAA,KACA,WAAA,OACA,iBAAA,QvBhBI,WAAA,MAAA,IAAA,KuBoBN,sBrBkBE,iBAAA,iKqBhBA,gBAAA,KAAA,KAGF,uBACE,kBAAA,qBAAA,GAAA,OAAA,SAAA,UAAA,qBAAA,GAAA,OAAA,SC/BF,OACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,MAAA,eAAA,MAAA,YAAA,WAGF,YACE,iBAAA,EAAA,SAAA,EAAA,KAAA,ECFF,YACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OAGA,aAAA,EACA,cAAA,EASF,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QvCJA,8BAAA,8BuCQE,MAAA,QACA,gBAAA,KACA,iBAAA,QATJ,+BAaI,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,MACA,QAAA,OAAA,QAEA,cAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBAPF,6BlChCI,uBAAA,OACA,wBAAA,OkC+BJ,4BAcI,cAAA,ElChCA,2BAAA,OACA,0BAAA,OLPF,uBAAA,uBuC2CE,QAAA,EACA,gBAAA,KApBJ,0BAAA,0BAyBI,MAAA,QACA,iBAAA,KA1BJ,wBA+BI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAUJ,mCAEI,aAAA,EACA,YAAA,ElCrFA,cAAA,EkCkFJ,2DASM,WAAA,EATN,yDAeM,cAAA,EClGJ,yBACE,MAAA,QACA,iBAAA,QxCaF,sDAAA,sDwCTM,MAAA,QACA,iBAAA,QAPN,uDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,2BACE,MAAA,QACA,iBAAA,QxCaF,wDAAA,wDwCTM,MAAA,QACA,iBAAA,QAPN,yDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,yBACE,MAAA,QACA,iBAAA,QxCaF,sDAAA,sDwCTM,MAAA,QACA,iBAAA,QAPN,uDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,sBACE,MAAA,QACA,iBAAA,QxCaF,mDAAA,mDwCTM,MAAA,QACA,iBAAA,QAPN,oDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,yBACE,MAAA,QACA,iBAAA,QxCaF,sDAAA,sDwCTM,MAAA,QACA,iBAAA,QAPN,uDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,wBACE,MAAA,QACA,iBAAA,QxCaF,qDAAA,qDwCTM,MAAA,QACA,iBAAA,QAPN,sDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,uBACE,MAAA,QACA,iBAAA,QxCaF,oDAAA,oDwCTM,MAAA,QACA,iBAAA,QAPN,qDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,sBACE,MAAA,QACA,iBAAA,QxCaF,mDAAA,mDwCTM,MAAA,QACA,iBAAA,QAPN,oDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QChBR,OACE,MAAA,MACA,UAAA,OACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,YAAA,EAAA,IAAA,EAAA,KACA,QAAA,GzCWA,aAAA,ayCRE,MAAA,KACA,gBAAA,KACA,QAAA,IAZJ,qCAiBI,OAAA,QAUJ,aACE,QAAA,EACA,iBAAA,YACA,OAAA,EACA,mBAAA,KCxBF,YACE,SAAA,OAIF,OACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,SAAA,OAGA,QAAA,EAKA,mBACE,WAAA,OACA,WAAA,KAKJ,cACE,SAAA,SACA,MAAA,KACA,OAAA,MAEA,eAAA,KAGA,0B5BtCI,WAAA,kBAAA,IAAA,SAAA,WAAA,UAAA,IAAA,SAAA,WAAA,UAAA,IAAA,QAAA,CAAA,kBAAA,IAAA,S4BwCF,kBAAA,kBAAA,UAAA,kBAEF,0BACE,kBAAA,eAAA,UAAA,eAIJ,uBACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,WAAA,yBAIF,eACE,SAAA,SACA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,MAAA,KAEA,eAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,erChEE,cAAA,MqCoEF,QAAA,EAIF,gBACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,iBAAA,KAPF,qBAUW,QAAA,EAVX,qBAWW,QAAA,GAKX,cACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,MAAA,eAAA,MAAA,YAAA,WACA,iBAAA,QAAA,cAAA,QAAA,gBAAA,cACA,QAAA,KACA,cAAA,IAAA,MAAA,QrCvFE,uBAAA,MACA,wBAAA,MqCiFJ,qBASI,QAAA,KAEA,OAAA,MAAA,MAAA,MAAA,KAKJ,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,IAAA,cAAA,IAAA,gBAAA,SACA,QAAA,KACA,WAAA,IAAA,MAAA,QALF,iCAQyB,YAAA,OARzB,gCASwB,aAAA,OAIxB,yBACE,SAAA,SACA,IAAA,QACA,MAAA,KACA,OAAA,KACA,SAAA,OjClFE,yBiCwFF,cACE,UAAA,MACA,OAAA,QAAA,KAGF,uBACE,WAAA,2BAOF,UAAY,UAAA,OjCrGV,yBiC0GF,UAAY,UAAA,OCrKd,SACE,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,ECJA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KDNA,UAAA,QAEA,UAAA,WACA,QAAA,EAXF,cAaW,QAAA,GAbX,gBAgBI,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MAnBJ,wBAsBM,SAAA,SACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,mCAAA,gBACE,QAAA,MAAA,EADF,0CAAA,uBAII,OAAA,EAJJ,kDAAA,+BAOM,IAAA,EACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAKN,qCAAA,kBACE,QAAA,EAAA,MADF,4CAAA,yBAII,KAAA,EACA,MAAA,MACA,OAAA,MANJ,oDAAA,iCASM,MAAA,EACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAKN,sCAAA,mBACE,QAAA,MAAA,EADF,6CAAA,0BAII,IAAA,EAJJ,qDAAA,kCAOM,OAAA,EACA,aAAA,EAAA,MAAA,MACA,oBAAA,KAKN,oCAAA,iBACE,QAAA,EAAA,MADF,2CAAA,wBAII,MAAA,EACA,MAAA,MACA,OAAA,MANJ,mDAAA,gCASM,KAAA,EACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,eACE,UAAA,MACA,QAAA,OAAA,MACA,MAAA,KACA,WAAA,OACA,iBAAA,KtC5GE,cAAA,OwCJJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MDLA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KCLA,UAAA,QAEA,UAAA,WACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,exCXE,cAAA,MwCJJ,gBAoBI,SAAA,SACA,QAAA,MACA,MAAA,KACA,OAAA,MACA,OAAA,EAAA,MAxBJ,uBAAA,wBA4BM,SAAA,SACA,QAAA,MACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,mCAAA,gBACE,cAAA,MADF,0CAAA,uBAII,OAAA,yB/C0jL2B,iD+C9jL/B,kD/C8jLA,8B+C9jLA,+BASI,aAAA,MAAA,MAAA,EATJ,kDAAA,+BAaI,OAAA,EACA,iBAAA,gBAdJ,iDAAA,8BAkBI,OAAA,IACA,iBAAA,KAIJ,qCAAA,kBACE,YAAA,MADF,4CAAA,yBAII,KAAA,yBACA,MAAA,MACA,OAAA,KACA,OAAA,MAAA,E/C0jL6B,mD+CjkLjC,oD/CikLA,gC+CjkLA,iCAYI,aAAA,MAAA,MAAA,MAAA,EAZJ,oDAAA,iCAgBI,KAAA,EACA,mBAAA,gBAjBJ,mDAAA,gCAqBI,KAAA,IACA,mBAAA,KAIJ,sCAAA,mBACE,WAAA,MADF,6CAAA,0BAII,IAAA,yB/C0jL8B,oD+C9jLlC,qD/C8jLA,iC+C9jLA,kCASI,aAAA,EAAA,MAAA,MAAA,MATJ,qDAAA,kCAaI,IAAA,EACA,oBAAA,gBAdJ,oDAAA,iCAkBI,IAAA,IACA,oBAAA,KAnBJ,8DAAA,2CAwBI,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,OACA,QAAA,GACA,cAAA,IAAA,MAAA,QAIJ,oCAAA,iBACE,aAAA,MADF,2CAAA,wBAII,MAAA,yBACA,MAAA,MACA,OAAA,KACA,OAAA,MAAA,E/CyjL4B,kD+ChkLhC,mD/CgkLA,+B+ChkLA,gCAYI,aAAA,MAAA,EAAA,MAAA,MAZJ,mDAAA,gCAgBI,MAAA,EACA,kBAAA,gBAjBJ,kDAAA,+BAqBI,MAAA,IACA,kBAAA,KAqBJ,gBACE,QAAA,MAAA,OACA,cAAA,EACA,UAAA,KACA,MAAA,QACA,iBAAA,QACA,cAAA,IAAA,MAAA,QxChKE,uBAAA,kBACA,wBAAA,kBwCyJJ,sBAWI,QAAA,KAIJ,cACE,QAAA,MAAA,OACA,MAAA,QCpLF,UACE,SAAA,SAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OAGF,eACE,SAAA,SACA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,MAAA,KhCVI,WAAA,kBAAA,IAAA,KAAA,WAAA,UAAA,IAAA,KAAA,WAAA,UAAA,IAAA,IAAA,CAAA,kBAAA,IAAA,KgCYJ,4BAAA,OAAA,oBAAA,OACA,oBAAA,OAAA,YAAA,OhDouLF,oBACA,oBgDluLA,sBAGE,QAAA,MAGF,oBhDiuLA,oBgD/tLE,SAAA,SACA,IAAA,EAIF,uChDguLA,wCgD9tLE,kBAAA,cAAA,UAAA,cAEwC,mFAJ1C,uChDuuLE,wCgDluLE,kBAAA,mBAAA,UAAA,oBhDyuLJ,4BgDruLA,oBAEE,kBAAA,iBAAA,UAAA,iBAEwC,mFhDwuLxC,4BgD5uLF,oBAKI,kBAAA,sBAAA,UAAA,uBhD8uLJ,2BgD1uLA,oBAEE,kBAAA,kBAAA,UAAA,kBAEwC,mFhD6uLxC,2BgDjvLF,oBAKI,kBAAA,uBAAA,UAAA,wBhDmvLJ,uBgD1uLA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EAEA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,MAAA,IACA,MAAA,KACA,WAAA,OACA,QAAA,GhDmvLF,6BADA,6BE9yLE,6BAAA,6B8CkEE,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAKF,uBACE,MAAA,EhDgvLF,4BgDzuLA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,WAAA,YAAA,UAAA,OAAA,OACA,gBAAA,KAAA,KAEF,4BACE,iBAAA,+LAEF,4BACE,iBAAA,+LASF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,KACA,KAAA,EACA,QAAA,GACA,QAAA,YAAA,QAAA,YAAA,QAAA,KACA,iBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,aAAA,EAEA,aAAA,IACA,YAAA,IACA,WAAA,KAZF,wBAeI,SAAA,SACA,iBAAA,EAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,OAAA,IACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,iBAAA,qBAtBJ,gCA0BM,SAAA,SACA,IAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAA,GAhCN,+BAmCM,SAAA,SACA,OAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAA,GAzCN,6BA8CI,iBAAA,KASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,KACA,KAAA,IACA,QAAA,GACA,YAAA,KACA,eAAA,KACA,MAAA,KACA,WAAA,OC3LF,gBAAqB,eAAA,mBACrB,WAAqB,eAAA,cACrB,cAAqB,eAAA,iBACrB,cAAqB,eAAA,iBACrB,mBAAqB,eAAA,sBACrB,gBAAqB,eAAA,mBCFnB,YACE,iBAAA,kBhDYF,mBAAA,mBFg7LF,wBADA,wBkDt7LM,iBAAA,kBANJ,cACE,iBAAA,kBhDYF,qBAAA,qBF07LF,0BADA,0BkDh8LM,iBAAA,kBANJ,YACE,iBAAA,kBhDYF,mBAAA,mBFo8LF,wBADA,wBkD18LM,iBAAA,kBANJ,SACE,iBAAA,kBhDYF,gBAAA,gBF88LF,qBADA,qBkDp9LM,iBAAA,kBANJ,YACE,iBAAA,kBhDYF,mBAAA,mBFw9LF,wBADA,wBkD99LM,iBAAA,kBANJ,WACE,iBAAA,kBhDYF,kBAAA,kBFk+LF,uBADA,uBkDx+LM,iBAAA,kBANJ,UACE,iBAAA,kBhDYF,iBAAA,iBF4+LF,sBADA,sBkDl/LM,iBAAA,kBANJ,SACE,iBAAA,kBhDYF,gBAAA,gBFs/LF,qBADA,qBkD5/LM,iBAAA,kBCCN,UACE,iBAAA,eAGF,gBACE,iBAAA,sBCXF,QAAkB,OAAA,IAAA,MAAA,kBAClB,YAAkB,WAAA,IAAA,MAAA,kBAClB,cAAkB,aAAA,IAAA,MAAA,kBAClB,eAAkB,cAAA,IAAA,MAAA,kBAClB,aAAkB,YAAA,IAAA,MAAA,kBAElB,UAAmB,OAAA,YACnB,cAAmB,WAAA,YACnB,gBAAmB,aAAA,YACnB,iBAAmB,cAAA,YACnB,eAAmB,YAAA,YAGjB,gBACE,aAAA,kBADF,kBACE,aAAA,kBADF,gBACE,aAAA,kBADF,aACE,aAAA,kBADF,gBACE,aAAA,kBADF,eACE,aAAA,kBADF,cACE,aAAA,kBADF,aACE,aAAA,kBAIJ,cACE,aAAA,eAOF,SACE,cAAA,iBAEF,aACE,uBAAA,iBACA,wBAAA,iBAEF,eACE,wBAAA,iBACA,2BAAA,iBAEF,gBACE,2BAAA,iBACA,0BAAA,iBAEF,cACE,uBAAA,iBACA,0BAAA,iBAGF,gBACE,cAAA,cAGF,WACE,cAAA,YCxDA,iBACE,QAAA,MACA,MAAA,KACA,QAAA,GCMA,QAA2B,QAAA,eAC3B,UAA2B,QAAA,iBAC3B,gBAA2B,QAAA,uBAC3B,SAA2B,QAAA,gBAC3B,SAA2B,QAAA,gBAC3B,aAA2B,QAAA,oBAC3B,cAA2B,QAAA,qBAC3B,QAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,eAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,sB3C0C3B,yB2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uB3C0C3B,yB2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uB3C0C3B,yB2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uB3C0C3B,0B2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBAS/B,aACE,cAAwB,QAAA,eACxB,gBAAwB,QAAA,iBACxB,sBAAwB,QAAA,uBACxB,eAAwB,QAAA,gBACxB,eAAwB,QAAA,gBACxB,mBAAwB,QAAA,oBACxB,oBAAwB,QAAA,qBACxB,cAAwB,QAAA,sBAAA,QAAA,sBAAA,QAAA,eACxB,qBAAwB,QAAA,6BAAA,QAAA,6BAAA,QAAA,uBClC1B,kBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,SAAA,OALF,0BAQI,QAAA,MACA,QAAA,GATJ,yCvDq2MA,wBADA,yBAEA,yBACA,wBuDt1MI,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KACA,OAAA,EAIJ,gCAEI,YAAA,WAIJ,gCAEI,YAAA,OAIJ,+BAEI,YAAA,IAIJ,+BAEI,YAAA,KCvCA,UAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,aAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,kBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,qBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,WAA8B,cAAA,eAAA,UAAA,eAC9B,aAA8B,cAAA,iBAAA,UAAA,iBAC9B,mBAA8B,cAAA,uBAAA,UAAA,uBAE9B,uBAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,qBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,wBAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,yBAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,wBAAoC,cAAA,qBAAA,gBAAA,uBAEpC,mBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,iBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,oBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,sBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,qBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,qBAAkC,mBAAA,gBAAA,cAAA,qBAClC,mBAAkC,mBAAA,cAAA,cAAA,mBAClC,sBAAkC,mBAAA,iBAAA,cAAA,iBAClC,uBAAkC,mBAAA,kBAAA,cAAA,wBAClC,sBAAkC,mBAAA,qBAAA,cAAA,uBAClC,uBAAkC,mBAAA,kBAAA,cAAA,kBAElC,iBAAgC,oBAAA,eAAA,WAAA,eAChC,kBAAgC,oBAAA,gBAAA,WAAA,qBAChC,gBAAgC,oBAAA,cAAA,WAAA,mBAChC,mBAAgC,oBAAA,iBAAA,WAAA,iBAChC,qBAAgC,oBAAA,mBAAA,WAAA,mBAChC,oBAAgC,oBAAA,kBAAA,WAAA,kB7CiBhC,yB6ClDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB7CiBhC,yB6ClDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB7CiBhC,yB6ClDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB7CiBhC,0B6ClDA,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBCvChC,YCDF,MAAA,eDEE,aCCF,MAAA,gBDAE,YCGF,MAAA,e/CmDE,yB8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gB/CmDE,yB8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gB/CmDE,yB8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gB/CmDE,0B8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gBCDA,iBAAyB,SAAA,iBAAzB,mBAAyB,SAAA,mBAAzB,mBAAyB,SAAA,mBAAzB,gBAAyB,SAAA,gBAAzB,iBAAyB,SAAA,yBAAA,SAAA,iBAK3B,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAI4B,2DAD9B,YAEI,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MC7BJ,SCEE,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EACA,SAAA,OACA,KAAA,cACA,YAAA,OACA,kBAAA,WAAA,UAAA,WACA,OAAA,EAUA,0BAAA,yBAEE,SAAA,OACA,MAAA,KACA,OAAA,KACA,SAAA,QACA,KAAA,KACA,YAAA,OACA,kBAAA,KAAA,UAAA,KC1BA,MAAuB,MAAA,cAAvB,MAAuB,MAAA,cAAvB,MAAuB,MAAA,cAAvB,OAAuB,MAAA,eAAvB,MAAuB,OAAA,cAAvB,MAAuB,OAAA,cAAvB,MAAuB,OAAA,cAAvB,OAAuB,OAAA,eAI3B,QAAU,UAAA,eACV,QAAU,WAAA,eCAF,KAAgC,OAAA,YAChC,M/DwuOR,M+DtuOU,WAAA,YAEF,M/DyuOR,M+DvuOU,aAAA,YAEF,M/D0uOR,M+DxuOU,cAAA,YAEF,M/D2uOR,M+DzuOU,YAAA,YAfF,KAAgC,OAAA,iBAChC,M/DgwOR,M+D9vOU,WAAA,iBAEF,M/DiwOR,M+D/vOU,aAAA,iBAEF,M/DkwOR,M+DhwOU,cAAA,iBAEF,M/DmwOR,M+DjwOU,YAAA,iBAfF,KAAgC,OAAA,gBAChC,M/DwxOR,M+DtxOU,WAAA,gBAEF,M/DyxOR,M+DvxOU,aAAA,gBAEF,M/D0xOR,M+DxxOU,cAAA,gBAEF,M/D2xOR,M+DzxOU,YAAA,gBAfF,KAAgC,OAAA,eAChC,M/DgzOR,M+D9yOU,WAAA,eAEF,M/DizOR,M+D/yOU,aAAA,eAEF,M/DkzOR,M+DhzOU,cAAA,eAEF,M/DmzOR,M+DjzOU,YAAA,eAfF,KAAgC,OAAA,iBAChC,M/Dw0OR,M+Dt0OU,WAAA,iBAEF,M/Dy0OR,M+Dv0OU,aAAA,iBAEF,M/D00OR,M+Dx0OU,cAAA,iBAEF,M/D20OR,M+Dz0OU,YAAA,iBAfF,KAAgC,OAAA,eAChC,M/Dg2OR,M+D91OU,WAAA,eAEF,M/Di2OR,M+D/1OU,aAAA,eAEF,M/Dk2OR,M+Dh2OU,cAAA,eAEF,M/Dm2OR,M+Dj2OU,YAAA,eAfF,KAAgC,QAAA,YAChC,M/Dw3OR,M+Dt3OU,YAAA,YAEF,M/Dy3OR,M+Dv3OU,cAAA,YAEF,M/D03OR,M+Dx3OU,eAAA,YAEF,M/D23OR,M+Dz3OU,aAAA,YAfF,KAAgC,QAAA,iBAChC,M/Dg5OR,M+D94OU,YAAA,iBAEF,M/Di5OR,M+D/4OU,cAAA,iBAEF,M/Dk5OR,M+Dh5OU,eAAA,iBAEF,M/Dm5OR,M+Dj5OU,aAAA,iBAfF,KAAgC,QAAA,gBAChC,M/Dw6OR,M+Dt6OU,YAAA,gBAEF,M/Dy6OR,M+Dv6OU,cAAA,gBAEF,M/D06OR,M+Dx6OU,eAAA,gBAEF,M/D26OR,M+Dz6OU,aAAA,gBAfF,KAAgC,QAAA,eAChC,M/Dg8OR,M+D97OU,YAAA,eAEF,M/Di8OR,M+D/7OU,cAAA,eAEF,M/Dk8OR,M+Dh8OU,eAAA,eAEF,M/Dm8OR,M+Dj8OU,aAAA,eAfF,KAAgC,QAAA,iBAChC,M/Dw9OR,M+Dt9OU,YAAA,iBAEF,M/Dy9OR,M+Dv9OU,cAAA,iBAEF,M/D09OR,M+Dx9OU,eAAA,iBAEF,M/D29OR,M+Dz9OU,aAAA,iBAfF,KAAgC,QAAA,eAChC,M/Dg/OR,M+D9+OU,YAAA,eAEF,M/Di/OR,M+D/+OU,cAAA,eAEF,M/Dk/OR,M+Dh/OU,eAAA,eAEF,M/Dm/OR,M+Dj/OU,aAAA,eAMN,QAAmB,OAAA,eACnB,S/Dm/OJ,S+Dj/OM,WAAA,eAEF,S/Do/OJ,S+Dl/OM,aAAA,eAEF,S/Dq/OJ,S+Dn/OM,cAAA,eAEF,S/Ds/OJ,S+Dp/OM,YAAA,epDaF,yBoDjDI,QAAgC,OAAA,YAChC,S/DgiPN,S+D9hPQ,WAAA,YAEF,S/DgiPN,S+D9hPQ,aAAA,YAEF,S/DgiPN,S+D9hPQ,cAAA,YAEF,S/DgiPN,S+D9hPQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,S/DmjPN,S+DjjPQ,WAAA,iBAEF,S/DmjPN,S+DjjPQ,aAAA,iBAEF,S/DmjPN,S+DjjPQ,cAAA,iBAEF,S/DmjPN,S+DjjPQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,S/DskPN,S+DpkPQ,WAAA,gBAEF,S/DskPN,S+DpkPQ,aAAA,gBAEF,S/DskPN,S+DpkPQ,cAAA,gBAEF,S/DskPN,S+DpkPQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,S/DylPN,S+DvlPQ,WAAA,eAEF,S/DylPN,S+DvlPQ,aAAA,eAEF,S/DylPN,S+DvlPQ,cAAA,eAEF,S/DylPN,S+DvlPQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,S/D4mPN,S+D1mPQ,WAAA,iBAEF,S/D4mPN,S+D1mPQ,aAAA,iBAEF,S/D4mPN,S+D1mPQ,cAAA,iBAEF,S/D4mPN,S+D1mPQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,S/D+nPN,S+D7nPQ,WAAA,eAEF,S/D+nPN,S+D7nPQ,aAAA,eAEF,S/D+nPN,S+D7nPQ,cAAA,eAEF,S/D+nPN,S+D7nPQ,YAAA,eAfF,QAAgC,QAAA,YAChC,S/DkpPN,S+DhpPQ,YAAA,YAEF,S/DkpPN,S+DhpPQ,cAAA,YAEF,S/DkpPN,S+DhpPQ,eAAA,YAEF,S/DkpPN,S+DhpPQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,S/DqqPN,S+DnqPQ,YAAA,iBAEF,S/DqqPN,S+DnqPQ,cAAA,iBAEF,S/DqqPN,S+DnqPQ,eAAA,iBAEF,S/DqqPN,S+DnqPQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,S/DwrPN,S+DtrPQ,YAAA,gBAEF,S/DwrPN,S+DtrPQ,cAAA,gBAEF,S/DwrPN,S+DtrPQ,eAAA,gBAEF,S/DwrPN,S+DtrPQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,S/D2sPN,S+DzsPQ,YAAA,eAEF,S/D2sPN,S+DzsPQ,cAAA,eAEF,S/D2sPN,S+DzsPQ,eAAA,eAEF,S/D2sPN,S+DzsPQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,S/D8tPN,S+D5tPQ,YAAA,iBAEF,S/D8tPN,S+D5tPQ,cAAA,iBAEF,S/D8tPN,S+D5tPQ,eAAA,iBAEF,S/D8tPN,S+D5tPQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,S/DivPN,S+D/uPQ,YAAA,eAEF,S/DivPN,S+D/uPQ,cAAA,eAEF,S/DivPN,S+D/uPQ,eAAA,eAEF,S/DivPN,S+D/uPQ,aAAA,eAMN,WAAmB,OAAA,eACnB,Y/D+uPF,Y+D7uPI,WAAA,eAEF,Y/D+uPF,Y+D7uPI,aAAA,eAEF,Y/D+uPF,Y+D7uPI,cAAA,eAEF,Y/D+uPF,Y+D7uPI,YAAA,gBpDaF,yBoDjDI,QAAgC,OAAA,YAChC,S/D0xPN,S+DxxPQ,WAAA,YAEF,S/D0xPN,S+DxxPQ,aAAA,YAEF,S/D0xPN,S+DxxPQ,cAAA,YAEF,S/D0xPN,S+DxxPQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,S/D6yPN,S+D3yPQ,WAAA,iBAEF,S/D6yPN,S+D3yPQ,aAAA,iBAEF,S/D6yPN,S+D3yPQ,cAAA,iBAEF,S/D6yPN,S+D3yPQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,S/Dg0PN,S+D9zPQ,WAAA,gBAEF,S/Dg0PN,S+D9zPQ,aAAA,gBAEF,S/Dg0PN,S+D9zPQ,cAAA,gBAEF,S/Dg0PN,S+D9zPQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,S/Dm1PN,S+Dj1PQ,WAAA,eAEF,S/Dm1PN,S+Dj1PQ,aAAA,eAEF,S/Dm1PN,S+Dj1PQ,cAAA,eAEF,S/Dm1PN,S+Dj1PQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,S/Ds2PN,S+Dp2PQ,WAAA,iBAEF,S/Ds2PN,S+Dp2PQ,aAAA,iBAEF,S/Ds2PN,S+Dp2PQ,cAAA,iBAEF,S/Ds2PN,S+Dp2PQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,S/Dy3PN,S+Dv3PQ,WAAA,eAEF,S/Dy3PN,S+Dv3PQ,aAAA,eAEF,S/Dy3PN,S+Dv3PQ,cAAA,eAEF,S/Dy3PN,S+Dv3PQ,YAAA,eAfF,QAAgC,QAAA,YAChC,S/D44PN,S+D14PQ,YAAA,YAEF,S/D44PN,S+D14PQ,cAAA,YAEF,S/D44PN,S+D14PQ,eAAA,YAEF,S/D44PN,S+D14PQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,S/D+5PN,S+D75PQ,YAAA,iBAEF,S/D+5PN,S+D75PQ,cAAA,iBAEF,S/D+5PN,S+D75PQ,eAAA,iBAEF,S/D+5PN,S+D75PQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,S/Dk7PN,S+Dh7PQ,YAAA,gBAEF,S/Dk7PN,S+Dh7PQ,cAAA,gBAEF,S/Dk7PN,S+Dh7PQ,eAAA,gBAEF,S/Dk7PN,S+Dh7PQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,S/Dq8PN,S+Dn8PQ,YAAA,eAEF,S/Dq8PN,S+Dn8PQ,cAAA,eAEF,S/Dq8PN,S+Dn8PQ,eAAA,eAEF,S/Dq8PN,S+Dn8PQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,S/Dw9PN,S+Dt9PQ,YAAA,iBAEF,S/Dw9PN,S+Dt9PQ,cAAA,iBAEF,S/Dw9PN,S+Dt9PQ,eAAA,iBAEF,S/Dw9PN,S+Dt9PQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,S/D2+PN,S+Dz+PQ,YAAA,eAEF,S/D2+PN,S+Dz+PQ,cAAA,eAEF,S/D2+PN,S+Dz+PQ,eAAA,eAEF,S/D2+PN,S+Dz+PQ,aAAA,eAMN,WAAmB,OAAA,eACnB,Y/Dy+PF,Y+Dv+PI,WAAA,eAEF,Y/Dy+PF,Y+Dv+PI,aAAA,eAEF,Y/Dy+PF,Y+Dv+PI,cAAA,eAEF,Y/Dy+PF,Y+Dv+PI,YAAA,gBpDaF,yBoDjDI,QAAgC,OAAA,YAChC,S/DohQN,S+DlhQQ,WAAA,YAEF,S/DohQN,S+DlhQQ,aAAA,YAEF,S/DohQN,S+DlhQQ,cAAA,YAEF,S/DohQN,S+DlhQQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,S/DuiQN,S+DriQQ,WAAA,iBAEF,S/DuiQN,S+DriQQ,aAAA,iBAEF,S/DuiQN,S+DriQQ,cAAA,iBAEF,S/DuiQN,S+DriQQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,S/D0jQN,S+DxjQQ,WAAA,gBAEF,S/D0jQN,S+DxjQQ,aAAA,gBAEF,S/D0jQN,S+DxjQQ,cAAA,gBAEF,S/D0jQN,S+DxjQQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,S/D6kQN,S+D3kQQ,WAAA,eAEF,S/D6kQN,S+D3kQQ,aAAA,eAEF,S/D6kQN,S+D3kQQ,cAAA,eAEF,S/D6kQN,S+D3kQQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,S/DgmQN,S+D9lQQ,WAAA,iBAEF,S/DgmQN,S+D9lQQ,aAAA,iBAEF,S/DgmQN,S+D9lQQ,cAAA,iBAEF,S/DgmQN,S+D9lQQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,S/DmnQN,S+DjnQQ,WAAA,eAEF,S/DmnQN,S+DjnQQ,aAAA,eAEF,S/DmnQN,S+DjnQQ,cAAA,eAEF,S/DmnQN,S+DjnQQ,YAAA,eAfF,QAAgC,QAAA,YAChC,S/DsoQN,S+DpoQQ,YAAA,YAEF,S/DsoQN,S+DpoQQ,cAAA,YAEF,S/DsoQN,S+DpoQQ,eAAA,YAEF,S/DsoQN,S+DpoQQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,S/DypQN,S+DvpQQ,YAAA,iBAEF,S/DypQN,S+DvpQQ,cAAA,iBAEF,S/DypQN,S+DvpQQ,eAAA,iBAEF,S/DypQN,S+DvpQQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,S/D4qQN,S+D1qQQ,YAAA,gBAEF,S/D4qQN,S+D1qQQ,cAAA,gBAEF,S/D4qQN,S+D1qQQ,eAAA,gBAEF,S/D4qQN,S+D1qQQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,S/D+rQN,S+D7rQQ,YAAA,eAEF,S/D+rQN,S+D7rQQ,cAAA,eAEF,S/D+rQN,S+D7rQQ,eAAA,eAEF,S/D+rQN,S+D7rQQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,S/DktQN,S+DhtQQ,YAAA,iBAEF,S/DktQN,S+DhtQQ,cAAA,iBAEF,S/DktQN,S+DhtQQ,eAAA,iBAEF,S/DktQN,S+DhtQQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,S/DquQN,S+DnuQQ,YAAA,eAEF,S/DquQN,S+DnuQQ,cAAA,eAEF,S/DquQN,S+DnuQQ,eAAA,eAEF,S/DquQN,S+DnuQQ,aAAA,eAMN,WAAmB,OAAA,eACnB,Y/DmuQF,Y+DjuQI,WAAA,eAEF,Y/DmuQF,Y+DjuQI,aAAA,eAEF,Y/DmuQF,Y+DjuQI,cAAA,eAEF,Y/DmuQF,Y+DjuQI,YAAA,gBpDaF,0BoDjDI,QAAgC,OAAA,YAChC,S/D8wQN,S+D5wQQ,WAAA,YAEF,S/D8wQN,S+D5wQQ,aAAA,YAEF,S/D8wQN,S+D5wQQ,cAAA,YAEF,S/D8wQN,S+D5wQQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,S/DiyQN,S+D/xQQ,WAAA,iBAEF,S/DiyQN,S+D/xQQ,aAAA,iBAEF,S/DiyQN,S+D/xQQ,cAAA,iBAEF,S/DiyQN,S+D/xQQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,S/DozQN,S+DlzQQ,WAAA,gBAEF,S/DozQN,S+DlzQQ,aAAA,gBAEF,S/DozQN,S+DlzQQ,cAAA,gBAEF,S/DozQN,S+DlzQQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,S/Du0QN,S+Dr0QQ,WAAA,eAEF,S/Du0QN,S+Dr0QQ,aAAA,eAEF,S/Du0QN,S+Dr0QQ,cAAA,eAEF,S/Du0QN,S+Dr0QQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,S/D01QN,S+Dx1QQ,WAAA,iBAEF,S/D01QN,S+Dx1QQ,aAAA,iBAEF,S/D01QN,S+Dx1QQ,cAAA,iBAEF,S/D01QN,S+Dx1QQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,S/D62QN,S+D32QQ,WAAA,eAEF,S/D62QN,S+D32QQ,aAAA,eAEF,S/D62QN,S+D32QQ,cAAA,eAEF,S/D62QN,S+D32QQ,YAAA,eAfF,QAAgC,QAAA,YAChC,S/Dg4QN,S+D93QQ,YAAA,YAEF,S/Dg4QN,S+D93QQ,cAAA,YAEF,S/Dg4QN,S+D93QQ,eAAA,YAEF,S/Dg4QN,S+D93QQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,S/Dm5QN,S+Dj5QQ,YAAA,iBAEF,S/Dm5QN,S+Dj5QQ,cAAA,iBAEF,S/Dm5QN,S+Dj5QQ,eAAA,iBAEF,S/Dm5QN,S+Dj5QQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,S/Ds6QN,S+Dp6QQ,YAAA,gBAEF,S/Ds6QN,S+Dp6QQ,cAAA,gBAEF,S/Ds6QN,S+Dp6QQ,eAAA,gBAEF,S/Ds6QN,S+Dp6QQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,S/Dy7QN,S+Dv7QQ,YAAA,eAEF,S/Dy7QN,S+Dv7QQ,cAAA,eAEF,S/Dy7QN,S+Dv7QQ,eAAA,eAEF,S/Dy7QN,S+Dv7QQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,S/D48QN,S+D18QQ,YAAA,iBAEF,S/D48QN,S+D18QQ,cAAA,iBAEF,S/D48QN,S+D18QQ,eAAA,iBAEF,S/D48QN,S+D18QQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,S/D+9QN,S+D79QQ,YAAA,eAEF,S/D+9QN,S+D79QQ,cAAA,eAEF,S/D+9QN,S+D79QQ,eAAA,eAEF,S/D+9QN,S+D79QQ,aAAA,eAMN,WAAmB,OAAA,eACnB,Y/D69QF,Y+D39QI,WAAA,eAEF,Y/D69QF,Y+D39QI,aAAA,eAEF,Y/D69QF,Y+D39QI,cAAA,eAEF,Y/D69QF,Y+D39QI,YAAA,gBCvCN,cAAiB,WAAA,kBACjB,aAAiB,YAAA,iBACjB,eCNE,SAAA,OACA,cAAA,SACA,YAAA,ODYE,WAAwB,WAAA,eACxB,YAAwB,WAAA,gBACxB,aAAwB,WAAA,iBrDwCxB,yBqD1CA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBrDwCxB,yBqD1CA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBrDwCxB,yBqD1CA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBrDwCxB,0BqD1CA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBAM5B,gBAAmB,eAAA,oBACnB,gBAAmB,eAAA,oBACnB,iBAAmB,eAAA,qBAInB,mBAAsB,YAAA,cACtB,oBAAsB,YAAA,cACtB,kBAAsB,YAAA,cACtB,aAAsB,WAAA,iBAItB,YAAc,MAAA,eElCZ,cACE,MAAA,kBhEYF,qBAAA,qBgERI,MAAA,kBALJ,gBACE,MAAA,kBhEYF,uBAAA,uBgERI,MAAA,kBALJ,cACE,MAAA,kBhEYF,qBAAA,qBgERI,MAAA,kBALJ,WACE,MAAA,kBhEYF,kBAAA,kBgERI,MAAA,kBALJ,cACE,MAAA,kBhEYF,qBAAA,qBgERI,MAAA,kBALJ,aACE,MAAA,kBhEYF,oBAAA,oBgERI,MAAA,kBALJ,YACE,MAAA,kBhEYF,mBAAA,mBgERI,MAAA,kBALJ,WACE,MAAA,kBhEYF,kBAAA,kBgERI,MAAA,kBFmCN,YAAc,MAAA,kBAId,WG9CE,KAAA,CAAA,CAAA,EAAA,EACA,MAAA,YACA,YAAA,KACA,iBAAA,YACA,OAAA,ECHF,SCCE,WAAA,kBDGF,WCHE,WAAA,iBCMA,aACE,EtEosRF,QADA,SsE9rRI,YAAA,eAEA,WAAA,eAGF,YAEI,gBAAA,UASJ,mBACE,QAAA,KAAA,YAAA,IAcF,IACE,YAAA,mBtE6qRJ,WsE3qRE,IAEE,OAAA,IAAA,MAAA,KACA,kBAAA,MAQF,MACE,QAAA,mBtEuqRJ,IsEpqRE,GAEE,kBAAA,MtEsqRJ,GACA,GsEpqRE,EAGE,QAAA,EACA,OAAA,EAGF,GtEkqRF,GsEhqRI,iBAAA,MAQF,MACE,KAAA,GAEF,KACE,UAAA,gBAEF,WACE,UAAA,gBAIF,QACE,QAAA,KAEF,OACE,OAAA,IAAA,MAAA,KAGF,OACE,gBAAA,mBADF,UtE4pRF,UsEvpRM,iBAAA,etE2pRN,mBsExpRE,mBAGI,OAAA,IAAA,MAAA","sourcesContent":["/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"utilities\";\n@import \"print\";\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n// we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -ms-text-size-adjust: 100%; // 4\n -ms-overflow-style: scrollbar; // 5\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 6\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n @-ms-viewport {\n width: device-width;\n }\n}\n\n// stylelint-disable selector-list-comma-newline-after\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use the\n// the `inherit` value on things like `<th>` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\n// stylelint-disable font-weight-notation\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n// stylelint-enable font-weight-notation\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\n// stylelint-disable font-family-no-duplicate-names\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n// stylelint-enable font-family-no-duplicate-names\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so\n // we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `<td>` alignment by inheriting from the `<body>`, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n}\n\n.order-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n}\n\n.order-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n}\n\n.order-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-sm-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-sm-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-sm-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-md-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-md-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-md-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-lg-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-lg-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-lg-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n }\n .order-xl-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n }\n .order-xl-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n }\n .order-xl-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::-moz-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n background-color: #71dd8a;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n background-color: #efa2a9;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-check {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n background-color: transparent;\n background-image: none;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::before {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label,\n.input-group > .custom-file:not(:first-child) .custom-file-label::before {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n margin-bottom: 0;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n border-color: #80bdff;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(calc(2.25rem + 2px) - 1px * 2);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: 1px solid #ced4da;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.nav {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n.navbar-expand {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 1;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -webkit-box-flex: 1;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 2;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n color: #fff;\n text-align: center;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.media-body {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n\n.list-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n z-index: 1;\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover, .close:focus {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2));\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: 1px;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: 1px;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: 0;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: 1px;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: 1px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n transition: -webkit-transform 0.6s ease;\n transition: transform 0.6s ease;\n transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next,\n .active.carousel-item-right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-prev,\n .active.carousel-item-left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.d-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-print-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n -webkit-clip-path: none;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n background-color: #71dd8a;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n background-color: #efa2a9;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n background-color: transparent;\n background-image: none;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::before {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label,\n.input-group > .custom-file:not(:first-child) .custom-file-label::before {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n margin-bottom: 0;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n user-select: none;\n background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #007bff;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n border-color: #80bdff;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(calc(2.25rem + 2px) - 1px * 2);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: 1px solid #ced4da;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: flex;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group {\n display: flex;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 2;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: #fff;\n text-align: center;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n z-index: 1;\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover, .close:focus {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2));\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: 1px;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: 1px;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: 0;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: 1px;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: 1px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n transition: transform 0.6s ease;\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n@supports (transform-style: preserve-3d) {\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable indentation\n\n// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Origally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS—an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular psuedo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { font-size: $h1-font-size; }\nh2, .h2 { font-size: $h2-font-size; }\nh3, .h3 { font-size: $h3-font-size; }\nh4, .h4 { font-size: $h4-font-size; }\nh5, .h5 { font-size: $h5-font-size; }\nh6, .h6 { font-size: $h6-font-size; }\n\n.lead {\n font-size: $lead-font-size;\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n font-size: $display1-size;\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n font-size: $display2-size;\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n font-size: $display3-size;\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n font-size: $display4-size;\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n font-size: $small-font-size;\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n font-size: $blockquote-font-size;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%; // back to default font-size\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: ($spacer / 2);\n line-height: 1;\n}\n\n.figure-caption {\n font-size: $figure-caption-font-size;\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n// stylelint-disable indentation, media-query-list-comma-newline-after\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n}\n","// Single side border-radius\n\n@mixin border-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n","// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: $font-family-monospace;\n}\n\n// Inline code\ncode {\n font-size: $code-font-size;\n color: $code-color;\n word-break: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n font-size: $kbd-font-size;\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n font-size: $code-font-size;\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n width: 100%;\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row() {\n display: flex;\n flex-wrap: wrap;\n margin-right: ($grid-gutter-width / -2);\n margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n min-height: 1px; // Prevent collapsing\n padding-right: ($grid-gutter-width / 2);\n padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n min-height: 1px; // Prevent columns from collapsing when empty\n padding-right: ($gutter / 2);\n padding-left: ($gutter / 2);\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: none; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: $spacer;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n\n .table {\n background-color: $body-bg;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: (2 * $table-border-width);\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, -9));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n padding: $input-padding-y $input-padding-x;\n font-size: $font-size-base;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n @if $enable-rounded {\n // Manually use the if/else instead of the mixin to account for iOS override\n border-radius: $input-border-radius;\n } @else {\n // Otherwise undo the iOS default\n border-radius: 0;\n }\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Customize the `:focus` state to imitate native WebKit styles.\n @include form-control-focus();\n\n // Placeholder\n &::placeholder {\n color: $input-placeholder-color;\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n opacity: 1;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &:disabled,\n &[readonly] {\n background-color: $input-disabled-bg;\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n opacity: 1;\n }\n}\n\nselect.form-control {\n &:not([size]):not([multiple]) {\n height: $input-height;\n }\n\n &:focus::-ms-value {\n // Suppress the nested default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n margin-bottom: 0; // Override the `<label>/<legend>` default\n font-size: inherit; // Override the `<legend>` default\n line-height: $input-line-height;\n}\n\n.col-form-label-lg {\n padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});\n font-size: $font-size-lg;\n line-height: $input-line-height-lg;\n}\n\n.col-form-label-sm {\n padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});\n font-size: $font-size-sm;\n line-height: $input-line-height-sm;\n}\n\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: $input-padding-y;\n padding-bottom: $input-padding-y;\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n line-height: $input-line-height;\n background-color: transparent;\n border: solid transparent;\n border-width: $input-border-width 0;\n\n &.form-control-sm,\n &.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.form-control-sm {\n padding: $input-padding-y-sm $input-padding-x-sm;\n font-size: $font-size-sm;\n line-height: $input-line-height-sm;\n @include border-radius($input-border-radius-sm);\n}\n\nselect.form-control-sm {\n &:not([size]):not([multiple]) {\n height: $input-height-sm;\n }\n}\n\n.form-control-lg {\n padding: $input-padding-y-lg $input-padding-x-lg;\n font-size: $font-size-lg;\n line-height: $input-line-height-lg;\n @include border-radius($input-border-radius-lg);\n}\n\nselect.form-control-lg {\n &:not([size]):not([multiple]) {\n height: $input-height-lg;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: $form-group-margin-bottom;\n}\n\n.form-text {\n display: block;\n margin-top: $form-text-margin-top;\n}\n\n\n// Form grid\n//\n// Special replacement for our grid system's `.row` for tighter form layouts.\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.form-check {\n position: relative;\n display: block;\n padding-left: $form-check-input-gutter;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: $form-check-input-margin-y;\n margin-left: -$form-check-input-gutter;\n\n &:disabled ~ .form-check-label {\n color: $text-muted;\n }\n}\n\n.form-check-label {\n margin-bottom: 0; // Override default `<label>` bottom margin\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0; // Override base .form-check\n margin-right: $form-check-inline-margin-x;\n\n // Undo .form-check-input defaults and add some `margin-right`.\n .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: $form-check-inline-input-margin-x;\n margin-left: 0;\n }\n}\n\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server side validation.\n\n@include form-validation-state(\"valid\", $form-feedback-valid-color);\n@include form-validation-state(\"invalid\", $form-feedback-invalid-color);\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)\n\n // Because we use flex, the initial sizing of checkboxes is collapsed and\n // doesn't occupy the full-width (which is what we want for xs grid tier),\n // so we force that here.\n .form-check {\n width: 100%;\n }\n\n // Kick in the inline\n @include media-breakpoint-up(sm) {\n label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n\n // Inline-block all the things for \"inline\"\n .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n\n // Allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-plaintext {\n display: inline-block;\n }\n\n .input-group {\n width: auto;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: $form-check-input-margin-x;\n margin-left: 0;\n }\n\n .custom-control {\n align-items: center;\n justify-content: center;\n }\n .custom-control-label {\n margin-bottom: 0;\n }\n }\n}\n","@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n}\n","// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n font-size: $form-feedback-font-size;\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba($color, .8);\n border-radius: .2rem;\n }\n\n .form-control,\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n background-color: lighten($color, 25%);\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n\n &::before { border-color: inherit; }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n}\n","// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: #555, $outer-color: #333) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.btn {\n display: inline-block;\n font-weight: $btn-font-weight;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: $btn-border-width solid transparent;\n @include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $btn-line-height, $btn-border-radius);\n @include transition($btn-transition);\n\n // Share hover and focus styles\n @include hover-focus {\n text-decoration: none;\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: $btn-focus-box-shadow;\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n opacity: $btn-disabled-opacity;\n @include box-shadow(none);\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .btn elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active {\n background-image: none;\n @include box-shadow($btn-active-box-shadow);\n\n &:focus {\n @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n }\n }\n}\n\n// Future-proof disabling of clicks on `<a>` elements\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n background-color: transparent;\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n background-color: transparent;\n border-color: transparent;\n }\n\n &:focus,\n &.focus {\n text-decoration: $link-hover-decoration;\n border-color: transparent;\n box-shadow: none;\n }\n\n &:disabled,\n &.disabled {\n color: $btn-link-disabled-color;\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n\n // Vertically space out multiple block buttons\n + .btn-block {\n margin-top: $btn-block-spacing-y;\n }\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n background-color: transparent;\n background-image: none;\n border-color: $color;\n\n &:hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @if $enable-rounded {\n border-radius: $border-radius;\n } @else {\n border-radius: 0;\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n.fade {\n opacity: 0;\n @include transition($transition-fade);\n\n &.show {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.show {\n display: block;\n }\n}\n\ntr {\n &.collapse.show {\n display: table-row;\n }\n}\n\ntbody {\n &.collapse.show {\n display: table-row-group;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle {\n // Generate the caret automatically\n @include caret;\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues\n color: $body-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($dropdown-border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(up);\n }\n}\n\n.dropright {\n .dropdown-menu {\n margin-top: 0;\n margin-left: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(right);\n &::after {\n vertical-align: 0;\n }\n }\n}\n\n.dropleft {\n .dropdown-menu {\n margin-top: 0;\n margin-right: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(left);\n &::before {\n vertical-align: 0;\n }\n }\n}\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n display: block;\n width: 100%; // For `<button>`s\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n clear: both;\n font-weight: $font-weight-normal;\n color: $dropdown-link-color;\n text-align: inherit; // For `<button>`s\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n background-color: transparent; // For `<button>`s\n border: 0; // For `<button>`s\n\n @include hover-focus {\n color: $dropdown-link-hover-color;\n text-decoration: none;\n @include gradient-bg($dropdown-link-hover-bg);\n }\n\n &.active,\n &:active {\n color: $dropdown-link-active-color;\n text-decoration: none;\n @include gradient-bg($dropdown-link-active-bg);\n }\n\n &.disabled,\n &:disabled {\n color: $dropdown-link-disabled-color;\n background-color: transparent;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: $dropdown-padding-y $dropdown-item-padding-x;\n margin-bottom: 0; // for use with heading elements\n font-size: $font-size-sm;\n color: $dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n","@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: $caret-width * .85;\n vertical-align: $caret-width * .85;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: $caret-width * .85;\n vertical-align: $caret-width * .85;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: #e5e5e5) {\n height: 0;\n margin: ($spacer / 2) 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle; // match .btn alignment given font-size hack above\n\n > .btn {\n position: relative;\n flex: 0 1 auto;\n\n // Bring the hover, focused, and \"active\" buttons to the front to overlay\n // the borders properly\n @include hover {\n z-index: 1;\n }\n &:focus,\n &:active,\n &.active {\n z-index: 1;\n }\n }\n\n // Prevent double borders when buttons are next to each other\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -$btn-border-width;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n\n .input-group {\n width: auto;\n }\n}\n\n.btn-group {\n > .btn:first-child {\n margin-left: 0;\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-right-radius(0);\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) > .btn {\n @include border-left-radius(0);\n }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n padding-right: $btn-padding-x * .75;\n padding-left: $btn-padding-x * .75;\n\n &::after {\n margin-left: 0;\n }\n}\n\n.btn-sm + .dropdown-toggle-split {\n padding-right: $btn-padding-x-sm * .75;\n padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n padding-right: $btn-padding-x-lg * .75;\n padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n @include box-shadow($btn-active-box-shadow);\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n @include box-shadow(none);\n }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n .btn,\n .btn-group {\n width: 100%;\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -$btn-border-width;\n margin-left: 0;\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-bottom-radius(0);\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) > .btn {\n @include border-top-radius(0);\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n.btn-group-toggle {\n > .btn,\n > .btn-group > .btn {\n margin-bottom: 0; // Override default `<label>` value\n\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap; // For form validation feedback\n align-items: stretch;\n width: 100%;\n\n > .form-control,\n > .custom-select,\n > .custom-file {\n position: relative; // For focus state's z-index\n flex: 1 1 auto;\n // Add width 1% and flex-basis auto to ensure that button will not wrap out\n // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.\n width: 1%;\n margin-bottom: 0;\n\n // Bring the \"active\" form control to the top of surrounding elements\n &:focus {\n z-index: 3;\n }\n\n + .form-control,\n + .custom-select,\n + .custom-file {\n margin-left: -$input-border-width;\n }\n }\n\n > .form-control,\n > .custom-select {\n &:not(:last-child) { @include border-right-radius(0); }\n &:not(:first-child) { @include border-left-radius(0); }\n }\n\n // Custom file inputs have more complex markup, thus requiring different\n // border-radius overrides.\n > .custom-file {\n display: flex;\n align-items: center;\n\n &:not(:last-child) .custom-file-label,\n &:not(:last-child) .custom-file-label::before { @include border-right-radius(0); }\n &:not(:first-child) .custom-file-label,\n &:not(:first-child) .custom-file-label::before { @include border-left-radius(0); }\n }\n}\n\n\n// Prepend and append\n//\n// While it requires one extra layer of HTML for each, dedicated prepend and\n// append elements allow us to 1) be less clever, 2) simplify our selectors, and\n// 3) support HTML5 form validation.\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n\n // Ensure buttons are always above inputs for more visually pleasing borders.\n // This isn't needed for `.input-group-text` since it shares the same border-color\n // as our inputs.\n .btn {\n position: relative;\n z-index: 2;\n }\n\n .btn + .btn,\n .btn + .input-group-text,\n .input-group-text + .input-group-text,\n .input-group-text + .btn {\n margin-left: -$input-border-width;\n }\n}\n\n.input-group-prepend { margin-right: -$input-border-width; }\n.input-group-append { margin-left: -$input-border-width; }\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: $input-padding-y $input-padding-x;\n margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\n font-size: $font-size-base; // Match inputs\n font-weight: $font-weight-normal;\n line-height: $input-line-height;\n color: $input-group-addon-color;\n text-align: center;\n white-space: nowrap;\n background-color: $input-group-addon-bg;\n border: $input-border-width solid $input-group-addon-border-color;\n @include border-radius($input-border-radius);\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n @extend .form-control-lg;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n @extend .form-control-sm;\n}\n\n\n// Prepend and append rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n @include border-right-radius(0);\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n @include border-left-radius(0);\n}\n","// Embedded icons from Open Iconic.\n// Released under MIT and copyright 2014 Waybury.\n// https://useiconic.com/open\n\n\n// Checkboxes and radios\n//\n// Base class takes care of all the key behavioral aspects.\n\n.custom-control {\n position: relative;\n display: block;\n min-height: (1rem * $line-height-base);\n padding-left: $custom-control-gutter;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: $custom-control-spacer-x;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1; // Put the input behind the label so it doesn't overlay text\n opacity: 0;\n\n &:checked ~ .custom-control-label::before {\n color: $custom-control-indicator-checked-color;\n @include gradient-bg($custom-control-indicator-checked-bg);\n @include box-shadow($custom-control-indicator-checked-box-shadow);\n }\n\n &:focus ~ .custom-control-label::before {\n // the mixin is not used here to make sure there is feedback\n box-shadow: $custom-control-indicator-focus-box-shadow;\n }\n\n &:active ~ .custom-control-label::before {\n color: $custom-control-indicator-active-color;\n background-color: $custom-control-indicator-active-bg;\n @include box-shadow($custom-control-indicator-active-box-shadow);\n }\n\n &:disabled {\n ~ .custom-control-label {\n color: $custom-control-label-disabled-color;\n\n &::before {\n background-color: $custom-control-indicator-disabled-bg;\n }\n }\n }\n}\n\n// Custom control indicators\n//\n// Build the custom controls out of psuedo-elements.\n\n.custom-control-label {\n margin-bottom: 0;\n\n // Background-color and (when enabled) gradient\n &::before {\n position: absolute;\n top: (($line-height-base - $custom-control-indicator-size) / 2);\n left: 0;\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n pointer-events: none;\n content: \"\";\n user-select: none;\n background-color: $custom-control-indicator-bg;\n @include box-shadow($custom-control-indicator-box-shadow);\n }\n\n // Foreground (icon)\n &::after {\n position: absolute;\n top: (($line-height-base - $custom-control-indicator-size) / 2);\n left: 0;\n display: block;\n width: $custom-control-indicator-size;\n height: $custom-control-indicator-size;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: $custom-control-indicator-bg-size;\n }\n}\n\n\n// Checkboxes\n//\n// Tweak just a few things for checkboxes.\n\n.custom-checkbox {\n .custom-control-label::before {\n @include border-radius($custom-checkbox-indicator-border-radius);\n }\n\n .custom-control-input:checked ~ .custom-control-label {\n &::before {\n @include gradient-bg($custom-control-indicator-checked-bg);\n }\n &::after {\n background-image: $custom-checkbox-indicator-icon-checked;\n }\n }\n\n .custom-control-input:indeterminate ~ .custom-control-label {\n &::before {\n @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);\n @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\n }\n &::after {\n background-image: $custom-checkbox-indicator-icon-indeterminate;\n }\n }\n\n .custom-control-input:disabled {\n &:checked ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n &:indeterminate ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n }\n}\n\n// Radios\n//\n// Tweak just a few things for radios.\n\n.custom-radio {\n .custom-control-label::before {\n border-radius: $custom-radio-indicator-border-radius;\n }\n\n .custom-control-input:checked ~ .custom-control-label {\n &::before {\n @include gradient-bg($custom-control-indicator-checked-bg);\n }\n &::after {\n background-image: $custom-radio-indicator-icon-checked;\n }\n }\n\n .custom-control-input:disabled {\n &:checked ~ .custom-control-label::before {\n background-color: $custom-control-indicator-checked-disabled-bg;\n }\n }\n}\n\n\n// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// http://primercss.io.\n//\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: $custom-select-height;\n padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;\n line-height: $custom-select-line-height;\n color: $custom-select-color;\n vertical-align: middle;\n background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;\n background-size: $custom-select-bg-size;\n border: $custom-select-border-width solid $custom-select-border-color;\n @if $enable-rounded {\n border-radius: $custom-select-border-radius;\n } @else {\n border-radius: 0;\n }\n appearance: none;\n\n &:focus {\n border-color: $custom-select-focus-border-color;\n outline: 0;\n box-shadow: $custom-select-focus-box-shadow;\n\n &::-ms-value {\n // For visual consistency with other platforms/browsers,\n // suppress the default white text on blue background highlight given to\n // the selected option text when the (still closed) <select> receives focus\n // in IE and (under certain conditions) Edge.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n }\n\n &[multiple],\n &[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: $custom-select-padding-x;\n background-image: none;\n }\n\n &:disabled {\n color: $custom-select-disabled-color;\n background-color: $custom-select-disabled-bg;\n }\n\n // Hides the default caret in IE11\n &::-ms-expand {\n opacity: 0;\n }\n}\n\n.custom-select-sm {\n height: $custom-select-height-sm;\n padding-top: $custom-select-padding-y;\n padding-bottom: $custom-select-padding-y;\n font-size: $custom-select-font-size-sm;\n}\n\n.custom-select-lg {\n height: $custom-select-height-lg;\n padding-top: $custom-select-padding-y;\n padding-bottom: $custom-select-padding-y;\n font-size: $custom-select-font-size-lg;\n}\n\n\n// File\n//\n// Custom file input.\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: $custom-file-height;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: $custom-file-height;\n margin: 0;\n opacity: 0;\n\n &:focus ~ .custom-file-control {\n border-color: $custom-file-focus-border-color;\n box-shadow: $custom-file-focus-box-shadow;\n\n &::before {\n border-color: $custom-file-focus-border-color;\n }\n }\n\n @each $lang, $value in $custom-file-text {\n &:lang(#{$lang}) ~ .custom-file-label::after {\n content: $value;\n }\n }\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: $custom-file-height;\n padding: $custom-file-padding-y $custom-file-padding-x;\n line-height: $custom-file-line-height;\n color: $custom-file-color;\n background-color: $custom-file-bg;\n border: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius($custom-file-border-radius);\n @include box-shadow($custom-file-box-shadow);\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(#{$custom-file-height} - #{$custom-file-border-width} * 2);\n padding: $custom-file-padding-y $custom-file-padding-x;\n line-height: $custom-file-line-height;\n color: $custom-file-button-color;\n content: \"Browse\";\n @include gradient-bg($custom-file-button-bg);\n border-left: $custom-file-border-width solid $custom-file-border-color;\n @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);\n }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s or `<ul>`s.\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: $nav-link-padding-y $nav-link-padding-x;\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Disabled state lightens text\n &.disabled {\n color: $nav-link-disabled-color;\n }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n .nav-item {\n margin-bottom: -$nav-tabs-border-width;\n }\n\n .nav-link {\n border: $nav-tabs-border-width solid transparent;\n @include border-top-radius($nav-tabs-border-radius);\n\n @include hover-focus {\n border-color: $nav-tabs-link-hover-border-color;\n }\n\n &.disabled {\n color: $nav-link-disabled-color;\n background-color: transparent;\n border-color: transparent;\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n color: $nav-tabs-link-active-color;\n background-color: $nav-tabs-link-active-bg;\n border-color: $nav-tabs-link-active-border-color;\n }\n\n .dropdown-menu {\n // Make dropdown border overlap tab border\n margin-top: -$nav-tabs-border-width;\n // Remove the top rounded corners here since there is a hard edge above the menu\n @include border-top-radius(0);\n }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n .nav-link {\n @include border-radius($nav-pills-border-radius);\n }\n\n .nav-link.active,\n .show > .nav-link {\n color: $nav-pills-link-active-color;\n background-color: $nav-pills-link-active-bg;\n }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n .nav-item {\n flex: 1 1 auto;\n text-align: center;\n }\n}\n\n.nav-justified {\n .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Navbar divider\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap; // allow us to do the line break for collapsing content\n align-items: center;\n justify-content: space-between; // space out brand from logo\n padding: $navbar-padding-y $navbar-padding-x;\n\n // Because flex properties aren't inherited, we need to redeclare these first\n // few properities so that content nested within behave properly.\n > .container,\n > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n display: inline-block;\n padding-top: $navbar-brand-padding-y;\n padding-bottom: $navbar-brand-padding-y;\n margin-right: $navbar-padding-x;\n font-size: $navbar-brand-font-size;\n line-height: inherit;\n white-space: nowrap;\n\n @include hover-focus {\n text-decoration: none;\n }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n display: flex;\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-link {\n padding-right: 0;\n padding-left: 0;\n }\n\n .dropdown-menu {\n position: static;\n float: none;\n }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n display: inline-block;\n padding-top: $nav-link-padding-y;\n padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orienation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n // For always expanded or extra full navbars, ensure content aligns itself\n // properly vertically. Can be easily overridden with flex utilities.\n align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n font-size: $navbar-toggler-font-size;\n line-height: 1;\n background-color: transparent; // remove default button style\n border: $border-width solid transparent; // remove default button style\n @include border-radius($navbar-toggler-border-radius);\n\n @include hover-focus {\n text-decoration: none;\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .navbar-toggler elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n > .container,\n > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n @include media-breakpoint-up($next) {\n flex-flow: row nowrap;\n justify-content: flex-start;\n\n .navbar-nav {\n flex-direction: row;\n\n .dropdown-menu {\n position: absolute;\n }\n\n .dropdown-menu-right {\n right: 0;\n left: auto; // Reset the default from `.dropdown-menu`\n }\n\n .nav-link {\n padding-right: $navbar-nav-link-padding-x;\n padding-left: $navbar-nav-link-padding-x;\n }\n }\n\n // For nesting containers, have to redeclare for alignment purposes\n > .container,\n > .container-fluid {\n flex-wrap: nowrap;\n }\n\n .navbar-collapse {\n display: flex !important; // stylelint-disable-line declaration-no-important\n\n // Changes flex-bases to auto because of an IE10 bug\n flex-basis: auto;\n }\n\n .navbar-toggler {\n display: none;\n }\n\n .dropup {\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n }\n }\n }\n}\n\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n .navbar-brand {\n color: $navbar-light-active-color;\n\n @include hover-focus {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-light-color;\n\n @include hover-focus {\n color: $navbar-light-hover-color;\n }\n\n &.disabled {\n color: $navbar-light-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-light-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-light-color;\n border-color: $navbar-light-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-light-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-light-color;\n a {\n color: $navbar-light-active-color;\n\n @include hover-focus {\n color: $navbar-light-active-color;\n }\n }\n }\n}\n\n// White links against a dark background\n.navbar-dark {\n .navbar-brand {\n color: $navbar-dark-active-color;\n\n @include hover-focus {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-nav {\n .nav-link {\n color: $navbar-dark-color;\n\n @include hover-focus {\n color: $navbar-dark-hover-color;\n }\n\n &.disabled {\n color: $navbar-dark-disabled-color;\n }\n }\n\n .show > .nav-link,\n .active > .nav-link,\n .nav-link.show,\n .nav-link.active {\n color: $navbar-dark-active-color;\n }\n }\n\n .navbar-toggler {\n color: $navbar-dark-color;\n border-color: $navbar-dark-toggler-border-color;\n }\n\n .navbar-toggler-icon {\n background-image: $navbar-dark-toggler-icon-bg;\n }\n\n .navbar-text {\n color: $navbar-dark-color;\n a {\n color: $navbar-dark-active-color;\n\n @include hover-focus {\n color: $navbar-dark-active-color;\n }\n }\n }\n}\n","//\n// Base styles\n//\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: $card-bg;\n background-clip: border-box;\n border: $card-border-width solid $card-border-color;\n @include border-radius($card-border-radius);\n\n > hr {\n margin-right: 0;\n margin-left: 0;\n }\n\n > .list-group:first-child {\n .list-group-item:first-child {\n @include border-top-radius($card-border-radius);\n }\n }\n\n > .list-group:last-child {\n .list-group-item:last-child {\n @include border-bottom-radius($card-border-radius);\n }\n }\n}\n\n.card-body {\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n // as much space as possible, ensuring footers are aligned to the bottom.\n flex: 1 1 auto;\n padding: $card-spacer-x;\n}\n\n.card-title {\n margin-bottom: $card-spacer-y;\n}\n\n.card-subtitle {\n margin-top: -($card-spacer-y / 2);\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link {\n @include hover {\n text-decoration: none;\n }\n\n + .card-link {\n margin-left: $card-spacer-x;\n }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n padding: $card-spacer-y $card-spacer-x;\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\n background-color: $card-cap-bg;\n border-bottom: $card-border-width solid $card-border-color;\n\n &:first-child {\n @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n }\n\n + .list-group {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n}\n\n.card-footer {\n padding: $card-spacer-y $card-spacer-x;\n background-color: $card-cap-bg;\n border-top: $card-border-width solid $card-border-color;\n\n &:last-child {\n @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n margin-right: -($card-spacer-x / 2);\n margin-bottom: -$card-spacer-y;\n margin-left: -($card-spacer-x / 2);\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -($card-spacer-x / 2);\n margin-left: -($card-spacer-x / 2);\n}\n\n// Card image\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: $card-img-overlay-padding;\n}\n\n.card-img {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-radius($card-inner-border-radius);\n}\n\n// Card image caps\n.card-img-top {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img-bottom {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n// Card deck\n\n.card-deck {\n display: flex;\n flex-direction: column;\n\n .card {\n margin-bottom: $card-deck-margin;\n }\n\n @include media-breakpoint-up(sm) {\n flex-flow: row wrap;\n margin-right: -$card-deck-margin;\n margin-left: -$card-deck-margin;\n\n .card {\n display: flex;\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: $card-deck-margin;\n margin-bottom: 0; // Override the default\n margin-left: $card-deck-margin;\n }\n }\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n display: flex;\n flex-direction: column;\n\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n margin-bottom: $card-group-margin;\n }\n\n @include media-breakpoint-up(sm) {\n flex-flow: row wrap;\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored\n flex: 1 0 0%;\n margin-bottom: 0;\n\n + .card {\n margin-left: 0;\n border-left: 0;\n }\n\n // Handle rounded corners\n @if $enable-rounded {\n &:first-child {\n @include border-right-radius(0);\n\n .card-img-top,\n .card-header {\n border-top-right-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n border-bottom-right-radius: 0;\n }\n }\n\n &:last-child {\n @include border-left-radius(0);\n\n .card-img-top,\n .card-header {\n border-top-left-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n border-bottom-left-radius: 0;\n }\n }\n\n &:only-child {\n @include border-radius($card-border-radius);\n\n .card-img-top,\n .card-header {\n @include border-top-radius($card-border-radius);\n }\n .card-img-bottom,\n .card-footer {\n @include border-bottom-radius($card-border-radius);\n }\n }\n\n &:not(:first-child):not(:last-child):not(:only-child) {\n @include border-radius(0);\n\n .card-img-top,\n .card-img-bottom,\n .card-header,\n .card-footer {\n @include border-radius(0);\n }\n }\n }\n }\n }\n}\n\n\n//\n// Columns\n//\n\n.card-columns {\n .card {\n margin-bottom: $card-columns-margin;\n }\n\n @include media-breakpoint-up(sm) {\n column-count: $card-columns-count;\n column-gap: $card-columns-gap;\n\n .card {\n display: inline-block; // Don't let them vertically span multiple columns\n width: 100%; // Don't let their width change\n }\n }\n}\n",".breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n margin-bottom: $breadcrumb-margin-bottom;\n list-style: none;\n background-color: $breadcrumb-bg;\n @include border-radius($border-radius);\n}\n\n.breadcrumb-item {\n // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n + .breadcrumb-item::before {\n display: inline-block; // Suppress underlining of the separator in modern browsers\n padding-right: $breadcrumb-item-padding;\n padding-left: $breadcrumb-item-padding;\n color: $breadcrumb-divider-color;\n content: \"#{$breadcrumb-divider}\";\n }\n\n // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\n // without `<ul>`s. The `::before` pseudo-element generates an element\n // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\n //\n // To trick IE into suppressing the underline, we give the pseudo-element an\n // underline and then immediately remove it.\n + .breadcrumb-item:hover::before {\n text-decoration: underline;\n }\n // stylelint-disable-next-line no-duplicate-selectors\n + .breadcrumb-item:hover::before {\n text-decoration: none;\n }\n\n &.active {\n color: $breadcrumb-active-color;\n }\n}\n",".pagination {\n display: flex;\n @include list-unstyled();\n @include border-radius();\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: $pagination-padding-y $pagination-padding-x;\n margin-left: -$pagination-border-width;\n line-height: $pagination-line-height;\n color: $pagination-color;\n background-color: $pagination-bg;\n border: $pagination-border-width solid $pagination-border-color;\n\n &:hover {\n color: $pagination-hover-color;\n text-decoration: none;\n background-color: $pagination-hover-bg;\n border-color: $pagination-hover-border-color;\n }\n\n &:focus {\n z-index: 2;\n outline: 0;\n box-shadow: $pagination-focus-box-shadow;\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .page-link elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n}\n\n.page-item {\n &:first-child {\n .page-link {\n margin-left: 0;\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n\n &.active .page-link {\n z-index: 1;\n color: $pagination-active-color;\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n color: $pagination-disabled-color;\n pointer-events: none;\n // Opinionated: remove the \"hand\" cursor set previously for .page-link\n cursor: auto;\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);\n}\n\n.pagination-sm {\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);\n}\n","// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n display: inline-block;\n padding: $badge-padding-y $badge-padding-x;\n font-size: $badge-font-size;\n font-weight: $badge-font-weight;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n @include border-radius($badge-border-radius);\n\n // Empty badges collapse automatically\n &:empty {\n display: none;\n }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n// Pill badges\n//\n// Make them extra rounded with a modifier to replace v3's badges.\n\n.badge-pill {\n padding-right: $badge-pill-padding-x;\n padding-left: $badge-pill-padding-x;\n @include border-radius($badge-pill-border-radius);\n}\n\n// Colors\n//\n// Contextual variations (linked badges get darker on :hover).\n\n@each $color, $value in $theme-colors {\n .badge-#{$color} {\n @include badge-variant($value);\n }\n}\n","@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n &[href] {\n @include hover-focus {\n color: color-yiq($bg);\n text-decoration: none;\n background-color: darken($bg, 10%);\n }\n }\n}\n",".jumbotron {\n padding: $jumbotron-padding ($jumbotron-padding / 2);\n margin-bottom: $jumbotron-padding;\n background-color: $jumbotron-bg;\n @include border-radius($border-radius-lg);\n\n @include media-breakpoint-up(sm) {\n padding: ($jumbotron-padding * 2) $jumbotron-padding;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n @include border-radius(0);\n}\n","//\n// Base styles\n//\n\n.alert {\n position: relative;\n padding: $alert-padding-y $alert-padding-x;\n margin-bottom: $alert-margin-bottom;\n border: $alert-border-width solid transparent;\n @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n // Specified to prevent conflicts of changing $headings-color\n color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n padding-right: ($close-font-size + $alert-padding-x * 2);\n\n // Adjust close link position\n .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: $alert-padding-y $alert-padding-x;\n color: inherit;\n }\n}\n\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n }\n}\n","@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n","@keyframes progress-bar-stripes {\n from { background-position: $progress-height 0; }\n to { background-position: 0 0; }\n}\n\n.progress {\n display: flex;\n height: $progress-height;\n overflow: hidden; // force rounded corners by cropping it\n font-size: $progress-font-size;\n background-color: $progress-bg;\n @include border-radius($progress-border-radius);\n @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: $progress-bar-color;\n text-align: center;\n background-color: $progress-bar-bg;\n @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: $progress-height $progress-height;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes $progress-bar-animation-timing;\n}\n",".media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n display: flex;\n flex-direction: column;\n\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 0;\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n width: 100%; // For `<button>`s (anchors become 100% by default though)\n color: $list-group-action-color;\n text-align: inherit; // For `<button>`s (anchors inherit)\n\n // Hover state\n @include hover-focus {\n color: $list-group-action-hover-color;\n text-decoration: none;\n background-color: $list-group-hover-bg;\n }\n\n &:active {\n color: $list-group-action-active-color;\n background-color: $list-group-action-active-bg;\n }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: $list-group-item-padding-y $list-group-item-padding-x;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -$list-group-border-width;\n background-color: $list-group-bg;\n border: $list-group-border-width solid $list-group-border-color;\n\n &:first-child {\n @include border-top-radius($list-group-border-radius);\n }\n\n &:last-child {\n margin-bottom: 0;\n @include border-bottom-radius($list-group-border-radius);\n }\n\n @include hover-focus {\n z-index: 1; // Place hover/active items above their siblings for proper border styling\n text-decoration: none;\n }\n\n &.disabled,\n &:disabled {\n color: $list-group-disabled-color;\n background-color: $list-group-disabled-bg;\n }\n\n // Include both here for `<a>`s and `<button>`s\n &.active {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: $list-group-active-color;\n background-color: $list-group-active-bg;\n border-color: $list-group-active-border-color;\n }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n .list-group-item {\n border-right: 0;\n border-left: 0;\n @include border-radius(0);\n }\n\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n }\n }\n\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $color, $value in $theme-colors {\n @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\n}\n","// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: #fff;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n",".close {\n float: right;\n font-size: $close-font-size;\n font-weight: $close-font-weight;\n line-height: 1;\n color: $close-color;\n text-shadow: $close-text-shadow;\n opacity: .5;\n\n @include hover-focus {\n color: $close-color;\n text-decoration: none;\n opacity: .75;\n }\n\n // Opinionated: add \"hand\" cursor to non-disabled .close elements\n &:not(:disabled):not(.disabled) {\n cursor: pointer;\n }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n// stylelint-enable\n","// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal;\n display: none;\n overflow: hidden;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n\n .modal-open & {\n overflow-x: hidden;\n overflow-y: auto;\n }\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: $modal-dialog-margin;\n // allow clicks to pass through for custom click handling to close modal\n pointer-events: none;\n\n // When fading in the modal, animate it to slide down\n .modal.fade & {\n @include transition($modal-transition);\n transform: translate(0, -25%);\n }\n .modal.show & {\n transform: translate(0, 0);\n }\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - (#{$modal-dialog-margin} * 2));\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n // counteract the pointer-events: none; in the .modal-dialog\n pointer-events: auto;\n background-color: $modal-content-bg;\n background-clip: padding-box;\n border: $modal-content-border-width solid $modal-content-border-color;\n @include border-radius($border-radius-lg);\n @include box-shadow($modal-content-box-shadow-xs);\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-modal-backdrop;\n background-color: $modal-backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $modal-backdrop-opacity; }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n align-items: flex-start; // so the close btn always stays on the upper right corner\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n padding: $modal-header-padding;\n border-bottom: $modal-header-border-width solid $modal-header-border-color;\n @include border-top-radius($border-radius-lg);\n\n .close {\n padding: $modal-header-padding;\n // auto on the left force icon to the right even when there is no .modal-title\n margin: (-$modal-header-padding) (-$modal-header-padding) (-$modal-header-padding) auto;\n }\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when should there be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n padding: $modal-inner-padding;\n border-top: $modal-footer-border-width solid $modal-footer-border-color;\n\n // Easily place margin between footer elements\n > :not(:first-child) { margin-left: .25rem; }\n > :not(:last-child) { margin-right: .25rem; }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n max-width: $modal-md;\n margin: $modal-dialog-margin-y-sm-up auto;\n }\n\n .modal-dialog-centered {\n min-height: calc(100% - (#{$modal-dialog-margin-y-sm-up} * 2));\n }\n\n .modal-content {\n @include box-shadow($modal-content-box-shadow-sm-up);\n }\n\n .modal-sm { max-width: $modal-sm; }\n\n}\n\n@include media-breakpoint-up(lg) {\n .modal-lg { max-width: $modal-lg; }\n}\n","// Base class\n.tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n margin: $tooltip-margin;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $tooltip-font-size;\n // Allow breaking very long words so they don't overflow the tooltip's bounds\n word-wrap: break-word;\n opacity: 0;\n\n &.show { opacity: $tooltip-opacity; }\n\n .arrow {\n position: absolute;\n display: block;\n width: $tooltip-arrow-width;\n height: $tooltip-arrow-height;\n\n &::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-tooltip-top {\n padding: $tooltip-arrow-height 0;\n\n .arrow {\n bottom: 0;\n\n &::before {\n top: 0;\n border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n border-top-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-right {\n padding: 0 $tooltip-arrow-height;\n\n .arrow {\n left: 0;\n width: $tooltip-arrow-height;\n height: $tooltip-arrow-width;\n\n &::before {\n right: 0;\n border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n border-right-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-bottom {\n padding: $tooltip-arrow-height 0;\n\n .arrow {\n top: 0;\n\n &::before {\n bottom: 0;\n border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n border-bottom-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-left {\n padding: 0 $tooltip-arrow-height;\n\n .arrow {\n right: 0;\n width: $tooltip-arrow-height;\n height: $tooltip-arrow-width;\n\n &::before {\n left: 0;\n border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n border-left-color: $tooltip-arrow-color;\n }\n }\n}\n\n.bs-tooltip-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-tooltip-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-tooltip-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-tooltip-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-tooltip-left;\n }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: $tooltip-max-width;\n padding: $tooltip-padding-y $tooltip-padding-x;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start; // stylelint-disable-line declaration-block-no-duplicate-properties\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n",".popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: $zindex-popover;\n display: block;\n max-width: $popover-max-width;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n font-size: $popover-font-size;\n // Allow breaking very long words so they don't overflow the popover's bounds\n word-wrap: break-word;\n background-color: $popover-bg;\n background-clip: padding-box;\n border: $popover-border-width solid $popover-border-color;\n @include border-radius($popover-border-radius);\n @include box-shadow($popover-box-shadow);\n\n .arrow {\n position: absolute;\n display: block;\n width: $popover-arrow-width;\n height: $popover-arrow-height;\n margin: 0 $border-radius-lg;\n\n &::before,\n &::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-popover-top {\n margin-bottom: $popover-arrow-height;\n\n .arrow {\n bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n }\n\n .arrow::before,\n .arrow::after {\n border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;\n }\n\n .arrow::before {\n bottom: 0;\n border-top-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n bottom: $popover-border-width;\n border-top-color: $popover-arrow-color;\n }\n}\n\n.bs-popover-right {\n margin-left: $popover-arrow-height;\n\n .arrow {\n left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n width: $popover-arrow-height;\n height: $popover-arrow-width;\n margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n }\n\n .arrow::before,\n .arrow::after {\n border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;\n }\n\n .arrow::before {\n left: 0;\n border-right-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n left: $popover-border-width;\n border-right-color: $popover-arrow-color;\n }\n}\n\n.bs-popover-bottom {\n margin-top: $popover-arrow-height;\n\n .arrow {\n top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n }\n\n .arrow::before,\n .arrow::after {\n border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);\n }\n\n .arrow::before {\n top: 0;\n border-bottom-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n top: $popover-border-width;\n border-bottom-color: $popover-arrow-color;\n }\n\n // This will remove the popover-header's border just below the arrow\n .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: $popover-arrow-width;\n margin-left: ($popover-arrow-width / -2);\n content: \"\";\n border-bottom: $popover-border-width solid $popover-header-bg;\n }\n}\n\n.bs-popover-left {\n margin-right: $popover-arrow-height;\n\n .arrow {\n right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n width: $popover-arrow-height;\n height: $popover-arrow-width;\n margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n }\n\n .arrow::before,\n .arrow::after {\n border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;\n }\n\n .arrow::before {\n right: 0;\n border-left-color: $popover-arrow-outer-color;\n }\n\n .arrow::after {\n right: $popover-border-width;\n border-left-color: $popover-arrow-color;\n }\n}\n\n.bs-popover-auto {\n &[x-placement^=\"top\"] {\n @extend .bs-popover-top;\n }\n &[x-placement^=\"right\"] {\n @extend .bs-popover-right;\n }\n &[x-placement^=\"bottom\"] {\n @extend .bs-popover-bottom;\n }\n &[x-placement^=\"left\"] {\n @extend .bs-popover-left;\n }\n}\n\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n padding: $popover-header-padding-y $popover-header-padding-x;\n margin-bottom: 0; // Reset the default from Reboot\n font-size: $font-size-base;\n color: $popover-header-color;\n background-color: $popover-header-bg;\n border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\n $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});\n @include border-top-radius($offset-border-width);\n\n &:empty {\n display: none;\n }\n}\n\n.popover-body {\n padding: $popover-body-padding-y $popover-body-padding-x;\n color: $popover-body-color;\n}\n","// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n @include transition($carousel-transition);\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n// CSS3 transforms when supported by the browser\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translateX(0);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translateX(100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translateX(-100%);\n\n @supports (transform-style: preserve-3d) {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n // Use flex for alignment (1-3)\n display: flex; // 1. allow flex styles\n align-items: center; // 2. vertically center contents\n justify-content: center; // 3. horizontally center contents\n width: $carousel-control-width;\n color: $carousel-control-color;\n text-align: center;\n opacity: $carousel-control-opacity;\n // We can't have a transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Hover/focus state\n @include hover-focus {\n color: $carousel-control-color;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n }\n}\n.carousel-control-prev {\n left: 0;\n @if $enable-gradients {\n background: linear-gradient(90deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001));\n }\n}\n.carousel-control-next {\n right: 0;\n @if $enable-gradients {\n background: linear-gradient(270deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001));\n }\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: $carousel-control-icon-width;\n height: $carousel-control-icon-width;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: $carousel-control-prev-icon-bg;\n}\n.carousel-control-next-icon {\n background-image: $carousel-control-next-icon-bg;\n}\n\n\n// Optional indicator pips\n//\n// Add an ordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0; // override <ol> default\n // Use the .carousel-control's width as margin so we don't overlay those\n margin-right: $carousel-control-width;\n margin-left: $carousel-control-width;\n list-style: none;\n\n li {\n position: relative;\n flex: 0 1 auto;\n width: $carousel-indicator-width;\n height: $carousel-indicator-height;\n margin-right: $carousel-indicator-spacer;\n margin-left: $carousel-indicator-spacer;\n text-indent: -999px;\n background-color: rgba($carousel-indicator-active-bg, .5);\n\n // Use pseudo classes to increase the hit area by 10px on top and bottom.\n &::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n &::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n }\n\n .active {\n background-color: $carousel-indicator-active-bg;\n }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n position: absolute;\n right: ((100% - $carousel-caption-width) / 2);\n bottom: 20px;\n left: ((100% - $carousel-caption-width) / 2);\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: $carousel-caption-color;\n text-align: center;\n}\n","// stylelint-disable declaration-no-important\n\n.align-baseline { vertical-align: baseline !important; } // Browser default\n.align-top { vertical-align: top !important; }\n.align-middle { vertical-align: middle !important; }\n.align-bottom { vertical-align: bottom !important; }\n.align-text-bottom { vertical-align: text-bottom !important; }\n.align-text-top { vertical-align: text-top !important; }\n","// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n","// stylelint-disable declaration-no-important\n\n@each $color, $value in $theme-colors {\n @include bg-variant(\".bg-#{$color}\", $value);\n}\n\n@if $enable-gradients {\n @each $color, $value in $theme-colors {\n @include bg-gradient-variant(\".bg-gradient-#{$color}\", $value);\n }\n}\n\n.bg-white {\n background-color: $white !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Border\n//\n\n.border { border: $border-width solid $border-color !important; }\n.border-top { border-top: $border-width solid $border-color !important; }\n.border-right { border-right: $border-width solid $border-color !important; }\n.border-bottom { border-bottom: $border-width solid $border-color !important; }\n.border-left { border-left: $border-width solid $border-color !important; }\n\n.border-0 { border: 0 !important; }\n.border-top-0 { border-top: 0 !important; }\n.border-right-0 { border-right: 0 !important; }\n.border-bottom-0 { border-bottom: 0 !important; }\n.border-left-0 { border-left: 0 !important; }\n\n@each $color, $value in $theme-colors {\n .border-#{$color} {\n border-color: $value !important;\n }\n}\n\n.border-white {\n border-color: $white !important;\n}\n\n//\n// Border-radius\n//\n\n.rounded {\n border-radius: $border-radius !important;\n}\n.rounded-top {\n border-top-left-radius: $border-radius !important;\n border-top-right-radius: $border-radius !important;\n}\n.rounded-right {\n border-top-right-radius: $border-radius !important;\n border-bottom-right-radius: $border-radius !important;\n}\n.rounded-bottom {\n border-bottom-right-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n.rounded-left {\n border-top-left-radius: $border-radius !important;\n border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .d#{$infix}-none { display: none !important; }\n .d#{$infix}-inline { display: inline !important; }\n .d#{$infix}-inline-block { display: inline-block !important; }\n .d#{$infix}-block { display: block !important; }\n .d#{$infix}-table { display: table !important; }\n .d#{$infix}-table-row { display: table-row !important; }\n .d#{$infix}-table-cell { display: table-cell !important; }\n .d#{$infix}-flex { display: flex !important; }\n .d#{$infix}-inline-flex { display: inline-flex !important; }\n }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n@media print {\n .d-print-none { display: none !important; }\n .d-print-inline { display: inline !important; }\n .d-print-inline-block { display: inline-block !important; }\n .d-print-block { display: block !important; }\n .d-print-table { display: table !important; }\n .d-print-table-row { display: table-row !important; }\n .d-print-table-cell { display: table-cell !important; }\n .d-print-flex { display: flex !important; }\n .d-print-inline-flex { display: inline-flex !important; }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n\n &::before {\n display: block;\n content: \"\";\n }\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n.embed-responsive-21by9 {\n &::before {\n padding-top: percentage(9 / 21);\n }\n}\n\n.embed-responsive-16by9 {\n &::before {\n padding-top: percentage(9 / 16);\n }\n}\n\n.embed-responsive-4by3 {\n &::before {\n padding-top: percentage(3 / 4);\n }\n}\n\n.embed-responsive-1by1 {\n &::before {\n padding-top: percentage(1 / 1);\n }\n}\n","// stylelint-disable declaration-no-important\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .flex#{$infix}-row { flex-direction: row !important; }\n .flex#{$infix}-column { flex-direction: column !important; }\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\n .justify-content#{$infix}-center { justify-content: center !important; }\n .justify-content#{$infix}-between { justify-content: space-between !important; }\n .justify-content#{$infix}-around { justify-content: space-around !important; }\n\n .align-items#{$infix}-start { align-items: flex-start !important; }\n .align-items#{$infix}-end { align-items: flex-end !important; }\n .align-items#{$infix}-center { align-items: center !important; }\n .align-items#{$infix}-baseline { align-items: baseline !important; }\n .align-items#{$infix}-stretch { align-items: stretch !important; }\n\n .align-content#{$infix}-start { align-content: flex-start !important; }\n .align-content#{$infix}-end { align-content: flex-end !important; }\n .align-content#{$infix}-center { align-content: center !important; }\n .align-content#{$infix}-between { align-content: space-between !important; }\n .align-content#{$infix}-around { align-content: space-around !important; }\n .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n .align-self#{$infix}-auto { align-self: auto !important; }\n .align-self#{$infix}-start { align-self: flex-start !important; }\n .align-self#{$infix}-end { align-self: flex-end !important; }\n .align-self#{$infix}-center { align-self: center !important; }\n .align-self#{$infix}-baseline { align-self: baseline !important; }\n .align-self#{$infix}-stretch { align-self: stretch !important; }\n }\n}\n","@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .float#{$infix}-left { @include float-left; }\n .float#{$infix}-right { @include float-right; }\n .float#{$infix}-none { @include float-none; }\n }\n}\n","// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n}\n@mixin float-right {\n float: right !important;\n}\n@mixin float-none {\n float: none !important;\n}\n","// stylelint-disable declaration-no-important\n\n// Common values\n\n// Sass list not in variables since it's not intended for customization.\n$positions: static, relative, absolute, fixed, sticky;\n\n@each $position in $positions {\n .position-#{$position} { position: $position !important; }\n}\n\n// Shorthand\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.sticky-top {\n @supports (position: sticky) {\n position: sticky;\n top: 0;\n z-index: $zindex-sticky;\n }\n}\n","//\n// Screenreaders\n//\n\n.sr-only {\n @include sr-only();\n}\n\n.sr-only-focusable {\n @include sr-only-focusable();\n}\n","// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n }\n}\n","// stylelint-disable declaration-no-important\n\n// Width and height\n\n@each $prop, $abbrev in (width: w, height: h) {\n @each $size, $length in $sizes {\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n }\n}\n\n.mw-100 { max-width: 100% !important; }\n.mh-100 { max-height: 100% !important; }\n","// stylelint-disable declaration-no-important\n\n// Margin and Padding\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @each $prop, $abbrev in (margin: m, padding: p) {\n @each $size, $length in $spacers {\n\n .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\n .#{$abbrev}t#{$infix}-#{$size},\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-top: $length !important;\n }\n .#{$abbrev}r#{$infix}-#{$size},\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-right: $length !important;\n }\n .#{$abbrev}b#{$infix}-#{$size},\n .#{$abbrev}y#{$infix}-#{$size} {\n #{$prop}-bottom: $length !important;\n }\n .#{$abbrev}l#{$infix}-#{$size},\n .#{$abbrev}x#{$infix}-#{$size} {\n #{$prop}-left: $length !important;\n }\n }\n }\n\n // Some special margin utils\n .m#{$infix}-auto { margin: auto !important; }\n .mt#{$infix}-auto,\n .my#{$infix}-auto {\n margin-top: auto !important;\n }\n .mr#{$infix}-auto,\n .mx#{$infix}-auto {\n margin-right: auto !important;\n }\n .mb#{$infix}-auto,\n .my#{$infix}-auto {\n margin-bottom: auto !important;\n }\n .ml#{$infix}-auto,\n .mx#{$infix}-auto {\n margin-left: auto !important;\n }\n }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Text\n//\n\n// Alignment\n\n.text-justify { text-align: justify !important; }\n.text-nowrap { white-space: nowrap !important; }\n.text-truncate { @include text-truncate; }\n\n// Responsive alignment\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .text#{$infix}-left { text-align: left !important; }\n .text#{$infix}-right { text-align: right !important; }\n .text#{$infix}-center { text-align: center !important; }\n }\n}\n\n// Transformation\n\n.text-lowercase { text-transform: lowercase !important; }\n.text-uppercase { text-transform: uppercase !important; }\n.text-capitalize { text-transform: capitalize !important; }\n\n// Weight and italics\n\n.font-weight-light { font-weight: $font-weight-light !important; }\n.font-weight-normal { font-weight: $font-weight-normal !important; }\n.font-weight-bold { font-weight: $font-weight-bold !important; }\n.font-italic { font-style: italic !important; }\n\n// Contextual colors\n\n.text-white { color: #fff !important; }\n\n@each $color, $value in $theme-colors {\n @include text-emphasis-variant(\".text-#{$color}\", $value);\n}\n\n.text-muted { color: $text-muted !important; }\n\n// Misc\n\n.text-hide {\n @include text-hide();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n a#{$parent} {\n @include hover-focus {\n color: darken($color, 10%) !important;\n }\n }\n}\n","// CSS image replacement\n@mixin text-hide() {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","//\n// Visibility utilities\n//\n\n.visible {\n @include invisible(visible);\n}\n\n.invisible {\n @include invisible(hidden);\n}\n","// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request:\n// http://www.phpied.com/delay-loading-your-print-css/\n// ==========================================================================\n\n@if $enable-print-styles {\n @media print {\n *,\n *::before,\n *::after {\n // Bootstrap specific; comment out `color` and `background`\n //color: #000 !important; // Black prints faster: http://www.sanbeiji.com/archives/953\n text-shadow: none !important;\n //background: transparent !important;\n box-shadow: none !important;\n }\n\n a {\n &:not(.btn) {\n text-decoration: underline;\n }\n }\n\n // Bootstrap specific; comment the following selector out\n //a[href]::after {\n // content: \" (\" attr(href) \")\";\n //}\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n // Bootstrap specific; comment the following selector out\n //\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n //\n\n //a[href^=\"#\"]::after,\n //a[href^=\"javascript:\"]::after {\n // content: \"\";\n //}\n\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: $border-width solid #999; // Bootstrap custom code; using `$border-width` instead of 1px\n page-break-inside: avoid;\n }\n\n //\n // Printing Tables:\n // http://css-discuss.incutio.com/wiki/Printing_Tables\n //\n\n thead {\n display: table-header-group;\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Specify a size and min-width to make printing closer across browsers.\n // We don't set margin here because it breaks `size` in Chrome. We also\n // don't use `!important` on `size` as it breaks in Chrome.\n @page {\n size: $print-page-size;\n }\n body {\n min-width: $print-body-min-width !important;\n }\n .container {\n min-width: $print-body-min-width !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .badge {\n border: $border-width solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n }\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.bundle.js b/library/bootstrap/js/bootstrap.bundle.js
new file mode 100644
index 000000000..45b357d36
--- /dev/null
+++ b/library/bootstrap/js/bootstrap.bundle.js
@@ -0,0 +1,6328 @@
+/*!
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) :
+ typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) :
+ (factory((global.bootstrap = {}),global.jQuery));
+}(this, (function (exports,$) { 'use strict';
+
+$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+}
+
+function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ subClass.__proto__ = superClass;
+}
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): util.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Util = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Private TransitionEnd Helpers
+ * ------------------------------------------------------------------------
+ */
+ var transition = false;
+ var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
+
+ function toType(obj) {
+ return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
+ }
+
+ function getSpecialTransitionEndEvent() {
+ return {
+ bindType: transition.end,
+ delegateType: transition.end,
+ handle: function handle(event) {
+ if ($$$1(event.target).is(this)) {
+ return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
+ }
+
+ return undefined; // eslint-disable-line no-undefined
+ }
+ };
+ }
+
+ function transitionEndTest() {
+ if (typeof window !== 'undefined' && window.QUnit) {
+ return false;
+ }
+
+ return {
+ end: 'transitionend'
+ };
+ }
+
+ function transitionEndEmulator(duration) {
+ var _this = this;
+
+ var called = false;
+ $$$1(this).one(Util.TRANSITION_END, function () {
+ called = true;
+ });
+ setTimeout(function () {
+ if (!called) {
+ Util.triggerTransitionEnd(_this);
+ }
+ }, duration);
+ return this;
+ }
+
+ function setTransitionEndSupport() {
+ transition = transitionEndTest();
+ $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
+
+ if (Util.supportsTransitionEnd()) {
+ $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
+ }
+ }
+
+ function escapeId(selector) {
+ // We escape IDs in case of special selectors (selector = '#myId:something')
+ // $.escapeSelector does not exist in jQuery < 3
+ selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
+ return selector;
+ }
+ /**
+ * --------------------------------------------------------------------------
+ * Public Util Api
+ * --------------------------------------------------------------------------
+ */
+
+
+ var Util = {
+ TRANSITION_END: 'bsTransitionEnd',
+ getUID: function getUID(prefix) {
+ do {
+ // eslint-disable-next-line no-bitwise
+ prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
+ } while (document.getElementById(prefix));
+
+ return prefix;
+ },
+ getSelectorFromElement: function getSelectorFromElement(element) {
+ var selector = element.getAttribute('data-target');
+
+ if (!selector || selector === '#') {
+ selector = element.getAttribute('href') || '';
+ } // If it's an ID
+
+
+ if (selector.charAt(0) === '#') {
+ selector = escapeId(selector);
+ }
+
+ try {
+ var $selector = $$$1(document).find(selector);
+ return $selector.length > 0 ? selector : null;
+ } catch (err) {
+ return null;
+ }
+ },
+ reflow: function reflow(element) {
+ return element.offsetHeight;
+ },
+ triggerTransitionEnd: function triggerTransitionEnd(element) {
+ $$$1(element).trigger(transition.end);
+ },
+ supportsTransitionEnd: function supportsTransitionEnd() {
+ return Boolean(transition);
+ },
+ isElement: function isElement(obj) {
+ return (obj[0] || obj).nodeType;
+ },
+ typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
+ for (var property in configTypes) {
+ if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
+ var expectedTypes = configTypes[property];
+ var value = config[property];
+ var valueType = value && Util.isElement(value) ? 'element' : toType(value);
+
+ if (!new RegExp(expectedTypes).test(valueType)) {
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
+ }
+ }
+ }
+ }
+ };
+ setTransitionEndSupport();
+ return Util;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): alert.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Alert = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'alert';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.alert';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 150;
+ var Selector = {
+ DISMISS: '[data-dismiss="alert"]'
+ };
+ var Event = {
+ CLOSE: "close" + EVENT_KEY,
+ CLOSED: "closed" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ ALERT: 'alert',
+ FADE: 'fade',
+ SHOW: 'show'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Alert =
+ /*#__PURE__*/
+ function () {
+ function Alert(element) {
+ this._element = element;
+ } // Getters
+
+
+ var _proto = Alert.prototype;
+
+ // Public
+ _proto.close = function close(element) {
+ element = element || this._element;
+
+ var rootElement = this._getRootElement(element);
+
+ var customEvent = this._triggerCloseEvent(rootElement);
+
+ if (customEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ this._removeElement(rootElement);
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ this._element = null;
+ }; // Private
+
+
+ _proto._getRootElement = function _getRootElement(element) {
+ var selector = Util.getSelectorFromElement(element);
+ var parent = false;
+
+ if (selector) {
+ parent = $$$1(selector)[0];
+ }
+
+ if (!parent) {
+ parent = $$$1(element).closest("." + ClassName.ALERT)[0];
+ }
+
+ return parent;
+ };
+
+ _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
+ var closeEvent = $$$1.Event(Event.CLOSE);
+ $$$1(element).trigger(closeEvent);
+ return closeEvent;
+ };
+
+ _proto._removeElement = function _removeElement(element) {
+ var _this = this;
+
+ $$$1(element).removeClass(ClassName.SHOW);
+
+ if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) {
+ this._destroyElement(element);
+
+ return;
+ }
+
+ $$$1(element).one(Util.TRANSITION_END, function (event) {
+ return _this._destroyElement(element, event);
+ }).emulateTransitionEnd(TRANSITION_DURATION);
+ };
+
+ _proto._destroyElement = function _destroyElement(element) {
+ $$$1(element).detach().trigger(Event.CLOSED).remove();
+ }; // Static
+
+
+ Alert._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var $element = $$$1(this);
+ var data = $element.data(DATA_KEY);
+
+ if (!data) {
+ data = new Alert(this);
+ $element.data(DATA_KEY, data);
+ }
+
+ if (config === 'close') {
+ data[config](this);
+ }
+ });
+ };
+
+ Alert._handleDismiss = function _handleDismiss(alertInstance) {
+ return function (event) {
+ if (event) {
+ event.preventDefault();
+ }
+
+ alertInstance.close(this);
+ };
+ };
+
+ _createClass(Alert, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }]);
+ return Alert;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Alert._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Alert;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Alert._jQueryInterface;
+ };
+
+ return Alert;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): button.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Button = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'button';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.button';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var ClassName = {
+ ACTIVE: 'active',
+ BUTTON: 'btn',
+ FOCUS: 'focus'
+ };
+ var Selector = {
+ DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
+ DATA_TOGGLE: '[data-toggle="buttons"]',
+ INPUT: 'input',
+ ACTIVE: '.active',
+ BUTTON: '.btn'
+ };
+ var Event = {
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
+ FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Button =
+ /*#__PURE__*/
+ function () {
+ function Button(element) {
+ this._element = element;
+ } // Getters
+
+
+ var _proto = Button.prototype;
+
+ // Public
+ _proto.toggle = function toggle() {
+ var triggerChangeEvent = true;
+ var addAriaPressed = true;
+ var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
+
+ if (rootElement) {
+ var input = $$$1(this._element).find(Selector.INPUT)[0];
+
+ if (input) {
+ if (input.type === 'radio') {
+ if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
+ triggerChangeEvent = false;
+ } else {
+ var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
+
+ if (activeElement) {
+ $$$1(activeElement).removeClass(ClassName.ACTIVE);
+ }
+ }
+ }
+
+ if (triggerChangeEvent) {
+ if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
+ return;
+ }
+
+ input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
+ $$$1(input).trigger('change');
+ }
+
+ input.focus();
+ addAriaPressed = false;
+ }
+ }
+
+ if (addAriaPressed) {
+ this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
+ }
+
+ if (triggerChangeEvent) {
+ $$$1(this._element).toggleClass(ClassName.ACTIVE);
+ }
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ this._element = null;
+ }; // Static
+
+
+ Button._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ if (!data) {
+ data = new Button(this);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (config === 'toggle') {
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(Button, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }]);
+ return Button;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
+ event.preventDefault();
+ var button = event.target;
+
+ if (!$$$1(button).hasClass(ClassName.BUTTON)) {
+ button = $$$1(button).closest(Selector.BUTTON);
+ }
+
+ Button._jQueryInterface.call($$$1(button), 'toggle');
+ }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
+ var button = $$$1(event.target).closest(Selector.BUTTON)[0];
+ $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Button._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Button;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Button._jQueryInterface;
+ };
+
+ return Button;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): carousel.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Carousel = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'carousel';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.carousel';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 600;
+ var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
+
+ var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
+
+ var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
+
+ var Default = {
+ interval: 5000,
+ keyboard: true,
+ slide: false,
+ pause: 'hover',
+ wrap: true
+ };
+ var DefaultType = {
+ interval: '(number|boolean)',
+ keyboard: 'boolean',
+ slide: '(boolean|string)',
+ pause: '(string|boolean)',
+ wrap: 'boolean'
+ };
+ var Direction = {
+ NEXT: 'next',
+ PREV: 'prev',
+ LEFT: 'left',
+ RIGHT: 'right'
+ };
+ var Event = {
+ SLIDE: "slide" + EVENT_KEY,
+ SLID: "slid" + EVENT_KEY,
+ KEYDOWN: "keydown" + EVENT_KEY,
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY,
+ TOUCHEND: "touchend" + EVENT_KEY,
+ LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ CAROUSEL: 'carousel',
+ ACTIVE: 'active',
+ SLIDE: 'slide',
+ RIGHT: 'carousel-item-right',
+ LEFT: 'carousel-item-left',
+ NEXT: 'carousel-item-next',
+ PREV: 'carousel-item-prev',
+ ITEM: 'carousel-item'
+ };
+ var Selector = {
+ ACTIVE: '.active',
+ ACTIVE_ITEM: '.active.carousel-item',
+ ITEM: '.carousel-item',
+ NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
+ INDICATORS: '.carousel-indicators',
+ DATA_SLIDE: '[data-slide], [data-slide-to]',
+ DATA_RIDE: '[data-ride="carousel"]'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Carousel =
+ /*#__PURE__*/
+ function () {
+ function Carousel(element, config) {
+ this._items = null;
+ this._interval = null;
+ this._activeElement = null;
+ this._isPaused = false;
+ this._isSliding = false;
+ this.touchTimeout = null;
+ this._config = this._getConfig(config);
+ this._element = $$$1(element)[0];
+ this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
+
+ this._addEventListeners();
+ } // Getters
+
+
+ var _proto = Carousel.prototype;
+
+ // Public
+ _proto.next = function next() {
+ if (!this._isSliding) {
+ this._slide(Direction.NEXT);
+ }
+ };
+
+ _proto.nextWhenVisible = function nextWhenVisible() {
+ // Don't call next when the page isn't visible
+ // or the carousel or its parent isn't visible
+ if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
+ this.next();
+ }
+ };
+
+ _proto.prev = function prev() {
+ if (!this._isSliding) {
+ this._slide(Direction.PREV);
+ }
+ };
+
+ _proto.pause = function pause(event) {
+ if (!event) {
+ this._isPaused = true;
+ }
+
+ if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
+ Util.triggerTransitionEnd(this._element);
+ this.cycle(true);
+ }
+
+ clearInterval(this._interval);
+ this._interval = null;
+ };
+
+ _proto.cycle = function cycle(event) {
+ if (!event) {
+ this._isPaused = false;
+ }
+
+ if (this._interval) {
+ clearInterval(this._interval);
+ this._interval = null;
+ }
+
+ if (this._config.interval && !this._isPaused) {
+ this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
+ }
+ };
+
+ _proto.to = function to(index) {
+ var _this = this;
+
+ this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
+
+ var activeIndex = this._getItemIndex(this._activeElement);
+
+ if (index > this._items.length - 1 || index < 0) {
+ return;
+ }
+
+ if (this._isSliding) {
+ $$$1(this._element).one(Event.SLID, function () {
+ return _this.to(index);
+ });
+ return;
+ }
+
+ if (activeIndex === index) {
+ this.pause();
+ this.cycle();
+ return;
+ }
+
+ var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
+
+ this._slide(direction, this._items[index]);
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1(this._element).off(EVENT_KEY);
+ $$$1.removeData(this._element, DATA_KEY);
+ this._items = null;
+ this._config = null;
+ this._element = null;
+ this._interval = null;
+ this._isPaused = null;
+ this._isSliding = null;
+ this._activeElement = null;
+ this._indicatorsElement = null;
+ }; // Private
+
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
+ Util.typeCheckConfig(NAME, config, DefaultType);
+ return config;
+ };
+
+ _proto._addEventListeners = function _addEventListeners() {
+ var _this2 = this;
+
+ if (this._config.keyboard) {
+ $$$1(this._element).on(Event.KEYDOWN, function (event) {
+ return _this2._keydown(event);
+ });
+ }
+
+ if (this._config.pause === 'hover') {
+ $$$1(this._element).on(Event.MOUSEENTER, function (event) {
+ return _this2.pause(event);
+ }).on(Event.MOUSELEAVE, function (event) {
+ return _this2.cycle(event);
+ });
+
+ if ('ontouchstart' in document.documentElement) {
+ // If it's a touch-enabled device, mouseenter/leave are fired as
+ // part of the mouse compatibility events on first tap - the carousel
+ // would stop cycling until user tapped out of it;
+ // here, we listen for touchend, explicitly pause the carousel
+ // (as if it's the second time we tap on it, mouseenter compat event
+ // is NOT fired) and after a timeout (to allow for mouse compatibility
+ // events to fire) we explicitly restart cycling
+ $$$1(this._element).on(Event.TOUCHEND, function () {
+ _this2.pause();
+
+ if (_this2.touchTimeout) {
+ clearTimeout(_this2.touchTimeout);
+ }
+
+ _this2.touchTimeout = setTimeout(function (event) {
+ return _this2.cycle(event);
+ }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
+ });
+ }
+ }
+ };
+
+ _proto._keydown = function _keydown(event) {
+ if (/input|textarea/i.test(event.target.tagName)) {
+ return;
+ }
+
+ switch (event.which) {
+ case ARROW_LEFT_KEYCODE:
+ event.preventDefault();
+ this.prev();
+ break;
+
+ case ARROW_RIGHT_KEYCODE:
+ event.preventDefault();
+ this.next();
+ break;
+
+ default:
+ }
+ };
+
+ _proto._getItemIndex = function _getItemIndex(element) {
+ this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
+ return this._items.indexOf(element);
+ };
+
+ _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
+ var isNextDirection = direction === Direction.NEXT;
+ var isPrevDirection = direction === Direction.PREV;
+
+ var activeIndex = this._getItemIndex(activeElement);
+
+ var lastItemIndex = this._items.length - 1;
+ var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
+
+ if (isGoingToWrap && !this._config.wrap) {
+ return activeElement;
+ }
+
+ var delta = direction === Direction.PREV ? -1 : 1;
+ var itemIndex = (activeIndex + delta) % this._items.length;
+ return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
+ };
+
+ _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
+ var targetIndex = this._getItemIndex(relatedTarget);
+
+ var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
+
+ var slideEvent = $$$1.Event(Event.SLIDE, {
+ relatedTarget: relatedTarget,
+ direction: eventDirectionName,
+ from: fromIndex,
+ to: targetIndex
+ });
+ $$$1(this._element).trigger(slideEvent);
+ return slideEvent;
+ };
+
+ _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
+ if (this._indicatorsElement) {
+ $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
+
+ var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
+
+ if (nextIndicator) {
+ $$$1(nextIndicator).addClass(ClassName.ACTIVE);
+ }
+ }
+ };
+
+ _proto._slide = function _slide(direction, element) {
+ var _this3 = this;
+
+ var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
+
+ var activeElementIndex = this._getItemIndex(activeElement);
+
+ var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
+
+ var nextElementIndex = this._getItemIndex(nextElement);
+
+ var isCycling = Boolean(this._interval);
+ var directionalClassName;
+ var orderClassName;
+ var eventDirectionName;
+
+ if (direction === Direction.NEXT) {
+ directionalClassName = ClassName.LEFT;
+ orderClassName = ClassName.NEXT;
+ eventDirectionName = Direction.LEFT;
+ } else {
+ directionalClassName = ClassName.RIGHT;
+ orderClassName = ClassName.PREV;
+ eventDirectionName = Direction.RIGHT;
+ }
+
+ if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
+ this._isSliding = false;
+ return;
+ }
+
+ var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
+
+ if (slideEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ if (!activeElement || !nextElement) {
+ // Some weirdness is happening, so we bail
+ return;
+ }
+
+ this._isSliding = true;
+
+ if (isCycling) {
+ this.pause();
+ }
+
+ this._setActiveIndicatorElement(nextElement);
+
+ var slidEvent = $$$1.Event(Event.SLID, {
+ relatedTarget: nextElement,
+ direction: eventDirectionName,
+ from: activeElementIndex,
+ to: nextElementIndex
+ });
+
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) {
+ $$$1(nextElement).addClass(orderClassName);
+ Util.reflow(nextElement);
+ $$$1(activeElement).addClass(directionalClassName);
+ $$$1(nextElement).addClass(directionalClassName);
+ $$$1(activeElement).one(Util.TRANSITION_END, function () {
+ $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
+ $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
+ _this3._isSliding = false;
+ setTimeout(function () {
+ return $$$1(_this3._element).trigger(slidEvent);
+ }, 0);
+ }).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ $$$1(activeElement).removeClass(ClassName.ACTIVE);
+ $$$1(nextElement).addClass(ClassName.ACTIVE);
+ this._isSliding = false;
+ $$$1(this._element).trigger(slidEvent);
+ }
+
+ if (isCycling) {
+ this.cycle();
+ }
+ }; // Static
+
+
+ Carousel._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = _extends({}, Default, $$$1(this).data());
+
+ if (typeof config === 'object') {
+ _config = _extends({}, _config, config);
+ }
+
+ var action = typeof config === 'string' ? config : _config.slide;
+
+ if (!data) {
+ data = new Carousel(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'number') {
+ data.to(config);
+ } else if (typeof action === 'string') {
+ if (typeof data[action] === 'undefined') {
+ throw new TypeError("No method named \"" + action + "\"");
+ }
+
+ data[action]();
+ } else if (_config.interval) {
+ data.pause();
+ data.cycle();
+ }
+ });
+ };
+
+ Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
+ var selector = Util.getSelectorFromElement(this);
+
+ if (!selector) {
+ return;
+ }
+
+ var target = $$$1(selector)[0];
+
+ if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
+ return;
+ }
+
+ var config = _extends({}, $$$1(target).data(), $$$1(this).data());
+ var slideIndex = this.getAttribute('data-slide-to');
+
+ if (slideIndex) {
+ config.interval = false;
+ }
+
+ Carousel._jQueryInterface.call($$$1(target), config);
+
+ if (slideIndex) {
+ $$$1(target).data(DATA_KEY).to(slideIndex);
+ }
+
+ event.preventDefault();
+ };
+
+ _createClass(Carousel, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }]);
+ return Carousel;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
+ $$$1(window).on(Event.LOAD_DATA_API, function () {
+ $$$1(Selector.DATA_RIDE).each(function () {
+ var $carousel = $$$1(this);
+
+ Carousel._jQueryInterface.call($carousel, $carousel.data());
+ });
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Carousel._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Carousel;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Carousel._jQueryInterface;
+ };
+
+ return Carousel;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): collapse.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Collapse = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'collapse';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.collapse';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 600;
+ var Default = {
+ toggle: true,
+ parent: ''
+ };
+ var DefaultType = {
+ toggle: 'boolean',
+ parent: '(string|element)'
+ };
+ var Event = {
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ SHOW: 'show',
+ COLLAPSE: 'collapse',
+ COLLAPSING: 'collapsing',
+ COLLAPSED: 'collapsed'
+ };
+ var Dimension = {
+ WIDTH: 'width',
+ HEIGHT: 'height'
+ };
+ var Selector = {
+ ACTIVES: '.show, .collapsing',
+ DATA_TOGGLE: '[data-toggle="collapse"]'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Collapse =
+ /*#__PURE__*/
+ function () {
+ function Collapse(element, config) {
+ this._isTransitioning = false;
+ this._element = element;
+ this._config = this._getConfig(config);
+ this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
+ var tabToggles = $$$1(Selector.DATA_TOGGLE);
+
+ for (var i = 0; i < tabToggles.length; i++) {
+ var elem = tabToggles[i];
+ var selector = Util.getSelectorFromElement(elem);
+
+ if (selector !== null && $$$1(selector).filter(element).length > 0) {
+ this._selector = selector;
+
+ this._triggerArray.push(elem);
+ }
+ }
+
+ this._parent = this._config.parent ? this._getParent() : null;
+
+ if (!this._config.parent) {
+ this._addAriaAndCollapsedClass(this._element, this._triggerArray);
+ }
+
+ if (this._config.toggle) {
+ this.toggle();
+ }
+ } // Getters
+
+
+ var _proto = Collapse.prototype;
+
+ // Public
+ _proto.toggle = function toggle() {
+ if ($$$1(this._element).hasClass(ClassName.SHOW)) {
+ this.hide();
+ } else {
+ this.show();
+ }
+ };
+
+ _proto.show = function show() {
+ var _this = this;
+
+ if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
+ return;
+ }
+
+ var actives;
+ var activesData;
+
+ if (this._parent) {
+ actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
+
+ if (actives.length === 0) {
+ actives = null;
+ }
+ }
+
+ if (actives) {
+ activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
+
+ if (activesData && activesData._isTransitioning) {
+ return;
+ }
+ }
+
+ var startEvent = $$$1.Event(Event.SHOW);
+ $$$1(this._element).trigger(startEvent);
+
+ if (startEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ if (actives) {
+ Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
+
+ if (!activesData) {
+ $$$1(actives).data(DATA_KEY, null);
+ }
+ }
+
+ var dimension = this._getDimension();
+
+ $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
+ this._element.style[dimension] = 0;
+
+ if (this._triggerArray.length > 0) {
+ $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
+ }
+
+ this.setTransitioning(true);
+
+ var complete = function complete() {
+ $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
+ _this._element.style[dimension] = '';
+
+ _this.setTransitioning(false);
+
+ $$$1(_this._element).trigger(Event.SHOWN);
+ };
+
+ if (!Util.supportsTransitionEnd()) {
+ complete();
+ return;
+ }
+
+ var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
+ var scrollSize = "scroll" + capitalizedDimension;
+ $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ this._element.style[dimension] = this._element[scrollSize] + "px";
+ };
+
+ _proto.hide = function hide() {
+ var _this2 = this;
+
+ if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
+ return;
+ }
+
+ var startEvent = $$$1.Event(Event.HIDE);
+ $$$1(this._element).trigger(startEvent);
+
+ if (startEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ var dimension = this._getDimension();
+
+ this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
+ Util.reflow(this._element);
+ $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
+
+ if (this._triggerArray.length > 0) {
+ for (var i = 0; i < this._triggerArray.length; i++) {
+ var trigger = this._triggerArray[i];
+ var selector = Util.getSelectorFromElement(trigger);
+
+ if (selector !== null) {
+ var $elem = $$$1(selector);
+
+ if (!$elem.hasClass(ClassName.SHOW)) {
+ $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
+ }
+ }
+ }
+ }
+
+ this.setTransitioning(true);
+
+ var complete = function complete() {
+ _this2.setTransitioning(false);
+
+ $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
+ };
+
+ this._element.style[dimension] = '';
+
+ if (!Util.supportsTransitionEnd()) {
+ complete();
+ return;
+ }
+
+ $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ };
+
+ _proto.setTransitioning = function setTransitioning(isTransitioning) {
+ this._isTransitioning = isTransitioning;
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ this._config = null;
+ this._parent = null;
+ this._element = null;
+ this._triggerArray = null;
+ this._isTransitioning = null;
+ }; // Private
+
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
+ config.toggle = Boolean(config.toggle); // Coerce string values
+
+ Util.typeCheckConfig(NAME, config, DefaultType);
+ return config;
+ };
+
+ _proto._getDimension = function _getDimension() {
+ var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
+ return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
+ };
+
+ _proto._getParent = function _getParent() {
+ var _this3 = this;
+
+ var parent = null;
+
+ if (Util.isElement(this._config.parent)) {
+ parent = this._config.parent; // It's a jQuery object
+
+ if (typeof this._config.parent.jquery !== 'undefined') {
+ parent = this._config.parent[0];
+ }
+ } else {
+ parent = $$$1(this._config.parent)[0];
+ }
+
+ var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
+ $$$1(parent).find(selector).each(function (i, element) {
+ _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
+ });
+ return parent;
+ };
+
+ _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
+ if (element) {
+ var isOpen = $$$1(element).hasClass(ClassName.SHOW);
+
+ if (triggerArray.length > 0) {
+ $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
+ }
+ }
+ }; // Static
+
+
+ Collapse._getTargetFromElement = function _getTargetFromElement(element) {
+ var selector = Util.getSelectorFromElement(element);
+ return selector ? $$$1(selector)[0] : null;
+ };
+
+ Collapse._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var $this = $$$1(this);
+ var data = $this.data(DATA_KEY);
+
+ var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
+
+ if (!data && _config.toggle && /show|hide/.test(config)) {
+ _config.toggle = false;
+ }
+
+ if (!data) {
+ data = new Collapse(this, _config);
+ $this.data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(Collapse, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }]);
+ return Collapse;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
+ if (event.currentTarget.tagName === 'A') {
+ event.preventDefault();
+ }
+
+ var $trigger = $$$1(this);
+ var selector = Util.getSelectorFromElement(this);
+ $$$1(selector).each(function () {
+ var $target = $$$1(this);
+ var data = $target.data(DATA_KEY);
+ var config = data ? 'toggle' : $trigger.data();
+
+ Collapse._jQueryInterface.call($target, config);
+ });
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Collapse._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Collapse;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Collapse._jQueryInterface;
+ };
+
+ return Collapse;
+}($);
+
+/**!
+ * @fileOverview Kickass library to create and place poppers near their reference elements.
+ * @version 1.12.9
+ * @license
+ * Copyright (c) 2016 Federico Zivolo and contributors
+ *
+ * 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.
+ */
+var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
+var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
+var timeoutDuration = 0;
+for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
+ if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
+ timeoutDuration = 1;
+ break;
+ }
+}
+
+function microtaskDebounce(fn) {
+ var called = false;
+ return function () {
+ if (called) {
+ return;
+ }
+ called = true;
+ window.Promise.resolve().then(function () {
+ called = false;
+ fn();
+ });
+ };
+}
+
+function taskDebounce(fn) {
+ var scheduled = false;
+ return function () {
+ if (!scheduled) {
+ scheduled = true;
+ setTimeout(function () {
+ scheduled = false;
+ fn();
+ }, timeoutDuration);
+ }
+ };
+}
+
+var supportsMicroTasks = isBrowser && window.Promise;
+
+/**
+* Create a debounced version of a method, that's asynchronously deferred
+* but called in the minimum time possible.
+*
+* @method
+* @memberof Popper.Utils
+* @argument {Function} fn
+* @returns {Function}
+*/
+var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
+
+/**
+ * Check if the given variable is a function
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Any} functionToCheck - variable to check
+ * @returns {Boolean} answer to: is a function?
+ */
+function isFunction(functionToCheck) {
+ var getType = {};
+ return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
+}
+
+/**
+ * Get CSS computed property of the given element
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Eement} element
+ * @argument {String} property
+ */
+function getStyleComputedProperty(element, property) {
+ if (element.nodeType !== 1) {
+ return [];
+ }
+ // NOTE: 1 DOM access here
+ var css = getComputedStyle(element, null);
+ return property ? css[property] : css;
+}
+
+/**
+ * Returns the parentNode or the host of the element
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element
+ * @returns {Element} parent
+ */
+function getParentNode(element) {
+ if (element.nodeName === 'HTML') {
+ return element;
+ }
+ return element.parentNode || element.host;
+}
+
+/**
+ * Returns the scrolling parent of the given element
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element
+ * @returns {Element} scroll parent
+ */
+function getScrollParent(element) {
+ // Return body, `getScroll` will take care to get the correct `scrollTop` from it
+ if (!element) {
+ return document.body;
+ }
+
+ switch (element.nodeName) {
+ case 'HTML':
+ case 'BODY':
+ return element.ownerDocument.body;
+ case '#document':
+ return element.body;
+ }
+
+ // Firefox want us to check `-x` and `-y` variations as well
+
+ var _getStyleComputedProp = getStyleComputedProperty(element),
+ overflow = _getStyleComputedProp.overflow,
+ overflowX = _getStyleComputedProp.overflowX,
+ overflowY = _getStyleComputedProp.overflowY;
+
+ if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {
+ return element;
+ }
+
+ return getScrollParent(getParentNode(element));
+}
+
+/**
+ * Returns the offset parent of the given element
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element
+ * @returns {Element} offset parent
+ */
+function getOffsetParent(element) {
+ // NOTE: 1 DOM access here
+ var offsetParent = element && element.offsetParent;
+ var nodeName = offsetParent && offsetParent.nodeName;
+
+ if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
+ if (element) {
+ return element.ownerDocument.documentElement;
+ }
+
+ return document.documentElement;
+ }
+
+ // .offsetParent will return the closest TD or TABLE in case
+ // no offsetParent is present, I hate this job...
+ if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
+ return getOffsetParent(offsetParent);
+ }
+
+ return offsetParent;
+}
+
+function isOffsetContainer(element) {
+ var nodeName = element.nodeName;
+
+ if (nodeName === 'BODY') {
+ return false;
+ }
+ return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
+}
+
+/**
+ * Finds the root node (document, shadowDOM root) of the given element
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} node
+ * @returns {Element} root node
+ */
+function getRoot(node) {
+ if (node.parentNode !== null) {
+ return getRoot(node.parentNode);
+ }
+
+ return node;
+}
+
+/**
+ * Finds the offset parent common to the two provided nodes
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element1
+ * @argument {Element} element2
+ * @returns {Element} common offset parent
+ */
+function findCommonOffsetParent(element1, element2) {
+ // This check is needed to avoid errors in case one of the elements isn't defined for any reason
+ if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
+ return document.documentElement;
+ }
+
+ // Here we make sure to give as "start" the element that comes first in the DOM
+ var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
+ var start = order ? element1 : element2;
+ var end = order ? element2 : element1;
+
+ // Get common ancestor container
+ var range = document.createRange();
+ range.setStart(start, 0);
+ range.setEnd(end, 0);
+ var commonAncestorContainer = range.commonAncestorContainer;
+
+ // Both nodes are inside #document
+
+ if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
+ if (isOffsetContainer(commonAncestorContainer)) {
+ return commonAncestorContainer;
+ }
+
+ return getOffsetParent(commonAncestorContainer);
+ }
+
+ // one of the nodes is inside shadowDOM, find which one
+ var element1root = getRoot(element1);
+ if (element1root.host) {
+ return findCommonOffsetParent(element1root.host, element2);
+ } else {
+ return findCommonOffsetParent(element1, getRoot(element2).host);
+ }
+}
+
+/**
+ * Gets the scroll value of the given element in the given side (top and left)
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element
+ * @argument {String} side `top` or `left`
+ * @returns {number} amount of scrolled pixels
+ */
+function getScroll(element) {
+ var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
+
+ var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
+ var nodeName = element.nodeName;
+
+ if (nodeName === 'BODY' || nodeName === 'HTML') {
+ var html = element.ownerDocument.documentElement;
+ var scrollingElement = element.ownerDocument.scrollingElement || html;
+ return scrollingElement[upperSide];
+ }
+
+ return element[upperSide];
+}
+
+/*
+ * Sum or subtract the element scroll values (left and top) from a given rect object
+ * @method
+ * @memberof Popper.Utils
+ * @param {Object} rect - Rect object you want to change
+ * @param {HTMLElement} element - The element from the function reads the scroll values
+ * @param {Boolean} subtract - set to true if you want to subtract the scroll values
+ * @return {Object} rect - The modifier rect object
+ */
+function includeScroll(rect, element) {
+ var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+ var scrollTop = getScroll(element, 'top');
+ var scrollLeft = getScroll(element, 'left');
+ var modifier = subtract ? -1 : 1;
+ rect.top += scrollTop * modifier;
+ rect.bottom += scrollTop * modifier;
+ rect.left += scrollLeft * modifier;
+ rect.right += scrollLeft * modifier;
+ return rect;
+}
+
+/*
+ * Helper to detect borders of a given element
+ * @method
+ * @memberof Popper.Utils
+ * @param {CSSStyleDeclaration} styles
+ * Result of `getStyleComputedProperty` on the given element
+ * @param {String} axis - `x` or `y`
+ * @return {number} borders - The borders size of the given axis
+ */
+
+function getBordersSize(styles, axis) {
+ var sideA = axis === 'x' ? 'Left' : 'Top';
+ var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
+
+ return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);
+}
+
+/**
+ * Tells if you are running Internet Explorer 10
+ * @method
+ * @memberof Popper.Utils
+ * @returns {Boolean} isIE10
+ */
+var isIE10 = undefined;
+
+var isIE10$1 = function () {
+ if (isIE10 === undefined) {
+ isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;
+ }
+ return isIE10;
+};
+
+function getSize(axis, body, html, computedStyle) {
+ return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);
+}
+
+function getWindowSizes() {
+ var body = document.body;
+ var html = document.documentElement;
+ var computedStyle = isIE10$1() && getComputedStyle(html);
+
+ return {
+ height: getSize('Height', body, html, computedStyle),
+ width: getSize('Width', body, html, computedStyle)
+ };
+}
+
+var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+}();
+
+
+
+
+
+var defineProperty = function (obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+};
+
+var _extends$1 = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+};
+
+/**
+ * Given element offsets, generate an output similar to getBoundingClientRect
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Object} offsets
+ * @returns {Object} ClientRect like output
+ */
+function getClientRect(offsets) {
+ return _extends$1({}, offsets, {
+ right: offsets.left + offsets.width,
+ bottom: offsets.top + offsets.height
+ });
+}
+
+/**
+ * Get bounding client rect of given element
+ * @method
+ * @memberof Popper.Utils
+ * @param {HTMLElement} element
+ * @return {Object} client rect
+ */
+function getBoundingClientRect(element) {
+ var rect = {};
+
+ // IE10 10 FIX: Please, don't ask, the element isn't
+ // considered in DOM in some circumstances...
+ // This isn't reproducible in IE10 compatibility mode of IE11
+ if (isIE10$1()) {
+ try {
+ rect = element.getBoundingClientRect();
+ var scrollTop = getScroll(element, 'top');
+ var scrollLeft = getScroll(element, 'left');
+ rect.top += scrollTop;
+ rect.left += scrollLeft;
+ rect.bottom += scrollTop;
+ rect.right += scrollLeft;
+ } catch (err) {}
+ } else {
+ rect = element.getBoundingClientRect();
+ }
+
+ var result = {
+ left: rect.left,
+ top: rect.top,
+ width: rect.right - rect.left,
+ height: rect.bottom - rect.top
+ };
+
+ // subtract scrollbar size from sizes
+ var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};
+ var width = sizes.width || element.clientWidth || result.right - result.left;
+ var height = sizes.height || element.clientHeight || result.bottom - result.top;
+
+ var horizScrollbar = element.offsetWidth - width;
+ var vertScrollbar = element.offsetHeight - height;
+
+ // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
+ // we make this check conditional for performance reasons
+ if (horizScrollbar || vertScrollbar) {
+ var styles = getStyleComputedProperty(element);
+ horizScrollbar -= getBordersSize(styles, 'x');
+ vertScrollbar -= getBordersSize(styles, 'y');
+
+ result.width -= horizScrollbar;
+ result.height -= vertScrollbar;
+ }
+
+ return getClientRect(result);
+}
+
+function getOffsetRectRelativeToArbitraryNode(children, parent) {
+ var isIE10 = isIE10$1();
+ var isHTML = parent.nodeName === 'HTML';
+ var childrenRect = getBoundingClientRect(children);
+ var parentRect = getBoundingClientRect(parent);
+ var scrollParent = getScrollParent(children);
+
+ var styles = getStyleComputedProperty(parent);
+ var borderTopWidth = parseFloat(styles.borderTopWidth, 10);
+ var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);
+
+ var offsets = getClientRect({
+ top: childrenRect.top - parentRect.top - borderTopWidth,
+ left: childrenRect.left - parentRect.left - borderLeftWidth,
+ width: childrenRect.width,
+ height: childrenRect.height
+ });
+ offsets.marginTop = 0;
+ offsets.marginLeft = 0;
+
+ // Subtract margins of documentElement in case it's being used as parent
+ // we do this only on HTML because it's the only element that behaves
+ // differently when margins are applied to it. The margins are included in
+ // the box of the documentElement, in the other cases not.
+ if (!isIE10 && isHTML) {
+ var marginTop = parseFloat(styles.marginTop, 10);
+ var marginLeft = parseFloat(styles.marginLeft, 10);
+
+ offsets.top -= borderTopWidth - marginTop;
+ offsets.bottom -= borderTopWidth - marginTop;
+ offsets.left -= borderLeftWidth - marginLeft;
+ offsets.right -= borderLeftWidth - marginLeft;
+
+ // Attach marginTop and marginLeft because in some circumstances we may need them
+ offsets.marginTop = marginTop;
+ offsets.marginLeft = marginLeft;
+ }
+
+ if (isIE10 ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
+ offsets = includeScroll(offsets, parent);
+ }
+
+ return offsets;
+}
+
+function getViewportOffsetRectRelativeToArtbitraryNode(element) {
+ var html = element.ownerDocument.documentElement;
+ var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
+ var width = Math.max(html.clientWidth, window.innerWidth || 0);
+ var height = Math.max(html.clientHeight, window.innerHeight || 0);
+
+ var scrollTop = getScroll(html);
+ var scrollLeft = getScroll(html, 'left');
+
+ var offset = {
+ top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
+ left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
+ width: width,
+ height: height
+ };
+
+ return getClientRect(offset);
+}
+
+/**
+ * Check if the given element is fixed or is inside a fixed parent
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element
+ * @argument {Element} customContainer
+ * @returns {Boolean} answer to "isFixed?"
+ */
+function isFixed(element) {
+ var nodeName = element.nodeName;
+ if (nodeName === 'BODY' || nodeName === 'HTML') {
+ return false;
+ }
+ if (getStyleComputedProperty(element, 'position') === 'fixed') {
+ return true;
+ }
+ return isFixed(getParentNode(element));
+}
+
+/**
+ * Computed the boundaries limits and return them
+ * @method
+ * @memberof Popper.Utils
+ * @param {HTMLElement} popper
+ * @param {HTMLElement} reference
+ * @param {number} padding
+ * @param {HTMLElement} boundariesElement - Element used to define the boundaries
+ * @returns {Object} Coordinates of the boundaries
+ */
+function getBoundaries(popper, reference, padding, boundariesElement) {
+ // NOTE: 1 DOM access here
+ var boundaries = { top: 0, left: 0 };
+ var offsetParent = findCommonOffsetParent(popper, reference);
+
+ // Handle viewport case
+ if (boundariesElement === 'viewport') {
+ boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);
+ } else {
+ // Handle other cases based on DOM element used as boundaries
+ var boundariesNode = void 0;
+ if (boundariesElement === 'scrollParent') {
+ boundariesNode = getScrollParent(getParentNode(reference));
+ if (boundariesNode.nodeName === 'BODY') {
+ boundariesNode = popper.ownerDocument.documentElement;
+ }
+ } else if (boundariesElement === 'window') {
+ boundariesNode = popper.ownerDocument.documentElement;
+ } else {
+ boundariesNode = boundariesElement;
+ }
+
+ var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);
+
+ // In case of HTML, we need a different computation
+ if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
+ var _getWindowSizes = getWindowSizes(),
+ height = _getWindowSizes.height,
+ width = _getWindowSizes.width;
+
+ boundaries.top += offsets.top - offsets.marginTop;
+ boundaries.bottom = height + offsets.top;
+ boundaries.left += offsets.left - offsets.marginLeft;
+ boundaries.right = width + offsets.left;
+ } else {
+ // for all the other DOM elements, this one is good
+ boundaries = offsets;
+ }
+ }
+
+ // Add paddings
+ boundaries.left += padding;
+ boundaries.top += padding;
+ boundaries.right -= padding;
+ boundaries.bottom -= padding;
+
+ return boundaries;
+}
+
+function getArea(_ref) {
+ var width = _ref.width,
+ height = _ref.height;
+
+ return width * height;
+}
+
+/**
+ * Utility used to transform the `auto` placement to the placement with more
+ * available space.
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
+ var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
+
+ if (placement.indexOf('auto') === -1) {
+ return placement;
+ }
+
+ var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
+
+ var rects = {
+ top: {
+ width: boundaries.width,
+ height: refRect.top - boundaries.top
+ },
+ right: {
+ width: boundaries.right - refRect.right,
+ height: boundaries.height
+ },
+ bottom: {
+ width: boundaries.width,
+ height: boundaries.bottom - refRect.bottom
+ },
+ left: {
+ width: refRect.left - boundaries.left,
+ height: boundaries.height
+ }
+ };
+
+ var sortedAreas = Object.keys(rects).map(function (key) {
+ return _extends$1({
+ key: key
+ }, rects[key], {
+ area: getArea(rects[key])
+ });
+ }).sort(function (a, b) {
+ return b.area - a.area;
+ });
+
+ var filteredAreas = sortedAreas.filter(function (_ref2) {
+ var width = _ref2.width,
+ height = _ref2.height;
+ return width >= popper.clientWidth && height >= popper.clientHeight;
+ });
+
+ var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
+
+ var variation = placement.split('-')[1];
+
+ return computedPlacement + (variation ? '-' + variation : '');
+}
+
+/**
+ * Get offsets to the reference element
+ * @method
+ * @memberof Popper.Utils
+ * @param {Object} state
+ * @param {Element} popper - the popper element
+ * @param {Element} reference - the reference element (the popper will be relative to this)
+ * @returns {Object} An object containing the offsets which will be applied to the popper
+ */
+function getReferenceOffsets(state, popper, reference) {
+ var commonOffsetParent = findCommonOffsetParent(popper, reference);
+ return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);
+}
+
+/**
+ * Get the outer sizes of the given element (offset size + margins)
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element
+ * @returns {Object} object containing width and height properties
+ */
+function getOuterSizes(element) {
+ var styles = getComputedStyle(element);
+ var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
+ var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
+ var result = {
+ width: element.offsetWidth + y,
+ height: element.offsetHeight + x
+ };
+ return result;
+}
+
+/**
+ * Get the opposite placement of the given one
+ * @method
+ * @memberof Popper.Utils
+ * @argument {String} placement
+ * @returns {String} flipped placement
+ */
+function getOppositePlacement(placement) {
+ var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
+ return placement.replace(/left|right|bottom|top/g, function (matched) {
+ return hash[matched];
+ });
+}
+
+/**
+ * Get offsets to the popper
+ * @method
+ * @memberof Popper.Utils
+ * @param {Object} position - CSS position the Popper will get applied
+ * @param {HTMLElement} popper - the popper element
+ * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
+ * @param {String} placement - one of the valid placement options
+ * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
+ */
+function getPopperOffsets(popper, referenceOffsets, placement) {
+ placement = placement.split('-')[0];
+
+ // Get popper node sizes
+ var popperRect = getOuterSizes(popper);
+
+ // Add position, width and height to our offsets object
+ var popperOffsets = {
+ width: popperRect.width,
+ height: popperRect.height
+ };
+
+ // depending by the popper placement we have to compute its offsets slightly differently
+ var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
+ var mainSide = isHoriz ? 'top' : 'left';
+ var secondarySide = isHoriz ? 'left' : 'top';
+ var measurement = isHoriz ? 'height' : 'width';
+ var secondaryMeasurement = !isHoriz ? 'height' : 'width';
+
+ popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
+ if (placement === secondarySide) {
+ popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
+ } else {
+ popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
+ }
+
+ return popperOffsets;
+}
+
+/**
+ * Mimics the `find` method of Array
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Array} arr
+ * @argument prop
+ * @argument value
+ * @returns index or -1
+ */
+function find(arr, check) {
+ // use native find if supported
+ if (Array.prototype.find) {
+ return arr.find(check);
+ }
+
+ // use `filter` to obtain the same behavior of `find`
+ return arr.filter(check)[0];
+}
+
+/**
+ * Return the index of the matching object
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Array} arr
+ * @argument prop
+ * @argument value
+ * @returns index or -1
+ */
+function findIndex(arr, prop, value) {
+ // use native findIndex if supported
+ if (Array.prototype.findIndex) {
+ return arr.findIndex(function (cur) {
+ return cur[prop] === value;
+ });
+ }
+
+ // use `find` + `indexOf` if `findIndex` isn't supported
+ var match = find(arr, function (obj) {
+ return obj[prop] === value;
+ });
+ return arr.indexOf(match);
+}
+
+/**
+ * Loop trough the list of modifiers and run them in order,
+ * each of them will then edit the data object.
+ * @method
+ * @memberof Popper.Utils
+ * @param {dataObject} data
+ * @param {Array} modifiers
+ * @param {String} ends - Optional modifier name used as stopper
+ * @returns {dataObject}
+ */
+function runModifiers(modifiers, data, ends) {
+ var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
+
+ modifiersToRun.forEach(function (modifier) {
+ if (modifier['function']) {
+ // eslint-disable-line dot-notation
+ console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
+ }
+ var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation
+ if (modifier.enabled && isFunction(fn)) {
+ // Add properties to offsets to make them a complete clientRect object
+ // we do this before each modifier to make sure the previous one doesn't
+ // mess with these values
+ data.offsets.popper = getClientRect(data.offsets.popper);
+ data.offsets.reference = getClientRect(data.offsets.reference);
+
+ data = fn(data, modifier);
+ }
+ });
+
+ return data;
+}
+
+/**
+ * Updates the position of the popper, computing the new offsets and applying
+ * the new style.<br />
+ * Prefer `scheduleUpdate` over `update` because of performance reasons.
+ * @method
+ * @memberof Popper
+ */
+function update() {
+ // if popper is destroyed, don't perform any further update
+ if (this.state.isDestroyed) {
+ return;
+ }
+
+ var data = {
+ instance: this,
+ styles: {},
+ arrowStyles: {},
+ attributes: {},
+ flipped: false,
+ offsets: {}
+ };
+
+ // compute reference element offsets
+ data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);
+
+ // compute auto placement, store placement inside the data object,
+ // modifiers will be able to edit `placement` if needed
+ // and refer to originalPlacement to know the original value
+ data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
+
+ // store the computed placement inside `originalPlacement`
+ data.originalPlacement = data.placement;
+
+ // compute the popper offsets
+ data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
+ data.offsets.popper.position = 'absolute';
+
+ // run the modifiers
+ data = runModifiers(this.modifiers, data);
+
+ // the first `update` will call `onCreate` callback
+ // the other ones will call `onUpdate` callback
+ if (!this.state.isCreated) {
+ this.state.isCreated = true;
+ this.options.onCreate(data);
+ } else {
+ this.options.onUpdate(data);
+ }
+}
+
+/**
+ * Helper used to know if the given modifier is enabled.
+ * @method
+ * @memberof Popper.Utils
+ * @returns {Boolean}
+ */
+function isModifierEnabled(modifiers, modifierName) {
+ return modifiers.some(function (_ref) {
+ var name = _ref.name,
+ enabled = _ref.enabled;
+ return enabled && name === modifierName;
+ });
+}
+
+/**
+ * Get the prefixed supported property name
+ * @method
+ * @memberof Popper.Utils
+ * @argument {String} property (camelCase)
+ * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
+ */
+function getSupportedPropertyName(property) {
+ var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
+ var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
+
+ for (var i = 0; i < prefixes.length - 1; i++) {
+ var prefix = prefixes[i];
+ var toCheck = prefix ? '' + prefix + upperProp : property;
+ if (typeof document.body.style[toCheck] !== 'undefined') {
+ return toCheck;
+ }
+ }
+ return null;
+}
+
+/**
+ * Destroy the popper
+ * @method
+ * @memberof Popper
+ */
+function destroy() {
+ this.state.isDestroyed = true;
+
+ // touch DOM only if `applyStyle` modifier is enabled
+ if (isModifierEnabled(this.modifiers, 'applyStyle')) {
+ this.popper.removeAttribute('x-placement');
+ this.popper.style.left = '';
+ this.popper.style.position = '';
+ this.popper.style.top = '';
+ this.popper.style[getSupportedPropertyName('transform')] = '';
+ }
+
+ this.disableEventListeners();
+
+ // remove the popper if user explicity asked for the deletion on destroy
+ // do not use `remove` because IE11 doesn't support it
+ if (this.options.removeOnDestroy) {
+ this.popper.parentNode.removeChild(this.popper);
+ }
+ return this;
+}
+
+/**
+ * Get the window associated with the element
+ * @argument {Element} element
+ * @returns {Window}
+ */
+function getWindow(element) {
+ var ownerDocument = element.ownerDocument;
+ return ownerDocument ? ownerDocument.defaultView : window;
+}
+
+function attachToScrollParents(scrollParent, event, callback, scrollParents) {
+ var isBody = scrollParent.nodeName === 'BODY';
+ var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
+ target.addEventListener(event, callback, { passive: true });
+
+ if (!isBody) {
+ attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
+ }
+ scrollParents.push(target);
+}
+
+/**
+ * Setup needed event listeners used to update the popper position
+ * @method
+ * @memberof Popper.Utils
+ * @private
+ */
+function setupEventListeners(reference, options, state, updateBound) {
+ // Resize event listener on window
+ state.updateBound = updateBound;
+ getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });
+
+ // Scroll event listener on scroll parents
+ var scrollElement = getScrollParent(reference);
+ attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
+ state.scrollElement = scrollElement;
+ state.eventsEnabled = true;
+
+ return state;
+}
+
+/**
+ * It will add resize/scroll events and start recalculating
+ * position of the popper element when they are triggered.
+ * @method
+ * @memberof Popper
+ */
+function enableEventListeners() {
+ if (!this.state.eventsEnabled) {
+ this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
+ }
+}
+
+/**
+ * Remove event listeners used to update the popper position
+ * @method
+ * @memberof Popper.Utils
+ * @private
+ */
+function removeEventListeners(reference, state) {
+ // Remove resize event listener on window
+ getWindow(reference).removeEventListener('resize', state.updateBound);
+
+ // Remove scroll event listener on scroll parents
+ state.scrollParents.forEach(function (target) {
+ target.removeEventListener('scroll', state.updateBound);
+ });
+
+ // Reset state
+ state.updateBound = null;
+ state.scrollParents = [];
+ state.scrollElement = null;
+ state.eventsEnabled = false;
+ return state;
+}
+
+/**
+ * It will remove resize/scroll events and won't recalculate popper position
+ * when they are triggered. It also won't trigger onUpdate callback anymore,
+ * unless you call `update` method manually.
+ * @method
+ * @memberof Popper
+ */
+function disableEventListeners() {
+ if (this.state.eventsEnabled) {
+ cancelAnimationFrame(this.scheduleUpdate);
+ this.state = removeEventListeners(this.reference, this.state);
+ }
+}
+
+/**
+ * Tells if a given input is a number
+ * @method
+ * @memberof Popper.Utils
+ * @param {*} input to check
+ * @return {Boolean}
+ */
+function isNumeric(n) {
+ return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
+}
+
+/**
+ * Set the style to the given popper
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element - Element to apply the style to
+ * @argument {Object} styles
+ * Object with a list of properties and values which will be applied to the element
+ */
+function setStyles(element, styles) {
+ Object.keys(styles).forEach(function (prop) {
+ var unit = '';
+ // add unit if the value is numeric and is one of the following
+ if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
+ unit = 'px';
+ }
+ element.style[prop] = styles[prop] + unit;
+ });
+}
+
+/**
+ * Set the attributes to the given popper
+ * @method
+ * @memberof Popper.Utils
+ * @argument {Element} element - Element to apply the attributes to
+ * @argument {Object} styles
+ * Object with a list of properties and values which will be applied to the element
+ */
+function setAttributes(element, attributes) {
+ Object.keys(attributes).forEach(function (prop) {
+ var value = attributes[prop];
+ if (value !== false) {
+ element.setAttribute(prop, attributes[prop]);
+ } else {
+ element.removeAttribute(prop);
+ }
+ });
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} data.styles - List of style properties - values to apply to popper element
+ * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The same data object
+ */
+function applyStyle(data) {
+ // any property present in `data.styles` will be applied to the popper,
+ // in this way we can make the 3rd party modifiers add custom styles to it
+ // Be aware, modifiers could override the properties defined in the previous
+ // lines of this modifier!
+ setStyles(data.instance.popper, data.styles);
+
+ // any property present in `data.attributes` will be applied to the popper,
+ // they will be set as HTML attributes of the element
+ setAttributes(data.instance.popper, data.attributes);
+
+ // if arrowElement is defined and arrowStyles has some properties
+ if (data.arrowElement && Object.keys(data.arrowStyles).length) {
+ setStyles(data.arrowElement, data.arrowStyles);
+ }
+
+ return data;
+}
+
+/**
+ * Set the x-placement attribute before everything else because it could be used
+ * to add margins to the popper margins needs to be calculated to get the
+ * correct popper offsets.
+ * @method
+ * @memberof Popper.modifiers
+ * @param {HTMLElement} reference - The reference element used to position the popper
+ * @param {HTMLElement} popper - The HTML element used as popper.
+ * @param {Object} options - Popper.js options
+ */
+function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
+ // compute reference element offsets
+ var referenceOffsets = getReferenceOffsets(state, popper, reference);
+
+ // compute auto placement, store placement inside the data object,
+ // modifiers will be able to edit `placement` if needed
+ // and refer to originalPlacement to know the original value
+ var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
+
+ popper.setAttribute('x-placement', placement);
+
+ // Apply `position` to popper before anything else because
+ // without the position applied we can't guarantee correct computations
+ setStyles(popper, { position: 'absolute' });
+
+ return options;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function computeStyle(data, options) {
+ var x = options.x,
+ y = options.y;
+ var popper = data.offsets.popper;
+
+ // Remove this legacy support in Popper.js v2
+
+ var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
+ return modifier.name === 'applyStyle';
+ }).gpuAcceleration;
+ if (legacyGpuAccelerationOption !== undefined) {
+ console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
+ }
+ var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;
+
+ var offsetParent = getOffsetParent(data.instance.popper);
+ var offsetParentRect = getBoundingClientRect(offsetParent);
+
+ // Styles
+ var styles = {
+ position: popper.position
+ };
+
+ // floor sides to avoid blurry text
+ var offsets = {
+ left: Math.floor(popper.left),
+ top: Math.floor(popper.top),
+ bottom: Math.floor(popper.bottom),
+ right: Math.floor(popper.right)
+ };
+
+ var sideA = x === 'bottom' ? 'top' : 'bottom';
+ var sideB = y === 'right' ? 'left' : 'right';
+
+ // if gpuAcceleration is set to `true` and transform is supported,
+ // we use `translate3d` to apply the position to the popper we
+ // automatically use the supported prefixed version if needed
+ var prefixedProperty = getSupportedPropertyName('transform');
+
+ // now, let's make a step back and look at this code closely (wtf?)
+ // If the content of the popper grows once it's been positioned, it
+ // may happen that the popper gets misplaced because of the new content
+ // overflowing its reference element
+ // To avoid this problem, we provide two options (x and y), which allow
+ // the consumer to define the offset origin.
+ // If we position a popper on top of a reference element, we can set
+ // `x` to `top` to make the popper grow towards its top instead of
+ // its bottom.
+ var left = void 0,
+ top = void 0;
+ if (sideA === 'bottom') {
+ top = -offsetParentRect.height + offsets.bottom;
+ } else {
+ top = offsets.top;
+ }
+ if (sideB === 'right') {
+ left = -offsetParentRect.width + offsets.right;
+ } else {
+ left = offsets.left;
+ }
+ if (gpuAcceleration && prefixedProperty) {
+ styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
+ styles[sideA] = 0;
+ styles[sideB] = 0;
+ styles.willChange = 'transform';
+ } else {
+ // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
+ var invertTop = sideA === 'bottom' ? -1 : 1;
+ var invertLeft = sideB === 'right' ? -1 : 1;
+ styles[sideA] = top * invertTop;
+ styles[sideB] = left * invertLeft;
+ styles.willChange = sideA + ', ' + sideB;
+ }
+
+ // Attributes
+ var attributes = {
+ 'x-placement': data.placement
+ };
+
+ // Update `data` attributes, styles and arrowStyles
+ data.attributes = _extends$1({}, attributes, data.attributes);
+ data.styles = _extends$1({}, styles, data.styles);
+ data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles);
+
+ return data;
+}
+
+/**
+ * Helper used to know if the given modifier depends from another one.<br />
+ * It checks if the needed modifier is listed and enabled.
+ * @method
+ * @memberof Popper.Utils
+ * @param {Array} modifiers - list of modifiers
+ * @param {String} requestingName - name of requesting modifier
+ * @param {String} requestedName - name of requested modifier
+ * @returns {Boolean}
+ */
+function isModifierRequired(modifiers, requestingName, requestedName) {
+ var requesting = find(modifiers, function (_ref) {
+ var name = _ref.name;
+ return name === requestingName;
+ });
+
+ var isRequired = !!requesting && modifiers.some(function (modifier) {
+ return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
+ });
+
+ if (!isRequired) {
+ var _requesting = '`' + requestingName + '`';
+ var requested = '`' + requestedName + '`';
+ console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
+ }
+ return isRequired;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function arrow(data, options) {
+ var _data$offsets$arrow;
+
+ // arrow depends on keepTogether in order to work
+ if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
+ return data;
+ }
+
+ var arrowElement = options.element;
+
+ // if arrowElement is a string, suppose it's a CSS selector
+ if (typeof arrowElement === 'string') {
+ arrowElement = data.instance.popper.querySelector(arrowElement);
+
+ // if arrowElement is not found, don't run the modifier
+ if (!arrowElement) {
+ return data;
+ }
+ } else {
+ // if the arrowElement isn't a query selector we must check that the
+ // provided DOM node is child of its popper node
+ if (!data.instance.popper.contains(arrowElement)) {
+ console.warn('WARNING: `arrow.element` must be child of its popper element!');
+ return data;
+ }
+ }
+
+ var placement = data.placement.split('-')[0];
+ var _data$offsets = data.offsets,
+ popper = _data$offsets.popper,
+ reference = _data$offsets.reference;
+
+ var isVertical = ['left', 'right'].indexOf(placement) !== -1;
+
+ var len = isVertical ? 'height' : 'width';
+ var sideCapitalized = isVertical ? 'Top' : 'Left';
+ var side = sideCapitalized.toLowerCase();
+ var altSide = isVertical ? 'left' : 'top';
+ var opSide = isVertical ? 'bottom' : 'right';
+ var arrowElementSize = getOuterSizes(arrowElement)[len];
+
+ //
+ // extends keepTogether behavior making sure the popper and its
+ // reference have enough pixels in conjuction
+ //
+
+ // top/left side
+ if (reference[opSide] - arrowElementSize < popper[side]) {
+ data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
+ }
+ // bottom/right side
+ if (reference[side] + arrowElementSize > popper[opSide]) {
+ data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
+ }
+ data.offsets.popper = getClientRect(data.offsets.popper);
+
+ // compute center of the popper
+ var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
+
+ // Compute the sideValue using the updated popper offsets
+ // take popper margin in account because we don't have this info available
+ var css = getStyleComputedProperty(data.instance.popper);
+ var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);
+ var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);
+ var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
+
+ // prevent arrowElement from being placed not contiguously to its popper
+ sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
+
+ data.arrowElement = arrowElement;
+ data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);
+
+ return data;
+}
+
+/**
+ * Get the opposite placement variation of the given one
+ * @method
+ * @memberof Popper.Utils
+ * @argument {String} placement variation
+ * @returns {String} flipped placement variation
+ */
+function getOppositeVariation(variation) {
+ if (variation === 'end') {
+ return 'start';
+ } else if (variation === 'start') {
+ return 'end';
+ }
+ return variation;
+}
+
+/**
+ * List of accepted placements to use as values of the `placement` option.<br />
+ * Valid placements are:
+ * - `auto`
+ * - `top`
+ * - `right`
+ * - `bottom`
+ * - `left`
+ *
+ * Each placement can have a variation from this list:
+ * - `-start`
+ * - `-end`
+ *
+ * Variations are interpreted easily if you think of them as the left to right
+ * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
+ * is right.<br />
+ * Vertically (`left` and `right`), `start` is top and `end` is bottom.
+ *
+ * Some valid examples are:
+ * - `top-end` (on top of reference, right aligned)
+ * - `right-start` (on right of reference, top aligned)
+ * - `bottom` (on bottom, centered)
+ * - `auto-right` (on the side with more space available, alignment depends by placement)
+ *
+ * @static
+ * @type {Array}
+ * @enum {String}
+ * @readonly
+ * @method placements
+ * @memberof Popper
+ */
+var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
+
+// Get rid of `auto` `auto-start` and `auto-end`
+var validPlacements = placements.slice(3);
+
+/**
+ * Given an initial placement, returns all the subsequent placements
+ * clockwise (or counter-clockwise).
+ *
+ * @method
+ * @memberof Popper.Utils
+ * @argument {String} placement - A valid placement (it accepts variations)
+ * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
+ * @returns {Array} placements including their variations
+ */
+function clockwise(placement) {
+ var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ var index = validPlacements.indexOf(placement);
+ var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
+ return counter ? arr.reverse() : arr;
+}
+
+var BEHAVIORS = {
+ FLIP: 'flip',
+ CLOCKWISE: 'clockwise',
+ COUNTERCLOCKWISE: 'counterclockwise'
+};
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function flip(data, options) {
+ // if `inner` modifier is enabled, we can't use the `flip` modifier
+ if (isModifierEnabled(data.instance.modifiers, 'inner')) {
+ return data;
+ }
+
+ if (data.flipped && data.placement === data.originalPlacement) {
+ // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
+ return data;
+ }
+
+ var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);
+
+ var placement = data.placement.split('-')[0];
+ var placementOpposite = getOppositePlacement(placement);
+ var variation = data.placement.split('-')[1] || '';
+
+ var flipOrder = [];
+
+ switch (options.behavior) {
+ case BEHAVIORS.FLIP:
+ flipOrder = [placement, placementOpposite];
+ break;
+ case BEHAVIORS.CLOCKWISE:
+ flipOrder = clockwise(placement);
+ break;
+ case BEHAVIORS.COUNTERCLOCKWISE:
+ flipOrder = clockwise(placement, true);
+ break;
+ default:
+ flipOrder = options.behavior;
+ }
+
+ flipOrder.forEach(function (step, index) {
+ if (placement !== step || flipOrder.length === index + 1) {
+ return data;
+ }
+
+ placement = data.placement.split('-')[0];
+ placementOpposite = getOppositePlacement(placement);
+
+ var popperOffsets = data.offsets.popper;
+ var refOffsets = data.offsets.reference;
+
+ // using floor because the reference offsets may contain decimals we are not going to consider here
+ var floor = Math.floor;
+ var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);
+
+ var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
+ var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
+ var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
+ var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
+
+ var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;
+
+ // flip the variation if required
+ var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
+ var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);
+
+ if (overlapsRef || overflowsBoundaries || flippedVariation) {
+ // this boolean to detect any flip loop
+ data.flipped = true;
+
+ if (overlapsRef || overflowsBoundaries) {
+ placement = flipOrder[index + 1];
+ }
+
+ if (flippedVariation) {
+ variation = getOppositeVariation(variation);
+ }
+
+ data.placement = placement + (variation ? '-' + variation : '');
+
+ // this object contains `position`, we want to preserve it along with
+ // any additional property we may add in the future
+ data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
+
+ data = runModifiers(data.instance.modifiers, data, 'flip');
+ }
+ });
+ return data;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function keepTogether(data) {
+ var _data$offsets = data.offsets,
+ popper = _data$offsets.popper,
+ reference = _data$offsets.reference;
+
+ var placement = data.placement.split('-')[0];
+ var floor = Math.floor;
+ var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
+ var side = isVertical ? 'right' : 'bottom';
+ var opSide = isVertical ? 'left' : 'top';
+ var measurement = isVertical ? 'width' : 'height';
+
+ if (popper[side] < floor(reference[opSide])) {
+ data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
+ }
+ if (popper[opSide] > floor(reference[side])) {
+ data.offsets.popper[opSide] = floor(reference[side]);
+ }
+
+ return data;
+}
+
+/**
+ * Converts a string containing value + unit into a px value number
+ * @function
+ * @memberof {modifiers~offset}
+ * @private
+ * @argument {String} str - Value + unit string
+ * @argument {String} measurement - `height` or `width`
+ * @argument {Object} popperOffsets
+ * @argument {Object} referenceOffsets
+ * @returns {Number|String}
+ * Value in pixels, or original string if no values were extracted
+ */
+function toValue(str, measurement, popperOffsets, referenceOffsets) {
+ // separate value from unit
+ var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
+ var value = +split[1];
+ var unit = split[2];
+
+ // If it's not a number it's an operator, I guess
+ if (!value) {
+ return str;
+ }
+
+ if (unit.indexOf('%') === 0) {
+ var element = void 0;
+ switch (unit) {
+ case '%p':
+ element = popperOffsets;
+ break;
+ case '%':
+ case '%r':
+ default:
+ element = referenceOffsets;
+ }
+
+ var rect = getClientRect(element);
+ return rect[measurement] / 100 * value;
+ } else if (unit === 'vh' || unit === 'vw') {
+ // if is a vh or vw, we calculate the size based on the viewport
+ var size = void 0;
+ if (unit === 'vh') {
+ size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
+ } else {
+ size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
+ }
+ return size / 100 * value;
+ } else {
+ // if is an explicit pixel unit, we get rid of the unit and keep the value
+ // if is an implicit unit, it's px, and we return just the value
+ return value;
+ }
+}
+
+/**
+ * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
+ * @function
+ * @memberof {modifiers~offset}
+ * @private
+ * @argument {String} offset
+ * @argument {Object} popperOffsets
+ * @argument {Object} referenceOffsets
+ * @argument {String} basePlacement
+ * @returns {Array} a two cells array with x and y offsets in numbers
+ */
+function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
+ var offsets = [0, 0];
+
+ // Use height if placement is left or right and index is 0 otherwise use width
+ // in this way the first offset will use an axis and the second one
+ // will use the other one
+ var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;
+
+ // Split the offset string to obtain a list of values and operands
+ // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
+ var fragments = offset.split(/(\+|\-)/).map(function (frag) {
+ return frag.trim();
+ });
+
+ // Detect if the offset string contains a pair of values or a single one
+ // they could be separated by comma or space
+ var divider = fragments.indexOf(find(fragments, function (frag) {
+ return frag.search(/,|\s/) !== -1;
+ }));
+
+ if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
+ console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
+ }
+
+ // If divider is found, we divide the list of values and operands to divide
+ // them by ofset X and Y.
+ var splitRegex = /\s*,\s*|\s+/;
+ var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];
+
+ // Convert the values with units to absolute pixels to allow our computations
+ ops = ops.map(function (op, index) {
+ // Most of the units rely on the orientation of the popper
+ var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
+ var mergeWithPrevious = false;
+ return op
+ // This aggregates any `+` or `-` sign that aren't considered operators
+ // e.g.: 10 + +5 => [10, +, +5]
+ .reduce(function (a, b) {
+ if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
+ a[a.length - 1] = b;
+ mergeWithPrevious = true;
+ return a;
+ } else if (mergeWithPrevious) {
+ a[a.length - 1] += b;
+ mergeWithPrevious = false;
+ return a;
+ } else {
+ return a.concat(b);
+ }
+ }, [])
+ // Here we convert the string values into number values (in px)
+ .map(function (str) {
+ return toValue(str, measurement, popperOffsets, referenceOffsets);
+ });
+ });
+
+ // Loop trough the offsets arrays and execute the operations
+ ops.forEach(function (op, index) {
+ op.forEach(function (frag, index2) {
+ if (isNumeric(frag)) {
+ offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
+ }
+ });
+ });
+ return offsets;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @argument {Number|String} options.offset=0
+ * The offset value as described in the modifier description
+ * @returns {Object} The data object, properly modified
+ */
+function offset(data, _ref) {
+ var offset = _ref.offset;
+ var placement = data.placement,
+ _data$offsets = data.offsets,
+ popper = _data$offsets.popper,
+ reference = _data$offsets.reference;
+
+ var basePlacement = placement.split('-')[0];
+
+ var offsets = void 0;
+ if (isNumeric(+offset)) {
+ offsets = [+offset, 0];
+ } else {
+ offsets = parseOffset(offset, popper, reference, basePlacement);
+ }
+
+ if (basePlacement === 'left') {
+ popper.top += offsets[0];
+ popper.left -= offsets[1];
+ } else if (basePlacement === 'right') {
+ popper.top += offsets[0];
+ popper.left += offsets[1];
+ } else if (basePlacement === 'top') {
+ popper.left += offsets[0];
+ popper.top -= offsets[1];
+ } else if (basePlacement === 'bottom') {
+ popper.left += offsets[0];
+ popper.top += offsets[1];
+ }
+
+ data.popper = popper;
+ return data;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function preventOverflow(data, options) {
+ var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
+
+ // If offsetParent is the reference element, we really want to
+ // go one step up and use the next offsetParent as reference to
+ // avoid to make this modifier completely useless and look like broken
+ if (data.instance.reference === boundariesElement) {
+ boundariesElement = getOffsetParent(boundariesElement);
+ }
+
+ var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);
+ options.boundaries = boundaries;
+
+ var order = options.priority;
+ var popper = data.offsets.popper;
+
+ var check = {
+ primary: function primary(placement) {
+ var value = popper[placement];
+ if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
+ value = Math.max(popper[placement], boundaries[placement]);
+ }
+ return defineProperty({}, placement, value);
+ },
+ secondary: function secondary(placement) {
+ var mainSide = placement === 'right' ? 'left' : 'top';
+ var value = popper[mainSide];
+ if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
+ value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
+ }
+ return defineProperty({}, mainSide, value);
+ }
+ };
+
+ order.forEach(function (placement) {
+ var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
+ popper = _extends$1({}, popper, check[side](placement));
+ });
+
+ data.offsets.popper = popper;
+
+ return data;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function shift(data) {
+ var placement = data.placement;
+ var basePlacement = placement.split('-')[0];
+ var shiftvariation = placement.split('-')[1];
+
+ // if shift shiftvariation is specified, run the modifier
+ if (shiftvariation) {
+ var _data$offsets = data.offsets,
+ reference = _data$offsets.reference,
+ popper = _data$offsets.popper;
+
+ var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
+ var side = isVertical ? 'left' : 'top';
+ var measurement = isVertical ? 'width' : 'height';
+
+ var shiftOffsets = {
+ start: defineProperty({}, side, reference[side]),
+ end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
+ };
+
+ data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]);
+ }
+
+ return data;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function hide(data) {
+ if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
+ return data;
+ }
+
+ var refRect = data.offsets.reference;
+ var bound = find(data.instance.modifiers, function (modifier) {
+ return modifier.name === 'preventOverflow';
+ }).boundaries;
+
+ if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
+ // Avoid unnecessary DOM access if visibility hasn't changed
+ if (data.hide === true) {
+ return data;
+ }
+
+ data.hide = true;
+ data.attributes['x-out-of-boundaries'] = '';
+ } else {
+ // Avoid unnecessary DOM access if visibility hasn't changed
+ if (data.hide === false) {
+ return data;
+ }
+
+ data.hide = false;
+ data.attributes['x-out-of-boundaries'] = false;
+ }
+
+ return data;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+function inner(data) {
+ var placement = data.placement;
+ var basePlacement = placement.split('-')[0];
+ var _data$offsets = data.offsets,
+ popper = _data$offsets.popper,
+ reference = _data$offsets.reference;
+
+ var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
+
+ var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
+
+ popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
+
+ data.placement = getOppositePlacement(placement);
+ data.offsets.popper = getClientRect(popper);
+
+ return data;
+}
+
+/**
+ * Modifier function, each modifier can have a function of this type assigned
+ * to its `fn` property.<br />
+ * These functions will be called on each update, this means that you must
+ * make sure they are performant enough to avoid performance bottlenecks.
+ *
+ * @function ModifierFn
+ * @argument {dataObject} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {dataObject} The data object, properly modified
+ */
+
+/**
+ * Modifiers are plugins used to alter the behavior of your poppers.<br />
+ * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
+ * needed by the library.
+ *
+ * Usually you don't want to override the `order`, `fn` and `onLoad` props.
+ * All the other properties are configurations that could be tweaked.
+ * @namespace modifiers
+ */
+var modifiers = {
+ /**
+ * Modifier used to shift the popper on the start or end of its reference
+ * element.<br />
+ * It will read the variation of the `placement` property.<br />
+ * It can be one either `-end` or `-start`.
+ * @memberof modifiers
+ * @inner
+ */
+ shift: {
+ /** @prop {number} order=100 - Index used to define the order of execution */
+ order: 100,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: shift
+ },
+
+ /**
+ * The `offset` modifier can shift your popper on both its axis.
+ *
+ * It accepts the following units:
+ * - `px` or unitless, interpreted as pixels
+ * - `%` or `%r`, percentage relative to the length of the reference element
+ * - `%p`, percentage relative to the length of the popper element
+ * - `vw`, CSS viewport width unit
+ * - `vh`, CSS viewport height unit
+ *
+ * For length is intended the main axis relative to the placement of the popper.<br />
+ * This means that if the placement is `top` or `bottom`, the length will be the
+ * `width`. In case of `left` or `right`, it will be the height.
+ *
+ * You can provide a single value (as `Number` or `String`), or a pair of values
+ * as `String` divided by a comma or one (or more) white spaces.<br />
+ * The latter is a deprecated method because it leads to confusion and will be
+ * removed in v2.<br />
+ * Additionally, it accepts additions and subtractions between different units.
+ * Note that multiplications and divisions aren't supported.
+ *
+ * Valid examples are:
+ * ```
+ * 10
+ * '10%'
+ * '10, 10'
+ * '10%, 10'
+ * '10 + 10%'
+ * '10 - 5vh + 3%'
+ * '-10px + 5vh, 5px - 6%'
+ * ```
+ * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
+ * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
+ * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ offset: {
+ /** @prop {number} order=200 - Index used to define the order of execution */
+ order: 200,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: offset,
+ /** @prop {Number|String} offset=0
+ * The offset value as described in the modifier description
+ */
+ offset: 0
+ },
+
+ /**
+ * Modifier used to prevent the popper from being positioned outside the boundary.
+ *
+ * An scenario exists where the reference itself is not within the boundaries.<br />
+ * We can say it has "escaped the boundaries" — or just "escaped".<br />
+ * In this case we need to decide whether the popper should either:
+ *
+ * - detach from the reference and remain "trapped" in the boundaries, or
+ * - if it should ignore the boundary and "escape with its reference"
+ *
+ * When `escapeWithReference` is set to`true` and reference is completely
+ * outside its boundaries, the popper will overflow (or completely leave)
+ * the boundaries in order to remain attached to the edge of the reference.
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ preventOverflow: {
+ /** @prop {number} order=300 - Index used to define the order of execution */
+ order: 300,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: preventOverflow,
+ /**
+ * @prop {Array} [priority=['left','right','top','bottom']]
+ * Popper will try to prevent overflow following these priorities by default,
+ * then, it could overflow on the left and on top of the `boundariesElement`
+ */
+ priority: ['left', 'right', 'top', 'bottom'],
+ /**
+ * @prop {number} padding=5
+ * Amount of pixel used to define a minimum distance between the boundaries
+ * and the popper this makes sure the popper has always a little padding
+ * between the edges of its container
+ */
+ padding: 5,
+ /**
+ * @prop {String|HTMLElement} boundariesElement='scrollParent'
+ * Boundaries used by the modifier, can be `scrollParent`, `window`,
+ * `viewport` or any DOM element.
+ */
+ boundariesElement: 'scrollParent'
+ },
+
+ /**
+ * Modifier used to make sure the reference and its popper stay near eachothers
+ * without leaving any gap between the two. Expecially useful when the arrow is
+ * enabled and you want to assure it to point to its reference element.
+ * It cares only about the first axis, you can still have poppers with margin
+ * between the popper and its reference element.
+ * @memberof modifiers
+ * @inner
+ */
+ keepTogether: {
+ /** @prop {number} order=400 - Index used to define the order of execution */
+ order: 400,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: keepTogether
+ },
+
+ /**
+ * This modifier is used to move the `arrowElement` of the popper to make
+ * sure it is positioned between the reference element and its popper element.
+ * It will read the outer size of the `arrowElement` node to detect how many
+ * pixels of conjuction are needed.
+ *
+ * It has no effect if no `arrowElement` is provided.
+ * @memberof modifiers
+ * @inner
+ */
+ arrow: {
+ /** @prop {number} order=500 - Index used to define the order of execution */
+ order: 500,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: arrow,
+ /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
+ element: '[x-arrow]'
+ },
+
+ /**
+ * Modifier used to flip the popper's placement when it starts to overlap its
+ * reference element.
+ *
+ * Requires the `preventOverflow` modifier before it in order to work.
+ *
+ * **NOTE:** this modifier will interrupt the current update cycle and will
+ * restart it if it detects the need to flip the placement.
+ * @memberof modifiers
+ * @inner
+ */
+ flip: {
+ /** @prop {number} order=600 - Index used to define the order of execution */
+ order: 600,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: flip,
+ /**
+ * @prop {String|Array} behavior='flip'
+ * The behavior used to change the popper's placement. It can be one of
+ * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
+ * placements (with optional variations).
+ */
+ behavior: 'flip',
+ /**
+ * @prop {number} padding=5
+ * The popper will flip if it hits the edges of the `boundariesElement`
+ */
+ padding: 5,
+ /**
+ * @prop {String|HTMLElement} boundariesElement='viewport'
+ * The element which will define the boundaries of the popper position,
+ * the popper will never be placed outside of the defined boundaries
+ * (except if keepTogether is enabled)
+ */
+ boundariesElement: 'viewport'
+ },
+
+ /**
+ * Modifier used to make the popper flow toward the inner of the reference element.
+ * By default, when this modifier is disabled, the popper will be placed outside
+ * the reference element.
+ * @memberof modifiers
+ * @inner
+ */
+ inner: {
+ /** @prop {number} order=700 - Index used to define the order of execution */
+ order: 700,
+ /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
+ enabled: false,
+ /** @prop {ModifierFn} */
+ fn: inner
+ },
+
+ /**
+ * Modifier used to hide the popper when its reference element is outside of the
+ * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
+ * be used to hide with a CSS selector the popper when its reference is
+ * out of boundaries.
+ *
+ * Requires the `preventOverflow` modifier before it in order to work.
+ * @memberof modifiers
+ * @inner
+ */
+ hide: {
+ /** @prop {number} order=800 - Index used to define the order of execution */
+ order: 800,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: hide
+ },
+
+ /**
+ * Computes the style that will be applied to the popper element to gets
+ * properly positioned.
+ *
+ * Note that this modifier will not touch the DOM, it just prepares the styles
+ * so that `applyStyle` modifier can apply it. This separation is useful
+ * in case you need to replace `applyStyle` with a custom implementation.
+ *
+ * This modifier has `850` as `order` value to maintain backward compatibility
+ * with previous versions of Popper.js. Expect the modifiers ordering method
+ * to change in future major versions of the library.
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ computeStyle: {
+ /** @prop {number} order=850 - Index used to define the order of execution */
+ order: 850,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: computeStyle,
+ /**
+ * @prop {Boolean} gpuAcceleration=true
+ * If true, it uses the CSS 3d transformation to position the popper.
+ * Otherwise, it will use the `top` and `left` properties.
+ */
+ gpuAcceleration: true,
+ /**
+ * @prop {string} [x='bottom']
+ * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
+ * Change this if your popper should grow in a direction different from `bottom`
+ */
+ x: 'bottom',
+ /**
+ * @prop {string} [x='left']
+ * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
+ * Change this if your popper should grow in a direction different from `right`
+ */
+ y: 'right'
+ },
+
+ /**
+ * Applies the computed styles to the popper element.
+ *
+ * All the DOM manipulations are limited to this modifier. This is useful in case
+ * you want to integrate Popper.js inside a framework or view library and you
+ * want to delegate all the DOM manipulations to it.
+ *
+ * Note that if you disable this modifier, you must make sure the popper element
+ * has its position set to `absolute` before Popper.js can do its work!
+ *
+ * Just disable this modifier and define you own to achieve the desired effect.
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ applyStyle: {
+ /** @prop {number} order=900 - Index used to define the order of execution */
+ order: 900,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: applyStyle,
+ /** @prop {Function} */
+ onLoad: applyStyleOnLoad,
+ /**
+ * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
+ * @prop {Boolean} gpuAcceleration=true
+ * If true, it uses the CSS 3d transformation to position the popper.
+ * Otherwise, it will use the `top` and `left` properties.
+ */
+ gpuAcceleration: undefined
+ }
+};
+
+/**
+ * The `dataObject` is an object containing all the informations used by Popper.js
+ * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
+ * @name dataObject
+ * @property {Object} data.instance The Popper.js instance
+ * @property {String} data.placement Placement applied to popper
+ * @property {String} data.originalPlacement Placement originally defined on init
+ * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
+ * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.
+ * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
+ * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)
+ * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)
+ * @property {Object} data.boundaries Offsets of the popper boundaries
+ * @property {Object} data.offsets The measurements of popper, reference and arrow elements.
+ * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
+ * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
+ * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
+ */
+
+/**
+ * Default options provided to Popper.js constructor.<br />
+ * These can be overriden using the `options` argument of Popper.js.<br />
+ * To override an option, simply pass as 3rd argument an object with the same
+ * structure of this object, example:
+ * ```
+ * new Popper(ref, pop, {
+ * modifiers: {
+ * preventOverflow: { enabled: false }
+ * }
+ * })
+ * ```
+ * @type {Object}
+ * @static
+ * @memberof Popper
+ */
+var Defaults = {
+ /**
+ * Popper's placement
+ * @prop {Popper.placements} placement='bottom'
+ */
+ placement: 'bottom',
+
+ /**
+ * Whether events (resize, scroll) are initially enabled
+ * @prop {Boolean} eventsEnabled=true
+ */
+ eventsEnabled: true,
+
+ /**
+ * Set to true if you want to automatically remove the popper when
+ * you call the `destroy` method.
+ * @prop {Boolean} removeOnDestroy=false
+ */
+ removeOnDestroy: false,
+
+ /**
+ * Callback called when the popper is created.<br />
+ * By default, is set to no-op.<br />
+ * Access Popper.js instance with `data.instance`.
+ * @prop {onCreate}
+ */
+ onCreate: function onCreate() {},
+
+ /**
+ * Callback called when the popper is updated, this callback is not called
+ * on the initialization/creation of the popper, but only on subsequent
+ * updates.<br />
+ * By default, is set to no-op.<br />
+ * Access Popper.js instance with `data.instance`.
+ * @prop {onUpdate}
+ */
+ onUpdate: function onUpdate() {},
+
+ /**
+ * List of modifiers used to modify the offsets before they are applied to the popper.
+ * They provide most of the functionalities of Popper.js
+ * @prop {modifiers}
+ */
+ modifiers: modifiers
+};
+
+/**
+ * @callback onCreate
+ * @param {dataObject} data
+ */
+
+/**
+ * @callback onUpdate
+ * @param {dataObject} data
+ */
+
+// Utils
+// Methods
+var Popper = function () {
+ /**
+ * Create a new Popper.js instance
+ * @class Popper
+ * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper
+ * @param {HTMLElement} popper - The HTML element used as popper.
+ * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
+ * @return {Object} instance - The generated Popper.js instance
+ */
+ function Popper(reference, popper) {
+ var _this = this;
+
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ classCallCheck(this, Popper);
+
+ this.scheduleUpdate = function () {
+ return requestAnimationFrame(_this.update);
+ };
+
+ // make update() debounced, so that it only runs at most once-per-tick
+ this.update = debounce(this.update.bind(this));
+
+ // with {} we create a new object with the options inside it
+ this.options = _extends$1({}, Popper.Defaults, options);
+
+ // init state
+ this.state = {
+ isDestroyed: false,
+ isCreated: false,
+ scrollParents: []
+ };
+
+ // get reference and popper elements (allow jQuery wrappers)
+ this.reference = reference && reference.jquery ? reference[0] : reference;
+ this.popper = popper && popper.jquery ? popper[0] : popper;
+
+ // Deep merge modifiers options
+ this.options.modifiers = {};
+ Object.keys(_extends$1({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
+ _this.options.modifiers[name] = _extends$1({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
+ });
+
+ // Refactoring modifiers' list (Object => Array)
+ this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
+ return _extends$1({
+ name: name
+ }, _this.options.modifiers[name]);
+ })
+ // sort the modifiers by order
+ .sort(function (a, b) {
+ return a.order - b.order;
+ });
+
+ // modifiers have the ability to execute arbitrary code when Popper.js get inited
+ // such code is executed in the same order of its modifier
+ // they could add new properties to their options configuration
+ // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
+ this.modifiers.forEach(function (modifierOptions) {
+ if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
+ modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
+ }
+ });
+
+ // fire the first update to position the popper in the right place
+ this.update();
+
+ var eventsEnabled = this.options.eventsEnabled;
+ if (eventsEnabled) {
+ // setup event listeners, they will take care of update the position in specific situations
+ this.enableEventListeners();
+ }
+
+ this.state.eventsEnabled = eventsEnabled;
+ }
+
+ // We can't use class properties because they don't get listed in the
+ // class prototype and break stuff like Sinon stubs
+
+
+ createClass(Popper, [{
+ key: 'update',
+ value: function update$$1() {
+ return update.call(this);
+ }
+ }, {
+ key: 'destroy',
+ value: function destroy$$1() {
+ return destroy.call(this);
+ }
+ }, {
+ key: 'enableEventListeners',
+ value: function enableEventListeners$$1() {
+ return enableEventListeners.call(this);
+ }
+ }, {
+ key: 'disableEventListeners',
+ value: function disableEventListeners$$1() {
+ return disableEventListeners.call(this);
+ }
+
+ /**
+ * Schedule an update, it will run on the next UI update available
+ * @method scheduleUpdate
+ * @memberof Popper
+ */
+
+
+ /**
+ * Collection of utilities useful when writing custom modifiers.
+ * Starting from version 1.7, this method is available only if you
+ * include `popper-utils.js` before `popper.js`.
+ *
+ * **DEPRECATION**: This way to access PopperUtils is deprecated
+ * and will be removed in v2! Use the PopperUtils module directly instead.
+ * Due to the high instability of the methods contained in Utils, we can't
+ * guarantee them to follow semver. Use them at your own risk!
+ * @static
+ * @private
+ * @type {Object}
+ * @deprecated since version 1.8
+ * @member Utils
+ * @memberof Popper
+ */
+
+ }]);
+ return Popper;
+}();
+
+/**
+ * The `referenceObject` is an object that provides an interface compatible with Popper.js
+ * and lets you use it as replacement of a real DOM node.<br />
+ * You can use this method to position a popper relatively to a set of coordinates
+ * in case you don't have a DOM node to use as reference.
+ *
+ * ```
+ * new Popper(referenceObject, popperNode);
+ * ```
+ *
+ * NB: This feature isn't supported in Internet Explorer 10
+ * @name referenceObject
+ * @property {Function} data.getBoundingClientRect
+ * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
+ * @property {number} data.clientWidth
+ * An ES6 getter that will return the width of the virtual reference element.
+ * @property {number} data.clientHeight
+ * An ES6 getter that will return the height of the virtual reference element.
+ */
+
+
+Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
+Popper.placements = placements;
+Popper.Defaults = Defaults;
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): dropdown.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Dropdown = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'dropdown';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.dropdown';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
+
+ var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
+
+ var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
+
+ var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
+
+ var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
+
+ var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
+
+ var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
+ var Event = {
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ CLICK: "click" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
+ KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
+ KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ DISABLED: 'disabled',
+ SHOW: 'show',
+ DROPUP: 'dropup',
+ DROPRIGHT: 'dropright',
+ DROPLEFT: 'dropleft',
+ MENURIGHT: 'dropdown-menu-right',
+ MENULEFT: 'dropdown-menu-left',
+ POSITION_STATIC: 'position-static'
+ };
+ var Selector = {
+ DATA_TOGGLE: '[data-toggle="dropdown"]',
+ FORM_CHILD: '.dropdown form',
+ MENU: '.dropdown-menu',
+ NAVBAR_NAV: '.navbar-nav',
+ VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
+ };
+ var AttachmentMap = {
+ TOP: 'top-start',
+ TOPEND: 'top-end',
+ BOTTOM: 'bottom-start',
+ BOTTOMEND: 'bottom-end',
+ RIGHT: 'right-start',
+ RIGHTEND: 'right-end',
+ LEFT: 'left-start',
+ LEFTEND: 'left-end'
+ };
+ var Default = {
+ offset: 0,
+ flip: true,
+ boundary: 'scrollParent'
+ };
+ var DefaultType = {
+ offset: '(number|string|function)',
+ flip: 'boolean',
+ boundary: '(string|element)'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Dropdown =
+ /*#__PURE__*/
+ function () {
+ function Dropdown(element, config) {
+ this._element = element;
+ this._popper = null;
+ this._config = this._getConfig(config);
+ this._menu = this._getMenuElement();
+ this._inNavbar = this._detectNavbar();
+
+ this._addEventListeners();
+ } // Getters
+
+
+ var _proto = Dropdown.prototype;
+
+ // Public
+ _proto.toggle = function toggle() {
+ if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
+ return;
+ }
+
+ var parent = Dropdown._getParentFromElement(this._element);
+
+ var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
+
+ Dropdown._clearMenus();
+
+ if (isActive) {
+ return;
+ }
+
+ var relatedTarget = {
+ relatedTarget: this._element
+ };
+ var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
+ $$$1(parent).trigger(showEvent);
+
+ if (showEvent.isDefaultPrevented()) {
+ return;
+ } // Disable totally Popper.js for Dropdown in Navbar
+
+
+ if (!this._inNavbar) {
+ /**
+ * Check for Popper dependency
+ * Popper - https://popper.js.org
+ */
+ if (typeof Popper === 'undefined') {
+ throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
+ }
+
+ var element = this._element; // For dropup with alignment we use the parent as popper container
+
+ if ($$$1(parent).hasClass(ClassName.DROPUP)) {
+ if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
+ element = parent;
+ }
+ } // If boundary is not `scrollParent`, then set position to `static`
+ // to allow the menu to "escape" the scroll parent's boundaries
+ // https://github.com/twbs/bootstrap/issues/24251
+
+
+ if (this._config.boundary !== 'scrollParent') {
+ $$$1(parent).addClass(ClassName.POSITION_STATIC);
+ }
+
+ this._popper = new Popper(element, this._menu, this._getPopperConfig());
+ } // If this is a touch-enabled device we add extra
+ // empty mouseover listeners to the body's immediate children;
+ // only needed because of broken event delegation on iOS
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+ if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
+ $$$1('body').children().on('mouseover', null, $$$1.noop);
+ }
+
+ this._element.focus();
+
+ this._element.setAttribute('aria-expanded', true);
+
+ $$$1(this._menu).toggleClass(ClassName.SHOW);
+ $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ $$$1(this._element).off(EVENT_KEY);
+ this._element = null;
+ this._menu = null;
+
+ if (this._popper !== null) {
+ this._popper.destroy();
+
+ this._popper = null;
+ }
+ };
+
+ _proto.update = function update() {
+ this._inNavbar = this._detectNavbar();
+
+ if (this._popper !== null) {
+ this._popper.scheduleUpdate();
+ }
+ }; // Private
+
+
+ _proto._addEventListeners = function _addEventListeners() {
+ var _this = this;
+
+ $$$1(this._element).on(Event.CLICK, function (event) {
+ event.preventDefault();
+ event.stopPropagation();
+
+ _this.toggle();
+ });
+ };
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config);
+ Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
+ return config;
+ };
+
+ _proto._getMenuElement = function _getMenuElement() {
+ if (!this._menu) {
+ var parent = Dropdown._getParentFromElement(this._element);
+
+ this._menu = $$$1(parent).find(Selector.MENU)[0];
+ }
+
+ return this._menu;
+ };
+
+ _proto._getPlacement = function _getPlacement() {
+ var $parentDropdown = $$$1(this._element).parent();
+ var placement = AttachmentMap.BOTTOM; // Handle dropup
+
+ if ($parentDropdown.hasClass(ClassName.DROPUP)) {
+ placement = AttachmentMap.TOP;
+
+ if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
+ placement = AttachmentMap.TOPEND;
+ }
+ } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
+ placement = AttachmentMap.RIGHT;
+ } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
+ placement = AttachmentMap.LEFT;
+ } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
+ placement = AttachmentMap.BOTTOMEND;
+ }
+
+ return placement;
+ };
+
+ _proto._detectNavbar = function _detectNavbar() {
+ return $$$1(this._element).closest('.navbar').length > 0;
+ };
+
+ _proto._getPopperConfig = function _getPopperConfig() {
+ var _this2 = this;
+
+ var offsetConf = {};
+
+ if (typeof this._config.offset === 'function') {
+ offsetConf.fn = function (data) {
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
+ return data;
+ };
+ } else {
+ offsetConf.offset = this._config.offset;
+ }
+
+ var popperConfig = {
+ placement: this._getPlacement(),
+ modifiers: {
+ offset: offsetConf,
+ flip: {
+ enabled: this._config.flip
+ },
+ preventOverflow: {
+ boundariesElement: this._config.boundary
+ }
+ }
+ };
+ return popperConfig;
+ }; // Static
+
+
+ Dropdown._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' ? config : null;
+
+ if (!data) {
+ data = new Dropdown(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ Dropdown._clearMenus = function _clearMenus(event) {
+ if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
+ return;
+ }
+
+ var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
+
+ for (var i = 0; i < toggles.length; i++) {
+ var parent = Dropdown._getParentFromElement(toggles[i]);
+
+ var context = $$$1(toggles[i]).data(DATA_KEY);
+ var relatedTarget = {
+ relatedTarget: toggles[i]
+ };
+
+ if (!context) {
+ continue;
+ }
+
+ var dropdownMenu = context._menu;
+
+ if (!$$$1(parent).hasClass(ClassName.SHOW)) {
+ continue;
+ }
+
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
+ continue;
+ }
+
+ var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
+ $$$1(parent).trigger(hideEvent);
+
+ if (hideEvent.isDefaultPrevented()) {
+ continue;
+ } // If this is a touch-enabled device we remove the extra
+ // empty mouseover listeners we added for iOS support
+
+
+ if ('ontouchstart' in document.documentElement) {
+ $$$1('body').children().off('mouseover', null, $$$1.noop);
+ }
+
+ toggles[i].setAttribute('aria-expanded', 'false');
+ $$$1(dropdownMenu).removeClass(ClassName.SHOW);
+ $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
+ }
+ };
+
+ Dropdown._getParentFromElement = function _getParentFromElement(element) {
+ var parent;
+ var selector = Util.getSelectorFromElement(element);
+
+ if (selector) {
+ parent = $$$1(selector)[0];
+ }
+
+ return parent || element.parentNode;
+ }; // eslint-disable-next-line complexity
+
+
+ Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
+ // If not input/textarea:
+ // - And not a key in REGEXP_KEYDOWN => not a dropdown command
+ // If input/textarea:
+ // - If space key => not a dropdown command
+ // - If key is other than escape
+ // - If key is not up or down => not a dropdown command
+ // - If trigger inside the menu => not a dropdown command
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
+ return;
+ }
+
+ event.preventDefault();
+ event.stopPropagation();
+
+ if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
+ return;
+ }
+
+ var parent = Dropdown._getParentFromElement(this);
+
+ var isActive = $$$1(parent).hasClass(ClassName.SHOW);
+
+ if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
+ if (event.which === ESCAPE_KEYCODE) {
+ var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
+ $$$1(toggle).trigger('focus');
+ }
+
+ $$$1(this).trigger('click');
+ return;
+ }
+
+ var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
+
+ if (items.length === 0) {
+ return;
+ }
+
+ var index = items.indexOf(event.target);
+
+ if (event.which === ARROW_UP_KEYCODE && index > 0) {
+ // Up
+ index--;
+ }
+
+ if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
+ // Down
+ index++;
+ }
+
+ if (index < 0) {
+ index = 0;
+ }
+
+ items[index].focus();
+ };
+
+ _createClass(Dropdown, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }, {
+ key: "DefaultType",
+ get: function get() {
+ return DefaultType;
+ }
+ }]);
+ return Dropdown;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ event.preventDefault();
+ event.stopPropagation();
+
+ Dropdown._jQueryInterface.call($$$1(this), 'toggle');
+ }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
+ e.stopPropagation();
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Dropdown._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Dropdown;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Dropdown._jQueryInterface;
+ };
+
+ return Dropdown;
+}($, Popper);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): modal.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Modal = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'modal';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.modal';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 300;
+ var BACKDROP_TRANSITION_DURATION = 150;
+ var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
+
+ var Default = {
+ backdrop: true,
+ keyboard: true,
+ focus: true,
+ show: true
+ };
+ var DefaultType = {
+ backdrop: '(boolean|string)',
+ keyboard: 'boolean',
+ focus: 'boolean',
+ show: 'boolean'
+ };
+ var Event = {
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ RESIZE: "resize" + EVENT_KEY,
+ CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
+ KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
+ MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
+ MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
+ BACKDROP: 'modal-backdrop',
+ OPEN: 'modal-open',
+ FADE: 'fade',
+ SHOW: 'show'
+ };
+ var Selector = {
+ DIALOG: '.modal-dialog',
+ DATA_TOGGLE: '[data-toggle="modal"]',
+ DATA_DISMISS: '[data-dismiss="modal"]',
+ FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
+ STICKY_CONTENT: '.sticky-top',
+ NAVBAR_TOGGLER: '.navbar-toggler'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Modal =
+ /*#__PURE__*/
+ function () {
+ function Modal(element, config) {
+ this._config = this._getConfig(config);
+ this._element = element;
+ this._dialog = $$$1(element).find(Selector.DIALOG)[0];
+ this._backdrop = null;
+ this._isShown = false;
+ this._isBodyOverflowing = false;
+ this._ignoreBackdropClick = false;
+ this._originalBodyPadding = 0;
+ this._scrollbarWidth = 0;
+ } // Getters
+
+
+ var _proto = Modal.prototype;
+
+ // Public
+ _proto.toggle = function toggle(relatedTarget) {
+ return this._isShown ? this.hide() : this.show(relatedTarget);
+ };
+
+ _proto.show = function show(relatedTarget) {
+ var _this = this;
+
+ if (this._isTransitioning || this._isShown) {
+ return;
+ }
+
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
+ this._isTransitioning = true;
+ }
+
+ var showEvent = $$$1.Event(Event.SHOW, {
+ relatedTarget: relatedTarget
+ });
+ $$$1(this._element).trigger(showEvent);
+
+ if (this._isShown || showEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ this._isShown = true;
+
+ this._checkScrollbar();
+
+ this._setScrollbar();
+
+ this._adjustDialog();
+
+ $$$1(document.body).addClass(ClassName.OPEN);
+
+ this._setEscapeEvent();
+
+ this._setResizeEvent();
+
+ $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
+ return _this.hide(event);
+ });
+ $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
+ $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
+ if ($$$1(event.target).is(_this._element)) {
+ _this._ignoreBackdropClick = true;
+ }
+ });
+ });
+
+ this._showBackdrop(function () {
+ return _this._showElement(relatedTarget);
+ });
+ };
+
+ _proto.hide = function hide(event) {
+ var _this2 = this;
+
+ if (event) {
+ event.preventDefault();
+ }
+
+ if (this._isTransitioning || !this._isShown) {
+ return;
+ }
+
+ var hideEvent = $$$1.Event(Event.HIDE);
+ $$$1(this._element).trigger(hideEvent);
+
+ if (!this._isShown || hideEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ this._isShown = false;
+ var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
+
+ if (transition) {
+ this._isTransitioning = true;
+ }
+
+ this._setEscapeEvent();
+
+ this._setResizeEvent();
+
+ $$$1(document).off(Event.FOCUSIN);
+ $$$1(this._element).removeClass(ClassName.SHOW);
+ $$$1(this._element).off(Event.CLICK_DISMISS);
+ $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
+
+ if (transition) {
+ $$$1(this._element).one(Util.TRANSITION_END, function (event) {
+ return _this2._hideModal(event);
+ }).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ this._hideModal();
+ }
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
+ this._config = null;
+ this._element = null;
+ this._dialog = null;
+ this._backdrop = null;
+ this._isShown = null;
+ this._isBodyOverflowing = null;
+ this._ignoreBackdropClick = null;
+ this._scrollbarWidth = null;
+ };
+
+ _proto.handleUpdate = function handleUpdate() {
+ this._adjustDialog();
+ }; // Private
+
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
+ Util.typeCheckConfig(NAME, config, DefaultType);
+ return config;
+ };
+
+ _proto._showElement = function _showElement(relatedTarget) {
+ var _this3 = this;
+
+ var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
+
+ if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
+ // Don't move modal's DOM position
+ document.body.appendChild(this._element);
+ }
+
+ this._element.style.display = 'block';
+
+ this._element.removeAttribute('aria-hidden');
+
+ this._element.scrollTop = 0;
+
+ if (transition) {
+ Util.reflow(this._element);
+ }
+
+ $$$1(this._element).addClass(ClassName.SHOW);
+
+ if (this._config.focus) {
+ this._enforceFocus();
+ }
+
+ var shownEvent = $$$1.Event(Event.SHOWN, {
+ relatedTarget: relatedTarget
+ });
+
+ var transitionComplete = function transitionComplete() {
+ if (_this3._config.focus) {
+ _this3._element.focus();
+ }
+
+ _this3._isTransitioning = false;
+ $$$1(_this3._element).trigger(shownEvent);
+ };
+
+ if (transition) {
+ $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ transitionComplete();
+ }
+ };
+
+ _proto._enforceFocus = function _enforceFocus() {
+ var _this4 = this;
+
+ $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
+ .on(Event.FOCUSIN, function (event) {
+ if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
+ _this4._element.focus();
+ }
+ });
+ };
+
+ _proto._setEscapeEvent = function _setEscapeEvent() {
+ var _this5 = this;
+
+ if (this._isShown && this._config.keyboard) {
+ $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
+ if (event.which === ESCAPE_KEYCODE) {
+ event.preventDefault();
+
+ _this5.hide();
+ }
+ });
+ } else if (!this._isShown) {
+ $$$1(this._element).off(Event.KEYDOWN_DISMISS);
+ }
+ };
+
+ _proto._setResizeEvent = function _setResizeEvent() {
+ var _this6 = this;
+
+ if (this._isShown) {
+ $$$1(window).on(Event.RESIZE, function (event) {
+ return _this6.handleUpdate(event);
+ });
+ } else {
+ $$$1(window).off(Event.RESIZE);
+ }
+ };
+
+ _proto._hideModal = function _hideModal() {
+ var _this7 = this;
+
+ this._element.style.display = 'none';
+
+ this._element.setAttribute('aria-hidden', true);
+
+ this._isTransitioning = false;
+
+ this._showBackdrop(function () {
+ $$$1(document.body).removeClass(ClassName.OPEN);
+
+ _this7._resetAdjustments();
+
+ _this7._resetScrollbar();
+
+ $$$1(_this7._element).trigger(Event.HIDDEN);
+ });
+ };
+
+ _proto._removeBackdrop = function _removeBackdrop() {
+ if (this._backdrop) {
+ $$$1(this._backdrop).remove();
+ this._backdrop = null;
+ }
+ };
+
+ _proto._showBackdrop = function _showBackdrop(callback) {
+ var _this8 = this;
+
+ var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
+
+ if (this._isShown && this._config.backdrop) {
+ var doAnimate = Util.supportsTransitionEnd() && animate;
+ this._backdrop = document.createElement('div');
+ this._backdrop.className = ClassName.BACKDROP;
+
+ if (animate) {
+ $$$1(this._backdrop).addClass(animate);
+ }
+
+ $$$1(this._backdrop).appendTo(document.body);
+ $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
+ if (_this8._ignoreBackdropClick) {
+ _this8._ignoreBackdropClick = false;
+ return;
+ }
+
+ if (event.target !== event.currentTarget) {
+ return;
+ }
+
+ if (_this8._config.backdrop === 'static') {
+ _this8._element.focus();
+ } else {
+ _this8.hide();
+ }
+ });
+
+ if (doAnimate) {
+ Util.reflow(this._backdrop);
+ }
+
+ $$$1(this._backdrop).addClass(ClassName.SHOW);
+
+ if (!callback) {
+ return;
+ }
+
+ if (!doAnimate) {
+ callback();
+ return;
+ }
+
+ $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ } else if (!this._isShown && this._backdrop) {
+ $$$1(this._backdrop).removeClass(ClassName.SHOW);
+
+ var callbackRemove = function callbackRemove() {
+ _this8._removeBackdrop();
+
+ if (callback) {
+ callback();
+ }
+ };
+
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
+ $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ } else {
+ callbackRemove();
+ }
+ } else if (callback) {
+ callback();
+ }
+ }; // ----------------------------------------------------------------------
+ // the following methods are used to handle overflowing modals
+ // todo (fat): these should probably be refactored out of modal.js
+ // ----------------------------------------------------------------------
+
+
+ _proto._adjustDialog = function _adjustDialog() {
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+
+ if (!this._isBodyOverflowing && isModalOverflowing) {
+ this._element.style.paddingLeft = this._scrollbarWidth + "px";
+ }
+
+ if (this._isBodyOverflowing && !isModalOverflowing) {
+ this._element.style.paddingRight = this._scrollbarWidth + "px";
+ }
+ };
+
+ _proto._resetAdjustments = function _resetAdjustments() {
+ this._element.style.paddingLeft = '';
+ this._element.style.paddingRight = '';
+ };
+
+ _proto._checkScrollbar = function _checkScrollbar() {
+ var rect = document.body.getBoundingClientRect();
+ this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
+ this._scrollbarWidth = this._getScrollbarWidth();
+ };
+
+ _proto._setScrollbar = function _setScrollbar() {
+ var _this9 = this;
+
+ if (this._isBodyOverflowing) {
+ // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
+ // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
+ // Adjust fixed content padding
+ $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
+ var actualPadding = $$$1(element)[0].style.paddingRight;
+ var calculatedPadding = $$$1(element).css('padding-right');
+ $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
+ }); // Adjust sticky content margin
+
+ $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
+ var actualMargin = $$$1(element)[0].style.marginRight;
+ var calculatedMargin = $$$1(element).css('margin-right');
+ $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
+ }); // Adjust navbar-toggler margin
+
+ $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
+ var actualMargin = $$$1(element)[0].style.marginRight;
+ var calculatedMargin = $$$1(element).css('margin-right');
+ $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
+ }); // Adjust body padding
+
+ var actualPadding = document.body.style.paddingRight;
+ var calculatedPadding = $$$1('body').css('padding-right');
+ $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
+ }
+ };
+
+ _proto._resetScrollbar = function _resetScrollbar() {
+ // Restore fixed content padding
+ $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
+ var padding = $$$1(element).data('padding-right');
+
+ if (typeof padding !== 'undefined') {
+ $$$1(element).css('padding-right', padding).removeData('padding-right');
+ }
+ }); // Restore sticky content and navbar-toggler margin
+
+ $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
+ var margin = $$$1(element).data('margin-right');
+
+ if (typeof margin !== 'undefined') {
+ $$$1(element).css('margin-right', margin).removeData('margin-right');
+ }
+ }); // Restore body padding
+
+ var padding = $$$1('body').data('padding-right');
+
+ if (typeof padding !== 'undefined') {
+ $$$1('body').css('padding-right', padding).removeData('padding-right');
+ }
+ };
+
+ _proto._getScrollbarWidth = function _getScrollbarWidth() {
+ // thx d.walsh
+ var scrollDiv = document.createElement('div');
+ scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
+ document.body.appendChild(scrollDiv);
+ var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ }; // Static
+
+
+ Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
+
+ if (!data) {
+ data = new Modal(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config](relatedTarget);
+ } else if (_config.show) {
+ data.show(relatedTarget);
+ }
+ });
+ };
+
+ _createClass(Modal, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }]);
+ return Modal;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ var _this10 = this;
+
+ var target;
+ var selector = Util.getSelectorFromElement(this);
+
+ if (selector) {
+ target = $$$1(selector)[0];
+ }
+
+ var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
+
+ if (this.tagName === 'A' || this.tagName === 'AREA') {
+ event.preventDefault();
+ }
+
+ var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
+ if (showEvent.isDefaultPrevented()) {
+ // Only register focus restorer if modal will actually get shown
+ return;
+ }
+
+ $target.one(Event.HIDDEN, function () {
+ if ($$$1(_this10).is(':visible')) {
+ _this10.focus();
+ }
+ });
+ });
+
+ Modal._jQueryInterface.call($$$1(target), config, this);
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Modal._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Modal;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Modal._jQueryInterface;
+ };
+
+ return Modal;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): tooltip.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Tooltip = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'tooltip';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.tooltip';
+ var EVENT_KEY = "." + DATA_KEY;
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 150;
+ var CLASS_PREFIX = 'bs-tooltip';
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
+ var DefaultType = {
+ animation: 'boolean',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string',
+ delay: '(number|object)',
+ html: 'boolean',
+ selector: '(string|boolean)',
+ placement: '(string|function)',
+ offset: '(number|string)',
+ container: '(string|element|boolean)',
+ fallbackPlacement: '(string|array)',
+ boundary: '(string|element)'
+ };
+ var AttachmentMap = {
+ AUTO: 'auto',
+ TOP: 'top',
+ RIGHT: 'right',
+ BOTTOM: 'bottom',
+ LEFT: 'left'
+ };
+ var Default = {
+ animation: true,
+ template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
+ trigger: 'hover focus',
+ title: '',
+ delay: 0,
+ html: false,
+ selector: false,
+ placement: 'top',
+ offset: 0,
+ container: false,
+ fallbackPlacement: 'flip',
+ boundary: 'scrollParent'
+ };
+ var HoverState = {
+ SHOW: 'show',
+ OUT: 'out'
+ };
+ var Event = {
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ INSERTED: "inserted" + EVENT_KEY,
+ CLICK: "click" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ FOCUSOUT: "focusout" + EVENT_KEY,
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY
+ };
+ var ClassName = {
+ FADE: 'fade',
+ SHOW: 'show'
+ };
+ var Selector = {
+ TOOLTIP: '.tooltip',
+ TOOLTIP_INNER: '.tooltip-inner',
+ ARROW: '.arrow'
+ };
+ var Trigger = {
+ HOVER: 'hover',
+ FOCUS: 'focus',
+ CLICK: 'click',
+ MANUAL: 'manual'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Tooltip =
+ /*#__PURE__*/
+ function () {
+ function Tooltip(element, config) {
+ /**
+ * Check for Popper dependency
+ * Popper - https://popper.js.org
+ */
+ if (typeof Popper === 'undefined') {
+ throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
+ } // private
+
+
+ this._isEnabled = true;
+ this._timeout = 0;
+ this._hoverState = '';
+ this._activeTrigger = {};
+ this._popper = null; // Protected
+
+ this.element = element;
+ this.config = this._getConfig(config);
+ this.tip = null;
+
+ this._setListeners();
+ } // Getters
+
+
+ var _proto = Tooltip.prototype;
+
+ // Public
+ _proto.enable = function enable() {
+ this._isEnabled = true;
+ };
+
+ _proto.disable = function disable() {
+ this._isEnabled = false;
+ };
+
+ _proto.toggleEnabled = function toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ };
+
+ _proto.toggle = function toggle(event) {
+ if (!this._isEnabled) {
+ return;
+ }
+
+ if (event) {
+ var dataKey = this.constructor.DATA_KEY;
+ var context = $$$1(event.currentTarget).data(dataKey);
+
+ if (!context) {
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
+ $$$1(event.currentTarget).data(dataKey, context);
+ }
+
+ context._activeTrigger.click = !context._activeTrigger.click;
+
+ if (context._isWithActiveTrigger()) {
+ context._enter(null, context);
+ } else {
+ context._leave(null, context);
+ }
+ } else {
+ if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
+ this._leave(null, this);
+
+ return;
+ }
+
+ this._enter(null, this);
+ }
+ };
+
+ _proto.dispose = function dispose() {
+ clearTimeout(this._timeout);
+ $$$1.removeData(this.element, this.constructor.DATA_KEY);
+ $$$1(this.element).off(this.constructor.EVENT_KEY);
+ $$$1(this.element).closest('.modal').off('hide.bs.modal');
+
+ if (this.tip) {
+ $$$1(this.tip).remove();
+ }
+
+ this._isEnabled = null;
+ this._timeout = null;
+ this._hoverState = null;
+ this._activeTrigger = null;
+
+ if (this._popper !== null) {
+ this._popper.destroy();
+ }
+
+ this._popper = null;
+ this.element = null;
+ this.config = null;
+ this.tip = null;
+ };
+
+ _proto.show = function show() {
+ var _this = this;
+
+ if ($$$1(this.element).css('display') === 'none') {
+ throw new Error('Please use show on visible elements');
+ }
+
+ var showEvent = $$$1.Event(this.constructor.Event.SHOW);
+
+ if (this.isWithContent() && this._isEnabled) {
+ $$$1(this.element).trigger(showEvent);
+ var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
+
+ if (showEvent.isDefaultPrevented() || !isInTheDom) {
+ return;
+ }
+
+ var tip = this.getTipElement();
+ var tipId = Util.getUID(this.constructor.NAME);
+ tip.setAttribute('id', tipId);
+ this.element.setAttribute('aria-describedby', tipId);
+ this.setContent();
+
+ if (this.config.animation) {
+ $$$1(tip).addClass(ClassName.FADE);
+ }
+
+ var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
+
+ var attachment = this._getAttachment(placement);
+
+ this.addAttachmentClass(attachment);
+ var container = this.config.container === false ? document.body : $$$1(this.config.container);
+ $$$1(tip).data(this.constructor.DATA_KEY, this);
+
+ if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
+ $$$1(tip).appendTo(container);
+ }
+
+ $$$1(this.element).trigger(this.constructor.Event.INSERTED);
+ this._popper = new Popper(this.element, tip, {
+ placement: attachment,
+ modifiers: {
+ offset: {
+ offset: this.config.offset
+ },
+ flip: {
+ behavior: this.config.fallbackPlacement
+ },
+ arrow: {
+ element: Selector.ARROW
+ },
+ preventOverflow: {
+ boundariesElement: this.config.boundary
+ }
+ },
+ onCreate: function onCreate(data) {
+ if (data.originalPlacement !== data.placement) {
+ _this._handlePopperPlacementChange(data);
+ }
+ },
+ onUpdate: function onUpdate(data) {
+ _this._handlePopperPlacementChange(data);
+ }
+ });
+ $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
+ // empty mouseover listeners to the body's immediate children;
+ // only needed because of broken event delegation on iOS
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+ if ('ontouchstart' in document.documentElement) {
+ $$$1('body').children().on('mouseover', null, $$$1.noop);
+ }
+
+ var complete = function complete() {
+ if (_this.config.animation) {
+ _this._fixTransition();
+ }
+
+ var prevHoverState = _this._hoverState;
+ _this._hoverState = null;
+ $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
+
+ if (prevHoverState === HoverState.OUT) {
+ _this._leave(null, _this);
+ }
+ };
+
+ if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
+ $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
+ } else {
+ complete();
+ }
+ }
+ };
+
+ _proto.hide = function hide(callback) {
+ var _this2 = this;
+
+ var tip = this.getTipElement();
+ var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
+
+ var complete = function complete() {
+ if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
+ tip.parentNode.removeChild(tip);
+ }
+
+ _this2._cleanTipClass();
+
+ _this2.element.removeAttribute('aria-describedby');
+
+ $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
+
+ if (_this2._popper !== null) {
+ _this2._popper.destroy();
+ }
+
+ if (callback) {
+ callback();
+ }
+ };
+
+ $$$1(this.element).trigger(hideEvent);
+
+ if (hideEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
+ // empty mouseover listeners we added for iOS support
+
+ if ('ontouchstart' in document.documentElement) {
+ $$$1('body').children().off('mouseover', null, $$$1.noop);
+ }
+
+ this._activeTrigger[Trigger.CLICK] = false;
+ this._activeTrigger[Trigger.FOCUS] = false;
+ this._activeTrigger[Trigger.HOVER] = false;
+
+ if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
+ $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ complete();
+ }
+
+ this._hoverState = '';
+ };
+
+ _proto.update = function update() {
+ if (this._popper !== null) {
+ this._popper.scheduleUpdate();
+ }
+ }; // Protected
+
+
+ _proto.isWithContent = function isWithContent() {
+ return Boolean(this.getTitle());
+ };
+
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
+ $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
+ };
+
+ _proto.getTipElement = function getTipElement() {
+ this.tip = this.tip || $$$1(this.config.template)[0];
+ return this.tip;
+ };
+
+ _proto.setContent = function setContent() {
+ var $tip = $$$1(this.getTipElement());
+ this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
+ $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
+ };
+
+ _proto.setElementContent = function setElementContent($element, content) {
+ var html = this.config.html;
+
+ if (typeof content === 'object' && (content.nodeType || content.jquery)) {
+ // Content is a DOM node or a jQuery
+ if (html) {
+ if (!$$$1(content).parent().is($element)) {
+ $element.empty().append(content);
+ }
+ } else {
+ $element.text($$$1(content).text());
+ }
+ } else {
+ $element[html ? 'html' : 'text'](content);
+ }
+ };
+
+ _proto.getTitle = function getTitle() {
+ var title = this.element.getAttribute('data-original-title');
+
+ if (!title) {
+ title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
+ }
+
+ return title;
+ }; // Private
+
+
+ _proto._getAttachment = function _getAttachment(placement) {
+ return AttachmentMap[placement.toUpperCase()];
+ };
+
+ _proto._setListeners = function _setListeners() {
+ var _this3 = this;
+
+ var triggers = this.config.trigger.split(' ');
+ triggers.forEach(function (trigger) {
+ if (trigger === 'click') {
+ $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
+ return _this3.toggle(event);
+ });
+ } else if (trigger !== Trigger.MANUAL) {
+ var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
+ var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
+ $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
+ return _this3._enter(event);
+ }).on(eventOut, _this3.config.selector, function (event) {
+ return _this3._leave(event);
+ });
+ }
+
+ $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
+ return _this3.hide();
+ });
+ });
+
+ if (this.config.selector) {
+ this.config = _extends({}, this.config, {
+ trigger: 'manual',
+ selector: ''
+ });
+ } else {
+ this._fixTitle();
+ }
+ };
+
+ _proto._fixTitle = function _fixTitle() {
+ var titleType = typeof this.element.getAttribute('data-original-title');
+
+ if (this.element.getAttribute('title') || titleType !== 'string') {
+ this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
+ this.element.setAttribute('title', '');
+ }
+ };
+
+ _proto._enter = function _enter(event, context) {
+ var dataKey = this.constructor.DATA_KEY;
+ context = context || $$$1(event.currentTarget).data(dataKey);
+
+ if (!context) {
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
+ $$$1(event.currentTarget).data(dataKey, context);
+ }
+
+ if (event) {
+ context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
+ }
+
+ if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
+ context._hoverState = HoverState.SHOW;
+ return;
+ }
+
+ clearTimeout(context._timeout);
+ context._hoverState = HoverState.SHOW;
+
+ if (!context.config.delay || !context.config.delay.show) {
+ context.show();
+ return;
+ }
+
+ context._timeout = setTimeout(function () {
+ if (context._hoverState === HoverState.SHOW) {
+ context.show();
+ }
+ }, context.config.delay.show);
+ };
+
+ _proto._leave = function _leave(event, context) {
+ var dataKey = this.constructor.DATA_KEY;
+ context = context || $$$1(event.currentTarget).data(dataKey);
+
+ if (!context) {
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
+ $$$1(event.currentTarget).data(dataKey, context);
+ }
+
+ if (event) {
+ context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
+ }
+
+ if (context._isWithActiveTrigger()) {
+ return;
+ }
+
+ clearTimeout(context._timeout);
+ context._hoverState = HoverState.OUT;
+
+ if (!context.config.delay || !context.config.delay.hide) {
+ context.hide();
+ return;
+ }
+
+ context._timeout = setTimeout(function () {
+ if (context._hoverState === HoverState.OUT) {
+ context.hide();
+ }
+ }, context.config.delay.hide);
+ };
+
+ _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
+ for (var trigger in this._activeTrigger) {
+ if (this._activeTrigger[trigger]) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
+
+ if (typeof config.delay === 'number') {
+ config.delay = {
+ show: config.delay,
+ hide: config.delay
+ };
+ }
+
+ if (typeof config.title === 'number') {
+ config.title = config.title.toString();
+ }
+
+ if (typeof config.content === 'number') {
+ config.content = config.content.toString();
+ }
+
+ Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
+ return config;
+ };
+
+ _proto._getDelegateConfig = function _getDelegateConfig() {
+ var config = {};
+
+ if (this.config) {
+ for (var key in this.config) {
+ if (this.constructor.Default[key] !== this.config[key]) {
+ config[key] = this.config[key];
+ }
+ }
+ }
+
+ return config;
+ };
+
+ _proto._cleanTipClass = function _cleanTipClass() {
+ var $tip = $$$1(this.getTipElement());
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
+
+ if (tabClass !== null && tabClass.length > 0) {
+ $tip.removeClass(tabClass.join(''));
+ }
+ };
+
+ _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
+ this._cleanTipClass();
+
+ this.addAttachmentClass(this._getAttachment(data.placement));
+ };
+
+ _proto._fixTransition = function _fixTransition() {
+ var tip = this.getTipElement();
+ var initConfigAnimation = this.config.animation;
+
+ if (tip.getAttribute('x-placement') !== null) {
+ return;
+ }
+
+ $$$1(tip).removeClass(ClassName.FADE);
+ this.config.animation = false;
+ this.hide();
+ this.show();
+ this.config.animation = initConfigAnimation;
+ }; // Static
+
+
+ Tooltip._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' && config;
+
+ if (!data && /dispose|hide/.test(config)) {
+ return;
+ }
+
+ if (!data) {
+ data = new Tooltip(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(Tooltip, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }, {
+ key: "NAME",
+ get: function get() {
+ return NAME;
+ }
+ }, {
+ key: "DATA_KEY",
+ get: function get() {
+ return DATA_KEY;
+ }
+ }, {
+ key: "Event",
+ get: function get() {
+ return Event;
+ }
+ }, {
+ key: "EVENT_KEY",
+ get: function get() {
+ return EVENT_KEY;
+ }
+ }, {
+ key: "DefaultType",
+ get: function get() {
+ return DefaultType;
+ }
+ }]);
+ return Tooltip;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1.fn[NAME] = Tooltip._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Tooltip;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Tooltip._jQueryInterface;
+ };
+
+ return Tooltip;
+}($, Popper);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): popover.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Popover = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'popover';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.popover';
+ var EVENT_KEY = "." + DATA_KEY;
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var CLASS_PREFIX = 'bs-popover';
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
+ var Default = _extends({}, Tooltip.Default, {
+ placement: 'right',
+ trigger: 'click',
+ content: '',
+ template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
+ });
+ var DefaultType = _extends({}, Tooltip.DefaultType, {
+ content: '(string|element|function)'
+ });
+ var ClassName = {
+ FADE: 'fade',
+ SHOW: 'show'
+ };
+ var Selector = {
+ TITLE: '.popover-header',
+ CONTENT: '.popover-body'
+ };
+ var Event = {
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ INSERTED: "inserted" + EVENT_KEY,
+ CLICK: "click" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ FOCUSOUT: "focusout" + EVENT_KEY,
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Popover =
+ /*#__PURE__*/
+ function (_Tooltip) {
+ _inheritsLoose(Popover, _Tooltip);
+
+ function Popover() {
+ return _Tooltip.apply(this, arguments) || this;
+ }
+
+ var _proto = Popover.prototype;
+
+ // Overrides
+ _proto.isWithContent = function isWithContent() {
+ return this.getTitle() || this._getContent();
+ };
+
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
+ $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
+ };
+
+ _proto.getTipElement = function getTipElement() {
+ this.tip = this.tip || $$$1(this.config.template)[0];
+ return this.tip;
+ };
+
+ _proto.setContent = function setContent() {
+ var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
+
+ this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
+
+ var content = this._getContent();
+
+ if (typeof content === 'function') {
+ content = content.call(this.element);
+ }
+
+ this.setElementContent($tip.find(Selector.CONTENT), content);
+ $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
+ }; // Private
+
+
+ _proto._getContent = function _getContent() {
+ return this.element.getAttribute('data-content') || this.config.content;
+ };
+
+ _proto._cleanTipClass = function _cleanTipClass() {
+ var $tip = $$$1(this.getTipElement());
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
+
+ if (tabClass !== null && tabClass.length > 0) {
+ $tip.removeClass(tabClass.join(''));
+ }
+ }; // Static
+
+
+ Popover._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' ? config : null;
+
+ if (!data && /destroy|hide/.test(config)) {
+ return;
+ }
+
+ if (!data) {
+ data = new Popover(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(Popover, null, [{
+ key: "VERSION",
+ // Getters
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }, {
+ key: "NAME",
+ get: function get() {
+ return NAME;
+ }
+ }, {
+ key: "DATA_KEY",
+ get: function get() {
+ return DATA_KEY;
+ }
+ }, {
+ key: "Event",
+ get: function get() {
+ return Event;
+ }
+ }, {
+ key: "EVENT_KEY",
+ get: function get() {
+ return EVENT_KEY;
+ }
+ }, {
+ key: "DefaultType",
+ get: function get() {
+ return DefaultType;
+ }
+ }]);
+ return Popover;
+ }(Tooltip);
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1.fn[NAME] = Popover._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Popover;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Popover._jQueryInterface;
+ };
+
+ return Popover;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): scrollspy.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var ScrollSpy = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'scrollspy';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.scrollspy';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var Default = {
+ offset: 10,
+ method: 'auto',
+ target: ''
+ };
+ var DefaultType = {
+ offset: 'number',
+ method: 'string',
+ target: '(string|element)'
+ };
+ var Event = {
+ ACTIVATE: "activate" + EVENT_KEY,
+ SCROLL: "scroll" + EVENT_KEY,
+ LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ DROPDOWN_ITEM: 'dropdown-item',
+ DROPDOWN_MENU: 'dropdown-menu',
+ ACTIVE: 'active'
+ };
+ var Selector = {
+ DATA_SPY: '[data-spy="scroll"]',
+ ACTIVE: '.active',
+ NAV_LIST_GROUP: '.nav, .list-group',
+ NAV_LINKS: '.nav-link',
+ NAV_ITEMS: '.nav-item',
+ LIST_ITEMS: '.list-group-item',
+ DROPDOWN: '.dropdown',
+ DROPDOWN_ITEMS: '.dropdown-item',
+ DROPDOWN_TOGGLE: '.dropdown-toggle'
+ };
+ var OffsetMethod = {
+ OFFSET: 'offset',
+ POSITION: 'position'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var ScrollSpy =
+ /*#__PURE__*/
+ function () {
+ function ScrollSpy(element, config) {
+ var _this = this;
+
+ this._element = element;
+ this._scrollElement = element.tagName === 'BODY' ? window : element;
+ this._config = this._getConfig(config);
+ this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
+ this._offsets = [];
+ this._targets = [];
+ this._activeTarget = null;
+ this._scrollHeight = 0;
+ $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
+ return _this._process(event);
+ });
+ this.refresh();
+
+ this._process();
+ } // Getters
+
+
+ var _proto = ScrollSpy.prototype;
+
+ // Public
+ _proto.refresh = function refresh() {
+ var _this2 = this;
+
+ var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
+ var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
+ var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
+ this._offsets = [];
+ this._targets = [];
+ this._scrollHeight = this._getScrollHeight();
+ var targets = $$$1.makeArray($$$1(this._selector));
+ targets.map(function (element) {
+ var target;
+ var targetSelector = Util.getSelectorFromElement(element);
+
+ if (targetSelector) {
+ target = $$$1(targetSelector)[0];
+ }
+
+ if (target) {
+ var targetBCR = target.getBoundingClientRect();
+
+ if (targetBCR.width || targetBCR.height) {
+ // TODO (fat): remove sketch reliance on jQuery position/offset
+ return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
+ }
+ }
+
+ return null;
+ }).filter(function (item) {
+ return item;
+ }).sort(function (a, b) {
+ return a[0] - b[0];
+ }).forEach(function (item) {
+ _this2._offsets.push(item[0]);
+
+ _this2._targets.push(item[1]);
+ });
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ $$$1(this._scrollElement).off(EVENT_KEY);
+ this._element = null;
+ this._scrollElement = null;
+ this._config = null;
+ this._selector = null;
+ this._offsets = null;
+ this._targets = null;
+ this._activeTarget = null;
+ this._scrollHeight = null;
+ }; // Private
+
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
+
+ if (typeof config.target !== 'string') {
+ var id = $$$1(config.target).attr('id');
+
+ if (!id) {
+ id = Util.getUID(NAME);
+ $$$1(config.target).attr('id', id);
+ }
+
+ config.target = "#" + id;
+ }
+
+ Util.typeCheckConfig(NAME, config, DefaultType);
+ return config;
+ };
+
+ _proto._getScrollTop = function _getScrollTop() {
+ return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
+ };
+
+ _proto._getScrollHeight = function _getScrollHeight() {
+ return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
+ };
+
+ _proto._getOffsetHeight = function _getOffsetHeight() {
+ return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
+ };
+
+ _proto._process = function _process() {
+ var scrollTop = this._getScrollTop() + this._config.offset;
+
+ var scrollHeight = this._getScrollHeight();
+
+ var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
+
+ if (this._scrollHeight !== scrollHeight) {
+ this.refresh();
+ }
+
+ if (scrollTop >= maxScroll) {
+ var target = this._targets[this._targets.length - 1];
+
+ if (this._activeTarget !== target) {
+ this._activate(target);
+ }
+
+ return;
+ }
+
+ if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
+ this._activeTarget = null;
+
+ this._clear();
+
+ return;
+ }
+
+ for (var i = this._offsets.length; i--;) {
+ var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
+
+ if (isActiveTarget) {
+ this._activate(this._targets[i]);
+ }
+ }
+ };
+
+ _proto._activate = function _activate(target) {
+ this._activeTarget = target;
+
+ this._clear();
+
+ var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
+
+
+ queries = queries.map(function (selector) {
+ return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
+ });
+ var $link = $$$1(queries.join(','));
+
+ if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
+ $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
+ $link.addClass(ClassName.ACTIVE);
+ } else {
+ // Set triggered link as active
+ $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
+ // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
+
+ $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
+
+ $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
+ }
+
+ $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
+ relatedTarget: target
+ });
+ };
+
+ _proto._clear = function _clear() {
+ $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
+ }; // Static
+
+
+ ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' && config;
+
+ if (!data) {
+ data = new ScrollSpy(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(ScrollSpy, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }]);
+ return ScrollSpy;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(window).on(Event.LOAD_DATA_API, function () {
+ var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
+
+ for (var i = scrollSpys.length; i--;) {
+ var $spy = $$$1(scrollSpys[i]);
+
+ ScrollSpy._jQueryInterface.call($spy, $spy.data());
+ }
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
+ $$$1.fn[NAME].Constructor = ScrollSpy;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return ScrollSpy._jQueryInterface;
+ };
+
+ return ScrollSpy;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): tab.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Tab = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'tab';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.tab';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 150;
+ var Event = {
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ DROPDOWN_MENU: 'dropdown-menu',
+ ACTIVE: 'active',
+ DISABLED: 'disabled',
+ FADE: 'fade',
+ SHOW: 'show'
+ };
+ var Selector = {
+ DROPDOWN: '.dropdown',
+ NAV_LIST_GROUP: '.nav, .list-group',
+ ACTIVE: '.active',
+ ACTIVE_UL: '> li > .active',
+ DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
+ DROPDOWN_TOGGLE: '.dropdown-toggle',
+ DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Tab =
+ /*#__PURE__*/
+ function () {
+ function Tab(element) {
+ this._element = element;
+ } // Getters
+
+
+ var _proto = Tab.prototype;
+
+ // Public
+ _proto.show = function show() {
+ var _this = this;
+
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) {
+ return;
+ }
+
+ var target;
+ var previous;
+ var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0];
+ var selector = Util.getSelectorFromElement(this._element);
+
+ if (listElement) {
+ var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
+ previous = $$$1.makeArray($$$1(listElement).find(itemSelector));
+ previous = previous[previous.length - 1];
+ }
+
+ var hideEvent = $$$1.Event(Event.HIDE, {
+ relatedTarget: this._element
+ });
+ var showEvent = $$$1.Event(Event.SHOW, {
+ relatedTarget: previous
+ });
+
+ if (previous) {
+ $$$1(previous).trigger(hideEvent);
+ }
+
+ $$$1(this._element).trigger(showEvent);
+
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
+ return;
+ }
+
+ if (selector) {
+ target = $$$1(selector)[0];
+ }
+
+ this._activate(this._element, listElement);
+
+ var complete = function complete() {
+ var hiddenEvent = $$$1.Event(Event.HIDDEN, {
+ relatedTarget: _this._element
+ });
+ var shownEvent = $$$1.Event(Event.SHOWN, {
+ relatedTarget: previous
+ });
+ $$$1(previous).trigger(hiddenEvent);
+ $$$1(_this._element).trigger(shownEvent);
+ };
+
+ if (target) {
+ this._activate(target, target.parentNode, complete);
+ } else {
+ complete();
+ }
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ this._element = null;
+ }; // Private
+
+
+ _proto._activate = function _activate(element, container, callback) {
+ var _this2 = this;
+
+ var activeElements;
+
+ if (container.nodeName === 'UL') {
+ activeElements = $$$1(container).find(Selector.ACTIVE_UL);
+ } else {
+ activeElements = $$$1(container).children(Selector.ACTIVE);
+ }
+
+ var active = activeElements[0];
+ var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE);
+
+ var complete = function complete() {
+ return _this2._transitionComplete(element, active, callback);
+ };
+
+ if (active && isTransitioning) {
+ $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ complete();
+ }
+ };
+
+ _proto._transitionComplete = function _transitionComplete(element, active, callback) {
+ if (active) {
+ $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
+ var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
+
+ if (dropdownChild) {
+ $$$1(dropdownChild).removeClass(ClassName.ACTIVE);
+ }
+
+ if (active.getAttribute('role') === 'tab') {
+ active.setAttribute('aria-selected', false);
+ }
+ }
+
+ $$$1(element).addClass(ClassName.ACTIVE);
+
+ if (element.getAttribute('role') === 'tab') {
+ element.setAttribute('aria-selected', true);
+ }
+
+ Util.reflow(element);
+ $$$1(element).addClass(ClassName.SHOW);
+
+ if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
+ var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
+
+ if (dropdownElement) {
+ $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
+ }
+
+ element.setAttribute('aria-expanded', true);
+ }
+
+ if (callback) {
+ callback();
+ }
+ }; // Static
+
+
+ Tab._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var $this = $$$1(this);
+ var data = $this.data(DATA_KEY);
+
+ if (!data) {
+ data = new Tab(this);
+ $this.data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(Tab, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }]);
+ return Tab;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ event.preventDefault();
+
+ Tab._jQueryInterface.call($$$1(this), 'show');
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Tab._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Tab;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Tab._jQueryInterface;
+ };
+
+ return Tab;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0-alpha.6): index.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+(function ($$$1) {
+ if (typeof $$$1 === 'undefined') {
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
+ }
+
+ var version = $$$1.fn.jquery.split(' ')[0].split('.');
+ var minMajor = 1;
+ var ltMajor = 2;
+ var minMinor = 9;
+ var minPatch = 1;
+ var maxMajor = 4;
+
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
+ }
+})($);
+
+exports.Util = Util;
+exports.Alert = Alert;
+exports.Button = Button;
+exports.Carousel = Carousel;
+exports.Collapse = Collapse;
+exports.Dropdown = Dropdown;
+exports.Modal = Modal;
+exports.Popover = Popover;
+exports.Scrollspy = ScrollSpy;
+exports.Tab = Tab;
+exports.Tooltip = Tooltip;
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=bootstrap.bundle.js.map
diff --git a/library/bootstrap/js/bootstrap.bundle.js.map b/library/bootstrap/js/bootstrap.bundle.js.map
new file mode 100644
index 000000000..b185c0460
--- /dev/null
+++ b/library/bootstrap/js/bootstrap.bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap.bundle.js","sources":["../../rollupPluginBabelHelpers","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"sourcesContent":["export { _createClass as createClass, _extends as extends, _inheritsLoose as inheritsLoose };\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let transition = false\n\n const MAX_UID = 1000000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n }\n\n function transitionEndTest() {\n if (typeof window !== 'undefined' && window.QUnit) {\n return false\n }\n\n return {\n end: 'transitionend'\n }\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest()\n\n $.fn.emulateTransitionEnd = transitionEndEmulator\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n }\n\n function escapeId(selector) {\n // We escape IDs in case of special selectors (selector = '#myId:something')\n // $.escapeSelector does not exist in jQuery < 3\n selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1)\n : selector.replace(/(:|\\.|\\[|\\]|,|=|@)/g, '\\\\$1')\n\n return selector\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n // If it's an ID\n if (selector.charAt(0) === '#') {\n selector = escapeId(selector)\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? selector : null\n } catch (err) {\n return null\n }\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(transition.end)\n },\n\n supportsTransitionEnd() {\n return Boolean(transition)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n }\n }\n\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n element = element || this._element\n\n const rootElement = this._getRootElement(element)\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!Util.supportsTransitionEnd() ||\n !$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n Util.supportsTransitionEnd()) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $(this._indicatorsElement)\n .find(Selector.ACTIVE)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n $(Selector.DATA_RIDE).each(function () {\n const $carousel = $(this)\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\n )\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(selector)\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n $(selector).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.12.9\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n // NOTE: 1 DOM access here\n var offsetParent = element && element.offsetParent;\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement;\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\n/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nvar isIE10 = undefined;\n\nvar isIE10$1 = function () {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n};\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE10$1() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10$1()) {\n try {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var isIE10 = isIE10$1();\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = getScroll(html);\n var scrollLeft = getScroll(html, 'left');\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n // NOTE: 1 DOM access here\n var boundaries = { top: 0, left: 0 };\n var offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var styles = getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length - 1; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n // floor sides to avoid blurry text\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n }\n\n const Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'\n }\n\n const AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n }\n\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n }\n let element = this._element\n // For dropup with alignment we use the parent as popper container\n if ($(parent).hasClass(ClassName.DROPUP)) {\n if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {\n element = parent\n }\n }\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(element, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n this._menu = $(parent).find(Selector.MENU)[0]\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element).parent()\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n for (let i = 0; i < toggles.length; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Dropdown._jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 300\n const BACKDROP_TRANSITION_DURATION = 150\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top',\n NAVBAR_TOGGLER : '.navbar-toggler'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._originalBodyPadding = 0\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isTransitioning || this._isShown) {\n return\n }\n\n if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (this._isTransitioning || !this._isShown) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n\n const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n if (transition) {\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n const doAnimate = Util.supportsTransitionEnd() && animate\n\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n $(this._backdrop).addClass(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (doAnimate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!doAnimate) {\n callback()\n return\n }\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)) {\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const actualPadding = $(element)[0].style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(Selector.STICKY_CONTENT).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust navbar-toggler margin\n $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $('body').css('padding-right')\n $('body').data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const padding = $(element).data('padding-right')\n if (typeof padding !== 'undefined') {\n $(element).css('padding-right', padding).removeData('padding-right')\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $('body').data('padding-right')\n if (typeof padding !== 'undefined') {\n $('body').css('padding-right', padding).removeData('padding-right')\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Modal.Default,\n ...$(this).data(),\n ...typeof config === 'object' && config\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = $(selector)[0]\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const isInTheDom = $.contains(\n this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this.config.container === false ? document.body : $(this.config.container)\n\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => {\n this._handlePopperPlacementChange(data)\n }\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(Tooltip._TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if (Util.supportsTransitionEnd() &&\n $(this.tip).hasClass(ClassName.FADE)) {\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : 'text'](content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\n ...config\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(data) {\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(data.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tooltip._jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Popover._jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $(queries.join(','))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n for (let i = scrollSpys.length; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = $(selector)[0]\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n let activeElements\n if (container.nodeName === 'UL') {\n activeElements = $(container).find(Selector.ACTIVE_UL)\n } else {\n activeElements = $(container).children(Selector.ACTIVE)\n }\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n Util.supportsTransitionEnd() &&\n (active && $(active).hasClass(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n $(element).addClass(ClassName.SHOW)\n\n if (element.parentNode &&\n $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n if (dropdownElement) {\n $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})($)\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"],"names":["Util","$","transition","MAX_UID","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","end","event","target","is","handleObj","handler","apply","arguments","undefined","transitionEndTest","window","QUnit","transitionEndEmulator","duration","called","one","TRANSITION_END","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","supportsTransitionEnd","special","escapeId","selector","escapeSelector","substr","replace","prefix","Math","random","document","getElementById","element","getAttribute","charAt","$selector","find","length","err","offsetHeight","trigger","Boolean","nodeType","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","isElement","RegExp","test","Error","toUpperCase","Alert","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","TRANSITION_DURATION","Selector","Event","ClassName","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","getSelectorFromElement","parent","closest","ALERT","closeEvent","CLOSE","removeClass","SHOW","hasClass","FADE","_destroyElement","detach","CLOSED","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","CLICK_DATA_API","DISMISS","Constructor","noConflict","Button","toggle","triggerChangeEvent","addAriaPressed","DATA_TOGGLE","input","INPUT","type","checked","ACTIVE","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","DATA_TOGGLE_CARROT","button","BUTTON","FOCUS_BLUR_DATA_API","FOCUS","Carousel","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","Default","DefaultType","Direction","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","INDICATORS","_addEventListeners","next","_slide","NEXT","nextWhenVisible","hidden","css","prev","PREV","pause","NEXT_PREV","cycle","interval","setInterval","visibilityState","bind","to","index","ACTIVE_ITEM","activeIndex","_getItemIndex","SLID","direction","off","typeCheckConfig","keyboard","KEYDOWN","_keydown","MOUSEENTER","MOUSELEAVE","documentElement","TOUCHEND","setTimeout","tagName","which","makeArray","ITEM","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","wrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","SLIDE","_setActiveIndicatorElement","nextIndicator","children","addClass","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","LEFT","RIGHT","slidEvent","reflow","action","slide","TypeError","_dataApiClickHandler","CAROUSEL","slideIndex","DATA_SLIDE","LOAD_DATA_API","DATA_RIDE","$carousel","Collapse","Dimension","_isTransitioning","_triggerArray","id","tabToggles","i","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","ACTIVES","not","startEvent","dimension","_getDimension","COLLAPSE","COLLAPSING","style","COLLAPSED","attr","setTransitioning","complete","SHOWN","capitalizedDimension","slice","scrollSize","HIDE","getBoundingClientRect","$elem","HIDDEN","isTransitioning","hasWidth","WIDTH","HEIGHT","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","_extends","Dropdown","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","AttachmentMap","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","DISABLED","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","DROPUP","MENULEFT","MENURIGHT","boundary","POSITION_STATIC","_getPopperConfig","NAVBAR_NAV","noop","destroy","update","scheduleUpdate","CLICK","stopPropagation","constructor","MENU","_getPlacement","$parentDropdown","placement","BOTTOM","TOP","TOPEND","DROPRIGHT","DROPLEFT","BOTTOMEND","offsetConf","offset","offsets","popperConfig","flip","toggles","context","dropdownMenu","hideEvent","parentNode","_dataApiKeydownHandler","items","VISIBLE_ITEMS","get","KEYDOWN_DATA_API","KEYUP_DATA_API","FORM_CHILD","e","Modal","BACKDROP_TRANSITION_DURATION","_dialog","DIALOG","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_originalBodyPadding","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","body","OPEN","_setEscapeEvent","_setResizeEvent","CLICK_DISMISS","DATA_DISMISS","MOUSEDOWN_DISMISS","MOUSEUP_DISMISS","_showBackdrop","_showElement","FOCUSIN","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","display","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","has","KEYDOWN_DISMISS","RESIZE","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","animate","backdrop","doAnimate","createElement","className","BACKDROP","appendTo","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","FIXED_CONTENT","actualPadding","calculatedPadding","parseFloat","STICKY_CONTENT","actualMargin","marginRight","calculatedMargin","NAVBAR_TOGGLER","padding","margin","scrollDiv","SCROLLBAR_MEASURER","scrollbarWidth","width","clientWidth","removeChild","Tooltip","CLASS_PREFIX","BSCLS_PREFIX_REGEX","HoverState","Trigger","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","getUID","setContent","animation","attachment","_getAttachment","addAttachmentClass","container","INSERTED","fallbackPlacement","ARROW","originalPlacement","_handlePopperPlacementChange","_fixTransition","prevHoverState","OUT","_TRANSITION_DURATION","_cleanTipClass","HOVER","getTitle","template","$tip","setElementContent","TOOLTIP_INNER","content","html","empty","append","text","title","triggers","split","forEach","MANUAL","eventIn","eventOut","FOCUSOUT","_fixTitle","titleType","delay","key","tabClass","join","initConfigAnimation","Popover","_getContent","TITLE","CONTENT","ScrollSpy","OffsetMethod","_scrollElement","NAV_LINKS","LIST_ITEMS","DROPDOWN_ITEMS","_offsets","_targets","_activeTarget","_scrollHeight","SCROLL","_process","refresh","autoMethod","OFFSET","POSITION","offsetMethod","method","offsetBase","_getScrollTop","_getScrollHeight","targets","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","$link","DROPDOWN_ITEM","DROPDOWN","DROPDOWN_TOGGLE","parents","NAV_LIST_GROUP","NAV_ITEMS","ACTIVATE","scrollSpys","DATA_SPY","$spy","Tab","previous","listElement","itemSelector","nodeName","ACTIVE_UL","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","DROPDOWN_ACTIVE_CHILD","DROPDOWN_MENU","dropdownElement","version","minMajor","ltMajor","minMinor","minPatch","maxMajor"],"mappings":";;;;;;;;;;;;;AAEA,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;EACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;IACvD,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;IAC/B,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;GAC3D;CACF;;AAED,SAAS,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;EAC1D,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;EACrE,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EAC7D,OAAO,WAAW,CAAC;CACpB;;AAED,SAAS,QAAQ,GAAG;EAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACzC,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;MAE1B,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;UACrD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3B;OACF;KACF;;IAED,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACxC;;AAED,SAAS,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;EAC5C,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACzD,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;EAC1C,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC;;;CACjC,DCtCD;;;;;;;AAOA,IAAMA,OAAQ,UAACC,IAAD,EAAO;;;;;;MAOfC,aAAa,KAAjB;MAEMC,UAAU,OAAhB,CATmB;;WAYVC,MAAT,CAAgBC,GAAhB,EAAqB;WACZ,GAAGC,QAAH,CAAYC,IAAZ,CAAiBF,GAAjB,EAAsBG,KAAtB,CAA4B,eAA5B,EAA6C,CAA7C,EAAgDC,WAAhD,EAAP;;;WAGOC,4BAAT,GAAwC;WAC/B;gBACKR,WAAWS,GADhB;oBAEST,WAAWS,GAFpB;YAAA,kBAGEC,KAHF,EAGS;YACRX,KAAEW,MAAMC,MAAR,EAAgBC,EAAhB,CAAmB,IAAnB,CAAJ,EAA8B;iBACrBF,MAAMG,SAAN,CAAgBC,OAAhB,CAAwBC,KAAxB,CAA8B,IAA9B,EAAoCC,SAApC,CAAP,CAD4B;;;eAGvBC,SAAP,CAJY;;KAHhB;;;WAYOC,iBAAT,GAA6B;QACvB,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,OAAOC,KAA5C,EAAmD;aAC1C,KAAP;;;WAGK;WACA;KADP;;;WAKOC,qBAAT,CAA+BC,QAA/B,EAAyC;;;QACnCC,SAAS,KAAb;SAEE,IAAF,EAAQC,GAAR,CAAY1B,KAAK2B,cAAjB,EAAiC,YAAM;eAC5B,IAAT;KADF;eAIW,YAAM;UACX,CAACF,MAAL,EAAa;aACNG,oBAAL;;KAFJ,EAIGJ,QAJH;WAMO,IAAP;;;WAGOK,uBAAT,GAAmC;iBACpBT,mBAAb;SAEEU,EAAF,CAAKC,oBAAL,GAA4BR,qBAA5B;;QAEIvB,KAAKgC,qBAAL,EAAJ,EAAkC;WAC9BpB,KAAF,CAAQqB,OAAR,CAAgBjC,KAAK2B,cAArB,IAAuCjB,8BAAvC;;;;WAIKwB,QAAT,CAAkBC,QAAlB,EAA4B;;;eAGf,OAAOlC,KAAEmC,cAAT,KAA4B,UAA5B,GAAyCnC,KAAEmC,cAAF,CAAiBD,QAAjB,EAA2BE,MAA3B,CAAkC,CAAlC,CAAzC,GACPF,SAASG,OAAT,CAAiB,qBAAjB,EAAwC,MAAxC,CADJ;WAGOH,QAAP;;;;;;;;;MASInC,OAAO;oBAEK,iBAFL;UAAA,kBAIJuC,MAJI,EAII;SACV;;kBAES,CAAC,EAAEC,KAAKC,MAAL,KAAgBtC,OAAlB,CAAX,CAFC;OAAH,QAGSuC,SAASC,cAAT,CAAwBJ,MAAxB,CAHT;;aAIOA,MAAP;KATS;0BAAA,kCAYYK,OAZZ,EAYqB;UAC1BT,WAAWS,QAAQC,YAAR,CAAqB,aAArB,CAAf;;UACI,CAACV,QAAD,IAAaA,aAAa,GAA9B,EAAmC;mBACtBS,QAAQC,YAAR,CAAqB,MAArB,KAAgC,EAA3C;OAH4B;;;UAO1BV,SAASW,MAAT,CAAgB,CAAhB,MAAuB,GAA3B,EAAgC;mBACnBZ,SAASC,QAAT,CAAX;;;UAGE;YACIY,YAAY9C,KAAEyC,QAAF,EAAYM,IAAZ,CAAiBb,QAAjB,CAAlB;eACOY,UAAUE,MAAV,GAAmB,CAAnB,GAAuBd,QAAvB,GAAkC,IAAzC;OAFF,CAGE,OAAOe,GAAP,EAAY;eACL,IAAP;;KA3BO;UAAA,kBA+BJN,OA/BI,EA+BK;aACPA,QAAQO,YAAf;KAhCS;wBAAA,gCAmCUP,OAnCV,EAmCmB;WAC1BA,OAAF,EAAWQ,OAAX,CAAmBlD,WAAWS,GAA9B;KApCS;yBAAA,mCAuCa;aACf0C,QAAQnD,UAAR,CAAP;KAxCS;aAAA,qBA2CDG,GA3CC,EA2CI;aACN,CAACA,IAAI,CAAJ,KAAUA,GAAX,EAAgBiD,QAAvB;KA5CS;mBAAA,2BA+CKC,aA/CL,EA+CoBC,MA/CpB,EA+C4BC,WA/C5B,EA+CyC;WAC7C,IAAMC,QAAX,IAAuBD,WAAvB,EAAoC;YAC9BE,OAAOC,SAAP,CAAiBC,cAAjB,CAAgCtD,IAAhC,CAAqCkD,WAArC,EAAkDC,QAAlD,CAAJ,EAAiE;cACzDI,gBAAgBL,YAAYC,QAAZ,CAAtB;cACMK,QAAgBP,OAAOE,QAAP,CAAtB;cACMM,YAAgBD,SAAS/D,KAAKiE,SAAL,CAAeF,KAAf,CAAT,GAClB,SADkB,GACN3D,OAAO2D,KAAP,CADhB;;cAGI,CAAC,IAAIG,MAAJ,CAAWJ,aAAX,EAA0BK,IAA1B,CAA+BH,SAA/B,CAAL,EAAgD;kBACxC,IAAII,KAAJ,CACDb,cAAcc,WAAd,EAAH,yBACWX,QADX,2BACuCM,SADvC,sCAEsBF,aAFtB,SADI,CAAN;;;;;GAxDV;;SAoEO9D,IAAP;CApJW,CAqJVC,CArJU,CAAb;;ACNA;;;;;;;AAOA,IAAMqE,QAAS,UAACrE,IAAD,EAAO;;;;;;MAOdsE,OAAsB,OAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,UAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MAEMC,WAAW;aACL;GADZ;MAIMC,QAAQ;qBACaL,SADb;uBAEcA,SAFd;8BAGaA,SAAzB,GAAqCC;GAHvC;MAMMK,YAAY;WACR,OADQ;UAER,MAFQ;UAGR;;;;;;;GAHV;;MAYMV,KArCc;;;mBAsCN1B,OAAZ,EAAqB;WACdqC,QAAL,GAAgBrC,OAAhB;KAvCgB;;;;;;WAkDlBsC,KAlDkB,kBAkDZtC,OAlDY,EAkDH;gBACHA,WAAW,KAAKqC,QAA1B;;UAEME,cAAc,KAAKC,eAAL,CAAqBxC,OAArB,CAApB;;UACMyC,cAAc,KAAKC,kBAAL,CAAwBH,WAAxB,CAApB;;UAEIE,YAAYE,kBAAZ,EAAJ,EAAsC;;;;WAIjCC,cAAL,CAAoBL,WAApB;KA5DgB;;WA+DlBM,OA/DkB,sBA+DR;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACKQ,QAAL,GAAgB,IAAhB;KAjEgB;;;WAsElBG,eAtEkB,4BAsEFxC,OAtEE,EAsEO;UACjBT,WAAWnC,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAjB;UACIgD,SAAa,KAAjB;;UAEIzD,QAAJ,EAAc;iBACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;UAGE,CAACyD,MAAL,EAAa;iBACF3F,KAAE2C,OAAF,EAAWiD,OAAX,OAAuBb,UAAUc,KAAjC,EAA0C,CAA1C,CAAT;;;aAGKF,MAAP;KAlFgB;;WAqFlBN,kBArFkB,+BAqFC1C,OArFD,EAqFU;UACpBmD,aAAa9F,KAAE8E,KAAF,CAAQA,MAAMiB,KAAd,CAAnB;WAEEpD,OAAF,EAAWQ,OAAX,CAAmB2C,UAAnB;aACOA,UAAP;KAzFgB;;WA4FlBP,cA5FkB,2BA4FH5C,OA5FG,EA4FM;;;WACpBA,OAAF,EAAWqD,WAAX,CAAuBjB,UAAUkB,IAAjC;;UAEI,CAAClG,KAAKgC,qBAAL,EAAD,IACA,CAAC/B,KAAE2C,OAAF,EAAWuD,QAAX,CAAoBnB,UAAUoB,IAA9B,CADL,EAC0C;aACnCC,eAAL,CAAqBzD,OAArB;;;;;WAIAA,OAAF,EACGlB,GADH,CACO1B,KAAK2B,cADZ,EAC4B,UAACf,KAAD;eAAW,MAAKyF,eAAL,CAAqBzD,OAArB,EAA8BhC,KAA9B,CAAX;OAD5B,EAEGmB,oBAFH,CAEwB8C,mBAFxB;KArGgB;;WA0GlBwB,eA1GkB,4BA0GFzD,OA1GE,EA0GO;WACrBA,OAAF,EACG0D,MADH,GAEGlD,OAFH,CAEW2B,MAAMwB,MAFjB,EAGGC,MAHH;KA3GgB;;;UAmHXC,gBAnHW,6BAmHMjD,MAnHN,EAmHc;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACrBC,WAAW1G,KAAE,IAAF,CAAjB;YACI2G,OAAaD,SAASC,IAAT,CAAcnC,QAAd,CAAjB;;YAEI,CAACmC,IAAL,EAAW;iBACF,IAAItC,KAAJ,CAAU,IAAV,CAAP;mBACSsC,IAAT,CAAcnC,QAAd,EAAwBmC,IAAxB;;;YAGEpD,WAAW,OAAf,EAAwB;eACjBA,MAAL,EAAa,IAAb;;OAVG,CAAP;KApHgB;;UAmIXqD,cAnIW,2BAmIIC,aAnIJ,EAmImB;aAC5B,UAAUlG,KAAV,EAAiB;YAClBA,KAAJ,EAAW;gBACHmG,cAAN;;;sBAGY7B,KAAd,CAAoB,IAApB;OALF;KApIgB;;;;0BA4CG;eACZV,OAAP;;;;;;;;;;;;OAuGF9B,QAAF,EAAYsE,EAAZ,CACEjC,MAAMkC,cADR,EAEEnC,SAASoC,OAFX,EAGE5C,MAAMuC,cAAN,CAAqB,IAAIvC,KAAJ,EAArB,CAHF;;;;;;;OAYExC,EAAF,CAAKyC,IAAL,IAAyBD,MAAMmC,gBAA/B;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyB7C,KAAzB;;OACExC,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAyB,YAAY;SACjCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACON,MAAMmC,gBAAb;GAFF;;SAKOnC,KAAP;CAvKY,CAwKXrE,CAxKW,CAAd;;ACRA;;;;;;;AAOA,IAAMoH,SAAU,UAACpH,IAAD,EAAO;;;;;;MAOfsE,OAAsB,QAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,WAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MAEMS,YAAY;YACP,QADO;YAEP,KAFO;WAGP;GAHX;MAMMF,WAAW;wBACM,yBADN;iBAEM,yBAFN;WAGM,OAHN;YAIM,SAJN;YAKM;GALvB;MAQMC,QAAQ;8BACkBL,SAA9B,GAA0CC,YAD9B;yBAEU,UAAQD,SAAR,GAAoBC,YAApB,mBACSD,SADT,GACqBC,YADrB;;;;;;;GAFxB;;MAYM0C,MAxCe;;;oBAyCPzE,OAAZ,EAAqB;WACdqC,QAAL,GAAgBrC,OAAhB;KA1CiB;;;;;;WAqDnB0E,MArDmB,qBAqDV;UACHC,qBAAqB,IAAzB;UACIC,iBAAiB,IAArB;UACMrC,cAAclF,KAAE,KAAKgF,QAAP,EAAiBY,OAAjB,CAClBf,SAAS2C,WADS,EAElB,CAFkB,CAApB;;UAIItC,WAAJ,EAAiB;YACTuC,QAAQzH,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAAS6C,KAA/B,EAAsC,CAAtC,CAAd;;YAEID,KAAJ,EAAW;cACLA,MAAME,IAAN,KAAe,OAAnB,EAA4B;gBACtBF,MAAMG,OAAN,IACF5H,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CADF,EAC+C;mCACxB,KAArB;aAFF,MAGO;kBACCC,gBAAgB9H,KAAEkF,WAAF,EAAenC,IAAf,CAAoB8B,SAASgD,MAA7B,EAAqC,CAArC,CAAtB;;kBAEIC,aAAJ,EAAmB;qBACfA,aAAF,EAAiB9B,WAAjB,CAA6BjB,UAAU8C,MAAvC;;;;;cAKFP,kBAAJ,EAAwB;gBAClBG,MAAMM,YAAN,CAAmB,UAAnB,KACF7C,YAAY6C,YAAZ,CAAyB,UAAzB,CADE,IAEFN,MAAMO,SAAN,CAAgBC,QAAhB,CAAyB,UAAzB,CAFE,IAGF/C,YAAY8C,SAAZ,CAAsBC,QAAtB,CAA+B,UAA/B,CAHF,EAG8C;;;;kBAGxCL,OAAN,GAAgB,CAAC5H,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CAAjB;iBACEJ,KAAF,EAAStE,OAAT,CAAiB,QAAjB;;;gBAGI+E,KAAN;2BACiB,KAAjB;;;;UAIAX,cAAJ,EAAoB;aACbvC,QAAL,CAAcmD,YAAd,CAA2B,cAA3B,EACE,CAACnI,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CADH;;;UAIEP,kBAAJ,EAAwB;aACpB,KAAKtC,QAAP,EAAiBoD,WAAjB,CAA6BrD,UAAU8C,MAAvC;;KAnGe;;WAuGnBrC,OAvGmB,sBAuGT;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACKQ,QAAL,GAAgB,IAAhB;KAzGiB;;;WA8GZwB,gBA9GY,6BA8GKjD,MA9GL,EA8Ga;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YAEI,CAACmC,IAAL,EAAW;iBACF,IAAIS,MAAJ,CAAW,IAAX,CAAP;eACE,IAAF,EAAQT,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGEpD,WAAW,QAAf,EAAyB;eAClBA,MAAL;;OATG,CAAP;KA/GiB;;;;0BA+CE;eACZgB,OAAP;;;;;;;;;;;;OAoFF9B,QAAF,EACGsE,EADH,CACMjC,MAAMkC,cADZ,EAC4BnC,SAASwD,kBADrC,EACyD,UAAC1H,KAAD,EAAW;UAC1DmG,cAAN;QAEIwB,SAAS3H,MAAMC,MAAnB;;QAEI,CAACZ,KAAEsI,MAAF,EAAUpC,QAAV,CAAmBnB,UAAUwD,MAA7B,CAAL,EAA2C;eAChCvI,KAAEsI,MAAF,EAAU1C,OAAV,CAAkBf,SAAS0D,MAA3B,CAAT;;;WAGK/B,gBAAP,CAAwBlG,IAAxB,CAA6BN,KAAEsI,MAAF,CAA7B,EAAwC,QAAxC;GAVJ,EAYGvB,EAZH,CAYMjC,MAAM0D,mBAZZ,EAYiC3D,SAASwD,kBAZ1C,EAY8D,UAAC1H,KAAD,EAAW;QAC/D2H,SAAStI,KAAEW,MAAMC,MAAR,EAAgBgF,OAAhB,CAAwBf,SAAS0D,MAAjC,EAAyC,CAAzC,CAAf;SACED,MAAF,EAAUF,WAAV,CAAsBrD,UAAU0D,KAAhC,EAAuC,eAAevE,IAAf,CAAoBvD,MAAMgH,IAA1B,CAAvC;GAdJ;;;;;;;OAuBE9F,EAAF,CAAKyC,IAAL,IAAa8C,OAAOZ,gBAApB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBE,MAAzB;;OACEvF,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOyC,OAAOZ,gBAAd;GAFF;;SAKOY,MAAP;CAlKa,CAmKZpH,CAnKY,CAAf;;ACNA;;;;;;;AAOA,IAAM0I,WAAY,UAAC1I,IAAD,EAAO;;;;;;MAOjBsE,OAAyB,UAA/B;MACMC,UAAyB,OAA/B;MACMC,WAAyB,aAA/B;MACMC,kBAA6BD,QAAnC;MACME,eAAyB,WAA/B;MACMC,qBAAyB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA/B;MACMM,sBAAyB,GAA/B;MACM+D,qBAAyB,EAA/B,CAduB;;MAejBC,sBAAyB,EAA/B,CAfuB;;MAgBjBC,yBAAyB,GAA/B,CAhBuB;;MAkBjBC,UAAU;cACH,IADG;cAEH,IAFG;WAGH,KAHG;WAIH,OAJG;UAKH;GALb;MAQMC,cAAc;cACP,kBADO;cAEP,SAFO;WAGP,kBAHO;WAIP,kBAJO;UAKP;GALb;MAQMC,YAAY;UACL,MADK;UAEL,MAFK;UAGL,MAHK;WAIL;GAJb;MAOMlE,QAAQ;qBACaL,SADb;mBAEYA,SAFZ;yBAGeA,SAHf;+BAIkBA,SAJlB;+BAKkBA,SALlB;2BAMgBA,SANhB;4BAOYA,SAAxB,GAAoCC,YAPxB;8BAQaD,SAAzB,GAAqCC;GARvC;MAWMK,YAAY;cACL,UADK;YAEL,QAFK;WAGL,OAHK;WAIL,qBAJK;UAKL,oBALK;UAML,oBANK;UAOL,oBAPK;UAQL;GARb;MAWMF,WAAW;YACD,SADC;iBAED,uBAFC;UAGD,gBAHC;eAID,0CAJC;gBAKD,sBALC;gBAMD,+BANC;eAOD;;;;;;;GAPhB;;MAgBM6D,QA/EiB;;;sBAgFT/F,OAAZ,EAAqBY,MAArB,EAA6B;WACtB0F,MAAL,GAA0B,IAA1B;WACKC,SAAL,GAA0B,IAA1B;WACKC,cAAL,GAA0B,IAA1B;WAEKC,SAAL,GAA0B,KAA1B;WACKC,UAAL,GAA0B,KAA1B;WAEKC,YAAL,GAA0B,IAA1B;WAEKC,OAAL,GAA0B,KAAKC,UAAL,CAAgBjG,MAAhB,CAA1B;WACKyB,QAAL,GAA0BhF,KAAE2C,OAAF,EAAW,CAAX,CAA1B;WACK8G,kBAAL,GAA0BzJ,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAAS6E,UAA/B,EAA2C,CAA3C,CAA1B;;WAEKC,kBAAL;KA9FmB;;;;;;WA6GrBC,IA7GqB,mBA6Gd;UACD,CAAC,KAAKP,UAAV,EAAsB;aACfQ,MAAL,CAAYb,UAAUc,IAAtB;;KA/GiB;;WAmHrBC,eAnHqB,8BAmHH;;;UAGZ,CAACtH,SAASuH,MAAV,IACDhK,KAAE,KAAKgF,QAAP,EAAiBnE,EAAjB,CAAoB,UAApB,KAAmCb,KAAE,KAAKgF,QAAP,EAAiBiF,GAAjB,CAAqB,YAArB,MAAuC,QAD7E,EACwF;aACjFL,IAAL;;KAxHiB;;WA4HrBM,IA5HqB,mBA4Hd;UACD,CAAC,KAAKb,UAAV,EAAsB;aACfQ,MAAL,CAAYb,UAAUmB,IAAtB;;KA9HiB;;WAkIrBC,KAlIqB,kBAkIfzJ,KAlIe,EAkIR;UACP,CAACA,KAAL,EAAY;aACLyI,SAAL,GAAiB,IAAjB;;;UAGEpJ,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASwF,SAA/B,EAA0C,CAA1C,KACFtK,KAAKgC,qBAAL,EADF,EACgC;aACzBJ,oBAAL,CAA0B,KAAKqD,QAA/B;aACKsF,KAAL,CAAW,IAAX;;;oBAGY,KAAKpB,SAAnB;WACKA,SAAL,GAAiB,IAAjB;KA9ImB;;WAiJrBoB,KAjJqB,kBAiJf3J,KAjJe,EAiJR;UACP,CAACA,KAAL,EAAY;aACLyI,SAAL,GAAiB,KAAjB;;;UAGE,KAAKF,SAAT,EAAoB;sBACJ,KAAKA,SAAnB;aACKA,SAAL,GAAiB,IAAjB;;;UAGE,KAAKK,OAAL,CAAagB,QAAb,IAAyB,CAAC,KAAKnB,SAAnC,EAA8C;aACvCF,SAAL,GAAiBsB,YACf,CAAC/H,SAASgI,eAAT,GAA2B,KAAKV,eAAhC,GAAkD,KAAKH,IAAxD,EAA8Dc,IAA9D,CAAmE,IAAnE,CADe,EAEf,KAAKnB,OAAL,CAAagB,QAFE,CAAjB;;KA5JiB;;WAmKrBI,EAnKqB,eAmKlBC,KAnKkB,EAmKX;;;WACHzB,cAAL,GAAsBnJ,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASgG,WAA/B,EAA4C,CAA5C,CAAtB;;UAEMC,cAAc,KAAKC,aAAL,CAAmB,KAAK5B,cAAxB,CAApB;;UAEIyB,QAAQ,KAAK3B,MAAL,CAAYjG,MAAZ,GAAqB,CAA7B,IAAkC4H,QAAQ,CAA9C,EAAiD;;;;UAI7C,KAAKvB,UAAT,EAAqB;aACjB,KAAKrE,QAAP,EAAiBvD,GAAjB,CAAqBqD,MAAMkG,IAA3B,EAAiC;iBAAM,MAAKL,EAAL,CAAQC,KAAR,CAAN;SAAjC;;;;UAIEE,gBAAgBF,KAApB,EAA2B;aACpBR,KAAL;aACKE,KAAL;;;;UAIIW,YAAYL,QAAQE,WAAR,GACd9B,UAAUc,IADI,GAEdd,UAAUmB,IAFd;;WAIKN,MAAL,CAAYoB,SAAZ,EAAuB,KAAKhC,MAAL,CAAY2B,KAAZ,CAAvB;KA3LmB;;WA8LrBpF,OA9LqB,sBA8LX;WACN,KAAKR,QAAP,EAAiBkG,GAAjB,CAAqBzG,SAArB;WACEgB,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WAEKyE,MAAL,GAA0B,IAA1B;WACKM,OAAL,GAA0B,IAA1B;WACKvE,QAAL,GAA0B,IAA1B;WACKkE,SAAL,GAA0B,IAA1B;WACKE,SAAL,GAA0B,IAA1B;WACKC,UAAL,GAA0B,IAA1B;WACKF,cAAL,GAA0B,IAA1B;WACKM,kBAAL,GAA0B,IAA1B;KAzMmB;;;WA8MrBD,UA9MqB,uBA8MVjG,MA9MU,EA8MF;4BAEZuF,OADL,EAEKvF,MAFL;WAIK4H,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aACOxF,MAAP;KApNmB;;WAuNrBoG,kBAvNqB,iCAuNA;;;UACf,KAAKJ,OAAL,CAAa6B,QAAjB,EAA2B;aACvB,KAAKpG,QAAP,EACG+B,EADH,CACMjC,MAAMuG,OADZ,EACqB,UAAC1K,KAAD;iBAAW,OAAK2K,QAAL,CAAc3K,KAAd,CAAX;SADrB;;;UAIE,KAAK4I,OAAL,CAAaa,KAAb,KAAuB,OAA3B,EAAoC;aAChC,KAAKpF,QAAP,EACG+B,EADH,CACMjC,MAAMyG,UADZ,EACwB,UAAC5K,KAAD;iBAAW,OAAKyJ,KAAL,CAAWzJ,KAAX,CAAX;SADxB,EAEGoG,EAFH,CAEMjC,MAAM0G,UAFZ,EAEwB,UAAC7K,KAAD;iBAAW,OAAK2J,KAAL,CAAW3J,KAAX,CAAX;SAFxB;;YAGI,kBAAkB8B,SAASgJ,eAA/B,EAAgD;;;;;;;;eAQ5C,KAAKzG,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM4G,QAA1B,EAAoC,YAAM;mBACnCtB,KAAL;;gBACI,OAAKd,YAAT,EAAuB;2BACR,OAAKA,YAAlB;;;mBAEGA,YAAL,GAAoBqC,WAAW,UAAChL,KAAD;qBAAW,OAAK2J,KAAL,CAAW3J,KAAX,CAAX;aAAX,EAAyCkI,yBAAyB,OAAKU,OAAL,CAAagB,QAA/E,CAApB;WALF;;;KAzOe;;WAoPrBe,QApPqB,qBAoPZ3K,KApPY,EAoPL;UACV,kBAAkBuD,IAAlB,CAAuBvD,MAAMC,MAAN,CAAagL,OAApC,CAAJ,EAAkD;;;;cAI1CjL,MAAMkL,KAAd;aACOlD,kBAAL;gBACQ7B,cAAN;eACKoD,IAAL;;;aAEGtB,mBAAL;gBACQ9B,cAAN;eACK8C,IAAL;;;;;KAhQe;;WAsQrBmB,aAtQqB,0BAsQPpI,OAtQO,EAsQE;WAChBsG,MAAL,GAAcjJ,KAAE8L,SAAF,CAAY9L,KAAE2C,OAAF,EAAWgD,MAAX,GAAoB5C,IAApB,CAAyB8B,SAASkH,IAAlC,CAAZ,CAAd;aACO,KAAK9C,MAAL,CAAY+C,OAAZ,CAAoBrJ,OAApB,CAAP;KAxQmB;;WA2QrBsJ,mBA3QqB,gCA2QDhB,SA3QC,EA2QUnD,aA3QV,EA2QyB;UACtCoE,kBAAkBjB,cAAcjC,UAAUc,IAAhD;UACMqC,kBAAkBlB,cAAcjC,UAAUmB,IAAhD;;UACMW,cAAkB,KAAKC,aAAL,CAAmBjD,aAAnB,CAAxB;;UACMsE,gBAAkB,KAAKnD,MAAL,CAAYjG,MAAZ,GAAqB,CAA7C;UACMqJ,gBAAkBF,mBAAmBrB,gBAAgB,CAAnC,IACAoB,mBAAmBpB,gBAAgBsB,aAD3D;;UAGIC,iBAAiB,CAAC,KAAK9C,OAAL,CAAa+C,IAAnC,EAAyC;eAChCxE,aAAP;;;UAGIyE,QAAYtB,cAAcjC,UAAUmB,IAAxB,GAA+B,CAAC,CAAhC,GAAoC,CAAtD;UACMqC,YAAY,CAAC1B,cAAcyB,KAAf,IAAwB,KAAKtD,MAAL,CAAYjG,MAAtD;aAEOwJ,cAAc,CAAC,CAAf,GACH,KAAKvD,MAAL,CAAY,KAAKA,MAAL,CAAYjG,MAAZ,GAAqB,CAAjC,CADG,GACmC,KAAKiG,MAAL,CAAYuD,SAAZ,CAD1C;KA1RmB;;WA8RrBC,kBA9RqB,+BA8RFC,aA9RE,EA8RaC,kBA9Rb,EA8RiC;UAC9CC,cAAc,KAAK7B,aAAL,CAAmB2B,aAAnB,CAApB;;UACMG,YAAY,KAAK9B,aAAL,CAAmB/K,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASgG,WAA/B,EAA4C,CAA5C,CAAnB,CAAlB;;UACMiC,aAAa9M,KAAE8E,KAAF,CAAQA,MAAMiI,KAAd,EAAqB;oCAAA;mBAE3BJ,kBAF2B;cAGhCE,SAHgC;YAIlCD;OAJa,CAAnB;WAOE,KAAK5H,QAAP,EAAiB7B,OAAjB,CAAyB2J,UAAzB;aAEOA,UAAP;KA1SmB;;WA6SrBE,0BA7SqB,uCA6SMrK,OA7SN,EA6Se;UAC9B,KAAK8G,kBAAT,EAA6B;aACzB,KAAKA,kBAAP,EACG1G,IADH,CACQ8B,SAASgD,MADjB,EAEG7B,WAFH,CAEejB,UAAU8C,MAFzB;;YAIMoF,gBAAgB,KAAKxD,kBAAL,CAAwByD,QAAxB,CACpB,KAAKnC,aAAL,CAAmBpI,OAAnB,CADoB,CAAtB;;YAIIsK,aAAJ,EAAmB;eACfA,aAAF,EAAiBE,QAAjB,CAA0BpI,UAAU8C,MAApC;;;KAxTe;;WA6TrBgC,MA7TqB,mBA6TdoB,SA7Tc,EA6THtI,OA7TG,EA6TM;;;UACnBmF,gBAAgB9H,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASgG,WAA/B,EAA4C,CAA5C,CAAtB;;UACMuC,qBAAqB,KAAKrC,aAAL,CAAmBjD,aAAnB,CAA3B;;UACMuF,cAAgB1K,WAAWmF,iBAC/B,KAAKmE,mBAAL,CAAyBhB,SAAzB,EAAoCnD,aAApC,CADF;;UAEMwF,mBAAmB,KAAKvC,aAAL,CAAmBsC,WAAnB,CAAzB;;UACME,YAAYnK,QAAQ,KAAK8F,SAAb,CAAlB;UAEIsE,oBAAJ;UACIC,cAAJ;UACId,kBAAJ;;UAEI1B,cAAcjC,UAAUc,IAA5B,EAAkC;+BACT/E,UAAU2I,IAAjC;yBACiB3I,UAAU+E,IAA3B;6BACqBd,UAAU0E,IAA/B;OAHF,MAIO;+BACkB3I,UAAU4I,KAAjC;yBACiB5I,UAAUoF,IAA3B;6BACqBnB,UAAU2E,KAA/B;;;UAGEN,eAAerN,KAAEqN,WAAF,EAAenH,QAAf,CAAwBnB,UAAU8C,MAAlC,CAAnB,EAA8D;aACvDwB,UAAL,GAAkB,KAAlB;;;;UAIIyD,aAAa,KAAKL,kBAAL,CAAwBY,WAAxB,EAAqCV,kBAArC,CAAnB;;UACIG,WAAWxH,kBAAX,EAAJ,EAAqC;;;;UAIjC,CAACwC,aAAD,IAAkB,CAACuF,WAAvB,EAAoC;;;;;WAK/BhE,UAAL,GAAkB,IAAlB;;UAEIkE,SAAJ,EAAe;aACRnD,KAAL;;;WAGG4C,0BAAL,CAAgCK,WAAhC;;UAEMO,YAAY5N,KAAE8E,KAAF,CAAQA,MAAMkG,IAAd,EAAoB;uBACrBqC,WADqB;mBAEzBV,kBAFyB;cAG9BS,kBAH8B;YAIhCE;OAJY,CAAlB;;UAOIvN,KAAKgC,qBAAL,MACF/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUgI,KAApC,CADF,EAC8C;aAC1CM,WAAF,EAAeF,QAAf,CAAwBM,cAAxB;aAEKI,MAAL,CAAYR,WAAZ;aAEEvF,aAAF,EAAiBqF,QAAjB,CAA0BK,oBAA1B;aACEH,WAAF,EAAeF,QAAf,CAAwBK,oBAAxB;aAEE1F,aAAF,EACGrG,GADH,CACO1B,KAAK2B,cADZ,EAC4B,YAAM;eAC5B2L,WAAF,EACGrH,WADH,CACkBwH,oBADlB,SAC0CC,cAD1C,EAEGN,QAFH,CAEYpI,UAAU8C,MAFtB;eAIEC,aAAF,EAAiB9B,WAAjB,CAAgCjB,UAAU8C,MAA1C,SAAoD4F,cAApD,SAAsED,oBAAtE;iBAEKnE,UAAL,GAAkB,KAAlB;qBAEW;mBAAMrJ,KAAE,OAAKgF,QAAP,EAAiB7B,OAAjB,CAAyByK,SAAzB,CAAN;WAAX,EAAsD,CAAtD;SAVJ,EAYG9L,oBAZH,CAYwB8C,mBAZxB;OATF,MAsBO;aACHkD,aAAF,EAAiB9B,WAAjB,CAA6BjB,UAAU8C,MAAvC;aACEwF,WAAF,EAAeF,QAAf,CAAwBpI,UAAU8C,MAAlC;aAEKwB,UAAL,GAAkB,KAAlB;aACE,KAAKrE,QAAP,EAAiB7B,OAAjB,CAAyByK,SAAzB;;;UAGEL,SAAJ,EAAe;aACRjD,KAAL;;KAhZiB;;;aAsZd9D,gBAtZc,6BAsZGjD,MAtZH,EAsZW;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACI+E,uBACCT,OADD,EAEC9I,KAAE,IAAF,EAAQ2G,IAAR,EAFD,CAAJ;;YAKI,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;iCAEzBgG,OADL,EAEKhG,MAFL;;;YAMIuK,SAAS,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCgG,QAAQwE,KAA7D;;YAEI,CAACpH,IAAL,EAAW;iBACF,IAAI+B,QAAJ,CAAa,IAAb,EAAmBa,OAAnB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;eACzBoH,EAAL,CAAQpH,MAAR;SADF,MAEO,IAAI,OAAOuK,MAAP,KAAkB,QAAtB,EAAgC;cACjC,OAAOnH,KAAKmH,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIE,SAAJ,wBAAkCF,MAAlC,QAAN;;;eAEGA,MAAL;SAJK,MAKA,IAAIvE,QAAQgB,QAAZ,EAAsB;eACtBH,KAAL;eACKE,KAAL;;OA9BG,CAAP;KAvZmB;;aA0bd2D,oBA1bc,iCA0bOtN,KA1bP,EA0bc;UAC3BuB,WAAWnC,KAAK2F,sBAAL,CAA4B,IAA5B,CAAjB;;UAEI,CAACxD,QAAL,EAAe;;;;UAITtB,SAASZ,KAAEkC,QAAF,EAAY,CAAZ,CAAf;;UAEI,CAACtB,MAAD,IAAW,CAACZ,KAAEY,MAAF,EAAUsF,QAAV,CAAmBnB,UAAUmJ,QAA7B,CAAhB,EAAwD;;;;UAIlD3K,sBACDvD,KAAEY,MAAF,EAAU+F,IAAV,EADC,EAED3G,KAAE,IAAF,EAAQ2G,IAAR,EAFC,CAAN;UAIMwH,aAAa,KAAKvL,YAAL,CAAkB,eAAlB,CAAnB;;UAEIuL,UAAJ,EAAgB;eACP5D,QAAP,GAAkB,KAAlB;;;eAGO/D,gBAAT,CAA0BlG,IAA1B,CAA+BN,KAAEY,MAAF,CAA/B,EAA0C2C,MAA1C;;UAEI4K,UAAJ,EAAgB;aACZvN,MAAF,EAAU+F,IAAV,CAAenC,QAAf,EAAyBmG,EAAzB,CAA4BwD,UAA5B;;;YAGIrH,cAAN;KAvdmB;;;;0BAmGA;eACZvC,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OAyXFrG,QAAF,EACGsE,EADH,CACMjC,MAAMkC,cADZ,EAC4BnC,SAASuJ,UADrC,EACiD1F,SAASuF,oBAD1D;OAGE7M,MAAF,EAAU2F,EAAV,CAAajC,MAAMuJ,aAAnB,EAAkC,YAAM;SACpCxJ,SAASyJ,SAAX,EAAsB7H,IAAtB,CAA2B,YAAY;UAC/B8H,YAAYvO,KAAE,IAAF,CAAlB;;eACSwG,gBAAT,CAA0BlG,IAA1B,CAA+BiO,SAA/B,EAA0CA,UAAU5H,IAAV,EAA1C;KAFF;GADF;;;;;;;OAaE9E,EAAF,CAAKyC,IAAL,IAAaoE,SAASlC,gBAAtB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBwB,QAAzB;;OACE7G,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO+D,SAASlC,gBAAhB;GAFF;;SAKOkC,QAAP;CAxfe,CAyfd1I,CAzfc,CAAjB;;ACPA;;;;;;;AAOA,IAAMwO,WAAY,UAACxO,IAAD,EAAO;;;;;;MAOjBsE,OAAsB,UAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,aAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MAEMkE,UAAU;YACL,IADK;YAEL;GAFX;MAKMC,cAAc;YACT,SADS;YAET;GAFX;MAKMjE,QAAQ;mBACYL,SADZ;qBAEaA,SAFb;mBAGYA,SAHZ;uBAIcA,SAJd;8BAKaA,SAAzB,GAAqCC;GALvC;MAQMK,YAAY;UACH,MADG;cAEH,UAFG;gBAGH,YAHG;eAIH;GAJf;MAOM0J,YAAY;WACP,OADO;YAEP;GAFX;MAKM5J,WAAW;aACD,oBADC;iBAED;;;;;;;GAFhB;;MAWM2J,QAxDiB;;;sBAyDT7L,OAAZ,EAAqBY,MAArB,EAA6B;WACtBmL,gBAAL,GAAwB,KAAxB;WACK1J,QAAL,GAAwBrC,OAAxB;WACK4G,OAAL,GAAwB,KAAKC,UAAL,CAAgBjG,MAAhB,CAAxB;WACKoL,aAAL,GAAwB3O,KAAE8L,SAAF,CAAY9L,KAClC,wCAAmC2C,QAAQiM,EAA3C,4DAC0CjM,QAAQiM,EADlD,SADkC,CAAZ,CAAxB;UAIMC,aAAa7O,KAAE6E,SAAS2C,WAAX,CAAnB;;WACK,IAAIsH,IAAI,CAAb,EAAgBA,IAAID,WAAW7L,MAA/B,EAAuC8L,GAAvC,EAA4C;YACpCC,OAAOF,WAAWC,CAAX,CAAb;YACM5M,WAAWnC,KAAK2F,sBAAL,CAA4BqJ,IAA5B,CAAjB;;YACI7M,aAAa,IAAb,IAAqBlC,KAAEkC,QAAF,EAAY8M,MAAZ,CAAmBrM,OAAnB,EAA4BK,MAA5B,GAAqC,CAA9D,EAAiE;eAC1DiM,SAAL,GAAiB/M,QAAjB;;eACKyM,aAAL,CAAmBO,IAAnB,CAAwBH,IAAxB;;;;WAICI,OAAL,GAAe,KAAK5F,OAAL,CAAa5D,MAAb,GAAsB,KAAKyJ,UAAL,EAAtB,GAA0C,IAAzD;;UAEI,CAAC,KAAK7F,OAAL,CAAa5D,MAAlB,EAA0B;aACnB0J,yBAAL,CAA+B,KAAKrK,QAApC,EAA8C,KAAK2J,aAAnD;;;UAGE,KAAKpF,OAAL,CAAalC,MAAjB,EAAyB;aAClBA,MAAL;;KAlFiB;;;;;;WAkGrBA,MAlGqB,qBAkGZ;UACHrH,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUkB,IAApC,CAAJ,EAA+C;aACxCqJ,IAAL;OADF,MAEO;aACAC,IAAL;;KAtGiB;;WA0GrBA,IA1GqB,mBA0Gd;;;UACD,KAAKb,gBAAL,IACF1O,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUkB,IAApC,CADF,EAC6C;;;;UAIzCuJ,OAAJ;UACIC,WAAJ;;UAEI,KAAKN,OAAT,EAAkB;kBACNnP,KAAE8L,SAAF,CACR9L,KAAE,KAAKmP,OAAP,EACGpM,IADH,CACQ8B,SAAS6K,OADjB,EAEGV,MAFH,qBAE2B,KAAKzF,OAAL,CAAa5D,MAFxC,SADQ,CAAV;;YAKI6J,QAAQxM,MAAR,KAAmB,CAAvB,EAA0B;oBACd,IAAV;;;;UAIAwM,OAAJ,EAAa;sBACGxP,KAAEwP,OAAF,EAAWG,GAAX,CAAe,KAAKV,SAApB,EAA+BtI,IAA/B,CAAoCnC,QAApC,CAAd;;YACIiL,eAAeA,YAAYf,gBAA/B,EAAiD;;;;;UAK7CkB,aAAa5P,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,CAAnB;WACE,KAAKjB,QAAP,EAAiB7B,OAAjB,CAAyByM,UAAzB;;UACIA,WAAWtK,kBAAX,EAAJ,EAAqC;;;;UAIjCkK,OAAJ,EAAa;iBACFhJ,gBAAT,CAA0BlG,IAA1B,CAA+BN,KAAEwP,OAAF,EAAWG,GAAX,CAAe,KAAKV,SAApB,CAA/B,EAA+D,MAA/D;;YACI,CAACQ,WAAL,EAAkB;eACdD,OAAF,EAAW7I,IAAX,CAAgBnC,QAAhB,EAA0B,IAA1B;;;;UAIEqL,YAAY,KAAKC,aAAL,EAAlB;;WAEE,KAAK9K,QAAP,EACGgB,WADH,CACejB,UAAUgL,QADzB,EAEG5C,QAFH,CAEYpI,UAAUiL,UAFtB;WAIKhL,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAiC,CAAjC;;UAEI,KAAKlB,aAAL,CAAmB3L,MAAnB,GAA4B,CAAhC,EAAmC;aAC/B,KAAK2L,aAAP,EACG3I,WADH,CACejB,UAAUmL,SADzB,EAEGC,IAFH,CAEQ,eAFR,EAEyB,IAFzB;;;WAKGC,gBAAL,CAAsB,IAAtB;;UAEMC,WAAW,SAAXA,QAAW,GAAM;aACnB,MAAKrL,QAAP,EACGgB,WADH,CACejB,UAAUiL,UADzB,EAEG7C,QAFH,CAEYpI,UAAUgL,QAFtB,EAGG5C,QAHH,CAGYpI,UAAUkB,IAHtB;cAKKjB,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAiC,EAAjC;;cAEKO,gBAAL,CAAsB,KAAtB;;aAEE,MAAKpL,QAAP,EAAiB7B,OAAjB,CAAyB2B,MAAMwL,KAA/B;OAVF;;UAaI,CAACvQ,KAAKgC,qBAAL,EAAL,EAAmC;;;;;UAK7BwO,uBAAuBV,UAAU,CAAV,EAAazL,WAAb,KAA6ByL,UAAUW,KAAV,CAAgB,CAAhB,CAA1D;UACMC,wBAAsBF,oBAA5B;WAEE,KAAKvL,QAAP,EACGvD,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;WAIKI,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAoC,KAAK7K,QAAL,CAAcyL,UAAd,CAApC;KA3LmB;;WA8LrBnB,IA9LqB,mBA8Ld;;;UACD,KAAKZ,gBAAL,IACF,CAAC1O,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUkB,IAApC,CADH,EAC8C;;;;UAIxC2J,aAAa5P,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,CAAnB;WACE,KAAK1L,QAAP,EAAiB7B,OAAjB,CAAyByM,UAAzB;;UACIA,WAAWtK,kBAAX,EAAJ,EAAqC;;;;UAI/BuK,YAAY,KAAKC,aAAL,EAAlB;;WAEK9K,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAoC,KAAK7K,QAAL,CAAc2L,qBAAd,GAAsCd,SAAtC,CAApC;WAEKhC,MAAL,CAAY,KAAK7I,QAAjB;WAEE,KAAKA,QAAP,EACGmI,QADH,CACYpI,UAAUiL,UADtB,EAEGhK,WAFH,CAEejB,UAAUgL,QAFzB,EAGG/J,WAHH,CAGejB,UAAUkB,IAHzB;;UAKI,KAAK0I,aAAL,CAAmB3L,MAAnB,GAA4B,CAAhC,EAAmC;aAC5B,IAAI8L,IAAI,CAAb,EAAgBA,IAAI,KAAKH,aAAL,CAAmB3L,MAAvC,EAA+C8L,GAA/C,EAAoD;cAC5C3L,UAAU,KAAKwL,aAAL,CAAmBG,CAAnB,CAAhB;cACM5M,WAAWnC,KAAK2F,sBAAL,CAA4BvC,OAA5B,CAAjB;;cACIjB,aAAa,IAAjB,EAAuB;gBACf0O,QAAQ5Q,KAAEkC,QAAF,CAAd;;gBACI,CAAC0O,MAAM1K,QAAN,CAAenB,UAAUkB,IAAzB,CAAL,EAAqC;mBACjC9C,OAAF,EAAWgK,QAAX,CAAoBpI,UAAUmL,SAA9B,EACGC,IADH,CACQ,eADR,EACyB,KADzB;;;;;;WAOHC,gBAAL,CAAsB,IAAtB;;UAEMC,WAAW,SAAXA,QAAW,GAAM;eAChBD,gBAAL,CAAsB,KAAtB;;aACE,OAAKpL,QAAP,EACGgB,WADH,CACejB,UAAUiL,UADzB,EAEG7C,QAFH,CAEYpI,UAAUgL,QAFtB,EAGG5M,OAHH,CAGW2B,MAAM+L,MAHjB;OAFF;;WAQK7L,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAiC,EAAjC;;UAEI,CAAC9P,KAAKgC,qBAAL,EAAL,EAAmC;;;;;WAKjC,KAAKiD,QAAP,EACGvD,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;KApPmB;;WAyPrBwL,gBAzPqB,6BAyPJU,eAzPI,EAyPa;WAC3BpC,gBAAL,GAAwBoC,eAAxB;KA1PmB;;WA6PrBtL,OA7PqB,sBA6PX;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WAEK+E,OAAL,GAAwB,IAAxB;WACK4F,OAAL,GAAwB,IAAxB;WACKnK,QAAL,GAAwB,IAAxB;WACK2J,aAAL,GAAwB,IAAxB;WACKD,gBAAL,GAAwB,IAAxB;KApQmB;;;WAyQrBlF,UAzQqB,uBAyQVjG,MAzQU,EAyQF;4BAEZuF,OADL,EAEKvF,MAFL;aAIO8D,MAAP,GAAgBjE,QAAQG,OAAO8D,MAAf,CAAhB,CALiB;;WAMZ8D,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aACOxF,MAAP;KAhRmB;;WAmRrBuM,aAnRqB,4BAmRL;UACRiB,WAAW/Q,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BuI,UAAUuC,KAApC,CAAjB;aACOD,WAAWtC,UAAUuC,KAArB,GAA6BvC,UAAUwC,MAA9C;KArRmB;;WAwRrB7B,UAxRqB,yBAwRR;;;UACPzJ,SAAS,IAAb;;UACI5F,KAAKiE,SAAL,CAAe,KAAKuF,OAAL,CAAa5D,MAA5B,CAAJ,EAAyC;iBAC9B,KAAK4D,OAAL,CAAa5D,MAAtB,CADuC;;YAInC,OAAO,KAAK4D,OAAL,CAAa5D,MAAb,CAAoBuL,MAA3B,KAAsC,WAA1C,EAAuD;mBAC5C,KAAK3H,OAAL,CAAa5D,MAAb,CAAoB,CAApB,CAAT;;OALJ,MAOO;iBACI3F,KAAE,KAAKuJ,OAAL,CAAa5D,MAAf,EAAuB,CAAvB,CAAT;;;UAGIzD,yDACqC,KAAKqH,OAAL,CAAa5D,MADlD,QAAN;WAGEA,MAAF,EAAU5C,IAAV,CAAeb,QAAf,EAAyBuE,IAAzB,CAA8B,UAACqI,CAAD,EAAInM,OAAJ,EAAgB;eACvC0M,yBAAL,CACEb,SAAS2C,qBAAT,CAA+BxO,OAA/B,CADF,EAEE,CAACA,OAAD,CAFF;OADF;aAOOgD,MAAP;KA/SmB;;WAkTrB0J,yBAlTqB,sCAkTK1M,OAlTL,EAkTcyO,YAlTd,EAkT4B;UAC3CzO,OAAJ,EAAa;YACL0O,SAASrR,KAAE2C,OAAF,EAAWuD,QAAX,CAAoBnB,UAAUkB,IAA9B,CAAf;;YAEImL,aAAapO,MAAb,GAAsB,CAA1B,EAA6B;eACzBoO,YAAF,EACGhJ,WADH,CACerD,UAAUmL,SADzB,EACoC,CAACmB,MADrC,EAEGlB,IAFH,CAEQ,eAFR,EAEyBkB,MAFzB;;;KAvTe;;;aAgUdF,qBAhUc,kCAgUQxO,OAhUR,EAgUiB;UAC9BT,WAAWnC,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAjB;aACOT,WAAWlC,KAAEkC,QAAF,EAAY,CAAZ,CAAX,GAA4B,IAAnC;KAlUmB;;aAqUdsE,gBArUc,6BAqUGjD,MArUH,EAqUW;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACrB6K,QAAUtR,KAAE,IAAF,CAAhB;YACI2G,OAAY2K,MAAM3K,IAAN,CAAWnC,QAAX,CAAhB;;YACM+E,uBACDT,OADC,EAEDwI,MAAM3K,IAAN,EAFC,EAGD,OAAOpD,MAAP,KAAkB,QAAlB,IAA8BA,MAH7B,CAAN;;YAMI,CAACoD,IAAD,IAAS4C,QAAQlC,MAAjB,IAA2B,YAAYnD,IAAZ,CAAiBX,MAAjB,CAA/B,EAAyD;kBAC/C8D,MAAR,GAAiB,KAAjB;;;YAGE,CAACV,IAAL,EAAW;iBACF,IAAI6H,QAAJ,CAAa,IAAb,EAAmBjF,OAAnB,CAAP;gBACM5C,IAAN,CAAWnC,QAAX,EAAqBmC,IAArB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAtBG,CAAP;KAtUmB;;;;0BAwFA;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OA2QFrG,QAAF,EAAYsE,EAAZ,CAAejC,MAAMkC,cAArB,EAAqCnC,SAAS2C,WAA9C,EAA2D,UAAU7G,KAAV,EAAiB;;QAEtEA,MAAM4Q,aAAN,CAAoB3F,OAApB,KAAgC,GAApC,EAAyC;YACjC9E,cAAN;;;QAGI0K,WAAWxR,KAAE,IAAF,CAAjB;QACMkC,WAAWnC,KAAK2F,sBAAL,CAA4B,IAA5B,CAAjB;SACExD,QAAF,EAAYuE,IAAZ,CAAiB,YAAY;UACrBgL,UAAUzR,KAAE,IAAF,CAAhB;UACM2G,OAAU8K,QAAQ9K,IAAR,CAAanC,QAAb,CAAhB;UACMjB,SAAUoD,OAAO,QAAP,GAAkB6K,SAAS7K,IAAT,EAAlC;;eACSH,gBAAT,CAA0BlG,IAA1B,CAA+BmR,OAA/B,EAAwClO,MAAxC;KAJF;GARF;;;;;;;OAsBE1B,EAAF,CAAKyC,IAAL,IAAakK,SAAShI,gBAAtB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBsH,QAAzB;;OACE3M,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO6J,SAAShI,gBAAhB;GAFF;;SAKOgI,QAAP;CArYe,CAsYdxO,CAtYc,CAAjB;;ACVA;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAI,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACjF,IAAI,qBAAqB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3D,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EACxD,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC3E,eAAe,GAAG,CAAC,CAAC;IACpB,MAAM;GACP;CACF;;AAED,SAAS,iBAAiB,CAAC,EAAE,EAAE;EAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;EACnB,OAAO,YAAY;IACjB,IAAI,MAAM,EAAE;MACV,OAAO;KACR;IACD,MAAM,GAAG,IAAI,CAAC;IACd,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY;MACxC,MAAM,GAAG,KAAK,CAAC;MACf,EAAE,EAAE,CAAC;KACN,CAAC,CAAC;GACJ,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,EAAE,EAAE;EACxB,IAAI,SAAS,GAAG,KAAK,CAAC;EACtB,OAAO,YAAY;IACjB,IAAI,CAAC,SAAS,EAAE;MACd,SAAS,GAAG,IAAI,CAAC;MACjB,UAAU,CAAC,YAAY;QACrB,SAAS,GAAG,KAAK,CAAC;QAClB,EAAE,EAAE,CAAC;OACN,EAAE,eAAe,CAAC,CAAC;KACrB;GACF,CAAC;CACH;;AAED,IAAI,kBAAkB,GAAG,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;AAWrD,IAAI,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,YAAY,CAAC;;;;;;;;;AASrE,SAAS,UAAU,CAAC,eAAe,EAAE;EACnC,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,OAAO,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,mBAAmB,CAAC;CAC1F;;;;;;;;;AASD,SAAS,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE;EACnD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC1B,OAAO,EAAE,CAAC;GACX;;EAED,IAAI,GAAG,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EAC1C,OAAO,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;CACvC;;;;;;;;;AASD,SAAS,aAAa,CAAC,OAAO,EAAE;EAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;IAC/B,OAAO,OAAO,CAAC;GAChB;EACD,OAAO,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAC3C;;;;;;;;;AASD,SAAS,eAAe,CAAC,OAAO,EAAE;;EAEhC,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,QAAQ,CAAC,IAAI,CAAC;GACtB;;EAED,QAAQ,OAAO,CAAC,QAAQ;IACtB,KAAK,MAAM,CAAC;IACZ,KAAK,MAAM;MACT,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;IACpC,KAAK,WAAW;MACd,OAAO,OAAO,CAAC,IAAI,CAAC;GACvB;;;;EAID,IAAI,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC;MACzD,QAAQ,GAAG,qBAAqB,CAAC,QAAQ;MACzC,SAAS,GAAG,qBAAqB,CAAC,SAAS;MAC3C,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC;;EAEhD,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,EAAE;IAC1D,OAAO,OAAO,CAAC;GAChB;;EAED,OAAO,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;CAChD;;;;;;;;;AASD,SAAS,eAAe,CAAC,OAAO,EAAE;;EAEhC,IAAI,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;EACnD,IAAI,QAAQ,GAAG,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC;;EAErD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;IAC3D,IAAI,OAAO,EAAE;MACX,OAAO,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;KAC9C;;IAED,OAAO,QAAQ,CAAC,eAAe,CAAC;GACjC;;;;EAID,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,wBAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,QAAQ,EAAE;IAC5H,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;GACtC;;EAED,OAAO,YAAY,CAAC;CACrB;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE;EAClC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;;EAEhC,IAAI,QAAQ,KAAK,MAAM,EAAE;IACvB,OAAO,KAAK,CAAC;GACd;EACD,OAAO,QAAQ,KAAK,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC;CACtF;;;;;;;;;AASD,SAAS,OAAO,CAAC,IAAI,EAAE;EACrB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;GACjC;;EAED,OAAO,IAAI,CAAC;CACb;;;;;;;;;;AAUD,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE;;EAElD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACtE,OAAO,QAAQ,CAAC,eAAe,CAAC;GACjC;;;EAGD,IAAI,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAAC;EAC1F,IAAI,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;EACxC,IAAI,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;;;EAGtC,IAAI,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;EACnC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;EACzB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACrB,IAAI,uBAAuB,GAAG,KAAK,CAAC,uBAAuB,CAAC;;;;EAI5D,IAAI,QAAQ,KAAK,uBAAuB,IAAI,QAAQ,KAAK,uBAAuB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACvG,IAAI,iBAAiB,CAAC,uBAAuB,CAAC,EAAE;MAC9C,OAAO,uBAAuB,CAAC;KAChC;;IAED,OAAO,eAAe,CAAC,uBAAuB,CAAC,CAAC;GACjD;;;EAGD,IAAI,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;EACrC,IAAI,YAAY,CAAC,IAAI,EAAE;IACrB,OAAO,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;GAC5D,MAAM;IACL,OAAO,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;GACjE;CACF;;;;;;;;;;AAUD,SAAS,SAAS,CAAC,OAAO,EAAE;EAC1B,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;EAErF,IAAI,SAAS,GAAG,IAAI,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;EAC5D,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;;EAEhC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;IAC9C,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;IACjD,IAAI,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACtE,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;GACpC;;EAED,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3B;;;;;;;;;;;AAWD,SAAS,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE;EACpC,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;EAEzF,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EAC1C,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC5C,IAAI,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACjC,IAAI,CAAC,GAAG,IAAI,SAAS,GAAG,QAAQ,CAAC;EACjC,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC;EACpC,IAAI,CAAC,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;EACnC,IAAI,CAAC,KAAK,IAAI,UAAU,GAAG,QAAQ,CAAC;EACpC,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;AAYD,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;EACpC,IAAI,KAAK,GAAG,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC;EAC1C,IAAI,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;;EAElD,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;CAChH;;;;;;;;AAQD,IAAI,MAAM,GAAG,SAAS,CAAC;;AAEvB,IAAI,QAAQ,GAAG,YAAY;EACzB,IAAI,MAAM,KAAK,SAAS,EAAE;IACxB,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;GACzD;EACD,OAAO,MAAM,CAAC;CACf,CAAC;;AAEF,SAAS,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;EAChD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAClT;;AAED,SAAS,cAAc,GAAG;EACxB,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;EACpC,IAAI,aAAa,GAAG,QAAQ,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;;EAEzD,OAAO;IACL,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;IACpD,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;GACnD,CAAC;CACH;;AAED,IAAI,cAAc,GAAG,UAAU,QAAQ,EAAE,WAAW,EAAE;EACpD,IAAI,EAAE,QAAQ,YAAY,WAAW,CAAC,EAAE;IACtC,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;GAC1D;CACF,CAAC;;AAEF,IAAI,WAAW,GAAG,YAAY;EAC5B,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACrC,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;MAC1B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;MACvD,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;MAC/B,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;MACtD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAC3D;GACF;;EAED,OAAO,UAAU,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;IACrD,IAAI,UAAU,EAAE,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpE,IAAI,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5D,OAAO,WAAW,CAAC;GACpB,CAAC;CACH,EAAE,CAAC;;;;;;AAMJ,IAAI,cAAc,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;EAC9C,IAAI,GAAG,IAAI,GAAG,EAAE;IACd,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;MAC9B,KAAK,EAAE,KAAK;MACZ,UAAU,EAAE,IAAI;MAChB,YAAY,EAAE,IAAI;MAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;GACJ,MAAM;IACL,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;GAClB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,IAAI0R,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE;EAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzC,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;IAE1B,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;MACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;QACrD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;OAC3B;KACF;GACF;;EAED,OAAO,MAAM,CAAC;CACf,CAAC;;;;;;;;;AASF,SAAS,aAAa,CAAC,OAAO,EAAE;EAC9B,OAAOA,UAAQ,CAAC,EAAE,EAAE,OAAO,EAAE;IAC3B,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK;IACnC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM;GACrC,CAAC,CAAC;CACJ;;;;;;;;;AASD,SAAS,qBAAqB,CAAC,OAAO,EAAE;EACtC,IAAI,IAAI,GAAG,EAAE,CAAC;;;;;EAKd,IAAI,QAAQ,EAAE,EAAE;IACd,IAAI;MACF,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;MACvC,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;MAC1C,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;MAC5C,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;MACtB,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;MACxB,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;MACzB,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;KAC1B,CAAC,OAAO,GAAG,EAAE,EAAE;GACjB,MAAM;IACL,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;GACxC;;EAED,IAAI,MAAM,GAAG;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;IAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;GAC/B,CAAC;;;EAGF,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,MAAM,GAAG,cAAc,EAAE,GAAG,EAAE,CAAC;EAChE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;EAC7E,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;;EAEhF,IAAI,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;EACjD,IAAI,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;;;;EAIlD,IAAI,cAAc,IAAI,aAAa,EAAE;IACnC,IAAI,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC/C,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,aAAa,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;IAE7C,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC;IAC/B,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC;GAChC;;EAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9B;;AAED,SAAS,oCAAoC,CAAC,QAAQ,EAAE,MAAM,EAAE;EAC9D,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;EACxB,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC;EACxC,IAAI,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;EACnD,IAAI,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;EAC/C,IAAI,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;;EAE7C,IAAI,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;EAC9C,IAAI,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;EAC3D,IAAI,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;EAE7D,IAAI,OAAO,GAAG,aAAa,CAAC;IAC1B,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,cAAc;IACvD,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,eAAe;IAC3D,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,MAAM,EAAE,YAAY,CAAC,MAAM;GAC5B,CAAC,CAAC;EACH,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;EACtB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;;;;;;EAMvB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE;IACrB,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;IAEnD,OAAO,CAAC,GAAG,IAAI,cAAc,GAAG,SAAS,CAAC;IAC1C,OAAO,CAAC,MAAM,IAAI,cAAc,GAAG,SAAS,CAAC;IAC7C,OAAO,CAAC,IAAI,IAAI,eAAe,GAAG,UAAU,CAAC;IAC7C,OAAO,CAAC,KAAK,IAAI,eAAe,GAAG,UAAU,CAAC;;;IAG9C,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;GACjC;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM,KAAK,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM,EAAE;IACxG,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GAC1C;;EAED,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,6CAA6C,CAAC,OAAO,EAAE;EAC9D,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;EACjD,IAAI,cAAc,GAAG,oCAAoC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EACzE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;EAC/D,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;;EAElE,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAChC,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;EAEzC,IAAI,MAAM,GAAG;IACX,GAAG,EAAE,SAAS,GAAG,cAAc,CAAC,GAAG,GAAG,cAAc,CAAC,SAAS;IAC9D,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,UAAU;IAClE,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;GACf,CAAC;;EAEF,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9B;;;;;;;;;;AAUD,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;EAChC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;IAC9C,OAAO,KAAK,CAAC;GACd;EACD,IAAI,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,OAAO,EAAE;IAC7D,OAAO,IAAI,CAAC;GACb;EACD,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;CACxC;;;;;;;;;;;;AAYD,SAAS,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE;;EAEpE,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;EACrC,IAAI,YAAY,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;;EAG7D,IAAI,iBAAiB,KAAK,UAAU,EAAE;IACpC,UAAU,GAAG,6CAA6C,CAAC,YAAY,CAAC,CAAC;GAC1E,MAAM;;IAEL,IAAI,cAAc,GAAG,KAAK,CAAC,CAAC;IAC5B,IAAI,iBAAiB,KAAK,cAAc,EAAE;MACxC,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;MAC3D,IAAI,cAAc,CAAC,QAAQ,KAAK,MAAM,EAAE;QACtC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;OACvD;KACF,MAAM,IAAI,iBAAiB,KAAK,QAAQ,EAAE;MACzC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;KACvD,MAAM;MACL,cAAc,GAAG,iBAAiB,CAAC;KACpC;;IAED,IAAI,OAAO,GAAG,oCAAoC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;;;IAGjF,IAAI,cAAc,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;MAChE,IAAI,eAAe,GAAG,cAAc,EAAE;UAClC,MAAM,GAAG,eAAe,CAAC,MAAM;UAC/B,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;;MAElC,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;MAClD,UAAU,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;MACzC,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;MACrD,UAAU,CAAC,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;KACzC,MAAM;;MAEL,UAAU,GAAG,OAAO,CAAC;KACtB;GACF;;;EAGD,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC;EAC3B,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC;EAC1B,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC;EAC5B,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC;;EAE7B,OAAO,UAAU,CAAC;CACnB;;AAED,SAAS,OAAO,CAAC,IAAI,EAAE;EACrB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;MAClB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEzB,OAAO,KAAK,GAAG,MAAM,CAAC;CACvB;;;;;;;;;;;AAWD,SAAS,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE;EACtF,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;EAEpF,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;IACpC,OAAO,SAAS,CAAC;GAClB;;EAED,IAAI,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;;EAE9E,IAAI,KAAK,GAAG;IACV,GAAG,EAAE;MACH,KAAK,EAAE,UAAU,CAAC,KAAK;MACvB,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG;KACrC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;MACvC,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B;IACD,MAAM,EAAE;MACN,KAAK,EAAE,UAAU,CAAC,KAAK;MACvB,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;KAC3C;IACD,IAAI,EAAE;MACJ,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;MACrC,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B;GACF,CAAC;;EAEF,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE;IACtD,OAAOA,UAAQ,CAAC;MACd,GAAG,EAAE,GAAG;KACT,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;MACb,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC1B,CAAC,CAAC;GACJ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;IACtB,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;GACxB,CAAC,CAAC;;EAEH,IAAI,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE;IACtD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;QACnB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,OAAO,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;GACrE,CAAC,CAAC;;EAEH,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;;EAE7F,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;EAExC,OAAO,iBAAiB,IAAI,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;CAC/D;;;;;;;;;;;AAWD,SAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;EACrD,IAAI,kBAAkB,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;EACnE,OAAO,oCAAoC,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;CAC5E;;;;;;;;;AASD,SAAS,aAAa,CAAC,OAAO,EAAE;EAC9B,IAAI,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;EACvC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;EACvE,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;EACvE,IAAI,MAAM,GAAG;IACX,KAAK,EAAE,OAAO,CAAC,WAAW,GAAG,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC;GACjC,CAAC;EACF,OAAO,MAAM,CAAC;CACf;;;;;;;;;AASD,SAAS,oBAAoB,CAAC,SAAS,EAAE;EACvC,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;EAC1E,OAAO,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,UAAU,OAAO,EAAE;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;GACtB,CAAC,CAAC;CACJ;;;;;;;;;;;;AAYD,SAAS,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE;EAC7D,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;;EAGpC,IAAI,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;;;EAGvC,IAAI,aAAa,GAAG;IAClB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,MAAM;GAC1B,CAAC;;;EAGF,IAAI,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1D,IAAI,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;EACxC,IAAI,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;EAC7C,IAAI,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;EAC/C,IAAI,oBAAoB,GAAG,CAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;;EAEzD,aAAa,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACvH,IAAI,SAAS,KAAK,aAAa,EAAE;IAC/B,aAAa,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;GACnG,MAAM;IACL,aAAa,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;GACtF;;EAED,OAAO,aAAa,CAAC;CACtB;;;;;;;;;;;AAWD,SAAS,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;;EAExB,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;IACxB,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;GACxB;;;EAGD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7B;;;;;;;;;;;AAWD,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;;EAEnC,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE;IAC7B,OAAO,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE;MAClC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;KAC5B,CAAC,CAAC;GACJ;;;EAGD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;IACnC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;GAC5B,CAAC,CAAC;EACH,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC3B;;;;;;;;;;;;AAYD,SAAS,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;EAC3C,IAAI,cAAc,GAAG,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;;EAE7G,cAAc,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;IACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;;MAExB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;KACvE;IACD,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC;IAC7C,IAAI,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;;;;MAItC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;MACzD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;MAE/D,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC3B;GACF,CAAC,CAAC;;EAEH,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,MAAM,GAAG;;EAEhB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;IAC1B,OAAO;GACR;;EAED,IAAI,IAAI,GAAG;IACT,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;GACZ,CAAC;;;EAGF,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;;;;EAKtF,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;EAGvM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;;;EAGxC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;;;EAG1C,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;;;EAI1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;IACzB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;GAC7B,MAAM;IACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;GAC7B;CACF;;;;;;;;AAQD,SAAS,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE;EAClD,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;IACpC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;QAChB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,OAAO,OAAO,IAAI,IAAI,KAAK,YAAY,CAAC;GACzC,CAAC,CAAC;CACJ;;;;;;;;;AASD,SAAS,wBAAwB,CAAC,QAAQ,EAAE;EAC1C,IAAI,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;EACnD,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;EAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,OAAO,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1D,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE;MACvD,OAAO,OAAO,CAAC;KAChB;GACF;EACD,OAAO,IAAI,CAAC;CACb;;;;;;;AAOD,SAAS,OAAO,GAAG;EACjB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;;;EAG9B,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;IACnD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC;GAC/D;;EAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;;;;EAI7B,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;IAChC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;GACjD;EACD,OAAO,IAAI,CAAC;CACb;;;;;;;AAOD,SAAS,SAAS,CAAC,OAAO,EAAE;EAC1B,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;EAC1C,OAAO,aAAa,GAAG,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC;CAC3D;;AAED,SAAS,qBAAqB,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE;EAC3E,IAAI,MAAM,GAAG,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC;EAC9C,IAAI,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC;EAC5E,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;EAE5D,IAAI,CAAC,MAAM,EAAE;IACX,qBAAqB,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;GAC3F;EACD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5B;;;;;;;;AAQD,SAAS,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;;EAEnE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;EAChC,SAAS,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;EAGtF,IAAI,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;EAC/C,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;EACvF,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;EACpC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;;EAE3B,OAAO,KAAK,CAAC;CACd;;;;;;;;AAQD,SAAS,oBAAoB,GAAG;EAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;IAC7B,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;GACjG;CACF;;;;;;;;AAQD,SAAS,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE;;EAE9C,SAAS,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;;;EAGtE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE;IAC5C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;GACzD,CAAC,CAAC;;;EAGH,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;EACzB,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;EACzB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;EAC3B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;EAC5B,OAAO,KAAK,CAAC;CACd;;;;;;;;;AASD,SAAS,qBAAqB,GAAG;EAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;IAC5B,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;GAC/D;CACF;;;;;;;;;AASD,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;CACzD;;;;;;;;;;AAUD,SAAS,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE;EAClC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAC1C,IAAI,IAAI,GAAG,EAAE,CAAC;;IAEd,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;MACzG,IAAI,GAAG,IAAI,CAAC;KACb;IACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;GAC3C,CAAC,CAAC;CACJ;;;;;;;;;;AAUD,SAAS,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE;EAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAC9C,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,KAAK,EAAE;MACnB,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9C,MAAM;MACL,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KAC/B;GACF,CAAC,CAAC;CACJ;;;;;;;;;;;AAWD,SAAS,UAAU,CAAC,IAAI,EAAE;;;;;EAKxB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;;;;EAI7C,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;;EAGrD,IAAI,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;IAC7D,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;GAChD;;EAED,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;AAYD,SAAS,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE;;EAE5E,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;;;;;EAKrE,IAAI,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;EAEvK,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;;;;EAI9C,SAAS,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;;EAE5C,OAAO,OAAO,CAAC;CAChB;;;;;;;;;AASD,SAAS,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;EACnC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;MACb,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;EAClB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;;;EAIjC,IAAI,2BAA2B,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,QAAQ,EAAE;IAClF,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC;GACvC,CAAC,CAAC,eAAe,CAAC;EACnB,IAAI,2BAA2B,KAAK,SAAS,EAAE;IAC7C,OAAO,CAAC,IAAI,CAAC,+HAA+H,CAAC,CAAC;GAC/I;EACD,IAAI,eAAe,GAAG,2BAA2B,KAAK,SAAS,GAAG,2BAA2B,GAAG,OAAO,CAAC,eAAe,CAAC;;EAExH,IAAI,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACzD,IAAI,gBAAgB,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;;;EAG3D,IAAI,MAAM,GAAG;IACX,QAAQ,EAAE,MAAM,CAAC,QAAQ;GAC1B,CAAC;;;EAGF,IAAI,OAAO,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;GAChC,CAAC;;EAEF,IAAI,KAAK,GAAG,CAAC,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;EAC9C,IAAI,KAAK,GAAG,CAAC,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;;;;;EAK7C,IAAI,gBAAgB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;;;;;;;;;;;EAW7D,IAAI,IAAI,GAAG,KAAK,CAAC;MACb,GAAG,GAAG,KAAK,CAAC,CAAC;EACjB,IAAI,KAAK,KAAK,QAAQ,EAAE;IACtB,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;GACjD,MAAM;IACL,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;GACnB;EACD,IAAI,KAAK,KAAK,OAAO,EAAE;IACrB,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;GAChD,MAAM;IACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;GACrB;EACD,IAAI,eAAe,IAAI,gBAAgB,EAAE;IACvC,MAAM,CAAC,gBAAgB,CAAC,GAAG,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC;GACjC,MAAM;;IAEL,IAAI,SAAS,GAAG,KAAK,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,UAAU,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC;IAClC,MAAM,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;GAC1C;;;EAGD,IAAI,UAAU,GAAG;IACf,aAAa,EAAE,IAAI,CAAC,SAAS;GAC9B,CAAC;;;EAGF,IAAI,CAAC,UAAU,GAAGA,UAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC5D,IAAI,CAAC,MAAM,GAAGA,UAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAChD,IAAI,CAAC,WAAW,GAAGA,UAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;;EAEtE,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;AAYD,SAAS,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE;EACpE,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE;IAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,OAAO,IAAI,KAAK,cAAc,CAAC;GAChC,CAAC,CAAC;;EAEH,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,QAAQ,EAAE;IAClE,OAAO,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;GACjG,CAAC,CAAC;;EAEH,IAAI,CAAC,UAAU,EAAE;IACf,IAAI,WAAW,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,CAAC;IAC7C,IAAI,SAAS,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,2BAA2B,GAAG,WAAW,GAAG,2DAA2D,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;GACvJ;EACD,OAAO,UAAU,CAAC;CACnB;;;;;;;;;AASD,SAAS,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;EAC5B,IAAI,mBAAmB,CAAC;;;EAGxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE;IACzE,OAAO,IAAI,CAAC;GACb;;EAED,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;;;EAGnC,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;IACpC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;;;IAGhE,IAAI,CAAC,YAAY,EAAE;MACjB,OAAO,IAAI,CAAC;KACb;GACF,MAAM;;;IAGL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;MAChD,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;MAC9E,OAAO,IAAI,CAAC;KACb;GACF;;EAED,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO;MAC5B,MAAM,GAAG,aAAa,CAAC,MAAM;MAC7B,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;;EAExC,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;;EAE7D,IAAI,GAAG,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;EAC1C,IAAI,eAAe,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;EAClD,IAAI,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;EACzC,IAAI,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;EAC1C,IAAI,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;EAC7C,IAAI,gBAAgB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;;;;;;;;EAQxD,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC;GACpF;;EAED,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;GAClF;EACD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;;EAGzD,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;;;;EAIzE,IAAI,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACzD,IAAI,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;EACvE,IAAI,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;EACjF,IAAI,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;;;EAGzF,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;EAE7E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACjC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,mBAAmB,GAAG,EAAE,EAAE,cAAc,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;;EAEzL,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,oBAAoB,CAAC,SAAS,EAAE;EACvC,IAAI,SAAS,KAAK,KAAK,EAAE;IACvB,OAAO,OAAO,CAAC;GAChB,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE;IAChC,OAAO,KAAK,CAAC;GACd;EACD,OAAO,SAAS,CAAC;CAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,IAAI,UAAU,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;;;AAGlM,IAAI,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;AAY1C,SAAS,SAAS,CAAC,SAAS,EAAE;EAC5B,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;EAExF,IAAI,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;EAC/C,IAAI,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;EACnF,OAAO,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;CACtC;;AAED,IAAI,SAAS,GAAG;EACd,IAAI,EAAE,MAAM;EACZ,SAAS,EAAE,WAAW;EACtB,gBAAgB,EAAE,kBAAkB;CACrC,CAAC;;;;;;;;;AASF,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;;EAE3B,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;IACvD,OAAO,IAAI,CAAC;GACb;;EAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,iBAAiB,EAAE;;IAE7D,OAAO,IAAI,CAAC;GACb;;EAED,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;;EAE1H,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;EACxD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;;EAEnD,IAAI,SAAS,GAAG,EAAE,CAAC;;EAEnB,QAAQ,OAAO,CAAC,QAAQ;IACtB,KAAK,SAAS,CAAC,IAAI;MACjB,SAAS,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;MAC3C,MAAM;IACR,KAAK,SAAS,CAAC,SAAS;MACtB,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;MACjC,MAAM;IACR,KAAK,SAAS,CAAC,gBAAgB;MAC7B,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;MACvC,MAAM;IACR;MACE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;GAChC;;EAED,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,KAAK,EAAE;IACvC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,EAAE;MACxD,OAAO,IAAI,CAAC;KACb;;IAED,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;;IAEpD,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACxC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;;;IAGxC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,WAAW,GAAG,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;;IAE7U,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACpE,IAAI,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;;IAE7E,IAAI,mBAAmB,GAAG,SAAS,KAAK,MAAM,IAAI,aAAa,IAAI,SAAS,KAAK,OAAO,IAAI,cAAc,IAAI,SAAS,KAAK,KAAK,IAAI,YAAY,IAAI,SAAS,KAAK,QAAQ,IAAI,eAAe,CAAC;;;IAG/L,IAAI,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,IAAI,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,KAAK,UAAU,IAAI,SAAS,KAAK,OAAO,IAAI,aAAa,IAAI,UAAU,IAAI,SAAS,KAAK,KAAK,IAAI,cAAc,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,OAAO,IAAI,YAAY,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,KAAK,IAAI,eAAe,CAAC,CAAC;;IAElR,IAAI,WAAW,IAAI,mBAAmB,IAAI,gBAAgB,EAAE;;MAE1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;MAEpB,IAAI,WAAW,IAAI,mBAAmB,EAAE;QACtC,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;OAClC;;MAED,IAAI,gBAAgB,EAAE;QACpB,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;OAC7C;;MAED,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;;;;MAIhE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAGA,UAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;MAExI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;KAC5D;GACF,CAAC,CAAC;EACH,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,YAAY,CAAC,IAAI,EAAE;EAC1B,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO;MAC5B,MAAM,GAAG,aAAa,CAAC,MAAM;MAC7B,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;;EAExC,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EACvB,IAAI,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;EAC7D,IAAI,IAAI,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;EAC3C,IAAI,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;EACzC,IAAI,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;;EAElD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;GAC9E;EACD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;GACtD;;EAED,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;;;AAcD,SAAS,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE;;EAElE,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;EACnD,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;;EAGpB,IAAI,CAAC,KAAK,EAAE;IACV,OAAO,GAAG,CAAC;GACZ;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;IACrB,QAAQ,IAAI;MACV,KAAK,IAAI;QACP,OAAO,GAAG,aAAa,CAAC;QACxB,MAAM;MACR,KAAK,GAAG,CAAC;MACT,KAAK,IAAI,CAAC;MACV;QACE,OAAO,GAAG,gBAAgB,CAAC;KAC9B;;IAED,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;GACxC,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;;IAEzC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;IAClB,IAAI,IAAI,KAAK,IAAI,EAAE;MACjB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;KACjF,MAAM;MACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;KAC/E;IACD,OAAO,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;GAC3B,MAAM;;;IAGL,OAAO,KAAK,CAAC;GACd;CACF;;;;;;;;;;;;;AAaD,SAAS,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE;EAC3E,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;EAKrB,IAAI,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;;;;EAIhE,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;IAC1D,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;GACpB,CAAC,CAAC;;;;EAIH,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE;IAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;GACnC,CAAC,CAAC,CAAC;;EAEJ,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAChE,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;GAC9F;;;;EAID,IAAI,UAAU,GAAG,aAAa,CAAC;EAC/B,IAAI,GAAG,GAAG,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;;EAGzM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;;IAEjC,IAAI,WAAW,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,GAAG,OAAO,CAAC;IAC9E,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,OAAO,EAAE;;;KAGR,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;MACtB,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;QAC1D,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,CAAC;OACV,MAAM,IAAI,iBAAiB,EAAE;QAC5B,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,OAAO,CAAC,CAAC;OACV,MAAM;QACL,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACpB;KACF,EAAE,EAAE,CAAC;;KAEL,GAAG,CAAC,UAAU,GAAG,EAAE;MAClB,OAAO,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;KACnE,CAAC,CAAC;GACJ,CAAC,CAAC;;;EAGH,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IAC/B,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,MAAM,EAAE;MACjC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAC5D;KACF,CAAC,CAAC;GACJ,CAAC,CAAC;EACH,OAAO,OAAO,CAAC;CAChB;;;;;;;;;;;AAWD,SAAS,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;EAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EACzB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS;MAC1B,aAAa,GAAG,IAAI,CAAC,OAAO;MAC5B,MAAM,GAAG,aAAa,CAAC,MAAM;MAC7B,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;;EAExC,IAAI,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;EAE5C,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;EACrB,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE;IACtB,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;GACxB,MAAM;IACL,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;GACjE;;EAED,IAAI,aAAa,KAAK,MAAM,EAAE;IAC5B,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;GAC3B,MAAM,IAAI,aAAa,KAAK,OAAO,EAAE;IACpC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;GAC3B,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE;IAClC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;GAC1B,MAAM,IAAI,aAAa,KAAK,QAAQ,EAAE;IACrC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;GAC1B;;EAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE;EACtC,IAAI,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;;;;EAK3F,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,iBAAiB,EAAE;IACjD,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;GACxD;;EAED,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;EAClH,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;;EAEhC,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;EAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;EAEjC,IAAI,KAAK,GAAG;IACV,OAAO,EAAE,SAAS,OAAO,CAAC,SAAS,EAAE;MACnC,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;MAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;QAC7E,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;OAC5D;MACD,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;KAC7C;IACD,SAAS,EAAE,SAAS,SAAS,CAAC,SAAS,EAAE;MACvC,IAAI,QAAQ,GAAG,SAAS,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;MACtD,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;MAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;QAC7E,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;OACpH;MACD,OAAO,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC5C;GACF,CAAC;;EAEF,KAAK,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;IACjC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC;IAC/E,MAAM,GAAGA,UAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;GACvD,CAAC,CAAC;;EAEH,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;;EAE7B,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,KAAK,CAAC,IAAI,EAAE;EACnB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAC/B,IAAI,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5C,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;;EAG7C,IAAI,cAAc,EAAE;IAClB,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO;QAC5B,SAAS,GAAG,aAAa,CAAC,SAAS;QACnC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;;IAElC,IAAI,UAAU,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;IACvC,IAAI,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;;IAElD,IAAI,YAAY,GAAG;MACjB,KAAK,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;MAChD,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;KAC9F,CAAC;;IAEF,IAAI,CAAC,OAAO,CAAC,MAAM,GAAGA,UAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;GAC1E;;EAED,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,IAAI,CAAC,IAAI,EAAE;EAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE;IAC3E,OAAO,IAAI,CAAC;GACb;;EAED,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;EACrC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,QAAQ,EAAE;IAC5D,OAAO,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC;GAC5C,CAAC,CAAC,UAAU,CAAC;;EAEd,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;;IAExH,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;MACtB,OAAO,IAAI,CAAC;KACb;;IAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;GAC7C,MAAM;;IAEL,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;MACvB,OAAO,IAAI,CAAC;KACb;;IAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;GAChD;;EAED,OAAO,IAAI,CAAC;CACb;;;;;;;;;AASD,SAAS,KAAK,CAAC,IAAI,EAAE;EACnB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAC/B,IAAI,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5C,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO;MAC5B,MAAM,GAAG,aAAa,CAAC,MAAM;MAC7B,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;;EAExC,IAAI,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;;EAE9D,IAAI,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;;EAEnE,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;;EAE1H,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;EACjD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;;EAE5C,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;;;;;;;;;;;;AAuBD,IAAI,SAAS,GAAG;;;;;;;;;EASd,KAAK,EAAE;;IAEL,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,KAAK;GACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCD,MAAM,EAAE;;IAEN,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,MAAM;;;;IAIV,MAAM,EAAE,CAAC;GACV;;;;;;;;;;;;;;;;;;;EAmBD,eAAe,EAAE;;IAEf,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,eAAe;;;;;;IAMnB,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;;;;;;;IAO5C,OAAO,EAAE,CAAC;;;;;;IAMV,iBAAiB,EAAE,cAAc;GAClC;;;;;;;;;;;EAWD,YAAY,EAAE;;IAEZ,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,YAAY;GACjB;;;;;;;;;;;;EAYD,KAAK,EAAE;;IAEL,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,KAAK;;IAET,OAAO,EAAE,WAAW;GACrB;;;;;;;;;;;;;EAaD,IAAI,EAAE;;IAEJ,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,IAAI;;;;;;;IAOR,QAAQ,EAAE,MAAM;;;;;IAKhB,OAAO,EAAE,CAAC;;;;;;;IAOV,iBAAiB,EAAE,UAAU;GAC9B;;;;;;;;;EASD,KAAK,EAAE;;IAEL,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,KAAK;;IAEd,EAAE,EAAE,KAAK;GACV;;;;;;;;;;;;EAYD,IAAI,EAAE;;IAEJ,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,IAAI;GACT;;;;;;;;;;;;;;;;;EAiBD,YAAY,EAAE;;IAEZ,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,YAAY;;;;;;IAMhB,eAAe,EAAE,IAAI;;;;;;IAMrB,CAAC,EAAE,QAAQ;;;;;;IAMX,CAAC,EAAE,OAAO;GACX;;;;;;;;;;;;;;;;;EAiBD,UAAU,EAAE;;IAEV,KAAK,EAAE,GAAG;;IAEV,OAAO,EAAE,IAAI;;IAEb,EAAE,EAAE,UAAU;;IAEd,MAAM,EAAE,gBAAgB;;;;;;;IAOxB,eAAe,EAAE,SAAS;GAC3B;CACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCF,IAAI,QAAQ,GAAG;;;;;EAKb,SAAS,EAAE,QAAQ;;;;;;EAMnB,aAAa,EAAE,IAAI;;;;;;;EAOnB,eAAe,EAAE,KAAK;;;;;;;;EAQtB,QAAQ,EAAE,SAAS,QAAQ,GAAG,EAAE;;;;;;;;;;EAUhC,QAAQ,EAAE,SAAS,QAAQ,GAAG,EAAE;;;;;;;EAOhC,SAAS,EAAE,SAAS;CACrB,CAAC;;;;;;;;;;;;;;AAcF,IAAI,MAAM,GAAG,YAAY;;;;;;;;;EASvB,SAAS,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE;IACjC,IAAI,KAAK,GAAG,IAAI,CAAC;;IAEjB,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACrF,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;IAE7B,IAAI,CAAC,cAAc,GAAG,YAAY;MAChC,OAAO,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC5C,CAAC;;;IAGF,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;;IAG/C,IAAI,CAAC,OAAO,GAAGA,UAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;;;IAGtD,IAAI,CAAC,KAAK,GAAG;MACX,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE,KAAK;MAChB,aAAa,EAAE,EAAE;KAClB,CAAC;;;IAGF,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1E,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;;;IAG3D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAACA,UAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;MAC9F,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAGA,UAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;KACvI,CAAC,CAAC;;;IAGH,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;MACvE,OAAOA,UAAQ,CAAC;QACd,IAAI,EAAE,IAAI;OACX,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACnC,CAAC;;KAED,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;MACpB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;KAC1B,CAAC,CAAC;;;;;;IAMH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,eAAe,EAAE;MAChD,IAAI,eAAe,CAAC,OAAO,IAAI,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;QACjE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;OACpG;KACF,CAAC,CAAC;;;IAGH,IAAI,CAAC,MAAM,EAAE,CAAC;;IAEd,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IAC/C,IAAI,aAAa,EAAE;;MAEjB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;;IAED,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;GAC1C;;;;;;EAMD,WAAW,CAAC,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,SAAS,SAAS,GAAG;MAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;GACF,EAAE;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS,UAAU,GAAG;MAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;GACF,EAAE;IACD,GAAG,EAAE,sBAAsB;IAC3B,KAAK,EAAE,SAAS,uBAAuB,GAAG;MACxC,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxC;GACF,EAAE;IACD,GAAG,EAAE,uBAAuB;IAC5B,KAAK,EAAE,SAAS,wBAAwB,GAAG;MACzC,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BF,CAAC,CAAC,CAAC;EACJ,OAAO,MAAM,CAAC;CACf,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBJ,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,WAAW,CAAC;AAC7E,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AC73E3B;;;;;;;AAOA,IAAMC,WAAY,UAAC3R,IAAD,EAAO;;;;;;MAOjBsE,OAA2B,UAAjC;MACMC,UAA2B,OAAjC;MACMC,WAA2B,aAAjC;MACMC,kBAA+BD,QAArC;MACME,eAA2B,WAAjC;MACMC,qBAA2B3E,KAAE6B,EAAF,CAAKyC,IAAL,CAAjC;MACMsN,iBAA2B,EAAjC,CAbuB;;MAcjBC,gBAA2B,EAAjC,CAduB;;MAejBC,cAA2B,CAAjC,CAfuB;;MAgBjBC,mBAA2B,EAAjC,CAhBuB;;MAiBjBC,qBAA2B,EAAjC,CAjBuB;;MAkBjBC,2BAA2B,CAAjC,CAlBuB;;MAmBjBC,iBAA2B,IAAIjO,MAAJ,CAAc8N,gBAAd,SAAkCC,kBAAlC,SAAwDJ,cAAxD,CAAjC;MAEM9M,QAAQ;mBACcL,SADd;uBAEgBA,SAFhB;mBAGcA,SAHd;qBAIeA,SAJf;qBAKeA,SALf;8BAMeA,SAA3B,GAAuCC,YAN3B;kCAOiBD,SAA7B,GAAyCC,YAP7B;8BAQeD,SAA3B,GAAuCC;GARzC;MAWMK,YAAY;cACJ,UADI;UAEJ,MAFI;YAGJ,QAHI;eAIJ,WAJI;cAKJ,UALI;eAMJ,qBANI;cAOJ,oBAPI;qBAQE;GARpB;MAWMF,WAAW;iBACC,0BADD;gBAEC,gBAFD;UAGC,gBAHD;gBAIC,aAJD;mBAKC;GALlB;MAQMsN,gBAAgB;SACR,WADQ;YAER,SAFQ;YAGR,cAHQ;eAIR,YAJQ;WAKR,aALQ;cAMR,WANQ;UAOR,YAPQ;aAQR;GARd;MAWMrJ,UAAU;YACA,CADA;UAEA,IAFA;cAGA;GAHhB;MAMMC,cAAc;YACJ,0BADI;UAEJ,SAFI;cAGJ;;;;;;;GAHhB;;MAYM4I,QAhFiB;;;sBAiFThP,OAAZ,EAAqBY,MAArB,EAA6B;WACtByB,QAAL,GAAiBrC,OAAjB;WACKyP,OAAL,GAAiB,IAAjB;WACK7I,OAAL,GAAiB,KAAKC,UAAL,CAAgBjG,MAAhB,CAAjB;WACK8O,KAAL,GAAiB,KAAKC,eAAL,EAAjB;WACKC,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;WAEK7I,kBAAL;KAxFmB;;;;;;WA2GrBtC,MA3GqB,qBA2GZ;UACH,KAAKrC,QAAL,CAAcyN,QAAd,IAA0BzS,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU2N,QAApC,CAA9B,EAA6E;;;;UAIvE/M,SAAWgM,SAASgB,qBAAT,CAA+B,KAAK3N,QAApC,CAAjB;;UACM4N,WAAW5S,KAAE,KAAKqS,KAAP,EAAcnM,QAAd,CAAuBnB,UAAUkB,IAAjC,CAAjB;;eAES4M,WAAT;;UAEID,QAAJ,EAAc;;;;UAIRlG,gBAAgB;uBACL,KAAK1H;OADtB;UAGM8N,YAAY9S,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,EAAoByG,aAApB,CAAlB;WAEE/G,MAAF,EAAUxC,OAAV,CAAkB2P,SAAlB;;UAEIA,UAAUxN,kBAAV,EAAJ,EAAoC;;OArB7B;;;UA0BH,CAAC,KAAKiN,SAAV,EAAqB;;;;;YAKf,OAAOQ,MAAP,KAAkB,WAAtB,EAAmC;gBAC3B,IAAI/E,SAAJ,CAAc,8DAAd,CAAN;;;YAEErL,UAAU,KAAKqC,QAAnB,CARmB;;YAUfhF,KAAE2F,MAAF,EAAUO,QAAV,CAAmBnB,UAAUiO,MAA7B,CAAJ,EAA0C;cACpChT,KAAE,KAAKqS,KAAP,EAAcnM,QAAd,CAAuBnB,UAAUkO,QAAjC,KAA8CjT,KAAE,KAAKqS,KAAP,EAAcnM,QAAd,CAAuBnB,UAAUmO,SAAjC,CAAlD,EAA+F;sBACnFvN,MAAV;;SAZe;;;;;YAkBf,KAAK4D,OAAL,CAAa4J,QAAb,KAA0B,cAA9B,EAA8C;eAC1CxN,MAAF,EAAUwH,QAAV,CAAmBpI,UAAUqO,eAA7B;;;aAEGhB,OAAL,GAAe,IAAIW,MAAJ,CAAWpQ,OAAX,EAAoB,KAAK0P,KAAzB,EAAgC,KAAKgB,gBAAL,EAAhC,CAAf;OA/CK;;;;;;UAsDH,kBAAkB5Q,SAASgJ,eAA3B,IACDzL,KAAE2F,MAAF,EAAUC,OAAV,CAAkBf,SAASyO,UAA3B,EAAuCtQ,MAAvC,KAAkD,CADrD,EACwD;aACpD,MAAF,EAAUkK,QAAV,GAAqBnG,EAArB,CAAwB,WAAxB,EAAqC,IAArC,EAA2C/G,KAAEuT,IAA7C;;;WAGGvO,QAAL,CAAckD,KAAd;;WACKlD,QAAL,CAAcmD,YAAd,CAA2B,eAA3B,EAA4C,IAA5C;;WAEE,KAAKkK,KAAP,EAAcjK,WAAd,CAA0BrD,UAAUkB,IAApC;WACEN,MAAF,EACGyC,WADH,CACerD,UAAUkB,IADzB,EAEG9C,OAFH,CAEWnD,KAAE8E,KAAF,CAAQA,MAAMwL,KAAd,EAAqB5D,aAArB,CAFX;KA1KmB;;WA+KrBlH,OA/KqB,sBA+KX;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACE,KAAKQ,QAAP,EAAiBkG,GAAjB,CAAqBzG,SAArB;WACKO,QAAL,GAAgB,IAAhB;WACKqN,KAAL,GAAa,IAAb;;UACI,KAAKD,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAaoB,OAAb;;aACKpB,OAAL,GAAe,IAAf;;KAtLiB;;WA0LrBqB,MA1LqB,qBA0LZ;WACFlB,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;UACI,KAAKJ,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAasB,cAAb;;KA7LiB;;;WAmMrB/J,kBAnMqB,iCAmMA;;;WACjB,KAAK3E,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM6O,KAA1B,EAAiC,UAAChT,KAAD,EAAW;cACpCmG,cAAN;cACM8M,eAAN;;cACKvM,MAAL;OAHF;KApMmB;;WA2MrBmC,UA3MqB,uBA2MVjG,MA3MU,EA2MF;4BAEZ,KAAKsQ,WAAL,CAAiB/K,OADtB,EAEK9I,KAAE,KAAKgF,QAAP,EAAiB2B,IAAjB,EAFL,EAGKpD,MAHL;WAMK4H,eAAL,CACE7G,IADF,EAEEf,MAFF,EAGE,KAAKsQ,WAAL,CAAiB9K,WAHnB;aAMOxF,MAAP;KAxNmB;;WA2NrB+O,eA3NqB,8BA2NH;UACZ,CAAC,KAAKD,KAAV,EAAiB;YACT1M,SAASgM,SAASgB,qBAAT,CAA+B,KAAK3N,QAApC,CAAf;;aACKqN,KAAL,GAAarS,KAAE2F,MAAF,EAAU5C,IAAV,CAAe8B,SAASiP,IAAxB,EAA8B,CAA9B,CAAb;;;aAEK,KAAKzB,KAAZ;KAhOmB;;WAmOrB0B,aAnOqB,4BAmOL;UACRC,kBAAkBhU,KAAE,KAAKgF,QAAP,EAAiBW,MAAjB,EAAxB;UACIsO,YAAY9B,cAAc+B,MAA9B,CAFc;;UAKVF,gBAAgB9N,QAAhB,CAAyBnB,UAAUiO,MAAnC,CAAJ,EAAgD;oBAClCb,cAAcgC,GAA1B;;YACInU,KAAE,KAAKqS,KAAP,EAAcnM,QAAd,CAAuBnB,UAAUmO,SAAjC,CAAJ,EAAiD;sBACnCf,cAAciC,MAA1B;;OAHJ,MAKO,IAAIJ,gBAAgB9N,QAAhB,CAAyBnB,UAAUsP,SAAnC,CAAJ,EAAmD;oBAC5ClC,cAAcxE,KAA1B;OADK,MAEA,IAAIqG,gBAAgB9N,QAAhB,CAAyBnB,UAAUuP,QAAnC,CAAJ,EAAkD;oBAC3CnC,cAAczE,IAA1B;OADK,MAEA,IAAI1N,KAAE,KAAKqS,KAAP,EAAcnM,QAAd,CAAuBnB,UAAUmO,SAAjC,CAAJ,EAAiD;oBAC1Cf,cAAcoC,SAA1B;;;aAEKN,SAAP;KApPmB;;WAuPrBzB,aAvPqB,4BAuPL;aACPxS,KAAE,KAAKgF,QAAP,EAAiBY,OAAjB,CAAyB,SAAzB,EAAoC5C,MAApC,GAA6C,CAApD;KAxPmB;;WA2PrBqQ,gBA3PqB,+BA2PF;;;UACXmB,aAAa,EAAnB;;UACI,OAAO,KAAKjL,OAAL,CAAakL,MAApB,KAA+B,UAAnC,EAA+C;mBAClC5S,EAAX,GAAgB,UAAC8E,IAAD,EAAU;eACnB+N,OAAL,gBACK/N,KAAK+N,OADV,EAEK,OAAKnL,OAAL,CAAakL,MAAb,CAAoB9N,KAAK+N,OAAzB,KAAqC,EAF1C;iBAIO/N,IAAP;SALF;OADF,MAQO;mBACM8N,MAAX,GAAoB,KAAKlL,OAAL,CAAakL,MAAjC;;;UAEIE,eAAe;mBACR,KAAKZ,aAAL,EADQ;mBAER;kBACDS,UADC;gBAEH;qBACK,KAAKjL,OAAL,CAAaqL;WAHf;2BAKQ;+BACI,KAAKrL,OAAL,CAAa4J;;;OARtC;aAaOwB,YAAP;KArRmB;;;aA0RdnO,gBA1Rc,6BA0RGjD,MA1RH,EA0RW;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD;;YAEI,CAACoD,IAAL,EAAW;iBACF,IAAIgL,QAAJ,CAAa,IAAb,EAAmBpI,OAAnB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAbG,CAAP;KA3RmB;;aA6SdsP,WA7Sc,wBA6SFlS,KA7SE,EA6SK;UACpBA,UAAUA,MAAMkL,KAAN,KAAgBoG,wBAAhB,IACZtR,MAAMgH,IAAN,KAAe,OAAf,IAA0BhH,MAAMkL,KAAN,KAAgBiG,WADxC,CAAJ,EAC0D;;;;UAIpD+C,UAAU7U,KAAE8L,SAAF,CAAY9L,KAAE6E,SAAS2C,WAAX,CAAZ,CAAhB;;WACK,IAAIsH,IAAI,CAAb,EAAgBA,IAAI+F,QAAQ7R,MAA5B,EAAoC8L,GAApC,EAAyC;YACjCnJ,SAASgM,SAASgB,qBAAT,CAA+BkC,QAAQ/F,CAAR,CAA/B,CAAf;;YACMgG,UAAU9U,KAAE6U,QAAQ/F,CAAR,CAAF,EAAcnI,IAAd,CAAmBnC,QAAnB,CAAhB;YACMkI,gBAAgB;yBACLmI,QAAQ/F,CAAR;SADjB;;YAII,CAACgG,OAAL,EAAc;;;;YAIRC,eAAeD,QAAQzC,KAA7B;;YACI,CAACrS,KAAE2F,MAAF,EAAUO,QAAV,CAAmBnB,UAAUkB,IAA7B,CAAL,EAAyC;;;;YAIrCtF,UAAUA,MAAMgH,IAAN,KAAe,OAAf,IACV,kBAAkBzD,IAAlB,CAAuBvD,MAAMC,MAAN,CAAagL,OAApC,CADU,IACsCjL,MAAMgH,IAAN,KAAe,OAAf,IAA0BhH,MAAMkL,KAAN,KAAgBiG,WAD1F,KAEA9R,KAAEiI,QAAF,CAAWtC,MAAX,EAAmBhF,MAAMC,MAAzB,CAFJ,EAEsC;;;;YAIhCoU,YAAYhV,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,EAAoBhE,aAApB,CAAlB;aACE/G,MAAF,EAAUxC,OAAV,CAAkB6R,SAAlB;;YACIA,UAAU1P,kBAAV,EAAJ,EAAoC;;SAxBG;;;;YA8BnC,kBAAkB7C,SAASgJ,eAA/B,EAAgD;eAC5C,MAAF,EAAUyB,QAAV,GAAqBhC,GAArB,CAAyB,WAAzB,EAAsC,IAAtC,EAA4ClL,KAAEuT,IAA9C;;;gBAGMzE,CAAR,EAAW3G,YAAX,CAAwB,eAAxB,EAAyC,OAAzC;aAEE4M,YAAF,EAAgB/O,WAAhB,CAA4BjB,UAAUkB,IAAtC;aACEN,MAAF,EACGK,WADH,CACejB,UAAUkB,IADzB,EAEG9C,OAFH,CAEWnD,KAAE8E,KAAF,CAAQA,MAAM+L,MAAd,EAAsBnE,aAAtB,CAFX;;KAzViB;;aA+VdiG,qBA/Vc,kCA+VQhQ,OA/VR,EA+ViB;UAChCgD,MAAJ;UACMzD,WAAWnC,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAjB;;UAEIT,QAAJ,EAAc;iBACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;aAGKyD,UAAUhD,QAAQsS,UAAzB;KAvWmB;;;aA2WdC,sBA3Wc,mCA2WSvU,KA3WT,EA2WgB;;;;;;;;UAQ/B,kBAAkBuD,IAAlB,CAAuBvD,MAAMC,MAAN,CAAagL,OAApC,IACAjL,MAAMkL,KAAN,KAAgBgG,aAAhB,IAAiClR,MAAMkL,KAAN,KAAgB+F,cAAhB,KAClCjR,MAAMkL,KAAN,KAAgBmG,kBAAhB,IAAsCrR,MAAMkL,KAAN,KAAgBkG,gBAAtD,IACC/R,KAAEW,MAAMC,MAAR,EAAgBgF,OAAhB,CAAwBf,SAASiP,IAAjC,EAAuC9Q,MAFN,CADjC,GAGiD,CAACkP,eAAehO,IAAf,CAAoBvD,MAAMkL,KAA1B,CAHtD,EAGwF;;;;YAIlF/E,cAAN;YACM8M,eAAN;;UAEI,KAAKnB,QAAL,IAAiBzS,KAAE,IAAF,EAAQkG,QAAR,CAAiBnB,UAAU2N,QAA3B,CAArB,EAA2D;;;;UAIrD/M,SAAWgM,SAASgB,qBAAT,CAA+B,IAA/B,CAAjB;;UACMC,WAAW5S,KAAE2F,MAAF,EAAUO,QAAV,CAAmBnB,UAAUkB,IAA7B,CAAjB;;UAEI,CAAC2M,QAAD,KAAcjS,MAAMkL,KAAN,KAAgB+F,cAAhB,IAAkCjR,MAAMkL,KAAN,KAAgBgG,aAAhE,KACCe,aAAajS,MAAMkL,KAAN,KAAgB+F,cAAhB,IAAkCjR,MAAMkL,KAAN,KAAgBgG,aAA/D,CADL,EACoF;YAC9ElR,MAAMkL,KAAN,KAAgB+F,cAApB,EAAoC;cAC5BvK,SAASrH,KAAE2F,MAAF,EAAU5C,IAAV,CAAe8B,SAAS2C,WAAxB,EAAqC,CAArC,CAAf;eACEH,MAAF,EAAUlE,OAAV,CAAkB,OAAlB;;;aAGA,IAAF,EAAQA,OAAR,CAAgB,OAAhB;;;;UAIIgS,QAAQnV,KAAE2F,MAAF,EAAU5C,IAAV,CAAe8B,SAASuQ,aAAxB,EAAuCC,GAAvC,EAAd;;UAEIF,MAAMnS,MAAN,KAAiB,CAArB,EAAwB;;;;UAIpB4H,QAAQuK,MAAMnJ,OAAN,CAAcrL,MAAMC,MAApB,CAAZ;;UAEID,MAAMkL,KAAN,KAAgBkG,gBAAhB,IAAoCnH,QAAQ,CAAhD,EAAmD;;;;;UAI/CjK,MAAMkL,KAAN,KAAgBmG,kBAAhB,IAAsCpH,QAAQuK,MAAMnS,MAAN,GAAe,CAAjE,EAAoE;;;;;UAIhE4H,QAAQ,CAAZ,EAAe;gBACL,CAAR;;;YAGIA,KAAN,EAAa1C,KAAb;KAnamB;;;;0BA6FA;eACZ3D,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;0BAGuB;eAChBC,WAAP;;;;;;;;;;;;OAuUFtG,QAAF,EACGsE,EADH,CACMjC,MAAMwQ,gBADZ,EAC8BzQ,SAAS2C,WADvC,EACoDmK,SAASuD,sBAD7D,EAEGnO,EAFH,CAEMjC,MAAMwQ,gBAFZ,EAE8BzQ,SAASiP,IAFvC,EAE6CnC,SAASuD,sBAFtD,EAGGnO,EAHH,CAGSjC,MAAMkC,cAHf,SAGiClC,MAAMyQ,cAHvC,EAGyD5D,SAASkB,WAHlE,EAIG9L,EAJH,CAIMjC,MAAMkC,cAJZ,EAI4BnC,SAAS2C,WAJrC,EAIkD,UAAU7G,KAAV,EAAiB;UACzDmG,cAAN;UACM8M,eAAN;;aACSpN,gBAAT,CAA0BlG,IAA1B,CAA+BN,KAAE,IAAF,CAA/B,EAAwC,QAAxC;GAPJ,EASG+G,EATH,CASMjC,MAAMkC,cATZ,EAS4BnC,SAAS2Q,UATrC,EASiD,UAACC,CAAD,EAAO;MAClD7B,eAAF;GAVJ;;;;;;;OAmBE/R,EAAF,CAAKyC,IAAL,IAAaqN,SAASnL,gBAAtB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyByK,QAAzB;;OACE9P,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOgN,SAASnL,gBAAhB;GAFF;;SAKOmL,QAAP;CAvce,CAwcd3R,CAxcc,EAwcX+S,MAxcW,CAAjB;;ACRA;;;;;;;AAOA,IAAM2C,QAAS,UAAC1V,IAAD,EAAO;;;;;;MAOdsE,OAA+B,OAArC;MACMC,UAA+B,OAArC;MACMC,WAA+B,UAArC;MACMC,kBAAmCD,QAAzC;MACME,eAA+B,WAArC;MACMC,qBAA+B3E,KAAE6B,EAAF,CAAKyC,IAAL,CAArC;MACMM,sBAA+B,GAArC;MACM+Q,+BAA+B,GAArC;MACM/D,iBAA+B,EAArC,CAfoB;;MAiBd9I,UAAU;cACH,IADG;cAEH,IAFG;WAGH,IAHG;UAIH;GAJb;MAOMC,cAAc;cACP,kBADO;cAEP,SAFO;WAGP,SAHO;UAIP;GAJb;MAOMjE,QAAQ;mBACeL,SADf;uBAEiBA,SAFjB;mBAGeA,SAHf;qBAIgBA,SAJhB;yBAKkBA,SALlB;uBAMiBA,SANjB;qCAOwBA,SAPxB;yCAQ0BA,SAR1B;yCAS0BA,SAT1B;6CAU4BA,SAV5B;8BAWgBA,SAA5B,GAAwCC;GAX1C;MAcMK,YAAY;wBACK,yBADL;cAEK,gBAFL;UAGK,YAHL;UAIK,MAJL;UAKK;GALvB;MAQMF,WAAW;YACM,eADN;iBAEM,uBAFN;kBAGM,wBAHN;mBAIM,mDAJN;oBAKM,aALN;oBAMM;;;;;;;GANvB;;MAeM6Q,KApEc;;;mBAqEN/S,OAAZ,EAAqBY,MAArB,EAA6B;WACtBgG,OAAL,GAA4B,KAAKC,UAAL,CAAgBjG,MAAhB,CAA5B;WACKyB,QAAL,GAA4BrC,OAA5B;WACKiT,OAAL,GAA4B5V,KAAE2C,OAAF,EAAWI,IAAX,CAAgB8B,SAASgR,MAAzB,EAAiC,CAAjC,CAA5B;WACKC,SAAL,GAA4B,IAA5B;WACKC,QAAL,GAA4B,KAA5B;WACKC,kBAAL,GAA4B,KAA5B;WACKC,oBAAL,GAA4B,KAA5B;WACKC,oBAAL,GAA4B,CAA5B;WACKC,eAAL,GAA4B,CAA5B;KA9EgB;;;;;;WA6FlB9O,MA7FkB,mBA6FXqF,aA7FW,EA6FI;aACb,KAAKqJ,QAAL,GAAgB,KAAKzG,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAU7C,aAAV,CAArC;KA9FgB;;WAiGlB6C,IAjGkB,iBAiGb7C,aAjGa,EAiGE;;;UACd,KAAKgC,gBAAL,IAAyB,KAAKqH,QAAlC,EAA4C;;;;UAIxChW,KAAKgC,qBAAL,MAAgC/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CAApC,EAA+E;aACxEuI,gBAAL,GAAwB,IAAxB;;;UAGIoE,YAAY9S,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,EAAoB;;OAApB,CAAlB;WAIE,KAAKjB,QAAP,EAAiB7B,OAAjB,CAAyB2P,SAAzB;;UAEI,KAAKiD,QAAL,IAAiBjD,UAAUxN,kBAAV,EAArB,EAAqD;;;;WAIhDyQ,QAAL,GAAgB,IAAhB;;WAEKK,eAAL;;WACKC,aAAL;;WAEKC,aAAL;;WAEE7T,SAAS8T,IAAX,EAAiBpJ,QAAjB,CAA0BpI,UAAUyR,IAApC;;WAEKC,eAAL;;WACKC,eAAL;;WAEE,KAAK1R,QAAP,EAAiB+B,EAAjB,CACEjC,MAAM6R,aADR,EAEE9R,SAAS+R,YAFX,EAGE,UAACjW,KAAD;eAAW,MAAK2O,IAAL,CAAU3O,KAAV,CAAX;OAHF;WAME,KAAKiV,OAAP,EAAgB7O,EAAhB,CAAmBjC,MAAM+R,iBAAzB,EAA4C,YAAM;aAC9C,MAAK7R,QAAP,EAAiBvD,GAAjB,CAAqBqD,MAAMgS,eAA3B,EAA4C,UAACnW,KAAD,EAAW;cACjDX,KAAEW,MAAMC,MAAR,EAAgBC,EAAhB,CAAmB,MAAKmE,QAAxB,CAAJ,EAAuC;kBAChCiR,oBAAL,GAA4B,IAA5B;;SAFJ;OADF;;WAQKc,aAAL,CAAmB;eAAM,MAAKC,YAAL,CAAkBtK,aAAlB,CAAN;OAAnB;KA9IgB;;WAiJlB4C,IAjJkB,iBAiJb3O,KAjJa,EAiJN;;;UACNA,KAAJ,EAAW;cACHmG,cAAN;;;UAGE,KAAK4H,gBAAL,IAAyB,CAAC,KAAKqH,QAAnC,EAA6C;;;;UAIvCf,YAAYhV,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,CAAlB;WAEE,KAAK1L,QAAP,EAAiB7B,OAAjB,CAAyB6R,SAAzB;;UAEI,CAAC,KAAKe,QAAN,IAAkBf,UAAU1P,kBAAV,EAAtB,EAAsD;;;;WAIjDyQ,QAAL,GAAgB,KAAhB;UAEM9V,aAAaF,KAAKgC,qBAAL,MAAgC/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CAAnD;;UAEIlG,UAAJ,EAAgB;aACTyO,gBAAL,GAAwB,IAAxB;;;WAGG+H,eAAL;;WACKC,eAAL;;WAEEjU,QAAF,EAAYyI,GAAZ,CAAgBpG,MAAMmS,OAAtB;WAEE,KAAKjS,QAAP,EAAiBgB,WAAjB,CAA6BjB,UAAUkB,IAAvC;WAEE,KAAKjB,QAAP,EAAiBkG,GAAjB,CAAqBpG,MAAM6R,aAA3B;WACE,KAAKf,OAAP,EAAgB1K,GAAhB,CAAoBpG,MAAM+R,iBAA1B;;UAEI5W,UAAJ,EAAgB;aACZ,KAAK+E,QAAP,EACGvD,GADH,CACO1B,KAAK2B,cADZ,EAC4B,UAACf,KAAD;iBAAW,OAAKuW,UAAL,CAAgBvW,KAAhB,CAAX;SAD5B,EAEGmB,oBAFH,CAEwB8C,mBAFxB;OADF,MAIO;aACAsS,UAAL;;KAzLc;;WA6LlB1R,OA7LkB,sBA6LR;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WAEEpD,MAAF,EAAUqB,QAAV,EAAoB,KAAKuC,QAAzB,EAAmC,KAAK8Q,SAAxC,EAAmD5K,GAAnD,CAAuDzG,SAAvD;WAEK8E,OAAL,GAA4B,IAA5B;WACKvE,QAAL,GAA4B,IAA5B;WACK4Q,OAAL,GAA4B,IAA5B;WACKE,SAAL,GAA4B,IAA5B;WACKC,QAAL,GAA4B,IAA5B;WACKC,kBAAL,GAA4B,IAA5B;WACKC,oBAAL,GAA4B,IAA5B;WACKE,eAAL,GAA4B,IAA5B;KAzMgB;;WA4MlBgB,YA5MkB,2BA4MH;WACRb,aAAL;KA7MgB;;;WAkNlB9M,UAlNkB,uBAkNPjG,MAlNO,EAkNC;4BAEZuF,OADL,EAEKvF,MAFL;WAIK4H,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aACOxF,MAAP;KAxNgB;;WA2NlByT,YA3NkB,yBA2NLtK,aA3NK,EA2NU;;;UACpBzM,aAAaF,KAAKgC,qBAAL,MACjB/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CADF;;UAGI,CAAC,KAAKnB,QAAL,CAAciQ,UAAf,IACD,KAAKjQ,QAAL,CAAciQ,UAAd,CAAyB5R,QAAzB,KAAsC+T,KAAKC,YAD9C,EAC4D;;iBAEjDd,IAAT,CAAce,WAAd,CAA0B,KAAKtS,QAA/B;;;WAGGA,QAAL,CAAciL,KAAd,CAAoBsH,OAApB,GAA8B,OAA9B;;WACKvS,QAAL,CAAcwS,eAAd,CAA8B,aAA9B;;WACKxS,QAAL,CAAcyS,SAAd,GAA0B,CAA1B;;UAEIxX,UAAJ,EAAgB;aACT4N,MAAL,CAAY,KAAK7I,QAAjB;;;WAGA,KAAKA,QAAP,EAAiBmI,QAAjB,CAA0BpI,UAAUkB,IAApC;;UAEI,KAAKsD,OAAL,CAAarB,KAAjB,EAAwB;aACjBwP,aAAL;;;UAGIC,aAAa3X,KAAE8E,KAAF,CAAQA,MAAMwL,KAAd,EAAqB;;OAArB,CAAnB;;UAIMsH,qBAAqB,SAArBA,kBAAqB,GAAM;YAC3B,OAAKrO,OAAL,CAAarB,KAAjB,EAAwB;iBACjBlD,QAAL,CAAckD,KAAd;;;eAEGwG,gBAAL,GAAwB,KAAxB;aACE,OAAK1J,QAAP,EAAiB7B,OAAjB,CAAyBwU,UAAzB;OALF;;UAQI1X,UAAJ,EAAgB;aACZ,KAAK2V,OAAP,EACGnU,GADH,CACO1B,KAAK2B,cADZ,EAC4BkW,kBAD5B,EAEG9V,oBAFH,CAEwB8C,mBAFxB;OADF,MAIO;;;KAnQS;;WAwQlB8S,aAxQkB,4BAwQF;;;WACZjV,QAAF,EACGyI,GADH,CACOpG,MAAMmS,OADb;OAEGlQ,EAFH,CAEMjC,MAAMmS,OAFZ,EAEqB,UAACtW,KAAD,EAAW;YACxB8B,aAAa9B,MAAMC,MAAnB,IACA,OAAKoE,QAAL,KAAkBrE,MAAMC,MADxB,IAEAZ,KAAE,OAAKgF,QAAP,EAAiB6S,GAAjB,CAAqBlX,MAAMC,MAA3B,EAAmCoC,MAAnC,KAA8C,CAFlD,EAEqD;iBAC9CgC,QAAL,CAAckD,KAAd;;OANN;KAzQgB;;WAoRlBuO,eApRkB,8BAoRA;;;UACZ,KAAKV,QAAL,IAAiB,KAAKxM,OAAL,CAAa6B,QAAlC,EAA4C;aACxC,KAAKpG,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAMgT,eAA1B,EAA2C,UAACnX,KAAD,EAAW;cAChDA,MAAMkL,KAAN,KAAgB+F,cAApB,EAAoC;kBAC5B9K,cAAN;;mBACKwI,IAAL;;SAHJ;OADF,MAOO,IAAI,CAAC,KAAKyG,QAAV,EAAoB;aACvB,KAAK/Q,QAAP,EAAiBkG,GAAjB,CAAqBpG,MAAMgT,eAA3B;;KA7Rc;;WAiSlBpB,eAjSkB,8BAiSA;;;UACZ,KAAKX,QAAT,EAAmB;aACf3U,MAAF,EAAU2F,EAAV,CAAajC,MAAMiT,MAAnB,EAA2B,UAACpX,KAAD;iBAAW,OAAKwW,YAAL,CAAkBxW,KAAlB,CAAX;SAA3B;OADF,MAEO;aACHS,MAAF,EAAU8J,GAAV,CAAcpG,MAAMiT,MAApB;;KArSc;;WAySlBb,UAzSkB,yBAySL;;;WACNlS,QAAL,CAAciL,KAAd,CAAoBsH,OAApB,GAA8B,MAA9B;;WACKvS,QAAL,CAAcmD,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;WACKuG,gBAAL,GAAwB,KAAxB;;WACKqI,aAAL,CAAmB,YAAM;aACrBtU,SAAS8T,IAAX,EAAiBvQ,WAAjB,CAA6BjB,UAAUyR,IAAvC;;eACKwB,iBAAL;;eACKC,eAAL;;aACE,OAAKjT,QAAP,EAAiB7B,OAAjB,CAAyB2B,MAAM+L,MAA/B;OAJF;KA7SgB;;WAqTlBqH,eArTkB,8BAqTA;UACZ,KAAKpC,SAAT,EAAoB;aAChB,KAAKA,SAAP,EAAkBvP,MAAlB;aACKuP,SAAL,GAAiB,IAAjB;;KAxTc;;WA4TlBiB,aA5TkB,0BA4TJoB,QA5TI,EA4TM;;;UAChBC,UAAUpY,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,IACZpB,UAAUoB,IADE,GACK,EADrB;;UAGI,KAAK4P,QAAL,IAAiB,KAAKxM,OAAL,CAAa8O,QAAlC,EAA4C;YACpCC,YAAYvY,KAAKgC,qBAAL,MAAgCqW,OAAlD;aAEKtC,SAAL,GAAiBrT,SAAS8V,aAAT,CAAuB,KAAvB,CAAjB;aACKzC,SAAL,CAAe0C,SAAf,GAA2BzT,UAAU0T,QAArC;;YAEIL,OAAJ,EAAa;eACT,KAAKtC,SAAP,EAAkB3I,QAAlB,CAA2BiL,OAA3B;;;aAGA,KAAKtC,SAAP,EAAkB4C,QAAlB,CAA2BjW,SAAS8T,IAApC;aAEE,KAAKvR,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM6R,aAA1B,EAAyC,UAAChW,KAAD,EAAW;cAC9C,OAAKsV,oBAAT,EAA+B;mBACxBA,oBAAL,GAA4B,KAA5B;;;;cAGEtV,MAAMC,MAAN,KAAiBD,MAAM4Q,aAA3B,EAA0C;;;;cAGtC,OAAKhI,OAAL,CAAa8O,QAAb,KAA0B,QAA9B,EAAwC;mBACjCrT,QAAL,CAAckD,KAAd;WADF,MAEO;mBACAoH,IAAL;;SAXJ;;YAeIgJ,SAAJ,EAAe;eACRzK,MAAL,CAAY,KAAKiI,SAAjB;;;aAGA,KAAKA,SAAP,EAAkB3I,QAAlB,CAA2BpI,UAAUkB,IAArC;;YAEI,CAACkS,QAAL,EAAe;;;;YAIX,CAACG,SAAL,EAAgB;;;;;aAKd,KAAKxC,SAAP,EACGrU,GADH,CACO1B,KAAK2B,cADZ,EAC4ByW,QAD5B,EAEGrW,oBAFH,CAEwB6T,4BAFxB;OA1CF,MA6CO,IAAI,CAAC,KAAKI,QAAN,IAAkB,KAAKD,SAA3B,EAAsC;aACzC,KAAKA,SAAP,EAAkB9P,WAAlB,CAA8BjB,UAAUkB,IAAxC;;YAEM0S,iBAAiB,SAAjBA,cAAiB,GAAM;iBACtBT,eAAL;;cACIC,QAAJ,EAAc;;;SAFhB;;YAOIpY,KAAKgC,qBAAL,MACD/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CADH,EAC8C;eAC1C,KAAK2P,SAAP,EACGrU,GADH,CACO1B,KAAK2B,cADZ,EAC4BiX,cAD5B,EAEG7W,oBAFH,CAEwB6T,4BAFxB;SAFF,MAKO;;;OAfF,MAkBA,IAAIwC,QAAJ,EAAc;;;KA/XL;;;;;;WAyYlB7B,aAzYkB,4BAyYF;UACRsC,qBACJ,KAAK5T,QAAL,CAAc6T,YAAd,GAA6BpW,SAASgJ,eAAT,CAAyBqN,YADxD;;UAGI,CAAC,KAAK9C,kBAAN,IAA4B4C,kBAAhC,EAAoD;aAC7C5T,QAAL,CAAciL,KAAd,CAAoB8I,WAApB,GAAqC,KAAK5C,eAA1C;;;UAGE,KAAKH,kBAAL,IAA2B,CAAC4C,kBAAhC,EAAoD;aAC7C5T,QAAL,CAAciL,KAAd,CAAoB+I,YAApB,GAAsC,KAAK7C,eAA3C;;KAlZc;;WAsZlB6B,iBAtZkB,gCAsZE;WACbhT,QAAL,CAAciL,KAAd,CAAoB8I,WAApB,GAAkC,EAAlC;WACK/T,QAAL,CAAciL,KAAd,CAAoB+I,YAApB,GAAmC,EAAnC;KAxZgB;;WA2ZlB5C,eA3ZkB,8BA2ZA;UACV6C,OAAOxW,SAAS8T,IAAT,CAAc5F,qBAAd,EAAb;WACKqF,kBAAL,GAA0BiD,KAAKC,IAAL,GAAYD,KAAKE,KAAjB,GAAyB/X,OAAOgY,UAA1D;WACKjD,eAAL,GAAuB,KAAKkD,kBAAL,EAAvB;KA9ZgB;;WAialBhD,aAjakB,4BAiaF;;;UACV,KAAKL,kBAAT,EAA6B;;;;aAKzBnR,SAASyU,aAAX,EAA0B7S,IAA1B,CAA+B,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;cAC3C4W,gBAAgBvZ,KAAE2C,OAAF,EAAW,CAAX,EAAcsN,KAAd,CAAoB+I,YAA1C;cACMQ,oBAAoBxZ,KAAE2C,OAAF,EAAWsH,GAAX,CAAe,eAAf,CAA1B;eACEtH,OAAF,EAAWgE,IAAX,CAAgB,eAAhB,EAAiC4S,aAAjC,EAAgDtP,GAAhD,CAAoD,eAApD,EAAwEwP,WAAWD,iBAAX,IAAgC,OAAKrD,eAA7G;SAHF,EAL2B;;aAYzBtR,SAAS6U,cAAX,EAA2BjT,IAA3B,CAAgC,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;cAC5CgX,eAAe3Z,KAAE2C,OAAF,EAAW,CAAX,EAAcsN,KAAd,CAAoB2J,WAAzC;cACMC,mBAAmB7Z,KAAE2C,OAAF,EAAWsH,GAAX,CAAe,cAAf,CAAzB;eACEtH,OAAF,EAAWgE,IAAX,CAAgB,cAAhB,EAAgCgT,YAAhC,EAA8C1P,GAA9C,CAAkD,cAAlD,EAAqEwP,WAAWI,gBAAX,IAA+B,OAAK1D,eAAzG;SAHF,EAZ2B;;aAmBzBtR,SAASiV,cAAX,EAA2BrT,IAA3B,CAAgC,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;cAC5CgX,eAAe3Z,KAAE2C,OAAF,EAAW,CAAX,EAAcsN,KAAd,CAAoB2J,WAAzC;cACMC,mBAAmB7Z,KAAE2C,OAAF,EAAWsH,GAAX,CAAe,cAAf,CAAzB;eACEtH,OAAF,EAAWgE,IAAX,CAAgB,cAAhB,EAAgCgT,YAAhC,EAA8C1P,GAA9C,CAAkD,cAAlD,EAAqEwP,WAAWI,gBAAX,IAA+B,OAAK1D,eAAzG;SAHF,EAnB2B;;YA0BrBoD,gBAAgB9W,SAAS8T,IAAT,CAActG,KAAd,CAAoB+I,YAA1C;YACMQ,oBAAoBxZ,KAAE,MAAF,EAAUiK,GAAV,CAAc,eAAd,CAA1B;aACE,MAAF,EAAUtD,IAAV,CAAe,eAAf,EAAgC4S,aAAhC,EAA+CtP,GAA/C,CAAmD,eAAnD,EAAuEwP,WAAWD,iBAAX,IAAgC,KAAKrD,eAA5G;;KA9bc;;WAkclB8B,eAlckB,8BAkcA;;WAEdpT,SAASyU,aAAX,EAA0B7S,IAA1B,CAA+B,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;YAC3CoX,UAAU/Z,KAAE2C,OAAF,EAAWgE,IAAX,CAAgB,eAAhB,CAAhB;;YACI,OAAOoT,OAAP,KAAmB,WAAvB,EAAoC;eAChCpX,OAAF,EAAWsH,GAAX,CAAe,eAAf,EAAgC8P,OAAhC,EAAyCtU,UAAzC,CAAoD,eAApD;;OAHJ,EAFgB;;WAUXZ,SAAS6U,cAAd,UAAiC7U,SAASiV,cAA1C,EAA4DrT,IAA5D,CAAiE,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;YAC7EqX,SAASha,KAAE2C,OAAF,EAAWgE,IAAX,CAAgB,cAAhB,CAAf;;YACI,OAAOqT,MAAP,KAAkB,WAAtB,EAAmC;eAC/BrX,OAAF,EAAWsH,GAAX,CAAe,cAAf,EAA+B+P,MAA/B,EAAuCvU,UAAvC,CAAkD,cAAlD;;OAHJ,EAVgB;;UAkBVsU,UAAU/Z,KAAE,MAAF,EAAU2G,IAAV,CAAe,eAAf,CAAhB;;UACI,OAAOoT,OAAP,KAAmB,WAAvB,EAAoC;aAChC,MAAF,EAAU9P,GAAV,CAAc,eAAd,EAA+B8P,OAA/B,EAAwCtU,UAAxC,CAAmD,eAAnD;;KAtdc;;WA0dlB4T,kBA1dkB,iCA0dG;;UACbY,YAAYxX,SAAS8V,aAAT,CAAuB,KAAvB,CAAlB;gBACUC,SAAV,GAAsBzT,UAAUmV,kBAAhC;eACS3D,IAAT,CAAce,WAAd,CAA0B2C,SAA1B;UACME,iBAAiBF,UAAUtJ,qBAAV,GAAkCyJ,KAAlC,GAA0CH,UAAUI,WAA3E;eACS9D,IAAT,CAAc+D,WAAd,CAA0BL,SAA1B;aACOE,cAAP;KAhegB;;;UAqeX3T,gBAreW,6BAqeMjD,MAreN,EAqecmJ,aAred,EAqe6B;aACtC,KAAKjG,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,uBACDmM,MAAM5M,OADL,EAED9I,KAAE,IAAF,EAAQ2G,IAAR,EAFC,EAGD,OAAOpD,MAAP,KAAkB,QAAlB,IAA8BA,MAH7B,CAAN;;YAMI,CAACoD,IAAL,EAAW;iBACF,IAAI+O,KAAJ,CAAU,IAAV,EAAgBnM,OAAhB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL,EAAamJ,aAAb;SAJF,MAKO,IAAInD,QAAQgG,IAAZ,EAAkB;eAClBA,IAAL,CAAU7C,aAAV;;OAnBG,CAAP;KAtegB;;;;0BAmFG;eACZnI,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OA6aFrG,QAAF,EAAYsE,EAAZ,CAAejC,MAAMkC,cAArB,EAAqCnC,SAAS2C,WAA9C,EAA2D,UAAU7G,KAAV,EAAiB;;;QACtEC,MAAJ;QACMsB,WAAWnC,KAAK2F,sBAAL,CAA4B,IAA5B,CAAjB;;QAEIxD,QAAJ,EAAc;eACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;QAGIqB,SAASvD,KAAEY,MAAF,EAAU+F,IAAV,CAAenC,QAAf,IACX,QADW,gBAERxE,KAAEY,MAAF,EAAU+F,IAAV,EAFQ,EAGR3G,KAAE,IAAF,EAAQ2G,IAAR,EAHQ,CAAf;;QAMI,KAAKiF,OAAL,KAAiB,GAAjB,IAAwB,KAAKA,OAAL,KAAiB,MAA7C,EAAqD;YAC7C9E,cAAN;;;QAGI2K,UAAUzR,KAAEY,MAAF,EAAUa,GAAV,CAAcqD,MAAMmB,IAApB,EAA0B,UAAC6M,SAAD,EAAe;UACnDA,UAAUxN,kBAAV,EAAJ,EAAoC;;;;;cAK5B7D,GAAR,CAAYqD,MAAM+L,MAAlB,EAA0B,YAAM;YAC1B7Q,cAAQa,EAAR,CAAW,UAAX,CAAJ,EAA4B;kBACrBqH,KAAL;;OAFJ;KANc,CAAhB;;UAaM1B,gBAAN,CAAuBlG,IAAvB,CAA4BN,KAAEY,MAAF,CAA5B,EAAuC2C,MAAvC,EAA+C,IAA/C;GA/BF;;;;;;;OAwCE1B,EAAF,CAAKyC,IAAL,IAAaoR,MAAMlP,gBAAnB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBwO,KAAzB;;OACE7T,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO+Q,MAAMlP,gBAAb;GAFF;;SAKOkP,KAAP;CApjBY,CAqjBX1V,CArjBW,CAAd;;ACNA;;;;;;;AAOA,IAAMua,UAAW,UAACva,IAAD,EAAO;;;;;;MAOhBsE,OAAsB,SAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,YAA5B;MACMC,kBAA0BD,QAAhC;MACMG,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MACM4V,eAAsB,YAA5B;MACMC,qBAAqB,IAAIxW,MAAJ,aAAqBuW,YAArB,WAAyC,GAAzC,CAA3B;MAEMzR,cAAc;eACI,SADJ;cAEI,QAFJ;WAGI,2BAHJ;aAII,QAJJ;WAKI,iBALJ;UAMI,SANJ;cAOI,kBAPJ;eAQI,mBARJ;YASI,iBATJ;eAUI,0BAVJ;uBAWI,gBAXJ;cAYI;GAZxB;MAeMoJ,gBAAgB;UACX,MADW;SAEX,KAFW;WAGX,OAHW;YAIX,QAJW;UAKX;GALX;MAQMrJ,UAAU;eACQ,IADR;cAEQ,yCACF,2BADE,GAEF,yCAJN;aAKQ,aALR;WAMQ,EANR;WAOQ,CAPR;UAQQ,KARR;cASQ,KATR;eAUQ,KAVR;YAWQ,CAXR;eAYQ,KAZR;uBAaQ,MAbR;cAcQ;GAdxB;MAiBM4R,aAAa;UACV,MADU;SAEV;GAFT;MAKM5V,QAAQ;mBACQL,SADR;uBAEUA,SAFV;mBAGQA,SAHR;qBAISA,SAJT;2BAKYA,SALZ;qBAMSA,SANT;yBAOWA,SAPX;2BAQYA,SARZ;+BAScA,SATd;+BAUcA;GAV5B;MAaMM,YAAY;UACT,MADS;UAET;GAFT;MAKMF,WAAW;aACC,UADD;mBAEC,gBAFD;WAGC;GAHlB;MAMM8V,UAAU;WACL,OADK;WAEL,OAFK;WAGL,OAHK;YAIL;;;;;;;GAJX;;MAcMJ,OAnGgB;;;qBAoGR5X,OAAZ,EAAqBY,MAArB,EAA6B;;;;;UAKvB,OAAOwP,MAAP,KAAkB,WAAtB,EAAmC;cAC3B,IAAI/E,SAAJ,CAAc,8DAAd,CAAN;OANyB;;;WAUtB4M,UAAL,GAAsB,IAAtB;WACKC,QAAL,GAAsB,CAAtB;WACKC,WAAL,GAAsB,EAAtB;WACKC,cAAL,GAAsB,EAAtB;WACK3I,OAAL,GAAsB,IAAtB,CAd2B;;WAiBtBzP,OAAL,GAAeA,OAAf;WACKY,MAAL,GAAe,KAAKiG,UAAL,CAAgBjG,MAAhB,CAAf;WACKyX,GAAL,GAAe,IAAf;;WAEKC,aAAL;KAzHkB;;;;;;WA4JpBC,MA5JoB,qBA4JX;WACFN,UAAL,GAAkB,IAAlB;KA7JkB;;WAgKpBO,OAhKoB,sBAgKV;WACHP,UAAL,GAAkB,KAAlB;KAjKkB;;WAoKpBQ,aApKoB,4BAoKJ;WACTR,UAAL,GAAkB,CAAC,KAAKA,UAAxB;KArKkB;;WAwKpBvT,MAxKoB,mBAwKb1G,KAxKa,EAwKN;UACR,CAAC,KAAKia,UAAV,EAAsB;;;;UAIlBja,KAAJ,EAAW;YACH0a,UAAU,KAAKxH,WAAL,CAAiBrP,QAAjC;YACIsQ,UAAU9U,KAAEW,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4B0U,OAA5B,CAAd;;YAEI,CAACvG,OAAL,EAAc;oBACF,IAAI,KAAKjB,WAAT,CACRlT,MAAM4Q,aADE,EAER,KAAK+J,kBAAL,EAFQ,CAAV;eAIE3a,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4B0U,OAA5B,EAAqCvG,OAArC;;;gBAGMiG,cAAR,CAAuBQ,KAAvB,GAA+B,CAACzG,QAAQiG,cAAR,CAAuBQ,KAAvD;;YAEIzG,QAAQ0G,oBAAR,EAAJ,EAAoC;kBAC1BC,MAAR,CAAe,IAAf,EAAqB3G,OAArB;SADF,MAEO;kBACG4G,MAAR,CAAe,IAAf,EAAqB5G,OAArB;;OAjBJ,MAmBO;YACD9U,KAAE,KAAK2b,aAAL,EAAF,EAAwBzV,QAAxB,CAAiCnB,UAAUkB,IAA3C,CAAJ,EAAsD;eAC/CyV,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;;;;aAIGD,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;KAtMgB;;WA0MpBjW,OA1MoB,sBA0MV;mBACK,KAAKqV,QAAlB;WAEEpV,UAAF,CAAa,KAAK9C,OAAlB,EAA2B,KAAKkR,WAAL,CAAiBrP,QAA5C;WAEE,KAAK7B,OAAP,EAAgBuI,GAAhB,CAAoB,KAAK2I,WAAL,CAAiBpP,SAArC;WACE,KAAK9B,OAAP,EAAgBiD,OAAhB,CAAwB,QAAxB,EAAkCsF,GAAlC,CAAsC,eAAtC;;UAEI,KAAK8P,GAAT,EAAc;aACV,KAAKA,GAAP,EAAYzU,MAAZ;;;WAGGqU,UAAL,GAAsB,IAAtB;WACKC,QAAL,GAAsB,IAAtB;WACKC,WAAL,GAAsB,IAAtB;WACKC,cAAL,GAAsB,IAAtB;;UACI,KAAK3I,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAaoB,OAAb;;;WAGGpB,OAAL,GAAe,IAAf;WACKzP,OAAL,GAAe,IAAf;WACKY,MAAL,GAAe,IAAf;WACKyX,GAAL,GAAe,IAAf;KAjOkB;;WAoOpBzL,IApOoB,mBAoOb;;;UACDvP,KAAE,KAAK2C,OAAP,EAAgBsH,GAAhB,CAAoB,SAApB,MAAmC,MAAvC,EAA+C;cACvC,IAAI9F,KAAJ,CAAU,qCAAV,CAAN;;;UAGI2O,YAAY9S,KAAE8E,KAAF,CAAQ,KAAK+O,WAAL,CAAiB/O,KAAjB,CAAuBmB,IAA/B,CAAlB;;UACI,KAAK2V,aAAL,MAAwB,KAAKhB,UAAjC,EAA6C;aACzC,KAAKjY,OAAP,EAAgBQ,OAAhB,CAAwB2P,SAAxB;YAEM+I,aAAa7b,KAAEiI,QAAF,CACjB,KAAKtF,OAAL,CAAamZ,aAAb,CAA2BrQ,eADV,EAEjB,KAAK9I,OAFY,CAAnB;;YAKImQ,UAAUxN,kBAAV,MAAkC,CAACuW,UAAvC,EAAmD;;;;YAI7Cb,MAAQ,KAAKW,aAAL,EAAd;YACMI,QAAQhc,KAAKic,MAAL,CAAY,KAAKnI,WAAL,CAAiBvP,IAA7B,CAAd;YAEI6D,YAAJ,CAAiB,IAAjB,EAAuB4T,KAAvB;aACKpZ,OAAL,CAAawF,YAAb,CAA0B,kBAA1B,EAA8C4T,KAA9C;aAEKE,UAAL;;YAEI,KAAK1Y,MAAL,CAAY2Y,SAAhB,EAA2B;eACvBlB,GAAF,EAAO7N,QAAP,CAAgBpI,UAAUoB,IAA1B;;;YAGI8N,YAAa,OAAO,KAAK1Q,MAAL,CAAY0Q,SAAnB,KAAiC,UAAjC,GACf,KAAK1Q,MAAL,CAAY0Q,SAAZ,CAAsB3T,IAAtB,CAA2B,IAA3B,EAAiC0a,GAAjC,EAAsC,KAAKrY,OAA3C,CADe,GAEf,KAAKY,MAAL,CAAY0Q,SAFhB;;YAIMkI,aAAa,KAAKC,cAAL,CAAoBnI,SAApB,CAAnB;;aACKoI,kBAAL,CAAwBF,UAAxB;YAEMG,YAAY,KAAK/Y,MAAL,CAAY+Y,SAAZ,KAA0B,KAA1B,GAAkC7Z,SAAS8T,IAA3C,GAAkDvW,KAAE,KAAKuD,MAAL,CAAY+Y,SAAd,CAApE;aAEEtB,GAAF,EAAOrU,IAAP,CAAY,KAAKkN,WAAL,CAAiBrP,QAA7B,EAAuC,IAAvC;;YAEI,CAACxE,KAAEiI,QAAF,CAAW,KAAKtF,OAAL,CAAamZ,aAAb,CAA2BrQ,eAAtC,EAAuD,KAAKuP,GAA5D,CAAL,EAAuE;eACnEA,GAAF,EAAOtC,QAAP,CAAgB4D,SAAhB;;;aAGA,KAAK3Z,OAAP,EAAgBQ,OAAhB,CAAwB,KAAK0Q,WAAL,CAAiB/O,KAAjB,CAAuByX,QAA/C;aAEKnK,OAAL,GAAe,IAAIW,MAAJ,CAAW,KAAKpQ,OAAhB,EAAyBqY,GAAzB,EAA8B;qBAChCmB,UADgC;qBAEhC;oBACD;sBACE,KAAK5Y,MAAL,CAAYkR;aAFb;kBAIH;wBACM,KAAKlR,MAAL,CAAYiZ;aALf;mBAOF;uBACI3X,SAAS4X;aARX;6BAUQ;iCACI,KAAKlZ,MAAL,CAAY4P;;WAbQ;oBAgBjC,kBAACxM,IAAD,EAAU;gBACdA,KAAK+V,iBAAL,KAA2B/V,KAAKsN,SAApC,EAA+C;oBACxC0I,4BAAL,CAAkChW,IAAlC;;WAlBuC;oBAqBjC,kBAACA,IAAD,EAAU;kBACbgW,4BAAL,CAAkChW,IAAlC;;SAtBW,CAAf;aA0BEqU,GAAF,EAAO7N,QAAP,CAAgBpI,UAAUkB,IAA1B,EAnE2C;;;;;YAyEvC,kBAAkBxD,SAASgJ,eAA/B,EAAgD;eAC5C,MAAF,EAAUyB,QAAV,GAAqBnG,EAArB,CAAwB,WAAxB,EAAqC,IAArC,EAA2C/G,KAAEuT,IAA7C;;;YAGIlD,WAAW,SAAXA,QAAW,GAAM;cACjB,MAAK9M,MAAL,CAAY2Y,SAAhB,EAA2B;kBACpBU,cAAL;;;cAEIC,iBAAiB,MAAK/B,WAA5B;gBACKA,WAAL,GAAuB,IAAvB;eAEE,MAAKnY,OAAP,EAAgBQ,OAAhB,CAAwB,MAAK0Q,WAAL,CAAiB/O,KAAjB,CAAuBwL,KAA/C;;cAEIuM,mBAAmBnC,WAAWoC,GAAlC,EAAuC;kBAChCpB,MAAL,CAAY,IAAZ;;SAVJ;;YAcI3b,KAAKgC,qBAAL,MAAgC/B,KAAE,KAAKgb,GAAP,EAAY9U,QAAZ,CAAqBnB,UAAUoB,IAA/B,CAApC,EAA0E;eACtE,KAAK6U,GAAP,EACGvZ,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwByY,QAAQwC,oBAFhC;SADF,MAIO;;;;KAzUS;;WA+UpBzN,IA/UoB,iBA+Uf6I,QA/Ue,EA+UL;;;UACP6C,MAAY,KAAKW,aAAL,EAAlB;UACM3G,YAAYhV,KAAE8E,KAAF,CAAQ,KAAK+O,WAAL,CAAiB/O,KAAjB,CAAuB4L,IAA/B,CAAlB;;UACML,WAAW,SAAXA,QAAW,GAAM;YACjB,OAAKyK,WAAL,KAAqBJ,WAAWzU,IAAhC,IAAwC+U,IAAI/F,UAAhD,EAA4D;cACtDA,UAAJ,CAAeqF,WAAf,CAA2BU,GAA3B;;;eAGGgC,cAAL;;eACKra,OAAL,CAAa6U,eAAb,CAA6B,kBAA7B;;aACE,OAAK7U,OAAP,EAAgBQ,OAAhB,CAAwB,OAAK0Q,WAAL,CAAiB/O,KAAjB,CAAuB+L,MAA/C;;YACI,OAAKuB,OAAL,KAAiB,IAArB,EAA2B;iBACpBA,OAAL,CAAaoB,OAAb;;;YAGE2E,QAAJ,EAAc;;;OAZhB;;WAiBE,KAAKxV,OAAP,EAAgBQ,OAAhB,CAAwB6R,SAAxB;;UAEIA,UAAU1P,kBAAV,EAAJ,EAAoC;;;;WAIlC0V,GAAF,EAAOhV,WAAP,CAAmBjB,UAAUkB,IAA7B,EA1Ba;;;UA8BT,kBAAkBxD,SAASgJ,eAA/B,EAAgD;aAC5C,MAAF,EAAUyB,QAAV,GAAqBhC,GAArB,CAAyB,WAAzB,EAAsC,IAAtC,EAA4ClL,KAAEuT,IAA9C;;;WAGGwH,cAAL,CAAoBJ,QAAQhH,KAA5B,IAAqC,KAArC;WACKoH,cAAL,CAAoBJ,QAAQlS,KAA5B,IAAqC,KAArC;WACKsS,cAAL,CAAoBJ,QAAQsC,KAA5B,IAAqC,KAArC;;UAEIld,KAAKgC,qBAAL,MACA/B,KAAE,KAAKgb,GAAP,EAAY9U,QAAZ,CAAqBnB,UAAUoB,IAA/B,CADJ,EAC0C;aACtC6U,GAAF,EACGvZ,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;OAFF,MAKO;;;;WAIFkW,WAAL,GAAmB,EAAnB;KA9XkB;;WAiYpBrH,MAjYoB,qBAiYX;UACH,KAAKrB,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAasB,cAAb;;KAnYgB;;;WAyYpBkI,aAzYoB,4BAyYJ;aACPxY,QAAQ,KAAK8Z,QAAL,EAAR,CAAP;KA1YkB;;WA6YpBb,kBA7YoB,+BA6YDF,UA7YC,EA6YW;WAC3B,KAAKR,aAAL,EAAF,EAAwBxO,QAAxB,CAAoCqN,YAApC,SAAoD2B,UAApD;KA9YkB;;WAiZpBR,aAjZoB,4BAiZJ;WACTX,GAAL,GAAW,KAAKA,GAAL,IAAYhb,KAAE,KAAKuD,MAAL,CAAY4Z,QAAd,EAAwB,CAAxB,CAAvB;aACO,KAAKnC,GAAZ;KAnZkB;;WAsZpBiB,UAtZoB,yBAsZP;UACLmB,OAAOpd,KAAE,KAAK2b,aAAL,EAAF,CAAb;WACK0B,iBAAL,CAAuBD,KAAKra,IAAL,CAAU8B,SAASyY,aAAnB,CAAvB,EAA0D,KAAKJ,QAAL,EAA1D;WACKlX,WAAL,CAAoBjB,UAAUoB,IAA9B,SAAsCpB,UAAUkB,IAAhD;KAzZkB;;WA4ZpBoX,iBA5ZoB,8BA4ZF3W,QA5ZE,EA4ZQ6W,OA5ZR,EA4ZiB;UAC7BC,OAAO,KAAKja,MAAL,CAAYia,IAAzB;;UACI,OAAOD,OAAP,KAAmB,QAAnB,KAAgCA,QAAQla,QAAR,IAAoBka,QAAQrM,MAA5D,CAAJ,EAAyE;;YAEnEsM,IAAJ,EAAU;cACJ,CAACxd,KAAEud,OAAF,EAAW5X,MAAX,GAAoB9E,EAApB,CAAuB6F,QAAvB,CAAL,EAAuC;qBAC5B+W,KAAT,GAAiBC,MAAjB,CAAwBH,OAAxB;;SAFJ,MAIO;mBACII,IAAT,CAAc3d,KAAEud,OAAF,EAAWI,IAAX,EAAd;;OAPJ,MASO;iBACIH,OAAO,MAAP,GAAgB,MAAzB,EAAiCD,OAAjC;;KAxagB;;WA4apBL,QA5aoB,uBA4aT;UACLU,QAAQ,KAAKjb,OAAL,CAAaC,YAAb,CAA0B,qBAA1B,CAAZ;;UAEI,CAACgb,KAAL,EAAY;gBACF,OAAO,KAAKra,MAAL,CAAYqa,KAAnB,KAA6B,UAA7B,GACJ,KAAKra,MAAL,CAAYqa,KAAZ,CAAkBtd,IAAlB,CAAuB,KAAKqC,OAA5B,CADI,GAEJ,KAAKY,MAAL,CAAYqa,KAFhB;;;aAKKA,KAAP;KArbkB;;;WA0bpBxB,cA1boB,2BA0bLnI,SA1bK,EA0bM;aACjB9B,cAAc8B,UAAU7P,WAAV,EAAd,CAAP;KA3bkB;;WA8bpB6W,aA9boB,4BA8bJ;;;UACR4C,WAAW,KAAKta,MAAL,CAAYJ,OAAZ,CAAoB2a,KAApB,CAA0B,GAA1B,CAAjB;eAESC,OAAT,CAAiB,UAAC5a,OAAD,EAAa;YACxBA,YAAY,OAAhB,EAAyB;eACrB,OAAKR,OAAP,EAAgBoE,EAAhB,CACE,OAAK8M,WAAL,CAAiB/O,KAAjB,CAAuB6O,KADzB,EAEE,OAAKpQ,MAAL,CAAYrB,QAFd,EAGE,UAACvB,KAAD;mBAAW,OAAK0G,MAAL,CAAY1G,KAAZ,CAAX;WAHF;SADF,MAMO,IAAIwC,YAAYwX,QAAQqD,MAAxB,EAAgC;cAC/BC,UAAU9a,YAAYwX,QAAQsC,KAApB,GACZ,OAAKpJ,WAAL,CAAiB/O,KAAjB,CAAuByG,UADX,GAEZ,OAAKsI,WAAL,CAAiB/O,KAAjB,CAAuBmS,OAF3B;cAGMiH,WAAW/a,YAAYwX,QAAQsC,KAApB,GACb,OAAKpJ,WAAL,CAAiB/O,KAAjB,CAAuB0G,UADV,GAEb,OAAKqI,WAAL,CAAiB/O,KAAjB,CAAuBqZ,QAF3B;eAIE,OAAKxb,OAAP,EACGoE,EADH,CAEIkX,OAFJ,EAGI,OAAK1a,MAAL,CAAYrB,QAHhB,EAII,UAACvB,KAAD;mBAAW,OAAK8a,MAAL,CAAY9a,KAAZ,CAAX;WAJJ,EAMGoG,EANH,CAOImX,QAPJ,EAQI,OAAK3a,MAAL,CAAYrB,QARhB,EASI,UAACvB,KAAD;mBAAW,OAAK+a,MAAL,CAAY/a,KAAZ,CAAX;WATJ;;;aAaA,OAAKgC,OAAP,EAAgBiD,OAAhB,CAAwB,QAAxB,EAAkCmB,EAAlC,CACE,eADF,EAEE;iBAAM,OAAKuI,IAAL,EAAN;SAFF;OA5BF;;UAkCI,KAAK/L,MAAL,CAAYrB,QAAhB,EAA0B;aACnBqB,MAAL,gBACK,KAAKA,MADV;mBAEW,QAFX;oBAGY;;OAJd,MAMO;aACA6a,SAAL;;KA1egB;;WA8epBA,SA9eoB,wBA8eR;UACJC,YAAY,OAAO,KAAK1b,OAAL,CAAaC,YAAb,CAA0B,qBAA1B,CAAzB;;UACI,KAAKD,OAAL,CAAaC,YAAb,CAA0B,OAA1B,KACDyb,cAAc,QADjB,EAC2B;aACpB1b,OAAL,CAAawF,YAAb,CACE,qBADF,EAEE,KAAKxF,OAAL,CAAaC,YAAb,CAA0B,OAA1B,KAAsC,EAFxC;aAIKD,OAAL,CAAawF,YAAb,CAA0B,OAA1B,EAAmC,EAAnC;;KAtfgB;;WA0fpBsT,MA1foB,mBA0fb9a,KA1fa,EA0fNmU,OA1fM,EA0fG;UACfuG,UAAU,KAAKxH,WAAL,CAAiBrP,QAAjC;gBAEUsQ,WAAW9U,KAAEW,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4B0U,OAA5B,CAArB;;UAEI,CAACvG,OAAL,EAAc;kBACF,IAAI,KAAKjB,WAAT,CACRlT,MAAM4Q,aADE,EAER,KAAK+J,kBAAL,EAFQ,CAAV;aAIE3a,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4B0U,OAA5B,EAAqCvG,OAArC;;;UAGEnU,KAAJ,EAAW;gBACDoa,cAAR,CACEpa,MAAMgH,IAAN,KAAe,SAAf,GAA2BgT,QAAQlS,KAAnC,GAA2CkS,QAAQsC,KADrD,IAEI,IAFJ;;;UAKEjd,KAAE8U,QAAQ6G,aAAR,EAAF,EAA2BzV,QAA3B,CAAoCnB,UAAUkB,IAA9C,KACD6O,QAAQgG,WAAR,KAAwBJ,WAAWzU,IADtC,EAC4C;gBAClC6U,WAAR,GAAsBJ,WAAWzU,IAAjC;;;;mBAIW6O,QAAQ+F,QAArB;cAEQC,WAAR,GAAsBJ,WAAWzU,IAAjC;;UAEI,CAAC6O,QAAQvR,MAAR,CAAe+a,KAAhB,IAAyB,CAACxJ,QAAQvR,MAAR,CAAe+a,KAAf,CAAqB/O,IAAnD,EAAyD;gBAC/CA,IAAR;;;;cAIMsL,QAAR,GAAmBlP,WAAW,YAAM;YAC9BmJ,QAAQgG,WAAR,KAAwBJ,WAAWzU,IAAvC,EAA6C;kBACnCsJ,IAAR;;OAFe,EAIhBuF,QAAQvR,MAAR,CAAe+a,KAAf,CAAqB/O,IAJL,CAAnB;KA5hBkB;;WAmiBpBmM,MAniBoB,mBAmiBb/a,KAniBa,EAmiBNmU,OAniBM,EAmiBG;UACfuG,UAAU,KAAKxH,WAAL,CAAiBrP,QAAjC;gBAEUsQ,WAAW9U,KAAEW,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4B0U,OAA5B,CAArB;;UAEI,CAACvG,OAAL,EAAc;kBACF,IAAI,KAAKjB,WAAT,CACRlT,MAAM4Q,aADE,EAER,KAAK+J,kBAAL,EAFQ,CAAV;aAIE3a,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4B0U,OAA5B,EAAqCvG,OAArC;;;UAGEnU,KAAJ,EAAW;gBACDoa,cAAR,CACEpa,MAAMgH,IAAN,KAAe,UAAf,GAA4BgT,QAAQlS,KAApC,GAA4CkS,QAAQsC,KADtD,IAEI,KAFJ;;;UAKEnI,QAAQ0G,oBAAR,EAAJ,EAAoC;;;;mBAIvB1G,QAAQ+F,QAArB;cAEQC,WAAR,GAAsBJ,WAAWoC,GAAjC;;UAEI,CAAChI,QAAQvR,MAAR,CAAe+a,KAAhB,IAAyB,CAACxJ,QAAQvR,MAAR,CAAe+a,KAAf,CAAqBhP,IAAnD,EAAyD;gBAC/CA,IAAR;;;;cAIMuL,QAAR,GAAmBlP,WAAW,YAAM;YAC9BmJ,QAAQgG,WAAR,KAAwBJ,WAAWoC,GAAvC,EAA4C;kBAClCxN,IAAR;;OAFe,EAIhBwF,QAAQvR,MAAR,CAAe+a,KAAf,CAAqBhP,IAJL,CAAnB;KAnkBkB;;WA0kBpBkM,oBA1kBoB,mCA0kBG;WAChB,IAAMrY,OAAX,IAAsB,KAAK4X,cAA3B,EAA2C;YACrC,KAAKA,cAAL,CAAoB5X,OAApB,CAAJ,EAAkC;iBACzB,IAAP;;;;aAIG,KAAP;KAjlBkB;;WAolBpBqG,UAplBoB,uBAolBTjG,MAplBS,EAolBD;4BAEZ,KAAKsQ,WAAL,CAAiB/K,OADtB,EAEK9I,KAAE,KAAK2C,OAAP,EAAgBgE,IAAhB,EAFL,EAGKpD,MAHL;;UAMI,OAAOA,OAAO+a,KAAd,KAAwB,QAA5B,EAAsC;eAC7BA,KAAP,GAAe;gBACP/a,OAAO+a,KADA;gBAEP/a,OAAO+a;SAFf;;;UAME,OAAO/a,OAAOqa,KAAd,KAAwB,QAA5B,EAAsC;eAC7BA,KAAP,GAAera,OAAOqa,KAAP,CAAavd,QAAb,EAAf;;;UAGE,OAAOkD,OAAOga,OAAd,KAA0B,QAA9B,EAAwC;eAC/BA,OAAP,GAAiBha,OAAOga,OAAP,CAAeld,QAAf,EAAjB;;;WAGG8K,eAAL,CACE7G,IADF,EAEEf,MAFF,EAGE,KAAKsQ,WAAL,CAAiB9K,WAHnB;aAMOxF,MAAP;KAhnBkB;;WAmnBpB+X,kBAnnBoB,iCAmnBC;UACb/X,SAAS,EAAf;;UAEI,KAAKA,MAAT,EAAiB;aACV,IAAMgb,GAAX,IAAkB,KAAKhb,MAAvB,EAA+B;cACzB,KAAKsQ,WAAL,CAAiB/K,OAAjB,CAAyByV,GAAzB,MAAkC,KAAKhb,MAAL,CAAYgb,GAAZ,CAAtC,EAAwD;mBAC/CA,GAAP,IAAc,KAAKhb,MAAL,CAAYgb,GAAZ,CAAd;;;;;aAKChb,MAAP;KA9nBkB;;WAioBpByZ,cAjoBoB,6BAioBH;UACTI,OAAOpd,KAAE,KAAK2b,aAAL,EAAF,CAAb;UACM6C,WAAWpB,KAAKjN,IAAL,CAAU,OAAV,EAAmB5P,KAAnB,CAAyBka,kBAAzB,CAAjB;;UACI+D,aAAa,IAAb,IAAqBA,SAASxb,MAAT,GAAkB,CAA3C,EAA8C;aACvCgD,WAAL,CAAiBwY,SAASC,IAAT,CAAc,EAAd,CAAjB;;KAroBgB;;WAyoBpB9B,4BAzoBoB,yCAyoBShW,IAzoBT,EAyoBe;WAC5BqW,cAAL;;WACKX,kBAAL,CAAwB,KAAKD,cAAL,CAAoBzV,KAAKsN,SAAzB,CAAxB;KA3oBkB;;WA8oBpB2I,cA9oBoB,6BA8oBH;UACT5B,MAAM,KAAKW,aAAL,EAAZ;UACM+C,sBAAsB,KAAKnb,MAAL,CAAY2Y,SAAxC;;UACIlB,IAAIpY,YAAJ,CAAiB,aAAjB,MAAoC,IAAxC,EAA8C;;;;WAG5CoY,GAAF,EAAOhV,WAAP,CAAmBjB,UAAUoB,IAA7B;WACK5C,MAAL,CAAY2Y,SAAZ,GAAwB,KAAxB;WACK5M,IAAL;WACKC,IAAL;WACKhM,MAAL,CAAY2Y,SAAZ,GAAwBwC,mBAAxB;KAxpBkB;;;YA6pBblY,gBA7pBa,6BA6pBIjD,MA7pBJ,EA6pBY;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;YAEI,CAACoD,IAAD,IAAS,eAAezC,IAAf,CAAoBX,MAApB,CAAb,EAA0C;;;;YAItC,CAACoD,IAAL,EAAW;iBACF,IAAI4T,OAAJ,CAAY,IAAZ,EAAkBhR,OAAlB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAjBG,CAAP;KA9pBkB;;;;0BA8HC;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;0BAGgB;eACTxE,IAAP;;;;0BAGoB;eACbE,QAAP;;;;0BAGiB;eACVM,KAAP;;;;0BAGqB;eACdL,SAAP;;;;0BAGuB;eAChBsE,WAAP;;;;;;;;;;;;OAoiBFlH,EAAF,CAAKyC,IAAL,IAAaiW,QAAQ/T,gBAArB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBqT,OAAzB;;OACE1Y,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO4V,QAAQ/T,gBAAf;GAFF;;SAKO+T,OAAP;CAlsBc,CAmsBbva,CAnsBa,EAmsBV+S,MAnsBU,CAAhB;;ACRA;;;;;;;AAOA,IAAM4L,UAAW,UAAC3e,IAAD,EAAO;;;;;;MAOhBsE,OAAsB,SAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,YAA5B;MACMC,kBAA0BD,QAAhC;MACMG,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMkW,eAAsB,YAA5B;MACMC,qBAAsB,IAAIxW,MAAJ,aAAqBuW,YAArB,WAAyC,GAAzC,CAA5B;MAEM1R,uBACDyR,QAAQzR,OADP;eAEQ,OAFR;aAGQ,OAHR;aAIQ,EAJR;cAKQ,yCACA,2BADA,GAEA,kCAFA,GAGA;IARd;MAWMC,2BACDwR,QAAQxR,WADP;aAEM;IAFZ;MAKMhE,YAAY;UACT,MADS;UAET;GAFT;MAKMF,WAAW;WACL,iBADK;aAEL;GAFZ;MAKMC,QAAQ;mBACQL,SADR;uBAEUA,SAFV;mBAGQA,SAHR;qBAISA,SAJT;2BAKYA,SALZ;qBAMSA,SANT;yBAOWA,SAPX;2BAQYA,SARZ;+BAScA,SATd;+BAUcA;;;;;;;GAV5B;;MAmBMka,OA5DgB;;;;;;;;;;;;WA6FpB/C,aA7FoB,4BA6FJ;aACP,KAAKsB,QAAL,MAAmB,KAAK0B,WAAL,EAA1B;KA9FkB;;WAiGpBvC,kBAjGoB,+BAiGDF,UAjGC,EAiGW;WAC3B,KAAKR,aAAL,EAAF,EAAwBxO,QAAxB,CAAoCqN,YAApC,SAAoD2B,UAApD;KAlGkB;;WAqGpBR,aArGoB,4BAqGJ;WACTX,GAAL,GAAW,KAAKA,GAAL,IAAYhb,KAAE,KAAKuD,MAAL,CAAY4Z,QAAd,EAAwB,CAAxB,CAAvB;aACO,KAAKnC,GAAZ;KAvGkB;;WA0GpBiB,UA1GoB,yBA0GP;UACLmB,OAAOpd,KAAE,KAAK2b,aAAL,EAAF,CAAb,CADW;;WAIN0B,iBAAL,CAAuBD,KAAKra,IAAL,CAAU8B,SAASga,KAAnB,CAAvB,EAAkD,KAAK3B,QAAL,EAAlD;;UACIK,UAAU,KAAKqB,WAAL,EAAd;;UACI,OAAOrB,OAAP,KAAmB,UAAvB,EAAmC;kBACvBA,QAAQjd,IAAR,CAAa,KAAKqC,OAAlB,CAAV;;;WAEG0a,iBAAL,CAAuBD,KAAKra,IAAL,CAAU8B,SAASia,OAAnB,CAAvB,EAAoDvB,OAApD;WAEKvX,WAAL,CAAoBjB,UAAUoB,IAA9B,SAAsCpB,UAAUkB,IAAhD;KArHkB;;;WA0HpB2Y,WA1HoB,0BA0HN;aACL,KAAKjc,OAAL,CAAaC,YAAb,CAA0B,cAA1B,KACL,KAAKW,MAAL,CAAYga,OADd;KA3HkB;;WA+HpBP,cA/HoB,6BA+HH;UACTI,OAAOpd,KAAE,KAAK2b,aAAL,EAAF,CAAb;UACM6C,WAAWpB,KAAKjN,IAAL,CAAU,OAAV,EAAmB5P,KAAnB,CAAyBka,kBAAzB,CAAjB;;UACI+D,aAAa,IAAb,IAAqBA,SAASxb,MAAT,GAAkB,CAA3C,EAA8C;aACvCgD,WAAL,CAAiBwY,SAASC,IAAT,CAAc,EAAd,CAAjB;;KAnIgB;;;YAyIbjY,gBAzIa,6BAyIIjD,MAzIJ,EAyIY;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD;;YAEI,CAACoD,IAAD,IAAS,eAAezC,IAAf,CAAoBX,MAApB,CAAb,EAA0C;;;;YAItC,CAACoD,IAAL,EAAW;iBACF,IAAIgY,OAAJ,CAAY,IAAZ,EAAkBpV,OAAlB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAjBG,CAAP;KA1IkB;;;;;0BA+DC;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;0BAGgB;eACTxE,IAAP;;;;0BAGoB;eACbE,QAAP;;;;0BAGiB;eACVM,KAAP;;;;0BAGqB;eACdL,SAAP;;;;0BAGuB;eAChBsE,WAAP;;;;IA5BkBwR,OA5DA;;;;;;;;OAuKpB1Y,EAAF,CAAKyC,IAAL,IAAaqa,QAAQnY,gBAArB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyByX,OAAzB;;OACE9c,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOga,QAAQnY,gBAAf;GAFF;;SAKOmY,OAAP;CA9Kc,CA+Kb3e,CA/Ka,CAAhB;;ACPA;;;;;;;AAOA,IAAM+e,YAAa,UAAC/e,IAAD,EAAO;;;;;;MAOlBsE,OAAqB,WAA3B;MACMC,UAAqB,OAA3B;MACMC,WAAqB,cAA3B;MACMC,kBAAyBD,QAA/B;MACME,eAAqB,WAA3B;MACMC,qBAAqB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA3B;MAEMwE,UAAU;YACL,EADK;YAEL,MAFK;YAGL;GAHX;MAMMC,cAAc;YACT,QADS;YAET,QAFS;YAGT;GAHX;MAMMjE,QAAQ;2BACeL,SADf;uBAEaA,SAFb;4BAGWA,SAAvB,GAAmCC;GAHrC;MAMMK,YAAY;mBACA,eADA;mBAEA,eAFA;YAGA;GAHlB;MAMMF,WAAW;cACG,qBADH;YAEG,SAFH;oBAGG,mBAHH;eAIG,WAJH;eAKG,WALH;gBAMG,kBANH;cAOG,WAPH;oBAQG,gBARH;qBASG;GATpB;MAYMma,eAAe;YACR,QADQ;cAER;;;;;;;GAFb;;MAWMD,SA7DkB;;;uBA8DVpc,OAAZ,EAAqBY,MAArB,EAA6B;;;WACtByB,QAAL,GAAsBrC,OAAtB;WACKsc,cAAL,GAAsBtc,QAAQiJ,OAAR,KAAoB,MAApB,GAA6BxK,MAA7B,GAAsCuB,OAA5D;WACK4G,OAAL,GAAsB,KAAKC,UAAL,CAAgBjG,MAAhB,CAAtB;WACK0L,SAAL,GAAyB,KAAK1F,OAAL,CAAa3I,MAAhB,SAA0BiE,SAASqa,SAAnC,UACG,KAAK3V,OAAL,CAAa3I,MADhB,SAC0BiE,SAASsa,UADnC,WAEG,KAAK5V,OAAL,CAAa3I,MAFhB,SAE0BiE,SAASua,cAFnC,CAAtB;WAGKC,QAAL,GAAsB,EAAtB;WACKC,QAAL,GAAsB,EAAtB;WACKC,aAAL,GAAsB,IAAtB;WACKC,aAAL,GAAsB,CAAtB;WAEE,KAAKP,cAAP,EAAuBlY,EAAvB,CAA0BjC,MAAM2a,MAAhC,EAAwC,UAAC9e,KAAD;eAAW,MAAK+e,QAAL,CAAc/e,KAAd,CAAX;OAAxC;WAEKgf,OAAL;;WACKD,QAAL;KA7EoB;;;;;;WA4FtBC,OA5FsB,sBA4FZ;;;UACFC,aAAa,KAAKX,cAAL,KAAwB,KAAKA,cAAL,CAAoB7d,MAA5C,GACf4d,aAAaa,MADE,GACOb,aAAac,QADvC;UAGMC,eAAe,KAAKxW,OAAL,CAAayW,MAAb,KAAwB,MAAxB,GACjBJ,UADiB,GACJ,KAAKrW,OAAL,CAAayW,MAD9B;UAGMC,aAAaF,iBAAiBf,aAAac,QAA9B,GACf,KAAKI,aAAL,EADe,GACQ,CAD3B;WAGKb,QAAL,GAAgB,EAAhB;WACKC,QAAL,GAAgB,EAAhB;WAEKE,aAAL,GAAqB,KAAKW,gBAAL,EAArB;UAEMC,UAAUpgB,KAAE8L,SAAF,CAAY9L,KAAE,KAAKiP,SAAP,CAAZ,CAAhB;cAGGoR,GADH,CACO,UAAC1d,OAAD,EAAa;YACZ/B,MAAJ;YACM0f,iBAAiBvgB,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAvB;;YAEI2d,cAAJ,EAAoB;mBACTtgB,KAAEsgB,cAAF,EAAkB,CAAlB,CAAT;;;YAGE1f,MAAJ,EAAY;cACJ2f,YAAY3f,OAAO+P,qBAAP,EAAlB;;cACI4P,UAAUnG,KAAV,IAAmBmG,UAAUC,MAAjC,EAAyC;;mBAEhC,CACLxgB,KAAEY,MAAF,EAAUmf,YAAV,IAA0BU,GAA1B,GAAgCR,UAD3B,EAELK,cAFK,CAAP;;;;eAMG,IAAP;OAnBJ,EAqBGtR,MArBH,CAqBU,UAAC0R,IAAD;eAAUA,IAAV;OArBV,EAsBGC,IAtBH,CAsBQ,UAACC,CAAD,EAAIC,CAAJ;eAAUD,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAjB;OAtBR,EAuBG9C,OAvBH,CAuBW,UAAC2C,IAAD,EAAU;eACZrB,QAAL,CAAcnQ,IAAd,CAAmBwR,KAAK,CAAL,CAAnB;;eACKpB,QAAL,CAAcpQ,IAAd,CAAmBwR,KAAK,CAAL,CAAnB;OAzBJ;KA7GoB;;WA0ItBlb,OA1IsB,sBA0IZ;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACE,KAAKya,cAAP,EAAuB/T,GAAvB,CAA2BzG,SAA3B;WAEKO,QAAL,GAAsB,IAAtB;WACKia,cAAL,GAAsB,IAAtB;WACK1V,OAAL,GAAsB,IAAtB;WACK0F,SAAL,GAAsB,IAAtB;WACKoQ,QAAL,GAAsB,IAAtB;WACKC,QAAL,GAAsB,IAAtB;WACKC,aAAL,GAAsB,IAAtB;WACKC,aAAL,GAAsB,IAAtB;KArJoB;;;WA0JtBhW,UA1JsB,uBA0JXjG,MA1JW,EA0JH;4BAEZuF,OADL,EAEKvF,MAFL;;UAKI,OAAOA,OAAO3C,MAAd,KAAyB,QAA7B,EAAuC;YACjCgO,KAAK5O,KAAEuD,OAAO3C,MAAT,EAAiBuP,IAAjB,CAAsB,IAAtB,CAAT;;YACI,CAACvB,EAAL,EAAS;eACF7O,KAAKic,MAAL,CAAY1X,IAAZ,CAAL;eACEf,OAAO3C,MAAT,EAAiBuP,IAAjB,CAAsB,IAAtB,EAA4BvB,EAA5B;;;eAEKhO,MAAP,SAAoBgO,EAApB;;;WAGGzD,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aAEOxF,MAAP;KA3KoB;;WA8KtB2c,aA9KsB,4BA8KN;aACP,KAAKjB,cAAL,KAAwB7d,MAAxB,GACH,KAAK6d,cAAL,CAAoB6B,WADjB,GAC+B,KAAK7B,cAAL,CAAoBxH,SAD1D;KA/KoB;;WAmLtB0I,gBAnLsB,+BAmLH;aACV,KAAKlB,cAAL,CAAoBpG,YAApB,IAAoCtW,KAAKwe,GAAL,CACzCte,SAAS8T,IAAT,CAAcsC,YAD2B,EAEzCpW,SAASgJ,eAAT,CAAyBoN,YAFgB,CAA3C;KApLoB;;WA0LtBmI,gBA1LsB,+BA0LH;aACV,KAAK/B,cAAL,KAAwB7d,MAAxB,GACHA,OAAO6f,WADJ,GACkB,KAAKhC,cAAL,CAAoBtO,qBAApB,GAA4C6P,MADrE;KA3LoB;;WA+LtBd,QA/LsB,uBA+LX;UACHjI,YAAe,KAAKyI,aAAL,KAAuB,KAAK3W,OAAL,CAAakL,MAAzD;;UACMoE,eAAe,KAAKsH,gBAAL,EAArB;;UACMe,YAAe,KAAK3X,OAAL,CAAakL,MAAb,GACnBoE,YADmB,GAEnB,KAAKmI,gBAAL,EAFF;;UAII,KAAKxB,aAAL,KAAuB3G,YAA3B,EAAyC;aAClC8G,OAAL;;;UAGElI,aAAayJ,SAAjB,EAA4B;YACpBtgB,SAAS,KAAK0e,QAAL,CAAc,KAAKA,QAAL,CAActc,MAAd,GAAuB,CAArC,CAAf;;YAEI,KAAKuc,aAAL,KAAuB3e,MAA3B,EAAmC;eAC5BugB,SAAL,CAAevgB,MAAf;;;;;;UAKA,KAAK2e,aAAL,IAAsB9H,YAAY,KAAK4H,QAAL,CAAc,CAAd,CAAlC,IAAsD,KAAKA,QAAL,CAAc,CAAd,IAAmB,CAA7E,EAAgF;aACzEE,aAAL,GAAqB,IAArB;;aACK6B,MAAL;;;;;WAIG,IAAItS,IAAI,KAAKuQ,QAAL,CAAcrc,MAA3B,EAAmC8L,GAAnC,GAAyC;YACjCuS,iBAAiB,KAAK9B,aAAL,KAAuB,KAAKD,QAAL,CAAcxQ,CAAd,CAAvB,IACnB2I,aAAa,KAAK4H,QAAL,CAAcvQ,CAAd,CADM,KAElB,OAAO,KAAKuQ,QAAL,CAAcvQ,IAAI,CAAlB,CAAP,KAAgC,WAAhC,IACG2I,YAAY,KAAK4H,QAAL,CAAcvQ,IAAI,CAAlB,CAHG,CAAvB;;YAKIuS,cAAJ,EAAoB;eACbF,SAAL,CAAe,KAAK7B,QAAL,CAAcxQ,CAAd,CAAf;;;KAhOgB;;WAqOtBqS,SArOsB,sBAqOZvgB,MArOY,EAqOJ;WACX2e,aAAL,GAAqB3e,MAArB;;WAEKwgB,MAAL;;UAEIE,UAAU,KAAKrS,SAAL,CAAe6O,KAAf,CAAqB,GAArB,CAAd,CALgB;;;gBAONwD,QAAQjB,GAAR,CAAY,UAACne,QAAD,EAAc;eACxBA,QAAH,uBAA4BtB,MAA5B,aACGsB,QADH,gBACqBtB,MADrB,SAAP;OADQ,CAAV;UAKM2gB,QAAQvhB,KAAEshB,QAAQ7C,IAAR,CAAa,GAAb,CAAF,CAAd;;UAEI8C,MAAMrb,QAAN,CAAenB,UAAUyc,aAAzB,CAAJ,EAA6C;cACrC5b,OAAN,CAAcf,SAAS4c,QAAvB,EAAiC1e,IAAjC,CAAsC8B,SAAS6c,eAA/C,EAAgEvU,QAAhE,CAAyEpI,UAAU8C,MAAnF;cACMsF,QAAN,CAAepI,UAAU8C,MAAzB;OAFF,MAGO;;cAECsF,QAAN,CAAepI,UAAU8C,MAAzB,EAFK;;;cAKC8Z,OAAN,CAAc9c,SAAS+c,cAAvB,EAAuC1X,IAAvC,CAA+CrF,SAASqa,SAAxD,UAAsEra,SAASsa,UAA/E,EAA6FhS,QAA7F,CAAsGpI,UAAU8C,MAAhH,EALK;;cAOC8Z,OAAN,CAAc9c,SAAS+c,cAAvB,EAAuC1X,IAAvC,CAA4CrF,SAASgd,SAArD,EAAgE3U,QAAhE,CAAyErI,SAASqa,SAAlF,EAA6F/R,QAA7F,CAAsGpI,UAAU8C,MAAhH;;;WAGA,KAAKoX,cAAP,EAAuB9b,OAAvB,CAA+B2B,MAAMgd,QAArC,EAA+C;uBAC9BlhB;OADjB;KAhQoB;;WAqQtBwgB,MArQsB,qBAqQb;WACL,KAAKnS,SAAP,EAAkBD,MAAlB,CAAyBnK,SAASgD,MAAlC,EAA0C7B,WAA1C,CAAsDjB,UAAU8C,MAAhE;KAtQoB;;;cA2QfrB,gBA3Qe,6BA2QEjD,MA3QF,EA2QU;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;YAEI,CAACoD,IAAL,EAAW;iBACF,IAAIoY,SAAJ,CAAc,IAAd,EAAoBxV,OAApB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAbG,CAAP;KA5QoB;;;;0BAkFD;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OA8MF1H,MAAF,EAAU2F,EAAV,CAAajC,MAAMuJ,aAAnB,EAAkC,YAAM;QAChC0T,aAAa/hB,KAAE8L,SAAF,CAAY9L,KAAE6E,SAASmd,QAAX,CAAZ,CAAnB;;SAEK,IAAIlT,IAAIiT,WAAW/e,MAAxB,EAAgC8L,GAAhC,GAAsC;UAC9BmT,OAAOjiB,KAAE+hB,WAAWjT,CAAX,CAAF,CAAb;;gBACUtI,gBAAV,CAA2BlG,IAA3B,CAAgC2hB,IAAhC,EAAsCA,KAAKtb,IAAL,EAAtC;;GALJ;;;;;;;OAeE9E,EAAF,CAAKyC,IAAL,IAAaya,UAAUvY,gBAAvB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyB6X,SAAzB;;OACEld,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOoa,UAAUvY,gBAAjB;GAFF;;SAKOuY,SAAP;CA3TgB,CA4Tf/e,CA5Te,CAAlB;;ACPA;;;;;;;AAOA,IAAMkiB,MAAO,UAACliB,IAAD,EAAO;;;;;;MAOZsE,OAAsB,KAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,QAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MAEME,QAAQ;mBACYL,SADZ;uBAEcA,SAFd;mBAGYA,SAHZ;qBAIaA,SAJb;8BAKaA,SAAzB,GAAqCC;GALvC;MAQMK,YAAY;mBACA,eADA;YAEA,QAFA;cAGA,UAHA;UAIA,MAJA;UAKA;GALlB;MAQMF,WAAW;cACS,WADT;oBAES,mBAFT;YAGS,SAHT;eAIS,gBAJT;iBAKS,iEALT;qBAMS,kBANT;2BAOS;;;;;;;GAP1B;;MAgBMqd,GA/CY;;;iBAgDJvf,OAAZ,EAAqB;WACdqC,QAAL,GAAgBrC,OAAhB;KAjDc;;;;;;WA4DhB4M,IA5DgB,mBA4DT;;;UACD,KAAKvK,QAAL,CAAciQ,UAAd,IACA,KAAKjQ,QAAL,CAAciQ,UAAd,CAAyB5R,QAAzB,KAAsC+T,KAAKC,YAD3C,IAEArX,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CAFA,IAGA7H,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU2N,QAApC,CAHJ,EAGmD;;;;UAI/C9R,MAAJ;UACIuhB,QAAJ;UACMC,cAAcpiB,KAAE,KAAKgF,QAAP,EAAiBY,OAAjB,CAAyBf,SAAS+c,cAAlC,EAAkD,CAAlD,CAApB;UACM1f,WAAWnC,KAAK2F,sBAAL,CAA4B,KAAKV,QAAjC,CAAjB;;UAEIod,WAAJ,EAAiB;YACTC,eAAeD,YAAYE,QAAZ,KAAyB,IAAzB,GAAgCzd,SAAS0d,SAAzC,GAAqD1d,SAASgD,MAAnF;mBACW7H,KAAE8L,SAAF,CAAY9L,KAAEoiB,WAAF,EAAerf,IAAf,CAAoBsf,YAApB,CAAZ,CAAX;mBACWF,SAASA,SAASnf,MAAT,GAAkB,CAA3B,CAAX;;;UAGIgS,YAAYhV,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,EAAoB;uBACrB,KAAK1L;OADJ,CAAlB;UAIM8N,YAAY9S,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,EAAoB;uBACrBkc;OADC,CAAlB;;UAIIA,QAAJ,EAAc;aACVA,QAAF,EAAYhf,OAAZ,CAAoB6R,SAApB;;;WAGA,KAAKhQ,QAAP,EAAiB7B,OAAjB,CAAyB2P,SAAzB;;UAEIA,UAAUxN,kBAAV,MACD0P,UAAU1P,kBAAV,EADH,EACmC;;;;UAI/BpD,QAAJ,EAAc;iBACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;WAGGif,SAAL,CACE,KAAKnc,QADP,EAEEod,WAFF;;UAKM/R,WAAW,SAAXA,QAAW,GAAM;YACfmS,cAAcxiB,KAAE8E,KAAF,CAAQA,MAAM+L,MAAd,EAAsB;yBACzB,MAAK7L;SADF,CAApB;YAIM2S,aAAa3X,KAAE8E,KAAF,CAAQA,MAAMwL,KAAd,EAAqB;yBACvB6R;SADE,CAAnB;aAIEA,QAAF,EAAYhf,OAAZ,CAAoBqf,WAApB;aACE,MAAKxd,QAAP,EAAiB7B,OAAjB,CAAyBwU,UAAzB;OAVF;;UAaI/W,MAAJ,EAAY;aACLugB,SAAL,CAAevgB,MAAf,EAAuBA,OAAOqU,UAA9B,EAA0C5E,QAA1C;OADF,MAEO;;;KA1HO;;WA+HhB7K,OA/HgB,sBA+HN;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACKQ,QAAL,GAAgB,IAAhB;KAjIc;;;WAsIhBmc,SAtIgB,sBAsINxe,OAtIM,EAsIG2Z,SAtIH,EAsIcnE,QAtId,EAsIwB;;;UAClCsK,cAAJ;;UACInG,UAAUgG,QAAV,KAAuB,IAA3B,EAAiC;yBACdtiB,KAAEsc,SAAF,EAAavZ,IAAb,CAAkB8B,SAAS0d,SAA3B,CAAjB;OADF,MAEO;yBACYviB,KAAEsc,SAAF,EAAapP,QAAb,CAAsBrI,SAASgD,MAA/B,CAAjB;;;UAGI6a,SAASD,eAAe,CAAf,CAAf;UACM3R,kBAAkBqH,YACtBpY,KAAKgC,qBAAL,EADsB,IAErB2gB,UAAU1iB,KAAE0iB,MAAF,EAAUxc,QAAV,CAAmBnB,UAAUoB,IAA7B,CAFb;;UAIMkK,WAAW,SAAXA,QAAW;eAAM,OAAKsS,mBAAL,CACrBhgB,OADqB,EAErB+f,MAFqB,EAGrBvK,QAHqB,CAAN;OAAjB;;UAMIuK,UAAU5R,eAAd,EAA+B;aAC3B4R,MAAF,EACGjhB,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;OADF,MAIO;;;KA7JO;;WAkKhB+d,mBAlKgB,gCAkKIhgB,OAlKJ,EAkKa+f,MAlKb,EAkKqBvK,QAlKrB,EAkK+B;UACzCuK,MAAJ,EAAY;aACRA,MAAF,EAAU1c,WAAV,CAAyBjB,UAAUkB,IAAnC,SAA2ClB,UAAU8C,MAArD;YAEM+a,gBAAgB5iB,KAAE0iB,OAAOzN,UAAT,EAAqBlS,IAArB,CACpB8B,SAASge,qBADW,EAEpB,CAFoB,CAAtB;;YAIID,aAAJ,EAAmB;eACfA,aAAF,EAAiB5c,WAAjB,CAA6BjB,UAAU8C,MAAvC;;;YAGE6a,OAAO9f,YAAP,CAAoB,MAApB,MAAgC,KAApC,EAA2C;iBAClCuF,YAAP,CAAoB,eAApB,EAAqC,KAArC;;;;WAIFxF,OAAF,EAAWwK,QAAX,CAAoBpI,UAAU8C,MAA9B;;UACIlF,QAAQC,YAAR,CAAqB,MAArB,MAAiC,KAArC,EAA4C;gBAClCuF,YAAR,CAAqB,eAArB,EAAsC,IAAtC;;;WAGG0F,MAAL,CAAYlL,OAAZ;WACEA,OAAF,EAAWwK,QAAX,CAAoBpI,UAAUkB,IAA9B;;UAEItD,QAAQsS,UAAR,IACAjV,KAAE2C,QAAQsS,UAAV,EAAsB/O,QAAtB,CAA+BnB,UAAU+d,aAAzC,CADJ,EAC6D;YACrDC,kBAAkB/iB,KAAE2C,OAAF,EAAWiD,OAAX,CAAmBf,SAAS4c,QAA5B,EAAsC,CAAtC,CAAxB;;YACIsB,eAAJ,EAAqB;eACjBA,eAAF,EAAmBhgB,IAAnB,CAAwB8B,SAAS6c,eAAjC,EAAkDvU,QAAlD,CAA2DpI,UAAU8C,MAArE;;;gBAGMM,YAAR,CAAqB,eAArB,EAAsC,IAAtC;;;UAGEgQ,QAAJ,EAAc;;;KArMA;;;QA4MT3R,gBA5MS,6BA4MQjD,MA5MR,EA4MgB;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACrB6K,QAAQtR,KAAE,IAAF,CAAd;YACI2G,OAAO2K,MAAM3K,IAAN,CAAWnC,QAAX,CAAX;;YAEI,CAACmC,IAAL,EAAW;iBACF,IAAIub,GAAJ,CAAQ,IAAR,CAAP;gBACMvb,IAAN,CAAWnC,QAAX,EAAqBmC,IAArB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAbG,CAAP;KA7Mc;;;;0BAsDK;eACZgB,OAAP;;;;;;;;;;;;OA+KF9B,QAAF,EACGsE,EADH,CACMjC,MAAMkC,cADZ,EAC4BnC,SAAS2C,WADrC,EACkD,UAAU7G,KAAV,EAAiB;UACzDmG,cAAN;;QACIN,gBAAJ,CAAqBlG,IAArB,CAA0BN,KAAE,IAAF,CAA1B,EAAmC,MAAnC;GAHJ;;;;;;;OAYE6B,EAAF,CAAKyC,IAAL,IAAa4d,IAAI1b,gBAAjB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBgb,GAAzB;;OACErgB,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOud,IAAI1b,gBAAX;GAFF;;SAKO0b,GAAP;CAzPU,CA0PTliB,CA1PS,CAAZ;;ACGA;;;;;;;AAOA,CAAC,UAACA,IAAD,EAAO;MACF,OAAOA,IAAP,KAAa,WAAjB,EAA8B;UACtB,IAAIgO,SAAJ,CAAc,kGAAd,CAAN;;;MAGIgV,UAAUhjB,KAAE6B,EAAF,CAAKqP,MAAL,CAAY4M,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,EAA0BA,KAA1B,CAAgC,GAAhC,CAAhB;MACMmF,WAAW,CAAjB;MACMC,UAAU,CAAhB;MACMC,WAAW,CAAjB;MACMC,WAAW,CAAjB;MACMC,WAAW,CAAjB;;MAEIL,QAAQ,CAAR,IAAaE,OAAb,IAAwBF,QAAQ,CAAR,IAAaG,QAArC,IAAiDH,QAAQ,CAAR,MAAeC,QAAf,IAA2BD,QAAQ,CAAR,MAAeG,QAA1C,IAAsDH,QAAQ,CAAR,IAAaI,QAApH,IAAgIJ,QAAQ,CAAR,KAAcK,QAAlJ,EAA4J;UACpJ,IAAIlf,KAAJ,CAAU,8EAAV,CAAN;;CAbJ,EAeGnE,CAfH;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.bundle.min.js b/library/bootstrap/js/bootstrap.bundle.min.js
new file mode 100644
index 000000000..7d50e873a
--- /dev/null
+++ b/library/bootstrap/js/bootstrap.bundle.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(t.bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function n(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function i(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}for(var o,s,a,l,c,h,f,u,d,p,g,m,_,v,E,y,b,T,C,w,I,A,D,S,O,N,k=function(t){var e=!1;function n(e){var n=this,r=!1;return t(this).one(i.TRANSITION_END,function(){r=!0}),setTimeout(function(){r||i.triggerTransitionEnd(n)},e),this}var i={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n,i=e.getAttribute("data-target");i&&"#"!==i||(i=e.getAttribute("href")||""),"#"===i.charAt(0)&&(n=i,i=n="function"==typeof t.escapeSelector?t.escapeSelector(n).substr(1):n.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1"));try{return t(document).find(i).length>0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var o=n[r],s=e[r],a=s&&i.isElement(s)?"element":(l=s,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+a+'" but expected type "'+o+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e=e&&e.hasOwnProperty("default")?e.default:e),L=(s="alert",l="."+(a="bs.alert"),c=(o=e).fn[s],h={CLOSE:"close"+l,CLOSED:"closed"+l,CLICK_DATA_API:"click"+l+".data-api"},f="alert",u="fade",d="show",p=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,a),this._element=null},e._getRootElement=function(t){var e=k.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(h.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(d),k.supportsTransitionEnd()&&o(t).hasClass(u)?o(t).one(k.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(h.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(a);i||(i=new t(this),n.data(a,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),o.fn[s]=p._jQueryInterface,o.fn[s].Constructor=p,o.fn[s].noConflict=function(){return o.fn[s]=c,p._jQueryInterface},p),P=(m="button",v="."+(_="bs.button"),E=".data-api",y=(g=e).fn[m],b="active",T="btn",C="focus",w='[data-toggle^="button"]',I='[data-toggle="buttons"]',A="input",D=".active",S=".btn",O={CLICK_DATA_API:"click"+v+E,FOCUS_BLUR_DATA_API:"focus"+v+E+" blur"+v+E},N=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(I)[0];if(n){var i=g(this._element).find(A)[0];if(i){if("radio"===i.type)if(i.checked&&g(this._element).hasClass(b))t=!1;else{var r=g(n).find(D)[0];r&&g(r).removeClass(b)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!g(this._element).hasClass(b),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!g(this._element).hasClass(b)),t&&g(this._element).toggleClass(b)},e.dispose=function(){g.removeData(this._element,_),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=g(this).data(_);n||(n=new t(this),g(this).data(_,n)),"toggle"===e&&n[e]()})},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),g(document).on(O.CLICK_DATA_API,w,function(t){t.preventDefault();var e=t.target;g(e).hasClass(T)||(e=g(e).closest(S)),N._jQueryInterface.call(g(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,w,function(t){var e=g(t.target).closest(S)[0];g(e).toggleClass(C,/^focus(in)?$/.test(t.type))}),g.fn[m]=N._jQueryInterface,g.fn[m].Constructor=N,g.fn[m].noConflict=function(){return g.fn[m]=y,N._jQueryInterface},N),x=function(t){var e="carousel",n="bs.carousel",o="."+n,s=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},c="next",h="prev",f="left",u="right",d={SLIDE:"slide"+o,SLID:"slid"+o,KEYDOWN:"keydown"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o,TOUCHEND:"touchend"+o,LOAD_DATA_API:"load"+o+".data-api",CLICK_DATA_API:"click"+o+".data-api"},p="carousel",g="active",m="slide",_="carousel-item-right",v="carousel-item-left",E="carousel-item-next",y="carousel-item-prev",b={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},T=function(){function s(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(b.INDICATORS)[0],this._addEventListeners()}var T=s.prototype;return T.next=function(){this._isSliding||this._slide(c)},T.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},T.prev=function(){this._isSliding||this._slide(h)},T.pause=function(e){e||(this._isPaused=!0),t(this._element).find(b.NEXT_PREV)[0]&&k.supportsTransitionEnd()&&(k.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},T.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},T.to=function(e){var n=this;this._activeElement=t(this._element).find(b.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var r=e>i?c:h;this._slide(r,this._items[e])}},T.dispose=function(){t(this._element).off(o),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},T._getConfig=function(t){return t=r({},a,t),k.typeCheckConfig(e,t,l),t},T._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},T._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},T._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(b.ITEM)),this._items.indexOf(e)},T._getItemByDirection=function(t,e){var n=t===c,i=t===h,r=this._getItemIndex(e),o=this._items.length-1;if((i&&0===r||n&&r===o)&&!this._config.wrap)return e;var s=(r+(t===h?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},T._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),r=this._getItemIndex(t(this._element).find(b.ACTIVE_ITEM)[0]),o=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:r,to:i});return t(this._element).trigger(o),o},T._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(b.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},T._slide=function(e,n){var i,r,o,s=this,a=t(this._element).find(b.ACTIVE_ITEM)[0],l=this._getItemIndex(a),h=n||a&&this._getItemByDirection(e,a),p=this._getItemIndex(h),T=Boolean(this._interval);if(e===c?(i=v,r=E,o=f):(i=_,r=y,o=u),h&&t(h).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(h,o).isDefaultPrevented()&&a&&h){this._isSliding=!0,T&&this.pause(),this._setActiveIndicatorElement(h);var C=t.Event(d.SLID,{relatedTarget:h,direction:o,from:l,to:p});k.supportsTransitionEnd()&&t(this._element).hasClass(m)?(t(h).addClass(r),k.reflow(h),t(a).addClass(i),t(h).addClass(i),t(a).one(k.TRANSITION_END,function(){t(h).removeClass(i+" "+r).addClass(g),t(a).removeClass(g+" "+r+" "+i),s._isSliding=!1,setTimeout(function(){return t(s._element).trigger(C)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(h).addClass(g),this._isSliding=!1,t(this._element).trigger(C)),T&&this.cycle()}},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),o=r({},a,t(this).data());"object"==typeof e&&(o=r({},o,e));var l="string"==typeof e?e:o.slide;if(i||(i=new s(this,o),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else o.interval&&(i.pause(),i.cycle())})},s._dataApiClickHandler=function(e){var i=k.getSelectorFromElement(this);if(i){var o=t(i)[0];if(o&&t(o).hasClass(p)){var a=r({},t(o).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),s._jQueryInterface.call(t(o),a),l&&t(o).data(n).to(l),e.preventDefault()}}},i(s,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),s}();return t(document).on(d.CLICK_DATA_API,b.DATA_SLIDE,T._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(b.DATA_RIDE).each(function(){var e=t(this);T._jQueryInterface.call(e,e.data())})}),t.fn[e]=T._jQueryInterface,t.fn[e].Constructor=T,t.fn[e].noConflict=function(){return t.fn[e]=s,T._jQueryInterface},T}(e),R=function(t){var e="collapse",n="bs.collapse",o="."+n,s=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},c={SHOW:"show"+o,SHOWN:"shown"+o,HIDE:"hide"+o,HIDDEN:"hidden"+o,CLICK_DATA_API:"click"+o+".data-api"},h="show",f="collapse",u="collapsing",d="collapsed",p="width",g="height",m={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},_=function(){function o(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(m.DATA_TOGGLE),r=0;r<i.length;r++){var o=i[r],s=k.getSelectorFromElement(o);null!==s&&t(s).filter(e).length>0&&(this._selector=s,this._triggerArray.push(o))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var s=o.prototype;return s.toggle=function(){t(this._element).hasClass(h)?this.hide():this.show()},s.show=function(){var e,i,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(h)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(m.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(i=t(e).not(this._selector).data(n))&&i._isTransitioning))){var s=t.Event(c.SHOW);if(t(this._element).trigger(s),!s.isDefaultPrevented()){e&&(o._jQueryInterface.call(t(e).not(this._selector),"hide"),i||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(f).addClass(u),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(u).addClass(f).addClass(h),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(c.SHOWN)};if(k.supportsTransitionEnd()){var p="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(k.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[p]+"px"}else l()}}},s.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(h)){var n=t.Event(c.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",k.reflow(this._element),t(this._element).addClass(u).removeClass(f).removeClass(h),this._triggerArray.length>0)for(var r=0;r<this._triggerArray.length;r++){var o=this._triggerArray[r],s=k.getSelectorFromElement(o);if(null!==s)t(s).hasClass(h)||t(o).addClass(d).attr("aria-expanded",!1)}this.setTransitioning(!0);var a=function(){e.setTransitioning(!1),t(e._element).removeClass(u).addClass(f).trigger(c.HIDDEN)};this._element.style[i]="",k.supportsTransitionEnd()?t(this._element).one(k.TRANSITION_END,a).emulateTransitionEnd(600):a()}}},s.setTransitioning=function(t){this._isTransitioning=t},s.dispose=function(){t.removeData(this._element,n),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},s._getConfig=function(t){return(t=r({},a,t)).toggle=Boolean(t.toggle),k.typeCheckConfig(e,t,l),t},s._getDimension=function(){return t(this._element).hasClass(p)?p:g},s._getParent=function(){var e=this,n=null;k.isElement(this._config.parent)?(n=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(n=this._config.parent[0])):n=t(this._config.parent)[0];var i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(o._getTargetFromElement(n),[n])}),n},s._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(h);n.length>0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},o._getTargetFromElement=function(e){var n=k.getSelectorFromElement(e);return n?t(n)[0]:null},o._jQueryInterface=function(e){return this.each(function(){var i=t(this),s=i.data(n),l=r({},a,i.data(),"object"==typeof e&&e);if(!s&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),s||(s=new o(this,l),i.data(n,s)),"string"==typeof e){if("undefined"==typeof s[e])throw new TypeError('No method named "'+e+'"');s[e]()}})},i(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(c.CLICK_DATA_API,m.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),r=k.getSelectorFromElement(this);t(r).each(function(){var e=t(this),r=e.data(n)?"toggle":i.data();_._jQueryInterface.call(e,r)})}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=s,_._jQueryInterface},_}(e),j="undefined"!=typeof window&&"undefined"!=typeof document,H=["Edge","Trident","Firefox"],M=0,W=0;W<H.length;W+=1)if(j&&navigator.userAgent.indexOf(H[W])>=0){M=1;break}var U=j&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},M))}};function B(t){return t&&"[object Function]"==={}.toString.call(t)}function F(t,e){if(1!==t.nodeType)return[];var n=getComputedStyle(t,null);return e?n[e]:n}function K(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function V(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=F(t),n=e.overflow,i=e.overflowX,r=e.overflowY;return/(auto|scroll)/.test(n+r+i)?t:V(K(t))}function Q(t){var e=t&&t.offsetParent,n=e&&e.nodeName;return n&&"BODY"!==n&&"HTML"!==n?-1!==["TD","TABLE"].indexOf(e.nodeName)&&"static"===F(e,"position")?Q(e):e:t?t.ownerDocument.documentElement:document.documentElement}function Y(t){return null!==t.parentNode?Y(t.parentNode):t}function G(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,r=n?e:t,o=document.createRange();o.setStart(i,0),o.setEnd(r,0);var s,a,l=o.commonAncestorContainer;if(t!==l&&e!==l||i.contains(r))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&Q(s.firstElementChild)!==s?Q(l):l;var c=Y(t);return c.host?G(c.host,e):G(t,Y(e).host)}function q(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function z(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}var X=void 0,Z=function(){return void 0===X&&(X=-1!==navigator.appVersion.indexOf("MSIE 10")),X};function J(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Z()?n["offset"+t]+i["margin"+("Height"===t?"Top":"Left")]+i["margin"+("Height"===t?"Bottom":"Right")]:0)}function $(){var t=document.body,e=document.documentElement,n=Z()&&getComputedStyle(e);return{height:J("Height",t,e,n),width:J("Width",t,e,n)}}var tt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},et=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),nt=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},it=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function rt(t){return it({},t,{right:t.left+t.width,bottom:t.top+t.height})}function ot(t){var e={};if(Z())try{e=t.getBoundingClientRect();var n=q(t,"top"),i=q(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}catch(t){}else e=t.getBoundingClientRect();var r={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},o="HTML"===t.nodeName?$():{},s=o.width||t.clientWidth||r.right-r.left,a=o.height||t.clientHeight||r.bottom-r.top,l=t.offsetWidth-s,c=t.offsetHeight-a;if(l||c){var h=F(t);l-=z(h,"x"),c-=z(h,"y"),r.width-=l,r.height-=c}return rt(r)}function st(t,e){var n=Z(),i="HTML"===e.nodeName,r=ot(t),o=ot(e),s=V(t),a=F(e),l=parseFloat(a.borderTopWidth,10),c=parseFloat(a.borderLeftWidth,10),h=rt({top:r.top-o.top-l,left:r.left-o.left-c,width:r.width,height:r.height});if(h.marginTop=0,h.marginLeft=0,!n&&i){var f=parseFloat(a.marginTop,10),u=parseFloat(a.marginLeft,10);h.top-=l-f,h.bottom-=l-f,h.left-=c-u,h.right-=c-u,h.marginTop=f,h.marginLeft=u}return(n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=q(e,"top"),r=q(e,"left"),o=n?-1:1;return t.top+=i*o,t.bottom+=i*o,t.left+=r*o,t.right+=r*o,t}(h,e)),h}function at(t,e,n,i){var r,o,s,a,l,c,h,f={top:0,left:0},u=G(t,e);if("viewport"===i)o=(r=u).ownerDocument.documentElement,s=st(r,o),a=Math.max(o.clientWidth,window.innerWidth||0),l=Math.max(o.clientHeight,window.innerHeight||0),c=q(o),h=q(o,"left"),f=rt({top:c-s.top+s.marginTop,left:h-s.left+s.marginLeft,width:a,height:l});else{var d=void 0;"scrollParent"===i?"BODY"===(d=V(K(e))).nodeName&&(d=t.ownerDocument.documentElement):d="window"===i?t.ownerDocument.documentElement:i;var p=st(d,u);if("HTML"!==d.nodeName||function t(e){var n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===F(e,"position")||t(K(e)))}(u))f=p;else{var g=$(),m=g.height,_=g.width;f.top+=p.top-p.marginTop,f.bottom=m+p.top,f.left+=p.left-p.marginLeft,f.right=_+p.left}}return f.left+=n,f.top+=n,f.right-=n,f.bottom-=n,f}function lt(t,e,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=at(n,i,o,r),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return it({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),h=c.length>0?c[0].key:l[0].key,f=t.split("-")[1];return h+(f?"-"+f:"")}function ct(t,e,n){return st(n,G(e,n))}function ht(t){var e=getComputedStyle(t),n=parseFloat(e.marginTop)+parseFloat(e.marginBottom),i=parseFloat(e.marginLeft)+parseFloat(e.marginRight);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function ft(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function ut(t,e,n){n=n.split("-")[0];var i=ht(t),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),s=o?"top":"left",a=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[s]=e[s]+e[l]/2-i[l]/2,r[a]=n===a?e[a]-i[c]:e[ft(a)],r}function dt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function pt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=dt(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",n))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&B(n)&&(e.offsets.popper=rt(e.offsets.popper),e.offsets.reference=rt(e.offsets.reference),e=n(e,t))}),e}function gt(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function mt(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length-1;i++){var r=e[i],o=r?""+r+n:t;if("undefined"!=typeof document.body.style[o])return o}return null}function _t(t){var e=t.ownerDocument;return e?e.defaultView:window}function vt(t,e,n,i){n.updateBound=i,_t(t).addEventListener("resize",n.updateBound,{passive:!0});var r=V(t);return function t(e,n,i,r){var o="BODY"===e.nodeName,s=o?e.ownerDocument.defaultView:e;s.addEventListener(n,i,{passive:!0}),o||t(V(s.parentNode),n,i,r),r.push(s)}(r,"scroll",n.updateBound,n.scrollParents),n.scrollElement=r,n.eventsEnabled=!0,n}function Et(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,_t(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function yt(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function bt(t,e){Object.keys(e).forEach(function(n){var i="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&yt(e[n])&&(i="px"),t.style[n]=e[n]+i})}function Tt(t,e,n){var i=dt(t,function(t){return t.name===e}),r=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!r){var o="`"+e+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+o+" modifier in order to work, be sure to include it before "+o+"!")}return r}var Ct=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],wt=Ct.slice(3);function It(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=wt.indexOf(t),i=wt.slice(n+1).concat(wt.slice(0,n));return e?i.reverse():i}var At={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Dt(t,e,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),s=t.split(/(\+|\-)/).map(function(t){return t.trim()}),a=s.indexOf(dt(s,function(t){return-1!==t.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==a?[s.slice(0,a).concat([s[a].split(l)[0]]),[s[a].split(l)[1]].concat(s.slice(a+1))]:[s];return(c=c.map(function(t,i){var r=(1===i?!o:o)?"height":"width",s=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,s=!0,t):s?(t[t.length-1]+=e,s=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var r=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],s=r[2];if(!o)return t;if(0===s.indexOf("%")){var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return rt(a)[e]/100*o}if("vh"===s||"vw"===s)return("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o;return o}(t,r,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){yt(n)&&(r[e]+=n*("-"===t[i-1]?-1:1))})}),r}var St={placement:"bottom",eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var r=t.offsets,o=r.reference,s=r.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:nt({},l,o[l]),end:nt({},l,o[l]+o[c]-s[c])};t.offsets.popper=it({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,r=t.offsets,o=r.popper,s=r.reference,a=i.split("-")[0],l=void 0;return l=yt(+n)?[+n,0]:Dt(n,o,s,a),"left"===a?(o.top+=l[0],o.left-=l[1]):"right"===a?(o.top+=l[0],o.left+=l[1]):"top"===a?(o.left+=l[0],o.top-=l[1]):"bottom"===a&&(o.left+=l[0],o.top+=l[1]),t.popper=o,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||Q(t.instance.popper);t.instance.reference===n&&(n=Q(n));var i=at(t.instance.popper,t.instance.reference,e.padding,n);e.boundaries=i;var r=e.priority,o=t.offsets.popper,s={primary:function(t){var n=o[t];return o[t]<i[t]&&!e.escapeWithReference&&(n=Math.max(o[t],i[t])),nt({},t,n)},secondary:function(t){var n="right"===t?"left":"top",r=o[n];return o[t]>i[t]&&!e.escapeWithReference&&(r=Math.min(o[n],i[t]-("right"===t?o.width:o.height))),nt({},n,r)}};return r.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";o=it({},o,s[e](t))}),t.offsets.popper=o,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,r=t.placement.split("-")[0],o=Math.floor,s=-1!==["top","bottom"].indexOf(r),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<o(i[l])&&(t.offsets.popper[l]=o(i[l])-n[c]),n[l]>o(i[a])&&(t.offsets.popper[l]=o(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Tt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var r=t.placement.split("-")[0],o=t.offsets,s=o.popper,a=o.reference,l=-1!==["left","right"].indexOf(r),c=l?"height":"width",h=l?"Top":"Left",f=h.toLowerCase(),u=l?"left":"top",d=l?"bottom":"right",p=ht(i)[c];a[d]-p<s[f]&&(t.offsets.popper[f]-=s[f]-(a[d]-p)),a[f]+p>s[d]&&(t.offsets.popper[f]+=a[f]+p-s[d]),t.offsets.popper=rt(t.offsets.popper);var g=a[f]+a[c]/2-p/2,m=F(t.instance.popper),_=parseFloat(m["margin"+h],10),v=parseFloat(m["border"+h+"Width"],10),E=g-t.offsets.popper[f]-_-v;return E=Math.max(Math.min(s[c]-p,E),0),t.arrowElement=i,t.offsets.arrow=(nt(n={},f,Math.round(E)),nt(n,u,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(gt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=at(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement),i=t.placement.split("-")[0],r=ft(i),o=t.placement.split("-")[1]||"",s=[];switch(e.behavior){case At.FLIP:s=[i,r];break;case At.CLOCKWISE:s=It(i);break;case At.COUNTERCLOCKWISE:s=It(i,!0);break;default:s=e.behavior}return s.forEach(function(a,l){if(i!==a||s.length===l+1)return t;i=t.placement.split("-")[0],r=ft(i);var c,h=t.offsets.popper,f=t.offsets.reference,u=Math.floor,d="left"===i&&u(h.right)>u(f.left)||"right"===i&&u(h.left)<u(f.right)||"top"===i&&u(h.bottom)>u(f.top)||"bottom"===i&&u(h.top)<u(f.bottom),p=u(h.left)<u(n.left),g=u(h.right)>u(n.right),m=u(h.top)<u(n.top),_=u(h.bottom)>u(n.bottom),v="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&_,E=-1!==["top","bottom"].indexOf(i),y=!!e.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&_);(d||v||y)&&(t.flipped=!0,(d||v)&&(i=s[l+1]),y&&(o="end"===(c=o)?"start":"start"===c?"end":c),t.placement=i+(o?"-"+o:""),t.offsets.popper=it({},t.offsets.popper,ut(t.instance.popper,t.offsets.reference,t.placement)),t=pt(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,r=i.popper,o=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return r[s?"left":"top"]=o[n]-(a?r[s?"width":"height"]:0),t.placement=ft(e),t.offsets.popper=rt(r),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Tt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=dt(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,r=t.offsets.popper,o=dt(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==o&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s=void 0!==o?o:e.gpuAcceleration,a=ot(Q(t.instance.popper)),l={position:r.position},c={left:Math.floor(r.left),top:Math.floor(r.top),bottom:Math.floor(r.bottom),right:Math.floor(r.right)},h="bottom"===n?"top":"bottom",f="right"===i?"left":"right",u=mt("transform"),d=void 0,p=void 0;if(p="bottom"===h?-a.height+c.bottom:c.top,d="right"===f?-a.width+c.right:c.left,s&&u)l[u]="translate3d("+d+"px, "+p+"px, 0)",l[h]=0,l[f]=0,l.willChange="transform";else{var g="bottom"===h?-1:1,m="right"===f?-1:1;l[h]=p*g,l[f]=d*m,l.willChange=h+", "+f}var _={"x-placement":t.placement};return t.attributes=it({},_,t.attributes),t.styles=it({},l,t.styles),t.arrowStyles=it({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return bt(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&bt(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,r){var o=ct(0,e,t),s=lt(n.placement,o,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",s),bt(e,{position:"absolute"}),n},gpuAcceleration:void 0}}},Ot=function(){function t(e,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};tt(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=U(this.update.bind(this)),this.options=it({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(it({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=it({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return it({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&B(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return et(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ct(this.state,this.popper,this.reference),t.placement=lt(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.offsets.popper=ut(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position="absolute",t=pt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,gt(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.left="",this.popper.style.position="",this.popper.style.top="",this.popper.style[mt("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=vt(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return Et.call(this)}}]),t}();Ot.Utils=("undefined"!=typeof window?window:global).PopperUtils,Ot.placements=Ct,Ot.Defaults=St;var Nt=function(t){var e="dropdown",n="bs.dropdown",o="."+n,s=t.fn[e],a=new RegExp("38|40|27"),l={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+".data-api",KEYDOWN_DATA_API:"keydown"+o+".data-api",KEYUP_DATA_API:"keyup"+o+".data-api"},c="disabled",h="show",f="dropup",u="dropright",d="dropleft",p="dropdown-menu-right",g="dropdown-menu-left",m="position-static",_='[data-toggle="dropdown"]',v=".dropdown form",E=".dropdown-menu",y=".navbar-nav",b=".dropdown-menu .dropdown-item:not(.disabled)",T="top-start",C="top-end",w="bottom-start",I="bottom-end",A="right-start",D="left-start",S={offset:0,flip:!0,boundary:"scrollParent"},O={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},N=function(){function s(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var v=s.prototype;return v.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(c)){var e=s._getParentFromElement(this._element),n=t(this._menu).hasClass(h);if(s._clearMenus(),!n){var i={relatedTarget:this._element},r=t.Event(l.SHOW,i);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof Ot)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(f)&&(t(this._menu).hasClass(g)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(m),this._popper=new Ot(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(y).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(h),t(e).toggleClass(h).trigger(t.Event(l.SHOWN,i))}}}},v.dispose=function(){t.removeData(this._element,n),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},v.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},v._addEventListeners=function(){var e=this;t(this._element).on(l.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},v._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),k.typeCheckConfig(e,n,this.constructor.DefaultType),n},v._getMenuElement=function(){if(!this._menu){var e=s._getParentFromElement(this._element);this._menu=t(e).find(E)[0]}return this._menu},v._getPlacement=function(){var e=t(this._element).parent(),n=w;return e.hasClass(f)?(n=T,t(this._menu).hasClass(p)&&(n=C)):e.hasClass(u)?n=A:e.hasClass(d)?n=D:t(this._menu).hasClass(p)&&(n=I),n},v._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},v._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n);if(i||(i=new s(this,"object"==typeof e?e:null),t(this).data(n,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var i=t.makeArray(t(_)),r=0;r<i.length;r++){var o=s._getParentFromElement(i[r]),a=t(i[r]).data(n),c={relatedTarget:i[r]};if(a){var f=a._menu;if(t(o).hasClass(h)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&t.contains(o,e.target))){var u=t.Event(l.HIDE,c);t(o).trigger(u),u.isDefaultPrevented()||("ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),i[r].setAttribute("aria-expanded","false"),t(f).removeClass(h),t(o).removeClass(h).trigger(t.Event(l.HIDDEN,c)))}}}},s._getParentFromElement=function(e){var n,i=k.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},s._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||t(e.target).closest(E).length)):a.test(e.which))&&(e.preventDefault(),e.stopPropagation(),!this.disabled&&!t(this).hasClass(c))){var n=s._getParentFromElement(this),i=t(n).hasClass(h);if((i||27===e.which&&32===e.which)&&(!i||27!==e.which&&32!==e.which)){var r=t(n).find(b).get();if(0!==r.length){var o=r.indexOf(e.target);38===e.which&&o>0&&o--,40===e.which&&o<r.length-1&&o++,o<0&&(o=0),r[o].focus()}}else{if(27===e.which){var l=t(n).find(_)[0];t(l).trigger("focus")}t(this).trigger("click")}}},i(s,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return S}},{key:"DefaultType",get:function(){return O}}]),s}();return t(document).on(l.KEYDOWN_DATA_API,_,N._dataApiKeydownHandler).on(l.KEYDOWN_DATA_API,E,N._dataApiKeydownHandler).on(l.CLICK_DATA_API+" "+l.KEYUP_DATA_API,N._clearMenus).on(l.CLICK_DATA_API,_,function(e){e.preventDefault(),e.stopPropagation(),N._jQueryInterface.call(t(this),"toggle")}).on(l.CLICK_DATA_API,v,function(t){t.stopPropagation()}),t.fn[e]=N._jQueryInterface,t.fn[e].Constructor=N,t.fn[e].noConflict=function(){return t.fn[e]=s,N._jQueryInterface},N}(e),kt=function(t){var e="bs.modal",n="."+e,o=t.fn.modal,s={backdrop:!0,keyboard:!0,focus:!0,show:!0},a={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},l={HIDE:"hide"+n,HIDDEN:"hidden"+n,SHOW:"show"+n,SHOWN:"shown"+n,FOCUSIN:"focusin"+n,RESIZE:"resize"+n,CLICK_DISMISS:"click.dismiss"+n,KEYDOWN_DISMISS:"keydown.dismiss"+n,MOUSEUP_DISMISS:"mouseup.dismiss"+n,MOUSEDOWN_DISMISS:"mousedown.dismiss"+n,CLICK_DATA_API:"click.bs.modal.data-api"},c="modal-scrollbar-measure",h="modal-backdrop",f="modal-open",u="fade",d="show",p={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},g=function(){function o(e,n){this._config=this._getConfig(n),this._element=e,this._dialog=t(e).find(p.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}var g=o.prototype;return g.toggle=function(t){return this._isShown?this.hide():this.show(t)},g.show=function(e){var n=this;if(!this._isTransitioning&&!this._isShown){k.supportsTransitionEnd()&&t(this._element).hasClass(u)&&(this._isTransitioning=!0);var i=t.Event(l.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),t(document.body).addClass(f),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(l.CLICK_DISMISS,p.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(l.MOUSEDOWN_DISMISS,function(){t(n._element).one(l.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},g.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=t.Event(l.HIDE);if(t(this._element).trigger(i),this._isShown&&!i.isDefaultPrevented()){this._isShown=!1;var r=k.supportsTransitionEnd()&&t(this._element).hasClass(u);r&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),t(document).off(l.FOCUSIN),t(this._element).removeClass(d),t(this._element).off(l.CLICK_DISMISS),t(this._dialog).off(l.MOUSEDOWN_DISMISS),r?t(this._element).one(k.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal()}}},g.dispose=function(){t.removeData(this._element,e),t(window,document,this._element,this._backdrop).off(n),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},g.handleUpdate=function(){this._adjustDialog()},g._getConfig=function(t){return t=r({},s,t),k.typeCheckConfig("modal",t,a),t},g._showElement=function(e){var n=this,i=k.supportsTransitionEnd()&&t(this._element).hasClass(u);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&k.reflow(this._element),t(this._element).addClass(d),this._config.focus&&this._enforceFocus();var r=t.Event(l.SHOWN,{relatedTarget:e}),o=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(r)};i?t(this._dialog).one(k.TRANSITION_END,o).emulateTransitionEnd(300):o()},g._enforceFocus=function(){var e=this;t(document).off(l.FOCUSIN).on(l.FOCUSIN,function(n){document!==n.target&&e._element!==n.target&&0===t(e._element).has(n.target).length&&e._element.focus()})},g._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(l.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||t(this._element).off(l.KEYDOWN_DISMISS)},g._setResizeEvent=function(){var e=this;this._isShown?t(window).on(l.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(l.RESIZE)},g._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(f),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(l.HIDDEN)})},g._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},g._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(u)?u:"";if(this._isShown&&this._config.backdrop){var r=k.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=h,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(l.CLICK_DISMISS,function(t){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),r&&k.reflow(this._backdrop),t(this._backdrop).addClass(d),!e)return;if(!r)return void e();t(this._backdrop).one(k.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(d);var o=function(){n._removeBackdrop(),e&&e()};k.supportsTransitionEnd()&&t(this._element).hasClass(u)?t(this._backdrop).one(k.TRANSITION_END,o).emulateTransitionEnd(150):o()}else e&&e()},g._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},g._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},g._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},g._setScrollbar=function(){var e=this;if(this._isBodyOverflowing){t(p.FIXED_CONTENT).each(function(n,i){var r=t(i)[0].style.paddingRight,o=t(i).css("padding-right");t(i).data("padding-right",r).css("padding-right",parseFloat(o)+e._scrollbarWidth+"px")}),t(p.STICKY_CONTENT).each(function(n,i){var r=t(i)[0].style.marginRight,o=t(i).css("margin-right");t(i).data("margin-right",r).css("margin-right",parseFloat(o)-e._scrollbarWidth+"px")}),t(p.NAVBAR_TOGGLER).each(function(n,i){var r=t(i)[0].style.marginRight,o=t(i).css("margin-right");t(i).data("margin-right",r).css("margin-right",parseFloat(o)+e._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=t("body").css("padding-right");t("body").data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}},g._resetScrollbar=function(){t(p.FIXED_CONTENT).each(function(e,n){var i=t(n).data("padding-right");"undefined"!=typeof i&&t(n).css("padding-right",i).removeData("padding-right")}),t(p.STICKY_CONTENT+", "+p.NAVBAR_TOGGLER).each(function(e,n){var i=t(n).data("margin-right");"undefined"!=typeof i&&t(n).css("margin-right",i).removeData("margin-right")});var e=t("body").data("padding-right");"undefined"!=typeof e&&t("body").css("padding-right",e).removeData("padding-right")},g._getScrollbarWidth=function(){var t=document.createElement("div");t.className=c,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var s=t(this).data(e),a=r({},o.Default,t(this).data(),"object"==typeof n&&n);if(s||(s=new o(this,a),t(this).data(e,s)),"string"==typeof n){if("undefined"==typeof s[n])throw new TypeError('No method named "'+n+'"');s[n](i)}else a.show&&s.show(i)})},i(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return s}}]),o}();return t(document).on(l.CLICK_DATA_API,p.DATA_TOGGLE,function(n){var i,o=this,s=k.getSelectorFromElement(this);s&&(i=t(s)[0]);var a=t(i).data(e)?"toggle":r({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||n.preventDefault();var c=t(i).one(l.SHOW,function(e){e.isDefaultPrevented()||c.one(l.HIDDEN,function(){t(o).is(":visible")&&o.focus()})});g._jQueryInterface.call(t(i),a,this)}),t.fn.modal=g._jQueryInterface,t.fn.modal.Constructor=g,t.fn.modal.noConflict=function(){return t.fn.modal=o,g._jQueryInterface},g}(e),Lt=function(t){var e="tooltip",n="bs.tooltip",o="."+n,s=t.fn[e],a=new RegExp("(^|\\s)bs-tooltip\\S+","g"),l={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},c={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},h={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",u="out",d={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},p="fade",g="show",m=".tooltip-inner",_=".arrow",v="hover",E="focus",y="click",b="manual",T=function(){function s(t,e){if("undefined"==typeof Ot)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var T=s.prototype;return T.enable=function(){this._isEnabled=!0},T.disable=function(){this._isEnabled=!1},T.toggleEnabled=function(){this._isEnabled=!this._isEnabled},T.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(g))return void this._leave(null,this);this._enter(null,this)}},T.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},T.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var r=this.getTipElement(),o=k.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(p);var a="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,l=this._getAttachment(a);this.addAttachmentClass(l);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Ot(this.element,r,{placement:l,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:_},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(g),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var h=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===u&&e._leave(null,e)};k.supportsTransitionEnd()&&t(this.tip).hasClass(p)?t(this.tip).one(k.TRANSITION_END,h).emulateTransitionEnd(s._TRANSITION_DURATION):h()}},T.hide=function(e){var n=this,i=this.getTipElement(),r=t.Event(this.constructor.Event.HIDE),o=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(r),r.isDefaultPrevented()||(t(i).removeClass(g),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[E]=!1,this._activeTrigger[v]=!1,k.supportsTransitionEnd()&&t(this.tip).hasClass(p)?t(i).one(k.TRANSITION_END,o).emulateTransitionEnd(150):o(),this._hoverState="")},T.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},T.isWithContent=function(){return Boolean(this.getTitle())},T.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},T.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},T.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(p+" "+g)},T.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},T.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},T._getAttachment=function(t){return c[t.toUpperCase()]},T._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==b){var i=n===v?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,r=n===v?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(r,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},T._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},T._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?E:v]=!0),t(n.getTipElement()).hasClass(g)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},T._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?E:v]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=u,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===u&&n.hide()},n.config.delay.hide):n.hide())},T._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},T._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),k.typeCheckConfig(e,n,this.constructor.DefaultType),n},T._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},T._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},T._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},T._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(p),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),r="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new s(this,r),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},i(s,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return h}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return d}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return l}}]),s}();return t.fn[e]=T._jQueryInterface,t.fn[e].Constructor=T,t.fn[e].noConflict=function(){return t.fn[e]=s,T._jQueryInterface},T}(e),Pt=function(t){var e="popover",n="bs.popover",o="."+n,s=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},Lt.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),c=r({},Lt.DefaultType,{content:"(string|element|function)"}),h="fade",f="show",u=".popover-header",d=".popover-body",p={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g=function(r){var s,g;function m(){return r.apply(this,arguments)||this}g=r,(s=m).prototype=Object.create(g.prototype),s.prototype.constructor=s,s.__proto__=g;var _=m.prototype;return _.isWithContent=function(){return this.getTitle()||this._getContent()},_.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},_.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},_.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(u),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(h+" "+f)},_._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},_._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},m._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),r="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new m(this,r),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},i(m,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return c}}]),m}(Lt);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=s,g._jQueryInterface},g}(e),xt=function(t){var e="scrollspy",n="bs.scrollspy",o="."+n,s=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},c={ACTIVATE:"activate"+o,SCROLL:"scroll"+o,LOAD_DATA_API:"load"+o+".data-api"},h="dropdown-item",f="active",u={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",p="position",g=function(){function s(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+u.NAV_LINKS+","+this._config.target+" "+u.LIST_ITEMS+","+this._config.target+" "+u.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(c.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=s.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:p,i="auto"===this._config.method?n:this._config.method,r=i===p?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,o=k.getSelectorFromElement(e);if(o&&(n=t(o)[0]),n){var s=n.getBoundingClientRect();if(s.width||s.height)return[t(n)[i]().top+r,o]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(o),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=k.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return k.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;){this._activeTarget!==this._targets[r]&&t>=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t<this._offsets[r+1])&&this._activate(this._targets[r])}}},g._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(h)?(i.closest(u.DROPDOWN).find(u.DROPDOWN_TOGGLE).addClass(f),i.addClass(f)):(i.addClass(f),i.parents(u.NAV_LIST_GROUP).prev(u.NAV_LINKS+", "+u.LIST_ITEMS).addClass(f),i.parents(u.NAV_LIST_GROUP).prev(u.NAV_ITEMS).children(u.NAV_LINKS).addClass(f)),t(this._scrollElement).trigger(c.ACTIVATE,{relatedTarget:e})},g._clear=function(){t(this._selector).filter(u.ACTIVE).removeClass(f)},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n);if(i||(i=new s(this,"object"==typeof e&&e),t(this).data(n,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},i(s,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),s}();return t(window).on(c.LOAD_DATA_API,function(){for(var e=t.makeArray(t(u.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);g._jQueryInterface.call(i,i.data())}}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=s,g._jQueryInterface},g}(e),Rt=function(t){var e=".bs.tab",n=t.fn.tab,r={HIDE:"hide"+e,HIDDEN:"hidden"+e,SHOW:"show"+e,SHOWN:"shown"+e,CLICK_DATA_API:"click.bs.tab.data-api"},o="dropdown-menu",s="active",a="disabled",l="fade",c="show",h=".dropdown",f=".nav, .list-group",u=".active",d="> li > .active",p='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',g=".dropdown-toggle",m="> .dropdown-menu .active",_=function(){function e(t){this._element=t}var n=e.prototype;return n.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(s)||t(this._element).hasClass(a))){var n,i,o=t(this._element).closest(f)[0],l=k.getSelectorFromElement(this._element);if(o){var c="UL"===o.nodeName?d:u;i=(i=t.makeArray(t(o).find(c)))[i.length-1]}var h=t.Event(r.HIDE,{relatedTarget:this._element}),p=t.Event(r.SHOW,{relatedTarget:i});if(i&&t(i).trigger(h),t(this._element).trigger(p),!p.isDefaultPrevented()&&!h.isDefaultPrevented()){l&&(n=t(l)[0]),this._activate(this._element,o);var g=function(){var n=t.Event(r.HIDDEN,{relatedTarget:e._element}),o=t.Event(r.SHOWN,{relatedTarget:i});t(i).trigger(n),t(e._element).trigger(o)};n?this._activate(n,n.parentNode,g):g()}}},n.dispose=function(){t.removeData(this._element,"bs.tab"),this._element=null},n._activate=function(e,n,i){var r=this,o=("UL"===n.nodeName?t(n).find(d):t(n).children(u))[0],s=i&&k.supportsTransitionEnd()&&o&&t(o).hasClass(l),a=function(){return r._transitionComplete(e,o,i)};o&&s?t(o).one(k.TRANSITION_END,a).emulateTransitionEnd(150):a()},n._transitionComplete=function(e,n,i){if(n){t(n).removeClass(c+" "+s);var r=t(n.parentNode).find(m)[0];r&&t(r).removeClass(s),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(t(e).addClass(s),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),k.reflow(e),t(e).addClass(c),e.parentNode&&t(e.parentNode).hasClass(o)){var a=t(e).closest(h)[0];a&&t(a).find(g).addClass(s),e.setAttribute("aria-expanded",!0)}i&&i()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),r=i.data("bs.tab");if(r||(r=new e(this),i.data("bs.tab",r)),"string"==typeof n){if("undefined"==typeof r[n])throw new TypeError('No method named "'+n+'"');r[n]()}})},i(e,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),e}();return t(document).on(r.CLICK_DATA_API,p,function(e){e.preventDefault(),_._jQueryInterface.call(t(this),"show")}),t.fn.tab=_._jQueryInterface,t.fn.tab.Constructor=_,t.fn.tab.noConflict=function(){return t.fn.tab=n,_._jQueryInterface},_}(e);!function(t){if("undefined"==typeof t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=k,t.Alert=L,t.Button=P,t.Carousel=x,t.Collapse=R,t.Dropdown=Nt,t.Modal=kt,t.Popover=Pt,t.Scrollspy=xt,t.Tab=Rt,t.Tooltip=Lt,Object.defineProperty(t,"__esModule",{value:!0})});
+//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.bundle.min.js.map b/library/bootstrap/js/bootstrap.bundle.min.js.map
new file mode 100644
index 000000000..c234ff2cd
--- /dev/null
+++ b/library/bootstrap/js/bootstrap.bundle.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../rollupPluginBabelHelpers","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_extends","assign","arguments","source","hasOwnProperty","call","apply","this","$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Util","transition","transitionEndEmulator","duration","called","one","TRANSITION_END","triggerTransitionEnd","_this","prefix","Math","random","document","getElementById","element","selector","getAttribute","charAt","escapeSelector","substr","replace","find","err","offsetHeight","trigger","end","Boolean","obj","nodeType","componentName","config","configTypes","property","expectedTypes","value","valueType","isElement","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","window","QUnit","fn","emulateTransitionEnd","supportsTransitionEnd","event","special","is","handleObj","handler","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","getSelectorFromElement","parent","closest","closeEvent","CLOSE","removeClass","hasClass","_destroyElement","detach","CLOSED","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","CLICK_DATA_API","noConflict","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","button","FOCUS_BLUR_DATA_API","Carousel","Default","DefaultType","Direction","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","INDICATORS","_addEventListeners","next","_slide","nextWhenVisible","hidden","css","prev","pause","NEXT_PREV","cycle","interval","setInterval","visibilityState","bind","to","index","ACTIVE_ITEM","activeIndex","_getItemIndex","SLID","direction","off","typeCheckConfig","keyboard","KEYDOWN","_this2","_keydown","MOUSEENTER","MOUSELEAVE","documentElement","TOUCHEND","setTimeout","tagName","which","makeArray","ITEM","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","wrap","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","SLIDE","_setActiveIndicatorElement","ACTIVE","nextIndicator","children","addClass","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","reflow","_this3","action","slide","TypeError","_dataApiClickHandler","slideIndex","DATA_SLIDE","LOAD_DATA_API","DATA_RIDE","$carousel","Collapse","Dimension","_isTransitioning","_triggerArray","id","tabToggles","DATA_TOGGLE","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","ACTIVES","not","startEvent","SHOW","dimension","_getDimension","style","attr","setTransitioning","complete","SHOWN","scrollSize","slice","HIDE","getBoundingClientRect","HIDDEN","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","isBrowser","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","_getStyleComputedProp","overflow","overflowX","overflowY","getOffsetParent","offsetParent","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","isIE10$1","appVersion","getSize","computedStyle","max","getWindowSizes","height","width","classCallCheck","instance","createClass","defineProperties","getClientRect","offsets","right","left","bottom","top","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getBoundaries","popper","reference","padding","boundariesElement","relativeOffset","boundaries","innerWidth","innerHeight","boundariesNode","isFixed","_getWindowSizes","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","_ref","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","split","getReferenceOffsets","state","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","toCheck","getWindow","defaultView","setupEventListeners","options","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","parseOffset","offset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","inner","subtractLength","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","position","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","removeAttribute","onLoad","modifierOptions","Popper","requestAnimationFrame","update","isDestroyed","isCreated","enableEventListeners","removeChild","Utils","global","PopperUtils","Dropdown","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","AttachmentMap","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","boundary","_getPopperConfig","noop","destroy","CLICK","stopPropagation","constructor","_getPlacement","$parentDropdown","offsetConf","toggles","context","dropdownMenu","hideEvent","_dataApiKeydownHandler","items","get","KEYDOWN_DATA_API","KEYUP_DATA_API","e","Modal","_dialog","DIALOG","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_originalBodyPadding","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","CLICK_DISMISS","DATA_DISMISS","MOUSEDOWN_DISMISS","MOUSEUP_DISMISS","_showBackdrop","_showElement","FOCUSIN","_hideModal","handleUpdate","ELEMENT_NODE","appendChild","display","_enforceFocus","shownEvent","transitionComplete","_this4","has","KEYDOWN_DISMISS","RESIZE","_this6","_resetAdjustments","_resetScrollbar","_this7","_removeBackdrop","animate","backdrop","doAnimate","createElement","className","appendTo","_this8","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","FIXED_CONTENT","actualPadding","calculatedPadding","_this9","STICKY_CONTENT","actualMargin","calculatedMargin","NAVBAR_TOGGLER","margin","scrollDiv","scrollbarWidth","Tooltip","BSCLS_PREFIX_REGEX","HoverState","Trigger","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","tipId","getUID","setContent","animation","attachment","_getAttachment","addAttachmentClass","container","INSERTED","fallbackPlacement","_handlePopperPlacementChange","_fixTransition","prevHoverState","_TRANSITION_DURATION","_cleanTipClass","getTitle","CLASS_PREFIX","template","$tip","setElementContent","content","empty","append","text","title","eventIn","eventOut","FOCUSOUT","_fixTitle","titleType","delay","tabClass","join","initConfigAnimation","Popover","subClass","superClass","create","__proto__","_getContent","ScrollSpy","OffsetMethod","_scrollElement","NAV_LINKS","LIST_ITEMS","DROPDOWN_ITEMS","_offsets","_targets","_activeTarget","_scrollHeight","SCROLL","_process","refresh","autoMethod","offsetMethod","method","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","DROPDOWN","DROPDOWN_TOGGLE","parents","NAV_LIST_GROUP","NAV_ITEMS","ACTIVATE","scrollSpys","DATA_SPY","$spy","Tab","previous","listElement","itemSelector","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","version"],"mappings":";;;;;kOAEA,SAASA,EAAkBC,EAAQC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAIlD,SAASO,EAAaC,EAAaC,EAAYC,GAG7C,OAFID,GAAYd,EAAkBa,EAAYG,UAAWF,GACrDC,GAAaf,EAAkBa,EAAaE,GACzCF,EAGT,SAASI,IAeP,OAdAA,EAAWR,OAAOS,QAAU,SAAUjB,GACpC,IAAK,IAAIE,EAAI,EAAGA,EAAIgB,UAAUf,OAAQD,IAAK,CACzC,IAAIiB,EAASD,UAAUhB,GAEvB,IAAK,IAAIQ,KAAOS,EACVX,OAAOO,UAAUK,eAAeC,KAAKF,EAAQT,KAC/CV,EAAOU,GAAOS,EAAOT,IAK3B,OAAOV,IAGOsB,MAAMC,KAAML,WCN9B,IClBA,ICCgBM,EAORC,EAEAC,EACAC,EAEAC,EAOAC,EAMAC,EAAAA,EAAAA,EAYAC,ECtCSP,EAOTC,EAEAC,EACAC,EACAK,EACAJ,EAEAE,EAAAA,EAAAA,EAMAG,EAAAA,EAAAA,EAAAA,EAAAA,EAQAJ,EAYAK,EFxCFC,EAAQ,SAACX,OAOTY,GAAa,WAgCRC,EAAsBC,cACzBC,GAAS,WAEXhB,MAAMiB,IAAIL,EAAKM,eAAgB,cACtB,eAGA,WACJF,KACEG,qBAALC,IAEDL,GAEIf,SA4BHY,kBAEY,yBAFL,SAIJS,YA3EO,IA8EGC,KAAKC,gBACXC,SAASC,eAAeJ,WAC1BA,0BATE,SAYYK,OA3BPC,EA4BVA,EAAWD,EAAQE,aAAa,eAC/BD,GAAyB,MAAbA,MACJD,EAAQE,aAAa,SAAW,IAIlB,MAAvBD,EAASE,OAAO,KAlCNF,EAmCQA,MAhCe,mBAArB1B,EAAE6B,eAAgC7B,EAAE6B,eAAeH,GAAUI,OAAO,GAClFJ,EAASK,QAAQ,sBAAuB,oBAmCtB/B,EAAEuB,UAAUS,KAAKN,GAClB/C,OAAS,EAAI+C,EAAW,KACzC,MAAOO,UACA,cA3BA,SA+BJR,UACEA,EAAQS,mCAhCN,SAmCUT,KACjBA,GAASU,QAAQvB,EAAWwB,4BApCrB,kBAwCFC,QAAQzB,cAxCN,SA2CD0B,UACAA,EAAI,IAAMA,GAAKC,0BA5Cd,SA+CKC,EAAeC,EAAQC,OAChC,IAAMC,KAAYD,KACjB1D,OAAOO,UAAUK,eAAeC,KAAK6C,EAAaC,GAAW,KACzDC,EAAgBF,EAAYC,GAC5BE,EAAgBJ,EAAOE,GACvBG,EAAgBD,GAASlC,EAAKoC,UAAUF,GAC1C,WAzHIP,EAyHeO,KAxHnBG,SAASnD,KAAKyC,GAAKW,MAAM,iBAAiB,GAAGC,mBA0H5C,IAAIC,OAAOP,GAAeQ,KAAKN,SAC5B,IAAIO,MACLb,EAAcc,cAAjB,aACWX,EADX,oBACuCG,EADvC,wBAEsBF,EAFtB,UA7HIN,cAkBQ,oBAAXiB,SAA0BA,OAAOC,aAKrC,mBAuBLC,GAAGC,qBAAuB7C,EAExBF,EAAKgD,4BACLC,MAAMC,QAAQlD,EAAKM,0BA3CXL,EAAWwB,iBACPxB,EAAWwB,WAFpB,SAGEwB,MACD5D,EAAE4D,EAAMpF,QAAQsF,GAAG/D,aACd6D,EAAMG,UAAUC,QAAQlE,MAAMC,KAAML,cA8H5CiB,EApJK,+CCCRJ,GAOEN,EAAsB,QAGtBE,EAAAA,KADAD,EAAsB,YAGtBE,GAZQJ,EAwKbA,GA5J6ByD,GAAGxD,GAO3BI,iBACqBF,kBACCA,yBACDA,EAXC,aActBG,EACI,QADJA,EAEI,OAFJA,EAGI,OASJC,wBACQkB,QACLwC,SAAWxC,6BAWlByC,MAlDkB,SAkDZzC,KACMA,GAAW1B,KAAKkE,aAEpBE,EAAcpE,KAAKqE,gBAAgB3C,GACrB1B,KAAKsE,mBAAmBF,GAE5BG,2BAIXC,eAAeJ,MAGtBK,QA/DkB,aAgEdC,WAAW1E,KAAKkE,SAAU/D,QACvB+D,SAAW,QAKlBG,gBAtEkB,SAsEF3C,OACRC,EAAWf,EAAK+D,uBAAuBjD,GACzCkD,GAAa,SAEbjD,MACO1B,EAAE0B,GAAU,IAGlBiD,MACM3E,EAAEyB,GAASmD,QAAX,IAAuBtE,GAAmB,IAG9CqE,KAGTN,mBArFkB,SAqFC5C,OACXoD,EAAa7E,EAAEK,MAAMA,EAAMyE,gBAE/BrD,GAASU,QAAQ0C,GACZA,KAGTN,eA5FkB,SA4FH9C,gBACXA,GAASsD,YAAYzE,GAElBK,EAAKgD,yBACL3D,EAAEyB,GAASuD,SAAS1E,KAKvBmB,GACCT,IAAIL,EAAKM,eAAgB,SAAC2C,UAAUzC,EAAK8D,gBAAgBxD,EAASmC,KAClEF,qBA1FqB,UAoFjBuB,gBAAgBxD,MASzBwD,gBA1GkB,SA0GFxD,KACZA,GACCyD,SACA/C,QAAQ9B,EAAM8E,QACdC,YAKEC,iBAnHW,SAmHM5C,UACf1C,KAAKuF,KAAK,eACTC,EAAWvF,EAAED,MACfyF,EAAaD,EAASC,KAAKtF,GAE1BsF,MACI,IAAIjF,EAAMR,QACRyF,KAAKtF,EAAUsF,IAGX,UAAX/C,KACGA,GAAQ1C,WAKZ0F,eAnIW,SAmIIC,UACb,SAAU9B,GACXA,KACI+B,mBAGMzB,MAAMnE,sDAjIE,mBA4I1BwB,UAAUqE,GACVvF,EAAMwF,eArII,yBAuIVtF,EAAMkF,eAAe,IAAIlF,MASzBkD,GAAGxD,GAAoBM,EAAM8E,mBAC7B5B,GAAGxD,GAAMb,YAAcmB,IACvBkD,GAAGxD,GAAM6F,WAAc,oBACrBrC,GAAGxD,GAAQG,EACNG,EAAM8E,kBAGR9E,GCxKHG,GAOET,EAAsB,SAGtBE,EAAAA,KADAD,EAAsB,aAEtBM,EAAsB,YACtBJ,GAZSJ,EAmKdA,GAvJ6ByD,GAAGxD,GAE3BK,EACK,SADLA,EAEK,MAFLA,EAGK,QAGLG,EACiB,0BADjBA,EAEiB,0BAFjBA,EAGiB,QAHjBA,EAIiB,UAJjBA,EAKiB,OAGjBJ,0BAC0BF,EAAYK,sBACpB,QAAQL,EAAYK,EAApB,QACSL,EAAYK,GASvCE,wBACQe,QACLwC,SAAWxC,6BAWlBsE,OArDmB,eAsDbC,GAAqB,EACrBC,GAAiB,EACf9B,EAAcnE,EAAED,KAAKkE,UAAUW,QACnCnE,GACA,MAEE0D,EAAa,KACT+B,EAAQlG,EAAED,KAAKkE,UAAUjC,KAAKvB,GAAgB,MAEhDyF,EAAO,IACU,UAAfA,EAAMC,QACJD,EAAME,SACRpG,EAAED,KAAKkE,UAAUe,SAAS1E,MACL,MAChB,KACC+F,EAAgBrG,EAAEmE,GAAanC,KAAKvB,GAAiB,GAEvD4F,KACAA,GAAetB,YAAYzE,MAK/B0F,EAAoB,IAClBE,EAAMI,aAAa,aACrBnC,EAAYmC,aAAa,aACzBJ,EAAMK,UAAUC,SAAS,aACzBrC,EAAYoC,UAAUC,SAAS,qBAG3BJ,SAAWpG,EAAED,KAAKkE,UAAUe,SAAS1E,KACzC4F,GAAO/D,QAAQ,YAGbsE,WACW,GAIjBR,QACGhC,SAASyC,aAAa,gBACxB1G,EAAED,KAAKkE,UAAUe,SAAS1E,IAG3B0F,KACAjG,KAAKkE,UAAU0C,YAAYrG,MAIjCkE,QAvGmB,aAwGfC,WAAW1E,KAAKkE,SAAU/D,QACvB+D,SAAW,QAKXoB,iBA9GY,SA8GK5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAEnBsF,MACI,IAAI9E,EAAOX,QAChBA,MAAMyF,KAAKtF,EAAUsF,IAGV,WAAX/C,KACGA,sDAhHe,mBA4H1BlB,UACCqE,GAAGvF,EAAMwF,eAAgBpF,EAA6B,SAACmD,KAChD+B,qBAEFiB,EAAShD,EAAMpF,OAEdwB,EAAE4G,GAAQ5B,SAAS1E,OACbN,EAAE4G,GAAQhC,QAAQnE,MAGtB4E,iBAAiBxF,KAAKG,EAAE4G,GAAS,YAEzChB,GAAGvF,EAAMwG,oBAAqBpG,EAA6B,SAACmD,OACrDgD,EAAS5G,EAAE4D,EAAMpF,QAAQoG,QAAQnE,GAAiB,KACtDmG,GAAQD,YAAYrG,EAAiB,eAAe8C,KAAKQ,EAAMuC,WASnE1C,GAAGxD,GAAQS,EAAO2E,mBAClB5B,GAAGxD,GAAMb,YAAcsB,IACvB+C,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNM,EAAO2E,kBAGT3E,GCjKHoG,EAAY,SAAC9G,OAOXC,EAAyB,WAEzBC,EAAyB,cACzBC,EAAAA,IAA6BD,EAE7BE,EAAyBJ,EAAEyD,GAAGxD,GAM9B8G,YACO,cACA,SACA,QACA,cACA,GAGPC,YACO,4BACA,gBACA,yBACA,wBACA,WAGPC,EACO,OADPA,EAEO,OAFPA,EAGO,OAHPA,EAIO,QAGP5G,iBACqBF,cACDA,oBACGA,0BACGA,0BACAA,sBACFA,uBACJA,EArCK,mCAsCJA,EAtCI,aAyCzBG,EACO,WADPA,EAEO,SAFPA,EAGO,QAHPA,EAIO,sBAJPA,EAKO,qBALPA,EAMO,qBANPA,EAOO,qBAIPG,UACU,sBACA,6BACA,2BACA,sDACA,kCACA,0CACA,0BASVqG,wBACQrF,EAASgB,QACdyE,OAAqB,UACrBC,UAAqB,UACrBC,eAAqB,UAErBC,WAAqB,OACrBC,YAAqB,OAErBC,aAAqB,UAErBC,QAAqBzH,KAAK0H,WAAWhF,QACrCwB,SAAqBjE,EAAEyB,GAAS,QAChCiG,mBAAqB1H,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASkH,YAAY,QAEhEC,gDAePC,KA7GqB,WA8Gd9H,KAAKuH,iBACHQ,OAAOb,MAIhBc,gBAnHqB,YAsHdxG,SAASyG,QACXhI,EAAED,KAAKkE,UAAUH,GAAG,aAAsD,WAAvC9D,EAAED,KAAKkE,UAAUgE,IAAI,oBACpDJ,UAITK,KA5HqB,WA6HdnI,KAAKuH,iBACHQ,OAAOb,MAIhBkB,MAlIqB,SAkIfvE,GACCA,SACEyD,WAAY,GAGfrH,EAAED,KAAKkE,UAAUjC,KAAKvB,EAAS2H,WAAW,IAC5CzH,EAAKgD,4BACAzC,qBAAqBnB,KAAKkE,eAC1BoE,OAAM,kBAGCtI,KAAKoH,gBACdA,UAAY,QAGnBkB,MAjJqB,SAiJfzE,GACCA,SACEyD,WAAY,GAGftH,KAAKoH,0BACOpH,KAAKoH,gBACdA,UAAY,MAGfpH,KAAKyH,QAAQc,WAAavI,KAAKsH,iBAC5BF,UAAYoB,aACdhH,SAASiH,gBAAkBzI,KAAKgI,gBAAkBhI,KAAK8H,MAAMY,KAAK1I,MACnEA,KAAKyH,QAAQc,cAKnBI,GAnKqB,SAmKlBC,mBACIvB,eAAiBpH,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASmI,aAAa,OAE5DC,EAAc9I,KAAK+I,cAAc/I,KAAKqH,qBAExCuB,EAAQ5I,KAAKmH,OAAOvI,OAAS,GAAKgK,EAAQ,MAI1C5I,KAAKuH,aACLvH,KAAKkE,UAAUjD,IAAIX,EAAM0I,KAAM,kBAAM5H,EAAKuH,GAAGC,aAI7CE,IAAgBF,cACbR,kBACAE,YAIDW,EAAYL,EAAQE,EACtB5B,EACAA,OAECa,OAAOkB,EAAWjJ,KAAKmH,OAAOyB,QAGrCnE,QA9LqB,aA+LjBzE,KAAKkE,UAAUgF,IAAI9I,KACnBsE,WAAW1E,KAAKkE,SAAU/D,QAEvBgH,OAAqB,UACrBM,QAAqB,UACrBvD,SAAqB,UACrBkD,UAAqB,UACrBE,UAAqB,UACrBC,WAAqB,UACrBF,eAAqB,UACrBM,mBAAqB,QAK5BD,WA9MqB,SA8MVhF,iBAEJsE,EACAtE,KAEAyG,gBAAgBjJ,EAAMwC,EAAQuE,GAC5BvE,KAGTmF,mBAvNqB,sBAwNf7H,KAAKyH,QAAQ2B,YACbpJ,KAAKkE,UACJ2B,GAAGvF,EAAM+I,QAAS,SAACxF,UAAUyF,EAAKC,SAAS1F,KAGrB,UAAvB7D,KAAKyH,QAAQW,UACbpI,KAAKkE,UACJ2B,GAAGvF,EAAMkJ,WAAY,SAAC3F,UAAUyF,EAAKlB,MAAMvE,KAC3CgC,GAAGvF,EAAMmJ,WAAY,SAAC5F,UAAUyF,EAAKhB,MAAMzE,KAC1C,iBAAkBrC,SAASkI,mBAQ3B1J,KAAKkE,UAAU2B,GAAGvF,EAAMqJ,SAAU,aAC7BvB,QACDkB,EAAK9B,2BACM8B,EAAK9B,gBAEfA,aAAeoC,WAAW,SAAC/F,UAAUyF,EAAKhB,MAAMzE,IA9NhC,IA8NiEyF,EAAK7B,QAAQc,gBAM3GgB,SApPqB,SAoPZ1F,OACH,kBAAkBR,KAAKQ,EAAMpF,OAAOoL,gBAIhChG,EAAMiG,YA3Oa,KA6OjBlE,sBACDuC,kBA7OkB,KAgPjBvC,sBACDkC,WAMXiB,cAtQqB,SAsQPrH,eACPyF,OAASlH,EAAE8J,UAAU9J,EAAEyB,GAASkD,SAAS3C,KAAKvB,EAASsJ,OACrDhK,KAAKmH,OAAO8C,QAAQvI,MAG7BwI,oBA3QqB,SA2QDjB,EAAW3C,OACvB6D,EAAkBlB,IAAc/B,EAChCkD,EAAkBnB,IAAc/B,EAChC4B,EAAkB9I,KAAK+I,cAAczC,GACrC+D,EAAkBrK,KAAKmH,OAAOvI,OAAS,MACrBwL,GAAmC,IAAhBtB,GACnBqB,GAAmBrB,IAAgBuB,KAErCrK,KAAKyH,QAAQ6C,YAC1BhE,MAIHiE,GAAazB,GADDG,IAAc/B,GAAkB,EAAI,IACZlH,KAAKmH,OAAOvI,cAEhC,IAAf2L,EACHvK,KAAKmH,OAAOnH,KAAKmH,OAAOvI,OAAS,GAAKoB,KAAKmH,OAAOoD,MAGxDC,mBA9RqB,SA8RFC,EAAeC,OAC1BC,EAAc3K,KAAK+I,cAAc0B,GACjCG,EAAY5K,KAAK+I,cAAc9I,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASmI,aAAa,IAC3EgC,EAAa5K,EAAEK,MAAMA,EAAMwK,iCAEpBJ,OACLE,KACFD,aAGJ3K,KAAKkE,UAAU9B,QAAQyI,GAElBA,KAGTE,2BA7SqB,SA6SMrJ,MACrB1B,KAAK2H,mBAAoB,GACzB3H,KAAK2H,oBACJ1F,KAAKvB,EAASsK,QACdhG,YAAYzE,OAET0K,EAAgBjL,KAAK2H,mBAAmBuD,SAC5ClL,KAAK+I,cAAcrH,IAGjBuJ,KACAA,GAAeE,SAAS5K,OAKhCwH,OA7TqB,SA6TdkB,EAAWvH,OAQZ0J,EACAC,EACAX,SATEpE,EAAgBrG,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASmI,aAAa,GAC5DyC,EAAqBtL,KAAK+I,cAAczC,GACxCiF,EAAgB7J,GAAW4E,GAC/BtG,KAAKkK,oBAAoBjB,EAAW3C,GAChCkF,EAAmBxL,KAAK+I,cAAcwC,GACtCE,EAAYnJ,QAAQtC,KAAKoH,cAM3B6B,IAAc/B,KACO3G,IACNA,IACI2G,MAEE3G,IACNA,IACI2G,GAGnBqE,GAAetL,EAAEsL,GAAatG,SAAS1E,QACpCgH,YAAa,WAIDvH,KAAKwK,mBAAmBe,EAAab,GACzCnG,sBAIV+B,GAAkBiF,QAKlBhE,YAAa,EAEdkE,QACGrD,aAGF2C,2BAA2BQ,OAE1BG,EAAYzL,EAAEK,MAAMA,EAAM0I,oBACfuC,YACJb,OACLY,KACFE,IAGF5K,EAAKgD,yBACP3D,EAAED,KAAKkE,UAAUe,SAAS1E,MACxBgL,GAAaJ,SAASE,KAEnBM,OAAOJ,KAEVjF,GAAe6E,SAASC,KACxBG,GAAaJ,SAASC,KAEtB9E,GACCrF,IAAIL,EAAKM,eAAgB,aACtBqK,GACCvG,YAAeoG,EADlB,IAC0CC,GACvCF,SAAS5K,KAEV+F,GAAetB,YAAezE,EAAhC,IAAoD8K,EAApD,IAAsED,KAEjE7D,YAAa,aAEP,kBAAMtH,EAAE2L,EAAK1H,UAAU9B,QAAQsJ,IAAY,KAEvD/H,qBAzXsB,SA2XvB2C,GAAetB,YAAYzE,KAC3BgL,GAAaJ,SAAS5K,QAEnBgH,YAAa,IAChBvH,KAAKkE,UAAU9B,QAAQsJ,IAGvBD,QACGnD,YAMFhD,iBAtZc,SAsZG5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GACpBsH,EAAAA,KACCT,EACA/G,EAAED,MAAMyF,QAGS,iBAAX/C,WAEJ+E,EACA/E,QAIDmJ,EAA2B,iBAAXnJ,EAAsBA,EAAS+E,EAAQqE,SAExDrG,MACI,IAAIsB,EAAS/G,KAAMyH,KACxBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,IACJiG,GAAGjG,QACH,GAAsB,iBAAXmJ,EAAqB,IACT,oBAAjBpG,EAAKoG,SACR,IAAIE,UAAJ,oBAAkCF,EAAlC,OAEHA,UACIpE,EAAQc,aACZH,UACAE,cAKJ0D,qBA1bc,SA0bOnI,OACpBlC,EAAWf,EAAK+D,uBAAuB3E,SAExC2B,OAIClD,EAASwB,EAAE0B,GAAU,MAEtBlD,GAAWwB,EAAExB,GAAQwG,SAAS1E,QAI7BmC,EAAAA,KACDzC,EAAExB,GAAQgH,OACVxF,EAAED,MAAMyF,QAEPwG,EAAajM,KAAK4B,aAAa,iBAEjCqK,MACK1D,UAAW,KAGXjD,iBAAiBxF,KAAKG,EAAExB,GAASiE,GAEtCuJ,KACAxN,GAAQgH,KAAKtF,GAAUwI,GAAGsD,KAGxBrG,kEA/cqB,+CAgGpBoB,oBAyXTxF,UACCqE,GAAGvF,EAAMwF,eAAgBpF,EAASwL,WAAYnF,EAASiF,wBAExDxI,QAAQqC,GAAGvF,EAAM6L,cAAe,aAC9BzL,EAAS0L,WAAW7G,KAAK,eACnB8G,EAAYpM,EAAED,QACXsF,iBAAiBxF,KAAKuM,EAAWA,EAAU5G,cAUtD/B,GAAGxD,GAAQ6G,EAASzB,mBACpB5B,GAAGxD,GAAMb,YAAc0H,IACvBrD,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACN0G,EAASzB,kBAGXyB,EAxfS,CAyff9G,GCzfGqM,EAAY,SAACrM,OAOXC,EAAsB,WAEtBC,EAAsB,cACtBC,EAAAA,IAA0BD,EAE1BE,EAAsBJ,EAAEyD,GAAGxD,GAG3B8G,WACK,SACA,IAGLC,UACK,iBACA,oBAGL3G,eACoBF,gBACCA,cACDA,kBACEA,yBACDA,EAnBC,aAsBtBG,EACS,OADTA,EAES,WAFTA,EAGS,aAHTA,EAIS,YAGTgM,EACK,QADLA,EAEK,SAGL7L,WACU,iCACA,4BASV4L,wBACQ5K,EAASgB,QACd8J,kBAAmB,OACnBtI,SAAmBxC,OACnB+F,QAAmBzH,KAAK0H,WAAWhF,QACnC+J,cAAmBxM,EAAE8J,UAAU9J,EAClC,mCAAmCyB,EAAQgL,GAA3C,6CAC0ChL,EAAQgL,GADlD,eAGIC,EAAa1M,EAAES,EAASkM,aACrBjO,EAAI,EAAGA,EAAIgO,EAAW/N,OAAQD,IAAK,KACpCkO,EAAOF,EAAWhO,GAClBgD,EAAWf,EAAK+D,uBAAuBkI,GAC5B,OAAblL,GAAqB1B,EAAE0B,GAAUmL,OAAOpL,GAAS9C,OAAS,SACvDmO,UAAYpL,OACZ8K,cAAcO,KAAKH,SAIvBI,QAAUjN,KAAKyH,QAAQ7C,OAAS5E,KAAKkN,aAAe,KAEpDlN,KAAKyH,QAAQ7C,aACXuI,0BAA0BnN,KAAKkE,SAAUlE,KAAKyM,eAGjDzM,KAAKyH,QAAQzB,aACVA,oCAgBTA,OAlGqB,WAmGf/F,EAAED,KAAKkE,UAAUe,SAAS1E,QACvB6M,YAEAC,UAITA,KA1GqB,eAgHfC,EACAC,aANAvN,KAAKwM,mBACPvM,EAAED,KAAKkE,UAAUe,SAAS1E,KAOxBP,KAAKiN,SAMgB,OALbhN,EAAE8J,UACV9J,EAAED,KAAKiN,SACJhL,KAAKvB,EAAS8M,SACdV,OAFH,iBAE2B9M,KAAKyH,QAAQ7C,OAFxC,QAIUhG,WACA,QAIV0O,MACYrN,EAAEqN,GAASG,IAAIzN,KAAK+M,WAAWtH,KAAKtF,KAC/BoN,EAAYf,wBAK3BkB,EAAazN,EAAEK,MAAMA,EAAMqN,WAC/B3N,KAAKkE,UAAU9B,QAAQsL,IACrBA,EAAWnJ,sBAIX+I,MACOhI,iBAAiBxF,KAAKG,EAAEqN,GAASG,IAAIzN,KAAK+M,WAAY,QAC1DQ,KACDD,GAAS7H,KAAKtF,EAAU,WAIxByN,EAAY5N,KAAK6N,kBAErB7N,KAAKkE,UACJc,YAAYzE,GACZ4K,SAAS5K,QAEP2D,SAAS4J,MAAMF,GAAa,EAE7B5N,KAAKyM,cAAc7N,OAAS,KAC5BoB,KAAKyM,eACJzH,YAAYzE,GACZwN,KAAK,iBAAiB,QAGtBC,kBAAiB,OAEhBC,EAAW,aACb7M,EAAK8C,UACJc,YAAYzE,GACZ4K,SAAS5K,GACT4K,SAAS5K,KAEP2D,SAAS4J,MAAMF,GAAa,KAE5BI,kBAAiB,KAEpB5M,EAAK8C,UAAU9B,QAAQ9B,EAAM4N,WAG5BtN,EAAKgD,6BAMJuK,EAAAA,UADuBP,EAAU,GAAGrK,cAAgBqK,EAAUQ,MAAM,MAGxEpO,KAAKkE,UACJjD,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBA5KqB,UA8KnBO,SAAS4J,MAAMF,GAAgB5N,KAAKkE,SAASiK,GAAlD,mBAGFf,KA9LqB,0BA+LfpN,KAAKwM,kBACNvM,EAAED,KAAKkE,UAAUe,SAAS1E,QAIvBmN,EAAazN,EAAEK,MAAMA,EAAM+N,WAC/BrO,KAAKkE,UAAU9B,QAAQsL,IACrBA,EAAWnJ,0BAITqJ,EAAY5N,KAAK6N,wBAElB3J,SAAS4J,MAAMF,GAAgB5N,KAAKkE,SAASoK,wBAAwBV,GAA1E,OAEKjC,OAAO3L,KAAKkE,YAEflE,KAAKkE,UACJiH,SAAS5K,GACTyE,YAAYzE,GACZyE,YAAYzE,GAEXP,KAAKyM,cAAc7N,OAAS,MACzB,IAAID,EAAI,EAAGA,EAAIqB,KAAKyM,cAAc7N,OAAQD,IAAK,KAC5CyD,EAAUpC,KAAKyM,cAAc9N,GAC7BgD,EAAWf,EAAK+D,uBAAuBvC,MAC5B,OAAbT,EACY1B,EAAE0B,GACLsD,SAAS1E,MAChB6B,GAAS+I,SAAS5K,GACjBwN,KAAK,iBAAiB,QAM5BC,kBAAiB,OAEhBC,EAAW,aACVD,kBAAiB,KACpB1E,EAAKpF,UACJc,YAAYzE,GACZ4K,SAAS5K,GACT6B,QAAQ9B,EAAMiO,cAGdrK,SAAS4J,MAAMF,GAAa,GAE5BhN,EAAKgD,0BAKR5D,KAAKkE,UACJjD,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBAzOqB,cA4O1BqK,iBAzPqB,SAyPJQ,QACVhC,iBAAmBgC,KAG1B/J,QA7PqB,aA8PjBC,WAAW1E,KAAKkE,SAAU/D,QAEvBsH,QAAmB,UACnBwF,QAAmB,UACnB/I,SAAmB,UACnBuI,cAAmB,UACnBD,iBAAmB,QAK1B9E,WAzQqB,SAyQVhF,iBAEJsE,EACAtE,IAEEsD,OAAS1D,QAAQI,EAAOsD,UAC1BmD,gBAAgBjJ,EAAMwC,EAAQuE,GAC5BvE,KAGTmL,cAnRqB,kBAoRF5N,EAAED,KAAKkE,UAAUe,SAASsH,GACzBA,EAAkBA,KAGtCW,WAxRqB,sBAyRftI,EAAS,KACThE,EAAKoC,UAAUhD,KAAKyH,QAAQ7C,WACrB5E,KAAKyH,QAAQ7C,OAGoB,oBAA/B5E,KAAKyH,QAAQ7C,OAAO6J,WACpBzO,KAAKyH,QAAQ7C,OAAO,OAGtB3E,EAAED,KAAKyH,QAAQ7C,QAAQ,OAG5BjD,EAAAA,yCACqC3B,KAAKyH,QAAQ7C,OADlD,cAGJA,GAAQ3C,KAAKN,GAAU4D,KAAK,SAAC5G,EAAG+C,KAC3ByL,0BACHb,EAASoC,sBAAsBhN,IAC9BA,MAIEkD,KAGTuI,0BAlTqB,SAkTKzL,EAASiN,MAC7BjN,EAAS,KACLkN,EAAS3O,EAAEyB,GAASuD,SAAS1E,GAE/BoO,EAAa/P,OAAS,KACtB+P,GACC/H,YAAYrG,GAAsBqO,GAClCb,KAAK,gBAAiBa,OAOxBF,sBAhUc,SAgUQhN,OACrBC,EAAWf,EAAK+D,uBAAuBjD,UACtCC,EAAW1B,EAAE0B,GAAU,GAAK,QAG9B2D,iBArUc,SAqUG5C,UACf1C,KAAKuF,KAAK,eACTsJ,EAAU5O,EAAED,MACdyF,EAAYoJ,EAAMpJ,KAAKtF,GACrBsH,EAAAA,KACDT,EACA6H,EAAMpJ,OACY,iBAAX/C,GAAuBA,OAG9B+C,GAAQgC,EAAQzB,QAAU,YAAY3C,KAAKX,OACtCsD,QAAS,GAGdP,MACI,IAAI6G,EAAStM,KAAMyH,KACpBhC,KAAKtF,EAAUsF,IAGD,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDApVe,+CAqFjBsE,oBA2QTxF,UAAUqE,GAAGvF,EAAMwF,eAAgBpF,EAASkM,YAAa,SAAU/I,GAE/B,MAAhCA,EAAMiL,cAAcjF,WAChBjE,qBAGFmJ,EAAW9O,EAAED,MACb2B,EAAWf,EAAK+D,uBAAuB3E,QAC3C2B,GAAU4D,KAAK,eACTyJ,EAAU/O,EAAED,MAEZ0C,EADUsM,EAAQvJ,KAAKtF,GACN,SAAW4O,EAAStJ,SAClCH,iBAAiBxF,KAAKkP,EAAStM,SAU1CgB,GAAGxD,GAAQoM,EAAShH,mBACpB5B,GAAGxD,GAAMb,YAAciN,IACvB5I,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNiM,EAAShH,kBAGXgH,EArYS,CAsYfrM,GLxXCgP,EAA8B,oBAAXzL,QAA8C,oBAAbhC,SACpD0N,GAAyB,OAAQ,UAAW,WAC5CC,EAAkB,EACbxQ,EAAI,EAAGA,EAAIuQ,EAAsBtQ,OAAQD,GAAK,EACrD,GAAIsQ,GAAaG,UAAUC,UAAUpF,QAAQiF,EAAsBvQ,KAAO,EAAG,CAC3EwQ,EAAkB,EAClB,MA+BJ,IAWIG,EAXqBL,GAAazL,OAAO+L,QA3B7C,SAA2B7L,GACzB,IAAI1C,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTwC,OAAO+L,QAAQC,UAAUC,KAAK,WAC5BzO,GAAS,EACT0C,SAKN,SAAsBA,GACpB,IAAIgM,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZ9F,WAAW,WACT8F,GAAY,EACZhM,KACCyL,MAyBT,SAASQ,EAAWC,GAElB,OAAOA,GAA8D,yBAAnC3M,SAASnD,KAAK8P,GAUlD,SAASC,EAAyBnO,EAASkB,GACzC,GAAyB,IAArBlB,EAAQc,SACV,SAGF,IAAI0F,EAAM4H,iBAAiBpO,EAAS,MACpC,OAAOkB,EAAWsF,EAAItF,GAAYsF,EAUpC,SAAS6H,EAAcrO,GACrB,MAAyB,SAArBA,EAAQsO,SACHtO,EAEFA,EAAQuO,YAAcvO,EAAQwO,KAUvC,SAASC,EAAgBzO,GAEvB,IAAKA,EACH,OAAOF,SAAS4O,KAGlB,OAAQ1O,EAAQsO,UACd,IAAK,OACL,IAAK,OACH,OAAOtO,EAAQ2O,cAAcD,KAC/B,IAAK,YACH,OAAO1O,EAAQ0O,KAKnB,IAAIE,EAAwBT,EAAyBnO,GACjD6O,EAAWD,EAAsBC,SACjCC,EAAYF,EAAsBE,UAClCC,EAAYH,EAAsBG,UAEtC,MAAI,gBAAgBpN,KAAKkN,EAAWE,EAAYD,GACvC9O,EAGFyO,EAAgBJ,EAAcrO,IAUvC,SAASgP,EAAgBhP,GAEvB,IAAIiP,EAAejP,GAAWA,EAAQiP,aAClCX,EAAWW,GAAgBA,EAAaX,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAUgB,KAAnD,KAAM,SAAS/F,QAAQ0G,EAAaX,WAA2E,WAAvDH,EAAyBc,EAAc,YAC3FD,EAAgBC,GAGlBA,EAbDjP,EACKA,EAAQ2O,cAAc3G,gBAGxBlI,SAASkI,gBA4BpB,SAASkH,EAAQC,GACf,OAAwB,OAApBA,EAAKZ,WACAW,EAAQC,EAAKZ,YAGfY,EAWT,SAASC,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAASvO,UAAawO,GAAaA,EAASxO,UAC5D,OAAOhB,SAASkI,gBAIlB,IAAIuH,EAAQF,EAASG,wBAAwBF,GAAYG,KAAKC,4BAC1DC,EAAQJ,EAAQF,EAAWC,EAC3B3O,EAAM4O,EAAQD,EAAWD,EAGzBO,EAAQ9P,SAAS+P,cACrBD,EAAME,SAASH,EAAO,GACtBC,EAAMG,OAAOpP,EAAK,GAClB,IA/CyBX,EACrBsO,EA8CA0B,EAA0BJ,EAAMI,wBAIpC,GAAIX,IAAaW,GAA2BV,IAAaU,GAA2BL,EAAM5K,SAASpE,GACjG,MAjDe,UAFb2N,GADqBtO,EAoDDgQ,GAnDD1B,WAKH,SAAbA,GAAuBU,EAAgBhP,EAAQiQ,qBAAuBjQ,EAkDpEgP,EAAgBgB,GAHdA,EAOX,IAAIE,EAAehB,EAAQG,GAC3B,OAAIa,EAAa1B,KACRY,EAAuBc,EAAa1B,KAAMc,GAE1CF,EAAuBC,EAAUH,EAAQI,GAAUd,MAY9D,SAAS2B,EAAUnQ,GACjB,IAEIoQ,EAAqB,SAFdnS,UAAUf,OAAS,QAAsBmT,IAAjBpS,UAAU,GAAmBA,UAAU,GAAK,OAE9C,YAAc,aAC3CqQ,EAAWtO,EAAQsO,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAIgC,EAAOtQ,EAAQ2O,cAAc3G,gBAEjC,OADuBhI,EAAQ2O,cAAc4B,kBAAoBD,GACzCF,GAG1B,OAAOpQ,EAAQoQ,GAmCjB,SAASI,EAAeC,EAAQC,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,SAAVD,EAAmB,QAAU,SAEzC,OAAOE,WAAWJ,EAAO,SAAWE,EAAQ,SAAU,IAAME,WAAWJ,EAAO,SAAWG,EAAQ,SAAU,IAS7G,IAAIE,OAAST,EAETU,EAAW,WAIb,YAHeV,IAAXS,IACFA,GAAsD,IAA7CpD,UAAUsD,WAAWzI,QAAQ,YAEjCuI,GAGT,SAASG,EAAQP,EAAMhC,EAAM4B,EAAMY,GACjC,OAAOtR,KAAKuR,IAAIzC,EAAK,SAAWgC,GAAOhC,EAAK,SAAWgC,GAAOJ,EAAK,SAAWI,GAAOJ,EAAK,SAAWI,GAAOJ,EAAK,SAAWI,GAAOK,IAAaT,EAAK,SAAWI,GAAQQ,EAAc,UAAqB,WAATR,EAAoB,MAAQ,SAAWQ,EAAc,UAAqB,WAATR,EAAoB,SAAW,UAAY,GAGhT,SAASU,IACP,IAAI1C,EAAO5O,SAAS4O,KAChB4B,EAAOxQ,SAASkI,gBAChBkJ,EAAgBH,KAAc3C,iBAAiBkC,GAEnD,OACEe,OAAQJ,EAAQ,SAAUvC,EAAM4B,EAAMY,GACtCI,MAAOL,EAAQ,QAASvC,EAAM4B,EAAMY,IAIxC,IAAIK,GAAiB,SAAUC,EAAU7T,GACvC,KAAM6T,aAAoB7T,GACxB,MAAM,IAAI0M,UAAU,sCAIpBoH,GAAc,WAChB,SAASC,EAAiB3U,EAAQC,GAChC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAIlD,OAAO,SAAUQ,EAAaC,EAAYC,GAGxC,OAFID,GAAY8T,EAAiB/T,EAAYG,UAAWF,GACpDC,GAAa6T,EAAiB/T,EAAaE,GACxCF,GAdO,GAsBdH,GAAiB,SAAUqD,EAAKpD,EAAK2D,GAYvC,OAXI3D,KAAOoD,EACTtD,OAAOC,eAAeqD,EAAKpD,GACzB2D,MAAOA,EACPhE,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZuD,EAAIpD,GAAO2D,EAGNP,GAGL9C,GAAWR,OAAOS,QAAU,SAAUjB,GACxC,IAAK,IAAIE,EAAI,EAAGA,EAAIgB,UAAUf,OAAQD,IAAK,CACzC,IAAIiB,EAASD,UAAUhB,GAEvB,IAAK,IAAIQ,KAAOS,EACVX,OAAOO,UAAUK,eAAeC,KAAKF,EAAQT,KAC/CV,EAAOU,GAAOS,EAAOT,IAK3B,OAAOV,GAUT,SAAS4U,GAAcC,GACrB,OAAO7T,MAAa6T,GAClBC,MAAOD,EAAQE,KAAOF,EAAQN,MAC9BS,OAAQH,EAAQI,IAAMJ,EAAQP,SAWlC,SAASzE,GAAsB5M,GAC7B,IAAIiS,KAKJ,GAAIlB,IACF,IACEkB,EAAOjS,EAAQ4M,wBACf,IAAIsF,EAAY/B,EAAUnQ,EAAS,OAC/BmS,EAAahC,EAAUnQ,EAAS,QACpCiS,EAAKD,KAAOE,EACZD,EAAKH,MAAQK,EACbF,EAAKF,QAAUG,EACfD,EAAKJ,OAASM,EACd,MAAO3R,SAETyR,EAAOjS,EAAQ4M,wBAGjB,IAAIwF,GACFN,KAAMG,EAAKH,KACXE,IAAKC,EAAKD,IACVV,MAAOW,EAAKJ,MAAQI,EAAKH,KACzBT,OAAQY,EAAKF,OAASE,EAAKD,KAIzBK,EAA6B,SAArBrS,EAAQsO,SAAsB8C,OACtCE,EAAQe,EAAMf,OAAStR,EAAQsS,aAAeF,EAAOP,MAAQO,EAAON,KACpET,EAASgB,EAAMhB,QAAUrR,EAAQuS,cAAgBH,EAAOL,OAASK,EAAOJ,IAExEQ,EAAiBxS,EAAQyS,YAAcnB,EACvCoB,EAAgB1S,EAAQS,aAAe4Q,EAI3C,GAAImB,GAAkBE,EAAe,CACnC,IAAIjC,EAAStC,EAAyBnO,GACtCwS,GAAkBhC,EAAeC,EAAQ,KACzCiC,GAAiBlC,EAAeC,EAAQ,KAExC2B,EAAOd,OAASkB,EAChBJ,EAAOf,QAAUqB,EAGnB,OAAOf,GAAcS,GAGvB,SAASO,GAAqCnJ,EAAUtG,GACtD,IAAI4N,EAASC,IACT6B,EAA6B,SAApB1P,EAAOoL,SAChBuE,EAAejG,GAAsBpD,GACrCsJ,EAAalG,GAAsB1J,GACnC6P,EAAetE,EAAgBjF,GAE/BiH,EAAStC,EAAyBjL,GAClC8P,EAAiBnC,WAAWJ,EAAOuC,eAAgB,IACnDC,EAAkBpC,WAAWJ,EAAOwC,gBAAiB,IAErDrB,EAAUD,IACZK,IAAKa,EAAab,IAAMc,EAAWd,IAAMgB,EACzClB,KAAMe,EAAaf,KAAOgB,EAAWhB,KAAOmB,EAC5C3B,MAAOuB,EAAavB,MACpBD,OAAQwB,EAAaxB,SASvB,GAPAO,EAAQsB,UAAY,EACpBtB,EAAQuB,WAAa,GAMhBrC,GAAU8B,EAAQ,CACrB,IAAIM,EAAYrC,WAAWJ,EAAOyC,UAAW,IACzCC,EAAatC,WAAWJ,EAAO0C,WAAY,IAE/CvB,EAAQI,KAAOgB,EAAiBE,EAChCtB,EAAQG,QAAUiB,EAAiBE,EACnCtB,EAAQE,MAAQmB,EAAkBE,EAClCvB,EAAQC,OAASoB,EAAkBE,EAGnCvB,EAAQsB,UAAYA,EACpBtB,EAAQuB,WAAaA,EAOvB,OAJIrC,EAAS5N,EAAO6B,SAASgO,GAAgB7P,IAAW6P,GAA0C,SAA1BA,EAAazE,YACnFsD,EAlOJ,SAAuBK,EAAMjS,GAC3B,IAAIoT,EAAWnV,UAAUf,OAAS,QAAsBmT,IAAjBpS,UAAU,IAAmBA,UAAU,GAE1EiU,EAAY/B,EAAUnQ,EAAS,OAC/BmS,EAAahC,EAAUnQ,EAAS,QAChCqT,EAAWD,GAAY,EAAI,EAK/B,OAJAnB,EAAKD,KAAOE,EAAYmB,EACxBpB,EAAKF,QAAUG,EAAYmB,EAC3BpB,EAAKH,MAAQK,EAAakB,EAC1BpB,EAAKJ,OAASM,EAAakB,EACpBpB,EAwNKqB,CAAc1B,EAAS1O,IAG5B0O,EAmDT,SAAS2B,GAAcC,EAAQC,EAAWC,EAASC,GAEjD,IAlDqD3T,EACjDsQ,EACAsD,EACAtC,EACAD,EAEAa,EACAC,EA2CA0B,GAAe7B,IAAK,EAAGF,KAAM,GAC7B7C,EAAeG,EAAuBoE,EAAQC,GAGlD,GAA0B,aAAtBE,EArDArD,GADiDtQ,EAuDQiP,GAtD1CN,cAAc3G,gBAC7B4L,EAAiBjB,GAAqC3S,EAASsQ,GAC/DgB,EAAQ1R,KAAKuR,IAAIb,EAAKgC,YAAaxQ,OAAOgS,YAAc,GACxDzC,EAASzR,KAAKuR,IAAIb,EAAKiC,aAAczQ,OAAOiS,aAAe,GAE3D7B,EAAY/B,EAAUG,GACtB6B,EAAahC,EAAUG,EAAM,QAgD/BuD,EAvCKlC,IANLK,IAAKE,EAAY0B,EAAe5B,IAAM4B,EAAeV,UACrDpB,KAAMK,EAAayB,EAAe9B,KAAO8B,EAAeT,WACxD7B,MAAOA,EACPD,OAAQA,QA2CH,CAEL,IAAI2C,OAAiB,EACK,iBAAtBL,EAE8B,UADhCK,EAAiBvF,EAAgBJ,EAAcoF,KAC5BnF,WACjB0F,EAAiBR,EAAO7E,cAAc3G,iBAGxCgM,EAD+B,WAAtBL,EACQH,EAAO7E,cAAc3G,gBAErB2L,EAGnB,IAAI/B,EAAUe,GAAqCqB,EAAgB/E,GAGnE,GAAgC,SAA5B+E,EAAe1F,UA9CvB,SAAS2F,EAAQjU,GACf,IAAIsO,EAAWtO,EAAQsO,SACvB,MAAiB,SAAbA,GAAoC,SAAbA,IAG2B,UAAlDH,EAAyBnO,EAAS,aAG/BiU,EAAQ5F,EAAcrO,KAsCgBiU,CAAQhF,GAWjD4E,EAAajC,MAXmD,CAChE,IAAIsC,EAAkB9C,IAClBC,EAAS6C,EAAgB7C,OACzBC,EAAQ4C,EAAgB5C,MAE5BuC,EAAW7B,KAAOJ,EAAQI,IAAMJ,EAAQsB,UACxCW,EAAW9B,OAASV,EAASO,EAAQI,IACrC6B,EAAW/B,MAAQF,EAAQE,KAAOF,EAAQuB,WAC1CU,EAAWhC,MAAQP,EAAQM,EAAQE,MAavC,OALA+B,EAAW/B,MAAQ4B,EACnBG,EAAW7B,KAAO0B,EAClBG,EAAWhC,OAAS6B,EACpBG,EAAW9B,QAAU2B,EAEdG,EAmBT,SAASM,GAAqBC,EAAWC,EAASb,EAAQC,EAAWE,GACnE,IAAID,EAAUzV,UAAUf,OAAS,QAAsBmT,IAAjBpS,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/BmW,EAAU7L,QAAQ,QACpB,OAAO6L,EAGT,IAAIP,EAAaN,GAAcC,EAAQC,EAAWC,EAASC,GAEvDW,GACFtC,KACEV,MAAOuC,EAAWvC,MAClBD,OAAQgD,EAAQrC,IAAM6B,EAAW7B,KAEnCH,OACEP,MAAOuC,EAAWhC,MAAQwC,EAAQxC,MAClCR,OAAQwC,EAAWxC,QAErBU,QACET,MAAOuC,EAAWvC,MAClBD,OAAQwC,EAAW9B,OAASsC,EAAQtC,QAEtCD,MACER,MAAO+C,EAAQvC,KAAO+B,EAAW/B,KACjCT,OAAQwC,EAAWxC,SAInBkD,EAAchX,OAAOiX,KAAKF,GAAOG,IAAI,SAAUhX,GACjD,OAAOM,IACLN,IAAKA,GACJ6W,EAAM7W,IACPiX,MAhDWC,EAgDGL,EAAM7W,GA/CZkX,EAAKrD,MACJqD,EAAKtD,UAFpB,IAAiBsD,IAkDZC,KAAK,SAAUC,EAAGC,GACnB,OAAOA,EAAEJ,KAAOG,EAAEH,OAGhBK,EAAgBR,EAAYnJ,OAAO,SAAU4J,GAC/C,IAAI1D,EAAQ0D,EAAM1D,MACdD,EAAS2D,EAAM3D,OACnB,OAAOC,GAASkC,EAAOlB,aAAejB,GAAUmC,EAAOjB,eAGrD0C,EAAoBF,EAAc7X,OAAS,EAAI6X,EAAc,GAAGtX,IAAM8W,EAAY,GAAG9W,IAErFyX,EAAYd,EAAUe,MAAM,KAAK,GAErC,OAAOF,GAAqBC,EAAY,IAAMA,EAAY,IAY5D,SAASE,GAAoBC,EAAO7B,EAAQC,GAE1C,OAAOd,GAAqCc,EADnBrE,EAAuBoE,EAAQC,IAW1D,SAAS6B,GAActV,GACrB,IAAIyQ,EAASrC,iBAAiBpO,GAC1BuV,EAAI1E,WAAWJ,EAAOyC,WAAarC,WAAWJ,EAAO+E,cACrDC,EAAI5E,WAAWJ,EAAO0C,YAActC,WAAWJ,EAAOiF,aAK1D,OAHEpE,MAAOtR,EAAQyS,YAAcgD,EAC7BpE,OAAQrR,EAAQS,aAAe8U,GAYnC,SAASI,GAAqBvB,GAC5B,IAAIwB,GAAS9D,KAAM,QAASD,MAAO,OAAQE,OAAQ,MAAOC,IAAK,UAC/D,OAAOoC,EAAU9T,QAAQ,yBAA0B,SAAUuV,GAC3D,OAAOD,EAAKC,KAchB,SAASC,GAAiBtC,EAAQuC,EAAkB3B,GAClDA,EAAYA,EAAUe,MAAM,KAAK,GAGjC,IAAIa,EAAaV,GAAc9B,GAG3ByC,GACF3E,MAAO0E,EAAW1E,MAClBD,OAAQ2E,EAAW3E,QAIjB6E,GAAoD,KAAzC,QAAS,QAAQ3N,QAAQ6L,GACpC+B,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZhC,IAAcgC,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBJ,GAAqBS,IAGhEH,EAYT,SAAS1V,GAAKgW,EAAKC,GAEjB,OAAIC,MAAM3Y,UAAUyC,KACXgW,EAAIhW,KAAKiW,GAIXD,EAAInL,OAAOoL,GAAO,GAqC3B,SAASE,GAAaC,EAAW5S,EAAM6S,GAoBrC,YAnB8BvG,IAATuG,EAAqBD,EAAYA,EAAUjK,MAAM,EA1BxE,SAAmB6J,EAAKM,EAAMzV,GAE5B,GAAIqV,MAAM3Y,UAAUgZ,UAClB,OAAOP,EAAIO,UAAU,SAAUC,GAC7B,OAAOA,EAAIF,KAAUzV,IAKzB,IAAII,EAAQjB,GAAKgW,EAAK,SAAU1V,GAC9B,OAAOA,EAAIgW,KAAUzV,IAEvB,OAAOmV,EAAIhO,QAAQ/G,GAcsDsV,CAAUH,EAAW,OAAQC,KAEvFI,QAAQ,SAAU3D,GAC3BA,EAAmB,UAErB4D,QAAQC,KAAK,yDAEf,IAAIlV,EAAKqR,EAAmB,UAAKA,EAASrR,GACtCqR,EAAS8D,SAAWlJ,EAAWjM,KAIjC+B,EAAK6N,QAAQ4B,OAAS7B,GAAc5N,EAAK6N,QAAQ4B,QACjDzP,EAAK6N,QAAQ6B,UAAY9B,GAAc5N,EAAK6N,QAAQ6B,WAEpD1P,EAAO/B,EAAG+B,EAAMsP,MAIbtP,EA2DT,SAASqT,GAAkBT,EAAWU,GACpC,OAAOV,EAAUW,KAAK,SAAU3C,GAC9B,IAAI4C,EAAO5C,EAAK4C,KAEhB,OADc5C,EAAKwC,SACDI,IAASF,IAW/B,SAASG,GAAyBtW,GAIhC,IAHA,IAAIuW,IAAY,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAYxW,EAASf,OAAO,GAAG0B,cAAgBX,EAASwL,MAAM,GAEzDzP,EAAI,EAAGA,EAAIwa,EAASva,OAAS,EAAGD,IAAK,CAC5C,IAAI0C,EAAS8X,EAASxa,GAClB0a,EAAUhY,EAAS,GAAKA,EAAS+X,EAAYxW,EACjD,GAA4C,oBAAjCpB,SAAS4O,KAAKtC,MAAMuL,GAC7B,OAAOA,EAGX,OAAO,KAmCT,SAASC,GAAU5X,GACjB,IAAI2O,EAAgB3O,EAAQ2O,cAC5B,OAAOA,EAAgBA,EAAckJ,YAAc/V,OAoBrD,SAASgW,GAAoBrE,EAAWsE,EAAS1C,EAAO2C,GAEtD3C,EAAM2C,YAAcA,EACpBJ,GAAUnE,GAAWwE,iBAAiB,SAAU5C,EAAM2C,aAAeE,SAAS,IAG9E,IAAIC,EAAgB1J,EAAgBgF,GAKpC,OA5BF,SAAS2E,EAAsBrF,EAAc5Q,EAAOkW,EAAUC,GAC5D,IAAIC,EAAmC,SAA1BxF,EAAazE,SACtBvR,EAASwb,EAASxF,EAAapE,cAAckJ,YAAc9E,EAC/DhW,EAAOkb,iBAAiB9V,EAAOkW,GAAYH,SAAS,IAE/CK,GACHH,EAAsB3J,EAAgB1R,EAAOwR,YAAapM,EAAOkW,EAAUC,GAE7EA,EAAchN,KAAKvO,GAgBnBqb,CAAsBD,EAAe,SAAU9C,EAAM2C,YAAa3C,EAAMiD,eACxEjD,EAAM8C,cAAgBA,EACtB9C,EAAMmD,eAAgB,EAEfnD,EA6CT,SAASoD,KAxBT,IAA8BhF,EAAW4B,EAyBnC/W,KAAK+W,MAAMmD,gBACbE,qBAAqBpa,KAAKqa,gBAC1Bra,KAAK+W,OA3BqB5B,EA2BQnV,KAAKmV,UA3BF4B,EA2Ba/W,KAAK+W,MAzBzDuC,GAAUnE,GAAWmF,oBAAoB,SAAUvD,EAAM2C,aAGzD3C,EAAMiD,cAActB,QAAQ,SAAUja,GACpCA,EAAO6b,oBAAoB,SAAUvD,EAAM2C,eAI7C3C,EAAM2C,YAAc,KACpB3C,EAAMiD,iBACNjD,EAAM8C,cAAgB,KACtB9C,EAAMmD,eAAgB,EACfnD,IAwBT,SAASwD,GAAUC,GACjB,MAAa,KAANA,IAAaC,MAAMlI,WAAWiI,KAAOE,SAASF,GAWvD,SAASG,GAAUjZ,EAASyQ,GAC1BlT,OAAOiX,KAAK/D,GAAQuG,QAAQ,SAAUH,GACpC,IAAIqC,EAAO,IAEkE,KAAxE,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQ3Q,QAAQsO,IAAgBgC,GAAUpI,EAAOoG,MACjGqC,EAAO,MAETlZ,EAAQoM,MAAMyK,GAAQpG,EAAOoG,GAAQqC,IAuLzC,SAASC,GAAmBxC,EAAWyC,EAAgBC,GACrD,IAAIC,EAAa/Y,GAAKoW,EAAW,SAAUhC,GAEzC,OADWA,EAAK4C,OACA6B,IAGdG,IAAeD,GAAc3C,EAAUW,KAAK,SAAUjE,GACxD,OAAOA,EAASkE,OAAS8B,GAAiBhG,EAAS8D,SAAW9D,EAAS9D,MAAQ+J,EAAW/J,QAG5F,IAAKgK,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IACrCK,EAAY,IAAMJ,EAAgB,IACtCpC,QAAQC,KAAKuC,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAEnJ,OAAOD,EAoIT,IAAIG,IAAc,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,GAAkBD,GAAWhN,MAAM,GAYvC,SAASkN,GAAUxF,GACjB,IAAIyF,EAAU5b,UAAUf,OAAS,QAAsBmT,IAAjBpS,UAAU,IAAmBA,UAAU,GAEzEiJ,EAAQyS,GAAgBpR,QAAQ6L,GAChCmC,EAAMoD,GAAgBjN,MAAMxF,EAAQ,GAAG4S,OAAOH,GAAgBjN,MAAM,EAAGxF,IAC3E,OAAO2S,EAAUtD,EAAIwD,UAAYxD,EAGnC,IAAIyD,IACFC,KAAM,OACNC,UAAW,YACXC,iBAAkB,oBA0LpB,SAASC,GAAYC,EAAQpE,EAAeF,EAAkBuE,GAC5D,IAAI1I,GAAW,EAAG,GAKd2I,GAA0D,KAA7C,QAAS,QAAQhS,QAAQ+R,GAItCE,EAAYH,EAAOlF,MAAM,WAAWV,IAAI,SAAUgG,GACpD,OAAOA,EAAKC,SAKVC,EAAUH,EAAUjS,QAAQhI,GAAKia,EAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKG,OAAO,WAGjBJ,EAAUG,KAAiD,IAArCH,EAAUG,GAASpS,QAAQ,MACnD0O,QAAQC,KAAK,gFAKf,IAAI2D,EAAa,cACbC,GAAmB,IAAbH,GAAkBH,EAAU9N,MAAM,EAAGiO,GAASb,QAAQU,EAAUG,GAASxF,MAAM0F,GAAY,MAAOL,EAAUG,GAASxF,MAAM0F,GAAY,IAAIf,OAAOU,EAAU9N,MAAMiO,EAAU,MAAQH,GAqC9L,OAlCAM,EAAMA,EAAIrG,IAAI,SAAUsG,EAAI7T,GAE1B,IAAImP,GAAyB,IAAVnP,GAAeqT,EAAYA,GAAa,SAAW,QAClES,GAAoB,EACxB,OAAOD,EAGNE,OAAO,SAAUpG,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAE3X,OAAS,KAAwC,KAA1B,IAAK,KAAKqL,QAAQuM,IAC/CD,EAAEA,EAAE3X,OAAS,GAAK4X,EAClBkG,GAAoB,EACbnG,GACEmG,GACTnG,EAAEA,EAAE3X,OAAS,IAAM4X,EACnBkG,GAAoB,EACbnG,GAEAA,EAAEiF,OAAOhF,QAInBL,IAAI,SAAUyG,GACb,OAxGN,SAAiBA,EAAK7E,EAAaJ,EAAeF,GAEhD,IAAIZ,EAAQ+F,EAAI1Z,MAAM,6BAClBJ,GAAS+T,EAAM,GACf+D,EAAO/D,EAAM,GAGjB,IAAK/T,EACH,OAAO8Z,EAGT,GAA0B,IAAtBhC,EAAK3Q,QAAQ,KAAY,CAC3B,IAAIvI,OAAU,EACd,OAAQkZ,GACN,IAAK,KACHlZ,EAAUiW,EACV,MACF,IAAK,IACL,IAAK,KACL,QACEjW,EAAU+V,EAId,OADWpE,GAAc3R,GACbqW,GAAe,IAAMjV,EAC5B,GAAa,OAAT8X,GAA0B,OAATA,EAQ1B,OALa,OAATA,EACKtZ,KAAKuR,IAAIrR,SAASkI,gBAAgBuK,aAAczQ,OAAOiS,aAAe,GAEtEnU,KAAKuR,IAAIrR,SAASkI,gBAAgBsK,YAAaxQ,OAAOgS,YAAc,IAE/D,IAAM1S,EAIpB,OAAOA,EAmEE+Z,CAAQD,EAAK7E,EAAaJ,EAAeF,QAKhDiB,QAAQ,SAAU+D,EAAI7T,GACxB6T,EAAG/D,QAAQ,SAAUyD,EAAMW,GACrBvC,GAAU4B,KACZ7I,EAAQ1K,IAAUuT,GAA2B,MAAnBM,EAAGK,EAAS,IAAc,EAAI,QAIvDxJ,EAuNT,IAkVIyJ,IAKFjH,UAAW,SAMXoE,eAAe,EAOf8C,iBAAiB,EAQjBC,SAAU,aAUVC,SAAU,aAOV7E,WApXA8E,OAEElM,MAAO,IAEP4H,SAAS,EAETnV,GA9HJ,SAAe+B,GACb,IAAIqQ,EAAYrQ,EAAKqQ,UACjBkG,EAAgBlG,EAAUe,MAAM,KAAK,GACrCuG,EAAiBtH,EAAUe,MAAM,KAAK,GAG1C,GAAIuG,EAAgB,CAClB,IAAIC,EAAgB5X,EAAK6N,QACrB6B,EAAYkI,EAAclI,UAC1BD,EAASmI,EAAcnI,OAEvBoI,GAA2D,KAA7C,SAAU,OAAOrT,QAAQ+R,GACvCuB,EAAOD,EAAa,OAAS,MAC7BvF,EAAcuF,EAAa,QAAU,SAErCE,GACFnM,MAAOnS,MAAmBqe,EAAMpI,EAAUoI,IAC1Clb,IAAKnD,MAAmBqe,EAAMpI,EAAUoI,GAAQpI,EAAU4C,GAAe7C,EAAO6C,KAGlFtS,EAAK6N,QAAQ4B,OAASzV,MAAayV,EAAQsI,EAAaJ,IAG1D,OAAO3X,IAgJPsW,QAEE9K,MAAO,IAEP4H,SAAS,EAETnV,GAzQJ,SAAgB+B,EAAM4Q,GACpB,IAAI0F,EAAS1F,EAAK0F,OACdjG,EAAYrQ,EAAKqQ,UACjBuH,EAAgB5X,EAAK6N,QACrB4B,EAASmI,EAAcnI,OACvBC,EAAYkI,EAAclI,UAE1B6G,EAAgBlG,EAAUe,MAAM,KAAK,GAErCvD,OAAU,EAsBd,OApBEA,EADEiH,IAAWwB,KACDA,EAAQ,GAEVD,GAAYC,EAAQ7G,EAAQC,EAAW6G,GAG7B,SAAlBA,GACF9G,EAAOxB,KAAOJ,EAAQ,GACtB4B,EAAO1B,MAAQF,EAAQ,IACI,UAAlB0I,GACT9G,EAAOxB,KAAOJ,EAAQ,GACtB4B,EAAO1B,MAAQF,EAAQ,IACI,QAAlB0I,GACT9G,EAAO1B,MAAQF,EAAQ,GACvB4B,EAAOxB,KAAOJ,EAAQ,IACK,WAAlB0I,IACT9G,EAAO1B,MAAQF,EAAQ,GACvB4B,EAAOxB,KAAOJ,EAAQ,IAGxB7N,EAAKyP,OAASA,EACPzP,GA8OLsW,OAAQ,GAoBV0B,iBAEExM,MAAO,IAEP4H,SAAS,EAETnV,GA9PJ,SAAyB+B,EAAMgU,GAC7B,IAAIpE,EAAoBoE,EAAQpE,mBAAqB3E,EAAgBjL,EAAKyN,SAASgC,QAK/EzP,EAAKyN,SAASiC,YAAcE,IAC9BA,EAAoB3E,EAAgB2E,IAGtC,IAAIE,EAAaN,GAAcxP,EAAKyN,SAASgC,OAAQzP,EAAKyN,SAASiC,UAAWsE,EAAQrE,QAASC,GAC/FoE,EAAQlE,WAAaA,EAErB,IAAItE,EAAQwI,EAAQiE,SAChBxI,EAASzP,EAAK6N,QAAQ4B,OAEtBgD,GACFyF,QAAS,SAAiB7H,GACxB,IAAIhT,EAAQoS,EAAOY,GAInB,OAHIZ,EAAOY,GAAaP,EAAWO,KAAe2D,EAAQmE,sBACxD9a,EAAQxB,KAAKuR,IAAIqC,EAAOY,GAAYP,EAAWO,KAE1C5W,MAAmB4W,EAAWhT,IAEvC+a,UAAW,SAAmB/H,GAC5B,IAAI+B,EAAyB,UAAd/B,EAAwB,OAAS,MAC5ChT,EAAQoS,EAAO2C,GAInB,OAHI3C,EAAOY,GAAaP,EAAWO,KAAe2D,EAAQmE,sBACxD9a,EAAQxB,KAAKwc,IAAI5I,EAAO2C,GAAWtC,EAAWO,IAA4B,UAAdA,EAAwBZ,EAAOlC,MAAQkC,EAAOnC,UAErG7T,MAAmB2Y,EAAU/U,KAWxC,OAPAmO,EAAMyH,QAAQ,SAAU5C,GACtB,IAAIyH,GAA+C,KAAvC,OAAQ,OAAOtT,QAAQ6L,GAAoB,UAAY,YACnEZ,EAASzV,MAAayV,EAAQgD,EAAMqF,GAAMzH,MAG5CrQ,EAAK6N,QAAQ4B,OAASA,EAEfzP,GA2NLiY,UAAW,OAAQ,QAAS,MAAO,UAOnCtI,QAAS,EAMTC,kBAAmB,gBAYrB0I,cAEE9M,MAAO,IAEP4H,SAAS,EAETnV,GA9eJ,SAAsB+B,GACpB,IAAI4X,EAAgB5X,EAAK6N,QACrB4B,EAASmI,EAAcnI,OACvBC,EAAYkI,EAAclI,UAE1BW,EAAYrQ,EAAKqQ,UAAUe,MAAM,KAAK,GACtCmH,EAAQ1c,KAAK0c,MACbV,GAAuD,KAAzC,MAAO,UAAUrT,QAAQ6L,GACvCyH,EAAOD,EAAa,QAAU,SAC9BW,EAASX,EAAa,OAAS,MAC/BvF,EAAcuF,EAAa,QAAU,SASzC,OAPIpI,EAAOqI,GAAQS,EAAM7I,EAAU8I,MACjCxY,EAAK6N,QAAQ4B,OAAO+I,GAAUD,EAAM7I,EAAU8I,IAAW/I,EAAO6C,IAE9D7C,EAAO+I,GAAUD,EAAM7I,EAAUoI,MACnC9X,EAAK6N,QAAQ4B,OAAO+I,GAAUD,EAAM7I,EAAUoI,KAGzC9X,IAwePyY,OAEEjN,MAAO,IAEP4H,SAAS,EAETnV,GAzvBJ,SAAe+B,EAAMgU,GACnB,IAAI0E,EAGJ,IAAKtD,GAAmBpV,EAAKyN,SAASmF,UAAW,QAAS,gBACxD,OAAO5S,EAGT,IAAI2Y,EAAe3E,EAAQ/X,QAG3B,GAA4B,iBAAjB0c,GAIT,KAHAA,EAAe3Y,EAAKyN,SAASgC,OAAOmJ,cAAcD,IAIhD,OAAO3Y,OAKT,IAAKA,EAAKyN,SAASgC,OAAOzO,SAAS2X,GAEjC,OADAzF,QAAQC,KAAK,iEACNnT,EAIX,IAAIqQ,EAAYrQ,EAAKqQ,UAAUe,MAAM,KAAK,GACtCwG,EAAgB5X,EAAK6N,QACrB4B,EAASmI,EAAcnI,OACvBC,EAAYkI,EAAclI,UAE1BmI,GAAuD,KAAzC,OAAQ,SAASrT,QAAQ6L,GAEvCwI,EAAMhB,EAAa,SAAW,QAC9BiB,EAAkBjB,EAAa,MAAQ,OACvCC,EAAOgB,EAAgBpb,cACvBqb,EAAUlB,EAAa,OAAS,MAChCW,EAASX,EAAa,SAAW,QACjCmB,EAAmBzH,GAAcoH,GAAcE,GAQ/CnJ,EAAU8I,GAAUQ,EAAmBvJ,EAAOqI,KAChD9X,EAAK6N,QAAQ4B,OAAOqI,IAASrI,EAAOqI,IAASpI,EAAU8I,GAAUQ,IAG/DtJ,EAAUoI,GAAQkB,EAAmBvJ,EAAO+I,KAC9CxY,EAAK6N,QAAQ4B,OAAOqI,IAASpI,EAAUoI,GAAQkB,EAAmBvJ,EAAO+I,IAE3ExY,EAAK6N,QAAQ4B,OAAS7B,GAAc5N,EAAK6N,QAAQ4B,QAGjD,IAAIwJ,EAASvJ,EAAUoI,GAAQpI,EAAUmJ,GAAO,EAAIG,EAAmB,EAInEvW,EAAM2H,EAAyBpK,EAAKyN,SAASgC,QAC7CyJ,EAAmBpM,WAAWrK,EAAI,SAAWqW,GAAkB,IAC/DK,EAAmBrM,WAAWrK,EAAI,SAAWqW,EAAkB,SAAU,IACzEM,EAAYH,EAASjZ,EAAK6N,QAAQ4B,OAAOqI,GAAQoB,EAAmBC,EAQxE,OALAC,EAAYvd,KAAKuR,IAAIvR,KAAKwc,IAAI5I,EAAOoJ,GAAOG,EAAkBI,GAAY,GAE1EpZ,EAAK2Y,aAAeA,EACpB3Y,EAAK6N,QAAQ4K,OAAmChf,GAA1Bif,KAA8DZ,EAAMjc,KAAKwd,MAAMD,IAAa3f,GAAeif,EAAqBK,EAAS,IAAKL,GAE7J1Y,GAmrBL/D,QAAS,aAcXqd,MAEE9N,MAAO,IAEP4H,SAAS,EAETnV,GAjnBJ,SAAc+B,EAAMgU,GAElB,GAAIX,GAAkBrT,EAAKyN,SAASmF,UAAW,SAC7C,OAAO5S,EAGT,GAAIA,EAAKuZ,SAAWvZ,EAAKqQ,YAAcrQ,EAAKwZ,kBAE1C,OAAOxZ,EAGT,IAAI8P,EAAaN,GAAcxP,EAAKyN,SAASgC,OAAQzP,EAAKyN,SAASiC,UAAWsE,EAAQrE,QAASqE,EAAQpE,mBAEnGS,EAAYrQ,EAAKqQ,UAAUe,MAAM,KAAK,GACtCqI,EAAoB7H,GAAqBvB,GACzCc,EAAYnR,EAAKqQ,UAAUe,MAAM,KAAK,IAAM,GAE5CsI,KAEJ,OAAQ1F,EAAQ2F,UACd,KAAK1D,GAAUC,KACbwD,GAAarJ,EAAWoJ,GACxB,MACF,KAAKxD,GAAUE,UACbuD,EAAY7D,GAAUxF,GACtB,MACF,KAAK4F,GAAUG,iBACbsD,EAAY7D,GAAUxF,GAAW,GACjC,MACF,QACEqJ,EAAY1F,EAAQ2F,SAkDxB,OA/CAD,EAAUzG,QAAQ,SAAU2G,EAAMzW,GAChC,GAAIkN,IAAcuJ,GAAQF,EAAUvgB,SAAWgK,EAAQ,EACrD,OAAOnD,EAGTqQ,EAAYrQ,EAAKqQ,UAAUe,MAAM,KAAK,GACtCqI,EAAoB7H,GAAqBvB,GAEzC,IArH0Bc,EAqHtBe,EAAgBlS,EAAK6N,QAAQ4B,OAC7BoK,EAAa7Z,EAAK6N,QAAQ6B,UAG1B6I,EAAQ1c,KAAK0c,MACbuB,EAA4B,SAAdzJ,GAAwBkI,EAAMrG,EAAcpE,OAASyK,EAAMsB,EAAW9L,OAAuB,UAAdsC,GAAyBkI,EAAMrG,EAAcnE,MAAQwK,EAAMsB,EAAW/L,QAAwB,QAAduC,GAAuBkI,EAAMrG,EAAclE,QAAUuK,EAAMsB,EAAW5L,MAAsB,WAAdoC,GAA0BkI,EAAMrG,EAAcjE,KAAOsK,EAAMsB,EAAW7L,QAEjU+L,EAAgBxB,EAAMrG,EAAcnE,MAAQwK,EAAMzI,EAAW/B,MAC7DiM,EAAiBzB,EAAMrG,EAAcpE,OAASyK,EAAMzI,EAAWhC,OAC/DmM,EAAe1B,EAAMrG,EAAcjE,KAAOsK,EAAMzI,EAAW7B,KAC3DiM,EAAkB3B,EAAMrG,EAAclE,QAAUuK,EAAMzI,EAAW9B,QAEjEmM,EAAoC,SAAd9J,GAAwB0J,GAA+B,UAAd1J,GAAyB2J,GAAgC,QAAd3J,GAAuB4J,GAA8B,WAAd5J,GAA0B6J,EAG3KrC,GAAuD,KAAzC,MAAO,UAAUrT,QAAQ6L,GACvC+J,IAAqBpG,EAAQqG,iBAAmBxC,GAA4B,UAAd1G,GAAyB4I,GAAiBlC,GAA4B,QAAd1G,GAAuB6I,IAAmBnC,GAA4B,UAAd1G,GAAyB8I,IAAiBpC,GAA4B,QAAd1G,GAAuB+I,IAE7PJ,GAAeK,GAAuBC,KAExCpa,EAAKuZ,SAAU,GAEXO,GAAeK,KACjB9J,EAAYqJ,EAAUvW,EAAQ,IAG5BiX,IACFjJ,EA/IY,SADUA,EAgJWA,GA9I9B,QACgB,UAAdA,EACF,MAEFA,GA6IHnR,EAAKqQ,UAAYA,GAAac,EAAY,IAAMA,EAAY,IAI5DnR,EAAK6N,QAAQ4B,OAASzV,MAAagG,EAAK6N,QAAQ4B,OAAQsC,GAAiB/R,EAAKyN,SAASgC,OAAQzP,EAAK6N,QAAQ6B,UAAW1P,EAAKqQ,YAE5HrQ,EAAO2S,GAAa3S,EAAKyN,SAASmF,UAAW5S,EAAM,WAGhDA,GAwiBL2Z,SAAU,OAKVhK,QAAS,EAOTC,kBAAmB,YAUrB0K,OAEE9O,MAAO,IAEP4H,SAAS,EAETnV,GArPJ,SAAe+B,GACb,IAAIqQ,EAAYrQ,EAAKqQ,UACjBkG,EAAgBlG,EAAUe,MAAM,KAAK,GACrCwG,EAAgB5X,EAAK6N,QACrB4B,EAASmI,EAAcnI,OACvBC,EAAYkI,EAAclI,UAE1ByC,GAAwD,KAA7C,OAAQ,SAAS3N,QAAQ+R,GAEpCgE,GAA6D,KAA3C,MAAO,QAAQ/V,QAAQ+R,GAO7C,OALA9G,EAAO0C,EAAU,OAAS,OAASzC,EAAU6G,IAAkBgE,EAAiB9K,EAAO0C,EAAU,QAAU,UAAY,GAEvHnS,EAAKqQ,UAAYuB,GAAqBvB,GACtCrQ,EAAK6N,QAAQ4B,OAAS7B,GAAc6B,GAE7BzP,IAkPP2H,MAEE6D,MAAO,IAEP4H,SAAS,EAETnV,GA9SJ,SAAc+B,GACZ,IAAKoV,GAAmBpV,EAAKyN,SAASmF,UAAW,OAAQ,mBACvD,OAAO5S,EAGT,IAAIsQ,EAAUtQ,EAAK6N,QAAQ6B,UACvB8K,EAAQhe,GAAKwD,EAAKyN,SAASmF,UAAW,SAAUtD,GAClD,MAAyB,oBAAlBA,EAASkE,OACf1D,WAEH,GAAIQ,EAAQtC,OAASwM,EAAMvM,KAAOqC,EAAQvC,KAAOyM,EAAM1M,OAASwC,EAAQrC,IAAMuM,EAAMxM,QAAUsC,EAAQxC,MAAQ0M,EAAMzM,KAAM,CAExH,IAAkB,IAAd/N,EAAK2H,KACP,OAAO3H,EAGTA,EAAK2H,MAAO,EACZ3H,EAAKya,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAdza,EAAK2H,KACP,OAAO3H,EAGTA,EAAK2H,MAAO,EACZ3H,EAAKya,WAAW,wBAAyB,EAG3C,OAAOza,IAoSP0a,cAEElP,MAAO,IAEP4H,SAAS,EAETnV,GAv9BJ,SAAsB+B,EAAMgU,GAC1B,IAAIxC,EAAIwC,EAAQxC,EACZE,EAAIsC,EAAQtC,EACZjC,EAASzP,EAAK6N,QAAQ4B,OAItBkL,EAA8Bne,GAAKwD,EAAKyN,SAASmF,UAAW,SAAUtD,GACxE,MAAyB,eAAlBA,EAASkE,OACfoH,qBACiCtO,IAAhCqO,GACFzH,QAAQC,KAAK,iIAEf,IAAIyH,OAAkDtO,IAAhCqO,EAA4CA,EAA8B3G,EAAQ4G,gBAGpGC,EAAmBhS,GADJoC,EAAgBjL,EAAKyN,SAASgC,SAI7C/C,GACFoO,SAAUrL,EAAOqL,UAIfjN,GACFE,KAAMlS,KAAK0c,MAAM9I,EAAO1B,MACxBE,IAAKpS,KAAK0c,MAAM9I,EAAOxB,KACvBD,OAAQnS,KAAK0c,MAAM9I,EAAOzB,QAC1BF,MAAOjS,KAAK0c,MAAM9I,EAAO3B,QAGvBlB,EAAc,WAAN4E,EAAiB,MAAQ,SACjC3E,EAAc,UAAN6E,EAAgB,OAAS,QAKjCqJ,EAAmBtH,GAAyB,aAW5C1F,OAAO,EACPE,OAAM,EAWV,GATEA,EADY,WAAVrB,GACKiO,EAAiBvN,OAASO,EAAQG,OAEnCH,EAAQI,IAGdF,EADY,UAAVlB,GACMgO,EAAiBtN,MAAQM,EAAQC,MAElCD,EAAQE,KAEb6M,GAAmBG,EACrBrO,EAAOqO,GAAoB,eAAiBhN,EAAO,OAASE,EAAM,SAClEvB,EAAOE,GAAS,EAChBF,EAAOG,GAAS,EAChBH,EAAOsO,WAAa,gBACf,CAEL,IAAIC,EAAsB,WAAVrO,GAAsB,EAAI,EACtCsO,EAAuB,UAAVrO,GAAqB,EAAI,EAC1CH,EAAOE,GAASqB,EAAMgN,EACtBvO,EAAOG,GAASkB,EAAOmN,EACvBxO,EAAOsO,WAAapO,EAAQ,KAAOC,EAIrC,IAAI4N,GACFU,cAAenb,EAAKqQ,WAQtB,OAJArQ,EAAKya,WAAazgB,MAAaygB,EAAYza,EAAKya,YAChDza,EAAK0M,OAAS1S,MAAa0S,EAAQ1M,EAAK0M,QACxC1M,EAAKob,YAAcphB,MAAagG,EAAK6N,QAAQ4K,MAAOzY,EAAKob,aAElDpb,GAy4BL4a,iBAAiB,EAMjBpJ,EAAG,SAMHE,EAAG,SAkBL2J,YAEE7P,MAAO,IAEP4H,SAAS,EAETnV,GAvjCJ,SAAoB+B,GApBpB,IAAuB/D,EAASwe,EAoC9B,OAXAvF,GAAUlV,EAAKyN,SAASgC,OAAQzP,EAAK0M,QAzBhBzQ,EA6BP+D,EAAKyN,SAASgC,OA7BEgL,EA6BMza,EAAKya,WA5BzCjhB,OAAOiX,KAAKgK,GAAYxH,QAAQ,SAAUH,IAE1B,IADF2H,EAAW3H,GAErB7W,EAAQiF,aAAa4R,EAAM2H,EAAW3H,IAEtC7W,EAAQqf,gBAAgBxI,KA0BxB9S,EAAK2Y,cAAgBnf,OAAOiX,KAAKzQ,EAAKob,aAAajiB,QACrD+b,GAAUlV,EAAK2Y,aAAc3Y,EAAKob,aAG7Bpb,GAyiCLub,OA5hCJ,SAA0B7L,EAAWD,EAAQuE,EAASwH,EAAiBlK,GAErE,IAAIU,EAAmBX,GAAoBC,EAAO7B,EAAQC,GAKtDW,EAAYD,GAAqB4D,EAAQ3D,UAAW2B,EAAkBvC,EAAQC,EAAWsE,EAAQpB,UAAU0G,KAAK1J,kBAAmBoE,EAAQpB,UAAU0G,KAAK3J,SAQ9J,OANAF,EAAOvO,aAAa,cAAemP,GAInC6E,GAAUzF,GAAUqL,SAAU,aAEvB9G,GAohCL4G,qBAAiBtO,KAiGjBmP,GAAS,WASX,SAASA,EAAO/L,EAAWD,GACzB,IAAI9T,EAAQpB,KAERyZ,EAAU9Z,UAAUf,OAAS,QAAsBmT,IAAjBpS,UAAU,GAAmBA,UAAU,MAC7EsT,GAAejT,KAAMkhB,GAErBlhB,KAAKqa,eAAiB,WACpB,OAAO8G,sBAAsB/f,EAAMggB,SAIrCphB,KAAKohB,OAAS9R,EAAStP,KAAKohB,OAAO1Y,KAAK1I,OAGxCA,KAAKyZ,QAAUha,MAAayhB,EAAOnE,SAAUtD,GAG7CzZ,KAAK+W,OACHsK,aAAa,EACbC,WAAW,EACXtH,kBAIFha,KAAKmV,UAAYA,GAAaA,EAAU1G,OAAS0G,EAAU,GAAKA,EAChEnV,KAAKkV,OAASA,GAAUA,EAAOzG,OAASyG,EAAO,GAAKA,EAGpDlV,KAAKyZ,QAAQpB,aACbpZ,OAAOiX,KAAKzW,MAAayhB,EAAOnE,SAAS1E,UAAWoB,EAAQpB,YAAYK,QAAQ,SAAUO,GACxF7X,EAAMqY,QAAQpB,UAAUY,GAAQxZ,MAAayhB,EAAOnE,SAAS1E,UAAUY,OAAaQ,EAAQpB,UAAYoB,EAAQpB,UAAUY,SAI5HjZ,KAAKqY,UAAYpZ,OAAOiX,KAAKlW,KAAKyZ,QAAQpB,WAAWlC,IAAI,SAAU8C,GACjE,OAAOxZ,IACLwZ,KAAMA,GACL7X,EAAMqY,QAAQpB,UAAUY,MAG5B3C,KAAK,SAAUC,EAAGC,GACjB,OAAOD,EAAEtF,MAAQuF,EAAEvF,QAOrBjR,KAAKqY,UAAUK,QAAQ,SAAUuI,GAC3BA,EAAgBpI,SAAWlJ,EAAWsR,EAAgBD,SACxDC,EAAgBD,OAAO5f,EAAM+T,UAAW/T,EAAM8T,OAAQ9T,EAAMqY,QAASwH,EAAiB7f,EAAM2V,SAKhG/W,KAAKohB,SAEL,IAAIlH,EAAgBla,KAAKyZ,QAAQS,cAC7BA,GAEFla,KAAKuhB,uBAGPvhB,KAAK+W,MAAMmD,cAAgBA,EAqD7B,OA9CA/G,GAAY+N,IACV/hB,IAAK,SACL2D,MAAO,WACL,OAh/CN,WAEE,IAAI9C,KAAK+W,MAAMsK,YAAf,CAIA,IAAI5b,GACFyN,SAAUlT,KACVmS,UACA0O,eACAX,cACAlB,SAAS,EACT1L,YAIF7N,EAAK6N,QAAQ6B,UAAY2B,GAAoB9W,KAAK+W,MAAO/W,KAAKkV,OAAQlV,KAAKmV,WAK3E1P,EAAKqQ,UAAYD,GAAqB7V,KAAKyZ,QAAQ3D,UAAWrQ,EAAK6N,QAAQ6B,UAAWnV,KAAKkV,OAAQlV,KAAKmV,UAAWnV,KAAKyZ,QAAQpB,UAAU0G,KAAK1J,kBAAmBrV,KAAKyZ,QAAQpB,UAAU0G,KAAK3J,SAG9L3P,EAAKwZ,kBAAoBxZ,EAAKqQ,UAG9BrQ,EAAK6N,QAAQ4B,OAASsC,GAAiBxX,KAAKkV,OAAQzP,EAAK6N,QAAQ6B,UAAW1P,EAAKqQ,WACjFrQ,EAAK6N,QAAQ4B,OAAOqL,SAAW,WAG/B9a,EAAO2S,GAAapY,KAAKqY,UAAW5S,GAI/BzF,KAAK+W,MAAMuK,UAIdthB,KAAKyZ,QAAQyD,SAASzX,IAHtBzF,KAAK+W,MAAMuK,WAAY,EACvBthB,KAAKyZ,QAAQwD,SAASxX,MA28CN3F,KAAKE,SAGrBb,IAAK,UACL2D,MAAO,WACL,OAl6CN,WAmBE,OAlBA9C,KAAK+W,MAAMsK,aAAc,EAGrBvI,GAAkB9Y,KAAKqY,UAAW,gBACpCrY,KAAKkV,OAAO6L,gBAAgB,eAC5B/gB,KAAKkV,OAAOpH,MAAM0F,KAAO,GACzBxT,KAAKkV,OAAOpH,MAAMyS,SAAW,GAC7BvgB,KAAKkV,OAAOpH,MAAM4F,IAAM,GACxB1T,KAAKkV,OAAOpH,MAAMoL,GAAyB,cAAgB,IAG7DlZ,KAAKma,wBAIDna,KAAKyZ,QAAQuD,iBACfhd,KAAKkV,OAAOjF,WAAWuR,YAAYxhB,KAAKkV,QAEnClV,MA+4CYF,KAAKE,SAGtBb,IAAK,uBACL2D,MAAO,WACL,OAl2CN,WACO9C,KAAK+W,MAAMmD,gBACdla,KAAK+W,MAAQyC,GAAoBxZ,KAAKmV,UAAWnV,KAAKyZ,QAASzZ,KAAK+W,MAAO/W,KAAKqa,kBAg2ClDva,KAAKE,SAGnCb,IAAK,wBACL2D,MAAO,WACL,OAAOqX,GAAsBra,KAAKE,UA4B/BkhB,EA7HI,GAqJbA,GAAOO,OAA2B,oBAAXje,OAAyBA,OAASke,QAAQC,YACjET,GAAO9F,WAAaA,GACpB8F,GAAOnE,SAAWA,GMt3ElB,IAAM6E,GAAY,SAAC3hB,OAOXC,EAA2B,WAE3BC,EAA2B,cAC3BC,EAAAA,IAA+BD,EAE/BE,EAA2BJ,EAAEyD,GAAGxD,GAOhC2hB,EAA2B,IAAIze,OAAU0e,YAEzCxhB,eACsBF,kBACEA,cACFA,gBACCA,gBACAA,yBACAA,EAhBI,uCAiBFA,EAjBE,mCAkBJA,EAlBI,aAqB3BG,EACQ,WADRA,EAEQ,OAFRA,EAGQ,SAHRA,EAIQ,YAJRA,EAKQ,WALRA,EAMQ,sBANRA,EAOQ,qBAPRA,EAQc,kBAGdG,EACY,2BADZA,EAEY,iBAFZA,EAGY,iBAHZA,EAIY,cAJZA,EAKY,+CAGZqhB,EACQ,YADRA,EAEQ,UAFRA,EAGQ,eAHRA,EAIQ,aAJRA,EAKQ,cALRA,EAOQ,aAIR/a,UACU,QACA,WACA,gBAGVC,UACU,gCACA,mBACA,oBASV2a,wBACQlgB,EAASgB,QACdwB,SAAYxC,OACZsgB,QAAY,UACZva,QAAYzH,KAAK0H,WAAWhF,QAC5Buf,MAAYjiB,KAAKkiB,uBACjBC,UAAYniB,KAAKoiB,qBAEjBva,gDAmBP7B,OA3GqB,eA4GfhG,KAAKkE,SAASme,WAAYpiB,EAAED,KAAKkE,UAAUe,SAAS1E,QAIlDqE,EAAWgd,EAASU,sBAAsBtiB,KAAKkE,UAC/Cqe,EAAWtiB,EAAED,KAAKiiB,OAAOhd,SAAS1E,QAE/BiiB,eAELD,OAIE9X,iBACWzK,KAAKkE,UAEhBue,EAAYxiB,EAAEK,MAAMA,EAAMqN,KAAMlD,QAEpC7F,GAAQxC,QAAQqgB,IAEdA,EAAUle,0BAKTvE,KAAKmiB,UAAW,IAKG,oBAAXjB,SACH,IAAInV,UAAU,oEAElBrK,EAAU1B,KAAKkE,SAEfjE,EAAE2E,GAAQK,SAAS1E,KACjBN,EAAED,KAAKiiB,OAAOhd,SAAS1E,IAAuBN,EAAED,KAAKiiB,OAAOhd,SAAS1E,QAC7DqE,GAMgB,iBAA1B5E,KAAKyH,QAAQib,YACb9d,GAAQuG,SAAS5K,QAEhByhB,QAAU,IAAId,GAAOxf,EAAS1B,KAAKiiB,MAAOjiB,KAAK2iB,oBAOlD,iBAAkBnhB,SAASkI,iBACsB,IAAlDzJ,EAAE2E,GAAQC,QAAQnE,GAAqB9B,UACtC,QAAQsM,WAAWrF,GAAG,YAAa,KAAM5F,EAAE2iB,WAG1C1e,SAASwC,aACTxC,SAASyC,aAAa,iBAAiB,KAE1C3G,KAAKiiB,OAAOrb,YAAYrG,KACxBqE,GACCgC,YAAYrG,GACZ6B,QAAQnC,EAAEK,MAAMA,EAAM4N,MAAOzD,UAGlChG,QA/KqB,aAgLjBC,WAAW1E,KAAKkE,SAAU/D,KAC1BH,KAAKkE,UAAUgF,IAAI9I,QAChB8D,SAAW,UACX+d,MAAQ,KACQ,OAAjBjiB,KAAKgiB,eACFA,QAAQa,eACRb,QAAU,SAInBZ,OA1LqB,gBA2Lde,UAAYniB,KAAKoiB,gBACD,OAAjBpiB,KAAKgiB,cACFA,QAAQ3H,oBAMjBxS,mBAnMqB,wBAoMjB7H,KAAKkE,UAAU2B,GAAGvF,EAAMwiB,MAAO,SAACjf,KAC1B+B,mBACAmd,oBACD/c,cAIT0B,WA3MqB,SA2MVhF,iBAEJ1C,KAAKgjB,YAAYhc,QACjB/G,EAAED,KAAKkE,UAAUuB,OACjB/C,KAGAyG,gBACHjJ,EACAwC,EACA1C,KAAKgjB,YAAY/b,aAGZvE,KAGTwf,gBA3NqB,eA4NdliB,KAAKiiB,MAAO,KACTrd,EAASgd,EAASU,sBAAsBtiB,KAAKkE,eAC9C+d,MAAQhiB,EAAE2E,GAAQ3C,KAAKvB,GAAe,UAEtCV,KAAKiiB,SAGdgB,cAnOqB,eAoObC,EAAkBjjB,EAAED,KAAKkE,UAAUU,SACrCkR,EAAYiM,SAGZmB,EAAgBje,SAAS1E,MACfwhB,EACR9hB,EAAED,KAAKiiB,OAAOhd,SAAS1E,OACbwhB,IAELmB,EAAgBje,SAAS1E,KACtBwhB,EACHmB,EAAgBje,SAAS1E,KACtBwhB,EACH9hB,EAAED,KAAKiiB,OAAOhd,SAAS1E,OACpBwhB,GAEPjM,KAGTsM,cAvPqB,kBAwPZniB,EAAED,KAAKkE,UAAUW,QAAQ,WAAWjG,OAAS,KAGtD+jB,iBA3PqB,sBA4PbQ,WAC6B,mBAAxBnjB,KAAKyH,QAAQsU,SACXrY,GAAK,SAAC+B,YACV6N,QAAL7T,KACKgG,EAAK6N,QACLhK,EAAK7B,QAAQsU,OAAOtW,EAAK6N,cAEvB7N,KAGEsW,OAAS/b,KAAKyH,QAAQsU,kBAGtB/b,KAAKijB,kCAENE,gBAEGnjB,KAAKyH,QAAQsX,yCAGH/e,KAAKyH,QAAQib,eAUjCpd,iBA1Rc,SA0RG5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,MAGnBsF,MACI,IAAImc,EAAS5hB,KAHY,iBAAX0C,EAAsBA,EAAS,QAIlD1C,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,WAKJ8f,YA7Sc,SA6SF3e,OACbA,GA5RyB,IA4RfA,EAAMiG,QACH,UAAfjG,EAAMuC,MAhSqB,IAgSDvC,EAAMiG,eAI5BsZ,EAAUnjB,EAAE8J,UAAU9J,EAAES,IACrB/B,EAAI,EAAGA,EAAIykB,EAAQxkB,OAAQD,IAAK,KACjCiG,EAASgd,EAASU,sBAAsBc,EAAQzkB,IAChD0kB,EAAUpjB,EAAEmjB,EAAQzkB,IAAI8G,KAAKtF,GAC7BsK,iBACW2Y,EAAQzkB,OAGpB0kB,OAICC,EAAeD,EAAQpB,SACxBhiB,EAAE2E,GAAQK,SAAS1E,MAIpBsD,IAAyB,UAAfA,EAAMuC,MAChB,kBAAkB/C,KAAKQ,EAAMpF,OAAOoL,UAA2B,UAAfhG,EAAMuC,MAtT/B,IAsTmDvC,EAAMiG,QAChF7J,EAAEwG,SAAS7B,EAAQf,EAAMpF,cAIvB8kB,EAAYtjB,EAAEK,MAAMA,EAAM+N,KAAM5D,KACpC7F,GAAQxC,QAAQmhB,GACdA,EAAUhf,uBAMV,iBAAkB/C,SAASkI,mBAC3B,QAAQwB,WAAWhC,IAAI,YAAa,KAAMjJ,EAAE2iB,QAGxCjkB,GAAGgI,aAAa,gBAAiB,WAEvC2c,GAActe,YAAYzE,KAC1BqE,GACCI,YAAYzE,GACZ6B,QAAQnC,EAAEK,MAAMA,EAAMiO,OAAQ9D,WAI9B6X,sBA/Vc,SA+VQ5gB,OACvBkD,EACEjD,EAAWf,EAAK+D,uBAAuBjD,UAEzCC,MACO1B,EAAE0B,GAAU,IAGhBiD,GAAUlD,EAAQuO,cAIpBuT,uBA3Wc,SA2WS3f,OAQxB,kBAAkBR,KAAKQ,EAAMpF,OAAOoL,WArWX,KAsWzBhG,EAAMiG,OAvWmB,KAuWQjG,EAAMiG,QAnWd,KAoW1BjG,EAAMiG,OArWoB,KAqWYjG,EAAMiG,OAC3C7J,EAAE4D,EAAMpF,QAAQoG,QAAQnE,GAAe9B,SAAWijB,EAAexe,KAAKQ,EAAMiG,YAI1ElE,mBACAmd,mBAEF/iB,KAAKqiB,WAAYpiB,EAAED,MAAMiF,SAAS1E,SAIhCqE,EAAWgd,EAASU,sBAAsBtiB,MAC1CuiB,EAAWtiB,EAAE2E,GAAQK,SAAS1E,OAE/BgiB,GAvXwB,KAuXX1e,EAAMiG,OAtXK,KAsXuBjG,EAAMiG,UACrDyY,GAxXwB,KAwXX1e,EAAMiG,OAvXK,KAuXuBjG,EAAMiG,YAUpD2Z,EAAQxjB,EAAE2E,GAAQ3C,KAAKvB,GAAwBgjB,SAEhC,IAAjBD,EAAM7kB,YAINgK,EAAQ6a,EAAMxZ,QAAQpG,EAAMpF,QArYH,KAuYzBoF,EAAMiG,OAA8BlB,EAAQ,OAtYnB,KA0YzB/E,EAAMiG,OAAgClB,EAAQ6a,EAAM7kB,OAAS,OAI7DgK,EAAQ,MACF,KAGJA,GAAOlC,iBAtZgB,KAyXvB7C,EAAMiG,MAA0B,KAC5B9D,EAAS/F,EAAE2E,GAAQ3C,KAAKvB,GAAsB,KAClDsF,GAAQ5D,QAAQ,WAGlBpC,MAAMoC,QAAQ,0DAnYW,+CA0FtB4E,6CAIAC,oBAuUTzF,UACCqE,GAAGvF,EAAMqjB,iBAAkBjjB,EAAsBkhB,EAAS4B,wBAC1D3d,GAAGvF,EAAMqjB,iBAAkBjjB,EAAekhB,EAAS4B,wBACnD3d,GAAMvF,EAAMwF,eAHf,IAGiCxF,EAAMsjB,eAAkBhC,EAASY,aAC/D3c,GAAGvF,EAAMwF,eAAgBpF,EAAsB,SAAUmD,KAClD+B,mBACAmd,oBACGzd,iBAAiBxF,KAAKG,EAAED,MAAO,YAEzC6F,GAAGvF,EAAMwF,eAAgBpF,EAAqB,SAACmjB,KAC5Cd,sBASJrf,GAAGxD,GAAQ0hB,EAAStc,mBACpB5B,GAAGxD,GAAMb,YAAcuiB,IACvBle,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNuhB,EAAStc,kBAGXsc,EAvcS,CAwcf3hB,GCzcG6jB,GAAS,SAAC7jB,OASRE,EAA+B,WAC/BC,EAAAA,IAAmCD,EAEnCE,EAA+BJ,EAAEyD,GAAF,MAK/BsD,aACO,YACA,SACA,QACA,GAGPC,YACO,4BACA,gBACA,eACA,WAGP3G,eACuBF,kBACEA,cACFA,gBACCA,oBACEA,kBACDA,gCACOA,oCACEA,oCACAA,wCACEA,4CAIpCG,EACiB,0BADjBA,EAEiB,iBAFjBA,EAGiB,aAHjBA,EAIiB,OAJjBA,EAKiB,OAGjBG,UACiB,4BACA,qCACA,uCACA,mEACA,6BACA,mBASjBojB,wBACQpiB,EAASgB,QACd+E,QAAuBzH,KAAK0H,WAAWhF,QACvCwB,SAAuBxC,OACvBqiB,QAAuB9jB,EAAEyB,GAASO,KAAKvB,EAASsjB,QAAQ,QACxDC,UAAuB,UACvBC,UAAuB,OACvBC,oBAAuB,OACvBC,sBAAuB,OACvBC,qBAAuB,OACvBC,gBAAuB,6BAe9Bte,OA7FkB,SA6FXyE,UACEzK,KAAKkkB,SAAWlkB,KAAKoN,OAASpN,KAAKqN,KAAK5C,MAGjD4C,KAjGkB,SAiGb5C,kBACCzK,KAAKwM,mBAAoBxM,KAAKkkB,UAI9BtjB,EAAKgD,yBAA2B3D,EAAED,KAAKkE,UAAUe,SAAS1E,UACvDiM,kBAAmB,OAGpBiW,EAAYxiB,EAAEK,MAAMA,EAAMqN,0BAI9B3N,KAAKkE,UAAU9B,QAAQqgB,GAErBziB,KAAKkkB,UAAYzB,EAAUle,4BAI1B2f,UAAW,OAEXK,uBACAC,qBAEAC,kBAEHjjB,SAAS4O,MAAMjF,SAAS5K,QAErBmkB,uBACAC,oBAEH3kB,KAAKkE,UAAU2B,GACfvF,EAAMskB,cACNlkB,EAASmkB,aACT,SAAChhB,UAAUzC,EAAKgM,KAAKvJ,OAGrB7D,KAAK+jB,SAASle,GAAGvF,EAAMwkB,kBAAmB,aACxC1jB,EAAK8C,UAAUjD,IAAIX,EAAMykB,gBAAiB,SAAClhB,GACvC5D,EAAE4D,EAAMpF,QAAQsF,GAAG3C,EAAK8C,cACrBkgB,sBAAuB,YAK7BY,cAAc,kBAAM5jB,EAAK6jB,aAAaxa,UAG7C2C,KAjJkB,SAiJbvJ,iBACCA,KACI+B,kBAGJ5F,KAAKwM,kBAAqBxM,KAAKkkB,cAI7BX,EAAYtjB,EAAEK,MAAMA,EAAM+N,WAE9BrO,KAAKkE,UAAU9B,QAAQmhB,GAEpBvjB,KAAKkkB,WAAYX,EAAUhf,2BAI3B2f,UAAW,MAEVrjB,EAAaD,EAAKgD,yBAA2B3D,EAAED,KAAKkE,UAAUe,SAAS1E,GAEzEM,SACG2L,kBAAmB,QAGrBkY,uBACAC,oBAEHnjB,UAAU0H,IAAI5I,EAAM4kB,WAEpBllB,KAAKkE,UAAUc,YAAYzE,KAE3BP,KAAKkE,UAAUgF,IAAI5I,EAAMskB,iBACzB5kB,KAAK+jB,SAAS7a,IAAI5I,EAAMwkB,mBAEtBjkB,IACAb,KAAKkE,UACJjD,IAAIL,EAAKM,eAAgB,SAAC2C,UAAUyF,EAAK6b,WAAWthB,KACpDF,qBA1K4B,UA4K1BwhB,kBAIT1gB,QA7LkB,aA8LdC,WAAW1E,KAAKkE,SAAU/D,KAE1BqD,OAAQhC,SAAUxB,KAAKkE,SAAUlE,KAAKikB,WAAW/a,IAAI9I,QAElDqH,QAAuB,UACvBvD,SAAuB,UACvB6f,QAAuB,UACvBE,UAAuB,UACvBC,SAAuB,UACvBC,mBAAuB,UACvBC,qBAAuB,UACvBE,gBAAuB,QAG9Bc,aA5MkB,gBA6MXX,mBAKP/c,WAlNkB,SAkNPhF,iBAEJsE,EACAtE,KAEAyG,gBAhN4B,QAgNNzG,EAAQuE,GAC5BvE,KAGTuiB,aA3NkB,SA2NLxa,cACL5J,EAAaD,EAAKgD,yBACtB3D,EAAED,KAAKkE,UAAUe,SAAS1E,GAEvBP,KAAKkE,SAAS+L,YAChBjQ,KAAKkE,SAAS+L,WAAWzN,WAAa2O,KAAKkU,uBAEnCjV,KAAKkV,YAAYtlB,KAAKkE,eAG5BA,SAAS4J,MAAMyX,QAAU,aACzBrhB,SAAS6c,gBAAgB,oBACzB7c,SAAS0P,UAAY,EAEtB/S,KACG8K,OAAO3L,KAAKkE,YAGjBlE,KAAKkE,UAAUiH,SAAS5K,GAEtBP,KAAKyH,QAAQf,YACV8e,oBAGDC,EAAaxlB,EAAEK,MAAMA,EAAM4N,yBAI3BwX,EAAqB,WACrB9Z,EAAKnE,QAAQf,SACVxC,SAASwC,UAEX8F,kBAAmB,IACtBZ,EAAK1H,UAAU9B,QAAQqjB,IAGvB5kB,IACAb,KAAK+jB,SACJ9iB,IAAIL,EAAKM,eAAgBwkB,GACzB/hB,qBArP4B,YA2PnC6hB,cAxQkB,wBAyQdhkB,UACC0H,IAAI5I,EAAM4kB,SACVrf,GAAGvF,EAAM4kB,QAAS,SAACrhB,GACdrC,WAAaqC,EAAMpF,QACnBknB,EAAKzhB,WAAaL,EAAMpF,QACsB,IAA9CwB,EAAE0lB,EAAKzhB,UAAU0hB,IAAI/hB,EAAMpF,QAAQG,UAChCsF,SAASwC,aAKtBge,gBApRkB,sBAqRZ1kB,KAAKkkB,UAAYlkB,KAAKyH,QAAQ2B,WAC9BpJ,KAAKkE,UAAU2B,GAAGvF,EAAMulB,gBAAiB,SAAChiB,GAvQb,KAwQzBA,EAAMiG,UACFlE,mBACDwH,UAGCpN,KAAKkkB,YACblkB,KAAKkE,UAAUgF,IAAI5I,EAAMulB,oBAI/BlB,gBAjSkB,sBAkSZ3kB,KAAKkkB,WACL1gB,QAAQqC,GAAGvF,EAAMwlB,OAAQ,SAACjiB,UAAUkiB,EAAKX,aAAavhB,OAEtDL,QAAQ0F,IAAI5I,EAAMwlB,WAIxBX,WAzSkB,2BA0SXjhB,SAAS4J,MAAMyX,QAAU,YACzBrhB,SAASyC,aAAa,eAAe,QACrC6F,kBAAmB,OACnBwY,cAAc,aACfxjB,SAAS4O,MAAMpL,YAAYzE,KACxBylB,sBACAC,oBACHC,EAAKhiB,UAAU9B,QAAQ9B,EAAMiO,aAInC4X,gBArTkB,WAsTZnmB,KAAKikB,cACLjkB,KAAKikB,WAAW5e,cACb4e,UAAY,SAIrBe,cA5TkB,SA4TJjL,cACNqM,EAAUnmB,EAAED,KAAKkE,UAAUe,SAAS1E,GACtCA,EAAiB,MAEjBP,KAAKkkB,UAAYlkB,KAAKyH,QAAQ4e,SAAU,KACpCC,EAAY1lB,EAAKgD,yBAA2BwiB,UAE7CnC,UAAYziB,SAAS+kB,cAAc,YACnCtC,UAAUuC,UAAYjmB,EAEvB6lB,KACApmB,KAAKikB,WAAW9Y,SAASib,KAG3BpmB,KAAKikB,WAAWwC,SAASjlB,SAAS4O,QAElCpQ,KAAKkE,UAAU2B,GAAGvF,EAAMskB,cAAe,SAAC/gB,GACpC6iB,EAAKtC,uBACFA,sBAAuB,EAG1BvgB,EAAMpF,SAAWoF,EAAMiL,gBAGG,WAA1B4X,EAAKjf,QAAQ4e,WACVniB,SAASwC,UAET0G,UAILkZ,KACG3a,OAAO3L,KAAKikB,aAGjBjkB,KAAKikB,WAAW9Y,SAAS5K,IAEtBwZ,aAIAuM,oBAKHtmB,KAAKikB,WACJhjB,IAAIL,EAAKM,eAAgB6Y,GACzBpW,qBA9V4B,UA+V1B,IAAK3D,KAAKkkB,UAAYlkB,KAAKikB,UAAW,GACzCjkB,KAAKikB,WAAWjf,YAAYzE,OAExBomB,EAAiB,aAChBR,kBACDpM,QAKFnZ,EAAKgD,yBACN3D,EAAED,KAAKkE,UAAUe,SAAS1E,KACzBP,KAAKikB,WACJhjB,IAAIL,EAAKM,eAAgBylB,GACzBhjB,qBA7W0B,cAiXtBoW,UAUb0K,cAzYkB,eA0YVmC,EACJ5mB,KAAKkE,SAAS2iB,aAAerlB,SAASkI,gBAAgBuK,cAEnDjU,KAAKmkB,oBAAsByC,SACzB1iB,SAAS4J,MAAMgZ,YAAiB9mB,KAAKskB,gBAA1C,MAGEtkB,KAAKmkB,qBAAuByC,SACzB1iB,SAAS4J,MAAMiZ,aAAkB/mB,KAAKskB,gBAA3C,SAIJ0B,kBAtZkB,gBAuZX9hB,SAAS4J,MAAMgZ,YAAc,QAC7B5iB,SAAS4J,MAAMiZ,aAAe,MAGrCxC,gBA3ZkB,eA4ZV5Q,EAAOnS,SAAS4O,KAAK9B,6BACtB6V,mBAAqBxQ,EAAKH,KAAOG,EAAKJ,MAAQ/P,OAAOgS,gBACrD8O,gBAAkBtkB,KAAKgnB,wBAG9BxC,cAjakB,yBAkaZxkB,KAAKmkB,mBAAoB,GAKzBzjB,EAASumB,eAAe1hB,KAAK,SAACqD,EAAOlH,OAC/BwlB,EAAgBjnB,EAAEyB,GAAS,GAAGoM,MAAMiZ,aACpCI,EAAoBlnB,EAAEyB,GAASwG,IAAI,mBACvCxG,GAAS+D,KAAK,gBAAiByhB,GAAehf,IAAI,gBAAoBqK,WAAW4U,GAAqBC,EAAK9C,gBAA7G,UAIA5jB,EAAS2mB,gBAAgB9hB,KAAK,SAACqD,EAAOlH,OAChC4lB,EAAernB,EAAEyB,GAAS,GAAGoM,MAAMsJ,YACnCmQ,EAAmBtnB,EAAEyB,GAASwG,IAAI,kBACtCxG,GAAS+D,KAAK,eAAgB6hB,GAAcpf,IAAI,eAAmBqK,WAAWgV,GAAoBH,EAAK9C,gBAAzG,UAIA5jB,EAAS8mB,gBAAgBjiB,KAAK,SAACqD,EAAOlH,OAChC4lB,EAAernB,EAAEyB,GAAS,GAAGoM,MAAMsJ,YACnCmQ,EAAmBtnB,EAAEyB,GAASwG,IAAI,kBACtCxG,GAAS+D,KAAK,eAAgB6hB,GAAcpf,IAAI,eAAmBqK,WAAWgV,GAAoBH,EAAK9C,gBAAzG,YAII4C,EAAgB1lB,SAAS4O,KAAKtC,MAAMiZ,aACpCI,EAAoBlnB,EAAE,QAAQiI,IAAI,mBACtC,QAAQzC,KAAK,gBAAiByhB,GAAehf,IAAI,gBAAoBqK,WAAW4U,GAAqBnnB,KAAKskB,gBAA5G,UAIJ2B,gBAlckB,aAocdvlB,EAASumB,eAAe1hB,KAAK,SAACqD,EAAOlH,OAC/B0T,EAAUnV,EAAEyB,GAAS+D,KAAK,iBACT,oBAAZ2P,KACP1T,GAASwG,IAAI,gBAAiBkN,GAAS1Q,WAAW,qBAKnDhE,EAAS2mB,eAAd,KAAiC3mB,EAAS8mB,gBAAkBjiB,KAAK,SAACqD,EAAOlH,OACjE+lB,EAASxnB,EAAEyB,GAAS+D,KAAK,gBACT,oBAAXgiB,KACP/lB,GAASwG,IAAI,eAAgBuf,GAAQ/iB,WAAW,sBAKhD0Q,EAAUnV,EAAE,QAAQwF,KAAK,iBACR,oBAAZ2P,KACP,QAAQlN,IAAI,gBAAiBkN,GAAS1Q,WAAW,oBAIvDsiB,mBA1dkB,eA2dVU,EAAYlmB,SAAS+kB,cAAc,SAC/BC,UAAYjmB,WACb6P,KAAKkV,YAAYoC,OACpBC,EAAiBD,EAAUpZ,wBAAwB0E,MAAQ0U,EAAU1T,4BAClE5D,KAAKoR,YAAYkG,GACnBC,KAKFriB,iBAreW,SAqeM5C,EAAQ+H,UACvBzK,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAClBsH,EAAAA,KACDqc,EAAM9c,QACN/G,EAAED,MAAMyF,OACU,iBAAX/C,GAAuBA,MAG9B+C,MACI,IAAIqe,EAAM9jB,KAAMyH,KACrBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,GAAQ+H,QACJhD,EAAQ4F,QACZA,KAAK5C,oDAjfmB,+CAgF1BzD,oBA6aTxF,UAAUqE,GAAGvF,EAAMwF,eAAgBpF,EAASkM,YAAa,SAAU/I,OAC/DpF,SACEkD,EAAWf,EAAK+D,uBAAuB3E,MAEzC2B,MACO1B,EAAE0B,GAAU,QAGjBe,EAASzC,EAAExB,GAAQgH,KAAKtF,GAC1B,SADWV,KAERQ,EAAExB,GAAQgH,OACVxF,EAAED,MAAMyF,QAGM,MAAjBzF,KAAK6J,SAAoC,SAAjB7J,KAAK6J,WACzBjE,qBAGFoJ,EAAU/O,EAAExB,GAAQwC,IAAIX,EAAMqN,KAAM,SAAC8U,GACrCA,EAAUle,wBAKNtD,IAAIX,EAAMiO,OAAQ,WACpBtO,EAAAA,GAAQ8D,GAAG,eACR2C,cAKLpB,iBAAiBxF,KAAKG,EAAExB,GAASiE,EAAQ1C,UAS/C0D,GAAF,MAAaogB,EAAMxe,mBACjB5B,GAAF,MAAWrE,YAAcykB,IACvBpgB,GAAF,MAAWqC,WAAa,oBACpBrC,GAAF,MAAarD,EACNyjB,EAAMxe,kBAGRwe,EApjBM,CAqjBZ7jB,GCpjBG2nB,GAAW,SAAC3nB,OAOVC,EAAsB,UAEtBC,EAAsB,aACtBC,EAAAA,IAA0BD,EAC1BE,EAAsBJ,EAAEyD,GAAGxD,GAG3B2nB,EAAqB,IAAIzkB,OAAJ,wBAAyC,KAE9D6D,aACkB,mBACA,eACA,oCACA,eACA,uBACA,mBACA,6BACA,2BACA,4BACA,6CACA,0BACA,oBAGlB8a,QACK,WACA,YACA,eACA,cACA,QAGL/a,cACkB,WACA,+GAGA,oBACA,SACA,QACA,YACA,YACA,aACA,aACA,oBACA,gBACA,gBAGlB8gB,EACG,OADHA,EAEG,MAGHxnB,eACgBF,kBACEA,cACFA,gBACCA,sBACGA,gBACHA,oBACEA,sBACCA,0BACEA,0BACAA,GAGtBG,EACG,OADHA,EAEG,OAGHG,EAEY,iBAFZA,EAGY,SAGZqnB,EACK,QADLA,EAEK,QAFLA,EAGK,QAHLA,EAIK,SAULH,wBACQlmB,EAASgB,MAKG,oBAAXwe,SACH,IAAInV,UAAU,qEAIjBic,YAAiB,OACjBC,SAAiB,OACjBC,YAAiB,QACjBC,uBACAnG,QAAiB,UAGjBtgB,QAAUA,OACVgB,OAAU1C,KAAK0H,WAAWhF,QAC1B0lB,IAAU,UAEVC,2CAmCPC,OA5JoB,gBA6JbN,YAAa,KAGpBO,QAhKoB,gBAiKbP,YAAa,KAGpBQ,cApKoB,gBAqKbR,YAAchoB,KAAKgoB,cAG1BhiB,OAxKoB,SAwKbnC,MACA7D,KAAKgoB,cAINnkB,EAAO,KACH4kB,EAAUzoB,KAAKgjB,YAAY7iB,SAC7BkjB,EAAUpjB,EAAE4D,EAAMiL,eAAerJ,KAAKgjB,GAErCpF,MACO,IAAIrjB,KAAKgjB,YACjBnf,EAAMiL,cACN9O,KAAK0oB,wBAEL7kB,EAAMiL,eAAerJ,KAAKgjB,EAASpF,MAG/B8E,eAAeQ,OAAStF,EAAQ8E,eAAeQ,MAEnDtF,EAAQuF,yBACFC,OAAO,KAAMxF,KAEbyF,OAAO,KAAMzF,OAElB,IACDpjB,EAAED,KAAK+oB,iBAAiB9jB,SAAS1E,oBAC9BuoB,OAAO,KAAM9oB,WAIf6oB,OAAO,KAAM7oB,UAItByE,QA1MoB,wBA2MLzE,KAAKioB,YAEhBvjB,WAAW1E,KAAK0B,QAAS1B,KAAKgjB,YAAY7iB,YAE1CH,KAAK0B,SAASwH,IAAIlJ,KAAKgjB,YAAY5iB,aACnCJ,KAAK0B,SAASmD,QAAQ,UAAUqE,IAAI,iBAElClJ,KAAKooB,OACLpoB,KAAKooB,KAAK/iB,cAGT2iB,WAAiB,UACjBC,SAAiB,UACjBC,YAAiB,UACjBC,eAAiB,KACD,OAAjBnoB,KAAKgiB,cACFA,QAAQa,eAGVb,QAAU,UACVtgB,QAAU,UACVgB,OAAU,UACV0lB,IAAU,QAGjB/a,KApOoB,yBAqOqB,SAAnCpN,EAAED,KAAK0B,SAASwG,IAAI,iBAChB,IAAI5E,MAAM,2CAGZmf,EAAYxiB,EAAEK,MAAMN,KAAKgjB,YAAY1iB,MAAMqN,SAC7C3N,KAAKgpB,iBAAmBhpB,KAAKgoB,WAAY,GACzChoB,KAAK0B,SAASU,QAAQqgB,OAElBwG,EAAahpB,EAAEwG,SACnBzG,KAAK0B,QAAQ2O,cAAc3G,gBAC3B1J,KAAK0B,YAGH+gB,EAAUle,uBAAyB0kB,aAIjCb,EAAQpoB,KAAK+oB,gBACbG,EAAQtoB,EAAKuoB,OAAOnpB,KAAKgjB,YAAY9iB,QAEvCyG,aAAa,KAAMuiB,QAClBxnB,QAAQiF,aAAa,mBAAoBuiB,QAEzCE,aAEDppB,KAAK0C,OAAO2mB,aACZjB,GAAKjd,SAAS5K,OAGZuV,EAA8C,mBAA1B9V,KAAK0C,OAAOoT,UAClC9V,KAAK0C,OAAOoT,UAAUhW,KAAKE,KAAMooB,EAAKpoB,KAAK0B,SAC3C1B,KAAK0C,OAAOoT,UAEVwT,EAAatpB,KAAKupB,eAAezT,QAClC0T,mBAAmBF,OAElBG,GAAsC,IAA1BzpB,KAAK0C,OAAO+mB,UAAsBjoB,SAAS4O,KAAOnQ,EAAED,KAAK0C,OAAO+mB,aAEhFrB,GAAK3iB,KAAKzF,KAAKgjB,YAAY7iB,SAAUH,MAElCC,EAAEwG,SAASzG,KAAK0B,QAAQ2O,cAAc3G,gBAAiB1J,KAAKooB,QAC7DA,GAAK3B,SAASgD,KAGhBzpB,KAAK0B,SAASU,QAAQpC,KAAKgjB,YAAY1iB,MAAMopB,eAE1C1H,QAAU,IAAId,GAAOlhB,KAAK0B,QAAS0mB,aAC3BkB,4BAGCtpB,KAAK0C,OAAOqZ,uBAGV/b,KAAK0C,OAAOinB,kCAGbjpB,sCAGUV,KAAK0C,OAAOggB,oBAGzB,SAACjd,GACLA,EAAKwZ,oBAAsBxZ,EAAKqQ,aAC7B8T,6BAA6BnkB,aAG5B,SAACA,KACJmkB,6BAA6BnkB,QAIpC2iB,GAAKjd,SAAS5K,GAMZ,iBAAkBiB,SAASkI,mBAC3B,QAAQwB,WAAWrF,GAAG,YAAa,KAAM5F,EAAE2iB,UAGzC3U,EAAW,WACX7M,EAAKsB,OAAO2mB,aACTQ,qBAEDC,EAAiB1oB,EAAK8mB,cACvBA,YAAkB,OAErB9mB,EAAKM,SAASU,QAAQhB,EAAK4hB,YAAY1iB,MAAM4N,OAE3C4b,IAAmBhC,KAChBgB,OAAO,KAAZ1nB,IAIAR,EAAKgD,yBAA2B3D,EAAED,KAAKooB,KAAKnjB,SAAS1E,KACrDP,KAAKooB,KACJnnB,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBAAqBikB,EAAQmC,8BAOtC3c,KA/UoB,SA+Uf2M,cACGqO,EAAYpoB,KAAK+oB,gBACjBxF,EAAYtjB,EAAEK,MAAMN,KAAKgjB,YAAY1iB,MAAM+N,MAC3CJ,EAAW,WACX3E,EAAK4e,cAAgBJ,GAAmBM,EAAInY,cAC1CA,WAAWuR,YAAY4G,KAGxB4B,mBACAtoB,QAAQqf,gBAAgB,sBAC3BzX,EAAK5H,SAASU,QAAQkH,EAAK0Z,YAAY1iB,MAAMiO,QAC1B,OAAjBjF,EAAK0Y,WACFA,QAAQa,UAGX9I,UAKJ/Z,KAAK0B,SAASU,QAAQmhB,GAEpBA,EAAUhf,yBAIZ6jB,GAAKpjB,YAAYzE,GAIf,iBAAkBiB,SAASkI,mBAC3B,QAAQwB,WAAWhC,IAAI,YAAa,KAAMjJ,EAAE2iB,WAG3CuF,eAAeJ,IAAiB,OAChCI,eAAeJ,IAAiB,OAChCI,eAAeJ,IAAiB,EAEjCnnB,EAAKgD,yBACL3D,EAAED,KAAKooB,KAAKnjB,SAAS1E,KACrB6nB,GACCnnB,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBA7WmB,cAkXnBukB,YAAc,OAGrB9G,OAjYoB,WAkYG,OAAjBphB,KAAKgiB,cACFA,QAAQ3H,oBAMjB2O,cAzYoB,kBA0YX1mB,QAAQtC,KAAKiqB,eAGtBT,mBA7YoB,SA6YDF,KACftpB,KAAK+oB,iBAAiB5d,SAAY+e,cAAgBZ,MAGtDP,cAjZoB,uBAkZbX,IAAMpoB,KAAKooB,KAAOnoB,EAAED,KAAK0C,OAAOynB,UAAU,GACxCnqB,KAAKooB,OAGdgB,WAtZoB,eAuZZgB,EAAOnqB,EAAED,KAAK+oB,sBACfsB,kBAAkBD,EAAKnoB,KAAKvB,GAAyBV,KAAKiqB,cAC1DjlB,YAAezE,EAApB,IAAsCA,MAGxC8pB,kBA5ZoB,SA4ZF7kB,EAAU8kB,OACpBtY,EAAOhS,KAAK0C,OAAOsP,KACF,iBAAZsY,IAAyBA,EAAQ9nB,UAAY8nB,EAAQ7b,QAE1DuD,EACG/R,EAAEqqB,GAAS1lB,SAASb,GAAGyB,MACjB+kB,QAAQC,OAAOF,KAGjBG,KAAKxqB,EAAEqqB,GAASG,UAGlBzY,EAAO,OAAS,QAAQsY,MAIrCL,SA5aoB,eA6adS,EAAQ1qB,KAAK0B,QAAQE,aAAa,8BAEjC8oB,MACkC,mBAAtB1qB,KAAK0C,OAAOgoB,MACvB1qB,KAAK0C,OAAOgoB,MAAM5qB,KAAKE,KAAK0B,SAC5B1B,KAAK0C,OAAOgoB,OAGXA,KAKTnB,eA1boB,SA0bLzT,UACNiM,EAAcjM,EAAUvS,kBAGjC8kB,cA9boB,sBA+bDroB,KAAK0C,OAAON,QAAQyU,MAAM,KAElC6B,QAAQ,SAACtW,MACA,UAAZA,IACAwJ,EAAKlK,SAASmE,GACd+F,EAAKoX,YAAY1iB,MAAMwiB,MACvBlX,EAAKlJ,OAAOf,SACZ,SAACkC,UAAU+H,EAAK5F,OAAOnC,UAEpB,GAAIzB,IAAY2lB,EAAgB,KAC/B4C,EAAUvoB,IAAY2lB,EACxBnc,EAAKoX,YAAY1iB,MAAMkJ,WACvBoC,EAAKoX,YAAY1iB,MAAM4kB,QACrB0F,EAAWxoB,IAAY2lB,EACzBnc,EAAKoX,YAAY1iB,MAAMmJ,WACvBmC,EAAKoX,YAAY1iB,MAAMuqB,WAEzBjf,EAAKlK,SACJmE,GACC8kB,EACA/e,EAAKlJ,OAAOf,SACZ,SAACkC,UAAU+H,EAAKid,OAAOhlB,KAExBgC,GACC+kB,EACAhf,EAAKlJ,OAAOf,SACZ,SAACkC,UAAU+H,EAAKkd,OAAOjlB,OAI3B+H,EAAKlK,SAASmD,QAAQ,UAAUgB,GAChC,gBACA,kBAAM+F,EAAKwB,WAIXpN,KAAK0C,OAAOf,cACTe,OAALjD,KACKO,KAAK0C,gBACC,kBACC,UAGPooB,eAITA,UA9eoB,eA+eZC,SAAmB/qB,KAAK0B,QAAQE,aAAa,wBAC/C5B,KAAK0B,QAAQE,aAAa,UACb,WAAdmpB,UACIrpB,QAAQiF,aACX,sBACA3G,KAAK0B,QAAQE,aAAa,UAAY,SAEnCF,QAAQiF,aAAa,QAAS,QAIvCkiB,OA1foB,SA0fbhlB,EAAOwf,OACNoF,EAAUzoB,KAAKgjB,YAAY7iB,YAEvBkjB,GAAWpjB,EAAE4D,EAAMiL,eAAerJ,KAAKgjB,QAGrC,IAAIzoB,KAAKgjB,YACjBnf,EAAMiL,cACN9O,KAAK0oB,wBAEL7kB,EAAMiL,eAAerJ,KAAKgjB,EAASpF,IAGnCxf,MACMskB,eACS,YAAftkB,EAAMuC,KAAqB2hB,EAAgBA,IACzC,GAGF9nB,EAAEojB,EAAQ0F,iBAAiB9jB,SAAS1E,IACrC8iB,EAAQ6E,cAAgBJ,IACjBI,YAAcJ,gBAIXzE,EAAQ4E,YAEbC,YAAcJ,EAEjBzE,EAAQ3gB,OAAOsoB,OAAU3H,EAAQ3gB,OAAOsoB,MAAM3d,OAK3C4a,SAAWre,WAAW,WACxByZ,EAAQ6E,cAAgBJ,KAClBza,QAETgW,EAAQ3gB,OAAOsoB,MAAM3d,QARdA,WAWZyb,OAniBoB,SAmiBbjlB,EAAOwf,OACNoF,EAAUzoB,KAAKgjB,YAAY7iB,YAEvBkjB,GAAWpjB,EAAE4D,EAAMiL,eAAerJ,KAAKgjB,QAGrC,IAAIzoB,KAAKgjB,YACjBnf,EAAMiL,cACN9O,KAAK0oB,wBAEL7kB,EAAMiL,eAAerJ,KAAKgjB,EAASpF,IAGnCxf,MACMskB,eACS,aAAftkB,EAAMuC,KAAsB2hB,EAAgBA,IAC1C,GAGF1E,EAAQuF,sCAICvF,EAAQ4E,YAEbC,YAAcJ,EAEjBzE,EAAQ3gB,OAAOsoB,OAAU3H,EAAQ3gB,OAAOsoB,MAAM5d,OAK3C6a,SAAWre,WAAW,WACxByZ,EAAQ6E,cAAgBJ,KAClB1a,QAETiW,EAAQ3gB,OAAOsoB,MAAM5d,QARdA,WAWZwb,qBA1kBoB,eA2kBb,IAAMxmB,KAAWpC,KAAKmoB,kBACrBnoB,KAAKmoB,eAAe/lB,UACf,SAIJ,KAGTsF,WAplBoB,SAolBThF,SAOmB,wBALvB1C,KAAKgjB,YAAYhc,QACjB/G,EAAED,KAAK0B,SAAS+D,OAChB/C,IAGasoB,UACTA,YACCtoB,EAAOsoB,WACPtoB,EAAOsoB,QAIW,iBAAjBtoB,EAAOgoB,UACTA,MAAQhoB,EAAOgoB,MAAMznB,YAGA,iBAAnBP,EAAO4nB,YACTA,QAAU5nB,EAAO4nB,QAAQrnB,cAG7BkG,gBACHjJ,EACAwC,EACA1C,KAAKgjB,YAAY/b,aAGZvE,KAGTgmB,mBAnnBoB,eAonBZhmB,QAEF1C,KAAK0C,WACF,IAAMvD,KAAOa,KAAK0C,OACjB1C,KAAKgjB,YAAYhc,QAAQ7H,KAASa,KAAK0C,OAAOvD,OACzCA,GAAOa,KAAK0C,OAAOvD,WAKzBuD,KAGTsnB,eAjoBoB,eAkoBZI,EAAOnqB,EAAED,KAAK+oB,iBACdkC,EAAWb,EAAKrc,KAAK,SAAS7K,MAAM2kB,GACzB,OAAboD,GAAqBA,EAASrsB,OAAS,KACpCoG,YAAYimB,EAASC,KAAK,QAInCtB,6BAzoBoB,SAyoBSnkB,QACtBukB,sBACAR,mBAAmBxpB,KAAKupB,eAAe9jB,EAAKqQ,eAGnD+T,eA9oBoB,eA+oBZzB,EAAMpoB,KAAK+oB,gBACXoC,EAAsBnrB,KAAK0C,OAAO2mB,UACA,OAApCjB,EAAIxmB,aAAa,mBAGnBwmB,GAAKpjB,YAAYzE,QACdmC,OAAO2mB,WAAY,OACnBjc,YACAC,YACA3K,OAAO2mB,UAAY8B,MAKnB7lB,iBA7pBa,SA6pBI5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAClBsH,EAA4B,iBAAX/E,GAAuBA,MAEzC+C,IAAQ,eAAepC,KAAKX,MAI5B+C,MACI,IAAImiB,EAAQ5nB,KAAMyH,KACvBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,GAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAvqBe,+CA2HjBsE,sCAIA9G,0CAIAC,uCAIAG,2CAIAF,6CAIA6G,oBAoiBTvD,GAAGxD,GAAQ0nB,EAAQtiB,mBACnB5B,GAAGxD,GAAMb,YAAcuoB,IACvBlkB,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNunB,EAAQtiB,kBAGVsiB,EAlsBQ,CAmsBd3nB,GCpsBGmrB,GAAW,SAACnrB,OAOVC,EAAsB,UAEtBC,EAAsB,aACtBC,EAAAA,IAA0BD,EAC1BE,EAAsBJ,EAAEyD,GAAGxD,GAE3B2nB,EAAsB,IAAIzkB,OAAJ,wBAAyC,KAE/D4D,EAAAA,KACD4gB,GAAQ5gB,mBACC,gBACA,gBACA,YACA,wIAMRC,EAAAA,KACD2gB,GAAQ3gB,qBACD,8BAGN1G,EACG,OADHA,EAEG,OAGHG,EACM,kBADNA,EAEM,gBAGNJ,eACgBF,kBACEA,cACFA,gBACCA,sBACGA,gBACHA,oBACEA,sBACCA,0BACEA,0BACAA,GAStBgrB,cVlCR,IAAwBC,EAAUC,oDAAAA,KAAVD,KACb7rB,UAAYP,OAAOssB,OAAOD,EAAW9rB,WAC9C6rB,EAAS7rB,UAAUwjB,YAAcqI,EACjCA,EAASG,UAAYF,6BUgEnBtC,cA7FoB,kBA8FXhpB,KAAKiqB,YAAcjqB,KAAKyrB,iBAGjCjC,mBAjGoB,SAiGDF,KACftpB,KAAK+oB,iBAAiB5d,SAAY+e,cAAgBZ,MAGtDP,cArGoB,uBAsGbX,IAAMpoB,KAAKooB,KAAOnoB,EAAED,KAAK0C,OAAOynB,UAAU,GACxCnqB,KAAKooB,OAGdgB,WA1GoB,eA2GZgB,EAAOnqB,EAAED,KAAK+oB,sBAGfsB,kBAAkBD,EAAKnoB,KAAKvB,GAAiBV,KAAKiqB,gBACnDK,EAAUtqB,KAAKyrB,cACI,mBAAZnB,MACCA,EAAQxqB,KAAKE,KAAK0B,eAEzB2oB,kBAAkBD,EAAKnoB,KAAKvB,GAAmB4pB,KAE/CtlB,YAAezE,EAApB,IAAsCA,MAKxCkrB,YA1HoB,kBA2HXzrB,KAAK0B,QAAQE,aAAa,iBAC/B5B,KAAK0C,OAAO4nB,WAGhBN,eA/HoB,eAgIZI,EAAOnqB,EAAED,KAAK+oB,iBACdkC,EAAWb,EAAKrc,KAAK,SAAS7K,MAAM2kB,GACzB,OAAboD,GAAqBA,EAASrsB,OAAS,KACpCoG,YAAYimB,EAASC,KAAK,QAM5B5lB,iBAzIa,SAyII5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAClBsH,EAA4B,iBAAX/E,EAAsBA,EAAS,SAEjD+C,IAAQ,eAAepC,KAAKX,MAI5B+C,MACI,IAAI2lB,EAAQprB,KAAMyH,KACvBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,GAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAnJe,+CA4DjBsE,sCAIA9G,0CAIAC,uCAIAG,2CAIAF,6CAIA6G,SA5BW2gB,aA2GpBlkB,GAAGxD,GAAQkrB,EAAQ9lB,mBACnB5B,GAAGxD,GAAMb,YAAc+rB,IACvB1nB,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACN+qB,EAAQ9lB,kBAGV8lB,EA9KQ,CA+KdnrB,GC/KGyrB,GAAa,SAACzrB,OAOZC,EAAqB,YAErBC,EAAqB,eACrBC,EAAAA,IAAyBD,EAEzBE,EAAqBJ,EAAEyD,GAAGxD,GAE1B8G,UACK,UACA,cACA,IAGLC,UACK,gBACA,gBACA,oBAGL3G,uBACuBF,kBACFA,uBACFA,EAlBE,aAqBrBG,EACY,gBADZA,EAGY,SAGZG,YACc,6BACA,yBACA,8BACA,sBACA,uBACA,4BACA,2BACA,iCACA,oBAGdirB,EACO,SADPA,EAEO,WASPD,wBACQhqB,EAASgB,mBACdwB,SAAiBxC,OACjBkqB,eAAqC,SAApBlqB,EAAQmI,QAAqBrG,OAAS9B,OACvD+F,QAAiBzH,KAAK0H,WAAWhF,QACjCqK,UAAoB/M,KAAKyH,QAAQhJ,OAAhB,IAA0BiC,EAASmrB,UAAnC,IACG7rB,KAAKyH,QAAQhJ,OADhB,IAC0BiC,EAASorB,WADnC,IAEG9rB,KAAKyH,QAAQhJ,OAFhB,IAE0BiC,EAASqrB,oBACpDC,iBACAC,iBACAC,cAAiB,UACjBC,cAAiB,IAEpBnsB,KAAK4rB,gBAAgB/lB,GAAGvF,EAAM8rB,OAAQ,SAACvoB,UAAUzC,EAAKirB,SAASxoB,UAE5DyoB,eACAD,sCAePC,QA5FsB,sBA6FdC,EAAavsB,KAAK4rB,iBAAmB5rB,KAAK4rB,eAAepoB,OAC3DmoB,EAAsBA,EAEpBa,EAAuC,SAAxBxsB,KAAKyH,QAAQglB,OAC9BF,EAAavsB,KAAKyH,QAAQglB,OAExBC,EAAaF,IAAiBb,EAChC3rB,KAAK2sB,gBAAkB,OAEtBX,iBACAC,iBAEAE,cAAgBnsB,KAAK4sB,mBAEV3sB,EAAE8J,UAAU9J,EAAED,KAAK+M,YAGhCoJ,IAAI,SAACzU,OACAjD,EACEouB,EAAiBjsB,EAAK+D,uBAAuBjD,MAE/CmrB,MACO5sB,EAAE4sB,GAAgB,IAGzBpuB,EAAQ,KACJquB,EAAYruB,EAAO6P,2BACrBwe,EAAU9Z,OAAS8Z,EAAU/Z,cAG7B9S,EAAExB,GAAQ+tB,KAAgB9Y,IAAMgZ,EAChCG,UAIC,OAER/f,OAAO,SAACigB,UAASA,IACjBzW,KAAK,SAACC,EAAGC,UAAMD,EAAE,GAAKC,EAAE,KACxBkC,QAAQ,SAACqU,KACHf,SAAShf,KAAK+f,EAAK,MACnBd,SAASjf,KAAK+f,EAAK,SAI9BtoB,QA1IsB,aA2IlBC,WAAW1E,KAAKkE,SAAU/D,KAC1BH,KAAK4rB,gBAAgB1iB,IAAI9I,QAEtB8D,SAAiB,UACjB0nB,eAAiB,UACjBnkB,QAAiB,UACjBsF,UAAiB,UACjBif,SAAiB,UACjBC,SAAiB,UACjBC,cAAiB,UACjBC,cAAiB,QAKxBzkB,WA1JsB,SA0JXhF,MAMoB,wBAJxBsE,EACAtE,IAGajE,OAAqB,KACjCiO,EAAKzM,EAAEyC,EAAOjE,QAAQsP,KAAK,MAC1BrB,MACE9L,EAAKuoB,OAAOjpB,KACfwC,EAAOjE,QAAQsP,KAAK,KAAMrB,MAEvBjO,OAAP,IAAoBiO,WAGjBvD,gBAAgBjJ,EAAMwC,EAAQuE,GAE5BvE,KAGTiqB,cA9KsB,kBA+Kb3sB,KAAK4rB,iBAAmBpoB,OAC3BxD,KAAK4rB,eAAeoB,YAAchtB,KAAK4rB,eAAehY,aAG5DgZ,iBAnLsB,kBAoLb5sB,KAAK4rB,eAAe/E,cAAgBvlB,KAAKuR,IAC9CrR,SAAS4O,KAAKyW,aACdrlB,SAASkI,gBAAgBmd,iBAI7BoG,iBA1LsB,kBA2LbjtB,KAAK4rB,iBAAmBpoB,OAC3BA,OAAOiS,YAAczV,KAAK4rB,eAAetd,wBAAwByE,UAGvEsZ,SA/LsB,eAgMdzY,EAAe5T,KAAK2sB,gBAAkB3sB,KAAKyH,QAAQsU,OACnD8K,EAAe7mB,KAAK4sB,mBACpBM,EAAeltB,KAAKyH,QAAQsU,OAChC8K,EACA7mB,KAAKitB,sBAEHjtB,KAAKmsB,gBAAkBtF,QACpByF,UAGH1Y,GAAasZ,OACTzuB,EAASuB,KAAKisB,SAASjsB,KAAKisB,SAASrtB,OAAS,GAEhDoB,KAAKksB,gBAAkBztB,QACpB0uB,UAAU1uB,WAKfuB,KAAKksB,eAAiBtY,EAAY5T,KAAKgsB,SAAS,IAAMhsB,KAAKgsB,SAAS,GAAK,cACtEE,cAAgB,eAChBkB,aAIF,IAAIzuB,EAAIqB,KAAKgsB,SAASptB,OAAQD,KAAM,CAChBqB,KAAKksB,gBAAkBlsB,KAAKisB,SAASttB,IACxDiV,GAAa5T,KAAKgsB,SAASrtB,KACM,oBAAzBqB,KAAKgsB,SAASrtB,EAAI,IACtBiV,EAAY5T,KAAKgsB,SAASrtB,EAAI,UAG/BwuB,UAAUntB,KAAKisB,SAASttB,SAKnCwuB,UArOsB,SAqOZ1uB,QACHytB,cAAgBztB,OAEhB2uB,aAEDC,EAAUrtB,KAAK+M,UAAU8J,MAAM,OAEzBwW,EAAQlX,IAAI,SAACxU,UACXA,EAAH,iBAA4BlD,EAA5B,MACGkD,EADH,UACqBlD,EADrB,WAIH6uB,EAAQrtB,EAAEotB,EAAQnC,KAAK,MAEzBoC,EAAMroB,SAAS1E,MACXsE,QAAQnE,EAAS6sB,UAAUtrB,KAAKvB,EAAS8sB,iBAAiBriB,SAAS5K,KACnE4K,SAAS5K,OAGT4K,SAAS5K,KAGTktB,QAAQ/sB,EAASgtB,gBAAgBvlB,KAAQzH,EAASmrB,UAAxD,KAAsEnrB,EAASorB,YAAc3gB,SAAS5K,KAEhGktB,QAAQ/sB,EAASgtB,gBAAgBvlB,KAAKzH,EAASitB,WAAWziB,SAASxK,EAASmrB,WAAW1gB,SAAS5K,MAGtGP,KAAK4rB,gBAAgBxpB,QAAQ9B,EAAMstB,wBACpBnvB,OAInB2uB,OArQsB,aAsQlBptB,KAAK+M,WAAWD,OAAOpM,EAASsK,QAAQhG,YAAYzE,MAKjD+E,iBA3Qe,SA2QE5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,MAGnBsF,MACI,IAAIimB,EAAU1rB,KAHW,iBAAX0C,GAAuBA,KAI1C1C,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAjRc,+CA+EhBsE,oBA8MTxD,QAAQqC,GAAGvF,EAAM6L,cAAe,mBAC1B0hB,EAAa5tB,EAAE8J,UAAU9J,EAAES,EAASotB,WAEjCnvB,EAAIkvB,EAAWjvB,OAAQD,KAAM,KAC9BovB,EAAO9tB,EAAE4tB,EAAWlvB,MAChB2G,iBAAiBxF,KAAKiuB,EAAMA,EAAKtoB,aAU7C/B,GAAGxD,GAAQwrB,EAAUpmB,mBACrB5B,GAAGxD,GAAMb,YAAcqsB,IACvBhoB,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNqrB,EAAUpmB,kBAGZomB,EA3TU,CA4ThBzrB,GC5TG+tB,GAAO,SAAC/tB,OAUNG,EAAAA,UAEAC,EAAsBJ,EAAEyD,GAAF,IAGtBpD,eACoBF,kBACEA,cACFA,gBACCA,0CAIrBG,EACY,gBADZA,EAEY,SAFZA,EAGY,WAHZA,EAIY,OAJZA,EAKY,OAGZG,EACoB,YADpBA,EAEoB,oBAFpBA,EAGoB,UAHpBA,EAIoB,iBAJpBA,EAKoB,kEALpBA,EAMoB,mBANpBA,EAOoB,2BASpBstB,wBACQtsB,QACLwC,SAAWxC,6BAWlB2L,KA5DgB,2BA6DVrN,KAAKkE,SAAS+L,YACdjQ,KAAKkE,SAAS+L,WAAWzN,WAAa2O,KAAKkU,cAC3CplB,EAAED,KAAKkE,UAAUe,SAAS1E,IAC1BN,EAAED,KAAKkE,UAAUe,SAAS1E,SAI1B9B,EACAwvB,EACEC,EAAcjuB,EAAED,KAAKkE,UAAUW,QAAQnE,GAAyB,GAChEiB,EAAWf,EAAK+D,uBAAuB3E,KAAKkE,aAE9CgqB,EAAa,KACTC,EAAwC,OAAzBD,EAAYle,SAAoBtP,EAAqBA,OAC/DT,EAAE8J,UAAU9J,EAAEiuB,GAAajsB,KAAKksB,KACvBF,EAASrvB,OAAS,OAGlC2kB,EAAYtjB,EAAEK,MAAMA,EAAM+N,oBACfrO,KAAKkE,WAGhBue,EAAYxiB,EAAEK,MAAMA,EAAMqN,oBACfsgB,OAGbA,KACAA,GAAU7rB,QAAQmhB,KAGpBvjB,KAAKkE,UAAU9B,QAAQqgB,IAErBA,EAAUle,uBACXgf,EAAUhf,sBAIT5C,MACO1B,EAAE0B,GAAU,SAGlBwrB,UACHntB,KAAKkE,SACLgqB,OAGIjgB,EAAW,eACTmgB,EAAcnuB,EAAEK,MAAMA,EAAMiO,sBACjBnN,EAAK8C,WAGhBuhB,EAAaxlB,EAAEK,MAAMA,EAAM4N,qBAChB+f,MAGfA,GAAU7rB,QAAQgsB,KAClBhtB,EAAK8C,UAAU9B,QAAQqjB,IAGvBhnB,OACG0uB,UAAU1uB,EAAQA,EAAOwR,WAAYhC,YAM9CxJ,QA/HgB,aAgIZC,WAAW1E,KAAKkE,SAvHM,eAwHnBA,SAAW,QAKlBipB,UAtIgB,SAsINzrB,EAAS+nB,EAAW1P,cAQtBsU,GANqB,OAAvB5E,EAAUzZ,SACK/P,EAAEwpB,GAAWxnB,KAAKvB,GAElBT,EAAEwpB,GAAWve,SAASxK,IAGX,GACxB8N,EAAkBuL,GACtBnZ,EAAKgD,yBACJyqB,GAAUpuB,EAAEouB,GAAQppB,SAAS1E,GAE1B0N,EAAW,kBAAM3E,EAAKglB,oBAC1B5sB,EACA2sB,EACAtU,IAGEsU,GAAU7f,IACV6f,GACCptB,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBA/ImB,YAqJ1B2qB,oBAlKgB,SAkKI5sB,EAAS2sB,EAAQtU,MAC/BsU,EAAQ,GACRA,GAAQrpB,YAAezE,EAAzB,IAA2CA,OAErCguB,EAAgBtuB,EAAEouB,EAAOpe,YAAYhO,KACzCvB,GACA,GAEE6tB,KACAA,GAAevpB,YAAYzE,GAGK,QAAhC8tB,EAAOzsB,aAAa,WACf+E,aAAa,iBAAiB,QAIvCjF,GAASyJ,SAAS5K,GACiB,QAAjCmB,EAAQE,aAAa,WACf+E,aAAa,iBAAiB,KAGnCgF,OAAOjK,KACVA,GAASyJ,SAAS5K,GAEhBmB,EAAQuO,YACRhQ,EAAEyB,EAAQuO,YAAYhL,SAAS1E,GAA0B,KACrDiuB,EAAkBvuB,EAAEyB,GAASmD,QAAQnE,GAAmB,GAC1D8tB,KACAA,GAAiBvsB,KAAKvB,GAA0ByK,SAAS5K,KAGrDoG,aAAa,iBAAiB,GAGpCoT,UAOCzU,iBA5MS,SA4MQ5C,UACf1C,KAAKuF,KAAK,eACTsJ,EAAQ5O,EAAED,MACZyF,EAAOoJ,EAAMpJ,KAtMK,aAwMjBA,MACI,IAAIuoB,EAAIhuB,QACTyF,KA1Mc,SA0MCA,IAGD,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAlNe,0BA8N1BlB,UACCqE,GAAGvF,EAAMwF,eAAgBpF,EAAsB,SAAUmD,KAClD+B,mBACFN,iBAAiBxF,KAAKG,EAAED,MAAO,YASrC0D,GAAF,IAAasqB,EAAI1oB,mBACf5B,GAAF,IAAWrE,YAAc2uB,IACvBtqB,GAAF,IAAWqC,WAAa,oBACpBrC,GAAF,IAAarD,EACN2tB,EAAI1oB,kBAGN0oB,EAzPI,CA0PV/tB,IChPH,SAAEA,MACiB,oBAANA,QACH,IAAI8L,UAAU,sGAGhB0iB,EAAUxuB,EAAEyD,GAAG+K,OAAOoI,MAAM,KAAK,GAAGA,MAAM,QAO5C4X,EAAQ,GALI,GAKYA,EAAQ,GAJnB,GAFA,IAMoCA,EAAQ,IAJ5C,IAI+DA,EAAQ,IAAmBA,EAAQ,GAHlG,GAGmHA,EAAQ,IAF3H,QAGT,IAAInrB,MAAM,+EAbpB,CAeGrD","sourcesContent":["export { _createClass as createClass, _extends as extends, _inheritsLoose as inheritsLoose };\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.12.9\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n // NOTE: 1 DOM access here\n var offsetParent = element && element.offsetParent;\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement;\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\n/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nvar isIE10 = undefined;\n\nvar isIE10$1 = function () {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n};\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE10$1() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10$1()) {\n try {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var isIE10 = isIE10$1();\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = getScroll(html);\n var scrollLeft = getScroll(html, 'left');\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n // NOTE: 1 DOM access here\n var boundaries = { top: 0, left: 0 };\n var offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var styles = getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length - 1; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n // floor sides to avoid blurry text\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let transition = false\n\n const MAX_UID = 1000000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n }\n\n function transitionEndTest() {\n if (typeof window !== 'undefined' && window.QUnit) {\n return false\n }\n\n return {\n end: 'transitionend'\n }\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest()\n\n $.fn.emulateTransitionEnd = transitionEndEmulator\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n }\n\n function escapeId(selector) {\n // We escape IDs in case of special selectors (selector = '#myId:something')\n // $.escapeSelector does not exist in jQuery < 3\n selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1)\n : selector.replace(/(:|\\.|\\[|\\]|,|=|@)/g, '\\\\$1')\n\n return selector\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n // If it's an ID\n if (selector.charAt(0) === '#') {\n selector = escapeId(selector)\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? selector : null\n } catch (err) {\n return null\n }\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(transition.end)\n },\n\n supportsTransitionEnd() {\n return Boolean(transition)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n }\n }\n\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n element = element || this._element\n\n const rootElement = this._getRootElement(element)\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!Util.supportsTransitionEnd() ||\n !$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n Util.supportsTransitionEnd()) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $(this._indicatorsElement)\n .find(Selector.ACTIVE)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n $(Selector.DATA_RIDE).each(function () {\n const $carousel = $(this)\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\n )\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(selector)\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n $(selector).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n }\n\n const Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'\n }\n\n const AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n }\n\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n }\n let element = this._element\n // For dropup with alignment we use the parent as popper container\n if ($(parent).hasClass(ClassName.DROPUP)) {\n if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {\n element = parent\n }\n }\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(element, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n this._menu = $(parent).find(Selector.MENU)[0]\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element).parent()\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n for (let i = 0; i < toggles.length; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Dropdown._jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 300\n const BACKDROP_TRANSITION_DURATION = 150\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top',\n NAVBAR_TOGGLER : '.navbar-toggler'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._originalBodyPadding = 0\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isTransitioning || this._isShown) {\n return\n }\n\n if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (this._isTransitioning || !this._isShown) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n\n const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n if (transition) {\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n const doAnimate = Util.supportsTransitionEnd() && animate\n\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n $(this._backdrop).addClass(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (doAnimate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!doAnimate) {\n callback()\n return\n }\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)) {\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const actualPadding = $(element)[0].style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(Selector.STICKY_CONTENT).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust navbar-toggler margin\n $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $('body').css('padding-right')\n $('body').data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const padding = $(element).data('padding-right')\n if (typeof padding !== 'undefined') {\n $(element).css('padding-right', padding).removeData('padding-right')\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $('body').data('padding-right')\n if (typeof padding !== 'undefined') {\n $('body').css('padding-right', padding).removeData('padding-right')\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Modal.Default,\n ...$(this).data(),\n ...typeof config === 'object' && config\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = $(selector)[0]\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const isInTheDom = $.contains(\n this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this.config.container === false ? document.body : $(this.config.container)\n\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => {\n this._handlePopperPlacementChange(data)\n }\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(Tooltip._TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if (Util.supportsTransitionEnd() &&\n $(this.tip).hasClass(ClassName.FADE)) {\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : 'text'](content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\n ...config\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(data) {\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(data.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tooltip._jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Popover._jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $(queries.join(','))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n for (let i = scrollSpys.length; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = $(selector)[0]\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n let activeElements\n if (container.nodeName === 'UL') {\n activeElements = $(container).find(Selector.ACTIVE_UL)\n } else {\n activeElements = $(container).children(Selector.ACTIVE)\n }\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n Util.supportsTransitionEnd() &&\n (active && $(active).hasClass(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n $(element).addClass(ClassName.SHOW)\n\n if (element.parentNode &&\n $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n if (dropdownElement) {\n $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})($)\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"]} \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.js b/library/bootstrap/js/bootstrap.js
index 7597fb328..6d9549d99 100644
--- a/library/bootstrap/js/bootstrap.js
+++ b/library/bootstrap/js/bootstrap.js
@@ -1,151 +1,164 @@
/*!
- * Bootstrap v4.0.0-beta (https://getbootstrap.com)
- * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-if (typeof jQuery === 'undefined') {
- throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.')
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
+ typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
+ (factory((global.bootstrap = {}),global.jQuery,global.Popper));
+}(this, (function (exports,$,Popper) { 'use strict';
+
+$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
+Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
}
-(function ($) {
- var version = $.fn.jquery.split(' ')[0].split('.')
- if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {
- throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
- }
-})(jQuery);
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
-(function () {
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+ return target;
+ };
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+ return _extends.apply(this, arguments);
+}
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ subClass.__proto__ = superClass;
+}
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): util.js
+ * Bootstrap (v4.0.0): util.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Util = function ($) {
-
+var Util = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Private TransitionEnd Helpers
* ------------------------------------------------------------------------
*/
-
var transition = false;
+ var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
- var MAX_UID = 1000000;
-
- var TransitionEndEvent = {
- WebkitTransition: 'webkitTransitionEnd',
- MozTransition: 'transitionend',
- OTransition: 'oTransitionEnd otransitionend',
- transition: 'transitionend'
-
- // shoutout AngusCroll (https://goo.gl/pxwQGp)
- };function toType(obj) {
+ function toType(obj) {
return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
- function isElement(obj) {
- return (obj[0] || obj).nodeType;
- }
-
function getSpecialTransitionEndEvent() {
return {
bindType: transition.end,
delegateType: transition.end,
handle: function handle(event) {
- if ($(event.target).is(this)) {
+ if ($$$1(event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
}
- return undefined;
+
+ return undefined; // eslint-disable-line no-undefined
}
};
}
function transitionEndTest() {
- if (window.QUnit) {
+ if (typeof window !== 'undefined' && window.QUnit) {
return false;
}
- var el = document.createElement('bootstrap');
-
- for (var name in TransitionEndEvent) {
- if (el.style[name] !== undefined) {
- return {
- end: TransitionEndEvent[name]
- };
- }
- }
-
- return false;
+ return {
+ end: 'transitionend'
+ };
}
function transitionEndEmulator(duration) {
var _this = this;
var called = false;
-
- $(this).one(Util.TRANSITION_END, function () {
+ $$$1(this).one(Util.TRANSITION_END, function () {
called = true;
});
-
setTimeout(function () {
if (!called) {
Util.triggerTransitionEnd(_this);
}
}, duration);
-
return this;
}
function setTransitionEndSupport() {
transition = transitionEndTest();
-
- $.fn.emulateTransitionEnd = transitionEndEmulator;
+ $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
if (Util.supportsTransitionEnd()) {
- $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
+ $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
}
+ function escapeId(selector) {
+ // We escape IDs in case of special selectors (selector = '#myId:something')
+ // $.escapeSelector does not exist in jQuery < 3
+ selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
+ return selector;
+ }
/**
* --------------------------------------------------------------------------
* Public Util Api
* --------------------------------------------------------------------------
*/
- var Util = {
+ var Util = {
TRANSITION_END: 'bsTransitionEnd',
-
getUID: function getUID(prefix) {
do {
// eslint-disable-next-line no-bitwise
prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
} while (document.getElementById(prefix));
+
return prefix;
},
getSelectorFromElement: function getSelectorFromElement(element) {
var selector = element.getAttribute('data-target');
+
if (!selector || selector === '#') {
selector = element.getAttribute('href') || '';
+ } // If it's an ID
+
+
+ if (selector.charAt(0) === '#') {
+ selector = escapeId(selector);
}
try {
- var $selector = $(selector);
+ var $selector = $$$1(document).find(selector);
return $selector.length > 0 ? selector : null;
- } catch (error) {
+ } catch (err) {
return null;
}
},
@@ -153,69 +166,64 @@ var Util = function ($) {
return element.offsetHeight;
},
triggerTransitionEnd: function triggerTransitionEnd(element) {
- $(element).trigger(transition.end);
+ $$$1(element).trigger(transition.end);
},
supportsTransitionEnd: function supportsTransitionEnd() {
return Boolean(transition);
},
+ isElement: function isElement(obj) {
+ return (obj[0] || obj).nodeType;
+ },
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
for (var property in configTypes) {
- if (configTypes.hasOwnProperty(property)) {
+ if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
var expectedTypes = configTypes[property];
var value = config[property];
- var valueType = value && isElement(value) ? 'element' : toType(value);
+ var valueType = value && Util.isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {
- throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
}
}
}
}
};
-
setTransitionEndSupport();
-
return Util;
-}(jQuery);
+}($);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): alert.js
+ * Bootstrap (v4.0.0): alert.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Alert = function ($) {
-
+var Alert = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'alert';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.alert';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var TRANSITION_DURATION = 150;
-
var Selector = {
DISMISS: '[data-dismiss="alert"]'
};
-
var Event = {
- CLOSE: 'close' + EVENT_KEY,
- CLOSED: 'closed' + EVENT_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
+ CLOSE: "close" + EVENT_KEY,
+ CLOSED: "closed" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
-
var ClassName = {
ALERT: 'alert',
FADE: 'fade',
SHOW: 'show'
-
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -223,21 +231,23 @@ var Alert = function ($) {
*/
};
- var Alert = function () {
- function Alert(element) {
- _classCallCheck(this, Alert);
+ var Alert =
+ /*#__PURE__*/
+ function () {
+ function Alert(element) {
this._element = element;
- }
+ } // Getters
- // getters
- // public
+ var _proto = Alert.prototype;
- Alert.prototype.close = function close(element) {
+ // Public
+ _proto.close = function close(element) {
element = element || this._element;
var rootElement = this._getRootElement(element);
+
var customEvent = this._triggerCloseEvent(rootElement);
if (customEvent.isDefaultPrevented()) {
@@ -247,59 +257,57 @@ var Alert = function ($) {
this._removeElement(rootElement);
};
- Alert.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
this._element = null;
- };
+ }; // Private
- // private
- Alert.prototype._getRootElement = function _getRootElement(element) {
+ _proto._getRootElement = function _getRootElement(element) {
var selector = Util.getSelectorFromElement(element);
var parent = false;
if (selector) {
- parent = $(selector)[0];
+ parent = $$$1(selector)[0];
}
if (!parent) {
- parent = $(element).closest('.' + ClassName.ALERT)[0];
+ parent = $$$1(element).closest("." + ClassName.ALERT)[0];
}
return parent;
};
- Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) {
- var closeEvent = $.Event(Event.CLOSE);
-
- $(element).trigger(closeEvent);
+ _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
+ var closeEvent = $$$1.Event(Event.CLOSE);
+ $$$1(element).trigger(closeEvent);
return closeEvent;
};
- Alert.prototype._removeElement = function _removeElement(element) {
- var _this2 = this;
+ _proto._removeElement = function _removeElement(element) {
+ var _this = this;
- $(element).removeClass(ClassName.SHOW);
+ $$$1(element).removeClass(ClassName.SHOW);
- if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
+ if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) {
this._destroyElement(element);
+
return;
}
- $(element).one(Util.TRANSITION_END, function (event) {
- return _this2._destroyElement(element, event);
+ $$$1(element).one(Util.TRANSITION_END, function (event) {
+ return _this._destroyElement(element, event);
}).emulateTransitionEnd(TRANSITION_DURATION);
};
- Alert.prototype._destroyElement = function _destroyElement(element) {
- $(element).detach().trigger(Event.CLOSED).remove();
- };
+ _proto._destroyElement = function _destroyElement(element) {
+ $$$1(element).detach().trigger(Event.CLOSED).remove();
+ }; // Static
- // static
Alert._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var $element = $(this);
+ var $element = $$$1(this);
var data = $element.data(DATA_KEY);
if (!data) {
@@ -324,67 +332,62 @@ var Alert = function ($) {
};
_createClass(Alert, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}]);
-
return Alert;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
- $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Alert._jQueryInterface;
- $.fn[NAME].Constructor = Alert;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $$$1.fn[NAME] = Alert._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Alert;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Alert._jQueryInterface;
};
return Alert;
-}(jQuery);
+}($);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): button.js
+ * Bootstrap (v4.0.0): button.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Button = function ($) {
-
+var Button = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'button';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.button';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
-
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var ClassName = {
ACTIVE: 'active',
BUTTON: 'btn',
FOCUS: 'focus'
};
-
var Selector = {
DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
DATA_TOGGLE: '[data-toggle="buttons"]',
@@ -392,11 +395,9 @@ var Button = function ($) {
ACTIVE: '.active',
BUTTON: '.btn'
};
-
var Event = {
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
- FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY)
-
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
+ FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -404,34 +405,35 @@ var Button = function ($) {
*/
};
- var Button = function () {
- function Button(element) {
- _classCallCheck(this, Button);
+ var Button =
+ /*#__PURE__*/
+ function () {
+ function Button(element) {
this._element = element;
- }
+ } // Getters
- // getters
- // public
+ var _proto = Button.prototype;
- Button.prototype.toggle = function toggle() {
+ // Public
+ _proto.toggle = function toggle() {
var triggerChangeEvent = true;
var addAriaPressed = true;
- var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
+ var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
if (rootElement) {
- var input = $(this._element).find(Selector.INPUT)[0];
+ var input = $$$1(this._element).find(Selector.INPUT)[0];
if (input) {
if (input.type === 'radio') {
- if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
+ if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
triggerChangeEvent = false;
} else {
- var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
+ var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
if (activeElement) {
- $(activeElement).removeClass(ClassName.ACTIVE);
+ $$$1(activeElement).removeClass(ClassName.ACTIVE);
}
}
}
@@ -440,8 +442,9 @@ var Button = function ($) {
if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
return;
}
- input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
- $(input).trigger('change');
+
+ input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
+ $$$1(input).trigger('change');
}
input.focus();
@@ -450,28 +453,27 @@ var Button = function ($) {
}
if (addAriaPressed) {
- this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
+ this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
}
if (triggerChangeEvent) {
- $(this._element).toggleClass(ClassName.ACTIVE);
+ $$$1(this._element).toggleClass(ClassName.ACTIVE);
}
};
- Button.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
this._element = null;
- };
+ }; // Static
- // static
Button._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY);
+ var data = $$$1(this).data(DATA_KEY);
if (!data) {
data = new Button(this);
- $(this).data(DATA_KEY, data);
+ $$$1(this).data(DATA_KEY, data);
}
if (config === 'toggle') {
@@ -481,76 +483,74 @@ var Button = function ($) {
};
_createClass(Button, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}]);
-
return Button;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
- event.preventDefault();
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
+ event.preventDefault();
var button = event.target;
- if (!$(button).hasClass(ClassName.BUTTON)) {
- button = $(button).closest(Selector.BUTTON);
+ if (!$$$1(button).hasClass(ClassName.BUTTON)) {
+ button = $$$1(button).closest(Selector.BUTTON);
}
- Button._jQueryInterface.call($(button), 'toggle');
+ Button._jQueryInterface.call($$$1(button), 'toggle');
}).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
- var button = $(event.target).closest(Selector.BUTTON)[0];
- $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
+ var button = $$$1(event.target).closest(Selector.BUTTON)[0];
+ $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
});
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Button._jQueryInterface;
- $.fn[NAME].Constructor = Button;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $$$1.fn[NAME] = Button._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Button;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Button._jQueryInterface;
};
return Button;
-}(jQuery);
+}($);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): carousel.js
+ * Bootstrap (v4.0.0): carousel.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Carousel = function ($) {
-
+var Carousel = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'carousel';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.carousel';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var TRANSITION_DURATION = 600;
var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
+
var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
+
var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
var Default = {
@@ -560,7 +560,6 @@ var Carousel = function ($) {
pause: 'hover',
wrap: true
};
-
var DefaultType = {
interval: '(number|boolean)',
keyboard: 'boolean',
@@ -568,25 +567,22 @@ var Carousel = function ($) {
pause: '(string|boolean)',
wrap: 'boolean'
};
-
var Direction = {
NEXT: 'next',
PREV: 'prev',
LEFT: 'left',
RIGHT: 'right'
};
-
var Event = {
- SLIDE: 'slide' + EVENT_KEY,
- SLID: 'slid' + EVENT_KEY,
- KEYDOWN: 'keydown' + EVENT_KEY,
- MOUSEENTER: 'mouseenter' + EVENT_KEY,
- MOUSELEAVE: 'mouseleave' + EVENT_KEY,
- TOUCHEND: 'touchend' + EVENT_KEY,
- LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
+ SLIDE: "slide" + EVENT_KEY,
+ SLID: "slid" + EVENT_KEY,
+ KEYDOWN: "keydown" + EVENT_KEY,
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY,
+ TOUCHEND: "touchend" + EVENT_KEY,
+ LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
-
var ClassName = {
CAROUSEL: 'carousel',
ACTIVE: 'active',
@@ -597,7 +593,6 @@ var Carousel = function ($) {
PREV: 'carousel-item-prev',
ITEM: 'carousel-item'
};
-
var Selector = {
ACTIVE: '.active',
ACTIVE_ITEM: '.active.carousel-item',
@@ -606,7 +601,6 @@ var Carousel = function ($) {
INDICATORS: '.carousel-indicators',
DATA_SLIDE: '[data-slide], [data-slide-to]',
DATA_RIDE: '[data-ride="carousel"]'
-
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -614,55 +608,54 @@ var Carousel = function ($) {
*/
};
- var Carousel = function () {
- function Carousel(element, config) {
- _classCallCheck(this, Carousel);
+ var Carousel =
+ /*#__PURE__*/
+ function () {
+ function Carousel(element, config) {
this._items = null;
this._interval = null;
this._activeElement = null;
-
this._isPaused = false;
this._isSliding = false;
-
this.touchTimeout = null;
-
this._config = this._getConfig(config);
- this._element = $(element)[0];
- this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];
+ this._element = $$$1(element)[0];
+ this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
this._addEventListeners();
- }
+ } // Getters
- // getters
- // public
+ var _proto = Carousel.prototype;
- Carousel.prototype.next = function next() {
+ // Public
+ _proto.next = function next() {
if (!this._isSliding) {
this._slide(Direction.NEXT);
}
};
- Carousel.prototype.nextWhenVisible = function nextWhenVisible() {
+ _proto.nextWhenVisible = function nextWhenVisible() {
// Don't call next when the page isn't visible
- if (!document.hidden) {
+ // or the carousel or its parent isn't visible
+ if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
this.next();
}
};
- Carousel.prototype.prev = function prev() {
+ _proto.prev = function prev() {
if (!this._isSliding) {
this._slide(Direction.PREV);
}
};
- Carousel.prototype.pause = function pause(event) {
+ _proto.pause = function pause(event) {
if (!event) {
this._isPaused = true;
}
- if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
+ if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
Util.triggerTransitionEnd(this._element);
this.cycle(true);
}
@@ -671,7 +664,7 @@ var Carousel = function ($) {
this._interval = null;
};
- Carousel.prototype.cycle = function cycle(event) {
+ _proto.cycle = function cycle(event) {
if (!event) {
this._isPaused = false;
}
@@ -686,10 +679,10 @@ var Carousel = function ($) {
}
};
- Carousel.prototype.to = function to(index) {
- var _this3 = this;
+ _proto.to = function to(index) {
+ var _this = this;
- this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
+ this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
var activeIndex = this._getItemIndex(this._activeElement);
@@ -698,8 +691,8 @@ var Carousel = function ($) {
}
if (this._isSliding) {
- $(this._element).one(Event.SLID, function () {
- return _this3.to(index);
+ $$$1(this._element).one(Event.SLID, function () {
+ return _this.to(index);
});
return;
}
@@ -715,10 +708,9 @@ var Carousel = function ($) {
this._slide(direction, this._items[index]);
};
- Carousel.prototype.dispose = function dispose() {
- $(this._element).off(EVENT_KEY);
- $.removeData(this._element, DATA_KEY);
-
+ _proto.dispose = function dispose() {
+ $$$1(this._element).off(EVENT_KEY);
+ $$$1.removeData(this._element, DATA_KEY);
this._items = null;
this._config = null;
this._element = null;
@@ -727,53 +719,55 @@ var Carousel = function ($) {
this._isSliding = null;
this._activeElement = null;
this._indicatorsElement = null;
- };
+ }; // Private
- // private
- Carousel.prototype._getConfig = function _getConfig(config) {
- config = $.extend({}, Default, config);
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
Util.typeCheckConfig(NAME, config, DefaultType);
return config;
};
- Carousel.prototype._addEventListeners = function _addEventListeners() {
- var _this4 = this;
+ _proto._addEventListeners = function _addEventListeners() {
+ var _this2 = this;
if (this._config.keyboard) {
- $(this._element).on(Event.KEYDOWN, function (event) {
- return _this4._keydown(event);
+ $$$1(this._element).on(Event.KEYDOWN, function (event) {
+ return _this2._keydown(event);
});
}
if (this._config.pause === 'hover') {
- $(this._element).on(Event.MOUSEENTER, function (event) {
- return _this4.pause(event);
+ $$$1(this._element).on(Event.MOUSEENTER, function (event) {
+ return _this2.pause(event);
}).on(Event.MOUSELEAVE, function (event) {
- return _this4.cycle(event);
+ return _this2.cycle(event);
});
+
if ('ontouchstart' in document.documentElement) {
- // if it's a touch-enabled device, mouseenter/leave are fired as
+ // If it's a touch-enabled device, mouseenter/leave are fired as
// part of the mouse compatibility events on first tap - the carousel
// would stop cycling until user tapped out of it;
// here, we listen for touchend, explicitly pause the carousel
// (as if it's the second time we tap on it, mouseenter compat event
// is NOT fired) and after a timeout (to allow for mouse compatibility
// events to fire) we explicitly restart cycling
- $(this._element).on(Event.TOUCHEND, function () {
- _this4.pause();
- if (_this4.touchTimeout) {
- clearTimeout(_this4.touchTimeout);
+ $$$1(this._element).on(Event.TOUCHEND, function () {
+ _this2.pause();
+
+ if (_this2.touchTimeout) {
+ clearTimeout(_this2.touchTimeout);
}
- _this4.touchTimeout = setTimeout(function (event) {
- return _this4.cycle(event);
- }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval);
+
+ _this2.touchTimeout = setTimeout(function (event) {
+ return _this2.cycle(event);
+ }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
});
}
}
};
- Carousel.prototype._keydown = function _keydown(event) {
+ _proto._keydown = function _keydown(event) {
if (/input|textarea/i.test(event.target.tagName)) {
return;
}
@@ -783,24 +777,27 @@ var Carousel = function ($) {
event.preventDefault();
this.prev();
break;
+
case ARROW_RIGHT_KEYCODE:
event.preventDefault();
this.next();
break;
+
default:
- return;
}
};
- Carousel.prototype._getItemIndex = function _getItemIndex(element) {
- this._items = $.makeArray($(element).parent().find(Selector.ITEM));
+ _proto._getItemIndex = function _getItemIndex(element) {
+ this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
return this._items.indexOf(element);
};
- Carousel.prototype._getItemByDirection = function _getItemByDirection(direction, activeElement) {
+ _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
var isNextDirection = direction === Direction.NEXT;
var isPrevDirection = direction === Direction.PREV;
+
var activeIndex = this._getItemIndex(activeElement);
+
var lastItemIndex = this._items.length - 1;
var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
@@ -810,49 +807,51 @@ var Carousel = function ($) {
var delta = direction === Direction.PREV ? -1 : 1;
var itemIndex = (activeIndex + delta) % this._items.length;
-
return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
};
- Carousel.prototype._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
+ _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
var targetIndex = this._getItemIndex(relatedTarget);
- var fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0]);
- var slideEvent = $.Event(Event.SLIDE, {
+
+ var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
+
+ var slideEvent = $$$1.Event(Event.SLIDE, {
relatedTarget: relatedTarget,
direction: eventDirectionName,
from: fromIndex,
to: targetIndex
});
-
- $(this._element).trigger(slideEvent);
-
+ $$$1(this._element).trigger(slideEvent);
return slideEvent;
};
- Carousel.prototype._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
+ _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
if (this._indicatorsElement) {
- $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
+ $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
if (nextIndicator) {
- $(nextIndicator).addClass(ClassName.ACTIVE);
+ $$$1(nextIndicator).addClass(ClassName.ACTIVE);
}
}
};
- Carousel.prototype._slide = function _slide(direction, element) {
- var _this5 = this;
+ _proto._slide = function _slide(direction, element) {
+ var _this3 = this;
+
+ var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
- var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
var activeElementIndex = this._getItemIndex(activeElement);
+
var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
+
var nextElementIndex = this._getItemIndex(nextElement);
- var isCycling = Boolean(this._interval);
- var directionalClassName = void 0;
- var orderClassName = void 0;
- var eventDirectionName = void 0;
+ var isCycling = Boolean(this._interval);
+ var directionalClassName;
+ var orderClassName;
+ var eventDirectionName;
if (direction === Direction.NEXT) {
directionalClassName = ClassName.LEFT;
@@ -864,18 +863,19 @@ var Carousel = function ($) {
eventDirectionName = Direction.RIGHT;
}
- if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
+ if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
this._isSliding = false;
return;
}
var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
+
if (slideEvent.isDefaultPrevented()) {
return;
}
if (!activeElement || !nextElement) {
- // some weirdness is happening, so we bail
+ // Some weirdness is happening, so we bail
return;
}
@@ -887,70 +887,63 @@ var Carousel = function ($) {
this._setActiveIndicatorElement(nextElement);
- var slidEvent = $.Event(Event.SLID, {
+ var slidEvent = $$$1.Event(Event.SLID, {
relatedTarget: nextElement,
direction: eventDirectionName,
from: activeElementIndex,
to: nextElementIndex
});
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
-
- $(nextElement).addClass(orderClassName);
-
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) {
+ $$$1(nextElement).addClass(orderClassName);
Util.reflow(nextElement);
-
- $(activeElement).addClass(directionalClassName);
- $(nextElement).addClass(directionalClassName);
-
- $(activeElement).one(Util.TRANSITION_END, function () {
- $(nextElement).removeClass(directionalClassName + ' ' + orderClassName).addClass(ClassName.ACTIVE);
-
- $(activeElement).removeClass(ClassName.ACTIVE + ' ' + orderClassName + ' ' + directionalClassName);
-
- _this5._isSliding = false;
-
+ $$$1(activeElement).addClass(directionalClassName);
+ $$$1(nextElement).addClass(directionalClassName);
+ $$$1(activeElement).one(Util.TRANSITION_END, function () {
+ $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
+ $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
+ _this3._isSliding = false;
setTimeout(function () {
- return $(_this5._element).trigger(slidEvent);
+ return $$$1(_this3._element).trigger(slidEvent);
}, 0);
}).emulateTransitionEnd(TRANSITION_DURATION);
} else {
- $(activeElement).removeClass(ClassName.ACTIVE);
- $(nextElement).addClass(ClassName.ACTIVE);
-
+ $$$1(activeElement).removeClass(ClassName.ACTIVE);
+ $$$1(nextElement).addClass(ClassName.ACTIVE);
this._isSliding = false;
- $(this._element).trigger(slidEvent);
+ $$$1(this._element).trigger(slidEvent);
}
if (isCycling) {
this.cycle();
}
- };
+ }; // Static
- // static
Carousel._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = $.extend({}, Default, $(this).data());
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = _extends({}, Default, $$$1(this).data());
- if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {
- $.extend(_config, config);
+ if (typeof config === 'object') {
+ _config = _extends({}, _config, config);
}
var action = typeof config === 'string' ? config : _config.slide;
if (!data) {
data = new Carousel(this, _config);
- $(this).data(DATA_KEY, data);
+ $$$1(this).data(DATA_KEY, data);
}
if (typeof config === 'number') {
data.to(config);
} else if (typeof action === 'string') {
- if (data[action] === undefined) {
- throw new Error('No method named "' + action + '"');
+ if (typeof data[action] === 'undefined') {
+ throw new TypeError("No method named \"" + action + "\"");
}
+
data[action]();
} else if (_config.interval) {
data.pause();
@@ -966,131 +959,121 @@ var Carousel = function ($) {
return;
}
- var target = $(selector)[0];
+ var target = $$$1(selector)[0];
- if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
+ if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
return;
}
- var config = $.extend({}, $(target).data(), $(this).data());
+ var config = _extends({}, $$$1(target).data(), $$$1(this).data());
var slideIndex = this.getAttribute('data-slide-to');
if (slideIndex) {
config.interval = false;
}
- Carousel._jQueryInterface.call($(target), config);
+ Carousel._jQueryInterface.call($$$1(target), config);
if (slideIndex) {
- $(target).data(DATA_KEY).to(slideIndex);
+ $$$1(target).data(DATA_KEY).to(slideIndex);
}
event.preventDefault();
};
_createClass(Carousel, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
}]);
-
return Carousel;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
- $(window).on(Event.LOAD_DATA_API, function () {
- $(Selector.DATA_RIDE).each(function () {
- var $carousel = $(this);
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
+ $$$1(window).on(Event.LOAD_DATA_API, function () {
+ $$$1(Selector.DATA_RIDE).each(function () {
+ var $carousel = $$$1(this);
+
Carousel._jQueryInterface.call($carousel, $carousel.data());
});
});
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Carousel._jQueryInterface;
- $.fn[NAME].Constructor = Carousel;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $$$1.fn[NAME] = Carousel._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Carousel;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Carousel._jQueryInterface;
};
return Carousel;
-}(jQuery);
+}($);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): collapse.js
+ * Bootstrap (v4.0.0): collapse.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Collapse = function ($) {
-
+var Collapse = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'collapse';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.collapse';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var TRANSITION_DURATION = 600;
-
var Default = {
toggle: true,
parent: ''
};
-
var DefaultType = {
toggle: 'boolean',
- parent: 'string'
+ parent: '(string|element)'
};
-
var Event = {
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
-
var ClassName = {
SHOW: 'show',
COLLAPSE: 'collapse',
COLLAPSING: 'collapsing',
COLLAPSED: 'collapsed'
};
-
var Dimension = {
WIDTH: 'width',
HEIGHT: 'height'
};
-
var Selector = {
ACTIVES: '.show, .collapsing',
DATA_TOGGLE: '[data-toggle="collapse"]'
-
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -1098,19 +1081,24 @@ var Collapse = function ($) {
*/
};
- var Collapse = function () {
- function Collapse(element, config) {
- _classCallCheck(this, Collapse);
+ var Collapse =
+ /*#__PURE__*/
+ function () {
+ function Collapse(element, config) {
this._isTransitioning = false;
this._element = element;
this._config = this._getConfig(config);
- this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
- var tabToggles = $(Selector.DATA_TOGGLE);
+ this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
+ var tabToggles = $$$1(Selector.DATA_TOGGLE);
+
for (var i = 0; i < tabToggles.length; i++) {
var elem = tabToggles[i];
var selector = Util.getSelectorFromElement(elem);
- if (selector !== null && $(selector).filter(element).length > 0) {
+
+ if (selector !== null && $$$1(selector).filter(element).length > 0) {
+ this._selector = selector;
+
this._triggerArray.push(elem);
}
}
@@ -1124,77 +1112,79 @@ var Collapse = function ($) {
if (this._config.toggle) {
this.toggle();
}
- }
+ } // Getters
- // getters
- // public
+ var _proto = Collapse.prototype;
- Collapse.prototype.toggle = function toggle() {
- if ($(this._element).hasClass(ClassName.SHOW)) {
+ // Public
+ _proto.toggle = function toggle() {
+ if ($$$1(this._element).hasClass(ClassName.SHOW)) {
this.hide();
} else {
this.show();
}
};
- Collapse.prototype.show = function show() {
- var _this6 = this;
+ _proto.show = function show() {
+ var _this = this;
- if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {
+ if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
return;
}
- var actives = void 0;
- var activesData = void 0;
+ var actives;
+ var activesData;
if (this._parent) {
- actives = $.makeArray($(this._parent).children().children(Selector.ACTIVES));
- if (!actives.length) {
+ actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
+
+ if (actives.length === 0) {
actives = null;
}
}
if (actives) {
- activesData = $(actives).data(DATA_KEY);
+ activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
+
if (activesData && activesData._isTransitioning) {
return;
}
}
- var startEvent = $.Event(Event.SHOW);
- $(this._element).trigger(startEvent);
+ var startEvent = $$$1.Event(Event.SHOW);
+ $$$1(this._element).trigger(startEvent);
+
if (startEvent.isDefaultPrevented()) {
return;
}
if (actives) {
- Collapse._jQueryInterface.call($(actives), 'hide');
+ Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
+
if (!activesData) {
- $(actives).data(DATA_KEY, null);
+ $$$1(actives).data(DATA_KEY, null);
}
}
var dimension = this._getDimension();
- $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
-
+ $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
this._element.style[dimension] = 0;
- if (this._triggerArray.length) {
- $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
+ if (this._triggerArray.length > 0) {
+ $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
}
this.setTransitioning(true);
var complete = function complete() {
- $(_this6._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
-
- _this6._element.style[dimension] = '';
+ $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
+ _this._element.style[dimension] = '';
- _this6.setTransitioning(false);
+ _this.setTransitioning(false);
- $(_this6._element).trigger(Event.SHOWN);
+ $$$1(_this._element).trigger(Event.SHOWN);
};
if (!Util.supportsTransitionEnd()) {
@@ -1203,42 +1193,41 @@ var Collapse = function ($) {
}
var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
- var scrollSize = 'scroll' + capitalizedDimension;
-
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
-
- this._element.style[dimension] = this._element[scrollSize] + 'px';
+ var scrollSize = "scroll" + capitalizedDimension;
+ $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ this._element.style[dimension] = this._element[scrollSize] + "px";
};
- Collapse.prototype.hide = function hide() {
- var _this7 = this;
+ _proto.hide = function hide() {
+ var _this2 = this;
- if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) {
+ if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
return;
}
- var startEvent = $.Event(Event.HIDE);
- $(this._element).trigger(startEvent);
+ var startEvent = $$$1.Event(Event.HIDE);
+ $$$1(this._element).trigger(startEvent);
+
if (startEvent.isDefaultPrevented()) {
return;
}
var dimension = this._getDimension();
- this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + 'px';
-
+ this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
Util.reflow(this._element);
+ $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
- $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
-
- if (this._triggerArray.length) {
+ if (this._triggerArray.length > 0) {
for (var i = 0; i < this._triggerArray.length; i++) {
var trigger = this._triggerArray[i];
var selector = Util.getSelectorFromElement(trigger);
+
if (selector !== null) {
- var $elem = $(selector);
+ var $elem = $$$1(selector);
+
if (!$elem.hasClass(ClassName.SHOW)) {
- $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
+ $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
}
}
}
@@ -1247,8 +1236,9 @@ var Collapse = function ($) {
this.setTransitioning(true);
var complete = function complete() {
- _this7.setTransitioning(false);
- $(_this7._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
+ _this2.setTransitioning(false);
+
+ $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
};
this._element.style[dimension] = '';
@@ -1258,72 +1248,80 @@ var Collapse = function ($) {
return;
}
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
};
- Collapse.prototype.setTransitioning = function setTransitioning(isTransitioning) {
+ _proto.setTransitioning = function setTransitioning(isTransitioning) {
this._isTransitioning = isTransitioning;
};
- Collapse.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
-
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
this._config = null;
this._parent = null;
this._element = null;
this._triggerArray = null;
this._isTransitioning = null;
- };
+ }; // Private
+
- // private
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
+ config.toggle = Boolean(config.toggle); // Coerce string values
- Collapse.prototype._getConfig = function _getConfig(config) {
- config = $.extend({}, Default, config);
- config.toggle = Boolean(config.toggle); // coerce string values
Util.typeCheckConfig(NAME, config, DefaultType);
return config;
};
- Collapse.prototype._getDimension = function _getDimension() {
- var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
+ _proto._getDimension = function _getDimension() {
+ var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
};
- Collapse.prototype._getParent = function _getParent() {
- var _this8 = this;
+ _proto._getParent = function _getParent() {
+ var _this3 = this;
- var parent = $(this._config.parent)[0];
- var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';
+ var parent = null;
- $(parent).find(selector).each(function (i, element) {
- _this8._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
- });
+ if (Util.isElement(this._config.parent)) {
+ parent = this._config.parent; // It's a jQuery object
+ if (typeof this._config.parent.jquery !== 'undefined') {
+ parent = this._config.parent[0];
+ }
+ } else {
+ parent = $$$1(this._config.parent)[0];
+ }
+
+ var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
+ $$$1(parent).find(selector).each(function (i, element) {
+ _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
+ });
return parent;
};
- Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
+ _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
if (element) {
- var isOpen = $(element).hasClass(ClassName.SHOW);
+ var isOpen = $$$1(element).hasClass(ClassName.SHOW);
- if (triggerArray.length) {
- $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
+ if (triggerArray.length > 0) {
+ $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
}
}
- };
+ }; // Static
- // static
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
var selector = Util.getSelectorFromElement(element);
- return selector ? $(selector)[0] : null;
+ return selector ? $$$1(selector)[0] : null;
};
Collapse._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var $this = $(this);
+ var $this = $$$1(this);
var data = $this.data(DATA_KEY);
- var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
+
+ var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
if (!data && _config.toggle && /show|hide/.test(config)) {
_config.toggle = false;
@@ -1335,124 +1333,120 @@ var Collapse = function ($) {
}
if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
}
+
data[config]();
}
});
};
_createClass(Collapse, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
}]);
-
return Collapse;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
- if (!/input|textarea/i.test(event.target.tagName)) {
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
+ if (event.currentTarget.tagName === 'A') {
event.preventDefault();
}
- var $trigger = $(this);
+ var $trigger = $$$1(this);
var selector = Util.getSelectorFromElement(this);
- $(selector).each(function () {
- var $target = $(this);
+ $$$1(selector).each(function () {
+ var $target = $$$1(this);
var data = $target.data(DATA_KEY);
var config = data ? 'toggle' : $trigger.data();
+
Collapse._jQueryInterface.call($target, config);
});
});
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Collapse._jQueryInterface;
- $.fn[NAME].Constructor = Collapse;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $$$1.fn[NAME] = Collapse._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Collapse;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Collapse._jQueryInterface;
};
return Collapse;
-}(jQuery);
-
-/* global Popper */
+}($);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): dropdown.js
+ * Bootstrap (v4.0.0): dropdown.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Dropdown = function ($) {
-
- /**
- * Check for Popper dependency
- * Popper - https://popper.js.org
- */
- if (typeof Popper === 'undefined') {
- throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)');
- }
-
+var Dropdown = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'dropdown';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.dropdown';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
+
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
+
var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
+
var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
+
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
+
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
- var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE);
+ var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
var Event = {
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- CLICK: 'click' + EVENT_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
- KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY,
- KEYUP_DATA_API: 'keyup' + EVENT_KEY + DATA_API_KEY
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ CLICK: "click" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
+ KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
+ KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
};
-
var ClassName = {
DISABLED: 'disabled',
SHOW: 'show',
DROPUP: 'dropup',
+ DROPRIGHT: 'dropright',
+ DROPLEFT: 'dropleft',
MENURIGHT: 'dropdown-menu-right',
- MENULEFT: 'dropdown-menu-left'
+ MENULEFT: 'dropdown-menu-left',
+ POSITION_STATIC: 'position-static'
};
-
var Selector = {
DATA_TOGGLE: '[data-toggle="dropdown"]',
FORM_CHILD: '.dropdown form',
@@ -1460,25 +1454,25 @@ var Dropdown = function ($) {
NAVBAR_NAV: '.navbar-nav',
VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
};
-
var AttachmentMap = {
TOP: 'top-start',
TOPEND: 'top-end',
BOTTOM: 'bottom-start',
- BOTTOMEND: 'bottom-end'
+ BOTTOMEND: 'bottom-end',
+ RIGHT: 'right-start',
+ RIGHTEND: 'right-end',
+ LEFT: 'left-start',
+ LEFTEND: 'left-end'
};
-
var Default = {
- placement: AttachmentMap.BOTTOM,
offset: 0,
- flip: true
+ flip: true,
+ boundary: 'scrollParent'
};
-
var DefaultType = {
- placement: 'string',
- offset: '(number|string)',
- flip: 'boolean'
-
+ offset: '(number|string|function)',
+ flip: 'boolean',
+ boundary: '(string|element)'
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -1486,10 +1480,11 @@ var Dropdown = function ($) {
*/
};
- var Dropdown = function () {
- function Dropdown(element, config) {
- _classCallCheck(this, Dropdown);
+ var Dropdown =
+ /*#__PURE__*/
+ function () {
+ function Dropdown(element, config) {
this._element = element;
this._popper = null;
this._config = this._getConfig(config);
@@ -1497,19 +1492,20 @@ var Dropdown = function ($) {
this._inNavbar = this._detectNavbar();
this._addEventListeners();
- }
+ } // Getters
- // getters
- // public
+ var _proto = Dropdown.prototype;
- Dropdown.prototype.toggle = function toggle() {
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
+ // Public
+ _proto.toggle = function toggle() {
+ if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
return;
}
var parent = Dropdown._getParentFromElement(this._element);
- var isActive = $(this._menu).hasClass(ClassName.SHOW);
+
+ var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
Dropdown._clearMenus();
@@ -1520,146 +1516,177 @@ var Dropdown = function ($) {
var relatedTarget = {
relatedTarget: this._element
};
- var showEvent = $.Event(Event.SHOW, relatedTarget);
-
- $(parent).trigger(showEvent);
+ var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
+ $$$1(parent).trigger(showEvent);
if (showEvent.isDefaultPrevented()) {
return;
- }
+ } // Disable totally Popper.js for Dropdown in Navbar
- var element = this._element;
- // for dropup with alignment we use the parent as popper container
- if ($(parent).hasClass(ClassName.DROPUP)) {
- if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {
- element = parent;
+
+ if (!this._inNavbar) {
+ /**
+ * Check for Popper dependency
+ * Popper - https://popper.js.org
+ */
+ if (typeof Popper === 'undefined') {
+ throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
}
- }
- this._popper = new Popper(element, this._menu, this._getPopperConfig());
- // if this is a touch-enabled device we add extra
+ var element = this._element; // For dropup with alignment we use the parent as popper container
+
+ if ($$$1(parent).hasClass(ClassName.DROPUP)) {
+ if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
+ element = parent;
+ }
+ } // If boundary is not `scrollParent`, then set position to `static`
+ // to allow the menu to "escape" the scroll parent's boundaries
+ // https://github.com/twbs/bootstrap/issues/24251
+
+
+ if (this._config.boundary !== 'scrollParent') {
+ $$$1(parent).addClass(ClassName.POSITION_STATIC);
+ }
+
+ this._popper = new Popper(element, this._menu, this._getPopperConfig());
+ } // If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
- if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
- $('body').children().on('mouseover', null, $.noop);
+
+
+ if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
+ $$$1('body').children().on('mouseover', null, $$$1.noop);
}
this._element.focus();
+
this._element.setAttribute('aria-expanded', true);
- $(this._menu).toggleClass(ClassName.SHOW);
- $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
+ $$$1(this._menu).toggleClass(ClassName.SHOW);
+ $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
};
- Dropdown.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
- $(this._element).off(EVENT_KEY);
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ $$$1(this._element).off(EVENT_KEY);
this._element = null;
this._menu = null;
+
if (this._popper !== null) {
this._popper.destroy();
+
+ this._popper = null;
}
- this._popper = null;
};
- Dropdown.prototype.update = function update() {
+ _proto.update = function update() {
this._inNavbar = this._detectNavbar();
+
if (this._popper !== null) {
this._popper.scheduleUpdate();
}
- };
+ }; // Private
- // private
- Dropdown.prototype._addEventListeners = function _addEventListeners() {
- var _this9 = this;
+ _proto._addEventListeners = function _addEventListeners() {
+ var _this = this;
- $(this._element).on(Event.CLICK, function (event) {
+ $$$1(this._element).on(Event.CLICK, function (event) {
event.preventDefault();
event.stopPropagation();
- _this9.toggle();
+
+ _this.toggle();
});
};
- Dropdown.prototype._getConfig = function _getConfig(config) {
- var elementData = $(this._element).data();
- if (elementData.placement !== undefined) {
- elementData.placement = AttachmentMap[elementData.placement.toUpperCase()];
- }
-
- config = $.extend({}, this.constructor.Default, $(this._element).data(), config);
-
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config);
Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
-
return config;
};
- Dropdown.prototype._getMenuElement = function _getMenuElement() {
+ _proto._getMenuElement = function _getMenuElement() {
if (!this._menu) {
var parent = Dropdown._getParentFromElement(this._element);
- this._menu = $(parent).find(Selector.MENU)[0];
+
+ this._menu = $$$1(parent).find(Selector.MENU)[0];
}
+
return this._menu;
};
- Dropdown.prototype._getPlacement = function _getPlacement() {
- var $parentDropdown = $(this._element).parent();
- var placement = this._config.placement;
+ _proto._getPlacement = function _getPlacement() {
+ var $parentDropdown = $$$1(this._element).parent();
+ var placement = AttachmentMap.BOTTOM; // Handle dropup
- // Handle dropup
- if ($parentDropdown.hasClass(ClassName.DROPUP) || this._config.placement === AttachmentMap.TOP) {
+ if ($parentDropdown.hasClass(ClassName.DROPUP)) {
placement = AttachmentMap.TOP;
- if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
+
+ if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
placement = AttachmentMap.TOPEND;
}
- } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
+ } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
+ placement = AttachmentMap.RIGHT;
+ } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
+ placement = AttachmentMap.LEFT;
+ } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
placement = AttachmentMap.BOTTOMEND;
}
+
return placement;
};
- Dropdown.prototype._detectNavbar = function _detectNavbar() {
- return $(this._element).closest('.navbar').length > 0;
+ _proto._detectNavbar = function _detectNavbar() {
+ return $$$1(this._element).closest('.navbar').length > 0;
};
- Dropdown.prototype._getPopperConfig = function _getPopperConfig() {
+ _proto._getPopperConfig = function _getPopperConfig() {
+ var _this2 = this;
+
+ var offsetConf = {};
+
+ if (typeof this._config.offset === 'function') {
+ offsetConf.fn = function (data) {
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
+ return data;
+ };
+ } else {
+ offsetConf.offset = this._config.offset;
+ }
+
var popperConfig = {
placement: this._getPlacement(),
modifiers: {
- offset: {
- offset: this._config.offset
- },
+ offset: offsetConf,
flip: {
enabled: this._config.flip
+ },
+ preventOverflow: {
+ boundariesElement: this._config.boundary
}
}
-
- // Disable Popper.js for Dropdown in Navbar
- };if (this._inNavbar) {
- popperConfig.modifiers.applyStyle = {
- enabled: !this._inNavbar
- };
- }
+ };
return popperConfig;
- };
+ }; // Static
- // static
Dropdown._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null;
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' ? config : null;
if (!data) {
data = new Dropdown(this, _config);
- $(this).data(DATA_KEY, data);
+ $$$1(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
}
+
data[config]();
}
});
@@ -1670,10 +1697,12 @@ var Dropdown = function ($) {
return;
}
- var toggles = $.makeArray($(Selector.DATA_TOGGLE));
+ var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
+
for (var i = 0; i < toggles.length; i++) {
var parent = Dropdown._getParentFromElement(toggles[i]);
- var context = $(toggles[i]).data(DATA_KEY);
+
+ var context = $$$1(toggles[i]).data(DATA_KEY);
var relatedTarget = {
relatedTarget: toggles[i]
};
@@ -1683,85 +1712,94 @@ var Dropdown = function ($) {
}
var dropdownMenu = context._menu;
- if (!$(parent).hasClass(ClassName.SHOW)) {
+
+ if (!$$$1(parent).hasClass(ClassName.SHOW)) {
continue;
}
- if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
continue;
}
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
- $(parent).trigger(hideEvent);
+ var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
+ $$$1(parent).trigger(hideEvent);
+
if (hideEvent.isDefaultPrevented()) {
continue;
- }
-
- // if this is a touch-enabled device we remove the extra
+ } // If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
+
+
if ('ontouchstart' in document.documentElement) {
- $('body').children().off('mouseover', null, $.noop);
+ $$$1('body').children().off('mouseover', null, $$$1.noop);
}
toggles[i].setAttribute('aria-expanded', 'false');
-
- $(dropdownMenu).removeClass(ClassName.SHOW);
- $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
+ $$$1(dropdownMenu).removeClass(ClassName.SHOW);
+ $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
}
};
Dropdown._getParentFromElement = function _getParentFromElement(element) {
- var parent = void 0;
+ var parent;
var selector = Util.getSelectorFromElement(element);
if (selector) {
- parent = $(selector)[0];
+ parent = $$$1(selector)[0];
}
return parent || element.parentNode;
- };
+ }; // eslint-disable-next-line complexity
+
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
- if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) {
+ // If not input/textarea:
+ // - And not a key in REGEXP_KEYDOWN => not a dropdown command
+ // If input/textarea:
+ // - If space key => not a dropdown command
+ // - If key is other than escape
+ // - If key is not up or down => not a dropdown command
+ // - If trigger inside the menu => not a dropdown command
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
return;
}
event.preventDefault();
event.stopPropagation();
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
+ if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
return;
}
var parent = Dropdown._getParentFromElement(this);
- var isActive = $(parent).hasClass(ClassName.SHOW);
- if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
+ var isActive = $$$1(parent).hasClass(ClassName.SHOW);
+ if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
if (event.which === ESCAPE_KEYCODE) {
- var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
- $(toggle).trigger('focus');
+ var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
+ $$$1(toggle).trigger('focus');
}
- $(this).trigger('click');
+ $$$1(this).trigger('click');
return;
}
- var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
+ var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
- if (!items.length) {
+ if (items.length === 0) {
return;
}
var index = items.indexOf(event.target);
if (event.which === ARROW_UP_KEYCODE && index > 0) {
- // up
+ // Up
index--;
}
if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
- // down
+ // Down
index++;
}
@@ -1773,76 +1811,74 @@ var Dropdown = function ($) {
};
_createClass(Dropdown, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
}, {
- key: 'DefaultType',
+ key: "DefaultType",
get: function get() {
return DefaultType;
}
}]);
-
return Dropdown;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
- $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+
+ $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
event.preventDefault();
event.stopPropagation();
- Dropdown._jQueryInterface.call($(this), 'toggle');
+
+ Dropdown._jQueryInterface.call($$$1(this), 'toggle');
}).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
e.stopPropagation();
});
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Dropdown._jQueryInterface;
- $.fn[NAME].Constructor = Dropdown;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $$$1.fn[NAME] = Dropdown._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Dropdown;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Dropdown._jQueryInterface;
};
return Dropdown;
-}(jQuery);
+}($, Popper);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): modal.js
+ * Bootstrap (v4.0.0): modal.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Modal = function ($) {
-
+var Modal = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'modal';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.modal';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var TRANSITION_DURATION = 300;
var BACKDROP_TRANSITION_DURATION = 150;
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
@@ -1853,28 +1889,25 @@ var Modal = function ($) {
focus: true,
show: true
};
-
var DefaultType = {
backdrop: '(boolean|string)',
keyboard: 'boolean',
focus: 'boolean',
show: 'boolean'
};
-
var Event = {
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- FOCUSIN: 'focusin' + EVENT_KEY,
- RESIZE: 'resize' + EVENT_KEY,
- CLICK_DISMISS: 'click.dismiss' + EVENT_KEY,
- KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY,
- MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY,
- MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ RESIZE: "resize" + EVENT_KEY,
+ CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
+ KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
+ MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
+ MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
-
var ClassName = {
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
BACKDROP: 'modal-backdrop',
@@ -1882,14 +1915,13 @@ var Modal = function ($) {
FADE: 'fade',
SHOW: 'show'
};
-
var Selector = {
DIALOG: '.modal-dialog',
DATA_TOGGLE: '[data-toggle="modal"]',
DATA_DISMISS: '[data-dismiss="modal"]',
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
+ STICKY_CONTENT: '.sticky-top',
NAVBAR_TOGGLER: '.navbar-toggler'
-
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -1897,45 +1929,45 @@ var Modal = function ($) {
*/
};
- var Modal = function () {
- function Modal(element, config) {
- _classCallCheck(this, Modal);
+ var Modal =
+ /*#__PURE__*/
+ function () {
+ function Modal(element, config) {
this._config = this._getConfig(config);
this._element = element;
- this._dialog = $(element).find(Selector.DIALOG)[0];
+ this._dialog = $$$1(element).find(Selector.DIALOG)[0];
this._backdrop = null;
this._isShown = false;
this._isBodyOverflowing = false;
this._ignoreBackdropClick = false;
this._originalBodyPadding = 0;
this._scrollbarWidth = 0;
- }
+ } // Getters
- // getters
- // public
+ var _proto = Modal.prototype;
- Modal.prototype.toggle = function toggle(relatedTarget) {
+ // Public
+ _proto.toggle = function toggle(relatedTarget) {
return this._isShown ? this.hide() : this.show(relatedTarget);
};
- Modal.prototype.show = function show(relatedTarget) {
- var _this10 = this;
+ _proto.show = function show(relatedTarget) {
+ var _this = this;
- if (this._isTransitioning) {
+ if (this._isTransitioning || this._isShown) {
return;
}
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
this._isTransitioning = true;
}
- var showEvent = $.Event(Event.SHOW, {
+ var showEvent = $$$1.Event(Event.SHOW, {
relatedTarget: relatedTarget
});
-
- $(this._element).trigger(showEvent);
+ $$$1(this._element).trigger(showEvent);
if (this._isShown || showEvent.isDefaultPrevented()) {
return;
@@ -1944,32 +1976,35 @@ var Modal = function ($) {
this._isShown = true;
this._checkScrollbar();
+
this._setScrollbar();
- $(document.body).addClass(ClassName.OPEN);
+ this._adjustDialog();
+
+ $$$1(document.body).addClass(ClassName.OPEN);
this._setEscapeEvent();
+
this._setResizeEvent();
- $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
- return _this10.hide(event);
+ $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
+ return _this.hide(event);
});
-
- $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
- $(_this10._element).one(Event.MOUSEUP_DISMISS, function (event) {
- if ($(event.target).is(_this10._element)) {
- _this10._ignoreBackdropClick = true;
+ $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
+ $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
+ if ($$$1(event.target).is(_this._element)) {
+ _this._ignoreBackdropClick = true;
}
});
});
this._showBackdrop(function () {
- return _this10._showElement(relatedTarget);
+ return _this._showElement(relatedTarget);
});
};
- Modal.prototype.hide = function hide(event) {
- var _this11 = this;
+ _proto.hide = function hide(event) {
+ var _this2 = this;
if (event) {
event.preventDefault();
@@ -1979,47 +2014,41 @@ var Modal = function ($) {
return;
}
- var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
-
- if (transition) {
- this._isTransitioning = true;
- }
-
- var hideEvent = $.Event(Event.HIDE);
-
- $(this._element).trigger(hideEvent);
+ var hideEvent = $$$1.Event(Event.HIDE);
+ $$$1(this._element).trigger(hideEvent);
if (!this._isShown || hideEvent.isDefaultPrevented()) {
return;
}
this._isShown = false;
+ var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
- this._setEscapeEvent();
- this._setResizeEvent();
+ if (transition) {
+ this._isTransitioning = true;
+ }
- $(document).off(Event.FOCUSIN);
+ this._setEscapeEvent();
- $(this._element).removeClass(ClassName.SHOW);
+ this._setResizeEvent();
- $(this._element).off(Event.CLICK_DISMISS);
- $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
+ $$$1(document).off(Event.FOCUSIN);
+ $$$1(this._element).removeClass(ClassName.SHOW);
+ $$$1(this._element).off(Event.CLICK_DISMISS);
+ $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
if (transition) {
-
- $(this._element).one(Util.TRANSITION_END, function (event) {
- return _this11._hideModal(event);
+ $$$1(this._element).one(Util.TRANSITION_END, function (event) {
+ return _this2._hideModal(event);
}).emulateTransitionEnd(TRANSITION_DURATION);
} else {
this._hideModal();
}
};
- Modal.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
-
- $(window, document, this._element, this._backdrop).off(EVENT_KEY);
-
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
this._config = null;
this._element = null;
this._dialog = null;
@@ -2030,149 +2059,158 @@ var Modal = function ($) {
this._scrollbarWidth = null;
};
- Modal.prototype.handleUpdate = function handleUpdate() {
+ _proto.handleUpdate = function handleUpdate() {
this._adjustDialog();
- };
+ }; // Private
- // private
- Modal.prototype._getConfig = function _getConfig(config) {
- config = $.extend({}, Default, config);
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
Util.typeCheckConfig(NAME, config, DefaultType);
return config;
};
- Modal.prototype._showElement = function _showElement(relatedTarget) {
- var _this12 = this;
+ _proto._showElement = function _showElement(relatedTarget) {
+ var _this3 = this;
- var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
+ var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
- // don't move modals dom position
+ // Don't move modal's DOM position
document.body.appendChild(this._element);
}
this._element.style.display = 'block';
+
this._element.removeAttribute('aria-hidden');
+
this._element.scrollTop = 0;
if (transition) {
Util.reflow(this._element);
}
- $(this._element).addClass(ClassName.SHOW);
+ $$$1(this._element).addClass(ClassName.SHOW);
if (this._config.focus) {
this._enforceFocus();
}
- var shownEvent = $.Event(Event.SHOWN, {
+ var shownEvent = $$$1.Event(Event.SHOWN, {
relatedTarget: relatedTarget
});
var transitionComplete = function transitionComplete() {
- if (_this12._config.focus) {
- _this12._element.focus();
+ if (_this3._config.focus) {
+ _this3._element.focus();
}
- _this12._isTransitioning = false;
- $(_this12._element).trigger(shownEvent);
+
+ _this3._isTransitioning = false;
+ $$$1(_this3._element).trigger(shownEvent);
};
if (transition) {
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
+ $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
} else {
transitionComplete();
}
};
- Modal.prototype._enforceFocus = function _enforceFocus() {
- var _this13 = this;
+ _proto._enforceFocus = function _enforceFocus() {
+ var _this4 = this;
- $(document).off(Event.FOCUSIN) // guard against infinite focus loop
+ $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
.on(Event.FOCUSIN, function (event) {
- if (document !== event.target && _this13._element !== event.target && !$(_this13._element).has(event.target).length) {
- _this13._element.focus();
+ if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
+ _this4._element.focus();
}
});
};
- Modal.prototype._setEscapeEvent = function _setEscapeEvent() {
- var _this14 = this;
+ _proto._setEscapeEvent = function _setEscapeEvent() {
+ var _this5 = this;
if (this._isShown && this._config.keyboard) {
- $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
+ $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
if (event.which === ESCAPE_KEYCODE) {
event.preventDefault();
- _this14.hide();
+
+ _this5.hide();
}
});
} else if (!this._isShown) {
- $(this._element).off(Event.KEYDOWN_DISMISS);
+ $$$1(this._element).off(Event.KEYDOWN_DISMISS);
}
};
- Modal.prototype._setResizeEvent = function _setResizeEvent() {
- var _this15 = this;
+ _proto._setResizeEvent = function _setResizeEvent() {
+ var _this6 = this;
if (this._isShown) {
- $(window).on(Event.RESIZE, function (event) {
- return _this15.handleUpdate(event);
+ $$$1(window).on(Event.RESIZE, function (event) {
+ return _this6.handleUpdate(event);
});
} else {
- $(window).off(Event.RESIZE);
+ $$$1(window).off(Event.RESIZE);
}
};
- Modal.prototype._hideModal = function _hideModal() {
- var _this16 = this;
+ _proto._hideModal = function _hideModal() {
+ var _this7 = this;
this._element.style.display = 'none';
+
this._element.setAttribute('aria-hidden', true);
+
this._isTransitioning = false;
+
this._showBackdrop(function () {
- $(document.body).removeClass(ClassName.OPEN);
- _this16._resetAdjustments();
- _this16._resetScrollbar();
- $(_this16._element).trigger(Event.HIDDEN);
+ $$$1(document.body).removeClass(ClassName.OPEN);
+
+ _this7._resetAdjustments();
+
+ _this7._resetScrollbar();
+
+ $$$1(_this7._element).trigger(Event.HIDDEN);
});
};
- Modal.prototype._removeBackdrop = function _removeBackdrop() {
+ _proto._removeBackdrop = function _removeBackdrop() {
if (this._backdrop) {
- $(this._backdrop).remove();
+ $$$1(this._backdrop).remove();
this._backdrop = null;
}
};
- Modal.prototype._showBackdrop = function _showBackdrop(callback) {
- var _this17 = this;
+ _proto._showBackdrop = function _showBackdrop(callback) {
+ var _this8 = this;
- var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
+ var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
if (this._isShown && this._config.backdrop) {
var doAnimate = Util.supportsTransitionEnd() && animate;
-
this._backdrop = document.createElement('div');
this._backdrop.className = ClassName.BACKDROP;
if (animate) {
- $(this._backdrop).addClass(animate);
+ $$$1(this._backdrop).addClass(animate);
}
- $(this._backdrop).appendTo(document.body);
-
- $(this._element).on(Event.CLICK_DISMISS, function (event) {
- if (_this17._ignoreBackdropClick) {
- _this17._ignoreBackdropClick = false;
+ $$$1(this._backdrop).appendTo(document.body);
+ $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
+ if (_this8._ignoreBackdropClick) {
+ _this8._ignoreBackdropClick = false;
return;
}
+
if (event.target !== event.currentTarget) {
return;
}
- if (_this17._config.backdrop === 'static') {
- _this17._element.focus();
+
+ if (_this8._config.backdrop === 'static') {
+ _this8._element.focus();
} else {
- _this17.hide();
+ _this8.hide();
}
});
@@ -2180,7 +2218,7 @@ var Modal = function ($) {
Util.reflow(this._backdrop);
}
- $(this._backdrop).addClass(ClassName.SHOW);
+ $$$1(this._backdrop).addClass(ClassName.SHOW);
if (!callback) {
return;
@@ -2191,107 +2229,112 @@ var Modal = function ($) {
return;
}
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
} else if (!this._isShown && this._backdrop) {
- $(this._backdrop).removeClass(ClassName.SHOW);
+ $$$1(this._backdrop).removeClass(ClassName.SHOW);
var callbackRemove = function callbackRemove() {
- _this17._removeBackdrop();
+ _this8._removeBackdrop();
+
if (callback) {
callback();
}
};
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
+ $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
} else {
callbackRemove();
}
} else if (callback) {
callback();
}
- };
-
- // ----------------------------------------------------------------------
+ }; // ----------------------------------------------------------------------
// the following methods are used to handle overflowing modals
// todo (fat): these should probably be refactored out of modal.js
// ----------------------------------------------------------------------
- Modal.prototype._adjustDialog = function _adjustDialog() {
+
+ _proto._adjustDialog = function _adjustDialog() {
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
if (!this._isBodyOverflowing && isModalOverflowing) {
- this._element.style.paddingLeft = this._scrollbarWidth + 'px';
+ this._element.style.paddingLeft = this._scrollbarWidth + "px";
}
if (this._isBodyOverflowing && !isModalOverflowing) {
- this._element.style.paddingRight = this._scrollbarWidth + 'px';
+ this._element.style.paddingRight = this._scrollbarWidth + "px";
}
};
- Modal.prototype._resetAdjustments = function _resetAdjustments() {
+ _proto._resetAdjustments = function _resetAdjustments() {
this._element.style.paddingLeft = '';
this._element.style.paddingRight = '';
};
- Modal.prototype._checkScrollbar = function _checkScrollbar() {
- this._isBodyOverflowing = document.body.clientWidth < window.innerWidth;
+ _proto._checkScrollbar = function _checkScrollbar() {
+ var rect = document.body.getBoundingClientRect();
+ this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
this._scrollbarWidth = this._getScrollbarWidth();
};
- Modal.prototype._setScrollbar = function _setScrollbar() {
- var _this18 = this;
+ _proto._setScrollbar = function _setScrollbar() {
+ var _this9 = this;
if (this._isBodyOverflowing) {
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
-
// Adjust fixed content padding
- $(Selector.FIXED_CONTENT).each(function (index, element) {
- var actualPadding = $(element)[0].style.paddingRight;
- var calculatedPadding = $(element).css('padding-right');
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this18._scrollbarWidth + 'px');
- });
-
- // Adjust navbar-toggler margin
- $(Selector.NAVBAR_TOGGLER).each(function (index, element) {
- var actualMargin = $(element)[0].style.marginRight;
- var calculatedMargin = $(element).css('margin-right');
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this18._scrollbarWidth + 'px');
- });
+ $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
+ var actualPadding = $$$1(element)[0].style.paddingRight;
+ var calculatedPadding = $$$1(element).css('padding-right');
+ $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
+ }); // Adjust sticky content margin
+
+ $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
+ var actualMargin = $$$1(element)[0].style.marginRight;
+ var calculatedMargin = $$$1(element).css('margin-right');
+ $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
+ }); // Adjust navbar-toggler margin
+
+ $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
+ var actualMargin = $$$1(element)[0].style.marginRight;
+ var calculatedMargin = $$$1(element).css('margin-right');
+ $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
+ }); // Adjust body padding
- // Adjust body padding
var actualPadding = document.body.style.paddingRight;
- var calculatedPadding = $('body').css('padding-right');
- $('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + 'px');
+ var calculatedPadding = $$$1('body').css('padding-right');
+ $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
}
};
- Modal.prototype._resetScrollbar = function _resetScrollbar() {
+ _proto._resetScrollbar = function _resetScrollbar() {
// Restore fixed content padding
- $(Selector.FIXED_CONTENT).each(function (index, element) {
- var padding = $(element).data('padding-right');
+ $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
+ var padding = $$$1(element).data('padding-right');
+
if (typeof padding !== 'undefined') {
- $(element).css('padding-right', padding).removeData('padding-right');
+ $$$1(element).css('padding-right', padding).removeData('padding-right');
}
- });
+ }); // Restore sticky content and navbar-toggler margin
+
+ $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
+ var margin = $$$1(element).data('margin-right');
- // Restore navbar-toggler margin
- $(Selector.NAVBAR_TOGGLER).each(function (index, element) {
- var margin = $(element).data('margin-right');
if (typeof margin !== 'undefined') {
- $(element).css('margin-right', margin).removeData('margin-right');
+ $$$1(element).css('margin-right', margin).removeData('margin-right');
}
- });
+ }); // Restore body padding
+
+ var padding = $$$1('body').data('padding-right');
- // Restore body padding
- var padding = $('body').data('padding-right');
if (typeof padding !== 'undefined') {
- $('body').css('padding-right', padding).removeData('padding-right');
+ $$$1('body').css('padding-right', padding).removeData('padding-right');
}
};
- Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() {
+ _proto._getScrollbarWidth = function _getScrollbarWidth() {
// thx d.walsh
var scrollDiv = document.createElement('div');
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
@@ -2299,24 +2342,25 @@ var Modal = function ($) {
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
document.body.removeChild(scrollDiv);
return scrollbarWidth;
- };
+ }; // Static
- // static
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
if (!data) {
data = new Modal(this, _config);
- $(this).data(DATA_KEY, data);
+ $$$1(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
}
+
data[config](relatedTarget);
} else if (_config.show) {
data.show(relatedTarget);
@@ -2325,672 +2369,94 @@ var Modal = function ($) {
};
_createClass(Modal, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
}]);
-
return Modal;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
- var _this19 = this;
- var target = void 0;
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ var _this10 = this;
+
+ var target;
var selector = Util.getSelectorFromElement(this);
if (selector) {
- target = $(selector)[0];
+ target = $$$1(selector)[0];
}
- var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data());
+ var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
if (this.tagName === 'A' || this.tagName === 'AREA') {
event.preventDefault();
}
- var $target = $(target).one(Event.SHOW, function (showEvent) {
+ var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
if (showEvent.isDefaultPrevented()) {
- // only register focus restorer if modal will actually get shown
+ // Only register focus restorer if modal will actually get shown
return;
}
$target.one(Event.HIDDEN, function () {
- if ($(_this19).is(':visible')) {
- _this19.focus();
+ if ($$$1(_this10).is(':visible')) {
+ _this10.focus();
}
});
});
- Modal._jQueryInterface.call($(target), config, this);
+ Modal._jQueryInterface.call($$$1(target), config, this);
});
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Modal._jQueryInterface;
- $.fn[NAME].Constructor = Modal;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+ $$$1.fn[NAME] = Modal._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Modal;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Modal._jQueryInterface;
};
return Modal;
-}(jQuery);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): scrollspy.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-var ScrollSpy = function ($) {
-
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
-
- var NAME = 'scrollspy';
- var VERSION = '4.0.0-beta';
- var DATA_KEY = 'bs.scrollspy';
- var EVENT_KEY = '.' + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
-
- var Default = {
- offset: 10,
- method: 'auto',
- target: ''
- };
-
- var DefaultType = {
- offset: 'number',
- method: 'string',
- target: '(string|element)'
- };
-
- var Event = {
- ACTIVATE: 'activate' + EVENT_KEY,
- SCROLL: 'scroll' + EVENT_KEY,
- LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY
- };
-
- var ClassName = {
- DROPDOWN_ITEM: 'dropdown-item',
- DROPDOWN_MENU: 'dropdown-menu',
- ACTIVE: 'active'
- };
-
- var Selector = {
- DATA_SPY: '[data-spy="scroll"]',
- ACTIVE: '.active',
- NAV_LIST_GROUP: '.nav, .list-group',
- NAV_LINKS: '.nav-link',
- LIST_ITEMS: '.list-group-item',
- DROPDOWN: '.dropdown',
- DROPDOWN_ITEMS: '.dropdown-item',
- DROPDOWN_TOGGLE: '.dropdown-toggle'
- };
-
- var OffsetMethod = {
- OFFSET: 'offset',
- POSITION: 'position'
-
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
- var ScrollSpy = function () {
- function ScrollSpy(element, config) {
- var _this20 = this;
-
- _classCallCheck(this, ScrollSpy);
-
- this._element = element;
- this._scrollElement = element.tagName === 'BODY' ? window : element;
- this._config = this._getConfig(config);
- this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.LIST_ITEMS + ',') + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS);
- this._offsets = [];
- this._targets = [];
- this._activeTarget = null;
- this._scrollHeight = 0;
-
- $(this._scrollElement).on(Event.SCROLL, function (event) {
- return _this20._process(event);
- });
-
- this.refresh();
- this._process();
- }
-
- // getters
-
- // public
-
- ScrollSpy.prototype.refresh = function refresh() {
- var _this21 = this;
-
- var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;
-
- var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
-
- var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
-
- this._offsets = [];
- this._targets = [];
-
- this._scrollHeight = this._getScrollHeight();
-
- var targets = $.makeArray($(this._selector));
-
- targets.map(function (element) {
- var target = void 0;
- var targetSelector = Util.getSelectorFromElement(element);
-
- if (targetSelector) {
- target = $(targetSelector)[0];
- }
-
- if (target) {
- var targetBCR = target.getBoundingClientRect();
- if (targetBCR.width || targetBCR.height) {
- // todo (fat): remove sketch reliance on jQuery position/offset
- return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
- }
- }
- return null;
- }).filter(function (item) {
- return item;
- }).sort(function (a, b) {
- return a[0] - b[0];
- }).forEach(function (item) {
- _this21._offsets.push(item[0]);
- _this21._targets.push(item[1]);
- });
- };
-
- ScrollSpy.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
- $(this._scrollElement).off(EVENT_KEY);
-
- this._element = null;
- this._scrollElement = null;
- this._config = null;
- this._selector = null;
- this._offsets = null;
- this._targets = null;
- this._activeTarget = null;
- this._scrollHeight = null;
- };
-
- // private
-
- ScrollSpy.prototype._getConfig = function _getConfig(config) {
- config = $.extend({}, Default, config);
-
- if (typeof config.target !== 'string') {
- var id = $(config.target).attr('id');
- if (!id) {
- id = Util.getUID(NAME);
- $(config.target).attr('id', id);
- }
- config.target = '#' + id;
- }
-
- Util.typeCheckConfig(NAME, config, DefaultType);
-
- return config;
- };
-
- ScrollSpy.prototype._getScrollTop = function _getScrollTop() {
- return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
- };
-
- ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() {
- return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
- };
-
- ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() {
- return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
- };
-
- ScrollSpy.prototype._process = function _process() {
- var scrollTop = this._getScrollTop() + this._config.offset;
- var scrollHeight = this._getScrollHeight();
- var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
-
- if (this._scrollHeight !== scrollHeight) {
- this.refresh();
- }
-
- if (scrollTop >= maxScroll) {
- var target = this._targets[this._targets.length - 1];
-
- if (this._activeTarget !== target) {
- this._activate(target);
- }
- return;
- }
-
- if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
- this._activeTarget = null;
- this._clear();
- return;
- }
-
- for (var i = this._offsets.length; i--;) {
- var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]);
-
- if (isActiveTarget) {
- this._activate(this._targets[i]);
- }
- }
- };
-
- ScrollSpy.prototype._activate = function _activate(target) {
- this._activeTarget = target;
-
- this._clear();
-
- var queries = this._selector.split(',');
- queries = queries.map(function (selector) {
- return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]');
- });
-
- var $link = $(queries.join(','));
-
- if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
- $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
- $link.addClass(ClassName.ACTIVE);
- } else {
- // Set triggered link as active
- $link.addClass(ClassName.ACTIVE);
- // Set triggered links parents as active
- // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
- $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ', ' + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE);
- }
-
- $(this._scrollElement).trigger(Event.ACTIVATE, {
- relatedTarget: target
- });
- };
-
- ScrollSpy.prototype._clear = function _clear() {
- $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
- };
-
- // static
-
- ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config;
-
- if (!data) {
- data = new ScrollSpy(this, _config);
- $(this).data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
- }
- data[config]();
- }
- });
- };
-
- _createClass(ScrollSpy, null, [{
- key: 'VERSION',
- get: function get() {
- return VERSION;
- }
- }, {
- key: 'Default',
- get: function get() {
- return Default;
- }
- }]);
-
- return ScrollSpy;
- }();
-
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
- $(window).on(Event.LOAD_DATA_API, function () {
- var scrollSpys = $.makeArray($(Selector.DATA_SPY));
-
- for (var i = scrollSpys.length; i--;) {
- var $spy = $(scrollSpys[i]);
- ScrollSpy._jQueryInterface.call($spy, $spy.data());
- }
- });
-
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $.fn[NAME] = ScrollSpy._jQueryInterface;
- $.fn[NAME].Constructor = ScrollSpy;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
- return ScrollSpy._jQueryInterface;
- };
-
- return ScrollSpy;
-}(jQuery);
+}($);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): tab.js
+ * Bootstrap (v4.0.0): tooltip.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Tab = function ($) {
-
+var Tooltip = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
- var NAME = 'tab';
- var VERSION = '4.0.0-beta';
- var DATA_KEY = 'bs.tab';
- var EVENT_KEY = '.' + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $.fn[NAME];
- var TRANSITION_DURATION = 150;
-
- var Event = {
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
- };
-
- var ClassName = {
- DROPDOWN_MENU: 'dropdown-menu',
- ACTIVE: 'active',
- DISABLED: 'disabled',
- FADE: 'fade',
- SHOW: 'show'
- };
-
- var Selector = {
- DROPDOWN: '.dropdown',
- NAV_LIST_GROUP: '.nav, .list-group',
- ACTIVE: '.active',
- DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
- DROPDOWN_TOGGLE: '.dropdown-toggle',
- DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
-
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
- var Tab = function () {
- function Tab(element) {
- _classCallCheck(this, Tab);
-
- this._element = element;
- }
-
- // getters
-
- // public
-
- Tab.prototype.show = function show() {
- var _this22 = this;
-
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
- return;
- }
-
- var target = void 0;
- var previous = void 0;
- var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0];
- var selector = Util.getSelectorFromElement(this._element);
-
- if (listElement) {
- previous = $.makeArray($(listElement).find(Selector.ACTIVE));
- previous = previous[previous.length - 1];
- }
-
- var hideEvent = $.Event(Event.HIDE, {
- relatedTarget: this._element
- });
-
- var showEvent = $.Event(Event.SHOW, {
- relatedTarget: previous
- });
-
- if (previous) {
- $(previous).trigger(hideEvent);
- }
-
- $(this._element).trigger(showEvent);
-
- if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
- return;
- }
-
- if (selector) {
- target = $(selector)[0];
- }
-
- this._activate(this._element, listElement);
-
- var complete = function complete() {
- var hiddenEvent = $.Event(Event.HIDDEN, {
- relatedTarget: _this22._element
- });
-
- var shownEvent = $.Event(Event.SHOWN, {
- relatedTarget: previous
- });
-
- $(previous).trigger(hiddenEvent);
- $(_this22._element).trigger(shownEvent);
- };
-
- if (target) {
- this._activate(target, target.parentNode, complete);
- } else {
- complete();
- }
- };
-
- Tab.prototype.dispose = function dispose() {
- $.removeData(this._element, DATA_KEY);
- this._element = null;
- };
-
- // private
-
- Tab.prototype._activate = function _activate(element, container, callback) {
- var _this23 = this;
-
- var active = $(container).find(Selector.ACTIVE)[0];
- var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE);
-
- var complete = function complete() {
- return _this23._transitionComplete(element, active, isTransitioning, callback);
- };
-
- if (active && isTransitioning) {
- $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
- } else {
- complete();
- }
-
- if (active) {
- $(active).removeClass(ClassName.SHOW);
- }
- };
-
- Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
- if (active) {
- $(active).removeClass(ClassName.ACTIVE);
-
- var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
-
- if (dropdownChild) {
- $(dropdownChild).removeClass(ClassName.ACTIVE);
- }
-
- active.setAttribute('aria-expanded', false);
- }
-
- $(element).addClass(ClassName.ACTIVE);
- element.setAttribute('aria-expanded', true);
-
- if (isTransitioning) {
- Util.reflow(element);
- $(element).addClass(ClassName.SHOW);
- } else {
- $(element).removeClass(ClassName.FADE);
- }
-
- if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
-
- var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
- if (dropdownElement) {
- $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
- }
-
- element.setAttribute('aria-expanded', true);
- }
-
- if (callback) {
- callback();
- }
- };
-
- // static
-
- Tab._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var $this = $(this);
- var data = $this.data(DATA_KEY);
-
- if (!data) {
- data = new Tab(this);
- $this.data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
- }
- data[config]();
- }
- });
- };
-
- _createClass(Tab, null, [{
- key: 'VERSION',
- get: function get() {
- return VERSION;
- }
- }]);
-
- return Tab;
- }();
-
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
- event.preventDefault();
- Tab._jQueryInterface.call($(this), 'show');
- });
-
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $.fn[NAME] = Tab._jQueryInterface;
- $.fn[NAME].Constructor = Tab;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
- return Tab._jQueryInterface;
- };
-
- return Tab;
-}(jQuery);
-
-/* global Popper */
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): tooltip.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-var Tooltip = function ($) {
-
- /**
- * Check for Popper dependency
- * Popper - https://popper.js.org
- */
- if (typeof Popper === 'undefined') {
- throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)');
- }
-
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
-
var NAME = 'tooltip';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.tooltip';
- var EVENT_KEY = '.' + DATA_KEY;
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var EVENT_KEY = "." + DATA_KEY;
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var TRANSITION_DURATION = 150;
var CLASS_PREFIX = 'bs-tooltip';
- var BSCLS_PREFIX_REGEX = new RegExp('(^|\\s)' + CLASS_PREFIX + '\\S+', 'g');
-
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
var DefaultType = {
animation: 'boolean',
template: 'string',
@@ -3002,9 +2468,9 @@ var Tooltip = function ($) {
placement: '(string|function)',
offset: '(number|string)',
container: '(string|element|boolean)',
- fallbackPlacement: '(string|array)'
+ fallbackPlacement: '(string|array)',
+ boundary: '(string|element)'
};
-
var AttachmentMap = {
AUTO: 'auto',
TOP: 'top',
@@ -3012,7 +2478,6 @@ var Tooltip = function ($) {
BOTTOM: 'bottom',
LEFT: 'left'
};
-
var Default = {
animation: true,
template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
@@ -3024,44 +2489,39 @@ var Tooltip = function ($) {
placement: 'top',
offset: 0,
container: false,
- fallbackPlacement: 'flip'
+ fallbackPlacement: 'flip',
+ boundary: 'scrollParent'
};
-
var HoverState = {
SHOW: 'show',
OUT: 'out'
};
-
var Event = {
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- INSERTED: 'inserted' + EVENT_KEY,
- CLICK: 'click' + EVENT_KEY,
- FOCUSIN: 'focusin' + EVENT_KEY,
- FOCUSOUT: 'focusout' + EVENT_KEY,
- MOUSEENTER: 'mouseenter' + EVENT_KEY,
- MOUSELEAVE: 'mouseleave' + EVENT_KEY
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ INSERTED: "inserted" + EVENT_KEY,
+ CLICK: "click" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ FOCUSOUT: "focusout" + EVENT_KEY,
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY
};
-
var ClassName = {
FADE: 'fade',
SHOW: 'show'
};
-
var Selector = {
TOOLTIP: '.tooltip',
TOOLTIP_INNER: '.tooltip-inner',
ARROW: '.arrow'
};
-
var Trigger = {
HOVER: 'hover',
FOCUS: 'focus',
CLICK: 'click',
MANUAL: 'manual'
-
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -3069,49 +2529,61 @@ var Tooltip = function ($) {
*/
};
- var Tooltip = function () {
+
+ var Tooltip =
+ /*#__PURE__*/
+ function () {
function Tooltip(element, config) {
- _classCallCheck(this, Tooltip);
+ /**
+ * Check for Popper dependency
+ * Popper - https://popper.js.org
+ */
+ if (typeof Popper === 'undefined') {
+ throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
+ } // private
+
- // private
this._isEnabled = true;
this._timeout = 0;
this._hoverState = '';
this._activeTrigger = {};
- this._popper = null;
+ this._popper = null; // Protected
- // protected
this.element = element;
this.config = this._getConfig(config);
this.tip = null;
this._setListeners();
- }
+ } // Getters
- // getters
- // public
+ var _proto = Tooltip.prototype;
- Tooltip.prototype.enable = function enable() {
+ // Public
+ _proto.enable = function enable() {
this._isEnabled = true;
};
- Tooltip.prototype.disable = function disable() {
+ _proto.disable = function disable() {
this._isEnabled = false;
};
- Tooltip.prototype.toggleEnabled = function toggleEnabled() {
+ _proto.toggleEnabled = function toggleEnabled() {
this._isEnabled = !this._isEnabled;
};
- Tooltip.prototype.toggle = function toggle(event) {
+ _proto.toggle = function toggle(event) {
+ if (!this._isEnabled) {
+ return;
+ }
+
if (event) {
var dataKey = this.constructor.DATA_KEY;
- var context = $(event.currentTarget).data(dataKey);
+ var context = $$$1(event.currentTarget).data(dataKey);
if (!context) {
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $(event.currentTarget).data(dataKey, context);
+ $$$1(event.currentTarget).data(dataKey, context);
}
context._activeTrigger.click = !context._activeTrigger.click;
@@ -3122,9 +2594,9 @@ var Tooltip = function ($) {
context._leave(null, context);
}
} else {
-
- if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {
+ if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
this._leave(null, this);
+
return;
}
@@ -3132,44 +2604,43 @@ var Tooltip = function ($) {
}
};
- Tooltip.prototype.dispose = function dispose() {
+ _proto.dispose = function dispose() {
clearTimeout(this._timeout);
-
- $.removeData(this.element, this.constructor.DATA_KEY);
-
- $(this.element).off(this.constructor.EVENT_KEY);
- $(this.element).closest('.modal').off('hide.bs.modal');
+ $$$1.removeData(this.element, this.constructor.DATA_KEY);
+ $$$1(this.element).off(this.constructor.EVENT_KEY);
+ $$$1(this.element).closest('.modal').off('hide.bs.modal');
if (this.tip) {
- $(this.tip).remove();
+ $$$1(this.tip).remove();
}
this._isEnabled = null;
this._timeout = null;
this._hoverState = null;
this._activeTrigger = null;
+
if (this._popper !== null) {
this._popper.destroy();
}
- this._popper = null;
+ this._popper = null;
this.element = null;
this.config = null;
this.tip = null;
};
- Tooltip.prototype.show = function show() {
- var _this24 = this;
+ _proto.show = function show() {
+ var _this = this;
- if ($(this.element).css('display') === 'none') {
+ if ($$$1(this.element).css('display') === 'none') {
throw new Error('Please use show on visible elements');
}
- var showEvent = $.Event(this.constructor.Event.SHOW);
- if (this.isWithContent() && this._isEnabled) {
- $(this.element).trigger(showEvent);
+ var showEvent = $$$1.Event(this.constructor.Event.SHOW);
- var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element);
+ if (this.isWithContent() && this._isEnabled) {
+ $$$1(this.element).trigger(showEvent);
+ var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
if (showEvent.isDefaultPrevented() || !isInTheDom) {
return;
@@ -3177,31 +2648,27 @@ var Tooltip = function ($) {
var tip = this.getTipElement();
var tipId = Util.getUID(this.constructor.NAME);
-
tip.setAttribute('id', tipId);
this.element.setAttribute('aria-describedby', tipId);
-
this.setContent();
if (this.config.animation) {
- $(tip).addClass(ClassName.FADE);
+ $$$1(tip).addClass(ClassName.FADE);
}
var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
var attachment = this._getAttachment(placement);
- this.addAttachmentClass(attachment);
- var container = this.config.container === false ? document.body : $(this.config.container);
-
- $(tip).data(this.constructor.DATA_KEY, this);
+ this.addAttachmentClass(attachment);
+ var container = this.config.container === false ? document.body : $$$1(this.config.container);
+ $$$1(tip).data(this.constructor.DATA_KEY, this);
- if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
- $(tip).appendTo(container);
+ if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
+ $$$1(tip).appendTo(container);
}
- $(this.element).trigger(this.constructor.Event.INSERTED);
-
+ $$$1(this.element).trigger(this.constructor.Event.INSERTED);
this._popper = new Popper(this.element, tip, {
placement: attachment,
modifiers: {
@@ -3213,65 +2680,70 @@ var Tooltip = function ($) {
},
arrow: {
element: Selector.ARROW
+ },
+ preventOverflow: {
+ boundariesElement: this.config.boundary
}
},
onCreate: function onCreate(data) {
if (data.originalPlacement !== data.placement) {
- _this24._handlePopperPlacementChange(data);
+ _this._handlePopperPlacementChange(data);
}
},
onUpdate: function onUpdate(data) {
- _this24._handlePopperPlacementChange(data);
+ _this._handlePopperPlacementChange(data);
}
});
-
- $(tip).addClass(ClassName.SHOW);
-
- // if this is a touch-enabled device we add extra
+ $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
if ('ontouchstart' in document.documentElement) {
- $('body').children().on('mouseover', null, $.noop);
+ $$$1('body').children().on('mouseover', null, $$$1.noop);
}
var complete = function complete() {
- if (_this24.config.animation) {
- _this24._fixTransition();
+ if (_this.config.animation) {
+ _this._fixTransition();
}
- var prevHoverState = _this24._hoverState;
- _this24._hoverState = null;
- $(_this24.element).trigger(_this24.constructor.Event.SHOWN);
+ var prevHoverState = _this._hoverState;
+ _this._hoverState = null;
+ $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
if (prevHoverState === HoverState.OUT) {
- _this24._leave(null, _this24);
+ _this._leave(null, _this);
}
};
- if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
- $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
+ if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
+ $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
} else {
complete();
}
}
};
- Tooltip.prototype.hide = function hide(callback) {
- var _this25 = this;
+ _proto.hide = function hide(callback) {
+ var _this2 = this;
var tip = this.getTipElement();
- var hideEvent = $.Event(this.constructor.Event.HIDE);
+ var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
+
var complete = function complete() {
- if (_this25._hoverState !== HoverState.SHOW && tip.parentNode) {
+ if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
tip.parentNode.removeChild(tip);
}
- _this25._cleanTipClass();
- _this25.element.removeAttribute('aria-describedby');
- $(_this25.element).trigger(_this25.constructor.Event.HIDDEN);
- if (_this25._popper !== null) {
- _this25._popper.destroy();
+ _this2._cleanTipClass();
+
+ _this2.element.removeAttribute('aria-describedby');
+
+ $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
+
+ if (_this2._popper !== null) {
+ _this2._popper.destroy();
}
if (callback) {
@@ -3279,27 +2751,25 @@ var Tooltip = function ($) {
}
};
- $(this.element).trigger(hideEvent);
+ $$$1(this.element).trigger(hideEvent);
if (hideEvent.isDefaultPrevented()) {
return;
}
- $(tip).removeClass(ClassName.SHOW);
-
- // if this is a touch-enabled device we remove the extra
+ $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
+
if ('ontouchstart' in document.documentElement) {
- $('body').children().off('mouseover', null, $.noop);
+ $$$1('body').children().off('mouseover', null, $$$1.noop);
}
this._activeTrigger[Trigger.CLICK] = false;
this._activeTrigger[Trigger.FOCUS] = false;
this._activeTrigger[Trigger.HOVER] = false;
- if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
-
- $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
+ $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
} else {
complete();
}
@@ -3307,49 +2777,50 @@ var Tooltip = function ($) {
this._hoverState = '';
};
- Tooltip.prototype.update = function update() {
+ _proto.update = function update() {
if (this._popper !== null) {
this._popper.scheduleUpdate();
}
- };
+ }; // Protected
- // protected
- Tooltip.prototype.isWithContent = function isWithContent() {
+ _proto.isWithContent = function isWithContent() {
return Boolean(this.getTitle());
};
- Tooltip.prototype.addAttachmentClass = function addAttachmentClass(attachment) {
- $(this.getTipElement()).addClass(CLASS_PREFIX + '-' + attachment);
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
+ $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
};
- Tooltip.prototype.getTipElement = function getTipElement() {
- return this.tip = this.tip || $(this.config.template)[0];
+ _proto.getTipElement = function getTipElement() {
+ this.tip = this.tip || $$$1(this.config.template)[0];
+ return this.tip;
};
- Tooltip.prototype.setContent = function setContent() {
- var $tip = $(this.getTipElement());
+ _proto.setContent = function setContent() {
+ var $tip = $$$1(this.getTipElement());
this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
- $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW);
+ $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
};
- Tooltip.prototype.setElementContent = function setElementContent($element, content) {
+ _proto.setElementContent = function setElementContent($element, content) {
var html = this.config.html;
- if ((typeof content === 'undefined' ? 'undefined' : _typeof(content)) === 'object' && (content.nodeType || content.jquery)) {
- // content is a DOM node or a jQuery
+
+ if (typeof content === 'object' && (content.nodeType || content.jquery)) {
+ // Content is a DOM node or a jQuery
if (html) {
- if (!$(content).parent().is($element)) {
+ if (!$$$1(content).parent().is($element)) {
$element.empty().append(content);
}
} else {
- $element.text($(content).text());
+ $element.text($$$1(content).text());
}
} else {
$element[html ? 'html' : 'text'](content);
}
};
- Tooltip.prototype.getTitle = function getTitle() {
+ _proto.getTitle = function getTitle() {
var title = this.element.getAttribute('data-original-title');
if (!title) {
@@ -3357,42 +2828,39 @@ var Tooltip = function ($) {
}
return title;
- };
+ }; // Private
- // private
- Tooltip.prototype._getAttachment = function _getAttachment(placement) {
+ _proto._getAttachment = function _getAttachment(placement) {
return AttachmentMap[placement.toUpperCase()];
};
- Tooltip.prototype._setListeners = function _setListeners() {
- var _this26 = this;
+ _proto._setListeners = function _setListeners() {
+ var _this3 = this;
var triggers = this.config.trigger.split(' ');
-
triggers.forEach(function (trigger) {
if (trigger === 'click') {
- $(_this26.element).on(_this26.constructor.Event.CLICK, _this26.config.selector, function (event) {
- return _this26.toggle(event);
+ $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
+ return _this3.toggle(event);
});
} else if (trigger !== Trigger.MANUAL) {
- var eventIn = trigger === Trigger.HOVER ? _this26.constructor.Event.MOUSEENTER : _this26.constructor.Event.FOCUSIN;
- var eventOut = trigger === Trigger.HOVER ? _this26.constructor.Event.MOUSELEAVE : _this26.constructor.Event.FOCUSOUT;
-
- $(_this26.element).on(eventIn, _this26.config.selector, function (event) {
- return _this26._enter(event);
- }).on(eventOut, _this26.config.selector, function (event) {
- return _this26._leave(event);
+ var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
+ var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
+ $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
+ return _this3._enter(event);
+ }).on(eventOut, _this3.config.selector, function (event) {
+ return _this3._leave(event);
});
}
- $(_this26.element).closest('.modal').on('hide.bs.modal', function () {
- return _this26.hide();
+ $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
+ return _this3.hide();
});
});
if (this.config.selector) {
- this.config = $.extend({}, this.config, {
+ this.config = _extends({}, this.config, {
trigger: 'manual',
selector: ''
});
@@ -3401,35 +2869,34 @@ var Tooltip = function ($) {
}
};
- Tooltip.prototype._fixTitle = function _fixTitle() {
- var titleType = _typeof(this.element.getAttribute('data-original-title'));
+ _proto._fixTitle = function _fixTitle() {
+ var titleType = typeof this.element.getAttribute('data-original-title');
+
if (this.element.getAttribute('title') || titleType !== 'string') {
this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
this.element.setAttribute('title', '');
}
};
- Tooltip.prototype._enter = function _enter(event, context) {
+ _proto._enter = function _enter(event, context) {
var dataKey = this.constructor.DATA_KEY;
-
- context = context || $(event.currentTarget).data(dataKey);
+ context = context || $$$1(event.currentTarget).data(dataKey);
if (!context) {
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $(event.currentTarget).data(dataKey, context);
+ $$$1(event.currentTarget).data(dataKey, context);
}
if (event) {
context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
}
- if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
+ if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
context._hoverState = HoverState.SHOW;
return;
}
clearTimeout(context._timeout);
-
context._hoverState = HoverState.SHOW;
if (!context.config.delay || !context.config.delay.show) {
@@ -3444,14 +2911,13 @@ var Tooltip = function ($) {
}, context.config.delay.show);
};
- Tooltip.prototype._leave = function _leave(event, context) {
+ _proto._leave = function _leave(event, context) {
var dataKey = this.constructor.DATA_KEY;
-
- context = context || $(event.currentTarget).data(dataKey);
+ context = context || $$$1(event.currentTarget).data(dataKey);
if (!context) {
context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $(event.currentTarget).data(dataKey, context);
+ $$$1(event.currentTarget).data(dataKey, context);
}
if (event) {
@@ -3463,7 +2929,6 @@ var Tooltip = function ($) {
}
clearTimeout(context._timeout);
-
context._hoverState = HoverState.OUT;
if (!context.config.delay || !context.config.delay.hide) {
@@ -3478,7 +2943,7 @@ var Tooltip = function ($) {
}, context.config.delay.hide);
};
- Tooltip.prototype._isWithActiveTrigger = function _isWithActiveTrigger() {
+ _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
for (var trigger in this._activeTrigger) {
if (this._activeTrigger[trigger]) {
return true;
@@ -3488,30 +2953,29 @@ var Tooltip = function ($) {
return false;
};
- Tooltip.prototype._getConfig = function _getConfig(config) {
- config = $.extend({}, this.constructor.Default, $(this.element).data(), config);
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
- if (config.delay && typeof config.delay === 'number') {
+ if (typeof config.delay === 'number') {
config.delay = {
show: config.delay,
hide: config.delay
};
}
- if (config.title && typeof config.title === 'number') {
+ if (typeof config.title === 'number') {
config.title = config.title.toString();
}
- if (config.content && typeof config.content === 'number') {
+ if (typeof config.content === 'number') {
config.content = config.content.toString();
}
Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
-
return config;
};
- Tooltip.prototype._getDelegateConfig = function _getDelegateConfig() {
+ _proto._getDelegateConfig = function _getDelegateConfig() {
var config = {};
if (this.config) {
@@ -3525,38 +2989,42 @@ var Tooltip = function ($) {
return config;
};
- Tooltip.prototype._cleanTipClass = function _cleanTipClass() {
- var $tip = $(this.getTipElement());
+ _proto._cleanTipClass = function _cleanTipClass() {
+ var $tip = $$$1(this.getTipElement());
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
+
if (tabClass !== null && tabClass.length > 0) {
$tip.removeClass(tabClass.join(''));
}
};
- Tooltip.prototype._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
+ _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
this._cleanTipClass();
+
this.addAttachmentClass(this._getAttachment(data.placement));
};
- Tooltip.prototype._fixTransition = function _fixTransition() {
+ _proto._fixTransition = function _fixTransition() {
var tip = this.getTipElement();
var initConfigAnimation = this.config.animation;
+
if (tip.getAttribute('x-placement') !== null) {
return;
}
- $(tip).removeClass(ClassName.FADE);
+
+ $$$1(tip).removeClass(ClassName.FADE);
this.config.animation = false;
this.hide();
this.show();
this.config.animation = initConfigAnimation;
- };
+ }; // Static
- // static
Tooltip._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config;
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' && config;
if (!data && /dispose|hide/.test(config)) {
return;
@@ -3564,130 +3032,123 @@ var Tooltip = function ($) {
if (!data) {
data = new Tooltip(this, _config);
- $(this).data(DATA_KEY, data);
+ $$$1(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
}
+
data[config]();
}
});
};
_createClass(Tooltip, null, [{
- key: 'VERSION',
+ key: "VERSION",
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
}, {
- key: 'NAME',
+ key: "NAME",
get: function get() {
return NAME;
}
}, {
- key: 'DATA_KEY',
+ key: "DATA_KEY",
get: function get() {
return DATA_KEY;
}
}, {
- key: 'Event',
+ key: "Event",
get: function get() {
return Event;
}
}, {
- key: 'EVENT_KEY',
+ key: "EVENT_KEY",
get: function get() {
return EVENT_KEY;
}
}, {
- key: 'DefaultType',
+ key: "DefaultType",
get: function get() {
return DefaultType;
}
}]);
-
return Tooltip;
}();
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Tooltip._jQueryInterface;
- $.fn[NAME].Constructor = Tooltip;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+
+ $$$1.fn[NAME] = Tooltip._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Tooltip;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Tooltip._jQueryInterface;
};
return Tooltip;
-}(jQuery);
+}($, Popper);
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): popover.js
+ * Bootstrap (v4.0.0): popover.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-var Popover = function ($) {
-
+var Popover = function ($$$1) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'popover';
- var VERSION = '4.0.0-beta';
+ var VERSION = '4.0.0';
var DATA_KEY = 'bs.popover';
- var EVENT_KEY = '.' + DATA_KEY;
- var JQUERY_NO_CONFLICT = $.fn[NAME];
+ var EVENT_KEY = "." + DATA_KEY;
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
var CLASS_PREFIX = 'bs-popover';
- var BSCLS_PREFIX_REGEX = new RegExp('(^|\\s)' + CLASS_PREFIX + '\\S+', 'g');
-
- var Default = $.extend({}, Tooltip.Default, {
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
+ var Default = _extends({}, Tooltip.Default, {
placement: 'right',
trigger: 'click',
content: '',
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
});
-
- var DefaultType = $.extend({}, Tooltip.DefaultType, {
+ var DefaultType = _extends({}, Tooltip.DefaultType, {
content: '(string|element|function)'
});
-
var ClassName = {
FADE: 'fade',
SHOW: 'show'
};
-
var Selector = {
TITLE: '.popover-header',
CONTENT: '.popover-body'
};
-
var Event = {
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- INSERTED: 'inserted' + EVENT_KEY,
- CLICK: 'click' + EVENT_KEY,
- FOCUSIN: 'focusin' + EVENT_KEY,
- FOCUSOUT: 'focusout' + EVENT_KEY,
- MOUSEENTER: 'mouseenter' + EVENT_KEY,
- MOUSELEAVE: 'mouseleave' + EVENT_KEY
-
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ INSERTED: "inserted" + EVENT_KEY,
+ CLICK: "click" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ FOCUSOUT: "focusout" + EVENT_KEY,
+ MOUSEENTER: "mouseenter" + EVENT_KEY,
+ MOUSELEAVE: "mouseleave" + EVENT_KEY
/**
* ------------------------------------------------------------------------
* Class Definition
@@ -3695,59 +3156,67 @@ var Popover = function ($) {
*/
};
- var Popover = function (_Tooltip) {
- _inherits(Popover, _Tooltip);
- function Popover() {
- _classCallCheck(this, Popover);
+ var Popover =
+ /*#__PURE__*/
+ function (_Tooltip) {
+ _inheritsLoose(Popover, _Tooltip);
- return _possibleConstructorReturn(this, _Tooltip.apply(this, arguments));
+ function Popover() {
+ return _Tooltip.apply(this, arguments) || this;
}
- // overrides
+ var _proto = Popover.prototype;
- Popover.prototype.isWithContent = function isWithContent() {
+ // Overrides
+ _proto.isWithContent = function isWithContent() {
return this.getTitle() || this._getContent();
};
- Popover.prototype.addAttachmentClass = function addAttachmentClass(attachment) {
- $(this.getTipElement()).addClass(CLASS_PREFIX + '-' + attachment);
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
+ $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
};
- Popover.prototype.getTipElement = function getTipElement() {
- return this.tip = this.tip || $(this.config.template)[0];
+ _proto.getTipElement = function getTipElement() {
+ this.tip = this.tip || $$$1(this.config.template)[0];
+ return this.tip;
};
- Popover.prototype.setContent = function setContent() {
- var $tip = $(this.getTipElement());
+ _proto.setContent = function setContent() {
+ var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
- // we use append for html objects to maintain js events
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
- this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
- $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW);
- };
+ var content = this._getContent();
+
+ if (typeof content === 'function') {
+ content = content.call(this.element);
+ }
+
+ this.setElementContent($tip.find(Selector.CONTENT), content);
+ $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
+ }; // Private
- // private
- Popover.prototype._getContent = function _getContent() {
- return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
+ _proto._getContent = function _getContent() {
+ return this.element.getAttribute('data-content') || this.config.content;
};
- Popover.prototype._cleanTipClass = function _cleanTipClass() {
- var $tip = $(this.getTipElement());
+ _proto._cleanTipClass = function _cleanTipClass() {
+ var $tip = $$$1(this.getTipElement());
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
+
if (tabClass !== null && tabClass.length > 0) {
$tip.removeClass(tabClass.join(''));
}
- };
+ }; // Static
- // static
Popover._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null;
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' ? config : null;
if (!data && /destroy|hide/.test(config)) {
return;
@@ -3755,77 +3224,671 @@ var Popover = function ($) {
if (!data) {
data = new Popover(this, _config);
- $(this).data(DATA_KEY, data);
+ $$$1(this).data(DATA_KEY, data);
}
if (typeof config === 'string') {
- if (data[config] === undefined) {
- throw new Error('No method named "' + config + '"');
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
}
+
data[config]();
}
});
};
_createClass(Popover, null, [{
- key: 'VERSION',
-
-
- // getters
-
+ key: "VERSION",
+ // Getters
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
}, {
- key: 'NAME',
+ key: "NAME",
get: function get() {
return NAME;
}
}, {
- key: 'DATA_KEY',
+ key: "DATA_KEY",
get: function get() {
return DATA_KEY;
}
}, {
- key: 'Event',
+ key: "Event",
get: function get() {
return Event;
}
}, {
- key: 'EVENT_KEY',
+ key: "EVENT_KEY",
get: function get() {
return EVENT_KEY;
}
}, {
- key: 'DefaultType',
+ key: "DefaultType",
get: function get() {
return DefaultType;
}
}]);
-
return Popover;
}(Tooltip);
-
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
- $.fn[NAME] = Popover._jQueryInterface;
- $.fn[NAME].Constructor = Popover;
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT;
+
+ $$$1.fn[NAME] = Popover._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Popover;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
return Popover._jQueryInterface;
};
return Popover;
-}(jQuery);
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): scrollspy.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var ScrollSpy = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'scrollspy';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.scrollspy';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var Default = {
+ offset: 10,
+ method: 'auto',
+ target: ''
+ };
+ var DefaultType = {
+ offset: 'number',
+ method: 'string',
+ target: '(string|element)'
+ };
+ var Event = {
+ ACTIVATE: "activate" + EVENT_KEY,
+ SCROLL: "scroll" + EVENT_KEY,
+ LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ DROPDOWN_ITEM: 'dropdown-item',
+ DROPDOWN_MENU: 'dropdown-menu',
+ ACTIVE: 'active'
+ };
+ var Selector = {
+ DATA_SPY: '[data-spy="scroll"]',
+ ACTIVE: '.active',
+ NAV_LIST_GROUP: '.nav, .list-group',
+ NAV_LINKS: '.nav-link',
+ NAV_ITEMS: '.nav-item',
+ LIST_ITEMS: '.list-group-item',
+ DROPDOWN: '.dropdown',
+ DROPDOWN_ITEMS: '.dropdown-item',
+ DROPDOWN_TOGGLE: '.dropdown-toggle'
+ };
+ var OffsetMethod = {
+ OFFSET: 'offset',
+ POSITION: 'position'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var ScrollSpy =
+ /*#__PURE__*/
+ function () {
+ function ScrollSpy(element, config) {
+ var _this = this;
+
+ this._element = element;
+ this._scrollElement = element.tagName === 'BODY' ? window : element;
+ this._config = this._getConfig(config);
+ this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
+ this._offsets = [];
+ this._targets = [];
+ this._activeTarget = null;
+ this._scrollHeight = 0;
+ $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
+ return _this._process(event);
+ });
+ this.refresh();
+
+ this._process();
+ } // Getters
+
+
+ var _proto = ScrollSpy.prototype;
+
+ // Public
+ _proto.refresh = function refresh() {
+ var _this2 = this;
+
+ var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
+ var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
+ var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
+ this._offsets = [];
+ this._targets = [];
+ this._scrollHeight = this._getScrollHeight();
+ var targets = $$$1.makeArray($$$1(this._selector));
+ targets.map(function (element) {
+ var target;
+ var targetSelector = Util.getSelectorFromElement(element);
+
+ if (targetSelector) {
+ target = $$$1(targetSelector)[0];
+ }
+
+ if (target) {
+ var targetBCR = target.getBoundingClientRect();
+
+ if (targetBCR.width || targetBCR.height) {
+ // TODO (fat): remove sketch reliance on jQuery position/offset
+ return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
+ }
+ }
+
+ return null;
+ }).filter(function (item) {
+ return item;
+ }).sort(function (a, b) {
+ return a[0] - b[0];
+ }).forEach(function (item) {
+ _this2._offsets.push(item[0]);
+
+ _this2._targets.push(item[1]);
+ });
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ $$$1(this._scrollElement).off(EVENT_KEY);
+ this._element = null;
+ this._scrollElement = null;
+ this._config = null;
+ this._selector = null;
+ this._offsets = null;
+ this._targets = null;
+ this._activeTarget = null;
+ this._scrollHeight = null;
+ }; // Private
+
+
+ _proto._getConfig = function _getConfig(config) {
+ config = _extends({}, Default, config);
+
+ if (typeof config.target !== 'string') {
+ var id = $$$1(config.target).attr('id');
+
+ if (!id) {
+ id = Util.getUID(NAME);
+ $$$1(config.target).attr('id', id);
+ }
+
+ config.target = "#" + id;
+ }
+
+ Util.typeCheckConfig(NAME, config, DefaultType);
+ return config;
+ };
+
+ _proto._getScrollTop = function _getScrollTop() {
+ return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
+ };
+
+ _proto._getScrollHeight = function _getScrollHeight() {
+ return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
+ };
+
+ _proto._getOffsetHeight = function _getOffsetHeight() {
+ return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
+ };
+
+ _proto._process = function _process() {
+ var scrollTop = this._getScrollTop() + this._config.offset;
+
+ var scrollHeight = this._getScrollHeight();
+
+ var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
+
+ if (this._scrollHeight !== scrollHeight) {
+ this.refresh();
+ }
+
+ if (scrollTop >= maxScroll) {
+ var target = this._targets[this._targets.length - 1];
+
+ if (this._activeTarget !== target) {
+ this._activate(target);
+ }
+
+ return;
+ }
+
+ if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
+ this._activeTarget = null;
+
+ this._clear();
+
+ return;
+ }
+
+ for (var i = this._offsets.length; i--;) {
+ var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
+
+ if (isActiveTarget) {
+ this._activate(this._targets[i]);
+ }
+ }
+ };
+
+ _proto._activate = function _activate(target) {
+ this._activeTarget = target;
+
+ this._clear();
+
+ var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
+
+
+ queries = queries.map(function (selector) {
+ return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
+ });
+ var $link = $$$1(queries.join(','));
+
+ if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
+ $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
+ $link.addClass(ClassName.ACTIVE);
+ } else {
+ // Set triggered link as active
+ $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
+ // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
+
+ $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
+
+ $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
+ }
+
+ $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
+ relatedTarget: target
+ });
+ };
+
+ _proto._clear = function _clear() {
+ $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
+ }; // Static
+
+
+ ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var data = $$$1(this).data(DATA_KEY);
+
+ var _config = typeof config === 'object' && config;
+
+ if (!data) {
+ data = new ScrollSpy(this, _config);
+ $$$1(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(ScrollSpy, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }, {
+ key: "Default",
+ get: function get() {
+ return Default;
+ }
+ }]);
+ return ScrollSpy;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(window).on(Event.LOAD_DATA_API, function () {
+ var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
+
+ for (var i = scrollSpys.length; i--;) {
+ var $spy = $$$1(scrollSpys[i]);
+
+ ScrollSpy._jQueryInterface.call($spy, $spy.data());
+ }
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
+ $$$1.fn[NAME].Constructor = ScrollSpy;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return ScrollSpy._jQueryInterface;
+ };
+
+ return ScrollSpy;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0): tab.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+var Tab = function ($$$1) {
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+ var NAME = 'tab';
+ var VERSION = '4.0.0';
+ var DATA_KEY = 'bs.tab';
+ var EVENT_KEY = "." + DATA_KEY;
+ var DATA_API_KEY = '.data-api';
+ var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
+ var TRANSITION_DURATION = 150;
+ var Event = {
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
+ };
+ var ClassName = {
+ DROPDOWN_MENU: 'dropdown-menu',
+ ACTIVE: 'active',
+ DISABLED: 'disabled',
+ FADE: 'fade',
+ SHOW: 'show'
+ };
+ var Selector = {
+ DROPDOWN: '.dropdown',
+ NAV_LIST_GROUP: '.nav, .list-group',
+ ACTIVE: '.active',
+ ACTIVE_UL: '> li > .active',
+ DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
+ DROPDOWN_TOGGLE: '.dropdown-toggle',
+ DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+ };
+
+ var Tab =
+ /*#__PURE__*/
+ function () {
+ function Tab(element) {
+ this._element = element;
+ } // Getters
+
+
+ var _proto = Tab.prototype;
+
+ // Public
+ _proto.show = function show() {
+ var _this = this;
+
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) {
+ return;
+ }
+
+ var target;
+ var previous;
+ var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0];
+ var selector = Util.getSelectorFromElement(this._element);
+
+ if (listElement) {
+ var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
+ previous = $$$1.makeArray($$$1(listElement).find(itemSelector));
+ previous = previous[previous.length - 1];
+ }
+
+ var hideEvent = $$$1.Event(Event.HIDE, {
+ relatedTarget: this._element
+ });
+ var showEvent = $$$1.Event(Event.SHOW, {
+ relatedTarget: previous
+ });
+
+ if (previous) {
+ $$$1(previous).trigger(hideEvent);
+ }
+
+ $$$1(this._element).trigger(showEvent);
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
+ return;
+ }
-})(); \ No newline at end of file
+ if (selector) {
+ target = $$$1(selector)[0];
+ }
+
+ this._activate(this._element, listElement);
+
+ var complete = function complete() {
+ var hiddenEvent = $$$1.Event(Event.HIDDEN, {
+ relatedTarget: _this._element
+ });
+ var shownEvent = $$$1.Event(Event.SHOWN, {
+ relatedTarget: previous
+ });
+ $$$1(previous).trigger(hiddenEvent);
+ $$$1(_this._element).trigger(shownEvent);
+ };
+
+ if (target) {
+ this._activate(target, target.parentNode, complete);
+ } else {
+ complete();
+ }
+ };
+
+ _proto.dispose = function dispose() {
+ $$$1.removeData(this._element, DATA_KEY);
+ this._element = null;
+ }; // Private
+
+
+ _proto._activate = function _activate(element, container, callback) {
+ var _this2 = this;
+
+ var activeElements;
+
+ if (container.nodeName === 'UL') {
+ activeElements = $$$1(container).find(Selector.ACTIVE_UL);
+ } else {
+ activeElements = $$$1(container).children(Selector.ACTIVE);
+ }
+
+ var active = activeElements[0];
+ var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE);
+
+ var complete = function complete() {
+ return _this2._transitionComplete(element, active, callback);
+ };
+
+ if (active && isTransitioning) {
+ $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ complete();
+ }
+ };
+
+ _proto._transitionComplete = function _transitionComplete(element, active, callback) {
+ if (active) {
+ $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
+ var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
+
+ if (dropdownChild) {
+ $$$1(dropdownChild).removeClass(ClassName.ACTIVE);
+ }
+
+ if (active.getAttribute('role') === 'tab') {
+ active.setAttribute('aria-selected', false);
+ }
+ }
+
+ $$$1(element).addClass(ClassName.ACTIVE);
+
+ if (element.getAttribute('role') === 'tab') {
+ element.setAttribute('aria-selected', true);
+ }
+
+ Util.reflow(element);
+ $$$1(element).addClass(ClassName.SHOW);
+
+ if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
+ var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
+
+ if (dropdownElement) {
+ $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
+ }
+
+ element.setAttribute('aria-expanded', true);
+ }
+
+ if (callback) {
+ callback();
+ }
+ }; // Static
+
+
+ Tab._jQueryInterface = function _jQueryInterface(config) {
+ return this.each(function () {
+ var $this = $$$1(this);
+ var data = $this.data(DATA_KEY);
+
+ if (!data) {
+ data = new Tab(this);
+ $this.data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new TypeError("No method named \"" + config + "\"");
+ }
+
+ data[config]();
+ }
+ });
+ };
+
+ _createClass(Tab, null, [{
+ key: "VERSION",
+ get: function get() {
+ return VERSION;
+ }
+ }]);
+ return Tab;
+ }();
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+ $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
+ event.preventDefault();
+
+ Tab._jQueryInterface.call($$$1(this), 'show');
+ });
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+ $$$1.fn[NAME] = Tab._jQueryInterface;
+ $$$1.fn[NAME].Constructor = Tab;
+
+ $$$1.fn[NAME].noConflict = function () {
+ $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
+ return Tab._jQueryInterface;
+ };
+
+ return Tab;
+}($);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v4.0.0-alpha.6): index.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+(function ($$$1) {
+ if (typeof $$$1 === 'undefined') {
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
+ }
+
+ var version = $$$1.fn.jquery.split(' ')[0].split('.');
+ var minMajor = 1;
+ var ltMajor = 2;
+ var minMinor = 9;
+ var minPatch = 1;
+ var maxMajor = 4;
+
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
+ }
+})($);
+
+exports.Util = Util;
+exports.Alert = Alert;
+exports.Button = Button;
+exports.Carousel = Carousel;
+exports.Collapse = Collapse;
+exports.Dropdown = Dropdown;
+exports.Modal = Modal;
+exports.Popover = Popover;
+exports.Scrollspy = ScrollSpy;
+exports.Tab = Tab;
+exports.Tooltip = Tooltip;
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=bootstrap.js.map
diff --git a/library/bootstrap/js/bootstrap.js.map b/library/bootstrap/js/bootstrap.js.map
new file mode 100644
index 000000000..cafe4cb3d
--- /dev/null
+++ b/library/bootstrap/js/bootstrap.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap.js","sources":["../../rollupPluginBabelHelpers","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"sourcesContent":["export { _createClass as createClass, _extends as extends, _inheritsLoose as inheritsLoose };\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let transition = false\n\n const MAX_UID = 1000000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n }\n\n function transitionEndTest() {\n if (typeof window !== 'undefined' && window.QUnit) {\n return false\n }\n\n return {\n end: 'transitionend'\n }\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest()\n\n $.fn.emulateTransitionEnd = transitionEndEmulator\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n }\n\n function escapeId(selector) {\n // We escape IDs in case of special selectors (selector = '#myId:something')\n // $.escapeSelector does not exist in jQuery < 3\n selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1)\n : selector.replace(/(:|\\.|\\[|\\]|,|=|@)/g, '\\\\$1')\n\n return selector\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n // If it's an ID\n if (selector.charAt(0) === '#') {\n selector = escapeId(selector)\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? selector : null\n } catch (err) {\n return null\n }\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(transition.end)\n },\n\n supportsTransitionEnd() {\n return Boolean(transition)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n }\n }\n\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n element = element || this._element\n\n const rootElement = this._getRootElement(element)\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!Util.supportsTransitionEnd() ||\n !$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n Util.supportsTransitionEnd()) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $(this._indicatorsElement)\n .find(Selector.ACTIVE)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n $(Selector.DATA_RIDE).each(function () {\n const $carousel = $(this)\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\n )\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(selector)\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n $(selector).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n }\n\n const Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'\n }\n\n const AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n }\n\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n }\n let element = this._element\n // For dropup with alignment we use the parent as popper container\n if ($(parent).hasClass(ClassName.DROPUP)) {\n if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {\n element = parent\n }\n }\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(element, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n this._menu = $(parent).find(Selector.MENU)[0]\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element).parent()\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n for (let i = 0; i < toggles.length; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Dropdown._jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 300\n const BACKDROP_TRANSITION_DURATION = 150\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top',\n NAVBAR_TOGGLER : '.navbar-toggler'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._originalBodyPadding = 0\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isTransitioning || this._isShown) {\n return\n }\n\n if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (this._isTransitioning || !this._isShown) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n\n const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n if (transition) {\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n const doAnimate = Util.supportsTransitionEnd() && animate\n\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n $(this._backdrop).addClass(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (doAnimate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!doAnimate) {\n callback()\n return\n }\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)) {\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const actualPadding = $(element)[0].style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(Selector.STICKY_CONTENT).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust navbar-toggler margin\n $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $('body').css('padding-right')\n $('body').data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const padding = $(element).data('padding-right')\n if (typeof padding !== 'undefined') {\n $(element).css('padding-right', padding).removeData('padding-right')\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $('body').data('padding-right')\n if (typeof padding !== 'undefined') {\n $('body').css('padding-right', padding).removeData('padding-right')\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Modal.Default,\n ...$(this).data(),\n ...typeof config === 'object' && config\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = $(selector)[0]\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const isInTheDom = $.contains(\n this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this.config.container === false ? document.body : $(this.config.container)\n\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => {\n this._handlePopperPlacementChange(data)\n }\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(Tooltip._TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if (Util.supportsTransitionEnd() &&\n $(this.tip).hasClass(ClassName.FADE)) {\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : 'text'](content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\n ...config\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(data) {\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(data.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tooltip._jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Popover._jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $(queries.join(','))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n for (let i = scrollSpys.length; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = $(selector)[0]\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n let activeElements\n if (container.nodeName === 'UL') {\n activeElements = $(container).find(Selector.ACTIVE_UL)\n } else {\n activeElements = $(container).children(Selector.ACTIVE)\n }\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n Util.supportsTransitionEnd() &&\n (active && $(active).hasClass(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n $(element).addClass(ClassName.SHOW)\n\n if (element.parentNode &&\n $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n if (dropdownElement) {\n $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})($)\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"],"names":["Util","$","transition","MAX_UID","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","end","event","target","is","handleObj","handler","apply","arguments","undefined","transitionEndTest","window","QUnit","transitionEndEmulator","duration","called","one","TRANSITION_END","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","supportsTransitionEnd","special","escapeId","selector","escapeSelector","substr","replace","prefix","Math","random","document","getElementById","element","getAttribute","charAt","$selector","find","length","err","offsetHeight","trigger","Boolean","nodeType","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","isElement","RegExp","test","Error","toUpperCase","Alert","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","TRANSITION_DURATION","Selector","Event","ClassName","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","getSelectorFromElement","parent","closest","ALERT","closeEvent","CLOSE","removeClass","SHOW","hasClass","FADE","_destroyElement","detach","CLOSED","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","CLICK_DATA_API","DISMISS","Constructor","noConflict","Button","toggle","triggerChangeEvent","addAriaPressed","DATA_TOGGLE","input","INPUT","type","checked","ACTIVE","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","DATA_TOGGLE_CARROT","button","BUTTON","FOCUS_BLUR_DATA_API","FOCUS","Carousel","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","Default","DefaultType","Direction","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","INDICATORS","_addEventListeners","next","_slide","NEXT","nextWhenVisible","hidden","css","prev","PREV","pause","NEXT_PREV","cycle","interval","setInterval","visibilityState","bind","to","index","ACTIVE_ITEM","activeIndex","_getItemIndex","SLID","direction","off","typeCheckConfig","keyboard","KEYDOWN","_keydown","MOUSEENTER","MOUSELEAVE","documentElement","TOUCHEND","setTimeout","tagName","which","makeArray","ITEM","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","wrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","SLIDE","_setActiveIndicatorElement","nextIndicator","children","addClass","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","LEFT","RIGHT","slidEvent","reflow","action","slide","TypeError","_dataApiClickHandler","CAROUSEL","slideIndex","DATA_SLIDE","LOAD_DATA_API","DATA_RIDE","$carousel","Collapse","Dimension","_isTransitioning","_triggerArray","id","tabToggles","i","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","ACTIVES","not","startEvent","dimension","_getDimension","COLLAPSE","COLLAPSING","style","COLLAPSED","attr","setTransitioning","complete","SHOWN","capitalizedDimension","slice","scrollSize","HIDE","getBoundingClientRect","$elem","HIDDEN","isTransitioning","hasWidth","WIDTH","HEIGHT","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","Dropdown","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","AttachmentMap","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","DISABLED","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","DROPUP","MENULEFT","MENURIGHT","boundary","POSITION_STATIC","_getPopperConfig","NAVBAR_NAV","noop","destroy","update","scheduleUpdate","CLICK","stopPropagation","constructor","MENU","_getPlacement","$parentDropdown","placement","BOTTOM","TOP","TOPEND","DROPRIGHT","DROPLEFT","BOTTOMEND","offsetConf","offset","offsets","popperConfig","flip","toggles","context","dropdownMenu","hideEvent","parentNode","_dataApiKeydownHandler","items","VISIBLE_ITEMS","get","KEYDOWN_DATA_API","KEYUP_DATA_API","FORM_CHILD","e","Modal","BACKDROP_TRANSITION_DURATION","_dialog","DIALOG","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_originalBodyPadding","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","body","OPEN","_setEscapeEvent","_setResizeEvent","CLICK_DISMISS","DATA_DISMISS","MOUSEDOWN_DISMISS","MOUSEUP_DISMISS","_showBackdrop","_showElement","FOCUSIN","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","display","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","has","KEYDOWN_DISMISS","RESIZE","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","animate","backdrop","doAnimate","createElement","className","BACKDROP","appendTo","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","FIXED_CONTENT","actualPadding","calculatedPadding","parseFloat","STICKY_CONTENT","actualMargin","marginRight","calculatedMargin","NAVBAR_TOGGLER","padding","margin","scrollDiv","SCROLLBAR_MEASURER","scrollbarWidth","width","clientWidth","removeChild","Tooltip","CLASS_PREFIX","BSCLS_PREFIX_REGEX","HoverState","Trigger","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","getUID","setContent","animation","attachment","_getAttachment","addAttachmentClass","container","INSERTED","fallbackPlacement","ARROW","originalPlacement","_handlePopperPlacementChange","_fixTransition","prevHoverState","OUT","_TRANSITION_DURATION","_cleanTipClass","HOVER","getTitle","template","$tip","setElementContent","TOOLTIP_INNER","content","html","empty","append","text","title","triggers","split","forEach","MANUAL","eventIn","eventOut","FOCUSOUT","_fixTitle","titleType","delay","key","tabClass","join","initConfigAnimation","Popover","_getContent","TITLE","CONTENT","ScrollSpy","OffsetMethod","_scrollElement","NAV_LINKS","LIST_ITEMS","DROPDOWN_ITEMS","_offsets","_targets","_activeTarget","_scrollHeight","SCROLL","_process","refresh","autoMethod","OFFSET","POSITION","offsetMethod","method","offsetBase","_getScrollTop","_getScrollHeight","targets","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","$link","DROPDOWN_ITEM","DROPDOWN","DROPDOWN_TOGGLE","parents","NAV_LIST_GROUP","NAV_ITEMS","ACTIVATE","scrollSpys","DATA_SPY","$spy","Tab","previous","listElement","itemSelector","nodeName","ACTIVE_UL","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","DROPDOWN_ACTIVE_CHILD","DROPDOWN_MENU","dropdownElement","version","minMajor","ltMajor","minMinor","minPatch","maxMajor"],"mappings":";;;;;;;;;;;;;;AAEA,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;EACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;IACvD,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;IAC/B,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;GAC3D;CACF;;AAED,SAAS,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;EAC1D,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;EACrE,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EAC7D,OAAO,WAAW,CAAC;CACpB;;AAED,SAAS,QAAQ,GAAG;EAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACzC,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;MAE1B,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;UACrD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3B;OACF;KACF;;IAED,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACxC;;AAED,SAAS,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;EAC5C,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACzD,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;EAC1C,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC;;;CACjC,DCtCD;;;;;;;AAOA,IAAMA,OAAQ,UAACC,IAAD,EAAO;;;;;;MAOfC,aAAa,KAAjB;MAEMC,UAAU,OAAhB,CATmB;;WAYVC,MAAT,CAAgBC,GAAhB,EAAqB;WACZ,GAAGC,QAAH,CAAYC,IAAZ,CAAiBF,GAAjB,EAAsBG,KAAtB,CAA4B,eAA5B,EAA6C,CAA7C,EAAgDC,WAAhD,EAAP;;;WAGOC,4BAAT,GAAwC;WAC/B;gBACKR,WAAWS,GADhB;oBAEST,WAAWS,GAFpB;YAAA,kBAGEC,KAHF,EAGS;YACRX,KAAEW,MAAMC,MAAR,EAAgBC,EAAhB,CAAmB,IAAnB,CAAJ,EAA8B;iBACrBF,MAAMG,SAAN,CAAgBC,OAAhB,CAAwBC,KAAxB,CAA8B,IAA9B,EAAoCC,SAApC,CAAP,CAD4B;;;eAGvBC,SAAP,CAJY;;KAHhB;;;WAYOC,iBAAT,GAA6B;QACvB,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,OAAOC,KAA5C,EAAmD;aAC1C,KAAP;;;WAGK;WACA;KADP;;;WAKOC,qBAAT,CAA+BC,QAA/B,EAAyC;;;QACnCC,SAAS,KAAb;SAEE,IAAF,EAAQC,GAAR,CAAY1B,KAAK2B,cAAjB,EAAiC,YAAM;eAC5B,IAAT;KADF;eAIW,YAAM;UACX,CAACF,MAAL,EAAa;aACNG,oBAAL;;KAFJ,EAIGJ,QAJH;WAMO,IAAP;;;WAGOK,uBAAT,GAAmC;iBACpBT,mBAAb;SAEEU,EAAF,CAAKC,oBAAL,GAA4BR,qBAA5B;;QAEIvB,KAAKgC,qBAAL,EAAJ,EAAkC;WAC9BpB,KAAF,CAAQqB,OAAR,CAAgBjC,KAAK2B,cAArB,IAAuCjB,8BAAvC;;;;WAIKwB,QAAT,CAAkBC,QAAlB,EAA4B;;;eAGf,OAAOlC,KAAEmC,cAAT,KAA4B,UAA5B,GAAyCnC,KAAEmC,cAAF,CAAiBD,QAAjB,EAA2BE,MAA3B,CAAkC,CAAlC,CAAzC,GACPF,SAASG,OAAT,CAAiB,qBAAjB,EAAwC,MAAxC,CADJ;WAGOH,QAAP;;;;;;;;;MASInC,OAAO;oBAEK,iBAFL;UAAA,kBAIJuC,MAJI,EAII;SACV;;kBAES,CAAC,EAAEC,KAAKC,MAAL,KAAgBtC,OAAlB,CAAX,CAFC;OAAH,QAGSuC,SAASC,cAAT,CAAwBJ,MAAxB,CAHT;;aAIOA,MAAP;KATS;0BAAA,kCAYYK,OAZZ,EAYqB;UAC1BT,WAAWS,QAAQC,YAAR,CAAqB,aAArB,CAAf;;UACI,CAACV,QAAD,IAAaA,aAAa,GAA9B,EAAmC;mBACtBS,QAAQC,YAAR,CAAqB,MAArB,KAAgC,EAA3C;OAH4B;;;UAO1BV,SAASW,MAAT,CAAgB,CAAhB,MAAuB,GAA3B,EAAgC;mBACnBZ,SAASC,QAAT,CAAX;;;UAGE;YACIY,YAAY9C,KAAEyC,QAAF,EAAYM,IAAZ,CAAiBb,QAAjB,CAAlB;eACOY,UAAUE,MAAV,GAAmB,CAAnB,GAAuBd,QAAvB,GAAkC,IAAzC;OAFF,CAGE,OAAOe,GAAP,EAAY;eACL,IAAP;;KA3BO;UAAA,kBA+BJN,OA/BI,EA+BK;aACPA,QAAQO,YAAf;KAhCS;wBAAA,gCAmCUP,OAnCV,EAmCmB;WAC1BA,OAAF,EAAWQ,OAAX,CAAmBlD,WAAWS,GAA9B;KApCS;yBAAA,mCAuCa;aACf0C,QAAQnD,UAAR,CAAP;KAxCS;aAAA,qBA2CDG,GA3CC,EA2CI;aACN,CAACA,IAAI,CAAJ,KAAUA,GAAX,EAAgBiD,QAAvB;KA5CS;mBAAA,2BA+CKC,aA/CL,EA+CoBC,MA/CpB,EA+C4BC,WA/C5B,EA+CyC;WAC7C,IAAMC,QAAX,IAAuBD,WAAvB,EAAoC;YAC9BE,OAAOC,SAAP,CAAiBC,cAAjB,CAAgCtD,IAAhC,CAAqCkD,WAArC,EAAkDC,QAAlD,CAAJ,EAAiE;cACzDI,gBAAgBL,YAAYC,QAAZ,CAAtB;cACMK,QAAgBP,OAAOE,QAAP,CAAtB;cACMM,YAAgBD,SAAS/D,KAAKiE,SAAL,CAAeF,KAAf,CAAT,GAClB,SADkB,GACN3D,OAAO2D,KAAP,CADhB;;cAGI,CAAC,IAAIG,MAAJ,CAAWJ,aAAX,EAA0BK,IAA1B,CAA+BH,SAA/B,CAAL,EAAgD;kBACxC,IAAII,KAAJ,CACDb,cAAcc,WAAd,EAAH,yBACWX,QADX,2BACuCM,SADvC,sCAEsBF,aAFtB,SADI,CAAN;;;;;GAxDV;;SAoEO9D,IAAP;CApJW,CAqJVC,CArJU,CAAb;;ACNA;;;;;;;AAOA,IAAMqE,QAAS,UAACrE,IAAD,EAAO;;;;;;MAOdsE,OAAsB,OAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,UAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MAEMC,WAAW;aACL;GADZ;MAIMC,QAAQ;qBACaL,SADb;uBAEcA,SAFd;8BAGaA,SAAzB,GAAqCC;GAHvC;MAMMK,YAAY;WACR,OADQ;UAER,MAFQ;UAGR;;;;;;;GAHV;;MAYMV,KArCc;;;mBAsCN1B,OAAZ,EAAqB;WACdqC,QAAL,GAAgBrC,OAAhB;KAvCgB;;;;;;WAkDlBsC,KAlDkB,kBAkDZtC,OAlDY,EAkDH;gBACHA,WAAW,KAAKqC,QAA1B;;UAEME,cAAc,KAAKC,eAAL,CAAqBxC,OAArB,CAApB;;UACMyC,cAAc,KAAKC,kBAAL,CAAwBH,WAAxB,CAApB;;UAEIE,YAAYE,kBAAZ,EAAJ,EAAsC;;;;WAIjCC,cAAL,CAAoBL,WAApB;KA5DgB;;WA+DlBM,OA/DkB,sBA+DR;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACKQ,QAAL,GAAgB,IAAhB;KAjEgB;;;WAsElBG,eAtEkB,4BAsEFxC,OAtEE,EAsEO;UACjBT,WAAWnC,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAjB;UACIgD,SAAa,KAAjB;;UAEIzD,QAAJ,EAAc;iBACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;UAGE,CAACyD,MAAL,EAAa;iBACF3F,KAAE2C,OAAF,EAAWiD,OAAX,OAAuBb,UAAUc,KAAjC,EAA0C,CAA1C,CAAT;;;aAGKF,MAAP;KAlFgB;;WAqFlBN,kBArFkB,+BAqFC1C,OArFD,EAqFU;UACpBmD,aAAa9F,KAAE8E,KAAF,CAAQA,MAAMiB,KAAd,CAAnB;WAEEpD,OAAF,EAAWQ,OAAX,CAAmB2C,UAAnB;aACOA,UAAP;KAzFgB;;WA4FlBP,cA5FkB,2BA4FH5C,OA5FG,EA4FM;;;WACpBA,OAAF,EAAWqD,WAAX,CAAuBjB,UAAUkB,IAAjC;;UAEI,CAAClG,KAAKgC,qBAAL,EAAD,IACA,CAAC/B,KAAE2C,OAAF,EAAWuD,QAAX,CAAoBnB,UAAUoB,IAA9B,CADL,EAC0C;aACnCC,eAAL,CAAqBzD,OAArB;;;;;WAIAA,OAAF,EACGlB,GADH,CACO1B,KAAK2B,cADZ,EAC4B,UAACf,KAAD;eAAW,MAAKyF,eAAL,CAAqBzD,OAArB,EAA8BhC,KAA9B,CAAX;OAD5B,EAEGmB,oBAFH,CAEwB8C,mBAFxB;KArGgB;;WA0GlBwB,eA1GkB,4BA0GFzD,OA1GE,EA0GO;WACrBA,OAAF,EACG0D,MADH,GAEGlD,OAFH,CAEW2B,MAAMwB,MAFjB,EAGGC,MAHH;KA3GgB;;;UAmHXC,gBAnHW,6BAmHMjD,MAnHN,EAmHc;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACrBC,WAAW1G,KAAE,IAAF,CAAjB;YACI2G,OAAaD,SAASC,IAAT,CAAcnC,QAAd,CAAjB;;YAEI,CAACmC,IAAL,EAAW;iBACF,IAAItC,KAAJ,CAAU,IAAV,CAAP;mBACSsC,IAAT,CAAcnC,QAAd,EAAwBmC,IAAxB;;;YAGEpD,WAAW,OAAf,EAAwB;eACjBA,MAAL,EAAa,IAAb;;OAVG,CAAP;KApHgB;;UAmIXqD,cAnIW,2BAmIIC,aAnIJ,EAmImB;aAC5B,UAAUlG,KAAV,EAAiB;YAClBA,KAAJ,EAAW;gBACHmG,cAAN;;;sBAGY7B,KAAd,CAAoB,IAApB;OALF;KApIgB;;;;0BA4CG;eACZV,OAAP;;;;;;;;;;;;OAuGF9B,QAAF,EAAYsE,EAAZ,CACEjC,MAAMkC,cADR,EAEEnC,SAASoC,OAFX,EAGE5C,MAAMuC,cAAN,CAAqB,IAAIvC,KAAJ,EAArB,CAHF;;;;;;;OAYExC,EAAF,CAAKyC,IAAL,IAAyBD,MAAMmC,gBAA/B;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyB7C,KAAzB;;OACExC,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAyB,YAAY;SACjCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACON,MAAMmC,gBAAb;GAFF;;SAKOnC,KAAP;CAvKY,CAwKXrE,CAxKW,CAAd;;ACRA;;;;;;;AAOA,IAAMoH,SAAU,UAACpH,IAAD,EAAO;;;;;;MAOfsE,OAAsB,QAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,WAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MAEMS,YAAY;YACP,QADO;YAEP,KAFO;WAGP;GAHX;MAMMF,WAAW;wBACM,yBADN;iBAEM,yBAFN;WAGM,OAHN;YAIM,SAJN;YAKM;GALvB;MAQMC,QAAQ;8BACkBL,SAA9B,GAA0CC,YAD9B;yBAEU,UAAQD,SAAR,GAAoBC,YAApB,mBACSD,SADT,GACqBC,YADrB;;;;;;;GAFxB;;MAYM0C,MAxCe;;;oBAyCPzE,OAAZ,EAAqB;WACdqC,QAAL,GAAgBrC,OAAhB;KA1CiB;;;;;;WAqDnB0E,MArDmB,qBAqDV;UACHC,qBAAqB,IAAzB;UACIC,iBAAiB,IAArB;UACMrC,cAAclF,KAAE,KAAKgF,QAAP,EAAiBY,OAAjB,CAClBf,SAAS2C,WADS,EAElB,CAFkB,CAApB;;UAIItC,WAAJ,EAAiB;YACTuC,QAAQzH,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAAS6C,KAA/B,EAAsC,CAAtC,CAAd;;YAEID,KAAJ,EAAW;cACLA,MAAME,IAAN,KAAe,OAAnB,EAA4B;gBACtBF,MAAMG,OAAN,IACF5H,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CADF,EAC+C;mCACxB,KAArB;aAFF,MAGO;kBACCC,gBAAgB9H,KAAEkF,WAAF,EAAenC,IAAf,CAAoB8B,SAASgD,MAA7B,EAAqC,CAArC,CAAtB;;kBAEIC,aAAJ,EAAmB;qBACfA,aAAF,EAAiB9B,WAAjB,CAA6BjB,UAAU8C,MAAvC;;;;;cAKFP,kBAAJ,EAAwB;gBAClBG,MAAMM,YAAN,CAAmB,UAAnB,KACF7C,YAAY6C,YAAZ,CAAyB,UAAzB,CADE,IAEFN,MAAMO,SAAN,CAAgBC,QAAhB,CAAyB,UAAzB,CAFE,IAGF/C,YAAY8C,SAAZ,CAAsBC,QAAtB,CAA+B,UAA/B,CAHF,EAG8C;;;;kBAGxCL,OAAN,GAAgB,CAAC5H,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CAAjB;iBACEJ,KAAF,EAAStE,OAAT,CAAiB,QAAjB;;;gBAGI+E,KAAN;2BACiB,KAAjB;;;;UAIAX,cAAJ,EAAoB;aACbvC,QAAL,CAAcmD,YAAd,CAA2B,cAA3B,EACE,CAACnI,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CADH;;;UAIEP,kBAAJ,EAAwB;aACpB,KAAKtC,QAAP,EAAiBoD,WAAjB,CAA6BrD,UAAU8C,MAAvC;;KAnGe;;WAuGnBrC,OAvGmB,sBAuGT;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACKQ,QAAL,GAAgB,IAAhB;KAzGiB;;;WA8GZwB,gBA9GY,6BA8GKjD,MA9GL,EA8Ga;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YAEI,CAACmC,IAAL,EAAW;iBACF,IAAIS,MAAJ,CAAW,IAAX,CAAP;eACE,IAAF,EAAQT,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGEpD,WAAW,QAAf,EAAyB;eAClBA,MAAL;;OATG,CAAP;KA/GiB;;;;0BA+CE;eACZgB,OAAP;;;;;;;;;;;;OAoFF9B,QAAF,EACGsE,EADH,CACMjC,MAAMkC,cADZ,EAC4BnC,SAASwD,kBADrC,EACyD,UAAC1H,KAAD,EAAW;UAC1DmG,cAAN;QAEIwB,SAAS3H,MAAMC,MAAnB;;QAEI,CAACZ,KAAEsI,MAAF,EAAUpC,QAAV,CAAmBnB,UAAUwD,MAA7B,CAAL,EAA2C;eAChCvI,KAAEsI,MAAF,EAAU1C,OAAV,CAAkBf,SAAS0D,MAA3B,CAAT;;;WAGK/B,gBAAP,CAAwBlG,IAAxB,CAA6BN,KAAEsI,MAAF,CAA7B,EAAwC,QAAxC;GAVJ,EAYGvB,EAZH,CAYMjC,MAAM0D,mBAZZ,EAYiC3D,SAASwD,kBAZ1C,EAY8D,UAAC1H,KAAD,EAAW;QAC/D2H,SAAStI,KAAEW,MAAMC,MAAR,EAAgBgF,OAAhB,CAAwBf,SAAS0D,MAAjC,EAAyC,CAAzC,CAAf;SACED,MAAF,EAAUF,WAAV,CAAsBrD,UAAU0D,KAAhC,EAAuC,eAAevE,IAAf,CAAoBvD,MAAMgH,IAA1B,CAAvC;GAdJ;;;;;;;OAuBE9F,EAAF,CAAKyC,IAAL,IAAa8C,OAAOZ,gBAApB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBE,MAAzB;;OACEvF,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOyC,OAAOZ,gBAAd;GAFF;;SAKOY,MAAP;CAlKa,CAmKZpH,CAnKY,CAAf;;ACNA;;;;;;;AAOA,IAAM0I,WAAY,UAAC1I,IAAD,EAAO;;;;;;MAOjBsE,OAAyB,UAA/B;MACMC,UAAyB,OAA/B;MACMC,WAAyB,aAA/B;MACMC,kBAA6BD,QAAnC;MACME,eAAyB,WAA/B;MACMC,qBAAyB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA/B;MACMM,sBAAyB,GAA/B;MACM+D,qBAAyB,EAA/B,CAduB;;MAejBC,sBAAyB,EAA/B,CAfuB;;MAgBjBC,yBAAyB,GAA/B,CAhBuB;;MAkBjBC,UAAU;cACH,IADG;cAEH,IAFG;WAGH,KAHG;WAIH,OAJG;UAKH;GALb;MAQMC,cAAc;cACP,kBADO;cAEP,SAFO;WAGP,kBAHO;WAIP,kBAJO;UAKP;GALb;MAQMC,YAAY;UACL,MADK;UAEL,MAFK;UAGL,MAHK;WAIL;GAJb;MAOMlE,QAAQ;qBACaL,SADb;mBAEYA,SAFZ;yBAGeA,SAHf;+BAIkBA,SAJlB;+BAKkBA,SALlB;2BAMgBA,SANhB;4BAOYA,SAAxB,GAAoCC,YAPxB;8BAQaD,SAAzB,GAAqCC;GARvC;MAWMK,YAAY;cACL,UADK;YAEL,QAFK;WAGL,OAHK;WAIL,qBAJK;UAKL,oBALK;UAML,oBANK;UAOL,oBAPK;UAQL;GARb;MAWMF,WAAW;YACD,SADC;iBAED,uBAFC;UAGD,gBAHC;eAID,0CAJC;gBAKD,sBALC;gBAMD,+BANC;eAOD;;;;;;;GAPhB;;MAgBM6D,QA/EiB;;;sBAgFT/F,OAAZ,EAAqBY,MAArB,EAA6B;WACtB0F,MAAL,GAA0B,IAA1B;WACKC,SAAL,GAA0B,IAA1B;WACKC,cAAL,GAA0B,IAA1B;WAEKC,SAAL,GAA0B,KAA1B;WACKC,UAAL,GAA0B,KAA1B;WAEKC,YAAL,GAA0B,IAA1B;WAEKC,OAAL,GAA0B,KAAKC,UAAL,CAAgBjG,MAAhB,CAA1B;WACKyB,QAAL,GAA0BhF,KAAE2C,OAAF,EAAW,CAAX,CAA1B;WACK8G,kBAAL,GAA0BzJ,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAAS6E,UAA/B,EAA2C,CAA3C,CAA1B;;WAEKC,kBAAL;KA9FmB;;;;;;WA6GrBC,IA7GqB,mBA6Gd;UACD,CAAC,KAAKP,UAAV,EAAsB;aACfQ,MAAL,CAAYb,UAAUc,IAAtB;;KA/GiB;;WAmHrBC,eAnHqB,8BAmHH;;;UAGZ,CAACtH,SAASuH,MAAV,IACDhK,KAAE,KAAKgF,QAAP,EAAiBnE,EAAjB,CAAoB,UAApB,KAAmCb,KAAE,KAAKgF,QAAP,EAAiBiF,GAAjB,CAAqB,YAArB,MAAuC,QAD7E,EACwF;aACjFL,IAAL;;KAxHiB;;WA4HrBM,IA5HqB,mBA4Hd;UACD,CAAC,KAAKb,UAAV,EAAsB;aACfQ,MAAL,CAAYb,UAAUmB,IAAtB;;KA9HiB;;WAkIrBC,KAlIqB,kBAkIfzJ,KAlIe,EAkIR;UACP,CAACA,KAAL,EAAY;aACLyI,SAAL,GAAiB,IAAjB;;;UAGEpJ,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASwF,SAA/B,EAA0C,CAA1C,KACFtK,KAAKgC,qBAAL,EADF,EACgC;aACzBJ,oBAAL,CAA0B,KAAKqD,QAA/B;aACKsF,KAAL,CAAW,IAAX;;;oBAGY,KAAKpB,SAAnB;WACKA,SAAL,GAAiB,IAAjB;KA9ImB;;WAiJrBoB,KAjJqB,kBAiJf3J,KAjJe,EAiJR;UACP,CAACA,KAAL,EAAY;aACLyI,SAAL,GAAiB,KAAjB;;;UAGE,KAAKF,SAAT,EAAoB;sBACJ,KAAKA,SAAnB;aACKA,SAAL,GAAiB,IAAjB;;;UAGE,KAAKK,OAAL,CAAagB,QAAb,IAAyB,CAAC,KAAKnB,SAAnC,EAA8C;aACvCF,SAAL,GAAiBsB,YACf,CAAC/H,SAASgI,eAAT,GAA2B,KAAKV,eAAhC,GAAkD,KAAKH,IAAxD,EAA8Dc,IAA9D,CAAmE,IAAnE,CADe,EAEf,KAAKnB,OAAL,CAAagB,QAFE,CAAjB;;KA5JiB;;WAmKrBI,EAnKqB,eAmKlBC,KAnKkB,EAmKX;;;WACHzB,cAAL,GAAsBnJ,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASgG,WAA/B,EAA4C,CAA5C,CAAtB;;UAEMC,cAAc,KAAKC,aAAL,CAAmB,KAAK5B,cAAxB,CAApB;;UAEIyB,QAAQ,KAAK3B,MAAL,CAAYjG,MAAZ,GAAqB,CAA7B,IAAkC4H,QAAQ,CAA9C,EAAiD;;;;UAI7C,KAAKvB,UAAT,EAAqB;aACjB,KAAKrE,QAAP,EAAiBvD,GAAjB,CAAqBqD,MAAMkG,IAA3B,EAAiC;iBAAM,MAAKL,EAAL,CAAQC,KAAR,CAAN;SAAjC;;;;UAIEE,gBAAgBF,KAApB,EAA2B;aACpBR,KAAL;aACKE,KAAL;;;;UAIIW,YAAYL,QAAQE,WAAR,GACd9B,UAAUc,IADI,GAEdd,UAAUmB,IAFd;;WAIKN,MAAL,CAAYoB,SAAZ,EAAuB,KAAKhC,MAAL,CAAY2B,KAAZ,CAAvB;KA3LmB;;WA8LrBpF,OA9LqB,sBA8LX;WACN,KAAKR,QAAP,EAAiBkG,GAAjB,CAAqBzG,SAArB;WACEgB,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WAEKyE,MAAL,GAA0B,IAA1B;WACKM,OAAL,GAA0B,IAA1B;WACKvE,QAAL,GAA0B,IAA1B;WACKkE,SAAL,GAA0B,IAA1B;WACKE,SAAL,GAA0B,IAA1B;WACKC,UAAL,GAA0B,IAA1B;WACKF,cAAL,GAA0B,IAA1B;WACKM,kBAAL,GAA0B,IAA1B;KAzMmB;;;WA8MrBD,UA9MqB,uBA8MVjG,MA9MU,EA8MF;4BAEZuF,OADL,EAEKvF,MAFL;WAIK4H,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aACOxF,MAAP;KApNmB;;WAuNrBoG,kBAvNqB,iCAuNA;;;UACf,KAAKJ,OAAL,CAAa6B,QAAjB,EAA2B;aACvB,KAAKpG,QAAP,EACG+B,EADH,CACMjC,MAAMuG,OADZ,EACqB,UAAC1K,KAAD;iBAAW,OAAK2K,QAAL,CAAc3K,KAAd,CAAX;SADrB;;;UAIE,KAAK4I,OAAL,CAAaa,KAAb,KAAuB,OAA3B,EAAoC;aAChC,KAAKpF,QAAP,EACG+B,EADH,CACMjC,MAAMyG,UADZ,EACwB,UAAC5K,KAAD;iBAAW,OAAKyJ,KAAL,CAAWzJ,KAAX,CAAX;SADxB,EAEGoG,EAFH,CAEMjC,MAAM0G,UAFZ,EAEwB,UAAC7K,KAAD;iBAAW,OAAK2J,KAAL,CAAW3J,KAAX,CAAX;SAFxB;;YAGI,kBAAkB8B,SAASgJ,eAA/B,EAAgD;;;;;;;;eAQ5C,KAAKzG,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM4G,QAA1B,EAAoC,YAAM;mBACnCtB,KAAL;;gBACI,OAAKd,YAAT,EAAuB;2BACR,OAAKA,YAAlB;;;mBAEGA,YAAL,GAAoBqC,WAAW,UAAChL,KAAD;qBAAW,OAAK2J,KAAL,CAAW3J,KAAX,CAAX;aAAX,EAAyCkI,yBAAyB,OAAKU,OAAL,CAAagB,QAA/E,CAApB;WALF;;;KAzOe;;WAoPrBe,QApPqB,qBAoPZ3K,KApPY,EAoPL;UACV,kBAAkBuD,IAAlB,CAAuBvD,MAAMC,MAAN,CAAagL,OAApC,CAAJ,EAAkD;;;;cAI1CjL,MAAMkL,KAAd;aACOlD,kBAAL;gBACQ7B,cAAN;eACKoD,IAAL;;;aAEGtB,mBAAL;gBACQ9B,cAAN;eACK8C,IAAL;;;;;KAhQe;;WAsQrBmB,aAtQqB,0BAsQPpI,OAtQO,EAsQE;WAChBsG,MAAL,GAAcjJ,KAAE8L,SAAF,CAAY9L,KAAE2C,OAAF,EAAWgD,MAAX,GAAoB5C,IAApB,CAAyB8B,SAASkH,IAAlC,CAAZ,CAAd;aACO,KAAK9C,MAAL,CAAY+C,OAAZ,CAAoBrJ,OAApB,CAAP;KAxQmB;;WA2QrBsJ,mBA3QqB,gCA2QDhB,SA3QC,EA2QUnD,aA3QV,EA2QyB;UACtCoE,kBAAkBjB,cAAcjC,UAAUc,IAAhD;UACMqC,kBAAkBlB,cAAcjC,UAAUmB,IAAhD;;UACMW,cAAkB,KAAKC,aAAL,CAAmBjD,aAAnB,CAAxB;;UACMsE,gBAAkB,KAAKnD,MAAL,CAAYjG,MAAZ,GAAqB,CAA7C;UACMqJ,gBAAkBF,mBAAmBrB,gBAAgB,CAAnC,IACAoB,mBAAmBpB,gBAAgBsB,aAD3D;;UAGIC,iBAAiB,CAAC,KAAK9C,OAAL,CAAa+C,IAAnC,EAAyC;eAChCxE,aAAP;;;UAGIyE,QAAYtB,cAAcjC,UAAUmB,IAAxB,GAA+B,CAAC,CAAhC,GAAoC,CAAtD;UACMqC,YAAY,CAAC1B,cAAcyB,KAAf,IAAwB,KAAKtD,MAAL,CAAYjG,MAAtD;aAEOwJ,cAAc,CAAC,CAAf,GACH,KAAKvD,MAAL,CAAY,KAAKA,MAAL,CAAYjG,MAAZ,GAAqB,CAAjC,CADG,GACmC,KAAKiG,MAAL,CAAYuD,SAAZ,CAD1C;KA1RmB;;WA8RrBC,kBA9RqB,+BA8RFC,aA9RE,EA8RaC,kBA9Rb,EA8RiC;UAC9CC,cAAc,KAAK7B,aAAL,CAAmB2B,aAAnB,CAApB;;UACMG,YAAY,KAAK9B,aAAL,CAAmB/K,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASgG,WAA/B,EAA4C,CAA5C,CAAnB,CAAlB;;UACMiC,aAAa9M,KAAE8E,KAAF,CAAQA,MAAMiI,KAAd,EAAqB;oCAAA;mBAE3BJ,kBAF2B;cAGhCE,SAHgC;YAIlCD;OAJa,CAAnB;WAOE,KAAK5H,QAAP,EAAiB7B,OAAjB,CAAyB2J,UAAzB;aAEOA,UAAP;KA1SmB;;WA6SrBE,0BA7SqB,uCA6SMrK,OA7SN,EA6Se;UAC9B,KAAK8G,kBAAT,EAA6B;aACzB,KAAKA,kBAAP,EACG1G,IADH,CACQ8B,SAASgD,MADjB,EAEG7B,WAFH,CAEejB,UAAU8C,MAFzB;;YAIMoF,gBAAgB,KAAKxD,kBAAL,CAAwByD,QAAxB,CACpB,KAAKnC,aAAL,CAAmBpI,OAAnB,CADoB,CAAtB;;YAIIsK,aAAJ,EAAmB;eACfA,aAAF,EAAiBE,QAAjB,CAA0BpI,UAAU8C,MAApC;;;KAxTe;;WA6TrBgC,MA7TqB,mBA6TdoB,SA7Tc,EA6THtI,OA7TG,EA6TM;;;UACnBmF,gBAAgB9H,KAAE,KAAKgF,QAAP,EAAiBjC,IAAjB,CAAsB8B,SAASgG,WAA/B,EAA4C,CAA5C,CAAtB;;UACMuC,qBAAqB,KAAKrC,aAAL,CAAmBjD,aAAnB,CAA3B;;UACMuF,cAAgB1K,WAAWmF,iBAC/B,KAAKmE,mBAAL,CAAyBhB,SAAzB,EAAoCnD,aAApC,CADF;;UAEMwF,mBAAmB,KAAKvC,aAAL,CAAmBsC,WAAnB,CAAzB;;UACME,YAAYnK,QAAQ,KAAK8F,SAAb,CAAlB;UAEIsE,oBAAJ;UACIC,cAAJ;UACId,kBAAJ;;UAEI1B,cAAcjC,UAAUc,IAA5B,EAAkC;+BACT/E,UAAU2I,IAAjC;yBACiB3I,UAAU+E,IAA3B;6BACqBd,UAAU0E,IAA/B;OAHF,MAIO;+BACkB3I,UAAU4I,KAAjC;yBACiB5I,UAAUoF,IAA3B;6BACqBnB,UAAU2E,KAA/B;;;UAGEN,eAAerN,KAAEqN,WAAF,EAAenH,QAAf,CAAwBnB,UAAU8C,MAAlC,CAAnB,EAA8D;aACvDwB,UAAL,GAAkB,KAAlB;;;;UAIIyD,aAAa,KAAKL,kBAAL,CAAwBY,WAAxB,EAAqCV,kBAArC,CAAnB;;UACIG,WAAWxH,kBAAX,EAAJ,EAAqC;;;;UAIjC,CAACwC,aAAD,IAAkB,CAACuF,WAAvB,EAAoC;;;;;WAK/BhE,UAAL,GAAkB,IAAlB;;UAEIkE,SAAJ,EAAe;aACRnD,KAAL;;;WAGG4C,0BAAL,CAAgCK,WAAhC;;UAEMO,YAAY5N,KAAE8E,KAAF,CAAQA,MAAMkG,IAAd,EAAoB;uBACrBqC,WADqB;mBAEzBV,kBAFyB;cAG9BS,kBAH8B;YAIhCE;OAJY,CAAlB;;UAOIvN,KAAKgC,qBAAL,MACF/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUgI,KAApC,CADF,EAC8C;aAC1CM,WAAF,EAAeF,QAAf,CAAwBM,cAAxB;aAEKI,MAAL,CAAYR,WAAZ;aAEEvF,aAAF,EAAiBqF,QAAjB,CAA0BK,oBAA1B;aACEH,WAAF,EAAeF,QAAf,CAAwBK,oBAAxB;aAEE1F,aAAF,EACGrG,GADH,CACO1B,KAAK2B,cADZ,EAC4B,YAAM;eAC5B2L,WAAF,EACGrH,WADH,CACkBwH,oBADlB,SAC0CC,cAD1C,EAEGN,QAFH,CAEYpI,UAAU8C,MAFtB;eAIEC,aAAF,EAAiB9B,WAAjB,CAAgCjB,UAAU8C,MAA1C,SAAoD4F,cAApD,SAAsED,oBAAtE;iBAEKnE,UAAL,GAAkB,KAAlB;qBAEW;mBAAMrJ,KAAE,OAAKgF,QAAP,EAAiB7B,OAAjB,CAAyByK,SAAzB,CAAN;WAAX,EAAsD,CAAtD;SAVJ,EAYG9L,oBAZH,CAYwB8C,mBAZxB;OATF,MAsBO;aACHkD,aAAF,EAAiB9B,WAAjB,CAA6BjB,UAAU8C,MAAvC;aACEwF,WAAF,EAAeF,QAAf,CAAwBpI,UAAU8C,MAAlC;aAEKwB,UAAL,GAAkB,KAAlB;aACE,KAAKrE,QAAP,EAAiB7B,OAAjB,CAAyByK,SAAzB;;;UAGEL,SAAJ,EAAe;aACRjD,KAAL;;KAhZiB;;;aAsZd9D,gBAtZc,6BAsZGjD,MAtZH,EAsZW;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACI+E,uBACCT,OADD,EAEC9I,KAAE,IAAF,EAAQ2G,IAAR,EAFD,CAAJ;;YAKI,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;iCAEzBgG,OADL,EAEKhG,MAFL;;;YAMIuK,SAAS,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCgG,QAAQwE,KAA7D;;YAEI,CAACpH,IAAL,EAAW;iBACF,IAAI+B,QAAJ,CAAa,IAAb,EAAmBa,OAAnB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;eACzBoH,EAAL,CAAQpH,MAAR;SADF,MAEO,IAAI,OAAOuK,MAAP,KAAkB,QAAtB,EAAgC;cACjC,OAAOnH,KAAKmH,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIE,SAAJ,wBAAkCF,MAAlC,QAAN;;;eAEGA,MAAL;SAJK,MAKA,IAAIvE,QAAQgB,QAAZ,EAAsB;eACtBH,KAAL;eACKE,KAAL;;OA9BG,CAAP;KAvZmB;;aA0bd2D,oBA1bc,iCA0bOtN,KA1bP,EA0bc;UAC3BuB,WAAWnC,KAAK2F,sBAAL,CAA4B,IAA5B,CAAjB;;UAEI,CAACxD,QAAL,EAAe;;;;UAITtB,SAASZ,KAAEkC,QAAF,EAAY,CAAZ,CAAf;;UAEI,CAACtB,MAAD,IAAW,CAACZ,KAAEY,MAAF,EAAUsF,QAAV,CAAmBnB,UAAUmJ,QAA7B,CAAhB,EAAwD;;;;UAIlD3K,sBACDvD,KAAEY,MAAF,EAAU+F,IAAV,EADC,EAED3G,KAAE,IAAF,EAAQ2G,IAAR,EAFC,CAAN;UAIMwH,aAAa,KAAKvL,YAAL,CAAkB,eAAlB,CAAnB;;UAEIuL,UAAJ,EAAgB;eACP5D,QAAP,GAAkB,KAAlB;;;eAGO/D,gBAAT,CAA0BlG,IAA1B,CAA+BN,KAAEY,MAAF,CAA/B,EAA0C2C,MAA1C;;UAEI4K,UAAJ,EAAgB;aACZvN,MAAF,EAAU+F,IAAV,CAAenC,QAAf,EAAyBmG,EAAzB,CAA4BwD,UAA5B;;;YAGIrH,cAAN;KAvdmB;;;;0BAmGA;eACZvC,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OAyXFrG,QAAF,EACGsE,EADH,CACMjC,MAAMkC,cADZ,EAC4BnC,SAASuJ,UADrC,EACiD1F,SAASuF,oBAD1D;OAGE7M,MAAF,EAAU2F,EAAV,CAAajC,MAAMuJ,aAAnB,EAAkC,YAAM;SACpCxJ,SAASyJ,SAAX,EAAsB7H,IAAtB,CAA2B,YAAY;UAC/B8H,YAAYvO,KAAE,IAAF,CAAlB;;eACSwG,gBAAT,CAA0BlG,IAA1B,CAA+BiO,SAA/B,EAA0CA,UAAU5H,IAAV,EAA1C;KAFF;GADF;;;;;;;OAaE9E,EAAF,CAAKyC,IAAL,IAAaoE,SAASlC,gBAAtB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBwB,QAAzB;;OACE7G,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO+D,SAASlC,gBAAhB;GAFF;;SAKOkC,QAAP;CAxfe,CAyfd1I,CAzfc,CAAjB;;ACPA;;;;;;;AAOA,IAAMwO,WAAY,UAACxO,IAAD,EAAO;;;;;;MAOjBsE,OAAsB,UAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,aAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MAEMkE,UAAU;YACL,IADK;YAEL;GAFX;MAKMC,cAAc;YACT,SADS;YAET;GAFX;MAKMjE,QAAQ;mBACYL,SADZ;qBAEaA,SAFb;mBAGYA,SAHZ;uBAIcA,SAJd;8BAKaA,SAAzB,GAAqCC;GALvC;MAQMK,YAAY;UACH,MADG;cAEH,UAFG;gBAGH,YAHG;eAIH;GAJf;MAOM0J,YAAY;WACP,OADO;YAEP;GAFX;MAKM5J,WAAW;aACD,oBADC;iBAED;;;;;;;GAFhB;;MAWM2J,QAxDiB;;;sBAyDT7L,OAAZ,EAAqBY,MAArB,EAA6B;WACtBmL,gBAAL,GAAwB,KAAxB;WACK1J,QAAL,GAAwBrC,OAAxB;WACK4G,OAAL,GAAwB,KAAKC,UAAL,CAAgBjG,MAAhB,CAAxB;WACKoL,aAAL,GAAwB3O,KAAE8L,SAAF,CAAY9L,KAClC,wCAAmC2C,QAAQiM,EAA3C,4DAC0CjM,QAAQiM,EADlD,SADkC,CAAZ,CAAxB;UAIMC,aAAa7O,KAAE6E,SAAS2C,WAAX,CAAnB;;WACK,IAAIsH,IAAI,CAAb,EAAgBA,IAAID,WAAW7L,MAA/B,EAAuC8L,GAAvC,EAA4C;YACpCC,OAAOF,WAAWC,CAAX,CAAb;YACM5M,WAAWnC,KAAK2F,sBAAL,CAA4BqJ,IAA5B,CAAjB;;YACI7M,aAAa,IAAb,IAAqBlC,KAAEkC,QAAF,EAAY8M,MAAZ,CAAmBrM,OAAnB,EAA4BK,MAA5B,GAAqC,CAA9D,EAAiE;eAC1DiM,SAAL,GAAiB/M,QAAjB;;eACKyM,aAAL,CAAmBO,IAAnB,CAAwBH,IAAxB;;;;WAICI,OAAL,GAAe,KAAK5F,OAAL,CAAa5D,MAAb,GAAsB,KAAKyJ,UAAL,EAAtB,GAA0C,IAAzD;;UAEI,CAAC,KAAK7F,OAAL,CAAa5D,MAAlB,EAA0B;aACnB0J,yBAAL,CAA+B,KAAKrK,QAApC,EAA8C,KAAK2J,aAAnD;;;UAGE,KAAKpF,OAAL,CAAalC,MAAjB,EAAyB;aAClBA,MAAL;;KAlFiB;;;;;;WAkGrBA,MAlGqB,qBAkGZ;UACHrH,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUkB,IAApC,CAAJ,EAA+C;aACxCqJ,IAAL;OADF,MAEO;aACAC,IAAL;;KAtGiB;;WA0GrBA,IA1GqB,mBA0Gd;;;UACD,KAAKb,gBAAL,IACF1O,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUkB,IAApC,CADF,EAC6C;;;;UAIzCuJ,OAAJ;UACIC,WAAJ;;UAEI,KAAKN,OAAT,EAAkB;kBACNnP,KAAE8L,SAAF,CACR9L,KAAE,KAAKmP,OAAP,EACGpM,IADH,CACQ8B,SAAS6K,OADjB,EAEGV,MAFH,qBAE2B,KAAKzF,OAAL,CAAa5D,MAFxC,SADQ,CAAV;;YAKI6J,QAAQxM,MAAR,KAAmB,CAAvB,EAA0B;oBACd,IAAV;;;;UAIAwM,OAAJ,EAAa;sBACGxP,KAAEwP,OAAF,EAAWG,GAAX,CAAe,KAAKV,SAApB,EAA+BtI,IAA/B,CAAoCnC,QAApC,CAAd;;YACIiL,eAAeA,YAAYf,gBAA/B,EAAiD;;;;;UAK7CkB,aAAa5P,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,CAAnB;WACE,KAAKjB,QAAP,EAAiB7B,OAAjB,CAAyByM,UAAzB;;UACIA,WAAWtK,kBAAX,EAAJ,EAAqC;;;;UAIjCkK,OAAJ,EAAa;iBACFhJ,gBAAT,CAA0BlG,IAA1B,CAA+BN,KAAEwP,OAAF,EAAWG,GAAX,CAAe,KAAKV,SAApB,CAA/B,EAA+D,MAA/D;;YACI,CAACQ,WAAL,EAAkB;eACdD,OAAF,EAAW7I,IAAX,CAAgBnC,QAAhB,EAA0B,IAA1B;;;;UAIEqL,YAAY,KAAKC,aAAL,EAAlB;;WAEE,KAAK9K,QAAP,EACGgB,WADH,CACejB,UAAUgL,QADzB,EAEG5C,QAFH,CAEYpI,UAAUiL,UAFtB;WAIKhL,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAiC,CAAjC;;UAEI,KAAKlB,aAAL,CAAmB3L,MAAnB,GAA4B,CAAhC,EAAmC;aAC/B,KAAK2L,aAAP,EACG3I,WADH,CACejB,UAAUmL,SADzB,EAEGC,IAFH,CAEQ,eAFR,EAEyB,IAFzB;;;WAKGC,gBAAL,CAAsB,IAAtB;;UAEMC,WAAW,SAAXA,QAAW,GAAM;aACnB,MAAKrL,QAAP,EACGgB,WADH,CACejB,UAAUiL,UADzB,EAEG7C,QAFH,CAEYpI,UAAUgL,QAFtB,EAGG5C,QAHH,CAGYpI,UAAUkB,IAHtB;cAKKjB,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAiC,EAAjC;;cAEKO,gBAAL,CAAsB,KAAtB;;aAEE,MAAKpL,QAAP,EAAiB7B,OAAjB,CAAyB2B,MAAMwL,KAA/B;OAVF;;UAaI,CAACvQ,KAAKgC,qBAAL,EAAL,EAAmC;;;;;UAK7BwO,uBAAuBV,UAAU,CAAV,EAAazL,WAAb,KAA6ByL,UAAUW,KAAV,CAAgB,CAAhB,CAA1D;UACMC,wBAAsBF,oBAA5B;WAEE,KAAKvL,QAAP,EACGvD,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;WAIKI,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAoC,KAAK7K,QAAL,CAAcyL,UAAd,CAApC;KA3LmB;;WA8LrBnB,IA9LqB,mBA8Ld;;;UACD,KAAKZ,gBAAL,IACF,CAAC1O,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUkB,IAApC,CADH,EAC8C;;;;UAIxC2J,aAAa5P,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,CAAnB;WACE,KAAK1L,QAAP,EAAiB7B,OAAjB,CAAyByM,UAAzB;;UACIA,WAAWtK,kBAAX,EAAJ,EAAqC;;;;UAI/BuK,YAAY,KAAKC,aAAL,EAAlB;;WAEK9K,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAoC,KAAK7K,QAAL,CAAc2L,qBAAd,GAAsCd,SAAtC,CAApC;WAEKhC,MAAL,CAAY,KAAK7I,QAAjB;WAEE,KAAKA,QAAP,EACGmI,QADH,CACYpI,UAAUiL,UADtB,EAEGhK,WAFH,CAEejB,UAAUgL,QAFzB,EAGG/J,WAHH,CAGejB,UAAUkB,IAHzB;;UAKI,KAAK0I,aAAL,CAAmB3L,MAAnB,GAA4B,CAAhC,EAAmC;aAC5B,IAAI8L,IAAI,CAAb,EAAgBA,IAAI,KAAKH,aAAL,CAAmB3L,MAAvC,EAA+C8L,GAA/C,EAAoD;cAC5C3L,UAAU,KAAKwL,aAAL,CAAmBG,CAAnB,CAAhB;cACM5M,WAAWnC,KAAK2F,sBAAL,CAA4BvC,OAA5B,CAAjB;;cACIjB,aAAa,IAAjB,EAAuB;gBACf0O,QAAQ5Q,KAAEkC,QAAF,CAAd;;gBACI,CAAC0O,MAAM1K,QAAN,CAAenB,UAAUkB,IAAzB,CAAL,EAAqC;mBACjC9C,OAAF,EAAWgK,QAAX,CAAoBpI,UAAUmL,SAA9B,EACGC,IADH,CACQ,eADR,EACyB,KADzB;;;;;;WAOHC,gBAAL,CAAsB,IAAtB;;UAEMC,WAAW,SAAXA,QAAW,GAAM;eAChBD,gBAAL,CAAsB,KAAtB;;aACE,OAAKpL,QAAP,EACGgB,WADH,CACejB,UAAUiL,UADzB,EAEG7C,QAFH,CAEYpI,UAAUgL,QAFtB,EAGG5M,OAHH,CAGW2B,MAAM+L,MAHjB;OAFF;;WAQK7L,QAAL,CAAciL,KAAd,CAAoBJ,SAApB,IAAiC,EAAjC;;UAEI,CAAC9P,KAAKgC,qBAAL,EAAL,EAAmC;;;;;WAKjC,KAAKiD,QAAP,EACGvD,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;KApPmB;;WAyPrBwL,gBAzPqB,6BAyPJU,eAzPI,EAyPa;WAC3BpC,gBAAL,GAAwBoC,eAAxB;KA1PmB;;WA6PrBtL,OA7PqB,sBA6PX;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WAEK+E,OAAL,GAAwB,IAAxB;WACK4F,OAAL,GAAwB,IAAxB;WACKnK,QAAL,GAAwB,IAAxB;WACK2J,aAAL,GAAwB,IAAxB;WACKD,gBAAL,GAAwB,IAAxB;KApQmB;;;WAyQrBlF,UAzQqB,uBAyQVjG,MAzQU,EAyQF;4BAEZuF,OADL,EAEKvF,MAFL;aAIO8D,MAAP,GAAgBjE,QAAQG,OAAO8D,MAAf,CAAhB,CALiB;;WAMZ8D,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aACOxF,MAAP;KAhRmB;;WAmRrBuM,aAnRqB,4BAmRL;UACRiB,WAAW/Q,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BuI,UAAUuC,KAApC,CAAjB;aACOD,WAAWtC,UAAUuC,KAArB,GAA6BvC,UAAUwC,MAA9C;KArRmB;;WAwRrB7B,UAxRqB,yBAwRR;;;UACPzJ,SAAS,IAAb;;UACI5F,KAAKiE,SAAL,CAAe,KAAKuF,OAAL,CAAa5D,MAA5B,CAAJ,EAAyC;iBAC9B,KAAK4D,OAAL,CAAa5D,MAAtB,CADuC;;YAInC,OAAO,KAAK4D,OAAL,CAAa5D,MAAb,CAAoBuL,MAA3B,KAAsC,WAA1C,EAAuD;mBAC5C,KAAK3H,OAAL,CAAa5D,MAAb,CAAoB,CAApB,CAAT;;OALJ,MAOO;iBACI3F,KAAE,KAAKuJ,OAAL,CAAa5D,MAAf,EAAuB,CAAvB,CAAT;;;UAGIzD,yDACqC,KAAKqH,OAAL,CAAa5D,MADlD,QAAN;WAGEA,MAAF,EAAU5C,IAAV,CAAeb,QAAf,EAAyBuE,IAAzB,CAA8B,UAACqI,CAAD,EAAInM,OAAJ,EAAgB;eACvC0M,yBAAL,CACEb,SAAS2C,qBAAT,CAA+BxO,OAA/B,CADF,EAEE,CAACA,OAAD,CAFF;OADF;aAOOgD,MAAP;KA/SmB;;WAkTrB0J,yBAlTqB,sCAkTK1M,OAlTL,EAkTcyO,YAlTd,EAkT4B;UAC3CzO,OAAJ,EAAa;YACL0O,SAASrR,KAAE2C,OAAF,EAAWuD,QAAX,CAAoBnB,UAAUkB,IAA9B,CAAf;;YAEImL,aAAapO,MAAb,GAAsB,CAA1B,EAA6B;eACzBoO,YAAF,EACGhJ,WADH,CACerD,UAAUmL,SADzB,EACoC,CAACmB,MADrC,EAEGlB,IAFH,CAEQ,eAFR,EAEyBkB,MAFzB;;;KAvTe;;;aAgUdF,qBAhUc,kCAgUQxO,OAhUR,EAgUiB;UAC9BT,WAAWnC,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAjB;aACOT,WAAWlC,KAAEkC,QAAF,EAAY,CAAZ,CAAX,GAA4B,IAAnC;KAlUmB;;aAqUdsE,gBArUc,6BAqUGjD,MArUH,EAqUW;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACrB6K,QAAUtR,KAAE,IAAF,CAAhB;YACI2G,OAAY2K,MAAM3K,IAAN,CAAWnC,QAAX,CAAhB;;YACM+E,uBACDT,OADC,EAEDwI,MAAM3K,IAAN,EAFC,EAGD,OAAOpD,MAAP,KAAkB,QAAlB,IAA8BA,MAH7B,CAAN;;YAMI,CAACoD,IAAD,IAAS4C,QAAQlC,MAAjB,IAA2B,YAAYnD,IAAZ,CAAiBX,MAAjB,CAA/B,EAAyD;kBAC/C8D,MAAR,GAAiB,KAAjB;;;YAGE,CAACV,IAAL,EAAW;iBACF,IAAI6H,QAAJ,CAAa,IAAb,EAAmBjF,OAAnB,CAAP;gBACM5C,IAAN,CAAWnC,QAAX,EAAqBmC,IAArB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAtBG,CAAP;KAtUmB;;;;0BAwFA;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OA2QFrG,QAAF,EAAYsE,EAAZ,CAAejC,MAAMkC,cAArB,EAAqCnC,SAAS2C,WAA9C,EAA2D,UAAU7G,KAAV,EAAiB;;QAEtEA,MAAM4Q,aAAN,CAAoB3F,OAApB,KAAgC,GAApC,EAAyC;YACjC9E,cAAN;;;QAGI0K,WAAWxR,KAAE,IAAF,CAAjB;QACMkC,WAAWnC,KAAK2F,sBAAL,CAA4B,IAA5B,CAAjB;SACExD,QAAF,EAAYuE,IAAZ,CAAiB,YAAY;UACrBgL,UAAUzR,KAAE,IAAF,CAAhB;UACM2G,OAAU8K,QAAQ9K,IAAR,CAAanC,QAAb,CAAhB;UACMjB,SAAUoD,OAAO,QAAP,GAAkB6K,SAAS7K,IAAT,EAAlC;;eACSH,gBAAT,CAA0BlG,IAA1B,CAA+BmR,OAA/B,EAAwClO,MAAxC;KAJF;GARF;;;;;;;OAsBE1B,EAAF,CAAKyC,IAAL,IAAakK,SAAShI,gBAAtB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBsH,QAAzB;;OACE3M,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO6J,SAAShI,gBAAhB;GAFF;;SAKOgI,QAAP;CArYe,CAsYdxO,CAtYc,CAAjB;;ACNA;;;;;;;AAOA,IAAM0R,WAAY,UAAC1R,IAAD,EAAO;;;;;;MAOjBsE,OAA2B,UAAjC;MACMC,UAA2B,OAAjC;MACMC,WAA2B,aAAjC;MACMC,kBAA+BD,QAArC;MACME,eAA2B,WAAjC;MACMC,qBAA2B3E,KAAE6B,EAAF,CAAKyC,IAAL,CAAjC;MACMqN,iBAA2B,EAAjC,CAbuB;;MAcjBC,gBAA2B,EAAjC,CAduB;;MAejBC,cAA2B,CAAjC,CAfuB;;MAgBjBC,mBAA2B,EAAjC,CAhBuB;;MAiBjBC,qBAA2B,EAAjC,CAjBuB;;MAkBjBC,2BAA2B,CAAjC,CAlBuB;;MAmBjBC,iBAA2B,IAAIhO,MAAJ,CAAc6N,gBAAd,SAAkCC,kBAAlC,SAAwDJ,cAAxD,CAAjC;MAEM7M,QAAQ;mBACcL,SADd;uBAEgBA,SAFhB;mBAGcA,SAHd;qBAIeA,SAJf;qBAKeA,SALf;8BAMeA,SAA3B,GAAuCC,YAN3B;kCAOiBD,SAA7B,GAAyCC,YAP7B;8BAQeD,SAA3B,GAAuCC;GARzC;MAWMK,YAAY;cACJ,UADI;UAEJ,MAFI;YAGJ,QAHI;eAIJ,WAJI;cAKJ,UALI;eAMJ,qBANI;cAOJ,oBAPI;qBAQE;GARpB;MAWMF,WAAW;iBACC,0BADD;gBAEC,gBAFD;UAGC,gBAHD;gBAIC,aAJD;mBAKC;GALlB;MAQMqN,gBAAgB;SACR,WADQ;YAER,SAFQ;YAGR,cAHQ;eAIR,YAJQ;WAKR,aALQ;cAMR,WANQ;UAOR,YAPQ;aAQR;GARd;MAWMpJ,UAAU;YACA,CADA;UAEA,IAFA;cAGA;GAHhB;MAMMC,cAAc;YACJ,0BADI;UAEJ,SAFI;cAGJ;;;;;;;GAHhB;;MAYM2I,QAhFiB;;;sBAiFT/O,OAAZ,EAAqBY,MAArB,EAA6B;WACtByB,QAAL,GAAiBrC,OAAjB;WACKwP,OAAL,GAAiB,IAAjB;WACK5I,OAAL,GAAiB,KAAKC,UAAL,CAAgBjG,MAAhB,CAAjB;WACK6O,KAAL,GAAiB,KAAKC,eAAL,EAAjB;WACKC,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;WAEK5I,kBAAL;KAxFmB;;;;;;WA2GrBtC,MA3GqB,qBA2GZ;UACH,KAAKrC,QAAL,CAAcwN,QAAd,IAA0BxS,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU0N,QAApC,CAA9B,EAA6E;;;;UAIvE9M,SAAW+L,SAASgB,qBAAT,CAA+B,KAAK1N,QAApC,CAAjB;;UACM2N,WAAW3S,KAAE,KAAKoS,KAAP,EAAclM,QAAd,CAAuBnB,UAAUkB,IAAjC,CAAjB;;eAES2M,WAAT;;UAEID,QAAJ,EAAc;;;;UAIRjG,gBAAgB;uBACL,KAAK1H;OADtB;UAGM6N,YAAY7S,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,EAAoByG,aAApB,CAAlB;WAEE/G,MAAF,EAAUxC,OAAV,CAAkB0P,SAAlB;;UAEIA,UAAUvN,kBAAV,EAAJ,EAAoC;;OArB7B;;;UA0BH,CAAC,KAAKgN,SAAV,EAAqB;;;;;YAKf,OAAOQ,MAAP,KAAkB,WAAtB,EAAmC;gBAC3B,IAAI9E,SAAJ,CAAc,8DAAd,CAAN;;;YAEErL,UAAU,KAAKqC,QAAnB,CARmB;;YAUfhF,KAAE2F,MAAF,EAAUO,QAAV,CAAmBnB,UAAUgO,MAA7B,CAAJ,EAA0C;cACpC/S,KAAE,KAAKoS,KAAP,EAAclM,QAAd,CAAuBnB,UAAUiO,QAAjC,KAA8ChT,KAAE,KAAKoS,KAAP,EAAclM,QAAd,CAAuBnB,UAAUkO,SAAjC,CAAlD,EAA+F;sBACnFtN,MAAV;;SAZe;;;;;YAkBf,KAAK4D,OAAL,CAAa2J,QAAb,KAA0B,cAA9B,EAA8C;eAC1CvN,MAAF,EAAUwH,QAAV,CAAmBpI,UAAUoO,eAA7B;;;aAEGhB,OAAL,GAAe,IAAIW,MAAJ,CAAWnQ,OAAX,EAAoB,KAAKyP,KAAzB,EAAgC,KAAKgB,gBAAL,EAAhC,CAAf;OA/CK;;;;;;UAsDH,kBAAkB3Q,SAASgJ,eAA3B,IACDzL,KAAE2F,MAAF,EAAUC,OAAV,CAAkBf,SAASwO,UAA3B,EAAuCrQ,MAAvC,KAAkD,CADrD,EACwD;aACpD,MAAF,EAAUkK,QAAV,GAAqBnG,EAArB,CAAwB,WAAxB,EAAqC,IAArC,EAA2C/G,KAAEsT,IAA7C;;;WAGGtO,QAAL,CAAckD,KAAd;;WACKlD,QAAL,CAAcmD,YAAd,CAA2B,eAA3B,EAA4C,IAA5C;;WAEE,KAAKiK,KAAP,EAAchK,WAAd,CAA0BrD,UAAUkB,IAApC;WACEN,MAAF,EACGyC,WADH,CACerD,UAAUkB,IADzB,EAEG9C,OAFH,CAEWnD,KAAE8E,KAAF,CAAQA,MAAMwL,KAAd,EAAqB5D,aAArB,CAFX;KA1KmB;;WA+KrBlH,OA/KqB,sBA+KX;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACE,KAAKQ,QAAP,EAAiBkG,GAAjB,CAAqBzG,SAArB;WACKO,QAAL,GAAgB,IAAhB;WACKoN,KAAL,GAAa,IAAb;;UACI,KAAKD,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAaoB,OAAb;;aACKpB,OAAL,GAAe,IAAf;;KAtLiB;;WA0LrBqB,MA1LqB,qBA0LZ;WACFlB,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;UACI,KAAKJ,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAasB,cAAb;;KA7LiB;;;WAmMrB9J,kBAnMqB,iCAmMA;;;WACjB,KAAK3E,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM4O,KAA1B,EAAiC,UAAC/S,KAAD,EAAW;cACpCmG,cAAN;cACM6M,eAAN;;cACKtM,MAAL;OAHF;KApMmB;;WA2MrBmC,UA3MqB,uBA2MVjG,MA3MU,EA2MF;4BAEZ,KAAKqQ,WAAL,CAAiB9K,OADtB,EAEK9I,KAAE,KAAKgF,QAAP,EAAiB2B,IAAjB,EAFL,EAGKpD,MAHL;WAMK4H,eAAL,CACE7G,IADF,EAEEf,MAFF,EAGE,KAAKqQ,WAAL,CAAiB7K,WAHnB;aAMOxF,MAAP;KAxNmB;;WA2NrB8O,eA3NqB,8BA2NH;UACZ,CAAC,KAAKD,KAAV,EAAiB;YACTzM,SAAS+L,SAASgB,qBAAT,CAA+B,KAAK1N,QAApC,CAAf;;aACKoN,KAAL,GAAapS,KAAE2F,MAAF,EAAU5C,IAAV,CAAe8B,SAASgP,IAAxB,EAA8B,CAA9B,CAAb;;;aAEK,KAAKzB,KAAZ;KAhOmB;;WAmOrB0B,aAnOqB,4BAmOL;UACRC,kBAAkB/T,KAAE,KAAKgF,QAAP,EAAiBW,MAAjB,EAAxB;UACIqO,YAAY9B,cAAc+B,MAA9B,CAFc;;UAKVF,gBAAgB7N,QAAhB,CAAyBnB,UAAUgO,MAAnC,CAAJ,EAAgD;oBAClCb,cAAcgC,GAA1B;;YACIlU,KAAE,KAAKoS,KAAP,EAAclM,QAAd,CAAuBnB,UAAUkO,SAAjC,CAAJ,EAAiD;sBACnCf,cAAciC,MAA1B;;OAHJ,MAKO,IAAIJ,gBAAgB7N,QAAhB,CAAyBnB,UAAUqP,SAAnC,CAAJ,EAAmD;oBAC5ClC,cAAcvE,KAA1B;OADK,MAEA,IAAIoG,gBAAgB7N,QAAhB,CAAyBnB,UAAUsP,QAAnC,CAAJ,EAAkD;oBAC3CnC,cAAcxE,IAA1B;OADK,MAEA,IAAI1N,KAAE,KAAKoS,KAAP,EAAclM,QAAd,CAAuBnB,UAAUkO,SAAjC,CAAJ,EAAiD;oBAC1Cf,cAAcoC,SAA1B;;;aAEKN,SAAP;KApPmB;;WAuPrBzB,aAvPqB,4BAuPL;aACPvS,KAAE,KAAKgF,QAAP,EAAiBY,OAAjB,CAAyB,SAAzB,EAAoC5C,MAApC,GAA6C,CAApD;KAxPmB;;WA2PrBoQ,gBA3PqB,+BA2PF;;;UACXmB,aAAa,EAAnB;;UACI,OAAO,KAAKhL,OAAL,CAAaiL,MAApB,KAA+B,UAAnC,EAA+C;mBAClC3S,EAAX,GAAgB,UAAC8E,IAAD,EAAU;eACnB8N,OAAL,gBACK9N,KAAK8N,OADV,EAEK,OAAKlL,OAAL,CAAaiL,MAAb,CAAoB7N,KAAK8N,OAAzB,KAAqC,EAF1C;iBAIO9N,IAAP;SALF;OADF,MAQO;mBACM6N,MAAX,GAAoB,KAAKjL,OAAL,CAAaiL,MAAjC;;;UAEIE,eAAe;mBACR,KAAKZ,aAAL,EADQ;mBAER;kBACDS,UADC;gBAEH;qBACK,KAAKhL,OAAL,CAAaoL;WAHf;2BAKQ;+BACI,KAAKpL,OAAL,CAAa2J;;;OARtC;aAaOwB,YAAP;KArRmB;;;aA0RdlO,gBA1Rc,6BA0RGjD,MA1RH,EA0RW;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD;;YAEI,CAACoD,IAAL,EAAW;iBACF,IAAI+K,QAAJ,CAAa,IAAb,EAAmBnI,OAAnB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAbG,CAAP;KA3RmB;;aA6SdqP,WA7Sc,wBA6SFjS,KA7SE,EA6SK;UACpBA,UAAUA,MAAMkL,KAAN,KAAgBmG,wBAAhB,IACZrR,MAAMgH,IAAN,KAAe,OAAf,IAA0BhH,MAAMkL,KAAN,KAAgBgG,WADxC,CAAJ,EAC0D;;;;UAIpD+C,UAAU5U,KAAE8L,SAAF,CAAY9L,KAAE6E,SAAS2C,WAAX,CAAZ,CAAhB;;WACK,IAAIsH,IAAI,CAAb,EAAgBA,IAAI8F,QAAQ5R,MAA5B,EAAoC8L,GAApC,EAAyC;YACjCnJ,SAAS+L,SAASgB,qBAAT,CAA+BkC,QAAQ9F,CAAR,CAA/B,CAAf;;YACM+F,UAAU7U,KAAE4U,QAAQ9F,CAAR,CAAF,EAAcnI,IAAd,CAAmBnC,QAAnB,CAAhB;YACMkI,gBAAgB;yBACLkI,QAAQ9F,CAAR;SADjB;;YAII,CAAC+F,OAAL,EAAc;;;;YAIRC,eAAeD,QAAQzC,KAA7B;;YACI,CAACpS,KAAE2F,MAAF,EAAUO,QAAV,CAAmBnB,UAAUkB,IAA7B,CAAL,EAAyC;;;;YAIrCtF,UAAUA,MAAMgH,IAAN,KAAe,OAAf,IACV,kBAAkBzD,IAAlB,CAAuBvD,MAAMC,MAAN,CAAagL,OAApC,CADU,IACsCjL,MAAMgH,IAAN,KAAe,OAAf,IAA0BhH,MAAMkL,KAAN,KAAgBgG,WAD1F,KAEA7R,KAAEiI,QAAF,CAAWtC,MAAX,EAAmBhF,MAAMC,MAAzB,CAFJ,EAEsC;;;;YAIhCmU,YAAY/U,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,EAAoBhE,aAApB,CAAlB;aACE/G,MAAF,EAAUxC,OAAV,CAAkB4R,SAAlB;;YACIA,UAAUzP,kBAAV,EAAJ,EAAoC;;SAxBG;;;;YA8BnC,kBAAkB7C,SAASgJ,eAA/B,EAAgD;eAC5C,MAAF,EAAUyB,QAAV,GAAqBhC,GAArB,CAAyB,WAAzB,EAAsC,IAAtC,EAA4ClL,KAAEsT,IAA9C;;;gBAGMxE,CAAR,EAAW3G,YAAX,CAAwB,eAAxB,EAAyC,OAAzC;aAEE2M,YAAF,EAAgB9O,WAAhB,CAA4BjB,UAAUkB,IAAtC;aACEN,MAAF,EACGK,WADH,CACejB,UAAUkB,IADzB,EAEG9C,OAFH,CAEWnD,KAAE8E,KAAF,CAAQA,MAAM+L,MAAd,EAAsBnE,aAAtB,CAFX;;KAzViB;;aA+VdgG,qBA/Vc,kCA+VQ/P,OA/VR,EA+ViB;UAChCgD,MAAJ;UACMzD,WAAWnC,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAjB;;UAEIT,QAAJ,EAAc;iBACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;aAGKyD,UAAUhD,QAAQqS,UAAzB;KAvWmB;;;aA2WdC,sBA3Wc,mCA2WStU,KA3WT,EA2WgB;;;;;;;;UAQ/B,kBAAkBuD,IAAlB,CAAuBvD,MAAMC,MAAN,CAAagL,OAApC,IACAjL,MAAMkL,KAAN,KAAgB+F,aAAhB,IAAiCjR,MAAMkL,KAAN,KAAgB8F,cAAhB,KAClChR,MAAMkL,KAAN,KAAgBkG,kBAAhB,IAAsCpR,MAAMkL,KAAN,KAAgBiG,gBAAtD,IACC9R,KAAEW,MAAMC,MAAR,EAAgBgF,OAAhB,CAAwBf,SAASgP,IAAjC,EAAuC7Q,MAFN,CADjC,GAGiD,CAACiP,eAAe/N,IAAf,CAAoBvD,MAAMkL,KAA1B,CAHtD,EAGwF;;;;YAIlF/E,cAAN;YACM6M,eAAN;;UAEI,KAAKnB,QAAL,IAAiBxS,KAAE,IAAF,EAAQkG,QAAR,CAAiBnB,UAAU0N,QAA3B,CAArB,EAA2D;;;;UAIrD9M,SAAW+L,SAASgB,qBAAT,CAA+B,IAA/B,CAAjB;;UACMC,WAAW3S,KAAE2F,MAAF,EAAUO,QAAV,CAAmBnB,UAAUkB,IAA7B,CAAjB;;UAEI,CAAC0M,QAAD,KAAchS,MAAMkL,KAAN,KAAgB8F,cAAhB,IAAkChR,MAAMkL,KAAN,KAAgB+F,aAAhE,KACCe,aAAahS,MAAMkL,KAAN,KAAgB8F,cAAhB,IAAkChR,MAAMkL,KAAN,KAAgB+F,aAA/D,CADL,EACoF;YAC9EjR,MAAMkL,KAAN,KAAgB8F,cAApB,EAAoC;cAC5BtK,SAASrH,KAAE2F,MAAF,EAAU5C,IAAV,CAAe8B,SAAS2C,WAAxB,EAAqC,CAArC,CAAf;eACEH,MAAF,EAAUlE,OAAV,CAAkB,OAAlB;;;aAGA,IAAF,EAAQA,OAAR,CAAgB,OAAhB;;;;UAII+R,QAAQlV,KAAE2F,MAAF,EAAU5C,IAAV,CAAe8B,SAASsQ,aAAxB,EAAuCC,GAAvC,EAAd;;UAEIF,MAAMlS,MAAN,KAAiB,CAArB,EAAwB;;;;UAIpB4H,QAAQsK,MAAMlJ,OAAN,CAAcrL,MAAMC,MAApB,CAAZ;;UAEID,MAAMkL,KAAN,KAAgBiG,gBAAhB,IAAoClH,QAAQ,CAAhD,EAAmD;;;;;UAI/CjK,MAAMkL,KAAN,KAAgBkG,kBAAhB,IAAsCnH,QAAQsK,MAAMlS,MAAN,GAAe,CAAjE,EAAoE;;;;;UAIhE4H,QAAQ,CAAZ,EAAe;gBACL,CAAR;;;YAGIA,KAAN,EAAa1C,KAAb;KAnamB;;;;0BA6FA;eACZ3D,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;0BAGuB;eAChBC,WAAP;;;;;;;;;;;;OAuUFtG,QAAF,EACGsE,EADH,CACMjC,MAAMuQ,gBADZ,EAC8BxQ,SAAS2C,WADvC,EACoDkK,SAASuD,sBAD7D,EAEGlO,EAFH,CAEMjC,MAAMuQ,gBAFZ,EAE8BxQ,SAASgP,IAFvC,EAE6CnC,SAASuD,sBAFtD,EAGGlO,EAHH,CAGSjC,MAAMkC,cAHf,SAGiClC,MAAMwQ,cAHvC,EAGyD5D,SAASkB,WAHlE,EAIG7L,EAJH,CAIMjC,MAAMkC,cAJZ,EAI4BnC,SAAS2C,WAJrC,EAIkD,UAAU7G,KAAV,EAAiB;UACzDmG,cAAN;UACM6M,eAAN;;aACSnN,gBAAT,CAA0BlG,IAA1B,CAA+BN,KAAE,IAAF,CAA/B,EAAwC,QAAxC;GAPJ,EASG+G,EATH,CASMjC,MAAMkC,cATZ,EAS4BnC,SAAS0Q,UATrC,EASiD,UAACC,CAAD,EAAO;MAClD7B,eAAF;GAVJ;;;;;;;OAmBE9R,EAAF,CAAKyC,IAAL,IAAaoN,SAASlL,gBAAtB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBwK,QAAzB;;OACE7P,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO+M,SAASlL,gBAAhB;GAFF;;SAKOkL,QAAP;CAvce,CAwcd1R,CAxcc,EAwcX8S,MAxcW,CAAjB;;ACRA;;;;;;;AAOA,IAAM2C,QAAS,UAACzV,IAAD,EAAO;;;;;;MAOdsE,OAA+B,OAArC;MACMC,UAA+B,OAArC;MACMC,WAA+B,UAArC;MACMC,kBAAmCD,QAAzC;MACME,eAA+B,WAArC;MACMC,qBAA+B3E,KAAE6B,EAAF,CAAKyC,IAAL,CAArC;MACMM,sBAA+B,GAArC;MACM8Q,+BAA+B,GAArC;MACM/D,iBAA+B,EAArC,CAfoB;;MAiBd7I,UAAU;cACH,IADG;cAEH,IAFG;WAGH,IAHG;UAIH;GAJb;MAOMC,cAAc;cACP,kBADO;cAEP,SAFO;WAGP,SAHO;UAIP;GAJb;MAOMjE,QAAQ;mBACeL,SADf;uBAEiBA,SAFjB;mBAGeA,SAHf;qBAIgBA,SAJhB;yBAKkBA,SALlB;uBAMiBA,SANjB;qCAOwBA,SAPxB;yCAQ0BA,SAR1B;yCAS0BA,SAT1B;6CAU4BA,SAV5B;8BAWgBA,SAA5B,GAAwCC;GAX1C;MAcMK,YAAY;wBACK,yBADL;cAEK,gBAFL;UAGK,YAHL;UAIK,MAJL;UAKK;GALvB;MAQMF,WAAW;YACM,eADN;iBAEM,uBAFN;kBAGM,wBAHN;mBAIM,mDAJN;oBAKM,aALN;oBAMM;;;;;;;GANvB;;MAeM4Q,KApEc;;;mBAqEN9S,OAAZ,EAAqBY,MAArB,EAA6B;WACtBgG,OAAL,GAA4B,KAAKC,UAAL,CAAgBjG,MAAhB,CAA5B;WACKyB,QAAL,GAA4BrC,OAA5B;WACKgT,OAAL,GAA4B3V,KAAE2C,OAAF,EAAWI,IAAX,CAAgB8B,SAAS+Q,MAAzB,EAAiC,CAAjC,CAA5B;WACKC,SAAL,GAA4B,IAA5B;WACKC,QAAL,GAA4B,KAA5B;WACKC,kBAAL,GAA4B,KAA5B;WACKC,oBAAL,GAA4B,KAA5B;WACKC,oBAAL,GAA4B,CAA5B;WACKC,eAAL,GAA4B,CAA5B;KA9EgB;;;;;;WA6FlB7O,MA7FkB,mBA6FXqF,aA7FW,EA6FI;aACb,KAAKoJ,QAAL,GAAgB,KAAKxG,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAU7C,aAAV,CAArC;KA9FgB;;WAiGlB6C,IAjGkB,iBAiGb7C,aAjGa,EAiGE;;;UACd,KAAKgC,gBAAL,IAAyB,KAAKoH,QAAlC,EAA4C;;;;UAIxC/V,KAAKgC,qBAAL,MAAgC/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CAApC,EAA+E;aACxEuI,gBAAL,GAAwB,IAAxB;;;UAGImE,YAAY7S,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,EAAoB;;OAApB,CAAlB;WAIE,KAAKjB,QAAP,EAAiB7B,OAAjB,CAAyB0P,SAAzB;;UAEI,KAAKiD,QAAL,IAAiBjD,UAAUvN,kBAAV,EAArB,EAAqD;;;;WAIhDwQ,QAAL,GAAgB,IAAhB;;WAEKK,eAAL;;WACKC,aAAL;;WAEKC,aAAL;;WAEE5T,SAAS6T,IAAX,EAAiBnJ,QAAjB,CAA0BpI,UAAUwR,IAApC;;WAEKC,eAAL;;WACKC,eAAL;;WAEE,KAAKzR,QAAP,EAAiB+B,EAAjB,CACEjC,MAAM4R,aADR,EAEE7R,SAAS8R,YAFX,EAGE,UAAChW,KAAD;eAAW,MAAK2O,IAAL,CAAU3O,KAAV,CAAX;OAHF;WAME,KAAKgV,OAAP,EAAgB5O,EAAhB,CAAmBjC,MAAM8R,iBAAzB,EAA4C,YAAM;aAC9C,MAAK5R,QAAP,EAAiBvD,GAAjB,CAAqBqD,MAAM+R,eAA3B,EAA4C,UAAClW,KAAD,EAAW;cACjDX,KAAEW,MAAMC,MAAR,EAAgBC,EAAhB,CAAmB,MAAKmE,QAAxB,CAAJ,EAAuC;kBAChCgR,oBAAL,GAA4B,IAA5B;;SAFJ;OADF;;WAQKc,aAAL,CAAmB;eAAM,MAAKC,YAAL,CAAkBrK,aAAlB,CAAN;OAAnB;KA9IgB;;WAiJlB4C,IAjJkB,iBAiJb3O,KAjJa,EAiJN;;;UACNA,KAAJ,EAAW;cACHmG,cAAN;;;UAGE,KAAK4H,gBAAL,IAAyB,CAAC,KAAKoH,QAAnC,EAA6C;;;;UAIvCf,YAAY/U,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,CAAlB;WAEE,KAAK1L,QAAP,EAAiB7B,OAAjB,CAAyB4R,SAAzB;;UAEI,CAAC,KAAKe,QAAN,IAAkBf,UAAUzP,kBAAV,EAAtB,EAAsD;;;;WAIjDwQ,QAAL,GAAgB,KAAhB;UAEM7V,aAAaF,KAAKgC,qBAAL,MAAgC/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CAAnD;;UAEIlG,UAAJ,EAAgB;aACTyO,gBAAL,GAAwB,IAAxB;;;WAGG8H,eAAL;;WACKC,eAAL;;WAEEhU,QAAF,EAAYyI,GAAZ,CAAgBpG,MAAMkS,OAAtB;WAEE,KAAKhS,QAAP,EAAiBgB,WAAjB,CAA6BjB,UAAUkB,IAAvC;WAEE,KAAKjB,QAAP,EAAiBkG,GAAjB,CAAqBpG,MAAM4R,aAA3B;WACE,KAAKf,OAAP,EAAgBzK,GAAhB,CAAoBpG,MAAM8R,iBAA1B;;UAEI3W,UAAJ,EAAgB;aACZ,KAAK+E,QAAP,EACGvD,GADH,CACO1B,KAAK2B,cADZ,EAC4B,UAACf,KAAD;iBAAW,OAAKsW,UAAL,CAAgBtW,KAAhB,CAAX;SAD5B,EAEGmB,oBAFH,CAEwB8C,mBAFxB;OADF,MAIO;aACAqS,UAAL;;KAzLc;;WA6LlBzR,OA7LkB,sBA6LR;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WAEEpD,MAAF,EAAUqB,QAAV,EAAoB,KAAKuC,QAAzB,EAAmC,KAAK6Q,SAAxC,EAAmD3K,GAAnD,CAAuDzG,SAAvD;WAEK8E,OAAL,GAA4B,IAA5B;WACKvE,QAAL,GAA4B,IAA5B;WACK2Q,OAAL,GAA4B,IAA5B;WACKE,SAAL,GAA4B,IAA5B;WACKC,QAAL,GAA4B,IAA5B;WACKC,kBAAL,GAA4B,IAA5B;WACKC,oBAAL,GAA4B,IAA5B;WACKE,eAAL,GAA4B,IAA5B;KAzMgB;;WA4MlBgB,YA5MkB,2BA4MH;WACRb,aAAL;KA7MgB;;;WAkNlB7M,UAlNkB,uBAkNPjG,MAlNO,EAkNC;4BAEZuF,OADL,EAEKvF,MAFL;WAIK4H,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aACOxF,MAAP;KAxNgB;;WA2NlBwT,YA3NkB,yBA2NLrK,aA3NK,EA2NU;;;UACpBzM,aAAaF,KAAKgC,qBAAL,MACjB/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CADF;;UAGI,CAAC,KAAKnB,QAAL,CAAcgQ,UAAf,IACD,KAAKhQ,QAAL,CAAcgQ,UAAd,CAAyB3R,QAAzB,KAAsC8T,KAAKC,YAD9C,EAC4D;;iBAEjDd,IAAT,CAAce,WAAd,CAA0B,KAAKrS,QAA/B;;;WAGGA,QAAL,CAAciL,KAAd,CAAoBqH,OAApB,GAA8B,OAA9B;;WACKtS,QAAL,CAAcuS,eAAd,CAA8B,aAA9B;;WACKvS,QAAL,CAAcwS,SAAd,GAA0B,CAA1B;;UAEIvX,UAAJ,EAAgB;aACT4N,MAAL,CAAY,KAAK7I,QAAjB;;;WAGA,KAAKA,QAAP,EAAiBmI,QAAjB,CAA0BpI,UAAUkB,IAApC;;UAEI,KAAKsD,OAAL,CAAarB,KAAjB,EAAwB;aACjBuP,aAAL;;;UAGIC,aAAa1X,KAAE8E,KAAF,CAAQA,MAAMwL,KAAd,EAAqB;;OAArB,CAAnB;;UAIMqH,qBAAqB,SAArBA,kBAAqB,GAAM;YAC3B,OAAKpO,OAAL,CAAarB,KAAjB,EAAwB;iBACjBlD,QAAL,CAAckD,KAAd;;;eAEGwG,gBAAL,GAAwB,KAAxB;aACE,OAAK1J,QAAP,EAAiB7B,OAAjB,CAAyBuU,UAAzB;OALF;;UAQIzX,UAAJ,EAAgB;aACZ,KAAK0V,OAAP,EACGlU,GADH,CACO1B,KAAK2B,cADZ,EAC4BiW,kBAD5B,EAEG7V,oBAFH,CAEwB8C,mBAFxB;OADF,MAIO;;;KAnQS;;WAwQlB6S,aAxQkB,4BAwQF;;;WACZhV,QAAF,EACGyI,GADH,CACOpG,MAAMkS,OADb;OAEGjQ,EAFH,CAEMjC,MAAMkS,OAFZ,EAEqB,UAACrW,KAAD,EAAW;YACxB8B,aAAa9B,MAAMC,MAAnB,IACA,OAAKoE,QAAL,KAAkBrE,MAAMC,MADxB,IAEAZ,KAAE,OAAKgF,QAAP,EAAiB4S,GAAjB,CAAqBjX,MAAMC,MAA3B,EAAmCoC,MAAnC,KAA8C,CAFlD,EAEqD;iBAC9CgC,QAAL,CAAckD,KAAd;;OANN;KAzQgB;;WAoRlBsO,eApRkB,8BAoRA;;;UACZ,KAAKV,QAAL,IAAiB,KAAKvM,OAAL,CAAa6B,QAAlC,EAA4C;aACxC,KAAKpG,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM+S,eAA1B,EAA2C,UAAClX,KAAD,EAAW;cAChDA,MAAMkL,KAAN,KAAgB8F,cAApB,EAAoC;kBAC5B7K,cAAN;;mBACKwI,IAAL;;SAHJ;OADF,MAOO,IAAI,CAAC,KAAKwG,QAAV,EAAoB;aACvB,KAAK9Q,QAAP,EAAiBkG,GAAjB,CAAqBpG,MAAM+S,eAA3B;;KA7Rc;;WAiSlBpB,eAjSkB,8BAiSA;;;UACZ,KAAKX,QAAT,EAAmB;aACf1U,MAAF,EAAU2F,EAAV,CAAajC,MAAMgT,MAAnB,EAA2B,UAACnX,KAAD;iBAAW,OAAKuW,YAAL,CAAkBvW,KAAlB,CAAX;SAA3B;OADF,MAEO;aACHS,MAAF,EAAU8J,GAAV,CAAcpG,MAAMgT,MAApB;;KArSc;;WAySlBb,UAzSkB,yBAySL;;;WACNjS,QAAL,CAAciL,KAAd,CAAoBqH,OAApB,GAA8B,MAA9B;;WACKtS,QAAL,CAAcmD,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;WACKuG,gBAAL,GAAwB,KAAxB;;WACKoI,aAAL,CAAmB,YAAM;aACrBrU,SAAS6T,IAAX,EAAiBtQ,WAAjB,CAA6BjB,UAAUwR,IAAvC;;eACKwB,iBAAL;;eACKC,eAAL;;aACE,OAAKhT,QAAP,EAAiB7B,OAAjB,CAAyB2B,MAAM+L,MAA/B;OAJF;KA7SgB;;WAqTlBoH,eArTkB,8BAqTA;UACZ,KAAKpC,SAAT,EAAoB;aAChB,KAAKA,SAAP,EAAkBtP,MAAlB;aACKsP,SAAL,GAAiB,IAAjB;;KAxTc;;WA4TlBiB,aA5TkB,0BA4TJoB,QA5TI,EA4TM;;;UAChBC,UAAUnY,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,IACZpB,UAAUoB,IADE,GACK,EADrB;;UAGI,KAAK2P,QAAL,IAAiB,KAAKvM,OAAL,CAAa6O,QAAlC,EAA4C;YACpCC,YAAYtY,KAAKgC,qBAAL,MAAgCoW,OAAlD;aAEKtC,SAAL,GAAiBpT,SAAS6V,aAAT,CAAuB,KAAvB,CAAjB;aACKzC,SAAL,CAAe0C,SAAf,GAA2BxT,UAAUyT,QAArC;;YAEIL,OAAJ,EAAa;eACT,KAAKtC,SAAP,EAAkB1I,QAAlB,CAA2BgL,OAA3B;;;aAGA,KAAKtC,SAAP,EAAkB4C,QAAlB,CAA2BhW,SAAS6T,IAApC;aAEE,KAAKtR,QAAP,EAAiB+B,EAAjB,CAAoBjC,MAAM4R,aAA1B,EAAyC,UAAC/V,KAAD,EAAW;cAC9C,OAAKqV,oBAAT,EAA+B;mBACxBA,oBAAL,GAA4B,KAA5B;;;;cAGErV,MAAMC,MAAN,KAAiBD,MAAM4Q,aAA3B,EAA0C;;;;cAGtC,OAAKhI,OAAL,CAAa6O,QAAb,KAA0B,QAA9B,EAAwC;mBACjCpT,QAAL,CAAckD,KAAd;WADF,MAEO;mBACAoH,IAAL;;SAXJ;;YAeI+I,SAAJ,EAAe;eACRxK,MAAL,CAAY,KAAKgI,SAAjB;;;aAGA,KAAKA,SAAP,EAAkB1I,QAAlB,CAA2BpI,UAAUkB,IAArC;;YAEI,CAACiS,QAAL,EAAe;;;;YAIX,CAACG,SAAL,EAAgB;;;;;aAKd,KAAKxC,SAAP,EACGpU,GADH,CACO1B,KAAK2B,cADZ,EAC4BwW,QAD5B,EAEGpW,oBAFH,CAEwB4T,4BAFxB;OA1CF,MA6CO,IAAI,CAAC,KAAKI,QAAN,IAAkB,KAAKD,SAA3B,EAAsC;aACzC,KAAKA,SAAP,EAAkB7P,WAAlB,CAA8BjB,UAAUkB,IAAxC;;YAEMyS,iBAAiB,SAAjBA,cAAiB,GAAM;iBACtBT,eAAL;;cACIC,QAAJ,EAAc;;;SAFhB;;YAOInY,KAAKgC,qBAAL,MACD/B,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAUoB,IAApC,CADH,EAC8C;eAC1C,KAAK0P,SAAP,EACGpU,GADH,CACO1B,KAAK2B,cADZ,EAC4BgX,cAD5B,EAEG5W,oBAFH,CAEwB4T,4BAFxB;SAFF,MAKO;;;OAfF,MAkBA,IAAIwC,QAAJ,EAAc;;;KA/XL;;;;;;WAyYlB7B,aAzYkB,4BAyYF;UACRsC,qBACJ,KAAK3T,QAAL,CAAc4T,YAAd,GAA6BnW,SAASgJ,eAAT,CAAyBoN,YADxD;;UAGI,CAAC,KAAK9C,kBAAN,IAA4B4C,kBAAhC,EAAoD;aAC7C3T,QAAL,CAAciL,KAAd,CAAoB6I,WAApB,GAAqC,KAAK5C,eAA1C;;;UAGE,KAAKH,kBAAL,IAA2B,CAAC4C,kBAAhC,EAAoD;aAC7C3T,QAAL,CAAciL,KAAd,CAAoB8I,YAApB,GAAsC,KAAK7C,eAA3C;;KAlZc;;WAsZlB6B,iBAtZkB,gCAsZE;WACb/S,QAAL,CAAciL,KAAd,CAAoB6I,WAApB,GAAkC,EAAlC;WACK9T,QAAL,CAAciL,KAAd,CAAoB8I,YAApB,GAAmC,EAAnC;KAxZgB;;WA2ZlB5C,eA3ZkB,8BA2ZA;UACV6C,OAAOvW,SAAS6T,IAAT,CAAc3F,qBAAd,EAAb;WACKoF,kBAAL,GAA0BiD,KAAKC,IAAL,GAAYD,KAAKE,KAAjB,GAAyB9X,OAAO+X,UAA1D;WACKjD,eAAL,GAAuB,KAAKkD,kBAAL,EAAvB;KA9ZgB;;WAialBhD,aAjakB,4BAiaF;;;UACV,KAAKL,kBAAT,EAA6B;;;;aAKzBlR,SAASwU,aAAX,EAA0B5S,IAA1B,CAA+B,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;cAC3C2W,gBAAgBtZ,KAAE2C,OAAF,EAAW,CAAX,EAAcsN,KAAd,CAAoB8I,YAA1C;cACMQ,oBAAoBvZ,KAAE2C,OAAF,EAAWsH,GAAX,CAAe,eAAf,CAA1B;eACEtH,OAAF,EAAWgE,IAAX,CAAgB,eAAhB,EAAiC2S,aAAjC,EAAgDrP,GAAhD,CAAoD,eAApD,EAAwEuP,WAAWD,iBAAX,IAAgC,OAAKrD,eAA7G;SAHF,EAL2B;;aAYzBrR,SAAS4U,cAAX,EAA2BhT,IAA3B,CAAgC,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;cAC5C+W,eAAe1Z,KAAE2C,OAAF,EAAW,CAAX,EAAcsN,KAAd,CAAoB0J,WAAzC;cACMC,mBAAmB5Z,KAAE2C,OAAF,EAAWsH,GAAX,CAAe,cAAf,CAAzB;eACEtH,OAAF,EAAWgE,IAAX,CAAgB,cAAhB,EAAgC+S,YAAhC,EAA8CzP,GAA9C,CAAkD,cAAlD,EAAqEuP,WAAWI,gBAAX,IAA+B,OAAK1D,eAAzG;SAHF,EAZ2B;;aAmBzBrR,SAASgV,cAAX,EAA2BpT,IAA3B,CAAgC,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;cAC5C+W,eAAe1Z,KAAE2C,OAAF,EAAW,CAAX,EAAcsN,KAAd,CAAoB0J,WAAzC;cACMC,mBAAmB5Z,KAAE2C,OAAF,EAAWsH,GAAX,CAAe,cAAf,CAAzB;eACEtH,OAAF,EAAWgE,IAAX,CAAgB,cAAhB,EAAgC+S,YAAhC,EAA8CzP,GAA9C,CAAkD,cAAlD,EAAqEuP,WAAWI,gBAAX,IAA+B,OAAK1D,eAAzG;SAHF,EAnB2B;;YA0BrBoD,gBAAgB7W,SAAS6T,IAAT,CAAcrG,KAAd,CAAoB8I,YAA1C;YACMQ,oBAAoBvZ,KAAE,MAAF,EAAUiK,GAAV,CAAc,eAAd,CAA1B;aACE,MAAF,EAAUtD,IAAV,CAAe,eAAf,EAAgC2S,aAAhC,EAA+CrP,GAA/C,CAAmD,eAAnD,EAAuEuP,WAAWD,iBAAX,IAAgC,KAAKrD,eAA5G;;KA9bc;;WAkclB8B,eAlckB,8BAkcA;;WAEdnT,SAASwU,aAAX,EAA0B5S,IAA1B,CAA+B,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;YAC3CmX,UAAU9Z,KAAE2C,OAAF,EAAWgE,IAAX,CAAgB,eAAhB,CAAhB;;YACI,OAAOmT,OAAP,KAAmB,WAAvB,EAAoC;eAChCnX,OAAF,EAAWsH,GAAX,CAAe,eAAf,EAAgC6P,OAAhC,EAAyCrU,UAAzC,CAAoD,eAApD;;OAHJ,EAFgB;;WAUXZ,SAAS4U,cAAd,UAAiC5U,SAASgV,cAA1C,EAA4DpT,IAA5D,CAAiE,UAACmE,KAAD,EAAQjI,OAAR,EAAoB;YAC7EoX,SAAS/Z,KAAE2C,OAAF,EAAWgE,IAAX,CAAgB,cAAhB,CAAf;;YACI,OAAOoT,MAAP,KAAkB,WAAtB,EAAmC;eAC/BpX,OAAF,EAAWsH,GAAX,CAAe,cAAf,EAA+B8P,MAA/B,EAAuCtU,UAAvC,CAAkD,cAAlD;;OAHJ,EAVgB;;UAkBVqU,UAAU9Z,KAAE,MAAF,EAAU2G,IAAV,CAAe,eAAf,CAAhB;;UACI,OAAOmT,OAAP,KAAmB,WAAvB,EAAoC;aAChC,MAAF,EAAU7P,GAAV,CAAc,eAAd,EAA+B6P,OAA/B,EAAwCrU,UAAxC,CAAmD,eAAnD;;KAtdc;;WA0dlB2T,kBA1dkB,iCA0dG;;UACbY,YAAYvX,SAAS6V,aAAT,CAAuB,KAAvB,CAAlB;gBACUC,SAAV,GAAsBxT,UAAUkV,kBAAhC;eACS3D,IAAT,CAAce,WAAd,CAA0B2C,SAA1B;UACME,iBAAiBF,UAAUrJ,qBAAV,GAAkCwJ,KAAlC,GAA0CH,UAAUI,WAA3E;eACS9D,IAAT,CAAc+D,WAAd,CAA0BL,SAA1B;aACOE,cAAP;KAhegB;;;UAqeX1T,gBAreW,6BAqeMjD,MAreN,EAqecmJ,aAred,EAqe6B;aACtC,KAAKjG,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,uBACDkM,MAAM3M,OADL,EAED9I,KAAE,IAAF,EAAQ2G,IAAR,EAFC,EAGD,OAAOpD,MAAP,KAAkB,QAAlB,IAA8BA,MAH7B,CAAN;;YAMI,CAACoD,IAAL,EAAW;iBACF,IAAI8O,KAAJ,CAAU,IAAV,EAAgBlM,OAAhB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL,EAAamJ,aAAb;SAJF,MAKO,IAAInD,QAAQgG,IAAZ,EAAkB;eAClBA,IAAL,CAAU7C,aAAV;;OAnBG,CAAP;KAtegB;;;;0BAmFG;eACZnI,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OA6aFrG,QAAF,EAAYsE,EAAZ,CAAejC,MAAMkC,cAArB,EAAqCnC,SAAS2C,WAA9C,EAA2D,UAAU7G,KAAV,EAAiB;;;QACtEC,MAAJ;QACMsB,WAAWnC,KAAK2F,sBAAL,CAA4B,IAA5B,CAAjB;;QAEIxD,QAAJ,EAAc;eACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;QAGIqB,SAASvD,KAAEY,MAAF,EAAU+F,IAAV,CAAenC,QAAf,IACX,QADW,gBAERxE,KAAEY,MAAF,EAAU+F,IAAV,EAFQ,EAGR3G,KAAE,IAAF,EAAQ2G,IAAR,EAHQ,CAAf;;QAMI,KAAKiF,OAAL,KAAiB,GAAjB,IAAwB,KAAKA,OAAL,KAAiB,MAA7C,EAAqD;YAC7C9E,cAAN;;;QAGI2K,UAAUzR,KAAEY,MAAF,EAAUa,GAAV,CAAcqD,MAAMmB,IAApB,EAA0B,UAAC4M,SAAD,EAAe;UACnDA,UAAUvN,kBAAV,EAAJ,EAAoC;;;;;cAK5B7D,GAAR,CAAYqD,MAAM+L,MAAlB,EAA0B,YAAM;YAC1B7Q,cAAQa,EAAR,CAAW,UAAX,CAAJ,EAA4B;kBACrBqH,KAAL;;OAFJ;KANc,CAAhB;;UAaM1B,gBAAN,CAAuBlG,IAAvB,CAA4BN,KAAEY,MAAF,CAA5B,EAAuC2C,MAAvC,EAA+C,IAA/C;GA/BF;;;;;;;OAwCE1B,EAAF,CAAKyC,IAAL,IAAamR,MAAMjP,gBAAnB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBuO,KAAzB;;OACE5T,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO8Q,MAAMjP,gBAAb;GAFF;;SAKOiP,KAAP;CApjBY,CAqjBXzV,CArjBW,CAAd;;ACNA;;;;;;;AAOA,IAAMsa,UAAW,UAACta,IAAD,EAAO;;;;;;MAOhBsE,OAAsB,SAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,YAA5B;MACMC,kBAA0BD,QAAhC;MACMG,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MACM2V,eAAsB,YAA5B;MACMC,qBAAqB,IAAIvW,MAAJ,aAAqBsW,YAArB,WAAyC,GAAzC,CAA3B;MAEMxR,cAAc;eACI,SADJ;cAEI,QAFJ;WAGI,2BAHJ;aAII,QAJJ;WAKI,iBALJ;UAMI,SANJ;cAOI,kBAPJ;eAQI,mBARJ;YASI,iBATJ;eAUI,0BAVJ;uBAWI,gBAXJ;cAYI;GAZxB;MAeMmJ,gBAAgB;UACX,MADW;SAEX,KAFW;WAGX,OAHW;YAIX,QAJW;UAKX;GALX;MAQMpJ,UAAU;eACQ,IADR;cAEQ,yCACF,2BADE,GAEF,yCAJN;aAKQ,aALR;WAMQ,EANR;WAOQ,CAPR;UAQQ,KARR;cASQ,KATR;eAUQ,KAVR;YAWQ,CAXR;eAYQ,KAZR;uBAaQ,MAbR;cAcQ;GAdxB;MAiBM2R,aAAa;UACV,MADU;SAEV;GAFT;MAKM3V,QAAQ;mBACQL,SADR;uBAEUA,SAFV;mBAGQA,SAHR;qBAISA,SAJT;2BAKYA,SALZ;qBAMSA,SANT;yBAOWA,SAPX;2BAQYA,SARZ;+BAScA,SATd;+BAUcA;GAV5B;MAaMM,YAAY;UACT,MADS;UAET;GAFT;MAKMF,WAAW;aACC,UADD;mBAEC,gBAFD;WAGC;GAHlB;MAMM6V,UAAU;WACL,OADK;WAEL,OAFK;WAGL,OAHK;YAIL;;;;;;;GAJX;;MAcMJ,OAnGgB;;;qBAoGR3X,OAAZ,EAAqBY,MAArB,EAA6B;;;;;UAKvB,OAAOuP,MAAP,KAAkB,WAAtB,EAAmC;cAC3B,IAAI9E,SAAJ,CAAc,8DAAd,CAAN;OANyB;;;WAUtB2M,UAAL,GAAsB,IAAtB;WACKC,QAAL,GAAsB,CAAtB;WACKC,WAAL,GAAsB,EAAtB;WACKC,cAAL,GAAsB,EAAtB;WACK3I,OAAL,GAAsB,IAAtB,CAd2B;;WAiBtBxP,OAAL,GAAeA,OAAf;WACKY,MAAL,GAAe,KAAKiG,UAAL,CAAgBjG,MAAhB,CAAf;WACKwX,GAAL,GAAe,IAAf;;WAEKC,aAAL;KAzHkB;;;;;;WA4JpBC,MA5JoB,qBA4JX;WACFN,UAAL,GAAkB,IAAlB;KA7JkB;;WAgKpBO,OAhKoB,sBAgKV;WACHP,UAAL,GAAkB,KAAlB;KAjKkB;;WAoKpBQ,aApKoB,4BAoKJ;WACTR,UAAL,GAAkB,CAAC,KAAKA,UAAxB;KArKkB;;WAwKpBtT,MAxKoB,mBAwKb1G,KAxKa,EAwKN;UACR,CAAC,KAAKga,UAAV,EAAsB;;;;UAIlBha,KAAJ,EAAW;YACHya,UAAU,KAAKxH,WAAL,CAAiBpP,QAAjC;YACIqQ,UAAU7U,KAAEW,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4ByU,OAA5B,CAAd;;YAEI,CAACvG,OAAL,EAAc;oBACF,IAAI,KAAKjB,WAAT,CACRjT,MAAM4Q,aADE,EAER,KAAK8J,kBAAL,EAFQ,CAAV;eAIE1a,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4ByU,OAA5B,EAAqCvG,OAArC;;;gBAGMiG,cAAR,CAAuBQ,KAAvB,GAA+B,CAACzG,QAAQiG,cAAR,CAAuBQ,KAAvD;;YAEIzG,QAAQ0G,oBAAR,EAAJ,EAAoC;kBAC1BC,MAAR,CAAe,IAAf,EAAqB3G,OAArB;SADF,MAEO;kBACG4G,MAAR,CAAe,IAAf,EAAqB5G,OAArB;;OAjBJ,MAmBO;YACD7U,KAAE,KAAK0b,aAAL,EAAF,EAAwBxV,QAAxB,CAAiCnB,UAAUkB,IAA3C,CAAJ,EAAsD;eAC/CwV,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;;;;aAIGD,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;KAtMgB;;WA0MpBhW,OA1MoB,sBA0MV;mBACK,KAAKoV,QAAlB;WAEEnV,UAAF,CAAa,KAAK9C,OAAlB,EAA2B,KAAKiR,WAAL,CAAiBpP,QAA5C;WAEE,KAAK7B,OAAP,EAAgBuI,GAAhB,CAAoB,KAAK0I,WAAL,CAAiBnP,SAArC;WACE,KAAK9B,OAAP,EAAgBiD,OAAhB,CAAwB,QAAxB,EAAkCsF,GAAlC,CAAsC,eAAtC;;UAEI,KAAK6P,GAAT,EAAc;aACV,KAAKA,GAAP,EAAYxU,MAAZ;;;WAGGoU,UAAL,GAAsB,IAAtB;WACKC,QAAL,GAAsB,IAAtB;WACKC,WAAL,GAAsB,IAAtB;WACKC,cAAL,GAAsB,IAAtB;;UACI,KAAK3I,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAaoB,OAAb;;;WAGGpB,OAAL,GAAe,IAAf;WACKxP,OAAL,GAAe,IAAf;WACKY,MAAL,GAAe,IAAf;WACKwX,GAAL,GAAe,IAAf;KAjOkB;;WAoOpBxL,IApOoB,mBAoOb;;;UACDvP,KAAE,KAAK2C,OAAP,EAAgBsH,GAAhB,CAAoB,SAApB,MAAmC,MAAvC,EAA+C;cACvC,IAAI9F,KAAJ,CAAU,qCAAV,CAAN;;;UAGI0O,YAAY7S,KAAE8E,KAAF,CAAQ,KAAK8O,WAAL,CAAiB9O,KAAjB,CAAuBmB,IAA/B,CAAlB;;UACI,KAAK0V,aAAL,MAAwB,KAAKhB,UAAjC,EAA6C;aACzC,KAAKhY,OAAP,EAAgBQ,OAAhB,CAAwB0P,SAAxB;YAEM+I,aAAa5b,KAAEiI,QAAF,CACjB,KAAKtF,OAAL,CAAakZ,aAAb,CAA2BpQ,eADV,EAEjB,KAAK9I,OAFY,CAAnB;;YAKIkQ,UAAUvN,kBAAV,MAAkC,CAACsW,UAAvC,EAAmD;;;;YAI7Cb,MAAQ,KAAKW,aAAL,EAAd;YACMI,QAAQ/b,KAAKgc,MAAL,CAAY,KAAKnI,WAAL,CAAiBtP,IAA7B,CAAd;YAEI6D,YAAJ,CAAiB,IAAjB,EAAuB2T,KAAvB;aACKnZ,OAAL,CAAawF,YAAb,CAA0B,kBAA1B,EAA8C2T,KAA9C;aAEKE,UAAL;;YAEI,KAAKzY,MAAL,CAAY0Y,SAAhB,EAA2B;eACvBlB,GAAF,EAAO5N,QAAP,CAAgBpI,UAAUoB,IAA1B;;;YAGI6N,YAAa,OAAO,KAAKzQ,MAAL,CAAYyQ,SAAnB,KAAiC,UAAjC,GACf,KAAKzQ,MAAL,CAAYyQ,SAAZ,CAAsB1T,IAAtB,CAA2B,IAA3B,EAAiCya,GAAjC,EAAsC,KAAKpY,OAA3C,CADe,GAEf,KAAKY,MAAL,CAAYyQ,SAFhB;;YAIMkI,aAAa,KAAKC,cAAL,CAAoBnI,SAApB,CAAnB;;aACKoI,kBAAL,CAAwBF,UAAxB;YAEMG,YAAY,KAAK9Y,MAAL,CAAY8Y,SAAZ,KAA0B,KAA1B,GAAkC5Z,SAAS6T,IAA3C,GAAkDtW,KAAE,KAAKuD,MAAL,CAAY8Y,SAAd,CAApE;aAEEtB,GAAF,EAAOpU,IAAP,CAAY,KAAKiN,WAAL,CAAiBpP,QAA7B,EAAuC,IAAvC;;YAEI,CAACxE,KAAEiI,QAAF,CAAW,KAAKtF,OAAL,CAAakZ,aAAb,CAA2BpQ,eAAtC,EAAuD,KAAKsP,GAA5D,CAAL,EAAuE;eACnEA,GAAF,EAAOtC,QAAP,CAAgB4D,SAAhB;;;aAGA,KAAK1Z,OAAP,EAAgBQ,OAAhB,CAAwB,KAAKyQ,WAAL,CAAiB9O,KAAjB,CAAuBwX,QAA/C;aAEKnK,OAAL,GAAe,IAAIW,MAAJ,CAAW,KAAKnQ,OAAhB,EAAyBoY,GAAzB,EAA8B;qBAChCmB,UADgC;qBAEhC;oBACD;sBACE,KAAK3Y,MAAL,CAAYiR;aAFb;kBAIH;wBACM,KAAKjR,MAAL,CAAYgZ;aALf;mBAOF;uBACI1X,SAAS2X;aARX;6BAUQ;iCACI,KAAKjZ,MAAL,CAAY2P;;WAbQ;oBAgBjC,kBAACvM,IAAD,EAAU;gBACdA,KAAK8V,iBAAL,KAA2B9V,KAAKqN,SAApC,EAA+C;oBACxC0I,4BAAL,CAAkC/V,IAAlC;;WAlBuC;oBAqBjC,kBAACA,IAAD,EAAU;kBACb+V,4BAAL,CAAkC/V,IAAlC;;SAtBW,CAAf;aA0BEoU,GAAF,EAAO5N,QAAP,CAAgBpI,UAAUkB,IAA1B,EAnE2C;;;;;YAyEvC,kBAAkBxD,SAASgJ,eAA/B,EAAgD;eAC5C,MAAF,EAAUyB,QAAV,GAAqBnG,EAArB,CAAwB,WAAxB,EAAqC,IAArC,EAA2C/G,KAAEsT,IAA7C;;;YAGIjD,WAAW,SAAXA,QAAW,GAAM;cACjB,MAAK9M,MAAL,CAAY0Y,SAAhB,EAA2B;kBACpBU,cAAL;;;cAEIC,iBAAiB,MAAK/B,WAA5B;gBACKA,WAAL,GAAuB,IAAvB;eAEE,MAAKlY,OAAP,EAAgBQ,OAAhB,CAAwB,MAAKyQ,WAAL,CAAiB9O,KAAjB,CAAuBwL,KAA/C;;cAEIsM,mBAAmBnC,WAAWoC,GAAlC,EAAuC;kBAChCpB,MAAL,CAAY,IAAZ;;SAVJ;;YAcI1b,KAAKgC,qBAAL,MAAgC/B,KAAE,KAAK+a,GAAP,EAAY7U,QAAZ,CAAqBnB,UAAUoB,IAA/B,CAApC,EAA0E;eACtE,KAAK4U,GAAP,EACGtZ,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwBwY,QAAQwC,oBAFhC;SADF,MAIO;;;;KAzUS;;WA+UpBxN,IA/UoB,iBA+Uf4I,QA/Ue,EA+UL;;;UACP6C,MAAY,KAAKW,aAAL,EAAlB;UACM3G,YAAY/U,KAAE8E,KAAF,CAAQ,KAAK8O,WAAL,CAAiB9O,KAAjB,CAAuB4L,IAA/B,CAAlB;;UACML,WAAW,SAAXA,QAAW,GAAM;YACjB,OAAKwK,WAAL,KAAqBJ,WAAWxU,IAAhC,IAAwC8U,IAAI/F,UAAhD,EAA4D;cACtDA,UAAJ,CAAeqF,WAAf,CAA2BU,GAA3B;;;eAGGgC,cAAL;;eACKpa,OAAL,CAAa4U,eAAb,CAA6B,kBAA7B;;aACE,OAAK5U,OAAP,EAAgBQ,OAAhB,CAAwB,OAAKyQ,WAAL,CAAiB9O,KAAjB,CAAuB+L,MAA/C;;YACI,OAAKsB,OAAL,KAAiB,IAArB,EAA2B;iBACpBA,OAAL,CAAaoB,OAAb;;;YAGE2E,QAAJ,EAAc;;;OAZhB;;WAiBE,KAAKvV,OAAP,EAAgBQ,OAAhB,CAAwB4R,SAAxB;;UAEIA,UAAUzP,kBAAV,EAAJ,EAAoC;;;;WAIlCyV,GAAF,EAAO/U,WAAP,CAAmBjB,UAAUkB,IAA7B,EA1Ba;;;UA8BT,kBAAkBxD,SAASgJ,eAA/B,EAAgD;aAC5C,MAAF,EAAUyB,QAAV,GAAqBhC,GAArB,CAAyB,WAAzB,EAAsC,IAAtC,EAA4ClL,KAAEsT,IAA9C;;;WAGGwH,cAAL,CAAoBJ,QAAQhH,KAA5B,IAAqC,KAArC;WACKoH,cAAL,CAAoBJ,QAAQjS,KAA5B,IAAqC,KAArC;WACKqS,cAAL,CAAoBJ,QAAQsC,KAA5B,IAAqC,KAArC;;UAEIjd,KAAKgC,qBAAL,MACA/B,KAAE,KAAK+a,GAAP,EAAY7U,QAAZ,CAAqBnB,UAAUoB,IAA/B,CADJ,EAC0C;aACtC4U,GAAF,EACGtZ,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;OAFF,MAKO;;;;WAIFiW,WAAL,GAAmB,EAAnB;KA9XkB;;WAiYpBrH,MAjYoB,qBAiYX;UACH,KAAKrB,OAAL,KAAiB,IAArB,EAA2B;aACpBA,OAAL,CAAasB,cAAb;;KAnYgB;;;WAyYpBkI,aAzYoB,4BAyYJ;aACPvY,QAAQ,KAAK6Z,QAAL,EAAR,CAAP;KA1YkB;;WA6YpBb,kBA7YoB,+BA6YDF,UA7YC,EA6YW;WAC3B,KAAKR,aAAL,EAAF,EAAwBvO,QAAxB,CAAoCoN,YAApC,SAAoD2B,UAApD;KA9YkB;;WAiZpBR,aAjZoB,4BAiZJ;WACTX,GAAL,GAAW,KAAKA,GAAL,IAAY/a,KAAE,KAAKuD,MAAL,CAAY2Z,QAAd,EAAwB,CAAxB,CAAvB;aACO,KAAKnC,GAAZ;KAnZkB;;WAsZpBiB,UAtZoB,yBAsZP;UACLmB,OAAOnd,KAAE,KAAK0b,aAAL,EAAF,CAAb;WACK0B,iBAAL,CAAuBD,KAAKpa,IAAL,CAAU8B,SAASwY,aAAnB,CAAvB,EAA0D,KAAKJ,QAAL,EAA1D;WACKjX,WAAL,CAAoBjB,UAAUoB,IAA9B,SAAsCpB,UAAUkB,IAAhD;KAzZkB;;WA4ZpBmX,iBA5ZoB,8BA4ZF1W,QA5ZE,EA4ZQ4W,OA5ZR,EA4ZiB;UAC7BC,OAAO,KAAKha,MAAL,CAAYga,IAAzB;;UACI,OAAOD,OAAP,KAAmB,QAAnB,KAAgCA,QAAQja,QAAR,IAAoBia,QAAQpM,MAA5D,CAAJ,EAAyE;;YAEnEqM,IAAJ,EAAU;cACJ,CAACvd,KAAEsd,OAAF,EAAW3X,MAAX,GAAoB9E,EAApB,CAAuB6F,QAAvB,CAAL,EAAuC;qBAC5B8W,KAAT,GAAiBC,MAAjB,CAAwBH,OAAxB;;SAFJ,MAIO;mBACII,IAAT,CAAc1d,KAAEsd,OAAF,EAAWI,IAAX,EAAd;;OAPJ,MASO;iBACIH,OAAO,MAAP,GAAgB,MAAzB,EAAiCD,OAAjC;;KAxagB;;WA4apBL,QA5aoB,uBA4aT;UACLU,QAAQ,KAAKhb,OAAL,CAAaC,YAAb,CAA0B,qBAA1B,CAAZ;;UAEI,CAAC+a,KAAL,EAAY;gBACF,OAAO,KAAKpa,MAAL,CAAYoa,KAAnB,KAA6B,UAA7B,GACJ,KAAKpa,MAAL,CAAYoa,KAAZ,CAAkBrd,IAAlB,CAAuB,KAAKqC,OAA5B,CADI,GAEJ,KAAKY,MAAL,CAAYoa,KAFhB;;;aAKKA,KAAP;KArbkB;;;WA0bpBxB,cA1boB,2BA0bLnI,SA1bK,EA0bM;aACjB9B,cAAc8B,UAAU5P,WAAV,EAAd,CAAP;KA3bkB;;WA8bpB4W,aA9boB,4BA8bJ;;;UACR4C,WAAW,KAAKra,MAAL,CAAYJ,OAAZ,CAAoB0a,KAApB,CAA0B,GAA1B,CAAjB;eAESC,OAAT,CAAiB,UAAC3a,OAAD,EAAa;YACxBA,YAAY,OAAhB,EAAyB;eACrB,OAAKR,OAAP,EAAgBoE,EAAhB,CACE,OAAK6M,WAAL,CAAiB9O,KAAjB,CAAuB4O,KADzB,EAEE,OAAKnQ,MAAL,CAAYrB,QAFd,EAGE,UAACvB,KAAD;mBAAW,OAAK0G,MAAL,CAAY1G,KAAZ,CAAX;WAHF;SADF,MAMO,IAAIwC,YAAYuX,QAAQqD,MAAxB,EAAgC;cAC/BC,UAAU7a,YAAYuX,QAAQsC,KAApB,GACZ,OAAKpJ,WAAL,CAAiB9O,KAAjB,CAAuByG,UADX,GAEZ,OAAKqI,WAAL,CAAiB9O,KAAjB,CAAuBkS,OAF3B;cAGMiH,WAAW9a,YAAYuX,QAAQsC,KAApB,GACb,OAAKpJ,WAAL,CAAiB9O,KAAjB,CAAuB0G,UADV,GAEb,OAAKoI,WAAL,CAAiB9O,KAAjB,CAAuBoZ,QAF3B;eAIE,OAAKvb,OAAP,EACGoE,EADH,CAEIiX,OAFJ,EAGI,OAAKza,MAAL,CAAYrB,QAHhB,EAII,UAACvB,KAAD;mBAAW,OAAK6a,MAAL,CAAY7a,KAAZ,CAAX;WAJJ,EAMGoG,EANH,CAOIkX,QAPJ,EAQI,OAAK1a,MAAL,CAAYrB,QARhB,EASI,UAACvB,KAAD;mBAAW,OAAK8a,MAAL,CAAY9a,KAAZ,CAAX;WATJ;;;aAaA,OAAKgC,OAAP,EAAgBiD,OAAhB,CAAwB,QAAxB,EAAkCmB,EAAlC,CACE,eADF,EAEE;iBAAM,OAAKuI,IAAL,EAAN;SAFF;OA5BF;;UAkCI,KAAK/L,MAAL,CAAYrB,QAAhB,EAA0B;aACnBqB,MAAL,gBACK,KAAKA,MADV;mBAEW,QAFX;oBAGY;;OAJd,MAMO;aACA4a,SAAL;;KA1egB;;WA8epBA,SA9eoB,wBA8eR;UACJC,YAAY,OAAO,KAAKzb,OAAL,CAAaC,YAAb,CAA0B,qBAA1B,CAAzB;;UACI,KAAKD,OAAL,CAAaC,YAAb,CAA0B,OAA1B,KACDwb,cAAc,QADjB,EAC2B;aACpBzb,OAAL,CAAawF,YAAb,CACE,qBADF,EAEE,KAAKxF,OAAL,CAAaC,YAAb,CAA0B,OAA1B,KAAsC,EAFxC;aAIKD,OAAL,CAAawF,YAAb,CAA0B,OAA1B,EAAmC,EAAnC;;KAtfgB;;WA0fpBqT,MA1foB,mBA0fb7a,KA1fa,EA0fNkU,OA1fM,EA0fG;UACfuG,UAAU,KAAKxH,WAAL,CAAiBpP,QAAjC;gBAEUqQ,WAAW7U,KAAEW,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4ByU,OAA5B,CAArB;;UAEI,CAACvG,OAAL,EAAc;kBACF,IAAI,KAAKjB,WAAT,CACRjT,MAAM4Q,aADE,EAER,KAAK8J,kBAAL,EAFQ,CAAV;aAIE1a,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4ByU,OAA5B,EAAqCvG,OAArC;;;UAGElU,KAAJ,EAAW;gBACDma,cAAR,CACEna,MAAMgH,IAAN,KAAe,SAAf,GAA2B+S,QAAQjS,KAAnC,GAA2CiS,QAAQsC,KADrD,IAEI,IAFJ;;;UAKEhd,KAAE6U,QAAQ6G,aAAR,EAAF,EAA2BxV,QAA3B,CAAoCnB,UAAUkB,IAA9C,KACD4O,QAAQgG,WAAR,KAAwBJ,WAAWxU,IADtC,EAC4C;gBAClC4U,WAAR,GAAsBJ,WAAWxU,IAAjC;;;;mBAIW4O,QAAQ+F,QAArB;cAEQC,WAAR,GAAsBJ,WAAWxU,IAAjC;;UAEI,CAAC4O,QAAQtR,MAAR,CAAe8a,KAAhB,IAAyB,CAACxJ,QAAQtR,MAAR,CAAe8a,KAAf,CAAqB9O,IAAnD,EAAyD;gBAC/CA,IAAR;;;;cAIMqL,QAAR,GAAmBjP,WAAW,YAAM;YAC9BkJ,QAAQgG,WAAR,KAAwBJ,WAAWxU,IAAvC,EAA6C;kBACnCsJ,IAAR;;OAFe,EAIhBsF,QAAQtR,MAAR,CAAe8a,KAAf,CAAqB9O,IAJL,CAAnB;KA5hBkB;;WAmiBpBkM,MAniBoB,mBAmiBb9a,KAniBa,EAmiBNkU,OAniBM,EAmiBG;UACfuG,UAAU,KAAKxH,WAAL,CAAiBpP,QAAjC;gBAEUqQ,WAAW7U,KAAEW,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4ByU,OAA5B,CAArB;;UAEI,CAACvG,OAAL,EAAc;kBACF,IAAI,KAAKjB,WAAT,CACRjT,MAAM4Q,aADE,EAER,KAAK8J,kBAAL,EAFQ,CAAV;aAIE1a,MAAM4Q,aAAR,EAAuB5K,IAAvB,CAA4ByU,OAA5B,EAAqCvG,OAArC;;;UAGElU,KAAJ,EAAW;gBACDma,cAAR,CACEna,MAAMgH,IAAN,KAAe,UAAf,GAA4B+S,QAAQjS,KAApC,GAA4CiS,QAAQsC,KADtD,IAEI,KAFJ;;;UAKEnI,QAAQ0G,oBAAR,EAAJ,EAAoC;;;;mBAIvB1G,QAAQ+F,QAArB;cAEQC,WAAR,GAAsBJ,WAAWoC,GAAjC;;UAEI,CAAChI,QAAQtR,MAAR,CAAe8a,KAAhB,IAAyB,CAACxJ,QAAQtR,MAAR,CAAe8a,KAAf,CAAqB/O,IAAnD,EAAyD;gBAC/CA,IAAR;;;;cAIMsL,QAAR,GAAmBjP,WAAW,YAAM;YAC9BkJ,QAAQgG,WAAR,KAAwBJ,WAAWoC,GAAvC,EAA4C;kBAClCvN,IAAR;;OAFe,EAIhBuF,QAAQtR,MAAR,CAAe8a,KAAf,CAAqB/O,IAJL,CAAnB;KAnkBkB;;WA0kBpBiM,oBA1kBoB,mCA0kBG;WAChB,IAAMpY,OAAX,IAAsB,KAAK2X,cAA3B,EAA2C;YACrC,KAAKA,cAAL,CAAoB3X,OAApB,CAAJ,EAAkC;iBACzB,IAAP;;;;aAIG,KAAP;KAjlBkB;;WAolBpBqG,UAplBoB,uBAolBTjG,MAplBS,EAolBD;4BAEZ,KAAKqQ,WAAL,CAAiB9K,OADtB,EAEK9I,KAAE,KAAK2C,OAAP,EAAgBgE,IAAhB,EAFL,EAGKpD,MAHL;;UAMI,OAAOA,OAAO8a,KAAd,KAAwB,QAA5B,EAAsC;eAC7BA,KAAP,GAAe;gBACP9a,OAAO8a,KADA;gBAEP9a,OAAO8a;SAFf;;;UAME,OAAO9a,OAAOoa,KAAd,KAAwB,QAA5B,EAAsC;eAC7BA,KAAP,GAAepa,OAAOoa,KAAP,CAAatd,QAAb,EAAf;;;UAGE,OAAOkD,OAAO+Z,OAAd,KAA0B,QAA9B,EAAwC;eAC/BA,OAAP,GAAiB/Z,OAAO+Z,OAAP,CAAejd,QAAf,EAAjB;;;WAGG8K,eAAL,CACE7G,IADF,EAEEf,MAFF,EAGE,KAAKqQ,WAAL,CAAiB7K,WAHnB;aAMOxF,MAAP;KAhnBkB;;WAmnBpB8X,kBAnnBoB,iCAmnBC;UACb9X,SAAS,EAAf;;UAEI,KAAKA,MAAT,EAAiB;aACV,IAAM+a,GAAX,IAAkB,KAAK/a,MAAvB,EAA+B;cACzB,KAAKqQ,WAAL,CAAiB9K,OAAjB,CAAyBwV,GAAzB,MAAkC,KAAK/a,MAAL,CAAY+a,GAAZ,CAAtC,EAAwD;mBAC/CA,GAAP,IAAc,KAAK/a,MAAL,CAAY+a,GAAZ,CAAd;;;;;aAKC/a,MAAP;KA9nBkB;;WAioBpBwZ,cAjoBoB,6BAioBH;UACTI,OAAOnd,KAAE,KAAK0b,aAAL,EAAF,CAAb;UACM6C,WAAWpB,KAAKhN,IAAL,CAAU,OAAV,EAAmB5P,KAAnB,CAAyBia,kBAAzB,CAAjB;;UACI+D,aAAa,IAAb,IAAqBA,SAASvb,MAAT,GAAkB,CAA3C,EAA8C;aACvCgD,WAAL,CAAiBuY,SAASC,IAAT,CAAc,EAAd,CAAjB;;KAroBgB;;WAyoBpB9B,4BAzoBoB,yCAyoBS/V,IAzoBT,EAyoBe;WAC5BoW,cAAL;;WACKX,kBAAL,CAAwB,KAAKD,cAAL,CAAoBxV,KAAKqN,SAAzB,CAAxB;KA3oBkB;;WA8oBpB2I,cA9oBoB,6BA8oBH;UACT5B,MAAM,KAAKW,aAAL,EAAZ;UACM+C,sBAAsB,KAAKlb,MAAL,CAAY0Y,SAAxC;;UACIlB,IAAInY,YAAJ,CAAiB,aAAjB,MAAoC,IAAxC,EAA8C;;;;WAG5CmY,GAAF,EAAO/U,WAAP,CAAmBjB,UAAUoB,IAA7B;WACK5C,MAAL,CAAY0Y,SAAZ,GAAwB,KAAxB;WACK3M,IAAL;WACKC,IAAL;WACKhM,MAAL,CAAY0Y,SAAZ,GAAwBwC,mBAAxB;KAxpBkB;;;YA6pBbjY,gBA7pBa,6BA6pBIjD,MA7pBJ,EA6pBY;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;YAEI,CAACoD,IAAD,IAAS,eAAezC,IAAf,CAAoBX,MAApB,CAAb,EAA0C;;;;YAItC,CAACoD,IAAL,EAAW;iBACF,IAAI2T,OAAJ,CAAY,IAAZ,EAAkB/Q,OAAlB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAjBG,CAAP;KA9pBkB;;;;0BA8HC;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;0BAGgB;eACTxE,IAAP;;;;0BAGoB;eACbE,QAAP;;;;0BAGiB;eACVM,KAAP;;;;0BAGqB;eACdL,SAAP;;;;0BAGuB;eAChBsE,WAAP;;;;;;;;;;;;OAoiBFlH,EAAF,CAAKyC,IAAL,IAAagW,QAAQ9T,gBAArB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBoT,OAAzB;;OACEzY,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO2V,QAAQ9T,gBAAf;GAFF;;SAKO8T,OAAP;CAlsBc,CAmsBbta,CAnsBa,EAmsBV8S,MAnsBU,CAAhB;;ACRA;;;;;;;AAOA,IAAM4L,UAAW,UAAC1e,IAAD,EAAO;;;;;;MAOhBsE,OAAsB,SAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,YAA5B;MACMC,kBAA0BD,QAAhC;MACMG,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMiW,eAAsB,YAA5B;MACMC,qBAAsB,IAAIvW,MAAJ,aAAqBsW,YAArB,WAAyC,GAAzC,CAA5B;MAEMzR,uBACDwR,QAAQxR,OADP;eAEQ,OAFR;aAGQ,OAHR;aAIQ,EAJR;cAKQ,yCACA,2BADA,GAEA,kCAFA,GAGA;IARd;MAWMC,2BACDuR,QAAQvR,WADP;aAEM;IAFZ;MAKMhE,YAAY;UACT,MADS;UAET;GAFT;MAKMF,WAAW;WACL,iBADK;aAEL;GAFZ;MAKMC,QAAQ;mBACQL,SADR;uBAEUA,SAFV;mBAGQA,SAHR;qBAISA,SAJT;2BAKYA,SALZ;qBAMSA,SANT;yBAOWA,SAPX;2BAQYA,SARZ;+BAScA,SATd;+BAUcA;;;;;;;GAV5B;;MAmBMia,OA5DgB;;;;;;;;;;;;WA6FpB/C,aA7FoB,4BA6FJ;aACP,KAAKsB,QAAL,MAAmB,KAAK0B,WAAL,EAA1B;KA9FkB;;WAiGpBvC,kBAjGoB,+BAiGDF,UAjGC,EAiGW;WAC3B,KAAKR,aAAL,EAAF,EAAwBvO,QAAxB,CAAoCoN,YAApC,SAAoD2B,UAApD;KAlGkB;;WAqGpBR,aArGoB,4BAqGJ;WACTX,GAAL,GAAW,KAAKA,GAAL,IAAY/a,KAAE,KAAKuD,MAAL,CAAY2Z,QAAd,EAAwB,CAAxB,CAAvB;aACO,KAAKnC,GAAZ;KAvGkB;;WA0GpBiB,UA1GoB,yBA0GP;UACLmB,OAAOnd,KAAE,KAAK0b,aAAL,EAAF,CAAb,CADW;;WAIN0B,iBAAL,CAAuBD,KAAKpa,IAAL,CAAU8B,SAAS+Z,KAAnB,CAAvB,EAAkD,KAAK3B,QAAL,EAAlD;;UACIK,UAAU,KAAKqB,WAAL,EAAd;;UACI,OAAOrB,OAAP,KAAmB,UAAvB,EAAmC;kBACvBA,QAAQhd,IAAR,CAAa,KAAKqC,OAAlB,CAAV;;;WAEGya,iBAAL,CAAuBD,KAAKpa,IAAL,CAAU8B,SAASga,OAAnB,CAAvB,EAAoDvB,OAApD;WAEKtX,WAAL,CAAoBjB,UAAUoB,IAA9B,SAAsCpB,UAAUkB,IAAhD;KArHkB;;;WA0HpB0Y,WA1HoB,0BA0HN;aACL,KAAKhc,OAAL,CAAaC,YAAb,CAA0B,cAA1B,KACL,KAAKW,MAAL,CAAY+Z,OADd;KA3HkB;;WA+HpBP,cA/HoB,6BA+HH;UACTI,OAAOnd,KAAE,KAAK0b,aAAL,EAAF,CAAb;UACM6C,WAAWpB,KAAKhN,IAAL,CAAU,OAAV,EAAmB5P,KAAnB,CAAyBia,kBAAzB,CAAjB;;UACI+D,aAAa,IAAb,IAAqBA,SAASvb,MAAT,GAAkB,CAA3C,EAA8C;aACvCgD,WAAL,CAAiBuY,SAASC,IAAT,CAAc,EAAd,CAAjB;;KAnIgB;;;YAyIbhY,gBAzIa,6BAyIIjD,MAzIJ,EAyIY;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD;;YAEI,CAACoD,IAAD,IAAS,eAAezC,IAAf,CAAoBX,MAApB,CAAb,EAA0C;;;;YAItC,CAACoD,IAAL,EAAW;iBACF,IAAI+X,OAAJ,CAAY,IAAZ,EAAkBnV,OAAlB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAjBG,CAAP;KA1IkB;;;;;0BA+DC;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;0BAGgB;eACTxE,IAAP;;;;0BAGoB;eACbE,QAAP;;;;0BAGiB;eACVM,KAAP;;;;0BAGqB;eACdL,SAAP;;;;0BAGuB;eAChBsE,WAAP;;;;IA5BkBuR,OA5DA;;;;;;;;OAuKpBzY,EAAF,CAAKyC,IAAL,IAAaoa,QAAQlY,gBAArB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyBwX,OAAzB;;OACE7c,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACO+Z,QAAQlY,gBAAf;GAFF;;SAKOkY,OAAP;CA9Kc,CA+Kb1e,CA/Ka,CAAhB;;ACPA;;;;;;;AAOA,IAAM8e,YAAa,UAAC9e,IAAD,EAAO;;;;;;MAOlBsE,OAAqB,WAA3B;MACMC,UAAqB,OAA3B;MACMC,WAAqB,cAA3B;MACMC,kBAAyBD,QAA/B;MACME,eAAqB,WAA3B;MACMC,qBAAqB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA3B;MAEMwE,UAAU;YACL,EADK;YAEL,MAFK;YAGL;GAHX;MAMMC,cAAc;YACT,QADS;YAET,QAFS;YAGT;GAHX;MAMMjE,QAAQ;2BACeL,SADf;uBAEaA,SAFb;4BAGWA,SAAvB,GAAmCC;GAHrC;MAMMK,YAAY;mBACA,eADA;mBAEA,eAFA;YAGA;GAHlB;MAMMF,WAAW;cACG,qBADH;YAEG,SAFH;oBAGG,mBAHH;eAIG,WAJH;eAKG,WALH;gBAMG,kBANH;cAOG,WAPH;oBAQG,gBARH;qBASG;GATpB;MAYMka,eAAe;YACR,QADQ;cAER;;;;;;;GAFb;;MAWMD,SA7DkB;;;uBA8DVnc,OAAZ,EAAqBY,MAArB,EAA6B;;;WACtByB,QAAL,GAAsBrC,OAAtB;WACKqc,cAAL,GAAsBrc,QAAQiJ,OAAR,KAAoB,MAApB,GAA6BxK,MAA7B,GAAsCuB,OAA5D;WACK4G,OAAL,GAAsB,KAAKC,UAAL,CAAgBjG,MAAhB,CAAtB;WACK0L,SAAL,GAAyB,KAAK1F,OAAL,CAAa3I,MAAhB,SAA0BiE,SAASoa,SAAnC,UACG,KAAK1V,OAAL,CAAa3I,MADhB,SAC0BiE,SAASqa,UADnC,WAEG,KAAK3V,OAAL,CAAa3I,MAFhB,SAE0BiE,SAASsa,cAFnC,CAAtB;WAGKC,QAAL,GAAsB,EAAtB;WACKC,QAAL,GAAsB,EAAtB;WACKC,aAAL,GAAsB,IAAtB;WACKC,aAAL,GAAsB,CAAtB;WAEE,KAAKP,cAAP,EAAuBjY,EAAvB,CAA0BjC,MAAM0a,MAAhC,EAAwC,UAAC7e,KAAD;eAAW,MAAK8e,QAAL,CAAc9e,KAAd,CAAX;OAAxC;WAEK+e,OAAL;;WACKD,QAAL;KA7EoB;;;;;;WA4FtBC,OA5FsB,sBA4FZ;;;UACFC,aAAa,KAAKX,cAAL,KAAwB,KAAKA,cAAL,CAAoB5d,MAA5C,GACf2d,aAAaa,MADE,GACOb,aAAac,QADvC;UAGMC,eAAe,KAAKvW,OAAL,CAAawW,MAAb,KAAwB,MAAxB,GACjBJ,UADiB,GACJ,KAAKpW,OAAL,CAAawW,MAD9B;UAGMC,aAAaF,iBAAiBf,aAAac,QAA9B,GACf,KAAKI,aAAL,EADe,GACQ,CAD3B;WAGKb,QAAL,GAAgB,EAAhB;WACKC,QAAL,GAAgB,EAAhB;WAEKE,aAAL,GAAqB,KAAKW,gBAAL,EAArB;UAEMC,UAAUngB,KAAE8L,SAAF,CAAY9L,KAAE,KAAKiP,SAAP,CAAZ,CAAhB;cAGGmR,GADH,CACO,UAACzd,OAAD,EAAa;YACZ/B,MAAJ;YACMyf,iBAAiBtgB,KAAK2F,sBAAL,CAA4B/C,OAA5B,CAAvB;;YAEI0d,cAAJ,EAAoB;mBACTrgB,KAAEqgB,cAAF,EAAkB,CAAlB,CAAT;;;YAGEzf,MAAJ,EAAY;cACJ0f,YAAY1f,OAAO+P,qBAAP,EAAlB;;cACI2P,UAAUnG,KAAV,IAAmBmG,UAAUC,MAAjC,EAAyC;;mBAEhC,CACLvgB,KAAEY,MAAF,EAAUkf,YAAV,IAA0BU,GAA1B,GAAgCR,UAD3B,EAELK,cAFK,CAAP;;;;eAMG,IAAP;OAnBJ,EAqBGrR,MArBH,CAqBU,UAACyR,IAAD;eAAUA,IAAV;OArBV,EAsBGC,IAtBH,CAsBQ,UAACC,CAAD,EAAIC,CAAJ;eAAUD,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAjB;OAtBR,EAuBG9C,OAvBH,CAuBW,UAAC2C,IAAD,EAAU;eACZrB,QAAL,CAAclQ,IAAd,CAAmBuR,KAAK,CAAL,CAAnB;;eACKpB,QAAL,CAAcnQ,IAAd,CAAmBuR,KAAK,CAAL,CAAnB;OAzBJ;KA7GoB;;WA0ItBjb,OA1IsB,sBA0IZ;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACE,KAAKwa,cAAP,EAAuB9T,GAAvB,CAA2BzG,SAA3B;WAEKO,QAAL,GAAsB,IAAtB;WACKga,cAAL,GAAsB,IAAtB;WACKzV,OAAL,GAAsB,IAAtB;WACK0F,SAAL,GAAsB,IAAtB;WACKmQ,QAAL,GAAsB,IAAtB;WACKC,QAAL,GAAsB,IAAtB;WACKC,aAAL,GAAsB,IAAtB;WACKC,aAAL,GAAsB,IAAtB;KArJoB;;;WA0JtB/V,UA1JsB,uBA0JXjG,MA1JW,EA0JH;4BAEZuF,OADL,EAEKvF,MAFL;;UAKI,OAAOA,OAAO3C,MAAd,KAAyB,QAA7B,EAAuC;YACjCgO,KAAK5O,KAAEuD,OAAO3C,MAAT,EAAiBuP,IAAjB,CAAsB,IAAtB,CAAT;;YACI,CAACvB,EAAL,EAAS;eACF7O,KAAKgc,MAAL,CAAYzX,IAAZ,CAAL;eACEf,OAAO3C,MAAT,EAAiBuP,IAAjB,CAAsB,IAAtB,EAA4BvB,EAA5B;;;eAEKhO,MAAP,SAAoBgO,EAApB;;;WAGGzD,eAAL,CAAqB7G,IAArB,EAA2Bf,MAA3B,EAAmCwF,WAAnC;aAEOxF,MAAP;KA3KoB;;WA8KtB0c,aA9KsB,4BA8KN;aACP,KAAKjB,cAAL,KAAwB5d,MAAxB,GACH,KAAK4d,cAAL,CAAoB6B,WADjB,GAC+B,KAAK7B,cAAL,CAAoBxH,SAD1D;KA/KoB;;WAmLtB0I,gBAnLsB,+BAmLH;aACV,KAAKlB,cAAL,CAAoBpG,YAApB,IAAoCrW,KAAKue,GAAL,CACzCre,SAAS6T,IAAT,CAAcsC,YAD2B,EAEzCnW,SAASgJ,eAAT,CAAyBmN,YAFgB,CAA3C;KApLoB;;WA0LtBmI,gBA1LsB,+BA0LH;aACV,KAAK/B,cAAL,KAAwB5d,MAAxB,GACHA,OAAO4f,WADJ,GACkB,KAAKhC,cAAL,CAAoBrO,qBAApB,GAA4C4P,MADrE;KA3LoB;;WA+LtBd,QA/LsB,uBA+LX;UACHjI,YAAe,KAAKyI,aAAL,KAAuB,KAAK1W,OAAL,CAAaiL,MAAzD;;UACMoE,eAAe,KAAKsH,gBAAL,EAArB;;UACMe,YAAe,KAAK1X,OAAL,CAAaiL,MAAb,GACnBoE,YADmB,GAEnB,KAAKmI,gBAAL,EAFF;;UAII,KAAKxB,aAAL,KAAuB3G,YAA3B,EAAyC;aAClC8G,OAAL;;;UAGElI,aAAayJ,SAAjB,EAA4B;YACpBrgB,SAAS,KAAKye,QAAL,CAAc,KAAKA,QAAL,CAAcrc,MAAd,GAAuB,CAArC,CAAf;;YAEI,KAAKsc,aAAL,KAAuB1e,MAA3B,EAAmC;eAC5BsgB,SAAL,CAAetgB,MAAf;;;;;;UAKA,KAAK0e,aAAL,IAAsB9H,YAAY,KAAK4H,QAAL,CAAc,CAAd,CAAlC,IAAsD,KAAKA,QAAL,CAAc,CAAd,IAAmB,CAA7E,EAAgF;aACzEE,aAAL,GAAqB,IAArB;;aACK6B,MAAL;;;;;WAIG,IAAIrS,IAAI,KAAKsQ,QAAL,CAAcpc,MAA3B,EAAmC8L,GAAnC,GAAyC;YACjCsS,iBAAiB,KAAK9B,aAAL,KAAuB,KAAKD,QAAL,CAAcvQ,CAAd,CAAvB,IACnB0I,aAAa,KAAK4H,QAAL,CAActQ,CAAd,CADM,KAElB,OAAO,KAAKsQ,QAAL,CAActQ,IAAI,CAAlB,CAAP,KAAgC,WAAhC,IACG0I,YAAY,KAAK4H,QAAL,CAActQ,IAAI,CAAlB,CAHG,CAAvB;;YAKIsS,cAAJ,EAAoB;eACbF,SAAL,CAAe,KAAK7B,QAAL,CAAcvQ,CAAd,CAAf;;;KAhOgB;;WAqOtBoS,SArOsB,sBAqOZtgB,MArOY,EAqOJ;WACX0e,aAAL,GAAqB1e,MAArB;;WAEKugB,MAAL;;UAEIE,UAAU,KAAKpS,SAAL,CAAe4O,KAAf,CAAqB,GAArB,CAAd,CALgB;;;gBAONwD,QAAQjB,GAAR,CAAY,UAACle,QAAD,EAAc;eACxBA,QAAH,uBAA4BtB,MAA5B,aACGsB,QADH,gBACqBtB,MADrB,SAAP;OADQ,CAAV;UAKM0gB,QAAQthB,KAAEqhB,QAAQ7C,IAAR,CAAa,GAAb,CAAF,CAAd;;UAEI8C,MAAMpb,QAAN,CAAenB,UAAUwc,aAAzB,CAAJ,EAA6C;cACrC3b,OAAN,CAAcf,SAAS2c,QAAvB,EAAiCze,IAAjC,CAAsC8B,SAAS4c,eAA/C,EAAgEtU,QAAhE,CAAyEpI,UAAU8C,MAAnF;cACMsF,QAAN,CAAepI,UAAU8C,MAAzB;OAFF,MAGO;;cAECsF,QAAN,CAAepI,UAAU8C,MAAzB,EAFK;;;cAKC6Z,OAAN,CAAc7c,SAAS8c,cAAvB,EAAuCzX,IAAvC,CAA+CrF,SAASoa,SAAxD,UAAsEpa,SAASqa,UAA/E,EAA6F/R,QAA7F,CAAsGpI,UAAU8C,MAAhH,EALK;;cAOC6Z,OAAN,CAAc7c,SAAS8c,cAAvB,EAAuCzX,IAAvC,CAA4CrF,SAAS+c,SAArD,EAAgE1U,QAAhE,CAAyErI,SAASoa,SAAlF,EAA6F9R,QAA7F,CAAsGpI,UAAU8C,MAAhH;;;WAGA,KAAKmX,cAAP,EAAuB7b,OAAvB,CAA+B2B,MAAM+c,QAArC,EAA+C;uBAC9BjhB;OADjB;KAhQoB;;WAqQtBugB,MArQsB,qBAqQb;WACL,KAAKlS,SAAP,EAAkBD,MAAlB,CAAyBnK,SAASgD,MAAlC,EAA0C7B,WAA1C,CAAsDjB,UAAU8C,MAAhE;KAtQoB;;;cA2QfrB,gBA3Qe,6BA2QEjD,MA3QF,EA2QU;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACvBE,OAAO3G,KAAE,IAAF,EAAQ2G,IAAR,CAAanC,QAAb,CAAX;;YACM+E,UAAU,OAAOhG,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;YAEI,CAACoD,IAAL,EAAW;iBACF,IAAImY,SAAJ,CAAc,IAAd,EAAoBvV,OAApB,CAAP;eACE,IAAF,EAAQ5C,IAAR,CAAanC,QAAb,EAAuBmC,IAAvB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAbG,CAAP;KA5QoB;;;;0BAkFD;eACZgB,OAAP;;;;0BAGmB;eACZuE,OAAP;;;;;;;;;;;;OA8MF1H,MAAF,EAAU2F,EAAV,CAAajC,MAAMuJ,aAAnB,EAAkC,YAAM;QAChCyT,aAAa9hB,KAAE8L,SAAF,CAAY9L,KAAE6E,SAASkd,QAAX,CAAZ,CAAnB;;SAEK,IAAIjT,IAAIgT,WAAW9e,MAAxB,EAAgC8L,GAAhC,GAAsC;UAC9BkT,OAAOhiB,KAAE8hB,WAAWhT,CAAX,CAAF,CAAb;;gBACUtI,gBAAV,CAA2BlG,IAA3B,CAAgC0hB,IAAhC,EAAsCA,KAAKrb,IAAL,EAAtC;;GALJ;;;;;;;OAeE9E,EAAF,CAAKyC,IAAL,IAAawa,UAAUtY,gBAAvB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyB4X,SAAzB;;OACEjd,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOma,UAAUtY,gBAAjB;GAFF;;SAKOsY,SAAP;CA3TgB,CA4Tf9e,CA5Te,CAAlB;;ACPA;;;;;;;AAOA,IAAMiiB,MAAO,UAACjiB,IAAD,EAAO;;;;;;MAOZsE,OAAsB,KAA5B;MACMC,UAAsB,OAA5B;MACMC,WAAsB,QAA5B;MACMC,kBAA0BD,QAAhC;MACME,eAAsB,WAA5B;MACMC,qBAAsB3E,KAAE6B,EAAF,CAAKyC,IAAL,CAA5B;MACMM,sBAAsB,GAA5B;MAEME,QAAQ;mBACYL,SADZ;uBAEcA,SAFd;mBAGYA,SAHZ;qBAIaA,SAJb;8BAKaA,SAAzB,GAAqCC;GALvC;MAQMK,YAAY;mBACA,eADA;YAEA,QAFA;cAGA,UAHA;UAIA,MAJA;UAKA;GALlB;MAQMF,WAAW;cACS,WADT;oBAES,mBAFT;YAGS,SAHT;eAIS,gBAJT;iBAKS,iEALT;qBAMS,kBANT;2BAOS;;;;;;;GAP1B;;MAgBMod,GA/CY;;;iBAgDJtf,OAAZ,EAAqB;WACdqC,QAAL,GAAgBrC,OAAhB;KAjDc;;;;;;WA4DhB4M,IA5DgB,mBA4DT;;;UACD,KAAKvK,QAAL,CAAcgQ,UAAd,IACA,KAAKhQ,QAAL,CAAcgQ,UAAd,CAAyB3R,QAAzB,KAAsC8T,KAAKC,YAD3C,IAEApX,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU8C,MAApC,CAFA,IAGA7H,KAAE,KAAKgF,QAAP,EAAiBkB,QAAjB,CAA0BnB,UAAU0N,QAApC,CAHJ,EAGmD;;;;UAI/C7R,MAAJ;UACIshB,QAAJ;UACMC,cAAcniB,KAAE,KAAKgF,QAAP,EAAiBY,OAAjB,CAAyBf,SAAS8c,cAAlC,EAAkD,CAAlD,CAApB;UACMzf,WAAWnC,KAAK2F,sBAAL,CAA4B,KAAKV,QAAjC,CAAjB;;UAEImd,WAAJ,EAAiB;YACTC,eAAeD,YAAYE,QAAZ,KAAyB,IAAzB,GAAgCxd,SAASyd,SAAzC,GAAqDzd,SAASgD,MAAnF;mBACW7H,KAAE8L,SAAF,CAAY9L,KAAEmiB,WAAF,EAAepf,IAAf,CAAoBqf,YAApB,CAAZ,CAAX;mBACWF,SAASA,SAASlf,MAAT,GAAkB,CAA3B,CAAX;;;UAGI+R,YAAY/U,KAAE8E,KAAF,CAAQA,MAAM4L,IAAd,EAAoB;uBACrB,KAAK1L;OADJ,CAAlB;UAIM6N,YAAY7S,KAAE8E,KAAF,CAAQA,MAAMmB,IAAd,EAAoB;uBACrBic;OADC,CAAlB;;UAIIA,QAAJ,EAAc;aACVA,QAAF,EAAY/e,OAAZ,CAAoB4R,SAApB;;;WAGA,KAAK/P,QAAP,EAAiB7B,OAAjB,CAAyB0P,SAAzB;;UAEIA,UAAUvN,kBAAV,MACDyP,UAAUzP,kBAAV,EADH,EACmC;;;;UAI/BpD,QAAJ,EAAc;iBACHlC,KAAEkC,QAAF,EAAY,CAAZ,CAAT;;;WAGGgf,SAAL,CACE,KAAKlc,QADP,EAEEmd,WAFF;;UAKM9R,WAAW,SAAXA,QAAW,GAAM;YACfkS,cAAcviB,KAAE8E,KAAF,CAAQA,MAAM+L,MAAd,EAAsB;yBACzB,MAAK7L;SADF,CAApB;YAIM0S,aAAa1X,KAAE8E,KAAF,CAAQA,MAAMwL,KAAd,EAAqB;yBACvB4R;SADE,CAAnB;aAIEA,QAAF,EAAY/e,OAAZ,CAAoBof,WAApB;aACE,MAAKvd,QAAP,EAAiB7B,OAAjB,CAAyBuU,UAAzB;OAVF;;UAaI9W,MAAJ,EAAY;aACLsgB,SAAL,CAAetgB,MAAf,EAAuBA,OAAOoU,UAA9B,EAA0C3E,QAA1C;OADF,MAEO;;;KA1HO;;WA+HhB7K,OA/HgB,sBA+HN;WACNC,UAAF,CAAa,KAAKT,QAAlB,EAA4BR,QAA5B;WACKQ,QAAL,GAAgB,IAAhB;KAjIc;;;WAsIhBkc,SAtIgB,sBAsINve,OAtIM,EAsIG0Z,SAtIH,EAsIcnE,QAtId,EAsIwB;;;UAClCsK,cAAJ;;UACInG,UAAUgG,QAAV,KAAuB,IAA3B,EAAiC;yBACdriB,KAAEqc,SAAF,EAAatZ,IAAb,CAAkB8B,SAASyd,SAA3B,CAAjB;OADF,MAEO;yBACYtiB,KAAEqc,SAAF,EAAanP,QAAb,CAAsBrI,SAASgD,MAA/B,CAAjB;;;UAGI4a,SAASD,eAAe,CAAf,CAAf;UACM1R,kBAAkBoH,YACtBnY,KAAKgC,qBAAL,EADsB,IAErB0gB,UAAUziB,KAAEyiB,MAAF,EAAUvc,QAAV,CAAmBnB,UAAUoB,IAA7B,CAFb;;UAIMkK,WAAW,SAAXA,QAAW;eAAM,OAAKqS,mBAAL,CACrB/f,OADqB,EAErB8f,MAFqB,EAGrBvK,QAHqB,CAAN;OAAjB;;UAMIuK,UAAU3R,eAAd,EAA+B;aAC3B2R,MAAF,EACGhhB,GADH,CACO1B,KAAK2B,cADZ,EAC4B2O,QAD5B,EAEGvO,oBAFH,CAEwB8C,mBAFxB;OADF,MAIO;;;KA7JO;;WAkKhB8d,mBAlKgB,gCAkKI/f,OAlKJ,EAkKa8f,MAlKb,EAkKqBvK,QAlKrB,EAkK+B;UACzCuK,MAAJ,EAAY;aACRA,MAAF,EAAUzc,WAAV,CAAyBjB,UAAUkB,IAAnC,SAA2ClB,UAAU8C,MAArD;YAEM8a,gBAAgB3iB,KAAEyiB,OAAOzN,UAAT,EAAqBjS,IAArB,CACpB8B,SAAS+d,qBADW,EAEpB,CAFoB,CAAtB;;YAIID,aAAJ,EAAmB;eACfA,aAAF,EAAiB3c,WAAjB,CAA6BjB,UAAU8C,MAAvC;;;YAGE4a,OAAO7f,YAAP,CAAoB,MAApB,MAAgC,KAApC,EAA2C;iBAClCuF,YAAP,CAAoB,eAApB,EAAqC,KAArC;;;;WAIFxF,OAAF,EAAWwK,QAAX,CAAoBpI,UAAU8C,MAA9B;;UACIlF,QAAQC,YAAR,CAAqB,MAArB,MAAiC,KAArC,EAA4C;gBAClCuF,YAAR,CAAqB,eAArB,EAAsC,IAAtC;;;WAGG0F,MAAL,CAAYlL,OAAZ;WACEA,OAAF,EAAWwK,QAAX,CAAoBpI,UAAUkB,IAA9B;;UAEItD,QAAQqS,UAAR,IACAhV,KAAE2C,QAAQqS,UAAV,EAAsB9O,QAAtB,CAA+BnB,UAAU8d,aAAzC,CADJ,EAC6D;YACrDC,kBAAkB9iB,KAAE2C,OAAF,EAAWiD,OAAX,CAAmBf,SAAS2c,QAA5B,EAAsC,CAAtC,CAAxB;;YACIsB,eAAJ,EAAqB;eACjBA,eAAF,EAAmB/f,IAAnB,CAAwB8B,SAAS4c,eAAjC,EAAkDtU,QAAlD,CAA2DpI,UAAU8C,MAArE;;;gBAGMM,YAAR,CAAqB,eAArB,EAAsC,IAAtC;;;UAGE+P,QAAJ,EAAc;;;KArMA;;;QA4MT1R,gBA5MS,6BA4MQjD,MA5MR,EA4MgB;aACvB,KAAKkD,IAAL,CAAU,YAAY;YACrB6K,QAAQtR,KAAE,IAAF,CAAd;YACI2G,OAAO2K,MAAM3K,IAAN,CAAWnC,QAAX,CAAX;;YAEI,CAACmC,IAAL,EAAW;iBACF,IAAIsb,GAAJ,CAAQ,IAAR,CAAP;gBACMtb,IAAN,CAAWnC,QAAX,EAAqBmC,IAArB;;;YAGE,OAAOpD,MAAP,KAAkB,QAAtB,EAAgC;cAC1B,OAAOoD,KAAKpD,MAAL,CAAP,KAAwB,WAA5B,EAAyC;kBACjC,IAAIyK,SAAJ,wBAAkCzK,MAAlC,QAAN;;;eAEGA,MAAL;;OAbG,CAAP;KA7Mc;;;;0BAsDK;eACZgB,OAAP;;;;;;;;;;;;OA+KF9B,QAAF,EACGsE,EADH,CACMjC,MAAMkC,cADZ,EAC4BnC,SAAS2C,WADrC,EACkD,UAAU7G,KAAV,EAAiB;UACzDmG,cAAN;;QACIN,gBAAJ,CAAqBlG,IAArB,CAA0BN,KAAE,IAAF,CAA1B,EAAmC,MAAnC;GAHJ;;;;;;;OAYE6B,EAAF,CAAKyC,IAAL,IAAa2d,IAAIzb,gBAAjB;OACE3E,EAAF,CAAKyC,IAAL,EAAW4C,WAAX,GAAyB+a,GAAzB;;OACEpgB,EAAF,CAAKyC,IAAL,EAAW6C,UAAX,GAAwB,YAAY;SAChCtF,EAAF,CAAKyC,IAAL,IAAaK,kBAAb;WACOsd,IAAIzb,gBAAX;GAFF;;SAKOyb,GAAP;CAzPU,CA0PTjiB,CA1PS,CAAZ;;ACGA;;;;;;;AAOA,CAAC,UAACA,IAAD,EAAO;MACF,OAAOA,IAAP,KAAa,WAAjB,EAA8B;UACtB,IAAIgO,SAAJ,CAAc,kGAAd,CAAN;;;MAGI+U,UAAU/iB,KAAE6B,EAAF,CAAKqP,MAAL,CAAY2M,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,EAA0BA,KAA1B,CAAgC,GAAhC,CAAhB;MACMmF,WAAW,CAAjB;MACMC,UAAU,CAAhB;MACMC,WAAW,CAAjB;MACMC,WAAW,CAAjB;MACMC,WAAW,CAAjB;;MAEIL,QAAQ,CAAR,IAAaE,OAAb,IAAwBF,QAAQ,CAAR,IAAaG,QAArC,IAAiDH,QAAQ,CAAR,MAAeC,QAAf,IAA2BD,QAAQ,CAAR,MAAeG,QAA1C,IAAsDH,QAAQ,CAAR,IAAaI,QAApH,IAAgIJ,QAAQ,CAAR,KAAcK,QAAlJ,EAA4J;UACpJ,IAAIjf,KAAJ,CAAU,8EAAV,CAAN;;CAbJ,EAeGnE,CAfH;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.min.js b/library/bootstrap/js/bootstrap.min.js
index e1874769b..534d53343 100644
--- a/library/bootstrap/js/bootstrap.min.js
+++ b/library/bootstrap/js/bootstrap.min.js
@@ -1,6 +1,7 @@
/*!
- * Bootstrap v4.0.0-beta (https://getbootstrap.com)
- * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");!function(t){var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),function(){function t(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=function(t){function e(t){return{}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function n(t){return(t[0]||t).nodeType}function i(){return{bindType:s.end,delegateType:s.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}}function o(){if(window.QUnit)return!1;var t=document.createElement("bootstrap");for(var e in a)if(void 0!==t.style[e])return{end:a[e]};return!1}function r(e){var n=this,i=!1;return t(this).one(l.TRANSITION_END,function(){i=!0}),setTimeout(function(){i||l.triggerTransitionEnd(n)},e),this}var s=!1,a={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n=e.getAttribute("data-target");n&&"#"!==n||(n=e.getAttribute("href")||"");try{return t(n).length>0?n:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(e){t(e).trigger(s.end)},supportsTransitionEnd:function(){return Boolean(s)},typeCheckConfig:function(t,i,o){for(var r in o)if(o.hasOwnProperty(r)){var s=o[r],a=i[r],l=a&&n(a)?"element":e(a);if(!new RegExp(s).test(l))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+l+'" but expected type "'+s+'".')}}};return s=o(),t.fn.emulateTransitionEnd=r,l.supportsTransitionEnd()&&(t.event.special[l.TRANSITION_END]=i()),l}(jQuery),s=(function(t){var e="alert",i=t.fn[e],s={DISMISS:'[data-dismiss="alert"]'},a={CLOSE:"close.bs.alert",CLOSED:"closed.bs.alert",CLICK_DATA_API:"click.bs.alert.data-api"},l={ALERT:"alert",FADE:"fade",SHOW:"show"},h=function(){function e(t){n(this,e),this._element=t}return e.prototype.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.prototype.dispose=function(){t.removeData(this._element,"bs.alert"),this._element=null},e.prototype._getRootElement=function(e){var n=r.getSelectorFromElement(e),i=!1;return n&&(i=t(n)[0]),i||(i=t(e).closest("."+l.ALERT)[0]),i},e.prototype._triggerCloseEvent=function(e){var n=t.Event(a.CLOSE);return t(e).trigger(n),n},e.prototype._removeElement=function(e){var n=this;t(e).removeClass(l.SHOW),r.supportsTransitionEnd()&&t(e).hasClass(l.FADE)?t(e).one(r.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(150):this._destroyElement(e)},e.prototype._destroyElement=function(e){t(e).detach().trigger(a.CLOSED).remove()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.alert");o||(o=new e(this),i.data("bs.alert",o)),"close"===n&&o[n](this)})},e._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DISMISS,h._handleDismiss(new h)),t.fn[e]=h._jQueryInterface,t.fn[e].Constructor=h,t.fn[e].noConflict=function(){return t.fn[e]=i,h._jQueryInterface}}(jQuery),function(t){var e="button",i=t.fn[e],r={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},s={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},a={CLICK_DATA_API:"click.bs.button.data-api",FOCUS_BLUR_DATA_API:"focus.bs.button.data-api blur.bs.button.data-api"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.toggle=function(){var e=!0,n=!0,i=t(this._element).closest(s.DATA_TOGGLE)[0];if(i){var o=t(this._element).find(s.INPUT)[0];if(o){if("radio"===o.type)if(o.checked&&t(this._element).hasClass(r.ACTIVE))e=!1;else{var a=t(i).find(s.ACTIVE)[0];a&&t(a).removeClass(r.ACTIVE)}if(e){if(o.hasAttribute("disabled")||i.hasAttribute("disabled")||o.classList.contains("disabled")||i.classList.contains("disabled"))return;o.checked=!t(this._element).hasClass(r.ACTIVE),t(o).trigger("change")}o.focus(),n=!1}}n&&this._element.setAttribute("aria-pressed",!t(this._element).hasClass(r.ACTIVE)),e&&t(this._element).toggleClass(r.ACTIVE)},e.prototype.dispose=function(){t.removeData(this._element,"bs.button"),this._element=null},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data("bs.button");i||(i=new e(this),t(this).data("bs.button",i)),"toggle"===n&&i[n]()})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DATA_TOGGLE_CARROT,function(e){e.preventDefault();var n=e.target;t(n).hasClass(r.BUTTON)||(n=t(n).closest(s.BUTTON)),l._jQueryInterface.call(t(n),"toggle")}).on(a.FOCUS_BLUR_DATA_API,s.DATA_TOGGLE_CARROT,function(e){var n=t(e.target).closest(s.BUTTON)[0];t(n).toggleClass(r.FOCUS,/^focus(in)?$/.test(e.type))}),t.fn[e]=l._jQueryInterface,t.fn[e].Constructor=l,t.fn[e].noConflict=function(){return t.fn[e]=i,l._jQueryInterface}}(jQuery),function(t){var e="carousel",s="bs.carousel",a="."+s,l=t.fn[e],h={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},c={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},u={NEXT:"next",PREV:"prev",LEFT:"left",RIGHT:"right"},d={SLIDE:"slide"+a,SLID:"slid"+a,KEYDOWN:"keydown"+a,MOUSEENTER:"mouseenter"+a,MOUSELEAVE:"mouseleave"+a,TOUCHEND:"touchend"+a,LOAD_DATA_API:"load.bs.carousel.data-api",CLICK_DATA_API:"click.bs.carousel.data-api"},f={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"carousel-item-right",LEFT:"carousel-item-left",NEXT:"carousel-item-next",PREV:"carousel-item-prev",ITEM:"carousel-item"},p={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},_=function(){function l(e,i){n(this,l),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(i),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(p.INDICATORS)[0],this._addEventListeners()}return l.prototype.next=function(){this._isSliding||this._slide(u.NEXT)},l.prototype.nextWhenVisible=function(){document.hidden||this.next()},l.prototype.prev=function(){this._isSliding||this._slide(u.PREV)},l.prototype.pause=function(e){e||(this._isPaused=!0),t(this._element).find(p.NEXT_PREV)[0]&&r.supportsTransitionEnd()&&(r.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},l.prototype.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},l.prototype.to=function(e){var n=this;this._activeElement=t(this._element).find(p.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var o=e>i?u.NEXT:u.PREV;this._slide(o,this._items[e])}},l.prototype.dispose=function(){t(this._element).off(a),t.removeData(this._element,s),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},l.prototype._getConfig=function(n){return n=t.extend({},h,n),r.typeCheckConfig(e,n,c),n},l.prototype._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},l.prototype._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next();break;default:return}},l.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(p.ITEM)),this._items.indexOf(e)},l.prototype._getItemByDirection=function(t,e){var n=t===u.NEXT,i=t===u.PREV,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===u.PREV?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},l.prototype._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),o=this._getItemIndex(t(this._element).find(p.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:o,to:i});return t(this._element).trigger(r),r},l.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(p.ACTIVE).removeClass(f.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(f.ACTIVE)}},l.prototype._slide=function(e,n){var i=this,o=t(this._element).find(p.ACTIVE_ITEM)[0],s=this._getItemIndex(o),a=n||o&&this._getItemByDirection(e,o),l=this._getItemIndex(a),h=Boolean(this._interval),c=void 0,_=void 0,g=void 0;if(e===u.NEXT?(c=f.LEFT,_=f.NEXT,g=u.LEFT):(c=f.RIGHT,_=f.PREV,g=u.RIGHT),a&&t(a).hasClass(f.ACTIVE))this._isSliding=!1;else if(!this._triggerSlideEvent(a,g).isDefaultPrevented()&&o&&a){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(a);var m=t.Event(d.SLID,{relatedTarget:a,direction:g,from:s,to:l});r.supportsTransitionEnd()&&t(this._element).hasClass(f.SLIDE)?(t(a).addClass(_),r.reflow(a),t(o).addClass(c),t(a).addClass(c),t(o).one(r.TRANSITION_END,function(){t(a).removeClass(c+" "+_).addClass(f.ACTIVE),t(o).removeClass(f.ACTIVE+" "+_+" "+c),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(m)},0)}).emulateTransitionEnd(600)):(t(o).removeClass(f.ACTIVE),t(a).addClass(f.ACTIVE),this._isSliding=!1,t(this._element).trigger(m)),h&&this.cycle()}},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(s),o=t.extend({},h,t(this).data());"object"===(void 0===e?"undefined":i(e))&&t.extend(o,e);var r="string"==typeof e?e:o.slide;if(n||(n=new l(this,o),t(this).data(s,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new Error('No method named "'+r+'"');n[r]()}else o.interval&&(n.pause(),n.cycle())})},l._dataApiClickHandler=function(e){var n=r.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(f.CAROUSEL)){var o=t.extend({},t(i).data(),t(this).data()),a=this.getAttribute("data-slide-to");a&&(o.interval=!1),l._jQueryInterface.call(t(i),o),a&&t(i).data(s).to(a),e.preventDefault()}}},o(l,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return h}}]),l}();t(document).on(d.CLICK_DATA_API,p.DATA_SLIDE,_._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(p.DATA_RIDE).each(function(){var e=t(this);_._jQueryInterface.call(e,e.data())})}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=l,_._jQueryInterface}}(jQuery),function(t){var e="collapse",s="bs.collapse",a=t.fn[e],l={toggle:!0,parent:""},h={toggle:"boolean",parent:"string"},c={SHOW:"show.bs.collapse",SHOWN:"shown.bs.collapse",HIDE:"hide.bs.collapse",HIDDEN:"hidden.bs.collapse",CLICK_DATA_API:"click.bs.collapse.data-api"},u={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},d={WIDTH:"width",HEIGHT:"height"},f={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},p=function(){function a(e,i){n(this,a),this._isTransitioning=!1,this._element=e,this._config=this._getConfig(i),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var o=t(f.DATA_TOGGLE),s=0;s<o.length;s++){var l=o[s],h=r.getSelectorFromElement(l);null!==h&&t(h).filter(e).length>0&&this._triggerArray.push(l)}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return a.prototype.toggle=function(){t(this._element).hasClass(u.SHOW)?this.hide():this.show()},a.prototype.show=function(){var e=this;if(!this._isTransitioning&&!t(this._element).hasClass(u.SHOW)){var n=void 0,i=void 0;if(this._parent&&((n=t.makeArray(t(this._parent).children().children(f.ACTIVES))).length||(n=null)),!(n&&(i=t(n).data(s))&&i._isTransitioning)){var o=t.Event(c.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){n&&(a._jQueryInterface.call(t(n),"hide"),i||t(n).data(s,null));var l=this._getDimension();t(this._element).removeClass(u.COLLAPSE).addClass(u.COLLAPSING),this._element.style[l]=0,this._triggerArray.length&&t(this._triggerArray).removeClass(u.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var h=function(){t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).addClass(u.SHOW),e._element.style[l]="",e.setTransitioning(!1),t(e._element).trigger(c.SHOWN)};if(r.supportsTransitionEnd()){var d="scroll"+(l[0].toUpperCase()+l.slice(1));t(this._element).one(r.TRANSITION_END,h).emulateTransitionEnd(600),this._element.style[l]=this._element[d]+"px"}else h()}}}},a.prototype.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(u.SHOW)){var n=t.Event(c.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",r.reflow(this._element),t(this._element).addClass(u.COLLAPSING).removeClass(u.COLLAPSE).removeClass(u.SHOW),this._triggerArray.length)for(var o=0;o<this._triggerArray.length;o++){var s=this._triggerArray[o],a=r.getSelectorFromElement(s);null!==a&&(t(a).hasClass(u.SHOW)||t(s).addClass(u.COLLAPSED).attr("aria-expanded",!1))}this.setTransitioning(!0);var l=function(){e.setTransitioning(!1),t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).trigger(c.HIDDEN)};this._element.style[i]="",r.supportsTransitionEnd()?t(this._element).one(r.TRANSITION_END,l).emulateTransitionEnd(600):l()}}},a.prototype.setTransitioning=function(t){this._isTransitioning=t},a.prototype.dispose=function(){t.removeData(this._element,s),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},a.prototype._getConfig=function(n){return n=t.extend({},l,n),n.toggle=Boolean(n.toggle),r.typeCheckConfig(e,n,h),n},a.prototype._getDimension=function(){return t(this._element).hasClass(d.WIDTH)?d.WIDTH:d.HEIGHT},a.prototype._getParent=function(){var e=this,n=t(this._config.parent)[0],i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(a._getTargetFromElement(n),[n])}),n},a.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(u.SHOW);n.length&&t(n).toggleClass(u.COLLAPSED,!i).attr("aria-expanded",i)}},a._getTargetFromElement=function(e){var n=r.getSelectorFromElement(e);return n?t(n)[0]:null},a._jQueryInterface=function(e){return this.each(function(){var n=t(this),o=n.data(s),r=t.extend({},l,n.data(),"object"===(void 0===e?"undefined":i(e))&&e);if(!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new a(this,r),n.data(s,o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(c.CLICK_DATA_API,f.DATA_TOGGLE,function(e){/input|textarea/i.test(e.target.tagName)||e.preventDefault();var n=t(this),i=r.getSelectorFromElement(this);t(i).each(function(){var e=t(this),i=e.data(s)?"toggle":n.data();p._jQueryInterface.call(e,i)})}),t.fn[e]=p._jQueryInterface,t.fn[e].Constructor=p,t.fn[e].noConflict=function(){return t.fn[e]=a,p._jQueryInterface}}(jQuery),function(t){if("undefined"==typeof Popper)throw new Error("Bootstrap dropdown require Popper.js (https://popper.js.org)");var e="dropdown",s="bs.dropdown",a="."+s,l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK:"click"+a,CLICK_DATA_API:"click.bs.dropdown.data-api",KEYDOWN_DATA_API:"keydown.bs.dropdown.data-api",KEYUP_DATA_API:"keyup.bs.dropdown.data-api"},u={DISABLED:"disabled",SHOW:"show",DROPUP:"dropup",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left"},d={DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",MENU:".dropdown-menu",NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:".dropdown-menu .dropdown-item:not(.disabled)"},f={TOP:"top-start",TOPEND:"top-end",BOTTOM:"bottom-start",BOTTOMEND:"bottom-end"},p={placement:f.BOTTOM,offset:0,flip:!0},_={placement:"string",offset:"(number|string)",flip:"boolean"},g=function(){function l(t,e){n(this,l),this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}return l.prototype.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u.DISABLED)){var e=l._getParentFromElement(this._element),n=t(this._menu).hasClass(u.SHOW);if(l._clearMenus(),!n){var i={relatedTarget:this._element},o=t.Event(c.SHOW,i);if(t(e).trigger(o),!o.isDefaultPrevented()){var r=this._element;t(e).hasClass(u.DROPUP)&&(t(this._menu).hasClass(u.MENULEFT)||t(this._menu).hasClass(u.MENURIGHT))&&(r=e),this._popper=new Popper(r,this._menu,this._getPopperConfig()),"ontouchstart"in document.documentElement&&!t(e).closest(d.NAVBAR_NAV).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(u.SHOW),t(e).toggleClass(u.SHOW).trigger(t.Event(c.SHOWN,i))}}}},l.prototype.dispose=function(){t.removeData(this._element,s),t(this._element).off(a),this._element=null,this._menu=null,null!==this._popper&&this._popper.destroy(),this._popper=null},l.prototype.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l.prototype._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l.prototype._getConfig=function(n){var i=t(this._element).data();return void 0!==i.placement&&(i.placement=f[i.placement.toUpperCase()]),n=t.extend({},this.constructor.Default,t(this._element).data(),n),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},l.prototype._getMenuElement=function(){if(!this._menu){var e=l._getParentFromElement(this._element);this._menu=t(e).find(d.MENU)[0]}return this._menu},l.prototype._getPlacement=function(){var e=t(this._element).parent(),n=this._config.placement;return e.hasClass(u.DROPUP)||this._config.placement===f.TOP?(n=f.TOP,t(this._menu).hasClass(u.MENURIGHT)&&(n=f.TOPEND)):t(this._menu).hasClass(u.MENURIGHT)&&(n=f.BOTTOMEND),n},l.prototype._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l.prototype._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:{offset:this._config.offset},flip:{enabled:this._config.flip}}};return this._inNavbar&&(t.modifiers.applyStyle={enabled:!this._inNavbar}),t},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(s),o="object"===(void 0===e?"undefined":i(e))?e:null;if(n||(n=new l(this,o),t(this).data(s,n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},l._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(d.DATA_TOGGLE)),i=0;i<n.length;i++){var o=l._getParentFromElement(n[i]),r=t(n[i]).data(s),a={relatedTarget:n[i]};if(r){var h=r._menu;if(t(o).hasClass(u.SHOW)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&t.contains(o,e.target))){var f=t.Event(c.HIDE,a);t(o).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),n[i].setAttribute("aria-expanded","false"),t(h).removeClass(u.SHOW),t(o).removeClass(u.SHOW).trigger(t.Event(c.HIDDEN,a)))}}}},l._getParentFromElement=function(e){var n=void 0,i=r.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},l._dataApiKeydownHandler=function(e){if(!(!h.test(e.which)||/button/i.test(e.target.tagName)&&32===e.which||/input|textarea/i.test(e.target.tagName)||(e.preventDefault(),e.stopPropagation(),this.disabled||t(this).hasClass(u.DISABLED)))){var n=l._getParentFromElement(this),i=t(n).hasClass(u.SHOW);if((i||27===e.which&&32===e.which)&&(!i||27!==e.which&&32!==e.which)){var o=t(n).find(d.VISIBLE_ITEMS).get();if(o.length){var r=o.indexOf(e.target);38===e.which&&r>0&&r--,40===e.which&&r<o.length-1&&r++,r<0&&(r=0),o[r].focus()}}else{if(27===e.which){var s=t(n).find(d.DATA_TOGGLE)[0];t(s).trigger("focus")}t(this).trigger("click")}}},o(l,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return p}},{key:"DefaultType",get:function(){return _}}]),l}();t(document).on(c.KEYDOWN_DATA_API,d.DATA_TOGGLE,g._dataApiKeydownHandler).on(c.KEYDOWN_DATA_API,d.MENU,g._dataApiKeydownHandler).on(c.CLICK_DATA_API+" "+c.KEYUP_DATA_API,g._clearMenus).on(c.CLICK_DATA_API,d.DATA_TOGGLE,function(e){e.preventDefault(),e.stopPropagation(),g._jQueryInterface.call(t(this),"toggle")}).on(c.CLICK_DATA_API,d.FORM_CHILD,function(t){t.stopPropagation()}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=l,g._jQueryInterface}}(jQuery),function(t){var e="modal",s=".bs.modal",a=t.fn[e],l={backdrop:!0,keyboard:!0,focus:!0,show:!0},h={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},c={HIDE:"hide.bs.modal",HIDDEN:"hidden.bs.modal",SHOW:"show.bs.modal",SHOWN:"shown.bs.modal",FOCUSIN:"focusin.bs.modal",RESIZE:"resize.bs.modal",CLICK_DISMISS:"click.dismiss.bs.modal",KEYDOWN_DISMISS:"keydown.dismiss.bs.modal",MOUSEUP_DISMISS:"mouseup.dismiss.bs.modal",MOUSEDOWN_DISMISS:"mousedown.dismiss.bs.modal",CLICK_DATA_API:"click.bs.modal.data-api"},u={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",SHOW:"show"},d={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},f=function(){function a(e,i){n(this,a),this._config=this._getConfig(i),this._element=e,this._dialog=t(e).find(d.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}return a.prototype.toggle=function(t){return this._isShown?this.hide():this.show(t)},a.prototype.show=function(e){var n=this;if(!this._isTransitioning){r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)&&(this._isTransitioning=!0);var i=t.Event(c.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),t(document.body).addClass(u.OPEN),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(c.CLICK_DISMISS,d.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(c.MOUSEDOWN_DISMISS,function(){t(n._element).one(c.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},a.prototype.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);i&&(this._isTransitioning=!0);var o=t.Event(c.HIDE);t(this._element).trigger(o),this._isShown&&!o.isDefaultPrevented()&&(this._isShown=!1,this._setEscapeEvent(),this._setResizeEvent(),t(document).off(c.FOCUSIN),t(this._element).removeClass(u.SHOW),t(this._element).off(c.CLICK_DISMISS),t(this._dialog).off(c.MOUSEDOWN_DISMISS),i?t(this._element).one(r.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal())}},a.prototype.dispose=function(){t.removeData(this._element,"bs.modal"),t(window,document,this._element,this._backdrop).off(s),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},a.prototype.handleUpdate=function(){this._adjustDialog()},a.prototype._getConfig=function(n){return n=t.extend({},l,n),r.typeCheckConfig(e,n,h),n},a.prototype._showElement=function(e){var n=this,i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&r.reflow(this._element),t(this._element).addClass(u.SHOW),this._config.focus&&this._enforceFocus();var o=t.Event(c.SHOWN,{relatedTarget:e}),s=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(o)};i?t(this._dialog).one(r.TRANSITION_END,s).emulateTransitionEnd(300):s()},a.prototype._enforceFocus=function(){var e=this;t(document).off(c.FOCUSIN).on(c.FOCUSIN,function(n){document===n.target||e._element===n.target||t(e._element).has(n.target).length||e._element.focus()})},a.prototype._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(c.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||t(this._element).off(c.KEYDOWN_DISMISS)},a.prototype._setResizeEvent=function(){var e=this;this._isShown?t(window).on(c.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(c.RESIZE)},a.prototype._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(u.OPEN),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(c.HIDDEN)})},a.prototype._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},a.prototype._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(u.FADE)?u.FADE:"";if(this._isShown&&this._config.backdrop){var o=r.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=u.BACKDROP,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(c.CLICK_DISMISS,function(t){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),o&&r.reflow(this._backdrop),t(this._backdrop).addClass(u.SHOW),!e)return;if(!o)return void e();t(this._backdrop).one(r.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(u.SHOW);var s=function(){n._removeBackdrop(),e&&e()};r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)?t(this._backdrop).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s()}else e&&e()},a.prototype._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},a.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},a.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},a.prototype._setScrollbar=function(){var e=this;if(this._isBodyOverflowing){t(d.FIXED_CONTENT).each(function(n,i){var o=t(i)[0].style.paddingRight,r=t(i).css("padding-right");t(i).data("padding-right",o).css("padding-right",parseFloat(r)+e._scrollbarWidth+"px")}),t(d.NAVBAR_TOGGLER).each(function(n,i){var o=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",o).css("margin-right",parseFloat(r)+e._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=t("body").css("padding-right");t("body").data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}},a.prototype._resetScrollbar=function(){t(d.FIXED_CONTENT).each(function(e,n){var i=t(n).data("padding-right");void 0!==i&&t(n).css("padding-right",i).removeData("padding-right")}),t(d.NAVBAR_TOGGLER).each(function(e,n){var i=t(n).data("margin-right");void 0!==i&&t(n).css("margin-right",i).removeData("margin-right")});var e=t("body").data("padding-right");void 0!==e&&t("body").css("padding-right",e).removeData("padding-right")},a.prototype._getScrollbarWidth=function(){var t=document.createElement("div");t.className=u.SCROLLBAR_MEASURER,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},a._jQueryInterface=function(e,n){return this.each(function(){var o=t(this).data("bs.modal"),r=t.extend({},a.Default,t(this).data(),"object"===(void 0===e?"undefined":i(e))&&e);if(o||(o=new a(this,r),t(this).data("bs.modal",o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e](n)}else r.show&&o.show(n)})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(c.CLICK_DATA_API,d.DATA_TOGGLE,function(e){var n=this,i=void 0,o=r.getSelectorFromElement(this);o&&(i=t(o)[0]);var s=t(i).data("bs.modal")?"toggle":t.extend({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var a=t(i).one(c.SHOW,function(e){e.isDefaultPrevented()||a.one(c.HIDDEN,function(){t(n).is(":visible")&&n.focus()})});f._jQueryInterface.call(t(i),s,this)}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=a,f._jQueryInterface}}(jQuery),function(t){var e="scrollspy",s=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate.bs.scrollspy",SCROLL:"scroll.bs.scrollspy",LOAD_DATA_API:"load.bs.scrollspy.data-api"},c={DROPDOWN_ITEM:"dropdown-item",DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},u={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d={OFFSET:"offset",POSITION:"position"},f=function(){function s(e,i){var o=this;n(this,s),this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(i),this._selector=this._config.target+" "+u.NAV_LINKS+","+this._config.target+" "+u.LIST_ITEMS+","+this._config.target+" "+u.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return o._process(t)}),this.refresh(),this._process()}return s.prototype.refresh=function(){var e=this,n=this._scrollElement!==this._scrollElement.window?d.POSITION:d.OFFSET,i="auto"===this._config.method?n:this._config.method,o=i===d.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n=void 0,s=r.getSelectorFromElement(e);if(s&&(n=t(s)[0]),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[t(n)[i]().top+o,s]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},s.prototype.dispose=function(){t.removeData(this._element,"bs.scrollspy"),t(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},s.prototype._getConfig=function(n){if("string"!=typeof(n=t.extend({},a,n)).target){var i=t(n.target).attr("id");i||(i=r.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return r.typeCheckConfig(e,n,l),n},s.prototype._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},s.prototype._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},s.prototype._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},s.prototype._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},s.prototype._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(c.DROPDOWN_ITEM)?(i.closest(u.DROPDOWN).find(u.DROPDOWN_TOGGLE).addClass(c.ACTIVE),i.addClass(c.ACTIVE)):(i.addClass(c.ACTIVE),i.parents(u.NAV_LIST_GROUP).prev(u.NAV_LINKS+", "+u.LIST_ITEMS).addClass(c.ACTIVE)),t(this._scrollElement).trigger(h.ACTIVATE,{relatedTarget:e})},s.prototype._clear=function(){t(this._selector).filter(u.ACTIVE).removeClass(c.ACTIVE)},s._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.scrollspy"),o="object"===(void 0===e?"undefined":i(e))&&e;if(n||(n=new s(this,o),t(this).data("bs.scrollspy",n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(s,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return a}}]),s}();t(window).on(h.LOAD_DATA_API,function(){for(var e=t.makeArray(t(u.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);f._jQueryInterface.call(i,i.data())}}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=s,f._jQueryInterface}}(jQuery),function(t){var e=t.fn.tab,i={HIDE:"hide.bs.tab",HIDDEN:"hidden.bs.tab",SHOW:"show.bs.tab",SHOWN:"shown.bs.tab",CLICK_DATA_API:"click.bs.tab.data-api"},s={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},a={DROPDOWN:".dropdown",NAV_LIST_GROUP:".nav, .list-group",ACTIVE:".active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(s.ACTIVE)||t(this._element).hasClass(s.DISABLED))){var n=void 0,o=void 0,l=t(this._element).closest(a.NAV_LIST_GROUP)[0],h=r.getSelectorFromElement(this._element);l&&(o=t.makeArray(t(l).find(a.ACTIVE)),o=o[o.length-1]);var c=t.Event(i.HIDE,{relatedTarget:this._element}),u=t.Event(i.SHOW,{relatedTarget:o});if(o&&t(o).trigger(c),t(this._element).trigger(u),!u.isDefaultPrevented()&&!c.isDefaultPrevented()){h&&(n=t(h)[0]),this._activate(this._element,l);var d=function(){var n=t.Event(i.HIDDEN,{relatedTarget:e._element}),r=t.Event(i.SHOWN,{relatedTarget:o});t(o).trigger(n),t(e._element).trigger(r)};n?this._activate(n,n.parentNode,d):d()}}},e.prototype.dispose=function(){t.removeData(this._element,"bs.tab"),this._element=null},e.prototype._activate=function(e,n,i){var o=this,l=t(n).find(a.ACTIVE)[0],h=i&&r.supportsTransitionEnd()&&l&&t(l).hasClass(s.FADE),c=function(){return o._transitionComplete(e,l,h,i)};l&&h?t(l).one(r.TRANSITION_END,c).emulateTransitionEnd(150):c(),l&&t(l).removeClass(s.SHOW)},e.prototype._transitionComplete=function(e,n,i,o){if(n){t(n).removeClass(s.ACTIVE);var l=t(n.parentNode).find(a.DROPDOWN_ACTIVE_CHILD)[0];l&&t(l).removeClass(s.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0),i?(r.reflow(e),t(e).addClass(s.SHOW)):t(e).removeClass(s.FADE),e.parentNode&&t(e.parentNode).hasClass(s.DROPDOWN_MENU)){var h=t(e).closest(a.DROPDOWN)[0];h&&t(h).find(a.DROPDOWN_TOGGLE).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0)}o&&o()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.tab");if(o||(o=new e(this),i.data("bs.tab",o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}}]),e}();t(document).on(i.CLICK_DATA_API,a.DATA_TOGGLE,function(e){e.preventDefault(),l._jQueryInterface.call(t(this),"show")}),t.fn.tab=l._jQueryInterface,t.fn.tab.Constructor=l,t.fn.tab.noConflict=function(){return t.fn.tab=e,l._jQueryInterface}}(jQuery),function(t){if("undefined"==typeof Popper)throw new Error("Bootstrap tooltips require Popper.js (https://popper.js.org)");var e="tooltip",s=".bs.tooltip",a=t.fn[e],l=new RegExp("(^|\\s)bs-tooltip\\S+","g"),h={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)"},c={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},u={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip"},d={SHOW:"show",OUT:"out"},f={HIDE:"hide"+s,HIDDEN:"hidden"+s,SHOW:"show"+s,SHOWN:"shown"+s,INSERTED:"inserted"+s,CLICK:"click"+s,FOCUSIN:"focusin"+s,FOCUSOUT:"focusout"+s,MOUSEENTER:"mouseenter"+s,MOUSELEAVE:"mouseleave"+s},p={FADE:"fade",SHOW:"show"},_={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"},g={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},m=function(){function a(t,e){n(this,a),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return a.prototype.enable=function(){this._isEnabled=!0},a.prototype.disable=function(){this._isEnabled=!1},a.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.prototype.toggle=function(e){if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p.SHOW))return void this._leave(null,this);this._enter(null,this)}},a.prototype.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},a.prototype.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var o=this.getTipElement(),s=r.getUID(this.constructor.NAME);o.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&t(o).addClass(p.FADE);var l="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(o).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(o).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Popper(this.element,o,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:_.ARROW}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(o).addClass(p.SHOW),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d.OUT&&e._leave(null,e)};r.supportsTransitionEnd()&&t(this.tip).hasClass(p.FADE)?t(this.tip).one(r.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},a.prototype.hide=function(e){var n=this,i=this.getTipElement(),o=t.Event(this.constructor.Event.HIDE),s=function(){n._hoverState!==d.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(o),o.isDefaultPrevented()||(t(i).removeClass(p.SHOW),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[g.CLICK]=!1,this._activeTrigger[g.FOCUS]=!1,this._activeTrigger[g.HOVER]=!1,r.supportsTransitionEnd()&&t(this.tip).hasClass(p.FADE)?t(i).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s(),this._hoverState="")},a.prototype.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},a.prototype.isWithContent=function(){return Boolean(this.getTitle())},a.prototype.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},a.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},a.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(_.TOOLTIP_INNER),this.getTitle()),e.removeClass(p.FADE+" "+p.SHOW)},a.prototype.setElementContent=function(e,n){var o=this.config.html;"object"===(void 0===n?"undefined":i(n))&&(n.nodeType||n.jquery)?o?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[o?"html":"text"](n)},a.prototype.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},a.prototype._getAttachment=function(t){return c[t.toUpperCase()]},a.prototype._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==g.MANUAL){var i=n===g.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=n===g.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(o,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a.prototype._fixTitle=function(){var t=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},a.prototype._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?g.FOCUS:g.HOVER]=!0),t(n.getTipElement()).hasClass(p.SHOW)||n._hoverState===d.SHOW?n._hoverState=d.SHOW:(clearTimeout(n._timeout),n._hoverState=d.SHOW,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===d.SHOW&&n.show()},n.config.delay.show):n.show())},a.prototype._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?g.FOCUS:g.HOVER]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d.OUT,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d.OUT&&n.hide()},n.config.delay.hide):n.hide())},a.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a.prototype._getConfig=function(n){return(n=t.extend({},this.constructor.Default,t(this.element).data(),n)).delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.title&&"number"==typeof n.title&&(n.title=n.title.toString()),n.content&&"number"==typeof n.content&&(n.content=n.content.toString()),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},a.prototype._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a.prototype._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},a.prototype._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},a.prototype._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(p.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.tooltip"),o="object"===(void 0===e?"undefined":i(e))&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,o),t(this).data("bs.tooltip",n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return f}},{key:"EVENT_KEY",get:function(){return s}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=a,m._jQueryInterface},m}(jQuery));!function(r){var a="popover",l=".bs.popover",h=r.fn[a],c=new RegExp("(^|\\s)bs-popover\\S+","g"),u=r.extend({},s.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),d=r.extend({},s.DefaultType,{content:"(string|element|function)"}),f={FADE:"fade",SHOW:"show"},p={TITLE:".popover-header",CONTENT:".popover-body"},_={HIDE:"hide"+l,HIDDEN:"hidden"+l,SHOW:"show"+l,SHOWN:"shown"+l,INSERTED:"inserted"+l,CLICK:"click"+l,FOCUSIN:"focusin"+l,FOCUSOUT:"focusout"+l,MOUSEENTER:"mouseenter"+l,MOUSELEAVE:"mouseleave"+l},g=function(s){function h(){return n(this,h),t(this,s.apply(this,arguments))}return e(h,s),h.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},h.prototype.addAttachmentClass=function(t){r(this.getTipElement()).addClass("bs-popover-"+t)},h.prototype.getTipElement=function(){return this.tip=this.tip||r(this.config.template)[0]},h.prototype.setContent=function(){var t=r(this.getTipElement());this.setElementContent(t.find(p.TITLE),this.getTitle()),this.setElementContent(t.find(p.CONTENT),this._getContent()),t.removeClass(f.FADE+" "+f.SHOW)},h.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},h.prototype._cleanTipClass=function(){var t=r(this.getTipElement()),e=t.attr("class").match(c);null!==e&&e.length>0&&t.removeClass(e.join(""))},h._jQueryInterface=function(t){return this.each(function(){var e=r(this).data("bs.popover"),n="object"===(void 0===t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new h(this,n),r(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},o(h,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return a}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return l}},{key:"DefaultType",get:function(){return d}}]),h}(s);r.fn[a]=g._jQueryInterface,r.fn[a].Constructor=g,r.fn[a].noConflict=function(){return r.fn[a]=h,g._jQueryInterface}}(jQuery)}(); \ No newline at end of file
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}e=e&&e.hasOwnProperty("default")?e.default:e,n=n&&n.hasOwnProperty("default")?n.default:n;var o,a,l,h,c,u,f,d,_,g,p,m,v,E,T,y,C,I,A,b,D,S,w,N,O,k,P=function(t){var e=!1;function n(e){var n=this,s=!1;return t(this).one(i.TRANSITION_END,function(){s=!0}),setTimeout(function(){s||i.triggerTransitionEnd(n)},e),this}var i={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n,i=e.getAttribute("data-target");i&&"#"!==i||(i=e.getAttribute("href")||""),"#"===i.charAt(0)&&(n=i,i=n="function"==typeof t.escapeSelector?t.escapeSelector(n).substr(1):n.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1"));try{return t(document).find(i).length>0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s<i.length;s++){var r=i[s],o=P.getSelectorFromElement(r);null!==o&&t(o).filter(e).length>0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s<this._triggerArray.length;s++){var r=this._triggerArray[s],o=P.getSelectorFromElement(r);if(null!==o)t(o).hasClass(c)||t(r).addClass(d).attr("aria-expanded",!1)}this.setTransitioning(!0);var a=function(){e.setTransitioning(!1),t(e._element).removeClass(f).addClass(u).trigger(h.HIDDEN)};this._element.style[i]="",P.supportsTransitionEnd()?t(this._element).one(P.TRANSITION_END,a).emulateTransitionEnd(600):a()}}},o.setTransitioning=function(t){this._isTransitioning=t},o.dispose=function(){t.removeData(this._element,n),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},o._getConfig=function(t){return(t=r({},a,t)).toggle=Boolean(t.toggle),P.typeCheckConfig(e,t,l),t},o._getDimension=function(){return t(this._element).hasClass(_)?_:g},o._getParent=function(){var e=this,n=null;P.isElement(this._config.parent)?(n=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(n=this._config.parent[0])):n=t(this._config.parent)[0];var s='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(s).each(function(t,n){e._addAriaAndCollapsedClass(i._getTargetFromElement(n),[n])}),n},o._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(c);n.length>0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s<n.length;s++){var r=a._getParentFromElement(n[s]),o=t(n[s]).data(i),l={relatedTarget:n[s]};if(o){var h=o._menu;if(t(r).hasClass(f)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&t.contains(r,e.target))){var u=t.Event(c.HIDE,l);t(r).trigger(u),u.isDefaultPrevented()||("ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),n[s].setAttribute("aria-expanded","false"),t(h).removeClass(f),t(r).removeClass(f).trigger(t.Event(c.HIDDEN,l)))}}}},a._getParentFromElement=function(e){var n,i=P.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},a._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||t(e.target).closest(y).length)):h.test(e.which))&&(e.preventDefault(),e.stopPropagation(),!this.disabled&&!t(this).hasClass(u))){var n=a._getParentFromElement(this),i=t(n).hasClass(f);if((i||27===e.which&&32===e.which)&&(!i||27!==e.which&&32!==e.which)){var s=t(n).find(I).get();if(0!==s.length){var r=s.indexOf(e.target);38===e.which&&r>0&&r--,40===e.which&&r<s.length-1&&r++,r<0&&(r=0),s[r].focus()}}else{if(27===e.which){var o=t(n).find(E)[0];t(o).trigger("focus")}t(this).trigger("click")}}},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return O}},{key:"DefaultType",get:function(){return k}}]),a}();return t(document).on(c.KEYDOWN_DATA_API,E,L._dataApiKeydownHandler).on(c.KEYDOWN_DATA_API,y,L._dataApiKeydownHandler).on(c.CLICK_DATA_API+" "+c.KEYUP_DATA_API,L._clearMenus).on(c.CLICK_DATA_API,E,function(e){e.preventDefault(),e.stopPropagation(),L._jQueryInterface.call(t(this),"toggle")}).on(c.CLICK_DATA_API,T,function(t){t.stopPropagation()}),t.fn[e]=L._jQueryInterface,t.fn[e].Constructor=L,t.fn[e].noConflict=function(){return t.fn[e]=l,L._jQueryInterface},L}(e),M=function(t){var e="modal",n="bs.modal",i="."+n,o=t.fn.modal,a={backdrop:!0,keyboard:!0,focus:!0,show:!0},l={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},h={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,FOCUSIN:"focusin"+i,RESIZE:"resize"+i,CLICK_DISMISS:"click.dismiss"+i,KEYDOWN_DISMISS:"keydown.dismiss"+i,MOUSEUP_DISMISS:"mouseup.dismiss"+i,MOUSEDOWN_DISMISS:"mousedown.dismiss"+i,CLICK_DATA_API:"click"+i+".data-api"},c="modal-scrollbar-measure",u="modal-backdrop",f="modal-open",d="fade",_="show",g={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},p=function(){function o(e,n){this._config=this._getConfig(n),this._element=e,this._dialog=t(e).find(g.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}var p=o.prototype;return p.toggle=function(t){return this._isShown?this.hide():this.show(t)},p.show=function(e){var n=this;if(!this._isTransitioning&&!this._isShown){P.supportsTransitionEnd()&&t(this._element).hasClass(d)&&(this._isTransitioning=!0);var i=t.Event(h.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),t(document.body).addClass(f),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(h.CLICK_DISMISS,g.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(h.MOUSEDOWN_DISMISS,function(){t(n._element).one(h.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},p.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=t.Event(h.HIDE);if(t(this._element).trigger(i),this._isShown&&!i.isDefaultPrevented()){this._isShown=!1;var s=P.supportsTransitionEnd()&&t(this._element).hasClass(d);s&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),t(document).off(h.FOCUSIN),t(this._element).removeClass(_),t(this._element).off(h.CLICK_DISMISS),t(this._dialog).off(h.MOUSEDOWN_DISMISS),s?t(this._element).one(P.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal()}}},p.dispose=function(){t.removeData(this._element,n),t(window,document,this._element,this._backdrop).off(i),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},p.handleUpdate=function(){this._adjustDialog()},p._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},p._showElement=function(e){var n=this,i=P.supportsTransitionEnd()&&t(this._element).hasClass(d);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&P.reflow(this._element),t(this._element).addClass(_),this._config.focus&&this._enforceFocus();var s=t.Event(h.SHOWN,{relatedTarget:e}),r=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(s)};i?t(this._dialog).one(P.TRANSITION_END,r).emulateTransitionEnd(300):r()},p._enforceFocus=function(){var e=this;t(document).off(h.FOCUSIN).on(h.FOCUSIN,function(n){document!==n.target&&e._element!==n.target&&0===t(e._element).has(n.target).length&&e._element.focus()})},p._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(h.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||t(this._element).off(h.KEYDOWN_DISMISS)},p._setResizeEvent=function(){var e=this;this._isShown?t(window).on(h.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(h.RESIZE)},p._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(f),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(h.HIDDEN)})},p._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},p._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(d)?d:"";if(this._isShown&&this._config.backdrop){var s=P.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=u,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(h.CLICK_DISMISS,function(t){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),s&&P.reflow(this._backdrop),t(this._backdrop).addClass(_),!e)return;if(!s)return void e();t(this._backdrop).one(P.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(_);var r=function(){n._removeBackdrop(),e&&e()};P.supportsTransitionEnd()&&t(this._element).hasClass(d)?t(this._backdrop).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r()}else e&&e()},p._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},p._setScrollbar=function(){var e=this;if(this._isBodyOverflowing){t(g.FIXED_CONTENT).each(function(n,i){var s=t(i)[0].style.paddingRight,r=t(i).css("padding-right");t(i).data("padding-right",s).css("padding-right",parseFloat(r)+e._scrollbarWidth+"px")}),t(g.STICKY_CONTENT).each(function(n,i){var s=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",s).css("margin-right",parseFloat(r)-e._scrollbarWidth+"px")}),t(g.NAVBAR_TOGGLER).each(function(n,i){var s=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",s).css("margin-right",parseFloat(r)+e._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=t("body").css("padding-right");t("body").data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}},p._resetScrollbar=function(){t(g.FIXED_CONTENT).each(function(e,n){var i=t(n).data("padding-right");"undefined"!=typeof i&&t(n).css("padding-right",i).removeData("padding-right")}),t(g.STICKY_CONTENT+", "+g.NAVBAR_TOGGLER).each(function(e,n){var i=t(n).data("margin-right");"undefined"!=typeof i&&t(n).css("margin-right",i).removeData("margin-right")});var e=t("body").data("padding-right");"undefined"!=typeof e&&t("body").css("padding-right",e).removeData("padding-right")},p._getScrollbarWidth=function(){var t=document.createElement("div");t.className=c,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(e,i){return this.each(function(){var s=t(this).data(n),a=r({},o.Default,t(this).data(),"object"==typeof e&&e);if(s||(s=new o(this,a),t(this).data(n,s)),"string"==typeof e){if("undefined"==typeof s[e])throw new TypeError('No method named "'+e+'"');s[e](i)}else a.show&&s.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(h.CLICK_DATA_API,g.DATA_TOGGLE,function(e){var i,s=this,o=P.getSelectorFromElement(this);o&&(i=t(o)[0]);var a=t(i).data(n)?"toggle":r({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var l=t(i).one(h.SHOW,function(e){e.isDefaultPrevented()||l.one(h.HIDDEN,function(){t(s).is(":visible")&&s.focus()})});p._jQueryInterface.call(t(i),a,this)}),t.fn.modal=p._jQueryInterface,t.fn.modal.Constructor=p,t.fn.modal.noConflict=function(){return t.fn.modal=o,p._jQueryInterface},p}(e),U=function(t){var e="tooltip",i="bs.tooltip",o="."+i,a=t.fn[e],l=new RegExp("(^|\\s)bs-tooltip\\S+","g"),h={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},c={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},u={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t<this._offsets[s+1])&&this._activate(this._targets[s])}}},g._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(c)?(i.closest(f.DROPDOWN).find(f.DROPDOWN_TOGGLE).addClass(u),i.addClass(u)):(i.addClass(u),i.parents(f.NAV_LIST_GROUP).prev(f.NAV_LINKS+", "+f.LIST_ITEMS).addClass(u),i.parents(f.NAV_LIST_GROUP).prev(f.NAV_ITEMS).children(f.NAV_LINKS).addClass(u)),t(this._scrollElement).trigger(h.ACTIVATE,{relatedTarget:e})},g._clear=function(){t(this._selector).filter(f.ACTIVE).removeClass(u)},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n);if(i||(i=new o(this,"object"==typeof e&&e),t(this).data(n,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(window).on(h.LOAD_DATA_API,function(){for(var e=t.makeArray(t(f.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);g._jQueryInterface.call(i,i.data())}}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),V=function(t){var e="bs.tab",n="."+e,i=t.fn.tab,r={HIDE:"hide"+n,HIDDEN:"hidden"+n,SHOW:"show"+n,SHOWN:"shown"+n,CLICK_DATA_API:"click.bs.tab.data-api"},o="dropdown-menu",a="active",l="disabled",h="fade",c="show",u=".dropdown",f=".nav, .list-group",d=".active",_="> li > .active",g='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',p=".dropdown-toggle",m="> .dropdown-menu .active",v=function(){function n(t){this._element=t}var i=n.prototype;return i.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(a)||t(this._element).hasClass(l))){var n,i,s=t(this._element).closest(f)[0],o=P.getSelectorFromElement(this._element);if(s){var h="UL"===s.nodeName?_:d;i=(i=t.makeArray(t(s).find(h)))[i.length-1]}var c=t.Event(r.HIDE,{relatedTarget:this._element}),u=t.Event(r.SHOW,{relatedTarget:i});if(i&&t(i).trigger(c),t(this._element).trigger(u),!u.isDefaultPrevented()&&!c.isDefaultPrevented()){o&&(n=t(o)[0]),this._activate(this._element,s);var g=function(){var n=t.Event(r.HIDDEN,{relatedTarget:e._element}),s=t.Event(r.SHOWN,{relatedTarget:i});t(i).trigger(n),t(e._element).trigger(s)};n?this._activate(n,n.parentNode,g):g()}}},i.dispose=function(){t.removeData(this._element,e),this._element=null},i._activate=function(e,n,i){var s=this,r=("UL"===n.nodeName?t(n).find(_):t(n).children(d))[0],o=i&&P.supportsTransitionEnd()&&r&&t(r).hasClass(h),a=function(){return s._transitionComplete(e,r,i)};r&&o?t(r).one(P.TRANSITION_END,a).emulateTransitionEnd(150):a()},i._transitionComplete=function(e,n,i){if(n){t(n).removeClass(c+" "+a);var s=t(n.parentNode).find(m)[0];s&&t(s).removeClass(a),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(t(e).addClass(a),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),P.reflow(e),t(e).addClass(c),e.parentNode&&t(e.parentNode).hasClass(o)){var r=t(e).closest(u)[0];r&&t(r).find(p).addClass(a),e.setAttribute("aria-expanded",!0)}i&&i()},n._jQueryInterface=function(i){return this.each(function(){var s=t(this),r=s.data(e);if(r||(r=new n(this),s.data(e,r)),"string"==typeof i){if("undefined"==typeof r[i])throw new TypeError('No method named "'+i+'"');r[i]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),n}();return t(document).on(r.CLICK_DATA_API,g,function(e){e.preventDefault(),v._jQueryInterface.call(t(this),"show")}),t.fn.tab=v._jQueryInterface,t.fn.tab.Constructor=v,t.fn.tab.noConflict=function(){return t.fn.tab=i,v._jQueryInterface},v}(e);!function(t){if("undefined"==typeof t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})});
+//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.min.js.map b/library/bootstrap/js/bootstrap.min.js.map
new file mode 100644
index 000000000..a2100fa39
--- /dev/null
+++ b/library/bootstrap/js/bootstrap.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../rollupPluginBabelHelpers","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_extends","assign","arguments","source","hasOwnProperty","call","apply","this","$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Util","transition","transitionEndEmulator","duration","called","one","TRANSITION_END","triggerTransitionEnd","_this","prefix","Math","random","document","getElementById","element","selector","getAttribute","charAt","escapeSelector","substr","replace","find","err","offsetHeight","trigger","end","Boolean","obj","nodeType","componentName","config","configTypes","property","expectedTypes","value","valueType","isElement","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","window","QUnit","fn","emulateTransitionEnd","supportsTransitionEnd","event","special","is","handleObj","handler","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","getSelectorFromElement","parent","closest","closeEvent","CLOSE","removeClass","hasClass","_destroyElement","detach","CLOSED","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","CLICK_DATA_API","noConflict","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","button","FOCUS_BLUR_DATA_API","Carousel","Default","DefaultType","Direction","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","INDICATORS","_addEventListeners","next","_slide","nextWhenVisible","hidden","css","prev","pause","NEXT_PREV","cycle","interval","setInterval","visibilityState","bind","to","index","ACTIVE_ITEM","activeIndex","_getItemIndex","SLID","direction","off","typeCheckConfig","keyboard","KEYDOWN","_this2","_keydown","MOUSEENTER","MOUSELEAVE","documentElement","TOUCHEND","setTimeout","tagName","which","makeArray","ITEM","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","wrap","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","SLIDE","_setActiveIndicatorElement","ACTIVE","nextIndicator","children","addClass","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","reflow","_this3","action","slide","TypeError","_dataApiClickHandler","slideIndex","DATA_SLIDE","LOAD_DATA_API","DATA_RIDE","$carousel","Collapse","Dimension","_isTransitioning","_triggerArray","id","tabToggles","DATA_TOGGLE","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","ACTIVES","not","startEvent","SHOW","dimension","_getDimension","style","attr","setTransitioning","complete","SHOWN","scrollSize","slice","HIDE","getBoundingClientRect","HIDDEN","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","Dropdown","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","AttachmentMap","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","boundary","_getPopperConfig","noop","destroy","update","scheduleUpdate","CLICK","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","offsetConf","offset","offsets","flip","toggles","context","dropdownMenu","hideEvent","parentNode","_dataApiKeydownHandler","items","get","KEYDOWN_DATA_API","KEYUP_DATA_API","e","Modal","_dialog","DIALOG","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_originalBodyPadding","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","body","_setEscapeEvent","_setResizeEvent","CLICK_DISMISS","DATA_DISMISS","MOUSEDOWN_DISMISS","MOUSEUP_DISMISS","_showBackdrop","_showElement","FOCUSIN","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","display","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this4","has","KEYDOWN_DISMISS","RESIZE","_this6","_resetAdjustments","_resetScrollbar","_this7","_removeBackdrop","callback","animate","backdrop","doAnimate","createElement","className","appendTo","_this8","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","FIXED_CONTENT","actualPadding","calculatedPadding","parseFloat","_this9","STICKY_CONTENT","actualMargin","marginRight","calculatedMargin","NAVBAR_TOGGLER","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","Tooltip","BSCLS_PREFIX_REGEX","HoverState","Trigger","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","getUID","setContent","animation","attachment","_getAttachment","addAttachmentClass","container","INSERTED","fallbackPlacement","originalPlacement","_handlePopperPlacementChange","_fixTransition","prevHoverState","_TRANSITION_DURATION","_cleanTipClass","getTitle","CLASS_PREFIX","template","$tip","setElementContent","content","html","empty","append","text","title","split","forEach","eventIn","eventOut","FOCUSOUT","_fixTitle","titleType","delay","tabClass","join","initConfigAnimation","Popover","subClass","superClass","create","__proto__","_getContent","ScrollSpy","OffsetMethod","_scrollElement","NAV_LINKS","LIST_ITEMS","DROPDOWN_ITEMS","_offsets","_targets","_activeTarget","_scrollHeight","SCROLL","_process","refresh","autoMethod","offsetMethod","method","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","DROPDOWN","DROPDOWN_TOGGLE","parents","NAV_LIST_GROUP","NAV_ITEMS","ACTIVATE","scrollSpys","DATA_SPY","$spy","Tab","previous","listElement","itemSelector","nodeName","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","version"],"mappings":";;;;;8QAEA,SAASA,EAAkBC,EAAQC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAIlD,SAASO,EAAaC,EAAaC,EAAYC,GAG7C,OAFID,GAAYd,EAAkBa,EAAYG,UAAWF,GACrDC,GAAaf,EAAkBa,EAAaE,GACzCF,EAGT,SAASI,IAeP,OAdAA,EAAWR,OAAOS,QAAU,SAAUjB,GACpC,IAAK,IAAIE,EAAI,EAAGA,EAAIgB,UAAUf,OAAQD,IAAK,CACzC,IAAIiB,EAASD,UAAUhB,GAEvB,IAAK,IAAIQ,KAAOS,EACVX,OAAOO,UAAUK,eAAeC,KAAKF,EAAQT,KAC/CV,EAAOU,GAAOS,EAAOT,IAK3B,OAAOV,IAGOsB,MAAMC,KAAML,qGCxB9B,ICCgBM,EAORC,EAEAC,EACAC,EAEAC,EAOAC,EAMAC,EAAAA,EAAAA,EAYAC,ECtCSP,EAOTC,EAEAC,EACAC,EACAK,EACAJ,EAEAE,EAAAA,EAAAA,EAMAG,EAAAA,EAAAA,EAAAA,EAAAA,EAQAJ,EAYAK,EFxCFC,EAAQ,SAACX,OAOTY,GAAa,WAgCRC,EAAsBC,cACzBC,GAAS,WAEXhB,MAAMiB,IAAIL,EAAKM,eAAgB,cACtB,eAGA,WACJF,KACEG,qBAALC,IAEDL,GAEIf,SA4BHY,kBAEY,yBAFL,SAIJS,YA3EO,IA8EGC,KAAKC,gBACXC,SAASC,eAAeJ,WAC1BA,0BATE,SAYYK,OA3BPC,EA4BVA,EAAWD,EAAQE,aAAa,eAC/BD,GAAyB,MAAbA,MACJD,EAAQE,aAAa,SAAW,IAIlB,MAAvBD,EAASE,OAAO,KAlCNF,EAmCQA,MAhCe,mBAArB1B,EAAE6B,eAAgC7B,EAAE6B,eAAeH,GAAUI,OAAO,GAClFJ,EAASK,QAAQ,sBAAuB,oBAmCtB/B,EAAEuB,UAAUS,KAAKN,GAClB/C,OAAS,EAAI+C,EAAW,KACzC,MAAOO,UACA,cA3BA,SA+BJR,UACEA,EAAQS,mCAhCN,SAmCUT,KACjBA,GAASU,QAAQvB,EAAWwB,4BApCrB,kBAwCFC,QAAQzB,cAxCN,SA2CD0B,UACAA,EAAI,IAAMA,GAAKC,0BA5Cd,SA+CKC,EAAeC,EAAQC,OAChC,IAAMC,KAAYD,KACjB1D,OAAOO,UAAUK,eAAeC,KAAK6C,EAAaC,GAAW,KACzDC,EAAgBF,EAAYC,GAC5BE,EAAgBJ,EAAOE,GACvBG,EAAgBD,GAASlC,EAAKoC,UAAUF,GAC1C,WAzHIP,EAyHeO,KAxHnBG,SAASnD,KAAKyC,GAAKW,MAAM,iBAAiB,GAAGC,mBA0H5C,IAAIC,OAAOP,GAAeQ,KAAKN,SAC5B,IAAIO,MACLb,EAAcc,cAAjB,aACWX,EADX,oBACuCG,EADvC,wBAEsBF,EAFtB,UA7HIN,cAkBQ,oBAAXiB,SAA0BA,OAAOC,aAKrC,mBAuBLC,GAAGC,qBAAuB7C,EAExBF,EAAKgD,4BACLC,MAAMC,QAAQlD,EAAKM,0BA3CXL,EAAWwB,iBACPxB,EAAWwB,WAFpB,SAGEwB,MACD5D,EAAE4D,EAAMpF,QAAQsF,GAAG/D,aACd6D,EAAMG,UAAUC,QAAQlE,MAAMC,KAAML,cA8H5CiB,EApJK,CAqJXX,GCpJGO,GAOEN,EAAsB,QAGtBE,EAAAA,KADAD,EAAsB,YAGtBE,GAZQJ,EAwKbA,GA5J6ByD,GAAGxD,GAO3BI,iBACqBF,kBACCA,yBACDA,EAXC,aActBG,EACI,QADJA,EAEI,OAFJA,EAGI,OASJC,wBACQkB,QACLwC,SAAWxC,6BAWlByC,MAlDkB,SAkDZzC,KACMA,GAAW1B,KAAKkE,aAEpBE,EAAcpE,KAAKqE,gBAAgB3C,GACrB1B,KAAKsE,mBAAmBF,GAE5BG,2BAIXC,eAAeJ,MAGtBK,QA/DkB,aAgEdC,WAAW1E,KAAKkE,SAAU/D,QACvB+D,SAAW,QAKlBG,gBAtEkB,SAsEF3C,OACRC,EAAWf,EAAK+D,uBAAuBjD,GACzCkD,GAAa,SAEbjD,MACO1B,EAAE0B,GAAU,IAGlBiD,MACM3E,EAAEyB,GAASmD,QAAX,IAAuBtE,GAAmB,IAG9CqE,KAGTN,mBArFkB,SAqFC5C,OACXoD,EAAa7E,EAAEK,MAAMA,EAAMyE,gBAE/BrD,GAASU,QAAQ0C,GACZA,KAGTN,eA5FkB,SA4FH9C,gBACXA,GAASsD,YAAYzE,GAElBK,EAAKgD,yBACL3D,EAAEyB,GAASuD,SAAS1E,KAKvBmB,GACCT,IAAIL,EAAKM,eAAgB,SAAC2C,UAAUzC,EAAK8D,gBAAgBxD,EAASmC,KAClEF,qBA1FqB,UAoFjBuB,gBAAgBxD,MASzBwD,gBA1GkB,SA0GFxD,KACZA,GACCyD,SACA/C,QAAQ9B,EAAM8E,QACdC,YAKEC,iBAnHW,SAmHM5C,UACf1C,KAAKuF,KAAK,eACTC,EAAWvF,EAAED,MACfyF,EAAaD,EAASC,KAAKtF,GAE1BsF,MACI,IAAIjF,EAAMR,QACRyF,KAAKtF,EAAUsF,IAGX,UAAX/C,KACGA,GAAQ1C,WAKZ0F,eAnIW,SAmIIC,UACb,SAAU9B,GACXA,KACI+B,mBAGMzB,MAAMnE,sDAjIE,mBA4I1BwB,UAAUqE,GACVvF,EAAMwF,eArII,yBAuIVtF,EAAMkF,eAAe,IAAIlF,MASzBkD,GAAGxD,GAAoBM,EAAM8E,mBAC7B5B,GAAGxD,GAAMb,YAAcmB,IACvBkD,GAAGxD,GAAM6F,WAAc,oBACrBrC,GAAGxD,GAAQG,EACNG,EAAM8E,kBAGR9E,GCxKHG,GAOET,EAAsB,SAGtBE,EAAAA,KADAD,EAAsB,aAEtBM,EAAsB,YACtBJ,GAZSJ,EAmKdA,GAvJ6ByD,GAAGxD,GAE3BK,EACK,SADLA,EAEK,MAFLA,EAGK,QAGLG,EACiB,0BADjBA,EAEiB,0BAFjBA,EAGiB,QAHjBA,EAIiB,UAJjBA,EAKiB,OAGjBJ,0BAC0BF,EAAYK,sBACpB,QAAQL,EAAYK,EAApB,QACSL,EAAYK,GASvCE,wBACQe,QACLwC,SAAWxC,6BAWlBsE,OArDmB,eAsDbC,GAAqB,EACrBC,GAAiB,EACf9B,EAAcnE,EAAED,KAAKkE,UAAUW,QACnCnE,GACA,MAEE0D,EAAa,KACT+B,EAAQlG,EAAED,KAAKkE,UAAUjC,KAAKvB,GAAgB,MAEhDyF,EAAO,IACU,UAAfA,EAAMC,QACJD,EAAME,SACRpG,EAAED,KAAKkE,UAAUe,SAAS1E,MACL,MAChB,KACC+F,EAAgBrG,EAAEmE,GAAanC,KAAKvB,GAAiB,GAEvD4F,KACAA,GAAetB,YAAYzE,MAK/B0F,EAAoB,IAClBE,EAAMI,aAAa,aACrBnC,EAAYmC,aAAa,aACzBJ,EAAMK,UAAUC,SAAS,aACzBrC,EAAYoC,UAAUC,SAAS,qBAG3BJ,SAAWpG,EAAED,KAAKkE,UAAUe,SAAS1E,KACzC4F,GAAO/D,QAAQ,YAGbsE,WACW,GAIjBR,QACGhC,SAASyC,aAAa,gBACxB1G,EAAED,KAAKkE,UAAUe,SAAS1E,IAG3B0F,KACAjG,KAAKkE,UAAU0C,YAAYrG,MAIjCkE,QAvGmB,aAwGfC,WAAW1E,KAAKkE,SAAU/D,QACvB+D,SAAW,QAKXoB,iBA9GY,SA8GK5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAEnBsF,MACI,IAAI9E,EAAOX,QAChBA,MAAMyF,KAAKtF,EAAUsF,IAGV,WAAX/C,KACGA,sDAhHe,mBA4H1BlB,UACCqE,GAAGvF,EAAMwF,eAAgBpF,EAA6B,SAACmD,KAChD+B,qBAEFiB,EAAShD,EAAMpF,OAEdwB,EAAE4G,GAAQ5B,SAAS1E,OACbN,EAAE4G,GAAQhC,QAAQnE,MAGtB4E,iBAAiBxF,KAAKG,EAAE4G,GAAS,YAEzChB,GAAGvF,EAAMwG,oBAAqBpG,EAA6B,SAACmD,OACrDgD,EAAS5G,EAAE4D,EAAMpF,QAAQoG,QAAQnE,GAAiB,KACtDmG,GAAQD,YAAYrG,EAAiB,eAAe8C,KAAKQ,EAAMuC,WASnE1C,GAAGxD,GAAQS,EAAO2E,mBAClB5B,GAAGxD,GAAMb,YAAcsB,IACvB+C,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNM,EAAO2E,kBAGT3E,GCjKHoG,EAAY,SAAC9G,OAOXC,EAAyB,WAEzBC,EAAyB,cACzBC,EAAAA,IAA6BD,EAE7BE,EAAyBJ,EAAEyD,GAAGxD,GAM9B8G,YACO,cACA,SACA,QACA,cACA,GAGPC,YACO,4BACA,gBACA,yBACA,wBACA,WAGPC,EACO,OADPA,EAEO,OAFPA,EAGO,OAHPA,EAIO,QAGP5G,iBACqBF,cACDA,oBACGA,0BACGA,0BACAA,sBACFA,uBACJA,EArCK,mCAsCJA,EAtCI,aAyCzBG,EACO,WADPA,EAEO,SAFPA,EAGO,QAHPA,EAIO,sBAJPA,EAKO,qBALPA,EAMO,qBANPA,EAOO,qBAIPG,UACU,sBACA,6BACA,2BACA,sDACA,kCACA,0CACA,0BASVqG,wBACQrF,EAASgB,QACdyE,OAAqB,UACrBC,UAAqB,UACrBC,eAAqB,UAErBC,WAAqB,OACrBC,YAAqB,OAErBC,aAAqB,UAErBC,QAAqBzH,KAAK0H,WAAWhF,QACrCwB,SAAqBjE,EAAEyB,GAAS,QAChCiG,mBAAqB1H,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASkH,YAAY,QAEhEC,gDAePC,KA7GqB,WA8Gd9H,KAAKuH,iBACHQ,OAAOb,MAIhBc,gBAnHqB,YAsHdxG,SAASyG,QACXhI,EAAED,KAAKkE,UAAUH,GAAG,aAAsD,WAAvC9D,EAAED,KAAKkE,UAAUgE,IAAI,oBACpDJ,UAITK,KA5HqB,WA6HdnI,KAAKuH,iBACHQ,OAAOb,MAIhBkB,MAlIqB,SAkIfvE,GACCA,SACEyD,WAAY,GAGfrH,EAAED,KAAKkE,UAAUjC,KAAKvB,EAAS2H,WAAW,IAC5CzH,EAAKgD,4BACAzC,qBAAqBnB,KAAKkE,eAC1BoE,OAAM,kBAGCtI,KAAKoH,gBACdA,UAAY,QAGnBkB,MAjJqB,SAiJfzE,GACCA,SACEyD,WAAY,GAGftH,KAAKoH,0BACOpH,KAAKoH,gBACdA,UAAY,MAGfpH,KAAKyH,QAAQc,WAAavI,KAAKsH,iBAC5BF,UAAYoB,aACdhH,SAASiH,gBAAkBzI,KAAKgI,gBAAkBhI,KAAK8H,MAAMY,KAAK1I,MACnEA,KAAKyH,QAAQc,cAKnBI,GAnKqB,SAmKlBC,mBACIvB,eAAiBpH,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASmI,aAAa,OAE5DC,EAAc9I,KAAK+I,cAAc/I,KAAKqH,qBAExCuB,EAAQ5I,KAAKmH,OAAOvI,OAAS,GAAKgK,EAAQ,MAI1C5I,KAAKuH,aACLvH,KAAKkE,UAAUjD,IAAIX,EAAM0I,KAAM,kBAAM5H,EAAKuH,GAAGC,aAI7CE,IAAgBF,cACbR,kBACAE,YAIDW,EAAYL,EAAQE,EACtB5B,EACAA,OAECa,OAAOkB,EAAWjJ,KAAKmH,OAAOyB,QAGrCnE,QA9LqB,aA+LjBzE,KAAKkE,UAAUgF,IAAI9I,KACnBsE,WAAW1E,KAAKkE,SAAU/D,QAEvBgH,OAAqB,UACrBM,QAAqB,UACrBvD,SAAqB,UACrBkD,UAAqB,UACrBE,UAAqB,UACrBC,WAAqB,UACrBF,eAAqB,UACrBM,mBAAqB,QAK5BD,WA9MqB,SA8MVhF,iBAEJsE,EACAtE,KAEAyG,gBAAgBjJ,EAAMwC,EAAQuE,GAC5BvE,KAGTmF,mBAvNqB,sBAwNf7H,KAAKyH,QAAQ2B,YACbpJ,KAAKkE,UACJ2B,GAAGvF,EAAM+I,QAAS,SAACxF,UAAUyF,EAAKC,SAAS1F,KAGrB,UAAvB7D,KAAKyH,QAAQW,UACbpI,KAAKkE,UACJ2B,GAAGvF,EAAMkJ,WAAY,SAAC3F,UAAUyF,EAAKlB,MAAMvE,KAC3CgC,GAAGvF,EAAMmJ,WAAY,SAAC5F,UAAUyF,EAAKhB,MAAMzE,KAC1C,iBAAkBrC,SAASkI,mBAQ3B1J,KAAKkE,UAAU2B,GAAGvF,EAAMqJ,SAAU,aAC7BvB,QACDkB,EAAK9B,2BACM8B,EAAK9B,gBAEfA,aAAeoC,WAAW,SAAC/F,UAAUyF,EAAKhB,MAAMzE,IA9NhC,IA8NiEyF,EAAK7B,QAAQc,gBAM3GgB,SApPqB,SAoPZ1F,OACH,kBAAkBR,KAAKQ,EAAMpF,OAAOoL,gBAIhChG,EAAMiG,YA3Oa,KA6OjBlE,sBACDuC,kBA7OkB,KAgPjBvC,sBACDkC,WAMXiB,cAtQqB,SAsQPrH,eACPyF,OAASlH,EAAE8J,UAAU9J,EAAEyB,GAASkD,SAAS3C,KAAKvB,EAASsJ,OACrDhK,KAAKmH,OAAO8C,QAAQvI,MAG7BwI,oBA3QqB,SA2QDjB,EAAW3C,OACvB6D,EAAkBlB,IAAc/B,EAChCkD,EAAkBnB,IAAc/B,EAChC4B,EAAkB9I,KAAK+I,cAAczC,GACrC+D,EAAkBrK,KAAKmH,OAAOvI,OAAS,MACrBwL,GAAmC,IAAhBtB,GACnBqB,GAAmBrB,IAAgBuB,KAErCrK,KAAKyH,QAAQ6C,YAC1BhE,MAIHiE,GAAazB,GADDG,IAAc/B,GAAkB,EAAI,IACZlH,KAAKmH,OAAOvI,cAEhC,IAAf2L,EACHvK,KAAKmH,OAAOnH,KAAKmH,OAAOvI,OAAS,GAAKoB,KAAKmH,OAAOoD,MAGxDC,mBA9RqB,SA8RFC,EAAeC,OAC1BC,EAAc3K,KAAK+I,cAAc0B,GACjCG,EAAY5K,KAAK+I,cAAc9I,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASmI,aAAa,IAC3EgC,EAAa5K,EAAEK,MAAMA,EAAMwK,iCAEpBJ,OACLE,KACFD,aAGJ3K,KAAKkE,UAAU9B,QAAQyI,GAElBA,KAGTE,2BA7SqB,SA6SMrJ,MACrB1B,KAAK2H,mBAAoB,GACzB3H,KAAK2H,oBACJ1F,KAAKvB,EAASsK,QACdhG,YAAYzE,OAET0K,EAAgBjL,KAAK2H,mBAAmBuD,SAC5ClL,KAAK+I,cAAcrH,IAGjBuJ,KACAA,GAAeE,SAAS5K,OAKhCwH,OA7TqB,SA6TdkB,EAAWvH,OAQZ0J,EACAC,EACAX,SATEpE,EAAgBrG,EAAED,KAAKkE,UAAUjC,KAAKvB,EAASmI,aAAa,GAC5DyC,EAAqBtL,KAAK+I,cAAczC,GACxCiF,EAAgB7J,GAAW4E,GAC/BtG,KAAKkK,oBAAoBjB,EAAW3C,GAChCkF,EAAmBxL,KAAK+I,cAAcwC,GACtCE,EAAYnJ,QAAQtC,KAAKoH,cAM3B6B,IAAc/B,KACO3G,IACNA,IACI2G,MAEE3G,IACNA,IACI2G,GAGnBqE,GAAetL,EAAEsL,GAAatG,SAAS1E,QACpCgH,YAAa,WAIDvH,KAAKwK,mBAAmBe,EAAab,GACzCnG,sBAIV+B,GAAkBiF,QAKlBhE,YAAa,EAEdkE,QACGrD,aAGF2C,2BAA2BQ,OAE1BG,EAAYzL,EAAEK,MAAMA,EAAM0I,oBACfuC,YACJb,OACLY,KACFE,IAGF5K,EAAKgD,yBACP3D,EAAED,KAAKkE,UAAUe,SAAS1E,MACxBgL,GAAaJ,SAASE,KAEnBM,OAAOJ,KAEVjF,GAAe6E,SAASC,KACxBG,GAAaJ,SAASC,KAEtB9E,GACCrF,IAAIL,EAAKM,eAAgB,aACtBqK,GACCvG,YAAeoG,EADlB,IAC0CC,GACvCF,SAAS5K,KAEV+F,GAAetB,YAAezE,EAAhC,IAAoD8K,EAApD,IAAsED,KAEjE7D,YAAa,aAEP,kBAAMtH,EAAE2L,EAAK1H,UAAU9B,QAAQsJ,IAAY,KAEvD/H,qBAzXsB,SA2XvB2C,GAAetB,YAAYzE,KAC3BgL,GAAaJ,SAAS5K,QAEnBgH,YAAa,IAChBvH,KAAKkE,UAAU9B,QAAQsJ,IAGvBD,QACGnD,YAMFhD,iBAtZc,SAsZG5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GACpBsH,EAAAA,KACCT,EACA/G,EAAED,MAAMyF,QAGS,iBAAX/C,WAEJ+E,EACA/E,QAIDmJ,EAA2B,iBAAXnJ,EAAsBA,EAAS+E,EAAQqE,SAExDrG,MACI,IAAIsB,EAAS/G,KAAMyH,KACxBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,IACJiG,GAAGjG,QACH,GAAsB,iBAAXmJ,EAAqB,IACT,oBAAjBpG,EAAKoG,SACR,IAAIE,UAAJ,oBAAkCF,EAAlC,OAEHA,UACIpE,EAAQc,aACZH,UACAE,cAKJ0D,qBA1bc,SA0bOnI,OACpBlC,EAAWf,EAAK+D,uBAAuB3E,SAExC2B,OAIClD,EAASwB,EAAE0B,GAAU,MAEtBlD,GAAWwB,EAAExB,GAAQwG,SAAS1E,QAI7BmC,EAAAA,KACDzC,EAAExB,GAAQgH,OACVxF,EAAED,MAAMyF,QAEPwG,EAAajM,KAAK4B,aAAa,iBAEjCqK,MACK1D,UAAW,KAGXjD,iBAAiBxF,KAAKG,EAAExB,GAASiE,GAEtCuJ,KACAxN,GAAQgH,KAAKtF,GAAUwI,GAAGsD,KAGxBrG,kEA/cqB,+CAgGpBoB,oBAyXTxF,UACCqE,GAAGvF,EAAMwF,eAAgBpF,EAASwL,WAAYnF,EAASiF,wBAExDxI,QAAQqC,GAAGvF,EAAM6L,cAAe,aAC9BzL,EAAS0L,WAAW7G,KAAK,eACnB8G,EAAYpM,EAAED,QACXsF,iBAAiBxF,KAAKuM,EAAWA,EAAU5G,cAUtD/B,GAAGxD,GAAQ6G,EAASzB,mBACpB5B,GAAGxD,GAAMb,YAAc0H,IACvBrD,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACN0G,EAASzB,kBAGXyB,EAxfS,CAyff9G,GCzfGqM,EAAY,SAACrM,OAOXC,EAAsB,WAEtBC,EAAsB,cACtBC,EAAAA,IAA0BD,EAE1BE,EAAsBJ,EAAEyD,GAAGxD,GAG3B8G,WACK,SACA,IAGLC,UACK,iBACA,oBAGL3G,eACoBF,gBACCA,cACDA,kBACEA,yBACDA,EAnBC,aAsBtBG,EACS,OADTA,EAES,WAFTA,EAGS,aAHTA,EAIS,YAGTgM,EACK,QADLA,EAEK,SAGL7L,WACU,iCACA,4BASV4L,wBACQ5K,EAASgB,QACd8J,kBAAmB,OACnBtI,SAAmBxC,OACnB+F,QAAmBzH,KAAK0H,WAAWhF,QACnC+J,cAAmBxM,EAAE8J,UAAU9J,EAClC,mCAAmCyB,EAAQgL,GAA3C,6CAC0ChL,EAAQgL,GADlD,eAGIC,EAAa1M,EAAES,EAASkM,aACrBjO,EAAI,EAAGA,EAAIgO,EAAW/N,OAAQD,IAAK,KACpCkO,EAAOF,EAAWhO,GAClBgD,EAAWf,EAAK+D,uBAAuBkI,GAC5B,OAAblL,GAAqB1B,EAAE0B,GAAUmL,OAAOpL,GAAS9C,OAAS,SACvDmO,UAAYpL,OACZ8K,cAAcO,KAAKH,SAIvBI,QAAUjN,KAAKyH,QAAQ7C,OAAS5E,KAAKkN,aAAe,KAEpDlN,KAAKyH,QAAQ7C,aACXuI,0BAA0BnN,KAAKkE,SAAUlE,KAAKyM,eAGjDzM,KAAKyH,QAAQzB,aACVA,oCAgBTA,OAlGqB,WAmGf/F,EAAED,KAAKkE,UAAUe,SAAS1E,QACvB6M,YAEAC,UAITA,KA1GqB,eAgHfC,EACAC,aANAvN,KAAKwM,mBACPvM,EAAED,KAAKkE,UAAUe,SAAS1E,KAOxBP,KAAKiN,SAMgB,OALbhN,EAAE8J,UACV9J,EAAED,KAAKiN,SACJhL,KAAKvB,EAAS8M,SACdV,OAFH,iBAE2B9M,KAAKyH,QAAQ7C,OAFxC,QAIUhG,WACA,QAIV0O,MACYrN,EAAEqN,GAASG,IAAIzN,KAAK+M,WAAWtH,KAAKtF,KAC/BoN,EAAYf,wBAK3BkB,EAAazN,EAAEK,MAAMA,EAAMqN,WAC/B3N,KAAKkE,UAAU9B,QAAQsL,IACrBA,EAAWnJ,sBAIX+I,MACOhI,iBAAiBxF,KAAKG,EAAEqN,GAASG,IAAIzN,KAAK+M,WAAY,QAC1DQ,KACDD,GAAS7H,KAAKtF,EAAU,WAIxByN,EAAY5N,KAAK6N,kBAErB7N,KAAKkE,UACJc,YAAYzE,GACZ4K,SAAS5K,QAEP2D,SAAS4J,MAAMF,GAAa,EAE7B5N,KAAKyM,cAAc7N,OAAS,KAC5BoB,KAAKyM,eACJzH,YAAYzE,GACZwN,KAAK,iBAAiB,QAGtBC,kBAAiB,OAEhBC,EAAW,aACb7M,EAAK8C,UACJc,YAAYzE,GACZ4K,SAAS5K,GACT4K,SAAS5K,KAEP2D,SAAS4J,MAAMF,GAAa,KAE5BI,kBAAiB,KAEpB5M,EAAK8C,UAAU9B,QAAQ9B,EAAM4N,WAG5BtN,EAAKgD,6BAMJuK,EAAAA,UADuBP,EAAU,GAAGrK,cAAgBqK,EAAUQ,MAAM,MAGxEpO,KAAKkE,UACJjD,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBA5KqB,UA8KnBO,SAAS4J,MAAMF,GAAgB5N,KAAKkE,SAASiK,GAAlD,mBAGFf,KA9LqB,0BA+LfpN,KAAKwM,kBACNvM,EAAED,KAAKkE,UAAUe,SAAS1E,QAIvBmN,EAAazN,EAAEK,MAAMA,EAAM+N,WAC/BrO,KAAKkE,UAAU9B,QAAQsL,IACrBA,EAAWnJ,0BAITqJ,EAAY5N,KAAK6N,wBAElB3J,SAAS4J,MAAMF,GAAgB5N,KAAKkE,SAASoK,wBAAwBV,GAA1E,OAEKjC,OAAO3L,KAAKkE,YAEflE,KAAKkE,UACJiH,SAAS5K,GACTyE,YAAYzE,GACZyE,YAAYzE,GAEXP,KAAKyM,cAAc7N,OAAS,MACzB,IAAID,EAAI,EAAGA,EAAIqB,KAAKyM,cAAc7N,OAAQD,IAAK,KAC5CyD,EAAUpC,KAAKyM,cAAc9N,GAC7BgD,EAAWf,EAAK+D,uBAAuBvC,MAC5B,OAAbT,EACY1B,EAAE0B,GACLsD,SAAS1E,MAChB6B,GAAS+I,SAAS5K,GACjBwN,KAAK,iBAAiB,QAM5BC,kBAAiB,OAEhBC,EAAW,aACVD,kBAAiB,KACpB1E,EAAKpF,UACJc,YAAYzE,GACZ4K,SAAS5K,GACT6B,QAAQ9B,EAAMiO,cAGdrK,SAAS4J,MAAMF,GAAa,GAE5BhN,EAAKgD,0BAKR5D,KAAKkE,UACJjD,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBAzOqB,cA4O1BqK,iBAzPqB,SAyPJQ,QACVhC,iBAAmBgC,KAG1B/J,QA7PqB,aA8PjBC,WAAW1E,KAAKkE,SAAU/D,QAEvBsH,QAAmB,UACnBwF,QAAmB,UACnB/I,SAAmB,UACnBuI,cAAmB,UACnBD,iBAAmB,QAK1B9E,WAzQqB,SAyQVhF,iBAEJsE,EACAtE,IAEEsD,OAAS1D,QAAQI,EAAOsD,UAC1BmD,gBAAgBjJ,EAAMwC,EAAQuE,GAC5BvE,KAGTmL,cAnRqB,kBAoRF5N,EAAED,KAAKkE,UAAUe,SAASsH,GACzBA,EAAkBA,KAGtCW,WAxRqB,sBAyRftI,EAAS,KACThE,EAAKoC,UAAUhD,KAAKyH,QAAQ7C,WACrB5E,KAAKyH,QAAQ7C,OAGoB,oBAA/B5E,KAAKyH,QAAQ7C,OAAO6J,WACpBzO,KAAKyH,QAAQ7C,OAAO,OAGtB3E,EAAED,KAAKyH,QAAQ7C,QAAQ,OAG5BjD,EAAAA,yCACqC3B,KAAKyH,QAAQ7C,OADlD,cAGJA,GAAQ3C,KAAKN,GAAU4D,KAAK,SAAC5G,EAAG+C,KAC3ByL,0BACHb,EAASoC,sBAAsBhN,IAC9BA,MAIEkD,KAGTuI,0BAlTqB,SAkTKzL,EAASiN,MAC7BjN,EAAS,KACLkN,EAAS3O,EAAEyB,GAASuD,SAAS1E,GAE/BoO,EAAa/P,OAAS,KACtB+P,GACC/H,YAAYrG,GAAsBqO,GAClCb,KAAK,gBAAiBa,OAOxBF,sBAhUc,SAgUQhN,OACrBC,EAAWf,EAAK+D,uBAAuBjD,UACtCC,EAAW1B,EAAE0B,GAAU,GAAK,QAG9B2D,iBArUc,SAqUG5C,UACf1C,KAAKuF,KAAK,eACTsJ,EAAU5O,EAAED,MACdyF,EAAYoJ,EAAMpJ,KAAKtF,GACrBsH,EAAAA,KACDT,EACA6H,EAAMpJ,OACY,iBAAX/C,GAAuBA,OAG9B+C,GAAQgC,EAAQzB,QAAU,YAAY3C,KAAKX,OACtCsD,QAAS,GAGdP,MACI,IAAI6G,EAAStM,KAAMyH,KACpBhC,KAAKtF,EAAUsF,IAGD,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDApVe,+CAqFjBsE,oBA2QTxF,UAAUqE,GAAGvF,EAAMwF,eAAgBpF,EAASkM,YAAa,SAAU/I,GAE/B,MAAhCA,EAAMiL,cAAcjF,WAChBjE,qBAGFmJ,EAAW9O,EAAED,MACb2B,EAAWf,EAAK+D,uBAAuB3E,QAC3C2B,GAAU4D,KAAK,eACTyJ,EAAU/O,EAAED,MAEZ0C,EADUsM,EAAQvJ,KAAKtF,GACN,SAAW4O,EAAStJ,SAClCH,iBAAiBxF,KAAKkP,EAAStM,SAU1CgB,GAAGxD,GAAQoM,EAAShH,mBACpB5B,GAAGxD,GAAMb,YAAciN,IACvB5I,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNiM,EAAShH,kBAGXgH,EArYS,CAsYfrM,GCrYGgP,EAAY,SAAChP,OAOXC,EAA2B,WAE3BC,EAA2B,cAC3BC,EAAAA,IAA+BD,EAC/BM,EAA2B,YAC3BJ,EAA2BJ,EAAEyD,GAAGxD,GAOhCgP,EAA2B,IAAI9L,OAAU+L,YAEzC7O,eACsBF,kBACEA,cACFA,gBACCA,gBACAA,yBACAA,EAAYK,6BACVL,EAAYK,yBACdL,EAAYK,GAGnCF,EACQ,WADRA,EAEQ,OAFRA,EAGQ,SAHRA,EAIQ,YAJRA,EAKQ,WALRA,EAMQ,sBANRA,EAOQ,qBAPRA,EAQc,kBAGdG,EACY,2BADZA,EAEY,iBAFZA,EAGY,iBAHZA,EAIY,cAJZA,EAKY,+CAGZ0O,EACQ,YADRA,EAEQ,UAFRA,EAGQ,eAHRA,EAIQ,aAJRA,EAKQ,cALRA,EAOQ,aAIRpI,UACU,QACA,WACA,gBAGVC,UACU,gCACA,mBACA,oBASVgI,wBACQvN,EAASgB,QACdwB,SAAYxC,OACZ2N,QAAY,UACZ5H,QAAYzH,KAAK0H,WAAWhF,QAC5B4M,MAAYtP,KAAKuP,uBACjBC,UAAYxP,KAAKyP,qBAEjB5H,gDAmBP7B,OA3GqB,eA4GfhG,KAAKkE,SAASwL,WAAYzP,EAAED,KAAKkE,UAAUe,SAAS1E,QAIlDqE,EAAWqK,EAASU,sBAAsB3P,KAAKkE,UAC/C0L,EAAW3P,EAAED,KAAKsP,OAAOrK,SAAS1E,QAE/BsP,eAELD,OAIEnF,iBACWzK,KAAKkE,UAEhB4L,EAAY7P,EAAEK,MAAMA,EAAMqN,KAAMlD,QAEpC7F,GAAQxC,QAAQ0N,IAEdA,EAAUvL,0BAKTvE,KAAKwP,UAAW,IAKG,oBAAXO,QACH,IAAIhE,UAAU,oEAElBrK,EAAU1B,KAAKkE,SAEfjE,EAAE2E,GAAQK,SAAS1E,KACjBN,EAAED,KAAKsP,OAAOrK,SAAS1E,IAAuBN,EAAED,KAAKsP,OAAOrK,SAAS1E,QAC7DqE,GAMgB,iBAA1B5E,KAAKyH,QAAQuI,YACbpL,GAAQuG,SAAS5K,QAEhB8O,QAAU,IAAIU,EAAOrO,EAAS1B,KAAKsP,MAAOtP,KAAKiQ,oBAOlD,iBAAkBzO,SAASkI,iBACsB,IAAlDzJ,EAAE2E,GAAQC,QAAQnE,GAAqB9B,UACtC,QAAQsM,WAAWrF,GAAG,YAAa,KAAM5F,EAAEiQ,WAG1ChM,SAASwC,aACTxC,SAASyC,aAAa,iBAAiB,KAE1C3G,KAAKsP,OAAO1I,YAAYrG,KACxBqE,GACCgC,YAAYrG,GACZ6B,QAAQnC,EAAEK,MAAMA,EAAM4N,MAAOzD,UAGlChG,QA/KqB,aAgLjBC,WAAW1E,KAAKkE,SAAU/D,KAC1BH,KAAKkE,UAAUgF,IAAI9I,QAChB8D,SAAW,UACXoL,MAAQ,KACQ,OAAjBtP,KAAKqP,eACFA,QAAQc,eACRd,QAAU,SAInBe,OA1LqB,gBA2LdZ,UAAYxP,KAAKyP,gBACD,OAAjBzP,KAAKqP,cACFA,QAAQgB,oBAMjBxI,mBAnMqB,wBAoMjB7H,KAAKkE,UAAU2B,GAAGvF,EAAMgQ,MAAO,SAACzM,KAC1B+B,mBACA2K,oBACDvK,cAIT0B,WA3MqB,SA2MVhF,iBAEJ1C,KAAKwQ,YAAYxJ,QACjB/G,EAAED,KAAKkE,UAAUuB,OACjB/C,KAGAyG,gBACHjJ,EACAwC,EACA1C,KAAKwQ,YAAYvJ,aAGZvE,KAGT6M,gBA3NqB,eA4NdvP,KAAKsP,MAAO,KACT1K,EAASqK,EAASU,sBAAsB3P,KAAKkE,eAC9CoL,MAAQrP,EAAE2E,GAAQ3C,KAAKvB,GAAe,UAEtCV,KAAKsP,SAGdmB,cAnOqB,eAoObC,EAAkBzQ,EAAED,KAAKkE,UAAUU,SACrC+L,EAAYvB,SAGZsB,EAAgBzL,SAAS1E,MACf6O,EACRnP,EAAED,KAAKsP,OAAOrK,SAAS1E,OACb6O,IAELsB,EAAgBzL,SAAS1E,KACtB6O,EACHsB,EAAgBzL,SAAS1E,KACtB6O,EACHnP,EAAED,KAAKsP,OAAOrK,SAAS1E,OACpB6O,GAEPuB,KAGTlB,cAvPqB,kBAwPZxP,EAAED,KAAKkE,UAAUW,QAAQ,WAAWjG,OAAS,KAGtDqR,iBA3PqB,sBA4PbW,WAC6B,mBAAxB5Q,KAAKyH,QAAQoJ,SACXnN,GAAK,SAAC+B,YACVqL,QAALrR,KACKgG,EAAKqL,QACLxH,EAAK7B,QAAQoJ,OAAOpL,EAAKqL,cAEvBrL,KAGEoL,OAAS7Q,KAAKyH,QAAQoJ,kBAGtB7Q,KAAKyQ,kCAENG,gBAEG5Q,KAAKyH,QAAQsJ,yCAGH/Q,KAAKyH,QAAQuI,eAUjC1K,iBA1Rc,SA0RG5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,MAGnBsF,MACI,IAAIwJ,EAASjP,KAHY,iBAAX0C,EAAsBA,EAAS,QAIlD1C,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,WAKJmN,YA7Sc,SA6SFhM,OACbA,GA5RyB,IA4RfA,EAAMiG,QACH,UAAfjG,EAAMuC,MAhSqB,IAgSDvC,EAAMiG,eAI5BkH,EAAU/Q,EAAE8J,UAAU9J,EAAES,IACrB/B,EAAI,EAAGA,EAAIqS,EAAQpS,OAAQD,IAAK,KACjCiG,EAASqK,EAASU,sBAAsBqB,EAAQrS,IAChDsS,EAAUhR,EAAE+Q,EAAQrS,IAAI8G,KAAKtF,GAC7BsK,iBACWuG,EAAQrS,OAGpBsS,OAICC,EAAeD,EAAQ3B,SACxBrP,EAAE2E,GAAQK,SAAS1E,MAIpBsD,IAAyB,UAAfA,EAAMuC,MAChB,kBAAkB/C,KAAKQ,EAAMpF,OAAOoL,UAA2B,UAAfhG,EAAMuC,MAtT/B,IAsTmDvC,EAAMiG,QAChF7J,EAAEwG,SAAS7B,EAAQf,EAAMpF,cAIvB0S,EAAYlR,EAAEK,MAAMA,EAAM+N,KAAM5D,KACpC7F,GAAQxC,QAAQ+O,GACdA,EAAU5M,uBAMV,iBAAkB/C,SAASkI,mBAC3B,QAAQwB,WAAWhC,IAAI,YAAa,KAAMjJ,EAAEiQ,QAGxCvR,GAAGgI,aAAa,gBAAiB,WAEvCuK,GAAclM,YAAYzE,KAC1BqE,GACCI,YAAYzE,GACZ6B,QAAQnC,EAAEK,MAAMA,EAAMiO,OAAQ9D,WAI9BkF,sBA/Vc,SA+VQjO,OACvBkD,EACEjD,EAAWf,EAAK+D,uBAAuBjD,UAEzCC,MACO1B,EAAE0B,GAAU,IAGhBiD,GAAUlD,EAAQ0P,cAIpBC,uBA3Wc,SA2WSxN,OAQxB,kBAAkBR,KAAKQ,EAAMpF,OAAOoL,WArWX,KAsWzBhG,EAAMiG,OAvWmB,KAuWQjG,EAAMiG,QAnWd,KAoW1BjG,EAAMiG,OArWoB,KAqWYjG,EAAMiG,OAC3C7J,EAAE4D,EAAMpF,QAAQoG,QAAQnE,GAAe9B,SAAWsQ,EAAe7L,KAAKQ,EAAMiG,YAI1ElE,mBACA2K,mBAEFvQ,KAAK0P,WAAYzP,EAAED,MAAMiF,SAAS1E,SAIhCqE,EAAWqK,EAASU,sBAAsB3P,MAC1C4P,EAAW3P,EAAE2E,GAAQK,SAAS1E,OAE/BqP,GAvXwB,KAuXX/L,EAAMiG,OAtXK,KAsXuBjG,EAAMiG,UACrD8F,GAxXwB,KAwXX/L,EAAMiG,OAvXK,KAuXuBjG,EAAMiG,YAUpDwH,EAAQrR,EAAE2E,GAAQ3C,KAAKvB,GAAwB6Q,SAEhC,IAAjBD,EAAM1S,YAINgK,EAAQ0I,EAAMrH,QAAQpG,EAAMpF,QArYH,KAuYzBoF,EAAMiG,OAA8BlB,EAAQ,OAtYnB,KA0YzB/E,EAAMiG,OAAgClB,EAAQ0I,EAAM1S,OAAS,OAI7DgK,EAAQ,MACF,KAGJA,GAAOlC,iBAtZgB,KAyXvB7C,EAAMiG,MAA0B,KAC5B9D,EAAS/F,EAAE2E,GAAQ3C,KAAKvB,GAAsB,KAClDsF,GAAQ5D,QAAQ,WAGlBpC,MAAMoC,QAAQ,0DAnYW,+CA0FtB4E,6CAIAC,oBAuUTzF,UACCqE,GAAGvF,EAAMkR,iBAAkB9Q,EAAsBuO,EAASoC,wBAC1DxL,GAAGvF,EAAMkR,iBAAkB9Q,EAAeuO,EAASoC,wBACnDxL,GAAMvF,EAAMwF,eAHf,IAGiCxF,EAAMmR,eAAkBxC,EAASY,aAC/DhK,GAAGvF,EAAMwF,eAAgBpF,EAAsB,SAAUmD,KAClD+B,mBACA2K,oBACGjL,iBAAiBxF,KAAKG,EAAED,MAAO,YAEzC6F,GAAGvF,EAAMwF,eAAgBpF,EAAqB,SAACgR,KAC5CnB,sBASJ7M,GAAGxD,GAAQ+O,EAAS3J,mBACpB5B,GAAGxD,GAAMb,YAAc4P,IACvBvL,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACN4O,EAAS3J,kBAGX2J,EAvcS,CAwcfhP,GCzcG0R,EAAS,SAAC1R,OAORC,EAA+B,QAE/BC,EAA+B,WAC/BC,EAAAA,IAAmCD,EAEnCE,EAA+BJ,EAAEyD,GAAF,MAK/BsD,aACO,YACA,SACA,QACA,GAGPC,YACO,4BACA,gBACA,eACA,WAGP3G,eACuBF,kBACEA,cACFA,gBACCA,oBACEA,kBACDA,gCACOA,oCACEA,oCACAA,wCACEA,yBACZA,EA/BO,aAkC/BG,EACiB,0BADjBA,EAEiB,iBAFjBA,EAGiB,aAHjBA,EAIiB,OAJjBA,EAKiB,OAGjBG,UACiB,4BACA,qCACA,uCACA,mEACA,6BACA,mBASjBiR,wBACQjQ,EAASgB,QACd+E,QAAuBzH,KAAK0H,WAAWhF,QACvCwB,SAAuBxC,OACvBkQ,QAAuB3R,EAAEyB,GAASO,KAAKvB,EAASmR,QAAQ,QACxDC,UAAuB,UACvBC,UAAuB,OACvBC,oBAAuB,OACvBC,sBAAuB,OACvBC,qBAAuB,OACvBC,gBAAuB,6BAe9BnM,OA7FkB,SA6FXyE,UACEzK,KAAK+R,SAAW/R,KAAKoN,OAASpN,KAAKqN,KAAK5C,MAGjD4C,KAjGkB,SAiGb5C,kBACCzK,KAAKwM,mBAAoBxM,KAAK+R,UAI9BnR,EAAKgD,yBAA2B3D,EAAED,KAAKkE,UAAUe,SAAS1E,UACvDiM,kBAAmB,OAGpBsD,EAAY7P,EAAEK,MAAMA,EAAMqN,0BAI9B3N,KAAKkE,UAAU9B,QAAQ0N,GAErB9P,KAAK+R,UAAYjC,EAAUvL,4BAI1BwN,UAAW,OAEXK,uBACAC,qBAEAC,kBAEH9Q,SAAS+Q,MAAMpH,SAAS5K,QAErBiS,uBACAC,oBAEHzS,KAAKkE,UAAU2B,GACfvF,EAAMoS,cACNhS,EAASiS,aACT,SAAC9O,UAAUzC,EAAKgM,KAAKvJ,OAGrB7D,KAAK4R,SAAS/L,GAAGvF,EAAMsS,kBAAmB,aACxCxR,EAAK8C,UAAUjD,IAAIX,EAAMuS,gBAAiB,SAAChP,GACvC5D,EAAE4D,EAAMpF,QAAQsF,GAAG3C,EAAK8C,cACrB+N,sBAAuB,YAK7Ba,cAAc,kBAAM1R,EAAK2R,aAAatI,UAG7C2C,KAjJkB,SAiJbvJ,iBACCA,KACI+B,kBAGJ5F,KAAKwM,kBAAqBxM,KAAK+R,cAI7BZ,EAAYlR,EAAEK,MAAMA,EAAM+N,WAE9BrO,KAAKkE,UAAU9B,QAAQ+O,GAEpBnR,KAAK+R,WAAYZ,EAAU5M,2BAI3BwN,UAAW,MAEVlR,EAAaD,EAAKgD,yBAA2B3D,EAAED,KAAKkE,UAAUe,SAAS1E,GAEzEM,SACG2L,kBAAmB,QAGrBgG,uBACAC,oBAEHjR,UAAU0H,IAAI5I,EAAM0S,WAEpBhT,KAAKkE,UAAUc,YAAYzE,KAE3BP,KAAKkE,UAAUgF,IAAI5I,EAAMoS,iBACzB1S,KAAK4R,SAAS1I,IAAI5I,EAAMsS,mBAEtB/R,IACAb,KAAKkE,UACJjD,IAAIL,EAAKM,eAAgB,SAAC2C,UAAUyF,EAAK2J,WAAWpP,KACpDF,qBA1K4B,UA4K1BsP,kBAITxO,QA7LkB,aA8LdC,WAAW1E,KAAKkE,SAAU/D,KAE1BqD,OAAQhC,SAAUxB,KAAKkE,SAAUlE,KAAK8R,WAAW5I,IAAI9I,QAElDqH,QAAuB,UACvBvD,SAAuB,UACvB0N,QAAuB,UACvBE,UAAuB,UACvBC,SAAuB,UACvBC,mBAAuB,UACvBC,qBAAuB,UACvBE,gBAAuB,QAG9Be,aA5MkB,gBA6MXZ,mBAKP5K,WAlNkB,SAkNPhF,iBAEJsE,EACAtE,KAEAyG,gBAAgBjJ,EAAMwC,EAAQuE,GAC5BvE,KAGTqQ,aA3NkB,SA2NLtI,cACL5J,EAAaD,EAAKgD,yBACtB3D,EAAED,KAAKkE,UAAUe,SAAS1E,GAEvBP,KAAKkE,SAASkN,YAChBpR,KAAKkE,SAASkN,WAAW5O,WAAa2Q,KAAKC,uBAEnCb,KAAKc,YAAYrT,KAAKkE,eAG5BA,SAAS4J,MAAMwF,QAAU,aACzBpP,SAASqP,gBAAgB,oBACzBrP,SAASsP,UAAY,EAEtB3S,KACG8K,OAAO3L,KAAKkE,YAGjBlE,KAAKkE,UAAUiH,SAAS5K,GAEtBP,KAAKyH,QAAQf,YACV+M,oBAGDC,EAAazT,EAAEK,MAAMA,EAAM4N,yBAI3ByF,EAAqB,WACrB/H,EAAKnE,QAAQf,SACVxC,SAASwC,UAEX8F,kBAAmB,IACtBZ,EAAK1H,UAAU9B,QAAQsR,IAGvB7S,IACAb,KAAK4R,SACJ3Q,IAAIL,EAAKM,eAAgByS,GACzBhQ,qBArP4B,YA2PnC8P,cAxQkB,wBAyQdjS,UACC0H,IAAI5I,EAAM0S,SACVnN,GAAGvF,EAAM0S,QAAS,SAACnP,GACdrC,WAAaqC,EAAMpF,QACnBmV,EAAK1P,WAAaL,EAAMpF,QACsB,IAA9CwB,EAAE2T,EAAK1P,UAAU2P,IAAIhQ,EAAMpF,QAAQG,UAChCsF,SAASwC,aAKtB8L,gBApRkB,sBAqRZxS,KAAK+R,UAAY/R,KAAKyH,QAAQ2B,WAC9BpJ,KAAKkE,UAAU2B,GAAGvF,EAAMwT,gBAAiB,SAACjQ,GAvQb,KAwQzBA,EAAMiG,UACFlE,mBACDwH,UAGCpN,KAAK+R,YACb/R,KAAKkE,UAAUgF,IAAI5I,EAAMwT,oBAI/BrB,gBAjSkB,sBAkSZzS,KAAK+R,WACLvO,QAAQqC,GAAGvF,EAAMyT,OAAQ,SAAClQ,UAAUmQ,EAAKd,aAAarP,OAEtDL,QAAQ0F,IAAI5I,EAAMyT,WAIxBd,WAzSkB,2BA0SX/O,SAAS4J,MAAMwF,QAAU,YACzBpP,SAASyC,aAAa,eAAe,QACrC6F,kBAAmB,OACnBsG,cAAc,aACftR,SAAS+Q,MAAMvN,YAAYzE,KACxB0T,sBACAC,oBACHC,EAAKjQ,UAAU9B,QAAQ9B,EAAMiO,aAInC6F,gBArTkB,WAsTZpU,KAAK8R,cACL9R,KAAK8R,WAAWzM,cACbyM,UAAY,SAIrBgB,cA5TkB,SA4TJuB,cACNC,EAAUrU,EAAED,KAAKkE,UAAUe,SAAS1E,GACtCA,EAAiB,MAEjBP,KAAK+R,UAAY/R,KAAKyH,QAAQ8M,SAAU,KACpCC,EAAY5T,EAAKgD,yBAA2B0Q,UAE7CxC,UAAYtQ,SAASiT,cAAc,YACnC3C,UAAU4C,UAAYnU,EAEvB+T,KACAtU,KAAK8R,WAAW3G,SAASmJ,KAG3BtU,KAAK8R,WAAW6C,SAASnT,SAAS+Q,QAElCvS,KAAKkE,UAAU2B,GAAGvF,EAAMoS,cAAe,SAAC7O,GACpC+Q,EAAK3C,uBACFA,sBAAuB,EAG1BpO,EAAMpF,SAAWoF,EAAMiL,gBAGG,WAA1B8F,EAAKnN,QAAQ8M,WACVrQ,SAASwC,UAET0G,UAILoH,KACG7I,OAAO3L,KAAK8R,aAGjB9R,KAAK8R,WAAW3G,SAAS5K,IAEtB8T,aAIAG,oBAKHxU,KAAK8R,WACJ7Q,IAAIL,EAAKM,eAAgBmT,GACzB1Q,qBA9V4B,UA+V1B,IAAK3D,KAAK+R,UAAY/R,KAAK8R,UAAW,GACzC9R,KAAK8R,WAAW9M,YAAYzE,OAExBsU,EAAiB,aAChBT,kBACDC,QAKFzT,EAAKgD,yBACN3D,EAAED,KAAKkE,UAAUe,SAAS1E,KACzBP,KAAK8R,WACJ7Q,IAAIL,EAAKM,eAAgB2T,GACzBlR,qBA7W0B,cAiXtB0Q,UAUb/B,cAzYkB,eA0YVwC,EACJ9U,KAAKkE,SAAS6Q,aAAevT,SAASkI,gBAAgBsL,cAEnDhV,KAAKgS,oBAAsB8C,SACzB5Q,SAAS4J,MAAMmH,YAAiBjV,KAAKmS,gBAA1C,MAGEnS,KAAKgS,qBAAuB8C,SACzB5Q,SAAS4J,MAAMoH,aAAkBlV,KAAKmS,gBAA3C,SAIJ8B,kBAtZkB,gBAuZX/P,SAAS4J,MAAMmH,YAAc,QAC7B/Q,SAAS4J,MAAMoH,aAAe,MAGrC9C,gBA3ZkB,eA4ZV+C,EAAO3T,SAAS+Q,KAAKjE,6BACtB0D,mBAAqBmD,EAAKC,KAAOD,EAAKE,MAAQ7R,OAAO8R,gBACrDnD,gBAAkBnS,KAAKuV,wBAG9BlD,cAjakB,yBAkaZrS,KAAKgS,mBAAoB,GAKzBtR,EAAS8U,eAAejQ,KAAK,SAACqD,EAAOlH,OAC/B+T,EAAgBxV,EAAEyB,GAAS,GAAGoM,MAAMoH,aACpCQ,EAAoBzV,EAAEyB,GAASwG,IAAI,mBACvCxG,GAAS+D,KAAK,gBAAiBgQ,GAAevN,IAAI,gBAAoByN,WAAWD,GAAqBE,EAAKzD,gBAA7G,UAIAzR,EAASmV,gBAAgBtQ,KAAK,SAACqD,EAAOlH,OAChCoU,EAAe7V,EAAEyB,GAAS,GAAGoM,MAAMiI,YACnCC,EAAmB/V,EAAEyB,GAASwG,IAAI,kBACtCxG,GAAS+D,KAAK,eAAgBqQ,GAAc5N,IAAI,eAAmByN,WAAWK,GAAoBJ,EAAKzD,gBAAzG,UAIAzR,EAASuV,gBAAgB1Q,KAAK,SAACqD,EAAOlH,OAChCoU,EAAe7V,EAAEyB,GAAS,GAAGoM,MAAMiI,YACnCC,EAAmB/V,EAAEyB,GAASwG,IAAI,kBACtCxG,GAAS+D,KAAK,eAAgBqQ,GAAc5N,IAAI,eAAmByN,WAAWK,GAAoBJ,EAAKzD,gBAAzG,YAIIsD,EAAgBjU,SAAS+Q,KAAKzE,MAAMoH,aACpCQ,EAAoBzV,EAAE,QAAQiI,IAAI,mBACtC,QAAQzC,KAAK,gBAAiBgQ,GAAevN,IAAI,gBAAoByN,WAAWD,GAAqB1V,KAAKmS,gBAA5G,UAIJ+B,gBAlckB,aAocdxT,EAAS8U,eAAejQ,KAAK,SAACqD,EAAOlH,OAC/BwU,EAAUjW,EAAEyB,GAAS+D,KAAK,iBACT,oBAAZyQ,KACPxU,GAASwG,IAAI,gBAAiBgO,GAASxR,WAAW,qBAKnDhE,EAASmV,eAAd,KAAiCnV,EAASuV,gBAAkB1Q,KAAK,SAACqD,EAAOlH,OACjEyU,EAASlW,EAAEyB,GAAS+D,KAAK,gBACT,oBAAX0Q,KACPzU,GAASwG,IAAI,eAAgBiO,GAAQzR,WAAW,sBAKhDwR,EAAUjW,EAAE,QAAQwF,KAAK,iBACR,oBAAZyQ,KACP,QAAQhO,IAAI,gBAAiBgO,GAASxR,WAAW,oBAIvD6Q,mBA1dkB,eA2dVa,EAAY5U,SAASiT,cAAc,SAC/BC,UAAYnU,WACbgS,KAAKc,YAAY+C,OACpBC,EAAiBD,EAAU9H,wBAAwBgI,MAAQF,EAAUG,4BAClEhE,KAAKiE,YAAYJ,GACnBC,KAKF/Q,iBAreW,SAqeM5C,EAAQ+H,UACvBzK,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAClBsH,EAAAA,KACDkK,EAAM3K,QACN/G,EAAED,MAAMyF,OACU,iBAAX/C,GAAuBA,MAG9B+C,MACI,IAAIkM,EAAM3R,KAAMyH,KACrBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,GAAQ+H,QACJhD,EAAQ4F,QACZA,KAAK5C,oDAjfmB,+CAgF1BzD,oBA6aTxF,UAAUqE,GAAGvF,EAAMwF,eAAgBpF,EAASkM,YAAa,SAAU/I,OAC/DpF,SACEkD,EAAWf,EAAK+D,uBAAuB3E,MAEzC2B,MACO1B,EAAE0B,GAAU,QAGjBe,EAASzC,EAAExB,GAAQgH,KAAKtF,GAC1B,SADWV,KAERQ,EAAExB,GAAQgH,OACVxF,EAAED,MAAMyF,QAGM,MAAjBzF,KAAK6J,SAAoC,SAAjB7J,KAAK6J,WACzBjE,qBAGFoJ,EAAU/O,EAAExB,GAAQwC,IAAIX,EAAMqN,KAAM,SAACmC,GACrCA,EAAUvL,wBAKNtD,IAAIX,EAAMiO,OAAQ,WACpBtO,EAAAA,GAAQ8D,GAAG,eACR2C,cAKLpB,iBAAiBxF,KAAKG,EAAExB,GAASiE,EAAQ1C,UAS/C0D,GAAF,MAAaiO,EAAMrM,mBACjB5B,GAAF,MAAWrE,YAAcsS,IACvBjO,GAAF,MAAWqC,WAAa,oBACpBrC,GAAF,MAAarD,EACNsR,EAAMrM,kBAGRqM,EApjBM,CAqjBZ1R,GCpjBGwW,EAAW,SAACxW,OAOVC,EAAsB,UAEtBC,EAAsB,aACtBC,EAAAA,IAA0BD,EAC1BE,EAAsBJ,EAAEyD,GAAGxD,GAG3BwW,EAAqB,IAAItT,OAAJ,wBAAyC,KAE9D6D,aACkB,mBACA,eACA,oCACA,eACA,uBACA,mBACA,6BACA,2BACA,4BACA,6CACA,0BACA,oBAGlBmI,QACK,WACA,YACA,eACA,cACA,QAGLpI,cACkB,WACA,+GAGA,oBACA,SACA,QACA,YACA,YACA,aACA,aACA,oBACA,gBACA,gBAGlB2P,EACG,OADHA,EAEG,MAGHrW,eACgBF,kBACEA,cACFA,gBACCA,sBACGA,gBACHA,oBACEA,sBACCA,0BACEA,0BACAA,GAGtBG,EACG,OADHA,EAEG,OAGHG,EAEY,iBAFZA,EAGY,SAGZkW,EACK,QADLA,EAEK,QAFLA,EAGK,QAHLA,EAIK,SAULH,wBACQ/U,EAASgB,MAKG,oBAAXqN,QACH,IAAIhE,UAAU,qEAIjB8K,YAAiB,OACjBC,SAAiB,OACjBC,YAAiB,QACjBC,uBACA3H,QAAiB,UAGjB3N,QAAUA,OACVgB,OAAU1C,KAAK0H,WAAWhF,QAC1BuU,IAAU,UAEVC,2CAmCPC,OA5JoB,gBA6JbN,YAAa,KAGpBO,QAhKoB,gBAiKbP,YAAa,KAGpBQ,cApKoB,gBAqKbR,YAAc7W,KAAK6W,cAG1B7Q,OAxKoB,SAwKbnC,MACA7D,KAAK6W,cAINhT,EAAO,KACHyT,EAAUtX,KAAKwQ,YAAYrQ,SAC7B8Q,EAAUhR,EAAE4D,EAAMiL,eAAerJ,KAAK6R,GAErCrG,MACO,IAAIjR,KAAKwQ,YACjB3M,EAAMiL,cACN9O,KAAKuX,wBAEL1T,EAAMiL,eAAerJ,KAAK6R,EAASrG,MAG/B+F,eAAeQ,OAASvG,EAAQ+F,eAAeQ,MAEnDvG,EAAQwG,yBACFC,OAAO,KAAMzG,KAEb0G,OAAO,KAAM1G,OAElB,IACDhR,EAAED,KAAK4X,iBAAiB3S,SAAS1E,oBAC9BoX,OAAO,KAAM3X,WAIf0X,OAAO,KAAM1X,UAItByE,QA1MoB,wBA2MLzE,KAAK8W,YAEhBpS,WAAW1E,KAAK0B,QAAS1B,KAAKwQ,YAAYrQ,YAE1CH,KAAK0B,SAASwH,IAAIlJ,KAAKwQ,YAAYpQ,aACnCJ,KAAK0B,SAASmD,QAAQ,UAAUqE,IAAI,iBAElClJ,KAAKiX,OACLjX,KAAKiX,KAAK5R,cAGTwR,WAAiB,UACjBC,SAAiB,UACjBC,YAAiB,UACjBC,eAAiB,KACD,OAAjBhX,KAAKqP,cACFA,QAAQc,eAGVd,QAAU,UACV3N,QAAU,UACVgB,OAAU,UACVuU,IAAU,QAGjB5J,KApOoB,yBAqOqB,SAAnCpN,EAAED,KAAK0B,SAASwG,IAAI,iBAChB,IAAI5E,MAAM,2CAGZwM,EAAY7P,EAAEK,MAAMN,KAAKwQ,YAAYlQ,MAAMqN,SAC7C3N,KAAK6X,iBAAmB7X,KAAK6W,WAAY,GACzC7W,KAAK0B,SAASU,QAAQ0N,OAElBgI,EAAa7X,EAAEwG,SACnBzG,KAAK0B,QAAQqW,cAAcrO,gBAC3B1J,KAAK0B,YAGHoO,EAAUvL,uBAAyBuT,aAIjCb,EAAQjX,KAAK4X,gBACbI,EAAQpX,EAAKqX,OAAOjY,KAAKwQ,YAAYtQ,QAEvCyG,aAAa,KAAMqR,QAClBtW,QAAQiF,aAAa,mBAAoBqR,QAEzCE,aAEDlY,KAAK0C,OAAOyV,aACZlB,GAAK9L,SAAS5K,OAGZoQ,EAA8C,mBAA1B3Q,KAAK0C,OAAOiO,UAClC3Q,KAAK0C,OAAOiO,UAAU7Q,KAAKE,KAAMiX,EAAKjX,KAAK0B,SAC3C1B,KAAK0C,OAAOiO,UAEVyH,EAAapY,KAAKqY,eAAe1H,QAClC2H,mBAAmBF,OAElBG,GAAsC,IAA1BvY,KAAK0C,OAAO6V,UAAsB/W,SAAS+Q,KAAOtS,EAAED,KAAK0C,OAAO6V,aAEhFtB,GAAKxR,KAAKzF,KAAKwQ,YAAYrQ,SAAUH,MAElCC,EAAEwG,SAASzG,KAAK0B,QAAQqW,cAAcrO,gBAAiB1J,KAAKiX,QAC7DA,GAAKtC,SAAS4D,KAGhBvY,KAAK0B,SAASU,QAAQpC,KAAKwQ,YAAYlQ,MAAMkY,eAE1CnJ,QAAU,IAAIU,EAAO/P,KAAK0B,QAASuV,aAC3BmB,4BAGCpY,KAAK0C,OAAOmO,uBAGV7Q,KAAK0C,OAAO+V,kCAGb/X,sCAGUV,KAAK0C,OAAOsN,oBAGzB,SAACvK,GACLA,EAAKiT,oBAAsBjT,EAAKkL,aAC7BgI,6BAA6BlT,aAG5B,SAACA,KACJkT,6BAA6BlT,QAIpCwR,GAAK9L,SAAS5K,GAMZ,iBAAkBiB,SAASkI,mBAC3B,QAAQwB,WAAWrF,GAAG,YAAa,KAAM5F,EAAEiQ,UAGzCjC,EAAW,WACX7M,EAAKsB,OAAOyV,aACTS,qBAEDC,EAAiBzX,EAAK2V,cACvBA,YAAkB,OAErB3V,EAAKM,SAASU,QAAQhB,EAAKoP,YAAYlQ,MAAM4N,OAE3C2K,IAAmBlC,KAChBgB,OAAO,KAAZvW,IAIAR,EAAKgD,yBAA2B3D,EAAED,KAAKiX,KAAKhS,SAAS1E,KACrDP,KAAKiX,KACJhW,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBAAqB8S,EAAQqC,8BAOtC1L,KA/UoB,SA+UfiH,cACG4C,EAAYjX,KAAK4X,gBACjBzG,EAAYlR,EAAEK,MAAMN,KAAKwQ,YAAYlQ,MAAM+N,MAC3CJ,EAAW,WACX3E,EAAKyN,cAAgBJ,GAAmBM,EAAI7F,cAC1CA,WAAWoF,YAAYS,KAGxB8B,mBACArX,QAAQ6R,gBAAgB,sBAC3BjK,EAAK5H,SAASU,QAAQkH,EAAKkH,YAAYlQ,MAAMiO,QAC1B,OAAjBjF,EAAK+F,WACFA,QAAQc,UAGXkE,UAKJrU,KAAK0B,SAASU,QAAQ+O,GAEpBA,EAAU5M,yBAIZ0S,GAAKjS,YAAYzE,GAIf,iBAAkBiB,SAASkI,mBAC3B,QAAQwB,WAAWhC,IAAI,YAAa,KAAMjJ,EAAEiQ,WAG3C8G,eAAeJ,IAAiB,OAChCI,eAAeJ,IAAiB,OAChCI,eAAeJ,IAAiB,EAEjChW,EAAKgD,yBACL3D,EAAED,KAAKiX,KAAKhS,SAAS1E,KACrB0W,GACChW,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBA7WmB,cAkXnBoT,YAAc,OAGrB3G,OAjYoB,WAkYG,OAAjBpQ,KAAKqP,cACFA,QAAQgB,oBAMjBwH,cAzYoB,kBA0YXvV,QAAQtC,KAAKgZ,eAGtBV,mBA7YoB,SA6YDF,KACfpY,KAAK4X,iBAAiBzM,SAAY8N,cAAgBb,MAGtDR,cAjZoB,uBAkZbX,IAAMjX,KAAKiX,KAAOhX,EAAED,KAAK0C,OAAOwW,UAAU,GACxClZ,KAAKiX,OAGdiB,WAtZoB,eAuZZiB,EAAOlZ,EAAED,KAAK4X,sBACfwB,kBAAkBD,EAAKlX,KAAKvB,GAAyBV,KAAKgZ,cAC1DhU,YAAezE,EAApB,IAAsCA,MAGxC6Y,kBA5ZoB,SA4ZF5T,EAAU6T,OACpBC,EAAOtZ,KAAK0C,OAAO4W,KACF,iBAAZD,IAAyBA,EAAQ7W,UAAY6W,EAAQ5K,QAE1D6K,EACGrZ,EAAEoZ,GAASzU,SAASb,GAAGyB,MACjB+T,QAAQC,OAAOH,KAGjBI,KAAKxZ,EAAEoZ,GAASI,UAGlBH,EAAO,OAAS,QAAQD,MAIrCL,SA5aoB,eA6adU,EAAQ1Z,KAAK0B,QAAQE,aAAa,8BAEjC8X,MACkC,mBAAtB1Z,KAAK0C,OAAOgX,MACvB1Z,KAAK0C,OAAOgX,MAAM5Z,KAAKE,KAAK0B,SAC5B1B,KAAK0C,OAAOgX,OAGXA,KAKTrB,eA1boB,SA0bL1H,UACNvB,EAAcuB,EAAUpN,kBAGjC2T,cA9boB,sBA+bDlX,KAAK0C,OAAON,QAAQuX,MAAM,KAElCC,QAAQ,SAACxX,MACA,UAAZA,IACAwJ,EAAKlK,SAASmE,GACd+F,EAAK4E,YAAYlQ,MAAMgQ,MACvB1E,EAAKlJ,OAAOf,SACZ,SAACkC,UAAU+H,EAAK5F,OAAOnC,UAEpB,GAAIzB,IAAYwU,EAAgB,KAC/BiD,EAAUzX,IAAYwU,EACxBhL,EAAK4E,YAAYlQ,MAAMkJ,WACvBoC,EAAK4E,YAAYlQ,MAAM0S,QACrB8G,EAAW1X,IAAYwU,EACzBhL,EAAK4E,YAAYlQ,MAAMmJ,WACvBmC,EAAK4E,YAAYlQ,MAAMyZ,WAEzBnO,EAAKlK,SACJmE,GACCgU,EACAjO,EAAKlJ,OAAOf,SACZ,SAACkC,UAAU+H,EAAK8L,OAAO7T,KAExBgC,GACCiU,EACAlO,EAAKlJ,OAAOf,SACZ,SAACkC,UAAU+H,EAAK+L,OAAO9T,OAI3B+H,EAAKlK,SAASmD,QAAQ,UAAUgB,GAChC,gBACA,kBAAM+F,EAAKwB,WAIXpN,KAAK0C,OAAOf,cACTe,OAALjD,KACKO,KAAK0C,gBACC,kBACC,UAGPsX,eAITA,UA9eoB,eA+eZC,SAAmBja,KAAK0B,QAAQE,aAAa,wBAC/C5B,KAAK0B,QAAQE,aAAa,UACb,WAAdqY,UACIvY,QAAQiF,aACX,sBACA3G,KAAK0B,QAAQE,aAAa,UAAY,SAEnCF,QAAQiF,aAAa,QAAS,QAIvC+Q,OA1foB,SA0fb7T,EAAOoN,OACNqG,EAAUtX,KAAKwQ,YAAYrQ,YAEvB8Q,GAAWhR,EAAE4D,EAAMiL,eAAerJ,KAAK6R,QAGrC,IAAItX,KAAKwQ,YACjB3M,EAAMiL,cACN9O,KAAKuX,wBAEL1T,EAAMiL,eAAerJ,KAAK6R,EAASrG,IAGnCpN,MACMmT,eACS,YAAfnT,EAAMuC,KAAqBwQ,EAAgBA,IACzC,GAGF3W,EAAEgR,EAAQ2G,iBAAiB3S,SAAS1E,IACrC0Q,EAAQ8F,cAAgBJ,IACjBI,YAAcJ,gBAIX1F,EAAQ6F,YAEbC,YAAcJ,EAEjB1F,EAAQvO,OAAOwX,OAAUjJ,EAAQvO,OAAOwX,MAAM7M,OAK3CyJ,SAAWlN,WAAW,WACxBqH,EAAQ8F,cAAgBJ,KAClBtJ,QAET4D,EAAQvO,OAAOwX,MAAM7M,QARdA,WAWZsK,OAniBoB,SAmiBb9T,EAAOoN,OACNqG,EAAUtX,KAAKwQ,YAAYrQ,YAEvB8Q,GAAWhR,EAAE4D,EAAMiL,eAAerJ,KAAK6R,QAGrC,IAAItX,KAAKwQ,YACjB3M,EAAMiL,cACN9O,KAAKuX,wBAEL1T,EAAMiL,eAAerJ,KAAK6R,EAASrG,IAGnCpN,MACMmT,eACS,aAAfnT,EAAMuC,KAAsBwQ,EAAgBA,IAC1C,GAGF3F,EAAQwG,sCAICxG,EAAQ6F,YAEbC,YAAcJ,EAEjB1F,EAAQvO,OAAOwX,OAAUjJ,EAAQvO,OAAOwX,MAAM9M,OAK3C0J,SAAWlN,WAAW,WACxBqH,EAAQ8F,cAAgBJ,KAClBvJ,QAET6D,EAAQvO,OAAOwX,MAAM9M,QARdA,WAWZqK,qBA1kBoB,eA2kBb,IAAMrV,KAAWpC,KAAKgX,kBACrBhX,KAAKgX,eAAe5U,UACf,SAIJ,KAGTsF,WAplBoB,SAolBThF,SAOmB,wBALvB1C,KAAKwQ,YAAYxJ,QACjB/G,EAAED,KAAK0B,SAAS+D,OAChB/C,IAGawX,UACTA,YACCxX,EAAOwX,WACPxX,EAAOwX,QAIW,iBAAjBxX,EAAOgX,UACTA,MAAQhX,EAAOgX,MAAMzW,YAGA,iBAAnBP,EAAO2W,YACTA,QAAU3W,EAAO2W,QAAQpW,cAG7BkG,gBACHjJ,EACAwC,EACA1C,KAAKwQ,YAAYvJ,aAGZvE,KAGT6U,mBAnnBoB,eAonBZ7U,QAEF1C,KAAK0C,WACF,IAAMvD,KAAOa,KAAK0C,OACjB1C,KAAKwQ,YAAYxJ,QAAQ7H,KAASa,KAAK0C,OAAOvD,OACzCA,GAAOa,KAAK0C,OAAOvD,WAKzBuD,KAGTqW,eAjoBoB,eAkoBZI,EAAOlZ,EAAED,KAAK4X,iBACduC,EAAWhB,EAAKpL,KAAK,SAAS7K,MAAMwT,GACzB,OAAbyD,GAAqBA,EAASvb,OAAS,KACpCoG,YAAYmV,EAASC,KAAK,QAInCzB,6BAzoBoB,SAyoBSlT,QACtBsT,sBACAT,mBAAmBtY,KAAKqY,eAAe5S,EAAKkL,eAGnDiI,eA9oBoB,eA+oBZ3B,EAAMjX,KAAK4X,gBACXyC,EAAsBra,KAAK0C,OAAOyV,UACA,OAApClB,EAAIrV,aAAa,mBAGnBqV,GAAKjS,YAAYzE,QACdmC,OAAOyV,WAAY,OACnB/K,YACAC,YACA3K,OAAOyV,UAAYkC,MAKnB/U,iBA7pBa,SA6pBI5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAClBsH,EAA4B,iBAAX/E,GAAuBA,MAEzC+C,IAAQ,eAAepC,KAAKX,MAI5B+C,MACI,IAAIgR,EAAQzW,KAAMyH,KACvBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,GAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAvqBe,+CA2HjBsE,sCAIA9G,0CAIAC,uCAIAG,2CAIAF,6CAIA6G,oBAoiBTvD,GAAGxD,GAAQuW,EAAQnR,mBACnB5B,GAAGxD,GAAMb,YAAcoX,IACvB/S,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNoW,EAAQnR,kBAGVmR,EAlsBQ,CAmsBdxW,GCpsBGqa,EAAW,SAACra,OAOVC,EAAsB,UAEtBC,EAAsB,aACtBC,EAAAA,IAA0BD,EAC1BE,EAAsBJ,EAAEyD,GAAGxD,GAE3BwW,EAAsB,IAAItT,OAAJ,wBAAyC,KAE/D4D,EAAAA,KACDyP,EAAQzP,mBACC,gBACA,gBACA,YACA,wIAMRC,EAAAA,KACDwP,EAAQxP,qBACD,8BAGN1G,EACG,OADHA,EAEG,OAGHG,EACM,kBADNA,EAEM,gBAGNJ,eACgBF,kBACEA,cACFA,gBACCA,sBACGA,gBACHA,oBACEA,sBACCA,0BACEA,0BACAA,GAStBka,cTlCR,IAAwBC,EAAUC,oDAAAA,KAAVD,KACb/a,UAAYP,OAAOwb,OAAOD,EAAWhb,WAC9C+a,EAAS/a,UAAUgR,YAAc+J,EACjCA,EAASG,UAAYF,6BSgEnB3C,cA7FoB,kBA8FX7X,KAAKgZ,YAAchZ,KAAK2a,iBAGjCrC,mBAjGoB,SAiGDF,KACfpY,KAAK4X,iBAAiBzM,SAAY8N,cAAgBb,MAGtDR,cArGoB,uBAsGbX,IAAMjX,KAAKiX,KAAOhX,EAAED,KAAK0C,OAAOwW,UAAU,GACxClZ,KAAKiX,OAGdiB,WA1GoB,eA2GZiB,EAAOlZ,EAAED,KAAK4X,sBAGfwB,kBAAkBD,EAAKlX,KAAKvB,GAAiBV,KAAKgZ,gBACnDK,EAAUrZ,KAAK2a,cACI,mBAAZtB,MACCA,EAAQvZ,KAAKE,KAAK0B,eAEzB0X,kBAAkBD,EAAKlX,KAAKvB,GAAmB2Y,KAE/CrU,YAAezE,EAApB,IAAsCA,MAKxCoa,YA1HoB,kBA2HX3a,KAAK0B,QAAQE,aAAa,iBAC/B5B,KAAK0C,OAAO2W,WAGhBN,eA/HoB,eAgIZI,EAAOlZ,EAAED,KAAK4X,iBACduC,EAAWhB,EAAKpL,KAAK,SAAS7K,MAAMwT,GACzB,OAAbyD,GAAqBA,EAASvb,OAAS,KACpCoG,YAAYmV,EAASC,KAAK,QAM5B9U,iBAzIa,SAyII5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,GAClBsH,EAA4B,iBAAX/E,EAAsBA,EAAS,SAEjD+C,IAAQ,eAAepC,KAAKX,MAI5B+C,MACI,IAAI6U,EAAQta,KAAMyH,KACvBzH,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,GAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAnJe,+CA4DjBsE,sCAIA9G,0CAIAC,uCAIAG,2CAIAF,6CAIA6G,SA5BWwP,YA2GpB/S,GAAGxD,GAAQoa,EAAQhV,mBACnB5B,GAAGxD,GAAMb,YAAcib,IACvB5W,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNia,EAAQhV,kBAGVgV,EA9KQ,CA+Kdra,GC/KG2a,EAAa,SAAC3a,OAOZC,EAAqB,YAErBC,EAAqB,eACrBC,EAAAA,IAAyBD,EAEzBE,EAAqBJ,EAAEyD,GAAGxD,GAE1B8G,UACK,UACA,cACA,IAGLC,UACK,gBACA,gBACA,oBAGL3G,uBACuBF,kBACFA,uBACFA,EAlBE,aAqBrBG,EACY,gBADZA,EAGY,SAGZG,YACc,6BACA,yBACA,8BACA,sBACA,uBACA,4BACA,2BACA,iCACA,oBAGdma,EACO,SADPA,EAEO,WASPD,wBACQlZ,EAASgB,mBACdwB,SAAiBxC,OACjBoZ,eAAqC,SAApBpZ,EAAQmI,QAAqBrG,OAAS9B,OACvD+F,QAAiBzH,KAAK0H,WAAWhF,QACjCqK,UAAoB/M,KAAKyH,QAAQhJ,OAAhB,IAA0BiC,EAASqa,UAAnC,IACG/a,KAAKyH,QAAQhJ,OADhB,IAC0BiC,EAASsa,WADnC,IAEGhb,KAAKyH,QAAQhJ,OAFhB,IAE0BiC,EAASua,oBACpDC,iBACAC,iBACAC,cAAiB,UACjBC,cAAiB,IAEpBrb,KAAK8a,gBAAgBjV,GAAGvF,EAAMgb,OAAQ,SAACzX,UAAUzC,EAAKma,SAAS1X,UAE5D2X,eACAD,sCAePC,QA5FsB,sBA6FdC,EAAazb,KAAK8a,iBAAmB9a,KAAK8a,eAAetX,OAC3DqX,EAAsBA,EAEpBa,EAAuC,SAAxB1b,KAAKyH,QAAQkU,OAC9BF,EAAazb,KAAKyH,QAAQkU,OAExBC,EAAaF,IAAiBb,EAChC7a,KAAK6b,gBAAkB,OAEtBX,iBACAC,iBAEAE,cAAgBrb,KAAK8b,mBAEV7b,EAAE8J,UAAU9J,EAAED,KAAK+M,YAGhCgP,IAAI,SAACra,OACAjD,EACEud,EAAiBpb,EAAK+D,uBAAuBjD,MAE/Csa,MACO/b,EAAE+b,GAAgB,IAGzBvd,EAAQ,KACJwd,EAAYxd,EAAO6P,2BACrB2N,EAAU3F,OAAS2F,EAAUC,cAG7Bjc,EAAExB,GAAQid,KAAgBS,IAAMP,EAChCI,UAIC,OAERlP,OAAO,SAACsP,UAASA,IACjBC,KAAK,SAACC,EAAGC,UAAMD,EAAE,GAAKC,EAAE,KACxB3C,QAAQ,SAACwC,KACHlB,SAASlO,KAAKoP,EAAK,MACnBjB,SAASnO,KAAKoP,EAAK,SAI9B3X,QA1IsB,aA2IlBC,WAAW1E,KAAKkE,SAAU/D,KAC1BH,KAAK8a,gBAAgB5R,IAAI9I,QAEtB8D,SAAiB,UACjB4W,eAAiB,UACjBrT,QAAiB,UACjBsF,UAAiB,UACjBmO,SAAiB,UACjBC,SAAiB,UACjBC,cAAiB,UACjBC,cAAiB,QAKxB3T,WA1JsB,SA0JXhF,MAMoB,wBAJxBsE,EACAtE,IAGajE,OAAqB,KACjCiO,EAAKzM,EAAEyC,EAAOjE,QAAQsP,KAAK,MAC1BrB,MACE9L,EAAKqX,OAAO/X,KACfwC,EAAOjE,QAAQsP,KAAK,KAAMrB,MAEvBjO,OAAP,IAAoBiO,WAGjBvD,gBAAgBjJ,EAAMwC,EAAQuE,GAE5BvE,KAGTmZ,cA9KsB,kBA+Kb7b,KAAK8a,iBAAmBtX,OAC3BxD,KAAK8a,eAAe0B,YAAcxc,KAAK8a,eAAetH,aAG5DsI,iBAnLsB,kBAoLb9b,KAAK8a,eAAe/F,cAAgBzT,KAAKmb,IAC9Cjb,SAAS+Q,KAAKwC,aACdvT,SAASkI,gBAAgBqL,iBAI7B2H,iBA1LsB,kBA2Lb1c,KAAK8a,iBAAmBtX,OAC3BA,OAAOmZ,YAAc3c,KAAK8a,eAAexM,wBAAwB4N,UAGvEX,SA/LsB,eAgMd/H,EAAexT,KAAK6b,gBAAkB7b,KAAKyH,QAAQoJ,OACnDkE,EAAe/U,KAAK8b,mBACpBc,EAAe5c,KAAKyH,QAAQoJ,OAChCkE,EACA/U,KAAK0c,sBAEH1c,KAAKqb,gBAAkBtG,QACpByG,UAGHhI,GAAaoJ,OACTne,EAASuB,KAAKmb,SAASnb,KAAKmb,SAASvc,OAAS,GAEhDoB,KAAKob,gBAAkB3c,QACpBoe,UAAUpe,WAKfuB,KAAKob,eAAiB5H,EAAYxT,KAAKkb,SAAS,IAAMlb,KAAKkb,SAAS,GAAK,cACtEE,cAAgB,eAChB0B,aAIF,IAAIne,EAAIqB,KAAKkb,SAAStc,OAAQD,KAAM,CAChBqB,KAAKob,gBAAkBpb,KAAKmb,SAASxc,IACxD6U,GAAaxT,KAAKkb,SAASvc,KACM,oBAAzBqB,KAAKkb,SAASvc,EAAI,IACtB6U,EAAYxT,KAAKkb,SAASvc,EAAI,UAG/Bke,UAAU7c,KAAKmb,SAASxc,SAKnCke,UArOsB,SAqOZpe,QACH2c,cAAgB3c,OAEhBqe,aAEDC,EAAU/c,KAAK+M,UAAU4M,MAAM,OAEzBoD,EAAQhB,IAAI,SAACpa,UACXA,EAAH,iBAA4BlD,EAA5B,MACGkD,EADH,UACqBlD,EADrB,WAIHue,EAAQ/c,EAAE8c,EAAQ3C,KAAK,MAEzB4C,EAAM/X,SAAS1E,MACXsE,QAAQnE,EAASuc,UAAUhb,KAAKvB,EAASwc,iBAAiB/R,SAAS5K,KACnE4K,SAAS5K,OAGT4K,SAAS5K,KAGT4c,QAAQzc,EAAS0c,gBAAgBjV,KAAQzH,EAASqa,UAAxD,KAAsEra,EAASsa,YAAc7P,SAAS5K,KAEhG4c,QAAQzc,EAAS0c,gBAAgBjV,KAAKzH,EAAS2c,WAAWnS,SAASxK,EAASqa,WAAW5P,SAAS5K,MAGtGP,KAAK8a,gBAAgB1Y,QAAQ9B,EAAMgd,wBACpB7e,OAInBqe,OArQsB,aAsQlB9c,KAAK+M,WAAWD,OAAOpM,EAASsK,QAAQhG,YAAYzE,MAKjD+E,iBA3Qe,SA2QE5C,UACf1C,KAAKuF,KAAK,eACXE,EAAOxF,EAAED,MAAMyF,KAAKtF,MAGnBsF,MACI,IAAImV,EAAU5a,KAHW,iBAAX0C,GAAuBA,KAI1C1C,MAAMyF,KAAKtF,EAAUsF,IAGH,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAjRc,+CA+EhBsE,oBA8MTxD,QAAQqC,GAAGvF,EAAM6L,cAAe,mBAC1BoR,EAAatd,EAAE8J,UAAU9J,EAAES,EAAS8c,WAEjC7e,EAAI4e,EAAW3e,OAAQD,KAAM,KAC9B8e,EAAOxd,EAAEsd,EAAW5e,MAChB2G,iBAAiBxF,KAAK2d,EAAMA,EAAKhY,aAU7C/B,GAAGxD,GAAQ0a,EAAUtV,mBACrB5B,GAAGxD,GAAMb,YAAcub,IACvBlX,GAAGxD,GAAM6F,WAAa,oBACpBrC,GAAGxD,GAAQG,EACNua,EAAUtV,kBAGZsV,EA3TU,CA4ThB3a,GC5TGyd,EAAO,SAACzd,OASNE,EAAsB,SACtBC,EAAAA,IAA0BD,EAE1BE,EAAsBJ,EAAEyD,GAAF,IAGtBpD,eACoBF,kBACEA,cACFA,gBACCA,0CAIrBG,EACY,gBADZA,EAEY,SAFZA,EAGY,WAHZA,EAIY,OAJZA,EAKY,OAGZG,EACoB,YADpBA,EAEoB,oBAFpBA,EAGoB,UAHpBA,EAIoB,iBAJpBA,EAKoB,kEALpBA,EAMoB,mBANpBA,EAOoB,2BASpBgd,wBACQhc,QACLwC,SAAWxC,6BAWlB2L,KA5DgB,2BA6DVrN,KAAKkE,SAASkN,YACdpR,KAAKkE,SAASkN,WAAW5O,WAAa2Q,KAAKC,cAC3CnT,EAAED,KAAKkE,UAAUe,SAAS1E,IAC1BN,EAAED,KAAKkE,UAAUe,SAAS1E,SAI1B9B,EACAkf,EACEC,EAAc3d,EAAED,KAAKkE,UAAUW,QAAQnE,GAAyB,GAChEiB,EAAWf,EAAK+D,uBAAuB3E,KAAKkE,aAE9C0Z,EAAa,KACTC,EAAwC,OAAzBD,EAAYE,SAAoBpd,EAAqBA,OAC/DT,EAAE8J,UAAU9J,EAAE2d,GAAa3b,KAAK4b,KACvBF,EAAS/e,OAAS,OAGlCuS,EAAYlR,EAAEK,MAAMA,EAAM+N,oBACfrO,KAAKkE,WAGhB4L,EAAY7P,EAAEK,MAAMA,EAAMqN,oBACfgQ,OAGbA,KACAA,GAAUvb,QAAQ+O,KAGpBnR,KAAKkE,UAAU9B,QAAQ0N,IAErBA,EAAUvL,uBACX4M,EAAU5M,sBAIT5C,MACO1B,EAAE0B,GAAU,SAGlBkb,UACH7c,KAAKkE,SACL0Z,OAGI3P,EAAW,eACT8P,EAAc9d,EAAEK,MAAMA,EAAMiO,sBACjBnN,EAAK8C,WAGhBwP,EAAazT,EAAEK,MAAMA,EAAM4N,qBAChByP,MAGfA,GAAUvb,QAAQ2b,KAClB3c,EAAK8C,UAAU9B,QAAQsR,IAGvBjV,OACGoe,UAAUpe,EAAQA,EAAO2S,WAAYnD,YAM9CxJ,QA/HgB,aAgIZC,WAAW1E,KAAKkE,SAAU/D,QACvB+D,SAAW,QAKlB2Y,UAtIgB,SAsINnb,EAAS6W,EAAWlE,cAQtB2J,GANqB,OAAvBzF,EAAUuF,SACK7d,EAAEsY,GAAWtW,KAAKvB,GAElBT,EAAEsY,GAAWrN,SAASxK,IAGX,GACxB8N,EAAkB6F,GACtBzT,EAAKgD,yBACJoa,GAAU/d,EAAE+d,GAAQ/Y,SAAS1E,GAE1B0N,EAAW,kBAAM3E,EAAK2U,oBAC1Bvc,EACAsc,EACA3J,IAGE2J,GAAUxP,IACVwP,GACC/c,IAAIL,EAAKM,eAAgB+M,GACzBtK,qBA/ImB,YAqJ1Bsa,oBAlKgB,SAkKIvc,EAASsc,EAAQ3J,MAC/B2J,EAAQ,GACRA,GAAQhZ,YAAezE,EAAzB,IAA2CA,OAErC2d,EAAgBje,EAAE+d,EAAO5M,YAAYnP,KACzCvB,GACA,GAEEwd,KACAA,GAAelZ,YAAYzE,GAGK,QAAhCyd,EAAOpc,aAAa,WACf+E,aAAa,iBAAiB,QAIvCjF,GAASyJ,SAAS5K,GACiB,QAAjCmB,EAAQE,aAAa,WACf+E,aAAa,iBAAiB,KAGnCgF,OAAOjK,KACVA,GAASyJ,SAAS5K,GAEhBmB,EAAQ0P,YACRnR,EAAEyB,EAAQ0P,YAAYnM,SAAS1E,GAA0B,KACrD4d,EAAkBle,EAAEyB,GAASmD,QAAQnE,GAAmB,GAC1Dyd,KACAA,GAAiBlc,KAAKvB,GAA0ByK,SAAS5K,KAGrDoG,aAAa,iBAAiB,GAGpC0N,UAOC/O,iBA5MS,SA4MQ5C,UACf1C,KAAKuF,KAAK,eACTsJ,EAAQ5O,EAAED,MACZyF,EAAOoJ,EAAMpJ,KAAKtF,MAEjBsF,MACI,IAAIiY,EAAI1d,QACTyF,KAAKtF,EAAUsF,IAGD,iBAAX/C,EAAqB,IACF,oBAAjB+C,EAAK/C,SACR,IAAIqJ,UAAJ,oBAAkCrJ,EAAlC,OAEHA,uDAlNe,0BA8N1BlB,UACCqE,GAAGvF,EAAMwF,eAAgBpF,EAAsB,SAAUmD,KAClD+B,mBACFN,iBAAiBxF,KAAKG,EAAED,MAAO,YASrC0D,GAAF,IAAaga,EAAIpY,mBACf5B,GAAF,IAAWrE,YAAcqe,IACvBha,GAAF,IAAWqC,WAAa,oBACpBrC,GAAF,IAAarD,EACNqd,EAAIpY,kBAGNoY,EAzPI,CA0PVzd,IChPH,SAAEA,MACiB,oBAANA,QACH,IAAI8L,UAAU,sGAGhBqS,EAAUne,EAAEyD,GAAG+K,OAAOkL,MAAM,KAAK,GAAGA,MAAM,QAO5CyE,EAAQ,GALI,GAKYA,EAAQ,GAJnB,GAFA,IAMoCA,EAAQ,IAJ5C,IAI+DA,EAAQ,IAAmBA,EAAQ,GAHlG,GAGmHA,EAAQ,IAF3H,QAGT,IAAI9a,MAAM,+EAbpB,CAeGrD","sourcesContent":["export { _createClass as createClass, _extends as extends, _inheritsLoose as inheritsLoose };\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let transition = false\n\n const MAX_UID = 1000000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n }\n\n function transitionEndTest() {\n if (typeof window !== 'undefined' && window.QUnit) {\n return false\n }\n\n return {\n end: 'transitionend'\n }\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest()\n\n $.fn.emulateTransitionEnd = transitionEndEmulator\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n }\n\n function escapeId(selector) {\n // We escape IDs in case of special selectors (selector = '#myId:something')\n // $.escapeSelector does not exist in jQuery < 3\n selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1)\n : selector.replace(/(:|\\.|\\[|\\]|,|=|@)/g, '\\\\$1')\n\n return selector\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n // If it's an ID\n if (selector.charAt(0) === '#') {\n selector = escapeId(selector)\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? selector : null\n } catch (err) {\n return null\n }\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(transition.end)\n },\n\n supportsTransitionEnd() {\n return Boolean(transition)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n }\n }\n\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n element = element || this._element\n\n const rootElement = this._getRootElement(element)\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!Util.supportsTransitionEnd() ||\n !$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n Util.supportsTransitionEnd()) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $(this._indicatorsElement)\n .find(Selector.ACTIVE)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n $(Selector.DATA_RIDE).each(function () {\n const $carousel = $(this)\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\n )\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(selector)\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n $(selector).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n }\n\n const Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'\n }\n\n const AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n }\n\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n }\n let element = this._element\n // For dropup with alignment we use the parent as popper container\n if ($(parent).hasClass(ClassName.DROPUP)) {\n if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {\n element = parent\n }\n }\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(element, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n this._menu = $(parent).find(Selector.MENU)[0]\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element).parent()\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n for (let i = 0; i < toggles.length; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Dropdown._jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 300\n const BACKDROP_TRANSITION_DURATION = 150\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top',\n NAVBAR_TOGGLER : '.navbar-toggler'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._originalBodyPadding = 0\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isTransitioning || this._isShown) {\n return\n }\n\n if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (this._isTransitioning || !this._isShown) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n\n const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n if (transition) {\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n const doAnimate = Util.supportsTransitionEnd() && animate\n\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n $(this._backdrop).addClass(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (doAnimate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!doAnimate) {\n callback()\n return\n }\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)) {\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const actualPadding = $(element)[0].style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(Selector.STICKY_CONTENT).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust navbar-toggler margin\n $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $('body').css('padding-right')\n $('body').data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const padding = $(element).data('padding-right')\n if (typeof padding !== 'undefined') {\n $(element).css('padding-right', padding).removeData('padding-right')\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $('body').data('padding-right')\n if (typeof padding !== 'undefined') {\n $('body').css('padding-right', padding).removeData('padding-right')\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Modal.Default,\n ...$(this).data(),\n ...typeof config === 'object' && config\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = $(selector)[0]\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const isInTheDom = $.contains(\n this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this.config.container === false ? document.body : $(this.config.container)\n\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => {\n this._handlePopperPlacementChange(data)\n }\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(Tooltip._TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if (Util.supportsTransitionEnd() &&\n $(this.tip).hasClass(ClassName.FADE)) {\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : 'text'](content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\n ...config\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(data) {\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(data.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tooltip._jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Popover._jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $(queries.join(','))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n for (let i = scrollSpys.length; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = $(selector)[0]\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n let activeElements\n if (container.nodeName === 'UL') {\n activeElements = $(container).find(Selector.ACTIVE_UL)\n } else {\n activeElements = $(container).children(Selector.ACTIVE)\n }\n\n const active = activeElements[0]\n const isTransitioning = callback &&\n Util.supportsTransitionEnd() &&\n (active && $(active).hasClass(ClassName.FADE))\n\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n $(element).addClass(ClassName.SHOW)\n\n if (element.parentNode &&\n $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n if (dropdownElement) {\n $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})($)\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"]} \ No newline at end of file
diff --git a/library/cropper/cropper.css b/library/cropper/cropper.css
deleted file mode 100644
index c2e759818..000000000
--- a/library/cropper/cropper.css
+++ /dev/null
@@ -1,182 +0,0 @@
-.imgCrop_wrap {
- /* width: 500px; @done_in_js */
- /* height: 375px; @done_in_js */
- position: relative;
- cursor: crosshair;
-}
-
-/* an extra classname is applied for Opera < 9.0 to fix it's lack of opacity support */
-.imgCrop_wrap.opera8 .imgCrop_overlay,
-.imgCrop_wrap.opera8 .imgCrop_clickArea {
- background-color: transparent;
-}
-
-/* fix for IE displaying all boxes at line-height by default, although they are still 1 pixel high until we combine them with the pointless span */
-.imgCrop_wrap,
-.imgCrop_wrap * {
- font-size: 0;
-}
-
-.imgCrop_overlay {
- background-color: #000;
- opacity: 0.5;
- filter:alpha(opacity=50);
- position: absolute;
- width: 100%;
- height: 100%;
-}
-
-.imgCrop_selArea {
- position: absolute;
- /* @done_in_js
- top: 20px;
- left: 20px;
- width: 200px;
- height: 200px;
- background: transparent url(castle.jpg) no-repeat -210px -110px;
- */
- cursor: move;
- z-index: 2;
-}
-
-/* clickArea is all a fix for IE 5.5 & 6 to allow the user to click on the given area */
-.imgCrop_clickArea {
- width: 100%;
- height: 100%;
- background-color: #FFF;
- opacity: 0.01;
- filter:alpha(opacity=01);
-}
-
-.imgCrop_marqueeHoriz {
- position: absolute;
- width: 100%;
- height: 1px;
- background: transparent url(marqueeHoriz.gif) repeat-x 0 0;
- z-index: 3;
-}
-
-.imgCrop_marqueeVert {
- position: absolute;
- height: 100%;
- width: 1px;
- background: transparent url(marqueeVert.gif) repeat-y 0 0;
- z-index: 3;
-}
-
-/*
- * FIX MARCHING ANTS IN IE
- * As IE <6 tries to load background images we can uncomment the follwoing hack
- * to remove that issue, not as pretty - but is anything in IE?
- * And yes I do know that 'filter' is evil, but it will make it look semi decent in IE
- *
-* html .imgCrop_marqueeHoriz,
-* html .imgCrop_marqueeVert {
- background: transparent;
- filter: Invert;
-}
-* html .imgCrop_marqueeNorth { border-top: 1px dashed #000; }
-* html .imgCrop_marqueeEast { border-right: 1px dashed #000; }
-* html .imgCrop_marqueeSouth { border-bottom: 1px dashed #000; }
-* html .imgCrop_marqueeWest { border-left: 1px dashed #000; }
-*/
-
-.imgCrop_marqueeNorth { top: 0; left: 0; }
-.imgCrop_marqueeEast { top: 0; right: 0; }
-.imgCrop_marqueeSouth { bottom: 0px; left: 0; }
-.imgCrop_marqueeWest { top: 0; left: 0; }
-
-
-.imgCrop_handle {
- position: absolute;
- border: 1px solid #333;
- width: 6px;
- height: 6px;
- background: #FFF;
- opacity: 0.5;
- filter:alpha(opacity=50);
- z-index: 4;
-}
-
-/* fix IE 5 box model */
-* html .imgCrop_handle {
- width: 8px;
- height: 8px;
- wid\th: 6px;
- hei\ght: 6px;
-}
-
-.imgCrop_handleN {
- top: -3px;
- left: 0;
- /* margin-left: 49%; @done_in_js */
- cursor: n-resize;
-}
-
-.imgCrop_handleNE {
- top: -3px;
- right: -3px;
- cursor: ne-resize;
-}
-
-.imgCrop_handleE {
- top: 0;
- right: -3px;
- /* margin-top: 49%; @done_in_js */
- cursor: e-resize;
-}
-
-.imgCrop_handleSE {
- right: -3px;
- bottom: -3px;
- cursor: se-resize;
-}
-
-.imgCrop_handleS {
- right: 0;
- bottom: -3px;
- /* margin-right: 49%; @done_in_js */
- cursor: s-resize;
-}
-
-.imgCrop_handleSW {
- left: -3px;
- bottom: -3px;
- cursor: sw-resize;
-}
-
-.imgCrop_handleW {
- top: 0;
- left: -3px;
- /* margin-top: 49%; @done_in_js */
- cursor: w-resize;
-}
-
-.imgCrop_handleNW {
- top: -3px;
- left: -3px;
- cursor: nw-resize;
-}
-
-/**
- * Create an area to click & drag around on as the default browser behaviour is to let you drag the image
- */
-.imgCrop_dragArea {
- width: 100%;
- height: 100%;
- z-index: 200;
- position: absolute;
- top: 0;
- left: 0;
-}
-
-.imgCrop_previewWrap {
- /* width: 200px; @done_in_js */
- /* height: 200px; @done_in_js */
- overflow: hidden;
- position: relative;
-}
-
-.imgCrop_previewWrap img {
- position: absolute;
-} \ No newline at end of file
diff --git a/library/cropper/cropper.html b/library/cropper/cropper.html
deleted file mode 100644
index 236235247..000000000
--- a/library/cropper/cropper.html
+++ /dev/null
@@ -1,228 +0,0 @@
- 1.
- <script type="text/javascript" src="scripts/cropper/lib/prototype.js" language="javascript"></script>
- 2.
- <script type="text/javascript" src="scripts/cropper/lib/scriptaculous.js?load=builder,dragdrop" language="javascript"></script>
- 3.
- <script type="text/javascript" src="scripts/cropper/cropper.js" language="javascript"></script>
-
-Options
-
-ratioDim obj
- The pixel dimensions to apply as a restrictive ratio, with properties x & y.
-minWidth int
- The minimum width for the select area in pixels.
-minHeight int
- The mimimum height for the select area in pixels.
-maxWidth int
- The maximum width for the select areas in pixels (if both minWidth & maxWidth set to same the width of the cropper will be fixed)
-maxHeight int
- The maximum height for the select areas in pixels (if both minHeight & maxHeight set to same the height of the cropper will be fixed)
-displayOnInit int
- Whether to display the select area on initialisation, only used when providing minimum width & height or ratio.
-onEndCrop func
- The callback function to provide the crop details to on end of a crop.
-captureKeys boolean
- Whether to capture the keys for moving the select area, as these can cause some problems at the moment.
-onloadCoords obj
- A coordinates object with properties x1, y1, x2 & y2; for the coordinates of the select area to display onload
-
-The callback function
-
-The callback function is a function that allows you to capture the crop co-ordinates when the user finished a crop movement, it is passed two arguments:
-
- * coords, obj, coordinates object with properties x1, y1, x2 & y2; for the coordinates of the select area.
- * dimensions, obj, dimensions object with properities width & height; for the dimensions of the select area.
-
-An example function which outputs the crop values to form fields:
-Display code as plain text
-JavaScript:
-
- 1.
- function onEndCrop( coords, dimensions ) {
- 2.
- $( 'x1' ).value = coords.x1;
- 3.
- $( 'y1' ).value = coords.y1;
- 4.
- $( 'x2' ).value = coords.x2;
- 5.
- $( 'y2' ).value = coords.y2;
- 6.
- $( 'width' ).value = dimensions.width;
- 7.
- $( 'height' ).value = dimensions.height;
- 8.
- }
-
-Basic interface
-
-This basic example will attach the cropper UI to the test image and return crop results to the provided callback function.
-Display code as plain text
-HTML:
-
- 1.
- <img src="test.jpg" alt="Test image" id="testImage" width="500" height="333" />
- 2.
-
- 3.
- <script type="text/javascript" language="javascript">
- 4.
- Event.observe( window, 'load', function() {
- 5.
- new Cropper.Img(
- 6.
- 'testImage',
- 7.
- { onEndCrop: onEndCrop }
- 8.
- );
- 9.
- } );
- 10.
- </script>
-
-Minimum dimensions
-
-You can apply minimum dimensions to a single axis or both, this example applies minimum dimensions to both axis.
-Display code as plain text
-HTML:
-
- 1.
- <img src="test.jpg" alt="Test image" id="testImage" width="500" height="333" />
- 2.
-
- 3.
- <script type="text/javascript" language="javascript">
- 4.
- Event.observe( window, 'load', function() {
- 5.
- new Cropper.Img(
- 6.
- 'testImage',
- 7.
- {
- 8.
- minWidth: 220,
- 9.
- minHeight: 120,
- 10.
- onEndCrop: onEndCrop
- 11.
- }
- 12.
- );
- 13.
- } );
- 14.
- </script>
-
-Select area ratio
-
-You can apply a ratio to the selection area, this example applies a 4:3 ratio to the select area.
-Display code as plain text
-HTML:
-
- 1.
- <img src="test.jpg" alt="Test image" id="testImage" width="500" height="333" />
- 2.
-
- 3.
- <script type="text/javascript" language="javascript">
- 4.
- Event.observe( window, 'load', function() {
- 5.
- new Cropper.Img(
- 6.
- 'testImage',
- 7.
- {
- 8.
- ratioDim: {
- 9.
- x: 220,
- 10.
- y: 165
- 11.
- },
- 12.
- displayOnInit: true,
- 13.
- onEndCrop: onEndCrop
- 14.
- }
- 15.
- );
- 16.
- } );
- 17.
- </script>
-
-With crop preview
-
-You can display a dynamically prouced preview of the resulting crop by using the ImgWithPreview subclass, a preview can only be displayed when we have a fixed size (set via minWidth & minHeight options). Note that the displayOnInit option is not required as this is the default behaviour when displaying a crop preview.
-Display code as plain text
-HTML:
-
- 1.
- <img src="test.jpg" alt="Test image" id="testImage" width="500" height="333" />
- 2.
- <div id="previewWrap"></div>
- 3.
-
- 4.
- <script type="text/javascript" language="javascript">
- 5.
- Event.observe( window, 'load', function() {
- 6.
- new Cropper.ImgWithPreview(
- 7.
- 'testImage',
- 8.
- {
- 9.
- previewWrap: 'previewWrap',
- 10.
- minWidth: 120,
- 11.
- minHeight: 120,
- 12.
- ratioDim: { x: 200, y: 120 },
- 13.
- onEndCrop: onEndCrop
- 14.
- }
- 15.
- );
- 16.
- } );
- 17.
- </script>
-
-Known Issues
-
- * Safari animated gifs, only one of each will animate, this seems to be a known Safari issue.
- * After drawing an area and then clicking to start a new drag in IE 5.5 the rendered height appears as the last height until the user drags, this appears to be the related to another IE error (which has been fixed) where IE does not always redraw the select area properly.
- * Lack of CSS opacity support in Opera before version 9 mean we disable those style rules, if Opera 8 support is important you & you want the overlay to work then you can use the Opera rules in the CSS to apply a black PNG with 50% alpha transparency to replicate the effect.
- * Styling & borders on image, any CSS styling applied directly to the image itself (floats, borders, padding, margin, etc.) will cause problems with the cropper. The use of a wrapper element to apply these styles to is recommended.
- * overflow: auto or overflow: scroll on parent will cause cropper to burst out of parent in IE and Opera when applied (maybe Mac browsers too) I'm not sure why yet.
-
-If you use CakePHP you will notice that including this in your script will break the CSS layout. This is due to the CSS rule
-
-form div{
-vertical-align: text-top;
-margin-left: 1em;
-margin-bottom:2em;
-overflow: auto;
-}
-
-A simple workaround is to add another rule directly after this like so:
-
-form div.no_cake, form div.no_cake div {
-margin:0;
-overflow:hidden;
-}
-
-and then in your code surround the img tag with a div with the class name of no_cake.
-
-Cheers
-
diff --git a/library/cropper/cropper.js b/library/cropper/cropper.js
deleted file mode 100644
index 486a92ad9..000000000
--- a/library/cropper/cropper.js
+++ /dev/null
@@ -1,566 +0,0 @@
-/**
- * Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * See scriptaculous.js for full scriptaculous licence
- */
-
-var CropDraggable=Class.create();
-Object.extend(Object.extend(CropDraggable.prototype,Draggable.prototype),{initialize:function(_1){
-this.options=Object.extend({drawMethod:function(){
-}},arguments[1]||{});
-this.element=$(_1);
-this.handle=this.element;
-this.delta=this.currentDelta();
-this.dragging=false;
-this.eventMouseDown=this.initDrag.bindAsEventListener(this);
-Event.observe(this.handle,"mousedown",this.eventMouseDown);
-Draggables.register(this);
-},draw:function(_2){
-var _3=Position.cumulativeOffset(this.element);
-var d=this.currentDelta();
-_3[0]-=d[0];
-_3[1]-=d[1];
-var p=[0,1].map(function(i){
-return (_2[i]-_3[i]-this.offset[i]);
-}.bind(this));
-this.options.drawMethod(p);
-}});
-var Cropper={};
-Cropper.Img=Class.create();
-Cropper.Img.prototype={initialize:function(_7,_8){
-this.options=Object.extend({ratioDim:{x:0,y:0},minWidth:0,minHeight:0,displayOnInit:false,onEndCrop:Prototype.emptyFunction,captureKeys:true,onloadCoords:null,maxWidth:0,maxHeight:0},_8||{});
-this.img=$(_7);
-this.clickCoords={x:0,y:0};
-this.dragging=false;
-this.resizing=false;
-this.isWebKit=/Konqueror|Safari|KHTML/.test(navigator.userAgent);
-this.isIE=/MSIE/.test(navigator.userAgent);
-this.isOpera8=/Opera\s[1-8]/.test(navigator.userAgent);
-this.ratioX=0;
-this.ratioY=0;
-this.attached=false;
-this.fixedWidth=(this.options.maxWidth>0&&(this.options.minWidth>=this.options.maxWidth));
-this.fixedHeight=(this.options.maxHeight>0&&(this.options.minHeight>=this.options.maxHeight));
-if(typeof this.img=="undefined"){
-return;
-}
-$A(document.getElementsByTagName("script")).each(function(s){
-if(s.src.match(/cropper\.js/)){
-var _a=s.src.replace(/cropper\.js(.*)?/,"");
-var _b=document.createElement("link");
-_b.rel="stylesheet";
-_b.type="text/css";
-_b.href=_a+"cropper.css";
-_b.media="screen";
-document.getElementsByTagName("head")[0].appendChild(_b);
-}
-});
-if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){
-var _c=this.getGCD(this.options.ratioDim.x,this.options.ratioDim.y);
-this.ratioX=this.options.ratioDim.x/_c;
-this.ratioY=this.options.ratioDim.y/_c;
-}
-this.subInitialize();
-if(this.img.complete||this.isWebKit){
-this.onLoad();
-}else{
-Event.observe(this.img,"load",this.onLoad.bindAsEventListener(this));
-}
-},getGCD:function(a,b){
-if(b==0){
-return a;
-}
-return this.getGCD(b,a%b);
-},onLoad:function(){
-var _f="imgCrop_";
-var _10=this.img.parentNode;
-var _11="";
-if(this.isOpera8){
-_11=" opera8";
-}
-this.imgWrap=Builder.node("div",{"class":_f+"wrap"+_11});
-this.north=Builder.node("div",{"class":_f+"overlay "+_f+"north"},[Builder.node("span")]);
-this.east=Builder.node("div",{"class":_f+"overlay "+_f+"east"},[Builder.node("span")]);
-this.south=Builder.node("div",{"class":_f+"overlay "+_f+"south"},[Builder.node("span")]);
-this.west=Builder.node("div",{"class":_f+"overlay "+_f+"west"},[Builder.node("span")]);
-var _12=[this.north,this.east,this.south,this.west];
-this.dragArea=Builder.node("div",{"class":_f+"dragArea"},_12);
-this.handleN=Builder.node("div",{"class":_f+"handle "+_f+"handleN"});
-this.handleNE=Builder.node("div",{"class":_f+"handle "+_f+"handleNE"});
-this.handleE=Builder.node("div",{"class":_f+"handle "+_f+"handleE"});
-this.handleSE=Builder.node("div",{"class":_f+"handle "+_f+"handleSE"});
-this.handleS=Builder.node("div",{"class":_f+"handle "+_f+"handleS"});
-this.handleSW=Builder.node("div",{"class":_f+"handle "+_f+"handleSW"});
-this.handleW=Builder.node("div",{"class":_f+"handle "+_f+"handleW"});
-this.handleNW=Builder.node("div",{"class":_f+"handle "+_f+"handleNW"});
-this.selArea=Builder.node("div",{"class":_f+"selArea"},[Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeNorth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeEast"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeSouth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeWest"},[Builder.node("span")]),this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW,Builder.node("div",{"class":_f+"clickArea"})]);
-this.imgWrap.appendChild(this.img);
-this.imgWrap.appendChild(this.dragArea);
-this.dragArea.appendChild(this.selArea);
-this.dragArea.appendChild(Builder.node("div",{"class":_f+"clickArea"}));
-_10.appendChild(this.imgWrap);
-this.startDragBind=this.startDrag.bindAsEventListener(this);
-Event.observe(this.dragArea,"mousedown",this.startDragBind);
-this.onDragBind=this.onDrag.bindAsEventListener(this);
-Event.observe(document,"mousemove",this.onDragBind);
-this.endCropBind=this.endCrop.bindAsEventListener(this);
-Event.observe(document,"mouseup",this.endCropBind);
-this.resizeBind=this.startResize.bindAsEventListener(this);
-this.handles=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
-this.registerHandles(true);
-if(this.options.captureKeys){
-this.keysBind=this.handleKeys.bindAsEventListener(this);
-Event.observe(document,"keypress",this.keysBind);
-}
-new CropDraggable(this.selArea,{drawMethod:this.moveArea.bindAsEventListener(this)});
-this.setParams();
-},registerHandles:function(_13){
-for(var i=0;i<this.handles.length;i++){
-var _15=$(this.handles[i]);
-if(_13){
-var _16=false;
-if(this.fixedWidth&&this.fixedHeight){
-_16=true;
-}else{
-if(this.fixedWidth||this.fixedHeight){
-var _17=_15.className.match(/([S|N][E|W])$/);
-var _18=_15.className.match(/(E|W)$/);
-var _19=_15.className.match(/(N|S)$/);
-if(_17){
-_16=true;
-}else{
-if(this.fixedWidth&&_18){
-_16=true;
-}else{
-if(this.fixedHeight&&_19){
-_16=true;
-}
-}
-}
-}
-}
-if(_16){
-_15.hide();
-}else{
-Event.observe(_15,"mousedown",this.resizeBind);
-}
-}else{
-_15.show();
-Event.stopObserving(_15,"mousedown",this.resizeBind);
-}
-}
-},setParams:function(){
-this.imgW=this.img.width;
-this.imgH=this.img.height;
-$(this.north).setStyle({height:0});
-$(this.east).setStyle({width:0,height:0});
-$(this.south).setStyle({height:0});
-$(this.west).setStyle({width:0,height:0});
-$(this.imgWrap).setStyle({"width":this.imgW+"px","height":this.imgH+"px"});
-$(this.selArea).hide();
-var _1a={x1:0,y1:0,x2:0,y2:0};
-var _1b=false;
-if(this.options.onloadCoords!=null){
-_1a=this.cloneCoords(this.options.onloadCoords);
-_1b=true;
-}else{
-if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){
-_1a.x1=Math.ceil((this.imgW-this.options.ratioDim.x)/2);
-_1a.y1=Math.ceil((this.imgH-this.options.ratioDim.y)/2);
-_1a.x2=_1a.x1+this.options.ratioDim.x;
-_1a.y2=_1a.y1+this.options.ratioDim.y;
-_1b=true;
-}
-}
-this.setAreaCoords(_1a,false,false,1);
-if(this.options.displayOnInit&&_1b){
-this.selArea.show();
-this.drawArea();
-this.endCrop();
-}
-this.attached=true;
-},remove:function(){
-if(this.attached){
-this.attached=false;
-this.imgWrap.parentNode.insertBefore(this.img,this.imgWrap);
-this.imgWrap.parentNode.removeChild(this.imgWrap);
-Event.stopObserving(this.dragArea,"mousedown",this.startDragBind);
-Event.stopObserving(document,"mousemove",this.onDragBind);
-Event.stopObserving(document,"mouseup",this.endCropBind);
-this.registerHandles(false);
-if(this.options.captureKeys){
-Event.stopObserving(document,"keypress",this.keysBind);
-}
-}
-},reset:function(){
-if(!this.attached){
-this.onLoad();
-}else{
-this.setParams();
-}
-this.endCrop();
-},handleKeys:function(e){
-var dir={x:0,y:0};
-if(!this.dragging){
-switch(e.keyCode){
-case (37):
-dir.x=-1;
-break;
-case (38):
-dir.y=-1;
-break;
-case (39):
-dir.x=1;
-break;
-case (40):
-dir.y=1;
-break;
-}
-if(dir.x!=0||dir.y!=0){
-if(e.shiftKey){
-dir.x*=10;
-dir.y*=10;
-}
-this.moveArea([this.areaCoords.x1+dir.x,this.areaCoords.y1+dir.y]);
-Event.stop(e);
-}
-}
-},calcW:function(){
-return (this.areaCoords.x2-this.areaCoords.x1);
-},calcH:function(){
-return (this.areaCoords.y2-this.areaCoords.y1);
-},moveArea:function(_1e){
-this.setAreaCoords({x1:_1e[0],y1:_1e[1],x2:_1e[0]+this.calcW(),y2:_1e[1]+this.calcH()},true,false);
-this.drawArea();
-},cloneCoords:function(_1f){
-return {x1:_1f.x1,y1:_1f.y1,x2:_1f.x2,y2:_1f.y2};
-},setAreaCoords:function(_20,_21,_22,_23,_24){
-if(_21){
-var _25=_20.x2-_20.x1;
-var _26=_20.y2-_20.y1;
-if(_20.x1<0){
-_20.x1=0;
-_20.x2=_25;
-}
-if(_20.y1<0){
-_20.y1=0;
-_20.y2=_26;
-}
-if(_20.x2>this.imgW){
-_20.x2=this.imgW;
-_20.x1=this.imgW-_25;
-}
-if(_20.y2>this.imgH){
-_20.y2=this.imgH;
-_20.y1=this.imgH-_26;
-}
-}else{
-if(_20.x1<0){
-_20.x1=0;
-}
-if(_20.y1<0){
-_20.y1=0;
-}
-if(_20.x2>this.imgW){
-_20.x2=this.imgW;
-}
-if(_20.y2>this.imgH){
-_20.y2=this.imgH;
-}
-if(_23!=null){
-if(this.ratioX>0){
-this.applyRatio(_20,{x:this.ratioX,y:this.ratioY},_23,_24);
-}else{
-if(_22){
-this.applyRatio(_20,{x:1,y:1},_23,_24);
-}
-}
-var _27=[this.options.minWidth,this.options.minHeight];
-var _28=[this.options.maxWidth,this.options.maxHeight];
-if(_27[0]>0||_27[1]>0||_28[0]>0||_28[1]>0){
-var _29={a1:_20.x1,a2:_20.x2};
-var _2a={a1:_20.y1,a2:_20.y2};
-var _2b={min:0,max:this.imgW};
-var _2c={min:0,max:this.imgH};
-if((_27[0]!=0||_27[1]!=0)&&_22){
-if(_27[0]>0){
-_27[1]=_27[0];
-}else{
-if(_27[1]>0){
-_27[0]=_27[1];
-}
-}
-}
-if((_28[0]!=0||_28[0]!=0)&&_22){
-if(_28[0]>0&&_28[0]<=_28[1]){
-_28[1]=_28[0];
-}else{
-if(_28[1]>0&&_28[1]<=_28[0]){
-_28[0]=_28[1];
-}
-}
-}
-if(_27[0]>0){
-this.applyDimRestriction(_29,_27[0],_23.x,_2b,"min");
-}
-if(_27[1]>1){
-this.applyDimRestriction(_2a,_27[1],_23.y,_2c,"min");
-}
-if(_28[0]>0){
-this.applyDimRestriction(_29,_28[0],_23.x,_2b,"max");
-}
-if(_28[1]>1){
-this.applyDimRestriction(_2a,_28[1],_23.y,_2c,"max");
-}
-_20={x1:_29.a1,y1:_2a.a1,x2:_29.a2,y2:_2a.a2};
-}
-}
-}
-this.areaCoords=_20;
-},applyDimRestriction:function(_2d,val,_2f,_30,_31){
-var _32;
-if(_31=="min"){
-_32=((_2d.a2-_2d.a1)<val);
-}else{
-_32=((_2d.a2-_2d.a1)>val);
-}
-if(_32){
-if(_2f==1){
-_2d.a2=_2d.a1+val;
-}else{
-_2d.a1=_2d.a2-val;
-}
-if(_2d.a1<_30.min){
-_2d.a1=_30.min;
-_2d.a2=val;
-}else{
-if(_2d.a2>_30.max){
-_2d.a1=_30.max-val;
-_2d.a2=_30.max;
-}
-}
-}
-},applyRatio:function(_33,_34,_35,_36){
-var _37;
-if(_36=="N"||_36=="S"){
-_37=this.applyRatioToAxis({a1:_33.y1,b1:_33.x1,a2:_33.y2,b2:_33.x2},{a:_34.y,b:_34.x},{a:_35.y,b:_35.x},{min:0,max:this.imgW});
-_33.x1=_37.b1;
-_33.y1=_37.a1;
-_33.x2=_37.b2;
-_33.y2=_37.a2;
-}else{
-_37=this.applyRatioToAxis({a1:_33.x1,b1:_33.y1,a2:_33.x2,b2:_33.y2},{a:_34.x,b:_34.y},{a:_35.x,b:_35.y},{min:0,max:this.imgH});
-_33.x1=_37.a1;
-_33.y1=_37.b1;
-_33.x2=_37.a2;
-_33.y2=_37.b2;
-}
-},applyRatioToAxis:function(_38,_39,_3a,_3b){
-var _3c=Object.extend(_38,{});
-var _3d=_3c.a2-_3c.a1;
-var _3e=Math.floor(_3d*_39.b/_39.a);
-var _3f;
-var _40;
-var _41=null;
-if(_3a.b==1){
-_3f=_3c.b1+_3e;
-if(_3f>_3b.max){
-_3f=_3b.max;
-_41=_3f-_3c.b1;
-}
-_3c.b2=_3f;
-}else{
-_3f=_3c.b2-_3e;
-if(_3f<_3b.min){
-_3f=_3b.min;
-_41=_3f+_3c.b2;
-}
-_3c.b1=_3f;
-}
-if(_41!=null){
-_40=Math.floor(_41*_39.a/_39.b);
-if(_3a.a==1){
-_3c.a2=_3c.a1+_40;
-}else{
-_3c.a1=_3c.a1=_3c.a2-_40;
-}
-}
-return _3c;
-},drawArea:function(){
-var _42=this.calcW();
-var _43=this.calcH();
-var px="px";
-var _45=[this.areaCoords.x1+px,this.areaCoords.y1+px,_42+px,_43+px,this.areaCoords.x2+px,this.areaCoords.y2+px,(this.img.width-this.areaCoords.x2)+px,(this.img.height-this.areaCoords.y2)+px];
-var _46=this.selArea.style;
-_46.left=_45[0];
-_46.top=_45[1];
-_46.width=_45[2];
-_46.height=_45[3];
-var _47=Math.ceil((_42-6)/2)+px;
-var _48=Math.ceil((_43-6)/2)+px;
-this.handleN.style.left=_47;
-this.handleE.style.top=_48;
-this.handleS.style.left=_47;
-this.handleW.style.top=_48;
-this.north.style.height=_45[1];
-var _49=this.east.style;
-_49.top=_45[1];
-_49.height=_45[3];
-_49.left=_45[4];
-_49.width=_45[6];
-var _4a=this.south.style;
-_4a.top=_45[5];
-_4a.height=_45[7];
-var _4b=this.west.style;
-_4b.top=_45[1];
-_4b.height=_45[3];
-_4b.width=_45[0];
-this.subDrawArea();
-this.forceReRender();
-},forceReRender:function(){
-if(this.isIE||this.isWebKit){
-var n=document.createTextNode(" ");
-var d,el,fixEL,i;
-if(this.isIE){
-fixEl=this.selArea;
-}else{
-if(this.isWebKit){
-fixEl=document.getElementsByClassName("imgCrop_marqueeSouth",this.imgWrap)[0];
-d=Builder.node("div","");
-d.style.visibility="hidden";
-var _4e=["SE","S","SW"];
-for(i=0;i<_4e.length;i++){
-el=document.getElementsByClassName("imgCrop_handle"+_4e[i],this.selArea)[0];
-if(el.childNodes.length){
-el.removeChild(el.childNodes[0]);
-}
-el.appendChild(d);
-}
-}
-}
-fixEl.appendChild(n);
-fixEl.removeChild(n);
-}
-},startResize:function(e){
-this.startCoords=this.cloneCoords(this.areaCoords);
-this.resizing=true;
-this.resizeHandle=Event.element(e).classNames().toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/,"");
-Event.stop(e);
-},startDrag:function(e){
-this.selArea.show();
-this.clickCoords=this.getCurPos(e);
-this.setAreaCoords({x1:this.clickCoords.x,y1:this.clickCoords.y,x2:this.clickCoords.x,y2:this.clickCoords.y},false,false,null);
-this.dragging=true;
-this.onDrag(e);
-Event.stop(e);
-},getCurPos:function(e){
-var el=this.imgWrap,wrapOffsets=Position.cumulativeOffset(el);
-while(el.nodeName!="BODY"){
-wrapOffsets[1]-=el.scrollTop||0;
-wrapOffsets[0]-=el.scrollLeft||0;
-el=el.parentNode;
-}
-return curPos={x:Event.pointerX(e)-wrapOffsets[0],y:Event.pointerY(e)-wrapOffsets[1]};
-},onDrag:function(e){
-if(this.dragging||this.resizing){
-var _54=null;
-var _55=this.getCurPos(e);
-var _56=this.cloneCoords(this.areaCoords);
-var _57={x:1,y:1};
-if(this.dragging){
-if(_55.x<this.clickCoords.x){
-_57.x=-1;
-}
-if(_55.y<this.clickCoords.y){
-_57.y=-1;
-}
-this.transformCoords(_55.x,this.clickCoords.x,_56,"x");
-this.transformCoords(_55.y,this.clickCoords.y,_56,"y");
-}else{
-if(this.resizing){
-_54=this.resizeHandle;
-if(_54.match(/E/)){
-this.transformCoords(_55.x,this.startCoords.x1,_56,"x");
-if(_55.x<this.startCoords.x1){
-_57.x=-1;
-}
-}else{
-if(_54.match(/W/)){
-this.transformCoords(_55.x,this.startCoords.x2,_56,"x");
-if(_55.x<this.startCoords.x2){
-_57.x=-1;
-}
-}
-}
-if(_54.match(/N/)){
-this.transformCoords(_55.y,this.startCoords.y2,_56,"y");
-if(_55.y<this.startCoords.y2){
-_57.y=-1;
-}
-}else{
-if(_54.match(/S/)){
-this.transformCoords(_55.y,this.startCoords.y1,_56,"y");
-if(_55.y<this.startCoords.y1){
-_57.y=-1;
-}
-}
-}
-}
-}
-this.setAreaCoords(_56,false,e.shiftKey,_57,_54);
-this.drawArea();
-Event.stop(e);
-}
-},transformCoords:function(_58,_59,_5a,_5b){
-var _5c=[_58,_59];
-if(_58>_59){
-_5c.reverse();
-}
-_5a[_5b+"1"]=_5c[0];
-_5a[_5b+"2"]=_5c[1];
-},endCrop:function(){
-this.dragging=false;
-this.resizing=false;
-this.options.onEndCrop(this.areaCoords,{width:this.calcW(),height:this.calcH()});
-},subInitialize:function(){
-},subDrawArea:function(){
-}};
-Cropper.ImgWithPreview=Class.create();
-Object.extend(Object.extend(Cropper.ImgWithPreview.prototype,Cropper.Img.prototype),{subInitialize:function(){
-this.hasPreviewImg=false;
-if(typeof (this.options.previewWrap)!="undefined"&&this.options.minWidth>0&&this.options.minHeight>0){
-this.previewWrap=$(this.options.previewWrap);
-this.previewImg=this.img.cloneNode(false);
-this.previewImg.id="imgCrop_"+this.previewImg.id;
-this.options.displayOnInit=true;
-this.hasPreviewImg=true;
-this.previewWrap.addClassName("imgCrop_previewWrap");
-this.previewWrap.setStyle({width:this.options.minWidth+"px",height:this.options.minHeight+"px"});
-this.previewWrap.appendChild(this.previewImg);
-}
-},subDrawArea:function(){
-if(this.hasPreviewImg){
-var _5d=this.calcW();
-var _5e=this.calcH();
-var _5f={x:this.imgW/_5d,y:this.imgH/_5e};
-var _60={x:_5d/this.options.minWidth,y:_5e/this.options.minHeight};
-var _61={w:Math.ceil(this.options.minWidth*_5f.x)+"px",h:Math.ceil(this.options.minHeight*_5f.y)+"px",x:"-"+Math.ceil(this.areaCoords.x1/_60.x)+"px",y:"-"+Math.ceil(this.areaCoords.y1/_60.y)+"px"};
-var _62=this.previewImg.style;
-_62.width=_61.w;
-_62.height=_61.h;
-_62.left=_61.x;
-_62.top=_61.y;
-}
-}});
-
diff --git a/library/cropper/cropper.uncompressed.js b/library/cropper/cropper.uncompressed.js
deleted file mode 100644
index 66185546e..000000000
--- a/library/cropper/cropper.uncompressed.js
+++ /dev/null
@@ -1,1331 +0,0 @@
-/**
- * Image Cropper (v. 1.2.0 - 2006-10-30 )
- * Copyright (c) 2006 David Spurr (http://www.defusion.org.uk/)
- *
- * The image cropper provides a way to draw a crop area on an image and capture
- * the coordinates of the drawn crop area.
- *
- * Features include:
- * - Based on Prototype and Scriptaculous
- * - Image editing package styling, the crop area functions and looks
- * like those found in popular image editing software
- * - Dynamic inclusion of required styles
- * - Drag to draw areas
- * - Shift drag to draw/resize areas as squares
- * - Selection area can be moved
- * - Seleciton area can be resized using resize handles
- * - Allows dimension ratio limited crop areas
- * - Allows minimum dimension crop areas
- * - Allows maximum dimesion crop areas
- * - If both min & max dimension options set to the same value for a single axis,then the cropper will not
- * display the resize handles as appropriate (when min & max dimensions are passed for both axes this
- * results in a 'fixed size' crop area)
- * - Allows dynamic preview of resultant crop ( if minimum width & height are provided ), this is
- * implemented as a subclass so can be excluded when not required
- * - Movement of selection area by arrow keys ( shift + arrow key will move selection area by
- * 10 pixels )
- * - All operations stay within bounds of image
- * - All functionality & display compatible with most popular browsers supported by Prototype:
- * PC: IE 7, 6 & 5.5, Firefox 1.5, Opera 8.5 (see known issues) & 9.0b
- * MAC: Camino 1.0, Firefox 1.5, Safari 2.0
- *
- * Requires:
- * - Prototype v. 1.5.0_rc0 > (as packaged with Scriptaculous 1.6.1)
- * - Scriptaculous v. 1.6.1 > modules: builder, dragdrop
- *
- * Known issues:
- * - Safari animated gifs, only one of each will animate, this seems to be a known Safari issue
- *
- * - After drawing an area and then clicking to start a new drag in IE 5.5 the rendered height
- * appears as the last height until the user drags, this appears to be the related to the error
- * that the forceReRender() method fixes for IE 6, i.e. IE 5.5 is not redrawing the box properly.
- *
- * - Lack of CSS opacity support in Opera before version 9 mean we disable those style rules, these
- * could be fixed by using PNGs with transparency if Opera 8.5 support is high priority for you
- *
- * - Marching ants keep reloading in IE <6 (not tested in IE7), it is a known issue in IE and I have
- * found no viable workarounds that can be included in the release. If this really is an issue for you
- * either try this post: http://mir.aculo.us/articles/2005/08/28/internet-explorer-and-ajax-image-caching-woes
- * or uncomment the 'FIX MARCHING ANTS IN IE' rules in the CSS file
- *
- * - Styling & borders on image, any CSS styling applied directly to the image itself (floats, borders, padding, margin, etc.) will
- * cause problems with the cropper. The use of a wrapper element to apply these styles to is recommended.
- *
- * - overflow: auto or overflow: scroll on parent will cause cropper to burst out of parent in IE and Opera (maybe Mac browsers too)
- * I'm not sure why yet.
- *
- * Usage:
- * See Cropper.Img & Cropper.ImgWithPreview for usage details
- *
- * Changelog:
- * v1.2.0 - 2006-10-30
- * + Added id to the preview image element using 'imgCrop_[originalImageID]'
- * * #00001 - Fixed bug: Doesn't account for scroll offsets
- * * #00009 - Fixed bug: Placing the cropper inside differently positioned elements causes incorrect co-ordinates and display
- * * #00013 - Fixed bug: I-bar cursor appears on drag plane
- * * #00014 - Fixed bug: If ID for image tag is not found in document script throws error
- * * Fixed bug with drag start co-ordinates if wrapper element has moved in browser (e.g. dragged to a new position)
- * * Fixed bug with drag start co-ordinates if image contained in a wrapper with scrolling - this may be buggy if image
- * has other ancestors with scrolling applied (except the body)
- * * #00015 - Fixed bug: When cropper removed and then reapplied onEndCrop callback gets called multiple times, solution suggestion from Bill Smith
- * * Various speed increases & code cleanup which meant improved performance in Mac - which allowed removal of different overlay methods for
- * IE and all other browsers, which led to a fix for:
- * * #00010 - Fixed bug: Select area doesn't adhere to image size when image resized using img attributes
- * - #00006 - Removed default behaviour of automatically setting a ratio when both min width & height passed, the ratioDimensions must be passed in
- * + #00005 - Added ability to set maximum crop dimensions, if both min & max set as the same value then we'll get a fixed cropper size on the axes as appropriate
- * and the resize handles will not be displayed as appropriate
- * * Switched keydown for keypress for moving select area with cursor keys (makes for nicer action) - doesn't appear to work in Safari
- *
- * v1.1.3 - 2006-08-21
- * * Fixed wrong cursor on western handle in CSS
- * + #00008 & #00003 - Added feature: Allow to set dimensions & position for cropper on load
- * * #00002 - Fixed bug: Pressing 'remove cropper' twice removes image in IE
- *
- * v1.1.2 - 2006-06-09
- * * Fixed bugs with ratios when GCD is low (patch submitted by Andy Skelton)
- *
- * v1.1.1 - 2006-06-03
- * * Fixed bug with rendering issues fix in IE 5.5
- * * Fixed bug with endCrop callback issues once cropper had been removed & reset in IE
- *
- * v1.1.0 - 2006-06-02
- * * Fixed bug with IE constantly trying to reload select area background image
- * * Applied more robust fix to Safari & IE rendering issues
- * + Added method to reset parameters - useful for when dynamically changing img cropper attached to
- * + Added method to remove cropper from image
- *
- * v1.0.0 - 2006-05-18
- * + Initial verison
- *
- *
- * Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/)
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * See scriptaculous.js for full scriptaculous licence
- */
-
-/**
- * Extend the Draggable class to allow us to pass the rendering
- * down to the Cropper object.
- */
-var CropDraggable = Class.create();
-
-Object.extend( Object.extend( CropDraggable.prototype, Draggable.prototype), {
-
- initialize: function(element) {
- this.options = Object.extend(
- {
- /**
- * The draw method to defer drawing to
- */
- drawMethod: function() {}
- },
- arguments[1] || {}
- );
-
- this.element = $(element);
-
- this.handle = this.element;
-
- this.delta = this.currentDelta();
- this.dragging = false;
-
- this.eventMouseDown = this.initDrag.bindAsEventListener(this);
- Event.observe(this.handle, "mousedown", this.eventMouseDown);
-
- Draggables.register(this);
- },
-
- /**
- * Defers the drawing of the draggable to the supplied method
- */
- draw: function(point) {
- var pos = Position.cumulativeOffset(this.element);
- var d = this.currentDelta();
- pos[0] -= d[0];
- pos[1] -= d[1];
-
- var p = [0,1].map(function(i) {
- return (point[i]-pos[i]-this.offset[i])
- }.bind(this));
-
- this.options.drawMethod( p );
- }
-
-});
-
-
-/**
- * The Cropper object, this will attach itself to the provided image by wrapping it with
- * the generated xHTML structure required by the cropper.
- *
- * Usage:
- * @param obj Image element to attach to
- * @param obj Optional options:
- * - ratioDim obj
- * The pixel dimensions to apply as a restrictive ratio, with properties x & y
- *
- * - minWidth int
- * The minimum width for the select area in pixels
- *
- * - minHeight int
- * The mimimum height for the select area in pixels
- *
- * - maxWidth int
- * The maximum width for the select areas in pixels (if both minWidth & maxWidth set to same the width of the cropper will be fixed)
- *
- * - maxHeight int
- * The maximum height for the select areas in pixels (if both minHeight & maxHeight set to same the height of the cropper will be fixed)
- *
- * - displayOnInit int
- * Whether to display the select area on initialisation, only used when providing minimum width & height or ratio
- *
- * - onEndCrop func
- * The callback function to provide the crop details to on end of a crop (see below)
- *
- * - captureKeys boolean
- * Whether to capture the keys for moving the select area, as these can cause some problems at the moment
- *
- * - onloadCoords obj
- * A coordinates object with properties x1, y1, x2 & y2; for the coordinates of the select area to display onload
- *
- *----------------------------------------------
- *
- * The callback function provided via the onEndCrop option should accept the following parameters:
- * - coords obj
- * The coordinates object with properties x1, y1, x2 & y2; for the coordinates of the select area
- *
- * - dimensions obj
- * The dimensions object with properites width & height; for the dimensions of the select area
- *
- *
- * Example:
- * function onEndCrop( coords, dimensions ) {
- * $( 'x1' ).value = coords.x1;
- * $( 'y1' ).value = coords.y1;
- * $( 'x2' ).value = coords.x2;
- * $( 'y2' ).value = coords.y2;
- * $( 'width' ).value = dimensions.width;
- * $( 'height' ).value = dimensions.height;
- * }
- *
- */
-var Cropper = {};
-Cropper.Img = Class.create();
-Cropper.Img.prototype = {
-
- /**
- * Initialises the class
- *
- * @access public
- * @param obj Image element to attach to
- * @param obj Options
- * @return void
- */
- initialize: function(element, options) {
- this.options = Object.extend(
- {
- /**
- * @var obj
- * The pixel dimensions to apply as a restrictive ratio
- */
- ratioDim: { x: 0, y: 0 },
- /**
- * @var int
- * The minimum pixel width, also used as restrictive ratio if min height passed too
- */
- minWidth: 0,
- /**
- * @var int
- * The minimum pixel height, also used as restrictive ratio if min width passed too
- */
- minHeight: 0,
- /**
- * @var boolean
- * Whether to display the select area on initialisation, only used when providing minimum width & height or ratio
- */
- displayOnInit: false,
- /**
- * @var function
- * The call back function to pass the final values to
- */
- onEndCrop: Prototype.emptyFunction,
- /**
- * @var boolean
- * Whether to capture key presses or not
- */
- captureKeys: true,
- /**
- * @var obj Coordinate object x1, y1, x2, y2
- * The coordinates to optionally display the select area at onload
- */
- onloadCoords: null,
- /**
- * @var int
- * The maximum width for the select areas in pixels (if both minWidth & maxWidth set to same the width of the cropper will be fixed)
- */
- maxWidth: 0,
- /**
- * @var int
- * The maximum height for the select areas in pixels (if both minHeight & maxHeight set to same the height of the cropper will be fixed)
- */
- maxHeight: 0
- },
- options || {}
- );
- /**
- * @var obj
- * The img node to attach to
- */
- this.img = $( element );
- /**
- * @var obj
- * The x & y coordinates of the click point
- */
- this.clickCoords = { x: 0, y: 0 };
- /**
- * @var boolean
- * Whether the user is dragging
- */
- this.dragging = false;
- /**
- * @var boolean
- * Whether the user is resizing
- */
- this.resizing = false;
- /**
- * @var boolean
- * Whether the user is on a webKit browser
- */
- this.isWebKit = /Konqueror|Safari|KHTML/.test( navigator.userAgent );
- /**
- * @var boolean
- * Whether the user is on IE
- */
- this.isIE = /MSIE/.test( navigator.userAgent );
- /**
- * @var boolean
- * Whether the user is on Opera below version 9
- */
- this.isOpera8 = /Opera\s[1-8]/.test( navigator.userAgent );
- /**
- * @var int
- * The x ratio
- */
- this.ratioX = 0;
- /**
- * @var int
- * The y ratio
- */
- this.ratioY = 0;
- /**
- * @var boolean
- * Whether we've attached sucessfully
- */
- this.attached = false;
- /**
- * @var boolean
- * Whether we've got a fixed width (if minWidth EQ or GT maxWidth then we have a fixed width
- * in the case of minWidth > maxWidth maxWidth wins as the fixed width)
- */
- this.fixedWidth = ( this.options.maxWidth > 0 && ( this.options.minWidth >= this.options.maxWidth ) );
- /**
- * @var boolean
- * Whether we've got a fixed height (if minHeight EQ or GT maxHeight then we have a fixed height
- * in the case of minHeight > maxHeight maxHeight wins as the fixed height)
- */
- this.fixedHeight = ( this.options.maxHeight > 0 && ( this.options.minHeight >= this.options.maxHeight ) );
-
- // quit if the image element doesn't exist
- if( typeof this.img == 'undefined' ) return;
-
- // include the stylesheet
- $A( document.getElementsByTagName( 'script' ) ).each(
- function(s) {
- if( s.src.match( /cropper\.js/ ) ) {
- var path = s.src.replace( /cropper\.js(.*)?/, '' );
- // '<link rel="stylesheet" type="text/css" href="' + path + 'cropper.css" media="screen" />';
- var style = document.createElement( 'link' );
- style.rel = 'stylesheet';
- style.type = 'text/css';
- style.href = path + 'cropper.css';
- style.media = 'screen';
- document.getElementsByTagName( 'head' )[0].appendChild( style );
- }
- }
- );
-
- // calculate the ratio when neccessary
- if( this.options.ratioDim.x > 0 && this.options.ratioDim.y > 0 ) {
- var gcd = this.getGCD( this.options.ratioDim.x, this.options.ratioDim.y );
- this.ratioX = this.options.ratioDim.x / gcd;
- this.ratioY = this.options.ratioDim.y / gcd;
- // dump( 'RATIO : ' + this.ratioX + ':' + this.ratioY + '\n' );
- }
-
- // initialise sub classes
- this.subInitialize();
-
- // only load the event observers etc. once the image is loaded
- // this is done after the subInitialize() call just in case the sub class does anything
- // that will affect the result of the call to onLoad()
- if( this.img.complete || this.isWebKit ) this.onLoad(); // for some reason Safari seems to support img.complete but returns 'undefined' on the this.img object
- else Event.observe( this.img, 'load', this.onLoad.bindAsEventListener( this) );
- },
-
- /**
- * The Euclidean algorithm used to find the greatest common divisor
- *
- * @acces private
- * @param int Value 1
- * @param int Value 2
- * @return int
- */
- getGCD : function( a , b ) {
- if( b == 0 ) return a;
- return this.getGCD(b, a % b );
- },
-
- /**
- * Attaches the cropper to the image once it has loaded
- *
- * @access private
- * @return void
- */
- onLoad: function( ) {
- /*
- * Build the container and all related elements, will result in the following
- *
- * <div class="imgCrop_wrap">
- * <img ... this.img ... />
- * <div class="imgCrop_dragArea">
- * <!-- the inner spans are only required for IE to stop it making the divs 1px high/wide -->
- * <div class="imgCrop_overlay imageCrop_north"><span></span></div>
- * <div class="imgCrop_overlay imageCrop_east"><span></span></div>
- * <div class="imgCrop_overlay imageCrop_south"><span></span></div>
- * <div class="imgCrop_overlay imageCrop_west"><span></span></div>
- * <div class="imgCrop_selArea">
- * <!-- marquees -->
- * <!-- the inner spans are only required for IE to stop it making the divs 1px high/wide -->
- * <div class="imgCrop_marqueeHoriz imgCrop_marqueeNorth"><span></span></div>
- * <div class="imgCrop_marqueeVert imgCrop_marqueeEast"><span></span></div>
- * <div class="imgCrop_marqueeHoriz imgCrop_marqueeSouth"><span></span></div>
- * <div class="imgCrop_marqueeVert imgCrop_marqueeWest"><span></span></div>
- * <!-- handles -->
- * <div class="imgCrop_handle imgCrop_handleN"></div>
- * <div class="imgCrop_handle imgCrop_handleNE"></div>
- * <div class="imgCrop_handle imgCrop_handleE"></div>
- * <div class="imgCrop_handle imgCrop_handleSE"></div>
- * <div class="imgCrop_handle imgCrop_handleS"></div>
- * <div class="imgCrop_handle imgCrop_handleSW"></div>
- * <div class="imgCrop_handle imgCrop_handleW"></div>
- * <div class="imgCrop_handle imgCrop_handleNW"></div>
- * <div class="imgCrop_clickArea"></div>
- * </div>
- * <div class="imgCrop_clickArea"></div>
- * </div>
- * </div>
- */
- var cNamePrefix = 'imgCrop_';
-
- // get the point to insert the container
- var insertPoint = this.img.parentNode;
-
- // apply an extra class to the wrapper to fix Opera below version 9
- var fixOperaClass = '';
- if( this.isOpera8 ) fixOperaClass = ' opera8';
- this.imgWrap = Builder.node( 'div', { 'class': cNamePrefix + 'wrap' + fixOperaClass } );
-
- this.north = Builder.node( 'div', { 'class': cNamePrefix + 'overlay ' + cNamePrefix + 'north' }, [Builder.node( 'span' )] );
- this.east = Builder.node( 'div', { 'class': cNamePrefix + 'overlay ' + cNamePrefix + 'east' } , [Builder.node( 'span' )] );
- this.south = Builder.node( 'div', { 'class': cNamePrefix + 'overlay ' + cNamePrefix + 'south' }, [Builder.node( 'span' )] );
- this.west = Builder.node( 'div', { 'class': cNamePrefix + 'overlay ' + cNamePrefix + 'west' } , [Builder.node( 'span' )] );
-
- var overlays = [ this.north, this.east, this.south, this.west ];
-
- this.dragArea = Builder.node( 'div', { 'class': cNamePrefix + 'dragArea' }, overlays );
-
- this.handleN = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleN' } );
- this.handleNE = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleNE' } );
- this.handleE = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleE' } );
- this.handleSE = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleSE' } );
- this.handleS = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleS' } );
- this.handleSW = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleSW' } );
- this.handleW = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleW' } );
- this.handleNW = Builder.node( 'div', { 'class': cNamePrefix + 'handle ' + cNamePrefix + 'handleNW' } );
-
- this.selArea = Builder.node( 'div', { 'class': cNamePrefix + 'selArea' },
- [
- Builder.node( 'div', { 'class': cNamePrefix + 'marqueeHoriz ' + cNamePrefix + 'marqueeNorth' }, [Builder.node( 'span' )] ),
- Builder.node( 'div', { 'class': cNamePrefix + 'marqueeVert ' + cNamePrefix + 'marqueeEast' } , [Builder.node( 'span' )] ),
- Builder.node( 'div', { 'class': cNamePrefix + 'marqueeHoriz ' + cNamePrefix + 'marqueeSouth' }, [Builder.node( 'span' )] ),
- Builder.node( 'div', { 'class': cNamePrefix + 'marqueeVert ' + cNamePrefix + 'marqueeWest' } , [Builder.node( 'span' )] ),
- this.handleN,
- this.handleNE,
- this.handleE,
- this.handleSE,
- this.handleS,
- this.handleSW,
- this.handleW,
- this.handleNW,
- Builder.node( 'div', { 'class': cNamePrefix + 'clickArea' } )
- ]
- );
-
- this.imgWrap.appendChild( this.img );
- this.imgWrap.appendChild( this.dragArea );
- this.dragArea.appendChild( this.selArea );
- this.dragArea.appendChild( Builder.node( 'div', { 'class': cNamePrefix + 'clickArea' } ) );
-
- insertPoint.appendChild( this.imgWrap );
-
- // add event observers
- this.startDragBind = this.startDrag.bindAsEventListener( this );
- Event.observe( this.dragArea, 'mousedown', this.startDragBind );
-
- this.onDragBind = this.onDrag.bindAsEventListener( this );
- Event.observe( document, 'mousemove', this.onDragBind );
-
- this.endCropBind = this.endCrop.bindAsEventListener( this );
- Event.observe( document, 'mouseup', this.endCropBind );
-
- this.resizeBind = this.startResize.bindAsEventListener( this );
- this.handles = [ this.handleN, this.handleNE, this.handleE, this.handleSE, this.handleS, this.handleSW, this.handleW, this.handleNW ];
- this.registerHandles( true );
-
- if( this.options.captureKeys ) {
- this.keysBind = this.handleKeys.bindAsEventListener( this );
- Event.observe( document, 'keypress', this.keysBind );
- }
-
- // attach the dragable to the select area
- new CropDraggable( this.selArea, { drawMethod: this.moveArea.bindAsEventListener( this ) } );
-
- this.setParams();
- },
-
- /**
- * Manages adding or removing the handle event handler and hiding or displaying them as appropriate
- *
- * @access private
- * @param boolean registration true = add, false = remove
- * @return void
- */
- registerHandles: function( registration ) {
- for( var i = 0; i < this.handles.length; i++ ) {
- var handle = $( this.handles[i] );
-
- if( registration ) {
- var hideHandle = false; // whether to hide the handle
-
- // disable handles asappropriate if we've got fixed dimensions
- // if both dimensions are fixed we don't need to do much
- if( this.fixedWidth && this.fixedHeight ) hideHandle = true;
- else if( this.fixedWidth || this.fixedHeight ) {
- // if one of the dimensions is fixed then just hide those handles
- var isCornerHandle = handle.className.match( /([S|N][E|W])$/ )
- var isWidthHandle = handle.className.match( /(E|W)$/ );
- var isHeightHandle = handle.className.match( /(N|S)$/ );
- if( isCornerHandle ) hideHandle = true;
- else if( this.fixedWidth && isWidthHandle ) hideHandle = true;
- else if( this.fixedHeight && isHeightHandle ) hideHandle = true;
- }
- if( hideHandle ) handle.hide();
- else Event.observe( handle, 'mousedown', this.resizeBind );
- } else {
- handle.show();
- Event.stopObserving( handle, 'mousedown', this.resizeBind );
- }
- }
- },
-
- /**
- * Sets up all the cropper parameters, this can be used to reset the cropper when dynamically
- * changing the images
- *
- * @access private
- * @return void
- */
- setParams: function() {
- /**
- * @var int
- * The image width
- */
- this.imgW = this.img.width;
- /**
- * @var int
- * The image height
- */
- this.imgH = this.img.height;
-
- $( this.north ).setStyle( { height: 0 } );
- $( this.east ).setStyle( { width: 0, height: 0 } );
- $( this.south ).setStyle( { height: 0 } );
- $( this.west ).setStyle( { width: 0, height: 0 } );
-
- // resize the container to fit the image
- $( this.imgWrap ).setStyle( { 'width': this.imgW + 'px', 'height': this.imgH + 'px' } );
-
- // hide the select area
- $( this.selArea ).hide();
-
- // setup the starting position of the select area
- var startCoords = { x1: 0, y1: 0, x2: 0, y2: 0 };
- var validCoordsSet = false;
-
- // display the select area
- if( this.options.onloadCoords != null ) {
- // if we've being given some coordinates to
- startCoords = this.cloneCoords( this.options.onloadCoords );
- validCoordsSet = true;
- } else if( this.options.ratioDim.x > 0 && this.options.ratioDim.y > 0 ) {
- // if there is a ratio limit applied and the then set it to initial ratio
- startCoords.x1 = Math.ceil( ( this.imgW - this.options.ratioDim.x ) / 2 );
- startCoords.y1 = Math.ceil( ( this.imgH - this.options.ratioDim.y ) / 2 );
- startCoords.x2 = startCoords.x1 + this.options.ratioDim.x;
- startCoords.y2 = startCoords.y1 + this.options.ratioDim.y;
- validCoordsSet = true;
- }
-
- this.setAreaCoords( startCoords, false, false, 1 );
-
- if( this.options.displayOnInit && validCoordsSet ) {
- this.selArea.show();
- this.drawArea();
- this.endCrop();
- }
-
- this.attached = true;
- },
-
- /**
- * Removes the cropper
- *
- * @access public
- * @return void
- */
- remove: function() {
- if( this.attached ) {
- this.attached = false;
-
- // remove the elements we inserted
- this.imgWrap.parentNode.insertBefore( this.img, this.imgWrap );
- this.imgWrap.parentNode.removeChild( this.imgWrap );
-
- // remove the event observers
- Event.stopObserving( this.dragArea, 'mousedown', this.startDragBind );
- Event.stopObserving( document, 'mousemove', this.onDragBind );
- Event.stopObserving( document, 'mouseup', this.endCropBind );
- this.registerHandles( false );
- if( this.options.captureKeys ) Event.stopObserving( document, 'keypress', this.keysBind );
- }
- },
-
- /**
- * Resets the cropper, can be used either after being removed or any time you wish
- *
- * @access public
- * @return void
- */
- reset: function() {
- if( !this.attached ) this.onLoad();
- else this.setParams();
- this.endCrop();
- },
-
- /**
- * Handles the key functionality, currently just using arrow keys to move, if the user
- * presses shift then the area will move by 10 pixels
- */
- handleKeys: function( e ) {
- var dir = { x: 0, y: 0 }; // direction to move it in & the amount in pixels
- if( !this.dragging ) {
-
- // catch the arrow keys
- switch( e.keyCode ) {
- case( 37 ) : // left
- dir.x = -1;
- break;
- case( 38 ) : // up
- dir.y = -1;
- break;
- case( 39 ) : // right
- dir.x = 1;
- break
- case( 40 ) : // down
- dir.y = 1;
- break;
- }
-
- if( dir.x != 0 || dir.y != 0 ) {
- // if shift is pressed then move by 10 pixels
- if( e.shiftKey ) {
- dir.x *= 10;
- dir.y *= 10;
- }
-
- this.moveArea( [ this.areaCoords.x1 + dir.x, this.areaCoords.y1 + dir.y ] );
- Event.stop( e );
- }
- }
- },
-
- /**
- * Calculates the width from the areaCoords
- *
- * @access private
- * @return int
- */
- calcW: function() {
- return (this.areaCoords.x2 - this.areaCoords.x1)
- },
-
- /**
- * Calculates the height from the areaCoords
- *
- * @access private
- * @return int
- */
- calcH: function() {
- return (this.areaCoords.y2 - this.areaCoords.y1)
- },
-
- /**
- * Moves the select area to the supplied point (assumes the point is x1 & y1 of the select area)
- *
- * @access public
- * @param array Point for x1 & y1 to move select area to
- * @return void
- */
- moveArea: function( point ) {
- // dump( 'moveArea : ' + point[0] + ',' + point[1] + ',' + ( point[0] + ( this.areaCoords.x2 - this.areaCoords.x1 ) ) + ',' + ( point[1] + ( this.areaCoords.y2 - this.areaCoords.y1 ) ) + '\n' );
- this.setAreaCoords(
- {
- x1: point[0],
- y1: point[1],
- x2: point[0] + this.calcW(),
- y2: point[1] + this.calcH()
- },
- true,
- false
- );
- this.drawArea();
- },
-
- /**
- * Clones a co-ordinates object, stops problems with handling them by reference
- *
- * @access private
- * @param obj Coordinate object x1, y1, x2, y2
- * @return obj Coordinate object x1, y1, x2, y2
- */
- cloneCoords: function( coords ) {
- return { x1: coords.x1, y1: coords.y1, x2: coords.x2, y2: coords.y2 };
- },
-
- /**
- * Sets the select coords to those provided but ensures they don't go
- * outside the bounding box
- *
- * @access private
- * @param obj Coordinates x1, y1, x2, y2
- * @param boolean Whether this is a move
- * @param boolean Whether to apply squaring
- * @param obj Direction of mouse along both axis x, y ( -1 = negative, 1 = positive ) only required when moving etc.
- * @param string The current resize handle || null
- * @return void
- */
- setAreaCoords: function( coords, moving, square, direction, resizeHandle ) {
- // dump( 'setAreaCoords (in) : ' + coords.x1 + ',' + coords.y1 + ',' + coords.x2 + ',' + coords.y2 );
- if( moving ) {
- // if moving
- var targW = coords.x2 - coords.x1;
- var targH = coords.y2 - coords.y1;
-
- // ensure we're within the bounds
- if( coords.x1 < 0 ) {
- coords.x1 = 0;
- coords.x2 = targW;
- }
- if( coords.y1 < 0 ) {
- coords.y1 = 0;
- coords.y2 = targH;
- }
- if( coords.x2 > this.imgW ) {
- coords.x2 = this.imgW;
- coords.x1 = this.imgW - targW;
- }
- if( coords.y2 > this.imgH ) {
- coords.y2 = this.imgH;
- coords.y1 = this.imgH - targH;
- }
- } else {
- // ensure we're within the bounds
- if( coords.x1 < 0 ) coords.x1 = 0;
- if( coords.y1 < 0 ) coords.y1 = 0;
- if( coords.x2 > this.imgW ) coords.x2 = this.imgW;
- if( coords.y2 > this.imgH ) coords.y2 = this.imgH;
-
- // This is passed as null in onload
- if( direction != null ) {
-
- // apply the ratio or squaring where appropriate
- if( this.ratioX > 0 ) this.applyRatio( coords, { x: this.ratioX, y: this.ratioY }, direction, resizeHandle );
- else if( square ) this.applyRatio( coords, { x: 1, y: 1 }, direction, resizeHandle );
-
- var mins = [ this.options.minWidth, this.options.minHeight ]; // minimum dimensions [x,y]
- var maxs = [ this.options.maxWidth, this.options.maxHeight ]; // maximum dimensions [x,y]
-
- // apply dimensions where appropriate
- if( mins[0] > 0 || mins[1] > 0 || maxs[0] > 0 || maxs[1] > 0) {
-
- var coordsTransX = { a1: coords.x1, a2: coords.x2 };
- var coordsTransY = { a1: coords.y1, a2: coords.y2 };
- var boundsX = { min: 0, max: this.imgW };
- var boundsY = { min: 0, max: this.imgH };
-
- // handle squaring properly on single axis minimum dimensions
- if( (mins[0] != 0 || mins[1] != 0) && square ) {
- if( mins[0] > 0 ) mins[1] = mins[0];
- else if( mins[1] > 0 ) mins[0] = mins[1];
- }
-
- if( (maxs[0] != 0 || maxs[0] != 0) && square ) {
- // if we have a max x value & it is less than the max y value then we set the y max to the max x (so we don't go over the minimum maximum of one of the axes - if that makes sense)
- if( maxs[0] > 0 && maxs[0] <= maxs[1] ) maxs[1] = maxs[0];
- else if( maxs[1] > 0 && maxs[1] <= maxs[0] ) maxs[0] = maxs[1];
- }
-
- if( mins[0] > 0 ) this.applyDimRestriction( coordsTransX, mins[0], direction.x, boundsX, 'min' );
- if( mins[1] > 1 ) this.applyDimRestriction( coordsTransY, mins[1], direction.y, boundsY, 'min' );
-
- if( maxs[0] > 0 ) this.applyDimRestriction( coordsTransX, maxs[0], direction.x, boundsX, 'max' );
- if( maxs[1] > 1 ) this.applyDimRestriction( coordsTransY, maxs[1], direction.y, boundsY, 'max' );
-
- coords = { x1: coordsTransX.a1, y1: coordsTransY.a1, x2: coordsTransX.a2, y2: coordsTransY.a2 };
- }
-
- }
- }
-
- // dump( 'setAreaCoords (out) : ' + coords.x1 + ',' + coords.y1 + ',' + coords.x2 + ',' + coords.y2 + '\n' );
- this.areaCoords = coords;
- },
-
- /**
- * Applies the supplied dimension restriction to the supplied coordinates along a single axis
- *
- * @access private
- * @param obj Single axis coordinates, a1, a2 (e.g. for the x axis a1 = x1 & a2 = x2)
- * @param int The restriction value
- * @param int The direction ( -1 = negative, 1 = positive )
- * @param obj The bounds of the image ( for this axis )
- * @param string The dimension restriction type ( 'min' | 'max' )
- * @return void
- */
- applyDimRestriction: function( coords, val, direction, bounds, type ) {
- var check;
- if( type == 'min' ) check = ( ( coords.a2 - coords.a1 ) < val );
- else check = ( ( coords.a2 - coords.a1 ) > val );
- if( check ) {
- if( direction == 1 ) coords.a2 = coords.a1 + val;
- else coords.a1 = coords.a2 - val;
-
- // make sure we're still in the bounds (not too pretty for the user, but needed)
- if( coords.a1 < bounds.min ) {
- coords.a1 = bounds.min;
- coords.a2 = val;
- } else if( coords.a2 > bounds.max ) {
- coords.a1 = bounds.max - val;
- coords.a2 = bounds.max;
- }
- }
- },
-
- /**
- * Applies the supplied ratio to the supplied coordinates
- *
- * @access private
- * @param obj Coordinates, x1, y1, x2, y2
- * @param obj Ratio, x, y
- * @param obj Direction of mouse, x & y : -1 == negative 1 == positive
- * @param string The current resize handle || null
- * @return void
- */
- applyRatio : function( coords, ratio, direction, resizeHandle ) {
- // dump( 'direction.y : ' + direction.y + '\n');
- var newCoords;
- if( resizeHandle == 'N' || resizeHandle == 'S' ) {
- // dump( 'north south \n');
- // if moving on either the lone north & south handles apply the ratio on the y axis
- newCoords = this.applyRatioToAxis(
- { a1: coords.y1, b1: coords.x1, a2: coords.y2, b2: coords.x2 },
- { a: ratio.y, b: ratio.x },
- { a: direction.y, b: direction.x },
- { min: 0, max: this.imgW }
- );
- coords.x1 = newCoords.b1;
- coords.y1 = newCoords.a1;
- coords.x2 = newCoords.b2;
- coords.y2 = newCoords.a2;
- } else {
- // otherwise deal with it as if we're applying the ratio on the x axis
- newCoords = this.applyRatioToAxis(
- { a1: coords.x1, b1: coords.y1, a2: coords.x2, b2: coords.y2 },
- { a: ratio.x, b: ratio.y },
- { a: direction.x, b: direction.y },
- { min: 0, max: this.imgH }
- );
- coords.x1 = newCoords.a1;
- coords.y1 = newCoords.b1;
- coords.x2 = newCoords.a2;
- coords.y2 = newCoords.b2;
- }
-
- },
-
- /**
- * Applies the provided ratio to the provided coordinates based on provided direction & bounds,
- * use to encapsulate functionality to make it easy to apply to either axis. This is probably
- * quite hard to visualise so see the x axis example within applyRatio()
- *
- * Example in parameter details & comments is for requesting applying ratio to x axis.
- *
- * @access private
- * @param obj Coords object (a1, b1, a2, b2) where a = x & b = y in example
- * @param obj Ratio object (a, b) where a = x & b = y in example
- * @param obj Direction object (a, b) where a = x & b = y in example
- * @param obj Bounds (min, max)
- * @return obj Coords object (a1, b1, a2, b2) where a = x & b = y in example
- */
- applyRatioToAxis: function( coords, ratio, direction, bounds ) {
- var newCoords = Object.extend( coords, {} );
- var calcDimA = newCoords.a2 - newCoords.a1; // calculate dimension a (e.g. width)
- var targDimB = Math.floor( calcDimA * ratio.b / ratio.a ); // the target dimension b (e.g. height)
- var targB; // to hold target b (e.g. y value)
- var targDimA; // to hold target dimension a (e.g. width)
- var calcDimB = null; // to hold calculated dimension b (e.g. height)
-
- // dump( 'newCoords[0]: ' + newCoords.a1 + ',' + newCoords.b1 + ','+ newCoords.a2 + ',' + newCoords.b2 + '\n');
-
- if( direction.b == 1 ) { // if travelling in a positive direction
- // make sure we're not going out of bounds
- targB = newCoords.b1 + targDimB;
- if( targB > bounds.max ) {
- targB = bounds.max;
- calcDimB = targB - newCoords.b1; // calcuate dimension b (e.g. height)
- }
-
- newCoords.b2 = targB;
- } else { // if travelling in a negative direction
- // make sure we're not going out of bounds
- targB = newCoords.b2 - targDimB;
- if( targB < bounds.min ) {
- targB = bounds.min;
- calcDimB = targB + newCoords.b2; // calcuate dimension b (e.g. height)
- }
- newCoords.b1 = targB;
- }
-
- // dump( 'newCoords[1]: ' + newCoords.a1 + ',' + newCoords.b1 + ','+ newCoords.a2 + ',' + newCoords.b2 + '\n');
-
- // apply the calculated dimensions
- if( calcDimB != null ) {
- targDimA = Math.floor( calcDimB * ratio.a / ratio.b );
-
- if( direction.a == 1 ) newCoords.a2 = newCoords.a1 + targDimA;
- else newCoords.a1 = newCoords.a1 = newCoords.a2 - targDimA;
- }
-
- // dump( 'newCoords[2]: ' + newCoords.a1 + ',' + newCoords.b1 + ','+ newCoords.a2 + ',' + newCoords.b2 + '\n');
-
- return newCoords;
- },
-
- /**
- * Draws the select area
- *
- * @access private
- * @return void
- */
- drawArea: function( ) {
- /*
- * NOTE: I'm not using the Element.setStyle() shortcut as they make it
- * quite sluggish on Mac based browsers
- */
- // dump( 'drawArea : ' + this.areaCoords.x1 + ',' + this.areaCoords.y1 + ',' + this.areaCoords.x2 + ',' + this.areaCoords.y2 + '\n' );
- var areaWidth = this.calcW();
- var areaHeight = this.calcH();
-
- /*
- * Calculate all the style strings before we use them, allows reuse & produces quicker
- * rendering (especially noticable in Mac based browsers)
- */
- var px = 'px';
- var params = [
- this.areaCoords.x1 + px, // the left of the selArea
- this.areaCoords.y1 + px, // the top of the selArea
- areaWidth + px, // width of the selArea
- areaHeight + px, // height of the selArea
- this.areaCoords.x2 + px, // bottom of the selArea
- this.areaCoords.y2 + px, // right of the selArea
- (this.img.width - this.areaCoords.x2) + px, // right edge of selArea
- (this.img.height - this.areaCoords.y2) + px // bottom edge of selArea
- ];
-
- // do the select area
- var areaStyle = this.selArea.style;
- areaStyle.left = params[0];
- areaStyle.top = params[1];
- areaStyle.width = params[2];
- areaStyle.height = params[3];
-
- // position the north, east, south & west handles
- var horizHandlePos = Math.ceil( (areaWidth - 6) / 2 ) + px;
- var vertHandlePos = Math.ceil( (areaHeight - 6) / 2 ) + px;
-
- this.handleN.style.left = horizHandlePos;
- this.handleE.style.top = vertHandlePos;
- this.handleS.style.left = horizHandlePos;
- this.handleW.style.top = vertHandlePos;
-
- // draw the four overlays
- this.north.style.height = params[1];
-
- var eastStyle = this.east.style;
- eastStyle.top = params[1];
- eastStyle.height = params[3];
- eastStyle.left = params[4];
- eastStyle.width = params[6];
-
- var southStyle = this.south.style;
- southStyle.top = params[5];
- southStyle.height = params[7];
-
- var westStyle = this.west.style;
- westStyle.top = params[1];
- westStyle.height = params[3];
- westStyle.width = params[0];
-
- // call the draw method on sub classes
- this.subDrawArea();
-
- this.forceReRender();
- },
-
- /**
- * Force the re-rendering of the selArea element which fixes rendering issues in Safari
- * & IE PC, especially evident when re-sizing perfectly vertical using any of the south handles
- *
- * @access private
- * @return void
- */
- forceReRender: function() {
- if( this.isIE || this.isWebKit) {
- var n = document.createTextNode(' ');
- var d,el,fixEL,i;
-
- if( this.isIE ) fixEl = this.selArea;
- else if( this.isWebKit ) {
- fixEl = document.getElementsByClassName( 'imgCrop_marqueeSouth', this.imgWrap )[0];
- /* we have to be a bit more forceful for Safari, otherwise the the marquee &
- * the south handles still don't move
- */
- d = Builder.node( 'div', '' );
- d.style.visibility = 'hidden';
-
- var classList = ['SE','S','SW'];
- for( i = 0; i < classList.length; i++ ) {
- el = document.getElementsByClassName( 'imgCrop_handle' + classList[i], this.selArea )[0];
- if( el.childNodes.length ) el.removeChild( el.childNodes[0] );
- el.appendChild(d);
- }
- }
- fixEl.appendChild(n);
- fixEl.removeChild(n);
- }
- },
-
- /**
- * Starts the resize
- *
- * @access private
- * @param obj Event
- * @return void
- */
- startResize: function( e ) {
- this.startCoords = this.cloneCoords( this.areaCoords );
-
- this.resizing = true;
- this.resizeHandle = Event.element( e ).classNames().toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/, '');
- // dump( 'this.resizeHandle : ' + this.resizeHandle + '\n' );
- Event.stop( e );
- },
-
- /**
- * Starts the drag
- *
- * @access private
- * @param obj Event
- * @return void
- */
- startDrag: function( e ) {
- this.selArea.show();
- this.clickCoords = this.getCurPos( e );
-
- this.setAreaCoords( { x1: this.clickCoords.x, y1: this.clickCoords.y, x2: this.clickCoords.x, y2: this.clickCoords.y }, false, false, null );
-
- this.dragging = true;
- this.onDrag( e ); // incase the user just clicks once after already making a selection
- Event.stop( e );
- },
-
- /**
- * Gets the current cursor position relative to the image
- *
- * @access private
- * @param obj Event
- * @return obj x,y pixels of the cursor
- */
- getCurPos: function( e ) {
- // get the offsets for the wrapper within the document
- var el = this.imgWrap, wrapOffsets = Position.cumulativeOffset( el );
- // remove any scrolling that is applied to the wrapper (this may be buggy) - don't count the scroll on the body as that won't affect us
- while( el.nodeName != 'BODY' ) {
- wrapOffsets[1] -= el.scrollTop || 0;
- wrapOffsets[0] -= el.scrollLeft || 0;
- el = el.parentNode;
- }
- return curPos = {
- x: Event.pointerX(e) - wrapOffsets[0],
- y: Event.pointerY(e) - wrapOffsets[1]
- }
- },
-
- /**
- * Performs the drag for both resize & inital draw dragging
- *
- * @access private
- * @param obj Event
- * @return void
- */
- onDrag: function( e ) {
- if( this.dragging || this.resizing ) {
-
- var resizeHandle = null;
- var curPos = this.getCurPos( e );
- var newCoords = this.cloneCoords( this.areaCoords );
- var direction = { x: 1, y: 1 };
-
- if( this.dragging ) {
- if( curPos.x < this.clickCoords.x ) direction.x = -1;
- if( curPos.y < this.clickCoords.y ) direction.y = -1;
-
- this.transformCoords( curPos.x, this.clickCoords.x, newCoords, 'x' );
- this.transformCoords( curPos.y, this.clickCoords.y, newCoords, 'y' );
- } else if( this.resizing ) {
- resizeHandle = this.resizeHandle;
- // do x movements first
- if( resizeHandle.match(/E/) ) {
- // if we're moving an east handle
- this.transformCoords( curPos.x, this.startCoords.x1, newCoords, 'x' );
- if( curPos.x < this.startCoords.x1 ) direction.x = -1;
- } else if( resizeHandle.match(/W/) ) {
- // if we're moving an west handle
- this.transformCoords( curPos.x, this.startCoords.x2, newCoords, 'x' );
- if( curPos.x < this.startCoords.x2 ) direction.x = -1;
- }
-
- // do y movements second
- if( resizeHandle.match(/N/) ) {
- // if we're moving an north handle
- this.transformCoords( curPos.y, this.startCoords.y2, newCoords, 'y' );
- if( curPos.y < this.startCoords.y2 ) direction.y = -1;
- } else if( resizeHandle.match(/S/) ) {
- // if we're moving an south handle
- this.transformCoords( curPos.y, this.startCoords.y1, newCoords, 'y' );
- if( curPos.y < this.startCoords.y1 ) direction.y = -1;
- }
-
- }
-
- this.setAreaCoords( newCoords, false, e.shiftKey, direction, resizeHandle );
- this.drawArea();
- Event.stop( e ); // stop the default event (selecting images & text) in Safari & IE PC
- }
- },
-
- /**
- * Applies the appropriate transform to supplied co-ordinates, on the
- * defined axis, depending on the relationship of the supplied values
- *
- * @access private
- * @param int Current value of pointer
- * @param int Base value to compare current pointer val to
- * @param obj Coordinates to apply transformation on x1, x2, y1, y2
- * @param string Axis to apply transformation on 'x' || 'y'
- * @return void
- */
- transformCoords : function( curVal, baseVal, coords, axis ) {
- var newVals = [ curVal, baseVal ];
- if( curVal > baseVal ) newVals.reverse();
- coords[ axis + '1' ] = newVals[0];
- coords[ axis + '2' ] = newVals[1];
- },
-
- /**
- * Ends the crop & passes the values of the select area on to the appropriate
- * callback function on completion of a crop
- *
- * @access private
- * @return void
- */
- endCrop : function() {
- this.dragging = false;
- this.resizing = false;
-
- this.options.onEndCrop(
- this.areaCoords,
- {
- width: this.calcW(),
- height: this.calcH()
- }
- );
- },
-
- /**
- * Abstract method called on the end of initialization
- *
- * @access private
- * @abstract
- * @return void
- */
- subInitialize: function() {},
-
- /**
- * Abstract method called on the end of drawArea()
- *
- * @access private
- * @abstract
- * @return void
- */
- subDrawArea: function() {}
-};
-
-
-
-
-/**
- * Extend the Cropper.Img class to allow for presentation of a preview image of the resulting crop,
- * the option for displayOnInit is always overridden to true when displaying a preview image
- *
- * Usage:
- * @param obj Image element to attach to
- * @param obj Optional options:
- * - see Cropper.Img for base options
- *
- * - previewWrap obj
- * HTML element that will be used as a container for the preview image
- */
-Cropper.ImgWithPreview = Class.create();
-
-Object.extend( Object.extend( Cropper.ImgWithPreview.prototype, Cropper.Img.prototype ), {
-
- /**
- * Implements the abstract method from Cropper.Img to initialize preview image settings.
- * Will only attach a preview image is the previewWrap element is defined and the minWidth
- * & minHeight options are set.
- *
- * @see Croper.Img.subInitialize
- */
- subInitialize: function() {
- /**
- * Whether or not we've attached a preview image
- * @var boolean
- */
- this.hasPreviewImg = false;
- if( typeof(this.options.previewWrap) != 'undefined'
- && this.options.minWidth > 0
- && this.options.minHeight > 0
- ) {
- /**
- * The preview image wrapper element
- * @var obj HTML element
- */
- this.previewWrap = $( this.options.previewWrap );
- /**
- * The preview image element
- * @var obj HTML IMG element
- */
- this.previewImg = this.img.cloneNode( false );
- // set the ID of the preview image to be unique
- this.previewImg.id = 'imgCrop_' + this.previewImg.id;
-
-
- // set the displayOnInit option to true so we display the select area at the same time as the thumbnail
- this.options.displayOnInit = true;
-
- this.hasPreviewImg = true;
-
- this.previewWrap.addClassName( 'imgCrop_previewWrap' );
-
- this.previewWrap.setStyle(
- {
- width: this.options.minWidth + 'px',
- height: this.options.minHeight + 'px'
- }
- );
-
- this.previewWrap.appendChild( this.previewImg );
- }
- },
-
- /**
- * Implements the abstract method from Cropper.Img to draw the preview image
- *
- * @see Croper.Img.subDrawArea
- */
- subDrawArea: function() {
- if( this.hasPreviewImg ) {
- // get the ratio of the select area to the src image
- var calcWidth = this.calcW();
- var calcHeight = this.calcH();
- // ratios for the dimensions of the preview image
- var dimRatio = {
- x: this.imgW / calcWidth,
- y: this.imgH / calcHeight
- };
- //ratios for the positions within the preview
- var posRatio = {
- x: calcWidth / this.options.minWidth,
- y: calcHeight / this.options.minHeight
- };
-
- // setting the positions in an obj before apply styles for rendering speed increase
- var calcPos = {
- w: Math.ceil( this.options.minWidth * dimRatio.x ) + 'px',
- h: Math.ceil( this.options.minHeight * dimRatio.y ) + 'px',
- x: '-' + Math.ceil( this.areaCoords.x1 / posRatio.x ) + 'px',
- y: '-' + Math.ceil( this.areaCoords.y1 / posRatio.y ) + 'px'
- }
-
- var previewStyle = this.previewImg.style;
- previewStyle.width = calcPos.w;
- previewStyle.height = calcPos.h;
- previewStyle.left = calcPos.x;
- previewStyle.top = calcPos.y;
- }
- }
-
-});
diff --git a/library/cropper/lib/builder.js b/library/cropper/lib/builder.js
deleted file mode 100644
index 5b15ba939..000000000
--- a/library/cropper/lib/builder.js
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// See scriptaculous.js for full license.
-
-var Builder = {
- NODEMAP: {
- AREA: 'map',
- CAPTION: 'table',
- COL: 'table',
- COLGROUP: 'table',
- LEGEND: 'fieldset',
- OPTGROUP: 'select',
- OPTION: 'select',
- PARAM: 'object',
- TBODY: 'table',
- TD: 'table',
- TFOOT: 'table',
- TH: 'table',
- THEAD: 'table',
- TR: 'table'
- },
- // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
- // due to a Firefox bug
- node: function(elementName) {
- elementName = elementName.toUpperCase();
-
- // try innerHTML approach
- var parentTag = this.NODEMAP[elementName] || 'div';
- var parentElement = document.createElement(parentTag);
- try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
- parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
- } catch(e) {}
- var element = parentElement.firstChild || null;
-
- // see if browser added wrapping tags
- if(element && (element.tagName != elementName))
- element = element.getElementsByTagName(elementName)[0];
-
- // fallback to createElement approach
- if(!element) element = document.createElement(elementName);
-
- // abort if nothing could be created
- if(!element) return;
-
- // attributes (or text)
- if(arguments[1])
- if(this._isStringOrNumber(arguments[1]) ||
- (arguments[1] instanceof Array)) {
- this._children(element, arguments[1]);
- } else {
- var attrs = this._attributes(arguments[1]);
- if(attrs.length) {
- try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
- parentElement.innerHTML = "<" +elementName + " " +
- attrs + "></" + elementName + ">";
- } catch(e) {}
- element = parentElement.firstChild || null;
- // workaround firefox 1.0.X bug
- if(!element) {
- element = document.createElement(elementName);
- for(attr in arguments[1])
- element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
- }
- if(element.tagName != elementName)
- element = parentElement.getElementsByTagName(elementName)[0];
- }
- }
-
- // text, or array of children
- if(arguments[2])
- this._children(element, arguments[2]);
-
- return element;
- },
- _text: function(text) {
- return document.createTextNode(text);
- },
- _attributes: function(attributes) {
- var attrs = [];
- for(attribute in attributes)
- attrs.push((attribute=='className' ? 'class' : attribute) +
- '="' + attributes[attribute].toString().escapeHTML() + '"');
- return attrs.join(" ");
- },
- _children: function(element, children) {
- if(typeof children=='object') { // array can hold nodes and text
- children.flatten().each( function(e) {
- if(typeof e=='object')
- element.appendChild(e)
- else
- if(Builder._isStringOrNumber(e))
- element.appendChild(Builder._text(e));
- });
- } else
- if(Builder._isStringOrNumber(children))
- element.appendChild(Builder._text(children));
- },
- _isStringOrNumber: function(param) {
- return(typeof param=='string' || typeof param=='number');
- }
-} \ No newline at end of file
diff --git a/library/cropper/lib/controls.js b/library/cropper/lib/controls.js
deleted file mode 100644
index de0261ed5..000000000
--- a/library/cropper/lib/controls.js
+++ /dev/null
@@ -1,815 +0,0 @@
-// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// (c) 2005 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
-// (c) 2005 Jon Tirsen (http://www.tirsen.com)
-// Contributors:
-// Richard Livsey
-// Rahul Bhargava
-// Rob Wills
-//
-// See scriptaculous.js for full license.
-
-// Autocompleter.Base handles all the autocompletion functionality
-// that's independent of the data source for autocompletion. This
-// includes drawing the autocompletion menu, observing keyboard
-// and mouse events, and similar.
-//
-// Specific autocompleters need to provide, at the very least,
-// a getUpdatedChoices function that will be invoked every time
-// the text inside the monitored textbox changes. This method
-// should get the text for which to provide autocompletion by
-// invoking this.getToken(), NOT by directly accessing
-// this.element.value. This is to allow incremental tokenized
-// autocompletion. Specific auto-completion logic (AJAX, etc)
-// belongs in getUpdatedChoices.
-//
-// Tokenized incremental autocompletion is enabled automatically
-// when an autocompleter is instantiated with the 'tokens' option
-// in the options parameter, e.g.:
-// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
-// will incrementally autocomplete with a comma as the token.
-// Additionally, ',' in the above example can be replaced with
-// a token array, e.g. { tokens: [',', '\n'] } which
-// enables autocompletion on multiple tokens. This is most
-// useful when one of the tokens is \n (a newline), as it
-// allows smart autocompletion after linebreaks.
-
-var Autocompleter = {}
-Autocompleter.Base = function() {};
-Autocompleter.Base.prototype = {
- baseInitialize: function(element, update, options) {
- this.element = $(element);
- this.update = $(update);
- this.hasFocus = false;
- this.changed = false;
- this.active = false;
- this.index = 0;
- this.entryCount = 0;
-
- if (this.setOptions)
- this.setOptions(options);
- else
- this.options = options || {};
-
- this.options.paramName = this.options.paramName || this.element.name;
- this.options.tokens = this.options.tokens || [];
- this.options.frequency = this.options.frequency || 0.4;
- this.options.minChars = this.options.minChars || 1;
- this.options.onShow = this.options.onShow ||
- function(element, update){
- if(!update.style.position || update.style.position=='absolute') {
- update.style.position = 'absolute';
- Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight});
- }
- Effect.Appear(update,{duration:0.15});
- };
- this.options.onHide = this.options.onHide ||
- function(element, update){ new Effect.Fade(update,{duration:0.15}) };
-
- if (typeof(this.options.tokens) == 'string')
- this.options.tokens = new Array(this.options.tokens);
-
- this.observer = null;
-
- this.element.setAttribute('autocomplete','off');
-
- Element.hide(this.update);
-
- Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this));
- Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this));
- },
-
- show: function() {
- if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
- if(!this.iefix &&
- (navigator.appVersion.indexOf('MSIE')>0) &&
- (navigator.userAgent.indexOf('Opera')<0) &&
- (Element.getStyle(this.update, 'position')=='absolute')) {
- new Insertion.After(this.update,
- '<iframe id="' + this.update.id + '_iefix" '+
- 'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
- 'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
- this.iefix = $(this.update.id+'_iefix');
- }
- if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
- },
-
- fixIEOverlapping: function() {
- Position.clone(this.update, this.iefix);
- this.iefix.style.zIndex = 1;
- this.update.style.zIndex = 2;
- Element.show(this.iefix);
- },
-
- hide: function() {
- this.stopIndicator();
- if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
- if(this.iefix) Element.hide(this.iefix);
- },
-
- startIndicator: function() {
- if(this.options.indicator) Element.show(this.options.indicator);
- },
-
- stopIndicator: function() {
- if(this.options.indicator) Element.hide(this.options.indicator);
- },
-
- onKeyPress: function(event) {
- if(this.active)
- switch(event.keyCode) {
- case Event.KEY_TAB:
- case Event.KEY_RETURN:
- this.selectEntry();
- Event.stop(event);
- case Event.KEY_ESC:
- this.hide();
- this.active = false;
- Event.stop(event);
- return;
- case Event.KEY_LEFT:
- case Event.KEY_RIGHT:
- return;
- case Event.KEY_UP:
- this.markPrevious();
- this.render();
- if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
- return;
- case Event.KEY_DOWN:
- this.markNext();
- this.render();
- if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
- return;
- }
- else
- if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
- (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0)) return;
-
- this.changed = true;
- this.hasFocus = true;
-
- if(this.observer) clearTimeout(this.observer);
- this.observer =
- setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
- },
-
- activate: function() {
- this.changed = false;
- this.hasFocus = true;
- this.getUpdatedChoices();
- },
-
- onHover: function(event) {
- var element = Event.findElement(event, 'LI');
- if(this.index != element.autocompleteIndex)
- {
- this.index = element.autocompleteIndex;
- this.render();
- }
- Event.stop(event);
- },
-
- onClick: function(event) {
- var element = Event.findElement(event, 'LI');
- this.index = element.autocompleteIndex;
- this.selectEntry();
- this.hide();
- },
-
- onBlur: function(event) {
- // needed to make click events working
- setTimeout(this.hide.bind(this), 250);
- this.hasFocus = false;
- this.active = false;
- },
-
- render: function() {
- if(this.entryCount > 0) {
- for (var i = 0; i < this.entryCount; i++)
- this.index==i ?
- Element.addClassName(this.getEntry(i),"selected") :
- Element.removeClassName(this.getEntry(i),"selected");
-
- if(this.hasFocus) {
- this.show();
- this.active = true;
- }
- } else {
- this.active = false;
- this.hide();
- }
- },
-
- markPrevious: function() {
- if(this.index > 0) this.index--
- else this.index = this.entryCount-1;
- },
-
- markNext: function() {
- if(this.index < this.entryCount-1) this.index++
- else this.index = 0;
- },
-
- getEntry: function(index) {
- return this.update.firstChild.childNodes[index];
- },
-
- getCurrentEntry: function() {
- return this.getEntry(this.index);
- },
-
- selectEntry: function() {
- this.active = false;
- this.updateElement(this.getCurrentEntry());
- },
-
- updateElement: function(selectedElement) {
- if (this.options.updateElement) {
- this.options.updateElement(selectedElement);
- return;
- }
- var value = '';
- if (this.options.select) {
- var nodes = document.getElementsByClassName(this.options.select, selectedElement) || [];
- if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
- } else
- value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
-
- var lastTokenPos = this.findLastToken();
- if (lastTokenPos != -1) {
- var newValue = this.element.value.substr(0, lastTokenPos + 1);
- var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/);
- if (whitespace)
- newValue += whitespace[0];
- this.element.value = newValue + value;
- } else {
- this.element.value = value;
- }
- this.element.focus();
-
- if (this.options.afterUpdateElement)
- this.options.afterUpdateElement(this.element, selectedElement);
- },
-
- updateChoices: function(choices) {
- if(!this.changed && this.hasFocus) {
- this.update.innerHTML = choices;
- Element.cleanWhitespace(this.update);
- Element.cleanWhitespace(this.update.firstChild);
-
- if(this.update.firstChild && this.update.firstChild.childNodes) {
- this.entryCount =
- this.update.firstChild.childNodes.length;
- for (var i = 0; i < this.entryCount; i++) {
- var entry = this.getEntry(i);
- entry.autocompleteIndex = i;
- this.addObservers(entry);
- }
- } else {
- this.entryCount = 0;
- }
-
- this.stopIndicator();
-
- this.index = 0;
- this.render();
- }
- },
-
- addObservers: function(element) {
- Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
- Event.observe(element, "click", this.onClick.bindAsEventListener(this));
- },
-
- onObserverEvent: function() {
- this.changed = false;
- if(this.getToken().length>=this.options.minChars) {
- this.startIndicator();
- this.getUpdatedChoices();
- } else {
- this.active = false;
- this.hide();
- }
- },
-
- getToken: function() {
- var tokenPos = this.findLastToken();
- if (tokenPos != -1)
- var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,'');
- else
- var ret = this.element.value;
-
- return /\n/.test(ret) ? '' : ret;
- },
-
- findLastToken: function() {
- var lastTokenPos = -1;
-
- for (var i=0; i<this.options.tokens.length; i++) {
- var thisTokenPos = this.element.value.lastIndexOf(this.options.tokens[i]);
- if (thisTokenPos > lastTokenPos)
- lastTokenPos = thisTokenPos;
- }
- return lastTokenPos;
- }
-}
-
-Ajax.Autocompleter = Class.create();
-Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {
- initialize: function(element, update, url, options) {
- this.baseInitialize(element, update, options);
- this.options.asynchronous = true;
- this.options.onComplete = this.onComplete.bind(this);
- this.options.defaultParams = this.options.parameters || null;
- this.url = url;
- },
-
- getUpdatedChoices: function() {
- entry = encodeURIComponent(this.options.paramName) + '=' +
- encodeURIComponent(this.getToken());
-
- this.options.parameters = this.options.callback ?
- this.options.callback(this.element, entry) : entry;
-
- if(this.options.defaultParams)
- this.options.parameters += '&' + this.options.defaultParams;
-
- new Ajax.Request(this.url, this.options);
- },
-
- onComplete: function(request) {
- this.updateChoices(request.responseText);
- }
-
-});
-
-// The local array autocompleter. Used when you'd prefer to
-// inject an array of autocompletion options into the page, rather
-// than sending out Ajax queries, which can be quite slow sometimes.
-//
-// The constructor takes four parameters. The first two are, as usual,
-// the id of the monitored textbox, and id of the autocompletion menu.
-// The third is the array you want to autocomplete from, and the fourth
-// is the options block.
-//
-// Extra local autocompletion options:
-// - choices - How many autocompletion choices to offer
-//
-// - partialSearch - If false, the autocompleter will match entered
-// text only at the beginning of strings in the
-// autocomplete array. Defaults to true, which will
-// match text at the beginning of any *word* in the
-// strings in the autocomplete array. If you want to
-// search anywhere in the string, additionally set
-// the option fullSearch to true (default: off).
-//
-// - fullSsearch - Search anywhere in autocomplete array strings.
-//
-// - partialChars - How many characters to enter before triggering
-// a partial match (unlike minChars, which defines
-// how many characters are required to do any match
-// at all). Defaults to 2.
-//
-// - ignoreCase - Whether to ignore case when autocompleting.
-// Defaults to true.
-//
-// It's possible to pass in a custom function as the 'selector'
-// option, if you prefer to write your own autocompletion logic.
-// In that case, the other options above will not apply unless
-// you support them.
-
-Autocompleter.Local = Class.create();
-Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), {
- initialize: function(element, update, array, options) {
- this.baseInitialize(element, update, options);
- this.options.array = array;
- },
-
- getUpdatedChoices: function() {
- this.updateChoices(this.options.selector(this));
- },
-
- setOptions: function(options) {
- this.options = Object.extend({
- choices: 10,
- partialSearch: true,
- partialChars: 2,
- ignoreCase: true,
- fullSearch: false,
- selector: function(instance) {
- var ret = []; // Beginning matches
- var partial = []; // Inside matches
- var entry = instance.getToken();
- var count = 0;
-
- for (var i = 0; i < instance.options.array.length &&
- ret.length < instance.options.choices ; i++) {
-
- var elem = instance.options.array[i];
- var foundPos = instance.options.ignoreCase ?
- elem.toLowerCase().indexOf(entry.toLowerCase()) :
- elem.indexOf(entry);
-
- while (foundPos != -1) {
- if (foundPos == 0 && elem.length != entry.length) {
- ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
- elem.substr(entry.length) + "</li>");
- break;
- } else if (entry.length >= instance.options.partialChars &&
- instance.options.partialSearch && foundPos != -1) {
- if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
- partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
- elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
- foundPos + entry.length) + "</li>");
- break;
- }
- }
-
- foundPos = instance.options.ignoreCase ?
- elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
- elem.indexOf(entry, foundPos + 1);
-
- }
- }
- if (partial.length)
- ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
- return "<ul>" + ret.join('') + "</ul>";
- }
- }, options || {});
- }
-});
-
-// AJAX in-place editor
-//
-// see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor
-
-// Use this if you notice weird scrolling problems on some browsers,
-// the DOM might be a bit confused when this gets called so do this
-// waits 1 ms (with setTimeout) until it does the activation
-Field.scrollFreeActivate = function(field) {
- setTimeout(function() {
- Field.activate(field);
- }, 1);
-}
-
-Ajax.InPlaceEditor = Class.create();
-Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99";
-Ajax.InPlaceEditor.prototype = {
- initialize: function(element, url, options) {
- this.url = url;
- this.element = $(element);
-
- this.options = Object.extend({
- okButton: true,
- okText: "ok",
- cancelLink: true,
- cancelText: "cancel",
- savingText: "Saving...",
- clickToEditText: "Click to edit",
- okText: "ok",
- rows: 1,
- onComplete: function(transport, element) {
- new Effect.Highlight(element, {startcolor: this.options.highlightcolor});
- },
- onFailure: function(transport) {
- alert("Error communicating with the server: " + transport.responseText.stripTags());
- },
- callback: function(form) {
- return Form.serialize(form);
- },
- handleLineBreaks: true,
- loadingText: 'Loading...',
- savingClassName: 'inplaceeditor-saving',
- loadingClassName: 'inplaceeditor-loading',
- formClassName: 'inplaceeditor-form',
- highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor,
- highlightendcolor: "#FFFFFF",
- externalControl: null,
- submitOnBlur: false,
- ajaxOptions: {},
- evalScripts: false
- }, options || {});
-
- if(!this.options.formId && this.element.id) {
- this.options.formId = this.element.id + "-inplaceeditor";
- if ($(this.options.formId)) {
- // there's already a form with that name, don't specify an id
- this.options.formId = null;
- }
- }
-
- if (this.options.externalControl) {
- this.options.externalControl = $(this.options.externalControl);
- }
-
- this.originalBackground = Element.getStyle(this.element, 'background-color');
- if (!this.originalBackground) {
- this.originalBackground = "transparent";
- }
-
- this.element.title = this.options.clickToEditText;
-
- this.onclickListener = this.enterEditMode.bindAsEventListener(this);
- this.mouseoverListener = this.enterHover.bindAsEventListener(this);
- this.mouseoutListener = this.leaveHover.bindAsEventListener(this);
- Event.observe(this.element, 'click', this.onclickListener);
- Event.observe(this.element, 'mouseover', this.mouseoverListener);
- Event.observe(this.element, 'mouseout', this.mouseoutListener);
- if (this.options.externalControl) {
- Event.observe(this.options.externalControl, 'click', this.onclickListener);
- Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener);
- Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener);
- }
- },
- enterEditMode: function(evt) {
- if (this.saving) return;
- if (this.editing) return;
- this.editing = true;
- this.onEnterEditMode();
- if (this.options.externalControl) {
- Element.hide(this.options.externalControl);
- }
- Element.hide(this.element);
- this.createForm();
- this.element.parentNode.insertBefore(this.form, this.element);
- Field.scrollFreeActivate(this.editField);
- // stop the event to avoid a page refresh in Safari
- if (evt) {
- Event.stop(evt);
- }
- return false;
- },
- createForm: function() {
- this.form = document.createElement("form");
- this.form.id = this.options.formId;
- Element.addClassName(this.form, this.options.formClassName)
- this.form.onsubmit = this.onSubmit.bind(this);
-
- this.createEditField();
-
- if (this.options.textarea) {
- var br = document.createElement("br");
- this.form.appendChild(br);
- }
-
- if (this.options.okButton) {
- okButton = document.createElement("input");
- okButton.type = "submit";
- okButton.value = this.options.okText;
- okButton.className = 'editor_ok_button';
- this.form.appendChild(okButton);
- }
-
- if (this.options.cancelLink) {
- cancelLink = document.createElement("a");
- cancelLink.href = "#";
- cancelLink.appendChild(document.createTextNode(this.options.cancelText));
- cancelLink.onclick = this.onclickCancel.bind(this);
- cancelLink.className = 'editor_cancel';
- this.form.appendChild(cancelLink);
- }
- },
- hasHTMLLineBreaks: function(string) {
- if (!this.options.handleLineBreaks) return false;
- return string.match(/<br/i) || string.match(/<p>/i);
- },
- convertHTMLLineBreaks: function(string) {
- return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");
- },
- createEditField: function() {
- var text;
- if(this.options.loadTextURL) {
- text = this.options.loadingText;
- } else {
- text = this.getText();
- }
-
- var obj = this;
-
- if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) {
- this.options.textarea = false;
- var textField = document.createElement("input");
- textField.obj = this;
- textField.type = "text";
- textField.name = "value";
- textField.value = text;
- textField.style.backgroundColor = this.options.highlightcolor;
- textField.className = 'editor_field';
- var size = this.options.size || this.options.cols || 0;
- if (size != 0) textField.size = size;
- if (this.options.submitOnBlur)
- textField.onblur = this.onSubmit.bind(this);
- this.editField = textField;
- } else {
- this.options.textarea = true;
- var textArea = document.createElement("textarea");
- textArea.obj = this;
- textArea.name = "value";
- textArea.value = this.convertHTMLLineBreaks(text);
- textArea.rows = this.options.rows;
- textArea.cols = this.options.cols || 40;
- textArea.className = 'editor_field';
- if (this.options.submitOnBlur)
- textArea.onblur = this.onSubmit.bind(this);
- this.editField = textArea;
- }
-
- if(this.options.loadTextURL) {
- this.loadExternalText();
- }
- this.form.appendChild(this.editField);
- },
- getText: function() {
- return this.element.innerHTML;
- },
- loadExternalText: function() {
- Element.addClassName(this.form, this.options.loadingClassName);
- this.editField.disabled = true;
- new Ajax.Request(
- this.options.loadTextURL,
- Object.extend({
- asynchronous: true,
- onComplete: this.onLoadedExternalText.bind(this)
- }, this.options.ajaxOptions)
- );
- },
- onLoadedExternalText: function(transport) {
- Element.removeClassName(this.form, this.options.loadingClassName);
- this.editField.disabled = false;
- this.editField.value = transport.responseText.stripTags();
- },
- onclickCancel: function() {
- this.onComplete();
- this.leaveEditMode();
- return false;
- },
- onFailure: function(transport) {
- this.options.onFailure(transport);
- if (this.oldInnerHTML) {
- this.element.innerHTML = this.oldInnerHTML;
- this.oldInnerHTML = null;
- }
- return false;
- },
- onSubmit: function() {
- // onLoading resets these so we need to save them away for the Ajax call
- var form = this.form;
- var value = this.editField.value;
-
- // do this first, sometimes the ajax call returns before we get a chance to switch on Saving...
- // which means this will actually switch on Saving... *after* we've left edit mode causing Saving...
- // to be displayed indefinitely
- this.onLoading();
-
- if (this.options.evalScripts) {
- new Ajax.Request(
- this.url, Object.extend({
- parameters: this.options.callback(form, value),
- onComplete: this.onComplete.bind(this),
- onFailure: this.onFailure.bind(this),
- asynchronous:true,
- evalScripts:true
- }, this.options.ajaxOptions));
- } else {
- new Ajax.Updater(
- { success: this.element,
- // don't update on failure (this could be an option)
- failure: null },
- this.url, Object.extend({
- parameters: this.options.callback(form, value),
- onComplete: this.onComplete.bind(this),
- onFailure: this.onFailure.bind(this)
- }, this.options.ajaxOptions));
- }
- // stop the event to avoid a page refresh in Safari
- if (arguments.length > 1) {
- Event.stop(arguments[0]);
- }
- return false;
- },
- onLoading: function() {
- this.saving = true;
- this.removeForm();
- this.leaveHover();
- this.showSaving();
- },
- showSaving: function() {
- this.oldInnerHTML = this.element.innerHTML;
- this.element.innerHTML = this.options.savingText;
- Element.addClassName(this.element, this.options.savingClassName);
- this.element.style.backgroundColor = this.originalBackground;
- Element.show(this.element);
- },
- removeForm: function() {
- if(this.form) {
- if (this.form.parentNode) Element.remove(this.form);
- this.form = null;
- }
- },
- enterHover: function() {
- if (this.saving) return;
- this.element.style.backgroundColor = this.options.highlightcolor;
- if (this.effect) {
- this.effect.cancel();
- }
- Element.addClassName(this.element, this.options.hoverClassName)
- },
- leaveHover: function() {
- if (this.options.backgroundColor) {
- this.element.style.backgroundColor = this.oldBackground;
- }
- Element.removeClassName(this.element, this.options.hoverClassName)
- if (this.saving) return;
- this.effect = new Effect.Highlight(this.element, {
- startcolor: this.options.highlightcolor,
- endcolor: this.options.highlightendcolor,
- restorecolor: this.originalBackground
- });
- },
- leaveEditMode: function() {
- Element.removeClassName(this.element, this.options.savingClassName);
- this.removeForm();
- this.leaveHover();
- this.element.style.backgroundColor = this.originalBackground;
- Element.show(this.element);
- if (this.options.externalControl) {
- Element.show(this.options.externalControl);
- }
- this.editing = false;
- this.saving = false;
- this.oldInnerHTML = null;
- this.onLeaveEditMode();
- },
- onComplete: function(transport) {
- this.leaveEditMode();
- this.options.onComplete.bind(this)(transport, this.element);
- },
- onEnterEditMode: function() {},
- onLeaveEditMode: function() {},
- dispose: function() {
- if (this.oldInnerHTML) {
- this.element.innerHTML = this.oldInnerHTML;
- }
- this.leaveEditMode();
- Event.stopObserving(this.element, 'click', this.onclickListener);
- Event.stopObserving(this.element, 'mouseover', this.mouseoverListener);
- Event.stopObserving(this.element, 'mouseout', this.mouseoutListener);
- if (this.options.externalControl) {
- Event.stopObserving(this.options.externalControl, 'click', this.onclickListener);
- Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener);
- Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener);
- }
- }
-};
-
-Ajax.InPlaceCollectionEditor = Class.create();
-Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype);
-Object.extend(Ajax.InPlaceCollectionEditor.prototype, {
- createEditField: function() {
- if (!this.cached_selectTag) {
- var selectTag = document.createElement("select");
- var collection = this.options.collection || [];
- var optionTag;
- collection.each(function(e,i) {
- optionTag = document.createElement("option");
- optionTag.value = (e instanceof Array) ? e[0] : e;
- if(this.options.value==optionTag.value) optionTag.selected = true;
- optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e));
- selectTag.appendChild(optionTag);
- }.bind(this));
- this.cached_selectTag = selectTag;
- }
-
- this.editField = this.cached_selectTag;
- if(this.options.loadTextURL) this.loadExternalText();
- this.form.appendChild(this.editField);
- this.options.callback = function(form, value) {
- return "value=" + encodeURIComponent(value);
- }
- }
-});
-
-// Delayed observer, like Form.Element.Observer,
-// but waits for delay after last key input
-// Ideal for live-search fields
-
-Form.Element.DelayedObserver = Class.create();
-Form.Element.DelayedObserver.prototype = {
- initialize: function(element, delay, callback) {
- this.delay = delay || 0.5;
- this.element = $(element);
- this.callback = callback;
- this.timer = null;
- this.lastValue = $F(this.element);
- Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
- },
- delayedListener: function(event) {
- if(this.lastValue == $F(this.element)) return;
- if(this.timer) clearTimeout(this.timer);
- this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
- this.lastValue = $F(this.element);
- },
- onTimerEvent: function() {
- this.timer = null;
- this.callback(this.element, $F(this.element));
- }
-};
diff --git a/library/cropper/lib/dragdrop.js b/library/cropper/lib/dragdrop.js
deleted file mode 100644
index be2a30f53..000000000
--- a/library/cropper/lib/dragdrop.js
+++ /dev/null
@@ -1,915 +0,0 @@
-// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// (c) 2005 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
-//
-// See scriptaculous.js for full license.
-
-/*--------------------------------------------------------------------------*/
-
-var Droppables = {
- drops: [],
-
- remove: function(element) {
- this.drops = this.drops.reject(function(d) { return d.element==$(element) });
- },
-
- add: function(element) {
- element = $(element);
- var options = Object.extend({
- greedy: true,
- hoverclass: null,
- tree: false
- }, arguments[1] || {});
-
- // cache containers
- if(options.containment) {
- options._containers = [];
- var containment = options.containment;
- if((typeof containment == 'object') &&
- (containment.constructor == Array)) {
- containment.each( function(c) { options._containers.push($(c)) });
- } else {
- options._containers.push($(containment));
- }
- }
-
- if(options.accept) options.accept = [options.accept].flatten();
-
- Element.makePositioned(element); // fix IE
- options.element = element;
-
- this.drops.push(options);
- },
-
- findDeepestChild: function(drops) {
- deepest = drops[0];
-
- for (i = 1; i < drops.length; ++i)
- if (Element.isParent(drops[i].element, deepest.element))
- deepest = drops[i];
-
- return deepest;
- },
-
- isContained: function(element, drop) {
- var containmentNode;
- if(drop.tree) {
- containmentNode = element.treeNode;
- } else {
- containmentNode = element.parentNode;
- }
- return drop._containers.detect(function(c) { return containmentNode == c });
- },
-
- isAffected: function(point, element, drop) {
- return (
- (drop.element!=element) &&
- ((!drop._containers) ||
- this.isContained(element, drop)) &&
- ((!drop.accept) ||
- (Element.classNames(element).detect(
- function(v) { return drop.accept.include(v) } ) )) &&
- Position.within(drop.element, point[0], point[1]) );
- },
-
- deactivate: function(drop) {
- if(drop.hoverclass)
- Element.removeClassName(drop.element, drop.hoverclass);
- this.last_active = null;
- },
-
- activate: function(drop) {
- if(drop.hoverclass)
- Element.addClassName(drop.element, drop.hoverclass);
- this.last_active = drop;
- },
-
- show: function(point, element) {
- if(!this.drops.length) return;
- var affected = [];
-
- if(this.last_active) this.deactivate(this.last_active);
- this.drops.each( function(drop) {
- if(Droppables.isAffected(point, element, drop))
- affected.push(drop);
- });
-
- if(affected.length>0) {
- drop = Droppables.findDeepestChild(affected);
- Position.within(drop.element, point[0], point[1]);
- if(drop.onHover)
- drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
-
- Droppables.activate(drop);
- }
- },
-
- fire: function(event, element) {
- if(!this.last_active) return;
- Position.prepare();
-
- if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
- if (this.last_active.onDrop)
- this.last_active.onDrop(element, this.last_active.element, event);
- },
-
- reset: function() {
- if(this.last_active)
- this.deactivate(this.last_active);
- }
-}
-
-var Draggables = {
- drags: [],
- observers: [],
-
- register: function(draggable) {
- if(this.drags.length == 0) {
- this.eventMouseUp = this.endDrag.bindAsEventListener(this);
- this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
- this.eventKeypress = this.keyPress.bindAsEventListener(this);
-
- Event.observe(document, "mouseup", this.eventMouseUp);
- Event.observe(document, "mousemove", this.eventMouseMove);
- Event.observe(document, "keypress", this.eventKeypress);
- }
- this.drags.push(draggable);
- },
-
- unregister: function(draggable) {
- this.drags = this.drags.reject(function(d) { return d==draggable });
- if(this.drags.length == 0) {
- Event.stopObserving(document, "mouseup", this.eventMouseUp);
- Event.stopObserving(document, "mousemove", this.eventMouseMove);
- Event.stopObserving(document, "keypress", this.eventKeypress);
- }
- },
-
- activate: function(draggable) {
- window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
- this.activeDraggable = draggable;
- },
-
- deactivate: function() {
- this.activeDraggable = null;
- },
-
- updateDrag: function(event) {
- if(!this.activeDraggable) return;
- var pointer = [Event.pointerX(event), Event.pointerY(event)];
- // Mozilla-based browsers fire successive mousemove events with
- // the same coordinates, prevent needless redrawing (moz bug?)
- if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
- this._lastPointer = pointer;
- this.activeDraggable.updateDrag(event, pointer);
- },
-
- endDrag: function(event) {
- if(!this.activeDraggable) return;
- this._lastPointer = null;
- this.activeDraggable.endDrag(event);
- this.activeDraggable = null;
- },
-
- keyPress: function(event) {
- if(this.activeDraggable)
- this.activeDraggable.keyPress(event);
- },
-
- addObserver: function(observer) {
- this.observers.push(observer);
- this._cacheObserverCallbacks();
- },
-
- removeObserver: function(element) { // element instead of observer fixes mem leaks
- this.observers = this.observers.reject( function(o) { return o.element==element });
- this._cacheObserverCallbacks();
- },
-
- notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag'
- if(this[eventName+'Count'] > 0)
- this.observers.each( function(o) {
- if(o[eventName]) o[eventName](eventName, draggable, event);
- });
- },
-
- _cacheObserverCallbacks: function() {
- ['onStart','onEnd','onDrag'].each( function(eventName) {
- Draggables[eventName+'Count'] = Draggables.observers.select(
- function(o) { return o[eventName]; }
- ).length;
- });
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var Draggable = Class.create();
-Draggable.prototype = {
- initialize: function(element) {
- var options = Object.extend({
- handle: false,
- starteffect: function(element) {
- element._opacity = Element.getOpacity(element);
- new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
- },
- reverteffect: function(element, top_offset, left_offset) {
- var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
- element._revert = new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur});
- },
- endeffect: function(element) {
- var toOpacity = typeof element._opacity == 'number' ? element._opacity : 1.0
- new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity});
- },
- zindex: 1000,
- revert: false,
- scroll: false,
- scrollSensitivity: 20,
- scrollSpeed: 15,
- snap: false // false, or xy or [x,y] or function(x,y){ return [x,y] }
- }, arguments[1] || {});
-
- this.element = $(element);
-
- if(options.handle && (typeof options.handle == 'string')) {
- var h = Element.childrenWithClassName(this.element, options.handle, true);
- if(h.length>0) this.handle = h[0];
- }
- if(!this.handle) this.handle = $(options.handle);
- if(!this.handle) this.handle = this.element;
-
- if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML)
- options.scroll = $(options.scroll);
-
- Element.makePositioned(this.element); // fix IE
-
- this.delta = this.currentDelta();
- this.options = options;
- this.dragging = false;
-
- this.eventMouseDown = this.initDrag.bindAsEventListener(this);
- Event.observe(this.handle, "mousedown", this.eventMouseDown);
-
- Draggables.register(this);
- },
-
- destroy: function() {
- Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
- Draggables.unregister(this);
- },
-
- currentDelta: function() {
- return([
- parseInt(Element.getStyle(this.element,'left') || '0'),
- parseInt(Element.getStyle(this.element,'top') || '0')]);
- },
-
- initDrag: function(event) {
- if(Event.isLeftClick(event)) {
- // abort on form elements, fixes a Firefox issue
- var src = Event.element(event);
- if(src.tagName && (
- src.tagName=='INPUT' ||
- src.tagName=='SELECT' ||
- src.tagName=='OPTION' ||
- src.tagName=='BUTTON' ||
- src.tagName=='TEXTAREA')) return;
-
- if(this.element._revert) {
- this.element._revert.cancel();
- this.element._revert = null;
- }
-
- var pointer = [Event.pointerX(event), Event.pointerY(event)];
- var pos = Position.cumulativeOffset(this.element);
- this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
-
- Draggables.activate(this);
- Event.stop(event);
- }
- },
-
- startDrag: function(event) {
- this.dragging = true;
-
- if(this.options.zindex) {
- this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
- this.element.style.zIndex = this.options.zindex;
- }
-
- if(this.options.ghosting) {
- this._clone = this.element.cloneNode(true);
- Position.absolutize(this.element);
- this.element.parentNode.insertBefore(this._clone, this.element);
- }
-
- if(this.options.scroll) {
- if (this.options.scroll == window) {
- var where = this._getWindowScroll(this.options.scroll);
- this.originalScrollLeft = where.left;
- this.originalScrollTop = where.top;
- } else {
- this.originalScrollLeft = this.options.scroll.scrollLeft;
- this.originalScrollTop = this.options.scroll.scrollTop;
- }
- }
-
- Draggables.notify('onStart', this, event);
- if(this.options.starteffect) this.options.starteffect(this.element);
- },
-
- updateDrag: function(event, pointer) {
- if(!this.dragging) this.startDrag(event);
- Position.prepare();
- Droppables.show(pointer, this.element);
- Draggables.notify('onDrag', this, event);
- this.draw(pointer);
- if(this.options.change) this.options.change(this);
-
- if(this.options.scroll) {
- this.stopScrolling();
-
- var p;
- if (this.options.scroll == window) {
- with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
- } else {
- p = Position.page(this.options.scroll);
- p[0] += this.options.scroll.scrollLeft;
- p[1] += this.options.scroll.scrollTop;
- p.push(p[0]+this.options.scroll.offsetWidth);
- p.push(p[1]+this.options.scroll.offsetHeight);
- }
- var speed = [0,0];
- if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
- if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
- if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
- if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
- this.startScrolling(speed);
- }
-
- // fix AppleWebKit rendering
- if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
-
- Event.stop(event);
- },
-
- finishDrag: function(event, success) {
- this.dragging = false;
-
- if(this.options.ghosting) {
- Position.relativize(this.element);
- Element.remove(this._clone);
- this._clone = null;
- }
-
- if(success) Droppables.fire(event, this.element);
- Draggables.notify('onEnd', this, event);
-
- var revert = this.options.revert;
- if(revert && typeof revert == 'function') revert = revert(this.element);
-
- var d = this.currentDelta();
- if(revert && this.options.reverteffect) {
- this.options.reverteffect(this.element,
- d[1]-this.delta[1], d[0]-this.delta[0]);
- } else {
- this.delta = d;
- }
-
- if(this.options.zindex)
- this.element.style.zIndex = this.originalZ;
-
- if(this.options.endeffect)
- this.options.endeffect(this.element);
-
- Draggables.deactivate(this);
- Droppables.reset();
- },
-
- keyPress: function(event) {
- if(event.keyCode!=Event.KEY_ESC) return;
- this.finishDrag(event, false);
- Event.stop(event);
- },
-
- endDrag: function(event) {
- if(!this.dragging) return;
- this.stopScrolling();
- this.finishDrag(event, true);
- Event.stop(event);
- },
-
- draw: function(point) {
- var pos = Position.cumulativeOffset(this.element);
- var d = this.currentDelta();
- pos[0] -= d[0]; pos[1] -= d[1];
-
- if(this.options.scroll && (this.options.scroll != window)) {
- pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
- pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
- }
-
- var p = [0,1].map(function(i){
- return (point[i]-pos[i]-this.offset[i])
- }.bind(this));
-
- if(this.options.snap) {
- if(typeof this.options.snap == 'function') {
- p = this.options.snap(p[0],p[1],this);
- } else {
- if(this.options.snap instanceof Array) {
- p = p.map( function(v, i) {
- return Math.round(v/this.options.snap[i])*this.options.snap[i] }.bind(this))
- } else {
- p = p.map( function(v) {
- return Math.round(v/this.options.snap)*this.options.snap }.bind(this))
- }
- }}
-
- var style = this.element.style;
- if((!this.options.constraint) || (this.options.constraint=='horizontal'))
- style.left = p[0] + "px";
- if((!this.options.constraint) || (this.options.constraint=='vertical'))
- style.top = p[1] + "px";
- if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
- },
-
- stopScrolling: function() {
- if(this.scrollInterval) {
- clearInterval(this.scrollInterval);
- this.scrollInterval = null;
- Draggables._lastScrollPointer = null;
- }
- },
-
- startScrolling: function(speed) {
- this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
- this.lastScrolled = new Date();
- this.scrollInterval = setInterval(this.scroll.bind(this), 10);
- },
-
- scroll: function() {
- var current = new Date();
- var delta = current - this.lastScrolled;
- this.lastScrolled = current;
- if(this.options.scroll == window) {
- with (this._getWindowScroll(this.options.scroll)) {
- if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
- var d = delta / 1000;
- this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );
- }
- }
- } else {
- this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
- this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000;
- }
-
- Position.prepare();
- Droppables.show(Draggables._lastPointer, this.element);
- Draggables.notify('onDrag', this);
- Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
- Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
- Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
- if (Draggables._lastScrollPointer[0] < 0)
- Draggables._lastScrollPointer[0] = 0;
- if (Draggables._lastScrollPointer[1] < 0)
- Draggables._lastScrollPointer[1] = 0;
- this.draw(Draggables._lastScrollPointer);
-
- if(this.options.change) this.options.change(this);
- },
-
- _getWindowScroll: function(w) {
- var T, L, W, H;
- with (w.document) {
- if (w.document.documentElement && documentElement.scrollTop) {
- T = documentElement.scrollTop;
- L = documentElement.scrollLeft;
- } else if (w.document.body) {
- T = body.scrollTop;
- L = body.scrollLeft;
- }
- if (w.innerWidth) {
- W = w.innerWidth;
- H = w.innerHeight;
- } else if (w.document.documentElement && documentElement.clientWidth) {
- W = documentElement.clientWidth;
- H = documentElement.clientHeight;
- } else {
- W = body.offsetWidth;
- H = body.offsetHeight
- }
- }
- return { top: T, left: L, width: W, height: H };
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var SortableObserver = Class.create();
-SortableObserver.prototype = {
- initialize: function(element, observer) {
- this.element = $(element);
- this.observer = observer;
- this.lastValue = Sortable.serialize(this.element);
- },
-
- onStart: function() {
- this.lastValue = Sortable.serialize(this.element);
- },
-
- onEnd: function() {
- Sortable.unmark();
- if(this.lastValue != Sortable.serialize(this.element))
- this.observer(this.element)
- }
-}
-
-var Sortable = {
- sortables: {},
-
- _findRootElement: function(element) {
- while (element.tagName != "BODY") {
- if(element.id && Sortable.sortables[element.id]) return element;
- element = element.parentNode;
- }
- },
-
- options: function(element) {
- element = Sortable._findRootElement($(element));
- if(!element) return;
- return Sortable.sortables[element.id];
- },
-
- destroy: function(element){
- var s = Sortable.options(element);
-
- if(s) {
- Draggables.removeObserver(s.element);
- s.droppables.each(function(d){ Droppables.remove(d) });
- s.draggables.invoke('destroy');
-
- delete Sortable.sortables[s.element.id];
- }
- },
-
- create: function(element) {
- element = $(element);
- var options = Object.extend({
- element: element,
- tag: 'li', // assumes li children, override with tag: 'tagname'
- dropOnEmpty: false,
- tree: false,
- treeTag: 'ul',
- overlap: 'vertical', // one of 'vertical', 'horizontal'
- constraint: 'vertical', // one of 'vertical', 'horizontal', false
- containment: element, // also takes array of elements (or id's); or false
- handle: false, // or a CSS class
- only: false,
- hoverclass: null,
- ghosting: false,
- scroll: false,
- scrollSensitivity: 20,
- scrollSpeed: 15,
- format: /^[^_]*_(.*)$/,
- onChange: Prototype.emptyFunction,
- onUpdate: Prototype.emptyFunction
- }, arguments[1] || {});
-
- // clear any old sortable with same element
- this.destroy(element);
-
- // build options for the draggables
- var options_for_draggable = {
- revert: true,
- scroll: options.scroll,
- scrollSpeed: options.scrollSpeed,
- scrollSensitivity: options.scrollSensitivity,
- ghosting: options.ghosting,
- constraint: options.constraint,
- handle: options.handle };
-
- if(options.starteffect)
- options_for_draggable.starteffect = options.starteffect;
-
- if(options.reverteffect)
- options_for_draggable.reverteffect = options.reverteffect;
- else
- if(options.ghosting) options_for_draggable.reverteffect = function(element) {
- element.style.top = 0;
- element.style.left = 0;
- };
-
- if(options.endeffect)
- options_for_draggable.endeffect = options.endeffect;
-
- if(options.zindex)
- options_for_draggable.zindex = options.zindex;
-
- // build options for the droppables
- var options_for_droppable = {
- overlap: options.overlap,
- containment: options.containment,
- tree: options.tree,
- hoverclass: options.hoverclass,
- onHover: Sortable.onHover
- //greedy: !options.dropOnEmpty
- }
-
- var options_for_tree = {
- onHover: Sortable.onEmptyHover,
- overlap: options.overlap,
- containment: options.containment,
- hoverclass: options.hoverclass
- }
-
- // fix for gecko engine
- Element.cleanWhitespace(element);
-
- options.draggables = [];
- options.droppables = [];
-
- // drop on empty handling
- if(options.dropOnEmpty || options.tree) {
- Droppables.add(element, options_for_tree);
- options.droppables.push(element);
- }
-
- (this.findElements(element, options) || []).each( function(e) {
- // handles are per-draggable
- var handle = options.handle ?
- Element.childrenWithClassName(e, options.handle)[0] : e;
- options.draggables.push(
- new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
- Droppables.add(e, options_for_droppable);
- if(options.tree) e.treeNode = element;
- options.droppables.push(e);
- });
-
- if(options.tree) {
- (Sortable.findTreeElements(element, options) || []).each( function(e) {
- Droppables.add(e, options_for_tree);
- e.treeNode = element;
- options.droppables.push(e);
- });
- }
-
- // keep reference
- this.sortables[element.id] = options;
-
- // for onupdate
- Draggables.addObserver(new SortableObserver(element, options.onUpdate));
-
- },
-
- // return all suitable-for-sortable elements in a guaranteed order
- findElements: function(element, options) {
- return Element.findChildren(
- element, options.only, options.tree ? true : false, options.tag);
- },
-
- findTreeElements: function(element, options) {
- return Element.findChildren(
- element, options.only, options.tree ? true : false, options.treeTag);
- },
-
- onHover: function(element, dropon, overlap) {
- if(Element.isParent(dropon, element)) return;
-
- if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
- return;
- } else if(overlap>0.5) {
- Sortable.mark(dropon, 'before');
- if(dropon.previousSibling != element) {
- var oldParentNode = element.parentNode;
- element.style.visibility = "hidden"; // fix gecko rendering
- dropon.parentNode.insertBefore(element, dropon);
- if(dropon.parentNode!=oldParentNode)
- Sortable.options(oldParentNode).onChange(element);
- Sortable.options(dropon.parentNode).onChange(element);
- }
- } else {
- Sortable.mark(dropon, 'after');
- var nextElement = dropon.nextSibling || null;
- if(nextElement != element) {
- var oldParentNode = element.parentNode;
- element.style.visibility = "hidden"; // fix gecko rendering
- dropon.parentNode.insertBefore(element, nextElement);
- if(dropon.parentNode!=oldParentNode)
- Sortable.options(oldParentNode).onChange(element);
- Sortable.options(dropon.parentNode).onChange(element);
- }
- }
- },
-
- onEmptyHover: function(element, dropon, overlap) {
- var oldParentNode = element.parentNode;
- var droponOptions = Sortable.options(dropon);
-
- if(!Element.isParent(dropon, element)) {
- var index;
-
- var children = Sortable.findElements(dropon, {tag: droponOptions.tag});
- var child = null;
-
- if(children) {
- var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
-
- for (index = 0; index < children.length; index += 1) {
- if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
- offset -= Element.offsetSize (children[index], droponOptions.overlap);
- } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {
- child = index + 1 < children.length ? children[index + 1] : null;
- break;
- } else {
- child = children[index];
- break;
- }
- }
- }
-
- dropon.insertBefore(element, child);
-
- Sortable.options(oldParentNode).onChange(element);
- droponOptions.onChange(element);
- }
- },
-
- unmark: function() {
- if(Sortable._marker) Element.hide(Sortable._marker);
- },
-
- mark: function(dropon, position) {
- // mark on ghosting only
- var sortable = Sortable.options(dropon.parentNode);
- if(sortable && !sortable.ghosting) return;
-
- if(!Sortable._marker) {
- Sortable._marker = $('dropmarker') || document.createElement('DIV');
- Element.hide(Sortable._marker);
- Element.addClassName(Sortable._marker, 'dropmarker');
- Sortable._marker.style.position = 'absolute';
- document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
- }
- var offsets = Position.cumulativeOffset(dropon);
- Sortable._marker.style.left = offsets[0] + 'px';
- Sortable._marker.style.top = offsets[1] + 'px';
-
- if(position=='after')
- if(sortable.overlap == 'horizontal')
- Sortable._marker.style.left = (offsets[0]+dropon.clientWidth) + 'px';
- else
- Sortable._marker.style.top = (offsets[1]+dropon.clientHeight) + 'px';
-
- Element.show(Sortable._marker);
- },
-
- _tree: function(element, options, parent) {
- var children = Sortable.findElements(element, options) || [];
-
- for (var i = 0; i < children.length; ++i) {
- var match = children[i].id.match(options.format);
-
- if (!match) continue;
-
- var child = {
- id: encodeURIComponent(match ? match[1] : null),
- element: element,
- parent: parent,
- children: new Array,
- position: parent.children.length,
- container: Sortable._findChildrenElement(children[i], options.treeTag.toUpperCase())
- }
-
- /* Get the element containing the children and recurse over it */
- if (child.container)
- this._tree(child.container, options, child)
-
- parent.children.push (child);
- }
-
- return parent;
- },
-
- /* Finds the first element of the given tag type within a parent element.
- Used for finding the first LI[ST] within a L[IST]I[TEM].*/
- _findChildrenElement: function (element, containerTag) {
- if (element && element.hasChildNodes)
- for (var i = 0; i < element.childNodes.length; ++i)
- if (element.childNodes[i].tagName == containerTag)
- return element.childNodes[i];
-
- return null;
- },
-
- tree: function(element) {
- element = $(element);
- var sortableOptions = this.options(element);
- var options = Object.extend({
- tag: sortableOptions.tag,
- treeTag: sortableOptions.treeTag,
- only: sortableOptions.only,
- name: element.id,
- format: sortableOptions.format
- }, arguments[1] || {});
-
- var root = {
- id: null,
- parent: null,
- children: new Array,
- container: element,
- position: 0
- }
-
- return Sortable._tree (element, options, root);
- },
-
- /* Construct a [i] index for a particular node */
- _constructIndex: function(node) {
- var index = '';
- do {
- if (node.id) index = '[' + node.position + ']' + index;
- } while ((node = node.parent) != null);
- return index;
- },
-
- sequence: function(element) {
- element = $(element);
- var options = Object.extend(this.options(element), arguments[1] || {});
-
- return $(this.findElements(element, options) || []).map( function(item) {
- return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
- });
- },
-
- setSequence: function(element, new_sequence) {
- element = $(element);
- var options = Object.extend(this.options(element), arguments[2] || {});
-
- var nodeMap = {};
- this.findElements(element, options).each( function(n) {
- if (n.id.match(options.format))
- nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];
- n.parentNode.removeChild(n);
- });
-
- new_sequence.each(function(ident) {
- var n = nodeMap[ident];
- if (n) {
- n[1].appendChild(n[0]);
- delete nodeMap[ident];
- }
- });
- },
-
- serialize: function(element) {
- element = $(element);
- var options = Object.extend(Sortable.options(element), arguments[1] || {});
- var name = encodeURIComponent(
- (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
-
- if (options.tree) {
- return Sortable.tree(element, arguments[1]).children.map( function (item) {
- return [name + Sortable._constructIndex(item) + "=" +
- encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
- }).flatten().join('&');
- } else {
- return Sortable.sequence(element, arguments[1]).map( function(item) {
- return name + "[]=" + encodeURIComponent(item);
- }).join('&');
- }
- }
-}
-
-/* Returns true if child is contained within element */
-Element.isParent = function(child, element) {
- if (!child.parentNode || child == element) return false;
-
- if (child.parentNode == element) return true;
-
- return Element.isParent(child.parentNode, element);
-}
-
-Element.findChildren = function(element, only, recursive, tagName) {
- if(!element.hasChildNodes()) return null;
- tagName = tagName.toUpperCase();
- if(only) only = [only].flatten();
- var elements = [];
- $A(element.childNodes).each( function(e) {
- if(e.tagName && e.tagName.toUpperCase()==tagName &&
- (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
- elements.push(e);
- if(recursive) {
- var grandchildren = Element.findChildren(e, only, recursive, tagName);
- if(grandchildren) elements.push(grandchildren);
- }
- });
-
- return (elements.length>0 ? elements.flatten() : []);
-}
-
-Element.offsetSize = function (element, type) {
- if (type == 'vertical' || type == 'height')
- return element.offsetHeight;
- else
- return element.offsetWidth;
-} \ No newline at end of file
diff --git a/library/cropper/lib/effects.js b/library/cropper/lib/effects.js
deleted file mode 100644
index 0864323ec..000000000
--- a/library/cropper/lib/effects.js
+++ /dev/null
@@ -1,958 +0,0 @@
-// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// Contributors:
-// Justin Palmer (http://encytemedia.com/)
-// Mark Pilgrim (http://diveintomark.org/)
-// Martin Bialasinki
-//
-// See scriptaculous.js for full license.
-
-// converts rgb() and #xxx to #xxxxxx format,
-// returns self (or first argument) if not convertable
-String.prototype.parseColor = function() {
- var color = '#';
- if(this.slice(0,4) == 'rgb(') {
- var cols = this.slice(4,this.length-1).split(',');
- var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
- } else {
- if(this.slice(0,1) == '#') {
- if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
- if(this.length==7) color = this.toLowerCase();
- }
- }
- return(color.length==7 ? color : (arguments[0] || this));
-}
-
-/*--------------------------------------------------------------------------*/
-
-Element.collectTextNodes = function(element) {
- return $A($(element).childNodes).collect( function(node) {
- return (node.nodeType==3 ? node.nodeValue :
- (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
- }).flatten().join('');
-}
-
-Element.collectTextNodesIgnoreClass = function(element, className) {
- return $A($(element).childNodes).collect( function(node) {
- return (node.nodeType==3 ? node.nodeValue :
- ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
- Element.collectTextNodesIgnoreClass(node, className) : ''));
- }).flatten().join('');
-}
-
-Element.setContentZoom = function(element, percent) {
- element = $(element);
- Element.setStyle(element, {fontSize: (percent/100) + 'em'});
- if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
-}
-
-Element.getOpacity = function(element){
- var opacity;
- if (opacity = Element.getStyle(element, 'opacity'))
- return parseFloat(opacity);
- if (opacity = (Element.getStyle(element, 'filter') || '').match(/alpha\(opacity=(.*)\)/))
- if(opacity[1]) return parseFloat(opacity[1]) / 100;
- return 1.0;
-}
-
-Element.setOpacity = function(element, value){
- element= $(element);
- if (value == 1){
- Element.setStyle(element, { opacity:
- (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ?
- 0.999999 : null });
- if(/MSIE/.test(navigator.userAgent))
- Element.setStyle(element, {filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});
- } else {
- if(value < 0.00001) value = 0;
- Element.setStyle(element, {opacity: value});
- if(/MSIE/.test(navigator.userAgent))
- Element.setStyle(element,
- { filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'') +
- 'alpha(opacity='+value*100+')' });
- }
-}
-
-Element.getInlineOpacity = function(element){
- return $(element).style.opacity || '';
-}
-
-Element.childrenWithClassName = function(element, className, findFirst) {
- var classNameRegExp = new RegExp("(^|\\s)" + className + "(\\s|$)");
- var results = $A($(element).getElementsByTagName('*'))[findFirst ? 'detect' : 'select']( function(c) {
- return (c.className && c.className.match(classNameRegExp));
- });
- if(!results) results = [];
- return results;
-}
-
-Element.forceRerendering = function(element) {
- try {
- element = $(element);
- var n = document.createTextNode(' ');
- element.appendChild(n);
- element.removeChild(n);
- } catch(e) { }
-};
-
-/*--------------------------------------------------------------------------*/
-
-Array.prototype.call = function() {
- var args = arguments;
- this.each(function(f){ f.apply(this, args) });
-}
-
-/*--------------------------------------------------------------------------*/
-
-var Effect = {
- tagifyText: function(element) {
- var tagifyStyle = 'position:relative';
- if(/MSIE/.test(navigator.userAgent)) tagifyStyle += ';zoom:1';
- element = $(element);
- $A(element.childNodes).each( function(child) {
- if(child.nodeType==3) {
- child.nodeValue.toArray().each( function(character) {
- element.insertBefore(
- Builder.node('span',{style: tagifyStyle},
- character == ' ' ? String.fromCharCode(160) : character),
- child);
- });
- Element.remove(child);
- }
- });
- },
- multiple: function(element, effect) {
- var elements;
- if(((typeof element == 'object') ||
- (typeof element == 'function')) &&
- (element.length))
- elements = element;
- else
- elements = $(element).childNodes;
-
- var options = Object.extend({
- speed: 0.1,
- delay: 0.0
- }, arguments[2] || {});
- var masterDelay = options.delay;
-
- $A(elements).each( function(element, index) {
- new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
- });
- },
- PAIRS: {
- 'slide': ['SlideDown','SlideUp'],
- 'blind': ['BlindDown','BlindUp'],
- 'appear': ['Appear','Fade']
- },
- toggle: function(element, effect) {
- element = $(element);
- effect = (effect || 'appear').toLowerCase();
- var options = Object.extend({
- queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
- }, arguments[2] || {});
- Effect[element.visible() ?
- Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
- }
-};
-
-var Effect2 = Effect; // deprecated
-
-/* ------------- transitions ------------- */
-
-Effect.Transitions = {}
-
-Effect.Transitions.linear = function(pos) {
- return pos;
-}
-Effect.Transitions.sinoidal = function(pos) {
- return (-Math.cos(pos*Math.PI)/2) + 0.5;
-}
-Effect.Transitions.reverse = function(pos) {
- return 1-pos;
-}
-Effect.Transitions.flicker = function(pos) {
- return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
-}
-Effect.Transitions.wobble = function(pos) {
- return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
-}
-Effect.Transitions.pulse = function(pos) {
- return (Math.floor(pos*10) % 2 == 0 ?
- (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));
-}
-Effect.Transitions.none = function(pos) {
- return 0;
-}
-Effect.Transitions.full = function(pos) {
- return 1;
-}
-
-/* ------------- core effects ------------- */
-
-Effect.ScopedQueue = Class.create();
-Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
- initialize: function() {
- this.effects = [];
- this.interval = null;
- },
- _each: function(iterator) {
- this.effects._each(iterator);
- },
- add: function(effect) {
- var timestamp = new Date().getTime();
-
- var position = (typeof effect.options.queue == 'string') ?
- effect.options.queue : effect.options.queue.position;
-
- switch(position) {
- case 'front':
- // move unstarted effects after this effect
- this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
- e.startOn += effect.finishOn;
- e.finishOn += effect.finishOn;
- });
- break;
- case 'end':
- // start effect after last queued effect has finished
- timestamp = this.effects.pluck('finishOn').max() || timestamp;
- break;
- }
-
- effect.startOn += timestamp;
- effect.finishOn += timestamp;
-
- if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
- this.effects.push(effect);
-
- if(!this.interval)
- this.interval = setInterval(this.loop.bind(this), 40);
- },
- remove: function(effect) {
- this.effects = this.effects.reject(function(e) { return e==effect });
- if(this.effects.length == 0) {
- clearInterval(this.interval);
- this.interval = null;
- }
- },
- loop: function() {
- var timePos = new Date().getTime();
- this.effects.invoke('loop', timePos);
- }
-});
-
-Effect.Queues = {
- instances: $H(),
- get: function(queueName) {
- if(typeof queueName != 'string') return queueName;
-
- if(!this.instances[queueName])
- this.instances[queueName] = new Effect.ScopedQueue();
-
- return this.instances[queueName];
- }
-}
-Effect.Queue = Effect.Queues.get('global');
-
-Effect.DefaultOptions = {
- transition: Effect.Transitions.sinoidal,
- duration: 1.0, // seconds
- fps: 25.0, // max. 25fps due to Effect.Queue implementation
- sync: false, // true for combining
- from: 0.0,
- to: 1.0,
- delay: 0.0,
- queue: 'parallel'
-}
-
-Effect.Base = function() {};
-Effect.Base.prototype = {
- position: null,
- start: function(options) {
- this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
- this.currentFrame = 0;
- this.state = 'idle';
- this.startOn = this.options.delay*1000;
- this.finishOn = this.startOn + (this.options.duration*1000);
- this.event('beforeStart');
- if(!this.options.sync)
- Effect.Queues.get(typeof this.options.queue == 'string' ?
- 'global' : this.options.queue.scope).add(this);
- },
- loop: function(timePos) {
- if(timePos >= this.startOn) {
- if(timePos >= this.finishOn) {
- this.render(1.0);
- this.cancel();
- this.event('beforeFinish');
- if(this.finish) this.finish();
- this.event('afterFinish');
- return;
- }
- var pos = (timePos - this.startOn) / (this.finishOn - this.startOn);
- var frame = Math.round(pos * this.options.fps * this.options.duration);
- if(frame > this.currentFrame) {
- this.render(pos);
- this.currentFrame = frame;
- }
- }
- },
- render: function(pos) {
- if(this.state == 'idle') {
- this.state = 'running';
- this.event('beforeSetup');
- if(this.setup) this.setup();
- this.event('afterSetup');
- }
- if(this.state == 'running') {
- if(this.options.transition) pos = this.options.transition(pos);
- pos *= (this.options.to-this.options.from);
- pos += this.options.from;
- this.position = pos;
- this.event('beforeUpdate');
- if(this.update) this.update(pos);
- this.event('afterUpdate');
- }
- },
- cancel: function() {
- if(!this.options.sync)
- Effect.Queues.get(typeof this.options.queue == 'string' ?
- 'global' : this.options.queue.scope).remove(this);
- this.state = 'finished';
- },
- event: function(eventName) {
- if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
- if(this.options[eventName]) this.options[eventName](this);
- },
- inspect: function() {
- return '#<Effect:' + $H(this).inspect() + ',options:' + $H(this.options).inspect() + '>';
- }
-}
-
-Effect.Parallel = Class.create();
-Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
- initialize: function(effects) {
- this.effects = effects || [];
- this.start(arguments[1]);
- },
- update: function(position) {
- this.effects.invoke('render', position);
- },
- finish: function(position) {
- this.effects.each( function(effect) {
- effect.render(1.0);
- effect.cancel();
- effect.event('beforeFinish');
- if(effect.finish) effect.finish(position);
- effect.event('afterFinish');
- });
- }
-});
-
-Effect.Opacity = Class.create();
-Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
- initialize: function(element) {
- this.element = $(element);
- // make this work on IE on elements without 'layout'
- if(/MSIE/.test(navigator.userAgent) && (!this.element.hasLayout))
- this.element.setStyle({zoom: 1});
- var options = Object.extend({
- from: this.element.getOpacity() || 0.0,
- to: 1.0
- }, arguments[1] || {});
- this.start(options);
- },
- update: function(position) {
- this.element.setOpacity(position);
- }
-});
-
-Effect.Move = Class.create();
-Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
- initialize: function(element) {
- this.element = $(element);
- var options = Object.extend({
- x: 0,
- y: 0,
- mode: 'relative'
- }, arguments[1] || {});
- this.start(options);
- },
- setup: function() {
- // Bug in Opera: Opera returns the "real" position of a static element or
- // relative element that does not have top/left explicitly set.
- // ==> Always set top and left for position relative elements in your stylesheets
- // (to 0 if you do not need them)
- this.element.makePositioned();
- this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
- this.originalTop = parseFloat(this.element.getStyle('top') || '0');
- if(this.options.mode == 'absolute') {
- // absolute movement, so we need to calc deltaX and deltaY
- this.options.x = this.options.x - this.originalLeft;
- this.options.y = this.options.y - this.originalTop;
- }
- },
- update: function(position) {
- this.element.setStyle({
- left: this.options.x * position + this.originalLeft + 'px',
- top: this.options.y * position + this.originalTop + 'px'
- });
- }
-});
-
-// for backwards compatibility
-Effect.MoveBy = function(element, toTop, toLeft) {
- return new Effect.Move(element,
- Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
-};
-
-Effect.Scale = Class.create();
-Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
- initialize: function(element, percent) {
- this.element = $(element)
- var options = Object.extend({
- scaleX: true,
- scaleY: true,
- scaleContent: true,
- scaleFromCenter: false,
- scaleMode: 'box', // 'box' or 'contents' or {} with provided values
- scaleFrom: 100.0,
- scaleTo: percent
- }, arguments[2] || {});
- this.start(options);
- },
- setup: function() {
- this.restoreAfterFinish = this.options.restoreAfterFinish || false;
- this.elementPositioning = this.element.getStyle('position');
-
- this.originalStyle = {};
- ['top','left','width','height','fontSize'].each( function(k) {
- this.originalStyle[k] = this.element.style[k];
- }.bind(this));
-
- this.originalTop = this.element.offsetTop;
- this.originalLeft = this.element.offsetLeft;
-
- var fontSize = this.element.getStyle('font-size') || '100%';
- ['em','px','%'].each( function(fontSizeType) {
- if(fontSize.indexOf(fontSizeType)>0) {
- this.fontSize = parseFloat(fontSize);
- this.fontSizeType = fontSizeType;
- }
- }.bind(this));
-
- this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
-
- this.dims = null;
- if(this.options.scaleMode=='box')
- this.dims = [this.element.offsetHeight, this.element.offsetWidth];
- if(/^content/.test(this.options.scaleMode))
- this.dims = [this.element.scrollHeight, this.element.scrollWidth];
- if(!this.dims)
- this.dims = [this.options.scaleMode.originalHeight,
- this.options.scaleMode.originalWidth];
- },
- update: function(position) {
- var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
- if(this.options.scaleContent && this.fontSize)
- this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
- this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
- },
- finish: function(position) {
- if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
- },
- setDimensions: function(height, width) {
- var d = {};
- if(this.options.scaleX) d.width = width + 'px';
- if(this.options.scaleY) d.height = height + 'px';
- if(this.options.scaleFromCenter) {
- var topd = (height - this.dims[0])/2;
- var leftd = (width - this.dims[1])/2;
- if(this.elementPositioning == 'absolute') {
- if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
- if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
- } else {
- if(this.options.scaleY) d.top = -topd + 'px';
- if(this.options.scaleX) d.left = -leftd + 'px';
- }
- }
- this.element.setStyle(d);
- }
-});
-
-Effect.Highlight = Class.create();
-Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
- initialize: function(element) {
- this.element = $(element);
- var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
- this.start(options);
- },
- setup: function() {
- // Prevent executing on elements not in the layout flow
- if(this.element.getStyle('display')=='none') { this.cancel(); return; }
- // Disable background image during the effect
- this.oldStyle = {
- backgroundImage: this.element.getStyle('background-image') };
- this.element.setStyle({backgroundImage: 'none'});
- if(!this.options.endcolor)
- this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
- if(!this.options.restorecolor)
- this.options.restorecolor = this.element.getStyle('background-color');
- // init color calculations
- this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
- this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
- },
- update: function(position) {
- this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
- return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
- },
- finish: function() {
- this.element.setStyle(Object.extend(this.oldStyle, {
- backgroundColor: this.options.restorecolor
- }));
- }
-});
-
-Effect.ScrollTo = Class.create();
-Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
- initialize: function(element) {
- this.element = $(element);
- this.start(arguments[1] || {});
- },
- setup: function() {
- Position.prepare();
- var offsets = Position.cumulativeOffset(this.element);
- if(this.options.offset) offsets[1] += this.options.offset;
- var max = window.innerHeight ?
- window.height - window.innerHeight :
- document.body.scrollHeight -
- (document.documentElement.clientHeight ?
- document.documentElement.clientHeight : document.body.clientHeight);
- this.scrollStart = Position.deltaY;
- this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
- },
- update: function(position) {
- Position.prepare();
- window.scrollTo(Position.deltaX,
- this.scrollStart + (position*this.delta));
- }
-});
-
-/* ------------- combination effects ------------- */
-
-Effect.Fade = function(element) {
- element = $(element);
- var oldOpacity = element.getInlineOpacity();
- var options = Object.extend({
- from: element.getOpacity() || 1.0,
- to: 0.0,
- afterFinishInternal: function(effect) {
- if(effect.options.to!=0) return;
- effect.element.hide();
- effect.element.setStyle({opacity: oldOpacity});
- }}, arguments[1] || {});
- return new Effect.Opacity(element,options);
-}
-
-Effect.Appear = function(element) {
- element = $(element);
- var options = Object.extend({
- from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
- to: 1.0,
- // force Safari to render floated elements properly
- afterFinishInternal: function(effect) {
- effect.element.forceRerendering();
- },
- beforeSetup: function(effect) {
- effect.element.setOpacity(effect.options.from);
- effect.element.show();
- }}, arguments[1] || {});
- return new Effect.Opacity(element,options);
-}
-
-Effect.Puff = function(element) {
- element = $(element);
- var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position') };
- return new Effect.Parallel(
- [ new Effect.Scale(element, 200,
- { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
- new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
- Object.extend({ duration: 1.0,
- beforeSetupInternal: function(effect) {
- effect.effects[0].element.setStyle({position: 'absolute'}); },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.hide();
- effect.effects[0].element.setStyle(oldStyle); }
- }, arguments[1] || {})
- );
-}
-
-Effect.BlindUp = function(element) {
- element = $(element);
- element.makeClipping();
- return new Effect.Scale(element, 0,
- Object.extend({ scaleContent: false,
- scaleX: false,
- restoreAfterFinish: true,
- afterFinishInternal: function(effect) {
- effect.element.hide();
- effect.element.undoClipping();
- }
- }, arguments[1] || {})
- );
-}
-
-Effect.BlindDown = function(element) {
- element = $(element);
- var elementDimensions = element.getDimensions();
- return new Effect.Scale(element, 100,
- Object.extend({ scaleContent: false,
- scaleX: false,
- scaleFrom: 0,
- scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
- restoreAfterFinish: true,
- afterSetup: function(effect) {
- effect.element.makeClipping();
- effect.element.setStyle({height: '0px'});
- effect.element.show();
- },
- afterFinishInternal: function(effect) {
- effect.element.undoClipping();
- }
- }, arguments[1] || {})
- );
-}
-
-Effect.SwitchOff = function(element) {
- element = $(element);
- var oldOpacity = element.getInlineOpacity();
- return new Effect.Appear(element, {
- duration: 0.4,
- from: 0,
- transition: Effect.Transitions.flicker,
- afterFinishInternal: function(effect) {
- new Effect.Scale(effect.element, 1, {
- duration: 0.3, scaleFromCenter: true,
- scaleX: false, scaleContent: false, restoreAfterFinish: true,
- beforeSetup: function(effect) {
- effect.element.makePositioned();
- effect.element.makeClipping();
- },
- afterFinishInternal: function(effect) {
- effect.element.hide();
- effect.element.undoClipping();
- effect.element.undoPositioned();
- effect.element.setStyle({opacity: oldOpacity});
- }
- })
- }
- });
-}
-
-Effect.DropOut = function(element) {
- element = $(element);
- var oldStyle = {
- top: element.getStyle('top'),
- left: element.getStyle('left'),
- opacity: element.getInlineOpacity() };
- return new Effect.Parallel(
- [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
- new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
- Object.extend(
- { duration: 0.5,
- beforeSetup: function(effect) {
- effect.effects[0].element.makePositioned();
- },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.hide();
- effect.effects[0].element.undoPositioned();
- effect.effects[0].element.setStyle(oldStyle);
- }
- }, arguments[1] || {}));
-}
-
-Effect.Shake = function(element) {
- element = $(element);
- var oldStyle = {
- top: element.getStyle('top'),
- left: element.getStyle('left') };
- return new Effect.Move(element,
- { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
- effect.element.undoPositioned();
- effect.element.setStyle(oldStyle);
- }}) }}) }}) }}) }}) }});
-}
-
-Effect.SlideDown = function(element) {
- element = $(element);
- element.cleanWhitespace();
- // SlideDown need to have the content of the element wrapped in a container element with fixed height!
- var oldInnerBottom = $(element.firstChild).getStyle('bottom');
- var elementDimensions = element.getDimensions();
- return new Effect.Scale(element, 100, Object.extend({
- scaleContent: false,
- scaleX: false,
- scaleFrom: window.opera ? 0 : 1,
- scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
- restoreAfterFinish: true,
- afterSetup: function(effect) {
- effect.element.makePositioned();
- effect.element.firstChild.makePositioned();
- if(window.opera) effect.element.setStyle({top: ''});
- effect.element.makeClipping();
- effect.element.setStyle({height: '0px'});
- effect.element.show(); },
- afterUpdateInternal: function(effect) {
- effect.element.firstChild.setStyle({bottom:
- (effect.dims[0] - effect.element.clientHeight) + 'px' });
- },
- afterFinishInternal: function(effect) {
- effect.element.undoClipping();
- // IE will crash if child is undoPositioned first
- if(/MSIE/.test(navigator.userAgent)){
- effect.element.undoPositioned();
- effect.element.firstChild.undoPositioned();
- }else{
- effect.element.firstChild.undoPositioned();
- effect.element.undoPositioned();
- }
- effect.element.firstChild.setStyle({bottom: oldInnerBottom}); }
- }, arguments[1] || {})
- );
-}
-
-Effect.SlideUp = function(element) {
- element = $(element);
- element.cleanWhitespace();
- var oldInnerBottom = $(element.firstChild).getStyle('bottom');
- return new Effect.Scale(element, window.opera ? 0 : 1,
- Object.extend({ scaleContent: false,
- scaleX: false,
- scaleMode: 'box',
- scaleFrom: 100,
- restoreAfterFinish: true,
- beforeStartInternal: function(effect) {
- effect.element.makePositioned();
- effect.element.firstChild.makePositioned();
- if(window.opera) effect.element.setStyle({top: ''});
- effect.element.makeClipping();
- effect.element.show(); },
- afterUpdateInternal: function(effect) {
- effect.element.firstChild.setStyle({bottom:
- (effect.dims[0] - effect.element.clientHeight) + 'px' }); },
- afterFinishInternal: function(effect) {
- effect.element.hide();
- effect.element.undoClipping();
- effect.element.firstChild.undoPositioned();
- effect.element.undoPositioned();
- effect.element.setStyle({bottom: oldInnerBottom}); }
- }, arguments[1] || {})
- );
-}
-
-// Bug in opera makes the TD containing this element expand for a instance after finish
-Effect.Squish = function(element) {
- return new Effect.Scale(element, window.opera ? 1 : 0,
- { restoreAfterFinish: true,
- beforeSetup: function(effect) {
- effect.element.makeClipping(effect.element); },
- afterFinishInternal: function(effect) {
- effect.element.hide(effect.element);
- effect.element.undoClipping(effect.element); }
- });
-}
-
-Effect.Grow = function(element) {
- element = $(element);
- var options = Object.extend({
- direction: 'center',
- moveTransition: Effect.Transitions.sinoidal,
- scaleTransition: Effect.Transitions.sinoidal,
- opacityTransition: Effect.Transitions.full
- }, arguments[1] || {});
- var oldStyle = {
- top: element.style.top,
- left: element.style.left,
- height: element.style.height,
- width: element.style.width,
- opacity: element.getInlineOpacity() };
-
- var dims = element.getDimensions();
- var initialMoveX, initialMoveY;
- var moveX, moveY;
-
- switch (options.direction) {
- case 'top-left':
- initialMoveX = initialMoveY = moveX = moveY = 0;
- break;
- case 'top-right':
- initialMoveX = dims.width;
- initialMoveY = moveY = 0;
- moveX = -dims.width;
- break;
- case 'bottom-left':
- initialMoveX = moveX = 0;
- initialMoveY = dims.height;
- moveY = -dims.height;
- break;
- case 'bottom-right':
- initialMoveX = dims.width;
- initialMoveY = dims.height;
- moveX = -dims.width;
- moveY = -dims.height;
- break;
- case 'center':
- initialMoveX = dims.width / 2;
- initialMoveY = dims.height / 2;
- moveX = -dims.width / 2;
- moveY = -dims.height / 2;
- break;
- }
-
- return new Effect.Move(element, {
- x: initialMoveX,
- y: initialMoveY,
- duration: 0.01,
- beforeSetup: function(effect) {
- effect.element.hide();
- effect.element.makeClipping();
- effect.element.makePositioned();
- },
- afterFinishInternal: function(effect) {
- new Effect.Parallel(
- [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
- new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
- new Effect.Scale(effect.element, 100, {
- scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
- sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
- ], Object.extend({
- beforeSetup: function(effect) {
- effect.effects[0].element.setStyle({height: '0px'});
- effect.effects[0].element.show();
- },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.undoClipping();
- effect.effects[0].element.undoPositioned();
- effect.effects[0].element.setStyle(oldStyle);
- }
- }, options)
- )
- }
- });
-}
-
-Effect.Shrink = function(element) {
- element = $(element);
- var options = Object.extend({
- direction: 'center',
- moveTransition: Effect.Transitions.sinoidal,
- scaleTransition: Effect.Transitions.sinoidal,
- opacityTransition: Effect.Transitions.none
- }, arguments[1] || {});
- var oldStyle = {
- top: element.style.top,
- left: element.style.left,
- height: element.style.height,
- width: element.style.width,
- opacity: element.getInlineOpacity() };
-
- var dims = element.getDimensions();
- var moveX, moveY;
-
- switch (options.direction) {
- case 'top-left':
- moveX = moveY = 0;
- break;
- case 'top-right':
- moveX = dims.width;
- moveY = 0;
- break;
- case 'bottom-left':
- moveX = 0;
- moveY = dims.height;
- break;
- case 'bottom-right':
- moveX = dims.width;
- moveY = dims.height;
- break;
- case 'center':
- moveX = dims.width / 2;
- moveY = dims.height / 2;
- break;
- }
-
- return new Effect.Parallel(
- [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
- new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
- new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
- ], Object.extend({
- beforeStartInternal: function(effect) {
- effect.effects[0].element.makePositioned();
- effect.effects[0].element.makeClipping(); },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.hide();
- effect.effects[0].element.undoClipping();
- effect.effects[0].element.undoPositioned();
- effect.effects[0].element.setStyle(oldStyle); }
- }, options)
- );
-}
-
-Effect.Pulsate = function(element) {
- element = $(element);
- var options = arguments[1] || {};
- var oldOpacity = element.getInlineOpacity();
- var transition = options.transition || Effect.Transitions.sinoidal;
- var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) };
- reverser.bind(transition);
- return new Effect.Opacity(element,
- Object.extend(Object.extend({ duration: 3.0, from: 0,
- afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
- }, options), {transition: reverser}));
-}
-
-Effect.Fold = function(element) {
- element = $(element);
- var oldStyle = {
- top: element.style.top,
- left: element.style.left,
- width: element.style.width,
- height: element.style.height };
- Element.makeClipping(element);
- return new Effect.Scale(element, 5, Object.extend({
- scaleContent: false,
- scaleX: false,
- afterFinishInternal: function(effect) {
- new Effect.Scale(element, 1, {
- scaleContent: false,
- scaleY: false,
- afterFinishInternal: function(effect) {
- effect.element.hide();
- effect.element.undoClipping();
- effect.element.setStyle(oldStyle);
- } });
- }}, arguments[1] || {}));
-};
-
-['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom',
- 'collectTextNodes','collectTextNodesIgnoreClass','childrenWithClassName'].each(
- function(f) { Element.Methods[f] = Element[f]; }
-);
-
-Element.Methods.visualEffect = function(element, effect, options) {
- s = effect.gsub(/_/, '-').camelize();
- effect_class = s.charAt(0).toUpperCase() + s.substring(1);
- new Effect[effect_class](element, options);
- return $(element);
-};
-
-Element.addMethods(); \ No newline at end of file
diff --git a/library/cropper/lib/prototype.js b/library/cropper/lib/prototype.js
deleted file mode 100644
index 0caf9cd7f..000000000
--- a/library/cropper/lib/prototype.js
+++ /dev/null
@@ -1,2006 +0,0 @@
-/* Prototype JavaScript framework, version 1.5.0_rc0
- * (c) 2005 Sam Stephenson <sam@conio.net>
- *
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://prototype.conio.net/
- *
-/*--------------------------------------------------------------------------*/
-
-var Prototype = {
- Version: '1.5.0_rc0',
- ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
-
- emptyFunction: function() {},
- K: function(x) {return x}
-}
-
-var Class = {
- create: function() {
- return function() {
- this.initialize.apply(this, arguments);
- }
- }
-}
-
-var Abstract = new Object();
-
-Object.extend = function(destination, source) {
- for (var property in source) {
- destination[property] = source[property];
- }
- return destination;
-}
-
-Object.inspect = function(object) {
- try {
- if (object == undefined) return 'undefined';
- if (object == null) return 'null';
- return object.inspect ? object.inspect() : object.toString();
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
-}
-
-Function.prototype.bind = function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
-}
-
-Function.prototype.bindAsEventListener = function(object) {
- var __method = this;
- return function(event) {
- return __method.call(object, event || window.event);
- }
-}
-
-Object.extend(Number.prototype, {
- toColorPart: function() {
- var digits = this.toString(16);
- if (this < 16) return '0' + digits;
- return digits;
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator) {
- $R(0, this, true).each(iterator);
- return this;
- }
-});
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0; i < arguments.length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) {}
- }
-
- return returnValue;
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create();
-PeriodicalExecuter.prototype = {
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.callback();
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-}
-Object.extend(String.prototype, {
- gsub: function(pattern, replacement) {
- var result = '', source = this, match;
- replacement = arguments.callee.prepareReplacement(replacement);
-
- while (source.length > 0) {
- if (match = source.match(pattern)) {
- result += source.slice(0, match.index);
- result += (replacement(match) || '').toString();
- source = source.slice(match.index + match[0].length);
- } else {
- result += source, source = '';
- }
- }
- return result;
- },
-
- sub: function(pattern, replacement, count) {
- replacement = this.gsub.prepareReplacement(replacement);
- count = count === undefined ? 1 : count;
-
- return this.gsub(pattern, function(match) {
- if (--count < 0) return match[0];
- return replacement(match);
- });
- },
-
- scan: function(pattern, iterator) {
- this.gsub(pattern, iterator);
- return this;
- },
-
- truncate: function(length, truncation) {
- length = length || 30;
- truncation = truncation === undefined ? '...' : truncation;
- return this.length > length ?
- this.slice(0, length - truncation.length) + truncation : this;
- },
-
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(function(script) { return eval(script) });
- },
-
- escapeHTML: function() {
- var div = document.createElement('div');
- var text = document.createTextNode(this);
- div.appendChild(text);
- return div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = document.createElement('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
- },
-
- toQueryParams: function() {
- var pairs = this.match(/^\??(.*)$/)[1].split('&');
- return pairs.inject({}, function(params, pairString) {
- var pair = pairString.split('=');
- params[pair[0]] = pair[1];
- return params;
- });
- },
-
- toArray: function() {
- return this.split('');
- },
-
- camelize: function() {
- var oStringList = this.split('-');
- if (oStringList.length == 1) return oStringList[0];
-
- var camelizedString = this.indexOf('-') == 0
- ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
- : oStringList[0];
-
- for (var i = 1, len = oStringList.length; i < len; i++) {
- var s = oStringList[i];
- camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
- }
-
- return camelizedString;
- },
-
- inspect: function() {
- return "'" + this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + "'";
- }
-});
-
-String.prototype.gsub.prepareReplacement = function(replacement) {
- if (typeof replacement == 'function') return replacement;
- var template = new Template(replacement);
- return function(match) { return template.evaluate(match) };
-}
-
-String.prototype.parseQuery = String.prototype.toQueryParams;
-
-var Template = Class.create();
-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
-Template.prototype = {
- initialize: function(template, pattern) {
- this.template = template.toString();
- this.pattern = pattern || Template.Pattern;
- },
-
- evaluate: function(object) {
- return this.template.gsub(this.pattern, function(match) {
- var before = match[1];
- if (before == '\\') return match[2];
- return before + (object[match[3]] || '').toString();
- });
- }
-}
-
-var $break = new Object();
-var $continue = new Object();
-
-var Enumerable = {
- each: function(iterator) {
- var index = 0;
- try {
- this._each(function(value) {
- try {
- iterator(value, index++);
- } catch (e) {
- if (e != $continue) throw e;
- }
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- },
-
- all: function(iterator) {
- var result = true;
- this.each(function(value, index) {
- result = result && !!(iterator || Prototype.K)(value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator) {
- var result = true;
- this.each(function(value, index) {
- if (result = !!(iterator || Prototype.K)(value, index))
- throw $break;
- });
- return result;
- },
-
- collect: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- results.push(iterator(value, index));
- });
- return results;
- },
-
- detect: function (iterator) {
- var result;
- this.each(function(value, index) {
- if (iterator(value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
-
- findAll: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- if (iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- grep: function(pattern, iterator) {
- var results = [];
- this.each(function(value, index) {
- var stringValue = value.toString();
- if (stringValue.match(pattern))
- results.push((iterator || Prototype.K)(value, index));
- })
- return results;
- },
-
- include: function(object) {
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inject: function(memo, iterator) {
- this.each(function(value, index) {
- memo = iterator(memo, value, index);
- });
- return memo;
- },
-
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.collect(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator) {
- var result;
- this.each(function(value, index) {
- value = (iterator || Prototype.K)(value, index);
- if (result == undefined || value >= result)
- result = value;
- });
- return result;
- },
-
- min: function(iterator) {
- var result;
- this.each(function(value, index) {
- value = (iterator || Prototype.K)(value, index);
- if (result == undefined || value < result)
- result = value;
- });
- return result;
- },
-
- partition: function(iterator) {
- var trues = [], falses = [];
- this.each(function(value, index) {
- ((iterator || Prototype.K)(value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
-
- pluck: function(property) {
- var results = [];
- this.each(function(value, index) {
- results.push(value[property]);
- });
- return results;
- },
-
- reject: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- if (!iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator) {
- return this.collect(function(value, index) {
- return {value: value, criteria: iterator(value, index)};
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.collect(Prototype.K);
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (typeof args.last() == 'function')
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- return iterator(collections.pluck(index));
- });
- },
-
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
-}
-
-Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray
-});
-var $A = Array.from = function(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) {
- return iterable.toArray();
- } else {
- var results = [];
- for (var i = 0; i < iterable.length; i++)
- results.push(iterable[i]);
- return results;
- }
-}
-
-Object.extend(Array.prototype, Enumerable);
-
-if (!Array.prototype._reverse)
- Array.prototype._reverse = Array.prototype.reverse;
-
-Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0; i < this.length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != undefined || value != null;
- });
- },
-
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(value && value.constructor == Array ?
- value.flatten() : [value]);
- });
- },
-
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
-
- indexOf: function(object) {
- for (var i = 0; i < this.length; i++)
- if (this[i] == object) return i;
- return -1;
- },
-
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
-
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- }
-});
-var Hash = {
- _each: function(iterator) {
- for (var key in this) {
- var value = this[key];
- if (typeof value == 'function') continue;
-
- var pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- },
-
- keys: function() {
- return this.pluck('key');
- },
-
- values: function() {
- return this.pluck('value');
- },
-
- merge: function(hash) {
- return $H(hash).inject($H(this), function(mergedHash, pair) {
- mergedHash[pair.key] = pair.value;
- return mergedHash;
- });
- },
-
- toQueryString: function() {
- return this.map(function(pair) {
- return pair.map(encodeURIComponent).join('=');
- }).join('&');
- },
-
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- }
-}
-
-function $H(object) {
- var hash = Object.extend({}, object || {});
- Object.extend(hash, Enumerable);
- Object.extend(hash, Hash);
- return hash;
-}
-ObjectRange = Class.create();
-Object.extend(ObjectRange.prototype, Enumerable);
-Object.extend(ObjectRange.prototype, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- do {
- iterator(value);
- value = value.succ();
- } while (this.include(value));
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
-});
-
-var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
-}
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new XMLHttpRequest()},
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
- ) || false;
- },
-
- activeRequestCount: 0
-}
-
-Ajax.Responders = {
- responders: [],
-
- _each: function(iterator) {
- this.responders._each(iterator);
- },
-
- register: function(responderToAdd) {
- if (!this.include(responderToAdd))
- this.responders.push(responderToAdd);
- },
-
- unregister: function(responderToRemove) {
- this.responders = this.responders.without(responderToRemove);
- },
-
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (responder[callback] && typeof responder[callback] == 'function') {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) {}
- }
- });
- }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
- onCreate: function() {
- Ajax.activeRequestCount++;
- },
-
- onComplete: function() {
- Ajax.activeRequestCount--;
- }
-});
-
-Ajax.Base = function() {};
-Ajax.Base.prototype = {
- setOptions: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- parameters: ''
- }
- Object.extend(this.options, options || {});
- },
-
- responseIsSuccess: function() {
- return this.transport.status == undefined
- || this.transport.status == 0
- || (this.transport.status >= 200 && this.transport.status < 300);
- },
-
- responseIsFailure: function() {
- return !this.responseIsSuccess();
- }
-}
-
-Ajax.Request = Class.create();
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
- initialize: function(url, options) {
- this.transport = Ajax.getTransport();
- this.setOptions(options);
- this.request(url);
- },
-
- request: function(url) {
- var parameters = this.options.parameters || '';
- if (parameters.length > 0) parameters += '&_=';
-
- try {
- this.url = url;
- if (this.options.method == 'get' && parameters.length > 0)
- this.url += (this.url.match(/\?/) ? '&' : '?') + parameters;
-
- Ajax.Responders.dispatch('onCreate', this, this.transport);
-
- this.transport.open(this.options.method, this.url,
- this.options.asynchronous);
-
- if (this.options.asynchronous) {
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
- }
-
- this.setRequestHeaders();
-
- var body = this.options.postBody ? this.options.postBody : parameters;
- this.transport.send(this.options.method == 'post' ? body : null);
-
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- setRequestHeaders: function() {
- var requestHeaders =
- ['X-Requested-With', 'XMLHttpRequest',
- 'X-Prototype-Version', Prototype.Version,
- 'Accept', 'text/javascript, text/html, application/xml, text/xml, */*'];
-
- if (this.options.method == 'post') {
- requestHeaders.push('Content-type', this.options.contentType);
-
- /* Force "Connection: close" for Mozilla browsers to work around
- * a bug where XMLHttpReqeuest sends an incorrect Content-length
- * header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType)
- requestHeaders.push('Connection', 'close');
- }
-
- if (this.options.requestHeaders)
- requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
-
- for (var i = 0; i < requestHeaders.length; i += 2)
- this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState != 1)
- this.respondToReadyState(this.transport.readyState);
- },
-
- header: function(name) {
- try {
- return this.transport.getResponseHeader(name);
- } catch (e) {}
- },
-
- evalJSON: function() {
- try {
- return eval('(' + this.header('X-JSON') + ')');
- } catch (e) {}
- },
-
- evalResponse: function() {
- try {
- return eval(this.transport.responseText);
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- respondToReadyState: function(readyState) {
- var event = Ajax.Request.Events[readyState];
- var transport = this.transport, json = this.evalJSON();
-
- if (event == 'Complete') {
- try {
- (this.options['on' + this.transport.status]
- || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(transport, json);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if ((this.header('Content-type') || '').match(/^text\/javascript/i))
- this.evalResponse();
- }
-
- try {
- (this.options['on' + event] || Prototype.emptyFunction)(transport, json);
- Ajax.Responders.dispatch('on' + event, this, transport, json);
- } catch (e) {
- this.dispatchException(e);
- }
-
- /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
- if (event == 'Complete')
- this.transport.onreadystatechange = Prototype.emptyFunction;
- },
-
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
-});
-
-Ajax.Updater = Class.create();
-
-Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
- initialize: function(container, url, options) {
- this.containers = {
- success: container.success ? $(container.success) : $(container),
- failure: container.failure ? $(container.failure) :
- (container.success ? null : $(container))
- }
-
- this.transport = Ajax.getTransport();
- this.setOptions(options);
-
- var onComplete = this.options.onComplete || Prototype.emptyFunction;
- this.options.onComplete = (function(transport, object) {
- this.updateContent();
- onComplete(transport, object);
- }).bind(this);
-
- this.request(url);
- },
-
- updateContent: function() {
- var receiver = this.responseIsSuccess() ?
- this.containers.success : this.containers.failure;
- var response = this.transport.responseText;
-
- if (!this.options.evalScripts)
- response = response.stripScripts();
-
- if (receiver) {
- if (this.options.insertion) {
- new this.options.insertion(receiver, response);
- } else {
- Element.update(receiver, response);
- }
- }
-
- if (this.responseIsSuccess()) {
- if (this.onComplete)
- setTimeout(this.onComplete.bind(this), 10);
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create();
-Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
- initialize: function(container, url, options) {
- this.setOptions(options);
- this.onComplete = this.options.onComplete;
-
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
-
- this.updater = {};
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(request) {
- if (this.options.decay) {
- this.decay = (request.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = request.responseText;
- }
- this.timer = setTimeout(this.onTimerEvent.bind(this),
- this.decay * this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-function $() {
- var results = [], element;
- for (var i = 0; i < arguments.length; i++) {
- element = arguments[i];
- if (typeof element == 'string')
- element = document.getElementById(element);
- results.push(Element.extend(element));
- }
- return results.length < 2 ? results[0] : results;
-}
-
-document.getElementsByClassName = function(className, parentElement) {
- var children = ($(parentElement) || document.body).getElementsByTagName('*');
- return $A(children).inject([], function(elements, child) {
- if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
- elements.push(Element.extend(child));
- return elements;
- });
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Element)
- var Element = new Object();
-
-Element.extend = function(element) {
- if (!element) return;
- if (_nativeExtensions) return element;
-
- if (!element._extended && element.tagName && element != window) {
- var methods = Element.Methods, cache = Element.extend.cache;
- for (property in methods) {
- var value = methods[property];
- if (typeof value == 'function')
- element[property] = cache.findOrStore(value);
- }
- }
-
- element._extended = true;
- return element;
-}
-
-Element.extend.cache = {
- findOrStore: function(value) {
- return this[value] = this[value] || function() {
- return value.apply(null, [this].concat($A(arguments)));
- }
- }
-}
-
-Element.Methods = {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- }
- },
-
- hide: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display = 'none';
- }
- },
-
- show: function() {
- for (var i = 0; i < arguments.length; i++) {
- var element = $(arguments[i]);
- element.style.display = '';
- }
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- },
-
- update: function(element, html) {
- $(element).innerHTML = html.stripScripts();
- setTimeout(function() {html.evalScripts()}, 10);
- },
-
- replace: function(element, html) {
- element = $(element);
- if (element.outerHTML) {
- element.outerHTML = html.stripScripts();
- } else {
- var range = element.ownerDocument.createRange();
- range.selectNodeContents(element);
- element.parentNode.replaceChild(
- range.createContextualFragment(html.stripScripts()), element);
- }
- setTimeout(function() {html.evalScripts()}, 10);
- },
-
- getHeight: function(element) {
- element = $(element);
- return element.offsetHeight;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- return Element.classNames(element).include(className);
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- return Element.classNames(element).add(className);
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- return Element.classNames(element).remove(className);
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- for (var i = 0; i < element.childNodes.length; i++) {
- var node = element.childNodes[i];
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- Element.remove(node);
- }
- },
-
- empty: function(element) {
- return $(element).innerHTML.match(/^\s*$/);
- },
-
- childOf: function(element, ancestor) {
- element = $(element), ancestor = $(ancestor);
- while (element = element.parentNode)
- if (element == ancestor) return true;
- return false;
- },
-
- scrollTo: function(element) {
- element = $(element);
- var x = element.x ? element.x : element.offsetLeft,
- y = element.y ? element.y : element.offsetTop;
- window.scrollTo(x, y);
- },
-
- getStyle: function(element, style) {
- element = $(element);
- var value = element.style[style.camelize()];
- if (!value) {
- if (document.defaultView && document.defaultView.getComputedStyle) {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css.getPropertyValue(style) : null;
- } else if (element.currentStyle) {
- value = element.currentStyle[style.camelize()];
- }
- }
-
- if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
- if (Element.getStyle(element, 'position') == 'static') value = 'auto';
-
- return value == 'auto' ? null : value;
- },
-
- setStyle: function(element, style) {
- element = $(element);
- for (var name in style)
- element.style[name.camelize()] = style[name];
- },
-
- getDimensions: function(element) {
- element = $(element);
- if (Element.getStyle(element, 'display') != 'none')
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = '';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = 'none';
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (window.opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return;
- element._overflow = element.style.overflow;
- if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
- element.style.overflow = 'hidden';
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (element._overflow) return;
- element.style.overflow = element._overflow;
- element._overflow = undefined;
- }
-}
-
-Object.extend(Element, Element.Methods);
-
-var _nativeExtensions = false;
-
-if(!HTMLElement && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
- var HTMLElement = {}
- HTMLElement.prototype = document.createElement('div').__proto__;
-}
-
-Element.addMethods = function(methods) {
- Object.extend(Element.Methods, methods || {});
-
- if(typeof HTMLElement != 'undefined') {
- var methods = Element.Methods, cache = Element.extend.cache;
- for (property in methods) {
- var value = methods[property];
- if (typeof value == 'function')
- HTMLElement.prototype[property] = cache.findOrStore(value);
- }
- _nativeExtensions = true;
- }
-}
-
-Element.addMethods();
-
-var Toggle = new Object();
-Toggle.display = Element.toggle;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.Insertion = function(adjacency) {
- this.adjacency = adjacency;
-}
-
-Abstract.Insertion.prototype = {
- initialize: function(element, content) {
- this.element = $(element);
- this.content = content.stripScripts();
-
- if (this.adjacency && this.element.insertAdjacentHTML) {
- try {
- this.element.insertAdjacentHTML(this.adjacency, this.content);
- } catch (e) {
- var tagName = this.element.tagName.toLowerCase();
- if (tagName == 'tbody' || tagName == 'tr') {
- this.insertContent(this.contentFromAnonymousTable());
- } else {
- throw e;
- }
- }
- } else {
- this.range = this.element.ownerDocument.createRange();
- if (this.initializeRange) this.initializeRange();
- this.insertContent([this.range.createContextualFragment(this.content)]);
- }
-
- setTimeout(function() {content.evalScripts()}, 10);
- },
-
- contentFromAnonymousTable: function() {
- var div = document.createElement('div');
- div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
- return $A(div.childNodes[0].childNodes[0].childNodes);
- }
-}
-
-var Insertion = new Object();
-
-Insertion.Before = Class.create();
-Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
- initializeRange: function() {
- this.range.setStartBefore(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.parentNode.insertBefore(fragment, this.element);
- }).bind(this));
- }
-});
-
-Insertion.Top = Class.create();
-Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(true);
- },
-
- insertContent: function(fragments) {
- fragments.reverse(false).each((function(fragment) {
- this.element.insertBefore(fragment, this.element.firstChild);
- }).bind(this));
- }
-});
-
-Insertion.Bottom = Class.create();
-Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.appendChild(fragment);
- }).bind(this));
- }
-});
-
-Insertion.After = Class.create();
-Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
- initializeRange: function() {
- this.range.setStartAfter(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.parentNode.insertBefore(fragment,
- this.element.nextSibling);
- }).bind(this));
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Element.ClassNames = Class.create();
-Element.ClassNames.prototype = {
- initialize: function(element) {
- this.element = $(element);
- },
-
- _each: function(iterator) {
- this.element.className.split(/\s+/).select(function(name) {
- return name.length > 0;
- })._each(iterator);
- },
-
- set: function(className) {
- this.element.className = className;
- },
-
- add: function(classNameToAdd) {
- if (this.include(classNameToAdd)) return;
- this.set(this.toArray().concat(classNameToAdd).join(' '));
- },
-
- remove: function(classNameToRemove) {
- if (!this.include(classNameToRemove)) return;
- this.set(this.select(function(className) {
- return className != classNameToRemove;
- }).join(' '));
- },
-
- toString: function() {
- return this.toArray().join(' ');
- }
-}
-
-Object.extend(Element.ClassNames.prototype, Enumerable);
-var Selector = Class.create();
-Selector.prototype = {
- initialize: function(expression) {
- this.params = {classNames: []};
- this.expression = expression.toString().strip();
- this.parseExpression();
- this.compileMatcher();
- },
-
- parseExpression: function() {
- function abort(message) { throw 'Parse error in selector: ' + message; }
-
- if (this.expression == '') abort('empty expression');
-
- var params = this.params, expr = this.expression, match, modifier, clause, rest;
- while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
- params.attributes = params.attributes || [];
- params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
- expr = match[1];
- }
-
- if (expr == '*') return this.params.wildcard = true;
-
- while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
- modifier = match[1], clause = match[2], rest = match[3];
- switch (modifier) {
- case '#': params.id = clause; break;
- case '.': params.classNames.push(clause); break;
- case '':
- case undefined: params.tagName = clause.toUpperCase(); break;
- default: abort(expr.inspect());
- }
- expr = rest;
- }
-
- if (expr.length > 0) abort(expr.inspect());
- },
-
- buildMatchExpression: function() {
- var params = this.params, conditions = [], clause;
-
- if (params.wildcard)
- conditions.push('true');
- if (clause = params.id)
- conditions.push('element.id == ' + clause.inspect());
- if (clause = params.tagName)
- conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
- if ((clause = params.classNames).length > 0)
- for (var i = 0; i < clause.length; i++)
- conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')');
- if (clause = params.attributes) {
- clause.each(function(attribute) {
- var value = 'element.getAttribute(' + attribute.name.inspect() + ')';
- var splitValueBy = function(delimiter) {
- return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
- }
-
- switch (attribute.operator) {
- case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break;
- case '~=': conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
- case '|=': conditions.push(
- splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
- ); break;
- case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break;
- case '':
- case undefined: conditions.push(value + ' != null'); break;
- default: throw 'Unknown operator ' + attribute.operator + ' in selector';
- }
- });
- }
-
- return conditions.join(' && ');
- },
-
- compileMatcher: function() {
- this.match = new Function('element', 'if (!element.tagName) return false; \
- return ' + this.buildMatchExpression());
- },
-
- findElements: function(scope) {
- var element;
-
- if (element = $(this.params.id))
- if (this.match(element))
- if (!scope || Element.childOf(element, scope))
- return [element];
-
- scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
-
- var results = [];
- for (var i = 0; i < scope.length; i++)
- if (this.match(element = scope[i]))
- results.push(Element.extend(element));
-
- return results;
- },
-
- toString: function() {
- return this.expression;
- }
-}
-
-function $$() {
- return $A(arguments).map(function(expression) {
- return expression.strip().split(/\s+/).inject([null], function(results, expr) {
- var selector = new Selector(expr);
- return results.map(selector.findElements.bind(selector)).flatten();
- });
- }).flatten();
-}
-var Field = {
- clear: function() {
- for (var i = 0; i < arguments.length; i++)
- $(arguments[i]).value = '';
- },
-
- focus: function(element) {
- $(element).focus();
- },
-
- present: function() {
- for (var i = 0; i < arguments.length; i++)
- if ($(arguments[i]).value == '') return false;
- return true;
- },
-
- select: function(element) {
- $(element).select();
- },
-
- activate: function(element) {
- element = $(element);
- element.focus();
- if (element.select)
- element.select();
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var Form = {
- serialize: function(form) {
- var elements = Form.getElements($(form));
- var queryComponents = new Array();
-
- for (var i = 0; i < elements.length; i++) {
- var queryComponent = Form.Element.serialize(elements[i]);
- if (queryComponent)
- queryComponents.push(queryComponent);
- }
-
- return queryComponents.join('&');
- },
-
- getElements: function(form) {
- form = $(form);
- var elements = new Array();
-
- for (var tagName in Form.Element.Serializers) {
- var tagElements = form.getElementsByTagName(tagName);
- for (var j = 0; j < tagElements.length; j++)
- elements.push(tagElements[j]);
- }
- return elements;
- },
-
- getInputs: function(form, typeName, name) {
- form = $(form);
- var inputs = form.getElementsByTagName('input');
-
- if (!typeName && !name)
- return inputs;
-
- var matchingInputs = new Array();
- for (var i = 0; i < inputs.length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) ||
- (name && input.name != name))
- continue;
- matchingInputs.push(input);
- }
-
- return matchingInputs;
- },
-
- disable: function(form) {
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.blur();
- element.disabled = 'true';
- }
- },
-
- enable: function(form) {
- var elements = Form.getElements(form);
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.disabled = '';
- }
- },
-
- findFirstElement: function(form) {
- return Form.getElements(form).find(function(element) {
- return element.type != 'hidden' && !element.disabled &&
- ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
- });
- },
-
- focusFirstElement: function(form) {
- Field.activate(Form.findFirstElement(form));
- },
-
- reset: function(form) {
- $(form).reset();
- }
-}
-
-Form.Element = {
- serialize: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- var parameter = Form.Element.Serializers[method](element);
-
- if (parameter) {
- var key = encodeURIComponent(parameter[0]);
- if (key.length == 0) return;
-
- if (parameter[1].constructor != Array)
- parameter[1] = [parameter[1]];
-
- return parameter[1].map(function(value) {
- return key + '=' + encodeURIComponent(value);
- }).join('&');
- }
- },
-
- getValue: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- var parameter = Form.Element.Serializers[method](element);
-
- if (parameter)
- return parameter[1];
- }
-}
-
-Form.Element.Serializers = {
- input: function(element) {
- switch (element.type.toLowerCase()) {
- case 'submit':
- case 'hidden':
- case 'password':
- case 'text':
- return Form.Element.Serializers.textarea(element);
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element);
- }
- return false;
- },
-
- inputSelector: function(element) {
- if (element.checked)
- return [element.name, element.value];
- },
-
- textarea: function(element) {
- return [element.name, element.value];
- },
-
- select: function(element) {
- return Form.Element.Serializers[element.type == 'select-one' ?
- 'selectOne' : 'selectMany'](element);
- },
-
- selectOne: function(element) {
- var value = '', opt, index = element.selectedIndex;
- if (index >= 0) {
- opt = element.options[index];
- value = opt.value || opt.text;
- }
- return [element.name, value];
- },
-
- selectMany: function(element) {
- var value = [];
- for (var i = 0; i < element.length; i++) {
- var opt = element.options[i];
- if (opt.selected)
- value.push(opt.value || opt.text);
- }
- return [element.name, value];
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var $F = Form.Element.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.TimedObserver = function() {}
-Abstract.TimedObserver.prototype = {
- initialize: function(element, frequency, callback) {
- this.frequency = frequency;
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
-}
-
-Form.Element.Observer = Class.create();
-Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.Observer = Class.create();
-Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = function() {}
-Abstract.EventObserver.prototype = {
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- var elements = Form.getElements(this.element);
- for (var i = 0; i < elements.length; i++)
- this.registerCallback(elements[i]);
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- Event.observe(element, 'click', this.onElementEvent.bind(this));
- break;
- case 'password':
- case 'text':
- case 'textarea':
- case 'select-one':
- case 'select-multiple':
- Event.observe(element, 'change', this.onElementEvent.bind(this));
- break;
- }
- }
- }
-}
-
-Form.Element.EventObserver = Class.create();
-Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.EventObserver = Class.create();
-Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-if (!window.Event) {
- var Event = new Object();
-}
-
-Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
-
- element: function(event) {
- return event.target || event.srcElement;
- },
-
- isLeftClick: function(event) {
- return (((event.which) && (event.which == 1)) ||
- ((event.button) && (event.button == 1)));
- },
-
- pointerX: function(event) {
- return event.pageX || (event.clientX +
- (document.documentElement.scrollLeft || document.body.scrollLeft));
- },
-
- pointerY: function(event) {
- return event.pageY || (event.clientY +
- (document.documentElement.scrollTop || document.body.scrollTop));
- },
-
- stop: function(event) {
- if (event.preventDefault) {
- event.preventDefault();
- event.stopPropagation();
- } else {
- event.returnValue = false;
- event.cancelBubble = true;
- }
- },
-
- // find the first node with the given tagName, starting from the
- // node the event was triggered on; traverses the DOM upwards
- findElement: function(event, tagName) {
- var element = Event.element(event);
- while (element.parentNode && (!element.tagName ||
- (element.tagName.toUpperCase() != tagName.toUpperCase())))
- element = element.parentNode;
- return element;
- },
-
- observers: false,
-
- _observeAndCache: function(element, name, observer, useCapture) {
- if (!this.observers) this.observers = [];
- if (element.addEventListener) {
- this.observers.push([element, name, observer, useCapture]);
- element.addEventListener(name, observer, useCapture);
- } else if (element.attachEvent) {
- this.observers.push([element, name, observer, useCapture]);
- element.attachEvent('on' + name, observer);
- }
- },
-
- unloadCache: function() {
- if (!Event.observers) return;
- for (var i = 0; i < Event.observers.length; i++) {
- Event.stopObserving.apply(this, Event.observers[i]);
- Event.observers[i][0] = null;
- }
- Event.observers = false;
- },
-
- observe: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
- || element.attachEvent))
- name = 'keydown';
-
- this._observeAndCache(element, name, observer, useCapture);
- },
-
- stopObserving: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
- || element.detachEvent))
- name = 'keydown';
-
- if (element.removeEventListener) {
- element.removeEventListener(name, observer, useCapture);
- } else if (element.detachEvent) {
- element.detachEvent('on' + name, observer);
- }
- }
-});
-
-/* prevent memory leaks in IE */
-if (navigator.appVersion.match(/\bMSIE\b/))
- Event.observe(window, 'unload', Event.unloadCache, false);
-var Position = {
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- realOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return [valueL, valueT];
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return [valueL, valueT];
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- p = Element.getStyle(element, 'position');
- if (p == 'relative' || p == 'absolute') break;
- }
- } while (element);
- return [valueL, valueT];
- },
-
- offsetParent: function(element) {
- if (element.offsetParent) return element.offsetParent;
- if (element == document.body) return element;
-
- while ((element = element.parentNode) && element != document.body)
- if (Element.getStyle(element, 'position') != 'static')
- return element;
-
- return document.body;
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = this.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = this.realOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = this.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- clone: function(source, target) {
- source = $(source);
- target = $(target);
- target.style.position = 'absolute';
- var offsets = this.cumulativeOffset(source);
- target.style.top = offsets[1] + 'px';
- target.style.left = offsets[0] + 'px';
- target.style.width = source.offsetWidth + 'px';
- target.style.height = source.offsetHeight + 'px';
- },
-
- page: function(forElement) {
- var valueT = 0, valueL = 0;
-
- var element = forElement;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
-
- // Safari fix
- if (element.offsetParent==document.body)
- if (Element.getStyle(element,'position')=='absolute') break;
-
- } while (element = element.offsetParent);
-
- element = forElement;
- do {
- valueT -= element.scrollTop || 0;
- valueL -= element.scrollLeft || 0;
- } while (element = element.parentNode);
-
- return [valueL, valueT];
- },
-
- clone: function(source, target) {
- var options = Object.extend({
- setLeft: true,
- setTop: true,
- setWidth: true,
- setHeight: true,
- offsetTop: 0,
- offsetLeft: 0
- }, arguments[2] || {})
-
- // find page position of source
- source = $(source);
- var p = Position.page(source);
-
- // find coordinate system to use
- target = $(target);
- var delta = [0, 0];
- var parent = null;
- // delta [0,0] will do fine with position: fixed elements,
- // position:absolute needs offsetParent deltas
- if (Element.getStyle(target,'position') == 'absolute') {
- parent = Position.offsetParent(target);
- delta = Position.page(parent);
- }
-
- // correct by body offsets (fixes Safari)
- if (parent == document.body) {
- delta[0] -= document.body.offsetLeft;
- delta[1] -= document.body.offsetTop;
- }
-
- // set position
- if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
- if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
- if(options.setWidth) target.style.width = source.offsetWidth + 'px';
- if(options.setHeight) target.style.height = source.offsetHeight + 'px';
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.style.position == 'absolute') return;
- Position.prepare();
-
- var offsets = Position.positionedOffset(element);
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';;
- element.style.left = left + 'px';;
- element.style.width = width + 'px';;
- element.style.height = height + 'px';;
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.style.position == 'relative') return;
- Position.prepare();
-
- element.style.position = 'relative';
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.height = element._originalHeight;
- element.style.width = element._originalWidth;
- }
-}
-
-// Safari returns margins on body which is incorrect if the child is absolutely
-// positioned. For performance reasons, redefine Position.cumulativeOffset for
-// KHTML/WebKit only.
-if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
- Position.cumulativeOffset = function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- if (element.offsetParent == document.body)
- if (Element.getStyle(element, 'position') == 'absolute') break;
-
- element = element.offsetParent;
- } while (element);
-
- return [valueL, valueT];
- }
-} \ No newline at end of file
diff --git a/library/cropper/lib/scriptaculous.js b/library/cropper/lib/scriptaculous.js
deleted file mode 100644
index f61fc57f7..000000000
--- a/library/cropper/lib/scriptaculous.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// 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.
-
-var Scriptaculous = {
- Version: '1.6.1',
- require: function(libraryName) {
- // inserting via DOM fails in Safari 2.0, so brute force approach
- document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
- },
- load: function() {
- if((typeof Prototype=='undefined') ||
- (typeof Element == 'undefined') ||
- (typeof Element.Methods=='undefined') ||
- parseFloat(Prototype.Version.split(".")[0] + "." +
- Prototype.Version.split(".")[1]) < 1.5)
- throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");
-
- $A(document.getElementsByTagName("script")).findAll( function(s) {
- return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
- }).each( function(s) {
- var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
- var includes = s.src.match(/\?.*load=([a-z,]*)/);
- (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each(
- function(include) { Scriptaculous.require(path+include+'.js') });
- });
- }
-}
-
-Scriptaculous.load(); \ No newline at end of file
diff --git a/library/cropper/lib/slider.js b/library/cropper/lib/slider.js
deleted file mode 100644
index c0f1fc01b..000000000
--- a/library/cropper/lib/slider.js
+++ /dev/null
@@ -1,283 +0,0 @@
-// Copyright (c) 2005 Marty Haught, Thomas Fuchs
-//
-// See http://script.aculo.us for more info
-//
-// 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.
-
-if(!Control) var Control = {};
-Control.Slider = Class.create();
-
-// options:
-// axis: 'vertical', or 'horizontal' (default)
-//
-// callbacks:
-// onChange(value)
-// onSlide(value)
-Control.Slider.prototype = {
- initialize: function(handle, track, options) {
- var slider = this;
-
- if(handle instanceof Array) {
- this.handles = handle.collect( function(e) { return $(e) });
- } else {
- this.handles = [$(handle)];
- }
-
- this.track = $(track);
- this.options = options || {};
-
- this.axis = this.options.axis || 'horizontal';
- this.increment = this.options.increment || 1;
- this.step = parseInt(this.options.step || '1');
- this.range = this.options.range || $R(0,1);
-
- this.value = 0; // assure backwards compat
- this.values = this.handles.map( function() { return 0 });
- this.spans = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
- this.options.startSpan = $(this.options.startSpan || null);
- this.options.endSpan = $(this.options.endSpan || null);
-
- this.restricted = this.options.restricted || false;
-
- this.maximum = this.options.maximum || this.range.end;
- this.minimum = this.options.minimum || this.range.start;
-
- // Will be used to align the handle onto the track, if necessary
- this.alignX = parseInt(this.options.alignX || '0');
- this.alignY = parseInt(this.options.alignY || '0');
-
- this.trackLength = this.maximumOffset() - this.minimumOffset();
- this.handleLength = this.isVertical() ? this.handles[0].offsetHeight : this.handles[0].offsetWidth;
-
- this.active = false;
- this.dragging = false;
- this.disabled = false;
-
- if(this.options.disabled) this.setDisabled();
-
- // Allowed values array
- this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
- if(this.allowedValues) {
- this.minimum = this.allowedValues.min();
- this.maximum = this.allowedValues.max();
- }
-
- this.eventMouseDown = this.startDrag.bindAsEventListener(this);
- this.eventMouseUp = this.endDrag.bindAsEventListener(this);
- this.eventMouseMove = this.update.bindAsEventListener(this);
-
- // Initialize handles in reverse (make sure first handle is active)
- this.handles.each( function(h,i) {
- i = slider.handles.length-1-i;
- slider.setValue(parseFloat(
- (slider.options.sliderValue instanceof Array ?
- slider.options.sliderValue[i] : slider.options.sliderValue) ||
- slider.range.start), i);
- Element.makePositioned(h); // fix IE
- Event.observe(h, "mousedown", slider.eventMouseDown);
- });
-
- Event.observe(this.track, "mousedown", this.eventMouseDown);
- Event.observe(document, "mouseup", this.eventMouseUp);
- Event.observe(document, "mousemove", this.eventMouseMove);
-
- this.initialized = true;
- },
- dispose: function() {
- var slider = this;
- Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
- Event.stopObserving(document, "mouseup", this.eventMouseUp);
- Event.stopObserving(document, "mousemove", this.eventMouseMove);
- this.handles.each( function(h) {
- Event.stopObserving(h, "mousedown", slider.eventMouseDown);
- });
- },
- setDisabled: function(){
- this.disabled = true;
- },
- setEnabled: function(){
- this.disabled = false;
- },
- getNearestValue: function(value){
- if(this.allowedValues){
- if(value >= this.allowedValues.max()) return(this.allowedValues.max());
- if(value <= this.allowedValues.min()) return(this.allowedValues.min());
-
- var offset = Math.abs(this.allowedValues[0] - value);
- var newValue = this.allowedValues[0];
- this.allowedValues.each( function(v) {
- var currentOffset = Math.abs(v - value);
- if(currentOffset <= offset){
- newValue = v;
- offset = currentOffset;
- }
- });
- return newValue;
- }
- if(value > this.range.end) return this.range.end;
- if(value < this.range.start) return this.range.start;
- return value;
- },
- setValue: function(sliderValue, handleIdx){
- if(!this.active) {
- this.activeHandle = this.handles[handleIdx];
- this.activeHandleIdx = handleIdx;
- this.updateStyles();
- }
- handleIdx = handleIdx || this.activeHandleIdx || 0;
- if(this.initialized && this.restricted) {
- if((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
- sliderValue = this.values[handleIdx-1];
- if((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
- sliderValue = this.values[handleIdx+1];
- }
- sliderValue = this.getNearestValue(sliderValue);
- this.values[handleIdx] = sliderValue;
- this.value = this.values[0]; // assure backwards compat
-
- this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =
- this.translateToPx(sliderValue);
-
- this.drawSpans();
- if(!this.dragging || !this.event) this.updateFinished();
- },
- setValueBy: function(delta, handleIdx) {
- this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,
- handleIdx || this.activeHandleIdx || 0);
- },
- translateToPx: function(value) {
- return Math.round(
- ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *
- (value - this.range.start)) + "px";
- },
- translateToValue: function(offset) {
- return ((offset/(this.trackLength-this.handleLength) *
- (this.range.end-this.range.start)) + this.range.start);
- },
- getRange: function(range) {
- var v = this.values.sortBy(Prototype.K);
- range = range || 0;
- return $R(v[range],v[range+1]);
- },
- minimumOffset: function(){
- return(this.isVertical() ? this.alignY : this.alignX);
- },
- maximumOffset: function(){
- return(this.isVertical() ?
- this.track.offsetHeight - this.alignY : this.track.offsetWidth - this.alignX);
- },
- isVertical: function(){
- return (this.axis == 'vertical');
- },
- drawSpans: function() {
- var slider = this;
- if(this.spans)
- $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
- if(this.options.startSpan)
- this.setSpan(this.options.startSpan,
- $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
- if(this.options.endSpan)
- this.setSpan(this.options.endSpan,
- $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
- },
- setSpan: function(span, range) {
- if(this.isVertical()) {
- span.style.top = this.translateToPx(range.start);
- span.style.height = this.translateToPx(range.end - range.start + this.range.start);
- } else {
- span.style.left = this.translateToPx(range.start);
- span.style.width = this.translateToPx(range.end - range.start + this.range.start);
- }
- },
- updateStyles: function() {
- this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
- Element.addClassName(this.activeHandle, 'selected');
- },
- startDrag: function(event) {
- if(Event.isLeftClick(event)) {
- if(!this.disabled){
- this.active = true;
-
- var handle = Event.element(event);
- var pointer = [Event.pointerX(event), Event.pointerY(event)];
- if(handle==this.track) {
- var offsets = Position.cumulativeOffset(this.track);
- this.event = event;
- this.setValue(this.translateToValue(
- (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
- ));
- var offsets = Position.cumulativeOffset(this.activeHandle);
- this.offsetX = (pointer[0] - offsets[0]);
- this.offsetY = (pointer[1] - offsets[1]);
- } else {
- // find the handle (prevents issues with Safari)
- while((this.handles.indexOf(handle) == -1) && handle.parentNode)
- handle = handle.parentNode;
-
- this.activeHandle = handle;
- this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
- this.updateStyles();
-
- var offsets = Position.cumulativeOffset(this.activeHandle);
- this.offsetX = (pointer[0] - offsets[0]);
- this.offsetY = (pointer[1] - offsets[1]);
- }
- }
- Event.stop(event);
- }
- },
- update: function(event) {
- if(this.active) {
- if(!this.dragging) this.dragging = true;
- this.draw(event);
- // fix AppleWebKit rendering
- if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
- Event.stop(event);
- }
- },
- draw: function(event) {
- var pointer = [Event.pointerX(event), Event.pointerY(event)];
- var offsets = Position.cumulativeOffset(this.track);
- pointer[0] -= this.offsetX + offsets[0];
- pointer[1] -= this.offsetY + offsets[1];
- this.event = event;
- this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
- if(this.initialized && this.options.onSlide)
- this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
- },
- endDrag: function(event) {
- if(this.active && this.dragging) {
- this.finishDrag(event, true);
- Event.stop(event);
- }
- this.active = false;
- this.dragging = false;
- },
- finishDrag: function(event, success) {
- this.active = false;
- this.dragging = false;
- this.updateFinished();
- },
- updateFinished: function() {
- if(this.initialized && this.options.onChange)
- this.options.onChange(this.values.length>1 ? this.values : this.value, this);
- this.event = null;
- }
-} \ No newline at end of file
diff --git a/library/cropper/lib/unittest.js b/library/cropper/lib/unittest.js
deleted file mode 100644
index d2c2d8171..000000000
--- a/library/cropper/lib/unittest.js
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// (c) 2005 Jon Tirsen (http://www.tirsen.com)
-// (c) 2005 Michael Schuerig (http://www.schuerig.de/michael/)
-//
-// 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.
-
-
-// experimental, Firefox-only
-Event.simulateMouse = function(element, eventName) {
- var options = Object.extend({
- pointerX: 0,
- pointerY: 0,
- buttons: 0
- }, arguments[2] || {});
- var oEvent = document.createEvent("MouseEvents");
- oEvent.initMouseEvent(eventName, true, true, document.defaultView,
- options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
- false, false, false, false, 0, $(element));
-
- if(this.mark) Element.remove(this.mark);
- this.mark = document.createElement('div');
- this.mark.appendChild(document.createTextNode(" "));
- document.body.appendChild(this.mark);
- this.mark.style.position = 'absolute';
- this.mark.style.top = options.pointerY + "px";
- this.mark.style.left = options.pointerX + "px";
- this.mark.style.width = "5px";
- this.mark.style.height = "5px;";
- this.mark.style.borderTop = "1px solid red;"
- this.mark.style.borderLeft = "1px solid red;"
-
- if(this.step)
- alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options));
-
- $(element).dispatchEvent(oEvent);
-};
-
-// Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2.
-// You need to downgrade to 1.0.4 for now to get this working
-// See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much
-Event.simulateKey = function(element, eventName) {
- var options = Object.extend({
- ctrlKey: false,
- altKey: false,
- shiftKey: false,
- metaKey: false,
- keyCode: 0,
- charCode: 0
- }, arguments[2] || {});
-
- var oEvent = document.createEvent("KeyEvents");
- oEvent.initKeyEvent(eventName, true, true, window,
- options.ctrlKey, options.altKey, options.shiftKey, options.metaKey,
- options.keyCode, options.charCode );
- $(element).dispatchEvent(oEvent);
-};
-
-Event.simulateKeys = function(element, command) {
- for(var i=0; i<command.length; i++) {
- Event.simulateKey(element,'keypress',{charCode:command.charCodeAt(i)});
- }
-};
-
-var Test = {}
-Test.Unit = {};
-
-// security exception workaround
-Test.Unit.inspect = Object.inspect;
-
-Test.Unit.Logger = Class.create();
-Test.Unit.Logger.prototype = {
- initialize: function(log) {
- this.log = $(log);
- if (this.log) {
- this._createLogTable();
- }
- },
- start: function(testName) {
- if (!this.log) return;
- this.testName = testName;
- this.lastLogLine = document.createElement('tr');
- this.statusCell = document.createElement('td');
- this.nameCell = document.createElement('td');
- this.nameCell.appendChild(document.createTextNode(testName));
- this.messageCell = document.createElement('td');
- this.lastLogLine.appendChild(this.statusCell);
- this.lastLogLine.appendChild(this.nameCell);
- this.lastLogLine.appendChild(this.messageCell);
- this.loglines.appendChild(this.lastLogLine);
- },
- finish: function(status, summary) {
- if (!this.log) return;
- this.lastLogLine.className = status;
- this.statusCell.innerHTML = status;
- this.messageCell.innerHTML = this._toHTML(summary);
- },
- message: function(message) {
- if (!this.log) return;
- this.messageCell.innerHTML = this._toHTML(message);
- },
- summary: function(summary) {
- if (!this.log) return;
- this.logsummary.innerHTML = this._toHTML(summary);
- },
- _createLogTable: function() {
- this.log.innerHTML =
- '<div id="logsummary"></div>' +
- '<table id="logtable">' +
- '<thead><tr><th>Status</th><th>Test</th><th>Message</th></tr></thead>' +
- '<tbody id="loglines"></tbody>' +
- '</table>';
- this.logsummary = $('logsummary')
- this.loglines = $('loglines');
- },
- _toHTML: function(txt) {
- return txt.escapeHTML().replace(/\n/g,"<br/>");
- }
-}
-
-Test.Unit.Runner = Class.create();
-Test.Unit.Runner.prototype = {
- initialize: function(testcases) {
- this.options = Object.extend({
- testLog: 'testlog'
- }, arguments[1] || {});
- this.options.resultsURL = this.parseResultsURLQueryParameter();
- if (this.options.testLog) {
- this.options.testLog = $(this.options.testLog) || null;
- }
- if(this.options.tests) {
- this.tests = [];
- for(var i = 0; i < this.options.tests.length; i++) {
- if(/^test/.test(this.options.tests[i])) {
- this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"]));
- }
- }
- } else {
- if (this.options.test) {
- this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])];
- } else {
- this.tests = [];
- for(var testcase in testcases) {
- if(/^test/.test(testcase)) {
- this.tests.push(new Test.Unit.Testcase(testcase, testcases[testcase], testcases["setup"], testcases["teardown"]));
- }
- }
- }
- }
- this.currentTest = 0;
- this.logger = new Test.Unit.Logger(this.options.testLog);
- setTimeout(this.runTests.bind(this), 1000);
- },
- parseResultsURLQueryParameter: function() {
- return window.location.search.parseQuery()["resultsURL"];
- },
- // Returns:
- // "ERROR" if there was an error,
- // "FAILURE" if there was a failure, or
- // "SUCCESS" if there was neither
- getResult: function() {
- var hasFailure = false;
- for(var i=0;i<this.tests.length;i++) {
- if (this.tests[i].errors > 0) {
- return "ERROR";
- }
- if (this.tests[i].failures > 0) {
- hasFailure = true;
- }
- }
- if (hasFailure) {
- return "FAILURE";
- } else {
- return "SUCCESS";
- }
- },
- postResults: function() {
- if (this.options.resultsURL) {
- new Ajax.Request(this.options.resultsURL,
- { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false });
- }
- },
- runTests: function() {
- var test = this.tests[this.currentTest];
- if (!test) {
- // finished!
- this.postResults();
- this.logger.summary(this.summary());
- return;
- }
- if(!test.isWaiting) {
- this.logger.start(test.name);
- }
- test.run();
- if(test.isWaiting) {
- this.logger.message("Waiting for " + test.timeToWait + "ms");
- setTimeout(this.runTests.bind(this), test.timeToWait || 1000);
- } else {
- this.logger.finish(test.status(), test.summary());
- this.currentTest++;
- // tail recursive, hopefully the browser will skip the stackframe
- this.runTests();
- }
- },
- summary: function() {
- var assertions = 0;
- var failures = 0;
- var errors = 0;
- var messages = [];
- for(var i=0;i<this.tests.length;i++) {
- assertions += this.tests[i].assertions;
- failures += this.tests[i].failures;
- errors += this.tests[i].errors;
- }
- return (
- this.tests.length + " tests, " +
- assertions + " assertions, " +
- failures + " failures, " +
- errors + " errors");
- }
-}
-
-Test.Unit.Assertions = Class.create();
-Test.Unit.Assertions.prototype = {
- initialize: function() {
- this.assertions = 0;
- this.failures = 0;
- this.errors = 0;
- this.messages = [];
- },
- summary: function() {
- return (
- this.assertions + " assertions, " +
- this.failures + " failures, " +
- this.errors + " errors" + "\n" +
- this.messages.join("\n"));
- },
- pass: function() {
- this.assertions++;
- },
- fail: function(message) {
- this.failures++;
- this.messages.push("Failure: " + message);
- },
- info: function(message) {
- this.messages.push("Info: " + message);
- },
- error: function(error) {
- this.errors++;
- this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")");
- },
- status: function() {
- if (this.failures > 0) return 'failed';
- if (this.errors > 0) return 'error';
- return 'passed';
- },
- assert: function(expression) {
- var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"';
- try { expression ? this.pass() :
- this.fail(message); }
- catch(e) { this.error(e); }
- },
- assertEqual: function(expected, actual) {
- var message = arguments[2] || "assertEqual";
- try { (expected == actual) ? this.pass() :
- this.fail(message + ': expected "' + Test.Unit.inspect(expected) +
- '", actual "' + Test.Unit.inspect(actual) + '"'); }
- catch(e) { this.error(e); }
- },
- assertEnumEqual: function(expected, actual) {
- var message = arguments[2] || "assertEnumEqual";
- try { $A(expected).length == $A(actual).length &&
- expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ?
- this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) +
- ', actual ' + Test.Unit.inspect(actual)); }
- catch(e) { this.error(e); }
- },
- assertNotEqual: function(expected, actual) {
- var message = arguments[2] || "assertNotEqual";
- try { (expected != actual) ? this.pass() :
- this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); }
- catch(e) { this.error(e); }
- },
- assertNull: function(obj) {
- var message = arguments[1] || 'assertNull'
- try { (obj==null) ? this.pass() :
- this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); }
- catch(e) { this.error(e); }
- },
- assertHidden: function(element) {
- var message = arguments[1] || 'assertHidden';
- this.assertEqual("none", element.style.display, message);
- },
- assertNotNull: function(object) {
- var message = arguments[1] || 'assertNotNull';
- this.assert(object != null, message);
- },
- assertInstanceOf: function(expected, actual) {
- var message = arguments[2] || 'assertInstanceOf';
- try {
- (actual instanceof expected) ? this.pass() :
- this.fail(message + ": object was not an instance of the expected type"); }
- catch(e) { this.error(e); }
- },
- assertNotInstanceOf: function(expected, actual) {
- var message = arguments[2] || 'assertNotInstanceOf';
- try {
- !(actual instanceof expected) ? this.pass() :
- this.fail(message + ": object was an instance of the not expected type"); }
- catch(e) { this.error(e); }
- },
- _isVisible: function(element) {
- element = $(element);
- if(!element.parentNode) return true;
- this.assertNotNull(element);
- if(element.style && Element.getStyle(element, 'display') == 'none')
- return false;
-
- return this._isVisible(element.parentNode);
- },
- assertNotVisible: function(element) {
- this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1]));
- },
- assertVisible: function(element) {
- this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1]));
- },
- benchmark: function(operation, iterations) {
- var startAt = new Date();
- (iterations || 1).times(operation);
- var timeTaken = ((new Date())-startAt);
- this.info((arguments[2] || 'Operation') + ' finished ' +
- iterations + ' iterations in ' + (timeTaken/1000)+'s' );
- return timeTaken;
- }
-}
-
-Test.Unit.Testcase = Class.create();
-Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), {
- initialize: function(name, test, setup, teardown) {
- Test.Unit.Assertions.prototype.initialize.bind(this)();
- this.name = name;
- this.test = test || function() {};
- this.setup = setup || function() {};
- this.teardown = teardown || function() {};
- this.isWaiting = false;
- this.timeToWait = 1000;
- },
- wait: function(time, nextPart) {
- this.isWaiting = true;
- this.test = nextPart;
- this.timeToWait = time;
- },
- run: function() {
- try {
- try {
- if (!this.isWaiting) this.setup.bind(this)();
- this.isWaiting = false;
- this.test.bind(this)();
- } finally {
- if(!this.isWaiting) {
- this.teardown.bind(this)();
- }
- }
- }
- catch(e) { this.error(e); }
- }
-});
diff --git a/library/cropper/licence.txt b/library/cropper/licence.txt
deleted file mode 100644
index b59e02917..000000000
--- a/library/cropper/licence.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Copyright (c) 2006, David Spurr (www.defusion.org.uk)
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-http://www.opensource.org/licenses/bsd-license.php \ No newline at end of file
diff --git a/library/cropper/marqueeHoriz.gif b/library/cropper/marqueeHoriz.gif
deleted file mode 100644
index 25317e573..000000000
--- a/library/cropper/marqueeHoriz.gif
+++ /dev/null
Binary files differ
diff --git a/library/cropper/marqueeVert.gif b/library/cropper/marqueeVert.gif
deleted file mode 100644
index 354070bb4..000000000
--- a/library/cropper/marqueeVert.gif
+++ /dev/null
Binary files differ
diff --git a/library/cropper/tests/castle.jpg b/library/cropper/tests/castle.jpg
deleted file mode 100644
index e40b7e4cb..000000000
--- a/library/cropper/tests/castle.jpg
+++ /dev/null
Binary files differ
diff --git a/library/cropper/tests/castleMed.jpg b/library/cropper/tests/castleMed.jpg
deleted file mode 100644
index c35a6f554..000000000
--- a/library/cropper/tests/castleMed.jpg
+++ /dev/null
Binary files differ
diff --git a/library/cropper/tests/example-Basic.htm b/library/cropper/tests/example-Basic.htm
deleted file mode 100644
index 391c2ecdb..000000000
--- a/library/cropper/tests/example-Basic.htm
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Basic cropper test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // basic example
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- onEndCrop: onEndCrop
- }
- )
- }
- );
-
-
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
-
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Basic cropper test</h2>
- <p>
- Some test content before the image
- </p>
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-CSS-Absolute.htm b/library/cropper/tests/example-CSS-Absolute.htm
deleted file mode 100644
index 17e4c489d..000000000
--- a/library/cropper/tests/example-CSS-Absolute.htm
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>CSS - Absolute positioned (and draggable) test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop,effects" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // Absolute positioned example
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img( 'testAbsImage', { onEndCrop: onEndCrop } );
- new Draggable( 'test-abs' );
- }
- );
-
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
-
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
-
- #test-abs {
- width: 510px;
- position: absolute;
- top: 50px;
- left: 25%;
- background-color: #dee;
- border: 3px solid #ccc;
- z-index: 10;
- }
- </style>
-</head>
-<body>
- <h2>CSS - Absolute positioned (and draggable) test</h2>
- <p>
- Some test content before the image
- </p>
- <p>
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque consequat risus cursus ipsum. Etiam libero. Integer vel mauris. Donec vulputate. In ut augue vitae nibh lobortis tempor. Aliquam hendrerit quam. Phasellus sed orci. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut sed urna. Donec nunc urna, porttitor a, feugiat pellentesque, varius id, justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Sed sollicitudin. Integer enim. Aenean sollicitudin.
- </p>
- <p>
- Integer lorem turpis, dapibus sed, vulputate nec, volutpat a, sem. Sed malesuada laoreet lorem. Duis mauris ipsum, fringilla nec, tristique vel, imperdiet vel, neque. Nulla vel purus. Fusce non lectus. Mauris pulvinar. Curabitur eget eros. Nunc ultrices, risus vitae adipiscing scelerisque, quam mi auctor lacus, non pellentesque augue sapien a magna. Etiam rutrum posuere tortor. Mauris rhoncus sagittis dolor. Donec sed quam. Vivamus vel diam id massa adipiscing bibendum. Suspendisse potenti. Integer arcu est, adipiscing sit amet, convallis eu, sollicitudin tincidunt, quam.
- </p>
- <p>
- Etiam ligula lorem, imperdiet ac, luctus eget, ultrices at, odio. Vivamus malesuada, justo eu adipiscing semper, nisi dui tempus magna, quis ultrices nunc tellus id massa. Nullam lobortis auctor sapien. Quisque non nulla. Donec lobortis pellentesque nisl. Sed lacus sapien, viverra vitae, blandit ut, fermentum quis, leo. Morbi augue turpis, hendrerit non, feugiat vel, laoreet sed, est. Nunc velit. Praesent lobortis. Integer enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur faucibus lacus ac ante. Donec odio odio, tincidunt a, egestas nec, scelerisque nec, dui. Cras sollicitudin. Donec lacus enim, mollis sit amet, interdum quis, euismod et, nulla. Nunc sit amet dui eu magna dapibus mollis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla facilisi.
- </p>
- <p>
- In hac habitasse platea dictumst. Nunc neque urna, dapibus ut, tristique ut, bibendum ac, felis. Donec dictum est ut dolor. Etiam accumsan, velit sit amet blandit vestibulum, turpis quam hendrerit risus, vel interdum eros orci in nunc. Curabitur tellus sapien, rutrum ac, euismod ac, malesuada nec, pede. Proin sit amet ipsum. Praesent quam nisl, adipiscing nec, tristique eget, fermentum sed, est. Praesent ac est sit amet orci facilisis placerat. Sed consequat, est sit amet consectetuer viverra, risus urna porttitor tellus, ut convallis nibh libero in lectus. Pellentesque molestie, erat non vehicula pretium, turpis nisi eleifend eros, sed scelerisque tortor odio non tellus. Nunc leo tellus, faucibus vitae, placerat a, accumsan vel, arcu. In et orci. Ut tristique euismod nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Sed nulla nunc, placerat vitae, pellentesque non, interdum non, sapien. Quisque faucibus, eros sed venenatis sagittis, leo risus rhoncus risus, in pretium sem purus a lacus. Aliquam aliquam leo et diam.
-
- </p>
- <p>
- Nulla sagittis diam. Phasellus vitae enim tristique libero molestie tristique. Nam mauris sem, elementum nec, cursus in, fringilla ac, neque. Nunc metus nisi, dictum vel, vulputate quis, porttitor bibendum, tortor. Vestibulum vehicula. Nulla facilisi. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla ac magna sed purus ultricies euismod. Aliquam dictum. Sed mauris. Suspendisse justo. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi purus lorem, auctor non, porta ac, vehicula vel, orci. Morbi pharetra massa nec leo. Maecenas et mauris. Aliquam porttitor tincidunt nulla. Vestibulum pede.
- </p>
- <p>
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque consequat risus cursus ipsum. Etiam libero. Integer vel mauris. Donec vulputate. In ut augue vitae nibh lobortis tempor. Aliquam hendrerit quam. Phasellus sed orci. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut sed urna. Donec nunc urna, porttitor a, feugiat pellentesque, varius id, justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Sed sollicitudin. Integer enim. Aenean sollicitudin.
- </p>
- <p>
- Integer lorem turpis, dapibus sed, vulputate nec, volutpat a, sem. Sed malesuada laoreet lorem. Duis mauris ipsum, fringilla nec, tristique vel, imperdiet vel, neque. Nulla vel purus. Fusce non lectus. Mauris pulvinar. Curabitur eget eros. Nunc ultrices, risus vitae adipiscing scelerisque, quam mi auctor lacus, non pellentesque augue sapien a magna. Etiam rutrum posuere tortor. Mauris rhoncus sagittis dolor. Donec sed quam. Vivamus vel diam id massa adipiscing bibendum. Suspendisse potenti. Integer arcu est, adipiscing sit amet, convallis eu, sollicitudin tincidunt, quam.
- </p>
- <p>
- Etiam ligula lorem, imperdiet ac, luctus eget, ultrices at, odio. Vivamus malesuada, justo eu adipiscing semper, nisi dui tempus magna, quis ultrices nunc tellus id massa. Nullam lobortis auctor sapien. Quisque non nulla. Donec lobortis pellentesque nisl. Sed lacus sapien, viverra vitae, blandit ut, fermentum quis, leo. Morbi augue turpis, hendrerit non, feugiat vel, laoreet sed, est. Nunc velit. Praesent lobortis. Integer enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur faucibus lacus ac ante. Donec odio odio, tincidunt a, egestas nec, scelerisque nec, dui. Cras sollicitudin. Donec lacus enim, mollis sit amet, interdum quis, euismod et, nulla. Nunc sit amet dui eu magna dapibus mollis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla facilisi.
- </p>
- <p>
- In hac habitasse platea dictumst. Nunc neque urna, dapibus ut, tristique ut, bibendum ac, felis. Donec dictum est ut dolor. Etiam accumsan, velit sit amet blandit vestibulum, turpis quam hendrerit risus, vel interdum eros orci in nunc. Curabitur tellus sapien, rutrum ac, euismod ac, malesuada nec, pede. Proin sit amet ipsum. Praesent quam nisl, adipiscing nec, tristique eget, fermentum sed, est. Praesent ac est sit amet orci facilisis placerat. Sed consequat, est sit amet consectetuer viverra, risus urna porttitor tellus, ut convallis nibh libero in lectus. Pellentesque molestie, erat non vehicula pretium, turpis nisi eleifend eros, sed scelerisque tortor odio non tellus. Nunc leo tellus, faucibus vitae, placerat a, accumsan vel, arcu. In et orci. Ut tristique euismod nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Sed nulla nunc, placerat vitae, pellentesque non, interdum non, sapien. Quisque faucibus, eros sed venenatis sagittis, leo risus rhoncus risus, in pretium sem purus a lacus. Aliquam aliquam leo et diam.
-
- </p>
- <p>
- Nulla sagittis diam. Phasellus vitae enim tristique libero molestie tristique. Nam mauris sem, elementum nec, cursus in, fringilla ac, neque. Nunc metus nisi, dictum vel, vulputate quis, porttitor bibendum, tortor. Vestibulum vehicula. Nulla facilisi. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla ac magna sed purus ultricies euismod. Aliquam dictum. Sed mauris. Suspendisse justo. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi purus lorem, auctor non, porta ac, vehicula vel, orci. Morbi pharetra massa nec leo. Maecenas et mauris. Aliquam porttitor tincidunt nulla. Vestibulum pede.
- </p>
- <p>
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque consequat risus cursus ipsum. Etiam libero. Integer vel mauris. Donec vulputate. In ut augue vitae nibh lobortis tempor. Aliquam hendrerit quam. Phasellus sed orci. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut sed urna. Donec nunc urna, porttitor a, feugiat pellentesque, varius id, justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Sed sollicitudin. Integer enim. Aenean sollicitudin.
- </p>
- <p>
- Integer lorem turpis, dapibus sed, vulputate nec, volutpat a, sem. Sed malesuada laoreet lorem. Duis mauris ipsum, fringilla nec, tristique vel, imperdiet vel, neque. Nulla vel purus. Fusce non lectus. Mauris pulvinar. Curabitur eget eros. Nunc ultrices, risus vitae adipiscing scelerisque, quam mi auctor lacus, non pellentesque augue sapien a magna. Etiam rutrum posuere tortor. Mauris rhoncus sagittis dolor. Donec sed quam. Vivamus vel diam id massa adipiscing bibendum. Suspendisse potenti. Integer arcu est, adipiscing sit amet, convallis eu, sollicitudin tincidunt, quam.
- </p>
- <p>
- Etiam ligula lorem, imperdiet ac, luctus eget, ultrices at, odio. Vivamus malesuada, justo eu adipiscing semper, nisi dui tempus magna, quis ultrices nunc tellus id massa. Nullam lobortis auctor sapien. Quisque non nulla. Donec lobortis pellentesque nisl. Sed lacus sapien, viverra vitae, blandit ut, fermentum quis, leo. Morbi augue turpis, hendrerit non, feugiat vel, laoreet sed, est. Nunc velit. Praesent lobortis. Integer enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur faucibus lacus ac ante. Donec odio odio, tincidunt a, egestas nec, scelerisque nec, dui. Cras sollicitudin. Donec lacus enim, mollis sit amet, interdum quis, euismod et, nulla. Nunc sit amet dui eu magna dapibus mollis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla facilisi.
- </p>
- <p>
- In hac habitasse platea dictumst. Nunc neque urna, dapibus ut, tristique ut, bibendum ac, felis. Donec dictum est ut dolor. Etiam accumsan, velit sit amet blandit vestibulum, turpis quam hendrerit risus, vel interdum eros orci in nunc. Curabitur tellus sapien, rutrum ac, euismod ac, malesuada nec, pede. Proin sit amet ipsum. Praesent quam nisl, adipiscing nec, tristique eget, fermentum sed, est. Praesent ac est sit amet orci facilisis placerat. Sed consequat, est sit amet consectetuer viverra, risus urna porttitor tellus, ut convallis nibh libero in lectus. Pellentesque molestie, erat non vehicula pretium, turpis nisi eleifend eros, sed scelerisque tortor odio non tellus. Nunc leo tellus, faucibus vitae, placerat a, accumsan vel, arcu. In et orci. Ut tristique euismod nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Sed nulla nunc, placerat vitae, pellentesque non, interdum non, sapien. Quisque faucibus, eros sed venenatis sagittis, leo risus rhoncus risus, in pretium sem purus a lacus. Aliquam aliquam leo et diam.
-
- </p>
- <p>
- Nulla sagittis diam. Phasellus vitae enim tristique libero molestie tristique. Nam mauris sem, elementum nec, cursus in, fringilla ac, neque. Nunc metus nisi, dictum vel, vulputate quis, porttitor bibendum, tortor. Vestibulum vehicula. Nulla facilisi. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla ac magna sed purus ultricies euismod. Aliquam dictum. Sed mauris. Suspendisse justo. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi purus lorem, auctor non, porta ac, vehicula vel, orci. Morbi pharetra massa nec leo. Maecenas et mauris. Aliquam porttitor tincidunt nulla. Vestibulum pede.
- </p>
-
-
-<div id="test-abs">
- <h2>Absolute test</h2>
- <div id="testAbsWrap">
- <img src="castle.jpg" alt="test image" id="testAbsImage" width="500" height="333" />
- </div>
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-</div>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-CSS-Float.htm b/library/cropper/tests/example-CSS-Float.htm
deleted file mode 100644
index 5066553fe..000000000
--- a/library/cropper/tests/example-CSS-Float.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>CSS - Float test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // float example
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testFloatImage',
- {
- onEndCrop: function( coords, dimensions ) {
- $( 'floatX1' ).value = coords.x1;
- $( 'floatY1' ).value = coords.y1;
- $( 'floatX2' ).value = coords.x2;
- $( 'floatY2' ).value = coords.y2;
- $( 'floatWidth' ).value = dimensions.width;
- $( 'floatHeight' ).value = dimensions.height;
- }
- }
- );
- }
- );
-
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
-
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
-
- #test-float {
- width: 600px;
- float: right;
- background-color: #eee;
- border: 3px solid #000;
- margin: 10px;
- padding: 5px;
- }
-
- </style>
-</head>
-<body>
- <h2>Test page with floating wrapper</h2>
- <p>
- Some test content before the image
- </p>
-
-<div id="test-float">
- <h2>Float test</h2>
- <div id="testFloatWrap">
- <img src="castle.jpg" alt="test image" id="testFloatImage" width="500" height="333" />
- </div>
-
- <p>
- <label for="floatX1">x1:</label>
- <input type="text" name="floatX1" id="floatX1" />
- </p>
- <p>
- <label for="floatY1">y1:</label>
- <input type="text" name="floatY1" id="floatY1" />
- </p>
- <p>
- <label for="floatX2">x2:</label>
- <input type="text" name="floatX2" id="floatX2" />
- </p>
- <p>
- <label for="floatY2">y2:</label>
- <input type="text" name="floatY2" id="floatY2" />
- </p>
- <p>
- <label for="floatWidth">width:</label>
- <input type="text" name="floatWidth" id="floatWidth" />
- </p>
- <p>
- <label for="floatHeight">height</label>
- <input type="text" name="floatHeight" id="floatHeight" />
- </p>
-</div>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-CSS-Relative.htm b/library/cropper/tests/example-CSS-Relative.htm
deleted file mode 100644
index 5894fe1f9..000000000
--- a/library/cropper/tests/example-CSS-Relative.htm
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>CSS - Relative test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // relative example
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- onEndCrop: onEndCrop
- }
- )
- }
- );
-
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
-
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
-
- #test-relative {
- background-color: #ccc;
- border: 3px solid #ddd;
- position: relative;
- top: 25px;
- left: 25px;
- }
- </style>
-</head>
-<body>
- <h2>Test page with relatively positioned wrapper</h2>
- <p>
- Some test content before the image
- </p>
-
-<div id="test-relative">
- <h2>Relative test</h2>
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-</div>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-CoordsOnLoad.htm b/library/cropper/tests/example-CoordsOnLoad.htm
deleted file mode 100644
index 254a23472..000000000
--- a/library/cropper/tests/example-CoordsOnLoad.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Loading &amp; displaying co-ordinates of crop area on attachment test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // basic example
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- onEndCrop: onEndCrop,
- displayOnInit: true,
- onloadCoords: { x1: 10, y1: 10, x2: 250, y2: 100 }
- }
- )
- }
- );
-
-
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
-
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Loading &amp; displaying co-ordinates of crop area on attachment test</h2>
- <p>
- Some test content before the image
- </p>
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-CoordsOnLoadWithRatio.htm b/library/cropper/tests/example-CoordsOnLoadWithRatio.htm
deleted file mode 100644
index 3a696360a..000000000
--- a/library/cropper/tests/example-CoordsOnLoadWithRatio.htm
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Loading &amp; displaying co-ordinates (with ratio) of crop area on attachment test<</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // basic example
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- onEndCrop: onEndCrop,
- displayOnInit: true,
- onloadCoords: { x1: 10, y1: 10, x2: 210, y2: 110 },
- ratioDim: { x: 200, y: 100 }
- }
- )
- }
- );
-
-
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
-
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Loading &amp; displaying co-ordinates (with ratio) of crop area on attachment test</h2>
- <p>
- Some test content before the image
- </p>
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-Dimensions.htm b/library/cropper/tests/example-Dimensions.htm
deleted file mode 100644
index f54f99683..000000000
--- a/library/cropper/tests/example-Dimensions.htm
+++ /dev/null
@@ -1,225 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Different dimensions test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- /*
-
- // example with minimum dimensions
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- minWidth: 200,
- minHeight: 120,
- maxWidth: 200,
- //maxHeight: 120,
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- )
- }
- );
- */
-
- Event.observe( window, 'load',
- function() {
- Event.observe( 'dimensionsForm', 'submit', CropManager.attachCropper.bindAsEventListener( CropManager ) );
- CropManager.attachCropper();
- }
- );
-
- /**
- * A little manager that allows us to reset the options dynamically
- */
- var CropManager = {
- /**
- * Holds the current Cropper.Img object
- * @var obj
- */
- curCrop: null,
-
- /**
- * Gets a min/max parameter from the form
- *
- * @access private
- * @param string Form element ID
- * @return int
- */
- getParam: function( name ) {
- var val = $F( name );
- console.log( name + ' :: ' + val );
- return parseInt( val );
- },
-
- /**
- * Attaches/resets the image cropper
- *
- * @access private
- * @param obj Event object
- * @return void
- */
- attachCropper: function( e ) {
- if( this.curCrop == null ) {
- this.curCrop = new Cropper.Img(
- 'testImage',
- {
- minWidth: this.getParam( 'minWidth' ),
- minHeight: this.getParam( 'minHeight' ),
- maxWidth: this.getParam( 'maxWidth' ),
- maxHeight: this.getParam( 'maxHeight' ),
- onEndCrop: onEndCrop
- }
- );
- } else {
- this.removeCropper();
- this.curCrop.initialize(
- 'testImage',
- {
- minWidth: this.getParam( 'minWidth' ),
- minHeight: this.getParam( 'minHeight' ),
- maxWidth: this.getParam( 'maxWidth' ),
- maxHeight: this.getParam( 'maxHeight' ),
- onEndCrop: onEndCrop
- }
- );
- }
- if( e != null ) Event.stop( e );
- },
-
- /**
- * Removes the cropper
- *
- * @access public
- * @return void
- */
- removeCropper: function() {
- if( this.curCrop != null ) {
- this.curCrop.remove();
- }
- },
-
- /**
- * Resets the cropper, either re-setting or re-applying
- *
- * @access public
- * @return void
- */
- resetCropper: function() {
- this.attachCropper();
- }
- };
-
- /*
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- // Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
- */
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
-
- #dimensionsForm {
- float: right;
- width: 350px;
- }
- </style>
-</head>
-<body>
- <h2>Multiple dimensions tests</h2>
- <p>
- Test of applying different dimension restrictions to the cropper
- </p>
-
- <form action="#" id="dimensionsForm">
- <fieldset>
- Set the cropper with the following dimension restrictions:
- <p>
- <label for="minWidth">Min Width</label>
- <input type="text" size="10" maxlength="3" value="200" id="minWidth" name="minWidth" />
- </p>
- <p>
- <label for="maxWidth">Max Width</label>
- <input type="text" size="10" maxlength="3" value="200" id="maxWidth" name="maxWidth" />
- </p>
- <p>
- <label for="minHeight">Min Height</label>
- <input type="text" size="10" maxlength="3" value="120" id="minHeight" name="minHeight" />
- </p>
- <p>
- <label for="maxHeight">Max Height</label>
- <input type="text" size="10" maxlength="3" value="120" id="maxHeight" name="maxHeight" />
- </p>
- <input type="submit" value="Set Cropper" />
- </fieldset>
- </form>
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-DynamicImage.htm b/library/cropper/tests/example-DynamicImage.htm
deleted file mode 100644
index 898363489..000000000
--- a/library/cropper/tests/example-DynamicImage.htm
+++ /dev/null
@@ -1,203 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Dynamic image test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- /**
- * A little manager that allows us to swap the image dynamically
- *
- */
- var CropImageManager = {
- /**
- * Holds the current Cropper.Img object
- * @var obj
- */
- curCrop: null,
-
- /**
- * Initialises the cropImageManager
- *
- * @access public
- * @return void
- */
- init: function() {
- this.attachCropper();
- },
-
- /**
- * Handles the changing of the select to change the image, the option value
- * is a pipe seperated list of imgSrc|width|height
- *
- * @access public
- * @param obj event
- * @return void
- */
- onChange: function( e ) {
- var vals = $F( Event.element( e ) ).split('|');
- this.setImage( vals[0], vals[1], vals[2] );
- },
-
- /**
- * Sets the image within the element & attaches/resets the image cropper
- *
- * @access private
- * @param string Source path of new image
- * @param int Width of new image in pixels
- * @param int Height of new image in pixels
- * @return void
- */
- setImage: function( imgSrc, w, h ) {
- $( 'testImage' ).src = imgSrc;
- $( 'testImage' ).width = w;
- $( 'testImage' ).height = h;
- this.attachCropper();
- },
-
- /**
- * Attaches/resets the image cropper
- *
- * @access private
- * @return void
- */
- attachCropper: function() {
- if( this.curCrop == null ) this.curCrop = new Cropper.Img( 'testImage', { onEndCrop: onEndCrop } );
- else this.curCrop.reset();
- },
-
- /**
- * Removes the cropper
- *
- * @access public
- * @return void
- */
- removeCropper: function() {
- if( this.curCrop != null ) {
- this.curCrop.remove();
- }
- },
-
- /**
- * Resets the cropper, either re-setting or re-applying
- *
- * @access public
- * @return void
- */
- resetCropper: function() {
- this.attachCropper();
- }
- };
-
-
- // setup the callback function
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // basic example
- Event.observe(
- window,
- 'load',
- function() {
- CropImageManager.init();
- Event.observe( $('removeCropper'), 'click', CropImageManager.removeCropper.bindAsEventListener( CropImageManager ), false );
- Event.observe( $('resetCropper'), 'click', CropImageManager.resetCropper.bindAsEventListener( CropImageManager ), false );
- Event.observe( $('imageChoice'), 'change', CropImageManager.onChange.bindAsEventListener( CropImageManager ), false );
- }
- );
-
-
- /*
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
- */
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- html, body {
- margin: 0;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Dynamic image test</h2>
- <p>
- Test of dynamically changing images or removing & re-applying the cropper
- </p>
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
- <p>
- <label for="imageChoice">image:</label>
- <select name="imageChoice" id="imageChoice">
- <option value="castle.jpg|500|333">Castle</option>
- <option value="poppy.jpg|311|466">Flower</option>
- </select>
- </p>
-
- <p>
- <input type="button" id="removeCropper" value="Remove Cropper" />
- <input type="button" id="resetCropper" value="Reset Cropper" />
- </p>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-FixedRatio.htm b/library/cropper/tests/example-FixedRatio.htm
deleted file mode 100644
index 973bedda9..000000000
--- a/library/cropper/tests/example-FixedRatio.htm
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Fixed ratio test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // with a supplied ratio
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- ratioDim: { x: 220, y: 124 },
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- )
- }
- );
-
- /*
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- // Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
- */
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Fixed ratio test</h2>
- <p>
- Test of applying a fixed ratio to the cropper
- </p>
- <br />
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-MinimumDimensions.htm b/library/cropper/tests/example-MinimumDimensions.htm
deleted file mode 100644
index 3ae93c8e1..000000000
--- a/library/cropper/tests/example-MinimumDimensions.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Min dimensions test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // example with minimum dimensions
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- minWidth: 200,
- minHeight: 120,
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- )
- }
- );
-
- /*
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- // Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
- */
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Minimum (both axes ) dimension test</h2>
- <p>
- Test of applying a minimum dimension to both axes to the cropper
- </p>
- <br />
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-MinimumWidth.htm b/library/cropper/tests/example-MinimumWidth.htm
deleted file mode 100644
index b0576b87f..000000000
--- a/library/cropper/tests/example-MinimumWidth.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title>Min (single axis) dimensions test</title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // example with minimum dimensions
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.Img(
- 'testImage',
- {
- minWidth: 200,
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- )
- }
- );
-
- /*
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- // Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
- */
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- #testWrap {
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
- </style>
-</head>
-<body>
- <h2>Minimum (single axis) dimension test</h2>
- <p>
- Test of applying a minimum dimension to only one axis (width in this case) to the cropper
- </p>
- <br />
- <br /><br />
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
-
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/example-Preview.htm b/library/cropper/tests/example-Preview.htm
deleted file mode 100644
index 701670c91..000000000
--- a/library/cropper/tests/example-Preview.htm
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title></title>
- <script src="../lib/prototype.js" type="text/javascript"></script>
- <script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
- <script src="../cropper.js" type="text/javascript"></script>
-
-
- <script type="text/javascript" charset="utf-8">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- // example with a preview of crop results, must have minimumm dimensions
- Event.observe(
- window,
- 'load',
- function() {
- new Cropper.ImgWithPreview(
- 'testImage',
- {
- minWidth: 200,
- minHeight: 120,
- ratioDim: { x: 200, y: 120 },
- displayOnInit: true,
- onEndCrop: onEndCrop,
- previewWrap: 'previewArea'
- }
- )
- }
- );
-
- /*
- if( typeof(dump) != 'function' ) {
- Debug.init(true, '/');
-
- function dump( msg ) {
- // Debug.raise( msg );
- };
- } else dump( '---------------------------------------\n' );
- */
-
- </script>
- <link rel="stylesheet" type="text/css" href="debug.css" media="all" />
- <style type="text/css">
- label {
- clear: left;
- margin-left: 50px;
- float: left;
- width: 5em;
- }
-
- #testWrap {
- width: 500px;
- float: left;
- margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
- }
-
- #previewArea {
- margin: 20px; 0 0 20px;
- float: left;
- }
-
- #results {
- clear: both;
- }
- </style>
-</head>
-<body>
- <br /><br />
-
- <div id="testWrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- </div>
-
- <div id="previewArea"></div>
-
- <div id="results">
- <p>
- <label for="x1">x1:</label>
- <input type="text" name="x1" id="x1" />
- </p>
- <p>
- <label for="y1">y1:</label>
- <input type="text" name="y1" id="y1" />
- </p>
- <p>
- <label for="x2">x2:</label>
- <input type="text" name="x2" id="x2" />
- </p>
- <p>
- <label for="y2">y2:</label>
- <input type="text" name="y2" id="y2" />
- </p>
- <p>
- <label for="width">width:</label>
- <input type="text" name="width" id="width" />
- </p>
- <p>
- <label for="height">height</label>
- <input type="text" name="height" id="height" />
- </p>
- </div>
-
-</body>
-</html>
-
-
diff --git a/library/cropper/tests/poppy.jpg b/library/cropper/tests/poppy.jpg
deleted file mode 100644
index 1f6498584..000000000
--- a/library/cropper/tests/poppy.jpg
+++ /dev/null
Binary files differ
diff --git a/library/cropper/tests/staticHTMLStructure.htm b/library/cropper/tests/staticHTMLStructure.htm
deleted file mode 100644
index ddb99278e..000000000
--- a/library/cropper/tests/staticHTMLStructure.htm
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <title></title>
-</head>
-<body>
- <!--
-
- This is a static test file for the HTML & CSS structure employed, tested in
- the following browsers:
-
- PC:
- IE 6: working
- IE 5.5: working
- IE 5.0: opacity issues
- FF 1.5: working
- Opera 9: working
- MAC:
- Camino 1.0: working
- FF 1.5: working
- Safari 2.0: working
-
- -->
- <style type="text/css">
- .imgCrop_wrap {
- width: 500px; /* @TODO IN JS */
- height: 333px; /* @TODO IN JS */
- position: relative;
- cursor: crosshair;
- }
-
- /* fix for IE displaying all boxes at line-height by default */
- .imgCrop_wrap,
- .imgCrop_wrap * {
- font-size: 0;
- }
-
- .imgCrop_overlay {
- background-color: #000;
- opacity: 0.5;
- filter:alpha(opacity=50);
- position: absolute;
- width: 100%;
- height: 100%;
- }
-
- .imgCrop_selArea {
- position: absolute;
- cursor: move;
- /* @TODO: rest to be done via JS when selecting areas */
- top: 110px;
- left: 210px;
- width: 200px;
- height: 200px;
- z-index: 2;
- background: transparent url(castle.jpg) no-repeat -210px -110px;
- }
-
- /* imgCrop_clickArea is all a fix for IE 5.5 & 6 to allow the user to click on the given area */
- .imgCrop_clickArea {
- width: 100%;
- height: 100%;
- background-color: #FFF;
- opacity: 0.01;
- filter:alpha(opacity=01);
- }
-
- .imgCrop_marqueeHoriz {
- position: absolute;
- width: 100%;
- height: 1px;
- background: transparent url(marqueeHoriz.gif) repeat-x 0 0;
- }
-
- .imgCrop_marqueeVert {
- position: absolute;
- height: 100%;
- width: 1px;
- background: transparent url(marqueeVert.gif) repeat-y 0 0;
- }
-
- .imgCrop_marqueeNorth { top: 0; left: 0; }
- .imgCrop_marqueeEast { top: 0; right: 0; }
- .imgCrop_marqueeSouth { bottom: 0px; left: 0; }
- .imgCrop_marqueeWest { top: 0; left: 0; }
-
-
- .imgCrop_handle {
- position: absolute;
- border: 1px solid #333;
- width: 6px;
- height: 6px;
- background: #FFF;
- opacity: 0.5;
- filter:alpha(opacity=50);
- z-index: 3;
- }
-
- .imgCrop_handleN {
- top: -3px;
- left: 0;
- margin-left: 49%; /* @TODO : in JS */
- cursor: n-resize;
- }
-
- .imgCrop_handleNE {
- top: -3px;
- right: -3px;
- cursor: ne-resize;
- }
-
- .imgCrop_handleE {
- top: 0;
- right: -3px;
- margin-top: 49%; /* @TODO : in JS */
- cursor: e-resize;
- }
-
- .imgCrop_handleSE {
- right: -3px;
- bottom: -3px;
- cursor: se-resize;
- }
-
- .imgCrop_handleS {
- right: 0;
- bottom: -3px;
- margin-right: 49%; /* @TODO : in JS */
- cursor: s-resize;
- }
-
- .imgCrop_handleSW {
- left: -3px;
- bottom: -3px;
- cursor: sw-resize;
- }
-
- .imgCrop_handleW {
- top: 0;
- left: -3px;
- margin-top: 49%; /* @TODO : in JS */
- cursor: e-resize;
- }
-
- .imgCrop_handleNW {
- top: -3px;
- left: -3px;
- cursor: nw-resize;
- }
-
- /**
- * Create an area to click & drag around on as the default browser behaviour is to let you drag the image
- */
- .imgCrop_dragArea {
- width: 100%;
- height: 100%;
- z-index: 200;
- position: absolute;
- top: 0;
- left: 0;
- }
-
-
- .imgCrop_previewWrap {
- width: 200px; /* @TODO : in JS */
- height: 200px; /* @TODO : in JS */
- overflow: hidden;
- position: relative;
- }
-
- /* @TODO : all in JS */
- .imgCrop_previewWrap img {
- position: absolute;
- width: 500px;
- height: 333px;
- left: -210px;
- top: -110px;
- }
-
- /**
- * These are just for the static test
- */
- .imgCrop_wrap {
- margin: 20px 0 0 50px;
- float: left;
- }
-
- #previewWrapper {
- float: left;
- margin-left: 20px;
- }
-
-
- </style>
-
- <br /><br />
-
- <!-- This is all attached to the image dynamically -->
- <div class="imgCrop_wrap">
- <img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
- <div class="imgCrop_dragArea">
- <div class="imgCrop_overlay"></div>
- <div class="imgCrop_selArea">
- <!-- marquees -->
- <!-- the inner spans are only required for IE to stop it making the divs 1px high/wide -->
- <div class="imgCrop_marqueeHoriz imgCrop_marqueeNorth"><span></span></div>
- <div class="imgCrop_marqueeVert imgCrop_marqueeEast"><span></span></div>
- <div class="imgCrop_marqueeHoriz imgCrop_marqueeSouth"><span></span></div>
- <div class="imgCrop_marqueeVert imgCrop_marqueeWest"><span></span></div>
- <!-- handles -->
- <div class="imgCrop_handle imgCrop_handleN"></div>
- <div class="imgCrop_handle imgCrop_handleNE"></div>
- <div class="imgCrop_handle imgCrop_handleE"></div>
- <div class="imgCrop_handle imgCrop_handleSE"></div>
- <div class="imgCrop_handle imgCrop_handleS"></div>
- <div class="imgCrop_handle imgCrop_handleSW"></div>
- <div class="imgCrop_handle imgCrop_handleW"></div>
- <div class="imgCrop_handle imgCrop_handleNW"></div>
- <div class="imgCrop_clickArea"></div>
- </div>
- <div class="imgCrop_clickArea"></div>
- </div>
- </div>
-
- <div id="previewWrapper">
- <h3>Preview:</h3>
- <div class="imgCrop_previewWrap">
- <img src="castle.jpg" alt="test image" id="previewImage" />
- </div>
- </div>
-</body>
-</html>
-
-
diff --git a/library/cropperjs/.babelrc b/library/cropperjs/.babelrc
new file mode 100644
index 000000000..6909c9dc9
--- /dev/null
+++ b/library/cropperjs/.babelrc
@@ -0,0 +1,10 @@
+{
+ "presets": [
+ ["env", {
+ "modules": false,
+ "targets": {
+ "browsers": ["last 2 versions", "ie >= 9"]
+ }
+ }]
+ ]
+}
diff --git a/library/cropperjs/.editorconfig b/library/cropperjs/.editorconfig
new file mode 100644
index 000000000..0f1786729
--- /dev/null
+++ b/library/cropperjs/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/library/cropperjs/.eslintrc b/library/cropperjs/.eslintrc
new file mode 100644
index 000000000..8757045b6
--- /dev/null
+++ b/library/cropperjs/.eslintrc
@@ -0,0 +1,13 @@
+{
+ "extends": "airbnb-base",
+ "env": {
+ "browser": true
+ },
+ "rules": {
+ "no-param-reassign": "off",
+ "no-restricted-properties": "off",
+ "valid-jsdoc": ["error", {
+ "requireReturn": false
+ }]
+ }
+}
diff --git a/library/cropperjs/.travis.yml b/library/cropperjs/.travis.yml
new file mode 100644
index 000000000..de9b4ae30
--- /dev/null
+++ b/library/cropperjs/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+node_js:
+ - "node"
+script:
+ - npm run lint
+ - npm run build
+ - npm test
diff --git a/library/cropperjs/CHANGELOG.md b/library/cropperjs/CHANGELOG.md
new file mode 100644
index 000000000..f0d54cd92
--- /dev/null
+++ b/library/cropperjs/CHANGELOG.md
@@ -0,0 +1,218 @@
+# Changelog
+
+## 1.2.2 (Jan 3, 2018)
+
+- Fix incorrect image natural sizes in iOS Safari (#279).
+
+## 1.2.1 (Dec 17, 2017)
+
+- Add `style` field to `package.json`.
+- Fix size error when load SVG image (#256).
+
+## 1.2.0 (Dec 17, 2017)
+
+- Allow to set the pivot of zoom (#144).
+- Fixed a bug of rotation (#260).
+
+## 1.1.3 (Oct 21, 2017)
+
+- Fixed a bug of render when disable one of `rotatable` and `scalable` options (#241).
+
+## 1.1.2 (Oct 18, 2017)
+
+- Normalize related decimal numbers when crop an image with canvas.
+
+## 1.1.1 (Oct 11, 2017)
+
+- Supports to load in node environment (#237).
+- Fixed a bug of event binding (#238).
+
+## 1.1.0 (Oct 8, 2017)
+
+- Added 4 new options to `getCroppedCanvas` method: `minWidth`, `minHeight`, `maxWidth` and `maxHeight`.
+- Enhanced image scaling: the `scaleX` and `scaleY` values should only be `1` or `-1` before, but now they can be any numbers.
+- Improved crop box resizing behaviour in the northeast, northwest, southeast and southwest directions. (#222).
+
+## 1.0.0 (Sep 3, 2017)
+
+- Fixed a bug of zoom out after cleared the crop box in view mode 1, 2 and 3 (#209).
+- Improve crop box resizing behaviour in the east, west, south and north directions (#222).
+
+## 1.0.0-rc.3 (Jul 7, 2017)
+
+- Added two new options (`imageSmoothingEnabled` and `imageSmoothingQuality`) to `getCroppedCanvas` method.
+- Fixed a bug of RegExp using (#195 by @arusakov).
+
+## 1.0.0-rc.2 (May 30, 2017)
+
+- Fixed the issue of canvas box initialization (#179).
+
+## 1.0.0-rc.1 (Apr 30, 2017)
+
+- Change the `main` field value from `dist/cropper.js` (UMD) to `dist/cropper.common.js` (CommonJS).
+- Added `module` and `browser` fields to `package.json`.
+
+## 1.0.0-rc (Mar 25, 2017)
+
+- Fixed the bug of touch zoom (#161).
+- Fixed the bug of window resize (#162).
+- Improve the `toggleDragModeOnDblclick` option (only available when the `dragMode` option is set to `crop` or `move`)
+
+## 1.0.0-beta.2 (Feb 25, 2017)
+
+- Fixed the bug of rotate square image lead image shrink (#155).
+- Improved RegExps for DataURL processing (#156).
+
+## 1.0.0-beta.1 (Jan 21, 2017)
+
+- Use CSS3 2D Transforms instead of `left` and `top` for better performance (#138).
+- Set `withCredentials` attribute when read the image data by XMLHttpRequest (#141).
+
+## 1.0.0-beta (Jan 1, 2017)
+
+- Supports to set an element for preview (#113).
+- Improved event handler for Pointer Events (#127).
+
+## 1.0.0-alpha (Dec 4, 2016)
+
+- Built JavaScript with Rollup.
+- Build CSS with PostCSS.
+- Fixed a bug of auto crop when replace the image (#83).
+
+## 0.8.1 (Sep 3, 2016)
+
+- Fixed the bug of cropping (#80).
+- Fixed the bug of calling `ready` event twice when call `replace` method (#81).
+- Fixed the bug of `getCroppedCanvas` when set `scalable` or `rotatable` to `false` (#82).
+
+## 0.8.0 (Aug 18, 2016)
+
+- Removed `build` event.
+- Renamed `built` event to `ready`.
+- Fixed the error of orientation transform.
+- Ported code to ECMAScript 6.
+
+## 0.7.2 (Jun 8, 2016)
+
+- Fixed a bug of `data-*` attributes setting and getting.
+- Fixed the calling order of `scale` and `rotate`.
+
+## 0.7.1 (May 28, 2016)
+
+- Improved the rotate and scale transform behaviour.
+- Improved the `getCroppedCanvas` method (returns the whole canvas if it is not cropped).
+- Check cross origin setting when load image by XMLHTTPRequest.
+
+## 0.7.0 (Mar 20, 2016)
+
+- Supports 7 custom events: `build`, `built`, `cropstart`, `cropmove`, `cropend`, `crop` and `zoom`.
+- The original callback options become shortcuts of these events now.
+- IE8 is no longer supported after added these custom events.
+
+## 0.6.0 (Feb 22, 2016)
+
+- Added a new parameter to the `replace` method for applying filters.
+- Improved the image initializing for Safari.
+- Fixed incorrect size limitation of the crop box (#30).
+- Fixed incorrect cropped canvas when scaleX or scaleY great than 1.
+
+## 0.5.6 (Jan 18, 2016)
+
+- Fixed crossOriginUrl undefined error when exists the `crossOrigin` property.
+- Fixed the issue in the "destroy" method (#24).
+- Optimized tests.
+
+## 0.5.5 (Jan 1, 2016)
+
+- Fixed a dimension bug in the "getCroppedCanvas" method.
+- Added an example for cropping round image.
+
+## 0.5.4 (Dec 28, 2015)
+
+- Supports to zoom from event triggering point.
+
+## 0.5.3 (Dec 24, 2015)
+
+- Limit wheel speed to prevent zoom too fast (#21)
+- Improve the `setCropBoxData` method (#22)
+
+## 0.5.2 (Dec 15, 2015)
+
+- Fix event handlers
+
+## 0.5.1 (Dec 12, 2015)
+
+- Handle Data URL (avoid to use XMLHttpRequest to open a Data URL)
+- Handle ajax error when load ArrayBuffer
+- Not to transform the image to base64 when Orientation equals to `1`
+- Fix some typos
+
+## 0.5.0 (Dec 5, 2015)
+
+- Added a new option: `checkOrientation`
+- Added a timestamp to the url of preview image
+
+## 0.4.0 (Dec 2, 2015)
+
+- Added a new option: `restore`
+- Fixed #12: Added vendor prefixes to CSS `transform`
+
+## 0.3.3 (Nov 30, 2015)
+
+- Floor the numerical parameters for `CanvasRenderingContext2D.drawImage`
+
+## 0.3.2 (Nov 18, 2015)
+
+- Fixed #10: improve new crop box creating
+
+## 0.3.1 (Nov 11, 2015)
+
+- Fixed #7: reset the `crossOrigin` when call the `replace` method
+
+## 0.3.0 (Oct 28, 2015)
+
+- Supports four view modes
+- Supports three drag modes
+- Makes the crop box's borders and handlers visible when overflow
+- Added some examples
+- Fixed some issues
+
+### Options
+
+- Added `viewMode`
+- Added `dragMode`
+- Renamed `touchDragZoom` to `zoomOnTouch`
+- Renamed `mouseWheelZoom` to `zoomOnWheel`
+- Renamed `doubleClickToggle` to `toggleDragModeOnDblclick`
+- Renamed `checkImageOrigin` to `checkCrossOrigin`
+- Removed `strict` (supported by `viewMode: 1`)
+- Removed `dragCrop` (supported by `dragMode: 'crop'`)
+
+## 0.2.1 (Oct 28, 2015)
+
+- Fix the error jQuery reference on the `setCanvasData` method
+- Fix typo on the `destroy` method
+
+## 0.2.0 (Oct 25, 2015)
+
+- Added 5 new methods: `moveTo`, `zoomTo`, `rotateTo`, `scaleX` and `scaleY`
+- Improved 4 methods: `move`, `zoom`, `rotate` and `getCanvasData`
+- Improved cropping
+
+## 0.1.1 (Oct 10, 2015)
+
+- Improved canvas limitation
+- Improved crop box limitation
+- Improved preview for cross origin image
+
+## 0.1.0 (Sep 25, 2015)
+
+- Supports touch (mobile)
+- Supports zoom
+- Supports rotation
+- Supports scale (flip)
+- Supports canvas
+- Supports multiple croppers
+- Cross-browser support
+- Supports 37 options: `aspectRatio`, `data`, `preview`, `strict`, `responsive`, `checkImageOrigin`, `modal`, `guides`, `center`, `highlight`, `background`, `autoCrop`, `autoCropArea`, `dragCrop`, `movable`, `rotatable`, `scalable`, `zoomable`, `mouseWheelZoom`, `wheelZoomRatio`, `touchDragZoom`, `cropBoxMovable`, `cropBoxResizable`, `doubleClickToggle`, `minCanvasWidth`, `minCanvasHeight`, `minCropBoxWidth`, `minCropBoxHeight`, `minContainerWidth`, `minContainerHeight`, `build`, `built`, `cropstart`, `cropmove`, `cropend`, `crop`, `zoom`.
+- Support 22 methods: `crop`, `reset`, `clear`, `replace`, `enable`, `disable`, `destroy`, `move`, `zoom`, `rotate`, `scale`, `getData`, `setData`, `getContainerData`, `getImageData`, `getCanvasData`, `setCanvasData`, `getCropBoxData`, `setCropBoxData`, `getCroppedCanvas`, `setAspectRatio`, `setDragMode`.
diff --git a/library/cropperjs/CONTRIBUTING.md b/library/cropperjs/CONTRIBUTING.md
new file mode 100644
index 000000000..7c31d7ab0
--- /dev/null
+++ b/library/cropperjs/CONTRIBUTING.md
@@ -0,0 +1,35 @@
+# Contributing to Cropper
+
+## How to report bugs
+
+### Make sure it is a Cropper bug
+
+Most bugs reported to our bug tracker are actually bugs in user code, not in Cropper code. Keep in mind that just because your code throws an error inside of Cropper, this does *not* mean the bug is a Cropper bug.
+
+Ask for help first in a discussion forum like [Stack Overflow](http://stackoverflow.com/). You will get much quicker support, and you will help avoid tying up the Cropper team with invalid bug reports.
+
+### Disable browser extensions
+
+Make sure you have reproduced the bug with all browser extensions and add-ons disabled, as these can sometimes cause things to break in interesting and unpredictable ways. Try using incognito, stealth or anonymous browsing modes.
+
+### Try the latest version of Cropper
+
+Bugs in old versions of Cropper may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the [latest release](https://github.com/fengyuanchen/cropperjs/releases/latest). We cannot fix bugs in older released files, if a bug has been fixed in a subsequent version of Cropper the site should upgrade.
+
+### Simplify the test case
+
+When experiencing a problem, [reduce your code](http://webkit.org/quality/reduction.html) to the bare minimum required to reproduce the issue. This makes it *much* easier to isolate and fix the offending code. Bugs reported without reduced test cases take on average 9001% longer to fix than bugs that are submitted with them, so you really should try to do this if at all possible.
+
+### Search for related or duplicate issues
+
+Go to the [Cropper issue tracker](https://github.com/fengyuanchen/cropperjs/issues) and make sure the problem hasn't already been reported. If not, create a new issue there and include your test case.
+
+### Browser support
+
+Remember that Cropper supports multiple browsers and their versions; any contributed code must work in all of them. You can refer to the [browser support page](https://github.com/fengyuanchen/cropperjs/blob/master/README.md#browser-support) for the current list of supported browsers.
+
+## Notes for pull request
+
+- Run the test suites in the `test` directory first.
+- Don't modify any files in the `dist` directory.
+- Follow the same code style as the library.
diff --git a/library/cropperjs/ISSUE_TEMPLATE.md b/library/cropperjs/ISSUE_TEMPLATE.md
new file mode 100644
index 000000000..0ed98b61d
--- /dev/null
+++ b/library/cropperjs/ISSUE_TEMPLATE.md
@@ -0,0 +1,21 @@
+Before opening an issue:
+
+- [Search for duplicate or closed issues](https://github.com/fengyuanchen/cropperjs/issues?utf8=%E2%9C%93&q=is%3Aissue)
+- Prepare a [reduced test case](https://css-tricks.com/reduced-test-cases/) for any bugs
+- Read the [contributing guidelines](https://github.com/fengyuanchen/cropperjs/blob/master/CONTRIBUTING.md)
+
+When asking general "how to" questions:
+
+- Please do not open an issue here
+- Instead, ask for help on [StackOverflow](http://stackoverflow.com/)
+
+When reporting a bug, include:
+
+- Operating system and version (Windows, Mac OS X, Android, iOS, Win10 Mobile)
+- Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser)
+- Reduced test cases and potential fixes using [JS Bin](https://jsbin.com), [JSFiddle](https://jsfiddle.net/) or [CodePen](https://codepen.io/)
+
+When suggesting a feature, include:
+
+- As much detail as possible for what we should add and why it's important to Cropper.js
+- Relevant links to prior art, screenshots, or live demos whenever possible
diff --git a/library/cropperjs/LICENSE b/library/cropperjs/LICENSE
new file mode 100644
index 000000000..e9b8a22b3
--- /dev/null
+++ b/library/cropperjs/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015-present Chen Fengyuan
+
+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/library/cropperjs/README.md b/library/cropperjs/README.md
new file mode 100644
index 000000000..73e8dda30
--- /dev/null
+++ b/library/cropperjs/README.md
@@ -0,0 +1,1028 @@
+# Cropper.js
+
+[![Build Status](https://travis-ci.org/fengyuanchen/cropperjs.svg)](https://travis-ci.org/fengyuanchen/cropperjs) [![Downloads](https://img.shields.io/npm/dm/cropperjs.svg)](https://www.npmjs.com/package/cropperjs) [![Version](https://img.shields.io/npm/v/cropperjs.svg)](https://www.npmjs.com/package/cropperjs)
+
+> JavaScript image cropper.
+
+- [Website](https://fengyuanchen.github.io/cropperjs)
+- [Photo Editor](https://fengyuanchen.github.io/photo-editor) - An advanced example of Cropper.js.
+
+## Table of contents
+
+- [Features](#features)
+- [Main](#main)
+- [Getting started](#getting-started)
+- [Options](#options)
+- [Methods](#methods)
+- [Events](#events)
+- [No conflict](#no-conflict)
+- [Browser support](#browser-support)
+- [Contributing](#contributing)
+- [Versioning](#versioning)
+- [License](#license)
+
+## Features
+
+- Supports 38 [options](#options)
+- Supports 27 [methods](#methods)
+- Supports 6 [events](#events)
+- Supports touch (mobile)
+- Supports zooming
+- Supports rotating
+- Supports scaling (flipping)
+- Supports multiple croppers
+- Supports to crop on a canvas
+- Supports to crop image in the browser-side by canvas
+- Supports to translate Exif Orientation information
+- Cross-browser support
+
+## Main
+
+```text
+dist/
+├── cropper.css
+├── cropper.min.css (compressed)
+├── cropper.js (UMD)
+├── cropper.min.js (UMD, compressed)
+├── cropper.common.js (CommonJS, default)
+└── cropper.esm.js (ES Module)
+```
+
+## Getting started
+
+### Installation
+
+```shell
+npm install cropperjs
+```
+
+Include files:
+
+```html
+<link href="/path/to/cropper.css" rel="stylesheet">
+<script src="/path/to/cropper.js"></script>
+```
+
+The [cdnjs](https://github.com/cdnjs/cdnjs) provides CDN support for Cropper.js's CSS and JavaScript. You can find the links [here](https://cdnjs.com/libraries/cropperjs).
+
+### Usage
+
+Initialize with `Cropper` constructor:
+
+- Browser: `window.Cropper`
+- CommonJS: `var Cropper = require('cropperjs')`
+- ES2015: `import Cropper from 'cropperjs'`
+
+```html
+<!-- Wrap the image or canvas element with a block element (container) -->
+<div>
+ <img id="image" src="picture.jpg">
+</div>
+```
+
+```css
+/* Limit image width to avoid overflow the container */
+img {
+ max-width: 100%; /* This rule is very important, please do not ignore this! */
+}
+```
+
+```js
+var image = document.getElementById('image');
+var cropper = new Cropper(image, {
+ aspectRatio: 16 / 9,
+ crop: function(e) {
+ console.log(e.detail.x);
+ console.log(e.detail.y);
+ console.log(e.detail.width);
+ console.log(e.detail.height);
+ console.log(e.detail.rotate);
+ console.log(e.detail.scaleX);
+ console.log(e.detail.scaleY);
+ }
+});
+```
+
+#### FAQ
+
+How to crop a new area after zoom in or zoom out?
+
+> Just double click your mouse to enter crop mode.
+
+How to move the image after crop an area?
+
+> Just double click your mouse to enter move mode.
+
+How to fix aspect ratio in free ratio mode?
+
+> Just hold the `shift` key when you resize the crop box.
+
+How to crop a square area in free ratio mode?
+
+> Just hold the `shift` key when you crop on the image.
+
+#### Notes
+
+- The size of the cropper inherits from the size of the image's parent element (wrapper), so be sure to wrap the image with a **visible block element**.
+ > If you are using cropper in a modal, you should initialize the cropper after the modal shown completely. Otherwise, you will not get a correct cropper.
+
+- The outputted cropped data bases on the original image size, so you can use them to crop the image directly.
+
+- If you try to start cropper on a cross-origin image, please make sure that your browser supports HTML5 [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes), and your image server supports the `Access-Control-Allow-Origin` option (see the [HTTP access control (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)).
+
+#### Known issues
+
+- [Known iOS resource limits](https://developer.apple.com/library/mac/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html): As iOS devices limit memory, the browser may crash when you are cropping a large image (iPhone camera resolution). To avoid this, you may resize the image first (preferably below 1024 pixels) before start a cropper.
+
+- Known image size increase: When export the cropped image on browser-side with the `HTMLCanvasElement.toDataURL` method, the size of the exported image may be greater than the original image's. This is because the type of the exported image is not the same as the original image's. So just pass the type the original image's as the first parameter to `toDataURL` to fix this. For example, if the original type is JPEG, then use `cropper.getCroppedCanvas().toDataURL('image/jpeg')` to export image.
+
+[⬆ back to top](#table-of-contents)
+
+## Options
+
+You may set cropper options with `new Cropper(image, options)`.
+If you want to change the global default options, You may use `Cropper.setDefaults(options)`.
+
+### viewMode
+
+- Type: `Number`
+- Default: `0`
+- Options:
+ - `0`: no restrictions
+ - `1`: restrict the crop box to not exceed the size of the canvas.
+ - `2`: restrict the minimum canvas size to fit within the container. If the proportions of the the canvas and the container differ, the minimum canvas will be surrounded by extra space in one of the dimensions.
+ - `3`: restrict the minimum canvas size to fill fit the container. If the proportions of the canvas and the container are different, the container will not be able to fit the whole canvas in one of the dimensions.
+
+Define the view mode of the cropper. If you set `viewMode` to `0`, the crop box can extend outside the canvas, while a value of `1`, `2` or `3` will restrict the crop box to the size of the canvas. A `viewMode` of `2` or `3` will additionally restrict the canvas to the container. Note that if the proportions of the canvas and the container are the same, there is no difference between `2` and `3`.
+
+### dragMode
+
+- Type: `String`
+- Default: `'crop'`
+- Options:
+ - `'crop'`: create a new crop box
+ - `'move'`: move the canvas
+ - `'none'`: do nothing
+
+Define the dragging mode of the cropper.
+
+### aspectRatio
+
+- Type: `Number`
+- Default: `NaN`
+
+Set the aspect ratio of the crop box. By default, the crop box is free ratio.
+
+### data
+
+- Type: `Object`
+- Default: `null`
+
+The previous cropped data if you had stored, will be passed to `setData` method automatically when built.
+
+### preview
+
+- Type: `Element` or `String`
+- Default: `''`
+- An element or A valid selector for [Document.querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll)
+
+Add extra elements (containers) for previewing.
+
+**Notes:**
+
+- The maximum width is the initial width of preview container.
+- The maximum height is the initial height of preview container.
+- If you set an `aspectRatio` option, be sure to set the same aspect ratio to the preview container.
+- If preview is not getting properly displayed, set `overflow: hidden` style to the preview container.
+
+### responsive
+
+- Type: `Boolean`
+- Default: `true`
+
+Re-render the cropper when resize the window.
+
+### restore
+
+- Type: `Boolean`
+- Default: `true`
+
+Restore the cropped area after resize the window.
+
+### checkCrossOrigin
+
+- Type: `Boolean`
+- Default: `true`
+
+Check if the current image is a cross-origin image.
+
+If it is, when clone the image, a `crossOrigin` attribute will be added to the cloned image element and a timestamp will be added to the `src` attribute to reload the source image to avoid browser cache error.
+
+By adding `crossOrigin` attribute to image will stop adding timestamp to image url and stop reload of image, but the request (XMLHttpRequest) to read the image data for orientation checking will require a timestamp now.
+
+If the value of the image's `crossOrigin` attribute is `"use-credentials"`, then the `withCredentials` attribute will set to `true` when read the image data by XMLHttpRequest.
+
+### checkOrientation
+
+- Type: `Boolean`
+- Default: `true`
+
+Check the current image's Exif Orientation information.
+
+More exactly, read the Orientation value for rotating or flipping the image, and then override the Orientation value with `1` (the default value) to avoid some issues ([1](https://github.com/fengyuanchen/cropper/issues/120), [2](https://github.com/fengyuanchen/cropper/issues/509)) on iOS devices.
+
+Requires to set both the `rotatable` and `scalable` options to `true` at the same time.
+
+**Note:** Don't trust this all the time as some JPG images have incorrect (not standard) Orientation values.
+
+> Requires [Typed Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) support ([IE 10+](http://caniuse.com/typedarrays)).
+
+### modal
+
+- Type: `Boolean`
+- Default: `true`
+
+Show the black modal above the image and under the crop box.
+
+### guides
+
+- Type: `Boolean`
+- Default: `true`
+
+Show the dashed lines above the crop box.
+
+### center
+
+- Type: `Boolean`
+- Default: `true`
+
+Show the center indicator above the crop box.
+
+### highlight
+
+- Type: `Boolean`
+- Default: `true`
+
+Show the white modal above the crop box (highlight the crop box).
+
+### background
+
+- Type: `Boolean`
+- Default: `true`
+
+Show the grid background of the container.
+
+### autoCrop
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to crop the image automatically when initialize.
+
+### autoCropArea
+
+- Type: `Number`
+- Default: `0.8` (80% of the image)
+
+A number between 0 and 1. Define the automatic cropping area size (percentage).
+
+### movable
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to move the image.
+
+### rotatable
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to rotate the image.
+
+### scalable
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to scale the image.
+
+### zoomable
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to zoom the image.
+
+### zoomOnTouch
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to zoom the image by dragging touch.
+
+### zoomOnWheel
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to zoom the image by wheeling mouse.
+
+### wheelZoomRatio
+
+- Type: `Number`
+- Default: `0.1`
+
+Define zoom ratio when zoom the image by wheeling mouse.
+
+### cropBoxMovable
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to move the crop box by dragging.
+
+### cropBoxResizable
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to resize the crop box by dragging.
+
+### toggleDragModeOnDblclick
+
+- Type: `Boolean`
+- Default: `true`
+
+Enable to toggle drag mode between "crop" and "move" when click twice on the cropper.
+
+### minContainerWidth
+
+- Type: `Number`
+- Default: `200`
+
+The minimum width of the container.
+
+### minContainerHeight
+
+- Type: `Number`
+- Default: `100`
+
+The minimum height of the container.
+
+### minCanvasWidth
+
+- Type: `Number`
+- Default: `0`
+
+The minimum width of the canvas (image wrapper).
+
+### minCanvasHeight
+
+- Type: `Number`
+- Default: `0`
+
+The minimum height of the canvas (image wrapper).
+
+### minCropBoxWidth
+
+- Type: `Number`
+- Default: `0`
+
+The minimum width of the crop box.
+
+**Note:** This size is relative to the page, not the image.
+
+### minCropBoxHeight
+
+- Type: `Number`
+- Default: `0`
+
+The minimum height of the crop box.
+
+**Note:** This size is relative to the page, not the image.
+
+### ready
+
+- Type: `Function`
+- Default: `null`
+
+A shortcut of the "ready" event.
+
+### cropstart
+
+- Type: `Function`
+- Default: `null`
+
+A shortcut of the "cropstart" event.
+
+### cropmove
+
+- Type: `Function`
+- Default: `null`
+
+A shortcut of the "cropmove" event.
+
+### cropend
+
+- Type: `Function`
+- Default: `null`
+
+A shortcut of the "cropend" event.
+
+### crop
+
+- Type: `Function`
+- Default: `null`
+
+A shortcut of the "crop" event.
+
+### zoom
+
+- Type: `Function`
+- Default: `null`
+
+A shortcut of the "zoom" event.
+
+[⬆ back to top](#table-of-contents)
+
+## Methods
+
+As there is an **asynchronous** process when load the image, you **should call most of the methods after ready**, except "setAspectRatio", "replace" and "destroy".
+
+> If a method doesn't need to return any value, it will return the cropper instance (`this`) for chain composition.
+
+```js
+new Cropper(image, {
+ ready: function () {
+ // this.cropper[method](argument1, , argument2, ..., argumentN);
+ this.cropper.move(1, -1);
+
+ // Allows chain composition
+ this.cropper.move(1, -1).rotate(45).scale(1, -1);
+ }
+});
+```
+
+### crop()
+
+Show the crop box manually.
+
+```js
+new Cropper(image, {
+ autoCrop: false,
+ ready: function () {
+ // Do something here
+ // ...
+
+ // And then
+ this.cropper.crop();
+ }
+});
+```
+
+### reset()
+
+Reset the image and crop box to their initial states.
+
+### clear()
+
+Clear the crop box.
+
+### replace(url[, onlyColorChanged])
+
+- **url**:
+ - Type: `String`
+ - A new image url.
+
+- **onlyColorChanged** (optional):
+ - Type: `Boolean`
+ - If only change the color, not the size, then the cropper only need to change the srcs of all related images, not need to rebuild the cropper. This can be used for applying filters.
+ - If not present, its default value is `false`.
+
+Replace the image's src and rebuild the cropper.
+
+### enable()
+
+Enable (unfreeze) the cropper.
+
+### disable()
+
+Disable (freeze) the cropper.
+
+### destroy()
+
+Destroy the cropper and remove the instance from the image.
+
+### move(offsetX[, offsetY])
+
+- **offsetX**:
+ - Type: `Number`
+ - Moving size (px) in the horizontal direction.
+
+- **offsetY** (optional):
+ - Type: `Number`
+ - Moving size (px) in the vertical direction.
+ - If not present, its default value is `offsetX`.
+
+Move the canvas (image wrapper) with relative offsets.
+
+```js
+cropper.move(1);
+cropper.move(1, 0);
+cropper.move(0, -1);
+```
+
+### moveTo(x[, y])
+
+- **x**:
+ - Type: `Number`
+ - The `left` value of the canvas
+
+- **y** (optional):
+ - Type: `Number`
+ - The `top` value of the canvas
+ - If not present, its default value is `x`.
+
+Move the canvas (image wrapper) to an absolute point.
+
+### zoom(ratio)
+
+- **ratio**:
+ - Type: `Number`
+ - Zoom in: requires a positive number (ratio > 0)
+ - Zoom out: requires a negative number (ratio < 0)
+
+Zoom the canvas (image wrapper) with a relative ratio.
+
+```js
+cropper.zoom(0.1);
+cropper.zoom(-0.1);
+```
+
+### zoomTo(ratio[, pivot])
+
+- **ratio**:
+ - Type: `Number`
+ - Requires a positive number (ratio > 0)
+
+- **pivot** (optional):
+ - Type: `Object`
+ - Schema: `{ x: Number, y: Number }`
+ - The coordinate of the center point for zooming, base on the top left corner of the cropper container.
+
+Zoom the canvas (image wrapper) to an absolute ratio.
+
+```js
+cropper.zoomTo(1); // 1:1 (canvasData.width === canvasData.naturalWidth)
+
+const containerData = cropper.getContainerData();
+
+// Zoom to 50% from the center of the container.
+cropper.zoomTo(.5, {
+ x: containerData.width / 2,
+ y: containerData.height / 2,
+});
+```
+
+### rotate(degree)
+
+- **degree**:
+ - Type: `Number`
+ - Rotate right: requires a positive number (degree > 0)
+ - Rotate left: requires a negative number (degree < 0)
+
+Rotate the image with a relative degree.
+
+> Requires [CSS3 2D Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) support ([IE 9+](http://caniuse.com/transforms2d)).
+
+```js
+cropper.rotate(90);
+cropper.rotate(-90);
+```
+
+### rotateTo(degree)
+
+- **degree**:
+ - Type: `Number`
+
+Rotate the image to an absolute degree.
+
+### scale(scaleX[, scaleY])
+
+- **scaleX**:
+ - Type: `Number`
+ - Default: `1`
+ - The scaling factor to apply on the abscissa of the image.
+ - When equal to `1` it does nothing.
+
+- **scaleY** (optional):
+ - Type: `Number`
+ - The scaling factor to apply on the ordinate of the image.
+ - If not present, its default value is `scaleX`.
+
+Scale the image.
+
+> Requires [CSS3 2D Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) support ([IE 9+](http://caniuse.com/transforms2d)).
+
+```js
+cropper.scale(-1); // Flip both horizontal and vertical
+cropper.scale(-1, 1); // Flip horizontal
+cropper.scale(1, -1); // Flip vertical
+```
+
+### scaleX(scaleX)
+
+- **scaleX**:
+ - Type: `Number`
+ - Default: `1`
+ - The scaling factor to apply on the abscissa of the image.
+ - When equal to `1` it does nothing.
+
+Scale the abscissa of the image.
+
+### scaleY(scaleY)
+
+- **scaleY**:
+ - Type: `Number`
+ - Default: `1`
+ - The scaling factor to apply on the ordinate of the image.
+ - When equal to `1` it does nothing.
+
+Scale the ordinate of the image.
+
+### getData([rounded])
+
+- **rounded** (optional):
+ - Type: `Boolean`
+ - Default: `false`
+ - Set `true` to get rounded values.
+
+- (return value):
+ - Type: `Object`
+ - Properties:
+ - `x`: the offset left of the cropped area
+ - `y`: the offset top of the cropped area
+ - `width`: the width of the cropped area
+ - `height`: the height of the cropped area
+ - `rotate`: the rotated degrees of the image
+ - `scaleX`: the scaling factor to apply on the abscissa of the image
+ - `scaleY`: the scaling factor to apply on the ordinate of the image
+
+Output the final cropped area position and size data (base on the natural size of the original image).
+
+> You can send the data to server-side to crop the image directly:
+> 1. Rotate the image with the `rotate` property.
+> 1. Scale the image with the `scaleX` and `scaleY` properties.
+> 1. Crop the image with the `x`, `y`, `width` and `height` properties.
+
+![A schematic diagram for data's properties](docs/images/data.jpg)
+
+### setData(data)
+
+- **data**:
+ - Type: `Object`
+ - Properties: See the [`getData`](#getdatarounded) method.
+ - You may need to round the data properties before passing them in.
+
+Change the cropped area position and size with new data (base on the original image).
+
+> **Note:** This method only available when the `viewMode` option great than or equal to `1`.
+
+### getContainerData()
+
+- (return value):
+ - Type: `Object`
+ - Properties:
+ - `width`: the current width of the container
+ - `height`: the current height of the container
+
+Output the container size data.
+
+![A schematic diagram for cropper's layers](docs/images/layers.jpg)
+
+### getImageData()
+
+- (return value):
+ - Type: `Object`
+ - Properties:
+ - `left`: the offset left of the image
+ - `top`: the offset top of the image
+ - `width`: the width of the image
+ - `height`: the height of the image
+ - `naturalWidth`: the natural width of the image
+ - `naturalHeight`: the natural height of the image
+ - `aspectRatio`: the aspect ratio of the image
+ - `rotate`: the rotated degrees of the image if rotated
+ - `scaleX`: the scaling factor to apply on the abscissa of the image if scaled
+ - `scaleY`: the scaling factor to apply on the ordinate of the image if scaled
+
+Output the image position, size and other related data.
+
+### getCanvasData()
+
+- (return value):
+ - Type: `Object`
+ - Properties:
+ - `left`: the offset left of the canvas
+ - `top`: the offset top of the canvas
+ - `width`: the width of the canvas
+ - `height`: the height of the canvas
+ - `naturalWidth`: the natural width of the canvas (read only)
+ - `naturalHeight`: the natural height of the canvas (read only)
+
+Output the canvas (image wrapper) position and size data.
+
+```js
+var imageData = cropper.getImageData();
+var canvasData = cropper.getCanvasData();
+
+if (imageData.rotate % 180 === 0) {
+ console.log(canvasData.naturalWidth === imageData.naturalWidth); // true
+}
+```
+
+### setCanvasData(data)
+
+- **data**:
+ - Type: `Object`
+ - Properties:
+ - `left`: the new offset left of the canvas
+ - `top`: the new offset top of the canvas
+ - `width`: the new width of the canvas
+ - `height`: the new height of the canvas
+
+Change the canvas (image wrapper) position and size with new data.
+
+### getCropBoxData()
+
+- (return value):
+ - Type: `Object`
+ - Properties:
+ - `left`: the offset left of the crop box
+ - `top`: the offset top of the crop box
+ - `width`: the width of the crop box
+ - `height`: the height of the crop box
+
+Output the crop box position and size data.
+
+### setCropBoxData(data)
+
+- **data**:
+ - Type: `Object`
+ - Properties:
+ - `left`: the new offset left of the crop box
+ - `top`: the new offset top of the crop box
+ - `width`: the new width of the crop box
+ - `height`: the new height of the crop box
+
+Change the crop box position and size with new data.
+
+### getCroppedCanvas([options])
+
+- **options** (optional):
+ - Type: `Object`
+ - Properties:
+ - `width`: the destination width of the output canvas.
+ - `height`: the destination height of the output canvas.
+ - `minWidth`: the minimum destination width of the output canvas, the default value is `0`.
+ - `minHeight`: the minimum destination height of the output canvas, the default value is `0`.
+ - `maxWidth`: the maximum destination width of the output canvas, the default value is `Infinity`.
+ - `maxHeight`: the maximum destination height of the output canvas, the default value is `Infinity`.
+ - `fillColor`: a color to fill any alpha values in the output canvas, the default value is `transparent`.
+ - [`imageSmoothingEnabled`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled): set to change if images are smoothed (`true`, default) or not (`false`).
+ - [`imageSmoothingQuality`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality): set the quality of image smoothing, one of "low" (default), "medium", or "high".
+
+- (return value):
+ - Type: `HTMLCanvasElement`
+ - A canvas drawn the cropped image.
+
+- Notes:
+ - The aspect ratio of the output canvas will be fitted to aspect ratio of the crop box automatically.
+ - If you intend to get a JPEG image from the output canvas, you should set the `fillColor` option first, if not, the transparent part in the JPEG image will become black by default.
+
+- Browser support:
+ - Basic image: requires [Canvas](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) support ([IE 9+](http://caniuse.com/canvas)).
+ - Rotated image: requires [CSS3 2D Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) support ([IE 9+](http://caniuse.com/transforms2d)).
+ - Cross-origin image: requires HTML5 [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) support ([IE 11+](http://caniuse.com/cors)).
+
+Get a canvas drawn the cropped image. If it is not cropped, then returns a canvas drawn the whole image.
+
+> After then, you can display the canvas as an image directly, or use [HTMLCanvasElement.toDataURL](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) to get a Data URL, or use [HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) to get a blob and upload it to server with [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) if the browser supports these APIs.
+
+Avoid to get a blank output image, you might need to set the `maxWidth` and `maxHeight` properties to limited numbers, because of [the size limits of a canvas element](https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element).
+
+```js
+cropper.getCroppedCanvas();
+
+cropper.getCroppedCanvas({
+ width: 160,
+ height: 90,
+ minWidth: 256,
+ minHeight: 256,
+ maxWidth: 4096,
+ maxHeight: 4096,
+ fillColor: '#fff',
+ imageSmoothingEnabled: false,
+ imageSmoothingQuality: 'high',
+});
+
+// Upload cropped image to server if the browser supports `HTMLCanvasElement.toBlob`
+cropper.getCroppedCanvas().toBlob(function (blob) {
+ var formData = new FormData();
+
+ formData.append('croppedImage', blob);
+
+ // Use `jQuery.ajax` method
+ $.ajax('/path/to/upload', {
+ method: "POST",
+ data: formData,
+ processData: false,
+ contentType: false,
+ success: function () {
+ console.log('Upload success');
+ },
+ error: function () {
+ console.log('Upload error');
+ }
+ });
+});
+```
+
+### setAspectRatio(aspectRatio)
+
+- **aspectRatio**:
+ - Type: `Number`
+ - Requires a positive number.
+
+Change the aspect ratio of the crop box.
+
+### setDragMode([mode])
+
+- **mode** (optional):
+ - Type: `String`
+ - Default: `'none'`
+ - Options: `'none'`, `'crop'`, `'move'`
+
+Change the drag mode.
+
+**Tips:** You can toggle the "crop" and "move" mode by double click on the cropper.
+
+[⬆ back to top](#table-of-contents)
+
+## Events
+
+### ready
+
+This event fires when the target image has been loaded and the cropper instance is ready for cropping.
+
+```js
+var cropper;
+
+image.addEventListener('ready', function () {
+ console.log(this.cropper === cropper);
+ // -> true
+});
+
+cropper = new Cropper(image);
+```
+
+### cropstart
+
+- **event.detail.originalEvent**:
+ - Type: `Event`
+ - Options: `mousedown`, `touchstart` and `pointerdown`
+
+- **event.detail.action**:
+ - Type: `String`
+ - Options:
+ - `'crop'`: create a new crop box
+ - `'move'`: move the canvas (image wrapper)
+ - `'zoom'`: zoom in / out the canvas (image wrapper) by touch.
+ - `'e'`: resize the east side of the crop box
+ - `'w'`: resize the west side of the crop box
+ - `'s'`: resize the south side of the crop box
+ - `'n'`: resize the north side of the crop box
+ - `'se'`: resize the southeast side of the crop box
+ - `'sw'`: resize the southwest side of the crop box
+ - `'ne'`: resize the northeast side of the crop box
+ - `'nw'`: resize the northwest side of the crop box
+ - `'all'`: move the crop box (all directions)
+
+This event fires when the canvas (image wrapper) or the crop box starts to change.
+
+```js
+image.addEventListener('cropstart', function (e) {
+ console.log(e.detail.originalEvent);
+ console.log(e.detail.action);
+});
+```
+
+### cropmove
+
+- **event.detail.originalEvent**:
+ - Type: `Event`
+ - Options: `mousemove`, `touchmove` and `pointermove`.
+
+- **event.detail.action**: the same as "cropstart".
+
+This event fires when the canvas (image wrapper) or the crop box is changing.
+
+### cropend
+
+- **event.detail.originalEvent**:
+ - Type: `Event`
+ - Options: `mouseup`, `touchend`, `touchcancel`, `pointerup` and `pointercancel`.
+
+- **event.detail.action**: the same as "cropstart".
+
+This event fires when the canvas (image wrapper) or the crop box stops to change.
+
+### crop
+
+- **event.detail.x**
+- **event.detail.y**
+- **event.detail.width**
+- **event.detail.height**
+- **event.detail.rotate**
+- **event.detail.scaleX**
+- **event.detail.scaleY**
+
+> About these properties, see the [`getData`](#getdatarounded) method.
+
+This event fires when the canvas (image wrapper) or the crop box changed.
+
+### zoom
+
+- **event.detail.originalEvent**:
+ - Type: `Event`
+ - Options: `wheel`, `touchmove`.
+
+- **event.detail.oldRatio**:
+ - Type: `Number`
+ - The old (current) ratio of the canvas
+
+- **event.detail.ratio**:
+ - Type: `Number`
+ - The new (next) ratio of the canvas (`canvasData.width / canvasData.naturalWidth`)
+
+This event fires when a cropper instance starts to zoom in or zoom out its canvas (image wrapper).
+
+```js
+image.addEventListener('zoom', function (e) {
+
+ // Zoom in
+ if (e.detail.ratio > e.detail.oldRatio) {
+ e.preventDefault(); // Prevent zoom in
+ }
+
+ // Zoom out
+ // ...
+});
+```
+
+[⬆ back to top](#table-of-contents)
+
+## No conflict
+
+If you have to use other cropper with the same namespace, just call the `Cropper.noConflict` static method to revert to it.
+
+```html
+<script src="other-cropper.js"></script>
+<script src="cropper.js"></script>
+<script>
+ Cropper.noConflict();
+ // Code that uses other `Cropper` can follow here.
+</script>
+```
+
+## Browser support
+
+- Chrome (latest)
+- Firefox (latest)
+- Safari (latest)
+- Opera (latest)
+- Edge (latest)
+- Internet Explorer 9+
+
+## Contributing
+
+Please read through our [contributing guidelines](CONTRIBUTING.md).
+
+## Versioning
+
+Maintained under the [Semantic Versioning guidelines](http://semver.org/).
+
+## License
+
+[MIT](http://opensource.org/licenses/MIT) © [Chen Fengyuan](http://chenfengyuan.com)
+
+## Related projects
+
+- [angular-cropperjs](https://github.com/matheusdavidson/angular-cropperjs) by @matheusdavidson
+- [ember-cropperjs](https://github.com/danielthall/ember-cropperjs) by @danielthall
+- [iron-cropper](https://www.webcomponents.org/element/safetychanger/iron-cropper) (web component) by @safetychanger
+- [react-cropper](https://github.com/roadmanfong/react-cropper) by @roadmanfong
+- [vue-cropperjs](https://github.com/Agontuk/vue-cropperjs) by @Agontuk
+
+[⬆ back to top](#table-of-contents)
diff --git a/library/cropperjs/dist/cropper.common.js b/library/cropperjs/dist/cropper.common.js
new file mode 100644
index 000000000..38c62e824
--- /dev/null
+++ b/library/cropperjs/dist/cropper.common.js
@@ -0,0 +1,3760 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:27:18.062Z
+ */
+
+'use strict';
+
+var WINDOW = typeof window !== 'undefined' ? window : {};
+var NAMESPACE = 'cropper';
+
+// Actions
+var ACTION_ALL = 'all';
+var ACTION_CROP = 'crop';
+var ACTION_MOVE = 'move';
+var ACTION_ZOOM = 'zoom';
+var ACTION_EAST = 'e';
+var ACTION_WEST = 'w';
+var ACTION_SOUTH = 's';
+var ACTION_NORTH = 'n';
+var ACTION_NORTH_EAST = 'ne';
+var ACTION_NORTH_WEST = 'nw';
+var ACTION_SOUTH_EAST = 'se';
+var ACTION_SOUTH_WEST = 'sw';
+
+// Classes
+var CLASS_CROP = NAMESPACE + '-crop';
+var CLASS_DISABLED = NAMESPACE + '-disabled';
+var CLASS_HIDDEN = NAMESPACE + '-hidden';
+var CLASS_HIDE = NAMESPACE + '-hide';
+var CLASS_INVISIBLE = NAMESPACE + '-invisible';
+var CLASS_MODAL = NAMESPACE + '-modal';
+var CLASS_MOVE = NAMESPACE + '-move';
+
+// Data keys
+var DATA_ACTION = 'action';
+var DATA_PREVIEW = 'preview';
+
+// Drag modes
+var DRAG_MODE_CROP = 'crop';
+var DRAG_MODE_MOVE = 'move';
+var DRAG_MODE_NONE = 'none';
+
+// Events
+var EVENT_CROP = 'crop';
+var EVENT_CROP_END = 'cropend';
+var EVENT_CROP_MOVE = 'cropmove';
+var EVENT_CROP_START = 'cropstart';
+var EVENT_DBLCLICK = 'dblclick';
+var EVENT_ERROR = 'error';
+var EVENT_LOAD = 'load';
+var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown';
+var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove';
+var EVENT_POINTER_UP = WINDOW.PointerEvent ? 'pointerup pointercancel' : 'touchend touchcancel mouseup';
+var EVENT_READY = 'ready';
+var EVENT_RESIZE = 'resize';
+var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';
+var EVENT_ZOOM = 'zoom';
+
+// RegExps
+var REGEXP_ACTIONS = /^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;
+var REGEXP_DATA_URL = /^data:/;
+var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/;
+var REGEXP_TAG_NAME = /^(img|canvas)$/i;
+
+var DEFAULTS = {
+ // Define the view mode of the cropper
+ viewMode: 0, // 0, 1, 2, 3
+
+ // Define the dragging mode of the cropper
+ dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none'
+
+ // Define the aspect ratio of the crop box
+ aspectRatio: NaN,
+
+ // An object with the previous cropping result data
+ data: null,
+
+ // A selector for adding extra containers to preview
+ preview: '',
+
+ // Re-render the cropper when resize the window
+ responsive: true,
+
+ // Restore the cropped area after resize the window
+ restore: true,
+
+ // Check if the current image is a cross-origin image
+ checkCrossOrigin: true,
+
+ // Check the current image's Exif Orientation information
+ checkOrientation: true,
+
+ // Show the black modal
+ modal: true,
+
+ // Show the dashed lines for guiding
+ guides: true,
+
+ // Show the center indicator for guiding
+ center: true,
+
+ // Show the white modal to highlight the crop box
+ highlight: true,
+
+ // Show the grid background
+ background: true,
+
+ // Enable to crop the image automatically when initialize
+ autoCrop: true,
+
+ // Define the percentage of automatic cropping area when initializes
+ autoCropArea: 0.8,
+
+ // Enable to move the image
+ movable: true,
+
+ // Enable to rotate the image
+ rotatable: true,
+
+ // Enable to scale the image
+ scalable: true,
+
+ // Enable to zoom the image
+ zoomable: true,
+
+ // Enable to zoom the image by dragging touch
+ zoomOnTouch: true,
+
+ // Enable to zoom the image by wheeling mouse
+ zoomOnWheel: true,
+
+ // Define zoom ratio when zoom the image by wheeling mouse
+ wheelZoomRatio: 0.1,
+
+ // Enable to move the crop box
+ cropBoxMovable: true,
+
+ // Enable to resize the crop box
+ cropBoxResizable: true,
+
+ // Toggle drag mode between "crop" and "move" when click twice on the cropper
+ toggleDragModeOnDblclick: true,
+
+ // Size limitation
+ minCanvasWidth: 0,
+ minCanvasHeight: 0,
+ minCropBoxWidth: 0,
+ minCropBoxHeight: 0,
+ minContainerWidth: 200,
+ minContainerHeight: 100,
+
+ // Shortcuts of events
+ ready: null,
+ cropstart: null,
+ cropmove: null,
+ cropend: null,
+ crop: null,
+ zoom: null
+};
+
+var TEMPLATE = '<div class="cropper-container">' + '<div class="cropper-wrap-box">' + '<div class="cropper-canvas"></div>' + '</div>' + '<div class="cropper-drag-box"></div>' + '<div class="cropper-crop-box">' + '<span class="cropper-view-box"></span>' + '<span class="cropper-dashed dashed-h"></span>' + '<span class="cropper-dashed dashed-v"></span>' + '<span class="cropper-center"></span>' + '<span class="cropper-face"></span>' + '<span class="cropper-line line-e" data-action="e"></span>' + '<span class="cropper-line line-n" data-action="n"></span>' + '<span class="cropper-line line-w" data-action="w"></span>' + '<span class="cropper-line line-s" data-action="s"></span>' + '<span class="cropper-point point-e" data-action="e"></span>' + '<span class="cropper-point point-n" data-action="n"></span>' + '<span class="cropper-point point-w" data-action="w"></span>' + '<span class="cropper-point point-s" data-action="s"></span>' + '<span class="cropper-point point-ne" data-action="ne"></span>' + '<span class="cropper-point point-nw" data-action="nw"></span>' + '<span class="cropper-point point-sw" data-action="sw"></span>' + '<span class="cropper-point point-se" data-action="se"></span>' + '</div>' + '</div>';
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+} : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+};
+
+
+
+
+
+
+
+
+
+
+
+var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+}();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var toConsumableArray = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+};
+
+/**
+ * Check if the given value is not a number.
+ */
+var isNaN = Number.isNaN || WINDOW.isNaN;
+
+/**
+ * Check if the given value is a number.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a number, else `false`.
+ */
+function isNumber(value) {
+ return typeof value === 'number' && !isNaN(value);
+}
+
+/**
+ * Check if the given value is undefined.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is undefined, else `false`.
+ */
+function isUndefined(value) {
+ return typeof value === 'undefined';
+}
+
+/**
+ * Check if the given value is an object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is an object, else `false`.
+ */
+function isObject(value) {
+ return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null;
+}
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * Check if the given value is a plain object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.
+ */
+
+function isPlainObject(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+
+ try {
+ var _constructor = value.constructor;
+ var prototype = _constructor.prototype;
+
+
+ return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');
+ } catch (e) {
+ return false;
+ }
+}
+
+/**
+ * Check if the given value is a function.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a function, else `false`.
+ */
+function isFunction(value) {
+ return typeof value === 'function';
+}
+
+/**
+ * Iterate the given data.
+ * @param {*} data - The data to iterate.
+ * @param {Function} callback - The process function for each element.
+ * @returns {*} The original data.
+ */
+function each(data, callback) {
+ if (data && isFunction(callback)) {
+ if (Array.isArray(data) || isNumber(data.length) /* array-like */) {
+ var length = data.length;
+
+ var i = void 0;
+
+ for (i = 0; i < length; i += 1) {
+ if (callback.call(data, data[i], i, data) === false) {
+ break;
+ }
+ }
+ } else if (isObject(data)) {
+ Object.keys(data).forEach(function (key) {
+ callback.call(data, data[key], key, data);
+ });
+ }
+ }
+
+ return data;
+}
+
+/**
+ * Extend the given object.
+ * @param {*} obj - The object to be extended.
+ * @param {*} args - The rest objects which will be merged to the first object.
+ * @returns {Object} The extended object.
+ */
+function extend(obj) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ if (isObject(obj) && args.length > 0) {
+ if (Object.assign) {
+ return Object.assign.apply(Object, [obj].concat(args));
+ }
+
+ args.forEach(function (arg) {
+ if (isObject(arg)) {
+ Object.keys(arg).forEach(function (key) {
+ obj[key] = arg[key];
+ });
+ }
+ });
+ }
+
+ return obj;
+}
+
+/**
+ * Takes a function and returns a new one that will always have a particular context.
+ * @param {Function} fn - The target function.
+ * @param {Object} context - The new context for the function.
+ * @returns {boolean} The new function.
+ */
+function proxy(fn, context) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ return function () {
+ for (var _len3 = arguments.length, args2 = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args2[_key3] = arguments[_key3];
+ }
+
+ return fn.apply(context, args.concat(args2));
+ };
+}
+
+var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/i;
+
+/**
+ * Normalize decimal number.
+ * Check out {@link http://0.30000000000000004.com/ }
+ * @param {number} value - The value to normalize.
+ * @param {number} [times=100000000000] - The times for normalizing.
+ * @returns {number} Returns the normalized number.
+ */
+function normalizeDecimalNumber(value) {
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;
+
+ return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;
+}
+
+var REGEXP_SUFFIX = /^(width|height|left|top|marginLeft|marginTop)$/;
+
+/**
+ * Apply styles to the given element.
+ * @param {Element} element - The target element.
+ * @param {Object} styles - The styles for applying.
+ */
+function setStyle(element, styles) {
+ var style = element.style;
+
+
+ each(styles, function (value, property) {
+ if (REGEXP_SUFFIX.test(property) && isNumber(value)) {
+ value += 'px';
+ }
+
+ style[property] = value;
+ });
+}
+
+/**
+ * Check if the given element has a special class.
+ * @param {Element} element - The element to check.
+ * @param {string} value - The class to search.
+ * @returns {boolean} Returns `true` if the special class was found.
+ */
+function hasClass(element, value) {
+ return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;
+}
+
+/**
+ * Add classes to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be added.
+ */
+function addClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ addClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.add(value);
+ return;
+ }
+
+ var className = element.className.trim();
+
+ if (!className) {
+ element.className = value;
+ } else if (className.indexOf(value) < 0) {
+ element.className = className + ' ' + value;
+ }
+}
+
+/**
+ * Remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be removed.
+ */
+function removeClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ removeClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.remove(value);
+ return;
+ }
+
+ if (element.className.indexOf(value) >= 0) {
+ element.className = element.className.replace(value, '');
+ }
+}
+
+/**
+ * Add or remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be toggled.
+ * @param {boolean} added - Add only.
+ */
+function toggleClass(element, value, added) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ toggleClass(elem, value, added);
+ });
+ return;
+ }
+
+ // IE10-11 doesn't support the second parameter of `classList.toggle`
+ if (added) {
+ addClass(element, value);
+ } else {
+ removeClass(element, value);
+ }
+}
+
+var REGEXP_HYPHENATE = /([a-z\d])([A-Z])/g;
+
+/**
+ * Hyphenate the given value.
+ * @param {string} value - The value to hyphenate.
+ * @returns {string} The hyphenated value.
+ */
+function hyphenate(value) {
+ return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();
+}
+
+/**
+ * Get data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to get.
+ * @returns {string} The data value.
+ */
+function getData(element, name) {
+ if (isObject(element[name])) {
+ return element[name];
+ } else if (element.dataset) {
+ return element.dataset[name];
+ }
+
+ return element.getAttribute('data-' + hyphenate(name));
+}
+
+/**
+ * Set data to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to set.
+ * @param {string} data - The data value.
+ */
+function setData(element, name, data) {
+ if (isObject(data)) {
+ element[name] = data;
+ } else if (element.dataset) {
+ element.dataset[name] = data;
+ } else {
+ element.setAttribute('data-' + hyphenate(name), data);
+ }
+}
+
+/**
+ * Remove data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to remove.
+ */
+function removeData(element, name) {
+ if (isObject(element[name])) {
+ try {
+ delete element[name];
+ } catch (e) {
+ element[name] = null;
+ }
+ } else if (element.dataset) {
+ // #128 Safari not allows to delete dataset property
+ try {
+ delete element.dataset[name];
+ } catch (e) {
+ element.dataset[name] = null;
+ }
+ } else {
+ element.removeAttribute('data-' + hyphenate(name));
+ }
+}
+
+var REGEXP_SPACES = /\s+/;
+
+/**
+ * Remove event listener from the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function removeListener(element, type, listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ removeListener(element, t, listener, options);
+ });
+ return;
+ }
+
+ if (element.removeEventListener) {
+ element.removeEventListener(type, listener, options);
+ } else if (element.detachEvent) {
+ element.detachEvent('on' + type, listener);
+ }
+}
+
+/**
+ * Add event listener to the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function addListener(element, type, _listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(_listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ addListener(element, t, _listener, options);
+ });
+ return;
+ }
+
+ if (options.once) {
+ var originalListener = _listener;
+
+ _listener = function listener() {
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ removeListener(element, type, _listener, options);
+ return originalListener.apply(element, args);
+ };
+ }
+
+ if (element.addEventListener) {
+ element.addEventListener(type, _listener, options);
+ } else if (element.attachEvent) {
+ element.attachEvent('on' + type, _listener);
+ }
+}
+
+/**
+ * Dispatch event on the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Object} data - The additional event data.
+ * @returns {boolean} Indicate if the event is default prevented or not.
+ */
+function dispatchEvent(element, type, data) {
+ if (element.dispatchEvent) {
+ var event = void 0;
+
+ // Event and CustomEvent on IE9-11 are global objects, not constructors
+ if (isFunction(Event) && isFunction(CustomEvent)) {
+ if (isUndefined(data)) {
+ event = new Event(type, {
+ bubbles: true,
+ cancelable: true
+ });
+ } else {
+ event = new CustomEvent(type, {
+ detail: data,
+ bubbles: true,
+ cancelable: true
+ });
+ }
+ } else if (isUndefined(data)) {
+ event = document.createEvent('Event');
+ event.initEvent(type, true, true);
+ } else {
+ event = document.createEvent('CustomEvent');
+ event.initCustomEvent(type, true, true, data);
+ }
+
+ // IE9+
+ return element.dispatchEvent(event);
+ } else if (element.fireEvent) {
+ // IE6-10 (native events only)
+ return element.fireEvent('on' + type);
+ }
+
+ return true;
+}
+
+/**
+ * Get the offset base on the document.
+ * @param {Element} element - The target element.
+ * @returns {Object} The offset data.
+ */
+function getOffset(element) {
+ var doc = document.documentElement;
+ var box = element.getBoundingClientRect();
+
+ return {
+ left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)),
+ top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0))
+ };
+}
+
+/**
+ * Empty an element.
+ * @param {Element} element - The element to empty.
+ */
+function empty(element) {
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+var location = WINDOW.location;
+
+var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i;
+
+/**
+ * Check if the given URL is a cross origin URL.
+ * @param {string} url - The target URL.
+ * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.
+ */
+function isCrossOriginURL(url) {
+ var parts = url.match(REGEXP_ORIGINS);
+
+ return parts && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
+}
+
+/**
+ * Add timestamp to the given URL.
+ * @param {string} url - The target URL.
+ * @returns {string} The result URL.
+ */
+function addTimestamp(url) {
+ var timestamp = 'timestamp=' + new Date().getTime();
+
+ return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;
+}
+
+/**
+ * Get transforms base on the given object.
+ * @param {Object} obj - The target object.
+ * @returns {string} A string contains transform values.
+ */
+function getTransforms(_ref) {
+ var rotate = _ref.rotate,
+ scaleX = _ref.scaleX,
+ scaleY = _ref.scaleY,
+ translateX = _ref.translateX,
+ translateY = _ref.translateY;
+
+ var values = [];
+
+ if (isNumber(translateX) && translateX !== 0) {
+ values.push('translateX(' + translateX + 'px)');
+ }
+
+ if (isNumber(translateY) && translateY !== 0) {
+ values.push('translateY(' + translateY + 'px)');
+ }
+
+ // Rotate should come first before scale to match orientation transform
+ if (isNumber(rotate) && rotate !== 0) {
+ values.push('rotate(' + rotate + 'deg)');
+ }
+
+ if (isNumber(scaleX) && scaleX !== 1) {
+ values.push('scaleX(' + scaleX + ')');
+ }
+
+ if (isNumber(scaleY) && scaleY !== 1) {
+ values.push('scaleY(' + scaleY + ')');
+ }
+
+ var transform = values.length ? values.join(' ') : 'none';
+
+ return {
+ WebkitTransform: transform,
+ msTransform: transform,
+ transform: transform
+ };
+}
+
+var navigator = WINDOW.navigator;
+
+var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
+
+/**
+ * Get an image's natural sizes.
+ * @param {string} image - The target image.
+ * @param {Function} callback - The callback function.
+ */
+function getImageNaturalSizes(image, callback) {
+ // Modern browsers (except Safari)
+ if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) {
+ callback(image.naturalWidth, image.naturalHeight);
+ return;
+ }
+
+ var newImage = document.createElement('img');
+ var body = document.body || document.documentElement;
+
+ newImage.onload = function () {
+ callback(newImage.width, newImage.height);
+
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ body.removeChild(newImage);
+ }
+ };
+
+ newImage.src = image.src;
+
+ // iOS Safari will convert the image automatically
+ // with its orientation once append it into DOM (#279)
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';
+ body.appendChild(newImage);
+ }
+}
+
+/**
+ * Get the max ratio of a group of pointers.
+ * @param {string} pointers - The target pointers.
+ * @returns {number} The result ratio.
+ */
+function getMaxZoomRatio(pointers) {
+ var pointers2 = extend({}, pointers);
+ var ratios = [];
+
+ each(pointers, function (pointer, pointerId) {
+ delete pointers2[pointerId];
+
+ each(pointers2, function (pointer2) {
+ var x1 = Math.abs(pointer.startX - pointer2.startX);
+ var y1 = Math.abs(pointer.startY - pointer2.startY);
+ var x2 = Math.abs(pointer.endX - pointer2.endX);
+ var y2 = Math.abs(pointer.endY - pointer2.endY);
+ var z1 = Math.sqrt(x1 * x1 + y1 * y1);
+ var z2 = Math.sqrt(x2 * x2 + y2 * y2);
+ var ratio = (z2 - z1) / z1;
+
+ ratios.push(ratio);
+ });
+ });
+
+ ratios.sort(function (a, b) {
+ return Math.abs(a) < Math.abs(b);
+ });
+
+ return ratios[0];
+}
+
+/**
+ * Get a pointer from an event object.
+ * @param {Object} event - The target event object.
+ * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.
+ * @returns {Object} The result pointer contains start and/or end point coordinates.
+ */
+function getPointer(_ref2, endOnly) {
+ var pageX = _ref2.pageX,
+ pageY = _ref2.pageY;
+
+ var end = {
+ endX: pageX,
+ endY: pageY
+ };
+
+ if (endOnly) {
+ return end;
+ }
+
+ return extend({
+ startX: pageX,
+ startY: pageY
+ }, end);
+}
+
+/**
+ * Get the center point coordinate of a group of pointers.
+ * @param {Object} pointers - The target pointers.
+ * @returns {Object} The center point coordinate.
+ */
+function getPointersCenter(pointers) {
+ var pageX = 0;
+ var pageY = 0;
+ var count = 0;
+
+ each(pointers, function (_ref3) {
+ var startX = _ref3.startX,
+ startY = _ref3.startY;
+
+ pageX += startX;
+ pageY += startY;
+ count += 1;
+ });
+
+ pageX /= count;
+ pageY /= count;
+
+ return {
+ pageX: pageX,
+ pageY: pageY
+ };
+}
+
+/**
+ * Check if the given value is a finite number.
+ */
+var isFinite = Number.isFinite || WINDOW.isFinite;
+
+/**
+ * Get the max sizes in a rectangle under the given aspect ratio.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getContainSizes(_ref4) {
+ var aspectRatio = _ref4.aspectRatio,
+ height = _ref4.height,
+ width = _ref4.width;
+
+ var isValidNumber = function isValidNumber(value) {
+ return isFinite(value) && value > 0;
+ };
+
+ if (isValidNumber(width) && isValidNumber(height)) {
+ if (height * aspectRatio > width) {
+ height = width / aspectRatio;
+ } else {
+ width = height * aspectRatio;
+ }
+ } else if (isValidNumber(width)) {
+ height = width / aspectRatio;
+ } else if (isValidNumber(height)) {
+ width = height * aspectRatio;
+ }
+
+ return {
+ width: width,
+ height: height
+ };
+}
+
+/**
+ * Get the new sizes of a rectangle after rotated.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getRotatedSizes(_ref5) {
+ var width = _ref5.width,
+ height = _ref5.height,
+ degree = _ref5.degree;
+
+ degree = Math.abs(degree) % 180;
+
+ if (degree === 90) {
+ return {
+ width: height,
+ height: width
+ };
+ }
+
+ var arc = degree % 90 * Math.PI / 180;
+ var sinArc = Math.sin(arc);
+ var cosArc = Math.cos(arc);
+ var newWidth = width * cosArc + height * sinArc;
+ var newHeight = width * sinArc + height * cosArc;
+
+ return degree > 90 ? {
+ width: newHeight,
+ height: newWidth
+ } : {
+ width: newWidth,
+ height: newHeight
+ };
+}
+
+/**
+ * Get a canvas which drew the given image.
+ * @param {HTMLImageElement} image - The image for drawing.
+ * @param {Object} imageData - The image data.
+ * @param {Object} canvasData - The canvas data.
+ * @param {Object} options - The options.
+ * @returns {HTMLCanvasElement} The result canvas.
+ */
+function getSourceCanvas(image, _ref6, _ref7, _ref8) {
+ var imageNaturalWidth = _ref6.naturalWidth,
+ imageNaturalHeight = _ref6.naturalHeight,
+ _ref6$rotate = _ref6.rotate,
+ rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate,
+ _ref6$scaleX = _ref6.scaleX,
+ scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX,
+ _ref6$scaleY = _ref6.scaleY,
+ scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY;
+ var aspectRatio = _ref7.aspectRatio,
+ naturalWidth = _ref7.naturalWidth,
+ naturalHeight = _ref7.naturalHeight;
+ var _ref8$fillColor = _ref8.fillColor,
+ fillColor = _ref8$fillColor === undefined ? 'transparent' : _ref8$fillColor,
+ _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,
+ imageSmoothingEnabled = _ref8$imageSmoothingE === undefined ? true : _ref8$imageSmoothingE,
+ _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,
+ imageSmoothingQuality = _ref8$imageSmoothingQ === undefined ? 'low' : _ref8$imageSmoothingQ,
+ _ref8$maxWidth = _ref8.maxWidth,
+ maxWidth = _ref8$maxWidth === undefined ? Infinity : _ref8$maxWidth,
+ _ref8$maxHeight = _ref8.maxHeight,
+ maxHeight = _ref8$maxHeight === undefined ? Infinity : _ref8$maxHeight,
+ _ref8$minWidth = _ref8.minWidth,
+ minWidth = _ref8$minWidth === undefined ? 0 : _ref8$minWidth,
+ _ref8$minHeight = _ref8.minHeight,
+ minHeight = _ref8$minHeight === undefined ? 0 : _ref8$minHeight;
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: maxWidth,
+ height: maxHeight
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minWidth,
+ height: minHeight
+ });
+ var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));
+ var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));
+ var params = [-imageNaturalWidth / 2, -imageNaturalHeight / 2, imageNaturalWidth, imageNaturalHeight];
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+ context.fillStyle = fillColor;
+ context.fillRect(0, 0, width, height);
+ context.save();
+ context.translate(width / 2, height / 2);
+ context.rotate(rotate * Math.PI / 180);
+ context.scale(scaleX, scaleY);
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ context.drawImage.apply(context, [image].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+ context.restore();
+ return canvas;
+}
+
+var fromCharCode = String.fromCharCode;
+
+/**
+ * Get string from char code in data view.
+ * @param {DataView} dataView - The data view for read.
+ * @param {number} start - The start index.
+ * @param {number} length - The read length.
+ * @returns {string} The read result.
+ */
+
+function getStringFromCharCode(dataView, start, length) {
+ var str = '';
+ var i = void 0;
+
+ length += start;
+
+ for (i = start; i < length; i += 1) {
+ str += fromCharCode(dataView.getUint8(i));
+ }
+
+ return str;
+}
+
+var REGEXP_DATA_URL_HEAD = /^data:.*,/;
+
+/**
+ * Transform Data URL to array buffer.
+ * @param {string} dataURL - The Data URL to transform.
+ * @returns {ArrayBuffer} The result array buffer.
+ */
+function dataURLToArrayBuffer(dataURL) {
+ var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');
+ var binary = atob(base64);
+ var arrayBuffer = new ArrayBuffer(binary.length);
+ var uint8 = new Uint8Array(arrayBuffer);
+
+ each(uint8, function (value, i) {
+ uint8[i] = binary.charCodeAt(i);
+ });
+
+ return arrayBuffer;
+}
+
+/**
+ * Transform array buffer to Data URL.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.
+ * @param {string} mimeType - The mime type of the Data URL.
+ * @returns {string} The result Data URL.
+ */
+function arrayBufferToDataURL(arrayBuffer, mimeType) {
+ var uint8 = new Uint8Array(arrayBuffer);
+ var data = '';
+
+ // TypedArray.prototype.forEach is not supported in some browsers.
+ each(uint8, function (value) {
+ data += fromCharCode(value);
+ });
+
+ return 'data:' + mimeType + ';base64,' + btoa(data);
+}
+
+/**
+ * Get orientation value from given array buffer.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to read.
+ * @returns {number} The read orientation value.
+ */
+function getOrientation(arrayBuffer) {
+ var dataView = new DataView(arrayBuffer);
+ var orientation = void 0;
+ var littleEndian = void 0;
+ var app1Start = void 0;
+ var ifdStart = void 0;
+
+ // Only handle JPEG image (start by 0xFFD8)
+ if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {
+ var length = dataView.byteLength;
+ var offset = 2;
+
+ while (offset < length) {
+ if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {
+ app1Start = offset;
+ break;
+ }
+
+ offset += 1;
+ }
+ }
+
+ if (app1Start) {
+ var exifIDCode = app1Start + 4;
+ var tiffOffset = app1Start + 10;
+
+ if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {
+ var endianness = dataView.getUint16(tiffOffset);
+
+ littleEndian = endianness === 0x4949;
+
+ if (littleEndian || endianness === 0x4D4D /* bigEndian */) {
+ if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {
+ var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);
+
+ if (firstIFDOffset >= 0x00000008) {
+ ifdStart = tiffOffset + firstIFDOffset;
+ }
+ }
+ }
+ }
+ }
+
+ if (ifdStart) {
+ var _length = dataView.getUint16(ifdStart, littleEndian);
+ var _offset = void 0;
+ var i = void 0;
+
+ for (i = 0; i < _length; i += 1) {
+ _offset = ifdStart + i * 12 + 2;
+
+ if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {
+ // 8 is the offset of the current tag's value
+ _offset += 8;
+
+ // Get the original orientation value
+ orientation = dataView.getUint16(_offset, littleEndian);
+
+ // Override the orientation with its default value
+ dataView.setUint16(_offset, 1, littleEndian);
+ break;
+ }
+ }
+ }
+
+ return orientation;
+}
+
+/**
+ * Parse Exif Orientation value.
+ * @param {number} orientation - The orientation to parse.
+ * @returns {Object} The parsed result.
+ */
+function parseOrientation(orientation) {
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ switch (orientation) {
+ // Flip horizontal
+ case 2:
+ scaleX = -1;
+ break;
+
+ // Rotate left 180°
+ case 3:
+ rotate = -180;
+ break;
+
+ // Flip vertical
+ case 4:
+ scaleY = -1;
+ break;
+
+ // Flip vertical and rotate right 90°
+ case 5:
+ rotate = 90;
+ scaleY = -1;
+ break;
+
+ // Rotate right 90°
+ case 6:
+ rotate = 90;
+ break;
+
+ // Flip horizontal and rotate right 90°
+ case 7:
+ rotate = 90;
+ scaleX = -1;
+ break;
+
+ // Rotate left 90°
+ case 8:
+ rotate = -90;
+ break;
+
+ default:
+ }
+
+ return {
+ rotate: rotate,
+ scaleX: scaleX,
+ scaleY: scaleY
+ };
+}
+
+var render = {
+ render: function render() {
+ this.initContainer();
+ this.initCanvas();
+ this.initCropBox();
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ },
+ initContainer: function initContainer() {
+ var element = this.element,
+ options = this.options,
+ container = this.container,
+ cropper = this.cropper;
+
+
+ addClass(cropper, CLASS_HIDDEN);
+ removeClass(element, CLASS_HIDDEN);
+
+ var containerData = {
+ width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),
+ height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)
+ };
+
+ this.containerData = containerData;
+
+ setStyle(cropper, {
+ width: containerData.width,
+ height: containerData.height
+ });
+
+ addClass(element, CLASS_HIDDEN);
+ removeClass(cropper, CLASS_HIDDEN);
+ },
+
+
+ // Canvas (image wrapper)
+ initCanvas: function initCanvas() {
+ var containerData = this.containerData,
+ imageData = this.imageData;
+ var viewMode = this.options.viewMode;
+
+ var rotated = Math.abs(imageData.rotate) % 180 === 90;
+ var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;
+ var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;
+ var aspectRatio = naturalWidth / naturalHeight;
+ var canvasWidth = containerData.width;
+ var canvasHeight = containerData.height;
+
+ if (containerData.height * aspectRatio > containerData.width) {
+ if (viewMode === 3) {
+ canvasWidth = containerData.height * aspectRatio;
+ } else {
+ canvasHeight = containerData.width / aspectRatio;
+ }
+ } else if (viewMode === 3) {
+ canvasHeight = containerData.width / aspectRatio;
+ } else {
+ canvasWidth = containerData.height * aspectRatio;
+ }
+
+ var canvasData = {
+ aspectRatio: aspectRatio,
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ width: canvasWidth,
+ height: canvasHeight
+ };
+
+ canvasData.left = (containerData.width - canvasWidth) / 2;
+ canvasData.top = (containerData.height - canvasHeight) / 2;
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ this.canvasData = canvasData;
+ this.limited = viewMode === 1 || viewMode === 2;
+ this.limitCanvas(true, true);
+ this.initialImageData = extend({}, imageData);
+ this.initialCanvasData = extend({}, canvasData);
+ },
+ limitCanvas: function limitCanvas(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var viewMode = options.viewMode;
+ var aspectRatio = canvasData.aspectRatio;
+
+ var cropped = this.cropped && cropBoxData;
+
+ if (sizeLimited) {
+ var minCanvasWidth = Number(options.minCanvasWidth) || 0;
+ var minCanvasHeight = Number(options.minCanvasHeight) || 0;
+
+ if (viewMode > 1) {
+ minCanvasWidth = Math.max(minCanvasWidth, containerData.width);
+ minCanvasHeight = Math.max(minCanvasHeight, containerData.height);
+
+ if (viewMode === 3) {
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ } else if (viewMode > 0) {
+ if (minCanvasWidth) {
+ minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);
+ } else if (minCanvasHeight) {
+ minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);
+ } else if (cropped) {
+ minCanvasWidth = cropBoxData.width;
+ minCanvasHeight = cropBoxData.height;
+
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ }
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minCanvasWidth,
+ height: minCanvasHeight
+ });
+
+ minCanvasWidth = _getContainSizes.width;
+ minCanvasHeight = _getContainSizes.height;
+
+
+ canvasData.minWidth = minCanvasWidth;
+ canvasData.minHeight = minCanvasHeight;
+ canvasData.maxWidth = Infinity;
+ canvasData.maxHeight = Infinity;
+ }
+
+ if (positionLimited) {
+ if (viewMode) {
+ var newCanvasLeft = containerData.width - canvasData.width;
+ var newCanvasTop = containerData.height - canvasData.height;
+
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+
+ if (cropped && this.limited) {
+ canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));
+ canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));
+ canvasData.maxLeft = cropBoxData.left;
+ canvasData.maxTop = cropBoxData.top;
+
+ if (viewMode === 2) {
+ if (canvasData.width >= containerData.width) {
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ }
+
+ if (canvasData.height >= containerData.height) {
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+ }
+ }
+ }
+ } else {
+ canvasData.minLeft = -canvasData.width;
+ canvasData.minTop = -canvasData.height;
+ canvasData.maxLeft = containerData.width;
+ canvasData.maxTop = containerData.height;
+ }
+ }
+ },
+ renderCanvas: function renderCanvas(changed, transformed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+
+ if (transformed) {
+ var _getRotatedSizes = getRotatedSizes({
+ width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),
+ height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),
+ degree: imageData.rotate || 0
+ }),
+ naturalWidth = _getRotatedSizes.width,
+ naturalHeight = _getRotatedSizes.height;
+
+ var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);
+ var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);
+
+ canvasData.left -= (width - canvasData.width) / 2;
+ canvasData.top -= (height - canvasData.height) / 2;
+ canvasData.width = width;
+ canvasData.height = height;
+ canvasData.aspectRatio = naturalWidth / naturalHeight;
+ canvasData.naturalWidth = naturalWidth;
+ canvasData.naturalHeight = naturalHeight;
+ this.limitCanvas(true, false);
+ }
+
+ if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {
+ canvasData.left = canvasData.oldLeft;
+ }
+
+ if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {
+ canvasData.top = canvasData.oldTop;
+ }
+
+ canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);
+ canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);
+
+ this.limitCanvas(false, true);
+
+ canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);
+ canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ setStyle(this.canvas, extend({
+ width: canvasData.width,
+ height: canvasData.height
+ }, getTransforms({
+ translateX: canvasData.left,
+ translateY: canvasData.top
+ })));
+
+ this.renderImage(changed);
+
+ if (this.cropped && this.limited) {
+ this.limitCropBox(true, true);
+ }
+ },
+ renderImage: function renderImage(changed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+ var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);
+ var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);
+
+ extend(imageData, {
+ width: width,
+ height: height,
+ left: (canvasData.width - width) / 2,
+ top: (canvasData.height - height) / 2
+ });
+ setStyle(this.image, extend({
+ width: imageData.width,
+ height: imageData.height
+ }, getTransforms(extend({
+ translateX: imageData.left,
+ translateY: imageData.top
+ }, imageData))));
+
+ if (changed) {
+ this.output();
+ }
+ },
+ initCropBox: function initCropBox() {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var aspectRatio = options.aspectRatio;
+
+ var autoCropArea = Number(options.autoCropArea) || 0.8;
+ var cropBoxData = {
+ width: canvasData.width,
+ height: canvasData.height
+ };
+
+ if (aspectRatio) {
+ if (canvasData.height * aspectRatio > canvasData.width) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.cropBoxData = cropBoxData;
+ this.limitCropBox(true, true);
+
+ // Initialize auto crop area
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ // The width/height of auto crop area must large than "minWidth/Height"
+ cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);
+ cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);
+ cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;
+ cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ this.initialCropBoxData = extend({}, cropBoxData);
+ },
+ limitCropBox: function limitCropBox(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData,
+ limited = this.limited;
+ var aspectRatio = options.aspectRatio;
+
+
+ if (sizeLimited) {
+ var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;
+ var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;
+ var maxCropBoxWidth = Math.min(containerData.width, limited ? canvasData.width : containerData.width);
+ var maxCropBoxHeight = Math.min(containerData.height, limited ? canvasData.height : containerData.height);
+
+ // The min/maxCropBoxWidth/Height must be less than container's width/height
+ minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);
+ minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);
+
+ if (aspectRatio) {
+ if (minCropBoxWidth && minCropBoxHeight) {
+ if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+ } else if (minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else if (minCropBoxHeight) {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+
+ if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {
+ maxCropBoxHeight = maxCropBoxWidth / aspectRatio;
+ } else {
+ maxCropBoxWidth = maxCropBoxHeight * aspectRatio;
+ }
+ }
+
+ // The minWidth/Height must be less than maxWidth/Height
+ cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);
+ cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);
+ cropBoxData.maxWidth = maxCropBoxWidth;
+ cropBoxData.maxHeight = maxCropBoxHeight;
+ }
+
+ if (positionLimited) {
+ if (limited) {
+ cropBoxData.minLeft = Math.max(0, canvasData.left);
+ cropBoxData.minTop = Math.max(0, canvasData.top);
+ cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;
+ cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;
+ } else {
+ cropBoxData.minLeft = 0;
+ cropBoxData.minTop = 0;
+ cropBoxData.maxLeft = containerData.width - cropBoxData.width;
+ cropBoxData.maxTop = containerData.height - cropBoxData.height;
+ }
+ }
+ },
+ renderCropBox: function renderCropBox() {
+ var options = this.options,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData;
+
+
+ if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {
+ cropBoxData.left = cropBoxData.oldLeft;
+ }
+
+ if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {
+ cropBoxData.top = cropBoxData.oldTop;
+ }
+
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ this.limitCropBox(false, true);
+
+ cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);
+ cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ if (options.movable && options.cropBoxMovable) {
+ // Turn to move the canvas when the crop box is equal to the container
+ setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);
+ }
+
+ setStyle(this.cropBox, extend({
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ }, getTransforms({
+ translateX: cropBoxData.left,
+ translateY: cropBoxData.top
+ })));
+
+ if (this.cropped && this.limited) {
+ this.limitCanvas(true, true);
+ }
+
+ if (!this.disabled) {
+ this.output();
+ }
+ },
+ output: function output() {
+ this.preview();
+
+ if (this.complete) {
+ dispatchEvent(this.element, EVENT_CROP, this.getData());
+ }
+ }
+};
+
+var preview = {
+ initPreview: function initPreview() {
+ var crossOrigin = this.crossOrigin;
+ var preview = this.options.preview;
+
+ var url = crossOrigin ? this.crossOriginUrl : this.url;
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = url;
+ this.viewBox.appendChild(image);
+ this.image2 = image;
+
+ if (!preview) {
+ return;
+ }
+
+ var previews = preview.querySelector ? [preview] : document.querySelectorAll(preview);
+
+ this.previews = previews;
+
+ each(previews, function (element) {
+ var img = document.createElement('img');
+
+ // Save the original size for recover
+ setData(element, DATA_PREVIEW, {
+ width: element.offsetWidth,
+ height: element.offsetHeight,
+ html: element.innerHTML
+ });
+
+ if (crossOrigin) {
+ img.crossOrigin = crossOrigin;
+ }
+
+ img.src = url;
+
+ /**
+ * Override img element styles
+ * Add `display:block` to avoid margin top issue
+ * Add `height:auto` to override `height` attribute on IE8
+ * (Occur only when margin-top <= -height)
+ */
+ img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"';
+
+ empty(element);
+ element.appendChild(img);
+ });
+ },
+ resetPreview: function resetPreview() {
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+
+ setStyle(element, {
+ width: data.width,
+ height: data.height
+ });
+
+ element.innerHTML = data.html;
+ removeData(element, DATA_PREVIEW);
+ });
+ },
+ preview: function preview() {
+ var imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var cropBoxWidth = cropBoxData.width,
+ cropBoxHeight = cropBoxData.height;
+ var width = imageData.width,
+ height = imageData.height;
+
+ var left = cropBoxData.left - canvasData.left - imageData.left;
+ var top = cropBoxData.top - canvasData.top - imageData.top;
+
+ if (!this.cropped || this.disabled) {
+ return;
+ }
+
+ setStyle(this.image2, extend({
+ width: width,
+ height: height
+ }, getTransforms(extend({
+ translateX: -left,
+ translateY: -top
+ }, imageData))));
+
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+ var originalWidth = data.width;
+ var originalHeight = data.height;
+ var newWidth = originalWidth;
+ var newHeight = originalHeight;
+ var ratio = 1;
+
+ if (cropBoxWidth) {
+ ratio = originalWidth / cropBoxWidth;
+ newHeight = cropBoxHeight * ratio;
+ }
+
+ if (cropBoxHeight && newHeight > originalHeight) {
+ ratio = originalHeight / cropBoxHeight;
+ newWidth = cropBoxWidth * ratio;
+ newHeight = originalHeight;
+ }
+
+ setStyle(element, {
+ width: newWidth,
+ height: newHeight
+ });
+
+ setStyle(element.getElementsByTagName('img')[0], extend({
+ width: width * ratio,
+ height: height * ratio
+ }, getTransforms(extend({
+ translateX: -left * ratio,
+ translateY: -top * ratio
+ }, imageData))));
+ });
+ }
+};
+
+var events = {
+ bind: function bind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ addListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ addListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ addListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ addListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ addListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = proxy(this.cropStart, this));
+
+ if (options.zoomable && options.zoomOnWheel) {
+ addListener(cropper, EVENT_WHEEL, this.onWheel = proxy(this.wheel, this));
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ addListener(cropper, EVENT_DBLCLICK, this.onDblclick = proxy(this.dblclick, this));
+ }
+
+ addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = proxy(this.cropMove, this));
+ addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this));
+
+ if (options.responsive) {
+ addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this));
+ }
+ },
+ unbind: function unbind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ removeListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ removeListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ removeListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ removeListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ removeListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);
+
+ if (options.zoomable && options.zoomOnWheel) {
+ removeListener(cropper, EVENT_WHEEL, this.onWheel);
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);
+ }
+
+ removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);
+ removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);
+
+ if (options.responsive) {
+ removeListener(window, EVENT_RESIZE, this.onResize);
+ }
+ }
+};
+
+var handlers = {
+ resize: function resize() {
+ var options = this.options,
+ container = this.container,
+ containerData = this.containerData;
+
+ var minContainerWidth = Number(options.minContainerWidth) || 200;
+ var minContainerHeight = Number(options.minContainerHeight) || 100;
+
+ if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) {
+ return;
+ }
+
+ var ratio = container.offsetWidth / containerData.width;
+
+ // Resize when width changed or height changed
+ if (ratio !== 1 || container.offsetHeight !== containerData.height) {
+ var canvasData = void 0;
+ var cropBoxData = void 0;
+
+ if (options.restore) {
+ canvasData = this.getCanvasData();
+ cropBoxData = this.getCropBoxData();
+ }
+
+ this.render();
+
+ if (options.restore) {
+ this.setCanvasData(each(canvasData, function (n, i) {
+ canvasData[i] = n * ratio;
+ }));
+ this.setCropBoxData(each(cropBoxData, function (n, i) {
+ cropBoxData[i] = n * ratio;
+ }));
+ }
+ }
+ },
+ dblclick: function dblclick() {
+ if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {
+ return;
+ }
+
+ this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);
+ },
+ wheel: function wheel(e) {
+ var _this = this;
+
+ var ratio = Number(this.options.wheelZoomRatio) || 0.1;
+ var delta = 1;
+
+ if (this.disabled) {
+ return;
+ }
+
+ e.preventDefault();
+
+ // Limit wheel speed to prevent zoom too fast (#21)
+ if (this.wheeling) {
+ return;
+ }
+
+ this.wheeling = true;
+
+ setTimeout(function () {
+ _this.wheeling = false;
+ }, 50);
+
+ if (e.deltaY) {
+ delta = e.deltaY > 0 ? 1 : -1;
+ } else if (e.wheelDelta) {
+ delta = -e.wheelDelta / 120;
+ } else if (e.detail) {
+ delta = e.detail > 0 ? 1 : -1;
+ }
+
+ this.zoom(-delta * ratio, e);
+ },
+ cropStart: function cropStart(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var options = this.options,
+ pointers = this.pointers;
+
+ var action = void 0;
+
+ if (e.changedTouches) {
+ // Handle touch event
+ each(e.changedTouches, function (touch) {
+ pointers[touch.identifier] = getPointer(touch);
+ });
+ } else {
+ // Handle mouse event and pointer event
+ pointers[e.pointerId || 0] = getPointer(e);
+ }
+
+ if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {
+ action = ACTION_ZOOM;
+ } else {
+ action = getData(e.target, DATA_ACTION);
+ }
+
+ if (!REGEXP_ACTIONS.test(action)) {
+ return;
+ }
+
+ if (dispatchEvent(this.element, EVENT_CROP_START, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ e.preventDefault();
+
+ this.action = action;
+ this.cropping = false;
+
+ if (action === ACTION_CROP) {
+ this.cropping = true;
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+ },
+ cropMove: function cropMove(e) {
+ var action = this.action;
+
+
+ if (this.disabled || !action) {
+ return;
+ }
+
+ var pointers = this.pointers;
+
+
+ e.preventDefault();
+
+ if (dispatchEvent(this.element, EVENT_CROP_MOVE, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ extend(pointers[touch.identifier], getPointer(touch, true));
+ });
+ } else {
+ extend(pointers[e.pointerId || 0], getPointer(e, true));
+ }
+
+ this.change(e);
+ },
+ cropEnd: function cropEnd(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var action = this.action,
+ pointers = this.pointers;
+
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ delete pointers[touch.identifier];
+ });
+ } else {
+ delete pointers[e.pointerId || 0];
+ }
+
+ if (!action) {
+ return;
+ }
+
+ e.preventDefault();
+
+ if (!Object.keys(pointers).length) {
+ this.action = '';
+ }
+
+ if (this.cropping) {
+ this.cropping = false;
+ toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);
+ }
+
+ dispatchEvent(this.element, EVENT_CROP_END, {
+ originalEvent: e,
+ action: action
+ });
+ }
+};
+
+var change = {
+ change: function change(e) {
+ var options = this.options,
+ canvasData = this.canvasData,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData,
+ pointers = this.pointers;
+ var action = this.action;
+ var aspectRatio = options.aspectRatio;
+ var left = cropBoxData.left,
+ top = cropBoxData.top,
+ width = cropBoxData.width,
+ height = cropBoxData.height;
+
+ var right = left + width;
+ var bottom = top + height;
+ var minLeft = 0;
+ var minTop = 0;
+ var maxWidth = containerData.width;
+ var maxHeight = containerData.height;
+ var renderable = true;
+ var offset = void 0;
+
+ // Locking aspect ratio in "free mode" by holding shift key
+ if (!aspectRatio && e.shiftKey) {
+ aspectRatio = width && height ? width / height : 1;
+ }
+
+ if (this.limited) {
+ minLeft = cropBoxData.minLeft;
+ minTop = cropBoxData.minTop;
+
+ maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);
+ maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);
+ }
+
+ var pointer = pointers[Object.keys(pointers)[0]];
+ var range = {
+ x: pointer.endX - pointer.startX,
+ y: pointer.endY - pointer.startY
+ };
+ var check = function check(side) {
+ switch (side) {
+ case ACTION_EAST:
+ if (right + range.x > maxWidth) {
+ range.x = maxWidth - right;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (left + range.x < minLeft) {
+ range.x = minLeft - left;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (top + range.y < minTop) {
+ range.y = minTop - top;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (bottom + range.y > maxHeight) {
+ range.y = maxHeight - bottom;
+ }
+
+ break;
+
+ default:
+ }
+ };
+
+ switch (action) {
+ // Move crop box
+ case ACTION_ALL:
+ left += range.x;
+ top += range.y;
+ break;
+
+ // Resize crop box
+ case ACTION_EAST:
+ if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top -= range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_WEST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left += range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_SOUTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top += range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_EAST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_SOUTH);
+ height += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left -= range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_NORTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_EAST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_WEST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || left <= minLeft)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ left += range.y * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_WEST:
+ if (aspectRatio) {
+ if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_EAST:
+ if (aspectRatio) {
+ if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ // Move canvas
+ case ACTION_MOVE:
+ this.move(range.x, range.y);
+ renderable = false;
+ break;
+
+ // Zoom canvas
+ case ACTION_ZOOM:
+ this.zoom(getMaxZoomRatio(pointers), e);
+ renderable = false;
+ break;
+
+ // Create crop box
+ case ACTION_CROP:
+ if (!range.x || !range.y) {
+ renderable = false;
+ break;
+ }
+
+ offset = getOffset(this.cropper);
+ left = pointer.startX - offset.left;
+ top = pointer.startY - offset.top;
+ width = cropBoxData.minWidth;
+ height = cropBoxData.minHeight;
+
+ if (range.x > 0) {
+ action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;
+ } else if (range.x < 0) {
+ left -= width;
+ action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;
+ }
+
+ if (range.y < 0) {
+ top -= height;
+ }
+
+ // Show the crop box if is hidden
+ if (!this.cropped) {
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ this.cropped = true;
+
+ if (this.limited) {
+ this.limitCropBox(true, true);
+ }
+ }
+
+ break;
+
+ default:
+ }
+
+ if (renderable) {
+ cropBoxData.width = width;
+ cropBoxData.height = height;
+ cropBoxData.left = left;
+ cropBoxData.top = top;
+ this.action = action;
+ this.renderCropBox();
+ }
+
+ // Override
+ each(pointers, function (p) {
+ p.startX = p.endX;
+ p.startY = p.endY;
+ });
+ }
+};
+
+var methods = {
+ // Show the crop box manually
+ crop: function crop() {
+ if (this.ready && !this.disabled) {
+ if (!this.cropped) {
+ this.cropped = true;
+ this.limitCropBox(true, true);
+
+ if (this.options.modal) {
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ this.setCropBoxData(this.initialCropBoxData);
+ }
+
+ return this;
+ },
+
+
+ // Reset the image and crop box to their initial states
+ reset: function reset() {
+ if (this.ready && !this.disabled) {
+ this.imageData = extend({}, this.initialImageData);
+ this.canvasData = extend({}, this.initialCanvasData);
+ this.cropBoxData = extend({}, this.initialCropBoxData);
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+
+ return this;
+ },
+
+
+ // Clear the crop box
+ clear: function clear() {
+ if (this.cropped && !this.disabled) {
+ extend(this.cropBoxData, {
+ left: 0,
+ top: 0,
+ width: 0,
+ height: 0
+ });
+
+ this.cropped = false;
+ this.renderCropBox();
+ this.limitCanvas(true, true);
+
+ // Render canvas after crop box rendered
+ this.renderCanvas();
+ removeClass(this.dragBox, CLASS_MODAL);
+ addClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Replace the image's src and rebuild the cropper
+ * @param {string} url - The new URL.
+ * @param {boolean} [onlyColorChanged] - Indicate if the new image only changed color.
+ * @returns {Object} this
+ */
+ replace: function replace(url) {
+ var onlyColorChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ if (!this.disabled && url) {
+ if (this.isImg) {
+ this.element.src = url;
+ }
+
+ if (onlyColorChanged) {
+ this.url = url;
+ this.image.src = url;
+
+ if (this.ready) {
+ this.image2.src = url;
+
+ each(this.previews, function (element) {
+ element.getElementsByTagName('img')[0].src = url;
+ });
+ }
+ } else {
+ if (this.isImg) {
+ this.replaced = true;
+ }
+
+ // Clear previous data
+ this.options.data = null;
+ this.load(url);
+ }
+ }
+
+ return this;
+ },
+
+
+ // Enable (unfreeze) the cropper
+ enable: function enable() {
+ if (this.ready) {
+ this.disabled = false;
+ removeClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Disable (freeze) the cropper
+ disable: function disable() {
+ if (this.ready) {
+ this.disabled = true;
+ addClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Destroy the cropper and remove the instance from the image
+ destroy: function destroy() {
+ var element = this.element,
+ image = this.image;
+
+
+ if (this.loaded) {
+ if (this.isImg && this.replaced) {
+ element.src = this.originalUrl;
+ }
+
+ this.unbuild();
+ removeClass(element, CLASS_HIDDEN);
+ } else if (this.isImg) {
+ removeListener(element, EVENT_LOAD, this.onStart);
+ } else if (image) {
+ image.parentNode.removeChild(image);
+ }
+
+ removeData(element, NAMESPACE);
+
+ return this;
+ },
+
+
+ /**
+ * Move the canvas with relative offsets
+ * @param {number} offsetX - The relative offset distance on the x-axis.
+ * @param {number} offsetY - The relative offset distance on the y-axis.
+ * @returns {Object} this
+ */
+ move: function move(offsetX, offsetY) {
+ var _canvasData = this.canvasData,
+ left = _canvasData.left,
+ top = _canvasData.top;
+
+
+ return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));
+ },
+
+
+ /**
+ * Move the canvas to an absolute point
+ * @param {number} x - The x-axis coordinate.
+ * @param {number} [y=x] - The y-axis coordinate.
+ * @returns {Object} this
+ */
+ moveTo: function moveTo(x) {
+ var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;
+ var canvasData = this.canvasData;
+
+ var changed = false;
+
+ x = Number(x);
+ y = Number(y);
+
+ if (this.ready && !this.disabled && this.options.movable) {
+ if (isNumber(x)) {
+ canvasData.left = x;
+ changed = true;
+ }
+
+ if (isNumber(y)) {
+ canvasData.top = y;
+ changed = true;
+ }
+
+ if (changed) {
+ this.renderCanvas(true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Zoom the canvas with a relative ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoom: function zoom(ratio, _originalEvent) {
+ var canvasData = this.canvasData;
+
+
+ ratio = Number(ratio);
+
+ if (ratio < 0) {
+ ratio = 1 / (1 - ratio);
+ } else {
+ ratio = 1 + ratio;
+ }
+
+ return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);
+ },
+
+
+ /**
+ * Zoom the canvas to an absolute ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Object} pivot - The zoom pivot point coordinate.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoomTo: function zoomTo(ratio, pivot, _originalEvent) {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var width = canvasData.width,
+ height = canvasData.height,
+ naturalWidth = canvasData.naturalWidth,
+ naturalHeight = canvasData.naturalHeight;
+
+
+ ratio = Number(ratio);
+
+ if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {
+ var newWidth = naturalWidth * ratio;
+ var newHeight = naturalHeight * ratio;
+
+ if (dispatchEvent(this.element, EVENT_ZOOM, {
+ originalEvent: _originalEvent,
+ oldRatio: width / naturalWidth,
+ ratio: newWidth / naturalWidth
+ }) === false) {
+ return this;
+ }
+
+ if (_originalEvent) {
+ var pointers = this.pointers;
+
+ var offset = getOffset(this.cropper);
+ var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {
+ pageX: _originalEvent.pageX,
+ pageY: _originalEvent.pageY
+ };
+
+ // Zoom from the triggering point of the event
+ canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);
+ } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {
+ canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);
+ } else {
+ // Zoom from the center of the canvas
+ canvasData.left -= (newWidth - width) / 2;
+ canvasData.top -= (newHeight - height) / 2;
+ }
+
+ canvasData.width = newWidth;
+ canvasData.height = newHeight;
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Rotate the canvas with a relative degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotate: function rotate(degree) {
+ return this.rotateTo((this.imageData.rotate || 0) + Number(degree));
+ },
+
+
+ /**
+ * Rotate the canvas to an absolute degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotateTo: function rotateTo(degree) {
+ degree = Number(degree);
+
+ if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {
+ this.imageData.rotate = degree % 360;
+ this.renderCanvas(true, true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Scale the image on the x-axis.
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @returns {Object} this
+ */
+ scaleX: function scaleX(_scaleX) {
+ var scaleY = this.imageData.scaleY;
+
+
+ return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);
+ },
+
+
+ /**
+ * Scale the image on the y-axis.
+ * @param {number} scaleY - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scaleY: function scaleY(_scaleY) {
+ var scaleX = this.imageData.scaleX;
+
+
+ return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);
+ },
+
+
+ /**
+ * Scale the image
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scale: function scale(scaleX) {
+ var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
+ var imageData = this.imageData;
+
+ var transformed = false;
+
+ scaleX = Number(scaleX);
+ scaleY = Number(scaleY);
+
+ if (this.ready && !this.disabled && this.options.scalable) {
+ if (isNumber(scaleX)) {
+ imageData.scaleX = scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(scaleY)) {
+ imageData.scaleY = scaleY;
+ transformed = true;
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the cropped area position and size data (base on the original image)
+ * @param {boolean} [rounded=false] - Indicate if round the data values or not.
+ * @returns {Object} The result cropped data.
+ */
+ getData: function getData$$1() {
+ var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ x: cropBoxData.left - canvasData.left,
+ y: cropBoxData.top - canvasData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ each(data, function (n, i) {
+ n /= ratio;
+ data[i] = rounded ? Math.round(n) : n;
+ });
+ } else {
+ data = {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ };
+ }
+
+ if (options.rotatable) {
+ data.rotate = imageData.rotate || 0;
+ }
+
+ if (options.scalable) {
+ data.scaleX = imageData.scaleX || 1;
+ data.scaleY = imageData.scaleY || 1;
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the cropped area position and size with new data
+ * @param {Object} data - The new data.
+ * @returns {Object} this
+ */
+ setData: function setData$$1(data) {
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData;
+
+ var cropBoxData = {};
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ var transformed = false;
+
+ if (options.rotatable) {
+ if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {
+ imageData.rotate = data.rotate;
+ transformed = true;
+ }
+ }
+
+ if (options.scalable) {
+ if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {
+ imageData.scaleX = data.scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {
+ imageData.scaleY = data.scaleY;
+ transformed = true;
+ }
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ if (isNumber(data.x)) {
+ cropBoxData.left = data.x * ratio + canvasData.left;
+ }
+
+ if (isNumber(data.y)) {
+ cropBoxData.top = data.y * ratio + canvasData.top;
+ }
+
+ if (isNumber(data.width)) {
+ cropBoxData.width = data.width * ratio;
+ }
+
+ if (isNumber(data.height)) {
+ cropBoxData.height = data.height * ratio;
+ }
+
+ this.setCropBoxData(cropBoxData);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the container size data.
+ * @returns {Object} The result container data.
+ */
+ getContainerData: function getContainerData() {
+ return this.ready ? extend({}, this.containerData) : {};
+ },
+
+
+ /**
+ * Get the image position and size data.
+ * @returns {Object} The result image data.
+ */
+ getImageData: function getImageData() {
+ return this.loaded ? extend({}, this.imageData) : {};
+ },
+
+
+ /**
+ * Get the canvas position and size data.
+ * @returns {Object} The result canvas data.
+ */
+ getCanvasData: function getCanvasData() {
+ var canvasData = this.canvasData;
+
+ var data = {};
+
+ if (this.ready) {
+ each(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {
+ data[n] = canvasData[n];
+ });
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the canvas position and size with new data.
+ * @param {Object} data - The new canvas data.
+ * @returns {Object} this
+ */
+ setCanvasData: function setCanvasData(data) {
+ var canvasData = this.canvasData;
+ var aspectRatio = canvasData.aspectRatio;
+
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ canvasData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ canvasData.top = data.top;
+ }
+
+ if (isNumber(data.width)) {
+ canvasData.width = data.width;
+ canvasData.height = data.width / aspectRatio;
+ } else if (isNumber(data.height)) {
+ canvasData.height = data.height;
+ canvasData.width = data.height * aspectRatio;
+ }
+
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the crop box position and size data.
+ * @returns {Object} The result crop box data.
+ */
+ getCropBoxData: function getCropBoxData() {
+ var cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ left: cropBoxData.left,
+ top: cropBoxData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+ }
+
+ return data || {};
+ },
+
+
+ /**
+ * Set the crop box position and size with new data.
+ * @param {Object} data - The new crop box data.
+ * @returns {Object} this
+ */
+ setCropBoxData: function setCropBoxData(data) {
+ var cropBoxData = this.cropBoxData;
+ var aspectRatio = this.options.aspectRatio;
+
+ var widthChanged = void 0;
+ var heightChanged = void 0;
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ cropBoxData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ cropBoxData.top = data.top;
+ }
+
+ if (isNumber(data.width) && data.width !== cropBoxData.width) {
+ widthChanged = true;
+ cropBoxData.width = data.width;
+ }
+
+ if (isNumber(data.height) && data.height !== cropBoxData.height) {
+ heightChanged = true;
+ cropBoxData.height = data.height;
+ }
+
+ if (aspectRatio) {
+ if (widthChanged) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else if (heightChanged) {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.renderCropBox();
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get a canvas drawn the cropped image.
+ * @param {Object} [options={}] - The config options.
+ * @returns {HTMLCanvasElement} - The result canvas.
+ */
+ getCroppedCanvas: function getCroppedCanvas() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+ if (!this.ready || !window.HTMLCanvasElement) {
+ return null;
+ }
+
+ var canvasData = this.canvasData;
+
+ var source = getSourceCanvas(this.image, this.imageData, canvasData, options);
+
+ // Returns the source canvas if it is not cropped.
+ if (!this.cropped) {
+ return source;
+ }
+
+ var _getData = this.getData(),
+ x = _getData.x,
+ y = _getData.y,
+ initialWidth = _getData.width,
+ initialHeight = _getData.height;
+
+ var aspectRatio = initialWidth / initialHeight;
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.maxWidth || Infinity,
+ height: options.maxHeight || Infinity
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.minWidth || 0,
+ height: options.minHeight || 0
+ });
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.width || initialWidth,
+ height: options.height || initialHeight
+ }),
+ width = _getContainSizes.width,
+ height = _getContainSizes.height;
+
+ width = Math.min(maxSizes.width, Math.max(minSizes.width, width));
+ height = Math.min(maxSizes.height, Math.max(minSizes.height, height));
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+
+ context.fillStyle = options.fillColor || 'transparent';
+ context.fillRect(0, 0, width, height);
+
+ var _options$imageSmoothi = options.imageSmoothingEnabled,
+ imageSmoothingEnabled = _options$imageSmoothi === undefined ? true : _options$imageSmoothi,
+ imageSmoothingQuality = options.imageSmoothingQuality;
+
+
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+
+ if (imageSmoothingQuality) {
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage
+ var sourceWidth = source.width;
+ var sourceHeight = source.height;
+
+ // Source canvas parameters
+ var srcX = x;
+ var srcY = y;
+ var srcWidth = void 0;
+ var srcHeight = void 0;
+
+ // Destination canvas parameters
+ var dstX = void 0;
+ var dstY = void 0;
+ var dstWidth = void 0;
+ var dstHeight = void 0;
+
+ if (srcX <= -initialWidth || srcX > sourceWidth) {
+ srcX = 0;
+ srcWidth = 0;
+ dstX = 0;
+ dstWidth = 0;
+ } else if (srcX <= 0) {
+ dstX = -srcX;
+ srcX = 0;
+ srcWidth = Math.min(sourceWidth, initialWidth + srcX);
+ dstWidth = srcWidth;
+ } else if (srcX <= sourceWidth) {
+ dstX = 0;
+ srcWidth = Math.min(initialWidth, sourceWidth - srcX);
+ dstWidth = srcWidth;
+ }
+
+ if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {
+ srcY = 0;
+ srcHeight = 0;
+ dstY = 0;
+ dstHeight = 0;
+ } else if (srcY <= 0) {
+ dstY = -srcY;
+ srcY = 0;
+ srcHeight = Math.min(sourceHeight, initialHeight + srcY);
+ dstHeight = srcHeight;
+ } else if (srcY <= sourceHeight) {
+ dstY = 0;
+ srcHeight = Math.min(initialHeight, sourceHeight - srcY);
+ dstHeight = srcHeight;
+ }
+
+ // All the numerical parameters should be integer for `drawImage`
+ // https://github.com/fengyuanchen/cropper/issues/476
+ var params = [srcX, srcY, srcWidth, srcHeight];
+
+ // Avoid "IndexSizeError"
+ if (dstWidth > 0 && dstHeight > 0) {
+ var scale = width / initialWidth;
+
+ params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);
+ }
+
+ context.drawImage.apply(context, [source].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+
+ return canvas;
+ },
+
+
+ /**
+ * Change the aspect ratio of the crop box.
+ * @param {number} aspectRatio - The new aspect ratio.
+ * @returns {Object} this
+ */
+ setAspectRatio: function setAspectRatio(aspectRatio) {
+ var options = this.options;
+
+
+ if (!this.disabled && !isUndefined(aspectRatio)) {
+ // 0 -> NaN
+ options.aspectRatio = Math.max(0, aspectRatio) || NaN;
+
+ if (this.ready) {
+ this.initCropBox();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Change the drag mode.
+ * @param {string} mode - The new drag mode.
+ * @returns {Object} this
+ */
+ setDragMode: function setDragMode(mode) {
+ var options = this.options,
+ dragBox = this.dragBox,
+ face = this.face;
+
+
+ if (this.loaded && !this.disabled) {
+ var croppable = mode === DRAG_MODE_CROP;
+ var movable = options.movable && mode === DRAG_MODE_MOVE;
+
+ mode = croppable || movable ? mode : DRAG_MODE_NONE;
+
+ setData(dragBox, DATA_ACTION, mode);
+ toggleClass(dragBox, CLASS_CROP, croppable);
+ toggleClass(dragBox, CLASS_MOVE, movable);
+
+ if (!options.cropBoxMovable) {
+ // Sync drag mode to crop box when it is not movable
+ setData(face, DATA_ACTION, mode);
+ toggleClass(face, CLASS_CROP, croppable);
+ toggleClass(face, CLASS_MOVE, movable);
+ }
+ }
+
+ return this;
+ }
+};
+
+var AnotherCropper = WINDOW.Cropper;
+
+var Cropper = function () {
+ /**
+ * Create a new Cropper.
+ * @param {Element} element - The target element for cropping.
+ * @param {Object} [options={}] - The configuration options.
+ */
+ function Cropper(element) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ classCallCheck(this, Cropper);
+
+ if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {
+ throw new Error('The first argument is required and must be an <img> or <canvas> element.');
+ }
+
+ this.element = element;
+ this.options = extend({}, DEFAULTS, isPlainObject(options) && options);
+ this.complete = false;
+ this.cropped = false;
+ this.disabled = false;
+ this.isImg = false;
+ this.limited = false;
+ this.loaded = false;
+ this.ready = false;
+ this.replaced = false;
+ this.wheeling = false;
+ this.originalUrl = '';
+ this.canvasData = null;
+ this.cropBoxData = null;
+ this.previews = null;
+ this.pointers = {};
+ this.init();
+ }
+
+ createClass(Cropper, [{
+ key: 'init',
+ value: function init() {
+ var element = this.element;
+
+ var tagName = element.tagName.toLowerCase();
+ var url = void 0;
+
+ if (getData(element, NAMESPACE)) {
+ return;
+ }
+
+ setData(element, NAMESPACE, this);
+
+ if (tagName === 'img') {
+ this.isImg = true;
+
+ // e.g.: "img/picture.jpg"
+ url = element.getAttribute('src') || '';
+ this.originalUrl = url;
+
+ // Stop when it's a blank image
+ if (!url) {
+ return;
+ }
+
+ // e.g.: "http://example.com/img/picture.jpg"
+ url = element.src;
+ } else if (tagName === 'canvas' && window.HTMLCanvasElement) {
+ url = element.toDataURL();
+ }
+
+ this.load(url);
+ }
+ }, {
+ key: 'load',
+ value: function load(url) {
+ var _this = this;
+
+ if (!url) {
+ return;
+ }
+
+ this.url = url;
+ this.imageData = {};
+
+ var element = this.element,
+ options = this.options;
+
+
+ if (!options.checkOrientation || !window.ArrayBuffer) {
+ this.clone();
+ return;
+ }
+
+ // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari
+ if (REGEXP_DATA_URL.test(url)) {
+ if (REGEXP_DATA_URL_JPEG.test(url)) {
+ this.read(dataURLToArrayBuffer(url));
+ } else {
+ this.clone();
+ }
+
+ return;
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ xhr.onerror = function () {
+ _this.clone();
+ };
+
+ xhr.onload = function () {
+ _this.read(xhr.response);
+ };
+
+ if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {
+ url = addTimestamp(url);
+ }
+
+ xhr.open('get', url);
+ xhr.responseType = 'arraybuffer';
+ xhr.withCredentials = element.crossOrigin === 'use-credentials';
+ xhr.send();
+ }
+ }, {
+ key: 'read',
+ value: function read(arrayBuffer) {
+ var options = this.options,
+ imageData = this.imageData;
+
+ var orientation = getOrientation(arrayBuffer);
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ if (orientation > 1) {
+ this.url = arrayBufferToDataURL(arrayBuffer, 'image/jpeg');
+
+ var _parseOrientation = parseOrientation(orientation);
+
+ rotate = _parseOrientation.rotate;
+ scaleX = _parseOrientation.scaleX;
+ scaleY = _parseOrientation.scaleY;
+ }
+
+ if (options.rotatable) {
+ imageData.rotate = rotate;
+ }
+
+ if (options.scalable) {
+ imageData.scaleX = scaleX;
+ imageData.scaleY = scaleY;
+ }
+
+ this.clone();
+ }
+ }, {
+ key: 'clone',
+ value: function clone() {
+ var element = this.element,
+ url = this.url;
+
+ var crossOrigin = void 0;
+ var crossOriginUrl = void 0;
+
+ if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {
+ crossOrigin = element.crossOrigin;
+
+
+ if (crossOrigin) {
+ crossOriginUrl = url;
+ } else {
+ crossOrigin = 'anonymous';
+
+ // Bust cache when there is not a "crossOrigin" property
+ crossOriginUrl = addTimestamp(url);
+ }
+ }
+
+ this.crossOrigin = crossOrigin;
+ this.crossOriginUrl = crossOriginUrl;
+
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = crossOriginUrl || url;
+
+ var start = proxy(this.start, this);
+ var stop = proxy(this.stop, this);
+
+ this.image = image;
+ this.onStart = start;
+ this.onStop = stop;
+
+ if (this.isImg) {
+ if (element.complete) {
+ this.start();
+ } else {
+ addListener(element, EVENT_LOAD, start);
+ }
+ } else {
+ addListener(image, EVENT_LOAD, start);
+ addListener(image, EVENT_ERROR, stop);
+ addClass(image, CLASS_HIDE);
+ element.parentNode.insertBefore(image, element.nextSibling);
+ }
+ }
+ }, {
+ key: 'start',
+ value: function start(event) {
+ var _this2 = this;
+
+ var image = this.isImg ? this.element : this.image;
+
+ if (event) {
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ }
+
+ getImageNaturalSizes(image, function (naturalWidth, naturalHeight) {
+ extend(_this2.imageData, {
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ aspectRatio: naturalWidth / naturalHeight
+ });
+ _this2.loaded = true;
+ _this2.build();
+ });
+ }
+ }, {
+ key: 'stop',
+ value: function stop() {
+ var image = this.image;
+
+
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ image.parentNode.removeChild(image);
+ this.image = null;
+ }
+ }, {
+ key: 'build',
+ value: function build() {
+ var _this3 = this;
+
+ if (!this.loaded) {
+ return;
+ }
+
+ // Unbuild first when replace
+ if (this.ready) {
+ this.unbuild();
+ }
+
+ var element = this.element,
+ options = this.options,
+ image = this.image;
+
+ // Create cropper elements
+
+ var container = element.parentNode;
+ var template = document.createElement('div');
+
+ template.innerHTML = TEMPLATE;
+
+ var cropper = template.querySelector('.' + NAMESPACE + '-container');
+ var canvas = cropper.querySelector('.' + NAMESPACE + '-canvas');
+ var dragBox = cropper.querySelector('.' + NAMESPACE + '-drag-box');
+ var cropBox = cropper.querySelector('.' + NAMESPACE + '-crop-box');
+ var face = cropBox.querySelector('.' + NAMESPACE + '-face');
+
+ this.container = container;
+ this.cropper = cropper;
+ this.canvas = canvas;
+ this.dragBox = dragBox;
+ this.cropBox = cropBox;
+ this.viewBox = cropper.querySelector('.' + NAMESPACE + '-view-box');
+ this.face = face;
+
+ canvas.appendChild(image);
+
+ // Hide the original image
+ addClass(element, CLASS_HIDDEN);
+
+ // Inserts the cropper after to the current image
+ container.insertBefore(cropper, element.nextSibling);
+
+ // Show the image if is hidden
+ if (!this.isImg) {
+ removeClass(image, CLASS_HIDE);
+ }
+
+ this.initPreview();
+ this.bind();
+
+ options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;
+ options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;
+
+ this.cropped = options.autoCrop;
+
+ if (options.autoCrop) {
+ if (options.modal) {
+ addClass(dragBox, CLASS_MODAL);
+ }
+ } else {
+ addClass(cropBox, CLASS_HIDDEN);
+ }
+
+ if (!options.guides) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-dashed'), CLASS_HIDDEN);
+ }
+
+ if (!options.center) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-center'), CLASS_HIDDEN);
+ }
+
+ if (options.background) {
+ addClass(cropper, NAMESPACE + '-bg');
+ }
+
+ if (!options.highlight) {
+ addClass(face, CLASS_INVISIBLE);
+ }
+
+ if (options.cropBoxMovable) {
+ addClass(face, CLASS_MOVE);
+ setData(face, DATA_ACTION, ACTION_ALL);
+ }
+
+ if (!options.cropBoxResizable) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-line'), CLASS_HIDDEN);
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-point'), CLASS_HIDDEN);
+ }
+
+ this.setDragMode(options.dragMode);
+ this.render();
+ this.ready = true;
+ this.setData(options.data);
+
+ // Call the "ready" option asynchronously to keep "image.cropper" is defined
+ this.completing = setTimeout(function () {
+ if (isFunction(options.ready)) {
+ addListener(element, EVENT_READY, options.ready, {
+ once: true
+ });
+ }
+
+ dispatchEvent(element, EVENT_READY);
+ dispatchEvent(element, EVENT_CROP, _this3.getData());
+
+ _this3.complete = true;
+ }, 0);
+ }
+ }, {
+ key: 'unbuild',
+ value: function unbuild() {
+ if (!this.ready) {
+ return;
+ }
+
+ if (!this.complete) {
+ clearTimeout(this.completing);
+ }
+
+ this.ready = false;
+ this.complete = false;
+ this.initialImageData = null;
+
+ // Clear `initialCanvasData` is necessary when replace
+ this.initialCanvasData = null;
+ this.initialCropBoxData = null;
+ this.containerData = null;
+ this.canvasData = null;
+
+ // Clear `cropBoxData` is necessary when replace
+ this.cropBoxData = null;
+ this.unbind();
+ this.resetPreview();
+ this.previews = null;
+ this.viewBox = null;
+ this.cropBox = null;
+ this.dragBox = null;
+ this.canvas = null;
+ this.container = null;
+ this.cropper.parentNode.removeChild(this.cropper);
+ this.cropper = null;
+ }
+
+ /**
+ * Get the no conflict cropper class.
+ * @returns {Cropper} The cropper class.
+ */
+
+ }], [{
+ key: 'noConflict',
+ value: function noConflict() {
+ window.Cropper = AnotherCropper;
+ return Cropper;
+ }
+
+ /**
+ * Change the default options.
+ * @param {Object} options - The new default options.
+ */
+
+ }, {
+ key: 'setDefaults',
+ value: function setDefaults(options) {
+ extend(DEFAULTS, isPlainObject(options) && options);
+ }
+ }]);
+ return Cropper;
+}();
+
+extend(Cropper.prototype, render, preview, events, handlers, change, methods);
+
+module.exports = Cropper;
diff --git a/library/cropperjs/dist/cropper.css b/library/cropperjs/dist/cropper.css
new file mode 100644
index 000000000..dd22178fe
--- /dev/null
+++ b/library/cropperjs/dist/cropper.css
@@ -0,0 +1,306 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:26:29.610Z
+ */
+
+.cropper-container {
+ direction: ltr;
+ font-size: 0;
+ line-height: 0;
+ position: relative;
+ -ms-touch-action: none;
+ touch-action: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.cropper-container img {/*Avoid margin top issue (Occur only when margin-top <= -height)
+ */
+ display: block;
+ height: 100%;
+ image-orientation: 0deg;
+ max-height: none !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ min-width: 0 !important;
+ width: 100%;
+}
+
+.cropper-wrap-box,
+.cropper-canvas,
+.cropper-drag-box,
+.cropper-crop-box,
+.cropper-modal {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.cropper-wrap-box,
+.cropper-canvas {
+ overflow: hidden;
+}
+
+.cropper-drag-box {
+ background-color: #fff;
+ opacity: 0;
+}
+
+.cropper-modal {
+ background-color: #000;
+ opacity: .5;
+}
+
+.cropper-view-box {
+ display: block;
+ height: 100%;
+ outline-color: rgba(51, 153, 255, 0.75);
+ outline: 1px solid #39f;
+ overflow: hidden;
+ width: 100%;
+}
+
+.cropper-dashed {
+ border: 0 dashed #eee;
+ display: block;
+ opacity: .5;
+ position: absolute;
+}
+
+.cropper-dashed.dashed-h {
+ border-bottom-width: 1px;
+ border-top-width: 1px;
+ height: 33.33333%;
+ left: 0;
+ top: 33.33333%;
+ width: 100%;
+}
+
+.cropper-dashed.dashed-v {
+ border-left-width: 1px;
+ border-right-width: 1px;
+ height: 100%;
+ left: 33.33333%;
+ top: 0;
+ width: 33.33333%;
+}
+
+.cropper-center {
+ display: block;
+ height: 0;
+ left: 50%;
+ opacity: .75;
+ position: absolute;
+ top: 50%;
+ width: 0;
+}
+
+.cropper-center:before,
+.cropper-center:after {
+ background-color: #eee;
+ content: ' ';
+ display: block;
+ position: absolute;
+}
+
+.cropper-center:before {
+ height: 1px;
+ left: -3px;
+ top: 0;
+ width: 7px;
+}
+
+.cropper-center:after {
+ height: 7px;
+ left: 0;
+ top: -3px;
+ width: 1px;
+}
+
+.cropper-face,
+.cropper-line,
+.cropper-point {
+ display: block;
+ height: 100%;
+ opacity: .1;
+ position: absolute;
+ width: 100%;
+}
+
+.cropper-face {
+ background-color: #fff;
+ left: 0;
+ top: 0;
+}
+
+.cropper-line {
+ background-color: #39f;
+}
+
+.cropper-line.line-e {
+ cursor: ew-resize;
+ right: -3px;
+ top: 0;
+ width: 5px;
+}
+
+.cropper-line.line-n {
+ cursor: ns-resize;
+ height: 5px;
+ left: 0;
+ top: -3px;
+}
+
+.cropper-line.line-w {
+ cursor: ew-resize;
+ left: -3px;
+ top: 0;
+ width: 5px;
+}
+
+.cropper-line.line-s {
+ bottom: -3px;
+ cursor: ns-resize;
+ height: 5px;
+ left: 0;
+}
+
+.cropper-point {
+ background-color: #39f;
+ height: 5px;
+ opacity: .75;
+ width: 5px;
+}
+
+.cropper-point.point-e {
+ cursor: ew-resize;
+ margin-top: -3px;
+ right: -3px;
+ top: 50%;
+}
+
+.cropper-point.point-n {
+ cursor: ns-resize;
+ left: 50%;
+ margin-left: -3px;
+ top: -3px;
+}
+
+.cropper-point.point-w {
+ cursor: ew-resize;
+ left: -3px;
+ margin-top: -3px;
+ top: 50%;
+}
+
+.cropper-point.point-s {
+ bottom: -3px;
+ cursor: s-resize;
+ left: 50%;
+ margin-left: -3px;
+}
+
+.cropper-point.point-ne {
+ cursor: nesw-resize;
+ right: -3px;
+ top: -3px;
+}
+
+.cropper-point.point-nw {
+ cursor: nwse-resize;
+ left: -3px;
+ top: -3px;
+}
+
+.cropper-point.point-sw {
+ bottom: -3px;
+ cursor: nesw-resize;
+ left: -3px;
+}
+
+.cropper-point.point-se {
+ bottom: -3px;
+ cursor: nwse-resize;
+ height: 20px;
+ opacity: 1;
+ right: -3px;
+ width: 20px;
+}
+
+@media (min-width: 768px) {
+ .cropper-point.point-se {
+ height: 15px;
+ width: 15px;
+ }
+}
+
+@media (min-width: 992px) {
+ .cropper-point.point-se {
+ height: 10px;
+ width: 10px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .cropper-point.point-se {
+ height: 5px;
+ opacity: .75;
+ width: 5px;
+ }
+}
+
+.cropper-point.point-se:before {
+ background-color: #39f;
+ bottom: -50%;
+ content: ' ';
+ display: block;
+ height: 200%;
+ opacity: 0;
+ position: absolute;
+ right: -50%;
+ width: 200%;
+}
+
+.cropper-invisible {
+ opacity: 0;
+}
+
+.cropper-bg {
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
+}
+
+.cropper-hide {
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+
+.cropper-hidden {
+ display: none !important;
+}
+
+.cropper-move {
+ cursor: move;
+}
+
+.cropper-crop {
+ cursor: crosshair;
+}
+
+.cropper-disabled .cropper-drag-box,
+.cropper-disabled .cropper-face,
+.cropper-disabled .cropper-line,
+.cropper-disabled .cropper-point {
+ cursor: not-allowed;
+}
+
diff --git a/library/cropperjs/dist/cropper.esm.js b/library/cropperjs/dist/cropper.esm.js
new file mode 100644
index 000000000..929852d8a
--- /dev/null
+++ b/library/cropperjs/dist/cropper.esm.js
@@ -0,0 +1,3758 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:27:18.062Z
+ */
+
+var WINDOW = typeof window !== 'undefined' ? window : {};
+var NAMESPACE = 'cropper';
+
+// Actions
+var ACTION_ALL = 'all';
+var ACTION_CROP = 'crop';
+var ACTION_MOVE = 'move';
+var ACTION_ZOOM = 'zoom';
+var ACTION_EAST = 'e';
+var ACTION_WEST = 'w';
+var ACTION_SOUTH = 's';
+var ACTION_NORTH = 'n';
+var ACTION_NORTH_EAST = 'ne';
+var ACTION_NORTH_WEST = 'nw';
+var ACTION_SOUTH_EAST = 'se';
+var ACTION_SOUTH_WEST = 'sw';
+
+// Classes
+var CLASS_CROP = NAMESPACE + '-crop';
+var CLASS_DISABLED = NAMESPACE + '-disabled';
+var CLASS_HIDDEN = NAMESPACE + '-hidden';
+var CLASS_HIDE = NAMESPACE + '-hide';
+var CLASS_INVISIBLE = NAMESPACE + '-invisible';
+var CLASS_MODAL = NAMESPACE + '-modal';
+var CLASS_MOVE = NAMESPACE + '-move';
+
+// Data keys
+var DATA_ACTION = 'action';
+var DATA_PREVIEW = 'preview';
+
+// Drag modes
+var DRAG_MODE_CROP = 'crop';
+var DRAG_MODE_MOVE = 'move';
+var DRAG_MODE_NONE = 'none';
+
+// Events
+var EVENT_CROP = 'crop';
+var EVENT_CROP_END = 'cropend';
+var EVENT_CROP_MOVE = 'cropmove';
+var EVENT_CROP_START = 'cropstart';
+var EVENT_DBLCLICK = 'dblclick';
+var EVENT_ERROR = 'error';
+var EVENT_LOAD = 'load';
+var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown';
+var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove';
+var EVENT_POINTER_UP = WINDOW.PointerEvent ? 'pointerup pointercancel' : 'touchend touchcancel mouseup';
+var EVENT_READY = 'ready';
+var EVENT_RESIZE = 'resize';
+var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';
+var EVENT_ZOOM = 'zoom';
+
+// RegExps
+var REGEXP_ACTIONS = /^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;
+var REGEXP_DATA_URL = /^data:/;
+var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/;
+var REGEXP_TAG_NAME = /^(img|canvas)$/i;
+
+var DEFAULTS = {
+ // Define the view mode of the cropper
+ viewMode: 0, // 0, 1, 2, 3
+
+ // Define the dragging mode of the cropper
+ dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none'
+
+ // Define the aspect ratio of the crop box
+ aspectRatio: NaN,
+
+ // An object with the previous cropping result data
+ data: null,
+
+ // A selector for adding extra containers to preview
+ preview: '',
+
+ // Re-render the cropper when resize the window
+ responsive: true,
+
+ // Restore the cropped area after resize the window
+ restore: true,
+
+ // Check if the current image is a cross-origin image
+ checkCrossOrigin: true,
+
+ // Check the current image's Exif Orientation information
+ checkOrientation: true,
+
+ // Show the black modal
+ modal: true,
+
+ // Show the dashed lines for guiding
+ guides: true,
+
+ // Show the center indicator for guiding
+ center: true,
+
+ // Show the white modal to highlight the crop box
+ highlight: true,
+
+ // Show the grid background
+ background: true,
+
+ // Enable to crop the image automatically when initialize
+ autoCrop: true,
+
+ // Define the percentage of automatic cropping area when initializes
+ autoCropArea: 0.8,
+
+ // Enable to move the image
+ movable: true,
+
+ // Enable to rotate the image
+ rotatable: true,
+
+ // Enable to scale the image
+ scalable: true,
+
+ // Enable to zoom the image
+ zoomable: true,
+
+ // Enable to zoom the image by dragging touch
+ zoomOnTouch: true,
+
+ // Enable to zoom the image by wheeling mouse
+ zoomOnWheel: true,
+
+ // Define zoom ratio when zoom the image by wheeling mouse
+ wheelZoomRatio: 0.1,
+
+ // Enable to move the crop box
+ cropBoxMovable: true,
+
+ // Enable to resize the crop box
+ cropBoxResizable: true,
+
+ // Toggle drag mode between "crop" and "move" when click twice on the cropper
+ toggleDragModeOnDblclick: true,
+
+ // Size limitation
+ minCanvasWidth: 0,
+ minCanvasHeight: 0,
+ minCropBoxWidth: 0,
+ minCropBoxHeight: 0,
+ minContainerWidth: 200,
+ minContainerHeight: 100,
+
+ // Shortcuts of events
+ ready: null,
+ cropstart: null,
+ cropmove: null,
+ cropend: null,
+ crop: null,
+ zoom: null
+};
+
+var TEMPLATE = '<div class="cropper-container">' + '<div class="cropper-wrap-box">' + '<div class="cropper-canvas"></div>' + '</div>' + '<div class="cropper-drag-box"></div>' + '<div class="cropper-crop-box">' + '<span class="cropper-view-box"></span>' + '<span class="cropper-dashed dashed-h"></span>' + '<span class="cropper-dashed dashed-v"></span>' + '<span class="cropper-center"></span>' + '<span class="cropper-face"></span>' + '<span class="cropper-line line-e" data-action="e"></span>' + '<span class="cropper-line line-n" data-action="n"></span>' + '<span class="cropper-line line-w" data-action="w"></span>' + '<span class="cropper-line line-s" data-action="s"></span>' + '<span class="cropper-point point-e" data-action="e"></span>' + '<span class="cropper-point point-n" data-action="n"></span>' + '<span class="cropper-point point-w" data-action="w"></span>' + '<span class="cropper-point point-s" data-action="s"></span>' + '<span class="cropper-point point-ne" data-action="ne"></span>' + '<span class="cropper-point point-nw" data-action="nw"></span>' + '<span class="cropper-point point-sw" data-action="sw"></span>' + '<span class="cropper-point point-se" data-action="se"></span>' + '</div>' + '</div>';
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+} : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+};
+
+
+
+
+
+
+
+
+
+
+
+var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+}();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var toConsumableArray = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+};
+
+/**
+ * Check if the given value is not a number.
+ */
+var isNaN = Number.isNaN || WINDOW.isNaN;
+
+/**
+ * Check if the given value is a number.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a number, else `false`.
+ */
+function isNumber(value) {
+ return typeof value === 'number' && !isNaN(value);
+}
+
+/**
+ * Check if the given value is undefined.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is undefined, else `false`.
+ */
+function isUndefined(value) {
+ return typeof value === 'undefined';
+}
+
+/**
+ * Check if the given value is an object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is an object, else `false`.
+ */
+function isObject(value) {
+ return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null;
+}
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * Check if the given value is a plain object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.
+ */
+
+function isPlainObject(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+
+ try {
+ var _constructor = value.constructor;
+ var prototype = _constructor.prototype;
+
+
+ return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');
+ } catch (e) {
+ return false;
+ }
+}
+
+/**
+ * Check if the given value is a function.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a function, else `false`.
+ */
+function isFunction(value) {
+ return typeof value === 'function';
+}
+
+/**
+ * Iterate the given data.
+ * @param {*} data - The data to iterate.
+ * @param {Function} callback - The process function for each element.
+ * @returns {*} The original data.
+ */
+function each(data, callback) {
+ if (data && isFunction(callback)) {
+ if (Array.isArray(data) || isNumber(data.length) /* array-like */) {
+ var length = data.length;
+
+ var i = void 0;
+
+ for (i = 0; i < length; i += 1) {
+ if (callback.call(data, data[i], i, data) === false) {
+ break;
+ }
+ }
+ } else if (isObject(data)) {
+ Object.keys(data).forEach(function (key) {
+ callback.call(data, data[key], key, data);
+ });
+ }
+ }
+
+ return data;
+}
+
+/**
+ * Extend the given object.
+ * @param {*} obj - The object to be extended.
+ * @param {*} args - The rest objects which will be merged to the first object.
+ * @returns {Object} The extended object.
+ */
+function extend(obj) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ if (isObject(obj) && args.length > 0) {
+ if (Object.assign) {
+ return Object.assign.apply(Object, [obj].concat(args));
+ }
+
+ args.forEach(function (arg) {
+ if (isObject(arg)) {
+ Object.keys(arg).forEach(function (key) {
+ obj[key] = arg[key];
+ });
+ }
+ });
+ }
+
+ return obj;
+}
+
+/**
+ * Takes a function and returns a new one that will always have a particular context.
+ * @param {Function} fn - The target function.
+ * @param {Object} context - The new context for the function.
+ * @returns {boolean} The new function.
+ */
+function proxy(fn, context) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ return function () {
+ for (var _len3 = arguments.length, args2 = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args2[_key3] = arguments[_key3];
+ }
+
+ return fn.apply(context, args.concat(args2));
+ };
+}
+
+var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/i;
+
+/**
+ * Normalize decimal number.
+ * Check out {@link http://0.30000000000000004.com/ }
+ * @param {number} value - The value to normalize.
+ * @param {number} [times=100000000000] - The times for normalizing.
+ * @returns {number} Returns the normalized number.
+ */
+function normalizeDecimalNumber(value) {
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;
+
+ return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;
+}
+
+var REGEXP_SUFFIX = /^(width|height|left|top|marginLeft|marginTop)$/;
+
+/**
+ * Apply styles to the given element.
+ * @param {Element} element - The target element.
+ * @param {Object} styles - The styles for applying.
+ */
+function setStyle(element, styles) {
+ var style = element.style;
+
+
+ each(styles, function (value, property) {
+ if (REGEXP_SUFFIX.test(property) && isNumber(value)) {
+ value += 'px';
+ }
+
+ style[property] = value;
+ });
+}
+
+/**
+ * Check if the given element has a special class.
+ * @param {Element} element - The element to check.
+ * @param {string} value - The class to search.
+ * @returns {boolean} Returns `true` if the special class was found.
+ */
+function hasClass(element, value) {
+ return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;
+}
+
+/**
+ * Add classes to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be added.
+ */
+function addClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ addClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.add(value);
+ return;
+ }
+
+ var className = element.className.trim();
+
+ if (!className) {
+ element.className = value;
+ } else if (className.indexOf(value) < 0) {
+ element.className = className + ' ' + value;
+ }
+}
+
+/**
+ * Remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be removed.
+ */
+function removeClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ removeClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.remove(value);
+ return;
+ }
+
+ if (element.className.indexOf(value) >= 0) {
+ element.className = element.className.replace(value, '');
+ }
+}
+
+/**
+ * Add or remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be toggled.
+ * @param {boolean} added - Add only.
+ */
+function toggleClass(element, value, added) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ toggleClass(elem, value, added);
+ });
+ return;
+ }
+
+ // IE10-11 doesn't support the second parameter of `classList.toggle`
+ if (added) {
+ addClass(element, value);
+ } else {
+ removeClass(element, value);
+ }
+}
+
+var REGEXP_HYPHENATE = /([a-z\d])([A-Z])/g;
+
+/**
+ * Hyphenate the given value.
+ * @param {string} value - The value to hyphenate.
+ * @returns {string} The hyphenated value.
+ */
+function hyphenate(value) {
+ return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();
+}
+
+/**
+ * Get data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to get.
+ * @returns {string} The data value.
+ */
+function getData(element, name) {
+ if (isObject(element[name])) {
+ return element[name];
+ } else if (element.dataset) {
+ return element.dataset[name];
+ }
+
+ return element.getAttribute('data-' + hyphenate(name));
+}
+
+/**
+ * Set data to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to set.
+ * @param {string} data - The data value.
+ */
+function setData(element, name, data) {
+ if (isObject(data)) {
+ element[name] = data;
+ } else if (element.dataset) {
+ element.dataset[name] = data;
+ } else {
+ element.setAttribute('data-' + hyphenate(name), data);
+ }
+}
+
+/**
+ * Remove data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to remove.
+ */
+function removeData(element, name) {
+ if (isObject(element[name])) {
+ try {
+ delete element[name];
+ } catch (e) {
+ element[name] = null;
+ }
+ } else if (element.dataset) {
+ // #128 Safari not allows to delete dataset property
+ try {
+ delete element.dataset[name];
+ } catch (e) {
+ element.dataset[name] = null;
+ }
+ } else {
+ element.removeAttribute('data-' + hyphenate(name));
+ }
+}
+
+var REGEXP_SPACES = /\s+/;
+
+/**
+ * Remove event listener from the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function removeListener(element, type, listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ removeListener(element, t, listener, options);
+ });
+ return;
+ }
+
+ if (element.removeEventListener) {
+ element.removeEventListener(type, listener, options);
+ } else if (element.detachEvent) {
+ element.detachEvent('on' + type, listener);
+ }
+}
+
+/**
+ * Add event listener to the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function addListener(element, type, _listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(_listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ addListener(element, t, _listener, options);
+ });
+ return;
+ }
+
+ if (options.once) {
+ var originalListener = _listener;
+
+ _listener = function listener() {
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ removeListener(element, type, _listener, options);
+ return originalListener.apply(element, args);
+ };
+ }
+
+ if (element.addEventListener) {
+ element.addEventListener(type, _listener, options);
+ } else if (element.attachEvent) {
+ element.attachEvent('on' + type, _listener);
+ }
+}
+
+/**
+ * Dispatch event on the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Object} data - The additional event data.
+ * @returns {boolean} Indicate if the event is default prevented or not.
+ */
+function dispatchEvent(element, type, data) {
+ if (element.dispatchEvent) {
+ var event = void 0;
+
+ // Event and CustomEvent on IE9-11 are global objects, not constructors
+ if (isFunction(Event) && isFunction(CustomEvent)) {
+ if (isUndefined(data)) {
+ event = new Event(type, {
+ bubbles: true,
+ cancelable: true
+ });
+ } else {
+ event = new CustomEvent(type, {
+ detail: data,
+ bubbles: true,
+ cancelable: true
+ });
+ }
+ } else if (isUndefined(data)) {
+ event = document.createEvent('Event');
+ event.initEvent(type, true, true);
+ } else {
+ event = document.createEvent('CustomEvent');
+ event.initCustomEvent(type, true, true, data);
+ }
+
+ // IE9+
+ return element.dispatchEvent(event);
+ } else if (element.fireEvent) {
+ // IE6-10 (native events only)
+ return element.fireEvent('on' + type);
+ }
+
+ return true;
+}
+
+/**
+ * Get the offset base on the document.
+ * @param {Element} element - The target element.
+ * @returns {Object} The offset data.
+ */
+function getOffset(element) {
+ var doc = document.documentElement;
+ var box = element.getBoundingClientRect();
+
+ return {
+ left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)),
+ top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0))
+ };
+}
+
+/**
+ * Empty an element.
+ * @param {Element} element - The element to empty.
+ */
+function empty(element) {
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+var location = WINDOW.location;
+
+var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i;
+
+/**
+ * Check if the given URL is a cross origin URL.
+ * @param {string} url - The target URL.
+ * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.
+ */
+function isCrossOriginURL(url) {
+ var parts = url.match(REGEXP_ORIGINS);
+
+ return parts && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
+}
+
+/**
+ * Add timestamp to the given URL.
+ * @param {string} url - The target URL.
+ * @returns {string} The result URL.
+ */
+function addTimestamp(url) {
+ var timestamp = 'timestamp=' + new Date().getTime();
+
+ return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;
+}
+
+/**
+ * Get transforms base on the given object.
+ * @param {Object} obj - The target object.
+ * @returns {string} A string contains transform values.
+ */
+function getTransforms(_ref) {
+ var rotate = _ref.rotate,
+ scaleX = _ref.scaleX,
+ scaleY = _ref.scaleY,
+ translateX = _ref.translateX,
+ translateY = _ref.translateY;
+
+ var values = [];
+
+ if (isNumber(translateX) && translateX !== 0) {
+ values.push('translateX(' + translateX + 'px)');
+ }
+
+ if (isNumber(translateY) && translateY !== 0) {
+ values.push('translateY(' + translateY + 'px)');
+ }
+
+ // Rotate should come first before scale to match orientation transform
+ if (isNumber(rotate) && rotate !== 0) {
+ values.push('rotate(' + rotate + 'deg)');
+ }
+
+ if (isNumber(scaleX) && scaleX !== 1) {
+ values.push('scaleX(' + scaleX + ')');
+ }
+
+ if (isNumber(scaleY) && scaleY !== 1) {
+ values.push('scaleY(' + scaleY + ')');
+ }
+
+ var transform = values.length ? values.join(' ') : 'none';
+
+ return {
+ WebkitTransform: transform,
+ msTransform: transform,
+ transform: transform
+ };
+}
+
+var navigator = WINDOW.navigator;
+
+var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
+
+/**
+ * Get an image's natural sizes.
+ * @param {string} image - The target image.
+ * @param {Function} callback - The callback function.
+ */
+function getImageNaturalSizes(image, callback) {
+ // Modern browsers (except Safari)
+ if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) {
+ callback(image.naturalWidth, image.naturalHeight);
+ return;
+ }
+
+ var newImage = document.createElement('img');
+ var body = document.body || document.documentElement;
+
+ newImage.onload = function () {
+ callback(newImage.width, newImage.height);
+
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ body.removeChild(newImage);
+ }
+ };
+
+ newImage.src = image.src;
+
+ // iOS Safari will convert the image automatically
+ // with its orientation once append it into DOM (#279)
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';
+ body.appendChild(newImage);
+ }
+}
+
+/**
+ * Get the max ratio of a group of pointers.
+ * @param {string} pointers - The target pointers.
+ * @returns {number} The result ratio.
+ */
+function getMaxZoomRatio(pointers) {
+ var pointers2 = extend({}, pointers);
+ var ratios = [];
+
+ each(pointers, function (pointer, pointerId) {
+ delete pointers2[pointerId];
+
+ each(pointers2, function (pointer2) {
+ var x1 = Math.abs(pointer.startX - pointer2.startX);
+ var y1 = Math.abs(pointer.startY - pointer2.startY);
+ var x2 = Math.abs(pointer.endX - pointer2.endX);
+ var y2 = Math.abs(pointer.endY - pointer2.endY);
+ var z1 = Math.sqrt(x1 * x1 + y1 * y1);
+ var z2 = Math.sqrt(x2 * x2 + y2 * y2);
+ var ratio = (z2 - z1) / z1;
+
+ ratios.push(ratio);
+ });
+ });
+
+ ratios.sort(function (a, b) {
+ return Math.abs(a) < Math.abs(b);
+ });
+
+ return ratios[0];
+}
+
+/**
+ * Get a pointer from an event object.
+ * @param {Object} event - The target event object.
+ * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.
+ * @returns {Object} The result pointer contains start and/or end point coordinates.
+ */
+function getPointer(_ref2, endOnly) {
+ var pageX = _ref2.pageX,
+ pageY = _ref2.pageY;
+
+ var end = {
+ endX: pageX,
+ endY: pageY
+ };
+
+ if (endOnly) {
+ return end;
+ }
+
+ return extend({
+ startX: pageX,
+ startY: pageY
+ }, end);
+}
+
+/**
+ * Get the center point coordinate of a group of pointers.
+ * @param {Object} pointers - The target pointers.
+ * @returns {Object} The center point coordinate.
+ */
+function getPointersCenter(pointers) {
+ var pageX = 0;
+ var pageY = 0;
+ var count = 0;
+
+ each(pointers, function (_ref3) {
+ var startX = _ref3.startX,
+ startY = _ref3.startY;
+
+ pageX += startX;
+ pageY += startY;
+ count += 1;
+ });
+
+ pageX /= count;
+ pageY /= count;
+
+ return {
+ pageX: pageX,
+ pageY: pageY
+ };
+}
+
+/**
+ * Check if the given value is a finite number.
+ */
+var isFinite = Number.isFinite || WINDOW.isFinite;
+
+/**
+ * Get the max sizes in a rectangle under the given aspect ratio.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getContainSizes(_ref4) {
+ var aspectRatio = _ref4.aspectRatio,
+ height = _ref4.height,
+ width = _ref4.width;
+
+ var isValidNumber = function isValidNumber(value) {
+ return isFinite(value) && value > 0;
+ };
+
+ if (isValidNumber(width) && isValidNumber(height)) {
+ if (height * aspectRatio > width) {
+ height = width / aspectRatio;
+ } else {
+ width = height * aspectRatio;
+ }
+ } else if (isValidNumber(width)) {
+ height = width / aspectRatio;
+ } else if (isValidNumber(height)) {
+ width = height * aspectRatio;
+ }
+
+ return {
+ width: width,
+ height: height
+ };
+}
+
+/**
+ * Get the new sizes of a rectangle after rotated.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getRotatedSizes(_ref5) {
+ var width = _ref5.width,
+ height = _ref5.height,
+ degree = _ref5.degree;
+
+ degree = Math.abs(degree) % 180;
+
+ if (degree === 90) {
+ return {
+ width: height,
+ height: width
+ };
+ }
+
+ var arc = degree % 90 * Math.PI / 180;
+ var sinArc = Math.sin(arc);
+ var cosArc = Math.cos(arc);
+ var newWidth = width * cosArc + height * sinArc;
+ var newHeight = width * sinArc + height * cosArc;
+
+ return degree > 90 ? {
+ width: newHeight,
+ height: newWidth
+ } : {
+ width: newWidth,
+ height: newHeight
+ };
+}
+
+/**
+ * Get a canvas which drew the given image.
+ * @param {HTMLImageElement} image - The image for drawing.
+ * @param {Object} imageData - The image data.
+ * @param {Object} canvasData - The canvas data.
+ * @param {Object} options - The options.
+ * @returns {HTMLCanvasElement} The result canvas.
+ */
+function getSourceCanvas(image, _ref6, _ref7, _ref8) {
+ var imageNaturalWidth = _ref6.naturalWidth,
+ imageNaturalHeight = _ref6.naturalHeight,
+ _ref6$rotate = _ref6.rotate,
+ rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate,
+ _ref6$scaleX = _ref6.scaleX,
+ scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX,
+ _ref6$scaleY = _ref6.scaleY,
+ scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY;
+ var aspectRatio = _ref7.aspectRatio,
+ naturalWidth = _ref7.naturalWidth,
+ naturalHeight = _ref7.naturalHeight;
+ var _ref8$fillColor = _ref8.fillColor,
+ fillColor = _ref8$fillColor === undefined ? 'transparent' : _ref8$fillColor,
+ _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,
+ imageSmoothingEnabled = _ref8$imageSmoothingE === undefined ? true : _ref8$imageSmoothingE,
+ _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,
+ imageSmoothingQuality = _ref8$imageSmoothingQ === undefined ? 'low' : _ref8$imageSmoothingQ,
+ _ref8$maxWidth = _ref8.maxWidth,
+ maxWidth = _ref8$maxWidth === undefined ? Infinity : _ref8$maxWidth,
+ _ref8$maxHeight = _ref8.maxHeight,
+ maxHeight = _ref8$maxHeight === undefined ? Infinity : _ref8$maxHeight,
+ _ref8$minWidth = _ref8.minWidth,
+ minWidth = _ref8$minWidth === undefined ? 0 : _ref8$minWidth,
+ _ref8$minHeight = _ref8.minHeight,
+ minHeight = _ref8$minHeight === undefined ? 0 : _ref8$minHeight;
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: maxWidth,
+ height: maxHeight
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minWidth,
+ height: minHeight
+ });
+ var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));
+ var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));
+ var params = [-imageNaturalWidth / 2, -imageNaturalHeight / 2, imageNaturalWidth, imageNaturalHeight];
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+ context.fillStyle = fillColor;
+ context.fillRect(0, 0, width, height);
+ context.save();
+ context.translate(width / 2, height / 2);
+ context.rotate(rotate * Math.PI / 180);
+ context.scale(scaleX, scaleY);
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ context.drawImage.apply(context, [image].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+ context.restore();
+ return canvas;
+}
+
+var fromCharCode = String.fromCharCode;
+
+/**
+ * Get string from char code in data view.
+ * @param {DataView} dataView - The data view for read.
+ * @param {number} start - The start index.
+ * @param {number} length - The read length.
+ * @returns {string} The read result.
+ */
+
+function getStringFromCharCode(dataView, start, length) {
+ var str = '';
+ var i = void 0;
+
+ length += start;
+
+ for (i = start; i < length; i += 1) {
+ str += fromCharCode(dataView.getUint8(i));
+ }
+
+ return str;
+}
+
+var REGEXP_DATA_URL_HEAD = /^data:.*,/;
+
+/**
+ * Transform Data URL to array buffer.
+ * @param {string} dataURL - The Data URL to transform.
+ * @returns {ArrayBuffer} The result array buffer.
+ */
+function dataURLToArrayBuffer(dataURL) {
+ var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');
+ var binary = atob(base64);
+ var arrayBuffer = new ArrayBuffer(binary.length);
+ var uint8 = new Uint8Array(arrayBuffer);
+
+ each(uint8, function (value, i) {
+ uint8[i] = binary.charCodeAt(i);
+ });
+
+ return arrayBuffer;
+}
+
+/**
+ * Transform array buffer to Data URL.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.
+ * @param {string} mimeType - The mime type of the Data URL.
+ * @returns {string} The result Data URL.
+ */
+function arrayBufferToDataURL(arrayBuffer, mimeType) {
+ var uint8 = new Uint8Array(arrayBuffer);
+ var data = '';
+
+ // TypedArray.prototype.forEach is not supported in some browsers.
+ each(uint8, function (value) {
+ data += fromCharCode(value);
+ });
+
+ return 'data:' + mimeType + ';base64,' + btoa(data);
+}
+
+/**
+ * Get orientation value from given array buffer.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to read.
+ * @returns {number} The read orientation value.
+ */
+function getOrientation(arrayBuffer) {
+ var dataView = new DataView(arrayBuffer);
+ var orientation = void 0;
+ var littleEndian = void 0;
+ var app1Start = void 0;
+ var ifdStart = void 0;
+
+ // Only handle JPEG image (start by 0xFFD8)
+ if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {
+ var length = dataView.byteLength;
+ var offset = 2;
+
+ while (offset < length) {
+ if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {
+ app1Start = offset;
+ break;
+ }
+
+ offset += 1;
+ }
+ }
+
+ if (app1Start) {
+ var exifIDCode = app1Start + 4;
+ var tiffOffset = app1Start + 10;
+
+ if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {
+ var endianness = dataView.getUint16(tiffOffset);
+
+ littleEndian = endianness === 0x4949;
+
+ if (littleEndian || endianness === 0x4D4D /* bigEndian */) {
+ if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {
+ var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);
+
+ if (firstIFDOffset >= 0x00000008) {
+ ifdStart = tiffOffset + firstIFDOffset;
+ }
+ }
+ }
+ }
+ }
+
+ if (ifdStart) {
+ var _length = dataView.getUint16(ifdStart, littleEndian);
+ var _offset = void 0;
+ var i = void 0;
+
+ for (i = 0; i < _length; i += 1) {
+ _offset = ifdStart + i * 12 + 2;
+
+ if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {
+ // 8 is the offset of the current tag's value
+ _offset += 8;
+
+ // Get the original orientation value
+ orientation = dataView.getUint16(_offset, littleEndian);
+
+ // Override the orientation with its default value
+ dataView.setUint16(_offset, 1, littleEndian);
+ break;
+ }
+ }
+ }
+
+ return orientation;
+}
+
+/**
+ * Parse Exif Orientation value.
+ * @param {number} orientation - The orientation to parse.
+ * @returns {Object} The parsed result.
+ */
+function parseOrientation(orientation) {
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ switch (orientation) {
+ // Flip horizontal
+ case 2:
+ scaleX = -1;
+ break;
+
+ // Rotate left 180°
+ case 3:
+ rotate = -180;
+ break;
+
+ // Flip vertical
+ case 4:
+ scaleY = -1;
+ break;
+
+ // Flip vertical and rotate right 90°
+ case 5:
+ rotate = 90;
+ scaleY = -1;
+ break;
+
+ // Rotate right 90°
+ case 6:
+ rotate = 90;
+ break;
+
+ // Flip horizontal and rotate right 90°
+ case 7:
+ rotate = 90;
+ scaleX = -1;
+ break;
+
+ // Rotate left 90°
+ case 8:
+ rotate = -90;
+ break;
+
+ default:
+ }
+
+ return {
+ rotate: rotate,
+ scaleX: scaleX,
+ scaleY: scaleY
+ };
+}
+
+var render = {
+ render: function render() {
+ this.initContainer();
+ this.initCanvas();
+ this.initCropBox();
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ },
+ initContainer: function initContainer() {
+ var element = this.element,
+ options = this.options,
+ container = this.container,
+ cropper = this.cropper;
+
+
+ addClass(cropper, CLASS_HIDDEN);
+ removeClass(element, CLASS_HIDDEN);
+
+ var containerData = {
+ width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),
+ height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)
+ };
+
+ this.containerData = containerData;
+
+ setStyle(cropper, {
+ width: containerData.width,
+ height: containerData.height
+ });
+
+ addClass(element, CLASS_HIDDEN);
+ removeClass(cropper, CLASS_HIDDEN);
+ },
+
+
+ // Canvas (image wrapper)
+ initCanvas: function initCanvas() {
+ var containerData = this.containerData,
+ imageData = this.imageData;
+ var viewMode = this.options.viewMode;
+
+ var rotated = Math.abs(imageData.rotate) % 180 === 90;
+ var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;
+ var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;
+ var aspectRatio = naturalWidth / naturalHeight;
+ var canvasWidth = containerData.width;
+ var canvasHeight = containerData.height;
+
+ if (containerData.height * aspectRatio > containerData.width) {
+ if (viewMode === 3) {
+ canvasWidth = containerData.height * aspectRatio;
+ } else {
+ canvasHeight = containerData.width / aspectRatio;
+ }
+ } else if (viewMode === 3) {
+ canvasHeight = containerData.width / aspectRatio;
+ } else {
+ canvasWidth = containerData.height * aspectRatio;
+ }
+
+ var canvasData = {
+ aspectRatio: aspectRatio,
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ width: canvasWidth,
+ height: canvasHeight
+ };
+
+ canvasData.left = (containerData.width - canvasWidth) / 2;
+ canvasData.top = (containerData.height - canvasHeight) / 2;
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ this.canvasData = canvasData;
+ this.limited = viewMode === 1 || viewMode === 2;
+ this.limitCanvas(true, true);
+ this.initialImageData = extend({}, imageData);
+ this.initialCanvasData = extend({}, canvasData);
+ },
+ limitCanvas: function limitCanvas(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var viewMode = options.viewMode;
+ var aspectRatio = canvasData.aspectRatio;
+
+ var cropped = this.cropped && cropBoxData;
+
+ if (sizeLimited) {
+ var minCanvasWidth = Number(options.minCanvasWidth) || 0;
+ var minCanvasHeight = Number(options.minCanvasHeight) || 0;
+
+ if (viewMode > 1) {
+ minCanvasWidth = Math.max(minCanvasWidth, containerData.width);
+ minCanvasHeight = Math.max(minCanvasHeight, containerData.height);
+
+ if (viewMode === 3) {
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ } else if (viewMode > 0) {
+ if (minCanvasWidth) {
+ minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);
+ } else if (minCanvasHeight) {
+ minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);
+ } else if (cropped) {
+ minCanvasWidth = cropBoxData.width;
+ minCanvasHeight = cropBoxData.height;
+
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ }
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minCanvasWidth,
+ height: minCanvasHeight
+ });
+
+ minCanvasWidth = _getContainSizes.width;
+ minCanvasHeight = _getContainSizes.height;
+
+
+ canvasData.minWidth = minCanvasWidth;
+ canvasData.minHeight = minCanvasHeight;
+ canvasData.maxWidth = Infinity;
+ canvasData.maxHeight = Infinity;
+ }
+
+ if (positionLimited) {
+ if (viewMode) {
+ var newCanvasLeft = containerData.width - canvasData.width;
+ var newCanvasTop = containerData.height - canvasData.height;
+
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+
+ if (cropped && this.limited) {
+ canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));
+ canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));
+ canvasData.maxLeft = cropBoxData.left;
+ canvasData.maxTop = cropBoxData.top;
+
+ if (viewMode === 2) {
+ if (canvasData.width >= containerData.width) {
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ }
+
+ if (canvasData.height >= containerData.height) {
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+ }
+ }
+ }
+ } else {
+ canvasData.minLeft = -canvasData.width;
+ canvasData.minTop = -canvasData.height;
+ canvasData.maxLeft = containerData.width;
+ canvasData.maxTop = containerData.height;
+ }
+ }
+ },
+ renderCanvas: function renderCanvas(changed, transformed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+
+ if (transformed) {
+ var _getRotatedSizes = getRotatedSizes({
+ width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),
+ height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),
+ degree: imageData.rotate || 0
+ }),
+ naturalWidth = _getRotatedSizes.width,
+ naturalHeight = _getRotatedSizes.height;
+
+ var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);
+ var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);
+
+ canvasData.left -= (width - canvasData.width) / 2;
+ canvasData.top -= (height - canvasData.height) / 2;
+ canvasData.width = width;
+ canvasData.height = height;
+ canvasData.aspectRatio = naturalWidth / naturalHeight;
+ canvasData.naturalWidth = naturalWidth;
+ canvasData.naturalHeight = naturalHeight;
+ this.limitCanvas(true, false);
+ }
+
+ if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {
+ canvasData.left = canvasData.oldLeft;
+ }
+
+ if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {
+ canvasData.top = canvasData.oldTop;
+ }
+
+ canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);
+ canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);
+
+ this.limitCanvas(false, true);
+
+ canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);
+ canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ setStyle(this.canvas, extend({
+ width: canvasData.width,
+ height: canvasData.height
+ }, getTransforms({
+ translateX: canvasData.left,
+ translateY: canvasData.top
+ })));
+
+ this.renderImage(changed);
+
+ if (this.cropped && this.limited) {
+ this.limitCropBox(true, true);
+ }
+ },
+ renderImage: function renderImage(changed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+ var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);
+ var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);
+
+ extend(imageData, {
+ width: width,
+ height: height,
+ left: (canvasData.width - width) / 2,
+ top: (canvasData.height - height) / 2
+ });
+ setStyle(this.image, extend({
+ width: imageData.width,
+ height: imageData.height
+ }, getTransforms(extend({
+ translateX: imageData.left,
+ translateY: imageData.top
+ }, imageData))));
+
+ if (changed) {
+ this.output();
+ }
+ },
+ initCropBox: function initCropBox() {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var aspectRatio = options.aspectRatio;
+
+ var autoCropArea = Number(options.autoCropArea) || 0.8;
+ var cropBoxData = {
+ width: canvasData.width,
+ height: canvasData.height
+ };
+
+ if (aspectRatio) {
+ if (canvasData.height * aspectRatio > canvasData.width) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.cropBoxData = cropBoxData;
+ this.limitCropBox(true, true);
+
+ // Initialize auto crop area
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ // The width/height of auto crop area must large than "minWidth/Height"
+ cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);
+ cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);
+ cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;
+ cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ this.initialCropBoxData = extend({}, cropBoxData);
+ },
+ limitCropBox: function limitCropBox(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData,
+ limited = this.limited;
+ var aspectRatio = options.aspectRatio;
+
+
+ if (sizeLimited) {
+ var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;
+ var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;
+ var maxCropBoxWidth = Math.min(containerData.width, limited ? canvasData.width : containerData.width);
+ var maxCropBoxHeight = Math.min(containerData.height, limited ? canvasData.height : containerData.height);
+
+ // The min/maxCropBoxWidth/Height must be less than container's width/height
+ minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);
+ minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);
+
+ if (aspectRatio) {
+ if (minCropBoxWidth && minCropBoxHeight) {
+ if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+ } else if (minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else if (minCropBoxHeight) {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+
+ if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {
+ maxCropBoxHeight = maxCropBoxWidth / aspectRatio;
+ } else {
+ maxCropBoxWidth = maxCropBoxHeight * aspectRatio;
+ }
+ }
+
+ // The minWidth/Height must be less than maxWidth/Height
+ cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);
+ cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);
+ cropBoxData.maxWidth = maxCropBoxWidth;
+ cropBoxData.maxHeight = maxCropBoxHeight;
+ }
+
+ if (positionLimited) {
+ if (limited) {
+ cropBoxData.minLeft = Math.max(0, canvasData.left);
+ cropBoxData.minTop = Math.max(0, canvasData.top);
+ cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;
+ cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;
+ } else {
+ cropBoxData.minLeft = 0;
+ cropBoxData.minTop = 0;
+ cropBoxData.maxLeft = containerData.width - cropBoxData.width;
+ cropBoxData.maxTop = containerData.height - cropBoxData.height;
+ }
+ }
+ },
+ renderCropBox: function renderCropBox() {
+ var options = this.options,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData;
+
+
+ if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {
+ cropBoxData.left = cropBoxData.oldLeft;
+ }
+
+ if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {
+ cropBoxData.top = cropBoxData.oldTop;
+ }
+
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ this.limitCropBox(false, true);
+
+ cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);
+ cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ if (options.movable && options.cropBoxMovable) {
+ // Turn to move the canvas when the crop box is equal to the container
+ setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);
+ }
+
+ setStyle(this.cropBox, extend({
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ }, getTransforms({
+ translateX: cropBoxData.left,
+ translateY: cropBoxData.top
+ })));
+
+ if (this.cropped && this.limited) {
+ this.limitCanvas(true, true);
+ }
+
+ if (!this.disabled) {
+ this.output();
+ }
+ },
+ output: function output() {
+ this.preview();
+
+ if (this.complete) {
+ dispatchEvent(this.element, EVENT_CROP, this.getData());
+ }
+ }
+};
+
+var preview = {
+ initPreview: function initPreview() {
+ var crossOrigin = this.crossOrigin;
+ var preview = this.options.preview;
+
+ var url = crossOrigin ? this.crossOriginUrl : this.url;
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = url;
+ this.viewBox.appendChild(image);
+ this.image2 = image;
+
+ if (!preview) {
+ return;
+ }
+
+ var previews = preview.querySelector ? [preview] : document.querySelectorAll(preview);
+
+ this.previews = previews;
+
+ each(previews, function (element) {
+ var img = document.createElement('img');
+
+ // Save the original size for recover
+ setData(element, DATA_PREVIEW, {
+ width: element.offsetWidth,
+ height: element.offsetHeight,
+ html: element.innerHTML
+ });
+
+ if (crossOrigin) {
+ img.crossOrigin = crossOrigin;
+ }
+
+ img.src = url;
+
+ /**
+ * Override img element styles
+ * Add `display:block` to avoid margin top issue
+ * Add `height:auto` to override `height` attribute on IE8
+ * (Occur only when margin-top <= -height)
+ */
+ img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"';
+
+ empty(element);
+ element.appendChild(img);
+ });
+ },
+ resetPreview: function resetPreview() {
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+
+ setStyle(element, {
+ width: data.width,
+ height: data.height
+ });
+
+ element.innerHTML = data.html;
+ removeData(element, DATA_PREVIEW);
+ });
+ },
+ preview: function preview() {
+ var imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var cropBoxWidth = cropBoxData.width,
+ cropBoxHeight = cropBoxData.height;
+ var width = imageData.width,
+ height = imageData.height;
+
+ var left = cropBoxData.left - canvasData.left - imageData.left;
+ var top = cropBoxData.top - canvasData.top - imageData.top;
+
+ if (!this.cropped || this.disabled) {
+ return;
+ }
+
+ setStyle(this.image2, extend({
+ width: width,
+ height: height
+ }, getTransforms(extend({
+ translateX: -left,
+ translateY: -top
+ }, imageData))));
+
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+ var originalWidth = data.width;
+ var originalHeight = data.height;
+ var newWidth = originalWidth;
+ var newHeight = originalHeight;
+ var ratio = 1;
+
+ if (cropBoxWidth) {
+ ratio = originalWidth / cropBoxWidth;
+ newHeight = cropBoxHeight * ratio;
+ }
+
+ if (cropBoxHeight && newHeight > originalHeight) {
+ ratio = originalHeight / cropBoxHeight;
+ newWidth = cropBoxWidth * ratio;
+ newHeight = originalHeight;
+ }
+
+ setStyle(element, {
+ width: newWidth,
+ height: newHeight
+ });
+
+ setStyle(element.getElementsByTagName('img')[0], extend({
+ width: width * ratio,
+ height: height * ratio
+ }, getTransforms(extend({
+ translateX: -left * ratio,
+ translateY: -top * ratio
+ }, imageData))));
+ });
+ }
+};
+
+var events = {
+ bind: function bind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ addListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ addListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ addListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ addListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ addListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = proxy(this.cropStart, this));
+
+ if (options.zoomable && options.zoomOnWheel) {
+ addListener(cropper, EVENT_WHEEL, this.onWheel = proxy(this.wheel, this));
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ addListener(cropper, EVENT_DBLCLICK, this.onDblclick = proxy(this.dblclick, this));
+ }
+
+ addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = proxy(this.cropMove, this));
+ addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this));
+
+ if (options.responsive) {
+ addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this));
+ }
+ },
+ unbind: function unbind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ removeListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ removeListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ removeListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ removeListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ removeListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);
+
+ if (options.zoomable && options.zoomOnWheel) {
+ removeListener(cropper, EVENT_WHEEL, this.onWheel);
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);
+ }
+
+ removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);
+ removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);
+
+ if (options.responsive) {
+ removeListener(window, EVENT_RESIZE, this.onResize);
+ }
+ }
+};
+
+var handlers = {
+ resize: function resize() {
+ var options = this.options,
+ container = this.container,
+ containerData = this.containerData;
+
+ var minContainerWidth = Number(options.minContainerWidth) || 200;
+ var minContainerHeight = Number(options.minContainerHeight) || 100;
+
+ if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) {
+ return;
+ }
+
+ var ratio = container.offsetWidth / containerData.width;
+
+ // Resize when width changed or height changed
+ if (ratio !== 1 || container.offsetHeight !== containerData.height) {
+ var canvasData = void 0;
+ var cropBoxData = void 0;
+
+ if (options.restore) {
+ canvasData = this.getCanvasData();
+ cropBoxData = this.getCropBoxData();
+ }
+
+ this.render();
+
+ if (options.restore) {
+ this.setCanvasData(each(canvasData, function (n, i) {
+ canvasData[i] = n * ratio;
+ }));
+ this.setCropBoxData(each(cropBoxData, function (n, i) {
+ cropBoxData[i] = n * ratio;
+ }));
+ }
+ }
+ },
+ dblclick: function dblclick() {
+ if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {
+ return;
+ }
+
+ this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);
+ },
+ wheel: function wheel(e) {
+ var _this = this;
+
+ var ratio = Number(this.options.wheelZoomRatio) || 0.1;
+ var delta = 1;
+
+ if (this.disabled) {
+ return;
+ }
+
+ e.preventDefault();
+
+ // Limit wheel speed to prevent zoom too fast (#21)
+ if (this.wheeling) {
+ return;
+ }
+
+ this.wheeling = true;
+
+ setTimeout(function () {
+ _this.wheeling = false;
+ }, 50);
+
+ if (e.deltaY) {
+ delta = e.deltaY > 0 ? 1 : -1;
+ } else if (e.wheelDelta) {
+ delta = -e.wheelDelta / 120;
+ } else if (e.detail) {
+ delta = e.detail > 0 ? 1 : -1;
+ }
+
+ this.zoom(-delta * ratio, e);
+ },
+ cropStart: function cropStart(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var options = this.options,
+ pointers = this.pointers;
+
+ var action = void 0;
+
+ if (e.changedTouches) {
+ // Handle touch event
+ each(e.changedTouches, function (touch) {
+ pointers[touch.identifier] = getPointer(touch);
+ });
+ } else {
+ // Handle mouse event and pointer event
+ pointers[e.pointerId || 0] = getPointer(e);
+ }
+
+ if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {
+ action = ACTION_ZOOM;
+ } else {
+ action = getData(e.target, DATA_ACTION);
+ }
+
+ if (!REGEXP_ACTIONS.test(action)) {
+ return;
+ }
+
+ if (dispatchEvent(this.element, EVENT_CROP_START, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ e.preventDefault();
+
+ this.action = action;
+ this.cropping = false;
+
+ if (action === ACTION_CROP) {
+ this.cropping = true;
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+ },
+ cropMove: function cropMove(e) {
+ var action = this.action;
+
+
+ if (this.disabled || !action) {
+ return;
+ }
+
+ var pointers = this.pointers;
+
+
+ e.preventDefault();
+
+ if (dispatchEvent(this.element, EVENT_CROP_MOVE, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ extend(pointers[touch.identifier], getPointer(touch, true));
+ });
+ } else {
+ extend(pointers[e.pointerId || 0], getPointer(e, true));
+ }
+
+ this.change(e);
+ },
+ cropEnd: function cropEnd(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var action = this.action,
+ pointers = this.pointers;
+
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ delete pointers[touch.identifier];
+ });
+ } else {
+ delete pointers[e.pointerId || 0];
+ }
+
+ if (!action) {
+ return;
+ }
+
+ e.preventDefault();
+
+ if (!Object.keys(pointers).length) {
+ this.action = '';
+ }
+
+ if (this.cropping) {
+ this.cropping = false;
+ toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);
+ }
+
+ dispatchEvent(this.element, EVENT_CROP_END, {
+ originalEvent: e,
+ action: action
+ });
+ }
+};
+
+var change = {
+ change: function change(e) {
+ var options = this.options,
+ canvasData = this.canvasData,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData,
+ pointers = this.pointers;
+ var action = this.action;
+ var aspectRatio = options.aspectRatio;
+ var left = cropBoxData.left,
+ top = cropBoxData.top,
+ width = cropBoxData.width,
+ height = cropBoxData.height;
+
+ var right = left + width;
+ var bottom = top + height;
+ var minLeft = 0;
+ var minTop = 0;
+ var maxWidth = containerData.width;
+ var maxHeight = containerData.height;
+ var renderable = true;
+ var offset = void 0;
+
+ // Locking aspect ratio in "free mode" by holding shift key
+ if (!aspectRatio && e.shiftKey) {
+ aspectRatio = width && height ? width / height : 1;
+ }
+
+ if (this.limited) {
+ minLeft = cropBoxData.minLeft;
+ minTop = cropBoxData.minTop;
+
+ maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);
+ maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);
+ }
+
+ var pointer = pointers[Object.keys(pointers)[0]];
+ var range = {
+ x: pointer.endX - pointer.startX,
+ y: pointer.endY - pointer.startY
+ };
+ var check = function check(side) {
+ switch (side) {
+ case ACTION_EAST:
+ if (right + range.x > maxWidth) {
+ range.x = maxWidth - right;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (left + range.x < minLeft) {
+ range.x = minLeft - left;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (top + range.y < minTop) {
+ range.y = minTop - top;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (bottom + range.y > maxHeight) {
+ range.y = maxHeight - bottom;
+ }
+
+ break;
+
+ default:
+ }
+ };
+
+ switch (action) {
+ // Move crop box
+ case ACTION_ALL:
+ left += range.x;
+ top += range.y;
+ break;
+
+ // Resize crop box
+ case ACTION_EAST:
+ if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top -= range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_WEST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left += range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_SOUTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top += range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_EAST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_SOUTH);
+ height += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left -= range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_NORTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_EAST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_WEST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || left <= minLeft)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ left += range.y * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_WEST:
+ if (aspectRatio) {
+ if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_EAST:
+ if (aspectRatio) {
+ if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ // Move canvas
+ case ACTION_MOVE:
+ this.move(range.x, range.y);
+ renderable = false;
+ break;
+
+ // Zoom canvas
+ case ACTION_ZOOM:
+ this.zoom(getMaxZoomRatio(pointers), e);
+ renderable = false;
+ break;
+
+ // Create crop box
+ case ACTION_CROP:
+ if (!range.x || !range.y) {
+ renderable = false;
+ break;
+ }
+
+ offset = getOffset(this.cropper);
+ left = pointer.startX - offset.left;
+ top = pointer.startY - offset.top;
+ width = cropBoxData.minWidth;
+ height = cropBoxData.minHeight;
+
+ if (range.x > 0) {
+ action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;
+ } else if (range.x < 0) {
+ left -= width;
+ action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;
+ }
+
+ if (range.y < 0) {
+ top -= height;
+ }
+
+ // Show the crop box if is hidden
+ if (!this.cropped) {
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ this.cropped = true;
+
+ if (this.limited) {
+ this.limitCropBox(true, true);
+ }
+ }
+
+ break;
+
+ default:
+ }
+
+ if (renderable) {
+ cropBoxData.width = width;
+ cropBoxData.height = height;
+ cropBoxData.left = left;
+ cropBoxData.top = top;
+ this.action = action;
+ this.renderCropBox();
+ }
+
+ // Override
+ each(pointers, function (p) {
+ p.startX = p.endX;
+ p.startY = p.endY;
+ });
+ }
+};
+
+var methods = {
+ // Show the crop box manually
+ crop: function crop() {
+ if (this.ready && !this.disabled) {
+ if (!this.cropped) {
+ this.cropped = true;
+ this.limitCropBox(true, true);
+
+ if (this.options.modal) {
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ this.setCropBoxData(this.initialCropBoxData);
+ }
+
+ return this;
+ },
+
+
+ // Reset the image and crop box to their initial states
+ reset: function reset() {
+ if (this.ready && !this.disabled) {
+ this.imageData = extend({}, this.initialImageData);
+ this.canvasData = extend({}, this.initialCanvasData);
+ this.cropBoxData = extend({}, this.initialCropBoxData);
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+
+ return this;
+ },
+
+
+ // Clear the crop box
+ clear: function clear() {
+ if (this.cropped && !this.disabled) {
+ extend(this.cropBoxData, {
+ left: 0,
+ top: 0,
+ width: 0,
+ height: 0
+ });
+
+ this.cropped = false;
+ this.renderCropBox();
+ this.limitCanvas(true, true);
+
+ // Render canvas after crop box rendered
+ this.renderCanvas();
+ removeClass(this.dragBox, CLASS_MODAL);
+ addClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Replace the image's src and rebuild the cropper
+ * @param {string} url - The new URL.
+ * @param {boolean} [onlyColorChanged] - Indicate if the new image only changed color.
+ * @returns {Object} this
+ */
+ replace: function replace(url) {
+ var onlyColorChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ if (!this.disabled && url) {
+ if (this.isImg) {
+ this.element.src = url;
+ }
+
+ if (onlyColorChanged) {
+ this.url = url;
+ this.image.src = url;
+
+ if (this.ready) {
+ this.image2.src = url;
+
+ each(this.previews, function (element) {
+ element.getElementsByTagName('img')[0].src = url;
+ });
+ }
+ } else {
+ if (this.isImg) {
+ this.replaced = true;
+ }
+
+ // Clear previous data
+ this.options.data = null;
+ this.load(url);
+ }
+ }
+
+ return this;
+ },
+
+
+ // Enable (unfreeze) the cropper
+ enable: function enable() {
+ if (this.ready) {
+ this.disabled = false;
+ removeClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Disable (freeze) the cropper
+ disable: function disable() {
+ if (this.ready) {
+ this.disabled = true;
+ addClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Destroy the cropper and remove the instance from the image
+ destroy: function destroy() {
+ var element = this.element,
+ image = this.image;
+
+
+ if (this.loaded) {
+ if (this.isImg && this.replaced) {
+ element.src = this.originalUrl;
+ }
+
+ this.unbuild();
+ removeClass(element, CLASS_HIDDEN);
+ } else if (this.isImg) {
+ removeListener(element, EVENT_LOAD, this.onStart);
+ } else if (image) {
+ image.parentNode.removeChild(image);
+ }
+
+ removeData(element, NAMESPACE);
+
+ return this;
+ },
+
+
+ /**
+ * Move the canvas with relative offsets
+ * @param {number} offsetX - The relative offset distance on the x-axis.
+ * @param {number} offsetY - The relative offset distance on the y-axis.
+ * @returns {Object} this
+ */
+ move: function move(offsetX, offsetY) {
+ var _canvasData = this.canvasData,
+ left = _canvasData.left,
+ top = _canvasData.top;
+
+
+ return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));
+ },
+
+
+ /**
+ * Move the canvas to an absolute point
+ * @param {number} x - The x-axis coordinate.
+ * @param {number} [y=x] - The y-axis coordinate.
+ * @returns {Object} this
+ */
+ moveTo: function moveTo(x) {
+ var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;
+ var canvasData = this.canvasData;
+
+ var changed = false;
+
+ x = Number(x);
+ y = Number(y);
+
+ if (this.ready && !this.disabled && this.options.movable) {
+ if (isNumber(x)) {
+ canvasData.left = x;
+ changed = true;
+ }
+
+ if (isNumber(y)) {
+ canvasData.top = y;
+ changed = true;
+ }
+
+ if (changed) {
+ this.renderCanvas(true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Zoom the canvas with a relative ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoom: function zoom(ratio, _originalEvent) {
+ var canvasData = this.canvasData;
+
+
+ ratio = Number(ratio);
+
+ if (ratio < 0) {
+ ratio = 1 / (1 - ratio);
+ } else {
+ ratio = 1 + ratio;
+ }
+
+ return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);
+ },
+
+
+ /**
+ * Zoom the canvas to an absolute ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Object} pivot - The zoom pivot point coordinate.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoomTo: function zoomTo(ratio, pivot, _originalEvent) {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var width = canvasData.width,
+ height = canvasData.height,
+ naturalWidth = canvasData.naturalWidth,
+ naturalHeight = canvasData.naturalHeight;
+
+
+ ratio = Number(ratio);
+
+ if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {
+ var newWidth = naturalWidth * ratio;
+ var newHeight = naturalHeight * ratio;
+
+ if (dispatchEvent(this.element, EVENT_ZOOM, {
+ originalEvent: _originalEvent,
+ oldRatio: width / naturalWidth,
+ ratio: newWidth / naturalWidth
+ }) === false) {
+ return this;
+ }
+
+ if (_originalEvent) {
+ var pointers = this.pointers;
+
+ var offset = getOffset(this.cropper);
+ var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {
+ pageX: _originalEvent.pageX,
+ pageY: _originalEvent.pageY
+ };
+
+ // Zoom from the triggering point of the event
+ canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);
+ } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {
+ canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);
+ } else {
+ // Zoom from the center of the canvas
+ canvasData.left -= (newWidth - width) / 2;
+ canvasData.top -= (newHeight - height) / 2;
+ }
+
+ canvasData.width = newWidth;
+ canvasData.height = newHeight;
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Rotate the canvas with a relative degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotate: function rotate(degree) {
+ return this.rotateTo((this.imageData.rotate || 0) + Number(degree));
+ },
+
+
+ /**
+ * Rotate the canvas to an absolute degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotateTo: function rotateTo(degree) {
+ degree = Number(degree);
+
+ if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {
+ this.imageData.rotate = degree % 360;
+ this.renderCanvas(true, true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Scale the image on the x-axis.
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @returns {Object} this
+ */
+ scaleX: function scaleX(_scaleX) {
+ var scaleY = this.imageData.scaleY;
+
+
+ return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);
+ },
+
+
+ /**
+ * Scale the image on the y-axis.
+ * @param {number} scaleY - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scaleY: function scaleY(_scaleY) {
+ var scaleX = this.imageData.scaleX;
+
+
+ return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);
+ },
+
+
+ /**
+ * Scale the image
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scale: function scale(scaleX) {
+ var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
+ var imageData = this.imageData;
+
+ var transformed = false;
+
+ scaleX = Number(scaleX);
+ scaleY = Number(scaleY);
+
+ if (this.ready && !this.disabled && this.options.scalable) {
+ if (isNumber(scaleX)) {
+ imageData.scaleX = scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(scaleY)) {
+ imageData.scaleY = scaleY;
+ transformed = true;
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the cropped area position and size data (base on the original image)
+ * @param {boolean} [rounded=false] - Indicate if round the data values or not.
+ * @returns {Object} The result cropped data.
+ */
+ getData: function getData$$1() {
+ var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ x: cropBoxData.left - canvasData.left,
+ y: cropBoxData.top - canvasData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ each(data, function (n, i) {
+ n /= ratio;
+ data[i] = rounded ? Math.round(n) : n;
+ });
+ } else {
+ data = {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ };
+ }
+
+ if (options.rotatable) {
+ data.rotate = imageData.rotate || 0;
+ }
+
+ if (options.scalable) {
+ data.scaleX = imageData.scaleX || 1;
+ data.scaleY = imageData.scaleY || 1;
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the cropped area position and size with new data
+ * @param {Object} data - The new data.
+ * @returns {Object} this
+ */
+ setData: function setData$$1(data) {
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData;
+
+ var cropBoxData = {};
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ var transformed = false;
+
+ if (options.rotatable) {
+ if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {
+ imageData.rotate = data.rotate;
+ transformed = true;
+ }
+ }
+
+ if (options.scalable) {
+ if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {
+ imageData.scaleX = data.scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {
+ imageData.scaleY = data.scaleY;
+ transformed = true;
+ }
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ if (isNumber(data.x)) {
+ cropBoxData.left = data.x * ratio + canvasData.left;
+ }
+
+ if (isNumber(data.y)) {
+ cropBoxData.top = data.y * ratio + canvasData.top;
+ }
+
+ if (isNumber(data.width)) {
+ cropBoxData.width = data.width * ratio;
+ }
+
+ if (isNumber(data.height)) {
+ cropBoxData.height = data.height * ratio;
+ }
+
+ this.setCropBoxData(cropBoxData);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the container size data.
+ * @returns {Object} The result container data.
+ */
+ getContainerData: function getContainerData() {
+ return this.ready ? extend({}, this.containerData) : {};
+ },
+
+
+ /**
+ * Get the image position and size data.
+ * @returns {Object} The result image data.
+ */
+ getImageData: function getImageData() {
+ return this.loaded ? extend({}, this.imageData) : {};
+ },
+
+
+ /**
+ * Get the canvas position and size data.
+ * @returns {Object} The result canvas data.
+ */
+ getCanvasData: function getCanvasData() {
+ var canvasData = this.canvasData;
+
+ var data = {};
+
+ if (this.ready) {
+ each(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {
+ data[n] = canvasData[n];
+ });
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the canvas position and size with new data.
+ * @param {Object} data - The new canvas data.
+ * @returns {Object} this
+ */
+ setCanvasData: function setCanvasData(data) {
+ var canvasData = this.canvasData;
+ var aspectRatio = canvasData.aspectRatio;
+
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ canvasData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ canvasData.top = data.top;
+ }
+
+ if (isNumber(data.width)) {
+ canvasData.width = data.width;
+ canvasData.height = data.width / aspectRatio;
+ } else if (isNumber(data.height)) {
+ canvasData.height = data.height;
+ canvasData.width = data.height * aspectRatio;
+ }
+
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the crop box position and size data.
+ * @returns {Object} The result crop box data.
+ */
+ getCropBoxData: function getCropBoxData() {
+ var cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ left: cropBoxData.left,
+ top: cropBoxData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+ }
+
+ return data || {};
+ },
+
+
+ /**
+ * Set the crop box position and size with new data.
+ * @param {Object} data - The new crop box data.
+ * @returns {Object} this
+ */
+ setCropBoxData: function setCropBoxData(data) {
+ var cropBoxData = this.cropBoxData;
+ var aspectRatio = this.options.aspectRatio;
+
+ var widthChanged = void 0;
+ var heightChanged = void 0;
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ cropBoxData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ cropBoxData.top = data.top;
+ }
+
+ if (isNumber(data.width) && data.width !== cropBoxData.width) {
+ widthChanged = true;
+ cropBoxData.width = data.width;
+ }
+
+ if (isNumber(data.height) && data.height !== cropBoxData.height) {
+ heightChanged = true;
+ cropBoxData.height = data.height;
+ }
+
+ if (aspectRatio) {
+ if (widthChanged) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else if (heightChanged) {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.renderCropBox();
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get a canvas drawn the cropped image.
+ * @param {Object} [options={}] - The config options.
+ * @returns {HTMLCanvasElement} - The result canvas.
+ */
+ getCroppedCanvas: function getCroppedCanvas() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+ if (!this.ready || !window.HTMLCanvasElement) {
+ return null;
+ }
+
+ var canvasData = this.canvasData;
+
+ var source = getSourceCanvas(this.image, this.imageData, canvasData, options);
+
+ // Returns the source canvas if it is not cropped.
+ if (!this.cropped) {
+ return source;
+ }
+
+ var _getData = this.getData(),
+ x = _getData.x,
+ y = _getData.y,
+ initialWidth = _getData.width,
+ initialHeight = _getData.height;
+
+ var aspectRatio = initialWidth / initialHeight;
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.maxWidth || Infinity,
+ height: options.maxHeight || Infinity
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.minWidth || 0,
+ height: options.minHeight || 0
+ });
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.width || initialWidth,
+ height: options.height || initialHeight
+ }),
+ width = _getContainSizes.width,
+ height = _getContainSizes.height;
+
+ width = Math.min(maxSizes.width, Math.max(minSizes.width, width));
+ height = Math.min(maxSizes.height, Math.max(minSizes.height, height));
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+
+ context.fillStyle = options.fillColor || 'transparent';
+ context.fillRect(0, 0, width, height);
+
+ var _options$imageSmoothi = options.imageSmoothingEnabled,
+ imageSmoothingEnabled = _options$imageSmoothi === undefined ? true : _options$imageSmoothi,
+ imageSmoothingQuality = options.imageSmoothingQuality;
+
+
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+
+ if (imageSmoothingQuality) {
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage
+ var sourceWidth = source.width;
+ var sourceHeight = source.height;
+
+ // Source canvas parameters
+ var srcX = x;
+ var srcY = y;
+ var srcWidth = void 0;
+ var srcHeight = void 0;
+
+ // Destination canvas parameters
+ var dstX = void 0;
+ var dstY = void 0;
+ var dstWidth = void 0;
+ var dstHeight = void 0;
+
+ if (srcX <= -initialWidth || srcX > sourceWidth) {
+ srcX = 0;
+ srcWidth = 0;
+ dstX = 0;
+ dstWidth = 0;
+ } else if (srcX <= 0) {
+ dstX = -srcX;
+ srcX = 0;
+ srcWidth = Math.min(sourceWidth, initialWidth + srcX);
+ dstWidth = srcWidth;
+ } else if (srcX <= sourceWidth) {
+ dstX = 0;
+ srcWidth = Math.min(initialWidth, sourceWidth - srcX);
+ dstWidth = srcWidth;
+ }
+
+ if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {
+ srcY = 0;
+ srcHeight = 0;
+ dstY = 0;
+ dstHeight = 0;
+ } else if (srcY <= 0) {
+ dstY = -srcY;
+ srcY = 0;
+ srcHeight = Math.min(sourceHeight, initialHeight + srcY);
+ dstHeight = srcHeight;
+ } else if (srcY <= sourceHeight) {
+ dstY = 0;
+ srcHeight = Math.min(initialHeight, sourceHeight - srcY);
+ dstHeight = srcHeight;
+ }
+
+ // All the numerical parameters should be integer for `drawImage`
+ // https://github.com/fengyuanchen/cropper/issues/476
+ var params = [srcX, srcY, srcWidth, srcHeight];
+
+ // Avoid "IndexSizeError"
+ if (dstWidth > 0 && dstHeight > 0) {
+ var scale = width / initialWidth;
+
+ params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);
+ }
+
+ context.drawImage.apply(context, [source].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+
+ return canvas;
+ },
+
+
+ /**
+ * Change the aspect ratio of the crop box.
+ * @param {number} aspectRatio - The new aspect ratio.
+ * @returns {Object} this
+ */
+ setAspectRatio: function setAspectRatio(aspectRatio) {
+ var options = this.options;
+
+
+ if (!this.disabled && !isUndefined(aspectRatio)) {
+ // 0 -> NaN
+ options.aspectRatio = Math.max(0, aspectRatio) || NaN;
+
+ if (this.ready) {
+ this.initCropBox();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Change the drag mode.
+ * @param {string} mode - The new drag mode.
+ * @returns {Object} this
+ */
+ setDragMode: function setDragMode(mode) {
+ var options = this.options,
+ dragBox = this.dragBox,
+ face = this.face;
+
+
+ if (this.loaded && !this.disabled) {
+ var croppable = mode === DRAG_MODE_CROP;
+ var movable = options.movable && mode === DRAG_MODE_MOVE;
+
+ mode = croppable || movable ? mode : DRAG_MODE_NONE;
+
+ setData(dragBox, DATA_ACTION, mode);
+ toggleClass(dragBox, CLASS_CROP, croppable);
+ toggleClass(dragBox, CLASS_MOVE, movable);
+
+ if (!options.cropBoxMovable) {
+ // Sync drag mode to crop box when it is not movable
+ setData(face, DATA_ACTION, mode);
+ toggleClass(face, CLASS_CROP, croppable);
+ toggleClass(face, CLASS_MOVE, movable);
+ }
+ }
+
+ return this;
+ }
+};
+
+var AnotherCropper = WINDOW.Cropper;
+
+var Cropper = function () {
+ /**
+ * Create a new Cropper.
+ * @param {Element} element - The target element for cropping.
+ * @param {Object} [options={}] - The configuration options.
+ */
+ function Cropper(element) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ classCallCheck(this, Cropper);
+
+ if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {
+ throw new Error('The first argument is required and must be an <img> or <canvas> element.');
+ }
+
+ this.element = element;
+ this.options = extend({}, DEFAULTS, isPlainObject(options) && options);
+ this.complete = false;
+ this.cropped = false;
+ this.disabled = false;
+ this.isImg = false;
+ this.limited = false;
+ this.loaded = false;
+ this.ready = false;
+ this.replaced = false;
+ this.wheeling = false;
+ this.originalUrl = '';
+ this.canvasData = null;
+ this.cropBoxData = null;
+ this.previews = null;
+ this.pointers = {};
+ this.init();
+ }
+
+ createClass(Cropper, [{
+ key: 'init',
+ value: function init() {
+ var element = this.element;
+
+ var tagName = element.tagName.toLowerCase();
+ var url = void 0;
+
+ if (getData(element, NAMESPACE)) {
+ return;
+ }
+
+ setData(element, NAMESPACE, this);
+
+ if (tagName === 'img') {
+ this.isImg = true;
+
+ // e.g.: "img/picture.jpg"
+ url = element.getAttribute('src') || '';
+ this.originalUrl = url;
+
+ // Stop when it's a blank image
+ if (!url) {
+ return;
+ }
+
+ // e.g.: "http://example.com/img/picture.jpg"
+ url = element.src;
+ } else if (tagName === 'canvas' && window.HTMLCanvasElement) {
+ url = element.toDataURL();
+ }
+
+ this.load(url);
+ }
+ }, {
+ key: 'load',
+ value: function load(url) {
+ var _this = this;
+
+ if (!url) {
+ return;
+ }
+
+ this.url = url;
+ this.imageData = {};
+
+ var element = this.element,
+ options = this.options;
+
+
+ if (!options.checkOrientation || !window.ArrayBuffer) {
+ this.clone();
+ return;
+ }
+
+ // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari
+ if (REGEXP_DATA_URL.test(url)) {
+ if (REGEXP_DATA_URL_JPEG.test(url)) {
+ this.read(dataURLToArrayBuffer(url));
+ } else {
+ this.clone();
+ }
+
+ return;
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ xhr.onerror = function () {
+ _this.clone();
+ };
+
+ xhr.onload = function () {
+ _this.read(xhr.response);
+ };
+
+ if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {
+ url = addTimestamp(url);
+ }
+
+ xhr.open('get', url);
+ xhr.responseType = 'arraybuffer';
+ xhr.withCredentials = element.crossOrigin === 'use-credentials';
+ xhr.send();
+ }
+ }, {
+ key: 'read',
+ value: function read(arrayBuffer) {
+ var options = this.options,
+ imageData = this.imageData;
+
+ var orientation = getOrientation(arrayBuffer);
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ if (orientation > 1) {
+ this.url = arrayBufferToDataURL(arrayBuffer, 'image/jpeg');
+
+ var _parseOrientation = parseOrientation(orientation);
+
+ rotate = _parseOrientation.rotate;
+ scaleX = _parseOrientation.scaleX;
+ scaleY = _parseOrientation.scaleY;
+ }
+
+ if (options.rotatable) {
+ imageData.rotate = rotate;
+ }
+
+ if (options.scalable) {
+ imageData.scaleX = scaleX;
+ imageData.scaleY = scaleY;
+ }
+
+ this.clone();
+ }
+ }, {
+ key: 'clone',
+ value: function clone() {
+ var element = this.element,
+ url = this.url;
+
+ var crossOrigin = void 0;
+ var crossOriginUrl = void 0;
+
+ if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {
+ crossOrigin = element.crossOrigin;
+
+
+ if (crossOrigin) {
+ crossOriginUrl = url;
+ } else {
+ crossOrigin = 'anonymous';
+
+ // Bust cache when there is not a "crossOrigin" property
+ crossOriginUrl = addTimestamp(url);
+ }
+ }
+
+ this.crossOrigin = crossOrigin;
+ this.crossOriginUrl = crossOriginUrl;
+
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = crossOriginUrl || url;
+
+ var start = proxy(this.start, this);
+ var stop = proxy(this.stop, this);
+
+ this.image = image;
+ this.onStart = start;
+ this.onStop = stop;
+
+ if (this.isImg) {
+ if (element.complete) {
+ this.start();
+ } else {
+ addListener(element, EVENT_LOAD, start);
+ }
+ } else {
+ addListener(image, EVENT_LOAD, start);
+ addListener(image, EVENT_ERROR, stop);
+ addClass(image, CLASS_HIDE);
+ element.parentNode.insertBefore(image, element.nextSibling);
+ }
+ }
+ }, {
+ key: 'start',
+ value: function start(event) {
+ var _this2 = this;
+
+ var image = this.isImg ? this.element : this.image;
+
+ if (event) {
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ }
+
+ getImageNaturalSizes(image, function (naturalWidth, naturalHeight) {
+ extend(_this2.imageData, {
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ aspectRatio: naturalWidth / naturalHeight
+ });
+ _this2.loaded = true;
+ _this2.build();
+ });
+ }
+ }, {
+ key: 'stop',
+ value: function stop() {
+ var image = this.image;
+
+
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ image.parentNode.removeChild(image);
+ this.image = null;
+ }
+ }, {
+ key: 'build',
+ value: function build() {
+ var _this3 = this;
+
+ if (!this.loaded) {
+ return;
+ }
+
+ // Unbuild first when replace
+ if (this.ready) {
+ this.unbuild();
+ }
+
+ var element = this.element,
+ options = this.options,
+ image = this.image;
+
+ // Create cropper elements
+
+ var container = element.parentNode;
+ var template = document.createElement('div');
+
+ template.innerHTML = TEMPLATE;
+
+ var cropper = template.querySelector('.' + NAMESPACE + '-container');
+ var canvas = cropper.querySelector('.' + NAMESPACE + '-canvas');
+ var dragBox = cropper.querySelector('.' + NAMESPACE + '-drag-box');
+ var cropBox = cropper.querySelector('.' + NAMESPACE + '-crop-box');
+ var face = cropBox.querySelector('.' + NAMESPACE + '-face');
+
+ this.container = container;
+ this.cropper = cropper;
+ this.canvas = canvas;
+ this.dragBox = dragBox;
+ this.cropBox = cropBox;
+ this.viewBox = cropper.querySelector('.' + NAMESPACE + '-view-box');
+ this.face = face;
+
+ canvas.appendChild(image);
+
+ // Hide the original image
+ addClass(element, CLASS_HIDDEN);
+
+ // Inserts the cropper after to the current image
+ container.insertBefore(cropper, element.nextSibling);
+
+ // Show the image if is hidden
+ if (!this.isImg) {
+ removeClass(image, CLASS_HIDE);
+ }
+
+ this.initPreview();
+ this.bind();
+
+ options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;
+ options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;
+
+ this.cropped = options.autoCrop;
+
+ if (options.autoCrop) {
+ if (options.modal) {
+ addClass(dragBox, CLASS_MODAL);
+ }
+ } else {
+ addClass(cropBox, CLASS_HIDDEN);
+ }
+
+ if (!options.guides) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-dashed'), CLASS_HIDDEN);
+ }
+
+ if (!options.center) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-center'), CLASS_HIDDEN);
+ }
+
+ if (options.background) {
+ addClass(cropper, NAMESPACE + '-bg');
+ }
+
+ if (!options.highlight) {
+ addClass(face, CLASS_INVISIBLE);
+ }
+
+ if (options.cropBoxMovable) {
+ addClass(face, CLASS_MOVE);
+ setData(face, DATA_ACTION, ACTION_ALL);
+ }
+
+ if (!options.cropBoxResizable) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-line'), CLASS_HIDDEN);
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-point'), CLASS_HIDDEN);
+ }
+
+ this.setDragMode(options.dragMode);
+ this.render();
+ this.ready = true;
+ this.setData(options.data);
+
+ // Call the "ready" option asynchronously to keep "image.cropper" is defined
+ this.completing = setTimeout(function () {
+ if (isFunction(options.ready)) {
+ addListener(element, EVENT_READY, options.ready, {
+ once: true
+ });
+ }
+
+ dispatchEvent(element, EVENT_READY);
+ dispatchEvent(element, EVENT_CROP, _this3.getData());
+
+ _this3.complete = true;
+ }, 0);
+ }
+ }, {
+ key: 'unbuild',
+ value: function unbuild() {
+ if (!this.ready) {
+ return;
+ }
+
+ if (!this.complete) {
+ clearTimeout(this.completing);
+ }
+
+ this.ready = false;
+ this.complete = false;
+ this.initialImageData = null;
+
+ // Clear `initialCanvasData` is necessary when replace
+ this.initialCanvasData = null;
+ this.initialCropBoxData = null;
+ this.containerData = null;
+ this.canvasData = null;
+
+ // Clear `cropBoxData` is necessary when replace
+ this.cropBoxData = null;
+ this.unbind();
+ this.resetPreview();
+ this.previews = null;
+ this.viewBox = null;
+ this.cropBox = null;
+ this.dragBox = null;
+ this.canvas = null;
+ this.container = null;
+ this.cropper.parentNode.removeChild(this.cropper);
+ this.cropper = null;
+ }
+
+ /**
+ * Get the no conflict cropper class.
+ * @returns {Cropper} The cropper class.
+ */
+
+ }], [{
+ key: 'noConflict',
+ value: function noConflict() {
+ window.Cropper = AnotherCropper;
+ return Cropper;
+ }
+
+ /**
+ * Change the default options.
+ * @param {Object} options - The new default options.
+ */
+
+ }, {
+ key: 'setDefaults',
+ value: function setDefaults(options) {
+ extend(DEFAULTS, isPlainObject(options) && options);
+ }
+ }]);
+ return Cropper;
+}();
+
+extend(Cropper.prototype, render, preview, events, handlers, change, methods);
+
+export default Cropper;
diff --git a/library/cropperjs/dist/cropper.js b/library/cropperjs/dist/cropper.js
new file mode 100644
index 000000000..0e837953c
--- /dev/null
+++ b/library/cropperjs/dist/cropper.js
@@ -0,0 +1,3766 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:27:18.062Z
+ */
+
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global.Cropper = factory());
+}(this, (function () { 'use strict';
+
+var WINDOW = typeof window !== 'undefined' ? window : {};
+var NAMESPACE = 'cropper';
+
+// Actions
+var ACTION_ALL = 'all';
+var ACTION_CROP = 'crop';
+var ACTION_MOVE = 'move';
+var ACTION_ZOOM = 'zoom';
+var ACTION_EAST = 'e';
+var ACTION_WEST = 'w';
+var ACTION_SOUTH = 's';
+var ACTION_NORTH = 'n';
+var ACTION_NORTH_EAST = 'ne';
+var ACTION_NORTH_WEST = 'nw';
+var ACTION_SOUTH_EAST = 'se';
+var ACTION_SOUTH_WEST = 'sw';
+
+// Classes
+var CLASS_CROP = NAMESPACE + '-crop';
+var CLASS_DISABLED = NAMESPACE + '-disabled';
+var CLASS_HIDDEN = NAMESPACE + '-hidden';
+var CLASS_HIDE = NAMESPACE + '-hide';
+var CLASS_INVISIBLE = NAMESPACE + '-invisible';
+var CLASS_MODAL = NAMESPACE + '-modal';
+var CLASS_MOVE = NAMESPACE + '-move';
+
+// Data keys
+var DATA_ACTION = 'action';
+var DATA_PREVIEW = 'preview';
+
+// Drag modes
+var DRAG_MODE_CROP = 'crop';
+var DRAG_MODE_MOVE = 'move';
+var DRAG_MODE_NONE = 'none';
+
+// Events
+var EVENT_CROP = 'crop';
+var EVENT_CROP_END = 'cropend';
+var EVENT_CROP_MOVE = 'cropmove';
+var EVENT_CROP_START = 'cropstart';
+var EVENT_DBLCLICK = 'dblclick';
+var EVENT_ERROR = 'error';
+var EVENT_LOAD = 'load';
+var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown';
+var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove';
+var EVENT_POINTER_UP = WINDOW.PointerEvent ? 'pointerup pointercancel' : 'touchend touchcancel mouseup';
+var EVENT_READY = 'ready';
+var EVENT_RESIZE = 'resize';
+var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';
+var EVENT_ZOOM = 'zoom';
+
+// RegExps
+var REGEXP_ACTIONS = /^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;
+var REGEXP_DATA_URL = /^data:/;
+var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/;
+var REGEXP_TAG_NAME = /^(img|canvas)$/i;
+
+var DEFAULTS = {
+ // Define the view mode of the cropper
+ viewMode: 0, // 0, 1, 2, 3
+
+ // Define the dragging mode of the cropper
+ dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none'
+
+ // Define the aspect ratio of the crop box
+ aspectRatio: NaN,
+
+ // An object with the previous cropping result data
+ data: null,
+
+ // A selector for adding extra containers to preview
+ preview: '',
+
+ // Re-render the cropper when resize the window
+ responsive: true,
+
+ // Restore the cropped area after resize the window
+ restore: true,
+
+ // Check if the current image is a cross-origin image
+ checkCrossOrigin: true,
+
+ // Check the current image's Exif Orientation information
+ checkOrientation: true,
+
+ // Show the black modal
+ modal: true,
+
+ // Show the dashed lines for guiding
+ guides: true,
+
+ // Show the center indicator for guiding
+ center: true,
+
+ // Show the white modal to highlight the crop box
+ highlight: true,
+
+ // Show the grid background
+ background: true,
+
+ // Enable to crop the image automatically when initialize
+ autoCrop: true,
+
+ // Define the percentage of automatic cropping area when initializes
+ autoCropArea: 0.8,
+
+ // Enable to move the image
+ movable: true,
+
+ // Enable to rotate the image
+ rotatable: true,
+
+ // Enable to scale the image
+ scalable: true,
+
+ // Enable to zoom the image
+ zoomable: true,
+
+ // Enable to zoom the image by dragging touch
+ zoomOnTouch: true,
+
+ // Enable to zoom the image by wheeling mouse
+ zoomOnWheel: true,
+
+ // Define zoom ratio when zoom the image by wheeling mouse
+ wheelZoomRatio: 0.1,
+
+ // Enable to move the crop box
+ cropBoxMovable: true,
+
+ // Enable to resize the crop box
+ cropBoxResizable: true,
+
+ // Toggle drag mode between "crop" and "move" when click twice on the cropper
+ toggleDragModeOnDblclick: true,
+
+ // Size limitation
+ minCanvasWidth: 0,
+ minCanvasHeight: 0,
+ minCropBoxWidth: 0,
+ minCropBoxHeight: 0,
+ minContainerWidth: 200,
+ minContainerHeight: 100,
+
+ // Shortcuts of events
+ ready: null,
+ cropstart: null,
+ cropmove: null,
+ cropend: null,
+ crop: null,
+ zoom: null
+};
+
+var TEMPLATE = '<div class="cropper-container">' + '<div class="cropper-wrap-box">' + '<div class="cropper-canvas"></div>' + '</div>' + '<div class="cropper-drag-box"></div>' + '<div class="cropper-crop-box">' + '<span class="cropper-view-box"></span>' + '<span class="cropper-dashed dashed-h"></span>' + '<span class="cropper-dashed dashed-v"></span>' + '<span class="cropper-center"></span>' + '<span class="cropper-face"></span>' + '<span class="cropper-line line-e" data-action="e"></span>' + '<span class="cropper-line line-n" data-action="n"></span>' + '<span class="cropper-line line-w" data-action="w"></span>' + '<span class="cropper-line line-s" data-action="s"></span>' + '<span class="cropper-point point-e" data-action="e"></span>' + '<span class="cropper-point point-n" data-action="n"></span>' + '<span class="cropper-point point-w" data-action="w"></span>' + '<span class="cropper-point point-s" data-action="s"></span>' + '<span class="cropper-point point-ne" data-action="ne"></span>' + '<span class="cropper-point point-nw" data-action="nw"></span>' + '<span class="cropper-point point-sw" data-action="sw"></span>' + '<span class="cropper-point point-se" data-action="se"></span>' + '</div>' + '</div>';
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+} : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+};
+
+
+
+
+
+
+
+
+
+
+
+var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+}();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var toConsumableArray = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+};
+
+/**
+ * Check if the given value is not a number.
+ */
+var isNaN = Number.isNaN || WINDOW.isNaN;
+
+/**
+ * Check if the given value is a number.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a number, else `false`.
+ */
+function isNumber(value) {
+ return typeof value === 'number' && !isNaN(value);
+}
+
+/**
+ * Check if the given value is undefined.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is undefined, else `false`.
+ */
+function isUndefined(value) {
+ return typeof value === 'undefined';
+}
+
+/**
+ * Check if the given value is an object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is an object, else `false`.
+ */
+function isObject(value) {
+ return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null;
+}
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * Check if the given value is a plain object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.
+ */
+
+function isPlainObject(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+
+ try {
+ var _constructor = value.constructor;
+ var prototype = _constructor.prototype;
+
+
+ return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');
+ } catch (e) {
+ return false;
+ }
+}
+
+/**
+ * Check if the given value is a function.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a function, else `false`.
+ */
+function isFunction(value) {
+ return typeof value === 'function';
+}
+
+/**
+ * Iterate the given data.
+ * @param {*} data - The data to iterate.
+ * @param {Function} callback - The process function for each element.
+ * @returns {*} The original data.
+ */
+function each(data, callback) {
+ if (data && isFunction(callback)) {
+ if (Array.isArray(data) || isNumber(data.length) /* array-like */) {
+ var length = data.length;
+
+ var i = void 0;
+
+ for (i = 0; i < length; i += 1) {
+ if (callback.call(data, data[i], i, data) === false) {
+ break;
+ }
+ }
+ } else if (isObject(data)) {
+ Object.keys(data).forEach(function (key) {
+ callback.call(data, data[key], key, data);
+ });
+ }
+ }
+
+ return data;
+}
+
+/**
+ * Extend the given object.
+ * @param {*} obj - The object to be extended.
+ * @param {*} args - The rest objects which will be merged to the first object.
+ * @returns {Object} The extended object.
+ */
+function extend(obj) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ if (isObject(obj) && args.length > 0) {
+ if (Object.assign) {
+ return Object.assign.apply(Object, [obj].concat(args));
+ }
+
+ args.forEach(function (arg) {
+ if (isObject(arg)) {
+ Object.keys(arg).forEach(function (key) {
+ obj[key] = arg[key];
+ });
+ }
+ });
+ }
+
+ return obj;
+}
+
+/**
+ * Takes a function and returns a new one that will always have a particular context.
+ * @param {Function} fn - The target function.
+ * @param {Object} context - The new context for the function.
+ * @returns {boolean} The new function.
+ */
+function proxy(fn, context) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ return function () {
+ for (var _len3 = arguments.length, args2 = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args2[_key3] = arguments[_key3];
+ }
+
+ return fn.apply(context, args.concat(args2));
+ };
+}
+
+var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/i;
+
+/**
+ * Normalize decimal number.
+ * Check out {@link http://0.30000000000000004.com/ }
+ * @param {number} value - The value to normalize.
+ * @param {number} [times=100000000000] - The times for normalizing.
+ * @returns {number} Returns the normalized number.
+ */
+function normalizeDecimalNumber(value) {
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;
+
+ return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;
+}
+
+var REGEXP_SUFFIX = /^(width|height|left|top|marginLeft|marginTop)$/;
+
+/**
+ * Apply styles to the given element.
+ * @param {Element} element - The target element.
+ * @param {Object} styles - The styles for applying.
+ */
+function setStyle(element, styles) {
+ var style = element.style;
+
+
+ each(styles, function (value, property) {
+ if (REGEXP_SUFFIX.test(property) && isNumber(value)) {
+ value += 'px';
+ }
+
+ style[property] = value;
+ });
+}
+
+/**
+ * Check if the given element has a special class.
+ * @param {Element} element - The element to check.
+ * @param {string} value - The class to search.
+ * @returns {boolean} Returns `true` if the special class was found.
+ */
+function hasClass(element, value) {
+ return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;
+}
+
+/**
+ * Add classes to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be added.
+ */
+function addClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ addClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.add(value);
+ return;
+ }
+
+ var className = element.className.trim();
+
+ if (!className) {
+ element.className = value;
+ } else if (className.indexOf(value) < 0) {
+ element.className = className + ' ' + value;
+ }
+}
+
+/**
+ * Remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be removed.
+ */
+function removeClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ removeClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.remove(value);
+ return;
+ }
+
+ if (element.className.indexOf(value) >= 0) {
+ element.className = element.className.replace(value, '');
+ }
+}
+
+/**
+ * Add or remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be toggled.
+ * @param {boolean} added - Add only.
+ */
+function toggleClass(element, value, added) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ toggleClass(elem, value, added);
+ });
+ return;
+ }
+
+ // IE10-11 doesn't support the second parameter of `classList.toggle`
+ if (added) {
+ addClass(element, value);
+ } else {
+ removeClass(element, value);
+ }
+}
+
+var REGEXP_HYPHENATE = /([a-z\d])([A-Z])/g;
+
+/**
+ * Hyphenate the given value.
+ * @param {string} value - The value to hyphenate.
+ * @returns {string} The hyphenated value.
+ */
+function hyphenate(value) {
+ return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();
+}
+
+/**
+ * Get data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to get.
+ * @returns {string} The data value.
+ */
+function getData(element, name) {
+ if (isObject(element[name])) {
+ return element[name];
+ } else if (element.dataset) {
+ return element.dataset[name];
+ }
+
+ return element.getAttribute('data-' + hyphenate(name));
+}
+
+/**
+ * Set data to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to set.
+ * @param {string} data - The data value.
+ */
+function setData(element, name, data) {
+ if (isObject(data)) {
+ element[name] = data;
+ } else if (element.dataset) {
+ element.dataset[name] = data;
+ } else {
+ element.setAttribute('data-' + hyphenate(name), data);
+ }
+}
+
+/**
+ * Remove data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to remove.
+ */
+function removeData(element, name) {
+ if (isObject(element[name])) {
+ try {
+ delete element[name];
+ } catch (e) {
+ element[name] = null;
+ }
+ } else if (element.dataset) {
+ // #128 Safari not allows to delete dataset property
+ try {
+ delete element.dataset[name];
+ } catch (e) {
+ element.dataset[name] = null;
+ }
+ } else {
+ element.removeAttribute('data-' + hyphenate(name));
+ }
+}
+
+var REGEXP_SPACES = /\s+/;
+
+/**
+ * Remove event listener from the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function removeListener(element, type, listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ removeListener(element, t, listener, options);
+ });
+ return;
+ }
+
+ if (element.removeEventListener) {
+ element.removeEventListener(type, listener, options);
+ } else if (element.detachEvent) {
+ element.detachEvent('on' + type, listener);
+ }
+}
+
+/**
+ * Add event listener to the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function addListener(element, type, _listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(_listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ addListener(element, t, _listener, options);
+ });
+ return;
+ }
+
+ if (options.once) {
+ var originalListener = _listener;
+
+ _listener = function listener() {
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ removeListener(element, type, _listener, options);
+ return originalListener.apply(element, args);
+ };
+ }
+
+ if (element.addEventListener) {
+ element.addEventListener(type, _listener, options);
+ } else if (element.attachEvent) {
+ element.attachEvent('on' + type, _listener);
+ }
+}
+
+/**
+ * Dispatch event on the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Object} data - The additional event data.
+ * @returns {boolean} Indicate if the event is default prevented or not.
+ */
+function dispatchEvent(element, type, data) {
+ if (element.dispatchEvent) {
+ var event = void 0;
+
+ // Event and CustomEvent on IE9-11 are global objects, not constructors
+ if (isFunction(Event) && isFunction(CustomEvent)) {
+ if (isUndefined(data)) {
+ event = new Event(type, {
+ bubbles: true,
+ cancelable: true
+ });
+ } else {
+ event = new CustomEvent(type, {
+ detail: data,
+ bubbles: true,
+ cancelable: true
+ });
+ }
+ } else if (isUndefined(data)) {
+ event = document.createEvent('Event');
+ event.initEvent(type, true, true);
+ } else {
+ event = document.createEvent('CustomEvent');
+ event.initCustomEvent(type, true, true, data);
+ }
+
+ // IE9+
+ return element.dispatchEvent(event);
+ } else if (element.fireEvent) {
+ // IE6-10 (native events only)
+ return element.fireEvent('on' + type);
+ }
+
+ return true;
+}
+
+/**
+ * Get the offset base on the document.
+ * @param {Element} element - The target element.
+ * @returns {Object} The offset data.
+ */
+function getOffset(element) {
+ var doc = document.documentElement;
+ var box = element.getBoundingClientRect();
+
+ return {
+ left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)),
+ top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0))
+ };
+}
+
+/**
+ * Empty an element.
+ * @param {Element} element - The element to empty.
+ */
+function empty(element) {
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+var location = WINDOW.location;
+
+var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i;
+
+/**
+ * Check if the given URL is a cross origin URL.
+ * @param {string} url - The target URL.
+ * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.
+ */
+function isCrossOriginURL(url) {
+ var parts = url.match(REGEXP_ORIGINS);
+
+ return parts && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
+}
+
+/**
+ * Add timestamp to the given URL.
+ * @param {string} url - The target URL.
+ * @returns {string} The result URL.
+ */
+function addTimestamp(url) {
+ var timestamp = 'timestamp=' + new Date().getTime();
+
+ return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;
+}
+
+/**
+ * Get transforms base on the given object.
+ * @param {Object} obj - The target object.
+ * @returns {string} A string contains transform values.
+ */
+function getTransforms(_ref) {
+ var rotate = _ref.rotate,
+ scaleX = _ref.scaleX,
+ scaleY = _ref.scaleY,
+ translateX = _ref.translateX,
+ translateY = _ref.translateY;
+
+ var values = [];
+
+ if (isNumber(translateX) && translateX !== 0) {
+ values.push('translateX(' + translateX + 'px)');
+ }
+
+ if (isNumber(translateY) && translateY !== 0) {
+ values.push('translateY(' + translateY + 'px)');
+ }
+
+ // Rotate should come first before scale to match orientation transform
+ if (isNumber(rotate) && rotate !== 0) {
+ values.push('rotate(' + rotate + 'deg)');
+ }
+
+ if (isNumber(scaleX) && scaleX !== 1) {
+ values.push('scaleX(' + scaleX + ')');
+ }
+
+ if (isNumber(scaleY) && scaleY !== 1) {
+ values.push('scaleY(' + scaleY + ')');
+ }
+
+ var transform = values.length ? values.join(' ') : 'none';
+
+ return {
+ WebkitTransform: transform,
+ msTransform: transform,
+ transform: transform
+ };
+}
+
+var navigator = WINDOW.navigator;
+
+var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
+
+/**
+ * Get an image's natural sizes.
+ * @param {string} image - The target image.
+ * @param {Function} callback - The callback function.
+ */
+function getImageNaturalSizes(image, callback) {
+ // Modern browsers (except Safari)
+ if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) {
+ callback(image.naturalWidth, image.naturalHeight);
+ return;
+ }
+
+ var newImage = document.createElement('img');
+ var body = document.body || document.documentElement;
+
+ newImage.onload = function () {
+ callback(newImage.width, newImage.height);
+
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ body.removeChild(newImage);
+ }
+ };
+
+ newImage.src = image.src;
+
+ // iOS Safari will convert the image automatically
+ // with its orientation once append it into DOM (#279)
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';
+ body.appendChild(newImage);
+ }
+}
+
+/**
+ * Get the max ratio of a group of pointers.
+ * @param {string} pointers - The target pointers.
+ * @returns {number} The result ratio.
+ */
+function getMaxZoomRatio(pointers) {
+ var pointers2 = extend({}, pointers);
+ var ratios = [];
+
+ each(pointers, function (pointer, pointerId) {
+ delete pointers2[pointerId];
+
+ each(pointers2, function (pointer2) {
+ var x1 = Math.abs(pointer.startX - pointer2.startX);
+ var y1 = Math.abs(pointer.startY - pointer2.startY);
+ var x2 = Math.abs(pointer.endX - pointer2.endX);
+ var y2 = Math.abs(pointer.endY - pointer2.endY);
+ var z1 = Math.sqrt(x1 * x1 + y1 * y1);
+ var z2 = Math.sqrt(x2 * x2 + y2 * y2);
+ var ratio = (z2 - z1) / z1;
+
+ ratios.push(ratio);
+ });
+ });
+
+ ratios.sort(function (a, b) {
+ return Math.abs(a) < Math.abs(b);
+ });
+
+ return ratios[0];
+}
+
+/**
+ * Get a pointer from an event object.
+ * @param {Object} event - The target event object.
+ * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.
+ * @returns {Object} The result pointer contains start and/or end point coordinates.
+ */
+function getPointer(_ref2, endOnly) {
+ var pageX = _ref2.pageX,
+ pageY = _ref2.pageY;
+
+ var end = {
+ endX: pageX,
+ endY: pageY
+ };
+
+ if (endOnly) {
+ return end;
+ }
+
+ return extend({
+ startX: pageX,
+ startY: pageY
+ }, end);
+}
+
+/**
+ * Get the center point coordinate of a group of pointers.
+ * @param {Object} pointers - The target pointers.
+ * @returns {Object} The center point coordinate.
+ */
+function getPointersCenter(pointers) {
+ var pageX = 0;
+ var pageY = 0;
+ var count = 0;
+
+ each(pointers, function (_ref3) {
+ var startX = _ref3.startX,
+ startY = _ref3.startY;
+
+ pageX += startX;
+ pageY += startY;
+ count += 1;
+ });
+
+ pageX /= count;
+ pageY /= count;
+
+ return {
+ pageX: pageX,
+ pageY: pageY
+ };
+}
+
+/**
+ * Check if the given value is a finite number.
+ */
+var isFinite = Number.isFinite || WINDOW.isFinite;
+
+/**
+ * Get the max sizes in a rectangle under the given aspect ratio.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getContainSizes(_ref4) {
+ var aspectRatio = _ref4.aspectRatio,
+ height = _ref4.height,
+ width = _ref4.width;
+
+ var isValidNumber = function isValidNumber(value) {
+ return isFinite(value) && value > 0;
+ };
+
+ if (isValidNumber(width) && isValidNumber(height)) {
+ if (height * aspectRatio > width) {
+ height = width / aspectRatio;
+ } else {
+ width = height * aspectRatio;
+ }
+ } else if (isValidNumber(width)) {
+ height = width / aspectRatio;
+ } else if (isValidNumber(height)) {
+ width = height * aspectRatio;
+ }
+
+ return {
+ width: width,
+ height: height
+ };
+}
+
+/**
+ * Get the new sizes of a rectangle after rotated.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getRotatedSizes(_ref5) {
+ var width = _ref5.width,
+ height = _ref5.height,
+ degree = _ref5.degree;
+
+ degree = Math.abs(degree) % 180;
+
+ if (degree === 90) {
+ return {
+ width: height,
+ height: width
+ };
+ }
+
+ var arc = degree % 90 * Math.PI / 180;
+ var sinArc = Math.sin(arc);
+ var cosArc = Math.cos(arc);
+ var newWidth = width * cosArc + height * sinArc;
+ var newHeight = width * sinArc + height * cosArc;
+
+ return degree > 90 ? {
+ width: newHeight,
+ height: newWidth
+ } : {
+ width: newWidth,
+ height: newHeight
+ };
+}
+
+/**
+ * Get a canvas which drew the given image.
+ * @param {HTMLImageElement} image - The image for drawing.
+ * @param {Object} imageData - The image data.
+ * @param {Object} canvasData - The canvas data.
+ * @param {Object} options - The options.
+ * @returns {HTMLCanvasElement} The result canvas.
+ */
+function getSourceCanvas(image, _ref6, _ref7, _ref8) {
+ var imageNaturalWidth = _ref6.naturalWidth,
+ imageNaturalHeight = _ref6.naturalHeight,
+ _ref6$rotate = _ref6.rotate,
+ rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate,
+ _ref6$scaleX = _ref6.scaleX,
+ scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX,
+ _ref6$scaleY = _ref6.scaleY,
+ scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY;
+ var aspectRatio = _ref7.aspectRatio,
+ naturalWidth = _ref7.naturalWidth,
+ naturalHeight = _ref7.naturalHeight;
+ var _ref8$fillColor = _ref8.fillColor,
+ fillColor = _ref8$fillColor === undefined ? 'transparent' : _ref8$fillColor,
+ _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,
+ imageSmoothingEnabled = _ref8$imageSmoothingE === undefined ? true : _ref8$imageSmoothingE,
+ _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,
+ imageSmoothingQuality = _ref8$imageSmoothingQ === undefined ? 'low' : _ref8$imageSmoothingQ,
+ _ref8$maxWidth = _ref8.maxWidth,
+ maxWidth = _ref8$maxWidth === undefined ? Infinity : _ref8$maxWidth,
+ _ref8$maxHeight = _ref8.maxHeight,
+ maxHeight = _ref8$maxHeight === undefined ? Infinity : _ref8$maxHeight,
+ _ref8$minWidth = _ref8.minWidth,
+ minWidth = _ref8$minWidth === undefined ? 0 : _ref8$minWidth,
+ _ref8$minHeight = _ref8.minHeight,
+ minHeight = _ref8$minHeight === undefined ? 0 : _ref8$minHeight;
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: maxWidth,
+ height: maxHeight
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minWidth,
+ height: minHeight
+ });
+ var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));
+ var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));
+ var params = [-imageNaturalWidth / 2, -imageNaturalHeight / 2, imageNaturalWidth, imageNaturalHeight];
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+ context.fillStyle = fillColor;
+ context.fillRect(0, 0, width, height);
+ context.save();
+ context.translate(width / 2, height / 2);
+ context.rotate(rotate * Math.PI / 180);
+ context.scale(scaleX, scaleY);
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ context.drawImage.apply(context, [image].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+ context.restore();
+ return canvas;
+}
+
+var fromCharCode = String.fromCharCode;
+
+/**
+ * Get string from char code in data view.
+ * @param {DataView} dataView - The data view for read.
+ * @param {number} start - The start index.
+ * @param {number} length - The read length.
+ * @returns {string} The read result.
+ */
+
+function getStringFromCharCode(dataView, start, length) {
+ var str = '';
+ var i = void 0;
+
+ length += start;
+
+ for (i = start; i < length; i += 1) {
+ str += fromCharCode(dataView.getUint8(i));
+ }
+
+ return str;
+}
+
+var REGEXP_DATA_URL_HEAD = /^data:.*,/;
+
+/**
+ * Transform Data URL to array buffer.
+ * @param {string} dataURL - The Data URL to transform.
+ * @returns {ArrayBuffer} The result array buffer.
+ */
+function dataURLToArrayBuffer(dataURL) {
+ var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');
+ var binary = atob(base64);
+ var arrayBuffer = new ArrayBuffer(binary.length);
+ var uint8 = new Uint8Array(arrayBuffer);
+
+ each(uint8, function (value, i) {
+ uint8[i] = binary.charCodeAt(i);
+ });
+
+ return arrayBuffer;
+}
+
+/**
+ * Transform array buffer to Data URL.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.
+ * @param {string} mimeType - The mime type of the Data URL.
+ * @returns {string} The result Data URL.
+ */
+function arrayBufferToDataURL(arrayBuffer, mimeType) {
+ var uint8 = new Uint8Array(arrayBuffer);
+ var data = '';
+
+ // TypedArray.prototype.forEach is not supported in some browsers.
+ each(uint8, function (value) {
+ data += fromCharCode(value);
+ });
+
+ return 'data:' + mimeType + ';base64,' + btoa(data);
+}
+
+/**
+ * Get orientation value from given array buffer.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to read.
+ * @returns {number} The read orientation value.
+ */
+function getOrientation(arrayBuffer) {
+ var dataView = new DataView(arrayBuffer);
+ var orientation = void 0;
+ var littleEndian = void 0;
+ var app1Start = void 0;
+ var ifdStart = void 0;
+
+ // Only handle JPEG image (start by 0xFFD8)
+ if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {
+ var length = dataView.byteLength;
+ var offset = 2;
+
+ while (offset < length) {
+ if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {
+ app1Start = offset;
+ break;
+ }
+
+ offset += 1;
+ }
+ }
+
+ if (app1Start) {
+ var exifIDCode = app1Start + 4;
+ var tiffOffset = app1Start + 10;
+
+ if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {
+ var endianness = dataView.getUint16(tiffOffset);
+
+ littleEndian = endianness === 0x4949;
+
+ if (littleEndian || endianness === 0x4D4D /* bigEndian */) {
+ if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {
+ var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);
+
+ if (firstIFDOffset >= 0x00000008) {
+ ifdStart = tiffOffset + firstIFDOffset;
+ }
+ }
+ }
+ }
+ }
+
+ if (ifdStart) {
+ var _length = dataView.getUint16(ifdStart, littleEndian);
+ var _offset = void 0;
+ var i = void 0;
+
+ for (i = 0; i < _length; i += 1) {
+ _offset = ifdStart + i * 12 + 2;
+
+ if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {
+ // 8 is the offset of the current tag's value
+ _offset += 8;
+
+ // Get the original orientation value
+ orientation = dataView.getUint16(_offset, littleEndian);
+
+ // Override the orientation with its default value
+ dataView.setUint16(_offset, 1, littleEndian);
+ break;
+ }
+ }
+ }
+
+ return orientation;
+}
+
+/**
+ * Parse Exif Orientation value.
+ * @param {number} orientation - The orientation to parse.
+ * @returns {Object} The parsed result.
+ */
+function parseOrientation(orientation) {
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ switch (orientation) {
+ // Flip horizontal
+ case 2:
+ scaleX = -1;
+ break;
+
+ // Rotate left 180°
+ case 3:
+ rotate = -180;
+ break;
+
+ // Flip vertical
+ case 4:
+ scaleY = -1;
+ break;
+
+ // Flip vertical and rotate right 90°
+ case 5:
+ rotate = 90;
+ scaleY = -1;
+ break;
+
+ // Rotate right 90°
+ case 6:
+ rotate = 90;
+ break;
+
+ // Flip horizontal and rotate right 90°
+ case 7:
+ rotate = 90;
+ scaleX = -1;
+ break;
+
+ // Rotate left 90°
+ case 8:
+ rotate = -90;
+ break;
+
+ default:
+ }
+
+ return {
+ rotate: rotate,
+ scaleX: scaleX,
+ scaleY: scaleY
+ };
+}
+
+var render = {
+ render: function render() {
+ this.initContainer();
+ this.initCanvas();
+ this.initCropBox();
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ },
+ initContainer: function initContainer() {
+ var element = this.element,
+ options = this.options,
+ container = this.container,
+ cropper = this.cropper;
+
+
+ addClass(cropper, CLASS_HIDDEN);
+ removeClass(element, CLASS_HIDDEN);
+
+ var containerData = {
+ width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),
+ height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)
+ };
+
+ this.containerData = containerData;
+
+ setStyle(cropper, {
+ width: containerData.width,
+ height: containerData.height
+ });
+
+ addClass(element, CLASS_HIDDEN);
+ removeClass(cropper, CLASS_HIDDEN);
+ },
+
+
+ // Canvas (image wrapper)
+ initCanvas: function initCanvas() {
+ var containerData = this.containerData,
+ imageData = this.imageData;
+ var viewMode = this.options.viewMode;
+
+ var rotated = Math.abs(imageData.rotate) % 180 === 90;
+ var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;
+ var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;
+ var aspectRatio = naturalWidth / naturalHeight;
+ var canvasWidth = containerData.width;
+ var canvasHeight = containerData.height;
+
+ if (containerData.height * aspectRatio > containerData.width) {
+ if (viewMode === 3) {
+ canvasWidth = containerData.height * aspectRatio;
+ } else {
+ canvasHeight = containerData.width / aspectRatio;
+ }
+ } else if (viewMode === 3) {
+ canvasHeight = containerData.width / aspectRatio;
+ } else {
+ canvasWidth = containerData.height * aspectRatio;
+ }
+
+ var canvasData = {
+ aspectRatio: aspectRatio,
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ width: canvasWidth,
+ height: canvasHeight
+ };
+
+ canvasData.left = (containerData.width - canvasWidth) / 2;
+ canvasData.top = (containerData.height - canvasHeight) / 2;
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ this.canvasData = canvasData;
+ this.limited = viewMode === 1 || viewMode === 2;
+ this.limitCanvas(true, true);
+ this.initialImageData = extend({}, imageData);
+ this.initialCanvasData = extend({}, canvasData);
+ },
+ limitCanvas: function limitCanvas(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var viewMode = options.viewMode;
+ var aspectRatio = canvasData.aspectRatio;
+
+ var cropped = this.cropped && cropBoxData;
+
+ if (sizeLimited) {
+ var minCanvasWidth = Number(options.minCanvasWidth) || 0;
+ var minCanvasHeight = Number(options.minCanvasHeight) || 0;
+
+ if (viewMode > 1) {
+ minCanvasWidth = Math.max(minCanvasWidth, containerData.width);
+ minCanvasHeight = Math.max(minCanvasHeight, containerData.height);
+
+ if (viewMode === 3) {
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ } else if (viewMode > 0) {
+ if (minCanvasWidth) {
+ minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);
+ } else if (minCanvasHeight) {
+ minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);
+ } else if (cropped) {
+ minCanvasWidth = cropBoxData.width;
+ minCanvasHeight = cropBoxData.height;
+
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ }
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minCanvasWidth,
+ height: minCanvasHeight
+ });
+
+ minCanvasWidth = _getContainSizes.width;
+ minCanvasHeight = _getContainSizes.height;
+
+
+ canvasData.minWidth = minCanvasWidth;
+ canvasData.minHeight = minCanvasHeight;
+ canvasData.maxWidth = Infinity;
+ canvasData.maxHeight = Infinity;
+ }
+
+ if (positionLimited) {
+ if (viewMode) {
+ var newCanvasLeft = containerData.width - canvasData.width;
+ var newCanvasTop = containerData.height - canvasData.height;
+
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+
+ if (cropped && this.limited) {
+ canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));
+ canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));
+ canvasData.maxLeft = cropBoxData.left;
+ canvasData.maxTop = cropBoxData.top;
+
+ if (viewMode === 2) {
+ if (canvasData.width >= containerData.width) {
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ }
+
+ if (canvasData.height >= containerData.height) {
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+ }
+ }
+ }
+ } else {
+ canvasData.minLeft = -canvasData.width;
+ canvasData.minTop = -canvasData.height;
+ canvasData.maxLeft = containerData.width;
+ canvasData.maxTop = containerData.height;
+ }
+ }
+ },
+ renderCanvas: function renderCanvas(changed, transformed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+
+ if (transformed) {
+ var _getRotatedSizes = getRotatedSizes({
+ width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),
+ height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),
+ degree: imageData.rotate || 0
+ }),
+ naturalWidth = _getRotatedSizes.width,
+ naturalHeight = _getRotatedSizes.height;
+
+ var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);
+ var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);
+
+ canvasData.left -= (width - canvasData.width) / 2;
+ canvasData.top -= (height - canvasData.height) / 2;
+ canvasData.width = width;
+ canvasData.height = height;
+ canvasData.aspectRatio = naturalWidth / naturalHeight;
+ canvasData.naturalWidth = naturalWidth;
+ canvasData.naturalHeight = naturalHeight;
+ this.limitCanvas(true, false);
+ }
+
+ if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {
+ canvasData.left = canvasData.oldLeft;
+ }
+
+ if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {
+ canvasData.top = canvasData.oldTop;
+ }
+
+ canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);
+ canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);
+
+ this.limitCanvas(false, true);
+
+ canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);
+ canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ setStyle(this.canvas, extend({
+ width: canvasData.width,
+ height: canvasData.height
+ }, getTransforms({
+ translateX: canvasData.left,
+ translateY: canvasData.top
+ })));
+
+ this.renderImage(changed);
+
+ if (this.cropped && this.limited) {
+ this.limitCropBox(true, true);
+ }
+ },
+ renderImage: function renderImage(changed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+ var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);
+ var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);
+
+ extend(imageData, {
+ width: width,
+ height: height,
+ left: (canvasData.width - width) / 2,
+ top: (canvasData.height - height) / 2
+ });
+ setStyle(this.image, extend({
+ width: imageData.width,
+ height: imageData.height
+ }, getTransforms(extend({
+ translateX: imageData.left,
+ translateY: imageData.top
+ }, imageData))));
+
+ if (changed) {
+ this.output();
+ }
+ },
+ initCropBox: function initCropBox() {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var aspectRatio = options.aspectRatio;
+
+ var autoCropArea = Number(options.autoCropArea) || 0.8;
+ var cropBoxData = {
+ width: canvasData.width,
+ height: canvasData.height
+ };
+
+ if (aspectRatio) {
+ if (canvasData.height * aspectRatio > canvasData.width) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.cropBoxData = cropBoxData;
+ this.limitCropBox(true, true);
+
+ // Initialize auto crop area
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ // The width/height of auto crop area must large than "minWidth/Height"
+ cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);
+ cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);
+ cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;
+ cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ this.initialCropBoxData = extend({}, cropBoxData);
+ },
+ limitCropBox: function limitCropBox(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData,
+ limited = this.limited;
+ var aspectRatio = options.aspectRatio;
+
+
+ if (sizeLimited) {
+ var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;
+ var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;
+ var maxCropBoxWidth = Math.min(containerData.width, limited ? canvasData.width : containerData.width);
+ var maxCropBoxHeight = Math.min(containerData.height, limited ? canvasData.height : containerData.height);
+
+ // The min/maxCropBoxWidth/Height must be less than container's width/height
+ minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);
+ minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);
+
+ if (aspectRatio) {
+ if (minCropBoxWidth && minCropBoxHeight) {
+ if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+ } else if (minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else if (minCropBoxHeight) {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+
+ if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {
+ maxCropBoxHeight = maxCropBoxWidth / aspectRatio;
+ } else {
+ maxCropBoxWidth = maxCropBoxHeight * aspectRatio;
+ }
+ }
+
+ // The minWidth/Height must be less than maxWidth/Height
+ cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);
+ cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);
+ cropBoxData.maxWidth = maxCropBoxWidth;
+ cropBoxData.maxHeight = maxCropBoxHeight;
+ }
+
+ if (positionLimited) {
+ if (limited) {
+ cropBoxData.minLeft = Math.max(0, canvasData.left);
+ cropBoxData.minTop = Math.max(0, canvasData.top);
+ cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;
+ cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;
+ } else {
+ cropBoxData.minLeft = 0;
+ cropBoxData.minTop = 0;
+ cropBoxData.maxLeft = containerData.width - cropBoxData.width;
+ cropBoxData.maxTop = containerData.height - cropBoxData.height;
+ }
+ }
+ },
+ renderCropBox: function renderCropBox() {
+ var options = this.options,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData;
+
+
+ if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {
+ cropBoxData.left = cropBoxData.oldLeft;
+ }
+
+ if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {
+ cropBoxData.top = cropBoxData.oldTop;
+ }
+
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ this.limitCropBox(false, true);
+
+ cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);
+ cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ if (options.movable && options.cropBoxMovable) {
+ // Turn to move the canvas when the crop box is equal to the container
+ setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);
+ }
+
+ setStyle(this.cropBox, extend({
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ }, getTransforms({
+ translateX: cropBoxData.left,
+ translateY: cropBoxData.top
+ })));
+
+ if (this.cropped && this.limited) {
+ this.limitCanvas(true, true);
+ }
+
+ if (!this.disabled) {
+ this.output();
+ }
+ },
+ output: function output() {
+ this.preview();
+
+ if (this.complete) {
+ dispatchEvent(this.element, EVENT_CROP, this.getData());
+ }
+ }
+};
+
+var preview = {
+ initPreview: function initPreview() {
+ var crossOrigin = this.crossOrigin;
+ var preview = this.options.preview;
+
+ var url = crossOrigin ? this.crossOriginUrl : this.url;
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = url;
+ this.viewBox.appendChild(image);
+ this.image2 = image;
+
+ if (!preview) {
+ return;
+ }
+
+ var previews = preview.querySelector ? [preview] : document.querySelectorAll(preview);
+
+ this.previews = previews;
+
+ each(previews, function (element) {
+ var img = document.createElement('img');
+
+ // Save the original size for recover
+ setData(element, DATA_PREVIEW, {
+ width: element.offsetWidth,
+ height: element.offsetHeight,
+ html: element.innerHTML
+ });
+
+ if (crossOrigin) {
+ img.crossOrigin = crossOrigin;
+ }
+
+ img.src = url;
+
+ /**
+ * Override img element styles
+ * Add `display:block` to avoid margin top issue
+ * Add `height:auto` to override `height` attribute on IE8
+ * (Occur only when margin-top <= -height)
+ */
+ img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"';
+
+ empty(element);
+ element.appendChild(img);
+ });
+ },
+ resetPreview: function resetPreview() {
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+
+ setStyle(element, {
+ width: data.width,
+ height: data.height
+ });
+
+ element.innerHTML = data.html;
+ removeData(element, DATA_PREVIEW);
+ });
+ },
+ preview: function preview() {
+ var imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var cropBoxWidth = cropBoxData.width,
+ cropBoxHeight = cropBoxData.height;
+ var width = imageData.width,
+ height = imageData.height;
+
+ var left = cropBoxData.left - canvasData.left - imageData.left;
+ var top = cropBoxData.top - canvasData.top - imageData.top;
+
+ if (!this.cropped || this.disabled) {
+ return;
+ }
+
+ setStyle(this.image2, extend({
+ width: width,
+ height: height
+ }, getTransforms(extend({
+ translateX: -left,
+ translateY: -top
+ }, imageData))));
+
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+ var originalWidth = data.width;
+ var originalHeight = data.height;
+ var newWidth = originalWidth;
+ var newHeight = originalHeight;
+ var ratio = 1;
+
+ if (cropBoxWidth) {
+ ratio = originalWidth / cropBoxWidth;
+ newHeight = cropBoxHeight * ratio;
+ }
+
+ if (cropBoxHeight && newHeight > originalHeight) {
+ ratio = originalHeight / cropBoxHeight;
+ newWidth = cropBoxWidth * ratio;
+ newHeight = originalHeight;
+ }
+
+ setStyle(element, {
+ width: newWidth,
+ height: newHeight
+ });
+
+ setStyle(element.getElementsByTagName('img')[0], extend({
+ width: width * ratio,
+ height: height * ratio
+ }, getTransforms(extend({
+ translateX: -left * ratio,
+ translateY: -top * ratio
+ }, imageData))));
+ });
+ }
+};
+
+var events = {
+ bind: function bind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ addListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ addListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ addListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ addListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ addListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = proxy(this.cropStart, this));
+
+ if (options.zoomable && options.zoomOnWheel) {
+ addListener(cropper, EVENT_WHEEL, this.onWheel = proxy(this.wheel, this));
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ addListener(cropper, EVENT_DBLCLICK, this.onDblclick = proxy(this.dblclick, this));
+ }
+
+ addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = proxy(this.cropMove, this));
+ addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this));
+
+ if (options.responsive) {
+ addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this));
+ }
+ },
+ unbind: function unbind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ removeListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ removeListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ removeListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ removeListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ removeListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);
+
+ if (options.zoomable && options.zoomOnWheel) {
+ removeListener(cropper, EVENT_WHEEL, this.onWheel);
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);
+ }
+
+ removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);
+ removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);
+
+ if (options.responsive) {
+ removeListener(window, EVENT_RESIZE, this.onResize);
+ }
+ }
+};
+
+var handlers = {
+ resize: function resize() {
+ var options = this.options,
+ container = this.container,
+ containerData = this.containerData;
+
+ var minContainerWidth = Number(options.minContainerWidth) || 200;
+ var minContainerHeight = Number(options.minContainerHeight) || 100;
+
+ if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) {
+ return;
+ }
+
+ var ratio = container.offsetWidth / containerData.width;
+
+ // Resize when width changed or height changed
+ if (ratio !== 1 || container.offsetHeight !== containerData.height) {
+ var canvasData = void 0;
+ var cropBoxData = void 0;
+
+ if (options.restore) {
+ canvasData = this.getCanvasData();
+ cropBoxData = this.getCropBoxData();
+ }
+
+ this.render();
+
+ if (options.restore) {
+ this.setCanvasData(each(canvasData, function (n, i) {
+ canvasData[i] = n * ratio;
+ }));
+ this.setCropBoxData(each(cropBoxData, function (n, i) {
+ cropBoxData[i] = n * ratio;
+ }));
+ }
+ }
+ },
+ dblclick: function dblclick() {
+ if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {
+ return;
+ }
+
+ this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);
+ },
+ wheel: function wheel(e) {
+ var _this = this;
+
+ var ratio = Number(this.options.wheelZoomRatio) || 0.1;
+ var delta = 1;
+
+ if (this.disabled) {
+ return;
+ }
+
+ e.preventDefault();
+
+ // Limit wheel speed to prevent zoom too fast (#21)
+ if (this.wheeling) {
+ return;
+ }
+
+ this.wheeling = true;
+
+ setTimeout(function () {
+ _this.wheeling = false;
+ }, 50);
+
+ if (e.deltaY) {
+ delta = e.deltaY > 0 ? 1 : -1;
+ } else if (e.wheelDelta) {
+ delta = -e.wheelDelta / 120;
+ } else if (e.detail) {
+ delta = e.detail > 0 ? 1 : -1;
+ }
+
+ this.zoom(-delta * ratio, e);
+ },
+ cropStart: function cropStart(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var options = this.options,
+ pointers = this.pointers;
+
+ var action = void 0;
+
+ if (e.changedTouches) {
+ // Handle touch event
+ each(e.changedTouches, function (touch) {
+ pointers[touch.identifier] = getPointer(touch);
+ });
+ } else {
+ // Handle mouse event and pointer event
+ pointers[e.pointerId || 0] = getPointer(e);
+ }
+
+ if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {
+ action = ACTION_ZOOM;
+ } else {
+ action = getData(e.target, DATA_ACTION);
+ }
+
+ if (!REGEXP_ACTIONS.test(action)) {
+ return;
+ }
+
+ if (dispatchEvent(this.element, EVENT_CROP_START, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ e.preventDefault();
+
+ this.action = action;
+ this.cropping = false;
+
+ if (action === ACTION_CROP) {
+ this.cropping = true;
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+ },
+ cropMove: function cropMove(e) {
+ var action = this.action;
+
+
+ if (this.disabled || !action) {
+ return;
+ }
+
+ var pointers = this.pointers;
+
+
+ e.preventDefault();
+
+ if (dispatchEvent(this.element, EVENT_CROP_MOVE, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ extend(pointers[touch.identifier], getPointer(touch, true));
+ });
+ } else {
+ extend(pointers[e.pointerId || 0], getPointer(e, true));
+ }
+
+ this.change(e);
+ },
+ cropEnd: function cropEnd(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var action = this.action,
+ pointers = this.pointers;
+
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ delete pointers[touch.identifier];
+ });
+ } else {
+ delete pointers[e.pointerId || 0];
+ }
+
+ if (!action) {
+ return;
+ }
+
+ e.preventDefault();
+
+ if (!Object.keys(pointers).length) {
+ this.action = '';
+ }
+
+ if (this.cropping) {
+ this.cropping = false;
+ toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);
+ }
+
+ dispatchEvent(this.element, EVENT_CROP_END, {
+ originalEvent: e,
+ action: action
+ });
+ }
+};
+
+var change = {
+ change: function change(e) {
+ var options = this.options,
+ canvasData = this.canvasData,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData,
+ pointers = this.pointers;
+ var action = this.action;
+ var aspectRatio = options.aspectRatio;
+ var left = cropBoxData.left,
+ top = cropBoxData.top,
+ width = cropBoxData.width,
+ height = cropBoxData.height;
+
+ var right = left + width;
+ var bottom = top + height;
+ var minLeft = 0;
+ var minTop = 0;
+ var maxWidth = containerData.width;
+ var maxHeight = containerData.height;
+ var renderable = true;
+ var offset = void 0;
+
+ // Locking aspect ratio in "free mode" by holding shift key
+ if (!aspectRatio && e.shiftKey) {
+ aspectRatio = width && height ? width / height : 1;
+ }
+
+ if (this.limited) {
+ minLeft = cropBoxData.minLeft;
+ minTop = cropBoxData.minTop;
+
+ maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);
+ maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);
+ }
+
+ var pointer = pointers[Object.keys(pointers)[0]];
+ var range = {
+ x: pointer.endX - pointer.startX,
+ y: pointer.endY - pointer.startY
+ };
+ var check = function check(side) {
+ switch (side) {
+ case ACTION_EAST:
+ if (right + range.x > maxWidth) {
+ range.x = maxWidth - right;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (left + range.x < minLeft) {
+ range.x = minLeft - left;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (top + range.y < minTop) {
+ range.y = minTop - top;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (bottom + range.y > maxHeight) {
+ range.y = maxHeight - bottom;
+ }
+
+ break;
+
+ default:
+ }
+ };
+
+ switch (action) {
+ // Move crop box
+ case ACTION_ALL:
+ left += range.x;
+ top += range.y;
+ break;
+
+ // Resize crop box
+ case ACTION_EAST:
+ if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top -= range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_WEST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left += range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_SOUTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top += range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_EAST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_SOUTH);
+ height += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left -= range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_NORTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_EAST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_WEST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || left <= minLeft)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ left += range.y * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_WEST:
+ if (aspectRatio) {
+ if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_EAST:
+ if (aspectRatio) {
+ if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ // Move canvas
+ case ACTION_MOVE:
+ this.move(range.x, range.y);
+ renderable = false;
+ break;
+
+ // Zoom canvas
+ case ACTION_ZOOM:
+ this.zoom(getMaxZoomRatio(pointers), e);
+ renderable = false;
+ break;
+
+ // Create crop box
+ case ACTION_CROP:
+ if (!range.x || !range.y) {
+ renderable = false;
+ break;
+ }
+
+ offset = getOffset(this.cropper);
+ left = pointer.startX - offset.left;
+ top = pointer.startY - offset.top;
+ width = cropBoxData.minWidth;
+ height = cropBoxData.minHeight;
+
+ if (range.x > 0) {
+ action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;
+ } else if (range.x < 0) {
+ left -= width;
+ action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;
+ }
+
+ if (range.y < 0) {
+ top -= height;
+ }
+
+ // Show the crop box if is hidden
+ if (!this.cropped) {
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ this.cropped = true;
+
+ if (this.limited) {
+ this.limitCropBox(true, true);
+ }
+ }
+
+ break;
+
+ default:
+ }
+
+ if (renderable) {
+ cropBoxData.width = width;
+ cropBoxData.height = height;
+ cropBoxData.left = left;
+ cropBoxData.top = top;
+ this.action = action;
+ this.renderCropBox();
+ }
+
+ // Override
+ each(pointers, function (p) {
+ p.startX = p.endX;
+ p.startY = p.endY;
+ });
+ }
+};
+
+var methods = {
+ // Show the crop box manually
+ crop: function crop() {
+ if (this.ready && !this.disabled) {
+ if (!this.cropped) {
+ this.cropped = true;
+ this.limitCropBox(true, true);
+
+ if (this.options.modal) {
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ this.setCropBoxData(this.initialCropBoxData);
+ }
+
+ return this;
+ },
+
+
+ // Reset the image and crop box to their initial states
+ reset: function reset() {
+ if (this.ready && !this.disabled) {
+ this.imageData = extend({}, this.initialImageData);
+ this.canvasData = extend({}, this.initialCanvasData);
+ this.cropBoxData = extend({}, this.initialCropBoxData);
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+
+ return this;
+ },
+
+
+ // Clear the crop box
+ clear: function clear() {
+ if (this.cropped && !this.disabled) {
+ extend(this.cropBoxData, {
+ left: 0,
+ top: 0,
+ width: 0,
+ height: 0
+ });
+
+ this.cropped = false;
+ this.renderCropBox();
+ this.limitCanvas(true, true);
+
+ // Render canvas after crop box rendered
+ this.renderCanvas();
+ removeClass(this.dragBox, CLASS_MODAL);
+ addClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Replace the image's src and rebuild the cropper
+ * @param {string} url - The new URL.
+ * @param {boolean} [onlyColorChanged] - Indicate if the new image only changed color.
+ * @returns {Object} this
+ */
+ replace: function replace(url) {
+ var onlyColorChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ if (!this.disabled && url) {
+ if (this.isImg) {
+ this.element.src = url;
+ }
+
+ if (onlyColorChanged) {
+ this.url = url;
+ this.image.src = url;
+
+ if (this.ready) {
+ this.image2.src = url;
+
+ each(this.previews, function (element) {
+ element.getElementsByTagName('img')[0].src = url;
+ });
+ }
+ } else {
+ if (this.isImg) {
+ this.replaced = true;
+ }
+
+ // Clear previous data
+ this.options.data = null;
+ this.load(url);
+ }
+ }
+
+ return this;
+ },
+
+
+ // Enable (unfreeze) the cropper
+ enable: function enable() {
+ if (this.ready) {
+ this.disabled = false;
+ removeClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Disable (freeze) the cropper
+ disable: function disable() {
+ if (this.ready) {
+ this.disabled = true;
+ addClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Destroy the cropper and remove the instance from the image
+ destroy: function destroy() {
+ var element = this.element,
+ image = this.image;
+
+
+ if (this.loaded) {
+ if (this.isImg && this.replaced) {
+ element.src = this.originalUrl;
+ }
+
+ this.unbuild();
+ removeClass(element, CLASS_HIDDEN);
+ } else if (this.isImg) {
+ removeListener(element, EVENT_LOAD, this.onStart);
+ } else if (image) {
+ image.parentNode.removeChild(image);
+ }
+
+ removeData(element, NAMESPACE);
+
+ return this;
+ },
+
+
+ /**
+ * Move the canvas with relative offsets
+ * @param {number} offsetX - The relative offset distance on the x-axis.
+ * @param {number} offsetY - The relative offset distance on the y-axis.
+ * @returns {Object} this
+ */
+ move: function move(offsetX, offsetY) {
+ var _canvasData = this.canvasData,
+ left = _canvasData.left,
+ top = _canvasData.top;
+
+
+ return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));
+ },
+
+
+ /**
+ * Move the canvas to an absolute point
+ * @param {number} x - The x-axis coordinate.
+ * @param {number} [y=x] - The y-axis coordinate.
+ * @returns {Object} this
+ */
+ moveTo: function moveTo(x) {
+ var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;
+ var canvasData = this.canvasData;
+
+ var changed = false;
+
+ x = Number(x);
+ y = Number(y);
+
+ if (this.ready && !this.disabled && this.options.movable) {
+ if (isNumber(x)) {
+ canvasData.left = x;
+ changed = true;
+ }
+
+ if (isNumber(y)) {
+ canvasData.top = y;
+ changed = true;
+ }
+
+ if (changed) {
+ this.renderCanvas(true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Zoom the canvas with a relative ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoom: function zoom(ratio, _originalEvent) {
+ var canvasData = this.canvasData;
+
+
+ ratio = Number(ratio);
+
+ if (ratio < 0) {
+ ratio = 1 / (1 - ratio);
+ } else {
+ ratio = 1 + ratio;
+ }
+
+ return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);
+ },
+
+
+ /**
+ * Zoom the canvas to an absolute ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Object} pivot - The zoom pivot point coordinate.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoomTo: function zoomTo(ratio, pivot, _originalEvent) {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var width = canvasData.width,
+ height = canvasData.height,
+ naturalWidth = canvasData.naturalWidth,
+ naturalHeight = canvasData.naturalHeight;
+
+
+ ratio = Number(ratio);
+
+ if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {
+ var newWidth = naturalWidth * ratio;
+ var newHeight = naturalHeight * ratio;
+
+ if (dispatchEvent(this.element, EVENT_ZOOM, {
+ originalEvent: _originalEvent,
+ oldRatio: width / naturalWidth,
+ ratio: newWidth / naturalWidth
+ }) === false) {
+ return this;
+ }
+
+ if (_originalEvent) {
+ var pointers = this.pointers;
+
+ var offset = getOffset(this.cropper);
+ var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {
+ pageX: _originalEvent.pageX,
+ pageY: _originalEvent.pageY
+ };
+
+ // Zoom from the triggering point of the event
+ canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);
+ } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {
+ canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);
+ } else {
+ // Zoom from the center of the canvas
+ canvasData.left -= (newWidth - width) / 2;
+ canvasData.top -= (newHeight - height) / 2;
+ }
+
+ canvasData.width = newWidth;
+ canvasData.height = newHeight;
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Rotate the canvas with a relative degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotate: function rotate(degree) {
+ return this.rotateTo((this.imageData.rotate || 0) + Number(degree));
+ },
+
+
+ /**
+ * Rotate the canvas to an absolute degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotateTo: function rotateTo(degree) {
+ degree = Number(degree);
+
+ if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {
+ this.imageData.rotate = degree % 360;
+ this.renderCanvas(true, true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Scale the image on the x-axis.
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @returns {Object} this
+ */
+ scaleX: function scaleX(_scaleX) {
+ var scaleY = this.imageData.scaleY;
+
+
+ return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);
+ },
+
+
+ /**
+ * Scale the image on the y-axis.
+ * @param {number} scaleY - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scaleY: function scaleY(_scaleY) {
+ var scaleX = this.imageData.scaleX;
+
+
+ return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);
+ },
+
+
+ /**
+ * Scale the image
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scale: function scale(scaleX) {
+ var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
+ var imageData = this.imageData;
+
+ var transformed = false;
+
+ scaleX = Number(scaleX);
+ scaleY = Number(scaleY);
+
+ if (this.ready && !this.disabled && this.options.scalable) {
+ if (isNumber(scaleX)) {
+ imageData.scaleX = scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(scaleY)) {
+ imageData.scaleY = scaleY;
+ transformed = true;
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the cropped area position and size data (base on the original image)
+ * @param {boolean} [rounded=false] - Indicate if round the data values or not.
+ * @returns {Object} The result cropped data.
+ */
+ getData: function getData$$1() {
+ var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ x: cropBoxData.left - canvasData.left,
+ y: cropBoxData.top - canvasData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ each(data, function (n, i) {
+ n /= ratio;
+ data[i] = rounded ? Math.round(n) : n;
+ });
+ } else {
+ data = {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ };
+ }
+
+ if (options.rotatable) {
+ data.rotate = imageData.rotate || 0;
+ }
+
+ if (options.scalable) {
+ data.scaleX = imageData.scaleX || 1;
+ data.scaleY = imageData.scaleY || 1;
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the cropped area position and size with new data
+ * @param {Object} data - The new data.
+ * @returns {Object} this
+ */
+ setData: function setData$$1(data) {
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData;
+
+ var cropBoxData = {};
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ var transformed = false;
+
+ if (options.rotatable) {
+ if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {
+ imageData.rotate = data.rotate;
+ transformed = true;
+ }
+ }
+
+ if (options.scalable) {
+ if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {
+ imageData.scaleX = data.scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {
+ imageData.scaleY = data.scaleY;
+ transformed = true;
+ }
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ if (isNumber(data.x)) {
+ cropBoxData.left = data.x * ratio + canvasData.left;
+ }
+
+ if (isNumber(data.y)) {
+ cropBoxData.top = data.y * ratio + canvasData.top;
+ }
+
+ if (isNumber(data.width)) {
+ cropBoxData.width = data.width * ratio;
+ }
+
+ if (isNumber(data.height)) {
+ cropBoxData.height = data.height * ratio;
+ }
+
+ this.setCropBoxData(cropBoxData);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the container size data.
+ * @returns {Object} The result container data.
+ */
+ getContainerData: function getContainerData() {
+ return this.ready ? extend({}, this.containerData) : {};
+ },
+
+
+ /**
+ * Get the image position and size data.
+ * @returns {Object} The result image data.
+ */
+ getImageData: function getImageData() {
+ return this.loaded ? extend({}, this.imageData) : {};
+ },
+
+
+ /**
+ * Get the canvas position and size data.
+ * @returns {Object} The result canvas data.
+ */
+ getCanvasData: function getCanvasData() {
+ var canvasData = this.canvasData;
+
+ var data = {};
+
+ if (this.ready) {
+ each(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {
+ data[n] = canvasData[n];
+ });
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the canvas position and size with new data.
+ * @param {Object} data - The new canvas data.
+ * @returns {Object} this
+ */
+ setCanvasData: function setCanvasData(data) {
+ var canvasData = this.canvasData;
+ var aspectRatio = canvasData.aspectRatio;
+
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ canvasData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ canvasData.top = data.top;
+ }
+
+ if (isNumber(data.width)) {
+ canvasData.width = data.width;
+ canvasData.height = data.width / aspectRatio;
+ } else if (isNumber(data.height)) {
+ canvasData.height = data.height;
+ canvasData.width = data.height * aspectRatio;
+ }
+
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the crop box position and size data.
+ * @returns {Object} The result crop box data.
+ */
+ getCropBoxData: function getCropBoxData() {
+ var cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ left: cropBoxData.left,
+ top: cropBoxData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+ }
+
+ return data || {};
+ },
+
+
+ /**
+ * Set the crop box position and size with new data.
+ * @param {Object} data - The new crop box data.
+ * @returns {Object} this
+ */
+ setCropBoxData: function setCropBoxData(data) {
+ var cropBoxData = this.cropBoxData;
+ var aspectRatio = this.options.aspectRatio;
+
+ var widthChanged = void 0;
+ var heightChanged = void 0;
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ cropBoxData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ cropBoxData.top = data.top;
+ }
+
+ if (isNumber(data.width) && data.width !== cropBoxData.width) {
+ widthChanged = true;
+ cropBoxData.width = data.width;
+ }
+
+ if (isNumber(data.height) && data.height !== cropBoxData.height) {
+ heightChanged = true;
+ cropBoxData.height = data.height;
+ }
+
+ if (aspectRatio) {
+ if (widthChanged) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else if (heightChanged) {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.renderCropBox();
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get a canvas drawn the cropped image.
+ * @param {Object} [options={}] - The config options.
+ * @returns {HTMLCanvasElement} - The result canvas.
+ */
+ getCroppedCanvas: function getCroppedCanvas() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+ if (!this.ready || !window.HTMLCanvasElement) {
+ return null;
+ }
+
+ var canvasData = this.canvasData;
+
+ var source = getSourceCanvas(this.image, this.imageData, canvasData, options);
+
+ // Returns the source canvas if it is not cropped.
+ if (!this.cropped) {
+ return source;
+ }
+
+ var _getData = this.getData(),
+ x = _getData.x,
+ y = _getData.y,
+ initialWidth = _getData.width,
+ initialHeight = _getData.height;
+
+ var aspectRatio = initialWidth / initialHeight;
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.maxWidth || Infinity,
+ height: options.maxHeight || Infinity
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.minWidth || 0,
+ height: options.minHeight || 0
+ });
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.width || initialWidth,
+ height: options.height || initialHeight
+ }),
+ width = _getContainSizes.width,
+ height = _getContainSizes.height;
+
+ width = Math.min(maxSizes.width, Math.max(minSizes.width, width));
+ height = Math.min(maxSizes.height, Math.max(minSizes.height, height));
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+
+ context.fillStyle = options.fillColor || 'transparent';
+ context.fillRect(0, 0, width, height);
+
+ var _options$imageSmoothi = options.imageSmoothingEnabled,
+ imageSmoothingEnabled = _options$imageSmoothi === undefined ? true : _options$imageSmoothi,
+ imageSmoothingQuality = options.imageSmoothingQuality;
+
+
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+
+ if (imageSmoothingQuality) {
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage
+ var sourceWidth = source.width;
+ var sourceHeight = source.height;
+
+ // Source canvas parameters
+ var srcX = x;
+ var srcY = y;
+ var srcWidth = void 0;
+ var srcHeight = void 0;
+
+ // Destination canvas parameters
+ var dstX = void 0;
+ var dstY = void 0;
+ var dstWidth = void 0;
+ var dstHeight = void 0;
+
+ if (srcX <= -initialWidth || srcX > sourceWidth) {
+ srcX = 0;
+ srcWidth = 0;
+ dstX = 0;
+ dstWidth = 0;
+ } else if (srcX <= 0) {
+ dstX = -srcX;
+ srcX = 0;
+ srcWidth = Math.min(sourceWidth, initialWidth + srcX);
+ dstWidth = srcWidth;
+ } else if (srcX <= sourceWidth) {
+ dstX = 0;
+ srcWidth = Math.min(initialWidth, sourceWidth - srcX);
+ dstWidth = srcWidth;
+ }
+
+ if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {
+ srcY = 0;
+ srcHeight = 0;
+ dstY = 0;
+ dstHeight = 0;
+ } else if (srcY <= 0) {
+ dstY = -srcY;
+ srcY = 0;
+ srcHeight = Math.min(sourceHeight, initialHeight + srcY);
+ dstHeight = srcHeight;
+ } else if (srcY <= sourceHeight) {
+ dstY = 0;
+ srcHeight = Math.min(initialHeight, sourceHeight - srcY);
+ dstHeight = srcHeight;
+ }
+
+ // All the numerical parameters should be integer for `drawImage`
+ // https://github.com/fengyuanchen/cropper/issues/476
+ var params = [srcX, srcY, srcWidth, srcHeight];
+
+ // Avoid "IndexSizeError"
+ if (dstWidth > 0 && dstHeight > 0) {
+ var scale = width / initialWidth;
+
+ params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);
+ }
+
+ context.drawImage.apply(context, [source].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+
+ return canvas;
+ },
+
+
+ /**
+ * Change the aspect ratio of the crop box.
+ * @param {number} aspectRatio - The new aspect ratio.
+ * @returns {Object} this
+ */
+ setAspectRatio: function setAspectRatio(aspectRatio) {
+ var options = this.options;
+
+
+ if (!this.disabled && !isUndefined(aspectRatio)) {
+ // 0 -> NaN
+ options.aspectRatio = Math.max(0, aspectRatio) || NaN;
+
+ if (this.ready) {
+ this.initCropBox();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Change the drag mode.
+ * @param {string} mode - The new drag mode.
+ * @returns {Object} this
+ */
+ setDragMode: function setDragMode(mode) {
+ var options = this.options,
+ dragBox = this.dragBox,
+ face = this.face;
+
+
+ if (this.loaded && !this.disabled) {
+ var croppable = mode === DRAG_MODE_CROP;
+ var movable = options.movable && mode === DRAG_MODE_MOVE;
+
+ mode = croppable || movable ? mode : DRAG_MODE_NONE;
+
+ setData(dragBox, DATA_ACTION, mode);
+ toggleClass(dragBox, CLASS_CROP, croppable);
+ toggleClass(dragBox, CLASS_MOVE, movable);
+
+ if (!options.cropBoxMovable) {
+ // Sync drag mode to crop box when it is not movable
+ setData(face, DATA_ACTION, mode);
+ toggleClass(face, CLASS_CROP, croppable);
+ toggleClass(face, CLASS_MOVE, movable);
+ }
+ }
+
+ return this;
+ }
+};
+
+var AnotherCropper = WINDOW.Cropper;
+
+var Cropper = function () {
+ /**
+ * Create a new Cropper.
+ * @param {Element} element - The target element for cropping.
+ * @param {Object} [options={}] - The configuration options.
+ */
+ function Cropper(element) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ classCallCheck(this, Cropper);
+
+ if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {
+ throw new Error('The first argument is required and must be an <img> or <canvas> element.');
+ }
+
+ this.element = element;
+ this.options = extend({}, DEFAULTS, isPlainObject(options) && options);
+ this.complete = false;
+ this.cropped = false;
+ this.disabled = false;
+ this.isImg = false;
+ this.limited = false;
+ this.loaded = false;
+ this.ready = false;
+ this.replaced = false;
+ this.wheeling = false;
+ this.originalUrl = '';
+ this.canvasData = null;
+ this.cropBoxData = null;
+ this.previews = null;
+ this.pointers = {};
+ this.init();
+ }
+
+ createClass(Cropper, [{
+ key: 'init',
+ value: function init() {
+ var element = this.element;
+
+ var tagName = element.tagName.toLowerCase();
+ var url = void 0;
+
+ if (getData(element, NAMESPACE)) {
+ return;
+ }
+
+ setData(element, NAMESPACE, this);
+
+ if (tagName === 'img') {
+ this.isImg = true;
+
+ // e.g.: "img/picture.jpg"
+ url = element.getAttribute('src') || '';
+ this.originalUrl = url;
+
+ // Stop when it's a blank image
+ if (!url) {
+ return;
+ }
+
+ // e.g.: "http://example.com/img/picture.jpg"
+ url = element.src;
+ } else if (tagName === 'canvas' && window.HTMLCanvasElement) {
+ url = element.toDataURL();
+ }
+
+ this.load(url);
+ }
+ }, {
+ key: 'load',
+ value: function load(url) {
+ var _this = this;
+
+ if (!url) {
+ return;
+ }
+
+ this.url = url;
+ this.imageData = {};
+
+ var element = this.element,
+ options = this.options;
+
+
+ if (!options.checkOrientation || !window.ArrayBuffer) {
+ this.clone();
+ return;
+ }
+
+ // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari
+ if (REGEXP_DATA_URL.test(url)) {
+ if (REGEXP_DATA_URL_JPEG.test(url)) {
+ this.read(dataURLToArrayBuffer(url));
+ } else {
+ this.clone();
+ }
+
+ return;
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ xhr.onerror = function () {
+ _this.clone();
+ };
+
+ xhr.onload = function () {
+ _this.read(xhr.response);
+ };
+
+ if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {
+ url = addTimestamp(url);
+ }
+
+ xhr.open('get', url);
+ xhr.responseType = 'arraybuffer';
+ xhr.withCredentials = element.crossOrigin === 'use-credentials';
+ xhr.send();
+ }
+ }, {
+ key: 'read',
+ value: function read(arrayBuffer) {
+ var options = this.options,
+ imageData = this.imageData;
+
+ var orientation = getOrientation(arrayBuffer);
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ if (orientation > 1) {
+ this.url = arrayBufferToDataURL(arrayBuffer, 'image/jpeg');
+
+ var _parseOrientation = parseOrientation(orientation);
+
+ rotate = _parseOrientation.rotate;
+ scaleX = _parseOrientation.scaleX;
+ scaleY = _parseOrientation.scaleY;
+ }
+
+ if (options.rotatable) {
+ imageData.rotate = rotate;
+ }
+
+ if (options.scalable) {
+ imageData.scaleX = scaleX;
+ imageData.scaleY = scaleY;
+ }
+
+ this.clone();
+ }
+ }, {
+ key: 'clone',
+ value: function clone() {
+ var element = this.element,
+ url = this.url;
+
+ var crossOrigin = void 0;
+ var crossOriginUrl = void 0;
+
+ if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {
+ crossOrigin = element.crossOrigin;
+
+
+ if (crossOrigin) {
+ crossOriginUrl = url;
+ } else {
+ crossOrigin = 'anonymous';
+
+ // Bust cache when there is not a "crossOrigin" property
+ crossOriginUrl = addTimestamp(url);
+ }
+ }
+
+ this.crossOrigin = crossOrigin;
+ this.crossOriginUrl = crossOriginUrl;
+
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = crossOriginUrl || url;
+
+ var start = proxy(this.start, this);
+ var stop = proxy(this.stop, this);
+
+ this.image = image;
+ this.onStart = start;
+ this.onStop = stop;
+
+ if (this.isImg) {
+ if (element.complete) {
+ this.start();
+ } else {
+ addListener(element, EVENT_LOAD, start);
+ }
+ } else {
+ addListener(image, EVENT_LOAD, start);
+ addListener(image, EVENT_ERROR, stop);
+ addClass(image, CLASS_HIDE);
+ element.parentNode.insertBefore(image, element.nextSibling);
+ }
+ }
+ }, {
+ key: 'start',
+ value: function start(event) {
+ var _this2 = this;
+
+ var image = this.isImg ? this.element : this.image;
+
+ if (event) {
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ }
+
+ getImageNaturalSizes(image, function (naturalWidth, naturalHeight) {
+ extend(_this2.imageData, {
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ aspectRatio: naturalWidth / naturalHeight
+ });
+ _this2.loaded = true;
+ _this2.build();
+ });
+ }
+ }, {
+ key: 'stop',
+ value: function stop() {
+ var image = this.image;
+
+
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ image.parentNode.removeChild(image);
+ this.image = null;
+ }
+ }, {
+ key: 'build',
+ value: function build() {
+ var _this3 = this;
+
+ if (!this.loaded) {
+ return;
+ }
+
+ // Unbuild first when replace
+ if (this.ready) {
+ this.unbuild();
+ }
+
+ var element = this.element,
+ options = this.options,
+ image = this.image;
+
+ // Create cropper elements
+
+ var container = element.parentNode;
+ var template = document.createElement('div');
+
+ template.innerHTML = TEMPLATE;
+
+ var cropper = template.querySelector('.' + NAMESPACE + '-container');
+ var canvas = cropper.querySelector('.' + NAMESPACE + '-canvas');
+ var dragBox = cropper.querySelector('.' + NAMESPACE + '-drag-box');
+ var cropBox = cropper.querySelector('.' + NAMESPACE + '-crop-box');
+ var face = cropBox.querySelector('.' + NAMESPACE + '-face');
+
+ this.container = container;
+ this.cropper = cropper;
+ this.canvas = canvas;
+ this.dragBox = dragBox;
+ this.cropBox = cropBox;
+ this.viewBox = cropper.querySelector('.' + NAMESPACE + '-view-box');
+ this.face = face;
+
+ canvas.appendChild(image);
+
+ // Hide the original image
+ addClass(element, CLASS_HIDDEN);
+
+ // Inserts the cropper after to the current image
+ container.insertBefore(cropper, element.nextSibling);
+
+ // Show the image if is hidden
+ if (!this.isImg) {
+ removeClass(image, CLASS_HIDE);
+ }
+
+ this.initPreview();
+ this.bind();
+
+ options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;
+ options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;
+
+ this.cropped = options.autoCrop;
+
+ if (options.autoCrop) {
+ if (options.modal) {
+ addClass(dragBox, CLASS_MODAL);
+ }
+ } else {
+ addClass(cropBox, CLASS_HIDDEN);
+ }
+
+ if (!options.guides) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-dashed'), CLASS_HIDDEN);
+ }
+
+ if (!options.center) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-center'), CLASS_HIDDEN);
+ }
+
+ if (options.background) {
+ addClass(cropper, NAMESPACE + '-bg');
+ }
+
+ if (!options.highlight) {
+ addClass(face, CLASS_INVISIBLE);
+ }
+
+ if (options.cropBoxMovable) {
+ addClass(face, CLASS_MOVE);
+ setData(face, DATA_ACTION, ACTION_ALL);
+ }
+
+ if (!options.cropBoxResizable) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-line'), CLASS_HIDDEN);
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-point'), CLASS_HIDDEN);
+ }
+
+ this.setDragMode(options.dragMode);
+ this.render();
+ this.ready = true;
+ this.setData(options.data);
+
+ // Call the "ready" option asynchronously to keep "image.cropper" is defined
+ this.completing = setTimeout(function () {
+ if (isFunction(options.ready)) {
+ addListener(element, EVENT_READY, options.ready, {
+ once: true
+ });
+ }
+
+ dispatchEvent(element, EVENT_READY);
+ dispatchEvent(element, EVENT_CROP, _this3.getData());
+
+ _this3.complete = true;
+ }, 0);
+ }
+ }, {
+ key: 'unbuild',
+ value: function unbuild() {
+ if (!this.ready) {
+ return;
+ }
+
+ if (!this.complete) {
+ clearTimeout(this.completing);
+ }
+
+ this.ready = false;
+ this.complete = false;
+ this.initialImageData = null;
+
+ // Clear `initialCanvasData` is necessary when replace
+ this.initialCanvasData = null;
+ this.initialCropBoxData = null;
+ this.containerData = null;
+ this.canvasData = null;
+
+ // Clear `cropBoxData` is necessary when replace
+ this.cropBoxData = null;
+ this.unbind();
+ this.resetPreview();
+ this.previews = null;
+ this.viewBox = null;
+ this.cropBox = null;
+ this.dragBox = null;
+ this.canvas = null;
+ this.container = null;
+ this.cropper.parentNode.removeChild(this.cropper);
+ this.cropper = null;
+ }
+
+ /**
+ * Get the no conflict cropper class.
+ * @returns {Cropper} The cropper class.
+ */
+
+ }], [{
+ key: 'noConflict',
+ value: function noConflict() {
+ window.Cropper = AnotherCropper;
+ return Cropper;
+ }
+
+ /**
+ * Change the default options.
+ * @param {Object} options - The new default options.
+ */
+
+ }, {
+ key: 'setDefaults',
+ value: function setDefaults(options) {
+ extend(DEFAULTS, isPlainObject(options) && options);
+ }
+ }]);
+ return Cropper;
+}();
+
+extend(Cropper.prototype, render, preview, events, handlers, change, methods);
+
+return Cropper;
+
+})));
diff --git a/library/cropperjs/dist/cropper.min.css b/library/cropperjs/dist/cropper.min.css
new file mode 100644
index 000000000..89148848a
--- /dev/null
+++ b/library/cropperjs/dist/cropper.min.css
@@ -0,0 +1,9 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:26:29.610Z
+ */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline-color:rgba(51,153,255,.75);outline:1px solid #39f;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file
diff --git a/library/cropperjs/dist/cropper.min.js b/library/cropperjs/dist/cropper.min.js
new file mode 100644
index 000000000..e213c6c41
--- /dev/null
+++ b/library/cropperjs/dist/cropper.min.js
@@ -0,0 +1,10 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:27:18.062Z
+ */
+!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):t.Cropper=i()}(this,function(){"use strict";var t="undefined"!=typeof window?window:{},i="cropper",e=i+"-crop",a=i+"-disabled",n=i+"-hidden",o=i+"-hide",h=i+"-modal",r=i+"-move",s="action",c="preview",l="crop",d="cropend",p="cropmove",m="cropstart",u="load",g=t.PointerEvent?"pointerdown":"touchstart mousedown",f=t.PointerEvent?"pointermove":"touchmove mousemove",v=t.PointerEvent?"pointerup pointercancel":"touchend touchcancel mouseup",w="wheel mousewheel DOMMouseScroll",x=/^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/,b=/^data:/,y=/^data:image\/jpeg;base64,/,C=/^(img|canvas)$/i,M={viewMode:0,dragMode:"crop",aspectRatio:NaN,data:null,preview:"",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},D="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B=function(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")},k=function(){function t(t,i){for(var e=0;e<i.length;e++){var a=i[e];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(i,e,a){return e&&t(i.prototype,e),a&&t(i,a),i}}(),E=function(t){if(Array.isArray(t)){for(var i=0,e=Array(t.length);i<t.length;i++)e[i]=t[i];return e}return Array.from(t)},T=Number.isNaN||t.isNaN;function W(t){return"number"==typeof t&&!T(t)}function N(t){return void 0===t}function H(t){return"object"===(void 0===t?"undefined":D(t))&&null!==t}var L=Object.prototype.hasOwnProperty;function Y(t){if(!H(t))return!1;try{var i=t.constructor,e=i.prototype;return i&&e&&L.call(e,"isPrototypeOf")}catch(t){return!1}}function X(t){return"function"==typeof t}function O(t,i){if(t&&X(i))if(Array.isArray(t)||W(t.length)){var e=t.length,a=void 0;for(a=0;a<e&&!1!==i.call(t,t[a],a,t);a+=1);}else H(t)&&Object.keys(t).forEach(function(e){i.call(t,t[e],e,t)});return t}function S(t){for(var i=arguments.length,e=Array(i>1?i-1:0),a=1;a<i;a++)e[a-1]=arguments[a];if(H(t)&&e.length>0){if(Object.assign)return Object.assign.apply(Object,[t].concat(e));e.forEach(function(i){H(i)&&Object.keys(i).forEach(function(e){t[e]=i[e]})})}return t}function z(t,i){for(var e=arguments.length,a=Array(e>2?e-2:0),n=2;n<e;n++)a[n-2]=arguments[n];return function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];return t.apply(i,a.concat(n))}}var R=/\.\d*(?:0|9){12}\d*$/i;function A(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return R.test(t)?Math.round(t*i)/i:t}var I=/^(width|height|left|top|marginLeft|marginTop)$/;function U(t,i){var e=t.style;O(i,function(t,i){I.test(i)&&W(t)&&(t+="px"),e[i]=t})}function j(t,i){if(i)if(W(t.length))O(t,function(t){j(t,i)});else if(t.classList)t.classList.add(i);else{var e=t.className.trim();e?e.indexOf(i)<0&&(t.className=e+" "+i):t.className=i}}function P(t,i){i&&(W(t.length)?O(t,function(t){P(t,i)}):t.classList?t.classList.remove(i):t.className.indexOf(i)>=0&&(t.className=t.className.replace(i,"")))}function q(t,i,e){i&&(W(t.length)?O(t,function(t){q(t,i,e)}):e?j(t,i):P(t,i))}var $=/([a-z\d])([A-Z])/g;function Q(t){return t.replace($,"$1-$2").toLowerCase()}function Z(t,i){return H(t[i])?t[i]:t.dataset?t.dataset[i]:t.getAttribute("data-"+Q(i))}function F(t,i,e){H(e)?t[i]=e:t.dataset?t.dataset[i]=e:t.setAttribute("data-"+Q(i),e)}function K(t,i){if(H(t[i]))try{delete t[i]}catch(e){t[i]=null}else if(t.dataset)try{delete t.dataset[i]}catch(e){t.dataset[i]=null}else t.removeAttribute("data-"+Q(i))}var V=/\s+/;function G(t,i,e){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(X(e)){var n=i.trim().split(V);n.length>1?O(n,function(i){G(t,i,e,a)}):t.removeEventListener?t.removeEventListener(i,e,a):t.detachEvent&&t.detachEvent("on"+i,e)}}function J(t,i,e){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(X(e)){var n=i.trim().split(V);if(n.length>1)O(n,function(i){J(t,i,e,a)});else{if(a.once){var o=e;e=function(){for(var n=arguments.length,h=Array(n),r=0;r<n;r++)h[r]=arguments[r];return G(t,i,e,a),o.apply(t,h)}}t.addEventListener?t.addEventListener(i,e,a):t.attachEvent&&t.attachEvent("on"+i,e)}}}function _(t,i,e){if(t.dispatchEvent){var a=void 0;return X(Event)&&X(CustomEvent)?a=N(e)?new Event(i,{bubbles:!0,cancelable:!0}):new CustomEvent(i,{detail:e,bubbles:!0,cancelable:!0}):N(e)?(a=document.createEvent("Event")).initEvent(i,!0,!0):(a=document.createEvent("CustomEvent")).initCustomEvent(i,!0,!0,e),t.dispatchEvent(a)}return!t.fireEvent||t.fireEvent("on"+i)}function tt(t){var i=document.documentElement,e=t.getBoundingClientRect();return{left:e.left+((window.scrollX||i&&i.scrollLeft||0)-(i&&i.clientLeft||0)),top:e.top+((window.scrollY||i&&i.scrollTop||0)-(i&&i.clientTop||0))}}var it=t.location,et=/^(https?:)\/\/([^:/?#]+):?(\d*)/i;function at(t){var i=t.match(et);return i&&(i[1]!==it.protocol||i[2]!==it.hostname||i[3]!==it.port)}function nt(t){var i="timestamp="+(new Date).getTime();return t+(-1===t.indexOf("?")?"?":"&")+i}function ot(t){var i=t.rotate,e=t.scaleX,a=t.scaleY,n=t.translateX,o=t.translateY,h=[];W(n)&&0!==n&&h.push("translateX("+n+"px)"),W(o)&&0!==o&&h.push("translateY("+o+"px)"),W(i)&&0!==i&&h.push("rotate("+i+"deg)"),W(e)&&1!==e&&h.push("scaleX("+e+")"),W(a)&&1!==a&&h.push("scaleY("+a+")");var r=h.length?h.join(" "):"none";return{WebkitTransform:r,msTransform:r,transform:r}}var ht=t.navigator,rt=ht&&/(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(ht.userAgent);function st(t,i){var e=t.pageX,a=t.pageY,n={endX:e,endY:a};return i?n:S({startX:e,startY:a},n)}var ct=Number.isFinite||t.isFinite;function lt(t){var i=t.aspectRatio,e=t.height,a=t.width,n=function(t){return ct(t)&&t>0};return n(a)&&n(e)?e*i>a?e=a/i:a=e*i:n(a)?e=a/i:n(e)&&(a=e*i),{width:a,height:e}}var dt=String.fromCharCode;var pt=/^data:.*,/;function mt(t){var i=new DataView(t),e=void 0,a=void 0,n=void 0,o=void 0;if(255===i.getUint8(0)&&216===i.getUint8(1))for(var h=i.byteLength,r=2;r<h;){if(255===i.getUint8(r)&&225===i.getUint8(r+1)){n=r;break}r+=1}if(n){var s=n+10;if("Exif"===function(t,i,e){var a="",n=void 0;for(e+=i,n=i;n<e;n+=1)a+=dt(t.getUint8(n));return a}(i,n+4,4)){var c=i.getUint16(s);if(((a=18761===c)||19789===c)&&42===i.getUint16(s+2,a)){var l=i.getUint32(s+4,a);l>=8&&(o=s+l)}}}if(o){var d=i.getUint16(o,a),p=void 0,m=void 0;for(m=0;m<d;m+=1)if(p=o+12*m+2,274===i.getUint16(p,a)){p+=8,e=i.getUint16(p,a),i.setUint16(p,1,a);break}}return e}var ut={render:function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},initContainer:function(){var t=this.element,i=this.options,e=this.container,a=this.cropper;j(a,n),P(t,n);var o={width:Math.max(e.offsetWidth,Number(i.minContainerWidth)||200),height:Math.max(e.offsetHeight,Number(i.minContainerHeight)||100)};this.containerData=o,U(a,{width:o.width,height:o.height}),j(t,n),P(a,n)},initCanvas:function(){var t=this.containerData,i=this.imageData,e=this.options.viewMode,a=Math.abs(i.rotate)%180==90,n=a?i.naturalHeight:i.naturalWidth,o=a?i.naturalWidth:i.naturalHeight,h=n/o,r=t.width,s=t.height;t.height*h>t.width?3===e?r=t.height*h:s=t.width/h:3===e?s=t.width/h:r=t.height*h;var c={aspectRatio:h,naturalWidth:n,naturalHeight:o,width:r,height:s};c.left=(t.width-r)/2,c.top=(t.height-s)/2,c.oldLeft=c.left,c.oldTop=c.top,this.canvasData=c,this.limited=1===e||2===e,this.limitCanvas(!0,!0),this.initialImageData=S({},i),this.initialCanvasData=S({},c)},limitCanvas:function(t,i){var e=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,h=e.viewMode,r=n.aspectRatio,s=this.cropped&&o;if(t){var c=Number(e.minCanvasWidth)||0,l=Number(e.minCanvasHeight)||0;h>1?(c=Math.max(c,a.width),l=Math.max(l,a.height),3===h&&(l*r>c?c=l*r:l=c/r)):h>0&&(c?c=Math.max(c,s?o.width:0):l?l=Math.max(l,s?o.height:0):s&&(c=o.width,(l=o.height)*r>c?c=l*r:l=c/r));var d=lt({aspectRatio:r,width:c,height:l});c=d.width,l=d.height,n.minWidth=c,n.minHeight=l,n.maxWidth=1/0,n.maxHeight=1/0}if(i)if(h){var p=a.width-n.width,m=a.height-n.height;n.minLeft=Math.min(0,p),n.minTop=Math.min(0,m),n.maxLeft=Math.max(0,p),n.maxTop=Math.max(0,m),s&&this.limited&&(n.minLeft=Math.min(o.left,o.left+(o.width-n.width)),n.minTop=Math.min(o.top,o.top+(o.height-n.height)),n.maxLeft=o.left,n.maxTop=o.top,2===h&&(n.width>=a.width&&(n.minLeft=Math.min(0,p),n.maxLeft=Math.max(0,p)),n.height>=a.height&&(n.minTop=Math.min(0,m),n.maxTop=Math.max(0,m))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,i){var e=this.canvasData,a=this.imageData;if(i){var n=function(t){var i=t.width,e=t.height,a=t.degree;if(90==(a=Math.abs(a)%180))return{width:e,height:i};var n=a%90*Math.PI/180,o=Math.sin(n),h=Math.cos(n),r=i*h+e*o,s=i*o+e*h;return a>90?{width:s,height:r}:{width:r,height:s}}({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),o=n.width,h=n.height,r=e.width*(o/e.naturalWidth),s=e.height*(h/e.naturalHeight);e.left-=(r-e.width)/2,e.top-=(s-e.height)/2,e.width=r,e.height=s,e.aspectRatio=o/h,e.naturalWidth=o,e.naturalHeight=h,this.limitCanvas(!0,!1)}(e.width>e.maxWidth||e.width<e.minWidth)&&(e.left=e.oldLeft),(e.height>e.maxHeight||e.height<e.minHeight)&&(e.top=e.oldTop),e.width=Math.min(Math.max(e.width,e.minWidth),e.maxWidth),e.height=Math.min(Math.max(e.height,e.minHeight),e.maxHeight),this.limitCanvas(!1,!0),e.left=Math.min(Math.max(e.left,e.minLeft),e.maxLeft),e.top=Math.min(Math.max(e.top,e.minTop),e.maxTop),e.oldLeft=e.left,e.oldTop=e.top,U(this.canvas,S({width:e.width,height:e.height},ot({translateX:e.left,translateY:e.top}))),this.renderImage(t),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},renderImage:function(t){var i=this.canvasData,e=this.imageData,a=e.naturalWidth*(i.width/i.naturalWidth),n=e.naturalHeight*(i.height/i.naturalHeight);S(e,{width:a,height:n,left:(i.width-a)/2,top:(i.height-n)/2}),U(this.image,S({width:e.width,height:e.height},ot(S({translateX:e.left,translateY:e.top},e)))),t&&this.output()},initCropBox:function(){var t=this.options,i=this.canvasData,e=t.aspectRatio,a=Number(t.autoCropArea)||.8,n={width:i.width,height:i.height};e&&(i.height*e>i.width?n.height=n.width/e:n.width=n.height*e),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=i.left+(i.width-n.width)/2,n.top=i.top+(i.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=S({},n)},limitCropBox:function(t,i){var e=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,h=this.limited,r=e.aspectRatio;if(t){var s=Number(e.minCropBoxWidth)||0,c=Number(e.minCropBoxHeight)||0,l=Math.min(a.width,h?n.width:a.width),d=Math.min(a.height,h?n.height:a.height);s=Math.min(s,a.width),c=Math.min(c,a.height),r&&(s&&c?c*r>s?c=s/r:s=c*r:s?c=s/r:c&&(s=c*r),d*r>l?d=l/r:l=d*r),o.minWidth=Math.min(s,l),o.minHeight=Math.min(c,d),o.maxWidth=l,o.maxHeight=d}i&&(h?(o.minLeft=Math.max(0,n.left),o.minTop=Math.max(0,n.top),o.maxLeft=Math.min(a.width,n.left+n.width)-o.width,o.maxTop=Math.min(a.height,n.top+n.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=a.width-o.width,o.maxTop=a.height-o.height))},renderCropBox:function(){var t=this.options,i=this.containerData,e=this.cropBoxData;(e.width>e.maxWidth||e.width<e.minWidth)&&(e.left=e.oldLeft),(e.height>e.maxHeight||e.height<e.minHeight)&&(e.top=e.oldTop),e.width=Math.min(Math.max(e.width,e.minWidth),e.maxWidth),e.height=Math.min(Math.max(e.height,e.minHeight),e.maxHeight),this.limitCropBox(!1,!0),e.left=Math.min(Math.max(e.left,e.minLeft),e.maxLeft),e.top=Math.min(Math.max(e.top,e.minTop),e.maxTop),e.oldLeft=e.left,e.oldTop=e.top,t.movable&&t.cropBoxMovable&&F(this.face,s,e.width>=i.width&&e.height>=i.height?"move":"all"),U(this.cropBox,S({width:e.width,height:e.height},ot({translateX:e.left,translateY:e.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),this.complete&&_(this.element,l,this.getData())}},gt={initPreview:function(){var t=this.crossOrigin,i=this.options.preview,e=t?this.crossOriginUrl:this.url,a=document.createElement("img");if(t&&(a.crossOrigin=t),a.src=e,this.viewBox.appendChild(a),this.image2=a,i){var n=i.querySelector?[i]:document.querySelectorAll(i);this.previews=n,O(n,function(i){var a=document.createElement("img");F(i,c,{width:i.offsetWidth,height:i.offsetHeight,html:i.innerHTML}),t&&(a.crossOrigin=t),a.src=e,a.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}(i),i.appendChild(a)})}},resetPreview:function(){O(this.previews,function(t){var i=Z(t,c);U(t,{width:i.width,height:i.height}),t.innerHTML=i.html,K(t,c)})},preview:function(){var t=this.imageData,i=this.canvasData,e=this.cropBoxData,a=e.width,n=e.height,o=t.width,h=t.height,r=e.left-i.left-t.left,s=e.top-i.top-t.top;this.cropped&&!this.disabled&&(U(this.image2,S({width:o,height:h},ot(S({translateX:-r,translateY:-s},t)))),O(this.previews,function(i){var e=Z(i,c),l=e.width,d=e.height,p=l,m=d,u=1;a&&(m=n*(u=l/a)),n&&m>d&&(p=a*(u=d/n),m=d),U(i,{width:p,height:m}),U(i.getElementsByTagName("img")[0],S({width:o*u,height:h*u},ot(S({translateX:-r*u,translateY:-s*u},t))))}))}},ft={bind:function(){var t=this.element,i=this.options,e=this.cropper;X(i.cropstart)&&J(t,m,i.cropstart),X(i.cropmove)&&J(t,p,i.cropmove),X(i.cropend)&&J(t,d,i.cropend),X(i.crop)&&J(t,l,i.crop),X(i.zoom)&&J(t,"zoom",i.zoom),J(e,g,this.onCropStart=z(this.cropStart,this)),i.zoomable&&i.zoomOnWheel&&J(e,w,this.onWheel=z(this.wheel,this)),i.toggleDragModeOnDblclick&&J(e,"dblclick",this.onDblclick=z(this.dblclick,this)),J(t.ownerDocument,f,this.onCropMove=z(this.cropMove,this)),J(t.ownerDocument,v,this.onCropEnd=z(this.cropEnd,this)),i.responsive&&J(window,"resize",this.onResize=z(this.resize,this))},unbind:function(){var t=this.element,i=this.options,e=this.cropper;X(i.cropstart)&&G(t,m,i.cropstart),X(i.cropmove)&&G(t,p,i.cropmove),X(i.cropend)&&G(t,d,i.cropend),X(i.crop)&&G(t,l,i.crop),X(i.zoom)&&G(t,"zoom",i.zoom),G(e,g,this.onCropStart),i.zoomable&&i.zoomOnWheel&&G(e,w,this.onWheel),i.toggleDragModeOnDblclick&&G(e,"dblclick",this.onDblclick),G(t.ownerDocument,f,this.onCropMove),G(t.ownerDocument,v,this.onCropEnd),i.responsive&&G(window,"resize",this.onResize)}},vt={resize:function(){var t=this.options,i=this.container,e=this.containerData,a=Number(t.minContainerWidth)||200,n=Number(t.minContainerHeight)||100;if(!(this.disabled||e.width<=a||e.height<=n)){var o=i.offsetWidth/e.width;if(1!==o||i.offsetHeight!==e.height){var h=void 0,r=void 0;t.restore&&(h=this.getCanvasData(),r=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(O(h,function(t,i){h[i]=t*o})),this.setCropBoxData(O(r,function(t,i){r[i]=t*o})))}}},dblclick:function(){if(!this.disabled&&"none"!==this.options.dragMode){this.setDragMode((t=this.dragBox,i=e,(t.classList?t.classList.contains(i):t.className.indexOf(i)>-1)?"move":"crop"));var t,i}},wheel:function(t){var i=this,e=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout(function(){i.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*e,t)))},cropStart:function(t){if(!this.disabled){var i=this.options,e=this.pointers,a=void 0;t.changedTouches?O(t.changedTouches,function(t){e[t.identifier]=st(t)}):e[t.pointerId||0]=st(t),a=Object.keys(e).length>1&&i.zoomable&&i.zoomOnTouch?"zoom":Z(t.target,s),x.test(a)&&!1!==_(this.element,m,{originalEvent:t,action:a})&&(t.preventDefault(),this.action=a,this.cropping=!1,"crop"===a&&(this.cropping=!0,j(this.dragBox,h)))}},cropMove:function(t){var i=this.action;if(!this.disabled&&i){var e=this.pointers;t.preventDefault(),!1!==_(this.element,p,{originalEvent:t,action:i})&&(t.changedTouches?O(t.changedTouches,function(t){S(e[t.identifier],st(t,!0))}):S(e[t.pointerId||0],st(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var i=this.action,e=this.pointers;t.changedTouches?O(t.changedTouches,function(t){delete e[t.identifier]}):delete e[t.pointerId||0],i&&(t.preventDefault(),Object.keys(e).length||(this.action=""),this.cropping&&(this.cropping=!1,q(this.dragBox,h,this.cropped&&this.options.modal)),_(this.element,d,{originalEvent:t,action:i}))}}},wt={change:function(t){var i=this.options,e=this.canvasData,a=this.containerData,o=this.cropBoxData,h=this.pointers,r=this.action,s=i.aspectRatio,c=o.left,l=o.top,d=o.width,p=o.height,m=c+d,u=l+p,g=0,f=0,v=a.width,w=a.height,x=!0,b=void 0;!s&&t.shiftKey&&(s=d&&p?d/p:1),this.limited&&(g=o.minLeft,f=o.minTop,v=g+Math.min(a.width,e.width,e.left+e.width),w=f+Math.min(a.height,e.height,e.top+e.height));var y=h[Object.keys(h)[0]],C={x:y.endX-y.startX,y:y.endY-y.startY},M=function(t){switch(t){case"e":m+C.x>v&&(C.x=v-m);break;case"w":c+C.x<g&&(C.x=g-c);break;case"n":l+C.y<f&&(C.y=f-l);break;case"s":u+C.y>w&&(C.y=w-u)}};switch(r){case"all":c+=C.x,l+=C.y;break;case"e":if(C.x>=0&&(m>=v||s&&(l<=f||u>=w))){x=!1;break}M("e"),d+=C.x,s&&(p=d/s,l-=C.x/s/2),d<0&&(r="w",d=0);break;case"n":if(C.y<=0&&(l<=f||s&&(c<=g||m>=v))){x=!1;break}M("n"),p-=C.y,l+=C.y,s&&(d=p*s,c+=C.y*s/2),p<0&&(r="s",p=0);break;case"w":if(C.x<=0&&(c<=g||s&&(l<=f||u>=w))){x=!1;break}M("w"),d-=C.x,c+=C.x,s&&(p=d/s,l+=C.x/s/2),d<0&&(r="e",d=0);break;case"s":if(C.y>=0&&(u>=w||s&&(c<=g||m>=v))){x=!1;break}M("s"),p+=C.y,s&&(d=p*s,c-=C.y*s/2),p<0&&(r="n",p=0);break;case"ne":if(s){if(C.y<=0&&(l<=f||m>=v)){x=!1;break}M("n"),p-=C.y,l+=C.y,d=p*s}else M("n"),M("e"),C.x>=0?m<v?d+=C.x:C.y<=0&&l<=f&&(x=!1):d+=C.x,C.y<=0?l>f&&(p-=C.y,l+=C.y):(p-=C.y,l+=C.y);d<0&&p<0?(r="sw",p=0,d=0):d<0?(r="nw",d=0):p<0&&(r="se",p=0);break;case"nw":if(s){if(C.y<=0&&(l<=f||c<=g)){x=!1;break}M("n"),p-=C.y,l+=C.y,d=p*s,c+=C.y*s}else M("n"),M("w"),C.x<=0?c>g?(d-=C.x,c+=C.x):C.y<=0&&l<=f&&(x=!1):(d-=C.x,c+=C.x),C.y<=0?l>f&&(p-=C.y,l+=C.y):(p-=C.y,l+=C.y);d<0&&p<0?(r="se",p=0,d=0):d<0?(r="ne",d=0):p<0&&(r="sw",p=0);break;case"sw":if(s){if(C.x<=0&&(c<=g||u>=w)){x=!1;break}M("w"),d-=C.x,c+=C.x,p=d/s}else M("s"),M("w"),C.x<=0?c>g?(d-=C.x,c+=C.x):C.y>=0&&u>=w&&(x=!1):(d-=C.x,c+=C.x),C.y>=0?u<w&&(p+=C.y):p+=C.y;d<0&&p<0?(r="ne",p=0,d=0):d<0?(r="se",d=0):p<0&&(r="nw",p=0);break;case"se":if(s){if(C.x>=0&&(m>=v||u>=w)){x=!1;break}M("e"),p=(d+=C.x)/s}else M("s"),M("e"),C.x>=0?m<v?d+=C.x:C.y>=0&&u>=w&&(x=!1):d+=C.x,C.y>=0?u<w&&(p+=C.y):p+=C.y;d<0&&p<0?(r="nw",p=0,d=0):d<0?(r="sw",d=0):p<0&&(r="ne",p=0);break;case"move":this.move(C.x,C.y),x=!1;break;case"zoom":this.zoom(function(t){var i=S({},t),e=[];return O(t,function(t,a){delete i[a],O(i,function(i){var a=Math.abs(t.startX-i.startX),n=Math.abs(t.startY-i.startY),o=Math.abs(t.endX-i.endX),h=Math.abs(t.endY-i.endY),r=Math.sqrt(a*a+n*n),s=(Math.sqrt(o*o+h*h)-r)/r;e.push(s)})}),e.sort(function(t,i){return Math.abs(t)<Math.abs(i)}),e[0]}(h),t),x=!1;break;case"crop":if(!C.x||!C.y){x=!1;break}b=tt(this.cropper),c=y.startX-b.left,l=y.startY-b.top,d=o.minWidth,p=o.minHeight,C.x>0?r=C.y>0?"se":"ne":C.x<0&&(c-=d,r=C.y>0?"sw":"nw"),C.y<0&&(l-=p),this.cropped||(P(this.cropBox,n),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}x&&(o.width=d,o.height=p,o.left=c,o.top=l,this.action=r,this.renderCropBox()),O(h,function(t){t.startX=t.endX,t.startY=t.endY})}},xt={crop:function(){return this.ready&&!this.disabled&&(this.cropped||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&j(this.dragBox,h),P(this.cropBox,n)),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=S({},this.initialImageData),this.canvasData=S({},this.initialCanvasData),this.cropBoxData=S({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(S(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),P(this.dragBox,h),j(this.cropBox,n)),this},replace:function(t){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),i?(this.url=t,this.image.src=t,this.ready&&(this.image2.src=t,O(this.previews,function(i){i.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.load(t))),this},enable:function(){return this.ready&&(this.disabled=!1,P(this.cropper,a)),this},disable:function(){return this.ready&&(this.disabled=!0,j(this.cropper,a)),this},destroy:function(){var t=this.element,e=this.image;return this.loaded?(this.isImg&&this.replaced&&(t.src=this.originalUrl),this.unbuild(),P(t,n)):this.isImg?G(t,u,this.onStart):e&&e.parentNode.removeChild(e),K(t,i),this},move:function(t,i){var e=this.canvasData,a=e.left,n=e.top;return this.moveTo(N(t)?t:a+Number(t),N(i)?i:n+Number(i))},moveTo:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,e=this.canvasData,a=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.movable&&(W(t)&&(e.left=t,a=!0),W(i)&&(e.top=i,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,i){var e=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(e.width*t/e.naturalWidth,null,i)},zoomTo:function(t,i,e){var a=this.options,n=this.canvasData,o=n.width,h=n.height,r=n.naturalWidth,s=n.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&a.zoomable){var c=r*t,l=s*t;if(!1===_(this.element,"zoom",{originalEvent:e,oldRatio:o/r,ratio:c/r}))return this;if(e){var d=this.pointers,p=tt(this.cropper),m=d&&Object.keys(d).length?function(t){var i=0,e=0,a=0;return O(t,function(t){var n=t.startX,o=t.startY;i+=n,e+=o,a+=1}),{pageX:i/=a,pageY:e/=a}}(d):{pageX:e.pageX,pageY:e.pageY};n.left-=(c-o)*((m.pageX-p.left-n.left)/o),n.top-=(l-h)*((m.pageY-p.top-n.top)/h)}else Y(i)&&W(i.x)&&W(i.y)?(n.left-=(c-o)*((i.x-n.left)/o),n.top-=(l-h)*((i.y-n.top)/h)):(n.left-=(c-o)/2,n.top-=(l-h)/2);n.width=c,n.height=l,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return W(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var i=this.imageData.scaleY;return this.scale(t,W(i)?i:1)},scaleY:function(t){var i=this.imageData.scaleX;return this.scale(W(i)?i:1,t)},scale:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,e=this.imageData,a=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.scalable&&(W(t)&&(e.scaleX=t,a=!0),W(i)&&(e.scaleY=i,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,e=this.imageData,a=this.canvasData,n=this.cropBoxData,o=void 0;if(this.ready&&this.cropped){o={x:n.left-a.left,y:n.top-a.top,width:n.width,height:n.height};var h=e.width/e.naturalWidth;O(o,function(i,e){i/=h,o[e]=t?Math.round(i):i})}else o={x:0,y:0,width:0,height:0};return i.rotatable&&(o.rotate=e.rotate||0),i.scalable&&(o.scaleX=e.scaleX||1,o.scaleY=e.scaleY||1),o},setData:function(t){var i=this.options,e=this.imageData,a=this.canvasData,n={};if(X(t)&&(t=t.call(this.element)),this.ready&&!this.disabled&&Y(t)){var o=!1;i.rotatable&&W(t.rotate)&&t.rotate!==e.rotate&&(e.rotate=t.rotate,o=!0),i.scalable&&(W(t.scaleX)&&t.scaleX!==e.scaleX&&(e.scaleX=t.scaleX,o=!0),W(t.scaleY)&&t.scaleY!==e.scaleY&&(e.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var h=e.width/e.naturalWidth;W(t.x)&&(n.left=t.x*h+a.left),W(t.y)&&(n.top=t.y*h+a.top),W(t.width)&&(n.width=t.width*h),W(t.height)&&(n.height=t.height*h),this.setCropBoxData(n)}return this},getContainerData:function(){return this.ready?S({},this.containerData):{}},getImageData:function(){return this.loaded?S({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,i={};return this.ready&&O(["left","top","width","height","naturalWidth","naturalHeight"],function(e){i[e]=t[e]}),i},setCanvasData:function(t){var i=this.canvasData,e=i.aspectRatio;return X(t)&&(t=t.call(this.element)),this.ready&&!this.disabled&&Y(t)&&(W(t.left)&&(i.left=t.left),W(t.top)&&(i.top=t.top),W(t.width)?(i.width=t.width,i.height=t.width/e):W(t.height)&&(i.height=t.height,i.width=t.height*e),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,i=void 0;return this.ready&&this.cropped&&(i={left:t.left,top:t.top,width:t.width,height:t.height}),i||{}},setCropBoxData:function(t){var i=this.cropBoxData,e=this.options.aspectRatio,a=void 0,n=void 0;return X(t)&&(t=t.call(this.element)),this.ready&&this.cropped&&!this.disabled&&Y(t)&&(W(t.left)&&(i.left=t.left),W(t.top)&&(i.top=t.top),W(t.width)&&t.width!==i.width&&(a=!0,i.width=t.width),W(t.height)&&t.height!==i.height&&(n=!0,i.height=t.height),e&&(a?i.height=i.width/e:n&&(i.width=i.height*e)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var i=this.canvasData,e=function(t,i,e,a){var n=i.naturalWidth,o=i.naturalHeight,h=i.rotate,r=void 0===h?0:h,s=i.scaleX,c=void 0===s?1:s,l=i.scaleY,d=void 0===l?1:l,p=e.aspectRatio,m=e.naturalWidth,u=e.naturalHeight,g=a.fillColor,f=void 0===g?"transparent":g,v=a.imageSmoothingEnabled,w=void 0===v||v,x=a.imageSmoothingQuality,b=void 0===x?"low":x,y=a.maxWidth,C=void 0===y?1/0:y,M=a.maxHeight,D=void 0===M?1/0:M,B=a.minWidth,k=void 0===B?0:B,T=a.minHeight,W=void 0===T?0:T,N=document.createElement("canvas"),H=N.getContext("2d"),L=lt({aspectRatio:p,width:C,height:D}),Y=lt({aspectRatio:p,width:k,height:W}),X=Math.min(L.width,Math.max(Y.width,m)),O=Math.min(L.height,Math.max(Y.height,u)),S=[-n/2,-o/2,n,o];return N.width=A(X),N.height=A(O),H.fillStyle=f,H.fillRect(0,0,X,O),H.save(),H.translate(X/2,O/2),H.rotate(r*Math.PI/180),H.scale(c,d),H.imageSmoothingEnabled=w,H.imageSmoothingQuality=b,H.drawImage.apply(H,[t].concat(E(S.map(function(t){return Math.floor(A(t))})))),H.restore(),N}(this.image,this.imageData,i,t);if(!this.cropped)return e;var a=this.getData(),n=a.x,o=a.y,h=a.width,r=a.height,s=h/r,c=lt({aspectRatio:s,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),l=lt({aspectRatio:s,width:t.minWidth||0,height:t.minHeight||0}),d=lt({aspectRatio:s,width:t.width||h,height:t.height||r}),p=d.width,m=d.height;p=Math.min(c.width,Math.max(l.width,p)),m=Math.min(c.height,Math.max(l.height,m));var u=document.createElement("canvas"),g=u.getContext("2d");u.width=A(p),u.height=A(m),g.fillStyle=t.fillColor||"transparent",g.fillRect(0,0,p,m);var f=t.imageSmoothingEnabled,v=void 0===f||f,w=t.imageSmoothingQuality;g.imageSmoothingEnabled=v,w&&(g.imageSmoothingQuality=w);var x=e.width,b=e.height,y=n,C=o,M=void 0,D=void 0,B=void 0,k=void 0,T=void 0,W=void 0;y<=-h||y>x?(y=0,M=0,B=0,T=0):y<=0?(B=-y,y=0,T=M=Math.min(x,h+y)):y<=x&&(B=0,T=M=Math.min(h,x-y)),M<=0||C<=-r||C>b?(C=0,D=0,k=0,W=0):C<=0?(k=-C,C=0,W=D=Math.min(b,r+C)):C<=b&&(k=0,W=D=Math.min(r,b-C));var N=[y,C,M,D];if(T>0&&W>0){var H=p/h;N.push(B*H,k*H,T*H,W*H)}return g.drawImage.apply(g,[e].concat(E(N.map(function(t){return Math.floor(A(t))})))),u},setAspectRatio:function(t){var i=this.options;return this.disabled||N(t)||(i.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var i=this.options,a=this.dragBox,n=this.face;if(this.loaded&&!this.disabled){var o="crop"===t,h=i.movable&&"move"===t;F(a,s,t=o||h?t:"none"),q(a,e,o),q(a,r,h),i.cropBoxMovable||(F(n,s,t),q(n,e,o),q(n,r,h))}return this}},bt=t.Cropper,yt=function(){function t(i){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(B(this,t),!i||!C.test(i.tagName))throw new Error("The first argument is required and must be an <img> or <canvas> element.");this.element=i,this.options=S({},M,Y(e)&&e),this.complete=!1,this.cropped=!1,this.disabled=!1,this.isImg=!1,this.limited=!1,this.loaded=!1,this.ready=!1,this.replaced=!1,this.wheeling=!1,this.originalUrl="",this.canvasData=null,this.cropBoxData=null,this.previews=null,this.pointers={},this.init()}return k(t,[{key:"init",value:function(){var t=this.element,e=t.tagName.toLowerCase(),a=void 0;if(!Z(t,i)){if(F(t,i,this),"img"===e){if(this.isImg=!0,a=t.getAttribute("src")||"",this.originalUrl=a,!a)return;a=t.src}else"canvas"===e&&window.HTMLCanvasElement&&(a=t.toDataURL());this.load(a)}}},{key:"load",value:function(t){var i=this;if(t){this.url=t,this.imageData={};var e=this.element,a=this.options;if(a.checkOrientation&&window.ArrayBuffer)if(b.test(t))y.test(t)?this.read(function(t){var i=t.replace(pt,""),e=atob(i),a=new ArrayBuffer(e.length),n=new Uint8Array(a);return O(n,function(t,i){n[i]=e.charCodeAt(i)}),a}(t)):this.clone();else{var n=new XMLHttpRequest;n.onerror=function(){i.clone()},n.onload=function(){i.read(n.response)},a.checkCrossOrigin&&at(t)&&e.crossOrigin&&(t=nt(t)),n.open("get",t),n.responseType="arraybuffer",n.withCredentials="use-credentials"===e.crossOrigin,n.send()}else this.clone()}}},{key:"read",value:function(t){var i=this.options,e=this.imageData,a=mt(t),n=0,o=1,h=1;if(a>1){this.url=function(t,i){var e="";return O(new Uint8Array(t),function(t){e+=dt(t)}),"data:"+i+";base64,"+btoa(e)}(t,"image/jpeg");var r=function(t){var i=0,e=1,a=1;switch(t){case 2:e=-1;break;case 3:i=-180;break;case 4:a=-1;break;case 5:i=90,a=-1;break;case 6:i=90;break;case 7:i=90,e=-1;break;case 8:i=-90}return{rotate:i,scaleX:e,scaleY:a}}(a);n=r.rotate,o=r.scaleX,h=r.scaleY}i.rotatable&&(e.rotate=n),i.scalable&&(e.scaleX=o,e.scaleY=h),this.clone()}},{key:"clone",value:function(){var t=this.element,i=this.url,e=void 0,a=void 0;this.options.checkCrossOrigin&&at(i)&&((e=t.crossOrigin)?a=i:(e="anonymous",a=nt(i))),this.crossOrigin=e,this.crossOriginUrl=a;var n=document.createElement("img");e&&(n.crossOrigin=e),n.src=a||i;var h=z(this.start,this),r=z(this.stop,this);this.image=n,this.onStart=h,this.onStop=r,this.isImg?t.complete?this.start():J(t,u,h):(J(n,u,h),J(n,"error",r),j(n,o),t.parentNode.insertBefore(n,t.nextSibling))}},{key:"start",value:function(t){var i=this,e=this.isImg?this.element:this.image;t&&(G(e,u,this.onStart),G(e,"error",this.onStop)),function(t,i){if(!t.naturalWidth||rt){var e=document.createElement("img"),a=document.body||document.documentElement;e.onload=function(){i(e.width,e.height),rt||a.removeChild(e)},e.src=t.src,rt||(e.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",a.appendChild(e))}else i(t.naturalWidth,t.naturalHeight)}(e,function(t,e){S(i.imageData,{naturalWidth:t,naturalHeight:e,aspectRatio:t/e}),i.loaded=!0,i.build()})}},{key:"stop",value:function(){var t=this.image;G(t,u,this.onStart),G(t,"error",this.onStop),t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){var t=this;if(this.loaded){this.ready&&this.unbuild();var e=this.element,a=this.options,c=this.image,d=e.parentNode,p=document.createElement("div");p.innerHTML='<div class="cropper-container"><div class="cropper-wrap-box"><div class="cropper-canvas"></div></div><div class="cropper-drag-box"></div><div class="cropper-crop-box"><span class="cropper-view-box"></span><span class="cropper-dashed dashed-h"></span><span class="cropper-dashed dashed-v"></span><span class="cropper-center"></span><span class="cropper-face"></span><span class="cropper-line line-e" data-action="e"></span><span class="cropper-line line-n" data-action="n"></span><span class="cropper-line line-w" data-action="w"></span><span class="cropper-line line-s" data-action="s"></span><span class="cropper-point point-e" data-action="e"></span><span class="cropper-point point-n" data-action="n"></span><span class="cropper-point point-w" data-action="w"></span><span class="cropper-point point-s" data-action="s"></span><span class="cropper-point point-ne" data-action="ne"></span><span class="cropper-point point-nw" data-action="nw"></span><span class="cropper-point point-sw" data-action="sw"></span><span class="cropper-point point-se" data-action="se"></span></div></div>';var m=p.querySelector("."+i+"-container"),u=m.querySelector("."+i+"-canvas"),g=m.querySelector("."+i+"-drag-box"),f=m.querySelector("."+i+"-crop-box"),v=f.querySelector("."+i+"-face");this.container=d,this.cropper=m,this.canvas=u,this.dragBox=g,this.cropBox=f,this.viewBox=m.querySelector("."+i+"-view-box"),this.face=v,u.appendChild(c),j(e,n),d.insertBefore(m,e.nextSibling),this.isImg||P(c,o),this.initPreview(),this.bind(),a.aspectRatio=Math.max(0,a.aspectRatio)||NaN,a.viewMode=Math.max(0,Math.min(3,Math.round(a.viewMode)))||0,this.cropped=a.autoCrop,a.autoCrop?a.modal&&j(g,h):j(f,n),a.guides||j(f.getElementsByClassName(i+"-dashed"),n),a.center||j(f.getElementsByClassName(i+"-center"),n),a.background&&j(m,i+"-bg"),a.highlight||j(v,"cropper-invisible"),a.cropBoxMovable&&(j(v,r),F(v,s,"all")),a.cropBoxResizable||(j(f.getElementsByClassName(i+"-line"),n),j(f.getElementsByClassName(i+"-point"),n)),this.setDragMode(a.dragMode),this.render(),this.ready=!0,this.setData(a.data),this.completing=setTimeout(function(){X(a.ready)&&J(e,"ready",a.ready,{once:!0}),_(e,"ready"),_(e,l,t.getData()),t.complete=!0},0)}}},{key:"unbuild",value:function(){this.ready&&(this.complete||clearTimeout(this.completing),this.ready=!1,this.complete=!1,this.initialImageData=null,this.initialCanvasData=null,this.initialCropBoxData=null,this.containerData=null,this.canvasData=null,this.cropBoxData=null,this.unbind(),this.resetPreview(),this.previews=null,this.viewBox=null,this.cropBox=null,this.dragBox=null,this.canvas=null,this.container=null,this.cropper.parentNode.removeChild(this.cropper),this.cropper=null)}}],[{key:"noConflict",value:function(){return window.Cropper=bt,t}},{key:"setDefaults",value:function(t){S(M,Y(t)&&t)}}]),t}();return S(yt.prototype,ut,gt,ft,vt,wt,xt),yt}); \ No newline at end of file
diff --git a/library/cropperjs/docs/css/cropper.css b/library/cropperjs/docs/css/cropper.css
new file mode 100644
index 000000000..dd22178fe
--- /dev/null
+++ b/library/cropperjs/docs/css/cropper.css
@@ -0,0 +1,306 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:26:29.610Z
+ */
+
+.cropper-container {
+ direction: ltr;
+ font-size: 0;
+ line-height: 0;
+ position: relative;
+ -ms-touch-action: none;
+ touch-action: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.cropper-container img {/*Avoid margin top issue (Occur only when margin-top <= -height)
+ */
+ display: block;
+ height: 100%;
+ image-orientation: 0deg;
+ max-height: none !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ min-width: 0 !important;
+ width: 100%;
+}
+
+.cropper-wrap-box,
+.cropper-canvas,
+.cropper-drag-box,
+.cropper-crop-box,
+.cropper-modal {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.cropper-wrap-box,
+.cropper-canvas {
+ overflow: hidden;
+}
+
+.cropper-drag-box {
+ background-color: #fff;
+ opacity: 0;
+}
+
+.cropper-modal {
+ background-color: #000;
+ opacity: .5;
+}
+
+.cropper-view-box {
+ display: block;
+ height: 100%;
+ outline-color: rgba(51, 153, 255, 0.75);
+ outline: 1px solid #39f;
+ overflow: hidden;
+ width: 100%;
+}
+
+.cropper-dashed {
+ border: 0 dashed #eee;
+ display: block;
+ opacity: .5;
+ position: absolute;
+}
+
+.cropper-dashed.dashed-h {
+ border-bottom-width: 1px;
+ border-top-width: 1px;
+ height: 33.33333%;
+ left: 0;
+ top: 33.33333%;
+ width: 100%;
+}
+
+.cropper-dashed.dashed-v {
+ border-left-width: 1px;
+ border-right-width: 1px;
+ height: 100%;
+ left: 33.33333%;
+ top: 0;
+ width: 33.33333%;
+}
+
+.cropper-center {
+ display: block;
+ height: 0;
+ left: 50%;
+ opacity: .75;
+ position: absolute;
+ top: 50%;
+ width: 0;
+}
+
+.cropper-center:before,
+.cropper-center:after {
+ background-color: #eee;
+ content: ' ';
+ display: block;
+ position: absolute;
+}
+
+.cropper-center:before {
+ height: 1px;
+ left: -3px;
+ top: 0;
+ width: 7px;
+}
+
+.cropper-center:after {
+ height: 7px;
+ left: 0;
+ top: -3px;
+ width: 1px;
+}
+
+.cropper-face,
+.cropper-line,
+.cropper-point {
+ display: block;
+ height: 100%;
+ opacity: .1;
+ position: absolute;
+ width: 100%;
+}
+
+.cropper-face {
+ background-color: #fff;
+ left: 0;
+ top: 0;
+}
+
+.cropper-line {
+ background-color: #39f;
+}
+
+.cropper-line.line-e {
+ cursor: ew-resize;
+ right: -3px;
+ top: 0;
+ width: 5px;
+}
+
+.cropper-line.line-n {
+ cursor: ns-resize;
+ height: 5px;
+ left: 0;
+ top: -3px;
+}
+
+.cropper-line.line-w {
+ cursor: ew-resize;
+ left: -3px;
+ top: 0;
+ width: 5px;
+}
+
+.cropper-line.line-s {
+ bottom: -3px;
+ cursor: ns-resize;
+ height: 5px;
+ left: 0;
+}
+
+.cropper-point {
+ background-color: #39f;
+ height: 5px;
+ opacity: .75;
+ width: 5px;
+}
+
+.cropper-point.point-e {
+ cursor: ew-resize;
+ margin-top: -3px;
+ right: -3px;
+ top: 50%;
+}
+
+.cropper-point.point-n {
+ cursor: ns-resize;
+ left: 50%;
+ margin-left: -3px;
+ top: -3px;
+}
+
+.cropper-point.point-w {
+ cursor: ew-resize;
+ left: -3px;
+ margin-top: -3px;
+ top: 50%;
+}
+
+.cropper-point.point-s {
+ bottom: -3px;
+ cursor: s-resize;
+ left: 50%;
+ margin-left: -3px;
+}
+
+.cropper-point.point-ne {
+ cursor: nesw-resize;
+ right: -3px;
+ top: -3px;
+}
+
+.cropper-point.point-nw {
+ cursor: nwse-resize;
+ left: -3px;
+ top: -3px;
+}
+
+.cropper-point.point-sw {
+ bottom: -3px;
+ cursor: nesw-resize;
+ left: -3px;
+}
+
+.cropper-point.point-se {
+ bottom: -3px;
+ cursor: nwse-resize;
+ height: 20px;
+ opacity: 1;
+ right: -3px;
+ width: 20px;
+}
+
+@media (min-width: 768px) {
+ .cropper-point.point-se {
+ height: 15px;
+ width: 15px;
+ }
+}
+
+@media (min-width: 992px) {
+ .cropper-point.point-se {
+ height: 10px;
+ width: 10px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .cropper-point.point-se {
+ height: 5px;
+ opacity: .75;
+ width: 5px;
+ }
+}
+
+.cropper-point.point-se:before {
+ background-color: #39f;
+ bottom: -50%;
+ content: ' ';
+ display: block;
+ height: 200%;
+ opacity: 0;
+ position: absolute;
+ right: -50%;
+ width: 200%;
+}
+
+.cropper-invisible {
+ opacity: 0;
+}
+
+.cropper-bg {
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
+}
+
+.cropper-hide {
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+
+.cropper-hidden {
+ display: none !important;
+}
+
+.cropper-move {
+ cursor: move;
+}
+
+.cropper-crop {
+ cursor: crosshair;
+}
+
+.cropper-disabled .cropper-drag-box,
+.cropper-disabled .cropper-face,
+.cropper-disabled .cropper-line,
+.cropper-disabled .cropper-point {
+ cursor: not-allowed;
+}
+
diff --git a/library/cropperjs/docs/css/main.css b/library/cropperjs/docs/css/main.css
new file mode 100644
index 000000000..d89f82d27
--- /dev/null
+++ b/library/cropperjs/docs/css/main.css
@@ -0,0 +1,252 @@
+.btn {
+ padding-left: .75rem;
+ padding-right: .75rem;
+}
+
+label.btn {
+ margin-bottom: 0;
+}
+
+.d-flex > .btn {
+ flex: 1;
+}
+
+.carbonads {
+ border-radius: .25rem;
+ border: 1px solid #ccc;
+ font-size: .875rem;
+ overflow: hidden;
+ padding: 1rem;
+}
+
+.carbon-wrap {
+ overflow: hidden;
+}
+
+.carbon-img {
+ clear: left;
+ display: block;
+ float: left;
+}
+
+.carbon-text,
+.carbon-poweredby {
+ display: block;
+ margin-left: 140px;
+}
+
+.carbon-text,
+.carbon-text:hover,
+.carbon-text:focus {
+ color: #fff;
+ text-decoration: none;
+}
+
+.carbon-poweredby,
+.carbon-poweredby:hover,
+.carbon-poweredby:focus {
+ color: #ddd;
+ text-decoration: none;
+}
+
+@media (min-width: 768px) {
+ .carbonads {
+ float: right;
+ margin-bottom: -1rem;
+ margin-top: -1rem;
+ max-width: 360px;
+ }
+}
+
+.footer {
+ font-size: .875rem;
+}
+
+.heart {
+ color: #ddd;
+ display: block;
+ height: 2rem;
+ line-height: 2rem;
+ margin-bottom: 0;
+ margin-top: 1rem;
+ position: relative;
+ text-align: center;
+ width: 100%;
+}
+
+.heart:hover {
+ color: #ff4136;
+}
+
+.heart::before {
+ border-top: 1px solid #eee;
+ content: " ";
+ display: block;
+ height: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 50%;
+}
+
+.heart::after {
+ background-color: #fff;
+ content: "♥";
+ padding-left: .5rem;
+ padding-right: .5rem;
+ position: relative;
+ z-index: 1;
+}
+
+.img-container,
+.img-preview {
+ background-color: #f7f7f7;
+ text-align: center;
+ width: 100%;
+}
+
+.img-container {
+ margin-bottom: 1rem;
+ max-height: 497px;
+ min-height: 200px;
+}
+
+@media (min-width: 768px) {
+ .img-container {
+ min-height: 497px;
+ }
+}
+
+.img-container > img {
+ max-width: 100%;
+}
+
+.docs-preview {
+ margin-right: -1rem;
+}
+
+.img-preview {
+ float: left;
+ margin-bottom: .5rem;
+ margin-right: .5rem;
+ overflow: hidden;
+}
+
+.img-preview > img {
+ max-width: 100%;
+}
+
+.preview-lg {
+ height: 9rem;
+ width: 16rem;
+}
+
+.preview-md {
+ height: 4.5rem;
+ width: 8rem;
+}
+
+.preview-sm {
+ height: 2.25rem;
+ width: 4rem;
+}
+
+.preview-xs {
+ height: 1.125rem;
+ margin-right: 0;
+ width: 2rem;
+}
+
+.docs-data > .input-group {
+ margin-bottom: .5rem;
+}
+
+.docs-data .input-group-prepend .input-group-text {
+ min-width: 4rem;
+}
+
+.docs-data .input-group-append .input-group-text {
+ min-width: 3rem;
+}
+
+.docs-buttons > .btn,
+.docs-buttons > .btn-group,
+.docs-buttons > .form-control {
+ margin-bottom: .5rem;
+ margin-right: .25rem;
+}
+
+.docs-toggles > .btn,
+.docs-toggles > .btn-group,
+.docs-toggles > .dropdown {
+ margin-bottom: .5rem;
+}
+
+.docs-tooltip {
+ display: block;
+ margin: -.5rem -.75rem;
+ padding: .5rem .75rem;
+}
+
+.docs-tooltip > .icon {
+ margin: 0 -.25rem;
+ vertical-align: top;
+}
+
+.tooltip-inner {
+ white-space: normal;
+}
+
+.btn-upload .tooltip-inner,
+.btn-toggle .tooltip-inner {
+ white-space: nowrap;
+}
+
+.btn-toggle {
+ padding: .5rem;
+}
+
+.btn-toggle > .docs-tooltip {
+ margin: -.5rem;
+ padding: .5rem;
+}
+
+@media (max-width: 400px) {
+ .btn-group-crop {
+ margin-right: -1rem!important;
+ }
+
+ .btn-group-crop > .btn {
+ padding-left: .5rem;
+ padding-right: .5rem;
+ }
+
+ .btn-group-crop .docs-tooltip {
+ margin-left: -.5rem;
+ margin-right: -.5rem;
+ padding-left: .5rem;
+ padding-right: .5rem;
+ }
+}
+
+.docs-options .dropdown-menu {
+ width: 100%;
+}
+
+.docs-options .dropdown-menu > li {
+ font-size: .875rem;
+ padding: .125rem 1rem;
+}
+
+.docs-options .dropdown-menu .form-check-label {
+ display: block;
+}
+
+.docs-cropped .modal-body {
+ text-align: center;
+}
+
+.docs-cropped .modal-body > img,
+.docs-cropped .modal-body > canvas {
+ max-width: 100%;
+}
diff --git a/library/cropperjs/docs/images/data.jpg b/library/cropperjs/docs/images/data.jpg
new file mode 100644
index 000000000..56926a274
--- /dev/null
+++ b/library/cropperjs/docs/images/data.jpg
Binary files differ
diff --git a/library/cropperjs/docs/images/layers.jpg b/library/cropperjs/docs/images/layers.jpg
new file mode 100644
index 000000000..02b77e7b2
--- /dev/null
+++ b/library/cropperjs/docs/images/layers.jpg
Binary files differ
diff --git a/library/cropperjs/docs/images/picture-2.jpg b/library/cropperjs/docs/images/picture-2.jpg
new file mode 100644
index 000000000..05df6dc31
--- /dev/null
+++ b/library/cropperjs/docs/images/picture-2.jpg
Binary files differ
diff --git a/library/cropperjs/docs/images/picture-3.jpg b/library/cropperjs/docs/images/picture-3.jpg
new file mode 100644
index 000000000..472d721b6
--- /dev/null
+++ b/library/cropperjs/docs/images/picture-3.jpg
Binary files differ
diff --git a/library/cropperjs/docs/images/picture.jpg b/library/cropperjs/docs/images/picture.jpg
new file mode 100644
index 000000000..e4e7c488b
--- /dev/null
+++ b/library/cropperjs/docs/images/picture.jpg
Binary files differ
diff --git a/library/cropperjs/docs/index.html b/library/cropperjs/docs/index.html
new file mode 100644
index 000000000..7c3354cb1
--- /dev/null
+++ b/library/cropperjs/docs/index.html
@@ -0,0 +1,578 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <meta name="description" content="JavaScript image cropper.">
+ <meta name="keywords" content="HTML, CSS, JS, JavaScript, image cropping, cropper, cropperjs, cropper.js, front-end, web development">
+ <meta name="author" content="Chen Fengyuan">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css">
+ <link rel="stylesheet" href="css/cropper.css">
+ <link rel="stylesheet" href="css/main.css">
+</head>
+<body>
+ <!--[if lt IE 9]>
+ <div class="alert alert-warning alert-dismissible fade show m-0 rounded-0" role="alert">
+ You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <![endif]-->
+
+ <!-- Header -->
+ <header class="navbar navbar-light navbar-expand-md">
+ <div class="container">
+ <a class="navbar-brand" href="./">Cropper.js</a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="collapse navbar-collapse justify-content-end" id="navbar-collapse" role="navigation">
+ <nav class="nav navbar-nav">
+ <a class="nav-link" href="https://github.com/fengyuanchen/cropperjs/blob/master/README.md" data-toggle="tooltip" title="View the documentation">Docs</a>
+ <a class="nav-link" href="https://fengyuanchen.github.io/photo-editor" data-toggle="tooltip" title="An advanced example of Cropper.js">Photo Editor</a>
+ <a class="nav-link" href="https://github.com/fengyuanchen/cropperjs" data-toggle="tooltip" title="View the GitHub project">GitHub</a>
+ <a class="nav-link" href="https://fengyuanchen.github.io" data-toggle="tooltip" title="More projects">More</a>
+ <a class="nav-link" href="http://chenfengyuan.com" data-toggle="tooltip" title="About the author">About</a>
+ </nav>
+ </div>
+ </nav>
+ </header>
+
+ <!-- Jumbotron -->
+ <div class="jumbotron bg-primary text-white rounded-0">
+ <div class="container">
+ <div class="row">
+ <div class="col-md">
+ <h1>Cropper.js <small class="h6">v1.2.2</small></h1>
+ <p class="lead">JavaScript image cropper.</p>
+ </div>
+ <div class="col-md">
+ <div class="carbonads">
+ <script id="_carbonads_js" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=fengyuanchen" async></script>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- Content -->
+ <div class="container">
+ <div class="row">
+ <div class="col-md-9">
+ <!-- <h3>Demo:</h3> -->
+ <div class="img-container">
+ <img src="images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+ <div class="col-md-3">
+ <!-- <h3>Preview:</h3> -->
+ <div class="docs-preview clearfix">
+ <div class="img-preview preview-lg"></div>
+ <div class="img-preview preview-md"></div>
+ <div class="img-preview preview-sm"></div>
+ <div class="img-preview preview-xs"></div>
+ </div>
+
+ <!-- <h3>Data:</h3> -->
+ <!-- <h3>Data:</h3> -->
+ <div class="docs-data">
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataX">X</label>
+ </span>
+ <input type="text" class="form-control" id="dataX" placeholder="x">
+ <span class="input-group-append">
+ <span class="input-group-text">px</span>
+ </span>
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataY">Y</label>
+ </span>
+ <input type="text" class="form-control" id="dataY" placeholder="y">
+ <span class="input-group-append">
+ <span class="input-group-text">px</span>
+ </span>
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataWidth">Width</label>
+ </span>
+ <input type="text" class="form-control" id="dataWidth" placeholder="width">
+ <span class="input-group-append">
+ <span class="input-group-text">px</span>
+ </span>
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataHeight">Height</label>
+ </span>
+ <input type="text" class="form-control" id="dataHeight" placeholder="height">
+ <span class="input-group-append">
+ <span class="input-group-text">px</span>
+ </span>
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataRotate">Rotate</label>
+ </span>
+ <input type="text" class="form-control" id="dataRotate" placeholder="rotate">
+ <span class="input-group-append">
+ <span class="input-group-text">deg</span>
+ </span>
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataScaleX">ScaleX</label>
+ </span>
+ <input type="text" class="form-control" id="dataScaleX" placeholder="scaleX">
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-prepend">
+ <label class="input-group-text" for="dataScaleY">ScaleY</label>
+ </span>
+ <input type="text" class="form-control" id="dataScaleY" placeholder="scaleY">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row" id="actions">
+ <div class="col-md-9 docs-buttons">
+ <!-- <h3>Toolbar:</h3> -->
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="setDragMode" data-option="move" title="Move">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setDragMode(&quot;move&quot;)">
+ <span class="fa fa-arrows"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="setDragMode" data-option="crop" title="Crop">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setDragMode(&quot;crop&quot;)">
+ <span class="fa fa-crop"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="zoom" data-option="0.1" title="Zoom In">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.zoom(0.1)">
+ <span class="fa fa-search-plus"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="zoom" data-option="-0.1" title="Zoom Out">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.zoom(-0.1)">
+ <span class="fa fa-search-minus"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="move" data-option="-10" data-second-option="0" title="Move Left">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(-10, 0)">
+ <span class="fa fa-arrow-left"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="move" data-option="10" data-second-option="0" title="Move Right">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(10, 0)">
+ <span class="fa fa-arrow-right"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="move" data-option="0" data-second-option="-10" title="Move Up">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(0, -10)">
+ <span class="fa fa-arrow-up"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="move" data-option="0" data-second-option="10" title="Move Down">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.move(0, 10)">
+ <span class="fa fa-arrow-down"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="rotate" data-option="-45" title="Rotate Left">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.rotate(-45)">
+ <span class="fa fa-rotate-left"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="rotate" data-option="45" title="Rotate Right">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.rotate(45)">
+ <span class="fa fa-rotate-right"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="scaleX" data-option="-1" title="Flip Horizontal">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.scaleX(-1)">
+ <span class="fa fa-arrows-h"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="scaleY" data-option="-1" title="Flip Vertical">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.scaleY(-1)">
+ <span class="fa fa-arrows-v"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="crop" title="Crop">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.crop()">
+ <span class="fa fa-check"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="clear" title="Clear">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.clear()">
+ <span class="fa fa-remove"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="disable" title="Disable">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.disable()">
+ <span class="fa fa-lock"></span>
+ </span>
+ </button>
+ <button type="button" class="btn btn-primary" data-method="enable" title="Enable">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.enable()">
+ <span class="fa fa-unlock"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group">
+ <button type="button" class="btn btn-primary" data-method="reset" title="Reset">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.reset()">
+ <span class="fa fa-refresh"></span>
+ </span>
+ </button>
+ <label class="btn btn-primary btn-upload" for="inputImage" title="Upload image file">
+ <input type="file" class="sr-only" id="inputImage" name="file" accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff">
+ <span class="docs-tooltip" data-toggle="tooltip" title="Import image with Blob URLs">
+ <span class="fa fa-upload"></span>
+ </span>
+ </label>
+ <button type="button" class="btn btn-primary" data-method="destroy" title="Destroy">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.destroy()">
+ <span class="fa fa-power-off"></span>
+ </span>
+ </button>
+ </div>
+
+ <div class="btn-group btn-group-crop">
+ <button type="button" class="btn btn-success" data-method="getCroppedCanvas" data-option="{ &quot;maxWidth&quot;: 4096, &quot;maxHeight&quot;: 4096 }">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCroppedCanvas({ maxWidth: 4096, maxHeight: 4096 })">
+ Get Cropped Canvas
+ </span>
+ </button>
+ <button type="button" class="btn btn-success" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 160, &quot;height&quot;: 90 }">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCroppedCanvas({ width: 160, height: 90 })">
+ 160&times;90
+ </span>
+ </button>
+ <button type="button" class="btn btn-success" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 320, &quot;height&quot;: 180 }">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCroppedCanvas({ width: 320, height: 180 })">
+ 320&times;180
+ </span>
+ </button>
+ </div>
+
+ <!-- Show the cropped image in modal -->
+ <div class="modal fade docs-cropped" id="getCroppedCanvasModal" role="dialog" aria-hidden="true" aria-labelledby="getCroppedCanvasTitle" tabindex="-1">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title" id="getCroppedCanvasTitle">Cropped</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body"></div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ <a class="btn btn-primary" id="download" href="javascript:void(0);" download="cropped.jpg">Download</a>
+ </div>
+ </div>
+ </div>
+ </div><!-- /.modal -->
+
+ <button type="button" class="btn btn-secondary" data-method="getData" data-option data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getData()">
+ Get Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="setData" data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setData(data)">
+ Set Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="getContainerData" data-option data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getContainerData()">
+ Get Container Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="getImageData" data-option data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getImageData()">
+ Get Image Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="getCanvasData" data-option data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCanvasData()">
+ Get Canvas Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="setCanvasData" data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setCanvasData(data)">
+ Set Canvas Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="getCropBoxData" data-option data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.getCropBoxData()">
+ Get Crop Box Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="setCropBoxData" data-target="#putData">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.setCropBoxData(data)">
+ Set Crop Box Data
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="moveTo" data-option="0">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.moveTo(0)">
+ Move to [0,0]
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="zoomTo" data-option="1">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.zoomTo(1)">
+ Zoom to 100%
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="rotateTo" data-option="180">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.rotateTo(180)">
+ Rotate 180°
+ </span>
+ </button>
+ <button type="button" class="btn btn-secondary" data-method="scale" data-option="-2" data-second-option="-1">
+ <span class="docs-tooltip" data-toggle="tooltip" title="cropper.scale(-2, -1)">
+ Scale (-2, -1)
+ </span>
+ </button>
+ <textarea class="form-control" id="putData" rows="1" placeholder="Get data to here or set data with this value"></textarea>
+
+ </div><!-- /.docs-buttons -->
+
+ <div class="col-md-3 docs-toggles">
+ <!-- <h3>Toggles:</h3> -->
+ <div class="btn-group d-flex flex-nowrap" data-toggle="buttons">
+ <label class="btn btn-primary active">
+ <input type="radio" class="sr-only" id="aspectRatio1" name="aspectRatio" value="1.7777777777777777">
+ <span class="docs-tooltip" data-toggle="tooltip" title="aspectRatio: 16 / 9">
+ 16:9
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="aspectRatio2" name="aspectRatio" value="1.3333333333333333">
+ <span class="docs-tooltip" data-toggle="tooltip" title="aspectRatio: 4 / 3">
+ 4:3
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="aspectRatio3" name="aspectRatio" value="1">
+ <span class="docs-tooltip" data-toggle="tooltip" title="aspectRatio: 1 / 1">
+ 1:1
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="aspectRatio4" name="aspectRatio" value="0.6666666666666666">
+ <span class="docs-tooltip" data-toggle="tooltip" title="aspectRatio: 2 / 3">
+ 2:3
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="aspectRatio5" name="aspectRatio" value="NaN">
+ <span class="docs-tooltip" data-toggle="tooltip" title="aspectRatio: NaN">
+ Free
+ </span>
+ </label>
+ </div>
+
+ <div class="btn-group d-flex flex-nowrap" data-toggle="buttons">
+ <label class="btn btn-primary active">
+ <input type="radio" class="sr-only" id="viewMode0" name="viewMode" value="0" checked>
+ <span class="docs-tooltip" data-toggle="tooltip" title="View Mode 0">
+ VM0
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="viewMode1" name="viewMode" value="1">
+ <span class="docs-tooltip" data-toggle="tooltip" title="View Mode 1">
+ VM1
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="viewMode2" name="viewMode" value="2">
+ <span class="docs-tooltip" data-toggle="tooltip" title="View Mode 2">
+ VM2
+ </span>
+ </label>
+ <label class="btn btn-primary">
+ <input type="radio" class="sr-only" id="viewMode3" name="viewMode" value="3">
+ <span class="docs-tooltip" data-toggle="tooltip" title="View Mode 3">
+ VM3
+ </span>
+ </label>
+ </div>
+
+ <div class="dropdown dropup docs-options">
+ <button type="button" class="btn btn-primary btn-block dropdown-toggle" id="toggleOptions" data-toggle="dropdown" aria-expanded="true">
+ Toggle Options
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="toggleOptions">
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="responsive" type="checkbox" name="responsive" checked>
+ <label class="form-check-label" for="responsive">responsive</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="restore" type="checkbox" name="restore" checked>
+ <label class="form-check-label" for="restore">restore</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="checkCrossOrigin" type="checkbox" name="checkCrossOrigin" checked>
+ <label class="form-check-label" for="checkCrossOrigin">checkCrossOrigin</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="checkOrientation" type="checkbox" name="checkOrientation" checked>
+ <label class="form-check-label" for="checkOrientation">checkOrientation</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="modal" type="checkbox" name="modal" checked>
+ <label class="form-check-label" for="modal">modal</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="guides" type="checkbox" name="guides" checked>
+ <label class="form-check-label" for="guides">guides</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="center" type="checkbox" name="center" checked>
+ <label class="form-check-label" for="center">center</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="highlight" type="checkbox" name="highlight" checked>
+ <label class="form-check-label" for="highlight">highlight</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="background" type="checkbox" name="background" checked>
+ <label class="form-check-label" for="background">background</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="autoCrop" type="checkbox" name="autoCrop" checked>
+ <label class="form-check-label" for="autoCrop">autoCrop</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="movable" type="checkbox" name="movable" checked>
+ <label class="form-check-label" for="movable">movable</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="rotatable" type="checkbox" name="rotatable" checked>
+ <label class="form-check-label" for="rotatable">rotatable</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="scalable" type="checkbox" name="scalable" checked>
+ <label class="form-check-label" for="scalable">scalable</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="zoomable" type="checkbox" name="zoomable" checked>
+ <label class="form-check-label" for="zoomable">zoomable</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="zoomOnTouch" type="checkbox" name="zoomOnTouch" checked>
+ <label class="form-check-label" for="zoomOnTouch">zoomOnTouch</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="zoomOnWheel" type="checkbox" name="zoomOnWheel" checked>
+ <label class="form-check-label" for="zoomOnWheel">zoomOnWheel</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="cropBoxMovable" type="checkbox" name="cropBoxMovable" checked>
+ <label class="form-check-label" for="cropBoxMovable">cropBoxMovable</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="cropBoxResizable" type="checkbox" name="cropBoxResizable" checked>
+ <label class="form-check-label" for="cropBoxResizable">cropBoxResizable</label>
+ </div>
+ </li>
+ <li class="dropdown-item">
+ <div class="form-check">
+ <input class="form-check-input" id="toggleDragModeOnDblclick" type="checkbox" name="toggleDragModeOnDblclick" checked>
+ <label class="form-check-label" for="toggleDragModeOnDblclick">toggleDragModeOnDblclick</label>
+ </div>
+ </li>
+ </ul>
+ </div><!-- /.dropdown -->
+
+ <a class="btn btn-success btn-block" data-toggle="tooltip" href="https://fengyuanchen.github.io/photo-editor" title="An advanced example of Cropper.js">Photo Editor</a>
+
+ </div><!-- /.docs-toggles -->
+ </div>
+ </div>
+
+ <!-- Footer -->
+ <footer class="footer">
+ <div class="container">
+ <p class="heart"></p>
+ <nav class="nav flex-wrap justify-content-center mb-3">
+ <a class="nav-link" href="https://github.com/fengyuanchen/cropperjs">GitHub</a>
+ <a class="nav-link" href="https://github.com/fengyuanchen/cropperjs/tree/master/examples">Examples</a>
+ <a class="nav-link" href="https://github.com/fengyuanchen/cropperjs/blob/master/LICENSE">License</a>
+ <a class="nav-link" href="http://chenfengyuan.com">About</a>
+ </nav>
+ </div>
+ </footer>
+
+ <!-- Scripts -->
+ <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.bundle.min.js"></script>
+ <script src="https://fengyuanchen.github.io/js/common.js"></script>
+ <script src="js/cropper.js"></script>
+ <script src="js/main.js"></script>
+</body>
+</html>
diff --git a/library/cropperjs/docs/js/cropper.js b/library/cropperjs/docs/js/cropper.js
new file mode 100644
index 000000000..0e837953c
--- /dev/null
+++ b/library/cropperjs/docs/js/cropper.js
@@ -0,0 +1,3766 @@
+/*!
+ * Cropper.js v1.2.2
+ * https://github.com/fengyuanchen/cropperjs
+ *
+ * Copyright (c) 2015-2018 Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2018-01-03T13:27:18.062Z
+ */
+
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global.Cropper = factory());
+}(this, (function () { 'use strict';
+
+var WINDOW = typeof window !== 'undefined' ? window : {};
+var NAMESPACE = 'cropper';
+
+// Actions
+var ACTION_ALL = 'all';
+var ACTION_CROP = 'crop';
+var ACTION_MOVE = 'move';
+var ACTION_ZOOM = 'zoom';
+var ACTION_EAST = 'e';
+var ACTION_WEST = 'w';
+var ACTION_SOUTH = 's';
+var ACTION_NORTH = 'n';
+var ACTION_NORTH_EAST = 'ne';
+var ACTION_NORTH_WEST = 'nw';
+var ACTION_SOUTH_EAST = 'se';
+var ACTION_SOUTH_WEST = 'sw';
+
+// Classes
+var CLASS_CROP = NAMESPACE + '-crop';
+var CLASS_DISABLED = NAMESPACE + '-disabled';
+var CLASS_HIDDEN = NAMESPACE + '-hidden';
+var CLASS_HIDE = NAMESPACE + '-hide';
+var CLASS_INVISIBLE = NAMESPACE + '-invisible';
+var CLASS_MODAL = NAMESPACE + '-modal';
+var CLASS_MOVE = NAMESPACE + '-move';
+
+// Data keys
+var DATA_ACTION = 'action';
+var DATA_PREVIEW = 'preview';
+
+// Drag modes
+var DRAG_MODE_CROP = 'crop';
+var DRAG_MODE_MOVE = 'move';
+var DRAG_MODE_NONE = 'none';
+
+// Events
+var EVENT_CROP = 'crop';
+var EVENT_CROP_END = 'cropend';
+var EVENT_CROP_MOVE = 'cropmove';
+var EVENT_CROP_START = 'cropstart';
+var EVENT_DBLCLICK = 'dblclick';
+var EVENT_ERROR = 'error';
+var EVENT_LOAD = 'load';
+var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown';
+var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove';
+var EVENT_POINTER_UP = WINDOW.PointerEvent ? 'pointerup pointercancel' : 'touchend touchcancel mouseup';
+var EVENT_READY = 'ready';
+var EVENT_RESIZE = 'resize';
+var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';
+var EVENT_ZOOM = 'zoom';
+
+// RegExps
+var REGEXP_ACTIONS = /^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;
+var REGEXP_DATA_URL = /^data:/;
+var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/;
+var REGEXP_TAG_NAME = /^(img|canvas)$/i;
+
+var DEFAULTS = {
+ // Define the view mode of the cropper
+ viewMode: 0, // 0, 1, 2, 3
+
+ // Define the dragging mode of the cropper
+ dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none'
+
+ // Define the aspect ratio of the crop box
+ aspectRatio: NaN,
+
+ // An object with the previous cropping result data
+ data: null,
+
+ // A selector for adding extra containers to preview
+ preview: '',
+
+ // Re-render the cropper when resize the window
+ responsive: true,
+
+ // Restore the cropped area after resize the window
+ restore: true,
+
+ // Check if the current image is a cross-origin image
+ checkCrossOrigin: true,
+
+ // Check the current image's Exif Orientation information
+ checkOrientation: true,
+
+ // Show the black modal
+ modal: true,
+
+ // Show the dashed lines for guiding
+ guides: true,
+
+ // Show the center indicator for guiding
+ center: true,
+
+ // Show the white modal to highlight the crop box
+ highlight: true,
+
+ // Show the grid background
+ background: true,
+
+ // Enable to crop the image automatically when initialize
+ autoCrop: true,
+
+ // Define the percentage of automatic cropping area when initializes
+ autoCropArea: 0.8,
+
+ // Enable to move the image
+ movable: true,
+
+ // Enable to rotate the image
+ rotatable: true,
+
+ // Enable to scale the image
+ scalable: true,
+
+ // Enable to zoom the image
+ zoomable: true,
+
+ // Enable to zoom the image by dragging touch
+ zoomOnTouch: true,
+
+ // Enable to zoom the image by wheeling mouse
+ zoomOnWheel: true,
+
+ // Define zoom ratio when zoom the image by wheeling mouse
+ wheelZoomRatio: 0.1,
+
+ // Enable to move the crop box
+ cropBoxMovable: true,
+
+ // Enable to resize the crop box
+ cropBoxResizable: true,
+
+ // Toggle drag mode between "crop" and "move" when click twice on the cropper
+ toggleDragModeOnDblclick: true,
+
+ // Size limitation
+ minCanvasWidth: 0,
+ minCanvasHeight: 0,
+ minCropBoxWidth: 0,
+ minCropBoxHeight: 0,
+ minContainerWidth: 200,
+ minContainerHeight: 100,
+
+ // Shortcuts of events
+ ready: null,
+ cropstart: null,
+ cropmove: null,
+ cropend: null,
+ crop: null,
+ zoom: null
+};
+
+var TEMPLATE = '<div class="cropper-container">' + '<div class="cropper-wrap-box">' + '<div class="cropper-canvas"></div>' + '</div>' + '<div class="cropper-drag-box"></div>' + '<div class="cropper-crop-box">' + '<span class="cropper-view-box"></span>' + '<span class="cropper-dashed dashed-h"></span>' + '<span class="cropper-dashed dashed-v"></span>' + '<span class="cropper-center"></span>' + '<span class="cropper-face"></span>' + '<span class="cropper-line line-e" data-action="e"></span>' + '<span class="cropper-line line-n" data-action="n"></span>' + '<span class="cropper-line line-w" data-action="w"></span>' + '<span class="cropper-line line-s" data-action="s"></span>' + '<span class="cropper-point point-e" data-action="e"></span>' + '<span class="cropper-point point-n" data-action="n"></span>' + '<span class="cropper-point point-w" data-action="w"></span>' + '<span class="cropper-point point-s" data-action="s"></span>' + '<span class="cropper-point point-ne" data-action="ne"></span>' + '<span class="cropper-point point-nw" data-action="nw"></span>' + '<span class="cropper-point point-sw" data-action="sw"></span>' + '<span class="cropper-point point-se" data-action="se"></span>' + '</div>' + '</div>';
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+} : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+};
+
+
+
+
+
+
+
+
+
+
+
+var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+}();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var toConsumableArray = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+};
+
+/**
+ * Check if the given value is not a number.
+ */
+var isNaN = Number.isNaN || WINDOW.isNaN;
+
+/**
+ * Check if the given value is a number.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a number, else `false`.
+ */
+function isNumber(value) {
+ return typeof value === 'number' && !isNaN(value);
+}
+
+/**
+ * Check if the given value is undefined.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is undefined, else `false`.
+ */
+function isUndefined(value) {
+ return typeof value === 'undefined';
+}
+
+/**
+ * Check if the given value is an object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is an object, else `false`.
+ */
+function isObject(value) {
+ return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null;
+}
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * Check if the given value is a plain object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.
+ */
+
+function isPlainObject(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+
+ try {
+ var _constructor = value.constructor;
+ var prototype = _constructor.prototype;
+
+
+ return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');
+ } catch (e) {
+ return false;
+ }
+}
+
+/**
+ * Check if the given value is a function.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a function, else `false`.
+ */
+function isFunction(value) {
+ return typeof value === 'function';
+}
+
+/**
+ * Iterate the given data.
+ * @param {*} data - The data to iterate.
+ * @param {Function} callback - The process function for each element.
+ * @returns {*} The original data.
+ */
+function each(data, callback) {
+ if (data && isFunction(callback)) {
+ if (Array.isArray(data) || isNumber(data.length) /* array-like */) {
+ var length = data.length;
+
+ var i = void 0;
+
+ for (i = 0; i < length; i += 1) {
+ if (callback.call(data, data[i], i, data) === false) {
+ break;
+ }
+ }
+ } else if (isObject(data)) {
+ Object.keys(data).forEach(function (key) {
+ callback.call(data, data[key], key, data);
+ });
+ }
+ }
+
+ return data;
+}
+
+/**
+ * Extend the given object.
+ * @param {*} obj - The object to be extended.
+ * @param {*} args - The rest objects which will be merged to the first object.
+ * @returns {Object} The extended object.
+ */
+function extend(obj) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ if (isObject(obj) && args.length > 0) {
+ if (Object.assign) {
+ return Object.assign.apply(Object, [obj].concat(args));
+ }
+
+ args.forEach(function (arg) {
+ if (isObject(arg)) {
+ Object.keys(arg).forEach(function (key) {
+ obj[key] = arg[key];
+ });
+ }
+ });
+ }
+
+ return obj;
+}
+
+/**
+ * Takes a function and returns a new one that will always have a particular context.
+ * @param {Function} fn - The target function.
+ * @param {Object} context - The new context for the function.
+ * @returns {boolean} The new function.
+ */
+function proxy(fn, context) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ return function () {
+ for (var _len3 = arguments.length, args2 = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args2[_key3] = arguments[_key3];
+ }
+
+ return fn.apply(context, args.concat(args2));
+ };
+}
+
+var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/i;
+
+/**
+ * Normalize decimal number.
+ * Check out {@link http://0.30000000000000004.com/ }
+ * @param {number} value - The value to normalize.
+ * @param {number} [times=100000000000] - The times for normalizing.
+ * @returns {number} Returns the normalized number.
+ */
+function normalizeDecimalNumber(value) {
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;
+
+ return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;
+}
+
+var REGEXP_SUFFIX = /^(width|height|left|top|marginLeft|marginTop)$/;
+
+/**
+ * Apply styles to the given element.
+ * @param {Element} element - The target element.
+ * @param {Object} styles - The styles for applying.
+ */
+function setStyle(element, styles) {
+ var style = element.style;
+
+
+ each(styles, function (value, property) {
+ if (REGEXP_SUFFIX.test(property) && isNumber(value)) {
+ value += 'px';
+ }
+
+ style[property] = value;
+ });
+}
+
+/**
+ * Check if the given element has a special class.
+ * @param {Element} element - The element to check.
+ * @param {string} value - The class to search.
+ * @returns {boolean} Returns `true` if the special class was found.
+ */
+function hasClass(element, value) {
+ return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;
+}
+
+/**
+ * Add classes to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be added.
+ */
+function addClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ addClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.add(value);
+ return;
+ }
+
+ var className = element.className.trim();
+
+ if (!className) {
+ element.className = value;
+ } else if (className.indexOf(value) < 0) {
+ element.className = className + ' ' + value;
+ }
+}
+
+/**
+ * Remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be removed.
+ */
+function removeClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ removeClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.remove(value);
+ return;
+ }
+
+ if (element.className.indexOf(value) >= 0) {
+ element.className = element.className.replace(value, '');
+ }
+}
+
+/**
+ * Add or remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be toggled.
+ * @param {boolean} added - Add only.
+ */
+function toggleClass(element, value, added) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, function (elem) {
+ toggleClass(elem, value, added);
+ });
+ return;
+ }
+
+ // IE10-11 doesn't support the second parameter of `classList.toggle`
+ if (added) {
+ addClass(element, value);
+ } else {
+ removeClass(element, value);
+ }
+}
+
+var REGEXP_HYPHENATE = /([a-z\d])([A-Z])/g;
+
+/**
+ * Hyphenate the given value.
+ * @param {string} value - The value to hyphenate.
+ * @returns {string} The hyphenated value.
+ */
+function hyphenate(value) {
+ return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();
+}
+
+/**
+ * Get data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to get.
+ * @returns {string} The data value.
+ */
+function getData(element, name) {
+ if (isObject(element[name])) {
+ return element[name];
+ } else if (element.dataset) {
+ return element.dataset[name];
+ }
+
+ return element.getAttribute('data-' + hyphenate(name));
+}
+
+/**
+ * Set data to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to set.
+ * @param {string} data - The data value.
+ */
+function setData(element, name, data) {
+ if (isObject(data)) {
+ element[name] = data;
+ } else if (element.dataset) {
+ element.dataset[name] = data;
+ } else {
+ element.setAttribute('data-' + hyphenate(name), data);
+ }
+}
+
+/**
+ * Remove data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to remove.
+ */
+function removeData(element, name) {
+ if (isObject(element[name])) {
+ try {
+ delete element[name];
+ } catch (e) {
+ element[name] = null;
+ }
+ } else if (element.dataset) {
+ // #128 Safari not allows to delete dataset property
+ try {
+ delete element.dataset[name];
+ } catch (e) {
+ element.dataset[name] = null;
+ }
+ } else {
+ element.removeAttribute('data-' + hyphenate(name));
+ }
+}
+
+var REGEXP_SPACES = /\s+/;
+
+/**
+ * Remove event listener from the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function removeListener(element, type, listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ removeListener(element, t, listener, options);
+ });
+ return;
+ }
+
+ if (element.removeEventListener) {
+ element.removeEventListener(type, listener, options);
+ } else if (element.detachEvent) {
+ element.detachEvent('on' + type, listener);
+ }
+}
+
+/**
+ * Add event listener to the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+function addListener(element, type, _listener) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!isFunction(_listener)) {
+ return;
+ }
+
+ var types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, function (t) {
+ addListener(element, t, _listener, options);
+ });
+ return;
+ }
+
+ if (options.once) {
+ var originalListener = _listener;
+
+ _listener = function listener() {
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ removeListener(element, type, _listener, options);
+ return originalListener.apply(element, args);
+ };
+ }
+
+ if (element.addEventListener) {
+ element.addEventListener(type, _listener, options);
+ } else if (element.attachEvent) {
+ element.attachEvent('on' + type, _listener);
+ }
+}
+
+/**
+ * Dispatch event on the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Object} data - The additional event data.
+ * @returns {boolean} Indicate if the event is default prevented or not.
+ */
+function dispatchEvent(element, type, data) {
+ if (element.dispatchEvent) {
+ var event = void 0;
+
+ // Event and CustomEvent on IE9-11 are global objects, not constructors
+ if (isFunction(Event) && isFunction(CustomEvent)) {
+ if (isUndefined(data)) {
+ event = new Event(type, {
+ bubbles: true,
+ cancelable: true
+ });
+ } else {
+ event = new CustomEvent(type, {
+ detail: data,
+ bubbles: true,
+ cancelable: true
+ });
+ }
+ } else if (isUndefined(data)) {
+ event = document.createEvent('Event');
+ event.initEvent(type, true, true);
+ } else {
+ event = document.createEvent('CustomEvent');
+ event.initCustomEvent(type, true, true, data);
+ }
+
+ // IE9+
+ return element.dispatchEvent(event);
+ } else if (element.fireEvent) {
+ // IE6-10 (native events only)
+ return element.fireEvent('on' + type);
+ }
+
+ return true;
+}
+
+/**
+ * Get the offset base on the document.
+ * @param {Element} element - The target element.
+ * @returns {Object} The offset data.
+ */
+function getOffset(element) {
+ var doc = document.documentElement;
+ var box = element.getBoundingClientRect();
+
+ return {
+ left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)),
+ top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0))
+ };
+}
+
+/**
+ * Empty an element.
+ * @param {Element} element - The element to empty.
+ */
+function empty(element) {
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+var location = WINDOW.location;
+
+var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i;
+
+/**
+ * Check if the given URL is a cross origin URL.
+ * @param {string} url - The target URL.
+ * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.
+ */
+function isCrossOriginURL(url) {
+ var parts = url.match(REGEXP_ORIGINS);
+
+ return parts && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
+}
+
+/**
+ * Add timestamp to the given URL.
+ * @param {string} url - The target URL.
+ * @returns {string} The result URL.
+ */
+function addTimestamp(url) {
+ var timestamp = 'timestamp=' + new Date().getTime();
+
+ return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;
+}
+
+/**
+ * Get transforms base on the given object.
+ * @param {Object} obj - The target object.
+ * @returns {string} A string contains transform values.
+ */
+function getTransforms(_ref) {
+ var rotate = _ref.rotate,
+ scaleX = _ref.scaleX,
+ scaleY = _ref.scaleY,
+ translateX = _ref.translateX,
+ translateY = _ref.translateY;
+
+ var values = [];
+
+ if (isNumber(translateX) && translateX !== 0) {
+ values.push('translateX(' + translateX + 'px)');
+ }
+
+ if (isNumber(translateY) && translateY !== 0) {
+ values.push('translateY(' + translateY + 'px)');
+ }
+
+ // Rotate should come first before scale to match orientation transform
+ if (isNumber(rotate) && rotate !== 0) {
+ values.push('rotate(' + rotate + 'deg)');
+ }
+
+ if (isNumber(scaleX) && scaleX !== 1) {
+ values.push('scaleX(' + scaleX + ')');
+ }
+
+ if (isNumber(scaleY) && scaleY !== 1) {
+ values.push('scaleY(' + scaleY + ')');
+ }
+
+ var transform = values.length ? values.join(' ') : 'none';
+
+ return {
+ WebkitTransform: transform,
+ msTransform: transform,
+ transform: transform
+ };
+}
+
+var navigator = WINDOW.navigator;
+
+var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
+
+/**
+ * Get an image's natural sizes.
+ * @param {string} image - The target image.
+ * @param {Function} callback - The callback function.
+ */
+function getImageNaturalSizes(image, callback) {
+ // Modern browsers (except Safari)
+ if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) {
+ callback(image.naturalWidth, image.naturalHeight);
+ return;
+ }
+
+ var newImage = document.createElement('img');
+ var body = document.body || document.documentElement;
+
+ newImage.onload = function () {
+ callback(newImage.width, newImage.height);
+
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ body.removeChild(newImage);
+ }
+ };
+
+ newImage.src = image.src;
+
+ // iOS Safari will convert the image automatically
+ // with its orientation once append it into DOM (#279)
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';
+ body.appendChild(newImage);
+ }
+}
+
+/**
+ * Get the max ratio of a group of pointers.
+ * @param {string} pointers - The target pointers.
+ * @returns {number} The result ratio.
+ */
+function getMaxZoomRatio(pointers) {
+ var pointers2 = extend({}, pointers);
+ var ratios = [];
+
+ each(pointers, function (pointer, pointerId) {
+ delete pointers2[pointerId];
+
+ each(pointers2, function (pointer2) {
+ var x1 = Math.abs(pointer.startX - pointer2.startX);
+ var y1 = Math.abs(pointer.startY - pointer2.startY);
+ var x2 = Math.abs(pointer.endX - pointer2.endX);
+ var y2 = Math.abs(pointer.endY - pointer2.endY);
+ var z1 = Math.sqrt(x1 * x1 + y1 * y1);
+ var z2 = Math.sqrt(x2 * x2 + y2 * y2);
+ var ratio = (z2 - z1) / z1;
+
+ ratios.push(ratio);
+ });
+ });
+
+ ratios.sort(function (a, b) {
+ return Math.abs(a) < Math.abs(b);
+ });
+
+ return ratios[0];
+}
+
+/**
+ * Get a pointer from an event object.
+ * @param {Object} event - The target event object.
+ * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.
+ * @returns {Object} The result pointer contains start and/or end point coordinates.
+ */
+function getPointer(_ref2, endOnly) {
+ var pageX = _ref2.pageX,
+ pageY = _ref2.pageY;
+
+ var end = {
+ endX: pageX,
+ endY: pageY
+ };
+
+ if (endOnly) {
+ return end;
+ }
+
+ return extend({
+ startX: pageX,
+ startY: pageY
+ }, end);
+}
+
+/**
+ * Get the center point coordinate of a group of pointers.
+ * @param {Object} pointers - The target pointers.
+ * @returns {Object} The center point coordinate.
+ */
+function getPointersCenter(pointers) {
+ var pageX = 0;
+ var pageY = 0;
+ var count = 0;
+
+ each(pointers, function (_ref3) {
+ var startX = _ref3.startX,
+ startY = _ref3.startY;
+
+ pageX += startX;
+ pageY += startY;
+ count += 1;
+ });
+
+ pageX /= count;
+ pageY /= count;
+
+ return {
+ pageX: pageX,
+ pageY: pageY
+ };
+}
+
+/**
+ * Check if the given value is a finite number.
+ */
+var isFinite = Number.isFinite || WINDOW.isFinite;
+
+/**
+ * Get the max sizes in a rectangle under the given aspect ratio.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getContainSizes(_ref4) {
+ var aspectRatio = _ref4.aspectRatio,
+ height = _ref4.height,
+ width = _ref4.width;
+
+ var isValidNumber = function isValidNumber(value) {
+ return isFinite(value) && value > 0;
+ };
+
+ if (isValidNumber(width) && isValidNumber(height)) {
+ if (height * aspectRatio > width) {
+ height = width / aspectRatio;
+ } else {
+ width = height * aspectRatio;
+ }
+ } else if (isValidNumber(width)) {
+ height = width / aspectRatio;
+ } else if (isValidNumber(height)) {
+ width = height * aspectRatio;
+ }
+
+ return {
+ width: width,
+ height: height
+ };
+}
+
+/**
+ * Get the new sizes of a rectangle after rotated.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+function getRotatedSizes(_ref5) {
+ var width = _ref5.width,
+ height = _ref5.height,
+ degree = _ref5.degree;
+
+ degree = Math.abs(degree) % 180;
+
+ if (degree === 90) {
+ return {
+ width: height,
+ height: width
+ };
+ }
+
+ var arc = degree % 90 * Math.PI / 180;
+ var sinArc = Math.sin(arc);
+ var cosArc = Math.cos(arc);
+ var newWidth = width * cosArc + height * sinArc;
+ var newHeight = width * sinArc + height * cosArc;
+
+ return degree > 90 ? {
+ width: newHeight,
+ height: newWidth
+ } : {
+ width: newWidth,
+ height: newHeight
+ };
+}
+
+/**
+ * Get a canvas which drew the given image.
+ * @param {HTMLImageElement} image - The image for drawing.
+ * @param {Object} imageData - The image data.
+ * @param {Object} canvasData - The canvas data.
+ * @param {Object} options - The options.
+ * @returns {HTMLCanvasElement} The result canvas.
+ */
+function getSourceCanvas(image, _ref6, _ref7, _ref8) {
+ var imageNaturalWidth = _ref6.naturalWidth,
+ imageNaturalHeight = _ref6.naturalHeight,
+ _ref6$rotate = _ref6.rotate,
+ rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate,
+ _ref6$scaleX = _ref6.scaleX,
+ scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX,
+ _ref6$scaleY = _ref6.scaleY,
+ scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY;
+ var aspectRatio = _ref7.aspectRatio,
+ naturalWidth = _ref7.naturalWidth,
+ naturalHeight = _ref7.naturalHeight;
+ var _ref8$fillColor = _ref8.fillColor,
+ fillColor = _ref8$fillColor === undefined ? 'transparent' : _ref8$fillColor,
+ _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,
+ imageSmoothingEnabled = _ref8$imageSmoothingE === undefined ? true : _ref8$imageSmoothingE,
+ _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,
+ imageSmoothingQuality = _ref8$imageSmoothingQ === undefined ? 'low' : _ref8$imageSmoothingQ,
+ _ref8$maxWidth = _ref8.maxWidth,
+ maxWidth = _ref8$maxWidth === undefined ? Infinity : _ref8$maxWidth,
+ _ref8$maxHeight = _ref8.maxHeight,
+ maxHeight = _ref8$maxHeight === undefined ? Infinity : _ref8$maxHeight,
+ _ref8$minWidth = _ref8.minWidth,
+ minWidth = _ref8$minWidth === undefined ? 0 : _ref8$minWidth,
+ _ref8$minHeight = _ref8.minHeight,
+ minHeight = _ref8$minHeight === undefined ? 0 : _ref8$minHeight;
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: maxWidth,
+ height: maxHeight
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minWidth,
+ height: minHeight
+ });
+ var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));
+ var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));
+ var params = [-imageNaturalWidth / 2, -imageNaturalHeight / 2, imageNaturalWidth, imageNaturalHeight];
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+ context.fillStyle = fillColor;
+ context.fillRect(0, 0, width, height);
+ context.save();
+ context.translate(width / 2, height / 2);
+ context.rotate(rotate * Math.PI / 180);
+ context.scale(scaleX, scaleY);
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ context.drawImage.apply(context, [image].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+ context.restore();
+ return canvas;
+}
+
+var fromCharCode = String.fromCharCode;
+
+/**
+ * Get string from char code in data view.
+ * @param {DataView} dataView - The data view for read.
+ * @param {number} start - The start index.
+ * @param {number} length - The read length.
+ * @returns {string} The read result.
+ */
+
+function getStringFromCharCode(dataView, start, length) {
+ var str = '';
+ var i = void 0;
+
+ length += start;
+
+ for (i = start; i < length; i += 1) {
+ str += fromCharCode(dataView.getUint8(i));
+ }
+
+ return str;
+}
+
+var REGEXP_DATA_URL_HEAD = /^data:.*,/;
+
+/**
+ * Transform Data URL to array buffer.
+ * @param {string} dataURL - The Data URL to transform.
+ * @returns {ArrayBuffer} The result array buffer.
+ */
+function dataURLToArrayBuffer(dataURL) {
+ var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');
+ var binary = atob(base64);
+ var arrayBuffer = new ArrayBuffer(binary.length);
+ var uint8 = new Uint8Array(arrayBuffer);
+
+ each(uint8, function (value, i) {
+ uint8[i] = binary.charCodeAt(i);
+ });
+
+ return arrayBuffer;
+}
+
+/**
+ * Transform array buffer to Data URL.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.
+ * @param {string} mimeType - The mime type of the Data URL.
+ * @returns {string} The result Data URL.
+ */
+function arrayBufferToDataURL(arrayBuffer, mimeType) {
+ var uint8 = new Uint8Array(arrayBuffer);
+ var data = '';
+
+ // TypedArray.prototype.forEach is not supported in some browsers.
+ each(uint8, function (value) {
+ data += fromCharCode(value);
+ });
+
+ return 'data:' + mimeType + ';base64,' + btoa(data);
+}
+
+/**
+ * Get orientation value from given array buffer.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to read.
+ * @returns {number} The read orientation value.
+ */
+function getOrientation(arrayBuffer) {
+ var dataView = new DataView(arrayBuffer);
+ var orientation = void 0;
+ var littleEndian = void 0;
+ var app1Start = void 0;
+ var ifdStart = void 0;
+
+ // Only handle JPEG image (start by 0xFFD8)
+ if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {
+ var length = dataView.byteLength;
+ var offset = 2;
+
+ while (offset < length) {
+ if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {
+ app1Start = offset;
+ break;
+ }
+
+ offset += 1;
+ }
+ }
+
+ if (app1Start) {
+ var exifIDCode = app1Start + 4;
+ var tiffOffset = app1Start + 10;
+
+ if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {
+ var endianness = dataView.getUint16(tiffOffset);
+
+ littleEndian = endianness === 0x4949;
+
+ if (littleEndian || endianness === 0x4D4D /* bigEndian */) {
+ if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {
+ var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);
+
+ if (firstIFDOffset >= 0x00000008) {
+ ifdStart = tiffOffset + firstIFDOffset;
+ }
+ }
+ }
+ }
+ }
+
+ if (ifdStart) {
+ var _length = dataView.getUint16(ifdStart, littleEndian);
+ var _offset = void 0;
+ var i = void 0;
+
+ for (i = 0; i < _length; i += 1) {
+ _offset = ifdStart + i * 12 + 2;
+
+ if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {
+ // 8 is the offset of the current tag's value
+ _offset += 8;
+
+ // Get the original orientation value
+ orientation = dataView.getUint16(_offset, littleEndian);
+
+ // Override the orientation with its default value
+ dataView.setUint16(_offset, 1, littleEndian);
+ break;
+ }
+ }
+ }
+
+ return orientation;
+}
+
+/**
+ * Parse Exif Orientation value.
+ * @param {number} orientation - The orientation to parse.
+ * @returns {Object} The parsed result.
+ */
+function parseOrientation(orientation) {
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ switch (orientation) {
+ // Flip horizontal
+ case 2:
+ scaleX = -1;
+ break;
+
+ // Rotate left 180°
+ case 3:
+ rotate = -180;
+ break;
+
+ // Flip vertical
+ case 4:
+ scaleY = -1;
+ break;
+
+ // Flip vertical and rotate right 90°
+ case 5:
+ rotate = 90;
+ scaleY = -1;
+ break;
+
+ // Rotate right 90°
+ case 6:
+ rotate = 90;
+ break;
+
+ // Flip horizontal and rotate right 90°
+ case 7:
+ rotate = 90;
+ scaleX = -1;
+ break;
+
+ // Rotate left 90°
+ case 8:
+ rotate = -90;
+ break;
+
+ default:
+ }
+
+ return {
+ rotate: rotate,
+ scaleX: scaleX,
+ scaleY: scaleY
+ };
+}
+
+var render = {
+ render: function render() {
+ this.initContainer();
+ this.initCanvas();
+ this.initCropBox();
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ },
+ initContainer: function initContainer() {
+ var element = this.element,
+ options = this.options,
+ container = this.container,
+ cropper = this.cropper;
+
+
+ addClass(cropper, CLASS_HIDDEN);
+ removeClass(element, CLASS_HIDDEN);
+
+ var containerData = {
+ width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),
+ height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)
+ };
+
+ this.containerData = containerData;
+
+ setStyle(cropper, {
+ width: containerData.width,
+ height: containerData.height
+ });
+
+ addClass(element, CLASS_HIDDEN);
+ removeClass(cropper, CLASS_HIDDEN);
+ },
+
+
+ // Canvas (image wrapper)
+ initCanvas: function initCanvas() {
+ var containerData = this.containerData,
+ imageData = this.imageData;
+ var viewMode = this.options.viewMode;
+
+ var rotated = Math.abs(imageData.rotate) % 180 === 90;
+ var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;
+ var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;
+ var aspectRatio = naturalWidth / naturalHeight;
+ var canvasWidth = containerData.width;
+ var canvasHeight = containerData.height;
+
+ if (containerData.height * aspectRatio > containerData.width) {
+ if (viewMode === 3) {
+ canvasWidth = containerData.height * aspectRatio;
+ } else {
+ canvasHeight = containerData.width / aspectRatio;
+ }
+ } else if (viewMode === 3) {
+ canvasHeight = containerData.width / aspectRatio;
+ } else {
+ canvasWidth = containerData.height * aspectRatio;
+ }
+
+ var canvasData = {
+ aspectRatio: aspectRatio,
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ width: canvasWidth,
+ height: canvasHeight
+ };
+
+ canvasData.left = (containerData.width - canvasWidth) / 2;
+ canvasData.top = (containerData.height - canvasHeight) / 2;
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ this.canvasData = canvasData;
+ this.limited = viewMode === 1 || viewMode === 2;
+ this.limitCanvas(true, true);
+ this.initialImageData = extend({}, imageData);
+ this.initialCanvasData = extend({}, canvasData);
+ },
+ limitCanvas: function limitCanvas(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var viewMode = options.viewMode;
+ var aspectRatio = canvasData.aspectRatio;
+
+ var cropped = this.cropped && cropBoxData;
+
+ if (sizeLimited) {
+ var minCanvasWidth = Number(options.minCanvasWidth) || 0;
+ var minCanvasHeight = Number(options.minCanvasHeight) || 0;
+
+ if (viewMode > 1) {
+ minCanvasWidth = Math.max(minCanvasWidth, containerData.width);
+ minCanvasHeight = Math.max(minCanvasHeight, containerData.height);
+
+ if (viewMode === 3) {
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ } else if (viewMode > 0) {
+ if (minCanvasWidth) {
+ minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);
+ } else if (minCanvasHeight) {
+ minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);
+ } else if (cropped) {
+ minCanvasWidth = cropBoxData.width;
+ minCanvasHeight = cropBoxData.height;
+
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ }
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: minCanvasWidth,
+ height: minCanvasHeight
+ });
+
+ minCanvasWidth = _getContainSizes.width;
+ minCanvasHeight = _getContainSizes.height;
+
+
+ canvasData.minWidth = minCanvasWidth;
+ canvasData.minHeight = minCanvasHeight;
+ canvasData.maxWidth = Infinity;
+ canvasData.maxHeight = Infinity;
+ }
+
+ if (positionLimited) {
+ if (viewMode) {
+ var newCanvasLeft = containerData.width - canvasData.width;
+ var newCanvasTop = containerData.height - canvasData.height;
+
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+
+ if (cropped && this.limited) {
+ canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));
+ canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));
+ canvasData.maxLeft = cropBoxData.left;
+ canvasData.maxTop = cropBoxData.top;
+
+ if (viewMode === 2) {
+ if (canvasData.width >= containerData.width) {
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ }
+
+ if (canvasData.height >= containerData.height) {
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+ }
+ }
+ }
+ } else {
+ canvasData.minLeft = -canvasData.width;
+ canvasData.minTop = -canvasData.height;
+ canvasData.maxLeft = containerData.width;
+ canvasData.maxTop = containerData.height;
+ }
+ }
+ },
+ renderCanvas: function renderCanvas(changed, transformed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+
+ if (transformed) {
+ var _getRotatedSizes = getRotatedSizes({
+ width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),
+ height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),
+ degree: imageData.rotate || 0
+ }),
+ naturalWidth = _getRotatedSizes.width,
+ naturalHeight = _getRotatedSizes.height;
+
+ var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);
+ var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);
+
+ canvasData.left -= (width - canvasData.width) / 2;
+ canvasData.top -= (height - canvasData.height) / 2;
+ canvasData.width = width;
+ canvasData.height = height;
+ canvasData.aspectRatio = naturalWidth / naturalHeight;
+ canvasData.naturalWidth = naturalWidth;
+ canvasData.naturalHeight = naturalHeight;
+ this.limitCanvas(true, false);
+ }
+
+ if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {
+ canvasData.left = canvasData.oldLeft;
+ }
+
+ if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {
+ canvasData.top = canvasData.oldTop;
+ }
+
+ canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);
+ canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);
+
+ this.limitCanvas(false, true);
+
+ canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);
+ canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ setStyle(this.canvas, extend({
+ width: canvasData.width,
+ height: canvasData.height
+ }, getTransforms({
+ translateX: canvasData.left,
+ translateY: canvasData.top
+ })));
+
+ this.renderImage(changed);
+
+ if (this.cropped && this.limited) {
+ this.limitCropBox(true, true);
+ }
+ },
+ renderImage: function renderImage(changed) {
+ var canvasData = this.canvasData,
+ imageData = this.imageData;
+
+ var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);
+ var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);
+
+ extend(imageData, {
+ width: width,
+ height: height,
+ left: (canvasData.width - width) / 2,
+ top: (canvasData.height - height) / 2
+ });
+ setStyle(this.image, extend({
+ width: imageData.width,
+ height: imageData.height
+ }, getTransforms(extend({
+ translateX: imageData.left,
+ translateY: imageData.top
+ }, imageData))));
+
+ if (changed) {
+ this.output();
+ }
+ },
+ initCropBox: function initCropBox() {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var aspectRatio = options.aspectRatio;
+
+ var autoCropArea = Number(options.autoCropArea) || 0.8;
+ var cropBoxData = {
+ width: canvasData.width,
+ height: canvasData.height
+ };
+
+ if (aspectRatio) {
+ if (canvasData.height * aspectRatio > canvasData.width) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.cropBoxData = cropBoxData;
+ this.limitCropBox(true, true);
+
+ // Initialize auto crop area
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ // The width/height of auto crop area must large than "minWidth/Height"
+ cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);
+ cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);
+ cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;
+ cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ this.initialCropBoxData = extend({}, cropBoxData);
+ },
+ limitCropBox: function limitCropBox(sizeLimited, positionLimited) {
+ var options = this.options,
+ containerData = this.containerData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData,
+ limited = this.limited;
+ var aspectRatio = options.aspectRatio;
+
+
+ if (sizeLimited) {
+ var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;
+ var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;
+ var maxCropBoxWidth = Math.min(containerData.width, limited ? canvasData.width : containerData.width);
+ var maxCropBoxHeight = Math.min(containerData.height, limited ? canvasData.height : containerData.height);
+
+ // The min/maxCropBoxWidth/Height must be less than container's width/height
+ minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);
+ minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);
+
+ if (aspectRatio) {
+ if (minCropBoxWidth && minCropBoxHeight) {
+ if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+ } else if (minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else if (minCropBoxHeight) {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+
+ if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {
+ maxCropBoxHeight = maxCropBoxWidth / aspectRatio;
+ } else {
+ maxCropBoxWidth = maxCropBoxHeight * aspectRatio;
+ }
+ }
+
+ // The minWidth/Height must be less than maxWidth/Height
+ cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);
+ cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);
+ cropBoxData.maxWidth = maxCropBoxWidth;
+ cropBoxData.maxHeight = maxCropBoxHeight;
+ }
+
+ if (positionLimited) {
+ if (limited) {
+ cropBoxData.minLeft = Math.max(0, canvasData.left);
+ cropBoxData.minTop = Math.max(0, canvasData.top);
+ cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;
+ cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;
+ } else {
+ cropBoxData.minLeft = 0;
+ cropBoxData.minTop = 0;
+ cropBoxData.maxLeft = containerData.width - cropBoxData.width;
+ cropBoxData.maxTop = containerData.height - cropBoxData.height;
+ }
+ }
+ },
+ renderCropBox: function renderCropBox() {
+ var options = this.options,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData;
+
+
+ if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {
+ cropBoxData.left = cropBoxData.oldLeft;
+ }
+
+ if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {
+ cropBoxData.top = cropBoxData.oldTop;
+ }
+
+ cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
+ cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
+
+ this.limitCropBox(false, true);
+
+ cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);
+ cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ if (options.movable && options.cropBoxMovable) {
+ // Turn to move the canvas when the crop box is equal to the container
+ setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);
+ }
+
+ setStyle(this.cropBox, extend({
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ }, getTransforms({
+ translateX: cropBoxData.left,
+ translateY: cropBoxData.top
+ })));
+
+ if (this.cropped && this.limited) {
+ this.limitCanvas(true, true);
+ }
+
+ if (!this.disabled) {
+ this.output();
+ }
+ },
+ output: function output() {
+ this.preview();
+
+ if (this.complete) {
+ dispatchEvent(this.element, EVENT_CROP, this.getData());
+ }
+ }
+};
+
+var preview = {
+ initPreview: function initPreview() {
+ var crossOrigin = this.crossOrigin;
+ var preview = this.options.preview;
+
+ var url = crossOrigin ? this.crossOriginUrl : this.url;
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = url;
+ this.viewBox.appendChild(image);
+ this.image2 = image;
+
+ if (!preview) {
+ return;
+ }
+
+ var previews = preview.querySelector ? [preview] : document.querySelectorAll(preview);
+
+ this.previews = previews;
+
+ each(previews, function (element) {
+ var img = document.createElement('img');
+
+ // Save the original size for recover
+ setData(element, DATA_PREVIEW, {
+ width: element.offsetWidth,
+ height: element.offsetHeight,
+ html: element.innerHTML
+ });
+
+ if (crossOrigin) {
+ img.crossOrigin = crossOrigin;
+ }
+
+ img.src = url;
+
+ /**
+ * Override img element styles
+ * Add `display:block` to avoid margin top issue
+ * Add `height:auto` to override `height` attribute on IE8
+ * (Occur only when margin-top <= -height)
+ */
+ img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"';
+
+ empty(element);
+ element.appendChild(img);
+ });
+ },
+ resetPreview: function resetPreview() {
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+
+ setStyle(element, {
+ width: data.width,
+ height: data.height
+ });
+
+ element.innerHTML = data.html;
+ removeData(element, DATA_PREVIEW);
+ });
+ },
+ preview: function preview() {
+ var imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+ var cropBoxWidth = cropBoxData.width,
+ cropBoxHeight = cropBoxData.height;
+ var width = imageData.width,
+ height = imageData.height;
+
+ var left = cropBoxData.left - canvasData.left - imageData.left;
+ var top = cropBoxData.top - canvasData.top - imageData.top;
+
+ if (!this.cropped || this.disabled) {
+ return;
+ }
+
+ setStyle(this.image2, extend({
+ width: width,
+ height: height
+ }, getTransforms(extend({
+ translateX: -left,
+ translateY: -top
+ }, imageData))));
+
+ each(this.previews, function (element) {
+ var data = getData(element, DATA_PREVIEW);
+ var originalWidth = data.width;
+ var originalHeight = data.height;
+ var newWidth = originalWidth;
+ var newHeight = originalHeight;
+ var ratio = 1;
+
+ if (cropBoxWidth) {
+ ratio = originalWidth / cropBoxWidth;
+ newHeight = cropBoxHeight * ratio;
+ }
+
+ if (cropBoxHeight && newHeight > originalHeight) {
+ ratio = originalHeight / cropBoxHeight;
+ newWidth = cropBoxWidth * ratio;
+ newHeight = originalHeight;
+ }
+
+ setStyle(element, {
+ width: newWidth,
+ height: newHeight
+ });
+
+ setStyle(element.getElementsByTagName('img')[0], extend({
+ width: width * ratio,
+ height: height * ratio
+ }, getTransforms(extend({
+ translateX: -left * ratio,
+ translateY: -top * ratio
+ }, imageData))));
+ });
+ }
+};
+
+var events = {
+ bind: function bind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ addListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ addListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ addListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ addListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ addListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = proxy(this.cropStart, this));
+
+ if (options.zoomable && options.zoomOnWheel) {
+ addListener(cropper, EVENT_WHEEL, this.onWheel = proxy(this.wheel, this));
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ addListener(cropper, EVENT_DBLCLICK, this.onDblclick = proxy(this.dblclick, this));
+ }
+
+ addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = proxy(this.cropMove, this));
+ addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this));
+
+ if (options.responsive) {
+ addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this));
+ }
+ },
+ unbind: function unbind() {
+ var element = this.element,
+ options = this.options,
+ cropper = this.cropper;
+
+
+ if (isFunction(options.cropstart)) {
+ removeListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ removeListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ removeListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ removeListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ removeListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);
+
+ if (options.zoomable && options.zoomOnWheel) {
+ removeListener(cropper, EVENT_WHEEL, this.onWheel);
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);
+ }
+
+ removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);
+ removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);
+
+ if (options.responsive) {
+ removeListener(window, EVENT_RESIZE, this.onResize);
+ }
+ }
+};
+
+var handlers = {
+ resize: function resize() {
+ var options = this.options,
+ container = this.container,
+ containerData = this.containerData;
+
+ var minContainerWidth = Number(options.minContainerWidth) || 200;
+ var minContainerHeight = Number(options.minContainerHeight) || 100;
+
+ if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) {
+ return;
+ }
+
+ var ratio = container.offsetWidth / containerData.width;
+
+ // Resize when width changed or height changed
+ if (ratio !== 1 || container.offsetHeight !== containerData.height) {
+ var canvasData = void 0;
+ var cropBoxData = void 0;
+
+ if (options.restore) {
+ canvasData = this.getCanvasData();
+ cropBoxData = this.getCropBoxData();
+ }
+
+ this.render();
+
+ if (options.restore) {
+ this.setCanvasData(each(canvasData, function (n, i) {
+ canvasData[i] = n * ratio;
+ }));
+ this.setCropBoxData(each(cropBoxData, function (n, i) {
+ cropBoxData[i] = n * ratio;
+ }));
+ }
+ }
+ },
+ dblclick: function dblclick() {
+ if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {
+ return;
+ }
+
+ this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);
+ },
+ wheel: function wheel(e) {
+ var _this = this;
+
+ var ratio = Number(this.options.wheelZoomRatio) || 0.1;
+ var delta = 1;
+
+ if (this.disabled) {
+ return;
+ }
+
+ e.preventDefault();
+
+ // Limit wheel speed to prevent zoom too fast (#21)
+ if (this.wheeling) {
+ return;
+ }
+
+ this.wheeling = true;
+
+ setTimeout(function () {
+ _this.wheeling = false;
+ }, 50);
+
+ if (e.deltaY) {
+ delta = e.deltaY > 0 ? 1 : -1;
+ } else if (e.wheelDelta) {
+ delta = -e.wheelDelta / 120;
+ } else if (e.detail) {
+ delta = e.detail > 0 ? 1 : -1;
+ }
+
+ this.zoom(-delta * ratio, e);
+ },
+ cropStart: function cropStart(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var options = this.options,
+ pointers = this.pointers;
+
+ var action = void 0;
+
+ if (e.changedTouches) {
+ // Handle touch event
+ each(e.changedTouches, function (touch) {
+ pointers[touch.identifier] = getPointer(touch);
+ });
+ } else {
+ // Handle mouse event and pointer event
+ pointers[e.pointerId || 0] = getPointer(e);
+ }
+
+ if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {
+ action = ACTION_ZOOM;
+ } else {
+ action = getData(e.target, DATA_ACTION);
+ }
+
+ if (!REGEXP_ACTIONS.test(action)) {
+ return;
+ }
+
+ if (dispatchEvent(this.element, EVENT_CROP_START, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ e.preventDefault();
+
+ this.action = action;
+ this.cropping = false;
+
+ if (action === ACTION_CROP) {
+ this.cropping = true;
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+ },
+ cropMove: function cropMove(e) {
+ var action = this.action;
+
+
+ if (this.disabled || !action) {
+ return;
+ }
+
+ var pointers = this.pointers;
+
+
+ e.preventDefault();
+
+ if (dispatchEvent(this.element, EVENT_CROP_MOVE, {
+ originalEvent: e,
+ action: action
+ }) === false) {
+ return;
+ }
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ extend(pointers[touch.identifier], getPointer(touch, true));
+ });
+ } else {
+ extend(pointers[e.pointerId || 0], getPointer(e, true));
+ }
+
+ this.change(e);
+ },
+ cropEnd: function cropEnd(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ var action = this.action,
+ pointers = this.pointers;
+
+
+ if (e.changedTouches) {
+ each(e.changedTouches, function (touch) {
+ delete pointers[touch.identifier];
+ });
+ } else {
+ delete pointers[e.pointerId || 0];
+ }
+
+ if (!action) {
+ return;
+ }
+
+ e.preventDefault();
+
+ if (!Object.keys(pointers).length) {
+ this.action = '';
+ }
+
+ if (this.cropping) {
+ this.cropping = false;
+ toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);
+ }
+
+ dispatchEvent(this.element, EVENT_CROP_END, {
+ originalEvent: e,
+ action: action
+ });
+ }
+};
+
+var change = {
+ change: function change(e) {
+ var options = this.options,
+ canvasData = this.canvasData,
+ containerData = this.containerData,
+ cropBoxData = this.cropBoxData,
+ pointers = this.pointers;
+ var action = this.action;
+ var aspectRatio = options.aspectRatio;
+ var left = cropBoxData.left,
+ top = cropBoxData.top,
+ width = cropBoxData.width,
+ height = cropBoxData.height;
+
+ var right = left + width;
+ var bottom = top + height;
+ var minLeft = 0;
+ var minTop = 0;
+ var maxWidth = containerData.width;
+ var maxHeight = containerData.height;
+ var renderable = true;
+ var offset = void 0;
+
+ // Locking aspect ratio in "free mode" by holding shift key
+ if (!aspectRatio && e.shiftKey) {
+ aspectRatio = width && height ? width / height : 1;
+ }
+
+ if (this.limited) {
+ minLeft = cropBoxData.minLeft;
+ minTop = cropBoxData.minTop;
+
+ maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);
+ maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);
+ }
+
+ var pointer = pointers[Object.keys(pointers)[0]];
+ var range = {
+ x: pointer.endX - pointer.startX,
+ y: pointer.endY - pointer.startY
+ };
+ var check = function check(side) {
+ switch (side) {
+ case ACTION_EAST:
+ if (right + range.x > maxWidth) {
+ range.x = maxWidth - right;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (left + range.x < minLeft) {
+ range.x = minLeft - left;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (top + range.y < minTop) {
+ range.y = minTop - top;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (bottom + range.y > maxHeight) {
+ range.y = maxHeight - bottom;
+ }
+
+ break;
+
+ default:
+ }
+ };
+
+ switch (action) {
+ // Move crop box
+ case ACTION_ALL:
+ left += range.x;
+ top += range.y;
+ break;
+
+ // Resize crop box
+ case ACTION_EAST:
+ if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top -= range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_WEST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left += range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_SOUTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top += range.x / aspectRatio / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_EAST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_SOUTH);
+ height += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left -= range.y * aspectRatio / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_NORTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_EAST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_WEST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || left <= minLeft)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ left += range.y * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_WEST:
+ if (aspectRatio) {
+ if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_EAST:
+ if (aspectRatio) {
+ if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ // Move canvas
+ case ACTION_MOVE:
+ this.move(range.x, range.y);
+ renderable = false;
+ break;
+
+ // Zoom canvas
+ case ACTION_ZOOM:
+ this.zoom(getMaxZoomRatio(pointers), e);
+ renderable = false;
+ break;
+
+ // Create crop box
+ case ACTION_CROP:
+ if (!range.x || !range.y) {
+ renderable = false;
+ break;
+ }
+
+ offset = getOffset(this.cropper);
+ left = pointer.startX - offset.left;
+ top = pointer.startY - offset.top;
+ width = cropBoxData.minWidth;
+ height = cropBoxData.minHeight;
+
+ if (range.x > 0) {
+ action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;
+ } else if (range.x < 0) {
+ left -= width;
+ action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;
+ }
+
+ if (range.y < 0) {
+ top -= height;
+ }
+
+ // Show the crop box if is hidden
+ if (!this.cropped) {
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ this.cropped = true;
+
+ if (this.limited) {
+ this.limitCropBox(true, true);
+ }
+ }
+
+ break;
+
+ default:
+ }
+
+ if (renderable) {
+ cropBoxData.width = width;
+ cropBoxData.height = height;
+ cropBoxData.left = left;
+ cropBoxData.top = top;
+ this.action = action;
+ this.renderCropBox();
+ }
+
+ // Override
+ each(pointers, function (p) {
+ p.startX = p.endX;
+ p.startY = p.endY;
+ });
+ }
+};
+
+var methods = {
+ // Show the crop box manually
+ crop: function crop() {
+ if (this.ready && !this.disabled) {
+ if (!this.cropped) {
+ this.cropped = true;
+ this.limitCropBox(true, true);
+
+ if (this.options.modal) {
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ this.setCropBoxData(this.initialCropBoxData);
+ }
+
+ return this;
+ },
+
+
+ // Reset the image and crop box to their initial states
+ reset: function reset() {
+ if (this.ready && !this.disabled) {
+ this.imageData = extend({}, this.initialImageData);
+ this.canvasData = extend({}, this.initialCanvasData);
+ this.cropBoxData = extend({}, this.initialCropBoxData);
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+
+ return this;
+ },
+
+
+ // Clear the crop box
+ clear: function clear() {
+ if (this.cropped && !this.disabled) {
+ extend(this.cropBoxData, {
+ left: 0,
+ top: 0,
+ width: 0,
+ height: 0
+ });
+
+ this.cropped = false;
+ this.renderCropBox();
+ this.limitCanvas(true, true);
+
+ // Render canvas after crop box rendered
+ this.renderCanvas();
+ removeClass(this.dragBox, CLASS_MODAL);
+ addClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Replace the image's src and rebuild the cropper
+ * @param {string} url - The new URL.
+ * @param {boolean} [onlyColorChanged] - Indicate if the new image only changed color.
+ * @returns {Object} this
+ */
+ replace: function replace(url) {
+ var onlyColorChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ if (!this.disabled && url) {
+ if (this.isImg) {
+ this.element.src = url;
+ }
+
+ if (onlyColorChanged) {
+ this.url = url;
+ this.image.src = url;
+
+ if (this.ready) {
+ this.image2.src = url;
+
+ each(this.previews, function (element) {
+ element.getElementsByTagName('img')[0].src = url;
+ });
+ }
+ } else {
+ if (this.isImg) {
+ this.replaced = true;
+ }
+
+ // Clear previous data
+ this.options.data = null;
+ this.load(url);
+ }
+ }
+
+ return this;
+ },
+
+
+ // Enable (unfreeze) the cropper
+ enable: function enable() {
+ if (this.ready) {
+ this.disabled = false;
+ removeClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Disable (freeze) the cropper
+ disable: function disable() {
+ if (this.ready) {
+ this.disabled = true;
+ addClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+
+ // Destroy the cropper and remove the instance from the image
+ destroy: function destroy() {
+ var element = this.element,
+ image = this.image;
+
+
+ if (this.loaded) {
+ if (this.isImg && this.replaced) {
+ element.src = this.originalUrl;
+ }
+
+ this.unbuild();
+ removeClass(element, CLASS_HIDDEN);
+ } else if (this.isImg) {
+ removeListener(element, EVENT_LOAD, this.onStart);
+ } else if (image) {
+ image.parentNode.removeChild(image);
+ }
+
+ removeData(element, NAMESPACE);
+
+ return this;
+ },
+
+
+ /**
+ * Move the canvas with relative offsets
+ * @param {number} offsetX - The relative offset distance on the x-axis.
+ * @param {number} offsetY - The relative offset distance on the y-axis.
+ * @returns {Object} this
+ */
+ move: function move(offsetX, offsetY) {
+ var _canvasData = this.canvasData,
+ left = _canvasData.left,
+ top = _canvasData.top;
+
+
+ return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));
+ },
+
+
+ /**
+ * Move the canvas to an absolute point
+ * @param {number} x - The x-axis coordinate.
+ * @param {number} [y=x] - The y-axis coordinate.
+ * @returns {Object} this
+ */
+ moveTo: function moveTo(x) {
+ var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;
+ var canvasData = this.canvasData;
+
+ var changed = false;
+
+ x = Number(x);
+ y = Number(y);
+
+ if (this.ready && !this.disabled && this.options.movable) {
+ if (isNumber(x)) {
+ canvasData.left = x;
+ changed = true;
+ }
+
+ if (isNumber(y)) {
+ canvasData.top = y;
+ changed = true;
+ }
+
+ if (changed) {
+ this.renderCanvas(true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Zoom the canvas with a relative ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoom: function zoom(ratio, _originalEvent) {
+ var canvasData = this.canvasData;
+
+
+ ratio = Number(ratio);
+
+ if (ratio < 0) {
+ ratio = 1 / (1 - ratio);
+ } else {
+ ratio = 1 + ratio;
+ }
+
+ return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);
+ },
+
+
+ /**
+ * Zoom the canvas to an absolute ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Object} pivot - The zoom pivot point coordinate.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoomTo: function zoomTo(ratio, pivot, _originalEvent) {
+ var options = this.options,
+ canvasData = this.canvasData;
+ var width = canvasData.width,
+ height = canvasData.height,
+ naturalWidth = canvasData.naturalWidth,
+ naturalHeight = canvasData.naturalHeight;
+
+
+ ratio = Number(ratio);
+
+ if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {
+ var newWidth = naturalWidth * ratio;
+ var newHeight = naturalHeight * ratio;
+
+ if (dispatchEvent(this.element, EVENT_ZOOM, {
+ originalEvent: _originalEvent,
+ oldRatio: width / naturalWidth,
+ ratio: newWidth / naturalWidth
+ }) === false) {
+ return this;
+ }
+
+ if (_originalEvent) {
+ var pointers = this.pointers;
+
+ var offset = getOffset(this.cropper);
+ var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {
+ pageX: _originalEvent.pageX,
+ pageY: _originalEvent.pageY
+ };
+
+ // Zoom from the triggering point of the event
+ canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);
+ } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {
+ canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);
+ canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);
+ } else {
+ // Zoom from the center of the canvas
+ canvasData.left -= (newWidth - width) / 2;
+ canvasData.top -= (newHeight - height) / 2;
+ }
+
+ canvasData.width = newWidth;
+ canvasData.height = newHeight;
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Rotate the canvas with a relative degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotate: function rotate(degree) {
+ return this.rotateTo((this.imageData.rotate || 0) + Number(degree));
+ },
+
+
+ /**
+ * Rotate the canvas to an absolute degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotateTo: function rotateTo(degree) {
+ degree = Number(degree);
+
+ if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {
+ this.imageData.rotate = degree % 360;
+ this.renderCanvas(true, true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Scale the image on the x-axis.
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @returns {Object} this
+ */
+ scaleX: function scaleX(_scaleX) {
+ var scaleY = this.imageData.scaleY;
+
+
+ return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);
+ },
+
+
+ /**
+ * Scale the image on the y-axis.
+ * @param {number} scaleY - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scaleY: function scaleY(_scaleY) {
+ var scaleX = this.imageData.scaleX;
+
+
+ return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);
+ },
+
+
+ /**
+ * Scale the image
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scale: function scale(scaleX) {
+ var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
+ var imageData = this.imageData;
+
+ var transformed = false;
+
+ scaleX = Number(scaleX);
+ scaleY = Number(scaleY);
+
+ if (this.ready && !this.disabled && this.options.scalable) {
+ if (isNumber(scaleX)) {
+ imageData.scaleX = scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(scaleY)) {
+ imageData.scaleY = scaleY;
+ transformed = true;
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the cropped area position and size data (base on the original image)
+ * @param {boolean} [rounded=false] - Indicate if round the data values or not.
+ * @returns {Object} The result cropped data.
+ */
+ getData: function getData$$1() {
+ var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData,
+ cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ x: cropBoxData.left - canvasData.left,
+ y: cropBoxData.top - canvasData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ each(data, function (n, i) {
+ n /= ratio;
+ data[i] = rounded ? Math.round(n) : n;
+ });
+ } else {
+ data = {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ };
+ }
+
+ if (options.rotatable) {
+ data.rotate = imageData.rotate || 0;
+ }
+
+ if (options.scalable) {
+ data.scaleX = imageData.scaleX || 1;
+ data.scaleY = imageData.scaleY || 1;
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the cropped area position and size with new data
+ * @param {Object} data - The new data.
+ * @returns {Object} this
+ */
+ setData: function setData$$1(data) {
+ var options = this.options,
+ imageData = this.imageData,
+ canvasData = this.canvasData;
+
+ var cropBoxData = {};
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ var transformed = false;
+
+ if (options.rotatable) {
+ if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {
+ imageData.rotate = data.rotate;
+ transformed = true;
+ }
+ }
+
+ if (options.scalable) {
+ if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {
+ imageData.scaleX = data.scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {
+ imageData.scaleY = data.scaleY;
+ transformed = true;
+ }
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+
+ var ratio = imageData.width / imageData.naturalWidth;
+
+ if (isNumber(data.x)) {
+ cropBoxData.left = data.x * ratio + canvasData.left;
+ }
+
+ if (isNumber(data.y)) {
+ cropBoxData.top = data.y * ratio + canvasData.top;
+ }
+
+ if (isNumber(data.width)) {
+ cropBoxData.width = data.width * ratio;
+ }
+
+ if (isNumber(data.height)) {
+ cropBoxData.height = data.height * ratio;
+ }
+
+ this.setCropBoxData(cropBoxData);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the container size data.
+ * @returns {Object} The result container data.
+ */
+ getContainerData: function getContainerData() {
+ return this.ready ? extend({}, this.containerData) : {};
+ },
+
+
+ /**
+ * Get the image position and size data.
+ * @returns {Object} The result image data.
+ */
+ getImageData: function getImageData() {
+ return this.loaded ? extend({}, this.imageData) : {};
+ },
+
+
+ /**
+ * Get the canvas position and size data.
+ * @returns {Object} The result canvas data.
+ */
+ getCanvasData: function getCanvasData() {
+ var canvasData = this.canvasData;
+
+ var data = {};
+
+ if (this.ready) {
+ each(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {
+ data[n] = canvasData[n];
+ });
+ }
+
+ return data;
+ },
+
+
+ /**
+ * Set the canvas position and size with new data.
+ * @param {Object} data - The new canvas data.
+ * @returns {Object} this
+ */
+ setCanvasData: function setCanvasData(data) {
+ var canvasData = this.canvasData;
+ var aspectRatio = canvasData.aspectRatio;
+
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ canvasData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ canvasData.top = data.top;
+ }
+
+ if (isNumber(data.width)) {
+ canvasData.width = data.width;
+ canvasData.height = data.width / aspectRatio;
+ } else if (isNumber(data.height)) {
+ canvasData.height = data.height;
+ canvasData.width = data.height * aspectRatio;
+ }
+
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get the crop box position and size data.
+ * @returns {Object} The result crop box data.
+ */
+ getCropBoxData: function getCropBoxData() {
+ var cropBoxData = this.cropBoxData;
+
+ var data = void 0;
+
+ if (this.ready && this.cropped) {
+ data = {
+ left: cropBoxData.left,
+ top: cropBoxData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height
+ };
+ }
+
+ return data || {};
+ },
+
+
+ /**
+ * Set the crop box position and size with new data.
+ * @param {Object} data - The new crop box data.
+ * @returns {Object} this
+ */
+ setCropBoxData: function setCropBoxData(data) {
+ var cropBoxData = this.cropBoxData;
+ var aspectRatio = this.options.aspectRatio;
+
+ var widthChanged = void 0;
+ var heightChanged = void 0;
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ cropBoxData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ cropBoxData.top = data.top;
+ }
+
+ if (isNumber(data.width) && data.width !== cropBoxData.width) {
+ widthChanged = true;
+ cropBoxData.width = data.width;
+ }
+
+ if (isNumber(data.height) && data.height !== cropBoxData.height) {
+ heightChanged = true;
+ cropBoxData.height = data.height;
+ }
+
+ if (aspectRatio) {
+ if (widthChanged) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else if (heightChanged) {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.renderCropBox();
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Get a canvas drawn the cropped image.
+ * @param {Object} [options={}] - The config options.
+ * @returns {HTMLCanvasElement} - The result canvas.
+ */
+ getCroppedCanvas: function getCroppedCanvas() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+ if (!this.ready || !window.HTMLCanvasElement) {
+ return null;
+ }
+
+ var canvasData = this.canvasData;
+
+ var source = getSourceCanvas(this.image, this.imageData, canvasData, options);
+
+ // Returns the source canvas if it is not cropped.
+ if (!this.cropped) {
+ return source;
+ }
+
+ var _getData = this.getData(),
+ x = _getData.x,
+ y = _getData.y,
+ initialWidth = _getData.width,
+ initialHeight = _getData.height;
+
+ var aspectRatio = initialWidth / initialHeight;
+ var maxSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.maxWidth || Infinity,
+ height: options.maxHeight || Infinity
+ });
+ var minSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.minWidth || 0,
+ height: options.minHeight || 0
+ });
+
+ var _getContainSizes = getContainSizes({
+ aspectRatio: aspectRatio,
+ width: options.width || initialWidth,
+ height: options.height || initialHeight
+ }),
+ width = _getContainSizes.width,
+ height = _getContainSizes.height;
+
+ width = Math.min(maxSizes.width, Math.max(minSizes.width, width));
+ height = Math.min(maxSizes.height, Math.max(minSizes.height, height));
+
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+
+ context.fillStyle = options.fillColor || 'transparent';
+ context.fillRect(0, 0, width, height);
+
+ var _options$imageSmoothi = options.imageSmoothingEnabled,
+ imageSmoothingEnabled = _options$imageSmoothi === undefined ? true : _options$imageSmoothi,
+ imageSmoothingQuality = options.imageSmoothingQuality;
+
+
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+
+ if (imageSmoothingQuality) {
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage
+ var sourceWidth = source.width;
+ var sourceHeight = source.height;
+
+ // Source canvas parameters
+ var srcX = x;
+ var srcY = y;
+ var srcWidth = void 0;
+ var srcHeight = void 0;
+
+ // Destination canvas parameters
+ var dstX = void 0;
+ var dstY = void 0;
+ var dstWidth = void 0;
+ var dstHeight = void 0;
+
+ if (srcX <= -initialWidth || srcX > sourceWidth) {
+ srcX = 0;
+ srcWidth = 0;
+ dstX = 0;
+ dstWidth = 0;
+ } else if (srcX <= 0) {
+ dstX = -srcX;
+ srcX = 0;
+ srcWidth = Math.min(sourceWidth, initialWidth + srcX);
+ dstWidth = srcWidth;
+ } else if (srcX <= sourceWidth) {
+ dstX = 0;
+ srcWidth = Math.min(initialWidth, sourceWidth - srcX);
+ dstWidth = srcWidth;
+ }
+
+ if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {
+ srcY = 0;
+ srcHeight = 0;
+ dstY = 0;
+ dstHeight = 0;
+ } else if (srcY <= 0) {
+ dstY = -srcY;
+ srcY = 0;
+ srcHeight = Math.min(sourceHeight, initialHeight + srcY);
+ dstHeight = srcHeight;
+ } else if (srcY <= sourceHeight) {
+ dstY = 0;
+ srcHeight = Math.min(initialHeight, sourceHeight - srcY);
+ dstHeight = srcHeight;
+ }
+
+ // All the numerical parameters should be integer for `drawImage`
+ // https://github.com/fengyuanchen/cropper/issues/476
+ var params = [srcX, srcY, srcWidth, srcHeight];
+
+ // Avoid "IndexSizeError"
+ if (dstWidth > 0 && dstHeight > 0) {
+ var scale = width / initialWidth;
+
+ params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);
+ }
+
+ context.drawImage.apply(context, [source].concat(toConsumableArray(params.map(function (param) {
+ return Math.floor(normalizeDecimalNumber(param));
+ }))));
+
+ return canvas;
+ },
+
+
+ /**
+ * Change the aspect ratio of the crop box.
+ * @param {number} aspectRatio - The new aspect ratio.
+ * @returns {Object} this
+ */
+ setAspectRatio: function setAspectRatio(aspectRatio) {
+ var options = this.options;
+
+
+ if (!this.disabled && !isUndefined(aspectRatio)) {
+ // 0 -> NaN
+ options.aspectRatio = Math.max(0, aspectRatio) || NaN;
+
+ if (this.ready) {
+ this.initCropBox();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+ }
+
+ return this;
+ },
+
+
+ /**
+ * Change the drag mode.
+ * @param {string} mode - The new drag mode.
+ * @returns {Object} this
+ */
+ setDragMode: function setDragMode(mode) {
+ var options = this.options,
+ dragBox = this.dragBox,
+ face = this.face;
+
+
+ if (this.loaded && !this.disabled) {
+ var croppable = mode === DRAG_MODE_CROP;
+ var movable = options.movable && mode === DRAG_MODE_MOVE;
+
+ mode = croppable || movable ? mode : DRAG_MODE_NONE;
+
+ setData(dragBox, DATA_ACTION, mode);
+ toggleClass(dragBox, CLASS_CROP, croppable);
+ toggleClass(dragBox, CLASS_MOVE, movable);
+
+ if (!options.cropBoxMovable) {
+ // Sync drag mode to crop box when it is not movable
+ setData(face, DATA_ACTION, mode);
+ toggleClass(face, CLASS_CROP, croppable);
+ toggleClass(face, CLASS_MOVE, movable);
+ }
+ }
+
+ return this;
+ }
+};
+
+var AnotherCropper = WINDOW.Cropper;
+
+var Cropper = function () {
+ /**
+ * Create a new Cropper.
+ * @param {Element} element - The target element for cropping.
+ * @param {Object} [options={}] - The configuration options.
+ */
+ function Cropper(element) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ classCallCheck(this, Cropper);
+
+ if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {
+ throw new Error('The first argument is required and must be an <img> or <canvas> element.');
+ }
+
+ this.element = element;
+ this.options = extend({}, DEFAULTS, isPlainObject(options) && options);
+ this.complete = false;
+ this.cropped = false;
+ this.disabled = false;
+ this.isImg = false;
+ this.limited = false;
+ this.loaded = false;
+ this.ready = false;
+ this.replaced = false;
+ this.wheeling = false;
+ this.originalUrl = '';
+ this.canvasData = null;
+ this.cropBoxData = null;
+ this.previews = null;
+ this.pointers = {};
+ this.init();
+ }
+
+ createClass(Cropper, [{
+ key: 'init',
+ value: function init() {
+ var element = this.element;
+
+ var tagName = element.tagName.toLowerCase();
+ var url = void 0;
+
+ if (getData(element, NAMESPACE)) {
+ return;
+ }
+
+ setData(element, NAMESPACE, this);
+
+ if (tagName === 'img') {
+ this.isImg = true;
+
+ // e.g.: "img/picture.jpg"
+ url = element.getAttribute('src') || '';
+ this.originalUrl = url;
+
+ // Stop when it's a blank image
+ if (!url) {
+ return;
+ }
+
+ // e.g.: "http://example.com/img/picture.jpg"
+ url = element.src;
+ } else if (tagName === 'canvas' && window.HTMLCanvasElement) {
+ url = element.toDataURL();
+ }
+
+ this.load(url);
+ }
+ }, {
+ key: 'load',
+ value: function load(url) {
+ var _this = this;
+
+ if (!url) {
+ return;
+ }
+
+ this.url = url;
+ this.imageData = {};
+
+ var element = this.element,
+ options = this.options;
+
+
+ if (!options.checkOrientation || !window.ArrayBuffer) {
+ this.clone();
+ return;
+ }
+
+ // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari
+ if (REGEXP_DATA_URL.test(url)) {
+ if (REGEXP_DATA_URL_JPEG.test(url)) {
+ this.read(dataURLToArrayBuffer(url));
+ } else {
+ this.clone();
+ }
+
+ return;
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ xhr.onerror = function () {
+ _this.clone();
+ };
+
+ xhr.onload = function () {
+ _this.read(xhr.response);
+ };
+
+ if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {
+ url = addTimestamp(url);
+ }
+
+ xhr.open('get', url);
+ xhr.responseType = 'arraybuffer';
+ xhr.withCredentials = element.crossOrigin === 'use-credentials';
+ xhr.send();
+ }
+ }, {
+ key: 'read',
+ value: function read(arrayBuffer) {
+ var options = this.options,
+ imageData = this.imageData;
+
+ var orientation = getOrientation(arrayBuffer);
+ var rotate = 0;
+ var scaleX = 1;
+ var scaleY = 1;
+
+ if (orientation > 1) {
+ this.url = arrayBufferToDataURL(arrayBuffer, 'image/jpeg');
+
+ var _parseOrientation = parseOrientation(orientation);
+
+ rotate = _parseOrientation.rotate;
+ scaleX = _parseOrientation.scaleX;
+ scaleY = _parseOrientation.scaleY;
+ }
+
+ if (options.rotatable) {
+ imageData.rotate = rotate;
+ }
+
+ if (options.scalable) {
+ imageData.scaleX = scaleX;
+ imageData.scaleY = scaleY;
+ }
+
+ this.clone();
+ }
+ }, {
+ key: 'clone',
+ value: function clone() {
+ var element = this.element,
+ url = this.url;
+
+ var crossOrigin = void 0;
+ var crossOriginUrl = void 0;
+
+ if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {
+ crossOrigin = element.crossOrigin;
+
+
+ if (crossOrigin) {
+ crossOriginUrl = url;
+ } else {
+ crossOrigin = 'anonymous';
+
+ // Bust cache when there is not a "crossOrigin" property
+ crossOriginUrl = addTimestamp(url);
+ }
+ }
+
+ this.crossOrigin = crossOrigin;
+ this.crossOriginUrl = crossOriginUrl;
+
+ var image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = crossOriginUrl || url;
+
+ var start = proxy(this.start, this);
+ var stop = proxy(this.stop, this);
+
+ this.image = image;
+ this.onStart = start;
+ this.onStop = stop;
+
+ if (this.isImg) {
+ if (element.complete) {
+ this.start();
+ } else {
+ addListener(element, EVENT_LOAD, start);
+ }
+ } else {
+ addListener(image, EVENT_LOAD, start);
+ addListener(image, EVENT_ERROR, stop);
+ addClass(image, CLASS_HIDE);
+ element.parentNode.insertBefore(image, element.nextSibling);
+ }
+ }
+ }, {
+ key: 'start',
+ value: function start(event) {
+ var _this2 = this;
+
+ var image = this.isImg ? this.element : this.image;
+
+ if (event) {
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ }
+
+ getImageNaturalSizes(image, function (naturalWidth, naturalHeight) {
+ extend(_this2.imageData, {
+ naturalWidth: naturalWidth,
+ naturalHeight: naturalHeight,
+ aspectRatio: naturalWidth / naturalHeight
+ });
+ _this2.loaded = true;
+ _this2.build();
+ });
+ }
+ }, {
+ key: 'stop',
+ value: function stop() {
+ var image = this.image;
+
+
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ image.parentNode.removeChild(image);
+ this.image = null;
+ }
+ }, {
+ key: 'build',
+ value: function build() {
+ var _this3 = this;
+
+ if (!this.loaded) {
+ return;
+ }
+
+ // Unbuild first when replace
+ if (this.ready) {
+ this.unbuild();
+ }
+
+ var element = this.element,
+ options = this.options,
+ image = this.image;
+
+ // Create cropper elements
+
+ var container = element.parentNode;
+ var template = document.createElement('div');
+
+ template.innerHTML = TEMPLATE;
+
+ var cropper = template.querySelector('.' + NAMESPACE + '-container');
+ var canvas = cropper.querySelector('.' + NAMESPACE + '-canvas');
+ var dragBox = cropper.querySelector('.' + NAMESPACE + '-drag-box');
+ var cropBox = cropper.querySelector('.' + NAMESPACE + '-crop-box');
+ var face = cropBox.querySelector('.' + NAMESPACE + '-face');
+
+ this.container = container;
+ this.cropper = cropper;
+ this.canvas = canvas;
+ this.dragBox = dragBox;
+ this.cropBox = cropBox;
+ this.viewBox = cropper.querySelector('.' + NAMESPACE + '-view-box');
+ this.face = face;
+
+ canvas.appendChild(image);
+
+ // Hide the original image
+ addClass(element, CLASS_HIDDEN);
+
+ // Inserts the cropper after to the current image
+ container.insertBefore(cropper, element.nextSibling);
+
+ // Show the image if is hidden
+ if (!this.isImg) {
+ removeClass(image, CLASS_HIDE);
+ }
+
+ this.initPreview();
+ this.bind();
+
+ options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;
+ options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;
+
+ this.cropped = options.autoCrop;
+
+ if (options.autoCrop) {
+ if (options.modal) {
+ addClass(dragBox, CLASS_MODAL);
+ }
+ } else {
+ addClass(cropBox, CLASS_HIDDEN);
+ }
+
+ if (!options.guides) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-dashed'), CLASS_HIDDEN);
+ }
+
+ if (!options.center) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-center'), CLASS_HIDDEN);
+ }
+
+ if (options.background) {
+ addClass(cropper, NAMESPACE + '-bg');
+ }
+
+ if (!options.highlight) {
+ addClass(face, CLASS_INVISIBLE);
+ }
+
+ if (options.cropBoxMovable) {
+ addClass(face, CLASS_MOVE);
+ setData(face, DATA_ACTION, ACTION_ALL);
+ }
+
+ if (!options.cropBoxResizable) {
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-line'), CLASS_HIDDEN);
+ addClass(cropBox.getElementsByClassName(NAMESPACE + '-point'), CLASS_HIDDEN);
+ }
+
+ this.setDragMode(options.dragMode);
+ this.render();
+ this.ready = true;
+ this.setData(options.data);
+
+ // Call the "ready" option asynchronously to keep "image.cropper" is defined
+ this.completing = setTimeout(function () {
+ if (isFunction(options.ready)) {
+ addListener(element, EVENT_READY, options.ready, {
+ once: true
+ });
+ }
+
+ dispatchEvent(element, EVENT_READY);
+ dispatchEvent(element, EVENT_CROP, _this3.getData());
+
+ _this3.complete = true;
+ }, 0);
+ }
+ }, {
+ key: 'unbuild',
+ value: function unbuild() {
+ if (!this.ready) {
+ return;
+ }
+
+ if (!this.complete) {
+ clearTimeout(this.completing);
+ }
+
+ this.ready = false;
+ this.complete = false;
+ this.initialImageData = null;
+
+ // Clear `initialCanvasData` is necessary when replace
+ this.initialCanvasData = null;
+ this.initialCropBoxData = null;
+ this.containerData = null;
+ this.canvasData = null;
+
+ // Clear `cropBoxData` is necessary when replace
+ this.cropBoxData = null;
+ this.unbind();
+ this.resetPreview();
+ this.previews = null;
+ this.viewBox = null;
+ this.cropBox = null;
+ this.dragBox = null;
+ this.canvas = null;
+ this.container = null;
+ this.cropper.parentNode.removeChild(this.cropper);
+ this.cropper = null;
+ }
+
+ /**
+ * Get the no conflict cropper class.
+ * @returns {Cropper} The cropper class.
+ */
+
+ }], [{
+ key: 'noConflict',
+ value: function noConflict() {
+ window.Cropper = AnotherCropper;
+ return Cropper;
+ }
+
+ /**
+ * Change the default options.
+ * @param {Object} options - The new default options.
+ */
+
+ }, {
+ key: 'setDefaults',
+ value: function setDefaults(options) {
+ extend(DEFAULTS, isPlainObject(options) && options);
+ }
+ }]);
+ return Cropper;
+}();
+
+extend(Cropper.prototype, render, preview, events, handlers, change, methods);
+
+return Cropper;
+
+})));
diff --git a/library/cropperjs/docs/js/main.js b/library/cropperjs/docs/js/main.js
new file mode 100644
index 000000000..d74afbd60
--- /dev/null
+++ b/library/cropperjs/docs/js/main.js
@@ -0,0 +1,298 @@
+window.onload = function () {
+
+ 'use strict';
+
+ var Cropper = window.Cropper;
+ var URL = window.URL || window.webkitURL;
+ var container = document.querySelector('.img-container');
+ var image = container.getElementsByTagName('img').item(0);
+ var download = document.getElementById('download');
+ var actions = document.getElementById('actions');
+ var dataX = document.getElementById('dataX');
+ var dataY = document.getElementById('dataY');
+ var dataHeight = document.getElementById('dataHeight');
+ var dataWidth = document.getElementById('dataWidth');
+ var dataRotate = document.getElementById('dataRotate');
+ var dataScaleX = document.getElementById('dataScaleX');
+ var dataScaleY = document.getElementById('dataScaleY');
+ var options = {
+ aspectRatio: 16 / 9,
+ preview: '.img-preview',
+ ready: function (e) {
+ console.log(e.type);
+ },
+ cropstart: function (e) {
+ console.log(e.type, e.detail.action);
+ },
+ cropmove: function (e) {
+ console.log(e.type, e.detail.action);
+ },
+ cropend: function (e) {
+ console.log(e.type, e.detail.action);
+ },
+ crop: function (e) {
+ var data = e.detail;
+
+ console.log(e.type);
+ dataX.value = Math.round(data.x);
+ dataY.value = Math.round(data.y);
+ dataHeight.value = Math.round(data.height);
+ dataWidth.value = Math.round(data.width);
+ dataRotate.value = typeof data.rotate !== 'undefined' ? data.rotate : '';
+ dataScaleX.value = typeof data.scaleX !== 'undefined' ? data.scaleX : '';
+ dataScaleY.value = typeof data.scaleY !== 'undefined' ? data.scaleY : '';
+ },
+ zoom: function (e) {
+ console.log(e.type, e.detail.ratio);
+ }
+ };
+ var cropper = new Cropper(image, options);
+ var originalImageURL = image.src;
+ var uploadedImageType = 'image/jpeg';
+ var uploadedImageURL;
+
+ // Tooltip
+ $('[data-toggle="tooltip"]').tooltip();
+
+ // Buttons
+ if (!document.createElement('canvas').getContext) {
+ $('button[data-method="getCroppedCanvas"]').prop('disabled', true);
+ }
+
+ if (typeof document.createElement('cropper').style.transition === 'undefined') {
+ $('button[data-method="rotate"]').prop('disabled', true);
+ $('button[data-method="scale"]').prop('disabled', true);
+ }
+
+ // Download
+ if (typeof download.download === 'undefined') {
+ download.className += ' disabled';
+ }
+
+ // Options
+ actions.querySelector('.docs-toggles').onchange = function (event) {
+ var e = event || window.event;
+ var target = e.target || e.srcElement;
+ var cropBoxData;
+ var canvasData;
+ var isCheckbox;
+ var isRadio;
+
+ if (!cropper) {
+ return;
+ }
+
+ if (target.tagName.toLowerCase() === 'label') {
+ target = target.querySelector('input');
+ }
+
+ isCheckbox = target.type === 'checkbox';
+ isRadio = target.type === 'radio';
+
+ if (isCheckbox || isRadio) {
+ if (isCheckbox) {
+ options[target.name] = target.checked;
+ cropBoxData = cropper.getCropBoxData();
+ canvasData = cropper.getCanvasData();
+
+ options.ready = function () {
+ console.log('ready');
+ cropper.setCropBoxData(cropBoxData).setCanvasData(canvasData);
+ };
+ } else {
+ options[target.name] = target.value;
+ options.ready = function () {
+ console.log('ready');
+ };
+ }
+
+ // Restart
+ cropper.destroy();
+ cropper = new Cropper(image, options);
+ }
+ };
+
+ // Methods
+ actions.querySelector('.docs-buttons').onclick = function (event) {
+ var e = event || window.event;
+ var target = e.target || e.srcElement;
+ var cropped;
+ var result;
+ var input;
+ var data;
+
+ if (!cropper) {
+ return;
+ }
+
+ while (target !== this) {
+ if (target.getAttribute('data-method')) {
+ break;
+ }
+
+ target = target.parentNode;
+ }
+
+ if (target === this || target.disabled || target.className.indexOf('disabled') > -1) {
+ return;
+ }
+
+ data = {
+ method: target.getAttribute('data-method'),
+ target: target.getAttribute('data-target'),
+ option: target.getAttribute('data-option') || undefined,
+ secondOption: target.getAttribute('data-second-option') || undefined
+ };
+
+ cropped = cropper.cropped;
+
+ if (data.method) {
+ if (typeof data.target !== 'undefined') {
+ input = document.querySelector(data.target);
+
+ if (!target.hasAttribute('data-option') && data.target && input) {
+ try {
+ data.option = JSON.parse(input.value);
+ } catch (e) {
+ console.log(e.message);
+ }
+ }
+ }
+
+ switch (data.method) {
+ case 'rotate':
+ if (cropped && options.viewMode > 0) {
+ cropper.clear();
+ }
+
+ break;
+
+ case 'getCroppedCanvas':
+ try {
+ data.option = JSON.parse(data.option);
+ } catch (e) {
+ console.log(e.message);
+ }
+
+ if (uploadedImageType === 'image/jpeg') {
+ if (!data.option) {
+ data.option = {};
+ }
+
+ data.option.fillColor = '#fff';
+ }
+
+ break;
+ }
+
+ result = cropper[data.method](data.option, data.secondOption);
+
+ switch (data.method) {
+ case 'rotate':
+ if (cropped && options.viewMode > 0) {
+ cropper.crop();
+ }
+
+ break;
+
+ case 'scaleX':
+ case 'scaleY':
+ target.setAttribute('data-option', -data.option);
+ break;
+
+ case 'getCroppedCanvas':
+ if (result) {
+ // Bootstrap's Modal
+ $('#getCroppedCanvasModal').modal().find('.modal-body').html(result);
+
+ if (!download.disabled) {
+ download.href = result.toDataURL(uploadedImageType);
+ }
+ }
+
+ break;
+
+ case 'destroy':
+ cropper = null;
+
+ if (uploadedImageURL) {
+ URL.revokeObjectURL(uploadedImageURL);
+ uploadedImageURL = '';
+ image.src = originalImageURL;
+ }
+
+ break;
+ }
+
+ if (typeof result === 'object' && result !== cropper && input) {
+ try {
+ input.value = JSON.stringify(result);
+ } catch (e) {
+ console.log(e.message);
+ }
+ }
+ }
+ };
+
+ document.body.onkeydown = function (event) {
+ var e = event || window.event;
+
+ if (!cropper || this.scrollTop > 300) {
+ return;
+ }
+
+ switch (e.keyCode) {
+ case 37:
+ e.preventDefault();
+ cropper.move(-1, 0);
+ break;
+
+ case 38:
+ e.preventDefault();
+ cropper.move(0, -1);
+ break;
+
+ case 39:
+ e.preventDefault();
+ cropper.move(1, 0);
+ break;
+
+ case 40:
+ e.preventDefault();
+ cropper.move(0, 1);
+ break;
+ }
+ };
+
+ // Import image
+ var inputImage = document.getElementById('inputImage');
+
+ if (URL) {
+ inputImage.onchange = function () {
+ var files = this.files;
+ var file;
+
+ if (cropper && files && files.length) {
+ file = files[0];
+
+ if (/^image\/\w+/.test(file.type)) {
+ uploadedImageType = file.type;
+
+ if (uploadedImageURL) {
+ URL.revokeObjectURL(uploadedImageURL);
+ }
+
+ image.src = uploadedImageURL = URL.createObjectURL(file);
+ cropper.destroy();
+ cropper = new Cropper(image, options);
+ inputImage.value = null;
+ } else {
+ window.alert('Please choose an image file.');
+ }
+ }
+ };
+ } else {
+ inputImage.disabled = true;
+ inputImage.parentNode.className += ' disabled';
+ }
+};
diff --git a/library/cropperjs/examples/a-range-of-aspect-ratio.html b/library/cropperjs/examples/a-range-of-aspect-ratio.html
new file mode 100644
index 000000000..fae5cb60b
--- /dev/null
+++ b/library/cropperjs/examples/a-range-of-aspect-ratio.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Cropper with a range of aspect ratio</h1>
+ <div>
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.querySelector('#image');
+ var minAspectRatio = 0.5;
+ var maxAspectRatio = 1.5;
+ var cropper = new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var containerData = cropper.getContainerData();
+ var cropBoxData = cropper.getCropBoxData();
+ var aspectRatio = cropBoxData.width / cropBoxData.height;
+ var newCropBoxWidth;
+
+ if (aspectRatio < minAspectRatio || aspectRatio > maxAspectRatio) {
+ newCropBoxWidth = cropBoxData.height * ((minAspectRatio + maxAspectRatio) / 2);
+
+ cropper.setCropBoxData({
+ left: (containerData.width - newCropBoxWidth) / 2,
+ width: newCropBoxWidth
+ });
+ }
+ },
+ cropmove: function () {
+ var cropper = this.cropper;
+ var cropBoxData = cropper.getCropBoxData();
+ var aspectRatio = cropBoxData.width / cropBoxData.height;
+
+ if (aspectRatio < minAspectRatio) {
+ cropper.setCropBoxData({
+ width: cropBoxData.height * minAspectRatio
+ });
+ } else if (aspectRatio > maxAspectRatio) {
+ cropper.setCropBoxData({
+ width: cropBoxData.height * maxAspectRatio
+ });
+ }
+ }
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/crop-a-round-image.html b/library/cropperjs/examples/crop-a-round-image.html
new file mode 100644
index 000000000..da027d847
--- /dev/null
+++ b/library/cropperjs/examples/crop-a-round-image.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ .cropper-view-box,
+ .cropper-face {
+ border-radius: 50%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Crop a round image</h1>
+ <h3>Image</h3>
+ <div>
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ <h3>Result</h3>
+ <p>
+ <button type="button" id="button">Crop</button>
+ </p>
+ <div id="result"></div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ (function () {
+
+ function getRoundedCanvas(sourceCanvas) {
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+ var width = sourceCanvas.width;
+ var height = sourceCanvas.height;
+
+ canvas.width = width;
+ canvas.height = height;
+
+ context.imageSmoothingEnabled = true;
+ context.drawImage(sourceCanvas, 0, 0, width, height);
+ context.globalCompositeOperation = 'destination-in';
+ context.beginPath();
+ context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true);
+ context.fill();
+
+ return canvas;
+ }
+
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.getElementById('image');
+ var button = document.getElementById('button');
+ var result = document.getElementById('result');
+ var croppable = false;
+ var cropper = new Cropper(image, {
+ aspectRatio: 1,
+ viewMode: 1,
+ ready: function () {
+ croppable = true;
+ }
+ });
+
+ button.onclick = function () {
+ var croppedCanvas;
+ var roundedCanvas;
+ var roundedImage;
+
+ if (!croppable) {
+ return;
+ }
+
+ // Crop
+ croppedCanvas = cropper.getCroppedCanvas();
+
+ // Round
+ roundedCanvas = getRoundedCanvas(croppedCanvas);
+
+ // Show
+ roundedImage = document.createElement('img');
+ roundedImage.src = roundedCanvas.toDataURL()
+ result.innerHTML = '';
+ result.appendChild(roundedImage);
+ };
+
+ });
+
+ })();
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/crop-cross-origin-image.html b/library/cropperjs/examples/crop-cross-origin-image.html
new file mode 100644
index 000000000..54f08664a
--- /dev/null
+++ b/library/cropperjs/examples/crop-cross-origin-image.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Crop a cross origin image</h1>
+ <p>A cross origin image with a <code>crossorigin</code> attribute and an available <code>Access-Control-Allow-Origin</code> response header can be cropped by Cropper.</p>
+ <h3>Image</h3>
+ <div>
+ <img id="image" src="https://raw.githubusercontent.com/fengyuanchen/cropperjs/master/docs/images/picture.jpg" crossorigin>
+ </div>
+ <h3>Result</h3>
+ <div id="result"></div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.querySelector('#image');
+ var result = document.querySelector('#result');
+ var cropper = new Cropper(image, {
+ ready: function () {
+ var image = new Image();
+
+ image.src = cropper.getCroppedCanvas().toDataURL('image/jpeg');
+ result.appendChild(image);
+ },
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/crop-on-canvas.html b/library/cropperjs/examples/crop-on-canvas.html
new file mode 100644
index 000000000..228e36f75
--- /dev/null
+++ b/library/cropperjs/examples/crop-on-canvas.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Crop on canvas with Cropper</h1>
+ <h3>Image</h3>
+ <div class="img-container">
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ <h3>Canvas</h3>
+ <div class="img-container">
+ <canvas id="canvas"></canvas>
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ function start() {
+ var width = this.offsetWidth;
+ var height = this.offsetHeight;
+ var cropper;
+
+ canvas.width = width;
+ canvas.height = height;
+ canvas.getContext('2d').drawImage(
+ this,
+ 0, 0, this.naturalWidth, this.naturalHeight,
+ 0, 0, width, height
+ );
+
+ cropper = new Cropper(canvas);
+ }
+
+ window.addEventListener('DOMContentLoaded', function () {
+ var canvas = document.getElementById('canvas');
+ var image = document.getElementById('image');
+
+ if (image.complete) {
+ start.call(image);
+ } else {
+ image.onload = start;
+ }
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/cropper-in-modal.html b/library/cropperjs/examples/cropper-in-modal.html
new file mode 100644
index 000000000..a9ce3e80b
--- /dev/null
+++ b/library/cropperjs/examples/cropper-in-modal.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css">
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .img-container img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Cropper in a Bootstrap modal</h1>
+
+ <!-- Button trigger modal -->
+ <button type="button" class="btn btn-primary" data-target="#modal" data-toggle="modal">
+ Launch the demo
+ </button>
+
+ <!-- Modal -->
+ <div class="modal fade" id="modal" role="dialog" aria-labelledby="modalLabel" tabindex="-1">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title" id="modalLabel">Cropper</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <div class="img-container">
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.getElementById('image');
+ var cropBoxData;
+ var canvasData;
+ var cropper;
+
+ $('#modal').on('shown.bs.modal', function () {
+ cropper = new Cropper(image, {
+ autoCropArea: 0.5,
+ ready: function () {
+
+ // Strict mode: set crop box data first
+ cropper.setCropBoxData(cropBoxData).setCanvasData(canvasData);
+ }
+ });
+ }).on('hidden.bs.modal', function () {
+ cropBoxData = cropper.getCropBoxData();
+ canvasData = cropper.getCanvasData();
+ cropper.destroy();
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/customize-preview.html b/library/cropperjs/examples/customize-preview.html
new file mode 100644
index 000000000..ea1c24b88
--- /dev/null
+++ b/library/cropperjs/examples/customize-preview.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 960px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ .row,
+ .preview {
+ overflow: hidden;
+ }
+
+ .col {
+ float: left;
+ }
+
+ .col-6 {
+ width: 50%;
+ }
+
+ .col-3 {
+ width: 25%;
+ }
+
+ .col-2 {
+ width: 16.7%;
+ }
+
+ .col-1 {
+ width: 8.3%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Customize preview for Cropper</h1>
+ <div class="row">
+ <div class="col col-6">
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ <div class="col col-3">
+ <div class="preview"></div>
+ </div>
+ <div class="col col-2">
+ <div class="preview"></div>
+ </div>
+ <div class="col col-1">
+ <div class="preview"></div>
+ </div>
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ function each(arr, callback) {
+ var length = arr.length;
+ var i;
+
+ for (i = 0; i < length; i++) {
+ callback.call(arr, arr[i], i, arr);
+ }
+
+ return arr;
+ }
+
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.querySelector('#image');
+ var previews = document.querySelectorAll('.preview');
+ var cropper = new Cropper(image, {
+ ready: function () {
+ var clone = this.cloneNode();
+
+ clone.className = ''
+ clone.style.cssText = (
+ 'display: block;' +
+ 'width: 100%;' +
+ 'min-width: 0;' +
+ 'min-height: 0;' +
+ 'max-width: none;' +
+ 'max-height: none;'
+ );
+
+ each(previews, function (elem) {
+ elem.appendChild(clone.cloneNode());
+ });
+ },
+
+ crop: function (e) {
+ var data = e.detail;
+ var cropper = this.cropper;
+ var imageData = cropper.getImageData();
+ var previewAspectRatio = data.width / data.height;
+
+ each(previews, function (elem) {
+ var previewImage = elem.getElementsByTagName('img').item(0);
+ var previewWidth = elem.offsetWidth;
+ var previewHeight = previewWidth / previewAspectRatio;
+ var imageScaledRatio = data.width / previewWidth;
+
+ elem.style.height = previewHeight + 'px';
+ previewImage.style.width = imageData.naturalWidth / imageScaledRatio + 'px';
+ previewImage.style.height = imageData.naturalHeight / imageScaledRatio + 'px';
+ previewImage.style.marginLeft = -data.x / imageScaledRatio + 'px';
+ previewImage.style.marginTop = -data.y / imageScaledRatio + 'px';
+ });
+ }
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/fixed-crop-box.html b/library/cropperjs/examples/fixed-crop-box.html
new file mode 100644
index 000000000..b9f1101fb
--- /dev/null
+++ b/library/cropperjs/examples/fixed-crop-box.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Cropper with fixed crop box</h1>
+ <div>
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.querySelector('#image');
+ var cropper = new Cropper(image, {
+ dragMode: 'move',
+ aspectRatio: 16 / 9,
+ autoCropArea: 0.65,
+ restore: false,
+ guides: false,
+ center: false,
+ highlight: false,
+ cropBoxMovable: false,
+ cropBoxResizable: false,
+ toggleDragModeOnDblclick: false,
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/full-crop-box.html b/library/cropperjs/examples/full-crop-box.html
new file mode 100644
index 000000000..7065eab94
--- /dev/null
+++ b/library/cropperjs/examples/full-crop-box.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Cropper with full crop box</h1>
+ <div>
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.querySelector('#image');
+ var cropper = new Cropper(image, {
+ viewMode: 3,
+ dragMode: 'move',
+ autoCropArea: 1,
+ restore: false,
+ modal: false,
+ guides: false,
+ highlight: false,
+ cropBoxMovable: false,
+ cropBoxResizable: false,
+ toggleDragModeOnDblclick: false,
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/mask-an-image.html b/library/cropperjs/examples/mask-an-image.html
new file mode 100644
index 000000000..d821da43b
--- /dev/null
+++ b/library/cropperjs/examples/mask-an-image.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ .cropper-view-box,
+ .cropper-face {
+ background-color: black;
+ opacity: 1;
+ }
+
+ </style>
+</head>
+
+<body>
+
+ <div class="container">
+ <h1>Mask an image (Redaction)</h1>
+ <h3>Image</h3>
+ <div>
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ <h3>Result</h3>
+ <p><button type="button" id="button">Mask</button></p>
+ <div id="result"></div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ (function () {
+
+ function getMaskedCanvas(sourceCanvas, sourceImage, cropper) {
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+
+ var maskWidth = cropper.getData().width;
+ var maskHeight = cropper.getData().height;
+ var maskTop = cropper.getData().y;
+ var maskLeft = cropper.getData().x;
+
+ var imageWidth = cropper.getImageData().naturalWidth;
+ var imageHeight = cropper.getImageData().naturalHeight;
+ var imageLeft = cropper.getImageData().left;
+ var imageTop = cropper.getImageData().top;
+ var imageAspect = cropper.getImageData().aspectRatio;
+
+ canvas.width = imageWidth;
+ canvas.height = imageHeight;
+
+ // debug
+ console.log('Image Width: ' + imageWidth + ' Image Height: ' + imageHeight + ' Image Aspect Ratio: ' + imageAspect );
+ console.log('Image Left: ' + imageLeft + ' Image Top: ' + imageTop );
+ console.log('Mask Width: ' + maskWidth + ' Mask Height: ' + maskHeight + ' Mask Left: ' + maskLeft + ' Mask Top: ' + maskTop);
+
+ context.imageSmoothingEnabled = true;
+ context.drawImage(image, 0, 0, imageWidth, imageHeight);
+ context.fillRect(maskLeft, maskTop, maskWidth, maskHeight);
+
+ return canvas;
+ }
+
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.getElementById('image');
+ var button = document.getElementById('button');
+ var result = document.getElementById('result');
+ var croppable = false;
+ var cropper = new Cropper(image, {
+ viewMode: 0,
+ guides: true,
+ center: true,
+ highlight: true,
+ cropBoxMovable: true,
+ cropBoxResizable: true,
+ ready: function () {
+ croppable = true;
+ }
+ });
+
+ button.onclick = function () {
+ var croppedCanvas;
+ var roundedCanvas;
+ var roundedImage;
+
+ if (!croppable) {
+ return;
+ }
+
+ // Crop
+ croppedCanvas = cropper.getCroppedCanvas();
+
+ // Mask
+ maskedCanvas = getMaskedCanvas(croppedCanvas, image, cropper);
+
+ // Show
+ maskedImage = document.createElement('img');
+ maskedImage.src = maskedCanvas.toDataURL()
+ result.innerHTML = '';
+ result.appendChild(maskedImage);
+
+ };
+
+ });
+
+ })();
+
+ </script>
+</body>
+
+</html>
diff --git a/library/cropperjs/examples/multiple-croppers.html b/library/cropperjs/examples/multiple-croppers.html
new file mode 100644
index 000000000..6b12e70b2
--- /dev/null
+++ b/library/cropperjs/examples/multiple-croppers.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Multiple Croppers</h1>
+ <h3>Cropper</h3>
+ <div>
+ <img src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ <h3>Another</h3>
+ <div>
+ <img src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var images = document.querySelectorAll('img');
+ var length = images.length;
+ var croppers = [];
+ var i;
+
+ for (i = 0; i < length; i++) {
+ croppers.push(new Cropper(images[i]));
+ }
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/examples/responsive-container.html b/library/cropperjs/examples/responsive-container.html
new file mode 100644
index 000000000..c1aa7483b
--- /dev/null
+++ b/library/cropperjs/examples/responsive-container.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <style>
+ .container {
+ max-width: 640px;
+ margin: 20px auto;
+ }
+
+ img {
+ width: 100%;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="container">
+ <h1>Cropper with responsive container</h1>
+ <p>
+ <button type="button" id="replace">Replace Image</button>
+ </p>
+ <div>
+ <img id="image" src="../docs/images/picture.jpg" alt="Picture">
+ </div>
+ </div>
+
+ <script src="../dist/cropper.js"></script>
+ <script>
+ window.addEventListener('DOMContentLoaded', function () {
+ var image = document.querySelector('#image');
+ var cropper = new Cropper(image, {
+ movable: false,
+ zoomable: false,
+ rotatable: false,
+ scalable: false
+ });
+
+ document.getElementById('replace').onclick = function () {
+ cropper.replace('../docs/images/picture-2.jpg');
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/library/cropperjs/package-lock.json b/library/cropperjs/package-lock.json
new file mode 100644
index 000000000..229ee70fa
--- /dev/null
+++ b/library/cropperjs/package-lock.json
@@ -0,0 +1,9111 @@
+{
+ "name": "cropperjs",
+ "version": "1.2.2",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "JSONStream": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
+ "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
+ "dev": true,
+ "requires": {
+ "jsonparse": "0.0.5",
+ "through": "2.3.8"
+ }
+ },
+ "acorn": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz",
+ "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "dev": true,
+ "requires": {
+ "acorn": "3.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz",
+ "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "json-schema-traverse": "0.3.1",
+ "json-stable-stringify": "1.0.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz",
+ "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=",
+ "dev": true
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
+ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "dev": true,
+ "requires": {
+ "micromatch": "2.3.11",
+ "normalize-path": "2.1.1"
+ }
+ },
+ "argparse": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "6.7.7",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
+ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000744",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000744",
+ "electron-to-chromium": "1.3.24"
+ }
+ }
+ }
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "babel-core": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
+ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-generator": "6.26.0",
+ "babel-helpers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-register": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "convert-source-map": "1.5.0",
+ "debug": "2.6.9",
+ "json5": "0.5.1",
+ "lodash": "4.17.4",
+ "minimatch": "3.0.4",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.7",
+ "slash": "1.0.0",
+ "source-map": "0.5.7"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
+ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
+ "dev": true,
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.4",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ }
+ },
+ "babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-assignable-expression": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-call-delegate": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
+ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-define-map": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
+ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-helper-explode-assignable-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
+ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+ "dev": true,
+ "requires": {
+ "babel-helper-get-function-arity": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-optimise-call-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
+ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-regex": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
+ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-helper-remap-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-replace-supers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
+ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
+ "dev": true,
+ "requires": {
+ "babel-helper-optimise-call-expression": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-check-es2015-constants": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
+ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-external-helpers": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz",
+ "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-syntax-async-functions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
+ "dev": true
+ },
+ "babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
+ "dev": true
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
+ "dev": true
+ },
+ "babel-plugin-transform-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "6.24.1",
+ "babel-plugin-syntax-async-functions": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoped-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoping": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
+ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-plugin-transform-es2015-classes": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-define-map": "6.26.0",
+ "babel-helper-function-name": "6.24.1",
+ "babel-helper-optimise-call-expression": "6.24.1",
+ "babel-helper-replace-supers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-destructuring": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-duplicate-keys": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
+ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-for-of": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-amd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
+ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz",
+ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-strict-mode": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-systemjs": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
+ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-umd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
+ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-amd": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-object-super": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
+ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
+ "dev": true,
+ "requires": {
+ "babel-helper-replace-supers": "6.24.1",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-parameters": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
+ "dev": true,
+ "requires": {
+ "babel-helper-call-delegate": "6.24.1",
+ "babel-helper-get-function-arity": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-spread": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-sticky-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
+ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-template-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-typeof-symbol": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
+ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-unicode-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
+ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "regexpu-core": "2.0.0"
+ }
+ },
+ "babel-plugin-transform-exponentiation-operator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
+ "dev": true,
+ "requires": {
+ "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
+ "babel-plugin-syntax-exponentiation-operator": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-regenerator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
+ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "0.10.1"
+ }
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-preset-env": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz",
+ "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-check-es2015-constants": "6.22.0",
+ "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+ "babel-plugin-transform-async-to-generator": "6.24.1",
+ "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "6.26.0",
+ "babel-plugin-transform-es2015-classes": "6.24.1",
+ "babel-plugin-transform-es2015-computed-properties": "6.24.1",
+ "babel-plugin-transform-es2015-destructuring": "6.23.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
+ "babel-plugin-transform-es2015-for-of": "6.23.0",
+ "babel-plugin-transform-es2015-function-name": "6.24.1",
+ "babel-plugin-transform-es2015-literals": "6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "6.24.1",
+ "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
+ "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
+ "babel-plugin-transform-es2015-modules-umd": "6.24.1",
+ "babel-plugin-transform-es2015-object-super": "6.24.1",
+ "babel-plugin-transform-es2015-parameters": "6.24.1",
+ "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
+ "babel-plugin-transform-es2015-spread": "6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
+ "babel-plugin-transform-es2015-template-literals": "6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
+ "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
+ "babel-plugin-transform-exponentiation-operator": "6.24.1",
+ "babel-plugin-transform-regenerator": "6.26.0",
+ "browserslist": "2.5.0",
+ "invariant": "2.2.2",
+ "semver": "5.4.1"
+ }
+ },
+ "babel-register": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "core-js": "2.5.1",
+ "home-or-tmp": "2.0.0",
+ "lodash": "4.17.4",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.4.18"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "2.5.1",
+ "regenerator-runtime": "0.11.0"
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.2",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.4",
+ "to-fast-properties": "1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "binary-extensions": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz",
+ "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+ "dev": true
+ },
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "boxen": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz",
+ "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=",
+ "dev": true,
+ "requires": {
+ "ansi-align": "2.0.0",
+ "camelcase": "4.1.0",
+ "chalk": "2.3.0",
+ "cli-boxes": "1.0.0",
+ "string-width": "2.1.1",
+ "term-size": "1.2.0",
+ "widest-line": "1.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "browserslist": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.5.0.tgz",
+ "integrity": "sha512-6Vw1LIigGw8zCK0gxczksUMZlO+oPUwBazAztMmFL/F8D5wB0qCuxRJGYgYM3JzaO0v2ZMRIg+nnnOgNsPGHeA==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "1.0.30000744",
+ "electron-to-chromium": "1.3.24"
+ }
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ }
+ },
+ "caniuse-api": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
+ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000744",
+ "lodash.memoize": "4.1.2",
+ "lodash.uniq": "4.5.0"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000744",
+ "electron-to-chromium": "1.3.24"
+ }
+ }
+ }
+ },
+ "caniuse-db": {
+ "version": "1.0.30000744",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000744.tgz",
+ "integrity": "sha1-AHWP991fcTjTShVgjcz3Glllb/4=",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000744",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000744.tgz",
+ "integrity": "sha1-hg+lyDujT+YZOX1gfzC7R0ghZxs=",
+ "dev": true
+ },
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
+ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
+ "requires": {
+ "anymatch": "1.3.2",
+ "async-each": "1.0.1",
+ "glob-parent": "2.0.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "2.0.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "clap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
+ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3"
+ }
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "2.0.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz",
+ "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
+ "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
+ "dev": true
+ },
+ "clone-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz",
+ "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=",
+ "dev": true,
+ "requires": {
+ "is-regexp": "1.0.0",
+ "is-supported-regexp-flag": "1.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "coa": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
+ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
+ "dev": true,
+ "requires": {
+ "q": "1.5.0"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "color": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2",
+ "color-convert": "1.9.0",
+ "color-string": "0.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
+ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-diff": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz",
+ "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=",
+ "dev": true
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "color-string": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "colorguard": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.0.tgz",
+ "integrity": "sha1-8/rK9cquuk71RlPZ+yW7cxd8DYQ=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "color-diff": "0.1.7",
+ "log-symbols": "1.0.2",
+ "object-assign": "4.1.1",
+ "pipetteur": "2.0.3",
+ "plur": "2.1.2",
+ "postcss": "5.2.18",
+ "postcss-reporter": "1.4.1",
+ "text-table": "0.2.0",
+ "yargs": "1.3.3"
+ },
+ "dependencies": {
+ "postcss-reporter": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz",
+ "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "lodash": "4.17.4",
+ "log-symbols": "1.0.2",
+ "postcss": "5.2.18"
+ }
+ },
+ "yargs": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz",
+ "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=",
+ "dev": true
+ }
+ }
+ },
+ "colormin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
+ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+ "dev": true,
+ "requires": {
+ "color": "0.11.4",
+ "css-color-names": "0.0.4",
+ "has": "1.0.1"
+ }
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "typedarray": "0.0.6"
+ }
+ },
+ "configstore": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz",
+ "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "4.2.0",
+ "graceful-fs": "4.1.11",
+ "make-dir": "1.1.0",
+ "unique-string": "1.0.0",
+ "write-file-atomic": "2.3.0",
+ "xdg-basedir": "3.0.0"
+ }
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+ "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
+ "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz",
+ "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
+ "dev": true,
+ "requires": {
+ "is-directory": "0.3.1",
+ "js-yaml": "3.7.0",
+ "minimist": "1.2.0",
+ "object-assign": "4.1.1",
+ "os-homedir": "1.0.2",
+ "parse-json": "2.2.0",
+ "require-from-string": "1.2.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "cp-file": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-3.2.0.tgz",
+ "integrity": "sha1-b4NhYlRiTwrViqSqjQdvAmvn4Yg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "mkdirp": "0.5.1",
+ "nested-error-stacks": "1.0.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "cpy": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cpy/-/cpy-4.0.1.tgz",
+ "integrity": "sha1-tnJn66LzlgugalphrJQDNCKDNCQ=",
+ "dev": true,
+ "requires": {
+ "cp-file": "3.2.0",
+ "globby": "4.1.0",
+ "meow": "3.7.0",
+ "nested-error-stacks": "1.0.2",
+ "object-assign": "4.1.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "cpy-cli": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-1.0.1.tgz",
+ "integrity": "sha1-Z/taSi3sKMqKv/N13kuecfanVhw=",
+ "dev": true,
+ "requires": {
+ "cpy": "4.0.1",
+ "meow": "3.7.0"
+ }
+ },
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+ "dev": true,
+ "requires": {
+ "capture-stack-trace": "1.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ }
+ },
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "dev": true,
+ "requires": {
+ "boom": "5.2.0"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ }
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "css-color-function": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz",
+ "integrity": "sha1-jtJMLAIFBzM5+voAS8jBQfzLKC4=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.1.0",
+ "color": "0.11.4",
+ "debug": "3.1.0",
+ "rgb": "0.1.0"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz",
+ "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "css-color-list": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/css-color-list/-/css-color-list-0.0.1.tgz",
+ "integrity": "sha1-hxjoaVrnosyHh76HFfHACKfyixU=",
+ "dev": true,
+ "requires": {
+ "css-color-names": "0.0.1"
+ },
+ "dependencies": {
+ "css-color-names": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz",
+ "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=",
+ "dev": true
+ }
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+ "dev": true
+ },
+ "css-rule-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz",
+ "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=",
+ "dev": true,
+ "requires": {
+ "css-tokenize": "1.0.1",
+ "duplexer2": "0.0.2",
+ "ldjson-stream": "1.2.1",
+ "through2": "0.6.5"
+ }
+ },
+ "css-tokenize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz",
+ "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "css-unit-converter": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz",
+ "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
+ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "6.7.7",
+ "decamelize": "1.2.0",
+ "defined": "1.0.0",
+ "has": "1.0.1",
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-calc": "5.3.1",
+ "postcss-colormin": "2.2.2",
+ "postcss-convert-values": "2.6.1",
+ "postcss-discard-comments": "2.0.4",
+ "postcss-discard-duplicates": "2.1.0",
+ "postcss-discard-empty": "2.1.0",
+ "postcss-discard-overridden": "0.1.1",
+ "postcss-discard-unused": "2.2.3",
+ "postcss-filter-plugins": "2.0.2",
+ "postcss-merge-idents": "2.1.7",
+ "postcss-merge-longhand": "2.0.2",
+ "postcss-merge-rules": "2.1.2",
+ "postcss-minify-font-values": "1.0.5",
+ "postcss-minify-gradients": "1.0.5",
+ "postcss-minify-params": "1.2.2",
+ "postcss-minify-selectors": "2.1.1",
+ "postcss-normalize-charset": "1.1.1",
+ "postcss-normalize-url": "3.0.8",
+ "postcss-ordered-values": "2.2.3",
+ "postcss-reduce-idents": "2.4.0",
+ "postcss-reduce-initial": "1.0.1",
+ "postcss-reduce-transforms": "1.0.4",
+ "postcss-svgo": "2.1.6",
+ "postcss-unique-selectors": "2.0.2",
+ "postcss-value-parser": "3.3.0",
+ "postcss-zindex": "2.2.0"
+ }
+ },
+ "csso": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
+ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+ "dev": true,
+ "requires": {
+ "clap": "1.2.3",
+ "source-map": "0.5.7"
+ }
+ },
+ "cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "dev": true,
+ "requires": {
+ "foreach": "2.0.5",
+ "object-keys": "1.0.11"
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "5.0.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.0",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "rimraf": "2.6.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ }
+ }
+ },
+ "del-cli": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-1.1.0.tgz",
+ "integrity": "sha1-J1V9aaC335ncuqHjSgnmrGWR0sQ=",
+ "dev": true,
+ "requires": {
+ "del": "3.0.0",
+ "meow": "3.7.0",
+ "update-notifier": "2.3.0"
+ },
+ "dependencies": {
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "dev": true,
+ "requires": {
+ "globby": "6.1.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.0",
+ "p-map": "1.2.0",
+ "pify": "3.0.0",
+ "rimraf": "2.6.2"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "dependency-graph": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.5.1.tgz",
+ "integrity": "sha512-nk3OjiI68T3876/tsm4Hm57ye7zc4Kl87hkcALBMCuSrN1q1NvuY5HCnSSkoJjGdrMo5gmu0WTN2cV/D76q/mw==",
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "diff": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz",
+ "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz",
+ "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "doiuse": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz",
+ "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000744",
+ "css-rule-stream": "1.1.0",
+ "duplexer2": "0.0.2",
+ "jsonfilter": "1.1.2",
+ "ldjson-stream": "1.2.1",
+ "lodash": "4.17.4",
+ "multimatch": "2.1.0",
+ "postcss": "5.2.18",
+ "source-map": "0.4.4",
+ "through2": "0.6.5",
+ "yargs": "3.32.0"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000744",
+ "electron-to-chromium": "1.3.24"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "dev": true,
+ "requires": {
+ "lcid": "1.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "yargs": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "os-locale": "1.4.0",
+ "string-width": "1.0.2",
+ "window-size": "0.1.4",
+ "y18n": "3.2.1"
+ }
+ }
+ }
+ },
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "editorconfig": {
+ "version": "0.13.3",
+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz",
+ "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.1",
+ "commander": "2.11.0",
+ "lru-cache": "3.2.0",
+ "semver": "5.4.1",
+ "sigmund": "1.0.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz",
+ "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2"
+ }
+ }
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.24",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz",
+ "integrity": "sha1-m3uIuwXOufoBahd4M8wt3jiPIbY=",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz",
+ "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "1.1.1",
+ "function-bind": "1.1.1",
+ "has": "1.0.1",
+ "is-callable": "1.1.3",
+ "is-regex": "1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "1.1.3",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
+ "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.14.0.tgz",
+ "integrity": "sha512-Ul6CSGRjKscEyg0X/EeNs7o2XdnbTEOD1OM8cTjmx85RPcBJQrEhZLevhuJZNAE/vS2iVl5Uhgiqf3h5uLMCJQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2",
+ "babel-code-frame": "6.26.0",
+ "chalk": "2.3.0",
+ "concat-stream": "1.6.0",
+ "cross-spawn": "5.1.0",
+ "debug": "3.1.0",
+ "doctrine": "2.0.2",
+ "eslint-scope": "3.7.1",
+ "eslint-visitor-keys": "1.0.0",
+ "espree": "3.5.2",
+ "esquery": "1.0.0",
+ "esutils": "2.0.2",
+ "file-entry-cache": "2.0.0",
+ "functional-red-black-tree": "1.0.1",
+ "glob": "7.1.2",
+ "globals": "11.1.0",
+ "ignore": "3.3.5",
+ "imurmurhash": "0.1.4",
+ "inquirer": "3.3.0",
+ "is-resolvable": "1.0.1",
+ "js-yaml": "3.10.0",
+ "json-stable-stringify-without-jsonify": "1.0.1",
+ "levn": "0.3.0",
+ "lodash": "4.17.4",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "optionator": "0.8.2",
+ "path-is-inside": "1.0.2",
+ "pluralize": "7.0.0",
+ "progress": "2.0.0",
+ "require-uncached": "1.0.3",
+ "semver": "5.4.1",
+ "strip-ansi": "4.0.0",
+ "strip-json-comments": "2.0.1",
+ "table": "4.0.2",
+ "text-table": "0.2.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globals": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz",
+ "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
+ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-airbnb-base": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz",
+ "integrity": "sha512-/vjm0Px5ZCpmJqnjIzcFb9TKZrKWz0gnuG/7Gfkt0Db1ELJR51xkZth+t14rYdqWgX836XbuxtArbIHlVhbLBA==",
+ "dev": true,
+ "requires": {
+ "eslint-restricted-globals": "0.1.1"
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz",
+ "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "resolve": "1.4.0"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz",
+ "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "pkg-dir": "1.0.0"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz",
+ "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1",
+ "contains-path": "0.1.0",
+ "debug": "2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "0.3.1",
+ "eslint-module-utils": "2.1.1",
+ "has": "1.0.1",
+ "lodash.cond": "4.5.2",
+ "minimatch": "3.0.4",
+ "read-pkg-up": "2.0.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2",
+ "isarray": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-restricted-globals": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz",
+ "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "4.2.0",
+ "estraverse": "4.2.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz",
+ "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.3.0",
+ "acorn-jsx": "3.0.1"
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
+ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
+ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz",
+ "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3.3",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "execall": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz",
+ "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=",
+ "dev": true,
+ "requires": {
+ "clone-regexp": "1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "external-editor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
+ "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
+ "dev": true,
+ "requires": {
+ "chardet": "0.4.2",
+ "iconv-lite": "0.4.19",
+ "tmp": "0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "extract-zip": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
+ "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.0",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.0",
+ "yauzl": "2.4.1"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+ "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "dev": true,
+ "requires": {
+ "pend": "1.2.0"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "1.3.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true,
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "0.3.3",
+ "del": "2.2.2",
+ "graceful-fs": "4.1.11",
+ "write": "0.2.1"
+ }
+ },
+ "flatten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
+ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
+ "dev": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "2.4.0",
+ "klaw": "1.3.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "gather-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz",
+ "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "global-dirs": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz",
+ "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=",
+ "dev": true,
+ "requires": {
+ "ini": "1.3.4"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "globby": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
+ "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "glob": "6.0.4",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=",
+ "dev": true
+ },
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "3.0.2",
+ "duplexer3": "0.1.4",
+ "get-stream": "3.0.0",
+ "is-redirect": "1.0.0",
+ "is-retry-allowed": "1.1.0",
+ "is-stream": "1.1.0",
+ "lowercase-keys": "1.0.0",
+ "safe-buffer": "5.1.1",
+ "timed-out": "4.0.1",
+ "unzip-response": "2.0.1",
+ "url-parse-lax": "1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.2.3",
+ "har-schema": "2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "hasha": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
+ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
+ "dev": true,
+ "requires": {
+ "is-stream": "1.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "dev": true,
+ "requires": {
+ "boom": "4.3.1",
+ "cryptiles": "3.1.2",
+ "hoek": "4.2.0",
+ "sntp": "2.1.0"
+ }
+ },
+ "hoek": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
+ "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
+ "dev": true
+ },
+ "home-or-tmp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
+ "dev": true
+ },
+ "html-comment-regex": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
+ "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
+ "dev": true
+ },
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz",
+ "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==",
+ "dev": true
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
+ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "3.0.0",
+ "chalk": "2.3.0",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "2.1.0",
+ "figures": "2.0.0",
+ "lodash": "4.17.4",
+ "mute-stream": "0.0.7",
+ "run-async": "2.3.0",
+ "rx-lite": "4.0.8",
+ "rx-lite-aggregates": "4.0.8",
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "through": "2.3.8"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "dev": true,
+ "requires": {
+ "loose-envify": "1.3.1"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true
+ },
+ "irregular-plurals": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz",
+ "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "1.10.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
+ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+ "dev": true
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "0.1.0",
+ "is-path-inside": "1.0.0"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
+ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
+ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1"
+ }
+ },
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "dev": true
+ },
+ "is-resolvable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz",
+ "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==",
+ "dev": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-supported-regexp-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz",
+ "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=",
+ "dev": true
+ },
+ "is-svg": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
+ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+ "dev": true,
+ "requires": {
+ "html-comment-regex": "1.1.1"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isnumeric": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz",
+ "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "js-base64": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz",
+ "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
+ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "2.7.3"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz",
+ "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "jsonfilter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz",
+ "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "0.8.4",
+ "minimist": "1.2.0",
+ "stream-combiner": "0.2.2",
+ "through2": "0.6.5"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "stream-combiner": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz",
+ "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "through": "2.3.8"
+ }
+ }
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
+ "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "kew": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
+ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "known-css-properties": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.2.0.tgz",
+ "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA==",
+ "dev": true
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "requires": {
+ "package-json": "4.0.1"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "1.0.0"
+ }
+ },
+ "ldjson-stream": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz",
+ "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=",
+ "dev": true,
+ "requires": {
+ "split2": "0.2.1",
+ "through2": "0.6.5"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash.cond": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
+ "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.templatesettings": "4.1.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0"
+ }
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3"
+ }
+ },
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "dev": true,
+ "requires": {
+ "js-tokens": "3.0.2"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "macaddress": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
+ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
+ "dev": true
+ },
+ "make-dir": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz",
+ "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+ "dev": true
+ },
+ "math-expression-evaluator": {
+ "version": "1.2.17",
+ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
+ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
+ "dev": true
+ },
+ "mathml-tag-names": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz",
+ "integrity": "sha1-jUEmgWi/htEQK5gQnijlMeejRXg=",
+ "dev": true
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.1.0"
+ }
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ }
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
+ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "multimatch": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
+ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
+ "dev": true,
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "minimatch": "3.0.4"
+ }
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "nested-error-stacks": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz",
+ "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "node-qunit-phantomjs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/node-qunit-phantomjs/-/node-qunit-phantomjs-2.0.0.tgz",
+ "integrity": "sha512-xZV0J8fBbe8h04IkBxLtwvGVbP0ViUhkJzjFx/tb7uWT02w6iMt5X6HDmdTZuQXBMsgahyaIGjW30l3HSlj2yA==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "minimist": "1.2.0",
+ "phantomjs-prebuilt": "2.1.16",
+ "qunit-phantomjs-runner": "2.3.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "qunit-phantomjs-runner": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/qunit-phantomjs-runner/-/qunit-phantomjs-runner-2.3.1.tgz",
+ "integrity": "sha512-RLg51606zm6/HwZi29NciAMAqifyJE1oGg77tEuk05vEa7kuqEaI0Mkjw976Ynnq7GXurATnbFd+471c024tBQ==",
+ "dev": true,
+ "requires": {
+ "qunit-reporter-junit": "1.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.5.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.4.1",
+ "validate-npm-package-license": "3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "dev": true
+ },
+ "normalize-selector": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
+ "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "prepend-http": "1.0.4",
+ "query-string": "4.3.4",
+ "sort-keys": "1.1.2"
+ }
+ },
+ "npm-run-all": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz",
+ "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "chalk": "2.3.0",
+ "cross-spawn": "5.1.0",
+ "memorystream": "0.3.1",
+ "minimatch": "3.0.4",
+ "ps-tree": "1.1.0",
+ "read-pkg": "3.0.0",
+ "shell-quote": "1.6.1",
+ "string.prototype.padend": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1",
+ "json-parse-better-errors": "1.0.1"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
+ "dev": true
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "onecolor": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.4.tgz",
+ "integrity": "sha1-daRvgNpseqpbTarhekcZi9llJJQ=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.1.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
+ }
+ },
+ "ora": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-1.3.0.tgz",
+ "integrity": "sha1-gAeN0rkqk0r2ajrXKluRBpTt5Ro=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cli-cursor": "2.1.0",
+ "cli-spinners": "1.1.0",
+ "log-symbols": "1.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "dev": true,
+ "requires": {
+ "execa": "0.7.0",
+ "lcid": "1.0.0",
+ "mem": "1.1.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
+ "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
+ "dev": true
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "1.1.0"
+ }
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "dev": true
+ },
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "dev": true,
+ "requires": {
+ "got": "6.7.1",
+ "registry-auth-token": "3.3.1",
+ "registry-url": "3.1.0",
+ "semver": "5.4.1"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "phantomjs-prebuilt": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
+ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
+ "dev": true,
+ "requires": {
+ "es6-promise": "4.1.1",
+ "extract-zip": "1.6.6",
+ "fs-extra": "1.0.0",
+ "hasha": "2.2.0",
+ "kew": "0.7.0",
+ "progress": "1.1.8",
+ "request": "2.83.0",
+ "request-progress": "2.0.1",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+ "dev": true
+ }
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "pipetteur": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz",
+ "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=",
+ "dev": true,
+ "requires": {
+ "onecolor": "3.0.4",
+ "synesthesia": "1.0.1"
+ }
+ },
+ "pixrem": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-4.0.1.tgz",
+ "integrity": "sha1-LaSh3m7EQjxfw3lOkwuB1EkOxoY=",
+ "dev": true,
+ "requires": {
+ "browserslist": "2.5.0",
+ "postcss": "6.0.13",
+ "reduce-css-calc": "1.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2"
+ }
+ },
+ "pleeease-filters": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-4.0.0.tgz",
+ "integrity": "sha1-ZjKy+wVkjSdY2GU4T7zteeHMrsc=",
+ "dev": true,
+ "requires": {
+ "onecolor": "3.0.4",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "plur": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz",
+ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
+ "dev": true,
+ "requires": {
+ "irregular-plurals": "1.3.0"
+ }
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "js-base64": "2.3.2",
+ "source-map": "0.5.7",
+ "supports-color": "3.2.3"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "postcss-apply": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.8.0.tgz",
+ "integrity": "sha1-FOVEu7XLbxweBIhXll15rgZrE0M=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "balanced-match": "0.4.2",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-attribute-case-insensitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz",
+ "integrity": "sha1-lNxCLI+QmX8WvTOjZUu77AhJY7Q=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-selector-parser": "2.2.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-calc": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
+ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-message-helpers": "2.0.0",
+ "reduce-css-calc": "1.3.0"
+ }
+ },
+ "postcss-cli": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-4.1.1.tgz",
+ "integrity": "sha1-uUvY//u3rB9i8mB+ePyTl/f2Ol0=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "chokidar": "1.7.0",
+ "dependency-graph": "0.5.1",
+ "fs-extra": "4.0.2",
+ "get-stdin": "5.0.1",
+ "globby": "6.1.0",
+ "ora": "1.3.0",
+ "postcss": "6.0.13",
+ "postcss-load-config": "1.2.0",
+ "postcss-reporter": "5.0.0",
+ "pretty-hrtime": "1.0.3",
+ "read-cache": "1.0.0",
+ "yargs": "8.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "fs-extra": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
+ "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.1"
+ }
+ },
+ "get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-function": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-4.0.0.tgz",
+ "integrity": "sha1-fgEG9Pah7LGtWzqFU6zl6Ciq4Yc=",
+ "dev": true,
+ "requires": {
+ "css-color-function": "1.3.3",
+ "postcss": "6.0.13",
+ "postcss-message-helpers": "2.0.0",
+ "postcss-value-parser": "3.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-gray": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.0.0.tgz",
+ "integrity": "sha1-aBvzBQl91mv+8OHmKC1dmbWsyV0=",
+ "dev": true,
+ "requires": {
+ "color": "1.0.3",
+ "postcss": "6.0.13",
+ "postcss-message-helpers": "2.0.0",
+ "reduce-function-call": "1.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "color": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz",
+ "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0",
+ "color-string": "1.5.2"
+ }
+ },
+ "color-string": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz",
+ "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3",
+ "simple-swizzle": "0.2.2"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-hex-alpha": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz",
+ "integrity": "sha1-HlPmyKyyN5Vej9CLfs2xuLgwn5U=",
+ "dev": true,
+ "requires": {
+ "color": "1.0.3",
+ "postcss": "6.0.13",
+ "postcss-message-helpers": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "color": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz",
+ "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0",
+ "color-string": "1.5.2"
+ }
+ },
+ "color-string": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz",
+ "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3",
+ "simple-swizzle": "0.2.2"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-hsl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-2.0.0.tgz",
+ "integrity": "sha1-EnA2ZvoxBDDj8wpFTawThjF9WEQ=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-value-parser": "3.3.0",
+ "units-css": "0.4.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-hwb": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-3.0.0.tgz",
+ "integrity": "sha1-NAKxnvTYSXVAwftQcr6YY8qVVx4=",
+ "dev": true,
+ "requires": {
+ "color": "1.0.3",
+ "postcss": "6.0.13",
+ "postcss-message-helpers": "2.0.0",
+ "reduce-function-call": "1.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "color": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz",
+ "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0",
+ "color-string": "1.5.2"
+ }
+ },
+ "color-string": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz",
+ "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3",
+ "simple-swizzle": "0.2.2"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-rebeccapurple": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.0.0.tgz",
+ "integrity": "sha1-7rrwPTY7QwC5Z5K9MIHBntZlE9M=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-value-parser": "3.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-rgb": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz",
+ "integrity": "sha1-FFOcinExSUtILg3RzCZf9lFLUmM=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-value-parser": "3.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-rgba-fallback": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-3.0.0.tgz",
+ "integrity": "sha1-N9XJNToHoJJwkSqCYGu0Kg1wLAQ=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-value-parser": "3.3.0",
+ "rgb-hex": "2.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-colormin": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
+ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
+ "dev": true,
+ "requires": {
+ "colormin": "1.1.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-convert-values": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
+ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-cssnext": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-3.0.2.tgz",
+ "integrity": "sha512-jA6kGdcUMZqLUgw6MdpyNWGFhk0LIITVhC/jTnLRZLoXSTR88qT2cFOn3LbY06udt1PVdTCHDG3plBjxVKf8BQ==",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "7.1.5",
+ "caniuse-api": "2.0.0",
+ "chalk": "2.1.0",
+ "pixrem": "4.0.1",
+ "pleeease-filters": "4.0.0",
+ "postcss": "6.0.13",
+ "postcss-apply": "0.8.0",
+ "postcss-attribute-case-insensitive": "2.0.0",
+ "postcss-calc": "6.0.0",
+ "postcss-color-function": "4.0.0",
+ "postcss-color-gray": "4.0.0",
+ "postcss-color-hex-alpha": "3.0.0",
+ "postcss-color-hsl": "2.0.0",
+ "postcss-color-hwb": "3.0.0",
+ "postcss-color-rebeccapurple": "3.0.0",
+ "postcss-color-rgb": "2.0.0",
+ "postcss-color-rgba-fallback": "3.0.0",
+ "postcss-custom-media": "6.0.0",
+ "postcss-custom-properties": "6.2.0",
+ "postcss-custom-selectors": "4.0.1",
+ "postcss-font-family-system-ui": "2.0.1",
+ "postcss-font-variant": "3.0.0",
+ "postcss-image-set-polyfill": "0.3.5",
+ "postcss-initial": "2.0.0",
+ "postcss-media-minmax": "3.0.0",
+ "postcss-nesting": "4.2.1",
+ "postcss-pseudo-class-any-link": "4.0.0",
+ "postcss-pseudoelements": "5.0.0",
+ "postcss-replace-overflow-wrap": "2.0.0",
+ "postcss-selector-matches": "3.0.1",
+ "postcss-selector-not": "3.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "autoprefixer": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.5.tgz",
+ "integrity": "sha512-sMN453qIm8Z+tunzYWW+Y490wWkICHhCYm/VohLjjl+N7ARSFuF5au7E6tr7oEbeeXj8mNjpSw2kxjJaO6YCOw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "2.5.0",
+ "caniuse-lite": "1.0.30000744",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "6.0.13",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "caniuse-api": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-2.0.0.tgz",
+ "integrity": "sha1-sd21pZZrFvSNxJmERNS7xsfZ2DQ=",
+ "dev": true,
+ "requires": {
+ "browserslist": "2.5.0",
+ "caniuse-lite": "1.0.30000744",
+ "lodash.memoize": "4.1.2",
+ "lodash.uniq": "4.5.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "postcss-calc": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.0.tgz",
+ "integrity": "sha1-toGyecbST74OM+2QRYA3BURdYTs=",
+ "dev": true,
+ "requires": {
+ "css-unit-converter": "1.1.1",
+ "postcss": "6.0.13",
+ "postcss-selector-parser": "2.2.3",
+ "reduce-css-calc": "2.0.5"
+ }
+ },
+ "reduce-css-calc": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.0.5.tgz",
+ "integrity": "sha1-M8l4OMXUxxGlwU74XOT95BSD970=",
+ "dev": true,
+ "requires": {
+ "css-unit-converter": "1.1.1",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-custom-media": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz",
+ "integrity": "sha1-vlMnhBEOyylQRPtTlaGABushpzc=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-custom-properties": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz",
+ "integrity": "sha512-eNR2h9T9ciKMoQEORrPjH33XeN/nuvVuxArOKmHtsFbGbNss631tgTrKou3/pmjAZbA4QQkhLIkPQkIk3WW+8w==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-custom-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz",
+ "integrity": "sha1-eBOC+UxS5yfvXKR3bqKt9JphE4I=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-selector-matches": "3.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
+ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-duplicates": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
+ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-empty": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
+ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-overridden": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
+ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-discard-unused": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
+ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "uniqs": "2.0.0"
+ }
+ },
+ "postcss-filter-plugins": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
+ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "uniqid": "4.1.1"
+ }
+ },
+ "postcss-font-family-system-ui": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-2.0.1.tgz",
+ "integrity": "sha1-MYoHX9y4S4ZKqCOlGTXvClhy6RE=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4",
+ "postcss": "6.0.13",
+ "postcss-value-parser": "3.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-font-variant": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz",
+ "integrity": "sha1-CMzIj2BQuoLtjvLMdsDGprQfGD4=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-header": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-header/-/postcss-header-1.0.0.tgz",
+ "integrity": "sha512-YUcU2oHQNsNVUDPdQg6/TXBWvI7dBGf2bsLQdVlLiLM5kiGLGCcszYDlVTaicmXpKANdS1T7bxpJtCacrMButw==",
+ "dev": true,
+ "requires": {
+ "babel-register": "6.26.0",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-image-set-polyfill": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz",
+ "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-media-query-parser": "0.2.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-initial": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-2.0.0.tgz",
+ "integrity": "sha1-cnFfczbgu3k1HZnuZcSiU6hEG6Q=",
+ "dev": true,
+ "requires": {
+ "lodash.template": "4.4.0",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-less": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz",
+ "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-load-config": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz",
+ "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "2.2.2",
+ "object-assign": "4.1.1",
+ "postcss-load-options": "1.2.0",
+ "postcss-load-plugins": "2.3.0"
+ }
+ },
+ "postcss-load-options": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz",
+ "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "2.2.2",
+ "object-assign": "4.1.1"
+ }
+ },
+ "postcss-load-plugins": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz",
+ "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "2.2.2",
+ "object-assign": "4.1.1"
+ }
+ },
+ "postcss-media-minmax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz",
+ "integrity": "sha1-Z1JWA3pD70C8Twdgv9BtTcadSNI=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
+ "dev": true
+ },
+ "postcss-merge-idents": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
+ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
+ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
+ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-api": "1.6.1",
+ "postcss": "5.2.18",
+ "postcss-selector-parser": "2.2.3",
+ "vendors": "1.0.1"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000744",
+ "electron-to-chromium": "1.3.24"
+ }
+ }
+ }
+ },
+ "postcss-message-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
+ "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
+ "dev": true
+ },
+ "postcss-minify-font-values": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
+ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
+ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-minify-params": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
+ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0",
+ "uniqs": "2.0.0"
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
+ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "postcss-selector-parser": "2.2.3"
+ }
+ },
+ "postcss-nesting": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz",
+ "integrity": "sha512-IkyWXICwagCnlaviRexi7qOdwPw3+xVVjgFfGsxmztvRVaNxAlrypOIKqDE5mxY+BVxnId1rnUKBRQoNE2VDaA==",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
+ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
+ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
+ "dev": true,
+ "requires": {
+ "is-absolute-url": "2.1.0",
+ "normalize-url": "1.9.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
+ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-pseudo-class-any-link": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz",
+ "integrity": "sha1-kVKgYT00UHIFE+iJKFS65C0O5o4=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13",
+ "postcss-selector-parser": "2.2.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-pseudoelements": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-5.0.0.tgz",
+ "integrity": "sha1-7vGU6NUkZFylIKlJ6V5RjoEkAss=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-reduce-idents": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
+ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
+ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
+ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "postcss-replace-overflow-wrap": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz",
+ "integrity": "sha1-eU22+qVPjbEAhUOSqTr0V2i04ls=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-reporter": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz",
+ "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "lodash": "4.17.4",
+ "log-symbols": "2.1.0",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz",
+ "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0"
+ }
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-resolve-nested-selector": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+ "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=",
+ "dev": true
+ },
+ "postcss-scss": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz",
+ "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-matches": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz",
+ "integrity": "sha1-5WNAEeE5UIgYYbvdWMLQER/8lqs=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-not": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz",
+ "integrity": "sha1-Lk2y8JZTNsAefOx9tsYN/3ZzNdk=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "postcss": "6.0.13"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
+ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+ "dev": true,
+ "requires": {
+ "flatten": "1.0.2",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "postcss-sorting": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-2.1.0.tgz",
+ "integrity": "sha1-MrHpr6kTuyJaatB21QPY+YO7SoI=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4",
+ "postcss": "5.2.18"
+ }
+ },
+ "postcss-svgo": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
+ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
+ "dev": true,
+ "requires": {
+ "is-svg": "2.1.0",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0",
+ "svgo": "0.7.2"
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
+ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "postcss": "5.2.18",
+ "uniqs": "2.0.0"
+ }
+ },
+ "postcss-url": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.0.tgz",
+ "integrity": "sha512-VBP6uf6iL3AZra23nkPkOEkS/5azj1xf/toRrjfkolfFEgg9Gyzg9UhJZeIsz12EGKZTNVeGbPa2XtaZm/iZvg==",
+ "dev": true,
+ "requires": {
+ "mime": "1.4.1",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "postcss": "6.0.14",
+ "xxhashjs": "0.2.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
+ "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
+ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
+ "dev": true
+ },
+ "postcss-zindex": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
+ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
+ "dev": true,
+ "requires": {
+ "has": "1.0.1",
+ "postcss": "5.2.18",
+ "uniqs": "2.0.0"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
+ "dev": true
+ },
+ "private": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz",
+ "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
+ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
+ "dev": true
+ },
+ "ps-tree": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz",
+ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
+ "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "strict-uri-encode": "1.1.0"
+ }
+ },
+ "qunit-reporter-junit": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/qunit-reporter-junit/-/qunit-reporter-junit-1.1.1.tgz",
+ "integrity": "sha1-7rYiZFeJaZPnlaEZQPGK9q+lebQ=",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "rc": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
+ "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
+ "dev": true,
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.4",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "read-file-stdin": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.1.tgz",
+ "integrity": "sha1-JezP86FTtoCa+ssj7hU4fbng7mE=",
+ "dev": true,
+ "requires": {
+ "gather-stream": "1.0.0"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "readable-stream": "2.3.3",
+ "set-immediate-shim": "1.0.1"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
+ }
+ },
+ "reduce-css-calc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
+ "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "math-expression-evaluator": "1.2.17",
+ "reduce-function-call": "1.0.2"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ }
+ }
+ },
+ "reduce-function-call": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
+ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ }
+ }
+ },
+ "regenerate": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
+ "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
+ "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "private": "0.1.7"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "regexpu-core": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
+ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
+ "dev": true,
+ "requires": {
+ "regenerate": "1.3.3",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz",
+ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.2",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.2"
+ }
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "dev": true,
+ "requires": {
+ "jsesc": "0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "request": {
+ "version": "2.83.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
+ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.1",
+ "har-validator": "5.0.3",
+ "hawk": "6.0.2",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "performance-now": "2.1.0",
+ "qs": "6.5.1",
+ "safe-buffer": "5.1.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.1.0"
+ }
+ },
+ "request-progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
+ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
+ "dev": true,
+ "requires": {
+ "throttleit": "1.0.0"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-from-string": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
+ "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "require-relative": {
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
+ "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
+ "dev": true
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "0.1.0",
+ "resolve-from": "1.0.1"
+ }
+ },
+ "resolve": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
+ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "2.0.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "rgb": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
+ "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=",
+ "dev": true
+ },
+ "rgb-hex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-2.1.0.tgz",
+ "integrity": "sha1-x3PF/iJoolV42SU5qCp6XOU77aY=",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ }
+ }
+ },
+ "rollup": {
+ "version": "0.53.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.53.3.tgz",
+ "integrity": "sha512-MADFV0jpoh1QDB6U0U6YamGihGetxHEYgwTcGsc7map6JFIydPEfGNshK+ozxv1RKeUOQKn1vRb85IAcdjL22Q==",
+ "dev": true
+ },
+ "rollup-plugin-babel": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.3.tgz",
+ "integrity": "sha512-5kzM/Rr4jQSRPLc2eN5NuD+CI/6AAy7S1O18Ogu4U3nq1Q42VJn0C9EMtqnvxtfwf1XrezOtdA9ro1VZI5B0mA==",
+ "dev": true,
+ "requires": {
+ "rollup-pluginutils": "1.5.2"
+ }
+ },
+ "rollup-pluginutils": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
+ "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=",
+ "dev": true,
+ "requires": {
+ "estree-walker": "0.2.1",
+ "minimatch": "3.0.4"
+ }
+ },
+ "rollup-watch": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/rollup-watch/-/rollup-watch-4.3.1.tgz",
+ "integrity": "sha512-6yjnIwfjpSrqA8IafyIu7fsEyeImNR4aDjA1bQ7KWeVuiA+Clfsx8+PGQkyABWIQzmauQ//tIJ5wAxLXsXs8qQ==",
+ "dev": true,
+ "requires": {
+ "chokidar": "1.7.0",
+ "require-relative": "0.8.7",
+ "rollup-pluginutils": "2.0.1"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz",
+ "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=",
+ "dev": true
+ },
+ "rollup-pluginutils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz",
+ "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=",
+ "dev": true,
+ "requires": {
+ "estree-walker": "0.3.1",
+ "micromatch": "2.3.11"
+ }
+ }
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "2.1.0"
+ }
+ },
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "requires": {
+ "rx-lite": "4.0.8"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "5.4.1"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "0.0.1",
+ "array-map": "0.0.0",
+ "array-reduce": "0.0.0",
+ "jsonify": "0.0.0"
+ }
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.1.tgz",
+ "integrity": "sha1-wt/DhquqDD4zxI2z/ocFnmkGXv0=",
+ "dev": true
+ }
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0"
+ }
+ },
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "1.1.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true,
+ "requires": {
+ "spdx-license-ids": "1.2.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "specificity": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz",
+ "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==",
+ "dev": true
+ },
+ "split": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "split2": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz",
+ "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=",
+ "dev": true,
+ "requires": {
+ "through2": "0.6.5"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "dev": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "stdin": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz",
+ "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=",
+ "dev": true
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
+ }
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "string.prototype.padend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "es-abstract": "1.9.0",
+ "function-bind": "1.1.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "style-search": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
+ "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=",
+ "dev": true
+ },
+ "stylefmt": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/stylefmt/-/stylefmt-6.0.0.tgz",
+ "integrity": "sha1-yFHpwteLiplQL3S6PYY7MBY+7JM=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "css-color-list": "0.0.1",
+ "diff": "3.4.0",
+ "editorconfig": "0.13.3",
+ "globby": "6.1.0",
+ "minimist": "1.2.0",
+ "postcss": "6.0.13",
+ "postcss-scss": "1.0.2",
+ "postcss-sorting": "2.1.0",
+ "postcss-value-parser": "3.3.0",
+ "stdin": "0.0.1",
+ "stylelint": "7.13.0",
+ "stylelint-order": "0.4.4"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.1.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.4.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "stylehacks": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-2.3.2.tgz",
+ "integrity": "sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "chalk": "1.1.3",
+ "log-symbols": "1.0.2",
+ "minimist": "1.2.0",
+ "plur": "2.1.2",
+ "postcss": "5.2.18",
+ "postcss-reporter": "1.4.1",
+ "postcss-selector-parser": "2.2.3",
+ "read-file-stdin": "0.2.1",
+ "text-table": "0.2.0",
+ "write-file-stdout": "0.0.2"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000744",
+ "electron-to-chromium": "1.3.24"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "postcss-reporter": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz",
+ "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "lodash": "4.17.4",
+ "log-symbols": "1.0.2",
+ "postcss": "5.2.18"
+ }
+ }
+ }
+ },
+ "stylelint": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz",
+ "integrity": "sha1-ER+Xttpy53XICADWu29fhpmXeF0=",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "6.7.7",
+ "balanced-match": "0.4.2",
+ "chalk": "2.1.0",
+ "colorguard": "1.2.0",
+ "cosmiconfig": "2.2.2",
+ "debug": "2.6.9",
+ "doiuse": "2.6.0",
+ "execall": "1.0.0",
+ "file-entry-cache": "2.0.0",
+ "get-stdin": "5.0.1",
+ "globby": "6.1.0",
+ "globjoin": "0.1.4",
+ "html-tags": "2.0.0",
+ "ignore": "3.3.5",
+ "imurmurhash": "0.1.4",
+ "known-css-properties": "0.2.0",
+ "lodash": "4.17.4",
+ "log-symbols": "1.0.2",
+ "mathml-tag-names": "2.0.1",
+ "meow": "3.7.0",
+ "micromatch": "2.3.11",
+ "normalize-selector": "0.2.0",
+ "pify": "2.3.0",
+ "postcss": "5.2.18",
+ "postcss-less": "0.14.0",
+ "postcss-media-query-parser": "0.2.3",
+ "postcss-reporter": "3.0.0",
+ "postcss-resolve-nested-selector": "0.1.1",
+ "postcss-scss": "0.4.1",
+ "postcss-selector-parser": "2.2.3",
+ "postcss-value-parser": "3.3.0",
+ "resolve-from": "3.0.0",
+ "specificity": "0.3.2",
+ "string-width": "2.1.1",
+ "style-search": "0.1.0",
+ "stylehacks": "2.3.2",
+ "sugarss": "0.2.0",
+ "svg-tags": "1.0.0",
+ "table": "4.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "postcss-reporter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz",
+ "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "lodash": "4.17.4",
+ "log-symbols": "1.0.2",
+ "postcss": "5.2.18"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-scss": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz",
+ "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "stylelint-order": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-0.4.4.tgz",
+ "integrity": "sha1-2338oFQbUGIBDH4uIedFeR/AiKw=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4",
+ "postcss": "5.2.18",
+ "stylelint": "7.13.0"
+ }
+ },
+ "sugarss": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz",
+ "integrity": "sha1-rDQjdWMyfG/4l7ZHQr9q7BkK054=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+ "dev": true
+ },
+ "svgo": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
+ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
+ "dev": true,
+ "requires": {
+ "coa": "1.0.4",
+ "colors": "1.1.2",
+ "csso": "2.3.2",
+ "js-yaml": "3.7.0",
+ "mkdirp": "0.5.1",
+ "sax": "1.2.4",
+ "whet.extend": "0.9.9"
+ }
+ },
+ "synesthesia": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/synesthesia/-/synesthesia-1.0.1.tgz",
+ "integrity": "sha1-XvlepUjA1cbm+btLDQcx3/hkp3c=",
+ "dev": true,
+ "requires": {
+ "css-color-names": "0.0.3"
+ },
+ "dependencies": {
+ "css-color-names": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.3.tgz",
+ "integrity": "sha1-3gzvFvTYqoIioyDVttfpu62nufY=",
+ "dev": true
+ }
+ }
+ },
+ "table": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
+ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
+ "dev": true,
+ "requires": {
+ "ajv": "5.2.3",
+ "ajv-keywords": "2.1.0",
+ "chalk": "2.1.0",
+ "lodash": "4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "2.1.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
+ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.4.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "0.7.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throttleit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
+ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz",
+ "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==",
+ "dev": true,
+ "requires": {
+ "commander": "2.12.2",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
+ "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "uniqid": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
+ "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
+ "dev": true,
+ "requires": {
+ "macaddress": "0.2.8"
+ }
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+ "dev": true
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "1.0.0"
+ }
+ },
+ "units-css": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz",
+ "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=",
+ "dev": true,
+ "requires": {
+ "isnumeric": "0.2.0",
+ "viewport-dimensions": "0.2.0"
+ }
+ },
+ "universalify": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "dev": true
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "dev": true
+ },
+ "update-notifier": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz",
+ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=",
+ "dev": true,
+ "requires": {
+ "boxen": "1.2.2",
+ "chalk": "2.3.0",
+ "configstore": "3.1.1",
+ "import-lazy": "2.1.0",
+ "is-installed-globally": "0.1.0",
+ "is-npm": "1.0.0",
+ "latest-version": "3.1.0",
+ "semver-diff": "2.1.0",
+ "xdg-basedir": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "1.0.4"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "1.0.2",
+ "spdx-expression-parse": "1.0.4"
+ }
+ },
+ "vendors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz",
+ "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ }
+ },
+ "viewport-dimensions": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz",
+ "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=",
+ "dev": true
+ },
+ "whet.extend": {
+ "version": "0.9.9",
+ "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
+ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "widest-line": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
+ "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "write-file-stdout": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz",
+ "integrity": "sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE=",
+ "dev": true
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "xxhashjs": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.1.tgz",
+ "integrity": "sha1-m76b6JYUKXbfo0wGGy0GjEPTDeA=",
+ "dev": true,
+ "requires": {
+ "cuint": "0.2.2"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
+ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "read-pkg-up": "2.0.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "7.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ },
+ "yauzl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "dev": true,
+ "requires": {
+ "fd-slicer": "1.0.1"
+ }
+ }
+ }
+}
diff --git a/library/cropperjs/package.json b/library/cropperjs/package.json
new file mode 100644
index 000000000..f94100981
--- /dev/null
+++ b/library/cropperjs/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "cropperjs",
+ "description": "JavaScript image cropper.",
+ "version": "1.2.2",
+ "main": "dist/cropper.common.js",
+ "module": "dist/cropper.esm.js",
+ "browser": "dist/cropper.js",
+ "style": "dist/cropper.css",
+ "repository": "fengyuanchen/cropperjs",
+ "homepage": "https://fengyuanchen.github.io/cropperjs",
+ "license": "MIT",
+ "author": {
+ "name": "Chen Fengyuan",
+ "url": "http://chenfengyuan.com"
+ },
+ "files": [
+ "src",
+ "dist"
+ ],
+ "keywords": [
+ "image",
+ "crop",
+ "cropping",
+ "move",
+ "zoom",
+ "rotate",
+ "scale",
+ "cropper",
+ "cropperjs",
+ "cropper.js",
+ "html",
+ "css",
+ "javascript",
+ "front-end",
+ "web",
+ "development"
+ ],
+ "scripts": {
+ "build": "npm run build:css && npm run build:js",
+ "build:css": "postcss src/css/cropper.css -o dist/cropper.css --no-map",
+ "build:js": "rollup -c",
+ "clear": "del-cli dist",
+ "compress": "npm run compress:css && npm run compress:js",
+ "compress:css": "postcss dist/cropper.css -u cssnano -o dist/cropper.min.css --no-map",
+ "compress:js": "uglifyjs dist/cropper.js -o dist/cropper.min.js -c -m --comments /^!/",
+ "copy": "cpy dist/cropper.css docs/css",
+ "lint": "eslint src/js --fix",
+ "release": "npm run clear && npm run lint && npm run build && npm run compress && npm run copy && npm test",
+ "start": "npm-run-all --parallel watch:*",
+ "test": "node-qunit-phantomjs test/index.html --timeout 10",
+ "watch:css": "postcss src/css/cropper.css -o docs/css/cropper.css -m -w",
+ "watch:js": "rollup -c -m -w"
+ },
+ "devDependencies": {
+ "babel-core": "^6.26.0",
+ "babel-plugin-external-helpers": "^6.22.0",
+ "babel-preset-env": "^1.6.1",
+ "cpy-cli": "^1.0.1",
+ "cssnano": "^3.10.0",
+ "del-cli": "^1.1.0",
+ "eslint": "^4.14.0",
+ "eslint-config-airbnb-base": "^12.1.0",
+ "eslint-plugin-import": "^2.8.0",
+ "node-qunit-phantomjs": "^2.0.0",
+ "npm-run-all": "^4.1.2",
+ "postcss-cli": "^4.1.1",
+ "postcss-cssnext": "^3.0.2",
+ "postcss-header": "^1.0.0",
+ "postcss-url": "^7.3.0",
+ "rollup": "^0.53.3",
+ "rollup-plugin-babel": "^3.0.3",
+ "rollup-watch": "^4.3.1",
+ "stylefmt": "^6.0.0",
+ "uglify-js": "^3.3.4"
+ }
+}
diff --git a/library/cropperjs/postcss.config.js b/library/cropperjs/postcss.config.js
new file mode 100644
index 000000000..af7ec6024
--- /dev/null
+++ b/library/cropperjs/postcss.config.js
@@ -0,0 +1,14 @@
+const rollupConfig = require('./rollup.config');
+
+module.exports = {
+ plugins: {
+ 'postcss-cssnext': {},
+ 'postcss-url': {
+ url: 'inline',
+ },
+ 'postcss-header': {
+ header: rollupConfig.banner,
+ },
+ stylefmt: {},
+ },
+};
diff --git a/library/cropperjs/rollup.config.js b/library/cropperjs/rollup.config.js
new file mode 100644
index 000000000..b792a79a7
--- /dev/null
+++ b/library/cropperjs/rollup.config.js
@@ -0,0 +1,50 @@
+const babel = require('rollup-plugin-babel');
+const pkg = require('./package');
+
+const now = new Date();
+const banner = `/*!
+ * Cropper.js v${pkg.version}
+ * https://github.com/${pkg.repository}
+ *
+ * Copyright (c) 2015-${now.getFullYear()} ${pkg.author.name}
+ * Released under the ${pkg.license} license
+ *
+ * Date: ${now.toISOString()}
+ */
+`;
+
+module.exports = {
+ // Export banner for PostCSS
+ banner,
+ input: 'src/js/cropper.js',
+ output: [
+ {
+ banner,
+ file: 'dist/cropper.js',
+ format: 'umd',
+ name: 'Cropper',
+ },
+ {
+ banner,
+ file: 'dist/cropper.common.js',
+ format: 'cjs',
+ },
+ {
+ banner,
+ file: 'dist/cropper.esm.js',
+ format: 'es',
+ },
+ {
+ banner,
+ file: 'docs/js/cropper.js',
+ format: 'umd',
+ name: 'Cropper',
+ },
+ ],
+ plugins: [
+ babel({
+ exclude: 'node_modules/**',
+ plugins: ['external-helpers'],
+ }),
+ ],
+};
diff --git a/library/cropperjs/src/css/cropper.css b/library/cropperjs/src/css/cropper.css
new file mode 100644
index 000000000..d09c4f182
--- /dev/null
+++ b/library/cropperjs/src/css/cropper.css
@@ -0,0 +1,290 @@
+:root {
+ --blue: #39f;
+}
+
+.cropper-container {
+ direction: ltr;
+ font-size: 0;
+ line-height: 0;
+ position: relative;
+ touch-action: none;
+ user-select: none;
+
+ & img {
+ /* Avoid margin top issue (Occur only when margin-top <= -height) */
+ display: block;
+ height: 100%;
+ image-orientation: 0deg;
+ max-height: none !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ min-width: 0 !important;
+ width: 100%;
+ }
+}
+
+.cropper-wrap-box,
+.cropper-canvas,
+.cropper-drag-box,
+.cropper-crop-box,
+.cropper-modal {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.cropper-wrap-box,
+.cropper-canvas {
+ overflow: hidden;
+}
+
+.cropper-drag-box {
+ background-color: #fff;
+ opacity: 0;
+}
+
+.cropper-modal {
+ background-color: #000;
+ opacity: .5;
+}
+
+.cropper-view-box {
+ display: block;
+ height: 100%;
+ outline-color: color(var(--blue) alpha(75%));
+ outline: 1px solid var(--blue);
+ overflow: hidden;
+ width: 100%;
+}
+
+.cropper-dashed {
+ border: 0 dashed #eee;
+ display: block;
+ opacity: .5;
+ position: absolute;
+
+ &.dashed-h {
+ border-bottom-width: 1px;
+ border-top-width: 1px;
+ height: calc(100 / 3)%;
+ left: 0;
+ top: calc(100 / 3)%;
+ width: 100%;
+ }
+
+ &.dashed-v {
+ border-left-width: 1px;
+ border-right-width: 1px;
+ height: 100%;
+ left: calc(100 / 3)%;
+ top: 0;
+ width: calc(100 / 3)%;
+ }
+}
+
+.cropper-center {
+ display: block;
+ height: 0;
+ left: 50%;
+ opacity: .75;
+ position: absolute;
+ top: 50%;
+ width: 0;
+
+ &:before,
+ &:after {
+ background-color: #eee;
+ content: ' ';
+ display: block;
+ position: absolute;
+ }
+
+ &:before {
+ height: 1px;
+ left: -3px;
+ top: 0;
+ width: 7px;
+ }
+
+ &:after {
+ height: 7px;
+ left: 0;
+ top: -3px;
+ width: 1px;
+ }
+}
+
+.cropper-face,
+.cropper-line,
+.cropper-point {
+ display: block;
+ height: 100%;
+ opacity: .1;
+ position: absolute;
+ width: 100%;
+}
+
+.cropper-face {
+ background-color: #fff;
+ left: 0;
+ top: 0;
+}
+
+.cropper-line {
+ background-color: var(--blue);
+
+ &.line-e {
+ cursor: ew-resize;
+ right: -3px;
+ top: 0;
+ width: 5px;
+ }
+
+ &.line-n {
+ cursor: ns-resize;
+ height: 5px;
+ left: 0;
+ top: -3px;
+ }
+
+ &.line-w {
+ cursor: ew-resize;
+ left: -3px;
+ top: 0;
+ width: 5px;
+ }
+
+ &.line-s {
+ bottom: -3px;
+ cursor: ns-resize;
+ height: 5px;
+ left: 0;
+ }
+}
+
+.cropper-point {
+ background-color: var(--blue);
+ height: 5px;
+ opacity: .75;
+ width: 5px;
+
+ &.point-e {
+ cursor: ew-resize;
+ margin-top: -3px;
+ right: -3px;
+ top: 50%;
+ }
+
+ &.point-n {
+ cursor: ns-resize;
+ left: 50%;
+ margin-left: -3px;
+ top: -3px;
+ }
+
+ &.point-w {
+ cursor: ew-resize;
+ left: -3px;
+ margin-top: -3px;
+ top: 50%;
+ }
+
+ &.point-s {
+ bottom: -3px;
+ cursor: s-resize;
+ left: 50%;
+ margin-left: -3px;
+ }
+
+ &.point-ne {
+ cursor: nesw-resize;
+ right: -3px;
+ top: -3px;
+ }
+
+ &.point-nw {
+ cursor: nwse-resize;
+ left: -3px;
+ top: -3px;
+ }
+
+ &.point-sw {
+ bottom: -3px;
+ cursor: nesw-resize;
+ left: -3px;
+ }
+
+ &.point-se {
+ bottom: -3px;
+ cursor: nwse-resize;
+ height: 20px;
+ opacity: 1;
+ right: -3px;
+ width: 20px;
+
+ @media (min-width: 768px) {
+ height: 15px;
+ width: 15px;
+ }
+
+ @media (min-width: 992px) {
+ height: 10px;
+ width: 10px;
+ }
+
+ @media (min-width: 1200px) {
+ height: 5px;
+ opacity: .75;
+ width: 5px;
+ }
+ }
+
+ &.point-se:before {
+ background-color: var(--blue);
+ bottom: -50%;
+ content: ' ';
+ display: block;
+ height: 200%;
+ opacity: 0;
+ position: absolute;
+ right: -50%;
+ width: 200%;
+ }
+}
+
+.cropper-invisible {
+ opacity: 0;
+}
+
+.cropper-bg {
+ background-image: url('../images/bg.png');
+}
+
+.cropper-hide {
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+
+.cropper-hidden {
+ display: none !important;
+}
+
+.cropper-move {
+ cursor: move;
+}
+
+.cropper-crop {
+ cursor: crosshair;
+}
+
+.cropper-disabled .cropper-drag-box,
+.cropper-disabled .cropper-face,
+.cropper-disabled .cropper-line,
+.cropper-disabled .cropper-point {
+ cursor: not-allowed;
+}
+
diff --git a/library/cropperjs/src/images/bg.png b/library/cropperjs/src/images/bg.png
new file mode 100644
index 000000000..3c7056b19
--- /dev/null
+++ b/library/cropperjs/src/images/bg.png
Binary files differ
diff --git a/library/cropperjs/src/js/change.js b/library/cropperjs/src/js/change.js
new file mode 100644
index 000000000..014222ef0
--- /dev/null
+++ b/library/cropperjs/src/js/change.js
@@ -0,0 +1,471 @@
+import {
+ ACTION_ALL,
+ ACTION_CROP,
+ ACTION_EAST,
+ ACTION_MOVE,
+ ACTION_NORTH,
+ ACTION_NORTH_EAST,
+ ACTION_NORTH_WEST,
+ ACTION_SOUTH,
+ ACTION_SOUTH_EAST,
+ ACTION_SOUTH_WEST,
+ ACTION_WEST,
+ ACTION_ZOOM,
+ CLASS_HIDDEN,
+} from './constants';
+import {
+ each,
+ getMaxZoomRatio,
+ getOffset,
+ removeClass,
+} from './utilities';
+
+export default {
+ change(e) {
+ const {
+ options,
+ canvasData,
+ containerData,
+ cropBoxData,
+ pointers,
+ } = this;
+ let { action } = this;
+ let { aspectRatio } = options;
+ let {
+ left,
+ top,
+ width,
+ height,
+ } = cropBoxData;
+ const right = left + width;
+ const bottom = top + height;
+ let minLeft = 0;
+ let minTop = 0;
+ let maxWidth = containerData.width;
+ let maxHeight = containerData.height;
+ let renderable = true;
+ let offset;
+
+ // Locking aspect ratio in "free mode" by holding shift key
+ if (!aspectRatio && e.shiftKey) {
+ aspectRatio = width && height ? width / height : 1;
+ }
+
+ if (this.limited) {
+ ({ minLeft, minTop } = cropBoxData);
+ maxWidth = minLeft + Math.min(
+ containerData.width,
+ canvasData.width,
+ canvasData.left + canvasData.width,
+ );
+ maxHeight = minTop + Math.min(
+ containerData.height,
+ canvasData.height,
+ canvasData.top + canvasData.height,
+ );
+ }
+
+ const pointer = pointers[Object.keys(pointers)[0]];
+ const range = {
+ x: pointer.endX - pointer.startX,
+ y: pointer.endY - pointer.startY,
+ };
+ const check = (side) => {
+ switch (side) {
+ case ACTION_EAST:
+ if (right + range.x > maxWidth) {
+ range.x = maxWidth - right;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (left + range.x < minLeft) {
+ range.x = minLeft - left;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (top + range.y < minTop) {
+ range.y = minTop - top;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (bottom + range.y > maxHeight) {
+ range.y = maxHeight - bottom;
+ }
+
+ break;
+
+ default:
+ }
+ };
+
+ switch (action) {
+ // Move crop box
+ case ACTION_ALL:
+ left += range.x;
+ top += range.y;
+ break;
+
+ // Resize crop box
+ case ACTION_EAST:
+ if (range.x >= 0 && (right >= maxWidth || (aspectRatio &&
+ (top <= minTop || bottom >= maxHeight)))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top -= (range.x / aspectRatio) / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_WEST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH:
+ if (range.y <= 0 && (top <= minTop || (aspectRatio &&
+ (left <= minLeft || right >= maxWidth)))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left += (range.y * aspectRatio) / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_SOUTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_WEST:
+ if (range.x <= 0 && (left <= minLeft || (aspectRatio &&
+ (top <= minTop || bottom >= maxHeight)))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+
+ if (aspectRatio) {
+ height = width / aspectRatio;
+ top += (range.x / aspectRatio) / 2;
+ }
+
+ if (width < 0) {
+ action = ACTION_EAST;
+ width = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH:
+ if (range.y >= 0 && (bottom >= maxHeight || (aspectRatio &&
+ (left <= minLeft || right >= maxWidth)))) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_SOUTH);
+ height += range.y;
+
+ if (aspectRatio) {
+ width = height * aspectRatio;
+ left -= (range.y * aspectRatio) / 2;
+ }
+
+ if (height < 0) {
+ action = ACTION_NORTH;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_EAST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_NORTH_WEST:
+ if (aspectRatio) {
+ if (range.y <= 0 && (top <= minTop || left <= minLeft)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_NORTH);
+ height -= range.y;
+ top += range.y;
+ width = height * aspectRatio;
+ left += range.y * aspectRatio;
+ } else {
+ check(ACTION_NORTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y <= 0 && top <= minTop) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y <= 0) {
+ if (top > minTop) {
+ height -= range.y;
+ top += range.y;
+ }
+ } else {
+ height -= range.y;
+ top += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_SOUTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_NORTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_SOUTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_WEST:
+ if (aspectRatio) {
+ if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_WEST);
+ width -= range.x;
+ left += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_WEST);
+
+ if (range.x <= 0) {
+ if (left > minLeft) {
+ width -= range.x;
+ left += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width -= range.x;
+ left += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_EAST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ }
+
+ break;
+
+ case ACTION_SOUTH_EAST:
+ if (aspectRatio) {
+ if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {
+ renderable = false;
+ break;
+ }
+
+ check(ACTION_EAST);
+ width += range.x;
+ height = width / aspectRatio;
+ } else {
+ check(ACTION_SOUTH);
+ check(ACTION_EAST);
+
+ if (range.x >= 0) {
+ if (right < maxWidth) {
+ width += range.x;
+ } else if (range.y >= 0 && bottom >= maxHeight) {
+ renderable = false;
+ }
+ } else {
+ width += range.x;
+ }
+
+ if (range.y >= 0) {
+ if (bottom < maxHeight) {
+ height += range.y;
+ }
+ } else {
+ height += range.y;
+ }
+ }
+
+ if (width < 0 && height < 0) {
+ action = ACTION_NORTH_WEST;
+ height = 0;
+ width = 0;
+ } else if (width < 0) {
+ action = ACTION_SOUTH_WEST;
+ width = 0;
+ } else if (height < 0) {
+ action = ACTION_NORTH_EAST;
+ height = 0;
+ }
+
+ break;
+
+ // Move canvas
+ case ACTION_MOVE:
+ this.move(range.x, range.y);
+ renderable = false;
+ break;
+
+ // Zoom canvas
+ case ACTION_ZOOM:
+ this.zoom(getMaxZoomRatio(pointers), e);
+ renderable = false;
+ break;
+
+ // Create crop box
+ case ACTION_CROP:
+ if (!range.x || !range.y) {
+ renderable = false;
+ break;
+ }
+
+ offset = getOffset(this.cropper);
+ left = pointer.startX - offset.left;
+ top = pointer.startY - offset.top;
+ width = cropBoxData.minWidth;
+ height = cropBoxData.minHeight;
+
+ if (range.x > 0) {
+ action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;
+ } else if (range.x < 0) {
+ left -= width;
+ action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;
+ }
+
+ if (range.y < 0) {
+ top -= height;
+ }
+
+ // Show the crop box if is hidden
+ if (!this.cropped) {
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ this.cropped = true;
+
+ if (this.limited) {
+ this.limitCropBox(true, true);
+ }
+ }
+
+ break;
+
+ default:
+ }
+
+ if (renderable) {
+ cropBoxData.width = width;
+ cropBoxData.height = height;
+ cropBoxData.left = left;
+ cropBoxData.top = top;
+ this.action = action;
+ this.renderCropBox();
+ }
+
+ // Override
+ each(pointers, (p) => {
+ p.startX = p.endX;
+ p.startY = p.endY;
+ });
+ },
+};
diff --git a/library/cropperjs/src/js/constants.js b/library/cropperjs/src/js/constants.js
new file mode 100644
index 000000000..c675d4d1c
--- /dev/null
+++ b/library/cropperjs/src/js/constants.js
@@ -0,0 +1,56 @@
+export const WINDOW = typeof window !== 'undefined' ? window : {};
+export const NAMESPACE = 'cropper';
+
+// Actions
+export const ACTION_ALL = 'all';
+export const ACTION_CROP = 'crop';
+export const ACTION_MOVE = 'move';
+export const ACTION_ZOOM = 'zoom';
+export const ACTION_EAST = 'e';
+export const ACTION_WEST = 'w';
+export const ACTION_SOUTH = 's';
+export const ACTION_NORTH = 'n';
+export const ACTION_NORTH_EAST = 'ne';
+export const ACTION_NORTH_WEST = 'nw';
+export const ACTION_SOUTH_EAST = 'se';
+export const ACTION_SOUTH_WEST = 'sw';
+
+// Classes
+export const CLASS_CROP = `${NAMESPACE}-crop`;
+export const CLASS_DISABLED = `${NAMESPACE}-disabled`;
+export const CLASS_HIDDEN = `${NAMESPACE}-hidden`;
+export const CLASS_HIDE = `${NAMESPACE}-hide`;
+export const CLASS_INVISIBLE = `${NAMESPACE}-invisible`;
+export const CLASS_MODAL = `${NAMESPACE}-modal`;
+export const CLASS_MOVE = `${NAMESPACE}-move`;
+
+// Data keys
+export const DATA_ACTION = 'action';
+export const DATA_PREVIEW = 'preview';
+
+// Drag modes
+export const DRAG_MODE_CROP = 'crop';
+export const DRAG_MODE_MOVE = 'move';
+export const DRAG_MODE_NONE = 'none';
+
+// Events
+export const EVENT_CROP = 'crop';
+export const EVENT_CROP_END = 'cropend';
+export const EVENT_CROP_MOVE = 'cropmove';
+export const EVENT_CROP_START = 'cropstart';
+export const EVENT_DBLCLICK = 'dblclick';
+export const EVENT_ERROR = 'error';
+export const EVENT_LOAD = 'load';
+export const EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown';
+export const EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove';
+export const EVENT_POINTER_UP = WINDOW.PointerEvent ? 'pointerup pointercancel' : 'touchend touchcancel mouseup';
+export const EVENT_READY = 'ready';
+export const EVENT_RESIZE = 'resize';
+export const EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';
+export const EVENT_ZOOM = 'zoom';
+
+// RegExps
+export const REGEXP_ACTIONS = /^(?:e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;
+export const REGEXP_DATA_URL = /^data:/;
+export const REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/;
+export const REGEXP_TAG_NAME = /^(?:img|canvas)$/i;
diff --git a/library/cropperjs/src/js/cropper.js b/library/cropperjs/src/js/cropper.js
new file mode 100644
index 000000000..97f3511df
--- /dev/null
+++ b/library/cropperjs/src/js/cropper.js
@@ -0,0 +1,421 @@
+import DEFAULTS from './defaults';
+import TEMPLATE from './template';
+import render from './render';
+import preview from './preview';
+import events from './events';
+import handlers from './handlers';
+import change from './change';
+import methods from './methods';
+import {
+ ACTION_ALL,
+ CLASS_HIDDEN,
+ CLASS_HIDE,
+ CLASS_INVISIBLE,
+ CLASS_MODAL,
+ CLASS_MOVE,
+ DATA_ACTION,
+ EVENT_CROP,
+ EVENT_ERROR,
+ EVENT_LOAD,
+ EVENT_READY,
+ NAMESPACE,
+ REGEXP_DATA_URL,
+ REGEXP_DATA_URL_JPEG,
+ REGEXP_TAG_NAME,
+ WINDOW,
+} from './constants';
+import {
+ addClass,
+ addListener,
+ addTimestamp,
+ arrayBufferToDataURL,
+ dataURLToArrayBuffer,
+ dispatchEvent,
+ extend,
+ getData,
+ getImageNaturalSizes,
+ getOrientation,
+ isCrossOriginURL,
+ isFunction,
+ isPlainObject,
+ parseOrientation,
+ proxy,
+ removeClass,
+ removeListener,
+ setData,
+} from './utilities';
+
+const AnotherCropper = WINDOW.Cropper;
+
+class Cropper {
+ /**
+ * Create a new Cropper.
+ * @param {Element} element - The target element for cropping.
+ * @param {Object} [options={}] - The configuration options.
+ */
+ constructor(element, options = {}) {
+ if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {
+ throw new Error('The first argument is required and must be an <img> or <canvas> element.');
+ }
+
+ this.element = element;
+ this.options = extend({}, DEFAULTS, isPlainObject(options) && options);
+ this.complete = false;
+ this.cropped = false;
+ this.disabled = false;
+ this.isImg = false;
+ this.limited = false;
+ this.loaded = false;
+ this.ready = false;
+ this.replaced = false;
+ this.wheeling = false;
+ this.originalUrl = '';
+ this.canvasData = null;
+ this.cropBoxData = null;
+ this.previews = null;
+ this.pointers = {};
+ this.init();
+ }
+
+ init() {
+ const { element } = this;
+ const tagName = element.tagName.toLowerCase();
+ let url;
+
+ if (getData(element, NAMESPACE)) {
+ return;
+ }
+
+ setData(element, NAMESPACE, this);
+
+ if (tagName === 'img') {
+ this.isImg = true;
+
+ // e.g.: "img/picture.jpg"
+ url = element.getAttribute('src') || '';
+ this.originalUrl = url;
+
+ // Stop when it's a blank image
+ if (!url) {
+ return;
+ }
+
+ // e.g.: "http://example.com/img/picture.jpg"
+ url = element.src;
+ } else if (tagName === 'canvas' && window.HTMLCanvasElement) {
+ url = element.toDataURL();
+ }
+
+ this.load(url);
+ }
+
+ load(url) {
+ if (!url) {
+ return;
+ }
+
+ this.url = url;
+ this.imageData = {};
+
+ const { element, options } = this;
+
+ if (!options.checkOrientation || !window.ArrayBuffer) {
+ this.clone();
+ return;
+ }
+
+ // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari
+ if (REGEXP_DATA_URL.test(url)) {
+ if (REGEXP_DATA_URL_JPEG.test(url)) {
+ this.read(dataURLToArrayBuffer(url));
+ } else {
+ this.clone();
+ }
+
+ return;
+ }
+
+ const xhr = new XMLHttpRequest();
+
+ xhr.onerror = () => {
+ this.clone();
+ };
+
+ xhr.onload = () => {
+ this.read(xhr.response);
+ };
+
+ // Bust cache when there is a "crossOrigin" property
+ if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {
+ url = addTimestamp(url);
+ }
+
+ xhr.open('get', url);
+ xhr.responseType = 'arraybuffer';
+ xhr.withCredentials = element.crossOrigin === 'use-credentials';
+ xhr.send();
+ }
+
+ read(arrayBuffer) {
+ const { options, imageData } = this;
+ const orientation = getOrientation(arrayBuffer);
+ let rotate = 0;
+ let scaleX = 1;
+ let scaleY = 1;
+
+ if (orientation > 1) {
+ this.url = arrayBufferToDataURL(arrayBuffer, 'image/jpeg');
+ ({ rotate, scaleX, scaleY } = parseOrientation(orientation));
+ }
+
+ if (options.rotatable) {
+ imageData.rotate = rotate;
+ }
+
+ if (options.scalable) {
+ imageData.scaleX = scaleX;
+ imageData.scaleY = scaleY;
+ }
+
+ this.clone();
+ }
+
+ clone() {
+ const { element, url } = this;
+ let crossOrigin;
+ let crossOriginUrl;
+
+ if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {
+ ({ crossOrigin } = element);
+
+ if (crossOrigin) {
+ crossOriginUrl = url;
+ } else {
+ crossOrigin = 'anonymous';
+
+ // Bust cache when there is not a "crossOrigin" property
+ crossOriginUrl = addTimestamp(url);
+ }
+ }
+
+ this.crossOrigin = crossOrigin;
+ this.crossOriginUrl = crossOriginUrl;
+
+ const image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = crossOriginUrl || url;
+
+ const start = proxy(this.start, this);
+ const stop = proxy(this.stop, this);
+
+ this.image = image;
+ this.onStart = start;
+ this.onStop = stop;
+
+ if (this.isImg) {
+ if (element.complete) {
+ this.start();
+ } else {
+ addListener(element, EVENT_LOAD, start);
+ }
+ } else {
+ addListener(image, EVENT_LOAD, start);
+ addListener(image, EVENT_ERROR, stop);
+ addClass(image, CLASS_HIDE);
+ element.parentNode.insertBefore(image, element.nextSibling);
+ }
+ }
+
+ start(event) {
+ const image = this.isImg ? this.element : this.image;
+
+ if (event) {
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ }
+
+ getImageNaturalSizes(image, (naturalWidth, naturalHeight) => {
+ extend(this.imageData, {
+ naturalWidth,
+ naturalHeight,
+ aspectRatio: naturalWidth / naturalHeight,
+ });
+ this.loaded = true;
+ this.build();
+ });
+ }
+
+ stop() {
+ const { image } = this;
+
+ removeListener(image, EVENT_LOAD, this.onStart);
+ removeListener(image, EVENT_ERROR, this.onStop);
+ image.parentNode.removeChild(image);
+ this.image = null;
+ }
+
+ build() {
+ if (!this.loaded) {
+ return;
+ }
+
+ // Unbuild first when replace
+ if (this.ready) {
+ this.unbuild();
+ }
+
+ const { element, options, image } = this;
+
+ // Create cropper elements
+ const container = element.parentNode;
+ const template = document.createElement('div');
+
+ template.innerHTML = TEMPLATE;
+
+ const cropper = template.querySelector(`.${NAMESPACE}-container`);
+ const canvas = cropper.querySelector(`.${NAMESPACE}-canvas`);
+ const dragBox = cropper.querySelector(`.${NAMESPACE}-drag-box`);
+ const cropBox = cropper.querySelector(`.${NAMESPACE}-crop-box`);
+ const face = cropBox.querySelector(`.${NAMESPACE}-face`);
+
+ this.container = container;
+ this.cropper = cropper;
+ this.canvas = canvas;
+ this.dragBox = dragBox;
+ this.cropBox = cropBox;
+ this.viewBox = cropper.querySelector(`.${NAMESPACE}-view-box`);
+ this.face = face;
+
+ canvas.appendChild(image);
+
+ // Hide the original image
+ addClass(element, CLASS_HIDDEN);
+
+ // Inserts the cropper after to the current image
+ container.insertBefore(cropper, element.nextSibling);
+
+ // Show the image if is hidden
+ if (!this.isImg) {
+ removeClass(image, CLASS_HIDE);
+ }
+
+ this.initPreview();
+ this.bind();
+
+ options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;
+ options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;
+
+ this.cropped = options.autoCrop;
+
+ if (options.autoCrop) {
+ if (options.modal) {
+ addClass(dragBox, CLASS_MODAL);
+ }
+ } else {
+ addClass(cropBox, CLASS_HIDDEN);
+ }
+
+ if (!options.guides) {
+ addClass(cropBox.getElementsByClassName(`${NAMESPACE}-dashed`), CLASS_HIDDEN);
+ }
+
+ if (!options.center) {
+ addClass(cropBox.getElementsByClassName(`${NAMESPACE}-center`), CLASS_HIDDEN);
+ }
+
+ if (options.background) {
+ addClass(cropper, `${NAMESPACE}-bg`);
+ }
+
+ if (!options.highlight) {
+ addClass(face, CLASS_INVISIBLE);
+ }
+
+ if (options.cropBoxMovable) {
+ addClass(face, CLASS_MOVE);
+ setData(face, DATA_ACTION, ACTION_ALL);
+ }
+
+ if (!options.cropBoxResizable) {
+ addClass(cropBox.getElementsByClassName(`${NAMESPACE}-line`), CLASS_HIDDEN);
+ addClass(cropBox.getElementsByClassName(`${NAMESPACE}-point`), CLASS_HIDDEN);
+ }
+
+ this.setDragMode(options.dragMode);
+ this.render();
+ this.ready = true;
+ this.setData(options.data);
+
+ // Call the "ready" option asynchronously to keep "image.cropper" is defined
+ this.completing = setTimeout(() => {
+ if (isFunction(options.ready)) {
+ addListener(element, EVENT_READY, options.ready, {
+ once: true,
+ });
+ }
+
+ dispatchEvent(element, EVENT_READY);
+ dispatchEvent(element, EVENT_CROP, this.getData());
+
+ this.complete = true;
+ }, 0);
+ }
+
+ unbuild() {
+ if (!this.ready) {
+ return;
+ }
+
+ if (!this.complete) {
+ clearTimeout(this.completing);
+ }
+
+ this.ready = false;
+ this.complete = false;
+ this.initialImageData = null;
+
+ // Clear `initialCanvasData` is necessary when replace
+ this.initialCanvasData = null;
+ this.initialCropBoxData = null;
+ this.containerData = null;
+ this.canvasData = null;
+
+ // Clear `cropBoxData` is necessary when replace
+ this.cropBoxData = null;
+ this.unbind();
+ this.resetPreview();
+ this.previews = null;
+ this.viewBox = null;
+ this.cropBox = null;
+ this.dragBox = null;
+ this.canvas = null;
+ this.container = null;
+ this.cropper.parentNode.removeChild(this.cropper);
+ this.cropper = null;
+ }
+
+ /**
+ * Get the no conflict cropper class.
+ * @returns {Cropper} The cropper class.
+ */
+ static noConflict() {
+ window.Cropper = AnotherCropper;
+ return Cropper;
+ }
+
+ /**
+ * Change the default options.
+ * @param {Object} options - The new default options.
+ */
+ static setDefaults(options) {
+ extend(DEFAULTS, isPlainObject(options) && options);
+ }
+}
+
+extend(Cropper.prototype, render, preview, events, handlers, change, methods);
+
+export default Cropper;
diff --git a/library/cropperjs/src/js/defaults.js b/library/cropperjs/src/js/defaults.js
new file mode 100644
index 000000000..aa469e73a
--- /dev/null
+++ b/library/cropperjs/src/js/defaults.js
@@ -0,0 +1,99 @@
+import {
+ DRAG_MODE_CROP,
+} from './constants';
+
+export default {
+ // Define the view mode of the cropper
+ viewMode: 0, // 0, 1, 2, 3
+
+ // Define the dragging mode of the cropper
+ dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none'
+
+ // Define the aspect ratio of the crop box
+ aspectRatio: NaN,
+
+ // An object with the previous cropping result data
+ data: null,
+
+ // A selector for adding extra containers to preview
+ preview: '',
+
+ // Re-render the cropper when resize the window
+ responsive: true,
+
+ // Restore the cropped area after resize the window
+ restore: true,
+
+ // Check if the current image is a cross-origin image
+ checkCrossOrigin: true,
+
+ // Check the current image's Exif Orientation information
+ checkOrientation: true,
+
+ // Show the black modal
+ modal: true,
+
+ // Show the dashed lines for guiding
+ guides: true,
+
+ // Show the center indicator for guiding
+ center: true,
+
+ // Show the white modal to highlight the crop box
+ highlight: true,
+
+ // Show the grid background
+ background: true,
+
+ // Enable to crop the image automatically when initialize
+ autoCrop: true,
+
+ // Define the percentage of automatic cropping area when initializes
+ autoCropArea: 0.8,
+
+ // Enable to move the image
+ movable: true,
+
+ // Enable to rotate the image
+ rotatable: true,
+
+ // Enable to scale the image
+ scalable: true,
+
+ // Enable to zoom the image
+ zoomable: true,
+
+ // Enable to zoom the image by dragging touch
+ zoomOnTouch: true,
+
+ // Enable to zoom the image by wheeling mouse
+ zoomOnWheel: true,
+
+ // Define zoom ratio when zoom the image by wheeling mouse
+ wheelZoomRatio: 0.1,
+
+ // Enable to move the crop box
+ cropBoxMovable: true,
+
+ // Enable to resize the crop box
+ cropBoxResizable: true,
+
+ // Toggle drag mode between "crop" and "move" when click twice on the cropper
+ toggleDragModeOnDblclick: true,
+
+ // Size limitation
+ minCanvasWidth: 0,
+ minCanvasHeight: 0,
+ minCropBoxWidth: 0,
+ minCropBoxHeight: 0,
+ minContainerWidth: 200,
+ minContainerHeight: 100,
+
+ // Shortcuts of events
+ ready: null,
+ cropstart: null,
+ cropmove: null,
+ cropend: null,
+ crop: null,
+ zoom: null,
+};
diff --git a/library/cropperjs/src/js/events.js b/library/cropperjs/src/js/events.js
new file mode 100644
index 000000000..3753db022
--- /dev/null
+++ b/library/cropperjs/src/js/events.js
@@ -0,0 +1,111 @@
+import {
+ EVENT_CROP,
+ EVENT_CROP_END,
+ EVENT_CROP_MOVE,
+ EVENT_CROP_START,
+ EVENT_DBLCLICK,
+ EVENT_POINTER_DOWN,
+ EVENT_POINTER_MOVE,
+ EVENT_POINTER_UP,
+ EVENT_RESIZE,
+ EVENT_WHEEL,
+ EVENT_ZOOM,
+} from './constants';
+import {
+ addListener,
+ isFunction,
+ proxy,
+ removeListener,
+} from './utilities';
+
+export default {
+ bind() {
+ const { element, options, cropper } = this;
+
+ if (isFunction(options.cropstart)) {
+ addListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ addListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ addListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ addListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ addListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ addListener(cropper, EVENT_POINTER_DOWN, (this.onCropStart = proxy(this.cropStart, this)));
+
+ if (options.zoomable && options.zoomOnWheel) {
+ addListener(cropper, EVENT_WHEEL, (this.onWheel = proxy(this.wheel, this)));
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ addListener(cropper, EVENT_DBLCLICK, (this.onDblclick = proxy(this.dblclick, this)));
+ }
+
+ addListener(
+ element.ownerDocument,
+ EVENT_POINTER_MOVE,
+ (this.onCropMove = proxy(this.cropMove, this)),
+ );
+ addListener(
+ element.ownerDocument,
+ EVENT_POINTER_UP,
+ (this.onCropEnd = proxy(this.cropEnd, this)),
+ );
+
+ if (options.responsive) {
+ addListener(window, EVENT_RESIZE, (this.onResize = proxy(this.resize, this)));
+ }
+ },
+
+ unbind() {
+ const { element, options, cropper } = this;
+
+ if (isFunction(options.cropstart)) {
+ removeListener(element, EVENT_CROP_START, options.cropstart);
+ }
+
+ if (isFunction(options.cropmove)) {
+ removeListener(element, EVENT_CROP_MOVE, options.cropmove);
+ }
+
+ if (isFunction(options.cropend)) {
+ removeListener(element, EVENT_CROP_END, options.cropend);
+ }
+
+ if (isFunction(options.crop)) {
+ removeListener(element, EVENT_CROP, options.crop);
+ }
+
+ if (isFunction(options.zoom)) {
+ removeListener(element, EVENT_ZOOM, options.zoom);
+ }
+
+ removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);
+
+ if (options.zoomable && options.zoomOnWheel) {
+ removeListener(cropper, EVENT_WHEEL, this.onWheel);
+ }
+
+ if (options.toggleDragModeOnDblclick) {
+ removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);
+ }
+
+ removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);
+ removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);
+
+ if (options.responsive) {
+ removeListener(window, EVENT_RESIZE, this.onResize);
+ }
+ },
+};
diff --git a/library/cropperjs/src/js/handlers.js b/library/cropperjs/src/js/handlers.js
new file mode 100644
index 000000000..7b7b2469a
--- /dev/null
+++ b/library/cropperjs/src/js/handlers.js
@@ -0,0 +1,212 @@
+import {
+ ACTION_CROP,
+ ACTION_ZOOM,
+ CLASS_CROP,
+ CLASS_MODAL,
+ DATA_ACTION,
+ DRAG_MODE_CROP,
+ DRAG_MODE_MOVE,
+ DRAG_MODE_NONE,
+ EVENT_CROP_END,
+ EVENT_CROP_MOVE,
+ EVENT_CROP_START,
+ REGEXP_ACTIONS,
+} from './constants';
+import {
+ addClass,
+ dispatchEvent,
+ each,
+ extend,
+ getData,
+ getPointer,
+ hasClass,
+ toggleClass,
+} from './utilities';
+
+export default {
+ resize() {
+ const { options, container, containerData } = this;
+ const minContainerWidth = Number(options.minContainerWidth) || 200;
+ const minContainerHeight = Number(options.minContainerHeight) || 100;
+
+ if (this.disabled || containerData.width <= minContainerWidth ||
+ containerData.height <= minContainerHeight) {
+ return;
+ }
+
+ const ratio = container.offsetWidth / containerData.width;
+
+ // Resize when width changed or height changed
+ if (ratio !== 1 || container.offsetHeight !== containerData.height) {
+ let canvasData;
+ let cropBoxData;
+
+ if (options.restore) {
+ canvasData = this.getCanvasData();
+ cropBoxData = this.getCropBoxData();
+ }
+
+ this.render();
+
+ if (options.restore) {
+ this.setCanvasData(each(canvasData, (n, i) => {
+ canvasData[i] = n * ratio;
+ }));
+ this.setCropBoxData(each(cropBoxData, (n, i) => {
+ cropBoxData[i] = n * ratio;
+ }));
+ }
+ }
+ },
+
+ dblclick() {
+ if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {
+ return;
+ }
+
+ this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);
+ },
+
+ wheel(e) {
+ const ratio = Number(this.options.wheelZoomRatio) || 0.1;
+ let delta = 1;
+
+ if (this.disabled) {
+ return;
+ }
+
+ e.preventDefault();
+
+ // Limit wheel speed to prevent zoom too fast (#21)
+ if (this.wheeling) {
+ return;
+ }
+
+ this.wheeling = true;
+
+ setTimeout(() => {
+ this.wheeling = false;
+ }, 50);
+
+ if (e.deltaY) {
+ delta = e.deltaY > 0 ? 1 : -1;
+ } else if (e.wheelDelta) {
+ delta = -e.wheelDelta / 120;
+ } else if (e.detail) {
+ delta = e.detail > 0 ? 1 : -1;
+ }
+
+ this.zoom(-delta * ratio, e);
+ },
+
+ cropStart(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ const { options, pointers } = this;
+ let action;
+
+ if (e.changedTouches) {
+ // Handle touch event
+ each(e.changedTouches, (touch) => {
+ pointers[touch.identifier] = getPointer(touch);
+ });
+ } else {
+ // Handle mouse event and pointer event
+ pointers[e.pointerId || 0] = getPointer(e);
+ }
+
+ if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {
+ action = ACTION_ZOOM;
+ } else {
+ action = getData(e.target, DATA_ACTION);
+ }
+
+ if (!REGEXP_ACTIONS.test(action)) {
+ return;
+ }
+
+ if (dispatchEvent(this.element, EVENT_CROP_START, {
+ originalEvent: e,
+ action,
+ }) === false) {
+ return;
+ }
+
+ e.preventDefault();
+
+ this.action = action;
+ this.cropping = false;
+
+ if (action === ACTION_CROP) {
+ this.cropping = true;
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+ },
+
+ cropMove(e) {
+ const { action } = this;
+
+ if (this.disabled || !action) {
+ return;
+ }
+
+ const { pointers } = this;
+
+ e.preventDefault();
+
+ if (dispatchEvent(this.element, EVENT_CROP_MOVE, {
+ originalEvent: e,
+ action,
+ }) === false) {
+ return;
+ }
+
+ if (e.changedTouches) {
+ each(e.changedTouches, (touch) => {
+ extend(pointers[touch.identifier], getPointer(touch, true));
+ });
+ } else {
+ extend(pointers[e.pointerId || 0], getPointer(e, true));
+ }
+
+ this.change(e);
+ },
+
+ cropEnd(e) {
+ if (this.disabled) {
+ return;
+ }
+
+ const { action, pointers } = this;
+
+ if (e.changedTouches) {
+ each(e.changedTouches, (touch) => {
+ delete pointers[touch.identifier];
+ });
+ } else {
+ delete pointers[e.pointerId || 0];
+ }
+
+ if (!action) {
+ return;
+ }
+
+ e.preventDefault();
+
+ if (!Object.keys(pointers).length) {
+ this.action = '';
+ }
+
+ if (this.cropping) {
+ this.cropping = false;
+ toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);
+ }
+
+ dispatchEvent(this.element, EVENT_CROP_END, {
+ originalEvent: e,
+ action,
+ });
+ },
+};
diff --git a/library/cropperjs/src/js/methods.js b/library/cropperjs/src/js/methods.js
new file mode 100644
index 000000000..3627d2bd1
--- /dev/null
+++ b/library/cropperjs/src/js/methods.js
@@ -0,0 +1,842 @@
+import {
+ CLASS_CROP,
+ CLASS_DISABLED,
+ CLASS_HIDDEN,
+ CLASS_MODAL,
+ CLASS_MOVE,
+ DATA_ACTION,
+ DRAG_MODE_CROP,
+ DRAG_MODE_MOVE,
+ DRAG_MODE_NONE,
+ EVENT_LOAD,
+ EVENT_ZOOM,
+ NAMESPACE,
+} from './constants';
+import {
+ addClass,
+ dispatchEvent,
+ each,
+ extend,
+ getAdjustedSizes,
+ getOffset,
+ getPointersCenter,
+ getSourceCanvas,
+ isFunction,
+ isNumber,
+ isPlainObject,
+ isUndefined,
+ normalizeDecimalNumber,
+ removeClass,
+ removeData,
+ removeListener,
+ setData,
+ toggleClass,
+} from './utilities';
+
+export default {
+ // Show the crop box manually
+ crop() {
+ if (this.ready && !this.disabled) {
+ if (!this.cropped) {
+ this.cropped = true;
+ this.limitCropBox(true, true);
+
+ if (this.options.modal) {
+ addClass(this.dragBox, CLASS_MODAL);
+ }
+
+ removeClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ this.setCropBoxData(this.initialCropBoxData);
+ }
+
+ return this;
+ },
+
+ // Reset the image and crop box to their initial states
+ reset() {
+ if (this.ready && !this.disabled) {
+ this.imageData = extend({}, this.initialImageData);
+ this.canvasData = extend({}, this.initialCanvasData);
+ this.cropBoxData = extend({}, this.initialCropBoxData);
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+
+ return this;
+ },
+
+ // Clear the crop box
+ clear() {
+ if (this.cropped && !this.disabled) {
+ extend(this.cropBoxData, {
+ left: 0,
+ top: 0,
+ width: 0,
+ height: 0,
+ });
+
+ this.cropped = false;
+ this.renderCropBox();
+ this.limitCanvas(true, true);
+
+ // Render canvas after crop box rendered
+ this.renderCanvas();
+ removeClass(this.dragBox, CLASS_MODAL);
+ addClass(this.cropBox, CLASS_HIDDEN);
+ }
+
+ return this;
+ },
+
+ /**
+ * Replace the image's src and rebuild the cropper
+ * @param {string} url - The new URL.
+ * @param {boolean} [onlyColorChanged] - Indicate if the new image only changed color.
+ * @returns {Object} this
+ */
+ replace(url, onlyColorChanged = false) {
+ if (!this.disabled && url) {
+ if (this.isImg) {
+ this.element.src = url;
+ }
+
+ if (onlyColorChanged) {
+ this.url = url;
+ this.image.src = url;
+
+ if (this.ready) {
+ this.image2.src = url;
+
+ each(this.previews, (element) => {
+ element.getElementsByTagName('img')[0].src = url;
+ });
+ }
+ } else {
+ if (this.isImg) {
+ this.replaced = true;
+ }
+
+ // Clear previous data
+ this.options.data = null;
+ this.load(url);
+ }
+ }
+
+ return this;
+ },
+
+ // Enable (unfreeze) the cropper
+ enable() {
+ if (this.ready) {
+ this.disabled = false;
+ removeClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+ // Disable (freeze) the cropper
+ disable() {
+ if (this.ready) {
+ this.disabled = true;
+ addClass(this.cropper, CLASS_DISABLED);
+ }
+
+ return this;
+ },
+
+ // Destroy the cropper and remove the instance from the image
+ destroy() {
+ const { element, image } = this;
+
+ if (this.loaded) {
+ if (this.isImg && this.replaced) {
+ element.src = this.originalUrl;
+ }
+
+ this.unbuild();
+ removeClass(element, CLASS_HIDDEN);
+ } else if (this.isImg) {
+ removeListener(element, EVENT_LOAD, this.onStart);
+ } else if (image) {
+ image.parentNode.removeChild(image);
+ }
+
+ removeData(element, NAMESPACE);
+
+ return this;
+ },
+
+ /**
+ * Move the canvas with relative offsets
+ * @param {number} offsetX - The relative offset distance on the x-axis.
+ * @param {number} offsetY - The relative offset distance on the y-axis.
+ * @returns {Object} this
+ */
+ move(offsetX, offsetY) {
+ const { left, top } = this.canvasData;
+
+ return this.moveTo(
+ isUndefined(offsetX) ? offsetX : (left + Number(offsetX)),
+ isUndefined(offsetY) ? offsetY : (top + Number(offsetY)),
+ );
+ },
+
+ /**
+ * Move the canvas to an absolute point
+ * @param {number} x - The x-axis coordinate.
+ * @param {number} [y=x] - The y-axis coordinate.
+ * @returns {Object} this
+ */
+ moveTo(x, y = x) {
+ const { canvasData } = this;
+ let changed = false;
+
+ x = Number(x);
+ y = Number(y);
+
+ if (this.ready && !this.disabled && this.options.movable) {
+ if (isNumber(x)) {
+ canvasData.left = x;
+ changed = true;
+ }
+
+ if (isNumber(y)) {
+ canvasData.top = y;
+ changed = true;
+ }
+
+ if (changed) {
+ this.renderCanvas(true);
+ }
+ }
+
+ return this;
+ },
+
+ /**
+ * Zoom the canvas with a relative ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoom(ratio, _originalEvent) {
+ const { canvasData } = this;
+
+ ratio = Number(ratio);
+
+ if (ratio < 0) {
+ ratio = 1 / (1 - ratio);
+ } else {
+ ratio = 1 + ratio;
+ }
+
+ return this.zoomTo((canvasData.width * ratio) / canvasData.naturalWidth, null, _originalEvent);
+ },
+
+ /**
+ * Zoom the canvas to an absolute ratio
+ * @param {number} ratio - The target ratio.
+ * @param {Object} pivot - The zoom pivot point coordinate.
+ * @param {Event} _originalEvent - The original event if any.
+ * @returns {Object} this
+ */
+ zoomTo(ratio, pivot, _originalEvent) {
+ const { options, canvasData } = this;
+ const {
+ width,
+ height,
+ naturalWidth,
+ naturalHeight,
+ } = canvasData;
+
+ ratio = Number(ratio);
+
+ if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {
+ const newWidth = naturalWidth * ratio;
+ const newHeight = naturalHeight * ratio;
+
+ if (dispatchEvent(this.element, EVENT_ZOOM, {
+ originalEvent: _originalEvent,
+ oldRatio: width / naturalWidth,
+ ratio: newWidth / naturalWidth,
+ }) === false) {
+ return this;
+ }
+
+ if (_originalEvent) {
+ const { pointers } = this;
+ const offset = getOffset(this.cropper);
+ const center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {
+ pageX: _originalEvent.pageX,
+ pageY: _originalEvent.pageY,
+ };
+
+ // Zoom from the triggering point of the event
+ canvasData.left -= (newWidth - width) * (
+ ((center.pageX - offset.left) - canvasData.left) / width
+ );
+ canvasData.top -= (newHeight - height) * (
+ ((center.pageY - offset.top) - canvasData.top) / height
+ );
+ } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {
+ canvasData.left -= (newWidth - width) * (
+ (pivot.x - canvasData.left) / width
+ );
+ canvasData.top -= (newHeight - height) * (
+ (pivot.y - canvasData.top) / height
+ );
+ } else {
+ // Zoom from the center of the canvas
+ canvasData.left -= (newWidth - width) / 2;
+ canvasData.top -= (newHeight - height) / 2;
+ }
+
+ canvasData.width = newWidth;
+ canvasData.height = newHeight;
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+ /**
+ * Rotate the canvas with a relative degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotate(degree) {
+ return this.rotateTo((this.imageData.rotate || 0) + Number(degree));
+ },
+
+ /**
+ * Rotate the canvas to an absolute degree
+ * @param {number} degree - The rotate degree.
+ * @returns {Object} this
+ */
+ rotateTo(degree) {
+ degree = Number(degree);
+
+ if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {
+ this.imageData.rotate = degree % 360;
+ this.renderCanvas(true, true);
+ }
+
+ return this;
+ },
+
+ /**
+ * Scale the image on the x-axis.
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @returns {Object} this
+ */
+ scaleX(scaleX) {
+ const { scaleY } = this.imageData;
+
+ return this.scale(scaleX, isNumber(scaleY) ? scaleY : 1);
+ },
+
+ /**
+ * Scale the image on the y-axis.
+ * @param {number} scaleY - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scaleY(scaleY) {
+ const { scaleX } = this.imageData;
+
+ return this.scale(isNumber(scaleX) ? scaleX : 1, scaleY);
+ },
+
+ /**
+ * Scale the image
+ * @param {number} scaleX - The scale ratio on the x-axis.
+ * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.
+ * @returns {Object} this
+ */
+ scale(scaleX, scaleY = scaleX) {
+ const { imageData } = this;
+ let transformed = false;
+
+ scaleX = Number(scaleX);
+ scaleY = Number(scaleY);
+
+ if (this.ready && !this.disabled && this.options.scalable) {
+ if (isNumber(scaleX)) {
+ imageData.scaleX = scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(scaleY)) {
+ imageData.scaleY = scaleY;
+ transformed = true;
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+ }
+
+ return this;
+ },
+
+ /**
+ * Get the cropped area position and size data (base on the original image)
+ * @param {boolean} [rounded=false] - Indicate if round the data values or not.
+ * @returns {Object} The result cropped data.
+ */
+ getData(rounded = false) {
+ const {
+ options,
+ imageData,
+ canvasData,
+ cropBoxData,
+ } = this;
+ let data;
+
+ if (this.ready && this.cropped) {
+ data = {
+ x: cropBoxData.left - canvasData.left,
+ y: cropBoxData.top - canvasData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height,
+ };
+
+ const ratio = imageData.width / imageData.naturalWidth;
+
+ each(data, (n, i) => {
+ n /= ratio;
+ data[i] = rounded ? Math.round(n) : n;
+ });
+ } else {
+ data = {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0,
+ };
+ }
+
+ if (options.rotatable) {
+ data.rotate = imageData.rotate || 0;
+ }
+
+ if (options.scalable) {
+ data.scaleX = imageData.scaleX || 1;
+ data.scaleY = imageData.scaleY || 1;
+ }
+
+ return data;
+ },
+
+ /**
+ * Set the cropped area position and size with new data
+ * @param {Object} data - The new data.
+ * @returns {Object} this
+ */
+ setData(data) {
+ const { options, imageData, canvasData } = this;
+ const cropBoxData = {};
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ let transformed = false;
+
+ if (options.rotatable) {
+ if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {
+ imageData.rotate = data.rotate;
+ transformed = true;
+ }
+ }
+
+ if (options.scalable) {
+ if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {
+ imageData.scaleX = data.scaleX;
+ transformed = true;
+ }
+
+ if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {
+ imageData.scaleY = data.scaleY;
+ transformed = true;
+ }
+ }
+
+ if (transformed) {
+ this.renderCanvas(true, true);
+ }
+
+ const ratio = imageData.width / imageData.naturalWidth;
+
+ if (isNumber(data.x)) {
+ cropBoxData.left = (data.x * ratio) + canvasData.left;
+ }
+
+ if (isNumber(data.y)) {
+ cropBoxData.top = (data.y * ratio) + canvasData.top;
+ }
+
+ if (isNumber(data.width)) {
+ cropBoxData.width = data.width * ratio;
+ }
+
+ if (isNumber(data.height)) {
+ cropBoxData.height = data.height * ratio;
+ }
+
+ this.setCropBoxData(cropBoxData);
+ }
+
+ return this;
+ },
+
+ /**
+ * Get the container size data.
+ * @returns {Object} The result container data.
+ */
+ getContainerData() {
+ return this.ready ? extend({}, this.containerData) : {};
+ },
+
+ /**
+ * Get the image position and size data.
+ * @returns {Object} The result image data.
+ */
+ getImageData() {
+ return this.loaded ? extend({}, this.imageData) : {};
+ },
+
+ /**
+ * Get the canvas position and size data.
+ * @returns {Object} The result canvas data.
+ */
+ getCanvasData() {
+ const { canvasData } = this;
+ const data = {};
+
+ if (this.ready) {
+ each([
+ 'left',
+ 'top',
+ 'width',
+ 'height',
+ 'naturalWidth',
+ 'naturalHeight',
+ ], (n) => {
+ data[n] = canvasData[n];
+ });
+ }
+
+ return data;
+ },
+
+ /**
+ * Set the canvas position and size with new data.
+ * @param {Object} data - The new canvas data.
+ * @returns {Object} this
+ */
+ setCanvasData(data) {
+ const { canvasData } = this;
+ const { aspectRatio } = canvasData;
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ canvasData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ canvasData.top = data.top;
+ }
+
+ if (isNumber(data.width)) {
+ canvasData.width = data.width;
+ canvasData.height = data.width / aspectRatio;
+ } else if (isNumber(data.height)) {
+ canvasData.height = data.height;
+ canvasData.width = data.height * aspectRatio;
+ }
+
+ this.renderCanvas(true);
+ }
+
+ return this;
+ },
+
+ /**
+ * Get the crop box position and size data.
+ * @returns {Object} The result crop box data.
+ */
+ getCropBoxData() {
+ const { cropBoxData } = this;
+ let data;
+
+ if (this.ready && this.cropped) {
+ data = {
+ left: cropBoxData.left,
+ top: cropBoxData.top,
+ width: cropBoxData.width,
+ height: cropBoxData.height,
+ };
+ }
+
+ return data || {};
+ },
+
+ /**
+ * Set the crop box position and size with new data.
+ * @param {Object} data - The new crop box data.
+ * @returns {Object} this
+ */
+ setCropBoxData(data) {
+ const { cropBoxData } = this;
+ const { aspectRatio } = this.options;
+ let widthChanged;
+ let heightChanged;
+
+ if (isFunction(data)) {
+ data = data.call(this.element);
+ }
+
+ if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {
+ if (isNumber(data.left)) {
+ cropBoxData.left = data.left;
+ }
+
+ if (isNumber(data.top)) {
+ cropBoxData.top = data.top;
+ }
+
+ if (isNumber(data.width) && data.width !== cropBoxData.width) {
+ widthChanged = true;
+ cropBoxData.width = data.width;
+ }
+
+ if (isNumber(data.height) && data.height !== cropBoxData.height) {
+ heightChanged = true;
+ cropBoxData.height = data.height;
+ }
+
+ if (aspectRatio) {
+ if (widthChanged) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else if (heightChanged) {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.renderCropBox();
+ }
+
+ return this;
+ },
+
+ /**
+ * Get a canvas drawn the cropped image.
+ * @param {Object} [options={}] - The config options.
+ * @returns {HTMLCanvasElement} - The result canvas.
+ */
+ getCroppedCanvas(options = {}) {
+ if (!this.ready || !window.HTMLCanvasElement) {
+ return null;
+ }
+
+ const { canvasData } = this;
+ const source = getSourceCanvas(this.image, this.imageData, canvasData, options);
+
+ // Returns the source canvas if it is not cropped.
+ if (!this.cropped) {
+ return source;
+ }
+
+ let {
+ x: initialX,
+ y: initialY,
+ width: initialWidth,
+ height: initialHeight,
+ } = this.getData();
+ const ratio = source.width / Math.floor(canvasData.naturalWidth);
+
+ if (ratio !== 1) {
+ initialX *= ratio;
+ initialY *= ratio;
+ initialWidth *= ratio;
+ initialHeight *= ratio;
+ }
+
+ const aspectRatio = initialWidth / initialHeight;
+ const maxSizes = getAdjustedSizes({
+ aspectRatio,
+ width: options.maxWidth || Infinity,
+ height: options.maxHeight || Infinity,
+ });
+ const minSizes = getAdjustedSizes({
+ aspectRatio,
+ width: options.minWidth || 0,
+ height: options.minHeight || 0,
+ }, 'cover');
+ let {
+ width,
+ height,
+ } = getAdjustedSizes({
+ aspectRatio,
+ width: options.width || (ratio !== 1 ? source.width : initialWidth),
+ height: options.height || (ratio !== 1 ? source.height : initialHeight),
+ });
+
+ width = Math.min(maxSizes.width, Math.max(minSizes.width, width));
+ height = Math.min(maxSizes.height, Math.max(minSizes.height, height));
+
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+
+ context.fillStyle = options.fillColor || 'transparent';
+ context.fillRect(0, 0, width, height);
+
+ const { imageSmoothingEnabled = true, imageSmoothingQuality } = options;
+
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+
+ if (imageSmoothingQuality) {
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage
+ const sourceWidth = source.width;
+ const sourceHeight = source.height;
+
+ // Source canvas parameters
+ let srcX = initialX;
+ let srcY = initialY;
+ let srcWidth;
+ let srcHeight;
+
+ // Destination canvas parameters
+ let dstX;
+ let dstY;
+ let dstWidth;
+ let dstHeight;
+
+ if (srcX <= -initialWidth || srcX > sourceWidth) {
+ srcX = 0;
+ srcWidth = 0;
+ dstX = 0;
+ dstWidth = 0;
+ } else if (srcX <= 0) {
+ dstX = -srcX;
+ srcX = 0;
+ srcWidth = Math.min(sourceWidth, initialWidth + srcX);
+ dstWidth = srcWidth;
+ } else if (srcX <= sourceWidth) {
+ dstX = 0;
+ srcWidth = Math.min(initialWidth, sourceWidth - srcX);
+ dstWidth = srcWidth;
+ }
+
+ if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {
+ srcY = 0;
+ srcHeight = 0;
+ dstY = 0;
+ dstHeight = 0;
+ } else if (srcY <= 0) {
+ dstY = -srcY;
+ srcY = 0;
+ srcHeight = Math.min(sourceHeight, initialHeight + srcY);
+ dstHeight = srcHeight;
+ } else if (srcY <= sourceHeight) {
+ dstY = 0;
+ srcHeight = Math.min(initialHeight, sourceHeight - srcY);
+ dstHeight = srcHeight;
+ }
+
+ // All the numerical parameters should be integer for `drawImage`
+ // https://github.com/fengyuanchen/cropper/issues/476
+ const params = [
+ srcX,
+ srcY,
+ srcWidth,
+ srcHeight,
+ ];
+
+ // Avoid "IndexSizeError"
+ if (dstWidth > 0 && dstHeight > 0) {
+ const scale = width / initialWidth;
+
+ params.push(
+ dstX * scale,
+ dstY * scale,
+ dstWidth * scale,
+ dstHeight * scale,
+ );
+ }
+
+ context.drawImage(source, ...params.map(param => Math.floor(normalizeDecimalNumber(param))));
+
+ return canvas;
+ },
+
+ /**
+ * Change the aspect ratio of the crop box.
+ * @param {number} aspectRatio - The new aspect ratio.
+ * @returns {Object} this
+ */
+ setAspectRatio(aspectRatio) {
+ const { options } = this;
+
+ if (!this.disabled && !isUndefined(aspectRatio)) {
+ // 0 -> NaN
+ options.aspectRatio = Math.max(0, aspectRatio) || NaN;
+
+ if (this.ready) {
+ this.initCropBox();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ }
+ }
+
+ return this;
+ },
+
+ /**
+ * Change the drag mode.
+ * @param {string} mode - The new drag mode.
+ * @returns {Object} this
+ */
+ setDragMode(mode) {
+ const { options, dragBox, face } = this;
+
+ if (this.loaded && !this.disabled) {
+ const croppable = mode === DRAG_MODE_CROP;
+ const movable = options.movable && mode === DRAG_MODE_MOVE;
+
+ mode = (croppable || movable) ? mode : DRAG_MODE_NONE;
+
+ setData(dragBox, DATA_ACTION, mode);
+ toggleClass(dragBox, CLASS_CROP, croppable);
+ toggleClass(dragBox, CLASS_MOVE, movable);
+
+ if (!options.cropBoxMovable) {
+ // Sync drag mode to crop box when it is not movable
+ setData(face, DATA_ACTION, mode);
+ toggleClass(face, CLASS_CROP, croppable);
+ toggleClass(face, CLASS_MOVE, movable);
+ }
+ }
+
+ return this;
+ },
+};
diff --git a/library/cropperjs/src/js/preview.js b/library/cropperjs/src/js/preview.js
new file mode 100644
index 000000000..c47d03f4b
--- /dev/null
+++ b/library/cropperjs/src/js/preview.js
@@ -0,0 +1,142 @@
+import {
+ DATA_PREVIEW,
+} from './constants';
+import {
+ each,
+ empty,
+ extend,
+ getData,
+ getTransforms,
+ removeData,
+ setData,
+ setStyle,
+} from './utilities';
+
+export default {
+ initPreview() {
+ const { crossOrigin } = this;
+ const { preview } = this.options;
+ const url = crossOrigin ? this.crossOriginUrl : this.url;
+ const image = document.createElement('img');
+
+ if (crossOrigin) {
+ image.crossOrigin = crossOrigin;
+ }
+
+ image.src = url;
+ this.viewBox.appendChild(image);
+ this.image2 = image;
+
+ if (!preview) {
+ return;
+ }
+
+ const previews = preview.querySelector ? [preview] : document.querySelectorAll(preview);
+
+ this.previews = previews;
+
+ each(previews, (element) => {
+ const img = document.createElement('img');
+
+ // Save the original size for recover
+ setData(element, DATA_PREVIEW, {
+ width: element.offsetWidth,
+ height: element.offsetHeight,
+ html: element.innerHTML,
+ });
+
+ if (crossOrigin) {
+ img.crossOrigin = crossOrigin;
+ }
+
+ img.src = url;
+
+ /**
+ * Override img element styles
+ * Add `display:block` to avoid margin top issue
+ * Add `height:auto` to override `height` attribute on IE8
+ * (Occur only when margin-top <= -height)
+ */
+ img.style.cssText = (
+ 'display:block;' +
+ 'width:100%;' +
+ 'height:auto;' +
+ 'min-width:0!important;' +
+ 'min-height:0!important;' +
+ 'max-width:none!important;' +
+ 'max-height:none!important;' +
+ 'image-orientation:0deg!important;"'
+ );
+
+ empty(element);
+ element.appendChild(img);
+ });
+ },
+
+ resetPreview() {
+ each(this.previews, (element) => {
+ const data = getData(element, DATA_PREVIEW);
+
+ setStyle(element, {
+ width: data.width,
+ height: data.height,
+ });
+
+ element.innerHTML = data.html;
+ removeData(element, DATA_PREVIEW);
+ });
+ },
+
+ preview() {
+ const { imageData, canvasData, cropBoxData } = this;
+ const { width: cropBoxWidth, height: cropBoxHeight } = cropBoxData;
+ const { width, height } = imageData;
+ const left = cropBoxData.left - canvasData.left - imageData.left;
+ const top = cropBoxData.top - canvasData.top - imageData.top;
+
+ if (!this.cropped || this.disabled) {
+ return;
+ }
+
+ setStyle(this.image2, extend({
+ width,
+ height,
+ }, getTransforms(extend({
+ translateX: -left,
+ translateY: -top,
+ }, imageData))));
+
+ each(this.previews, (element) => {
+ const data = getData(element, DATA_PREVIEW);
+ const originalWidth = data.width;
+ const originalHeight = data.height;
+ let newWidth = originalWidth;
+ let newHeight = originalHeight;
+ let ratio = 1;
+
+ if (cropBoxWidth) {
+ ratio = originalWidth / cropBoxWidth;
+ newHeight = cropBoxHeight * ratio;
+ }
+
+ if (cropBoxHeight && newHeight > originalHeight) {
+ ratio = originalHeight / cropBoxHeight;
+ newWidth = cropBoxWidth * ratio;
+ newHeight = originalHeight;
+ }
+
+ setStyle(element, {
+ width: newWidth,
+ height: newHeight,
+ });
+
+ setStyle(element.getElementsByTagName('img')[0], extend({
+ width: width * ratio,
+ height: height * ratio,
+ }, getTransforms(extend({
+ translateX: -left * ratio,
+ translateY: -top * ratio,
+ }, imageData))));
+ });
+ },
+};
diff --git a/library/cropperjs/src/js/render.js b/library/cropperjs/src/js/render.js
new file mode 100644
index 000000000..09085ce41
--- /dev/null
+++ b/library/cropperjs/src/js/render.js
@@ -0,0 +1,495 @@
+import {
+ ACTION_ALL,
+ ACTION_MOVE,
+ CLASS_HIDDEN,
+ DATA_ACTION,
+ EVENT_CROP,
+} from './constants';
+import {
+ addClass,
+ dispatchEvent,
+ extend,
+ getAdjustedSizes,
+ getRotatedSizes,
+ getTransforms,
+ removeClass,
+ setData,
+ setStyle,
+} from './utilities';
+
+export default {
+ render() {
+ this.initContainer();
+ this.initCanvas();
+ this.initCropBox();
+ this.renderCanvas();
+
+ if (this.cropped) {
+ this.renderCropBox();
+ }
+ },
+
+ initContainer() {
+ const {
+ element,
+ options,
+ container,
+ cropper,
+ } = this;
+
+ addClass(cropper, CLASS_HIDDEN);
+ removeClass(element, CLASS_HIDDEN);
+
+ const containerData = {
+ width: Math.max(
+ container.offsetWidth,
+ Number(options.minContainerWidth) || 200,
+ ),
+ height: Math.max(
+ container.offsetHeight,
+ Number(options.minContainerHeight) || 100,
+ ),
+ };
+
+ this.containerData = containerData;
+
+ setStyle(cropper, {
+ width: containerData.width,
+ height: containerData.height,
+ });
+
+ addClass(element, CLASS_HIDDEN);
+ removeClass(cropper, CLASS_HIDDEN);
+ },
+
+ // Canvas (image wrapper)
+ initCanvas() {
+ const { containerData, imageData } = this;
+ const { viewMode } = this.options;
+ const rotated = Math.abs(imageData.rotate) % 180 === 90;
+ const naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;
+ const naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;
+ const aspectRatio = naturalWidth / naturalHeight;
+ let canvasWidth = containerData.width;
+ let canvasHeight = containerData.height;
+
+ if (containerData.height * aspectRatio > containerData.width) {
+ if (viewMode === 3) {
+ canvasWidth = containerData.height * aspectRatio;
+ } else {
+ canvasHeight = containerData.width / aspectRatio;
+ }
+ } else if (viewMode === 3) {
+ canvasHeight = containerData.width / aspectRatio;
+ } else {
+ canvasWidth = containerData.height * aspectRatio;
+ }
+
+ const canvasData = {
+ aspectRatio,
+ naturalWidth,
+ naturalHeight,
+ width: canvasWidth,
+ height: canvasHeight,
+ };
+
+ canvasData.left = (containerData.width - canvasWidth) / 2;
+ canvasData.top = (containerData.height - canvasHeight) / 2;
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ this.canvasData = canvasData;
+ this.limited = (viewMode === 1 || viewMode === 2);
+ this.limitCanvas(true, true);
+ this.initialImageData = extend({}, imageData);
+ this.initialCanvasData = extend({}, canvasData);
+ },
+
+ limitCanvas(sizeLimited, positionLimited) {
+ const {
+ options,
+ containerData,
+ canvasData,
+ cropBoxData,
+ } = this;
+ const { viewMode } = options;
+ const { aspectRatio } = canvasData;
+ const cropped = this.cropped && cropBoxData;
+
+ if (sizeLimited) {
+ let minCanvasWidth = Number(options.minCanvasWidth) || 0;
+ let minCanvasHeight = Number(options.minCanvasHeight) || 0;
+
+ if (viewMode > 1) {
+ minCanvasWidth = Math.max(minCanvasWidth, containerData.width);
+ minCanvasHeight = Math.max(minCanvasHeight, containerData.height);
+
+ if (viewMode === 3) {
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ } else if (viewMode > 0) {
+ if (minCanvasWidth) {
+ minCanvasWidth = Math.max(
+ minCanvasWidth,
+ cropped ? cropBoxData.width : 0,
+ );
+ } else if (minCanvasHeight) {
+ minCanvasHeight = Math.max(
+ minCanvasHeight,
+ cropped ? cropBoxData.height : 0,
+ );
+ } else if (cropped) {
+ minCanvasWidth = cropBoxData.width;
+ minCanvasHeight = cropBoxData.height;
+
+ if (minCanvasHeight * aspectRatio > minCanvasWidth) {
+ minCanvasWidth = minCanvasHeight * aspectRatio;
+ } else {
+ minCanvasHeight = minCanvasWidth / aspectRatio;
+ }
+ }
+ }
+
+ ({ width: minCanvasWidth, height: minCanvasHeight } = getAdjustedSizes({
+ aspectRatio,
+ width: minCanvasWidth,
+ height: minCanvasHeight,
+ }, 'cover'));
+
+ canvasData.minWidth = minCanvasWidth;
+ canvasData.minHeight = minCanvasHeight;
+ canvasData.maxWidth = Infinity;
+ canvasData.maxHeight = Infinity;
+ }
+
+ if (positionLimited) {
+ if (viewMode) {
+ const newCanvasLeft = containerData.width - canvasData.width;
+ const newCanvasTop = containerData.height - canvasData.height;
+
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+
+ if (cropped && this.limited) {
+ canvasData.minLeft = Math.min(
+ cropBoxData.left,
+ cropBoxData.left + (cropBoxData.width - canvasData.width),
+ );
+ canvasData.minTop = Math.min(
+ cropBoxData.top,
+ cropBoxData.top + (cropBoxData.height - canvasData.height),
+ );
+ canvasData.maxLeft = cropBoxData.left;
+ canvasData.maxTop = cropBoxData.top;
+
+ if (viewMode === 2) {
+ if (canvasData.width >= containerData.width) {
+ canvasData.minLeft = Math.min(0, newCanvasLeft);
+ canvasData.maxLeft = Math.max(0, newCanvasLeft);
+ }
+
+ if (canvasData.height >= containerData.height) {
+ canvasData.minTop = Math.min(0, newCanvasTop);
+ canvasData.maxTop = Math.max(0, newCanvasTop);
+ }
+ }
+ }
+ } else {
+ canvasData.minLeft = -canvasData.width;
+ canvasData.minTop = -canvasData.height;
+ canvasData.maxLeft = containerData.width;
+ canvasData.maxTop = containerData.height;
+ }
+ }
+ },
+
+ renderCanvas(changed, transformed) {
+ const { canvasData, imageData } = this;
+
+ if (transformed) {
+ const { width: naturalWidth, height: naturalHeight } = getRotatedSizes({
+ width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),
+ height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),
+ degree: imageData.rotate || 0,
+ });
+ const width = canvasData.width * (naturalWidth / canvasData.naturalWidth);
+ const height = canvasData.height * (naturalHeight / canvasData.naturalHeight);
+
+ canvasData.left -= (width - canvasData.width) / 2;
+ canvasData.top -= (height - canvasData.height) / 2;
+ canvasData.width = width;
+ canvasData.height = height;
+ canvasData.aspectRatio = naturalWidth / naturalHeight;
+ canvasData.naturalWidth = naturalWidth;
+ canvasData.naturalHeight = naturalHeight;
+ this.limitCanvas(true, false);
+ }
+
+ if (canvasData.width > canvasData.maxWidth ||
+ canvasData.width < canvasData.minWidth) {
+ canvasData.left = canvasData.oldLeft;
+ }
+
+ if (canvasData.height > canvasData.maxHeight ||
+ canvasData.height < canvasData.minHeight) {
+ canvasData.top = canvasData.oldTop;
+ }
+
+ canvasData.width = Math.min(
+ Math.max(canvasData.width, canvasData.minWidth),
+ canvasData.maxWidth,
+ );
+ canvasData.height = Math.min(
+ Math.max(canvasData.height, canvasData.minHeight),
+ canvasData.maxHeight,
+ );
+
+ this.limitCanvas(false, true);
+
+ canvasData.left = Math.min(
+ Math.max(canvasData.left, canvasData.minLeft),
+ canvasData.maxLeft,
+ );
+ canvasData.top = Math.min(
+ Math.max(canvasData.top, canvasData.minTop),
+ canvasData.maxTop,
+ );
+ canvasData.oldLeft = canvasData.left;
+ canvasData.oldTop = canvasData.top;
+
+ setStyle(this.canvas, extend({
+ width: canvasData.width,
+ height: canvasData.height,
+ }, getTransforms({
+ translateX: canvasData.left,
+ translateY: canvasData.top,
+ })));
+
+ this.renderImage(changed);
+
+ if (this.cropped && this.limited) {
+ this.limitCropBox(true, true);
+ }
+ },
+
+ renderImage(changed) {
+ const { canvasData, imageData } = this;
+ const width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);
+ const height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);
+
+ extend(imageData, {
+ width,
+ height,
+ left: (canvasData.width - width) / 2,
+ top: (canvasData.height - height) / 2,
+ });
+ setStyle(this.image, extend({
+ width: imageData.width,
+ height: imageData.height,
+ }, getTransforms(extend({
+ translateX: imageData.left,
+ translateY: imageData.top,
+ }, imageData))));
+
+ if (changed) {
+ this.output();
+ }
+ },
+
+ initCropBox() {
+ const { options, canvasData } = this;
+ const { aspectRatio } = options;
+ const autoCropArea = Number(options.autoCropArea) || 0.8;
+ const cropBoxData = {
+ width: canvasData.width,
+ height: canvasData.height,
+ };
+
+ if (aspectRatio) {
+ if (canvasData.height * aspectRatio > canvasData.width) {
+ cropBoxData.height = cropBoxData.width / aspectRatio;
+ } else {
+ cropBoxData.width = cropBoxData.height * aspectRatio;
+ }
+ }
+
+ this.cropBoxData = cropBoxData;
+ this.limitCropBox(true, true);
+
+ // Initialize auto crop area
+ cropBoxData.width = Math.min(
+ Math.max(cropBoxData.width, cropBoxData.minWidth),
+ cropBoxData.maxWidth,
+ );
+ cropBoxData.height = Math.min(
+ Math.max(cropBoxData.height, cropBoxData.minHeight),
+ cropBoxData.maxHeight,
+ );
+
+ // The width/height of auto crop area must large than "minWidth/Height"
+ cropBoxData.width = Math.max(
+ cropBoxData.minWidth,
+ cropBoxData.width * autoCropArea,
+ );
+ cropBoxData.height = Math.max(
+ cropBoxData.minHeight,
+ cropBoxData.height * autoCropArea,
+ );
+ cropBoxData.left = (
+ canvasData.left + ((canvasData.width - cropBoxData.width) / 2)
+ );
+ cropBoxData.top = (
+ canvasData.top + ((canvasData.height - cropBoxData.height) / 2)
+ );
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ this.initialCropBoxData = extend({}, cropBoxData);
+ },
+
+ limitCropBox(sizeLimited, positionLimited) {
+ const {
+ options,
+ containerData,
+ canvasData,
+ cropBoxData,
+ limited,
+ } = this;
+ const { aspectRatio } = options;
+
+ if (sizeLimited) {
+ let minCropBoxWidth = Number(options.minCropBoxWidth) || 0;
+ let minCropBoxHeight = Number(options.minCropBoxHeight) || 0;
+ let maxCropBoxWidth = Math.min(
+ containerData.width,
+ limited ? canvasData.width : containerData.width,
+ );
+ let maxCropBoxHeight = Math.min(
+ containerData.height,
+ limited ? canvasData.height : containerData.height,
+ );
+
+ // The min/maxCropBoxWidth/Height must be less than container's width/height
+ minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);
+ minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);
+
+ if (aspectRatio) {
+ if (minCropBoxWidth && minCropBoxHeight) {
+ if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+ } else if (minCropBoxWidth) {
+ minCropBoxHeight = minCropBoxWidth / aspectRatio;
+ } else if (minCropBoxHeight) {
+ minCropBoxWidth = minCropBoxHeight * aspectRatio;
+ }
+
+ if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {
+ maxCropBoxHeight = maxCropBoxWidth / aspectRatio;
+ } else {
+ maxCropBoxWidth = maxCropBoxHeight * aspectRatio;
+ }
+ }
+
+ // The minWidth/Height must be less than maxWidth/Height
+ cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);
+ cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);
+ cropBoxData.maxWidth = maxCropBoxWidth;
+ cropBoxData.maxHeight = maxCropBoxHeight;
+ }
+
+ if (positionLimited) {
+ if (limited) {
+ cropBoxData.minLeft = Math.max(0, canvasData.left);
+ cropBoxData.minTop = Math.max(0, canvasData.top);
+ cropBoxData.maxLeft = Math.min(
+ containerData.width,
+ canvasData.left + canvasData.width,
+ ) - cropBoxData.width;
+ cropBoxData.maxTop = Math.min(
+ containerData.height,
+ canvasData.top + canvasData.height,
+ ) - cropBoxData.height;
+ } else {
+ cropBoxData.minLeft = 0;
+ cropBoxData.minTop = 0;
+ cropBoxData.maxLeft = containerData.width - cropBoxData.width;
+ cropBoxData.maxTop = containerData.height - cropBoxData.height;
+ }
+ }
+ },
+
+ renderCropBox() {
+ const { options, containerData, cropBoxData } = this;
+
+ if (cropBoxData.width > cropBoxData.maxWidth ||
+ cropBoxData.width < cropBoxData.minWidth) {
+ cropBoxData.left = cropBoxData.oldLeft;
+ }
+
+ if (cropBoxData.height > cropBoxData.maxHeight ||
+ cropBoxData.height < cropBoxData.minHeight) {
+ cropBoxData.top = cropBoxData.oldTop;
+ }
+
+ cropBoxData.width = Math.min(
+ Math.max(cropBoxData.width, cropBoxData.minWidth),
+ cropBoxData.maxWidth,
+ );
+ cropBoxData.height = Math.min(
+ Math.max(cropBoxData.height, cropBoxData.minHeight),
+ cropBoxData.maxHeight,
+ );
+
+ this.limitCropBox(false, true);
+
+ cropBoxData.left = Math.min(
+ Math.max(cropBoxData.left, cropBoxData.minLeft),
+ cropBoxData.maxLeft,
+ );
+ cropBoxData.top = Math.min(
+ Math.max(cropBoxData.top, cropBoxData.minTop),
+ cropBoxData.maxTop,
+ );
+ cropBoxData.oldLeft = cropBoxData.left;
+ cropBoxData.oldTop = cropBoxData.top;
+
+ if (options.movable && options.cropBoxMovable) {
+ // Turn to move the canvas when the crop box is equal to the container
+ setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width &&
+ cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);
+ }
+
+ setStyle(this.cropBox, extend({
+ width: cropBoxData.width,
+ height: cropBoxData.height,
+ }, getTransforms({
+ translateX: cropBoxData.left,
+ translateY: cropBoxData.top,
+ })));
+
+ if (this.cropped && this.limited) {
+ this.limitCanvas(true, true);
+ }
+
+ if (!this.disabled) {
+ this.output();
+ }
+ },
+
+ output() {
+ this.preview();
+
+ if (this.complete) {
+ dispatchEvent(this.element, EVENT_CROP, this.getData());
+ }
+ },
+};
diff --git a/library/cropperjs/src/js/template.js b/library/cropperjs/src/js/template.js
new file mode 100644
index 000000000..589b46a78
--- /dev/null
+++ b/library/cropperjs/src/js/template.js
@@ -0,0 +1,27 @@
+export default (
+ '<div class="cropper-container">' +
+ '<div class="cropper-wrap-box">' +
+ '<div class="cropper-canvas"></div>' +
+ '</div>' +
+ '<div class="cropper-drag-box"></div>' +
+ '<div class="cropper-crop-box">' +
+ '<span class="cropper-view-box"></span>' +
+ '<span class="cropper-dashed dashed-h"></span>' +
+ '<span class="cropper-dashed dashed-v"></span>' +
+ '<span class="cropper-center"></span>' +
+ '<span class="cropper-face"></span>' +
+ '<span class="cropper-line line-e" data-action="e"></span>' +
+ '<span class="cropper-line line-n" data-action="n"></span>' +
+ '<span class="cropper-line line-w" data-action="w"></span>' +
+ '<span class="cropper-line line-s" data-action="s"></span>' +
+ '<span class="cropper-point point-e" data-action="e"></span>' +
+ '<span class="cropper-point point-n" data-action="n"></span>' +
+ '<span class="cropper-point point-w" data-action="w"></span>' +
+ '<span class="cropper-point point-s" data-action="s"></span>' +
+ '<span class="cropper-point point-ne" data-action="ne"></span>' +
+ '<span class="cropper-point point-nw" data-action="nw"></span>' +
+ '<span class="cropper-point point-sw" data-action="sw"></span>' +
+ '<span class="cropper-point point-se" data-action="se"></span>' +
+ '</div>' +
+ '</div>'
+);
diff --git a/library/cropperjs/src/js/utilities.js b/library/cropperjs/src/js/utilities.js
new file mode 100644
index 000000000..50b586a76
--- /dev/null
+++ b/library/cropperjs/src/js/utilities.js
@@ -0,0 +1,985 @@
+import {
+ WINDOW,
+} from './constants';
+
+/**
+ * Check if the given value is not a number.
+ */
+export const isNaN = Number.isNaN || WINDOW.isNaN;
+
+/**
+ * Check if the given value is a number.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a number, else `false`.
+ */
+export function isNumber(value) {
+ return typeof value === 'number' && !isNaN(value);
+}
+
+/**
+ * Check if the given value is undefined.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is undefined, else `false`.
+ */
+export function isUndefined(value) {
+ return typeof value === 'undefined';
+}
+
+/**
+ * Check if the given value is an object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is an object, else `false`.
+ */
+export function isObject(value) {
+ return typeof value === 'object' && value !== null;
+}
+
+const { hasOwnProperty } = Object.prototype;
+
+/**
+ * Check if the given value is a plain object.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.
+ */
+export function isPlainObject(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+
+ try {
+ const { constructor } = value;
+ const { prototype } = constructor;
+
+ return constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');
+ } catch (e) {
+ return false;
+ }
+}
+
+/**
+ * Check if the given value is a function.
+ * @param {*} value - The value to check.
+ * @returns {boolean} Returns `true` if the given value is a function, else `false`.
+ */
+export function isFunction(value) {
+ return typeof value === 'function';
+}
+
+/**
+ * Iterate the given data.
+ * @param {*} data - The data to iterate.
+ * @param {Function} callback - The process function for each element.
+ * @returns {*} The original data.
+ */
+export function each(data, callback) {
+ if (data && isFunction(callback)) {
+ if (Array.isArray(data) || isNumber(data.length)/* array-like */) {
+ const { length } = data;
+ let i;
+
+ for (i = 0; i < length; i += 1) {
+ if (callback.call(data, data[i], i, data) === false) {
+ break;
+ }
+ }
+ } else if (isObject(data)) {
+ Object.keys(data).forEach((key) => {
+ callback.call(data, data[key], key, data);
+ });
+ }
+ }
+
+ return data;
+}
+
+/**
+ * Extend the given object.
+ * @param {*} obj - The object to be extended.
+ * @param {*} args - The rest objects which will be merged to the first object.
+ * @returns {Object} The extended object.
+ */
+export function extend(obj, ...args) {
+ if (isObject(obj) && args.length > 0) {
+ if (Object.assign) {
+ return Object.assign(obj, ...args);
+ }
+
+ args.forEach((arg) => {
+ if (isObject(arg)) {
+ Object.keys(arg).forEach((key) => {
+ obj[key] = arg[key];
+ });
+ }
+ });
+ }
+
+ return obj;
+}
+
+/**
+ * Takes a function and returns a new one that will always have a particular context.
+ * @param {Function} fn - The target function.
+ * @param {Object} context - The new context for the function.
+ * @returns {boolean} The new function.
+ */
+export function proxy(fn, context, ...args) {
+ return (...args2) => fn.apply(context, args.concat(args2));
+}
+
+const REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/i;
+
+/**
+ * Normalize decimal number.
+ * Check out {@link http://0.30000000000000004.com/ }
+ * @param {number} value - The value to normalize.
+ * @param {number} [times=100000000000] - The times for normalizing.
+ * @returns {number} Returns the normalized number.
+ */
+export function normalizeDecimalNumber(value, times = 100000000000) {
+ return REGEXP_DECIMALS.test(value) ? (Math.round(value * times) / times) : value;
+}
+
+const REGEXP_SUFFIX = /^(?:width|height|left|top|marginLeft|marginTop)$/;
+
+/**
+ * Apply styles to the given element.
+ * @param {Element} element - The target element.
+ * @param {Object} styles - The styles for applying.
+ */
+export function setStyle(element, styles) {
+ const { style } = element;
+
+ each(styles, (value, property) => {
+ if (REGEXP_SUFFIX.test(property) && isNumber(value)) {
+ value += 'px';
+ }
+
+ style[property] = value;
+ });
+}
+
+/**
+ * Check if the given element has a special class.
+ * @param {Element} element - The element to check.
+ * @param {string} value - The class to search.
+ * @returns {boolean} Returns `true` if the special class was found.
+ */
+export function hasClass(element, value) {
+ return element.classList ?
+ element.classList.contains(value) :
+ element.className.indexOf(value) > -1;
+}
+
+/**
+ * Add classes to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be added.
+ */
+export function addClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, (elem) => {
+ addClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.add(value);
+ return;
+ }
+
+ const className = element.className.trim();
+
+ if (!className) {
+ element.className = value;
+ } else if (className.indexOf(value) < 0) {
+ element.className = `${className} ${value}`;
+ }
+}
+
+/**
+ * Remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be removed.
+ */
+export function removeClass(element, value) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, (elem) => {
+ removeClass(elem, value);
+ });
+ return;
+ }
+
+ if (element.classList) {
+ element.classList.remove(value);
+ return;
+ }
+
+ if (element.className.indexOf(value) >= 0) {
+ element.className = element.className.replace(value, '');
+ }
+}
+
+/**
+ * Add or remove classes from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} value - The classes to be toggled.
+ * @param {boolean} added - Add only.
+ */
+export function toggleClass(element, value, added) {
+ if (!value) {
+ return;
+ }
+
+ if (isNumber(element.length)) {
+ each(element, (elem) => {
+ toggleClass(elem, value, added);
+ });
+ return;
+ }
+
+ // IE10-11 doesn't support the second parameter of `classList.toggle`
+ if (added) {
+ addClass(element, value);
+ } else {
+ removeClass(element, value);
+ }
+}
+
+const REGEXP_HYPHENATE = /([a-z\d])([A-Z])/g;
+
+/**
+ * Hyphenate the given value.
+ * @param {string} value - The value to hyphenate.
+ * @returns {string} The hyphenated value.
+ */
+export function hyphenate(value) {
+ return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();
+}
+
+/**
+ * Get data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to get.
+ * @returns {string} The data value.
+ */
+export function getData(element, name) {
+ if (isObject(element[name])) {
+ return element[name];
+ } else if (element.dataset) {
+ return element.dataset[name];
+ }
+
+ return element.getAttribute(`data-${hyphenate(name)}`);
+}
+
+/**
+ * Set data to the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to set.
+ * @param {string} data - The data value.
+ */
+export function setData(element, name, data) {
+ if (isObject(data)) {
+ element[name] = data;
+ } else if (element.dataset) {
+ element.dataset[name] = data;
+ } else {
+ element.setAttribute(`data-${hyphenate(name)}`, data);
+ }
+}
+
+/**
+ * Remove data from the given element.
+ * @param {Element} element - The target element.
+ * @param {string} name - The data key to remove.
+ */
+export function removeData(element, name) {
+ if (isObject(element[name])) {
+ try {
+ delete element[name];
+ } catch (e) {
+ element[name] = null;
+ }
+ } else if (element.dataset) {
+ // #128 Safari not allows to delete dataset property
+ try {
+ delete element.dataset[name];
+ } catch (e) {
+ element.dataset[name] = null;
+ }
+ } else {
+ element.removeAttribute(`data-${hyphenate(name)}`);
+ }
+}
+
+const REGEXP_SPACES = /\s\s*/;
+
+/**
+ * Remove event listener from the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+export function removeListener(element, type, listener, options = {}) {
+ if (!isFunction(listener)) {
+ return;
+ }
+
+ const types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, (t) => {
+ removeListener(element, t, listener, options);
+ });
+ return;
+ }
+
+ if (element.removeEventListener) {
+ element.removeEventListener(type, listener, options);
+ } else if (element.detachEvent) {
+ element.detachEvent(`on${type}`, listener);
+ }
+}
+
+/**
+ * Add event listener to the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Function} listener - The event listener.
+ * @param {Object} options - The event options.
+ */
+export function addListener(element, type, listener, options = {}) {
+ if (!isFunction(listener)) {
+ return;
+ }
+
+ const types = type.trim().split(REGEXP_SPACES);
+
+ if (types.length > 1) {
+ each(types, (t) => {
+ addListener(element, t, listener, options);
+ });
+ return;
+ }
+
+ if (options.once) {
+ const originalListener = listener;
+
+ listener = (...args) => {
+ removeListener(element, type, listener, options);
+ return originalListener.apply(element, args);
+ };
+ }
+
+ if (element.addEventListener) {
+ element.addEventListener(type, listener, options);
+ } else if (element.attachEvent) {
+ element.attachEvent(`on${type}`, listener);
+ }
+}
+
+/**
+ * Dispatch event on the target element.
+ * @param {Element} element - The event target.
+ * @param {string} type - The event type(s).
+ * @param {Object} data - The additional event data.
+ * @returns {boolean} Indicate if the event is default prevented or not.
+ */
+export function dispatchEvent(element, type, data) {
+ if (element.dispatchEvent) {
+ let event;
+
+ // Event and CustomEvent on IE9-11 are global objects, not constructors
+ if (isFunction(Event) && isFunction(CustomEvent)) {
+ if (isUndefined(data)) {
+ event = new Event(type, {
+ bubbles: true,
+ cancelable: true,
+ });
+ } else {
+ event = new CustomEvent(type, {
+ detail: data,
+ bubbles: true,
+ cancelable: true,
+ });
+ }
+ } else if (isUndefined(data)) {
+ event = document.createEvent('Event');
+ event.initEvent(type, true, true);
+ } else {
+ event = document.createEvent('CustomEvent');
+ event.initCustomEvent(type, true, true, data);
+ }
+
+ // IE9+
+ return element.dispatchEvent(event);
+ } else if (element.fireEvent) {
+ // IE6-10 (native events only)
+ return element.fireEvent(`on${type}`);
+ }
+
+ return true;
+}
+
+/**
+ * Get the offset base on the document.
+ * @param {Element} element - The target element.
+ * @returns {Object} The offset data.
+ */
+export function getOffset(element) {
+ const doc = document.documentElement;
+ const box = element.getBoundingClientRect();
+
+ return {
+ left: box.left + (
+ (window.scrollX || (doc && doc.scrollLeft) || 0) - ((doc && doc.clientLeft) || 0)
+ ),
+ top: box.top + (
+ (window.scrollY || (doc && doc.scrollTop) || 0) - ((doc && doc.clientTop) || 0)
+ ),
+ };
+}
+
+/**
+ * Empty an element.
+ * @param {Element} element - The element to empty.
+ */
+export function empty(element) {
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+const { location } = WINDOW;
+const REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i;
+
+/**
+ * Check if the given URL is a cross origin URL.
+ * @param {string} url - The target URL.
+ * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.
+ */
+export function isCrossOriginURL(url) {
+ const parts = url.match(REGEXP_ORIGINS);
+
+ return parts && (
+ parts[1] !== location.protocol ||
+ parts[2] !== location.hostname ||
+ parts[3] !== location.port
+ );
+}
+
+/**
+ * Add timestamp to the given URL.
+ * @param {string} url - The target URL.
+ * @returns {string} The result URL.
+ */
+export function addTimestamp(url) {
+ const timestamp = `timestamp=${(new Date()).getTime()}`;
+
+ return (url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp);
+}
+
+/**
+ * Get transforms base on the given object.
+ * @param {Object} obj - The target object.
+ * @returns {string} A string contains transform values.
+ */
+export function getTransforms({
+ rotate,
+ scaleX,
+ scaleY,
+ translateX,
+ translateY,
+}) {
+ const values = [];
+
+ if (isNumber(translateX) && translateX !== 0) {
+ values.push(`translateX(${translateX}px)`);
+ }
+
+ if (isNumber(translateY) && translateY !== 0) {
+ values.push(`translateY(${translateY}px)`);
+ }
+
+ // Rotate should come first before scale to match orientation transform
+ if (isNumber(rotate) && rotate !== 0) {
+ values.push(`rotate(${rotate}deg)`);
+ }
+
+ if (isNumber(scaleX) && scaleX !== 1) {
+ values.push(`scaleX(${scaleX})`);
+ }
+
+ if (isNumber(scaleY) && scaleY !== 1) {
+ values.push(`scaleY(${scaleY})`);
+ }
+
+ const transform = values.length ? values.join(' ') : 'none';
+
+ return {
+ WebkitTransform: transform,
+ msTransform: transform,
+ transform,
+ };
+}
+
+const { navigator } = WINDOW;
+const IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
+
+/**
+ * Get an image's natural sizes.
+ * @param {string} image - The target image.
+ * @param {Function} callback - The callback function.
+ */
+export function getImageNaturalSizes(image, callback) {
+ // Modern browsers (except Safari)
+ if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) {
+ callback(image.naturalWidth, image.naturalHeight);
+ return;
+ }
+
+ const newImage = document.createElement('img');
+ const body = document.body || document.documentElement;
+
+ newImage.onload = () => {
+ callback(newImage.width, newImage.height);
+
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ body.removeChild(newImage);
+ }
+ };
+
+ newImage.src = image.src;
+
+ // iOS Safari will convert the image automatically
+ // with its orientation once append it into DOM (#279)
+ if (!IS_SAFARI_OR_UIWEBVIEW) {
+ newImage.style.cssText = (
+ 'left:0;' +
+ 'max-height:none!important;' +
+ 'max-width:none!important;' +
+ 'min-height:0!important;' +
+ 'min-width:0!important;' +
+ 'opacity:0;' +
+ 'position:absolute;' +
+ 'top:0;' +
+ 'z-index:-1;'
+ );
+ body.appendChild(newImage);
+ }
+}
+
+/**
+ * Get the max ratio of a group of pointers.
+ * @param {string} pointers - The target pointers.
+ * @returns {number} The result ratio.
+ */
+export function getMaxZoomRatio(pointers) {
+ const pointers2 = extend({}, pointers);
+ const ratios = [];
+
+ each(pointers, (pointer, pointerId) => {
+ delete pointers2[pointerId];
+
+ each(pointers2, (pointer2) => {
+ const x1 = Math.abs(pointer.startX - pointer2.startX);
+ const y1 = Math.abs(pointer.startY - pointer2.startY);
+ const x2 = Math.abs(pointer.endX - pointer2.endX);
+ const y2 = Math.abs(pointer.endY - pointer2.endY);
+ const z1 = Math.sqrt((x1 * x1) + (y1 * y1));
+ const z2 = Math.sqrt((x2 * x2) + (y2 * y2));
+ const ratio = (z2 - z1) / z1;
+
+ ratios.push(ratio);
+ });
+ });
+
+ ratios.sort((a, b) => Math.abs(a) < Math.abs(b));
+
+ return ratios[0];
+}
+
+/**
+ * Get a pointer from an event object.
+ * @param {Object} event - The target event object.
+ * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.
+ * @returns {Object} The result pointer contains start and/or end point coordinates.
+ */
+export function getPointer({ pageX, pageY }, endOnly) {
+ const end = {
+ endX: pageX,
+ endY: pageY,
+ };
+
+ if (endOnly) {
+ return end;
+ }
+
+ return extend({
+ startX: pageX,
+ startY: pageY,
+ }, end);
+}
+
+/**
+ * Get the center point coordinate of a group of pointers.
+ * @param {Object} pointers - The target pointers.
+ * @returns {Object} The center point coordinate.
+ */
+export function getPointersCenter(pointers) {
+ let pageX = 0;
+ let pageY = 0;
+ let count = 0;
+
+ each(pointers, ({ startX, startY }) => {
+ pageX += startX;
+ pageY += startY;
+ count += 1;
+ });
+
+ pageX /= count;
+ pageY /= count;
+
+ return {
+ pageX,
+ pageY,
+ };
+}
+
+/**
+ * Check if the given value is a finite number.
+ */
+export const isFinite = Number.isFinite || WINDOW.isFinite;
+
+/**
+ * Get the max sizes in a rectangle under the given aspect ratio.
+ * @param {Object} data - The original sizes.
+ * @param {string} [type='contain'] - The adjust type.
+ * @returns {Object} The result sizes.
+ */
+export function getAdjustedSizes(
+ {
+ aspectRatio,
+ height,
+ width,
+ },
+ type = 'contain', // or 'cover'
+) {
+ const isValidNumber = value => isFinite(value) && value > 0;
+
+ if (isValidNumber(width) && isValidNumber(height)) {
+ const adjustedWidth = height * aspectRatio;
+
+ if ((type === 'contain' && adjustedWidth > width) || (type === 'cover' && adjustedWidth < width)) {
+ height = width / aspectRatio;
+ } else {
+ width = height * aspectRatio;
+ }
+ } else if (isValidNumber(width)) {
+ height = width / aspectRatio;
+ } else if (isValidNumber(height)) {
+ width = height * aspectRatio;
+ }
+
+ return {
+ width,
+ height,
+ };
+}
+
+/**
+ * Get the new sizes of a rectangle after rotated.
+ * @param {Object} data - The original sizes.
+ * @returns {Object} The result sizes.
+ */
+export function getRotatedSizes({ width, height, degree }) {
+ degree = Math.abs(degree) % 180;
+
+ if (degree === 90) {
+ return {
+ width: height,
+ height: width,
+ };
+ }
+
+ const arc = ((degree % 90) * Math.PI) / 180;
+ const sinArc = Math.sin(arc);
+ const cosArc = Math.cos(arc);
+ const newWidth = (width * cosArc) + (height * sinArc);
+ const newHeight = (width * sinArc) + (height * cosArc);
+
+ return degree > 90 ? {
+ width: newHeight,
+ height: newWidth,
+ } : {
+ width: newWidth,
+ height: newHeight,
+ };
+}
+
+/**
+ * Get a canvas which drew the given image.
+ * @param {HTMLImageElement} image - The image for drawing.
+ * @param {Object} imageData - The image data.
+ * @param {Object} canvasData - The canvas data.
+ * @param {Object} options - The options.
+ * @returns {HTMLCanvasElement} The result canvas.
+ */
+export function getSourceCanvas(
+ image,
+ {
+ rotate = 0,
+ scaleX = 1,
+ scaleY = 1,
+ },
+ {
+ aspectRatio,
+ naturalWidth,
+ naturalHeight,
+ },
+ {
+ fillColor = 'transparent',
+ imageSmoothingEnabled = true,
+ imageSmoothingQuality = 'low',
+ maxWidth = Infinity,
+ maxHeight = Infinity,
+ minWidth = 0,
+ minHeight = 0,
+ },
+) {
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+ const maxSizes = getAdjustedSizes({
+ aspectRatio,
+ width: maxWidth,
+ height: maxHeight,
+ });
+ const minSizes = getAdjustedSizes({
+ aspectRatio,
+ width: minWidth,
+ height: minHeight,
+ }, 'cover');
+ const width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));
+ const height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));
+ const params = [
+ -width / 2,
+ -height / 2,
+ width,
+ height,
+ ];
+
+ canvas.width = normalizeDecimalNumber(width);
+ canvas.height = normalizeDecimalNumber(height);
+ context.fillStyle = fillColor;
+ context.fillRect(0, 0, width, height);
+ context.save();
+ context.translate(width / 2, height / 2);
+ context.rotate((rotate * Math.PI) / 180);
+ context.scale(scaleX, scaleY);
+ context.imageSmoothingEnabled = imageSmoothingEnabled;
+ context.imageSmoothingQuality = imageSmoothingQuality;
+ context.drawImage(image, ...params.map(param => Math.floor(normalizeDecimalNumber(param))));
+ context.restore();
+ return canvas;
+}
+
+const { fromCharCode } = String;
+
+/**
+ * Get string from char code in data view.
+ * @param {DataView} dataView - The data view for read.
+ * @param {number} start - The start index.
+ * @param {number} length - The read length.
+ * @returns {string} The read result.
+ */
+export function getStringFromCharCode(dataView, start, length) {
+ let str = '';
+ let i;
+
+ length += start;
+
+ for (i = start; i < length; i += 1) {
+ str += fromCharCode(dataView.getUint8(i));
+ }
+
+ return str;
+}
+
+const REGEXP_DATA_URL_HEAD = /^data:.*,/;
+
+/**
+ * Transform Data URL to array buffer.
+ * @param {string} dataURL - The Data URL to transform.
+ * @returns {ArrayBuffer} The result array buffer.
+ */
+export function dataURLToArrayBuffer(dataURL) {
+ const base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');
+ const binary = atob(base64);
+ const arrayBuffer = new ArrayBuffer(binary.length);
+ const uint8 = new Uint8Array(arrayBuffer);
+
+ each(uint8, (value, i) => {
+ uint8[i] = binary.charCodeAt(i);
+ });
+
+ return arrayBuffer;
+}
+
+/**
+ * Transform array buffer to Data URL.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.
+ * @param {string} mimeType - The mime type of the Data URL.
+ * @returns {string} The result Data URL.
+ */
+export function arrayBufferToDataURL(arrayBuffer, mimeType) {
+ const uint8 = new Uint8Array(arrayBuffer);
+ let data = '';
+
+ // TypedArray.prototype.forEach is not supported in some browsers.
+ each(uint8, (value) => {
+ data += fromCharCode(value);
+ });
+
+ return `data:${mimeType};base64,${btoa(data)}`;
+}
+
+/**
+ * Get orientation value from given array buffer.
+ * @param {ArrayBuffer} arrayBuffer - The array buffer to read.
+ * @returns {number} The read orientation value.
+ */
+export function getOrientation(arrayBuffer) {
+ const dataView = new DataView(arrayBuffer);
+ let orientation;
+ let littleEndian;
+ let app1Start;
+ let ifdStart;
+
+ // Only handle JPEG image (start by 0xFFD8)
+ if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {
+ const length = dataView.byteLength;
+ let offset = 2;
+
+ while (offset < length) {
+ if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {
+ app1Start = offset;
+ break;
+ }
+
+ offset += 1;
+ }
+ }
+
+ if (app1Start) {
+ const exifIDCode = app1Start + 4;
+ const tiffOffset = app1Start + 10;
+
+ if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {
+ const endianness = dataView.getUint16(tiffOffset);
+
+ littleEndian = endianness === 0x4949;
+
+ if (littleEndian || endianness === 0x4D4D /* bigEndian */) {
+ if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {
+ const firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);
+
+ if (firstIFDOffset >= 0x00000008) {
+ ifdStart = tiffOffset + firstIFDOffset;
+ }
+ }
+ }
+ }
+ }
+
+ if (ifdStart) {
+ const length = dataView.getUint16(ifdStart, littleEndian);
+ let offset;
+ let i;
+
+ for (i = 0; i < length; i += 1) {
+ offset = ifdStart + (i * 12) + 2;
+
+ if (dataView.getUint16(offset, littleEndian) === 0x0112 /* Orientation */) {
+ // 8 is the offset of the current tag's value
+ offset += 8;
+
+ // Get the original orientation value
+ orientation = dataView.getUint16(offset, littleEndian);
+
+ // Override the orientation with its default value
+ dataView.setUint16(offset, 1, littleEndian);
+ break;
+ }
+ }
+ }
+
+ return orientation;
+}
+
+/**
+ * Parse Exif Orientation value.
+ * @param {number} orientation - The orientation to parse.
+ * @returns {Object} The parsed result.
+ */
+export function parseOrientation(orientation) {
+ let rotate = 0;
+ let scaleX = 1;
+ let scaleY = 1;
+
+ switch (orientation) {
+ // Flip horizontal
+ case 2:
+ scaleX = -1;
+ break;
+
+ // Rotate left 180°
+ case 3:
+ rotate = -180;
+ break;
+
+ // Flip vertical
+ case 4:
+ scaleY = -1;
+ break;
+
+ // Flip vertical and rotate right 90°
+ case 5:
+ rotate = 90;
+ scaleY = -1;
+ break;
+
+ // Rotate right 90°
+ case 6:
+ rotate = 90;
+ break;
+
+ // Flip horizontal and rotate right 90°
+ case 7:
+ rotate = 90;
+ scaleX = -1;
+ break;
+
+ // Rotate left 90°
+ case 8:
+ rotate = -90;
+ break;
+
+ default:
+ }
+
+ return {
+ rotate,
+ scaleX,
+ scaleY,
+ };
+}
diff --git a/library/cropperjs/test/css/main.css b/library/cropperjs/test/css/main.css
new file mode 100644
index 000000000..6a86d123c
--- /dev/null
+++ b/library/cropperjs/test/css/main.css
@@ -0,0 +1,9 @@
+.container {
+ max-width: 640px;
+ max-height: 360px;
+ margin: 20px auto;
+}
+
+.container > img {
+ max-width: 100%;
+}
diff --git a/library/cropperjs/test/events/crop.js b/library/cropperjs/test/events/crop.js
new file mode 100644
index 000000000..1f769cf60
--- /dev/null
+++ b/library/cropperjs/test/events/crop.js
@@ -0,0 +1,21 @@
+QUnit.test('events#crop', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(7);
+
+ image.addEventListener('crop', function (e) {
+ assert.ok(util.isNumber(e.detail.x));
+ assert.ok(util.isNumber(e.detail.y));
+ assert.ok(util.isNumber(e.detail.width));
+ assert.ok(util.isNumber(e.detail.height));
+ assert.ok(util.isNumber(e.detail.rotate));
+ assert.ok(util.isNumber(e.detail.scaleX));
+ assert.ok(util.isNumber(e.detail.scaleY));
+
+ done();
+ });
+
+ return new Cropper(image);
+});
diff --git a/library/cropperjs/test/events/cropend.js b/library/cropperjs/test/events/cropend.js
new file mode 100644
index 000000000..1f18fb435
--- /dev/null
+++ b/library/cropperjs/test/events/cropend.js
@@ -0,0 +1,24 @@
+QUnit.test('events#cropend', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ image.addEventListener('ready', function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointermove' : 'mousemove');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ });
+
+ image.addEventListener('cropend', function (e) {
+ assert.strictEqual(e.detail.action, 'crop');
+ });
+
+ return new Cropper(image);
+});
diff --git a/library/cropperjs/test/events/cropmove.js b/library/cropperjs/test/events/cropmove.js
new file mode 100644
index 000000000..c695b7fdd
--- /dev/null
+++ b/library/cropperjs/test/events/cropmove.js
@@ -0,0 +1,24 @@
+QUnit.test('events#cropmove', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ image.addEventListener('ready', function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointermove' : 'mousemove');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ });
+
+ image.addEventListener('cropmove', function (e) {
+ assert.strictEqual(e.detail.action, 'crop');
+ });
+
+ return new Cropper(image);
+});
diff --git a/library/cropperjs/test/events/cropstart.js b/library/cropperjs/test/events/cropstart.js
new file mode 100644
index 000000000..7d9b597a0
--- /dev/null
+++ b/library/cropperjs/test/events/cropstart.js
@@ -0,0 +1,56 @@
+QUnit.test('events#cropstart', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ image.addEventListener('ready', function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ });
+
+ image.addEventListener('cropstart', function (e) {
+ assert.strictEqual(e.detail.action, 'crop');
+ });
+
+ return new Cropper(image);
+});
+
+QUnit.test('events#cropstart: default prevented', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(0);
+
+ image.addEventListener('ready', function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointermove' : 'mousemove');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ });
+
+ image.addEventListener('cropstart', function (e) {
+ e.preventDefault();
+ });
+
+ image.addEventListener('cropmove', function () {
+ assert.ok(false);
+ });
+
+ image.addEventListener('cropend', function () {
+ assert.ok(false);
+ });
+
+ return new Cropper(image);
+});
diff --git a/library/cropperjs/test/events/ready.js b/library/cropperjs/test/events/ready.js
new file mode 100644
index 000000000..fbec2ff0c
--- /dev/null
+++ b/library/cropperjs/test/events/ready.js
@@ -0,0 +1,15 @@
+QUnit.test('events#ready', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ image.addEventListener('ready', function () {
+ assert.ok(true);
+
+ done();
+ });
+
+ return new Cropper(image);
+});
diff --git a/library/cropperjs/test/events/zoom.js b/library/cropperjs/test/events/zoom.js
new file mode 100644
index 000000000..99fda34b5
--- /dev/null
+++ b/library/cropperjs/test/events/zoom.js
@@ -0,0 +1,46 @@
+QUnit.test('events#zoom', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(3);
+
+ image.addEventListener('ready', function () {
+ var cropper = this.cropper;
+
+ cropper.zoom(0.1);
+
+ done();
+ });
+
+ image.addEventListener('zoom', function (e) {
+ assert.ok(e.detail.ratio > 0);
+ assert.ok(e.detail.oldRatio > 0);
+ assert.ok(e.detail.ratio > e.detail.oldRatio);
+ });
+
+ return new Cropper(image);
+});
+
+QUnit.test('events#zoom: default prevented', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ image.addEventListener('ready', function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+
+ assert.deepEqual(cropper.zoom(0.1).getCanvasData(), canvasData);
+
+ done();
+ });
+
+ image.addEventListener('zoom', function (e) {
+ e.preventDefault();
+ });
+
+ return new Cropper(image);
+});
diff --git a/library/cropperjs/test/index.html b/library/cropperjs/test/index.html
new file mode 100644
index 000000000..bdcaf6b21
--- /dev/null
+++ b/library/cropperjs/test/index.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <title>Cropper.js</title>
+ <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.4.0.css">
+ <link rel="stylesheet" href="../dist/cropper.css">
+ <link rel="stylesheet" href="css/main.css">
+</head>
+<body>
+ <div id="qunit"></div>
+ <div id="qunit-fixture"></div>
+ <script src="https://code.jquery.com/qunit/qunit-2.4.0.js"></script>
+ <script src="../dist/cropper.js"></script>
+ <script src="js/main.js"></script>
+
+ <!-- Options -->
+ <script src="options/viewMode.js"></script>
+ <script src="options/dragMode.js"></script>
+ <script src="options/aspectRatio.js"></script>
+ <script src="options/data.js"></script>
+ <!-- <script src="options/checkCrossOrigin.js"></script> -->
+ <script src="options/checkOrientation.js"></script>
+ <script src="options/modal.js"></script>
+ <script src="options/guides.js"></script>
+ <script src="options/center.js"></script>
+ <script src="options/highlight.js"></script>
+ <script src="options/background.js"></script>
+ <script src="options/autoCrop.js"></script>
+ <script src="options/movable.js"></script>
+ <script src="options/rotatable.js"></script>
+ <script src="options/scalable.js"></script>
+ <script src="options/zoomable.js"></script>
+ <script src="options/zoomOnWheel.js"></script>
+ <script src="options/cropBoxMovable.js"></script>
+ <script src="options/cropBoxResizable.js"></script>
+ <script src="options/toggleDragModeOnDblclick.js"></script>
+ <script src="options/minCanvasWidth.js"></script>
+ <script src="options/minCanvasHeight.js"></script>
+ <script src="options/minCropBoxWidth.js"></script>
+ <script src="options/minCropBoxHeight.js"></script>
+ <script src="options/minContainerWidth.js"></script>
+ <script src="options/minContainerHeight.js"></script>
+ <script src="options/ready.js"></script>
+ <script src="options/cropstart.js"></script>
+ <script src="options/cropmove.js"></script>
+ <script src="options/cropend.js"></script>
+ <script src="options/crop.js"></script>
+ <script src="options/zoom.js"></script>
+
+ <!-- Methods -->
+ <script src="methods/crop.js"></script>
+ <script src="methods/reset.js"></script>
+ <script src="methods/clear.js"></script>
+ <script src="methods/replace.js"></script>
+ <script src="methods/enable.js"></script>
+ <script src="methods/disable.js"></script>
+ <script src="methods/destroy.js"></script>
+ <script src="methods/move.js"></script>
+ <script src="methods/moveTo.js"></script>
+ <script src="methods/zoom.js"></script>
+ <script src="methods/zoomTo.js"></script>
+ <script src="methods/rotate.js"></script>
+ <script src="methods/rotateTo.js"></script>
+ <script src="methods/scale.js"></script>
+ <script src="methods/scaleX.js"></script>
+ <script src="methods/scaleY.js"></script>
+ <script src="methods/getData.js"></script>
+ <script src="methods/setData.js"></script>
+ <script src="methods/getContainerData.js"></script>
+ <script src="methods/getImageData.js"></script>
+ <script src="methods/getCanvasData.js"></script>
+ <script src="methods/setCanvasData.js"></script>
+ <script src="methods/getCropBoxData.js"></script>
+ <script src="methods/setCropBoxData.js"></script>
+ <script src="methods/getCroppedCanvas.js"></script>
+ <script src="methods/setAspectRatio.js"></script>
+ <script src="methods/setDragMode.js"></script>
+
+ <!-- Events -->
+ <script src="events/ready.js"></script>
+ <script src="events/cropstart.js"></script>
+ <script src="events/cropmove.js"></script>
+ <script src="events/cropend.js"></script>
+ <script src="events/crop.js"></script>
+ <script src="events/zoom.js"></script>
+</body>
+</html>
diff --git a/library/cropperjs/test/js/main.js b/library/cropperjs/test/js/main.js
new file mode 100644
index 000000000..79fda799f
--- /dev/null
+++ b/library/cropperjs/test/js/main.js
@@ -0,0 +1,74 @@
+window.Util = {
+ isNumber: function (n) {
+ return typeof n === 'number' && !isNaN(n);
+ },
+ isFunction: function (fn) {
+ return typeof fn === 'function';
+ },
+ hasClass: function (element, className) {
+ return element.classList.contains(className);
+ },
+ getByClass: function (element, className) {
+ return element.getElementsByClassName ?
+ element.getElementsByClassName(className) :
+ element.querySelectorAll('.' + className);
+ },
+ createImage: function (attrs) {
+ var container = document.createElement('div');
+ var image = new Image();
+ var attr;
+
+ if (typeof attrs !== 'object') {
+ attrs = {};
+ }
+
+ if (!attrs.src) {
+ attrs.src = '../docs/images/picture.jpg';
+ }
+
+ for (attr in attrs) {
+ if (attrs.hasOwnProperty(attr)) {
+ image[attr] = attrs[attr];
+ }
+ }
+
+ container.className = 'container';
+ container.appendChild(image);
+ document.body.appendChild(container);
+
+ return image;
+ },
+ dispatchEvent: function (element, type, data) {
+ var event;
+
+ if (element.dispatchEvent) {
+ // Event and CustomEvent on IE9-11 are global objects, not constructors
+ if (typeof Event === 'function' && typeof CustomEvent === 'function') {
+ if (!data) {
+ event = new Event(type, {
+ bubbles: true,
+ cancelable: true
+ });
+ } else {
+ event = new CustomEvent(type, {
+ detail: data,
+ bubbles: true,
+ cancelable: true
+ });
+ }
+ } else if (!data) {
+ event = document.createEvent('Event');
+ event.initEvent(type, true, true);
+ } else {
+ event = document.createEvent('CustomEvent');
+ event.initCustomEvent(type, true, true, data);
+ }
+
+ // IE9+
+ return element.dispatchEvent(event);
+ } else if (element.fireEvent) {
+ // IE6-10 (native events only)
+ return element.fireEvent('on' + type);
+ }
+ }
+};
diff --git a/library/cropperjs/test/methods/clear.js b/library/cropperjs/test/methods/clear.js
new file mode 100644
index 000000000..6510ebad2
--- /dev/null
+++ b/library/cropperjs/test/methods/clear.js
@@ -0,0 +1,29 @@
+QUnit.test('methods#clear', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ cropper.clear();
+ assert.notOk(cropper.cropped);
+ assert.deepEqual(cropper.getData(), {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0,
+ rotate: 0,
+ scaleX: 1,
+ scaleY: 1
+ });
+ assert.deepEqual(cropper.getCropBoxData(), {});
+ assert.ok(util.hasClass(cropper.cropBox, 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/crop.js b/library/cropperjs/test/methods/crop.js
new file mode 100644
index 000000000..e4ae679f1
--- /dev/null
+++ b/library/cropperjs/test/methods/crop.js
@@ -0,0 +1,24 @@
+QUnit.test('methods#crop', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ autoCrop: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.notOk(cropper.cropped);
+ assert.ok(util.hasClass(cropper.cropBox, 'cropper-hidden'));
+
+ cropper.crop();
+ assert.ok(cropper.cropped);
+ assert.notOk(util.hasClass(cropper.cropBox, 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/destroy.js b/library/cropperjs/test/methods/destroy.js
new file mode 100644
index 000000000..cb65e0696
--- /dev/null
+++ b/library/cropperjs/test/methods/destroy.js
@@ -0,0 +1,22 @@
+QUnit.test('methods#destroy', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.ok(typeof cropper === 'object');
+ assert.ok(util.hasClass(image, 'cropper-hidden'));
+
+ cropper.destroy();
+ assert.ok(typeof this.cropper === 'undefined');
+ assert.notOk(util.hasClass(image, 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/disable.js b/library/cropperjs/test/methods/disable.js
new file mode 100644
index 000000000..c87f7aa91
--- /dev/null
+++ b/library/cropperjs/test/methods/disable.js
@@ -0,0 +1,60 @@
+QUnit.test('methods#disable', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(11);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var options = cropper.options;
+ var cropBoxData;
+ var canvasData;
+ var imageData;
+ var action;
+
+ cropper.disable();
+ assert.ok(cropper.disabled);
+ assert.ok(util.hasClass(cropper.cropper, 'cropper-disabled'));
+
+ cropBoxData = cropper.getCropBoxData();
+ cropper.clear();
+ assert.deepEqual(cropper.getCropBoxData(), cropBoxData);
+
+ imageData = cropper.getImageData();
+ cropper.move(10, 10);
+ assert.deepEqual(cropper.getImageData(), imageData);
+
+ cropper.zoom(0.5);
+ assert.strictEqual(cropper.getImageData().ratio, imageData.ratio);
+
+ cropper.rotate(15);
+ assert.strictEqual(cropper.getImageData().rotate, imageData.rotate);
+
+ cropper.scale(-1);
+ assert.strictEqual(cropper.getImageData().scaleX, imageData.scaleX);
+
+ canvasData = cropper.getCanvasData();
+ cropper.setCanvasData({
+ width: canvasData.width - 160
+ });
+ assert.deepEqual(cropper.getCanvasData(), canvasData);
+
+ cropBoxData = cropper.getCropBoxData();
+ cropper.setCropBoxData({
+ height: cropBoxData.height - 90
+ });
+ assert.deepEqual(cropper.getCropBoxData(), cropBoxData);
+
+ cropper.setAspectRatio(0.618);
+ assert.ok(isNaN(options.aspectRatio));
+
+ action = cropper.dragBox.dataset.action;
+ cropper.setDragMode('none');
+ assert.strictEqual(cropper.dragBox.dataset.action, action);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/enable.js b/library/cropperjs/test/methods/enable.js
new file mode 100644
index 000000000..ebd5b9529
--- /dev/null
+++ b/library/cropperjs/test/methods/enable.js
@@ -0,0 +1,23 @@
+QUnit.test('methods#enable', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ cropper.disable();
+ assert.ok(cropper.disabled);
+ assert.ok(util.hasClass(cropper.cropper, 'cropper-disabled'));
+
+ cropper.enable();
+ assert.notOk(cropper.disabled);
+ assert.notOk(util.hasClass(cropper.cropper, 'cropper-disabled'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/getCanvasData.js b/library/cropperjs/test/methods/getCanvasData.js
new file mode 100644
index 000000000..60d96af4e
--- /dev/null
+++ b/library/cropperjs/test/methods/getCanvasData.js
@@ -0,0 +1,23 @@
+QUnit.test('methods#getCanvasData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(6);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+
+ assert.ok(util.isNumber(canvasData.left));
+ assert.ok(util.isNumber(canvasData.top));
+ assert.ok(util.isNumber(canvasData.width));
+ assert.ok(util.isNumber(canvasData.height));
+ assert.ok(util.isNumber(canvasData.naturalWidth));
+ assert.ok(util.isNumber(canvasData.naturalHeight));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/getContainerData.js b/library/cropperjs/test/methods/getContainerData.js
new file mode 100644
index 000000000..094421ba0
--- /dev/null
+++ b/library/cropperjs/test/methods/getContainerData.js
@@ -0,0 +1,19 @@
+QUnit.test('methods#getContainerData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var containerData = cropper.getContainerData();
+
+ assert.ok(util.isNumber(containerData.width));
+ assert.ok(util.isNumber(containerData.height));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/getCropBoxData.js b/library/cropperjs/test/methods/getCropBoxData.js
new file mode 100644
index 000000000..844c7953e
--- /dev/null
+++ b/library/cropperjs/test/methods/getCropBoxData.js
@@ -0,0 +1,21 @@
+QUnit.test('methods#getCropBoxData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var cropBoxData = cropper.getCropBoxData();
+
+ assert.ok(util.isNumber(cropBoxData.left));
+ assert.ok(util.isNumber(cropBoxData.top));
+ assert.ok(util.isNumber(cropBoxData.width));
+ assert.ok(util.isNumber(cropBoxData.height));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/getCroppedCanvas.js b/library/cropperjs/test/methods/getCroppedCanvas.js
new file mode 100644
index 000000000..4117497a5
--- /dev/null
+++ b/library/cropperjs/test/methods/getCroppedCanvas.js
@@ -0,0 +1,33 @@
+QUnit.test('methods#getCroppedCanvas', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(7);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvas = cropper.getCroppedCanvas({
+ width: 160,
+ height: 90
+ });
+ var pixelData;
+
+ assert.ok(canvas instanceof HTMLCanvasElement);
+ assert.strictEqual(canvas.width, 160);
+ assert.strictEqual(canvas.height, 90);
+
+ canvas = cropper.rotate(90).getCroppedCanvas({
+ fillColor: '#010101'
+ });
+ pixelData = canvas.getContext('2d').getImageData(0, 0, 1, 1).data;
+ assert.strictEqual(pixelData[0], 1, 'red is 1');
+ assert.strictEqual(pixelData[1], 1, 'green is 1');
+ assert.strictEqual(pixelData[2], 1, 'blue is 1');
+ assert.strictEqual(pixelData[3], 255, 'color is opaque');
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/getData.js b/library/cropperjs/test/methods/getData.js
new file mode 100644
index 000000000..9c519eb7f
--- /dev/null
+++ b/library/cropperjs/test/methods/getData.js
@@ -0,0 +1,46 @@
+QUnit.test('methods#getData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(7);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var data = cropper.getData();
+
+ assert.ok(util.isNumber(data.x));
+ assert.ok(util.isNumber(data.y));
+ assert.ok(util.isNumber(data.width));
+ assert.ok(util.isNumber(data.height));
+ assert.ok(util.isNumber(data.rotate));
+ assert.ok(util.isNumber(data.scaleX));
+ assert.ok(util.isNumber(data.scaleY));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('methods#getData: rounded', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var data = cropper.getData(true);
+
+ assert.ok(data.x % 1 === 0);
+ assert.ok(data.y % 1 === 0);
+ assert.ok(data.width % 1 === 0);
+ assert.ok(data.height % 1 === 0);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/getImageData.js b/library/cropperjs/test/methods/getImageData.js
new file mode 100644
index 000000000..bd6e1941d
--- /dev/null
+++ b/library/cropperjs/test/methods/getImageData.js
@@ -0,0 +1,31 @@
+QUnit.test('methods#getImageData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(10);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.getImageData();
+
+ assert.ok(util.isNumber(imageData.naturalWidth));
+ assert.ok(util.isNumber(imageData.naturalHeight));
+ assert.ok(util.isNumber(imageData.aspectRatio));
+ assert.ok(util.isNumber(imageData.left));
+ assert.ok(util.isNumber(imageData.top));
+ assert.ok(util.isNumber(imageData.width));
+ assert.ok(util.isNumber(imageData.height));
+
+ imageData = cropper.rotateTo(45).getImageData();
+ assert.strictEqual(imageData.rotate, 45);
+
+ imageData = cropper.scale(-1, -1).getImageData();
+ assert.strictEqual(imageData.scaleX, -1);
+ assert.strictEqual(imageData.scaleY, -1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/move.js b/library/cropperjs/test/methods/move.js
new file mode 100644
index 000000000..c2ead8412
--- /dev/null
+++ b/library/cropperjs/test/methods/move.js
@@ -0,0 +1,20 @@
+QUnit.test('methods#move', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.move(1, 1).getCanvasData();
+
+ assert.strictEqual(changedCanvasData.left, canvasData.left + 1);
+ assert.strictEqual(changedCanvasData.top, canvasData.top + 1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/moveTo.js b/library/cropperjs/test/methods/moveTo.js
new file mode 100644
index 000000000..e8bf0eebd
--- /dev/null
+++ b/library/cropperjs/test/methods/moveTo.js
@@ -0,0 +1,19 @@
+QUnit.test('methods#moveTo', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.moveTo(0, 0).getCanvasData();
+
+ assert.strictEqual(canvasData.left, 0);
+ assert.strictEqual(canvasData.top, 0);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/replace.js b/library/cropperjs/test/methods/replace.js
new file mode 100644
index 000000000..3fc8fe0b6
--- /dev/null
+++ b/library/cropperjs/test/methods/replace.js
@@ -0,0 +1,23 @@
+QUnit.test('methods#replace', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ cropper.options.ready = function () {
+ assert.notOk(cropper.cropped);
+ cropper.crop();
+ assert.ok(cropper.cropped);
+ done();
+ };
+
+ cropper.options.autoCrop = false;
+ cropper.replace('../docs/images/picture-2.jpg');
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/reset.js b/library/cropperjs/test/methods/reset.js
new file mode 100644
index 000000000..3e047394c
--- /dev/null
+++ b/library/cropperjs/test/methods/reset.js
@@ -0,0 +1,35 @@
+QUnit.test('methods#reset', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var cropBoxData = cropper.getCropBoxData();
+
+ cropper.setCanvasData({
+ top: canvasData.top + 10,
+ width: canvasData.width - 10
+ });
+
+ assert.notDeepEqual(cropper.getCanvasData(), canvasData);
+
+ cropper.setCropBoxData({
+ left: cropBoxData.left + 10,
+ height: cropBoxData.height - 10
+ });
+
+ assert.notDeepEqual(cropper.getCropBoxData(), cropBoxData);
+
+ cropper.reset();
+ assert.deepEqual(cropper.getCanvasData(), canvasData);
+ assert.deepEqual(cropper.getCropBoxData(), cropBoxData);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/rotate.js b/library/cropperjs/test/methods/rotate.js
new file mode 100644
index 000000000..749096f0b
--- /dev/null
+++ b/library/cropperjs/test/methods/rotate.js
@@ -0,0 +1,19 @@
+QUnit.test('methods#rotate', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(3);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.rotate(360).getImageData().rotate, 0);
+ assert.strictEqual(cropper.rotate(90).getImageData().rotate, 90);
+ assert.strictEqual(cropper.rotate(-180).getImageData().rotate, -90);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/rotateTo.js b/library/cropperjs/test/methods/rotateTo.js
new file mode 100644
index 000000000..323431e76
--- /dev/null
+++ b/library/cropperjs/test/methods/rotateTo.js
@@ -0,0 +1,20 @@
+QUnit.test('methods#rotateTo', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.rotateTo(360).getImageData().rotate, 0);
+ assert.strictEqual(cropper.rotateTo(90).getImageData().rotate, 90);
+ assert.strictEqual(cropper.rotateTo(0).getImageData().rotate, 0);
+ assert.strictEqual(cropper.rotateTo(-180).getImageData().rotate, -180);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/scale.js b/library/cropperjs/test/methods/scale.js
new file mode 100644
index 000000000..be1caa589
--- /dev/null
+++ b/library/cropperjs/test/methods/scale.js
@@ -0,0 +1,19 @@
+QUnit.test('methods#scale', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.scale(-1, -1).getImageData();
+
+ assert.strictEqual(imageData.scaleX, -1);
+ assert.strictEqual(imageData.scaleY, -1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/scaleX.js b/library/cropperjs/test/methods/scaleX.js
new file mode 100644
index 000000000..c799df58d
--- /dev/null
+++ b/library/cropperjs/test/methods/scaleX.js
@@ -0,0 +1,18 @@
+QUnit.test('methods#scaleX', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.scaleX(-1).getImageData();
+
+ assert.strictEqual(imageData.scaleX, -1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/scaleY.js b/library/cropperjs/test/methods/scaleY.js
new file mode 100644
index 000000000..026b93a1f
--- /dev/null
+++ b/library/cropperjs/test/methods/scaleY.js
@@ -0,0 +1,18 @@
+QUnit.test('methods#scaleY', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.scaleY(-1).getImageData();
+
+ assert.strictEqual(imageData.scaleY, -1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/setAspectRatio.js b/library/cropperjs/test/methods/setAspectRatio.js
new file mode 100644
index 000000000..ddf46798d
--- /dev/null
+++ b/library/cropperjs/test/methods/setAspectRatio.js
@@ -0,0 +1,20 @@
+QUnit.test('methods#setAspectRatio', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var options = cropper.options;
+
+ assert.ok(isNaN(options.aspectRatio));
+ cropper.setAspectRatio(1);
+ assert.strictEqual(options.aspectRatio, 1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/setCanvasData.js b/library/cropperjs/test/methods/setCanvasData.js
new file mode 100644
index 000000000..e8f6511dc
--- /dev/null
+++ b/library/cropperjs/test/methods/setCanvasData.js
@@ -0,0 +1,34 @@
+QUnit.test('methods#setCanvasData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(6);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.setCanvasData({
+ left: 16,
+ top: 9
+ }).getCanvasData();
+
+ assert.notStrictEqual(changedCanvasData.left, canvasData.left);
+ assert.notStrictEqual(changedCanvasData.top, canvasData.top);
+ assert.strictEqual(changedCanvasData.width, canvasData.width);
+ assert.strictEqual(changedCanvasData.height, canvasData.height);
+
+ canvasData = cropper.getCanvasData();
+ changedCanvasData = cropper.setCanvasData({
+ width: 320,
+ height: 180
+ }).getCanvasData();
+
+ assert.notStrictEqual(changedCanvasData.width, canvasData.width);
+ assert.notStrictEqual(changedCanvasData.height, canvasData.height);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/setCropBoxData.js b/library/cropperjs/test/methods/setCropBoxData.js
new file mode 100644
index 000000000..e78767cfc
--- /dev/null
+++ b/library/cropperjs/test/methods/setCropBoxData.js
@@ -0,0 +1,36 @@
+QUnit.test('methods#setCropBoxData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(8);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var cropBoxData = cropper.getCropBoxData();
+ var changedCropBoxData = cropper.setCropBoxData({
+ left: 16,
+ top: 9
+ }).getCropBoxData();
+
+ assert.notStrictEqual(changedCropBoxData.left, cropBoxData.left);
+ assert.notStrictEqual(changedCropBoxData.top, cropBoxData.top);
+ assert.strictEqual(changedCropBoxData.width, cropBoxData.width);
+ assert.strictEqual(changedCropBoxData.height, cropBoxData.height);
+
+ cropBoxData = cropper.getCropBoxData();
+ changedCropBoxData = cropper.setCropBoxData({
+ width: 320,
+ height: 180
+ }).getCropBoxData();
+
+ assert.strictEqual(changedCropBoxData.left, cropBoxData.left);
+ assert.strictEqual(changedCropBoxData.top, cropBoxData.top);
+ assert.notStrictEqual(changedCropBoxData.width, cropBoxData.width);
+ assert.notStrictEqual(changedCropBoxData.height, cropBoxData.height);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/setData.js b/library/cropperjs/test/methods/setData.js
new file mode 100644
index 000000000..4e1360f09
--- /dev/null
+++ b/library/cropperjs/test/methods/setData.js
@@ -0,0 +1,36 @@
+QUnit.test('methods#setData', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(8);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var data = cropper.getData();
+ var changedData = cropper.setData({
+ x: 16,
+ y: 9
+ }).getData();
+
+ assert.notStrictEqual(changedData.x, data.x);
+ assert.notStrictEqual(changedData.y, data.y);
+ assert.strictEqual(changedData.width, data.width);
+ assert.strictEqual(changedData.height, data.height);
+
+ data = cropper.getData();
+ changedData = cropper.setData({
+ width: 320,
+ height: 180
+ }).getData();
+
+ assert.strictEqual(changedData.x, data.x);
+ assert.strictEqual(changedData.y, data.y);
+ assert.notStrictEqual(changedData.width, data.width);
+ assert.notStrictEqual(changedData.height, data.height);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/setDragMode.js b/library/cropperjs/test/methods/setDragMode.js
new file mode 100644
index 000000000..1b611af9b
--- /dev/null
+++ b/library/cropperjs/test/methods/setDragMode.js
@@ -0,0 +1,27 @@
+QUnit.test('methods#setDragMode', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var dragBox = cropper.dragBox;
+
+ assert.strictEqual(dragBox.dataset.action, 'crop');
+
+ cropper.setDragMode('move');
+ assert.strictEqual(dragBox.dataset.action, 'move');
+
+ cropper.setDragMode('crop');
+ assert.strictEqual(dragBox.dataset.action, 'crop');
+
+ cropper.setDragMode('none');
+ assert.strictEqual(dragBox.dataset.action, 'none');
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/zoom.js b/library/cropperjs/test/methods/zoom.js
new file mode 100644
index 000000000..70a1a763a
--- /dev/null
+++ b/library/cropperjs/test/methods/zoom.js
@@ -0,0 +1,20 @@
+QUnit.test('methods#zoom', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.zoom(0.1).getCanvasData();
+
+ assert.ok(changedCanvasData.width > canvasData.width);
+ assert.ok(changedCanvasData.height > canvasData.height);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/methods/zoomTo.js b/library/cropperjs/test/methods/zoomTo.js
new file mode 100644
index 000000000..dd9e81760
--- /dev/null
+++ b/library/cropperjs/test/methods/zoomTo.js
@@ -0,0 +1,21 @@
+QUnit.test('methods#zoomTo', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(3);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.zoomTo(1).getImageData();
+ var canvasData = cropper.getCanvasData();
+
+ assert.strictEqual(imageData.width, imageData.naturalWidth);
+ assert.strictEqual(canvasData.width, canvasData.naturalWidth);
+ assert.strictEqual(canvasData.naturalWidth, imageData.naturalWidth);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/aspectRatio.js b/library/cropperjs/test/options/aspectRatio.js
new file mode 100644
index 000000000..d7ba89401
--- /dev/null
+++ b/library/cropperjs/test/options/aspectRatio.js
@@ -0,0 +1,39 @@
+QUnit.test('options#aspectRatio: NaN', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // aspectRatio: NaN,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.ok(isNaN(cropper.options.aspectRatio));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#aspectRatio: 1', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ aspectRatio: 1,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.options.aspectRatio, 1);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/autoCrop.js b/library/cropperjs/test/options/autoCrop.js
new file mode 100644
index 000000000..f010966eb
--- /dev/null
+++ b/library/cropperjs/test/options/autoCrop.js
@@ -0,0 +1,39 @@
+QUnit.test('options#autoCrop: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // autoCrop: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.ok(cropper.cropped);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#autoCrop: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ autoCrop: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.notOk(cropper.cropped);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/background.js b/library/cropperjs/test/options/background.js
new file mode 100644
index 000000000..21dbb8b12
--- /dev/null
+++ b/library/cropperjs/test/options/background.js
@@ -0,0 +1,40 @@
+QUnit.test('options#background: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // background: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.ok(util.hasClass(cropper.cropper, 'cropper-bg'));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#background: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ background: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.notOk(util.hasClass(cropper.cropper, 'cropper-bg'));
+
+ done();
+ }
+ });
+
+});
diff --git a/library/cropperjs/test/options/center.js b/library/cropperjs/test/options/center.js
new file mode 100644
index 000000000..5d45eb021
--- /dev/null
+++ b/library/cropperjs/test/options/center.js
@@ -0,0 +1,41 @@
+QUnit.test('options#center: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // center: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var center = util.getByClass(cropper.cropBox, 'cropper-center');
+
+ assert.notOk(util.hasClass(center[0], 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#center: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ center: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var center = util.getByClass(cropper.cropBox, 'cropper-center');
+
+ assert.ok(util.hasClass(center[0], 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/checkCrossOrigin.js b/library/cropperjs/test/options/checkCrossOrigin.js
new file mode 100644
index 000000000..86fde8f6f
--- /dev/null
+++ b/library/cropperjs/test/options/checkCrossOrigin.js
@@ -0,0 +1,67 @@
+QUnit.test('options#checkCrossOrigin: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage({
+ src: 'https://fengyuanchen.github.io/cropperjs/images/picture.jpg'
+ });
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ // checkCrossOrigin: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.image.crossOrigin, 'anonymous');
+ assert.ok(cropper.image.src.indexOf('timestamp') >= 0);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#checkCrossOrigin: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage({
+ src: 'https://fengyuanchen.github.io/cropperjs/images/picture.jpg'
+ });
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ checkCrossOrigin: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.notStrictEqual(cropper.image.crossOrigin, 'anonymous');
+ assert.ok(cropper.image.src.indexOf('timestamp') < 0);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#checkCrossOrigin: exists crossOrigin attribute', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage({
+ src: 'https://fengyuanchen.github.io/cropperjs/images/picture.jpg',
+ crossOrigin: 'anonymous'
+ });
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.image.crossOrigin, 'anonymous');
+ assert.ok(cropper.image.src.indexOf('timestamp') < 0);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/checkOrientation.js b/library/cropperjs/test/options/checkOrientation.js
new file mode 100644
index 000000000..0fe548404
--- /dev/null
+++ b/library/cropperjs/test/options/checkOrientation.js
@@ -0,0 +1,43 @@
+QUnit.test('options#checkOrientation: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage({
+ src: '../docs/images/picture-3.jpg'
+ });
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // checkOrientation: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.notStrictEqual(cropper.getData().rotate, 0);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#checkOrientation: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage({
+ src: '../docs/images/picture-3.jpg'
+ });
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ checkOrientation: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.getData().rotate, 0);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/crop.js b/library/cropperjs/test/options/crop.js
new file mode 100644
index 000000000..a4b48585e
--- /dev/null
+++ b/library/cropperjs/test/options/crop.js
@@ -0,0 +1,21 @@
+QUnit.test('options#crop', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(7);
+
+ return new Cropper(image, {
+ crop: function (e) {
+ assert.ok(util.isNumber(e.detail.x));
+ assert.ok(util.isNumber(e.detail.y));
+ assert.ok(util.isNumber(e.detail.width));
+ assert.ok(util.isNumber(e.detail.height));
+ assert.ok(util.isNumber(e.detail.rotate));
+ assert.ok(util.isNumber(e.detail.scaleX));
+ assert.ok(util.isNumber(e.detail.scaleY));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/cropBoxMovable.js b/library/cropperjs/test/options/cropBoxMovable.js
new file mode 100644
index 000000000..d5d3e1d7d
--- /dev/null
+++ b/library/cropperjs/test/options/cropBoxMovable.js
@@ -0,0 +1,41 @@
+QUnit.test('options#cropBoxMovable: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // cropBoxMovable: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var face = util.getByClass(cropper.cropBox, 'cropper-face');
+
+ assert.strictEqual(face[0].dataset.action, 'all');
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#cropBoxMovable: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ cropBoxMovable: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var face = util.getByClass(cropper.cropBox, 'cropper-face');
+
+ assert.strictEqual(face[0].dataset.action, cropper.options.dragMode);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/cropBoxResizable.js b/library/cropperjs/test/options/cropBoxResizable.js
new file mode 100644
index 000000000..37093642b
--- /dev/null
+++ b/library/cropperjs/test/options/cropBoxResizable.js
@@ -0,0 +1,65 @@
+QUnit.test('options#cropBoxResizable: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(12);
+
+ return new Cropper(image, {
+ // cropBoxResizable: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var line = util.getByClass(cropper.cropBox, 'cropper-line');
+ var point = util.getByClass(cropper.cropBox, 'cropper-point');
+
+ assert.notOk(util.hasClass(line[0], 'cropper-hidden'));
+ assert.notOk(util.hasClass(line[1], 'cropper-hidden'));
+ assert.notOk(util.hasClass(line[2], 'cropper-hidden'));
+ assert.notOk(util.hasClass(line[3], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[0], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[1], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[2], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[3], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[4], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[5], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[6], 'cropper-hidden'));
+ assert.notOk(util.hasClass(point[7], 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#cropBoxResizable: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(12);
+
+ return new Cropper(image, {
+ cropBoxResizable: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var line = util.getByClass(cropper.cropBox, 'cropper-line');
+ var point = util.getByClass(cropper.cropBox, 'cropper-point');
+
+ assert.ok(util.hasClass(line[0], 'cropper-hidden'));
+ assert.ok(util.hasClass(line[1], 'cropper-hidden'));
+ assert.ok(util.hasClass(line[2], 'cropper-hidden'));
+ assert.ok(util.hasClass(line[3], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[0], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[1], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[2], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[3], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[4], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[5], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[6], 'cropper-hidden'));
+ assert.ok(util.hasClass(point[7], 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/cropend.js b/library/cropperjs/test/options/cropend.js
new file mode 100644
index 000000000..abfe815c0
--- /dev/null
+++ b/library/cropperjs/test/options/cropend.js
@@ -0,0 +1,24 @@
+QUnit.test('options#cropend', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointermove' : 'mousemove');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ },
+
+ cropend: function (e) {
+ assert.strictEqual(e.detail.action, 'crop');
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/cropmove.js b/library/cropperjs/test/options/cropmove.js
new file mode 100644
index 000000000..fa20f4011
--- /dev/null
+++ b/library/cropperjs/test/options/cropmove.js
@@ -0,0 +1,24 @@
+QUnit.test('options#cropmove', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointermove' : 'mousemove');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ },
+
+ cropmove: function (e) {
+ assert.strictEqual(e.detail.action, 'crop');
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/cropstart.js b/library/cropperjs/test/options/cropstart.js
new file mode 100644
index 000000000..f547269cd
--- /dev/null
+++ b/library/cropperjs/test/options/cropstart.js
@@ -0,0 +1,56 @@
+QUnit.test('options#cropstart', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ },
+
+ cropstart: function (e) {
+ assert.strictEqual(e.detail.action, 'crop');
+ }
+ });
+});
+
+QUnit.test('options#cropstart: default prevented', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(0);
+
+ return new Cropper(image, {
+ ready: function () {
+ var PointerEvent = window.PointerEvent;
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerdown' : 'mousedown');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointermove' : 'mousemove');
+ util.dispatchEvent(cropper.dragBox, PointerEvent ? 'pointerup' : 'mouseup');
+
+ done();
+ },
+
+ cropstart: function (e) {
+ e.preventDefault();
+ },
+
+ cropmove: function () {
+ assert.ok(false);
+ },
+
+ cropend: function () {
+ assert.ok(false);
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/data.js b/library/cropperjs/test/options/data.js
new file mode 100644
index 000000000..e9da6a4dd
--- /dev/null
+++ b/library/cropperjs/test/options/data.js
@@ -0,0 +1,35 @@
+QUnit.test('options#data', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var initialData = {
+ x: 360,
+ y: 450,
+ width: 640,
+ height: 360,
+ rotate: 45,
+ scaleX: -1,
+ scaleY: -1
+ };
+
+ assert.expect(7);
+
+ return new Cropper(image, {
+ data: initialData,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var data = cropper.getData(true);
+
+ assert.strictEqual(data.x, initialData.x);
+ assert.strictEqual(data.y, initialData.y);
+ assert.strictEqual(data.width, initialData.width);
+ assert.strictEqual(data.height, initialData.height);
+ assert.strictEqual(data.rotate, initialData.rotate);
+ assert.strictEqual(data.scaleX, initialData.scaleX);
+ assert.strictEqual(data.scaleY, initialData.scaleY);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/dragMode.js b/library/cropperjs/test/options/dragMode.js
new file mode 100644
index 000000000..57f31ff13
--- /dev/null
+++ b/library/cropperjs/test/options/dragMode.js
@@ -0,0 +1,60 @@
+QUnit.test('options#dragMode: crop', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // dragMode: 'crop',
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.dragBox.dataset.action, 'crop');
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#dragMode: move', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ dragMode: 'move',
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.dragBox.dataset.action, 'move');
+
+ done();
+ }
+ });
+});
+
+
+QUnit.test('options#dragMode: none', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ dragMode: 'none',
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.dragBox.dataset.action, 'none');
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/guides.js b/library/cropperjs/test/options/guides.js
new file mode 100644
index 000000000..298c3ad3a
--- /dev/null
+++ b/library/cropperjs/test/options/guides.js
@@ -0,0 +1,43 @@
+QUnit.test('options#guides: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ // guides: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var dashed = util.getByClass(cropper.cropBox, 'cropper-dashed');
+
+ assert.notOk(util.hasClass(dashed[0], 'cropper-hidden'));
+ assert.notOk(util.hasClass(dashed[1], 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#guides: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ guides: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var dashed = util.getByClass(cropper.cropBox, 'cropper-dashed');
+
+ assert.ok(util.hasClass(dashed[0], 'cropper-hidden'));
+ assert.ok(util.hasClass(dashed[1], 'cropper-hidden'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/highlight.js b/library/cropperjs/test/options/highlight.js
new file mode 100644
index 000000000..a1db4687f
--- /dev/null
+++ b/library/cropperjs/test/options/highlight.js
@@ -0,0 +1,41 @@
+QUnit.test('options#highlight: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // highlight: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var face = util.getByClass(cropper.cropBox, 'cropper-face');
+
+ assert.notOk(util.hasClass(face[0], 'cropper-invisible'));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#highlight: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ highlight: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var face = util.getByClass(cropper.cropBox, 'cropper-face');
+
+ assert.ok(util.hasClass(face[0], 'cropper-invisible'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/minCanvasHeight.js b/library/cropperjs/test/options/minCanvasHeight.js
new file mode 100644
index 000000000..c9745a9b1
--- /dev/null
+++ b/library/cropperjs/test/options/minCanvasHeight.js
@@ -0,0 +1,23 @@
+QUnit.test('options#minCanvasHeight', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var minCanvasHeight = 270;
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ minCanvasHeight: minCanvasHeight,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.setCanvasData({
+ height: 180
+ }).getCanvasData();
+
+ assert.strictEqual(Math.round(canvasData.height), minCanvasHeight);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/minCanvasWidth.js b/library/cropperjs/test/options/minCanvasWidth.js
new file mode 100644
index 000000000..61601e4f9
--- /dev/null
+++ b/library/cropperjs/test/options/minCanvasWidth.js
@@ -0,0 +1,23 @@
+QUnit.test('options#minCanvasWidth', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var minCanvasWidth = 480;
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ minCanvasWidth: minCanvasWidth,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.setCanvasData({
+ width: 320
+ }).getCanvasData();
+
+ assert.strictEqual(Math.round(canvasData.width), minCanvasWidth);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/minContainerHeight.js b/library/cropperjs/test/options/minContainerHeight.js
new file mode 100644
index 000000000..85d7a70ef
--- /dev/null
+++ b/library/cropperjs/test/options/minContainerHeight.js
@@ -0,0 +1,21 @@
+QUnit.test('options#minContainerHeight', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var minContainerHeight = 361;
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ minContainerHeight: minContainerHeight,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var containerData = cropper.getContainerData();
+
+ assert.strictEqual(Math.round(containerData.height), minContainerHeight);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/minContainerWidth.js b/library/cropperjs/test/options/minContainerWidth.js
new file mode 100644
index 000000000..2119cc96e
--- /dev/null
+++ b/library/cropperjs/test/options/minContainerWidth.js
@@ -0,0 +1,21 @@
+QUnit.test('options#minContainerWidth', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var minContainerWidth = 641;
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ minContainerWidth: minContainerWidth,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var containerData = cropper.getContainerData();
+
+ assert.strictEqual(Math.round(containerData.width), minContainerWidth);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/minCropBoxHeight.js b/library/cropperjs/test/options/minCropBoxHeight.js
new file mode 100644
index 000000000..ccf50aefe
--- /dev/null
+++ b/library/cropperjs/test/options/minCropBoxHeight.js
@@ -0,0 +1,23 @@
+QUnit.test('options#minCropBoxHeight', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var minCropBoxHeight = 150;
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ minCropBoxHeight: minCropBoxHeight,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var cropBoxData = cropper.setCropBoxData({
+ height: 100
+ }).getCropBoxData();
+
+ assert.strictEqual(Math.round(cropBoxData.height), minCropBoxHeight);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/minCropBoxWidth.js b/library/cropperjs/test/options/minCropBoxWidth.js
new file mode 100644
index 000000000..acde5c366
--- /dev/null
+++ b/library/cropperjs/test/options/minCropBoxWidth.js
@@ -0,0 +1,23 @@
+QUnit.test('options#minCropBoxWidth', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+ var minCropBoxWidth = 300;
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ minCropBoxWidth: minCropBoxWidth,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var cropBoxData = cropper.setCropBoxData({
+ width: 200
+ }).getCropBoxData();
+
+ assert.strictEqual(Math.round(cropBoxData.width), minCropBoxWidth);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/modal.js b/library/cropperjs/test/options/modal.js
new file mode 100644
index 000000000..7284cb264
--- /dev/null
+++ b/library/cropperjs/test/options/modal.js
@@ -0,0 +1,39 @@
+QUnit.test('options#modal: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // modal: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.ok(util.hasClass(cropper.dragBox, 'cropper-modal'));
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#modal: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ modal: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.notOk(util.hasClass(cropper.dragBox, 'cropper-modal'));
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/movable.js b/library/cropperjs/test/options/movable.js
new file mode 100644
index 000000000..0e2c53506
--- /dev/null
+++ b/library/cropperjs/test/options/movable.js
@@ -0,0 +1,45 @@
+QUnit.test('options#movable: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ // movable: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.move(10, 10).getCanvasData();
+
+ assert.strictEqual(changedCanvasData.left, canvasData.left + 10);
+ assert.strictEqual(changedCanvasData.top, canvasData.top + 10);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#movable: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ movable: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.move(10, 10).getCanvasData();
+
+ assert.strictEqual(changedCanvasData.left, canvasData.left);
+ assert.strictEqual(changedCanvasData.top, canvasData.top);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/ready.js b/library/cropperjs/test/options/ready.js
new file mode 100644
index 000000000..e09e8369c
--- /dev/null
+++ b/library/cropperjs/test/options/ready.js
@@ -0,0 +1,15 @@
+QUnit.test('options#ready', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ assert.ok(true);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/rotatable.js b/library/cropperjs/test/options/rotatable.js
new file mode 100644
index 000000000..992e9362f
--- /dev/null
+++ b/library/cropperjs/test/options/rotatable.js
@@ -0,0 +1,39 @@
+QUnit.test('options#rotatable: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // rotatable: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.rotate(90).getImageData().rotate, 90);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#rotatable: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ rotatable: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ assert.strictEqual(cropper.rotate(90).getImageData().rotate, undefined);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/scalable.js b/library/cropperjs/test/options/scalable.js
new file mode 100644
index 000000000..c523eaf63
--- /dev/null
+++ b/library/cropperjs/test/options/scalable.js
@@ -0,0 +1,43 @@
+QUnit.test('options#scalable: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ // scalable: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.scale(-1, -1).getImageData();
+
+ assert.strictEqual(imageData.scaleX, -1);
+ assert.strictEqual(imageData.scaleY, -1);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#scalable: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ scalable: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var imageData = cropper.scale(-1, -1).getImageData();
+
+ assert.strictEqual(imageData.scaleX, undefined);
+ assert.strictEqual(imageData.scaleY, undefined);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/toggleDragModeOnDblclick.js b/library/cropperjs/test/options/toggleDragModeOnDblclick.js
new file mode 100644
index 000000000..df64327b2
--- /dev/null
+++ b/library/cropperjs/test/options/toggleDragModeOnDblclick.js
@@ -0,0 +1,45 @@
+QUnit.test('options#toggleDragModeOnDblclick: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ // toggleDragModeOnDblclick: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var dragBox = cropper.dragBox;
+
+ util.dispatchEvent(dragBox, 'dblclick');
+ assert.ok(util.hasClass(dragBox, 'cropper-move'));
+ assert.strictEqual(dragBox.dataset.action, 'move');
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#toggleDragModeOnDblclick: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ toggleDragModeOnDblclick: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var dragBox = cropper.dragBox;
+
+ util.dispatchEvent(dragBox, 'dblclick');
+ assert.ok(util.hasClass(dragBox, 'cropper-crop'));
+ assert.strictEqual(dragBox.dataset.action, 'crop');
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/viewMode.js b/library/cropperjs/test/options/viewMode.js
new file mode 100644
index 000000000..e39ec5fc1
--- /dev/null
+++ b/library/cropperjs/test/options/viewMode.js
@@ -0,0 +1,100 @@
+QUnit.test('options#viewMode: 0', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ // viewMode: 0,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = {
+ left: 100,
+ top: 100,
+ width: 160,
+ height: 90
+ };
+ var changedCanvasData = cropper.setCanvasData(canvasData).getCanvasData();
+
+ assert.strictEqual(changedCanvasData.left, canvasData.left);
+ assert.strictEqual(changedCanvasData.top, canvasData.top);
+ assert.strictEqual(changedCanvasData.width, canvasData.width);
+ assert.strictEqual(changedCanvasData.height, canvasData.height);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#viewMode: 1', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ viewMode: 1,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.zoom(-0.5).getCanvasData(); // Zoom out
+ var cropBoxData = cropper.getCropBoxData();
+
+ assert.ok(canvasData.width >= cropBoxData.width);
+ assert.ok(canvasData.height >= cropBoxData.height);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#viewMode: 2', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ viewMode: 2,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.zoom(-0.5).getCanvasData(); // Zoom out
+ var containerData = cropper.getContainerData();
+
+ assert.ok(canvasData.width >= containerData.width ||
+ canvasData.height >= containerData.height);
+
+ done();
+ }
+ });
+});
+
+QUnit.test('options#viewMode: 3', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(4);
+
+ return new Cropper(image, {
+ viewMode: 3,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.zoom(-0.5).getCanvasData(); // Zoom out
+ var containerData = cropper.getContainerData();
+
+ assert.ok(canvasData.left <= 0);
+ assert.ok(canvasData.top <= 0);
+ assert.ok(canvasData.width >= containerData.width);
+ assert.ok(canvasData.height >= containerData.height);
+
+ done();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/zoom.js b/library/cropperjs/test/options/zoom.js
new file mode 100644
index 000000000..51ebc76ad
--- /dev/null
+++ b/library/cropperjs/test/options/zoom.js
@@ -0,0 +1,46 @@
+QUnit.test('options#zoom', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(3);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+
+ cropper.zoom(0.1);
+
+ done();
+ },
+
+ zoom: function (e) {
+ assert.ok(e.detail.ratio > 0);
+ assert.ok(e.detail.oldRatio > 0);
+ assert.ok(e.detail.ratio > e.detail.oldRatio);
+ }
+ });
+});
+
+QUnit.test('options#zoom: default prevented', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+
+ assert.deepEqual(cropper.zoom(0.1).getCanvasData(), canvasData);
+
+ done();
+ },
+
+ zoom: function (e) {
+ e.preventDefault();
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/zoomOnWheel.js b/library/cropperjs/test/options/zoomOnWheel.js
new file mode 100644
index 000000000..1a1bf6dce
--- /dev/null
+++ b/library/cropperjs/test/options/zoomOnWheel.js
@@ -0,0 +1,47 @@
+QUnit.test('options#zoomOnWheel: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(1);
+
+ return new Cropper(image, {
+ // zoomOnWheel: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.cropper, 'wheel');
+
+ done();
+ },
+
+ zoom: function () {
+ assert.ok(true);
+ }
+ });
+});
+
+QUnit.test('options#zoomOnWheel: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(0);
+
+ return new Cropper(image, {
+ zoomOnWheel: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+
+ util.dispatchEvent(cropper.cropper, 'wheel');
+
+ done();
+ },
+
+ zoom: function () {
+ assert.ok(false);
+ }
+ });
+});
diff --git a/library/cropperjs/test/options/zoomable.js b/library/cropperjs/test/options/zoomable.js
new file mode 100644
index 000000000..9f8ec6fce
--- /dev/null
+++ b/library/cropperjs/test/options/zoomable.js
@@ -0,0 +1,51 @@
+QUnit.test('options#zoomable: true', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(3);
+
+ return new Cropper(image, {
+ // zoomable: true,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.zoom(0.1).getCanvasData();
+
+ assert.ok(changedCanvasData.width > canvasData.width);
+ assert.ok(changedCanvasData.height > canvasData.height);
+
+ done();
+ },
+ zoom: function () {
+ assert.ok(true);
+ }
+ });
+});
+
+QUnit.test('options#zoomable: false', function (assert) {
+ var done = assert.async();
+ var util = window.Util;
+ var image = util.createImage();
+
+ assert.expect(2);
+
+ return new Cropper(image, {
+ zoomable: false,
+
+ ready: function () {
+ var cropper = this.cropper;
+ var canvasData = cropper.getCanvasData();
+ var changedCanvasData = cropper.zoom(0.1).getCanvasData();
+
+ assert.ok(changedCanvasData.width === canvasData.width);
+ assert.ok(changedCanvasData.height === canvasData.height);
+
+ done();
+ },
+ zoom: function () {
+ assert.ok(false);
+ }
+ });
+});
diff --git a/library/font_awesome/.gitignore b/library/font_awesome/.gitignore
deleted file mode 100644
index 39c4f20b7..000000000
--- a/library/font_awesome/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-*.pyc
-*.egg-info
-*.db
-*.db.old
-*.swp
-*.db-journal
-
-.coverage
-.DS_Store
-.installed.cfg
-_gh_pages/*
-
-.idea/*
-.svn/*
-src/website/static/*
-src/website/media/*
-
-bin
-cfcache
-develop-eggs
-dist
-downloads
-eggs
-parts
-tmp
-.sass-cache
-node_modules
-
-src/website/settingslocal.py
-stunnel.log
-
-.ruby-version
-.bundle
diff --git a/library/font_awesome/.npmignore b/library/font_awesome/.npmignore
deleted file mode 100644
index 54a691f81..000000000
--- a/library/font_awesome/.npmignore
+++ /dev/null
@@ -1,42 +0,0 @@
-*.pyc
-*.egg-info
-*.db
-*.db.old
-*.swp
-*.db-journal
-
-.coverage
-.DS_Store
-.installed.cfg
-_gh_pages/*
-
-.idea/*
-.svn/*
-src/website/static/*
-src/website/media/*
-
-bin
-cfcache
-develop-eggs
-dist
-downloads
-eggs
-parts
-tmp
-.sass-cache
-node_modules
-
-src/website/settingslocal.py
-stunnel.log
-
-.ruby-version
-
-# don't need these in the npm package.
-src/
-_config.yml
-bower.json
-component.json
-composer.json
-CONTRIBUTING.md
-Gemfile
-Gemfile.lock
diff --git a/library/font_awesome/CONTRIBUTING.md b/library/font_awesome/CONTRIBUTING.md
deleted file mode 100644
index f281d304f..000000000
--- a/library/font_awesome/CONTRIBUTING.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# Contributing to Font Awesome
-
-Looking to contribute something to Font Awesome? **Here's how you can help.**
-
-
-
-## Requesting new icons
-
-New icons mostly start as requests by the [Font Awesome community on GitHub](../../issues). Want to request a new icon? Here are some things to keep in mind:
-
-1. Please be nice. Font Awesome is a happy place.
-2. Please do not request comprehensive sets of icons related to a very specific field.
-3. Please [search](../../search?type=Issues) to see if your icon request already exists. If a request is found, please add a 👠reaction to that one.
-4. Please make requests for single icons, unless you are requesting a couple of strictly related icons (e.g., thumbs-up/thumbs-down).
-5. Please and thank you if you include the following:
- - Title your [new issue](../../issues/new?title=Icon%20Request:%20icon-) `Icon request: icon-name` (e.g., `Icon request: icon-car`).
- - Include a few use cases for your requested icon. How do you plan on using it?
- - Attach a single color image or two that represent the idea you're going for.
- - Request concrete objects: it's harder to make an icon to represent happiness, it's easier to make a smiley face. ☺
-
-
-
-## Suggesting icon keyword addition/removal
-
-Icon filters are maintained by the [Font Awesome community on GitHub](../../pulls?q=is%3Apr+label%3Adoc).
-
-If you feel that an icon
-
-* is missing keyword(s)
-* contains invalid keyword(s)
-
-please send a [PR](https://help.github.com/articles/using-pull-requests/) to the `master` branch.
-
-
-
-## Reporting issues
-
-We only accept issues that are icon requests, bug reports, or feature requests. Bugs must be isolated and reproducible problems that we can fix within the Font Awesome core. Please read the following guidelines to ensure you are the paragon of bug reporting.
-
-1. **Search for existing issues.** We get a lot of duplicate issues, and you'd help us out a lot by first checking if someone else has reported the same issue. Moreover, the issue may have already been resolved with a fix available.
-2. **Create an isolated and reproducible test case.** Be sure the problem exists in Font Awesome's code with a [reduced test case](http://css-tricks.com/reduced-test-cases/) that should be included in each bug report.
-3. **Include a live example.** Make use of jsFiddle, jsBin, or Codepen to share your isolated test cases.
-4. **Share as much information as possible.** Include operating system and version, browser and version, version of Font Awesome, etc. where appropriate. Also include steps to reproduce the bug.
-
-
-
-## Key branches
-
-- `master` is the latest, deployed version (use for pull request if they only affect the docs)
-- `gh-pages` is the hosted docs (not to be used for pull requests)
-- `*-wip` branches are the official work in progress branches for the next releases. All pull requests should be submitted against the appropriate branch
-
-
-
-## Notes on the repo
-
-As of v3.2.0, Font Awesome's CSS, LESS, SCSS, and documentation are all powered by Jekyll templates and built before each commit and release.
-- `_config.yml` - much of the site is driven off variables from this file, including Font Awesome and Bootstrap versions
-- `src/` - All edits to documentation, LESS, SCSS, and CSS should be made to files and templates in this directory
-- `src/icons.yml` - all LESS, SCSS, and CSS icon definitions are driven off this single file
-
-
-
-## Pull requests
-
-- At the moment we are not accepting pull requests containing icons
-- Submit all pull requests against the appropriate `*-wip` branch for easier merging
-- If your PR only affect the docs, feel free to push against the `master` branch
-- Any changes to the docs must be made to the Liquid templates in the `src` directory
-- Any changes to the styles must be made to the .less and .scss files in the `src` directory
-- If modifying the .less and .scss files, always recompile and commit the compiled files
-- Try not to pollute your pull request with unintended changes--keep them simple and small
-- Try to share which browsers your code has been tested in before submitting a pull request
-
-
-
-## Coding standards: HTML
-
-- Two spaces for indentation, never tabs
-- Double quotes only, never single quotes
-- Always use proper indentation
-- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags)
-
-
-
-## Coding standards: CSS
-
-- Adhere to the [Recess CSS property order](http://markdotto.com/2011/11/29/css-property-order/)
-- Multiple-line approach (one property and value per line)
-- Always a space after a property's colon (.e.g, `display: block;` and not `display:block;`)
-- End all lines with a semi-colon
-- For multiple, comma-separated selectors, place each selector on its own line
-- Attribute selectors, like `input[type="text"]` should always wrap the attribute's value in double quotes, for consistency and safety (see this [blog post on unquoted attribute values](http://mathiasbynens.be/notes/unquoted-attribute-values) that can lead to XSS attacks)
-
-
-
-## License
-
-By contributing your code, you agree to license your contribution under the terms of the MIT License:
-- http://opensource.org/licenses/mit-license.html
-
-
-
-## Thanks
-
-Thanks to Bootstrap for their wonderful CONTRIBUTING.MD doc. It was modified to create this one.
diff --git a/library/font_awesome/Gemfile b/library/font_awesome/Gemfile
deleted file mode 100644
index 7abbc9066..000000000
--- a/library/font_awesome/Gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-source 'https://rubygems.org'
-
-gem 'jekyll', '~> 1.0'
-gem 'safe_yaml', '~> 1.0.4'
-gem 'sass', '~> 3.0'
-gem 'less', '~> 2.5.0'
-gem 'libv8', '~> 3.16.14.0'
-gem 'therubyracer'
diff --git a/library/font_awesome/Gemfile.lock b/library/font_awesome/Gemfile.lock
deleted file mode 100644
index b673ad003..000000000
--- a/library/font_awesome/Gemfile.lock
+++ /dev/null
@@ -1,68 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- blankslate (2.1.2.4)
- classifier (1.3.4)
- fast-stemmer (>= 1.0.0)
- colorator (0.1)
- commander (4.1.6)
- highline (~> 1.6.11)
- commonjs (0.2.7)
- fast-stemmer (1.0.2)
- ffi (1.9.10)
- highline (1.6.21)
- jekyll (1.5.1)
- classifier (~> 1.3)
- colorator (~> 0.1)
- commander (~> 4.1.3)
- liquid (~> 2.5.5)
- listen (~> 1.3)
- maruku (= 0.7.0)
- pygments.rb (~> 0.5.0)
- redcarpet (~> 2.3.0)
- safe_yaml (~> 1.0)
- toml (~> 0.1.0)
- less (2.5.1)
- commonjs (~> 0.2.7)
- libv8 (3.16.14.15)
- liquid (2.5.5)
- listen (1.3.1)
- rb-fsevent (>= 0.9.3)
- rb-inotify (>= 0.9)
- rb-kqueue (>= 0.2)
- maruku (0.7.0)
- parslet (1.5.0)
- blankslate (~> 2.0)
- posix-spawn (0.3.11)
- pygments.rb (0.5.4)
- posix-spawn (~> 0.3.6)
- yajl-ruby (~> 1.1.0)
- rb-fsevent (0.9.6)
- rb-inotify (0.9.5)
- ffi (>= 0.5.0)
- rb-kqueue (0.2.4)
- ffi (>= 0.5.0)
- redcarpet (2.3.0)
- ref (2.0.0)
- safe_yaml (1.0.4)
- sass (3.4.19)
- therubyracer (0.12.2)
- libv8 (~> 3.16.14.0)
- ref
- toml (0.1.2)
- parslet (~> 1.5.0)
- yajl-ruby (1.1.0)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- jekyll (~> 1.0)
- less (~> 2.5.0)
- libv8 (~> 3.16.14.0)
- safe_yaml (~> 1.0.4)
- sass (~> 3.0)
- therubyracer
-
-BUNDLED WITH
- 1.13.2
diff --git a/library/font_awesome/HELP-US-OUT.txt b/library/font_awesome/HELP-US-OUT.txt
deleted file mode 100644
index 83d083dd7..000000000
--- a/library/font_awesome/HELP-US-OUT.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
-Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
-comprehensive icon sets or copy and paste your own.
-
-Please. Check it out.
-
--Dave Gandy
diff --git a/library/font_awesome/README.md b/library/font_awesome/README.md
deleted file mode 100644
index 3e1c1cfc1..000000000
--- a/library/font_awesome/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# [Font Awesome v4.7.0](http://fontawesome.io)
-### The iconic font and CSS framework
-
-Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites,
-created and maintained by [Dave Gandy](https://twitter.com/davegandy).
-Stay up to date with the latest release and announcements on Twitter:
-[@fontawesome](http://twitter.com/fontawesome).
-
-Get started at http://fontawesome.io!
-
-## License
-- The Font Awesome font is licensed under the SIL OFL 1.1:
- - http://scripts.sil.org/OFL
-- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License:
- - https://opensource.org/licenses/mit-license.html
-- The Font Awesome documentation is licensed under the CC BY 3.0 License:
- - http://creativecommons.org/licenses/by/3.0/
-- Attribution is no longer required as of Font Awesome 3.0, but much appreciated:
- - `Font Awesome by Dave Gandy - http://fontawesome.io`
-- Full details: http://fontawesome.io/license/
-
-## Changelog
-- [v4.7.0 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/10012)
-- [v4.6.3 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/9189)
-- [v4.6.3 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/9189)
-- [v4.6.2 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/9117)
-- [v4.6.1 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/8962)
-- [v4.6.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.6.0+is%3Aclosed)
-- [v4.5.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.5.0+is%3Aclosed)
-- [v4.4.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.4.0+is%3Aclosed)
-- [v4.3.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.3.0+is%3Aclosed)
-- [v4.2.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=12&page=1&state=closed)
-- [v4.1.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=6&page=1&state=closed)
-- [v4.0.3 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=9&page=1&state=closed)
-- [v4.0.2 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=8&page=1&state=closed)
-- [v4.0.1 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=7&page=1&state=closed)
-- [v4.0.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=2&page=1&state=closed)
-- [v3.2.1 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=5&page=1&state=closed)
-- [v3.2.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=3&page=1&state=closed)
-- [v3.1.1 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=4&page=1&state=closed)
-- v3.1.0 - Added 54 icons, icon stacking styles, flipping and rotating icons, removed Sass support
-- v3.0.2 - much improved rendering and alignment in IE7
-- v3.0.1 - much improved rendering in webkit, various bug fixes
-- v3.0.0 - all icons redesigned from scratch, optimized for Bootstrap's 14px default
-
-## Contributing
-
-Please read through our [contributing guidelines](https://github.com/FortAwesome/Font-Awesome/blob/master/CONTRIBUTING.md).
-Included are directions for opening issues, coding standards, and notes on development.
-
-## Versioning
-
-Font Awesome will be maintained under the Semantic Versioning guidelines as much as possible. Releases will be numbered
-with the following format:
-
-`<major>.<minor>.<patch>`
-
-And constructed with the following guidelines:
-
-* Breaking backward compatibility bumps the major (and resets the minor and patch)
-* New additions, including new icons, without breaking backward compatibility bumps the minor (and resets the patch)
-* Bug fixes, changes to brand logos, and misc changes bumps the patch
-
-For more information on SemVer, please visit http://semver.org.
-
-## Author
-- Email: dave@fontawesome.io
-- Twitter: http://twitter.com/davegandy
-- GitHub: https://github.com/davegandy
-
-## Component
-To include as a [component](https://github.com/componentjs/component), just run
-
- $ component install FortAwesome/Font-Awesome
-
-Or add
-
- "FortAwesome/Font-Awesome": "*"
-
-to the `dependencies` in your `component.json`.
-
-## Hacking on Font Awesome
-
-**Before you can build the project**, you must first have the following installed:
-
-- [Ruby](https://www.ruby-lang.org/en/)
-- Ruby Development Headers
- - **Ubuntu:** `sudo apt-get install ruby-dev` *(Only if you're __NOT__ using `rbenv` or `rvm`)*
- - **Windows:** [DevKit](http://rubyinstaller.org/)
-- [Bundler](http://bundler.io/) (Run `gem install bundler` to install).
-- [Node Package Manager (AKA NPM)](https://docs.npmjs.com/getting-started/installing-node)
-- [Less](http://lesscss.org/) (Run `npm install -g less` to install).
-- [Less Plugin: Clean CSS](https://github.com/less/less-plugin-clean-css) (Run `npm install -g less-plugin-clean-css` to install).
-
-From the root of the repository, install the tools used to develop.
-
- $ bundle install
- $ npm install
-
-Build the project and documentation:
-
- $ bundle exec jekyll build
-
-Or serve it on a local server on http://localhost:7998/Font-Awesome/:
-
- $ bundle exec jekyll -w serve
diff --git a/library/font_awesome/_config.yml b/library/font_awesome/_config.yml
deleted file mode 100644
index 18129a1fc..000000000
--- a/library/font_awesome/_config.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-safe: false
-port: 7998
-baseurl: /Font-Awesome/ # Where GitHub serves the project up from
-url: http://localhost:7998
-
-source: src
-destination: _gh_pages
-plugins: src/_plugins
-
-pygments: true
-permalink: pretty
-
-# ensures SCSS files are compiled
-include: [_*.scss]
-
-# used in building icon pages
-icon_meta: src/icons.yml
-icon_layout: icon.html # Relative to _layouts directory
-icon_destination: icon # Relative to destination
-
-fontawesome:
- version: 4.7.0
- minor_version: 4.7
- major_version: 4
- doc_blob: v4.7.0
- url: http://fontawesome.io
- legacy_url: http://fortawesome.github.com/Font-Awesome/
- blog_url: http://articles.fortawesome.com
- twitter: fontawesome
- tagline: The iconic font and CSS toolkit
- css_prefix: fa
- author:
- name: Dave Gandy
- email: dave@fontawesome.io
- twitter: davegandy
- github: davegandy
- github:
- url: https://github.com/FortAwesome/Font-Awesome
- project: Font-Awesome
- org: FortAwesome
- license:
- font:
- version: SIL OFL 1.1
- url: http://scripts.sil.org/OFL
- code:
- version: MIT License
- url: http://opensource.org/licenses/mit-license.html
- documentation:
- version: CC BY 3.0
- url: http://creativecommons.org/licenses/by/3.0/
-
-bootstrap:
- version: 3.3.5
- url: http://getbootstrap.com
-
-jquery:
- version: 1.11.3
-
-jquery_validate:
- version: 1.13.1
diff --git a/library/font_awesome/bower.json b/library/font_awesome/bower.json
deleted file mode 100644
index 9e2112659..000000000
--- a/library/font_awesome/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "font-awesome",
- "description": "Font Awesome",
- "keywords": [],
- "homepage": "http://fontawesome.io",
- "dependencies": {},
- "devDependencies": {},
- "license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
- "main": [
- "less/font-awesome.less",
- "scss/font-awesome.scss"
- ],
- "ignore": [
- "*/.*",
- "*.json",
- "src",
- "*.yml",
- "Gemfile",
- "Gemfile.lock",
- "*.md"
- ]
-}
diff --git a/library/font_awesome/component.json b/library/font_awesome/component.json
deleted file mode 100644
index 0b0fb0a4d..000000000
--- a/library/font_awesome/component.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "font-awesome",
- "repo": "FortAwesome/Font-Awesome",
- "description": "Font Awesome",
- "version": "4.7.0",
- "keywords": [],
- "dependencies": {},
- "development": {},
- "license": "SIL, MIT, CC BY 3.0",
- "styles": [
- "css/font-awesome.css"
- ],
- "fonts": [
- "fonts/fontawesome-webfont.eot",
- "fonts/fontawesome-webfont.svg",
- "fonts/fontawesome-webfont.ttf",
- "fonts/fontawesome-webfont.woff",
- "fonts/fontawesome-webfont.woff2",
- "fonts/FontAwesome.otf"
- ]
-}
diff --git a/library/font_awesome/composer.json b/library/font_awesome/composer.json
deleted file mode 100644
index c9f41120e..000000000
--- a/library/font_awesome/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "fortawesome/font-awesome",
- "description": "The iconic font and CSS framework",
- "keywords": ["font", "awesome", "fontawesome", "icon", "font", "bootstrap"],
- "homepage": "http://fontawesome.io/",
- "authors": [
- {
- "name": "Dave Gandy",
- "email": "dave@fontawesome.io",
- "role": "Developer",
- "homepage": "http://twitter.com/davegandy"
- }
- ],
- "extra": {
- "branch-alias": {
- "dev-master": "4.6.x-dev"
- }
- },
- "license": [
- "OFL-1.1",
- "MIT"
- ],
- "require-dev": {
- "jekyll": "1.0.2",
- "lessc": "1.4.2"
- }
-}
diff --git a/library/font_awesome/css/font-awesome.css b/library/font_awesome/css/font-awesome.css
deleted file mode 100644
index ee906a819..000000000
--- a/library/font_awesome/css/font-awesome.css
+++ /dev/null
@@ -1,2337 +0,0 @@
-/*!
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-/* FONT PATH
- * -------------------------- */
-@font-face {
- font-family: 'FontAwesome';
- src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
- src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-.fa {
- display: inline-block;
- font: normal normal normal 14px/1 FontAwesome;
- font-size: inherit;
- text-rendering: auto;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-/* makes the font 33% larger relative to the icon container */
-.fa-lg {
- font-size: 1.33333333em;
- line-height: 0.75em;
- vertical-align: -15%;
-}
-.fa-2x {
- font-size: 2em;
-}
-.fa-3x {
- font-size: 3em;
-}
-.fa-4x {
- font-size: 4em;
-}
-.fa-5x {
- font-size: 5em;
-}
-.fa-fw {
- width: 1.28571429em;
- text-align: center;
-}
-.fa-ul {
- padding-left: 0;
- margin-left: 2.14285714em;
- list-style-type: none;
-}
-.fa-ul > li {
- position: relative;
-}
-.fa-li {
- position: absolute;
- left: -2.14285714em;
- width: 2.14285714em;
- top: 0.14285714em;
- text-align: center;
-}
-.fa-li.fa-lg {
- left: -1.85714286em;
-}
-.fa-border {
- padding: .2em .25em .15em;
- border: solid 0.08em #eeeeee;
- border-radius: .1em;
-}
-.fa-pull-left {
- float: left;
-}
-.fa-pull-right {
- float: right;
-}
-.fa.fa-pull-left {
- margin-right: .3em;
-}
-.fa.fa-pull-right {
- margin-left: .3em;
-}
-/* Deprecated as of 4.4.0 */
-.pull-right {
- float: right;
-}
-.pull-left {
- float: left;
-}
-.fa.pull-left {
- margin-right: .3em;
-}
-.fa.pull-right {
- margin-left: .3em;
-}
-.fa-spin {
- -webkit-animation: fa-spin 2s infinite linear;
- animation: fa-spin 2s infinite linear;
-}
-.fa-pulse {
- -webkit-animation: fa-spin 1s infinite steps(8);
- animation: fa-spin 1s infinite steps(8);
-}
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-.fa-rotate-90 {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
- -webkit-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-.fa-rotate-180 {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
- -webkit-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-.fa-rotate-270 {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
- -webkit-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-.fa-flip-horizontal {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
- -webkit-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-.fa-flip-vertical {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
- -webkit-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-:root .fa-rotate-90,
-:root .fa-rotate-180,
-:root .fa-rotate-270,
-:root .fa-flip-horizontal,
-:root .fa-flip-vertical {
- filter: none;
-}
-.fa-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.fa-stack-1x,
-.fa-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.fa-stack-1x {
- line-height: inherit;
-}
-.fa-stack-2x {
- font-size: 2em;
-}
-.fa-inverse {
- color: #ffffff;
-}
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-.fa-glass:before {
- content: "\f000";
-}
-.fa-music:before {
- content: "\f001";
-}
-.fa-search:before {
- content: "\f002";
-}
-.fa-envelope-o:before {
- content: "\f003";
-}
-.fa-heart:before {
- content: "\f004";
-}
-.fa-star:before {
- content: "\f005";
-}
-.fa-star-o:before {
- content: "\f006";
-}
-.fa-user:before {
- content: "\f007";
-}
-.fa-film:before {
- content: "\f008";
-}
-.fa-th-large:before {
- content: "\f009";
-}
-.fa-th:before {
- content: "\f00a";
-}
-.fa-th-list:before {
- content: "\f00b";
-}
-.fa-check:before {
- content: "\f00c";
-}
-.fa-remove:before,
-.fa-close:before,
-.fa-times:before {
- content: "\f00d";
-}
-.fa-search-plus:before {
- content: "\f00e";
-}
-.fa-search-minus:before {
- content: "\f010";
-}
-.fa-power-off:before {
- content: "\f011";
-}
-.fa-signal:before {
- content: "\f012";
-}
-.fa-gear:before,
-.fa-cog:before {
- content: "\f013";
-}
-.fa-trash-o:before {
- content: "\f014";
-}
-.fa-home:before {
- content: "\f015";
-}
-.fa-file-o:before {
- content: "\f016";
-}
-.fa-clock-o:before {
- content: "\f017";
-}
-.fa-road:before {
- content: "\f018";
-}
-.fa-download:before {
- content: "\f019";
-}
-.fa-arrow-circle-o-down:before {
- content: "\f01a";
-}
-.fa-arrow-circle-o-up:before {
- content: "\f01b";
-}
-.fa-inbox:before {
- content: "\f01c";
-}
-.fa-play-circle-o:before {
- content: "\f01d";
-}
-.fa-rotate-right:before,
-.fa-repeat:before {
- content: "\f01e";
-}
-.fa-refresh:before {
- content: "\f021";
-}
-.fa-list-alt:before {
- content: "\f022";
-}
-.fa-lock:before {
- content: "\f023";
-}
-.fa-flag:before {
- content: "\f024";
-}
-.fa-headphones:before {
- content: "\f025";
-}
-.fa-volume-off:before {
- content: "\f026";
-}
-.fa-volume-down:before {
- content: "\f027";
-}
-.fa-volume-up:before {
- content: "\f028";
-}
-.fa-qrcode:before {
- content: "\f029";
-}
-.fa-barcode:before {
- content: "\f02a";
-}
-.fa-tag:before {
- content: "\f02b";
-}
-.fa-tags:before {
- content: "\f02c";
-}
-.fa-book:before {
- content: "\f02d";
-}
-.fa-bookmark:before {
- content: "\f02e";
-}
-.fa-print:before {
- content: "\f02f";
-}
-.fa-camera:before {
- content: "\f030";
-}
-.fa-font:before {
- content: "\f031";
-}
-.fa-bold:before {
- content: "\f032";
-}
-.fa-italic:before {
- content: "\f033";
-}
-.fa-text-height:before {
- content: "\f034";
-}
-.fa-text-width:before {
- content: "\f035";
-}
-.fa-align-left:before {
- content: "\f036";
-}
-.fa-align-center:before {
- content: "\f037";
-}
-.fa-align-right:before {
- content: "\f038";
-}
-.fa-align-justify:before {
- content: "\f039";
-}
-.fa-list:before {
- content: "\f03a";
-}
-.fa-dedent:before,
-.fa-outdent:before {
- content: "\f03b";
-}
-.fa-indent:before {
- content: "\f03c";
-}
-.fa-video-camera:before {
- content: "\f03d";
-}
-.fa-photo:before,
-.fa-image:before,
-.fa-picture-o:before {
- content: "\f03e";
-}
-.fa-pencil:before {
- content: "\f040";
-}
-.fa-map-marker:before {
- content: "\f041";
-}
-.fa-adjust:before {
- content: "\f042";
-}
-.fa-tint:before {
- content: "\f043";
-}
-.fa-edit:before,
-.fa-pencil-square-o:before {
- content: "\f044";
-}
-.fa-share-square-o:before {
- content: "\f045";
-}
-.fa-check-square-o:before {
- content: "\f046";
-}
-.fa-arrows:before {
- content: "\f047";
-}
-.fa-step-backward:before {
- content: "\f048";
-}
-.fa-fast-backward:before {
- content: "\f049";
-}
-.fa-backward:before {
- content: "\f04a";
-}
-.fa-play:before {
- content: "\f04b";
-}
-.fa-pause:before {
- content: "\f04c";
-}
-.fa-stop:before {
- content: "\f04d";
-}
-.fa-forward:before {
- content: "\f04e";
-}
-.fa-fast-forward:before {
- content: "\f050";
-}
-.fa-step-forward:before {
- content: "\f051";
-}
-.fa-eject:before {
- content: "\f052";
-}
-.fa-chevron-left:before {
- content: "\f053";
-}
-.fa-chevron-right:before {
- content: "\f054";
-}
-.fa-plus-circle:before {
- content: "\f055";
-}
-.fa-minus-circle:before {
- content: "\f056";
-}
-.fa-times-circle:before {
- content: "\f057";
-}
-.fa-check-circle:before {
- content: "\f058";
-}
-.fa-question-circle:before {
- content: "\f059";
-}
-.fa-info-circle:before {
- content: "\f05a";
-}
-.fa-crosshairs:before {
- content: "\f05b";
-}
-.fa-times-circle-o:before {
- content: "\f05c";
-}
-.fa-check-circle-o:before {
- content: "\f05d";
-}
-.fa-ban:before {
- content: "\f05e";
-}
-.fa-arrow-left:before {
- content: "\f060";
-}
-.fa-arrow-right:before {
- content: "\f061";
-}
-.fa-arrow-up:before {
- content: "\f062";
-}
-.fa-arrow-down:before {
- content: "\f063";
-}
-.fa-mail-forward:before,
-.fa-share:before {
- content: "\f064";
-}
-.fa-expand:before {
- content: "\f065";
-}
-.fa-compress:before {
- content: "\f066";
-}
-.fa-plus:before {
- content: "\f067";
-}
-.fa-minus:before {
- content: "\f068";
-}
-.fa-asterisk:before {
- content: "\f069";
-}
-.fa-exclamation-circle:before {
- content: "\f06a";
-}
-.fa-gift:before {
- content: "\f06b";
-}
-.fa-leaf:before {
- content: "\f06c";
-}
-.fa-fire:before {
- content: "\f06d";
-}
-.fa-eye:before {
- content: "\f06e";
-}
-.fa-eye-slash:before {
- content: "\f070";
-}
-.fa-warning:before,
-.fa-exclamation-triangle:before {
- content: "\f071";
-}
-.fa-plane:before {
- content: "\f072";
-}
-.fa-calendar:before {
- content: "\f073";
-}
-.fa-random:before {
- content: "\f074";
-}
-.fa-comment:before {
- content: "\f075";
-}
-.fa-magnet:before {
- content: "\f076";
-}
-.fa-chevron-up:before {
- content: "\f077";
-}
-.fa-chevron-down:before {
- content: "\f078";
-}
-.fa-retweet:before {
- content: "\f079";
-}
-.fa-shopping-cart:before {
- content: "\f07a";
-}
-.fa-folder:before {
- content: "\f07b";
-}
-.fa-folder-open:before {
- content: "\f07c";
-}
-.fa-arrows-v:before {
- content: "\f07d";
-}
-.fa-arrows-h:before {
- content: "\f07e";
-}
-.fa-bar-chart-o:before,
-.fa-bar-chart:before {
- content: "\f080";
-}
-.fa-twitter-square:before {
- content: "\f081";
-}
-.fa-facebook-square:before {
- content: "\f082";
-}
-.fa-camera-retro:before {
- content: "\f083";
-}
-.fa-key:before {
- content: "\f084";
-}
-.fa-gears:before,
-.fa-cogs:before {
- content: "\f085";
-}
-.fa-comments:before {
- content: "\f086";
-}
-.fa-thumbs-o-up:before {
- content: "\f087";
-}
-.fa-thumbs-o-down:before {
- content: "\f088";
-}
-.fa-star-half:before {
- content: "\f089";
-}
-.fa-heart-o:before {
- content: "\f08a";
-}
-.fa-sign-out:before {
- content: "\f08b";
-}
-.fa-linkedin-square:before {
- content: "\f08c";
-}
-.fa-thumb-tack:before {
- content: "\f08d";
-}
-.fa-external-link:before {
- content: "\f08e";
-}
-.fa-sign-in:before {
- content: "\f090";
-}
-.fa-trophy:before {
- content: "\f091";
-}
-.fa-github-square:before {
- content: "\f092";
-}
-.fa-upload:before {
- content: "\f093";
-}
-.fa-lemon-o:before {
- content: "\f094";
-}
-.fa-phone:before {
- content: "\f095";
-}
-.fa-square-o:before {
- content: "\f096";
-}
-.fa-bookmark-o:before {
- content: "\f097";
-}
-.fa-phone-square:before {
- content: "\f098";
-}
-.fa-twitter:before {
- content: "\f099";
-}
-.fa-facebook-f:before,
-.fa-facebook:before {
- content: "\f09a";
-}
-.fa-github:before {
- content: "\f09b";
-}
-.fa-unlock:before {
- content: "\f09c";
-}
-.fa-credit-card:before {
- content: "\f09d";
-}
-.fa-feed:before,
-.fa-rss:before {
- content: "\f09e";
-}
-.fa-hdd-o:before {
- content: "\f0a0";
-}
-.fa-bullhorn:before {
- content: "\f0a1";
-}
-.fa-bell:before {
- content: "\f0f3";
-}
-.fa-certificate:before {
- content: "\f0a3";
-}
-.fa-hand-o-right:before {
- content: "\f0a4";
-}
-.fa-hand-o-left:before {
- content: "\f0a5";
-}
-.fa-hand-o-up:before {
- content: "\f0a6";
-}
-.fa-hand-o-down:before {
- content: "\f0a7";
-}
-.fa-arrow-circle-left:before {
- content: "\f0a8";
-}
-.fa-arrow-circle-right:before {
- content: "\f0a9";
-}
-.fa-arrow-circle-up:before {
- content: "\f0aa";
-}
-.fa-arrow-circle-down:before {
- content: "\f0ab";
-}
-.fa-globe:before {
- content: "\f0ac";
-}
-.fa-wrench:before {
- content: "\f0ad";
-}
-.fa-tasks:before {
- content: "\f0ae";
-}
-.fa-filter:before {
- content: "\f0b0";
-}
-.fa-briefcase:before {
- content: "\f0b1";
-}
-.fa-arrows-alt:before {
- content: "\f0b2";
-}
-.fa-group:before,
-.fa-users:before {
- content: "\f0c0";
-}
-.fa-chain:before,
-.fa-link:before {
- content: "\f0c1";
-}
-.fa-cloud:before {
- content: "\f0c2";
-}
-.fa-flask:before {
- content: "\f0c3";
-}
-.fa-cut:before,
-.fa-scissors:before {
- content: "\f0c4";
-}
-.fa-copy:before,
-.fa-files-o:before {
- content: "\f0c5";
-}
-.fa-paperclip:before {
- content: "\f0c6";
-}
-.fa-save:before,
-.fa-floppy-o:before {
- content: "\f0c7";
-}
-.fa-square:before {
- content: "\f0c8";
-}
-.fa-navicon:before,
-.fa-reorder:before,
-.fa-bars:before {
- content: "\f0c9";
-}
-.fa-list-ul:before {
- content: "\f0ca";
-}
-.fa-list-ol:before {
- content: "\f0cb";
-}
-.fa-strikethrough:before {
- content: "\f0cc";
-}
-.fa-underline:before {
- content: "\f0cd";
-}
-.fa-table:before {
- content: "\f0ce";
-}
-.fa-magic:before {
- content: "\f0d0";
-}
-.fa-truck:before {
- content: "\f0d1";
-}
-.fa-pinterest:before {
- content: "\f0d2";
-}
-.fa-pinterest-square:before {
- content: "\f0d3";
-}
-.fa-google-plus-square:before {
- content: "\f0d4";
-}
-.fa-google-plus:before {
- content: "\f0d5";
-}
-.fa-money:before {
- content: "\f0d6";
-}
-.fa-caret-down:before {
- content: "\f0d7";
-}
-.fa-caret-up:before {
- content: "\f0d8";
-}
-.fa-caret-left:before {
- content: "\f0d9";
-}
-.fa-caret-right:before {
- content: "\f0da";
-}
-.fa-columns:before {
- content: "\f0db";
-}
-.fa-unsorted:before,
-.fa-sort:before {
- content: "\f0dc";
-}
-.fa-sort-down:before,
-.fa-sort-desc:before {
- content: "\f0dd";
-}
-.fa-sort-up:before,
-.fa-sort-asc:before {
- content: "\f0de";
-}
-.fa-envelope:before {
- content: "\f0e0";
-}
-.fa-linkedin:before {
- content: "\f0e1";
-}
-.fa-rotate-left:before,
-.fa-undo:before {
- content: "\f0e2";
-}
-.fa-legal:before,
-.fa-gavel:before {
- content: "\f0e3";
-}
-.fa-dashboard:before,
-.fa-tachometer:before {
- content: "\f0e4";
-}
-.fa-comment-o:before {
- content: "\f0e5";
-}
-.fa-comments-o:before {
- content: "\f0e6";
-}
-.fa-flash:before,
-.fa-bolt:before {
- content: "\f0e7";
-}
-.fa-sitemap:before {
- content: "\f0e8";
-}
-.fa-umbrella:before {
- content: "\f0e9";
-}
-.fa-paste:before,
-.fa-clipboard:before {
- content: "\f0ea";
-}
-.fa-lightbulb-o:before {
- content: "\f0eb";
-}
-.fa-exchange:before {
- content: "\f0ec";
-}
-.fa-cloud-download:before {
- content: "\f0ed";
-}
-.fa-cloud-upload:before {
- content: "\f0ee";
-}
-.fa-user-md:before {
- content: "\f0f0";
-}
-.fa-stethoscope:before {
- content: "\f0f1";
-}
-.fa-suitcase:before {
- content: "\f0f2";
-}
-.fa-bell-o:before {
- content: "\f0a2";
-}
-.fa-coffee:before {
- content: "\f0f4";
-}
-.fa-cutlery:before {
- content: "\f0f5";
-}
-.fa-file-text-o:before {
- content: "\f0f6";
-}
-.fa-building-o:before {
- content: "\f0f7";
-}
-.fa-hospital-o:before {
- content: "\f0f8";
-}
-.fa-ambulance:before {
- content: "\f0f9";
-}
-.fa-medkit:before {
- content: "\f0fa";
-}
-.fa-fighter-jet:before {
- content: "\f0fb";
-}
-.fa-beer:before {
- content: "\f0fc";
-}
-.fa-h-square:before {
- content: "\f0fd";
-}
-.fa-plus-square:before {
- content: "\f0fe";
-}
-.fa-angle-double-left:before {
- content: "\f100";
-}
-.fa-angle-double-right:before {
- content: "\f101";
-}
-.fa-angle-double-up:before {
- content: "\f102";
-}
-.fa-angle-double-down:before {
- content: "\f103";
-}
-.fa-angle-left:before {
- content: "\f104";
-}
-.fa-angle-right:before {
- content: "\f105";
-}
-.fa-angle-up:before {
- content: "\f106";
-}
-.fa-angle-down:before {
- content: "\f107";
-}
-.fa-desktop:before {
- content: "\f108";
-}
-.fa-laptop:before {
- content: "\f109";
-}
-.fa-tablet:before {
- content: "\f10a";
-}
-.fa-mobile-phone:before,
-.fa-mobile:before {
- content: "\f10b";
-}
-.fa-circle-o:before {
- content: "\f10c";
-}
-.fa-quote-left:before {
- content: "\f10d";
-}
-.fa-quote-right:before {
- content: "\f10e";
-}
-.fa-spinner:before {
- content: "\f110";
-}
-.fa-circle:before {
- content: "\f111";
-}
-.fa-mail-reply:before,
-.fa-reply:before {
- content: "\f112";
-}
-.fa-github-alt:before {
- content: "\f113";
-}
-.fa-folder-o:before {
- content: "\f114";
-}
-.fa-folder-open-o:before {
- content: "\f115";
-}
-.fa-smile-o:before {
- content: "\f118";
-}
-.fa-frown-o:before {
- content: "\f119";
-}
-.fa-meh-o:before {
- content: "\f11a";
-}
-.fa-gamepad:before {
- content: "\f11b";
-}
-.fa-keyboard-o:before {
- content: "\f11c";
-}
-.fa-flag-o:before {
- content: "\f11d";
-}
-.fa-flag-checkered:before {
- content: "\f11e";
-}
-.fa-terminal:before {
- content: "\f120";
-}
-.fa-code:before {
- content: "\f121";
-}
-.fa-mail-reply-all:before,
-.fa-reply-all:before {
- content: "\f122";
-}
-.fa-star-half-empty:before,
-.fa-star-half-full:before,
-.fa-star-half-o:before {
- content: "\f123";
-}
-.fa-location-arrow:before {
- content: "\f124";
-}
-.fa-crop:before {
- content: "\f125";
-}
-.fa-code-fork:before {
- content: "\f126";
-}
-.fa-unlink:before,
-.fa-chain-broken:before {
- content: "\f127";
-}
-.fa-question:before {
- content: "\f128";
-}
-.fa-info:before {
- content: "\f129";
-}
-.fa-exclamation:before {
- content: "\f12a";
-}
-.fa-superscript:before {
- content: "\f12b";
-}
-.fa-subscript:before {
- content: "\f12c";
-}
-.fa-eraser:before {
- content: "\f12d";
-}
-.fa-puzzle-piece:before {
- content: "\f12e";
-}
-.fa-microphone:before {
- content: "\f130";
-}
-.fa-microphone-slash:before {
- content: "\f131";
-}
-.fa-shield:before {
- content: "\f132";
-}
-.fa-calendar-o:before {
- content: "\f133";
-}
-.fa-fire-extinguisher:before {
- content: "\f134";
-}
-.fa-rocket:before {
- content: "\f135";
-}
-.fa-maxcdn:before {
- content: "\f136";
-}
-.fa-chevron-circle-left:before {
- content: "\f137";
-}
-.fa-chevron-circle-right:before {
- content: "\f138";
-}
-.fa-chevron-circle-up:before {
- content: "\f139";
-}
-.fa-chevron-circle-down:before {
- content: "\f13a";
-}
-.fa-html5:before {
- content: "\f13b";
-}
-.fa-css3:before {
- content: "\f13c";
-}
-.fa-anchor:before {
- content: "\f13d";
-}
-.fa-unlock-alt:before {
- content: "\f13e";
-}
-.fa-bullseye:before {
- content: "\f140";
-}
-.fa-ellipsis-h:before {
- content: "\f141";
-}
-.fa-ellipsis-v:before {
- content: "\f142";
-}
-.fa-rss-square:before {
- content: "\f143";
-}
-.fa-play-circle:before {
- content: "\f144";
-}
-.fa-ticket:before {
- content: "\f145";
-}
-.fa-minus-square:before {
- content: "\f146";
-}
-.fa-minus-square-o:before {
- content: "\f147";
-}
-.fa-level-up:before {
- content: "\f148";
-}
-.fa-level-down:before {
- content: "\f149";
-}
-.fa-check-square:before {
- content: "\f14a";
-}
-.fa-pencil-square:before {
- content: "\f14b";
-}
-.fa-external-link-square:before {
- content: "\f14c";
-}
-.fa-share-square:before {
- content: "\f14d";
-}
-.fa-compass:before {
- content: "\f14e";
-}
-.fa-toggle-down:before,
-.fa-caret-square-o-down:before {
- content: "\f150";
-}
-.fa-toggle-up:before,
-.fa-caret-square-o-up:before {
- content: "\f151";
-}
-.fa-toggle-right:before,
-.fa-caret-square-o-right:before {
- content: "\f152";
-}
-.fa-euro:before,
-.fa-eur:before {
- content: "\f153";
-}
-.fa-gbp:before {
- content: "\f154";
-}
-.fa-dollar:before,
-.fa-usd:before {
- content: "\f155";
-}
-.fa-rupee:before,
-.fa-inr:before {
- content: "\f156";
-}
-.fa-cny:before,
-.fa-rmb:before,
-.fa-yen:before,
-.fa-jpy:before {
- content: "\f157";
-}
-.fa-ruble:before,
-.fa-rouble:before,
-.fa-rub:before {
- content: "\f158";
-}
-.fa-won:before,
-.fa-krw:before {
- content: "\f159";
-}
-.fa-bitcoin:before,
-.fa-btc:before {
- content: "\f15a";
-}
-.fa-file:before {
- content: "\f15b";
-}
-.fa-file-text:before {
- content: "\f15c";
-}
-.fa-sort-alpha-asc:before {
- content: "\f15d";
-}
-.fa-sort-alpha-desc:before {
- content: "\f15e";
-}
-.fa-sort-amount-asc:before {
- content: "\f160";
-}
-.fa-sort-amount-desc:before {
- content: "\f161";
-}
-.fa-sort-numeric-asc:before {
- content: "\f162";
-}
-.fa-sort-numeric-desc:before {
- content: "\f163";
-}
-.fa-thumbs-up:before {
- content: "\f164";
-}
-.fa-thumbs-down:before {
- content: "\f165";
-}
-.fa-youtube-square:before {
- content: "\f166";
-}
-.fa-youtube:before {
- content: "\f167";
-}
-.fa-xing:before {
- content: "\f168";
-}
-.fa-xing-square:before {
- content: "\f169";
-}
-.fa-youtube-play:before {
- content: "\f16a";
-}
-.fa-dropbox:before {
- content: "\f16b";
-}
-.fa-stack-overflow:before {
- content: "\f16c";
-}
-.fa-instagram:before {
- content: "\f16d";
-}
-.fa-flickr:before {
- content: "\f16e";
-}
-.fa-adn:before {
- content: "\f170";
-}
-.fa-bitbucket:before {
- content: "\f171";
-}
-.fa-bitbucket-square:before {
- content: "\f172";
-}
-.fa-tumblr:before {
- content: "\f173";
-}
-.fa-tumblr-square:before {
- content: "\f174";
-}
-.fa-long-arrow-down:before {
- content: "\f175";
-}
-.fa-long-arrow-up:before {
- content: "\f176";
-}
-.fa-long-arrow-left:before {
- content: "\f177";
-}
-.fa-long-arrow-right:before {
- content: "\f178";
-}
-.fa-apple:before {
- content: "\f179";
-}
-.fa-windows:before {
- content: "\f17a";
-}
-.fa-android:before {
- content: "\f17b";
-}
-.fa-linux:before {
- content: "\f17c";
-}
-.fa-dribbble:before {
- content: "\f17d";
-}
-.fa-skype:before {
- content: "\f17e";
-}
-.fa-foursquare:before {
- content: "\f180";
-}
-.fa-trello:before {
- content: "\f181";
-}
-.fa-female:before {
- content: "\f182";
-}
-.fa-male:before {
- content: "\f183";
-}
-.fa-gittip:before,
-.fa-gratipay:before {
- content: "\f184";
-}
-.fa-sun-o:before {
- content: "\f185";
-}
-.fa-moon-o:before {
- content: "\f186";
-}
-.fa-archive:before {
- content: "\f187";
-}
-.fa-bug:before {
- content: "\f188";
-}
-.fa-vk:before {
- content: "\f189";
-}
-.fa-weibo:before {
- content: "\f18a";
-}
-.fa-renren:before {
- content: "\f18b";
-}
-.fa-pagelines:before {
- content: "\f18c";
-}
-.fa-stack-exchange:before {
- content: "\f18d";
-}
-.fa-arrow-circle-o-right:before {
- content: "\f18e";
-}
-.fa-arrow-circle-o-left:before {
- content: "\f190";
-}
-.fa-toggle-left:before,
-.fa-caret-square-o-left:before {
- content: "\f191";
-}
-.fa-dot-circle-o:before {
- content: "\f192";
-}
-.fa-wheelchair:before {
- content: "\f193";
-}
-.fa-vimeo-square:before {
- content: "\f194";
-}
-.fa-turkish-lira:before,
-.fa-try:before {
- content: "\f195";
-}
-.fa-plus-square-o:before {
- content: "\f196";
-}
-.fa-space-shuttle:before {
- content: "\f197";
-}
-.fa-slack:before {
- content: "\f198";
-}
-.fa-envelope-square:before {
- content: "\f199";
-}
-.fa-wordpress:before {
- content: "\f19a";
-}
-.fa-openid:before {
- content: "\f19b";
-}
-.fa-institution:before,
-.fa-bank:before,
-.fa-university:before {
- content: "\f19c";
-}
-.fa-mortar-board:before,
-.fa-graduation-cap:before {
- content: "\f19d";
-}
-.fa-yahoo:before {
- content: "\f19e";
-}
-.fa-google:before {
- content: "\f1a0";
-}
-.fa-reddit:before {
- content: "\f1a1";
-}
-.fa-reddit-square:before {
- content: "\f1a2";
-}
-.fa-stumbleupon-circle:before {
- content: "\f1a3";
-}
-.fa-stumbleupon:before {
- content: "\f1a4";
-}
-.fa-delicious:before {
- content: "\f1a5";
-}
-.fa-digg:before {
- content: "\f1a6";
-}
-.fa-pied-piper-pp:before {
- content: "\f1a7";
-}
-.fa-pied-piper-alt:before {
- content: "\f1a8";
-}
-.fa-drupal:before {
- content: "\f1a9";
-}
-.fa-joomla:before {
- content: "\f1aa";
-}
-.fa-language:before {
- content: "\f1ab";
-}
-.fa-fax:before {
- content: "\f1ac";
-}
-.fa-building:before {
- content: "\f1ad";
-}
-.fa-child:before {
- content: "\f1ae";
-}
-.fa-paw:before {
- content: "\f1b0";
-}
-.fa-spoon:before {
- content: "\f1b1";
-}
-.fa-cube:before {
- content: "\f1b2";
-}
-.fa-cubes:before {
- content: "\f1b3";
-}
-.fa-behance:before {
- content: "\f1b4";
-}
-.fa-behance-square:before {
- content: "\f1b5";
-}
-.fa-steam:before {
- content: "\f1b6";
-}
-.fa-steam-square:before {
- content: "\f1b7";
-}
-.fa-recycle:before {
- content: "\f1b8";
-}
-.fa-automobile:before,
-.fa-car:before {
- content: "\f1b9";
-}
-.fa-cab:before,
-.fa-taxi:before {
- content: "\f1ba";
-}
-.fa-tree:before {
- content: "\f1bb";
-}
-.fa-spotify:before {
- content: "\f1bc";
-}
-.fa-deviantart:before {
- content: "\f1bd";
-}
-.fa-soundcloud:before {
- content: "\f1be";
-}
-.fa-database:before {
- content: "\f1c0";
-}
-.fa-file-pdf-o:before {
- content: "\f1c1";
-}
-.fa-file-word-o:before {
- content: "\f1c2";
-}
-.fa-file-excel-o:before {
- content: "\f1c3";
-}
-.fa-file-powerpoint-o:before {
- content: "\f1c4";
-}
-.fa-file-photo-o:before,
-.fa-file-picture-o:before,
-.fa-file-image-o:before {
- content: "\f1c5";
-}
-.fa-file-zip-o:before,
-.fa-file-archive-o:before {
- content: "\f1c6";
-}
-.fa-file-sound-o:before,
-.fa-file-audio-o:before {
- content: "\f1c7";
-}
-.fa-file-movie-o:before,
-.fa-file-video-o:before {
- content: "\f1c8";
-}
-.fa-file-code-o:before {
- content: "\f1c9";
-}
-.fa-vine:before {
- content: "\f1ca";
-}
-.fa-codepen:before {
- content: "\f1cb";
-}
-.fa-jsfiddle:before {
- content: "\f1cc";
-}
-.fa-life-bouy:before,
-.fa-life-buoy:before,
-.fa-life-saver:before,
-.fa-support:before,
-.fa-life-ring:before {
- content: "\f1cd";
-}
-.fa-circle-o-notch:before {
- content: "\f1ce";
-}
-.fa-ra:before,
-.fa-resistance:before,
-.fa-rebel:before {
- content: "\f1d0";
-}
-.fa-ge:before,
-.fa-empire:before {
- content: "\f1d1";
-}
-.fa-git-square:before {
- content: "\f1d2";
-}
-.fa-git:before {
- content: "\f1d3";
-}
-.fa-y-combinator-square:before,
-.fa-yc-square:before,
-.fa-hacker-news:before {
- content: "\f1d4";
-}
-.fa-tencent-weibo:before {
- content: "\f1d5";
-}
-.fa-qq:before {
- content: "\f1d6";
-}
-.fa-wechat:before,
-.fa-weixin:before {
- content: "\f1d7";
-}
-.fa-send:before,
-.fa-paper-plane:before {
- content: "\f1d8";
-}
-.fa-send-o:before,
-.fa-paper-plane-o:before {
- content: "\f1d9";
-}
-.fa-history:before {
- content: "\f1da";
-}
-.fa-circle-thin:before {
- content: "\f1db";
-}
-.fa-header:before {
- content: "\f1dc";
-}
-.fa-paragraph:before {
- content: "\f1dd";
-}
-.fa-sliders:before {
- content: "\f1de";
-}
-.fa-share-alt:before {
- content: "\f1e0";
-}
-.fa-share-alt-square:before {
- content: "\f1e1";
-}
-.fa-bomb:before {
- content: "\f1e2";
-}
-.fa-soccer-ball-o:before,
-.fa-futbol-o:before {
- content: "\f1e3";
-}
-.fa-tty:before {
- content: "\f1e4";
-}
-.fa-binoculars:before {
- content: "\f1e5";
-}
-.fa-plug:before {
- content: "\f1e6";
-}
-.fa-slideshare:before {
- content: "\f1e7";
-}
-.fa-twitch:before {
- content: "\f1e8";
-}
-.fa-yelp:before {
- content: "\f1e9";
-}
-.fa-newspaper-o:before {
- content: "\f1ea";
-}
-.fa-wifi:before {
- content: "\f1eb";
-}
-.fa-calculator:before {
- content: "\f1ec";
-}
-.fa-paypal:before {
- content: "\f1ed";
-}
-.fa-google-wallet:before {
- content: "\f1ee";
-}
-.fa-cc-visa:before {
- content: "\f1f0";
-}
-.fa-cc-mastercard:before {
- content: "\f1f1";
-}
-.fa-cc-discover:before {
- content: "\f1f2";
-}
-.fa-cc-amex:before {
- content: "\f1f3";
-}
-.fa-cc-paypal:before {
- content: "\f1f4";
-}
-.fa-cc-stripe:before {
- content: "\f1f5";
-}
-.fa-bell-slash:before {
- content: "\f1f6";
-}
-.fa-bell-slash-o:before {
- content: "\f1f7";
-}
-.fa-trash:before {
- content: "\f1f8";
-}
-.fa-copyright:before {
- content: "\f1f9";
-}
-.fa-at:before {
- content: "\f1fa";
-}
-.fa-eyedropper:before {
- content: "\f1fb";
-}
-.fa-paint-brush:before {
- content: "\f1fc";
-}
-.fa-birthday-cake:before {
- content: "\f1fd";
-}
-.fa-area-chart:before {
- content: "\f1fe";
-}
-.fa-pie-chart:before {
- content: "\f200";
-}
-.fa-line-chart:before {
- content: "\f201";
-}
-.fa-lastfm:before {
- content: "\f202";
-}
-.fa-lastfm-square:before {
- content: "\f203";
-}
-.fa-toggle-off:before {
- content: "\f204";
-}
-.fa-toggle-on:before {
- content: "\f205";
-}
-.fa-bicycle:before {
- content: "\f206";
-}
-.fa-bus:before {
- content: "\f207";
-}
-.fa-ioxhost:before {
- content: "\f208";
-}
-.fa-angellist:before {
- content: "\f209";
-}
-.fa-cc:before {
- content: "\f20a";
-}
-.fa-shekel:before,
-.fa-sheqel:before,
-.fa-ils:before {
- content: "\f20b";
-}
-.fa-meanpath:before {
- content: "\f20c";
-}
-.fa-buysellads:before {
- content: "\f20d";
-}
-.fa-connectdevelop:before {
- content: "\f20e";
-}
-.fa-dashcube:before {
- content: "\f210";
-}
-.fa-forumbee:before {
- content: "\f211";
-}
-.fa-leanpub:before {
- content: "\f212";
-}
-.fa-sellsy:before {
- content: "\f213";
-}
-.fa-shirtsinbulk:before {
- content: "\f214";
-}
-.fa-simplybuilt:before {
- content: "\f215";
-}
-.fa-skyatlas:before {
- content: "\f216";
-}
-.fa-cart-plus:before {
- content: "\f217";
-}
-.fa-cart-arrow-down:before {
- content: "\f218";
-}
-.fa-diamond:before {
- content: "\f219";
-}
-.fa-ship:before {
- content: "\f21a";
-}
-.fa-user-secret:before {
- content: "\f21b";
-}
-.fa-motorcycle:before {
- content: "\f21c";
-}
-.fa-street-view:before {
- content: "\f21d";
-}
-.fa-heartbeat:before {
- content: "\f21e";
-}
-.fa-venus:before {
- content: "\f221";
-}
-.fa-mars:before {
- content: "\f222";
-}
-.fa-mercury:before {
- content: "\f223";
-}
-.fa-intersex:before,
-.fa-transgender:before {
- content: "\f224";
-}
-.fa-transgender-alt:before {
- content: "\f225";
-}
-.fa-venus-double:before {
- content: "\f226";
-}
-.fa-mars-double:before {
- content: "\f227";
-}
-.fa-venus-mars:before {
- content: "\f228";
-}
-.fa-mars-stroke:before {
- content: "\f229";
-}
-.fa-mars-stroke-v:before {
- content: "\f22a";
-}
-.fa-mars-stroke-h:before {
- content: "\f22b";
-}
-.fa-neuter:before {
- content: "\f22c";
-}
-.fa-genderless:before {
- content: "\f22d";
-}
-.fa-facebook-official:before {
- content: "\f230";
-}
-.fa-pinterest-p:before {
- content: "\f231";
-}
-.fa-whatsapp:before {
- content: "\f232";
-}
-.fa-server:before {
- content: "\f233";
-}
-.fa-user-plus:before {
- content: "\f234";
-}
-.fa-user-times:before {
- content: "\f235";
-}
-.fa-hotel:before,
-.fa-bed:before {
- content: "\f236";
-}
-.fa-viacoin:before {
- content: "\f237";
-}
-.fa-train:before {
- content: "\f238";
-}
-.fa-subway:before {
- content: "\f239";
-}
-.fa-medium:before {
- content: "\f23a";
-}
-.fa-yc:before,
-.fa-y-combinator:before {
- content: "\f23b";
-}
-.fa-optin-monster:before {
- content: "\f23c";
-}
-.fa-opencart:before {
- content: "\f23d";
-}
-.fa-expeditedssl:before {
- content: "\f23e";
-}
-.fa-battery-4:before,
-.fa-battery:before,
-.fa-battery-full:before {
- content: "\f240";
-}
-.fa-battery-3:before,
-.fa-battery-three-quarters:before {
- content: "\f241";
-}
-.fa-battery-2:before,
-.fa-battery-half:before {
- content: "\f242";
-}
-.fa-battery-1:before,
-.fa-battery-quarter:before {
- content: "\f243";
-}
-.fa-battery-0:before,
-.fa-battery-empty:before {
- content: "\f244";
-}
-.fa-mouse-pointer:before {
- content: "\f245";
-}
-.fa-i-cursor:before {
- content: "\f246";
-}
-.fa-object-group:before {
- content: "\f247";
-}
-.fa-object-ungroup:before {
- content: "\f248";
-}
-.fa-sticky-note:before {
- content: "\f249";
-}
-.fa-sticky-note-o:before {
- content: "\f24a";
-}
-.fa-cc-jcb:before {
- content: "\f24b";
-}
-.fa-cc-diners-club:before {
- content: "\f24c";
-}
-.fa-clone:before {
- content: "\f24d";
-}
-.fa-balance-scale:before {
- content: "\f24e";
-}
-.fa-hourglass-o:before {
- content: "\f250";
-}
-.fa-hourglass-1:before,
-.fa-hourglass-start:before {
- content: "\f251";
-}
-.fa-hourglass-2:before,
-.fa-hourglass-half:before {
- content: "\f252";
-}
-.fa-hourglass-3:before,
-.fa-hourglass-end:before {
- content: "\f253";
-}
-.fa-hourglass:before {
- content: "\f254";
-}
-.fa-hand-grab-o:before,
-.fa-hand-rock-o:before {
- content: "\f255";
-}
-.fa-hand-stop-o:before,
-.fa-hand-paper-o:before {
- content: "\f256";
-}
-.fa-hand-scissors-o:before {
- content: "\f257";
-}
-.fa-hand-lizard-o:before {
- content: "\f258";
-}
-.fa-hand-spock-o:before {
- content: "\f259";
-}
-.fa-hand-pointer-o:before {
- content: "\f25a";
-}
-.fa-hand-peace-o:before {
- content: "\f25b";
-}
-.fa-trademark:before {
- content: "\f25c";
-}
-.fa-registered:before {
- content: "\f25d";
-}
-.fa-creative-commons:before {
- content: "\f25e";
-}
-.fa-gg:before {
- content: "\f260";
-}
-.fa-gg-circle:before {
- content: "\f261";
-}
-.fa-tripadvisor:before {
- content: "\f262";
-}
-.fa-odnoklassniki:before {
- content: "\f263";
-}
-.fa-odnoklassniki-square:before {
- content: "\f264";
-}
-.fa-get-pocket:before {
- content: "\f265";
-}
-.fa-wikipedia-w:before {
- content: "\f266";
-}
-.fa-safari:before {
- content: "\f267";
-}
-.fa-chrome:before {
- content: "\f268";
-}
-.fa-firefox:before {
- content: "\f269";
-}
-.fa-opera:before {
- content: "\f26a";
-}
-.fa-internet-explorer:before {
- content: "\f26b";
-}
-.fa-tv:before,
-.fa-television:before {
- content: "\f26c";
-}
-.fa-contao:before {
- content: "\f26d";
-}
-.fa-500px:before {
- content: "\f26e";
-}
-.fa-amazon:before {
- content: "\f270";
-}
-.fa-calendar-plus-o:before {
- content: "\f271";
-}
-.fa-calendar-minus-o:before {
- content: "\f272";
-}
-.fa-calendar-times-o:before {
- content: "\f273";
-}
-.fa-calendar-check-o:before {
- content: "\f274";
-}
-.fa-industry:before {
- content: "\f275";
-}
-.fa-map-pin:before {
- content: "\f276";
-}
-.fa-map-signs:before {
- content: "\f277";
-}
-.fa-map-o:before {
- content: "\f278";
-}
-.fa-map:before {
- content: "\f279";
-}
-.fa-commenting:before {
- content: "\f27a";
-}
-.fa-commenting-o:before {
- content: "\f27b";
-}
-.fa-houzz:before {
- content: "\f27c";
-}
-.fa-vimeo:before {
- content: "\f27d";
-}
-.fa-black-tie:before {
- content: "\f27e";
-}
-.fa-fonticons:before {
- content: "\f280";
-}
-.fa-reddit-alien:before {
- content: "\f281";
-}
-.fa-edge:before {
- content: "\f282";
-}
-.fa-credit-card-alt:before {
- content: "\f283";
-}
-.fa-codiepie:before {
- content: "\f284";
-}
-.fa-modx:before {
- content: "\f285";
-}
-.fa-fort-awesome:before {
- content: "\f286";
-}
-.fa-usb:before {
- content: "\f287";
-}
-.fa-product-hunt:before {
- content: "\f288";
-}
-.fa-mixcloud:before {
- content: "\f289";
-}
-.fa-scribd:before {
- content: "\f28a";
-}
-.fa-pause-circle:before {
- content: "\f28b";
-}
-.fa-pause-circle-o:before {
- content: "\f28c";
-}
-.fa-stop-circle:before {
- content: "\f28d";
-}
-.fa-stop-circle-o:before {
- content: "\f28e";
-}
-.fa-shopping-bag:before {
- content: "\f290";
-}
-.fa-shopping-basket:before {
- content: "\f291";
-}
-.fa-hashtag:before {
- content: "\f292";
-}
-.fa-bluetooth:before {
- content: "\f293";
-}
-.fa-bluetooth-b:before {
- content: "\f294";
-}
-.fa-percent:before {
- content: "\f295";
-}
-.fa-gitlab:before {
- content: "\f296";
-}
-.fa-wpbeginner:before {
- content: "\f297";
-}
-.fa-wpforms:before {
- content: "\f298";
-}
-.fa-envira:before {
- content: "\f299";
-}
-.fa-universal-access:before {
- content: "\f29a";
-}
-.fa-wheelchair-alt:before {
- content: "\f29b";
-}
-.fa-question-circle-o:before {
- content: "\f29c";
-}
-.fa-blind:before {
- content: "\f29d";
-}
-.fa-audio-description:before {
- content: "\f29e";
-}
-.fa-volume-control-phone:before {
- content: "\f2a0";
-}
-.fa-braille:before {
- content: "\f2a1";
-}
-.fa-assistive-listening-systems:before {
- content: "\f2a2";
-}
-.fa-asl-interpreting:before,
-.fa-american-sign-language-interpreting:before {
- content: "\f2a3";
-}
-.fa-deafness:before,
-.fa-hard-of-hearing:before,
-.fa-deaf:before {
- content: "\f2a4";
-}
-.fa-glide:before {
- content: "\f2a5";
-}
-.fa-glide-g:before {
- content: "\f2a6";
-}
-.fa-signing:before,
-.fa-sign-language:before {
- content: "\f2a7";
-}
-.fa-low-vision:before {
- content: "\f2a8";
-}
-.fa-viadeo:before {
- content: "\f2a9";
-}
-.fa-viadeo-square:before {
- content: "\f2aa";
-}
-.fa-snapchat:before {
- content: "\f2ab";
-}
-.fa-snapchat-ghost:before {
- content: "\f2ac";
-}
-.fa-snapchat-square:before {
- content: "\f2ad";
-}
-.fa-pied-piper:before {
- content: "\f2ae";
-}
-.fa-first-order:before {
- content: "\f2b0";
-}
-.fa-yoast:before {
- content: "\f2b1";
-}
-.fa-themeisle:before {
- content: "\f2b2";
-}
-.fa-google-plus-circle:before,
-.fa-google-plus-official:before {
- content: "\f2b3";
-}
-.fa-fa:before,
-.fa-font-awesome:before {
- content: "\f2b4";
-}
-.fa-handshake-o:before {
- content: "\f2b5";
-}
-.fa-envelope-open:before {
- content: "\f2b6";
-}
-.fa-envelope-open-o:before {
- content: "\f2b7";
-}
-.fa-linode:before {
- content: "\f2b8";
-}
-.fa-address-book:before {
- content: "\f2b9";
-}
-.fa-address-book-o:before {
- content: "\f2ba";
-}
-.fa-vcard:before,
-.fa-address-card:before {
- content: "\f2bb";
-}
-.fa-vcard-o:before,
-.fa-address-card-o:before {
- content: "\f2bc";
-}
-.fa-user-circle:before {
- content: "\f2bd";
-}
-.fa-user-circle-o:before {
- content: "\f2be";
-}
-.fa-user-o:before {
- content: "\f2c0";
-}
-.fa-id-badge:before {
- content: "\f2c1";
-}
-.fa-drivers-license:before,
-.fa-id-card:before {
- content: "\f2c2";
-}
-.fa-drivers-license-o:before,
-.fa-id-card-o:before {
- content: "\f2c3";
-}
-.fa-quora:before {
- content: "\f2c4";
-}
-.fa-free-code-camp:before {
- content: "\f2c5";
-}
-.fa-telegram:before {
- content: "\f2c6";
-}
-.fa-thermometer-4:before,
-.fa-thermometer:before,
-.fa-thermometer-full:before {
- content: "\f2c7";
-}
-.fa-thermometer-3:before,
-.fa-thermometer-three-quarters:before {
- content: "\f2c8";
-}
-.fa-thermometer-2:before,
-.fa-thermometer-half:before {
- content: "\f2c9";
-}
-.fa-thermometer-1:before,
-.fa-thermometer-quarter:before {
- content: "\f2ca";
-}
-.fa-thermometer-0:before,
-.fa-thermometer-empty:before {
- content: "\f2cb";
-}
-.fa-shower:before {
- content: "\f2cc";
-}
-.fa-bathtub:before,
-.fa-s15:before,
-.fa-bath:before {
- content: "\f2cd";
-}
-.fa-podcast:before {
- content: "\f2ce";
-}
-.fa-window-maximize:before {
- content: "\f2d0";
-}
-.fa-window-minimize:before {
- content: "\f2d1";
-}
-.fa-window-restore:before {
- content: "\f2d2";
-}
-.fa-times-rectangle:before,
-.fa-window-close:before {
- content: "\f2d3";
-}
-.fa-times-rectangle-o:before,
-.fa-window-close-o:before {
- content: "\f2d4";
-}
-.fa-bandcamp:before {
- content: "\f2d5";
-}
-.fa-grav:before {
- content: "\f2d6";
-}
-.fa-etsy:before {
- content: "\f2d7";
-}
-.fa-imdb:before {
- content: "\f2d8";
-}
-.fa-ravelry:before {
- content: "\f2d9";
-}
-.fa-eercast:before {
- content: "\f2da";
-}
-.fa-microchip:before {
- content: "\f2db";
-}
-.fa-snowflake-o:before {
- content: "\f2dc";
-}
-.fa-superpowers:before {
- content: "\f2dd";
-}
-.fa-wpexplorer:before {
- content: "\f2de";
-}
-.fa-meetup:before {
- content: "\f2e0";
-}
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
-}
diff --git a/library/font_awesome/css/font-awesome.css.map b/library/font_awesome/css/font-awesome.css.map
deleted file mode 100644
index 60763a864..000000000
--- a/library/font_awesome/css/font-awesome.css.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-"version": 3,
-"mappings": ";;;;;;;AAGA,UAUC;EATC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,+CAAgE;EACrE,GAAG,EAAE,ySAAmG;EAKxG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;ACTpB,GAAmB;EACjB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,uCAAwD;EAC9D,SAAS,EAAE,OAAO;EAClB,cAAc,EAAE,IAAI;EACpB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,SAAS,EAAE,eAAe;;;ACN5B,MAAsB;EACpB,SAAS,EAAE,SAAS;EACpB,WAAW,EAAE,MAAS;EACtB,cAAc,EAAE,IAAI;;AAEtB,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;ACVtC,MAAsB;EACpB,KAAK,EAAE,SAAW;EAClB,UAAU,EAAE,MAAM;;ACDpB,MAAsB;EACpB,YAAY,EAAE,CAAC;EACf,WAAW,ECKU,SAAS;EDJ9B,eAAe,EAAE,IAAI;EACrB,WAAK;IAAE,QAAQ,EAAE,QAAQ;;AAE3B,MAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,UAAa;EACnB,KAAK,ECFgB,SAAS;EDG9B,GAAG,EAAE,SAAU;EACf,UAAU,EAAE,MAAM;EAClB,YAAuB;IACrB,IAAI,EAAE,UAA0B;;AEbpC,UAA0B;EACxB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,iBAA4B;EACpC,aAAa,EAAE,IAAI;;AAGrB,WAAY;EAAE,KAAK,EAAE,KAAK;;AAC1B,UAAW;EAAE,KAAK,EAAE,IAAI;;AAGtB,aAAY;EAAE,YAAY,EAAE,IAAI;AAChC,cAAa;EAAE,WAAW,EAAE,IAAI;;ACXlC,QAAwB;EACtB,iBAAiB,EAAE,0BAA0B;EACrC,SAAS,EAAE,0BAA0B;;AAG/C,SAAyB;EACvB,iBAAiB,EAAE,4BAA4B;EACvC,SAAS,EAAE,4BAA4B;;AAGjD,0BASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AAIrC,kBASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AC5BrC,aAA8B;ECY5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,aAAgB;EAC/B,aAAa,EAAE,aAAgB;EAC3B,SAAS,EAAE,aAAgB;;ADdrC,cAA8B;ECW5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADbrC,cAA8B;ECU5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADXrC,mBAAmC;ECejC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADjBzC,iBAAmC;ECcjC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADZzC;;;;uBAIuC;EACrC,MAAM,EAAE,IAAI;;AEfd,SAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;;AAExB,0BAAyD;EACvD,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;;AAEpB,YAA4B;EAAE,WAAW,EAAE,OAAO;;AAClD,YAA4B;EAAE,SAAS,EAAE,GAAG;;AAC5C,WAA2B;EAAE,KAAK,ELVZ,IAAI;;;;AMN1B,gBAAgC;EAAE,OAAO,ENoQ1B,GAAO;;AMnQtB,gBAAgC;EAAE,OAAO,EN0W1B,GAAO;;AMzWtB,iBAAiC;EAAE,OAAO,ENmb1B,GAAO;;AMlbvB,qBAAqC;EAAE,OAAO,ENmL1B,GAAO;;AMlL3B,gBAAgC;EAAE,OAAO,ENkR1B,GAAO;;AMjRtB,eAA+B;EAAE,OAAO,ENke1B,GAAO;;AMjerB,iBAAiC;EAAE,OAAO,ENse1B,GAAO;;AMrevB,eAA+B;EAAE,OAAO,EN+iB1B,GAAO;;AM9iBrB,eAA+B;EAAE,OAAO,ENyN1B,GAAO;;AMxNrB,mBAAmC;EAAE,OAAO,ENggB1B,GAAO;;AM/fzB,aAA6B;EAAE,OAAO,EN8f1B,GAAO;;AM7fnB,kBAAkC;EAAE,OAAO,EN+f1B,GAAO;;AM9fxB,gBAAgC;EAAE,OAAO,ENoG1B,GAAO;;AMnGtB;;gBAEgC;EAAE,OAAO,ENkgB1B,GAAO;;AMjgBtB,sBAAsC;EAAE,OAAO,ENua1B,GAAO;;AMta5B,uBAAuC;EAAE,OAAO,ENqa1B,GAAO;;AMpa7B,oBAAoC;EAAE,OAAO,EN+X1B,GAAO;;AM9X1B,iBAAiC;EAAE,OAAO,ENsb1B,GAAO;;AMrbvB;cAC8B;EAAE,OAAO,ENwH1B,GAAO;;AMvHpB,kBAAkC;EAAE,OAAO,ENygB1B,GAAO;;AMxgBxB,eAA+B;EAAE,OAAO,ENmQ1B,GAAO;;AMlQrB,iBAAiC;EAAE,OAAO,EN6L1B,GAAO;;AM5LvB,kBAAkC;EAAE,OAAO,EN0G1B,GAAO;;AMzGxB,eAA+B;EAAE,OAAO,EN+Y1B,GAAO;;AM9YrB,mBAAmC;EAAE,OAAO,ENiJ1B,GAAO;;AMhJzB,8BAA8C;EAAE,OAAO,ENI1B,GAAO;;AMHpC,4BAA4C;EAAE,OAAO,ENM1B,GAAO;;AMLlC,gBAAgC;EAAE,OAAO,ENkQ1B,GAAO;;AMjQtB,wBAAwC;EAAE,OAAO,EN4W1B,GAAO;;AM3W9B;iBACiC;EAAE,OAAO,ENmY1B,GAAO;;AMlYvB,kBAAkC;EAAE,OAAO,EN8X1B,GAAO;;AM7XxB,mBAAmC;EAAE,OAAO,ENiS1B,GAAO;;AMhSzB,eAA+B;EAAE,OAAO,ENoS1B,GAAO;;AMnSrB,eAA+B;EAAE,OAAO,ENgM1B,GAAO;;AM/LrB,qBAAqC;EAAE,OAAO,EN+O1B,GAAO;;AM9O3B,qBAAqC;EAAE,OAAO,EN8hB1B,GAAO;;AM7hB3B,sBAAsC;EAAE,OAAO,EN4hB1B,GAAO;;AM3hB5B,oBAAoC;EAAE,OAAO,EN6hB1B,GAAO;;AM5hB1B,iBAAiC;EAAE,OAAO,EN2W1B,GAAO;;AM1WvB,kBAAkC;EAAE,OAAO,ENW1B,GAAO;;AMVxB,cAA8B;EAAE,OAAO,ENod1B,GAAO;;AMndpB,eAA+B;EAAE,OAAO,ENod1B,GAAO;;AMndrB,eAA+B;EAAE,OAAO,EN2B1B,GAAO;;AM1BrB,mBAAmC;EAAE,OAAO,EN2B1B,GAAO;;AM1BzB,gBAAgC;EAAE,OAAO,ENkW1B,GAAO;;AMjWtB,iBAAiC;EAAE,OAAO,ENwC1B,GAAO;;AMvCvB,eAA+B;EAAE,OAAO,EN8L1B,GAAO;;AM7LrB,eAA+B;EAAE,OAAO,ENmB1B,GAAO;;AMlBrB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB,sBAAsC;EAAE,OAAO,ENid1B,GAAO;;AMhd5B,qBAAqC;EAAE,OAAO,ENid1B,GAAO;;AMhd3B,qBAAqC;EAAE,OAAO,EN1C1B,GAAO;;AM2C3B,uBAAuC;EAAE,OAAO,EN7C1B,GAAO;;AM8C7B,sBAAsC;EAAE,OAAO,EN3C1B,GAAO;;AM4C5B,wBAAwC;EAAE,OAAO,EN9C1B,GAAO;;AM+C9B,eAA+B;EAAE,OAAO,ENwQ1B,GAAO;;AMvQrB;kBACkC;EAAE,OAAO,ENmT1B,GAAO;;AMlTxB,iBAAiC;EAAE,OAAO,ENmO1B,GAAO;;AMlOvB,uBAAuC;EAAE,OAAO,ENigB1B,GAAO;;AMhgB7B;;oBAEoC;EAAE,OAAO,EN+T1B,GAAO;;AM9T1B,iBAAiC;EAAE,OAAO,ENwT1B,GAAO;;AMvTvB,qBAAqC;EAAE,OAAO,EN+Q1B,GAAO;;AM9Q3B,iBAAiC;EAAE,OAAO,EN5D1B,GAAO;;AM6DvB,eAA+B;EAAE,OAAO,EN8c1B,GAAO;;AM7crB;0BAC0C;EAAE,OAAO,ENqT1B,GAAO;;AMpThC,yBAAyC;EAAE,OAAO,ENuX1B,GAAO;;AMtX/B,yBAAyC;EAAE,OAAO,EN0C1B,GAAO;;AMzC/B,iBAAiC;EAAE,OAAO,ENjC1B,GAAO;;AMkCvB,wBAAwC;EAAE,OAAO,ENma1B,GAAO;;AMla9B,wBAAwC;EAAE,OAAO,EN4H1B,GAAO;;AM3H9B,mBAAmC;EAAE,OAAO,EN7B1B,GAAO;;AM8BzB,eAA+B;EAAE,OAAO,EN0T1B,GAAO;;AMzTrB,gBAAgC;EAAE,OAAO,ENwS1B,GAAO;;AMvStB,eAA+B;EAAE,OAAO,ENia1B,GAAO;;AMharB,kBAAkC;EAAE,OAAO,ENgK1B,GAAO;;AM/JxB,uBAAuC;EAAE,OAAO,ENuH1B,GAAO;;AMtH7B,uBAAuC;EAAE,OAAO,EN4Z1B,GAAO;;AM3Z7B,gBAAgC;EAAE,OAAO,EN4F1B,GAAO;;AM3FtB,uBAAuC;EAAE,OAAO,ENoC1B,GAAO;;AMnC7B,wBAAwC;EAAE,OAAO,ENoC1B,GAAO;;AMnC9B,sBAAsC;EAAE,OAAO,ENsT1B,GAAO;;AMrT5B,uBAAuC;EAAE,OAAO,ENyQ1B,GAAO;;AMxQ7B,uBAAuC;EAAE,OAAO,ENwb1B,GAAO;;AMvb7B,uBAAuC;EAAE,OAAO,ENsB1B,GAAO;;AMrB7B,0BAA0C;EAAE,OAAO,EN2T1B,GAAO;;AM1ThC,sBAAsC;EAAE,OAAO,ENsM1B,GAAO;;AMrM5B,qBAAqC;EAAE,OAAO,EN6D1B,GAAO;;AM5D3B,yBAAyC;EAAE,OAAO,ENob1B,GAAO;;AMnb/B,yBAAyC;EAAE,OAAO,ENkB1B,GAAO;;AMjB/B,cAA8B;EAAE,OAAO,EN/C1B,GAAO;;AMgDpB,qBAAqC;EAAE,OAAO,EN3D1B,GAAO;;AM4D3B,sBAAsC;EAAE,OAAO,EN3D1B,GAAO;;AM4D5B,mBAAmC;EAAE,OAAO,EN3D1B,GAAO;;AM4DzB,qBAAqC;EAAE,OAAO,EN/D1B,GAAO;;AMgE3B;gBACgC;EAAE,OAAO,ENqV1B,GAAO;;AMpVtB,iBAAiC;EAAE,OAAO,ENuF1B,GAAO;;AMtFvB,mBAAmC;EAAE,OAAO,EN4C1B,GAAO;;AM3CzB,eAA+B;EAAE,OAAO,ENmS1B,GAAO;;AMlSrB,gBAAgC;EAAE,OAAO,ENsP1B,GAAO;;AMrPtB,mBAAmC;EAAE,OAAO,EN9D1B,GAAO;;AM+DzB,6BAA6C;EAAE,OAAO,ENgF1B,GAAO;;AM/EnC,eAA+B;EAAE,OAAO,EN+I1B,GAAO;;AM9IrB,eAA+B;EAAE,OAAO,ENoM1B,GAAO;;AMnMrB,eAA+B;EAAE,OAAO,ENmH1B,GAAO;;AMlHrB,cAA8B;EAAE,OAAO,ENiF1B,GAAO;;AMhFpB,oBAAoC;EAAE,OAAO,ENiF1B,GAAO;;AMhF1B;+BAC+C;EAAE,OAAO,EN0E1B,GAAO;;AMzErC,gBAAgC;EAAE,OAAO,ENmR1B,GAAO;;AMlRtB,mBAAmC;EAAE,OAAO,EN/B1B,GAAO;;AMgCzB,iBAAiC;EAAE,OAAO,ENoS1B,GAAO;;AMnSvB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,iBAAiC;EAAE,OAAO,ENqN1B,GAAO;;AMpNvB,qBAAqC;EAAE,OAAO,ENE1B,GAAO;;AMD3B,uBAAuC;EAAE,OAAO,ENF1B,GAAO;;AMG7B,kBAAkC;EAAE,OAAO,EN2S1B,GAAO;;AM1SxB,wBAAwC;EAAE,OAAO,ENyU1B,GAAO;;AMxU9B,iBAAiC;EAAE,OAAO,EN8G1B,GAAO;;AM7GvB,sBAAsC;EAAE,OAAO,EN+G1B,GAAO;;AM9G5B,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,mBAAmC;EAAE,OAAO,ENrF1B,GAAO;;AMsFzB;oBACoC;EAAE,OAAO,EN/E1B,GAAO;;AMgF1B,yBAAyC;EAAE,OAAO,ENua1B,GAAO;;AMta/B,0BAA0C;EAAE,OAAO,ENmE1B,GAAO;;AMlEhC,uBAAuC;EAAE,OAAO,EN5C1B,GAAO;;AM6C7B,cAA8B;EAAE,OAAO,ENqK1B,GAAO;;AMpKpB;eAC+B;EAAE,OAAO,ENK1B,GAAO;;AMJrB,mBAAmC;EAAE,OAAO,ENQ1B,GAAO;;AMPzB,sBAAsC;EAAE,OAAO,ENmY1B,GAAO;;AMlY5B,wBAAwC;EAAE,OAAO,ENiY1B,GAAO;;AMhY9B,oBAAoC;EAAE,OAAO,EN2V1B,GAAO;;AM1V1B,kBAAkC;EAAE,OAAO,ENyI1B,GAAO;;AMxIxB,mBAAmC;EAAE,OAAO,ENyT1B,GAAO;;AMxTzB,0BAA0C;EAAE,OAAO,ENiL1B,GAAO;;AMhLhC,qBAAqC;EAAE,OAAO,EN0X1B,GAAO;;AMzX3B,wBAAwC;EAAE,OAAO,EN8C1B,GAAO;;AM7C9B,kBAAkC;EAAE,OAAO,ENoT1B,GAAO;;AMnTxB,iBAAiC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YvB,wBAAwC;EAAE,OAAO,EN6G1B,GAAO;;AM5G9B,iBAAiC;EAAE,OAAO,EN8Z1B,GAAO;;AM7ZvB,kBAAkC;EAAE,OAAO,EN+J1B,GAAO;;AM9JxB,gBAAgC;EAAE,OAAO,ENsO1B,GAAO;;AMrOtB,mBAAmC;EAAE,OAAO,EN2U1B,GAAO;;AM1UzB,qBAAqC;EAAE,OAAO,EN/E1B,GAAO;;AMgF3B,uBAAuC;EAAE,OAAO,ENoO1B,GAAO;;AMnO7B,kBAAkC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YxB;mBACmC;EAAE,OAAO,ENuC1B,GAAO;;AMtCzB,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,iBAAiC;EAAE,OAAO,ENiZ1B,GAAO;;AMhZvB,sBAAsC;EAAE,OAAO,ENR1B,GAAO;;AMS5B,cAA8B;EAAE,OAAO,EN4Q1B,GAAO;;AM3QpB,gBAAgC;EAAE,OAAO,ENgH1B,GAAO;;AM/GtB,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,eAA+B;EAAE,OAAO,ENzG1B,GAAO;;AM0GrB,sBAAsC;EAAE,OAAO,ENzD1B,GAAO;;AM0D5B,uBAAuC;EAAE,OAAO,EN0G1B,GAAO;;AMzG7B,sBAAsC;EAAE,OAAO,ENwG1B,GAAO;;AMvG5B,oBAAoC;EAAE,OAAO,ENyG1B,GAAO;;AMxG1B,sBAAsC;EAAE,OAAO,ENqG1B,GAAO;;AMpG5B,4BAA4C;EAAE,OAAO,EN5I1B,GAAO;;AM6IlC,6BAA6C;EAAE,OAAO,ENxI1B,GAAO;;AMyInC,0BAA0C;EAAE,OAAO,ENxI1B,GAAO;;AMyIhC,4BAA4C;EAAE,OAAO,ENhJ1B,GAAO;;AMiJlC,gBAAgC;EAAE,OAAO,ENsF1B,GAAO;;AMrFtB,iBAAiC;EAAE,OAAO,ENia1B,GAAO;;AMhavB,gBAAgC;EAAE,OAAO,ENiV1B,GAAO;;AMhVtB,iBAAiC;EAAE,OAAO,ENgD1B,GAAO;;AM/CvB,oBAAoC;EAAE,OAAO,ENvG1B,GAAO;;AMwG1B,qBAAqC;EAAE,OAAO,ENzI1B,GAAO;;AM0I3B;gBACgC;EAAE,OAAO,ENqY1B,GAAO;;AMpYtB;eAC+B;EAAE,OAAO,ENuI1B,GAAO;;AMtIrB,gBAAgC;EAAE,OAAO,ENpD1B,GAAO;;AMqDtB,gBAAgC;EAAE,OAAO,EN+C1B,GAAO;;AM9CtB;mBACmC;EAAE,OAAO,ENwP1B,GAAO;;AMvPzB;kBACkC;EAAE,OAAO,ENkC1B,GAAO;;AMjCxB,oBAAoC;EAAE,OAAO,ENsL1B,GAAO;;AMrL1B;mBACmC;EAAE,OAAO,EN0C1B,GAAO;;AMzCzB,iBAAiC;EAAE,OAAO,ENiS1B,GAAO;;AMhSvB;;eAE+B;EAAE,OAAO,EN9I1B,GAAO;;AM+IrB,kBAAkC;EAAE,OAAO,ENgI1B,GAAO;;AM/HxB,kBAAkC;EAAE,OAAO,EN8H1B,GAAO;;AM7HxB,wBAAwC;EAAE,OAAO,EN4S1B,GAAO;;AM3S9B,oBAAoC;EAAE,OAAO,ENoW1B,GAAO;;AMnW1B,gBAAgC;EAAE,OAAO,ENmT1B,GAAO;;AMlTtB,gBAAgC;EAAE,OAAO,ENkI1B,GAAO;;AMjItB,gBAAgC;EAAE,OAAO,ENuV1B,GAAO;;AMtVtB,oBAAoC;EAAE,OAAO,ENwL1B,GAAO;;AMvL1B,2BAA2C;EAAE,OAAO,ENyL1B,GAAO;;AMxLjC,6BAA6C;EAAE,OAAO,ENyD1B,GAAO;;AMxDnC,sBAAsC;EAAE,OAAO,ENuD1B,GAAO;;AMtD5B,gBAAgC;EAAE,OAAO,ENsJ1B,GAAO;;AMrJtB,qBAAqC;EAAE,OAAO,ENtH1B,GAAO;;AMuH3B,mBAAmC;EAAE,OAAO,ENhH1B,GAAO;;AMiHzB,qBAAqC;EAAE,OAAO,ENvH1B,GAAO;;AMwH3B,sBAAsC;EAAE,OAAO,ENvH1B,GAAO;;AMwH5B,kBAAkC;EAAE,OAAO,ENvE1B,GAAO;;AMwExB;eAC+B;EAAE,OAAO,EN2P1B,GAAO;;AM1PrB;oBACoC;EAAE,OAAO,EN+P1B,GAAO;;AM9P1B;mBACmC;EAAE,OAAO,EN4P1B,GAAO;;AM3PzB,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,mBAAmC;EAAE,OAAO,ENkG1B,GAAO;;AMjGzB;eAC+B;EAAE,OAAO,EN8U1B,GAAO;;AM7UrB;gBACgC;EAAE,OAAO,ENqB1B,GAAO;;AMpBtB;qBACqC;EAAE,OAAO,EN2R1B,GAAO;;AM1R3B,oBAAoC;EAAE,OAAO,ENpF1B,GAAO;;AMqF1B,qBAAqC;EAAE,OAAO,ENnF1B,GAAO;;AMoF3B;eAC+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,kBAAkC;EAAE,OAAO,ENkO1B,GAAO;;AMjOxB,mBAAmC;EAAE,OAAO,ENkU1B,GAAO;;AMjUzB;oBACoC;EAAE,OAAO,EN1G1B,GAAO;;AM2G1B,sBAAsC;EAAE,OAAO,ENgF1B,GAAO;;AM/E5B,mBAAmC;EAAE,OAAO,ENnD1B,GAAO;;AMoDzB,yBAAyC;EAAE,OAAO,ENzG1B,GAAO;;AM0G/B,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,kBAAkC;EAAE,OAAO,ENsU1B,GAAO;;AMrUxB,sBAAsC;EAAE,OAAO,EN+P1B,GAAO;;AM9P5B,mBAAmC;EAAE,OAAO,ENsQ1B,GAAO;;AMrQzB,iBAAiC;EAAE,OAAO,ENvL1B,GAAO;;AMwLvB,iBAAiC;EAAE,OAAO,ENzG1B,GAAO;;AM0GvB,kBAAkC;EAAE,OAAO,ENtF1B,GAAO;;AMuFxB,sBAAsC;EAAE,OAAO,EN3B1B,GAAO;;AM4B5B,qBAAqC;EAAE,OAAO,ENxK1B,GAAO;;AMyK3B,qBAAqC;EAAE,OAAO,ENkC1B,GAAO;;AMjC3B,oBAAoC;EAAE,OAAO,EN3O1B,GAAO;;AM4O1B,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,sBAAsC;EAAE,OAAO,EN/C1B,GAAO;;AMgD5B,eAA+B;EAAE,OAAO,ENpM1B,GAAO;;AMqMrB,mBAAmC;EAAE,OAAO,ENe1B,GAAO;;AMdzB,sBAAsC;EAAE,OAAO,ENgJ1B,GAAO;;AM/I5B,4BAA4C;EAAE,OAAO,EN5O1B,GAAO;;AM6OlC,6BAA6C;EAAE,OAAO,EN5O1B,GAAO;;AM6OnC,0BAA0C;EAAE,OAAO,EN5O1B,GAAO;;AM6OhC,4BAA4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC,qBAAqC;EAAE,OAAO,EN5O1B,GAAO;;AM6O3B,sBAAsC;EAAE,OAAO,EN5O1B,GAAO;;AM6O5B,mBAAmC;EAAE,OAAO,EN5O1B,GAAO;;AM6OzB,qBAAqC;EAAE,OAAO,ENhP1B,GAAO;;AMiP3B,kBAAkC;EAAE,OAAO,ENlG1B,GAAO;;AMmGxB,iBAAiC;EAAE,OAAO,ENuC1B,GAAO;;AMtCvB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB;iBACiC;EAAE,OAAO,ENyF1B,GAAO;;AMxFvB,mBAAmC;EAAE,OAAO,EN9I1B,GAAO;;AM+IzB,qBAAqC;EAAE,OAAO,EN0I1B,GAAO;;AMzI3B,sBAAsC;EAAE,OAAO,EN0I1B,GAAO;;AMzI5B,kBAAkC;EAAE,OAAO,ENgN1B,GAAO;;AM/MxB,iBAAiC;EAAE,OAAO,ENnJ1B,GAAO;;AMoJvB;gBACgC;EAAE,OAAO,ENkJ1B,GAAO;;AMjJtB,qBAAqC;EAAE,OAAO,ENnB1B,GAAO;;AMoB3B,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,wBAAwC;EAAE,OAAO,ENvC1B,GAAO;;AMwC9B,kBAAkC;EAAE,OAAO,EN0L1B,GAAO;;AMzLxB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,gBAAgC;EAAE,OAAO,ENoE1B,GAAO;;AMnEtB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,iBAAiC;EAAE,OAAO,ENrD1B,GAAO;;AMsDvB,yBAAyC;EAAE,OAAO,ENvD1B,GAAO;;AMwD/B,mBAAmC;EAAE,OAAO,ENuO1B,GAAO;;AMtOzB,eAA+B;EAAE,OAAO,ENtJ1B,GAAO;;AMuJrB;oBACoC;EAAE,OAAO,ENqI1B,GAAO;;AMpI1B;;sBAEsC;EAAE,OAAO,ENuM1B,GAAO;;AMtM5B,yBAAyC;EAAE,OAAO,ENkC1B,GAAO;;AMjC/B,eAA+B;EAAE,OAAO,EN5I1B,GAAO;;AM6IrB,oBAAoC;EAAE,OAAO,EN7J1B,GAAO;;AM8J1B;uBACuC;EAAE,OAAO,EN1L1B,GAAO;;AM2L7B,mBAAmC;EAAE,OAAO,EN4G1B,GAAO;;AM3GzB,eAA+B;EAAE,OAAO,ENT1B,GAAO;;AMUrB,sBAAsC;EAAE,OAAO,ENhH1B,GAAO;;AMiH5B,sBAAsC;EAAE,OAAO,EN8M1B,GAAO;;AM7M5B,oBAAoC;EAAE,OAAO,ENyM1B,GAAO;;AMxM1B,iBAAiC;EAAE,OAAO,ENvH1B,GAAO;;AMwHvB,uBAAuC;EAAE,OAAO,ENmG1B,GAAO;;AMlG7B,qBAAqC;EAAE,OAAO,EN8C1B,GAAO;;AM7C3B,2BAA2C;EAAE,OAAO,EN8C1B,GAAO;;AM7CjC,iBAAiC;EAAE,OAAO,ENgJ1B,GAAO;;AM/IvB,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,4BAA4C;EAAE,OAAO,ENjF1B,GAAO;;AMkFlC,iBAAiC;EAAE,OAAO,ENoH1B,GAAO;;AMnHvB,iBAAiC;EAAE,OAAO,ENkC1B,GAAO;;AMjCvB,8BAA8C;EAAE,OAAO,ENlM1B,GAAO;;AMmMpC,+BAA+C;EAAE,OAAO,ENlM1B,GAAO;;AMmMrC,4BAA4C;EAAE,OAAO,ENlM1B,GAAO;;AMmMlC,8BAA8C;EAAE,OAAO,ENtM1B,GAAO;;AMuMpC,gBAAgC;EAAE,OAAO,EN/B1B,GAAO;;AMgCtB,eAA+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,iBAAiC;EAAE,OAAO,EN9S1B,GAAO;;AM+SvB,qBAAqC;EAAE,OAAO,ENmP1B,GAAO;;AMlP3B,mBAAmC;EAAE,OAAO,EN9O1B,GAAO;;AM+OzB,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN4G1B,GAAO;;AM3G3B,sBAAsC;EAAE,OAAO,ENsE1B,GAAO;;AMrE5B,iBAAiC;EAAE,OAAO,EN2M1B,GAAO;;AM1MvB,uBAAuC;EAAE,OAAO,EN6B1B,GAAO;;AM5B7B,yBAAyC;EAAE,OAAO,EN6B1B,GAAO;;AM5B/B,mBAAmC;EAAE,OAAO,ENhB1B,GAAO;;AMiBzB,qBAAqC;EAAE,OAAO,ENlB1B,GAAO;;AMmB3B,uBAAuC;EAAE,OAAO,ENvN1B,GAAO;;AMwN7B,wBAAwC;EAAE,OAAO,ENiD1B,GAAO;;AMhD9B,+BAA+C;EAAE,OAAO,EN3I1B,GAAO;;AM4IrC,uBAAuC;EAAE,OAAO,ENkH1B,GAAO;;AMjH7B,kBAAkC;EAAE,OAAO,EN1L1B,GAAO;;AM2LxB;8BAC8C;EAAE,OAAO,ENjP1B,GAAO;;AMkPpC;4BAC4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC;+BAC+C;EAAE,OAAO,ENnP1B,GAAO;;AMoPrC;cAC8B;EAAE,OAAO,EN7J1B,GAAO;;AM8JpB,cAA8B;EAAE,OAAO,EN/F1B,GAAO;;AMgGpB;cAC8B;EAAE,OAAO,EN4N1B,GAAO;;AM3NpB;cAC8B;EAAE,OAAO,ENvD1B,GAAO;;AMwDpB;;;cAG8B;EAAE,OAAO,ENrD1B,GAAO;;AMsDpB;;cAE8B;EAAE,OAAO,EN8E1B,GAAO;;AM7EpB;cAC8B;EAAE,OAAO,ENtD1B,GAAO;;AMuDpB;cAC8B;EAAE,OAAO,ENzR1B,GAAO;;AM0RpB,eAA+B;EAAE,OAAO,ENzJ1B,GAAO;;AM0JrB,oBAAoC;EAAE,OAAO,EN7I1B,GAAO;;AM8I1B,yBAAyC;EAAE,OAAO,EN2G1B,GAAO;;AM1G/B,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,2BAA2C;EAAE,OAAO,EN2G1B,GAAO;;AM1GjC,2BAA2C;EAAE,OAAO,EN8G1B,GAAO;;AM7GjC,4BAA4C;EAAE,OAAO,EN8G1B,GAAO;;AM7GlC,oBAAoC;EAAE,OAAO,ENgK1B,GAAO;;AM/J1B,sBAAsC;EAAE,OAAO,EN4J1B,GAAO;;AM3J5B,yBAAyC;EAAE,OAAO,ENwO1B,GAAO;;AMvO/B,kBAAkC;EAAE,OAAO,ENqO1B,GAAO;;AMpOxB,eAA+B;EAAE,OAAO,EN+N1B,GAAO;;AM9NrB,sBAAsC;EAAE,OAAO,EN+N1B,GAAO;;AM9N5B,uBAAuC;EAAE,OAAO,ENmO1B,GAAO;;AMlO7B,kBAAkC;EAAE,OAAO,ENxM1B,GAAO;;AMyMxB,yBAAyC;EAAE,OAAO,EN+G1B,GAAO;;AM9G/B,oBAAoC;EAAE,OAAO,ENnF1B,GAAO;;AMoF1B,iBAAiC;EAAE,OAAO,EN/I1B,GAAO;;AMgJvB,cAA8B;EAAE,OAAO,ENhX1B,GAAO;;AMiXpB,oBAAoC;EAAE,OAAO,ENxT1B,GAAO;;AMyT1B,2BAA2C;EAAE,OAAO,ENxT1B,GAAO;;AMyTjC,iBAAiC;EAAE,OAAO,ENyK1B,GAAO;;AMxKvB,wBAAwC;EAAE,OAAO,ENyK1B,GAAO;;AMxK9B,0BAA0C;EAAE,OAAO,ENtD1B,GAAO;;AMuDhC,wBAAwC;EAAE,OAAO,ENpD1B,GAAO;;AMqD9B,0BAA0C;EAAE,OAAO,ENvD1B,GAAO;;AMwDhC,2BAA2C;EAAE,OAAO,ENvD1B,GAAO;;AMwDjC,gBAAgC;EAAE,OAAO,ENxW1B,GAAO;;AMyWtB,kBAAkC;EAAE,OAAO,EN0M1B,GAAO;;AMzMxB,kBAAkC;EAAE,OAAO,ENpX1B,GAAO;;AMqXxB,gBAAgC;EAAE,OAAO,ENpE1B,GAAO;;AMqEtB,mBAAmC;EAAE,OAAO,EN1N1B,GAAO;;AM2NzB,gBAAgC;EAAE,OAAO,ENqE1B,GAAO;;AMpEtB,qBAAqC;EAAE,OAAO,ENtJ1B,GAAO;;AMuJ3B,iBAAiC;EAAE,OAAO,ENuJ1B,GAAO;;AMtJvB,iBAAiC;EAAE,OAAO,EN/L1B,GAAO;;AMgMvB,eAA+B;EAAE,OAAO,EN1D1B,GAAO;;AM2DrB;mBACmC;EAAE,OAAO,ENnI1B,GAAO;;AMoIzB,gBAAgC;EAAE,OAAO,EN2G1B,GAAO;;AM1GtB,iBAAiC;EAAE,OAAO,ENxC1B,GAAO;;AMyCvB,kBAAkC;EAAE,OAAO,ENrX1B,GAAO;;AMsXxB,cAA8B;EAAE,OAAO,ENpU1B,GAAO;;AMqUpB,aAA6B;EAAE,OAAO,ENgL1B,GAAO;;AM/KnB,gBAAgC;EAAE,OAAO,ENqL1B,GAAO;;AMpLtB,iBAAiC;EAAE,OAAO,ENa1B,GAAO;;AMZvB,oBAAoC;EAAE,OAAO,ENrC1B,GAAO;;AMsC1B,yBAAyC;EAAE,OAAO,EN8E1B,GAAO;;AM7E/B,+BAA+C;EAAE,OAAO,ENtX1B,GAAO;;AMuXrC,8BAA8C;EAAE,OAAO,ENxX1B,GAAO;;AMyXpC;8BAC8C;EAAE,OAAO,EN3T1B,GAAO;;AM4TpC,uBAAuC;EAAE,OAAO,ENjP1B,GAAO;;AMkP7B,qBAAqC;EAAE,OAAO,EN+K1B,GAAO;;AM9K3B,uBAAuC;EAAE,OAAO,ENmK1B,GAAO;;AMlK7B;cAC8B;EAAE,OAAO,ENoI1B,GAAO;;AMnIpB,wBAAwC;EAAE,OAAO,ENjB1B,GAAO;;AMkB9B,wBAAwC;EAAE,OAAO,EN6D1B,GAAO;;AM5D9B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,0BAA0C;EAAE,OAAO,EN7O1B,GAAO;;AM8OhC,oBAAoC;EAAE,OAAO,EN2K1B,GAAO;;AM1K1B,iBAAiC;EAAE,OAAO,ENvD1B,GAAO;;AMwDvB;;qBAEqC;EAAE,OAAO,ENsI1B,GAAO;;AMrI3B;yBACyC;EAAE,OAAO,ENjK1B,GAAO;;AMkK/B,gBAAgC;EAAE,OAAO,ENwK1B,GAAO;;AMvKtB,iBAAiC;EAAE,OAAO,ENvK1B,GAAO;;AMwKvB,iBAAiC;EAAE,OAAO,ENhB1B,GAAO;;AMiBvB,wBAAwC;EAAE,OAAO,ENhB1B,GAAO;;AMiB9B,6BAA6C;EAAE,OAAO,ENsE1B,GAAO;;AMrEnC,sBAAsC;EAAE,OAAO,ENoE1B,GAAO;;AMnE5B,oBAAoC;EAAE,OAAO,EN7Q1B,GAAO;;AM8Q1B,eAA+B;EAAE,OAAO,EN1Q1B,GAAO;;AM2QrB,qBAAqC;EAAE,OAAO,ENjD1B,GAAO;;AMkD3B,yBAAyC;EAAE,OAAO,ENjD1B,GAAO;;AMkD/B,iBAAiC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQvB,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,mBAAmC;EAAE,OAAO,ENzI1B,GAAO;;AM0IzB,cAA8B;EAAE,OAAO,EN9O1B,GAAO;;AM+OpB,mBAAmC;EAAE,OAAO,EN3W1B,GAAO;;AM4WzB,gBAAgC;EAAE,OAAO,EN9T1B,GAAO;;AM+TtB,cAA8B;EAAE,OAAO,ENnE1B,GAAO;;AMoEpB,gBAAgC;EAAE,OAAO,ENoC1B,GAAO;;AMnCtB,eAA+B;EAAE,OAAO,ENjS1B,GAAO;;AMkSrB,gBAAgC;EAAE,OAAO,ENjS1B,GAAO;;AMkStB,kBAAkC;EAAE,OAAO,ENtY1B,GAAO;;AMuYxB,yBAAyC;EAAE,OAAO,ENtY1B,GAAO;;AMuY/B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,uBAAuC;EAAE,OAAO,EN2C1B,GAAO;;AM1C7B,kBAAkC;EAAE,OAAO,ENvC1B,GAAO;;AMwCxB;cAC8B;EAAE,OAAO,EN3W1B,GAAO;;AM4WpB;eAC+B;EAAE,OAAO,EN2D1B,GAAO;;AM1DrB,eAA+B;EAAE,OAAO,ENuF1B,GAAO;;AMtFrB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,qBAAqC;EAAE,OAAO,ENpS1B,GAAO;;AMqS3B,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,mBAAmC;EAAE,OAAO,EN1S1B,GAAO;;AM2SzB,qBAAqC;EAAE,OAAO,ENxP1B,GAAO;;AMyP3B,sBAAsC;EAAE,OAAO,ENjP1B,GAAO;;AMkP5B,uBAAuC;EAAE,OAAO,EN9P1B,GAAO;;AM+P7B,4BAA4C;EAAE,OAAO,ENxP1B,GAAO;;AMyPlC;;uBAEuC;EAAE,OAAO,ENjQ1B,GAAO;;AMkQ7B;yBACyC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQ/B;uBACuC;EAAE,OAAO,ENxQ1B,GAAO;;AMyQ7B;uBACuC;EAAE,OAAO,EN7P1B,GAAO;;AM8P7B,sBAAsC;EAAE,OAAO,EN1Q1B,GAAO;;AM2Q5B,eAA+B;EAAE,OAAO,ENsG1B,GAAO;;AMrGrB,kBAAkC;EAAE,OAAO,ENlV1B,GAAO;;AMmVxB,mBAAmC;EAAE,OAAO,ENnL1B,GAAO;;AMoLzB;;;;oBAIoC;EAAE,OAAO,ENxK1B,GAAO;;AMyK1B,yBAAyC;EAAE,OAAO,ENpW1B,GAAO;;AMqW/B;gBACgC;EAAE,OAAO,EN1E1B,GAAO;;AM2EtB;iBACiC;EAAE,OAAO,ENpT1B,GAAO;;AMqTvB,qBAAqC;EAAE,OAAO,EN1O1B,GAAO;;AM2O3B,cAA8B;EAAE,OAAO,EN5O1B,GAAO;;AM6OpB,sBAAsC;EAAE,OAAO,EN7N1B,GAAO;;AM8N5B,wBAAwC;EAAE,OAAO,ENwB1B,GAAO;;AMvB9B,aAA6B;EAAE,OAAO,ENzF1B,GAAO;;AM0FnB;iBACiC;EAAE,OAAO,EN2F1B,GAAO;;AM1FvB;sBACsC;EAAE,OAAO,EN9H1B,GAAO;;AM+H5B;wBACwC;EAAE,OAAO,EN/H1B,GAAO;;AMgI9B,kBAAkC;EAAE,OAAO,EN3N1B,GAAO;;AM4NxB;sBACsC;EAAE,OAAO,ENrX1B,GAAO;;AMsX5B,iBAAiC;EAAE,OAAO,ENnO1B,GAAO;;AMoOvB,oBAAoC;EAAE,OAAO,ENlI1B,GAAO;;AMmI1B,kBAAkC;EAAE,OAAO,EN1C1B,GAAO;;AM2CxB,oBAAoC;EAAE,OAAO,EN7D1B,GAAO;;AM8D1B,2BAA2C;EAAE,OAAO,EN7D1B,GAAO;;AM8DjC,eAA+B;EAAE,OAAO,ENpb1B,GAAO;;AMqbrB;mBACmC;EAAE,OAAO,ENzQ1B,GAAO;;AM0QzB,cAA8B;EAAE,OAAO,ENsC1B,GAAO;;AMrCpB,qBAAqC;EAAE,OAAO,EN/b1B,GAAO;;AMgc3B,eAA+B;EAAE,OAAO,ENrH1B,GAAO;;AMsHrB,qBAAqC;EAAE,OAAO,ENlD1B,GAAO;;AMmD3B,iBAAiC;EAAE,OAAO,ENsC1B,GAAO;;AMrCvB,eAA+B;EAAE,OAAO,ENiF1B,GAAO;;AMhFrB,sBAAsC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ5B,eAA+B;EAAE,OAAO,ENuE1B,GAAO;;AMtErB,qBAAqC;EAAE,OAAO,ENjb1B,GAAO;;AMkb3B,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,wBAAwC;EAAE,OAAO,ENhQ1B,GAAO;;AMiQ9B,kBAAkC;EAAE,OAAO,EN9Z1B,GAAO;;AM+ZxB,wBAAwC;EAAE,OAAO,ENla1B,GAAO;;AMma9B,sBAAsC;EAAE,OAAO,ENpa1B,GAAO;;AMqa5B,kBAAkC;EAAE,OAAO,ENta1B,GAAO;;AMuaxB,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,qBAAqC;EAAE,OAAO,ENld1B,GAAO;;AMmd3B,uBAAuC;EAAE,OAAO,ENld1B,GAAO;;AMmd7B,gBAAgC;EAAE,OAAO,ENY1B,GAAO;;AMXtB,oBAAoC;EAAE,OAAO,EN3X1B,GAAO;;AM4X1B,aAA6B;EAAE,OAAO,ENre1B,GAAO;;AMsenB,qBAAqC;EAAE,OAAO,ENjV1B,GAAO;;AMkV3B,sBAAsC;EAAE,OAAO,ENpK1B,GAAO;;AMqK5B,wBAAwC;EAAE,OAAO,ENrd1B,GAAO;;AMsd9B,qBAAqC;EAAE,OAAO,EN3f1B,GAAO;;AM4f3B,oBAAoC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ1B,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,iBAAiC;EAAE,OAAO,EN1O1B,GAAO;;AM2OvB,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,qBAAqC;EAAE,OAAO,ENN1B,GAAO;;AMO3B,oBAAoC;EAAE,OAAO,ENN1B,GAAO;;AMO1B,kBAAkC;EAAE,OAAO,EN/d1B,GAAO;;AMgexB,cAA8B;EAAE,OAAO,EN7c1B,GAAO;;AM8cpB,kBAAkC;EAAE,OAAO,EN1P1B,GAAO;;AM2PxB,oBAAoC;EAAE,OAAO,ENhhB1B,GAAO;;AMihB1B,aAA6B;EAAE,OAAO,EN7b1B,GAAO;;AM8bnB;;cAE8B;EAAE,OAAO,ENxQ1B,GAAO;;AMyQpB,mBAAmC;EAAE,OAAO,EN7M1B,GAAO;;AM8MzB,qBAAqC;EAAE,OAAO,ENpd1B,GAAO;;AMqd3B,yBAAyC;EAAE,OAAO,ENnZ1B,GAAO;;AMoZ/B,mBAAmC;EAAE,OAAO,ENxY1B,GAAO;;AMyYzB,mBAAmC;EAAE,OAAO,EN1T1B,GAAO;;AM2TzB,kBAAkC;EAAE,OAAO,ENxP1B,GAAO;;AMyPxB,iBAAiC;EAAE,OAAO,ENrH1B,GAAO;;AMsHvB,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,sBAAsC;EAAE,OAAO,ENrG1B,GAAO;;AMsG5B,mBAAmC;EAAE,OAAO,ENpG1B,GAAO;;AMqGzB,oBAAoC;EAAE,OAAO,EN5c1B,GAAO;;AM6c1B,0BAA0C;EAAE,OAAO,EN9c1B,GAAO;;AM+chC,kBAAkC;EAAE,OAAO,EN3Y1B,GAAO;;AM4YxB,eAA+B;EAAE,OAAO,ENhH1B,GAAO;;AMiHrB,sBAAsC;EAAE,OAAO,ENI1B,GAAO;;AMH5B,qBAAqC;EAAE,OAAO,EN5M1B,GAAO;;AM6M3B,sBAAsC;EAAE,OAAO,ENpE1B,GAAO;;AMqE5B,oBAAoC;EAAE,OAAO,ENhS1B,GAAO;;AMiS1B,gBAAgC;EAAE,OAAO,ENG1B,GAAO;;AMFtB,eAA+B;EAAE,OAAO,ENtO1B,GAAO;;AMuOrB,kBAAkC;EAAE,OAAO,EN7N1B,GAAO;;AM8NxB,sBAAsC;EAAE,OAAO,ENhC1B,GAAO;;AMiC5B,0BAA0C;EAAE,OAAO,ENhC1B,GAAO;;AMiChC,uBAAuC;EAAE,OAAO,END1B,GAAO;;AME7B,sBAAsC;EAAE,OAAO,EN1O1B,GAAO;;AM2O5B,qBAAqC;EAAE,OAAO,ENF1B,GAAO;;AMG3B,sBAAsC;EAAE,OAAO,EN3O1B,GAAO;;AM4O5B,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,wBAAwC;EAAE,OAAO,EN5O1B,GAAO;;AM6O9B,iBAAiC;EAAE,OAAO,ENvN1B,GAAO;;AMwNvB,4BAA4C;EAAE,OAAO,EN9X1B,GAAO;;AM+XlC,sBAAsC;EAAE,OAAO,ENhM1B,GAAO;;AMiM5B,mBAAmC;EAAE,OAAO,ENI1B,GAAO;;AMHzB,iBAAiC;EAAE,OAAO,EN7I1B,GAAO;;AM8IvB,oBAAoC;EAAE,OAAO,ENjB1B,GAAO;;AMkB1B,qBAAqC;EAAE,OAAO,ENhB1B,GAAO;;AMiB3B;cAC8B;EAAE,OAAO,ENphB1B,GAAO;;AMqhBpB,kBAAkC;EAAE,OAAO,ENd1B,GAAO;;AMexB,gBAAgC;EAAE,OAAO,ENnD1B,GAAO;;AMoDtB,iBAAiC;EAAE,OAAO,ENvF1B,GAAO;;AMwFvB,iBAAiC;EAAE,OAAO,ENrP1B,GAAO",
-"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"],
-"names": [],
-"file": "font-awesome.css"
-}
diff --git a/library/font_awesome/css/font-awesome.min.css b/library/font_awesome/css/font-awesome.min.css
deleted file mode 100644
index 540440ce8..000000000
--- a/library/font_awesome/css/font-awesome.min.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
diff --git a/library/font_awesome/fonts/FontAwesome.otf b/library/font_awesome/fonts/FontAwesome.otf
deleted file mode 100644
index 401ec0f36..000000000
--- a/library/font_awesome/fonts/FontAwesome.otf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/fonts/fontawesome-webfont.eot b/library/font_awesome/fonts/fontawesome-webfont.eot
deleted file mode 100644
index e9f60ca95..000000000
--- a/library/font_awesome/fonts/fontawesome-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/fonts/fontawesome-webfont.svg b/library/font_awesome/fonts/fontawesome-webfont.svg
deleted file mode 100644
index 855c845e5..000000000
--- a/library/font_awesome/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,2671 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg>
-<metadata>
-Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016
- By ,,,
-Copyright Dave Gandy 2016. All rights reserved.
-</metadata>
-<defs>
-<font id="FontAwesome" horiz-adv-x="1536" >
- <font-face
- font-family="FontAwesome"
- font-weight="400"
- font-stretch="normal"
- units-per-em="1792"
- panose-1="0 0 0 0 0 0 0 0 0 0"
- ascent="1536"
- descent="-256"
- bbox="-1.02083 -256.962 2304.6 1537.02"
- underline-thickness="0"
- underline-position="0"
- unicode-range="U+0020-F500"
- />
-<missing-glyph horiz-adv-x="896"
-d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
- <glyph glyph-name=".notdef" horiz-adv-x="896"
-d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
- <glyph glyph-name=".null" horiz-adv-x="0"
- />
- <glyph glyph-name="nonmarkingreturn" horiz-adv-x="597"
- />
- <glyph glyph-name="space" unicode=" " horiz-adv-x="448"
- />
- <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="1792"
- />
- <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1792"
- />
- <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1792"
- />
- <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="1792"
- />
- <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1792"
- />
- <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1792"
- />
- <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="1792"
- />
- <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="1792"
- />
- <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="1792"
- />
- <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1792"
-d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
- <glyph glyph-name="music" unicode="&#xf001;"
-d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89
-t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
- <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664"
-d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5
-t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
- <glyph glyph-name="envelope" unicode="&#xf003;" horiz-adv-x="1792"
-d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13
-t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z
-M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792"
-d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600
-q-18 -18 -44 -18z" />
- <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664"
-d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455
-l502 -73q56 -9 56 -46z" />
- <glyph glyph-name="star_empty" unicode="&#xf006;" horiz-adv-x="1664"
-d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500
-l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
- <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280"
-d="M1280 137q0 -109 -62.5 -187t-150.5 -78h-854q-88 0 -150.5 78t-62.5 187q0 85 8.5 160.5t31.5 152t58.5 131t94 89t134.5 34.5q131 -128 313 -128t313 128q76 0 134.5 -34.5t94 -89t58.5 -131t31.5 -152t8.5 -160.5zM1024 1024q0 -159 -112.5 -271.5t-271.5 -112.5
-t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920"
-d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128
-q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45
-t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128
-q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19
-t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="th_large" unicode="&#xf009;" horiz-adv-x="1664"
-d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38
-h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
- <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792"
-d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
-h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192
-q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
- <glyph glyph-name="th_list" unicode="&#xf00b;" horiz-adv-x="1792"
-d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
-h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
- <glyph glyph-name="ok" unicode="&#xf00c;" horiz-adv-x="1792"
-d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
- <glyph glyph-name="remove" unicode="&#xf00d;" horiz-adv-x="1408"
-d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68
-t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
- <glyph glyph-name="zoom_in" unicode="&#xf00e;" horiz-adv-x="1664"
-d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224
-q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5
-t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
- <glyph glyph-name="zoom_out" unicode="&#xf010;" horiz-adv-x="1664"
-d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z
-M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z
-" />
- <glyph glyph-name="off" unicode="&#xf011;"
-d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5
-t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
- <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792"
-d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
-v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
- <glyph glyph-name="cog" unicode="&#xf013;"
-d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38
-q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13
-l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22
-q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
- <glyph glyph-name="trash" unicode="&#xf014;" horiz-adv-x="1408"
-d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576
-q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832
-q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
- <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1664"
-d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5
-l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
- <glyph glyph-name="file_alt" unicode="&#xf016;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-" />
- <glyph glyph-name="time" unicode="&#xf017;"
-d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1920"
-d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256
-q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
- <glyph glyph-name="download_alt" unicode="&#xf019;" horiz-adv-x="1664"
-d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136
-q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
- <glyph glyph-name="download" unicode="&#xf01a;"
-d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273
-t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="upload" unicode="&#xf01b;"
-d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198
-t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="inbox" unicode="&#xf01c;"
-d="M1023 576h316q-1 3 -2.5 8.5t-2.5 7.5l-212 496h-708l-212 -496q-1 -3 -2.5 -8.5t-2.5 -7.5h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552
-q25 -61 25 -123z" />
- <glyph glyph-name="play_circle" unicode="&#xf01d;"
-d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="repeat" unicode="&#xf01e;"
-d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q15 0 25 -9
-l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
- <glyph glyph-name="refresh" unicode="&#xf021;"
-d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117
-q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5
-q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
- <glyph glyph-name="list_alt" unicode="&#xf022;" horiz-adv-x="1792"
-d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z
-M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5
-t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47
-t47 -113z" />
- <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152"
-d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
- <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1792"
-d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48
-t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
- <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664"
-d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78
-t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5
-t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
- <glyph glyph-name="volume_off" unicode="&#xf026;" horiz-adv-x="768"
-d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
- <glyph glyph-name="volume_down" unicode="&#xf027;" horiz-adv-x="1152"
-d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
-t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
- <glyph glyph-name="volume_up" unicode="&#xf028;" horiz-adv-x="1664"
-d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
-t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5
-t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289
-t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
- <glyph glyph-name="qrcode" unicode="&#xf029;" horiz-adv-x="1408"
-d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z
-M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
- <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="1792"
-d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z
-M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
- <glyph glyph-name="tag" unicode="&#xf02b;"
-d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
-l715 -714q37 -39 37 -91z" />
- <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1920"
-d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
-l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
- <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664"
-d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23
-q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906
-q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5
-t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
- <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280"
-d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
- <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664"
-d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68
-v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
- <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920"
-d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136
-q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664"
-d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57
-q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -5 -0.5 -13.5t-0.5 -12.5q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5
-q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
- <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408"
-d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142
-q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5
-t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68 -0.5t68 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5
-t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
- <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024"
-d="M0 -126l17 85q22 7 61.5 16.5t72 19t59.5 23.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5
-q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
- <glyph glyph-name="text_height" unicode="&#xf034;" horiz-adv-x="1792"
-d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2
-t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5
-q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
-q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
- <glyph glyph-name="text_width" unicode="&#xf035;"
-d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1
-t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
-q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5
-t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49
-t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
- <glyph glyph-name="align_left" unicode="&#xf036;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45
-t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="align_center" unicode="&#xf037;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19
-h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
- <glyph glyph-name="align_right" unicode="&#xf038;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
-t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="align_justify" unicode="&#xf039;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
-t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
- <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792"
-d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5
-t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344
-q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
-t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192
-q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="indent_left" unicode="&#xf03b;" horiz-adv-x="1792"
-d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
-t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
-q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="indent_right" unicode="&#xf03c;" horiz-adv-x="1792"
-d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
-t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
-q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="facetime_video" unicode="&#xf03d;" horiz-adv-x="1792"
-d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5
-q39 -17 39 -59z" />
- <glyph glyph-name="picture" unicode="&#xf03e;" horiz-adv-x="1920"
-d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216
-q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="pencil" unicode="&#xf040;"
-d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38
-q53 0 91 -38l235 -234q37 -39 37 -91z" />
- <glyph glyph-name="map_marker" unicode="&#xf041;" horiz-adv-x="1024"
-d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
- <glyph glyph-name="adjust" unicode="&#xf042;"
-d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024"
-d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362
-q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
- <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="1792"
-d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
-q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92
-l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
- <glyph glyph-name="share" unicode="&#xf045;" horiz-adv-x="1664"
-d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832
-q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5
-t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
- <glyph glyph-name="check" unicode="&#xf046;" horiz-adv-x="1664"
-d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832
-q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110
-q24 -24 24 -57t-24 -57z" />
- <glyph glyph-name="move" unicode="&#xf047;" horiz-adv-x="1792"
-d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45
-t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
- <glyph glyph-name="step_backward" unicode="&#xf048;" horiz-adv-x="1024"
-d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19z" />
- <glyph glyph-name="fast_backward" unicode="&#xf049;" horiz-adv-x="1792"
-d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19l710 710
-q19 19 32 13t13 -32v-710q4 10 13 19z" />
- <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1664"
-d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q4 10 13 19z" />
- <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1408"
-d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
- <glyph glyph-name="pause" unicode="&#xf04c;"
-d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
- <glyph glyph-name="stop" unicode="&#xf04d;"
-d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
- <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1664"
-d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
- <glyph glyph-name="fast_forward" unicode="&#xf050;" horiz-adv-x="1792"
-d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19l-710 -710
-q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
- <glyph glyph-name="step_forward" unicode="&#xf051;" horiz-adv-x="1024"
-d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19z" />
- <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538"
-d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
- <glyph glyph-name="chevron_left" unicode="&#xf053;" horiz-adv-x="1280"
-d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
- <glyph glyph-name="chevron_right" unicode="&#xf054;" horiz-adv-x="1280"
-d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
- <glyph glyph-name="plus_sign" unicode="&#xf055;"
-d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5
-t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="minus_sign" unicode="&#xf056;"
-d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
-t103 -385.5z" />
- <glyph glyph-name="remove_sign" unicode="&#xf057;"
-d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19
-q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ok_sign" unicode="&#xf058;"
-d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="question_sign" unicode="&#xf059;"
-d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59
-q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="info_sign" unicode="&#xf05a;"
-d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23
-t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="screenshot" unicode="&#xf05b;"
-d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109
-q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143
-q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
- <glyph glyph-name="remove_circle" unicode="&#xf05c;"
-d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
-l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5
-t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ok_circle" unicode="&#xf05d;"
-d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198
-t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ban_circle" unicode="&#xf05e;"
-d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61
-t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
- <glyph glyph-name="arrow_left" unicode="&#xf060;"
-d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5
-t32.5 -90.5z" />
- <glyph glyph-name="arrow_right" unicode="&#xf061;"
-d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
- <glyph glyph-name="arrow_up" unicode="&#xf062;" horiz-adv-x="1664"
-d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651
-q37 -39 37 -91z" />
- <glyph glyph-name="arrow_down" unicode="&#xf063;" horiz-adv-x="1664"
-d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
- <glyph glyph-name="share_alt" unicode="&#xf064;" horiz-adv-x="1792"
-d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22
-t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
- <glyph glyph-name="resize_full" unicode="&#xf065;"
-d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332
-q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
- <glyph glyph-name="resize_small" unicode="&#xf066;"
-d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45
-t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
- <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408"
-d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
- <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408"
-d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
- <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1664"
-d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154
-q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
- <glyph glyph-name="exclamation_sign" unicode="&#xf06a;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192
-q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
- <glyph glyph-name="gift" unicode="&#xf06b;"
-d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320
-q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5
-t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
- <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792"
-d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268
-q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-43 0 -63.5 17.5t-45.5 59.5q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5
-t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
- <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408"
-d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1
-q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
- <glyph glyph-name="eye_open" unicode="&#xf06e;" horiz-adv-x="1792"
-d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5
-t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
- <glyph glyph-name="eye_close" unicode="&#xf070;" horiz-adv-x="1792"
-d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9
-q-106 -189 -316 -567t-315 -566l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5
-q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z
-" />
- <glyph glyph-name="warning_sign" unicode="&#xf071;" horiz-adv-x="1792"
-d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185
-q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
- <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1408"
-d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9
-q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
- <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664"
-d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
-M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64
-q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47
-h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792"
-d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1
-t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5
-v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111
-t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
- <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792"
-d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281
-q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
- <glyph glyph-name="magnet" unicode="&#xf076;"
-d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384
-q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
- <glyph glyph-name="chevron_up" unicode="&#xf077;" horiz-adv-x="1792"
-d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
- <glyph glyph-name="chevron_down" unicode="&#xf078;" horiz-adv-x="1792"
-d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
- <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920"
-d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -10 7 -21
-zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z
-" />
- <glyph glyph-name="shopping_cart" unicode="&#xf07a;" horiz-adv-x="1664"
-d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45
-t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
- <glyph glyph-name="folder_close" unicode="&#xf07b;" horiz-adv-x="1664"
-d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
- <glyph glyph-name="folder_open" unicode="&#xf07c;" horiz-adv-x="1920"
-d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5
-t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
- <glyph glyph-name="resize_vertical" unicode="&#xf07d;" horiz-adv-x="768"
-d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
- <glyph glyph-name="resize_horizontal" unicode="&#xf07e;" horiz-adv-x="1792"
-d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
- <glyph glyph-name="bar_chart" unicode="&#xf080;" horiz-adv-x="2048"
-d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
- <glyph glyph-name="twitter_sign" unicode="&#xf081;"
-d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4
-q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5
-t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="facebook_sign" unicode="&#xf082;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960
-q0 119 84.5 203.5t203.5 84.5h960z" />
- <glyph glyph-name="camera_retro" unicode="&#xf083;" horiz-adv-x="1792"
-d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5
-t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280
-q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1792"
-d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26
-l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5
-t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
- <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920"
-d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5
-t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -11 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5
-l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7
-l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -8 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31
-q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20
-t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68
-q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70
-q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
- <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792"
-d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224
-q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7
-q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
- <glyph glyph-name="thumbs_up_alt" unicode="&#xf087;"
-d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5
-t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769
-q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128
-q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
- <glyph glyph-name="thumbs_down_alt" unicode="&#xf088;"
-d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 31 18 69q0 37 -17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5
-t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z
-M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5
-h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -73 49 -163z" />
- <glyph glyph-name="star_half" unicode="&#xf089;" horiz-adv-x="896"
-d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
- <glyph glyph-name="heart_empty" unicode="&#xf08a;" horiz-adv-x="1792"
-d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559
-q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5
-q224 0 351 -124t127 -344z" />
- <glyph glyph-name="signout" unicode="&#xf08b;" horiz-adv-x="1664"
-d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704
-q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
- <glyph glyph-name="linkedin_sign" unicode="&#xf08c;"
-d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5
-q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="pushpin" unicode="&#xf08d;" horiz-adv-x="1152"
-d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38
-t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
- <glyph glyph-name="external_link" unicode="&#xf08e;" horiz-adv-x="1792"
-d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320
-q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
- <glyph glyph-name="signin" unicode="&#xf090;"
-d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5
-q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664"
-d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91
-t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96
-q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
- <glyph glyph-name="github_sign" unicode="&#xf092;"
-d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4
-q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4
-t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16
-q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="upload_alt" unicode="&#xf093;" horiz-adv-x="1664"
-d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92
-t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
- <glyph glyph-name="lemon" unicode="&#xf094;"
-d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5
-q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44
-q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5
-q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -13 2 -25t3.5 -16.5t7.5 -20.5t8 -20q16 -40 25 -118.5t9 -136.5z" />
- <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408"
-d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -53 3.5t-57.5 12.5t-47 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-127 79 -264 216t-216 264q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47t-12.5 57.5t-3.5 53q0 92 51 186
-q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174q2 -1 19 -11.5t24 -14
-t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
- <glyph glyph-name="check_empty" unicode="&#xf096;" horiz-adv-x="1408"
-d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
-q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="bookmark_empty" unicode="&#xf097;" horiz-adv-x="1280"
-d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289
-q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
- <glyph glyph-name="phone_sign" unicode="&#xf098;"
-d="M1280 343q0 11 -2 16t-18 16.5t-40.5 25t-47.5 26.5t-45.5 25t-28.5 15q-5 3 -19 13t-25 15t-21 5q-15 0 -36.5 -20.5t-39.5 -45t-38.5 -45t-33.5 -20.5q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170 126.5t-127 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5
-t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5
-t320.5 -216.5q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z
-" />
- <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1664"
-d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41
-q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
- <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="1024"
-d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
- <glyph glyph-name="github" unicode="&#xf09b;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24
-q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5
-t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12
-q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z
-M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
- <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664"
-d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5
-t316.5 -131.5t131.5 -316.5z" />
- <glyph glyph-name="credit_card" unicode="&#xf09d;" horiz-adv-x="1920"
-d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608
-q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
- <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408"
-d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5
-t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294
-q187 -186 294 -425.5t120 -501.5z" />
- <glyph glyph-name="hdd" unicode="&#xf0a0;"
-d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5
-h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75
-l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
- <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792"
-d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5
-t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
- <glyph glyph-name="bell" unicode="&#xf0a2;" horiz-adv-x="1792"
-d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z
-M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5
-t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
- <glyph glyph-name="certificate" unicode="&#xf0a3;"
-d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70
-l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70
-l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
- <glyph glyph-name="hand_right" unicode="&#xf0a4;" horiz-adv-x="1792"
-d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106
-q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43
-q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5
-t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
- <glyph glyph-name="hand_left" unicode="&#xf0a5;" horiz-adv-x="1792"
-d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-8 9 -12 14q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5
-t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45z
-M1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67
-q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="hand_up" unicode="&#xf0a6;"
-d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576
-q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5
-t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76
-q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
- <glyph glyph-name="hand_down" unicode="&#xf0a7;"
-d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33
-t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580
-q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100
-q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
- <glyph glyph-name="circle_arrow_left" unicode="&#xf0a8;"
-d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="circle_arrow_right" unicode="&#xf0a9;"
-d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="circle_arrow_up" unicode="&#xf0aa;"
-d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="circle_arrow_down" unicode="&#xf0ab;"
-d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="globe" unicode="&#xf0ac;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11
-q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 11t-9.5 10q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5
-q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5
-q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5
-t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-4 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3
-q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25
-q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5
-t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5
-t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10.5t17 -19.5q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21
-q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5
-q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3
-q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5
-t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q8 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5
-q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7
-q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
- <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1664"
-d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5
-t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
- <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792"
-d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19
-t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
- <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408"
-d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
- <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792"
-d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68
-t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
- <glyph glyph-name="fullscreen" unicode="&#xf0b2;"
-d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144
-l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z
-" />
- <glyph glyph-name="group" unicode="&#xf0c0;" horiz-adv-x="1920"
-d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5
-t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75
-t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5
-t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
- <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1664"
-d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26
-l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15
-t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207
-q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
- <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920"
-d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z
-" />
- <glyph glyph-name="beaker" unicode="&#xf0c3;" horiz-adv-x="1664"
-d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
- <glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="1792"
-d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84
-q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148
-q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108
-q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6
-q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
- <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="1792"
-d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299
-h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
- <glyph glyph-name="paper_clip" unicode="&#xf0c6;" horiz-adv-x="1408"
-d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181
-l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235
-z" />
- <glyph glyph-name="save" unicode="&#xf0c7;"
-d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5
-h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
- <glyph glyph-name="sign_blank" unicode="&#xf0c8;"
-d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="reorder" unicode="&#xf0c9;"
-d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45
-t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
- <glyph glyph-name="ul" unicode="&#xf0ca;" horiz-adv-x="1792"
-d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
-t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z
-M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="ol" unicode="&#xf0cb;" horiz-adv-x="1792"
-d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362
-q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5
-t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 121.5t0.5 121.5v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216
-q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792"
-d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 98 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6
-l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -56 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23
-l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
- <glyph glyph-name="underline" unicode="&#xf0cd;"
-d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47
-q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41
-q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472
-q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
- <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664"
-d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23
-v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192
-q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192
-q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113
-z" />
- <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1664"
-d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276
-l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
- <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1792"
-d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5
-t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38
-t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
- <glyph glyph-name="pinterest" unicode="&#xf0d2;"
-d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134
-q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33
-q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="pinterest_sign" unicode="&#xf0d3;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5
-t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5
-t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
- <glyph glyph-name="google_plus_sign" unicode="&#xf0d4;"
-d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585
-h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="google_plus" unicode="&#xf0d5;" horiz-adv-x="2304"
-d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62
-q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
- <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920"
-d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384
-v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
- <glyph glyph-name="caret_down" unicode="&#xf0d7;" horiz-adv-x="1024"
-d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
- <glyph glyph-name="caret_up" unicode="&#xf0d8;" horiz-adv-x="1024"
-d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="caret_left" unicode="&#xf0d9;" horiz-adv-x="640"
-d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
- <glyph glyph-name="caret_right" unicode="&#xf0da;" horiz-adv-x="640"
-d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664"
-d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
- <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024"
-d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="sort_down" unicode="&#xf0dd;" horiz-adv-x="1024"
-d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
- <glyph glyph-name="sort_up" unicode="&#xf0de;" horiz-adv-x="1024"
-d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="envelope_alt" unicode="&#xf0e0;" horiz-adv-x="1792"
-d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123
-q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
- <glyph glyph-name="linkedin" unicode="&#xf0e1;"
-d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329
-q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
- <glyph glyph-name="undo" unicode="&#xf0e2;"
-d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
-t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
- <glyph glyph-name="legal" unicode="&#xf0e3;" horiz-adv-x="1792"
-d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5
-t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14
-q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28
-q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
- <glyph glyph-name="dashboard" unicode="&#xf0e4;" horiz-adv-x="1792"
-d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5
-t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5
-t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29
-q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="comment_alt" unicode="&#xf0e5;" horiz-adv-x="1792"
-d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640
-q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5
-t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
- <glyph glyph-name="comments_alt" unicode="&#xf0e6;" horiz-adv-x="1792"
-d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257
-t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5
-t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129
-q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
- <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896"
-d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
- <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792"
-d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320
-q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68
-z" />
- <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664"
-d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97
-q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69
-q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
- <glyph glyph-name="paste" unicode="&#xf0ea;" horiz-adv-x="1792"
-d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28
-h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
- <glyph glyph-name="light_bulb" unicode="&#xf0eb;" horiz-adv-x="1024"
-d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134
-q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47
-q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5
-t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
- <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792"
-d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9
-q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
- <glyph glyph-name="cloud_download" unicode="&#xf0ed;" horiz-adv-x="1920"
-d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
-q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
- <glyph glyph-name="cloud_upload" unicode="&#xf0ee;" horiz-adv-x="1920"
-d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
-q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
- <glyph glyph-name="user_md" unicode="&#xf0f0;" horiz-adv-x="1408"
-d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56
-t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68
-t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
-t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408"
-d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48
-t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252
-t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
- <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792"
-d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66
-t66 -158z" />
- <glyph glyph-name="bell_alt" unicode="&#xf0f3;" horiz-adv-x="1792"
-d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5
-t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
- <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1920"
-d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45
-t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="food" unicode="&#xf0f5;" horiz-adv-x="1408"
-d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45
-t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
- <glyph glyph-name="file_text_alt" unicode="&#xf0f6;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704
-q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
- <glyph glyph-name="building" unicode="&#xf0f7;" horiz-adv-x="1408"
-d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
- <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="1408"
-d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5
-t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320
-v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
- <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1920"
-d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5
-t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152
-q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792"
-d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32
-q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
- <glyph glyph-name="fighter_jet" unicode="&#xf0fb;" horiz-adv-x="1920"
-d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96
-q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q128 -28 200 -52t80 -34z" />
- <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1664"
-d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
- <glyph glyph-name="h_sign" unicode="&#xf0fd;"
-d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="f0fe" unicode="&#xf0fe;"
-d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="double_angle_left" unicode="&#xf100;" horiz-adv-x="1024"
-d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
-t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
- <glyph glyph-name="double_angle_right" unicode="&#xf101;" horiz-adv-x="1024"
-d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23
-l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="double_angle_up" unicode="&#xf102;" horiz-adv-x="1152"
-d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393
-q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="double_angle_down" unicode="&#xf103;" horiz-adv-x="1152"
-d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
-t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
- <glyph glyph-name="angle_left" unicode="&#xf104;" horiz-adv-x="640"
-d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
- <glyph glyph-name="angle_right" unicode="&#xf105;" horiz-adv-x="640"
-d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="angle_up" unicode="&#xf106;" horiz-adv-x="1152"
-d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="angle_down" unicode="&#xf107;" horiz-adv-x="1152"
-d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
- <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920"
-d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19
-t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920"
-d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z
-M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
- <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152"
-d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832
-q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
- <glyph glyph-name="mobile_phone" unicode="&#xf10b;" horiz-adv-x="768"
-d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136
-q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
- <glyph glyph-name="circle_blank" unicode="&#xf10c;"
-d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103
-t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="quote_left" unicode="&#xf10d;" horiz-adv-x="1664"
-d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z
-M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
- <glyph glyph-name="quote_right" unicode="&#xf10e;" horiz-adv-x="1664"
-d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216
-v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
- <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1792"
-d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5
-t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z
-M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5
-q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
- <glyph glyph-name="circle" unicode="&#xf111;"
-d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792"
-d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19
-l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
- <glyph glyph-name="github_alt" unicode="&#xf113;" horiz-adv-x="1664"
-d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320
-q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86
-t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218
-q0 -87 -27 -168q136 -160 136 -398z" />
- <glyph glyph-name="folder_close_alt" unicode="&#xf114;" horiz-adv-x="1664"
-d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320
-q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
- <glyph glyph-name="folder_open_alt" unicode="&#xf115;" horiz-adv-x="1920"
-d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68
-v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z
-" />
- <glyph glyph-name="expand_alt" unicode="&#xf116;" horiz-adv-x="1792"
- />
- <glyph glyph-name="collapse_alt" unicode="&#xf117;" horiz-adv-x="1792"
- />
- <glyph glyph-name="smile" unicode="&#xf118;"
-d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
-t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5
-t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="frown" unicode="&#xf119;"
-d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
-t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204
-t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="meh" unicode="&#xf11a;"
-d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
-t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920"
-d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
-t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150
-t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
- <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="1920"
-d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16
-h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16
-h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96
-q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896
-h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="flag_alt" unicode="&#xf11d;" horiz-adv-x="1792"
-d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9
-h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102
-q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
- <glyph glyph-name="flag_checkered" unicode="&#xf11e;" horiz-adv-x="1792"
-d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2
-q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266
-q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8
-q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
- <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1664"
-d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9
-t9 -23z" />
- <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1920"
-d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5
-l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
- <glyph glyph-name="reply_all" unicode="&#xf122;" horiz-adv-x="1792"
-d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1
-q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
- <glyph glyph-name="star_half_empty" unicode="&#xf123;" horiz-adv-x="1664"
-d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5
-l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
- <glyph glyph-name="location_arrow" unicode="&#xf124;" horiz-adv-x="1408"
-d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
- <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664"
-d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23
-v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
- <glyph glyph-name="code_fork" unicode="&#xf126;" horiz-adv-x="1024"
-d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5
-q-2 -287 -226 -414q-67 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497
-q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
- <glyph glyph-name="unlink" unicode="&#xf127;" horiz-adv-x="1664"
-d="M439 265l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320
-q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18
-l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9
-t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
- <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="1024"
-d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5
-t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
- <glyph glyph-name="_279" unicode="&#xf129;" horiz-adv-x="640"
-d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192
-q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
- <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="640"
-d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
- <glyph glyph-name="superscript" unicode="&#xf12b;"
-d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
-M1534 846v-206h-514l-3 27q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5
-t-65.5 -51.5t-30.5 -63h232v80h126z" />
- <glyph glyph-name="subscript" unicode="&#xf12c;"
-d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
-M1536 -50v-206h-514l-4 27q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73
-h232v80h126z" />
- <glyph glyph-name="_283" unicode="&#xf12d;" horiz-adv-x="1920"
-d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
- <glyph glyph-name="puzzle_piece" unicode="&#xf12e;" horiz-adv-x="1664"
-d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5
-t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89
-q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117
-q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
- <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152"
-d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5
-t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
- <glyph glyph-name="microphone_off" unicode="&#xf131;" horiz-adv-x="1408"
-d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128
-q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23
-t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
- <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280"
-d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150
-t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="calendar_empty" unicode="&#xf133;" horiz-adv-x="1664"
-d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
-q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="fire_extinguisher" unicode="&#xf134;" horiz-adv-x="1408"
-d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800
-q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113
-q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
- <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1664"
-d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1
-q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
- <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1792"
-d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
- <glyph glyph-name="chevron_sign_left" unicode="&#xf137;"
-d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="chevron_sign_right" unicode="&#xf138;"
-d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="chevron_sign_up" unicode="&#xf139;"
-d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="chevron_sign_down" unicode="&#xf13a;"
-d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408"
-d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
- <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1792"
-d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
- <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792"
-d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352
-q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19
-t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
- <glyph glyph-name="unlock_alt" unicode="&#xf13e;" horiz-adv-x="1152"
-d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181
-v-320h736z" />
- <glyph glyph-name="bullseye" unicode="&#xf140;"
-d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150
-t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ellipsis_horizontal" unicode="&#xf141;" horiz-adv-x="1408"
-d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
- <glyph glyph-name="ellipsis_vertical" unicode="&#xf142;" horiz-adv-x="384"
-d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
- <glyph glyph-name="_303" unicode="&#xf143;"
-d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 233 -176.5 396.5t-396.5 176.5q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128
-q13 0 23 10t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="play_sign" unicode="&#xf144;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56
-q16 -8 32 -8q17 0 32 9z" />
- <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1792"
-d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136
-t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
- <glyph glyph-name="minus_sign_alt" unicode="&#xf146;"
-d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
-t84.5 -203.5z" />
- <glyph glyph-name="check_minus" unicode="&#xf147;" horiz-adv-x="1408"
-d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5
-t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="level_up" unicode="&#xf148;" horiz-adv-x="1024"
-d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
- <glyph glyph-name="level_down" unicode="&#xf149;" horiz-adv-x="1024"
-d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
- <glyph glyph-name="check_sign" unicode="&#xf14a;"
-d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5
-t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="edit_sign" unicode="&#xf14b;"
-d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120
-v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_312" unicode="&#xf14c;"
-d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960
-q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="share_sign" unicode="&#xf14d;"
-d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q11 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5
-t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="compass" unicode="&#xf14e;"
-d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="collapse" unicode="&#xf150;"
-d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120
-v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="collapse_top" unicode="&#xf151;"
-d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_317" unicode="&#xf152;"
-d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5
-t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1024"
-d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9
-t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26
-l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
- <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1024"
-d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7
-q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
- <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="1024"
-d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43
-t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5
-t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50
-t53 -63.5t31.5 -76.5t13 -94z" />
- <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898"
-d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102
-q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
- <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1027"
-d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61
-l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
- <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280"
-d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128
-q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
- <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792"
-d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23
-t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28
-q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
- <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1280"
-d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164
-l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30
-t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
- <glyph glyph-name="file" unicode="&#xf15b;"
-d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
- <glyph glyph-name="file_text" unicode="&#xf15c;"
-d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704
-q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
- <glyph glyph-name="sort_by_alphabet" unicode="&#xf15d;" horiz-adv-x="1664"
-d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23
-v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162
-l230 -662h70z" />
- <glyph glyph-name="_329" unicode="&#xf15e;" horiz-adv-x="1664"
-d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150
-v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248
-v119h121z" />
- <glyph glyph-name="sort_by_attributes" unicode="&#xf160;" horiz-adv-x="1792"
-d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832
-q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256
-q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
- <glyph glyph-name="sort_by_attributes_alt" unicode="&#xf161;" horiz-adv-x="1792"
-d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192
-q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832
-q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
- <glyph glyph-name="sort_by_order" unicode="&#xf162;"
-d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23
-zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5
-t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
- <glyph glyph-name="sort_by_order_alt" unicode="&#xf163;"
-d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9
-t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13
-q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
- <glyph glyph-name="_334" unicode="&#xf164;" horiz-adv-x="1664"
-d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76
-q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5
-t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
- <glyph glyph-name="_335" unicode="&#xf165;" horiz-adv-x="1664"
-d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135
-t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121
-t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
- <glyph glyph-name="youtube_sign" unicode="&#xf166;"
-d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 17 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15
-q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38
-q21 -29 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5
-q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78q7 -23 23 -69l24 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38
-q-51 0 -78 -38q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5
-h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="youtube" unicode="&#xf167;"
-d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73
-q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51
-q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99
-q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-38 -51 -106 -51q-67 0 -105 51
-q-28 38 -28 118v175q0 80 28 117q38 51 105 51q68 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
- <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408"
-d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942
-q25 45 64 45h241q22 0 31 -15z" />
- <glyph glyph-name="xing_sign" unicode="&#xf169;"
-d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1
-l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="youtube_play" unicode="&#xf16a;" horiz-adv-x="1792"
-d="M711 408l484 250l-484 253v-503zM896 1270q168 0 324.5 -4.5t229.5 -9.5l73 -4q1 0 17 -1.5t23 -3t23.5 -4.5t28.5 -8t28 -13t31 -19.5t29 -26.5q6 -6 15.5 -18.5t29 -58.5t26.5 -101q8 -64 12.5 -136.5t5.5 -113.5v-40v-136q1 -145 -18 -290q-7 -55 -25 -99.5t-32 -61.5
-l-14 -17q-14 -15 -29 -26.5t-31 -19t-28 -12.5t-28.5 -8t-24 -4.5t-23 -3t-16.5 -1.5q-251 -19 -627 -19q-207 2 -359.5 6.5t-200.5 7.5l-49 4l-36 4q-36 5 -54.5 10t-51 21t-56.5 41q-6 6 -15.5 18.5t-29 58.5t-26.5 101q-8 64 -12.5 136.5t-5.5 113.5v40v136
-q-1 145 18 290q7 55 25 99.5t32 61.5l14 17q14 15 29 26.5t31 19.5t28 13t28.5 8t23.5 4.5t23 3t17 1.5q251 18 627 18z" />
- <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1792"
-d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
- <glyph glyph-name="stackexchange" unicode="&#xf16c;"
-d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
- <glyph glyph-name="instagram" unicode="&#xf16d;"
-d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270
-q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5
-t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317
-q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
- <glyph glyph-name="flickr" unicode="&#xf16e;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150
-t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
- <glyph glyph-name="adn" unicode="&#xf170;"
-d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="f171" unicode="&#xf171;" horiz-adv-x="1408"
-d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22
-t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18
-t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5
-t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
- <glyph glyph-name="bitbucket_sign" unicode="&#xf172;"
-d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5
-t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z
-M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120
-v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="1024"
-d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14
-q78 2 134 29z" />
- <glyph glyph-name="tumblr_sign" unicode="&#xf174;"
-d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z
-M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="long_arrow_down" unicode="&#xf175;" horiz-adv-x="768"
-d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
- <glyph glyph-name="long_arrow_up" unicode="&#xf176;" horiz-adv-x="768"
-d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
- <glyph glyph-name="long_arrow_left" unicode="&#xf177;" horiz-adv-x="1792"
-d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
- <glyph glyph-name="long_arrow_right" unicode="&#xf178;" horiz-adv-x="1792"
-d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
- <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1408"
-d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q113 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65
-q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
- <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664"
-d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
- <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408"
-d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30
-t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5
-h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
- <glyph glyph-name="linux" unicode="&#xf17c;"
-d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-10 -11 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z
-M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7
-q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15
-q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5
-t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19
-q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63
-q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18q-2 -1 -4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92
-q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152
-q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-6 0 -8 -2t0 -4
-t5 -3q14 -4 18 -31q0 -3 8 2q2 2 2 3zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5
-t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43
-q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49
-t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54
-q110 143 124 195q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5
-t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5
-t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
- <glyph glyph-name="dribble" unicode="&#xf17d;"
-d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81
-t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19
-q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -5 6.5 -17t7.5 -17q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6
-t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="skype" unicode="&#xf17e;"
-d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5
-t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5
-q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80
-q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
- <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1280"
-d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z
-M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324
-l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
- <glyph glyph-name="trello" unicode="&#xf181;"
-d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408
-q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
- <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280"
-d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43
-q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024"
-d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z
-M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="gittip" unicode="&#xf184;"
-d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="sun" unicode="&#xf185;" horiz-adv-x="1792"
-d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4
-l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94
-q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
- <glyph glyph-name="_366" unicode="&#xf186;"
-d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61
-t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
- <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1792"
-d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536
-q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
- <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1664"
-d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207
-q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19
-t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
- <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1920"
-d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-40 -51 -55 -72t-30.5 -49.5t-12 -42t13 -34.5t32.5 -43t57 -53q4 -2 5 -4q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58
-t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6
-q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q16 19 38 30q53 26 239 24
-q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2
-q39 5 64 -2.5t31 -16.5z" />
- <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792"
-d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12
-q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422
-q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178
-q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z
-M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
- <glyph glyph-name="renren" unicode="&#xf18b;"
-d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495
-q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
- <glyph glyph-name="_372" unicode="&#xf18c;" horiz-adv-x="1408"
-d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5
-t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56
-t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -4 1 -50t-1 -72q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5
-t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
- <glyph glyph-name="stack_exchange" unicode="&#xf18d;" horiz-adv-x="1280"
-d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z
-" />
- <glyph glyph-name="_374" unicode="&#xf18e;"
-d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
-t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="arrow_circle_alt_left" unicode="&#xf190;"
-d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
-t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_376" unicode="&#xf191;"
-d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z
-M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="dot_circle_alt" unicode="&#xf192;"
-d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5
-t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_378" unicode="&#xf193;" horiz-adv-x="1664"
-d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128
-q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 17 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
- <glyph glyph-name="vimeo_square" unicode="&#xf194;"
-d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179
-q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_380" unicode="&#xf195;" horiz-adv-x="1152"
-d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160
-q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
- <glyph glyph-name="plus_square_o" unicode="&#xf196;" horiz-adv-x="1408"
-d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832
-q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_382" unicode="&#xf197;" horiz-adv-x="2176"
-d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40
-t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29
-q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
- <glyph glyph-name="_383" unicode="&#xf198;" horiz-adv-x="1664"
-d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9
-q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102
-t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
- <glyph glyph-name="_384" unicode="&#xf199;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69
-q-47 32 -142 92.5t-142 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13
-t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
- <glyph glyph-name="_385" unicode="&#xf19a;" horiz-adv-x="1792"
-d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5
-t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21
-t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286
-t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273
-t273 -182.5t331.5 -68z" />
- <glyph glyph-name="_386" unicode="&#xf19b;" horiz-adv-x="1792"
-d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
- <glyph glyph-name="_387" unicode="&#xf19c;" horiz-adv-x="2048"
-d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64
-q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
- <glyph glyph-name="_388" unicode="&#xf19d;" horiz-adv-x="2304"
-d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433
-q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
- <glyph glyph-name="_389" unicode="&#xf19e;"
-d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q44 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0
-q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
- <glyph glyph-name="uniF1A0" unicode="&#xf1a0;"
-d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5
-t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
- <glyph glyph-name="f1a1" unicode="&#xf1a1;" horiz-adv-x="1792"
-d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26
-t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37
-q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191
-t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_392" unicode="&#xf1a2;"
-d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54
-q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83
-q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
-q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_393" unicode="&#xf1a3;"
-d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150
-v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103
-t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="f1a4" unicode="&#xf1a4;" horiz-adv-x="1920"
-d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328
-v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
- <glyph glyph-name="_395" unicode="&#xf1a5;"
-d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
-t84.5 -203.5z" />
- <glyph glyph-name="_396" unicode="&#xf1a6;" horiz-adv-x="2048"
-d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
-v-369h123z" />
- <glyph glyph-name="_397" unicode="&#xf1a7;"
-d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101
-v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
-q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_398" unicode="&#xf1a8;" horiz-adv-x="2038"
-d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14
-q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24
-q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33
-q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5
-t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43
-q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5
-t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13
-t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
- <glyph glyph-name="_399" unicode="&#xf1a9;"
-d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10
-q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14
-q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14
-t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44
-q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
- <glyph glyph-name="_400" unicode="&#xf1aa;"
-d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z
-M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5
-t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5
-q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126
-t135.5 51q85 0 145 -60.5t60 -145.5z" />
- <glyph glyph-name="f1ab" unicode="&#xf1ab;"
-d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5
-q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28
-q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z
-M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11
-q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q107 36 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5
-q20 0 20 -21v-418z" />
- <glyph glyph-name="_402" unicode="&#xf1ac;" horiz-adv-x="1792"
-d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48
-l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23
-t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128
-q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128
-q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
- <glyph glyph-name="_403" unicode="&#xf1ad;"
-d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9
-t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64
-q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
-q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9
-t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64
-q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
-q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9
-t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
- <glyph glyph-name="_404" unicode="&#xf1ae;" horiz-adv-x="1280"
-d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68q29 28 68.5 28t67.5 -28l228 -228h368l228 228q28 28 68 28t68 -28q28 -29 28 -68.5t-28 -67.5zM864 1152
-q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="uniF1B1" unicode="&#xf1b0;" horiz-adv-x="1664"
-d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5
-q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819
-q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5
-t100.5 134t141.5 55.5z" />
- <glyph glyph-name="_406" unicode="&#xf1b1;" horiz-adv-x="768"
-d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
- <glyph glyph-name="_407" unicode="&#xf1b2;" horiz-adv-x="1792"
-d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z
-" />
- <glyph glyph-name="_408" unicode="&#xf1b3;" horiz-adv-x="2304"
-d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67
-t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-4 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70
-v-400l434 -186q36 -16 57 -48t21 -70z" />
- <glyph glyph-name="_409" unicode="&#xf1b4;" horiz-adv-x="2048"
-d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658
-q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204
-q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
- <glyph glyph-name="_410" unicode="&#xf1b5;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5
-t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217
-t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
- <glyph glyph-name="_411" unicode="&#xf1b6;" horiz-adv-x="1792"
-d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5
-q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89
-q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
- <glyph glyph-name="_412" unicode="&#xf1b7;"
-d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5
-q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5
-q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z
-" />
- <glyph glyph-name="_413" unicode="&#xf1b8;" horiz-adv-x="1792"
-d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188
-l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5
-t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1
-q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
- <glyph glyph-name="_414" unicode="&#xf1b9;" horiz-adv-x="2048"
-d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384
-q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5
-l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="_415" unicode="&#xf1ba;" horiz-adv-x="2048"
-d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5
-t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z
-M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
- <glyph glyph-name="_416" unicode="&#xf1bb;"
-d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384
-q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
- <glyph glyph-name="_417" unicode="&#xf1bc;"
-d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64
-q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37
-q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_418" unicode="&#xf1bd;" horiz-adv-x="1024"
-d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
- <glyph glyph-name="_419" unicode="&#xf1be;" horiz-adv-x="2304"
-d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11
-q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245
-q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785
-l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242
-q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236
-q0 -11 -8 -19t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786
-q-13 2 -22 11t-9 22v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
- <glyph glyph-name="uniF1C0" unicode="&#xf1c0;"
-d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127
-t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5
-t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
- <glyph glyph-name="uniF1C1" unicode="&#xf1c1;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197
-q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8
-q-1 1 -1 2q-1 2 -1 3q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
- <glyph glyph-name="_422" unicode="&#xf1c2;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4q0 3 -0.5 6.5t-1.5 8t-1 6.5q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5
-t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300z" />
- <glyph glyph-name="_423" unicode="&#xf1c3;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107
-h-290v-107h68l189 -272l-194 -283h-68z" />
- <glyph glyph-name="_424" unicode="&#xf1c4;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
- <glyph glyph-name="_425" unicode="&#xf1c5;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
- <glyph glyph-name="_426" unicode="&#xf1c6;"
-d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400
-v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79
-q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
- <glyph glyph-name="_427" unicode="&#xf1c7;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5
-q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
- <glyph glyph-name="_428" unicode="&#xf1c8;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
- <glyph glyph-name="_429" unicode="&#xf1c9;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243
-l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
- <glyph glyph-name="_430" unicode="&#xf1ca;"
-d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406
-q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
- <glyph glyph-name="_431" unicode="&#xf1cb;" horiz-adv-x="1792"
-d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
-q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
- <glyph glyph-name="_432" unicode="&#xf1cc;" horiz-adv-x="2048"
-d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94
-q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55
-t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97l93 -108q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z" />
- <glyph glyph-name="_433" unicode="&#xf1cd;" horiz-adv-x="1792"
-d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194
-q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5
-t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
- <glyph glyph-name="_434" unicode="&#xf1ce;" horiz-adv-x="1792"
-d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5
-t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
- <glyph glyph-name="uniF1D0" unicode="&#xf1d0;" horiz-adv-x="1792"
-d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41
-t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170
-t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136
-q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
- <glyph glyph-name="uniF1D1" unicode="&#xf1d1;" horiz-adv-x="1792"
-d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251
-l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162
-q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33
-q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5
-t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
-t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF1D2" unicode="&#xf1d2;"
-d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85
-q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392
-q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072
-q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_438" unicode="&#xf1d3;" horiz-adv-x="1792"
-d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58
-q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47
-q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171
-v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
- <glyph glyph-name="_439" unicode="&#xf1d4;"
-d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="uniF1D5" unicode="&#xf1d5;" horiz-adv-x="1280"
-d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5
-t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153
-t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
- <glyph glyph-name="uniF1D6" unicode="&#xf1d6;" horiz-adv-x="1792"
-d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5
-q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20
-t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5
-t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
- <glyph glyph-name="uniF1D7" unicode="&#xf1d7;" horiz-adv-x="2048"
-d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25
-q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5
-q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109
-q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
- <glyph glyph-name="_443" unicode="&#xf1d8;" horiz-adv-x="1792"
-d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
- <glyph glyph-name="_444" unicode="&#xf1d9;" horiz-adv-x="1792"
-d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137
-l863 639l-478 -797z" />
- <glyph glyph-name="_445" unicode="&#xf1da;"
-d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
-t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23
-t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_446" unicode="&#xf1db;"
-d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_447" unicode="&#xf1dc;" horiz-adv-x="1792"
-d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15
-t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2
-t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160
-q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5
-q0 -26 -12 -48t-36 -22z" />
- <glyph glyph-name="_448" unicode="&#xf1dd;" horiz-adv-x="1280"
-d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179
-q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
- <glyph glyph-name="_449" unicode="&#xf1de;"
-d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256
-q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
- <glyph glyph-name="uniF1E0" unicode="&#xf1e0;"
-d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5
-t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
- <glyph glyph-name="_451" unicode="&#xf1e1;"
-d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5
-t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_452" unicode="&#xf1e2;" horiz-adv-x="1792"
-d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5
-t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91
-q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9
-t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
- <glyph glyph-name="_453" unicode="&#xf1e3;" horiz-adv-x="1792"
-d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323
-l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
- <glyph glyph-name="_454" unicode="&#xf1e4;" horiz-adv-x="1792"
-d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
-v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192
-q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23
-zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5
-t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
- <glyph glyph-name="_455" unicode="&#xf1e5;" horiz-adv-x="1792"
-d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z
-M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_456" unicode="&#xf1e6;" horiz-adv-x="1792"
-d="M1755 1083q37 -38 37 -90.5t-37 -90.5l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234
-l401 400q38 37 91 37t90 -37z" />
- <glyph glyph-name="_457" unicode="&#xf1e7;" horiz-adv-x="1792"
-d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5
-t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z
-M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q4 -2 11.5 -7
-t10.5 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
- <glyph glyph-name="_458" unicode="&#xf1e8;" horiz-adv-x="1792"
-d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
- <glyph glyph-name="_459" unicode="&#xf1e9;"
-d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36
-q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q71 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5
-t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87
-q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
- <glyph glyph-name="_460" unicode="&#xf1ea;" horiz-adv-x="2048"
-d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19
-t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
- <glyph glyph-name="_461" unicode="&#xf1eb;" horiz-adv-x="2048"
-d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121
-q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z
-M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
- <glyph glyph-name="_462" unicode="&#xf1ec;" horiz-adv-x="1792"
-d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
-t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5
-t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5
-t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
-M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38
-h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_463" unicode="&#xf1ed;"
-d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246
-q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598
-q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
- <glyph glyph-name="_464" unicode="&#xf1ee;" horiz-adv-x="1792"
-d="M441 864q33 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640
-q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
- <glyph glyph-name="uniF1F0" unicode="&#xf1f0;" horiz-adv-x="2304"
-d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27
-q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128
-q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_466" unicode="&#xf1f1;" horiz-adv-x="2304"
-d="M1119 1195q-128 85 -281 85q-103 0 -197.5 -40.5t-162.5 -108.5t-108.5 -162t-40.5 -197q0 -104 40.5 -198t108.5 -162t162 -108.5t198 -40.5q153 0 281 85q-131 107 -178 265.5t0.5 316.5t177.5 265zM1152 1171q-126 -99 -172 -249.5t-0.5 -300.5t172.5 -249
-q127 99 172.5 249t-0.5 300.5t-172 249.5zM1185 1195q130 -107 177.5 -265.5t0.5 -317t-178 -264.5q128 -85 281 -85q104 0 198 40.5t162 108.5t108.5 162t40.5 198q0 103 -40.5 197t-108.5 162t-162.5 108.5t-197.5 40.5q-153 0 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17z
-M1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-2h-3v3h3h2v-1zM1947 7h3l-4 5h2l1 1q1 1 1 3t-1 3l-1 1h-3h-6v-13h3v5h1zM685 75q0 19 11 31t30 12q18 0 29 -12.5t11 -30.5q0 -19 -11 -31t-29 -12q-19 0 -30 12t-11 31zM1158 119q30 0 35 -32
-h-70q5 32 35 32zM1514 75q0 19 11 31t29 12t29.5 -12.5t11.5 -30.5q0 -19 -11 -31t-30 -12q-18 0 -29 12t-11 31zM1786 75q0 18 11.5 30.5t29.5 12.5t29.5 -12.5t11.5 -30.5q0 -19 -11.5 -31t-29.5 -12t-29.5 12.5t-11.5 30.5zM1944 3q-2 0 -4 1q-1 0 -3 2t-2 3q-1 2 -1 4
-q0 3 1 4q0 2 2 4l1 1q2 0 2 1q2 1 4 1q3 0 4 -1l4 -2l2 -4v-1q1 -2 1 -3l-1 -1v-3t-1 -1l-1 -2q-2 -2 -4 -2q-1 -1 -4 -1zM599 7h30v85q0 24 -14.5 38.5t-39.5 15.5q-32 0 -47 -24q-14 24 -45 24q-24 0 -39 -20v16h-30v-135h30v75q0 36 33 36q30 0 30 -36v-75h29v75
-q0 36 33 36q30 0 30 -36v-75zM765 7h29v68v67h-29v-16q-17 20 -43 20q-29 0 -48 -20t-19 -51t19 -51t48 -20q28 0 43 20v-17zM943 48q0 34 -47 40l-14 2q-23 4 -23 14q0 15 25 15q23 0 43 -11l12 24q-22 14 -55 14q-26 0 -41 -12t-15 -32q0 -33 47 -39l13 -2q24 -4 24 -14
-q0 -17 -31 -17q-25 0 -45 14l-13 -23q25 -17 58 -17q29 0 45.5 12t16.5 32zM1073 14l-8 25q-13 -7 -26 -7q-19 0 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61q0 -50 47 -50q21 0 36 10zM1159 146q-29 0 -48 -20t-19 -51q0 -32 19.5 -51.5t49.5 -19.5q33 0 55 19l-14 22
-q-18 -15 -39 -15q-34 0 -41 33h101v12q0 32 -18 51.5t-46 19.5zM1318 146q-23 0 -35 -20v16h-30v-135h30v76q0 35 29 35q10 0 18 -4l9 28q-9 4 -21 4zM1348 75q0 -31 19.5 -51t52.5 -20q29 0 48 16l-14 24q-18 -13 -35 -12q-18 0 -29.5 12t-11.5 31t11.5 31t29.5 12
-q19 0 35 -12l14 24q-20 16 -48 16q-33 0 -52.5 -20t-19.5 -51zM1593 7h30v68v67h-30v-16q-15 20 -42 20q-29 0 -48.5 -20t-19.5 -51t19.5 -51t48.5 -20q28 0 42 20v-17zM1726 146q-23 0 -35 -20v16h-29v-135h29v76q0 35 29 35q10 0 18 -4l9 28q-8 4 -21 4zM1866 7h29v68v122
-h-29v-71q-15 20 -43 20t-47.5 -20.5t-19.5 -50.5t19.5 -50.5t47.5 -20.5q29 0 43 20v-17zM1944 27l-2 -1h-3q-2 -1 -4 -3q-3 -1 -3 -4q-1 -2 -1 -6q0 -3 1 -5q0 -2 3 -4q2 -2 4 -3t5 -1q4 0 6 1q0 1 2 2l2 1q1 1 3 4q1 2 1 5q0 4 -1 6q-1 1 -3 4q0 1 -2 2l-2 1q-1 0 -3 0.5
-t-3 0.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_467" unicode="&#xf1f2;" horiz-adv-x="2304"
-d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42
-q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604
-v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569
-q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73
-t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
- <glyph glyph-name="f1f3" unicode="&#xf1f3;" horiz-adv-x="2304"
-d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z
-M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260
-l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279
-v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040
-q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168
-q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5
-t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21
-h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5
-t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
- <glyph glyph-name="_469" unicode="&#xf1f4;" horiz-adv-x="2304"
-d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16
-t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76
-q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59
-t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489
-l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66
-q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_470" unicode="&#xf1f5;" horiz-adv-x="2304"
-d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109
-q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118
-q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151
-q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31
-q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_471" unicode="&#xf1f6;" horiz-adv-x="2048"
-d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5
-l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5
-l418 363q10 8 23.5 7t21.5 -11z" />
- <glyph glyph-name="_472" unicode="&#xf1f7;" horiz-adv-x="2048"
-d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128
-q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161
-q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
- <glyph glyph-name="_473" unicode="&#xf1f8;" horiz-adv-x="1408"
-d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704
-q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167
-q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_474" unicode="&#xf1f9;"
-d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5
-t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5
-t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_475" unicode="&#xf1fa;"
-d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53
-q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24
-t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61
-t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
- <glyph glyph-name="_476" unicode="&#xf1fb;" horiz-adv-x="1792"
-d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10
-t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
- <glyph glyph-name="f1fc" unicode="&#xf1fc;" horiz-adv-x="1792"
-d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5
-t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
- <glyph glyph-name="_478" unicode="&#xf1fd;" horiz-adv-x="1792"
-d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11q24 0 44 -7t31 -15t33 -27q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5
-t47 37.5q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-24 0 -44 7t-31 15t-33 27q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38
-t-58 27t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448
-h256v448h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5
-q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
- <glyph glyph-name="_479" unicode="&#xf1fe;" horiz-adv-x="2048"
-d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
- <glyph glyph-name="_480" unicode="&#xf200;" horiz-adv-x="1792"
-d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_481" unicode="&#xf201;" horiz-adv-x="2048"
-d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9
-t9 -23z" />
- <glyph glyph-name="_482" unicode="&#xf202;" horiz-adv-x="1792"
-d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20
-q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50
-t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1
-q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
- <glyph glyph-name="_483" unicode="&#xf203;"
-d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73
-q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110
-q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_484" unicode="&#xf204;" horiz-adv-x="2048"
-d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5
-t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5
-t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
- <glyph glyph-name="_485" unicode="&#xf205;" horiz-adv-x="2048"
-d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5
-t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
- <glyph glyph-name="_486" unicode="&#xf206;" horiz-adv-x="2304"
-d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94
-q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469
-q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400
-q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
- <glyph glyph-name="_487" unicode="&#xf207;"
-d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5
-h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
-t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
- <glyph glyph-name="_488" unicode="&#xf208;" horiz-adv-x="2048"
-d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327
-q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5
-q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
- <glyph glyph-name="_489" unicode="&#xf209;" horiz-adv-x="1280"
-d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q17 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119
-t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5
-t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14
-q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88
-q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5
-t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
- <glyph glyph-name="_490" unicode="&#xf20a;" horiz-adv-x="2048"
-d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206
-q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307
-t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14
-t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
- <glyph glyph-name="_491" unicode="&#xf20b;"
-d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5
-t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_492" unicode="&#xf20c;"
-d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55
-q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410
-q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
- <glyph glyph-name="_493" unicode="&#xf20d;"
-d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
- <glyph glyph-name="_494" unicode="&#xf20e;" horiz-adv-x="2048"
-d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335
-q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5
-q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360l15 -6l188 199v347l-187 194q-13 -8 -29 -10zM986 1438
-h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13zM552 226h402l64 66
-l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946
-l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82
-zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
- <glyph glyph-name="f210" unicode="&#xf210;"
-d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
- <glyph glyph-name="_496" unicode="&#xf211;"
-d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384
-q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
- <glyph glyph-name="f212" unicode="&#xf212;" horiz-adv-x="2048"
-d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021
-q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25
-q209 0 374 -102q172 107 374 102z" />
- <glyph glyph-name="_498" unicode="&#xf213;" horiz-adv-x="2048"
-d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101
-q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284
-q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
- <glyph glyph-name="_499" unicode="&#xf214;"
-d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
-l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
-v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
-M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
-v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51
-h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5
-t-43 -34t-16.5 -53.5z" />
- <glyph glyph-name="_500" unicode="&#xf215;" horiz-adv-x="2048"
-d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832
-q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
- <glyph glyph-name="_501" unicode="&#xf216;" horiz-adv-x="2048"
-d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126t-103.5 132.5t-108.5 126.5t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5
-t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113
-t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5
-q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
- <glyph glyph-name="_502" unicode="&#xf217;" horiz-adv-x="1664"
-d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
-t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
-q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
- <glyph glyph-name="_503" unicode="&#xf218;" horiz-adv-x="1664"
-d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
-t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
-q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
- <glyph glyph-name="_504" unicode="&#xf219;" horiz-adv-x="2048"
-d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20
-l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
- <glyph glyph-name="_505" unicode="&#xf21a;" horiz-adv-x="2048"
-d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
-q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83
-q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314
-v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
-q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
- <glyph glyph-name="_506" unicode="&#xf21b;"
-d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14
-t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5
-q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31
-t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
- <glyph glyph-name="_507" unicode="&#xf21c;" horiz-adv-x="2304"
-d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5
-t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105
-l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226
-t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
- <glyph glyph-name="_508" unicode="&#xf21d;"
-d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12
-q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384
-q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5
-t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="_509" unicode="&#xf21e;" horiz-adv-x="1792"
-d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221
-q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124
-t127 -344z" />
- <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1280"
-d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292
-q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
- <glyph glyph-name="_511" unicode="&#xf222;"
-d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5
-q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_512" unicode="&#xf223;" horiz-adv-x="1280"
-d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5
-t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
-t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_513" unicode="&#xf224;"
-d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
-q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
-t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_514" unicode="&#xf225;" horiz-adv-x="1792"
-d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
-q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9
-t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5
-t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_515" unicode="&#xf226;" horiz-adv-x="1792"
-d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23
-t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391
-q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391
-q0 -226 -154 -391q103 -57 218 -57z" />
- <glyph glyph-name="_516" unicode="&#xf227;" horiz-adv-x="1920"
-d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230
-q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9
-t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128
-q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -28 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
- <glyph glyph-name="_517" unicode="&#xf228;" horiz-adv-x="2048"
-d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23
-t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9
-t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5
-t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
- <glyph glyph-name="_518" unicode="&#xf229;"
-d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5
-t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
-t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_519" unicode="&#xf22a;" horiz-adv-x="1280"
-d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22
-t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5
-t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_520" unicode="&#xf22b;" horiz-adv-x="2048"
-d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5
-t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5
-t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_521" unicode="&#xf22c;" horiz-adv-x="1280"
-d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5
-t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_522" unicode="&#xf22d;" horiz-adv-x="1280"
-d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123
-t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
- <glyph glyph-name="_523" unicode="&#xf22e;" horiz-adv-x="1792"
- />
- <glyph glyph-name="_524" unicode="&#xf22f;" horiz-adv-x="1792"
- />
- <glyph glyph-name="_525" unicode="&#xf230;"
-d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
- <glyph glyph-name="_526" unicode="&#xf231;" horiz-adv-x="1280"
-d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5
-l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5
-q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
- <glyph glyph-name="_527" unicode="&#xf232;"
-d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5
-t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233
-l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
- <glyph glyph-name="_528" unicode="&#xf233;" horiz-adv-x="1792"
-d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216
-q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
- <glyph glyph-name="_529" unicode="&#xf234;" horiz-adv-x="2048"
-d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5
-t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5
-t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
- <glyph glyph-name="_530" unicode="&#xf235;" horiz-adv-x="2048"
-d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136
-q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69
-t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
- <glyph glyph-name="_531" unicode="&#xf236;" horiz-adv-x="2048"
-d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704
-q-26 0 -45 -19t-19 -45v-384h1152z" />
- <glyph glyph-name="_532" unicode="&#xf237;"
-d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
- <glyph glyph-name="_533" unicode="&#xf238;"
-d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56
-t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
- <glyph glyph-name="_534" unicode="&#xf239;"
-d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47
-t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
- <glyph glyph-name="_535" unicode="&#xf23a;" horiz-adv-x="1792"
-d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116
-q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
- <glyph glyph-name="_536" unicode="&#xf23b;"
-d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
- <glyph glyph-name="_537" unicode="&#xf23c;" horiz-adv-x="2296"
-d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5
-q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5
-q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42
-q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37
-q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5
-q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139
-q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 5 5 8q16 18 60 23h13q5 18 19 30t33 8
-t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132
-q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132
-q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z
-M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-105 2 -211 0v1q-1 -27 2.5 -86
-t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103
-q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34q0 2 0.5 3.5t1.5 3t1 2.5v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4
-l-10 -2.5t-12 -2l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-6 -1 -9 -1q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130
-t-73 70q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -1 -1 -4t-1 -5q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150
-q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12
-q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
- <glyph glyph-name="_538" unicode="&#xf23d;" horiz-adv-x="2304"
-d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5
-t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5
-t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
- <glyph glyph-name="_539" unicode="&#xf23e;" horiz-adv-x="1792"
-d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348
-t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23
-t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96
-q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512
-q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
- <glyph glyph-name="_540" unicode="&#xf240;" horiz-adv-x="2304"
-d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113
-v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="_541" unicode="&#xf241;" horiz-adv-x="2304"
-d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
-h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_542" unicode="&#xf242;" horiz-adv-x="2304"
-d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
-h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_543" unicode="&#xf243;" horiz-adv-x="2304"
-d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
-h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_544" unicode="&#xf244;" horiz-adv-x="2304"
-d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23
-v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_545" unicode="&#xf245;" horiz-adv-x="1280"
-d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
- <glyph glyph-name="_546" unicode="&#xf246;" horiz-adv-x="1024"
-d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
- <glyph glyph-name="_547" unicode="&#xf247;" horiz-adv-x="2048"
-d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
-h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
- <glyph glyph-name="_548" unicode="&#xf248;" horiz-adv-x="2304"
-d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
-v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
- <glyph glyph-name="_549" unicode="&#xf249;"
-d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
- <glyph glyph-name="_550" unicode="&#xf24a;"
-d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68
-z" />
- <glyph glyph-name="_551" unicode="&#xf24b;" horiz-adv-x="2304"
-d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5
-t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88
-t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90
-t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_552" unicode="&#xf24c;" horiz-adv-x="2304"
-d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294
-t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z
-M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_553" unicode="&#xf24d;" horiz-adv-x="1792"
-d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113
-zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
- <glyph glyph-name="_554" unicode="&#xf24e;" horiz-adv-x="2304"
-d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64
-q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91
-t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5
-t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
- <glyph glyph-name="_555" unicode="&#xf250;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5
-t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
- <glyph glyph-name="_556" unicode="&#xf251;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
- <glyph glyph-name="_557" unicode="&#xf252;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
- <glyph glyph-name="_558" unicode="&#xf253;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196
-h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
- <glyph glyph-name="_559" unicode="&#xf254;"
-d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87
-t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9
-h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
- <glyph glyph-name="_560" unicode="&#xf255;"
-d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25
-q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27
-t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21
-q72 69 174 69z" />
- <glyph glyph-name="_561" unicode="&#xf256;" horiz-adv-x="1792"
-d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33
-t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52
-h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
- <glyph glyph-name="_562" unicode="&#xf257;" horiz-adv-x="1792"
-d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668
-q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17
-t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5
-t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5
-q0 -42 -23 -78t-61 -53l-310 -141h91z" />
- <glyph glyph-name="_563" unicode="&#xf258;" horiz-adv-x="2048"
-d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32
-q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68
-q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
- <glyph glyph-name="_564" unicode="&#xf259;" horiz-adv-x="2048"
-d="M459 -256q-77 0 -137.5 47.5t-79.5 122.5l-101 401q-13 57 -13 108q0 45 -5 67l-116 477q-7 27 -7 57q0 93 62 161t155 78q17 85 82.5 139t152.5 54q83 0 148 -51.5t85 -132.5l83 -348l103 428q20 81 85 132.5t148 51.5q89 0 155.5 -57.5t80.5 -144.5q92 -10 152 -79
-t60 -162q0 -24 -7 -59l-123 -512q10 7 37.5 28.5t38.5 29.5t35 23t41 20.5t41.5 11t49.5 5.5q105 0 180 -74t75 -179q0 -62 -28.5 -118t-78.5 -94l-507 -380q-68 -51 -153 -51h-694zM1104 1408q-38 0 -68.5 -24t-39.5 -62l-164 -682h-127l-145 602q-9 38 -39.5 62t-68.5 24
-q-48 0 -80 -33t-32 -80q0 -15 3 -28l132 -547h-26l-99 408q-9 37 -40 62.5t-69 25.5q-47 0 -80 -33t-33 -79q0 -14 3 -26l116 -478q7 -28 9 -86t10 -88l100 -401q8 -32 34 -52.5t59 -20.5h694q42 0 76 26l507 379q56 43 56 110q0 52 -37.5 88.5t-89.5 36.5q-43 0 -77 -26
-l-307 -230v227q0 4 32 138t68 282t39 161q4 18 4 29q0 47 -32 81t-79 34q-39 0 -69.5 -24t-39.5 -62l-116 -482h-26l150 624q3 14 3 28q0 48 -31.5 82t-79.5 34z" />
- <glyph glyph-name="_565" unicode="&#xf25a;" horiz-adv-x="1792"
-d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5
-q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5
-v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32
-v-384h32z" />
- <glyph glyph-name="_566" unicode="&#xf25b;"
-d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181
-v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46
-q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5
-q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308
-q0 -53 37.5 -90.5t90.5 -37.5h668z" />
- <glyph glyph-name="_567" unicode="&#xf25c;" horiz-adv-x="1973"
-d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5
-t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141
-q13 0 22 -8.5t10 -20.5z" />
- <glyph glyph-name="_568" unicode="&#xf25d;" horiz-adv-x="1792"
-d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109
-t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640
-q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_569" unicode="&#xf25e;" horiz-adv-x="1792"
-d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78
-q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5
-t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376
-q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191
-t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
- <glyph glyph-name="f260" unicode="&#xf260;" horiz-adv-x="2048"
-d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
- <glyph glyph-name="f261" unicode="&#xf261;" horiz-adv-x="1792"
-d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191
-t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_572" unicode="&#xf262;" horiz-adv-x="2304"
-d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57
-t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197
-t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5
-t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5
-t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5
-q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
- <glyph glyph-name="f263" unicode="&#xf263;" horiz-adv-x="1280"
-d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5
-t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94
-q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
- <glyph glyph-name="_574" unicode="&#xf264;"
-d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32
-q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5
-zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_575" unicode="&#xf265;" horiz-adv-x="1720"
-d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33
-l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
- <glyph glyph-name="_576" unicode="&#xf266;" horiz-adv-x="2304"
-d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540
-q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81
-l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
- <glyph glyph-name="_577" unicode="&#xf267;" horiz-adv-x="1792"
-d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640
-q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5
-t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5
-t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5
-t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191
-t191 -286t71 -348z" />
- <glyph glyph-name="_578" unicode="&#xf268;" horiz-adv-x="1792"
-d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962
-q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
- <glyph glyph-name="_579" unicode="&#xf269;" horiz-adv-x="1792"
-d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5
-q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5
-q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
- <glyph glyph-name="_580" unicode="&#xf26a;" horiz-adv-x="1792"
-d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339
-q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z
-" />
- <glyph glyph-name="_581" unicode="&#xf26b;" horiz-adv-x="1792"
-d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606
-q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z
-M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
- <glyph glyph-name="_582" unicode="&#xf26c;" horiz-adv-x="2048"
-d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23
-v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="_583" unicode="&#xf26d;" horiz-adv-x="1792"
-d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34
-h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100
-q-68 175 -180 287z" />
- <glyph glyph-name="_584" unicode="&#xf26e;"
-d="M1401 -11l-6 -6q-113 -113 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6
-q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13
-q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 33 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249
-q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 33 -6t30 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183
-q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46
-t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
- <glyph glyph-name="_585" unicode="&#xf270;" horiz-adv-x="1792"
-d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z
-M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30
-q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57
-t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133
-q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
- <glyph glyph-name="_586" unicode="&#xf271;" horiz-adv-x="1792"
-d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9
-h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224
-v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
- <glyph glyph-name="_587" unicode="&#xf272;" horiz-adv-x="1792"
-d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23
-t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47
-t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_588" unicode="&#xf273;" horiz-adv-x="1792"
-d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z
-M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
-q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_589" unicode="&#xf274;" horiz-adv-x="1792"
-d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23
-t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47
-t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_590" unicode="&#xf275;" horiz-adv-x="1792"
-d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
- <glyph glyph-name="_591" unicode="&#xf276;" horiz-adv-x="1024"
-d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q62 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249
-q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
- <glyph glyph-name="_592" unicode="&#xf277;" horiz-adv-x="1792"
-d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768
-q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
- <glyph glyph-name="_593" unicode="&#xf278;" horiz-adv-x="2048"
-d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173
-v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
- <glyph glyph-name="_594" unicode="&#xf279;" horiz-adv-x="1792"
-d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472
-q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
- <glyph glyph-name="_595" unicode="&#xf27a;" horiz-adv-x="1792"
-d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5
-t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37
-t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
- <glyph glyph-name="_596" unicode="&#xf27b;" horiz-adv-x="1792"
-d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5
-t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5
-t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51
-t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
- <glyph glyph-name="_597" unicode="&#xf27c;" horiz-adv-x="1024"
-d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
- <glyph glyph-name="_598" unicode="&#xf27d;" horiz-adv-x="1792"
-d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246
-q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
- <glyph glyph-name="f27e" unicode="&#xf27e;"
-d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
- <glyph glyph-name="uniF280" unicode="&#xf280;"
-d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72
-h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275
-l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
- <glyph glyph-name="uniF281" unicode="&#xf281;" horiz-adv-x="1792"
-d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5
-l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44
-t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106
-q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
- <glyph glyph-name="_602" unicode="&#xf282;" horiz-adv-x="1792"
-d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53
-q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
- <glyph glyph-name="_603" unicode="&#xf283;" horiz-adv-x="2304"
-d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
- <glyph glyph-name="_604" unicode="&#xf284;" horiz-adv-x="1792"
-d="M1584 246l-218 111q-74 -120 -196.5 -189t-263.5 -69q-147 0 -271 72t-196 196t-72 270q0 110 42.5 209.5t115 172t172 115t209.5 42.5q131 0 247.5 -60.5t192.5 -168.5l215 125q-110 169 -286.5 265t-378.5 96q-161 0 -308 -63t-253 -169t-169 -253t-63 -308t63 -308
-t169 -253t253 -169t308 -63q213 0 397.5 107t290.5 292zM1030 643l693 -352q-116 -253 -334.5 -400t-492.5 -147q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q260 0 470.5 -133.5t335.5 -366.5zM1543 640h-39v-160h-96v352h136q32 0 54.5 -20
-t28.5 -48t1 -56t-27.5 -48t-57.5 -20z" />
- <glyph glyph-name="uniF285" unicode="&#xf285;" horiz-adv-x="1792"
-d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
- <glyph glyph-name="uniF286" unicode="&#xf286;" horiz-adv-x="1792"
-d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96
-q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5
-q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96
-q16 0 16 -16z" />
- <glyph glyph-name="_607" unicode="&#xf287;" horiz-adv-x="2304"
-d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96
-q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5
-t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
- <glyph glyph-name="_608" unicode="&#xf288;" horiz-adv-x="1792"
-d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348
-t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_609" unicode="&#xf289;" horiz-adv-x="2304"
-d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22
-q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5
-q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13
-q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
- <glyph glyph-name="_610" unicode="&#xf28a;"
-d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83
-t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20
-q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5
-t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
- <glyph glyph-name="_611" unicode="&#xf28b;"
-d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103
-t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_612" unicode="&#xf28c;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
-t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
- <glyph glyph-name="_613" unicode="&#xf28d;"
-d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
-t103 -385.5z" />
- <glyph glyph-name="_614" unicode="&#xf28e;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
-t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
- <glyph glyph-name="_615" unicode="&#xf290;" horiz-adv-x="1792"
-d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5
-t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="_616" unicode="&#xf291;" horiz-adv-x="2048"
-d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5
-t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416
-q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441
-h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
- <glyph glyph-name="_617" unicode="&#xf292;" horiz-adv-x="1792"
-d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12
-q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311
-q15 0 25 -12q9 -12 6 -28z" />
- <glyph glyph-name="_618" unicode="&#xf293;"
-d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5
-t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
- <glyph glyph-name="_619" unicode="&#xf294;" horiz-adv-x="1024"
-d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
- <glyph glyph-name="_620" unicode="&#xf295;"
-d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5
-t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
-t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="_621" unicode="&#xf296;" horiz-adv-x="1792"
-d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
- <glyph glyph-name="_622" unicode="&#xf297;" horiz-adv-x="1792"
-d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111
-q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
- <glyph glyph-name="_623" unicode="&#xf298;"
-d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14
-t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
- <glyph glyph-name="_624" unicode="&#xf299;" horiz-adv-x="1792"
-d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57
-q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285
-q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
- <glyph glyph-name="_625" unicode="&#xf29a;" horiz-adv-x="1792"
-d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42
-q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
-M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298
-t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_626" unicode="&#xf29b;"
-d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300
-l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z
-M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
- <glyph glyph-name="_627" unicode="&#xf29c;"
-d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5
-t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5
-t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5
-t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_628" unicode="&#xf29d;" horiz-adv-x="1408"
-d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457
-q-67 -192 -92 -234q-15 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521
-q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661
-q3 -1 7 1t7 4l3 2q11 9 11 17z" />
- <glyph glyph-name="_629" unicode="&#xf29e;" horiz-adv-x="2304"
-d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10
-t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5
-t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5
-h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96
-t9.5 -70.5z" />
- <glyph glyph-name="uniF2A0" unicode="&#xf2a0;" horiz-adv-x="1408"
-d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5
-q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127
-l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272
-t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249
-q-18 -19 -45 -19z" />
- <glyph glyph-name="uniF2A1" unicode="&#xf2a1;" horiz-adv-x="2176"
-d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352
-q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864
-q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136
-t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56
-t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56
-t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136
-t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
- <glyph glyph-name="uniF2A2" unicode="&#xf2a2;" horiz-adv-x="1792"
-d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z
-M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72
-t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45
-t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4
-q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
- <glyph glyph-name="uniF2A3" unicode="&#xf2a3;" horiz-adv-x="2304"
-d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55
-q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5
-q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101
-q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35
-q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5
-q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
- <glyph glyph-name="uniF2A4" unicode="&#xf2a4;" horiz-adv-x="1792"
-d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19
-t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74
-t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233
-l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
- <glyph glyph-name="uniF2A5" unicode="&#xf2a5;"
-d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2
-q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10
-q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5
-t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="uniF2A6" unicode="&#xf2a6;" horiz-adv-x="1535"
-d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5
-l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5
-q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9
-q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
- <glyph glyph-name="uniF2A7" unicode="&#xf2a7;" horiz-adv-x="1664"
-d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37
-t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
-l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147q-2 -1 -5 -3.5t-4 -4.5q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148
-q-34 23 -76 23q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26
-l-12 224q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
- <glyph glyph-name="uniF2A8" unicode="&#xf2a8;" horiz-adv-x="1792"
-d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5
-q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841
-q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5
-q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
- <glyph glyph-name="uniF2A9" unicode="&#xf2a9;" horiz-adv-x="1280"
-d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5
-q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z
-M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
- <glyph glyph-name="uniF2AA" unicode="&#xf2aa;"
-d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z
-M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5
-q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 42 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
-t84.5 -203.5z" />
- <glyph glyph-name="uniF2AB" unicode="&#xf2ab;"
-d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114
-q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5
-t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
-t103 -385.5z" />
- <glyph glyph-name="uniF2AC" unicode="&#xf2ac;" horiz-adv-x="1664"
-d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35
-q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5
-t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
- <glyph glyph-name="uniF2AD" unicode="&#xf2ad;"
-d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115
-q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15
-t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960
-q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="uniF2AE" unicode="&#xf2ae;" horiz-adv-x="2304"
-d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7
-q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158
-q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
- <glyph glyph-name="uniF2B0" unicode="&#xf2b0;"
-d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104
-q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108
-l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z
-M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
- <glyph glyph-name="uniF2B1" unicode="&#xf2b1;" horiz-adv-x="1664"
-d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5
-t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
- <glyph glyph-name="uniF2B2" unicode="&#xf2b2;" horiz-adv-x="1792"
-d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5
-t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114
-q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50
-q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5
-t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46
-q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5
-q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177
-t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
- <glyph glyph-name="uniF2B3" unicode="&#xf2b3;"
-d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110
-h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="uniF2B4" unicode="&#xf2b4;"
-d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5
-q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
- <glyph glyph-name="uniF2B5" unicode="&#xf2b5;" horiz-adv-x="2304"
-d="M192 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32zM1665 442q-10 13 -38.5 50t-41.5 54t-38 49t-42.5 53t-40.5 47t-45 49l-125 -140q-83 -94 -208.5 -92t-205.5 98q-57 69 -56.5 158t58.5 157l177 206q-22 11 -51 16.5t-47.5 6t-56.5 -0.5t-49 -1q-92 0 -158 -66
-l-158 -158h-155v-544q5 0 21 0.5t22 0t19.5 -2t20.5 -4.5t17.5 -8.5t18.5 -13.5l297 -292q115 -111 227 -111q78 0 125 47q57 -20 112.5 8t72.5 85q74 -6 127 44q20 18 36 45.5t14 50.5q10 -10 43 -10q43 0 77 21t49.5 53t12 71.5t-30.5 73.5zM1824 384h96v512h-93l-157 180
-q-66 76 -169 76h-167q-89 0 -146 -67l-209 -243q-28 -33 -28 -75t27 -75q43 -51 110 -52t111 49l193 218q25 23 53.5 21.5t47 -27t8.5 -56.5q16 -19 56 -63t60 -68q29 -36 82.5 -105.5t64.5 -84.5q52 -66 60 -140zM2112 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32z
-M2304 960v-640q0 -26 -19 -45t-45 -19h-434q-27 -65 -82 -106.5t-125 -51.5q-33 -48 -80.5 -81.5t-102.5 -45.5q-42 -53 -104.5 -81.5t-128.5 -24.5q-60 -34 -126 -39.5t-127.5 14t-117 53.5t-103.5 81l-287 282h-358q-26 0 -45 19t-19 45v672q0 26 19 45t45 19h421
-q14 14 47 48t47.5 48t44 40t50.5 37.5t51 25.5t62 19.5t68 5.5h117q99 0 181 -56q82 56 181 56h167q35 0 67 -6t56.5 -14.5t51.5 -26.5t44.5 -31t43 -39.5t39 -42t41 -48t41.5 -48.5h355q26 0 45 -19t19 -45z" />
- <glyph glyph-name="uniF2B6" unicode="&#xf2b6;" horiz-adv-x="1792"
-d="M1792 882v-978q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v978q0 15 11 24q8 7 39 34.5t41.5 36t45.5 37.5t70 55.5t96 73t143.5 107t192.5 140.5q5 4 52.5 40t71.5 52.5t64 35t69 18.5t69 -18.5t65 -35.5t71 -52t52 -40q110 -80 192.5 -140.5t143.5 -107
-t96 -73t70 -55.5t45.5 -37.5t41.5 -36t39 -34.5q11 -9 11 -24zM1228 297q263 191 345 252q11 8 12.5 20.5t-6.5 23.5l-38 52q-8 11 -21 12.5t-24 -6.5q-231 -169 -343 -250q-5 -3 -52 -39t-71.5 -52.5t-64.5 -35t-69 -18.5t-69 18.5t-64.5 35t-71.5 52.5t-52 39
-q-186 134 -343 250q-11 8 -24 6.5t-21 -12.5l-38 -52q-8 -11 -6.5 -23.5t12.5 -20.5q82 -61 345 -252q10 -8 50 -38t65 -47t64 -39.5t77.5 -33.5t75.5 -11t75.5 11t79 34.5t64.5 39.5t65 47.5t48 36.5z" />
- <glyph glyph-name="uniF2B7" unicode="&#xf2b7;" horiz-adv-x="1792"
-d="M1474 623l39 -51q8 -11 6.5 -23.5t-11.5 -20.5q-43 -34 -126.5 -98.5t-146.5 -113t-67 -51.5q-39 -32 -60 -48t-60.5 -41t-76.5 -36.5t-74 -11.5h-1h-1q-37 0 -74 11.5t-76 36.5t-61 41.5t-60 47.5q-5 4 -65 50.5t-143.5 111t-122.5 94.5q-11 8 -12.5 20.5t6.5 23.5
-l37 52q8 11 21.5 13t24.5 -7q94 -73 306 -236q5 -4 43.5 -35t60.5 -46.5t56.5 -32.5t58.5 -17h1h1q24 0 58.5 17t56.5 32.5t60.5 46.5t43.5 35q258 198 313 242q11 8 24 6.5t21 -12.5zM1664 -96v928q-90 83 -159 139q-91 74 -389 304q-3 2 -43 35t-61 48t-56 32.5t-59 17.5
-h-1h-1q-24 0 -59 -17.5t-56 -32.5t-61 -48t-43 -35q-215 -166 -315.5 -245.5t-129.5 -104t-82 -74.5q-14 -12 -21 -19v-928q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 832v-928q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v928q0 56 41 94
-q123 114 350 290.5t233 181.5q36 30 59 47.5t61.5 42t76 36.5t74.5 12h1h1q37 0 74.5 -12t76 -36.5t61.5 -42t59 -47.5q43 -36 156 -122t226 -177t201 -173q41 -38 41 -94z" />
- <glyph glyph-name="uniF2B8" unicode="&#xf2b8;"
-d="M330 1l202 -214l-34 236l-216 213zM556 -225l274 218l-11 245l-300 -215zM245 413l227 -213l-48 327l-245 204zM495 189l317 214l-14 324l-352 -200zM843 178l95 -80l-2 239l-103 79q0 -1 1 -8.5t0 -12t-5 -7.5l-78 -52l85 -70q7 -6 7 -88zM138 930l256 -200l-68 465
-l-279 173zM1173 267l15 234l-230 -164l2 -240zM417 722l373 194l-19 441l-423 -163zM1270 357l20 233l-226 142l-2 -105l144 -95q6 -4 4 -9l-7 -119zM1461 496l30 222l-179 -128l-20 -228zM1273 329l-71 49l-8 -117q0 -5 -4 -8l-234 -187q-7 -5 -14 0l-98 83l7 -161
-q0 -5 -4 -8l-293 -234q-4 -2 -6 -2q-8 2 -8 3l-228 242q-4 4 -59 277q-2 7 5 11l61 37q-94 86 -95 92l-72 351q-2 7 6 12l94 45q-133 100 -135 108l-96 466q-2 10 7 13l433 135q5 0 8 -1l317 -153q6 -4 6 -9l20 -463q0 -7 -6 -10l-118 -61l126 -85q5 -2 5 -8l5 -123l121 74
-q5 4 11 0l84 -56l3 110q0 6 5 9l206 126q6 3 11 0l245 -135q4 -4 5 -7t-6.5 -60t-17.5 -124.5t-10 -70.5q0 -5 -4 -7l-191 -153q-6 -5 -13 0z" />
- <glyph glyph-name="uniF2B9" unicode="&#xf2b9;" horiz-adv-x="1664"
-d="M1201 298q0 57 -5.5 107t-21 100.5t-39.5 86t-64 58t-91 22.5q-6 -4 -33.5 -20.5t-42.5 -24.5t-40.5 -20t-49 -17t-46.5 -5t-46.5 5t-49 17t-40.5 20t-42.5 24.5t-33.5 20.5q-51 0 -91 -22.5t-64 -58t-39.5 -86t-21 -100.5t-5.5 -107q0 -73 42 -121.5t103 -48.5h576
-q61 0 103 48.5t42 121.5zM1028 892q0 108 -76.5 184t-183.5 76t-183.5 -76t-76.5 -184q0 -107 76.5 -183t183.5 -76t183.5 76t76.5 183zM1664 352v-192q0 -14 -9 -23t-23 -9h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216
-q66 0 113 -47t47 -113v-224h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23z" />
- <glyph glyph-name="uniF2BA" unicode="&#xf2ba;" horiz-adv-x="1664"
-d="M1028 892q0 -107 -76.5 -183t-183.5 -76t-183.5 76t-76.5 183q0 108 76.5 184t183.5 76t183.5 -76t76.5 -184zM980 672q46 0 82.5 -17t60 -47.5t39.5 -67t24 -81t11.5 -82.5t3.5 -79q0 -67 -39.5 -118.5t-105.5 -51.5h-576q-66 0 -105.5 51.5t-39.5 118.5q0 48 4.5 93.5
-t18.5 98.5t36.5 91.5t63 64.5t93.5 26h5q7 -4 32 -19.5t35.5 -21t33 -17t37 -16t35 -9t39.5 -4.5t39.5 4.5t35 9t37 16t33 17t35.5 21t32 19.5zM1664 928q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96
-q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216q66 0 113 -47t47 -113v-224h96q13 0 22.5 -9.5t9.5 -22.5v-192zM1408 -96v1472q0 13 -9.5 22.5t-22.5 9.5h-1216
-q-13 0 -22.5 -9.5t-9.5 -22.5v-1472q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5z" />
- <glyph glyph-name="uniF2BB" unicode="&#xf2bb;" horiz-adv-x="2048"
-d="M1024 405q0 64 -9 117.5t-29.5 103t-60.5 78t-97 28.5q-6 -4 -30 -18t-37.5 -21.5t-35.5 -17.5t-43 -14.5t-42 -4.5t-42 4.5t-43 14.5t-35.5 17.5t-37.5 21.5t-30 18q-57 0 -97 -28.5t-60.5 -78t-29.5 -103t-9 -117.5t37 -106.5t91 -42.5h512q54 0 91 42.5t37 106.5z
-M867 925q0 94 -66.5 160.5t-160.5 66.5t-160.5 -66.5t-66.5 -160.5t66.5 -160.5t160.5 -66.5t160.5 66.5t66.5 160.5zM1792 416v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1792 676v56q0 15 -10.5 25.5t-25.5 10.5h-568
-q-15 0 -25.5 -10.5t-10.5 -25.5v-56q0 -15 10.5 -25.5t25.5 -10.5h568q15 0 25.5 10.5t10.5 25.5zM1792 928v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-352v96q0 14 -9 23t-23 9
-h-64q-14 0 -23 -9t-9 -23v-96h-768v96q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-96h-352q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2BC" unicode="&#xf2bc;" horiz-adv-x="2048"
-d="M1024 405q0 -64 -37 -106.5t-91 -42.5h-512q-54 0 -91 42.5t-37 106.5t9 117.5t29.5 103t60.5 78t97 28.5q6 -4 30 -18t37.5 -21.5t35.5 -17.5t43 -14.5t42 -4.5t42 4.5t43 14.5t35.5 17.5t37.5 21.5t30 18q57 0 97 -28.5t60.5 -78t29.5 -103t9 -117.5zM867 925
-q0 -94 -66.5 -160.5t-160.5 -66.5t-160.5 66.5t-66.5 160.5t66.5 160.5t160.5 66.5t160.5 -66.5t66.5 -160.5zM1792 480v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1792 732v-56q0 -15 -10.5 -25.5t-25.5 -10.5h-568
-q-15 0 -25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5zM1792 992v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1920 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1728q-13 0 -22.5 -9.5
-t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h352v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h768v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h352q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113
-t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2BD" unicode="&#xf2bd;" horiz-adv-x="1792"
-d="M1523 197q-22 155 -87.5 257.5t-184.5 118.5q-67 -74 -159.5 -115.5t-195.5 -41.5t-195.5 41.5t-159.5 115.5q-119 -16 -184.5 -118.5t-87.5 -257.5q106 -150 271 -237.5t356 -87.5t356 87.5t271 237.5zM1280 896q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5
-t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1792 640q0 -182 -71 -347.5t-190.5 -286t-285.5 -191.5t-349 -71q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2BE" unicode="&#xf2be;" horiz-adv-x="1792"
-d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348q0 -181 -70.5 -347t-190.5 -286t-286 -191.5t-349 -71.5t-349 71t-285.5 191.5t-190.5 286t-71 347.5t71 348t191 286t286 191t348 71zM1515 185q149 205 149 455q0 156 -61 298t-164 245t-245 164t-298 61t-298 -61
-t-245 -164t-164 -245t-61 -298q0 -250 149 -455q66 327 306 327q131 -128 313 -128t313 128q240 0 306 -327zM1280 832q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5z" />
- <glyph glyph-name="uniF2C0" unicode="&#xf2c0;"
-d="M1201 752q47 -14 89.5 -38t89 -73t79.5 -115.5t55 -172t22 -236.5q0 -154 -100 -263.5t-241 -109.5h-854q-141 0 -241 109.5t-100 263.5q0 131 22 236.5t55 172t79.5 115.5t89 73t89.5 38q-79 125 -79 272q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5
-t198.5 -40.5t163.5 -109.5t109.5 -163.5t40.5 -198.5q0 -147 -79 -272zM768 1408q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM1195 -128q88 0 150.5 71.5t62.5 173.5q0 239 -78.5 377t-225.5 145
-q-145 -127 -336 -127t-336 127q-147 -7 -225.5 -145t-78.5 -377q0 -102 62.5 -173.5t150.5 -71.5h854z" />
- <glyph glyph-name="uniF2C1" unicode="&#xf2c1;" horiz-adv-x="1280"
-d="M1024 278q0 -64 -37 -107t-91 -43h-512q-54 0 -91 43t-37 107t9 118t29.5 104t61 78.5t96.5 28.5q80 -75 188 -75t188 75q56 0 96.5 -28.5t61 -78.5t29.5 -104t9 -118zM870 797q0 -94 -67.5 -160.5t-162.5 -66.5t-162.5 66.5t-67.5 160.5t67.5 160.5t162.5 66.5
-t162.5 -66.5t67.5 -160.5zM1152 -96v1376h-1024v-1376q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1280 1376v-1472q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h352v-96q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v96h352
-q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2C2" unicode="&#xf2c2;" horiz-adv-x="2048"
-d="M896 324q0 54 -7.5 100.5t-24.5 90t-51 68.5t-81 25q-64 -64 -156 -64t-156 64q-47 0 -81 -25t-51 -68.5t-24.5 -90t-7.5 -100.5q0 -55 31.5 -93.5t75.5 -38.5h426q44 0 75.5 38.5t31.5 93.5zM768 768q0 80 -56 136t-136 56t-136 -56t-56 -136t56 -136t136 -56t136 56
-t56 136zM1792 288v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1408 544v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1792 544v64q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23
-v-64q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1792 800v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM128 1152h1792v96q0 14 -9 23t-23 9h-1728q-14 0 -23 -9t-9 -23v-96zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728
-q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2C3" unicode="&#xf2c3;" horiz-adv-x="2048"
-d="M896 324q0 -55 -31.5 -93.5t-75.5 -38.5h-426q-44 0 -75.5 38.5t-31.5 93.5q0 54 7.5 100.5t24.5 90t51 68.5t81 25q64 -64 156 -64t156 64q47 0 81 -25t51 -68.5t24.5 -90t7.5 -100.5zM768 768q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z
-M1792 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1408 608v-64q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v64
-q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 864v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1920 32v1120h-1792v-1120q0 -13 9.5 -22.5t22.5 -9.5h1728q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47
-h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2C4" unicode="&#xf2c4;" horiz-adv-x="1792"
-d="M1255 749q0 318 -105 474.5t-330 156.5q-222 0 -326 -157t-104 -474q0 -316 104 -471.5t326 -155.5q74 0 131 17q-22 43 -39 73t-44 65t-53.5 56.5t-63 36t-77.5 14.5q-46 0 -79 -16l-49 97q105 91 276 91q132 0 215.5 -54t150.5 -155q67 149 67 402zM1645 117h117
-q3 -27 -2 -67t-26.5 -95t-58 -100.5t-107 -78t-162.5 -32.5q-71 0 -130.5 19t-105.5 56t-79 78t-66 96q-97 -27 -205 -27q-150 0 -292.5 58t-253 158.5t-178 249t-67.5 317.5q0 170 67.5 319.5t178.5 250.5t253.5 159t291.5 58q121 0 238.5 -36t217 -106t176 -164.5
-t119.5 -219t43 -261.5q0 -190 -80.5 -347.5t-218.5 -264.5q47 -70 93.5 -106.5t104.5 -36.5q61 0 94 37.5t38 85.5z" />
- <glyph glyph-name="uniF2C5" unicode="&#xf2c5;" horiz-adv-x="2304"
-d="M453 -101q0 -21 -16 -37.5t-37 -16.5q-1 0 -13 3q-63 15 -162 140q-225 284 -225 676q0 341 213 614q39 51 95 103.5t94 52.5q19 0 35 -13.5t16 -32.5q0 -27 -63 -90q-98 -102 -147 -184q-119 -199 -119 -449q0 -281 123 -491q50 -85 136 -173q2 -3 14.5 -16t19.5 -21
-t17 -20.5t14.5 -23.5t4.5 -21zM1796 33q0 -29 -17.5 -48.5t-46.5 -19.5h-1081q-26 0 -45 19t-19 45q0 29 17.5 48.5t46.5 19.5h1081q26 0 45 -19t19 -45zM1581 644q0 -134 -67 -233q-25 -38 -69.5 -78.5t-83.5 -60.5q-16 -10 -27 -10q-7 0 -15 6t-8 12q0 9 19 30t42 46
-t42 67.5t19 88.5q0 76 -35 130q-29 42 -46 42q-3 0 -3 -5q0 -12 7.5 -35.5t7.5 -36.5q0 -22 -21.5 -35t-44.5 -13q-66 0 -66 76q0 15 1.5 44t1.5 44q0 25 -10 46q-13 25 -42 53.5t-51 28.5q-5 0 -7 -0.5t-3.5 -2.5t-1.5 -6q0 -2 16 -26t16 -54q0 -37 -19 -68t-46 -54
-t-53.5 -46t-45.5 -54t-19 -68q0 -98 42 -160q29 -43 79 -63q16 -5 17 -10q1 -2 1 -5q0 -16 -18 -16q-6 0 -33 11q-119 43 -195 139.5t-76 218.5q0 55 24.5 115.5t60 115t70.5 108.5t59.5 113.5t24.5 111.5q0 53 -25 94q-29 48 -56 64q-19 9 -19 21q0 20 41 20q50 0 110 -29
-q41 -19 71 -44.5t49.5 -51t33.5 -62.5t22 -69t16 -80q0 -1 3 -17.5t4.5 -25t5.5 -25t9 -27t11 -21.5t14.5 -16.5t18.5 -5.5q23 0 37 14t14 37q0 25 -20 67t-20 52t10 10q27 0 93 -70q72 -76 102.5 -156t30.5 -186zM2304 615q0 -274 -138 -503q-19 -32 -48 -72t-68 -86.5
-t-81 -77t-74 -30.5q-16 0 -31 15.5t-15 31.5q0 15 29 50.5t68.5 77t48.5 52.5q183 230 183 531q0 131 -20.5 235t-72.5 211q-58 119 -163 228q-2 3 -13 13.5t-16.5 16.5t-15 17.5t-15 20t-9.5 18.5t-4 19q0 19 16 35.5t35 16.5q70 0 196 -169q98 -131 146 -273t60 -314
-q2 -42 2 -64z" />
- <glyph glyph-name="uniF2C6" unicode="&#xf2c6;" horiz-adv-x="1792"
-d="M1189 229l147 693q9 44 -10.5 63t-51.5 7l-864 -333q-29 -11 -39.5 -25t-2.5 -26.5t32 -19.5l221 -69l513 323q21 14 32 6q7 -5 -4 -15l-415 -375v0v0l-16 -228q23 0 45 22l108 104l224 -165q64 -36 81 38zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
-t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2C7" unicode="&#xf2c7;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v907h128v-907q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2C8" unicode="&#xf2c8;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v651h128v-651q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2C9" unicode="&#xf2c9;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v395h128v-395q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2CA" unicode="&#xf2ca;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v139h128v-139q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2CB" unicode="&#xf2cb;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 79 56 135.5t136 56.5t136 -56.5t56 -135.5zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5z
-M896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
- <glyph glyph-name="uniF2CC" unicode="&#xf2cc;" horiz-adv-x="1920"
-d="M1433 1287q10 -10 10 -23t-10 -23l-626 -626q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l44 44q-72 91 -81.5 207t46.5 215q-74 71 -176 71q-106 0 -181 -75t-75 -181v-1280h-256v1280q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5q106 0 201 -41
-t166 -115q94 39 197 24.5t185 -79.5l44 44q10 10 23 10t23 -10zM1344 1024q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1600 896q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1856 1024q26 0 45 -19t19 -45t-19 -45t-45 -19
-t-45 19t-19 45t19 45t45 19zM1216 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1408 832q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1728 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 768
-q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 640q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1600 768q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 512q-26 0 -45 19t-19 45t19 45t45 19t45 -19
-t19 -45t-19 -45t-45 -19zM1472 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 384
-q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 256q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19z" />
- <glyph glyph-name="uniF2CD" unicode="&#xf2cd;" horiz-adv-x="1792"
-d="M1664 448v-192q0 -169 -128 -286v-194q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v118q-63 -22 -128 -22h-768q-65 0 -128 22v-110q0 -17 -9.5 -28.5t-22.5 -11.5h-64q-13 0 -22.5 11.5t-9.5 28.5v186q-128 117 -128 286v192h1536zM704 864q0 -14 -9 -23t-23 -9t-23 9
-t-9 23t9 23t23 9t23 -9t9 -23zM768 928q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM704 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1056q0 -14 -9 -23t-23 -9t-23 9
-t-9 23t9 23t23 9t23 -9t9 -23zM704 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v640q0 106 75 181t181 75q108 0 184 -78q46 19 98 12t93 -39l22 22q11 11 22 0l42 -42
-q11 -11 0 -22l-314 -314q-11 -11 -22 0l-42 42q-11 11 0 22l22 22q-36 46 -40.5 104t23.5 108q-37 35 -88 35q-53 0 -90.5 -37.5t-37.5 -90.5v-640h1504q14 0 23 -9t9 -23zM896 1056q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1120q0 -14 -9 -23t-23 -9
-t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM896 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1248q0 -14 -9 -23
-t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1024 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1088 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23z" />
- <glyph glyph-name="uniF2CE" unicode="&#xf2ce;"
-d="M994 344q0 -86 -17 -197q-31 -215 -55 -313q-22 -90 -152 -90t-152 90q-24 98 -55 313q-17 110 -17 197q0 168 224 168t224 -168zM1536 768q0 -240 -134 -434t-350 -280q-8 -3 -15 3t-6 15q7 48 10 66q4 32 6 47q1 9 9 12q159 81 255.5 234t96.5 337q0 180 -91 330.5
-t-247 234.5t-337 74q-124 -7 -237 -61t-193.5 -140.5t-128 -202t-46.5 -240.5q1 -184 99 -336.5t257 -231.5q7 -3 9 -12q3 -21 6 -45q1 -9 5 -32.5t6 -35.5q1 -9 -6.5 -15t-15.5 -2q-148 58 -261 169.5t-173.5 264t-52.5 319.5q7 143 66 273.5t154.5 227t225 157.5t272.5 70
-q164 10 315.5 -46.5t261 -160.5t175 -250.5t65.5 -308.5zM994 800q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5zM1282 768q0 -122 -53.5 -228.5t-146.5 -177.5q-8 -6 -16 -2t-10 14q-6 52 -29 92q-7 10 3 20
-q58 54 91 127t33 155q0 111 -58.5 204t-157.5 141.5t-212 36.5q-133 -15 -229 -113t-109 -231q-10 -92 23.5 -176t98.5 -144q10 -10 3 -20q-24 -41 -29 -93q-2 -9 -10 -13t-16 2q-95 74 -148.5 183t-51.5 234q3 131 69 244t177 181.5t241 74.5q144 7 268 -60t196.5 -187.5
-t72.5 -263.5z" />
- <glyph glyph-name="uniF2D0" unicode="&#xf2d0;" horiz-adv-x="1792"
-d="M256 128h1280v768h-1280v-768zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D1" unicode="&#xf2d1;" horiz-adv-x="1792"
-d="M1792 224v-192q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D2" unicode="&#xf2d2;" horiz-adv-x="2048"
-d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96q66 0 113 -47t47 -113v-352zM2048 1376v-960q0 -66 -47 -113t-113 -47h-608v-352q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h608v352q0 66 47 113t113 47h960q66 0 113 -47
-t47 -113z" />
- <glyph glyph-name="uniF2D3" unicode="&#xf2d3;" horiz-adv-x="1792"
-d="M1175 215l146 146q10 10 10 23t-10 23l-233 233l233 233q10 10 10 23t-10 23l-146 146q-10 10 -23 10t-23 -10l-233 -233l-233 233q-10 10 -23 10t-23 -10l-146 -146q-10 -10 -10 -23t10 -23l233 -233l-233 -233q-10 -10 -10 -23t10 -23l146 -146q10 -10 23 -10t23 10
-l233 233l233 -233q10 -10 23 -10t23 10zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D4" unicode="&#xf2d4;" horiz-adv-x="1792"
-d="M1257 425l-146 -146q-10 -10 -23 -10t-23 10l-169 169l-169 -169q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l169 169l-169 169q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l169 -169l169 169q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
-l-169 -169l169 -169q10 -10 10 -23t-10 -23zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D5" unicode="&#xf2d5;" horiz-adv-x="1792"
-d="M1070 358l306 564h-654l-306 -564h654zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2D6" unicode="&#xf2d6;" horiz-adv-x="1794"
-d="M1291 1060q-15 17 -35 8.5t-26 -28.5t5 -38q14 -17 40 -14.5t34 20.5t-18 52zM895 814q-8 -8 -19.5 -8t-18.5 8q-8 8 -8 19t8 18q7 8 18.5 8t19.5 -8q7 -7 7 -18t-7 -19zM1060 740l-35 -35q-12 -13 -29.5 -13t-30.5 13l-38 38q-12 13 -12 30t12 30l35 35q12 12 29.5 12
-t30.5 -12l38 -39q12 -12 12 -29.5t-12 -29.5zM951 870q-7 -8 -18.5 -8t-19.5 8q-7 8 -7 19t7 19q8 8 19 8t19 -8t8 -19t-8 -19zM1354 968q-34 -64 -107.5 -85.5t-127.5 16.5q-38 28 -61 66.5t-21 87.5t39 92t75.5 53t70.5 -5t70 -51q2 -2 13 -12.5t14.5 -13.5t13 -13.5
-t12.5 -15.5t10 -15.5t8.5 -18t4 -18.5t1 -21t-5 -22t-9.5 -24zM1555 486q3 20 -8.5 34.5t-27.5 21.5t-33 17t-23 20q-40 71 -84 98.5t-113 11.5q19 13 40 18.5t33 4.5l12 -1q2 45 -34 90q6 20 6.5 40.5t-2.5 30.5l-3 10q43 24 71 65t34 91q10 84 -43 150.5t-137 76.5
-q-60 7 -114 -18.5t-82 -74.5q-30 -51 -33.5 -101t14.5 -87t43.5 -64t56.5 -42q-45 4 -88 36t-57 88q-28 108 32 222q-16 21 -29 32q-50 0 -89 -19q19 24 42 37t36 14l13 1q0 50 -13 78q-10 21 -32.5 28.5t-47 -3.5t-37.5 -40q2 4 4 7q-7 -28 -6.5 -75.5t19 -117t48.5 -122.5
-q-25 -14 -47 -36q-35 -16 -85.5 -70.5t-84.5 -101.5l-33 -46q-90 -34 -181 -125.5t-75 -162.5q1 -16 11 -27q-15 -12 -30 -30q-21 -25 -21 -54t21.5 -40t63.5 6q41 19 77 49.5t55 60.5q-2 2 -6.5 5t-20.5 7.5t-33 3.5q23 5 51 12.5t40 10t27.5 6t26 4t23.5 0.5q14 -7 22 34
-q7 37 7 90q0 102 -40 150q106 -103 101 -219q-1 -29 -15 -50t-27 -27l-13 -6q-4 -7 -19 -32t-26 -45.5t-26.5 -52t-25 -61t-17 -63t-6.5 -66.5t10 -63q-35 54 -37 80q-22 -24 -34.5 -39t-33.5 -42t-30.5 -46t-16.5 -41t-0.5 -38t25.5 -27q45 -25 144 64t190.5 221.5
-t122.5 228.5q86 52 145 115.5t86 119.5q47 -93 154 -178q104 -83 167 -80q39 2 46 43zM1794 640q0 -182 -71 -348t-191 -286t-286.5 -191t-348.5 -71t-348.5 71t-286.5 191t-191 286t-71 348t71 348t191 286t286.5 191t348.5 71t348.5 -71t286.5 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2D7" unicode="&#xf2d7;"
-d="M518 1353v-655q103 -1 191.5 1.5t125.5 5.5l37 3q68 2 90.5 24.5t39.5 94.5l33 142h103l-14 -322l7 -319h-103l-29 127q-15 68 -45 93t-84 26q-87 8 -352 8v-556q0 -78 43.5 -115.5t133.5 -37.5h357q35 0 59.5 2t55 7.5t54 18t48.5 32t46 50.5t39 73l93 216h89
-q-6 -37 -31.5 -252t-30.5 -276q-146 5 -263.5 8t-162.5 4h-44h-628l-376 -12v102l127 25q67 13 91.5 37t25.5 79l8 643q3 402 -8 645q-2 61 -25.5 84t-91.5 36l-127 24v102l376 -12h702q139 0 374 27q-6 -68 -14 -194.5t-12 -219.5l-5 -92h-93l-32 124q-31 121 -74 179.5
-t-113 58.5h-548q-28 0 -35.5 -8.5t-7.5 -30.5z" />
- <glyph glyph-name="uniF2D8" unicode="&#xf2d8;"
-d="M922 739v-182q0 -4 0.5 -15t0 -15l-1.5 -12t-3.5 -11.5t-6.5 -7.5t-11 -5.5t-16 -1.5v309q9 0 16 -1t11 -5t6.5 -5.5t3.5 -9.5t1 -10.5v-13.5v-14zM1238 643v-121q0 -1 0.5 -12.5t0 -15.5t-2.5 -11.5t-7.5 -10.5t-13.5 -3q-9 0 -14 9q-4 10 -4 165v7v8.5v9t1.5 8.5l3.5 7
-t5 5.5t8 1.5q6 0 10 -1.5t6.5 -4.5t4 -6t2 -8.5t0.5 -8v-9.5v-9zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221q-20 148 -32 221h-158v-472h107v312l45 -312h76l43 319v-319zM1039 712q0 67 -5 90q-3 16 -11 28.5t-17 20.5t-25 14t-26.5 8.5t-31 4t-29 1.5
-h-29.5h-12h-91v-472h56q169 -1 197 24.5t25 180.5q-1 62 -1 100zM1356 515v133q0 29 -2 45t-9.5 33.5t-24.5 25t-46 7.5q-46 0 -77 -34v154h-117v-472h110l7 30q30 -36 77 -36q50 0 66 30.5t16 83.5zM1536 1248v-1216q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113
-v1216q0 66 47 113t113 47h1216q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D9" unicode="&#xf2d9;" horiz-adv-x="2176"
-d="M1143 -197q-6 1 -11 4q-13 8 -36 23t-86 65t-116.5 104.5t-112 140t-89.5 172.5q-17 3 -175 37q66 -213 235 -362t391 -184zM502 409l168 -28q-25 76 -41 167.5t-19 145.5l-4 53q-84 -82 -121 -224q5 -65 17 -114zM612 1018q-43 -64 -77 -148q44 46 74 68zM2049 584
-q0 161 -62 307t-167.5 252t-250.5 168.5t-304 62.5q-147 0 -281 -52.5t-240 -148.5q-30 -58 -45 -160q60 51 143 83.5t158.5 43t143 13.5t108.5 -1l40 -3q33 -1 53 -15.5t24.5 -33t6.5 -37t-1 -28.5q-126 11 -227.5 0.5t-183 -43.5t-142.5 -71.5t-131 -98.5
-q4 -36 11.5 -92.5t35.5 -178t62 -179.5q123 -6 247.5 14.5t214.5 53.5t162.5 67t109.5 59l37 24q22 16 39.5 20.5t30.5 -5t17 -34.5q14 -97 -39 -121q-208 -97 -467 -134q-135 -20 -317 -16q41 -96 110 -176.5t137 -127t130.5 -79t101.5 -43.5l39 -12q143 -23 263 15
-q195 99 314 289t119 418zM2123 621q-14 -135 -40 -212q-70 -208 -181.5 -346.5t-318.5 -253.5q-48 -33 -82 -44q-72 -26 -163 -16q-36 -3 -73 -3q-283 0 -504.5 173t-295.5 442q-1 0 -4 0.5t-5 0.5q-6 -50 2.5 -112.5t26 -115t36 -98t31.5 -71.5l14 -26q8 -12 54 -82
-q-71 38 -124.5 106.5t-78.5 140t-39.5 137t-17.5 107.5l-2 42q-5 2 -33.5 12.5t-48.5 18t-53 20.5t-57.5 25t-50 25.5t-42.5 27t-25 25.5q19 -10 50.5 -25.5t113 -45.5t145.5 -38l2 32q11 149 94 290q41 202 176 365q28 115 81 214q15 28 32 45t49 32q158 74 303.5 104
-t302 11t306.5 -97q220 -115 333 -336t87 -474z" />
- <glyph glyph-name="uniF2DA" unicode="&#xf2da;" horiz-adv-x="1792"
-d="M1341 752q29 44 -6.5 129.5t-121.5 142.5q-58 39 -125.5 53.5t-118 4.5t-68.5 -37q-12 -23 -4.5 -28t42.5 -10q23 -3 38.5 -5t44.5 -9.5t56 -17.5q36 -13 67.5 -31.5t53 -37t40 -38.5t30.5 -38t22 -34.5t16.5 -28.5t12 -18.5t10.5 -6t11 9.5zM1704 178
-q-52 -127 -148.5 -220t-214.5 -141.5t-253 -60.5t-266 13.5t-251 91t-210 161.5t-141.5 235.5t-46.5 303.5q1 41 8.5 84.5t12.5 64t24 80.5t23 73q-51 -208 1 -397t173 -318t291 -206t346 -83t349 74.5t289 244.5q20 27 18 14q0 -4 -4 -14zM1465 627q0 -104 -40.5 -199
-t-108.5 -164t-162 -109.5t-198 -40.5t-198 40.5t-162 109.5t-108.5 164t-40.5 199t40.5 199t108.5 164t162 109.5t198 40.5t198 -40.5t162 -109.5t108.5 -164t40.5 -199zM1752 915q-65 147 -180.5 251t-253 153.5t-292 53.5t-301 -36.5t-275.5 -129t-220 -211.5t-131 -297
-t-10 -373q-49 161 -51.5 311.5t35.5 272.5t109 227t165.5 180.5t207 126t232 71t242.5 9t236 -54t216 -124.5t178 -197q33 -50 62 -121t31 -112zM1690 573q12 244 -136.5 416t-396.5 240q-8 0 -10 5t24 8q125 -4 230 -50t173 -120t116 -168.5t58.5 -199t-1 -208
-t-61.5 -197.5t-122.5 -167t-185 -117.5t-248.5 -46.5q108 30 201.5 80t174 123t129.5 176.5t55 225.5z" />
- <glyph glyph-name="uniF2DB" unicode="&#xf2db;"
-d="M192 256v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 512v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 768v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16
-q0 16 16 16h112zM192 1024v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 1280v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM1280 1440v-1472q0 -40 -28 -68t-68 -28h-832q-40 0 -68 28
-t-28 68v1472q0 40 28 68t68 28h832q40 0 68 -28t28 -68zM1536 208v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 464v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 720v-32
-q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 976v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 1232v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16
-h48q16 0 16 -16z" />
- <glyph glyph-name="uniF2DC" unicode="&#xf2dc;" horiz-adv-x="1664"
-d="M1566 419l-167 -33l186 -107q23 -13 29.5 -38.5t-6.5 -48.5q-14 -23 -39 -29.5t-48 6.5l-186 106l55 -160q13 -38 -12 -63.5t-60.5 -20.5t-48.5 42l-102 300l-271 156v-313l208 -238q16 -18 17 -39t-11 -36.5t-28.5 -25t-37 -5.5t-36.5 22l-112 128v-214q0 -26 -19 -45
-t-45 -19t-45 19t-19 45v214l-112 -128q-16 -18 -36.5 -22t-37 5.5t-28.5 25t-11 36.5t17 39l208 238v313l-271 -156l-102 -300q-13 -37 -48.5 -42t-60.5 20.5t-12 63.5l55 160l-186 -106q-23 -13 -48 -6.5t-39 29.5q-13 23 -6.5 48.5t29.5 38.5l186 107l-167 33
-q-29 6 -42 29t-8.5 46.5t25.5 40t50 10.5l310 -62l271 157l-271 157l-310 -62q-4 -1 -13 -1q-27 0 -44 18t-19 40t11 43t40 26l167 33l-186 107q-23 13 -29.5 38.5t6.5 48.5t39 30t48 -7l186 -106l-55 160q-13 38 12 63.5t60.5 20.5t48.5 -42l102 -300l271 -156v313
-l-208 238q-16 18 -17 39t11 36.5t28.5 25t37 5.5t36.5 -22l112 -128v214q0 26 19 45t45 19t45 -19t19 -45v-214l112 128q16 18 36.5 22t37 -5.5t28.5 -25t11 -36.5t-17 -39l-208 -238v-313l271 156l102 300q13 37 48.5 42t60.5 -20.5t12 -63.5l-55 -160l186 106
-q23 13 48 6.5t39 -29.5q13 -23 6.5 -48.5t-29.5 -38.5l-186 -107l167 -33q27 -5 40 -26t11 -43t-19 -40t-44 -18q-9 0 -13 1l-310 62l-271 -157l271 -157l310 62q29 6 50 -10.5t25.5 -40t-8.5 -46.5t-42 -29z" />
- <glyph glyph-name="uniF2DD" unicode="&#xf2dd;" horiz-adv-x="1792"
-d="M1473 607q7 118 -33 226.5t-113 189t-177 131t-221 57.5q-116 7 -225.5 -32t-192 -110.5t-135 -175t-59.5 -220.5q-7 -118 33 -226.5t113 -189t177.5 -131t221.5 -57.5q155 -9 293 59t224 195.5t94 283.5zM1792 1536l-349 -348q120 -117 180.5 -272t50.5 -321
-q-11 -183 -102 -339t-241 -255.5t-332 -124.5l-999 -132l347 347q-120 116 -180.5 271.5t-50.5 321.5q11 184 102 340t241.5 255.5t332.5 124.5q167 22 500 66t500 66z" />
- <glyph glyph-name="uniF2DE" unicode="&#xf2de;" horiz-adv-x="1792"
-d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640q0 159 -62 304t-167.5 250.5t-250.5 167.5t-304 62
-t-304 -62t-250.5 -167.5t-167.5 -250.5t-62 -304t62 -304t167.5 -250.5t250.5 -167.5t304 -62t304 62t250.5 167.5t167.5 250.5t62 304zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71
-t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2E0" unicode="&#xf2e0;" horiz-adv-x="1920"
-d="M1334 302q-4 24 -27.5 34t-49.5 10.5t-48.5 12.5t-25.5 38q-5 47 33 139.5t75 181t32 127.5q-14 101 -117 103q-45 1 -75 -16l-3 -2l-5 -2.5t-4.5 -2t-5 -2t-5 -0.5t-6 1.5t-6 3.5t-6.5 5q-3 2 -9 8.5t-9 9t-8.5 7.5t-9.5 7.5t-9.5 5.5t-11 4.5t-11.5 2.5q-30 5 -48 -3
-t-45 -31q-1 -1 -9 -8.5t-12.5 -11t-15 -10t-16.5 -5.5t-17 3q-54 27 -84 40q-41 18 -94 -5t-76 -65q-16 -28 -41 -98.5t-43.5 -132.5t-40 -134t-21.5 -73q-22 -69 18.5 -119t110.5 -46q30 2 50.5 15t38.5 46q7 13 79 199.5t77 194.5q6 11 21.5 18t29.5 0q27 -15 21 -53
-q-2 -18 -51 -139.5t-50 -132.5q-6 -38 19.5 -56.5t60.5 -7t55 49.5q4 8 45.5 92t81.5 163.5t46 88.5q20 29 41 28q29 0 25 -38q-2 -16 -65.5 -147.5t-70.5 -159.5q-12 -53 13 -103t74 -74q17 -9 51 -15.5t71.5 -8t62.5 14t20 48.5zM383 86q3 -15 -5 -27.5t-23 -15.5
-q-14 -3 -26.5 5t-15.5 23q-3 14 5 27t22 16t27 -5t16 -23zM953 -177q12 -17 8.5 -37.5t-20.5 -32.5t-37.5 -8t-32.5 21q-11 17 -7.5 37.5t20.5 32.5t37.5 8t31.5 -21zM177 635q-18 -27 -49.5 -33t-57.5 13q-26 18 -32 50t12 58q18 27 49.5 33t57.5 -12q26 -19 32 -50.5
-t-12 -58.5zM1467 -42q19 -28 13 -61.5t-34 -52.5t-60.5 -13t-51.5 34t-13 61t33 53q28 19 60.5 13t52.5 -34zM1579 562q69 -113 42.5 -244.5t-134.5 -207.5q-90 -63 -199 -60q-20 -80 -84.5 -127t-143.5 -44.5t-140 57.5q-12 -9 -13 -10q-103 -71 -225 -48.5t-193 126.5
-q-50 73 -53 164q-83 14 -142.5 70.5t-80.5 128t-2 152t81 138.5q-36 60 -38 128t24.5 125t79.5 98.5t121 50.5q32 85 99 148t146.5 91.5t168 17t159.5 -66.5q72 21 140 17.5t128.5 -36t104.5 -80t67.5 -115t17.5 -140.5q52 -16 87 -57t45.5 -89t-5.5 -99.5t-58 -87.5z
-M455 1222q14 -20 9.5 -44.5t-24.5 -38.5q-19 -14 -43.5 -9.5t-37.5 24.5q-14 20 -9.5 44.5t24.5 38.5q19 14 43.5 9.5t37.5 -24.5zM614 1503q4 -16 -5 -30.5t-26 -18.5t-31 5.5t-18 26.5q-3 17 6.5 31t25.5 18q17 4 31 -5.5t17 -26.5zM1800 555q4 -20 -6.5 -37t-30.5 -21
-q-19 -4 -36 6.5t-21 30.5t6.5 37t30.5 22q20 4 36.5 -7.5t20.5 -30.5zM1136 1448q16 -27 8.5 -58.5t-35.5 -47.5q-27 -16 -57.5 -8.5t-46.5 34.5q-16 28 -8.5 59t34.5 48t58 9t47 -36zM1882 792q4 -15 -4 -27.5t-23 -16.5q-15 -3 -27.5 5.5t-15.5 22.5q-3 15 5 28t23 16
-q14 3 26.5 -5t15.5 -23zM1691 1033q15 -22 10.5 -49t-26.5 -43q-22 -15 -49 -10t-42 27t-10 49t27 43t48.5 11t41.5 -28z" />
- <glyph glyph-name="uniF2E1" unicode="&#xf2e1;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E2" unicode="&#xf2e2;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E3" unicode="&#xf2e3;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E4" unicode="&#xf2e4;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E5" unicode="&#xf2e5;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E6" unicode="&#xf2e6;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E7" unicode="&#xf2e7;" horiz-adv-x="1792"
- />
- <glyph glyph-name="_698" unicode="&#xf2e8;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E9" unicode="&#xf2e9;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EA" unicode="&#xf2ea;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EB" unicode="&#xf2eb;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EC" unicode="&#xf2ec;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2ED" unicode="&#xf2ed;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EE" unicode="&#xf2ee;" horiz-adv-x="1792"
- />
- <glyph glyph-name="lessequal" unicode="&#xf500;" horiz-adv-x="1792"
- />
- </font>
-</defs></svg>
diff --git a/library/font_awesome/fonts/fontawesome-webfont.ttf b/library/font_awesome/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 35acda2fa..000000000
--- a/library/font_awesome/fonts/fontawesome-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/fonts/fontawesome-webfont.woff b/library/font_awesome/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 400014a4b..000000000
--- a/library/font_awesome/fonts/fontawesome-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/fonts/fontawesome-webfont.woff2 b/library/font_awesome/fonts/fontawesome-webfont.woff2
deleted file mode 100644
index 4d13fc604..000000000
--- a/library/font_awesome/fonts/fontawesome-webfont.woff2
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/less/animated.less b/library/font_awesome/less/animated.less
deleted file mode 100644
index 66ad52a5b..000000000
--- a/library/font_awesome/less/animated.less
+++ /dev/null
@@ -1,34 +0,0 @@
-// Animated Icons
-// --------------------------
-
-.@{fa-css-prefix}-spin {
- -webkit-animation: fa-spin 2s infinite linear;
- animation: fa-spin 2s infinite linear;
-}
-
-.@{fa-css-prefix}-pulse {
- -webkit-animation: fa-spin 1s infinite steps(8);
- animation: fa-spin 1s infinite steps(8);
-}
-
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
diff --git a/library/font_awesome/less/bordered-pulled.less b/library/font_awesome/less/bordered-pulled.less
deleted file mode 100644
index f1c8ad75f..000000000
--- a/library/font_awesome/less/bordered-pulled.less
+++ /dev/null
@@ -1,25 +0,0 @@
-// Bordered & Pulled
-// -------------------------
-
-.@{fa-css-prefix}-border {
- padding: .2em .25em .15em;
- border: solid .08em @fa-border-color;
- border-radius: .1em;
-}
-
-.@{fa-css-prefix}-pull-left { float: left; }
-.@{fa-css-prefix}-pull-right { float: right; }
-
-.@{fa-css-prefix} {
- &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
- &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
-}
-
-/* Deprecated as of 4.4.0 */
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-.@{fa-css-prefix} {
- &.pull-left { margin-right: .3em; }
- &.pull-right { margin-left: .3em; }
-}
diff --git a/library/font_awesome/less/core.less b/library/font_awesome/less/core.less
deleted file mode 100644
index c577ac84a..000000000
--- a/library/font_awesome/less/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base Class Definition
-// -------------------------
-
-.@{fa-css-prefix} {
- display: inline-block;
- font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
- font-size: inherit; // can't have font-size inherit on line above, so need to override
- text-rendering: auto; // optimizelegibility throws things off #1094
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-
-}
diff --git a/library/font_awesome/less/fixed-width.less b/library/font_awesome/less/fixed-width.less
deleted file mode 100644
index 110289f2f..000000000
--- a/library/font_awesome/less/fixed-width.less
+++ /dev/null
@@ -1,6 +0,0 @@
-// Fixed Width Icons
-// -------------------------
-.@{fa-css-prefix}-fw {
- width: (18em / 14);
- text-align: center;
-}
diff --git a/library/font_awesome/less/font-awesome.less b/library/font_awesome/less/font-awesome.less
deleted file mode 100644
index c3677def3..000000000
--- a/library/font_awesome/less/font-awesome.less
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-
-@import "variables.less";
-@import "mixins.less";
-@import "path.less";
-@import "core.less";
-@import "larger.less";
-@import "fixed-width.less";
-@import "list.less";
-@import "bordered-pulled.less";
-@import "animated.less";
-@import "rotated-flipped.less";
-@import "stacked.less";
-@import "icons.less";
-@import "screen-reader.less";
diff --git a/library/font_awesome/less/icons.less b/library/font_awesome/less/icons.less
deleted file mode 100644
index 159d60042..000000000
--- a/library/font_awesome/less/icons.less
+++ /dev/null
@@ -1,789 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-
-.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }
-.@{fa-css-prefix}-music:before { content: @fa-var-music; }
-.@{fa-css-prefix}-search:before { content: @fa-var-search; }
-.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }
-.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }
-.@{fa-css-prefix}-star:before { content: @fa-var-star; }
-.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }
-.@{fa-css-prefix}-user:before { content: @fa-var-user; }
-.@{fa-css-prefix}-film:before { content: @fa-var-film; }
-.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }
-.@{fa-css-prefix}-th:before { content: @fa-var-th; }
-.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }
-.@{fa-css-prefix}-check:before { content: @fa-var-check; }
-.@{fa-css-prefix}-remove:before,
-.@{fa-css-prefix}-close:before,
-.@{fa-css-prefix}-times:before { content: @fa-var-times; }
-.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }
-.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }
-.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }
-.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }
-.@{fa-css-prefix}-gear:before,
-.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }
-.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }
-.@{fa-css-prefix}-home:before { content: @fa-var-home; }
-.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }
-.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }
-.@{fa-css-prefix}-road:before { content: @fa-var-road; }
-.@{fa-css-prefix}-download:before { content: @fa-var-download; }
-.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }
-.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }
-.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }
-.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }
-.@{fa-css-prefix}-rotate-right:before,
-.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }
-.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }
-.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
-.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }
-.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }
-.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }
-.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }
-.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }
-.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }
-.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }
-.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }
-.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }
-.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }
-.@{fa-css-prefix}-book:before { content: @fa-var-book; }
-.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }
-.@{fa-css-prefix}-print:before { content: @fa-var-print; }
-.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }
-.@{fa-css-prefix}-font:before { content: @fa-var-font; }
-.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }
-.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }
-.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }
-.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }
-.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
-.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }
-.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }
-.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }
-.@{fa-css-prefix}-list:before { content: @fa-var-list; }
-.@{fa-css-prefix}-dedent:before,
-.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }
-.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }
-.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }
-.@{fa-css-prefix}-photo:before,
-.@{fa-css-prefix}-image:before,
-.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }
-.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }
-.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }
-.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }
-.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }
-.@{fa-css-prefix}-edit:before,
-.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }
-.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }
-.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }
-.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }
-.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }
-.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }
-.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }
-.@{fa-css-prefix}-play:before { content: @fa-var-play; }
-.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }
-.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }
-.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }
-.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }
-.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }
-.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }
-.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }
-.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }
-.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }
-.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }
-.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
-.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
-.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
-.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
-.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }
-.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }
-.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }
-.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }
-.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }
-.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }
-.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }
-.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }
-.@{fa-css-prefix}-mail-forward:before,
-.@{fa-css-prefix}-share:before { content: @fa-var-share; }
-.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }
-.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }
-.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
-.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }
-.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }
-.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }
-.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }
-.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }
-.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }
-.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
-.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }
-.@{fa-css-prefix}-warning:before,
-.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }
-.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }
-.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }
-.@{fa-css-prefix}-random:before { content: @fa-var-random; }
-.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }
-.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }
-.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }
-.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }
-.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }
-.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }
-.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }
-.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }
-.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }
-.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }
-.@{fa-css-prefix}-bar-chart-o:before,
-.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; }
-.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }
-.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }
-.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }
-.@{fa-css-prefix}-key:before { content: @fa-var-key; }
-.@{fa-css-prefix}-gears:before,
-.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
-.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }
-.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }
-.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }
-.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }
-.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }
-.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
-.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }
-.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }
-.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }
-.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }
-.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }
-.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }
-.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }
-.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }
-.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }
-.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
-.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
-.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
-.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
-.@{fa-css-prefix}-facebook-f:before,
-.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
-.@{fa-css-prefix}-github:before { content: @fa-var-github; }
-.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
-.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
-.@{fa-css-prefix}-feed:before,
-.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
-.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
-.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
-.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
-.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }
-.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }
-.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }
-.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }
-.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }
-.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }
-.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }
-.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }
-.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }
-.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
-.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }
-.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
-.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }
-.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }
-.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }
-.@{fa-css-prefix}-group:before,
-.@{fa-css-prefix}-users:before { content: @fa-var-users; }
-.@{fa-css-prefix}-chain:before,
-.@{fa-css-prefix}-link:before { content: @fa-var-link; }
-.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
-.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }
-.@{fa-css-prefix}-cut:before,
-.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }
-.@{fa-css-prefix}-copy:before,
-.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }
-.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }
-.@{fa-css-prefix}-save:before,
-.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }
-.@{fa-css-prefix}-square:before { content: @fa-var-square; }
-.@{fa-css-prefix}-navicon:before,
-.@{fa-css-prefix}-reorder:before,
-.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }
-.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
-.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }
-.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }
-.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }
-.@{fa-css-prefix}-table:before { content: @fa-var-table; }
-.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }
-.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }
-.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }
-.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }
-.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }
-.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }
-.@{fa-css-prefix}-money:before { content: @fa-var-money; }
-.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }
-.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }
-.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }
-.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }
-.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }
-.@{fa-css-prefix}-unsorted:before,
-.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }
-.@{fa-css-prefix}-sort-down:before,
-.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }
-.@{fa-css-prefix}-sort-up:before,
-.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }
-.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
-.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }
-.@{fa-css-prefix}-rotate-left:before,
-.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
-.@{fa-css-prefix}-legal:before,
-.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }
-.@{fa-css-prefix}-dashboard:before,
-.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }
-.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }
-.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }
-.@{fa-css-prefix}-flash:before,
-.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }
-.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }
-.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }
-.@{fa-css-prefix}-paste:before,
-.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }
-.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }
-.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }
-.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }
-.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }
-.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }
-.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }
-.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }
-.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }
-.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }
-.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }
-.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }
-.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }
-.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }
-.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }
-.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }
-.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }
-.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }
-.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }
-.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }
-.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }
-.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }
-.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }
-.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }
-.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }
-.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }
-.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }
-.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }
-.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
-.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
-.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }
-.@{fa-css-prefix}-mobile-phone:before,
-.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }
-.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }
-.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
-.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }
-.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }
-.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
-.@{fa-css-prefix}-mail-reply:before,
-.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }
-.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }
-.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }
-.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }
-.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }
-.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }
-.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }
-.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }
-.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }
-.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }
-.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }
-.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }
-.@{fa-css-prefix}-code:before { content: @fa-var-code; }
-.@{fa-css-prefix}-mail-reply-all:before,
-.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }
-.@{fa-css-prefix}-star-half-empty:before,
-.@{fa-css-prefix}-star-half-full:before,
-.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }
-.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }
-.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }
-.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }
-.@{fa-css-prefix}-unlink:before,
-.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }
-.@{fa-css-prefix}-question:before { content: @fa-var-question; }
-.@{fa-css-prefix}-info:before { content: @fa-var-info; }
-.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }
-.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }
-.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }
-.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }
-.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }
-.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }
-.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }
-.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }
-.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }
-.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }
-.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
-.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }
-.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }
-.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }
-.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }
-.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }
-.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }
-.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }
-.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }
-.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }
-.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }
-.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }
-.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }
-.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }
-.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }
-.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }
-.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }
-.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }
-.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }
-.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }
-.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }
-.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }
-.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }
-.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }
-.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }
-.@{fa-css-prefix}-toggle-down:before,
-.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }
-.@{fa-css-prefix}-toggle-up:before,
-.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }
-.@{fa-css-prefix}-toggle-right:before,
-.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }
-.@{fa-css-prefix}-euro:before,
-.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }
-.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }
-.@{fa-css-prefix}-dollar:before,
-.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }
-.@{fa-css-prefix}-rupee:before,
-.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }
-.@{fa-css-prefix}-cny:before,
-.@{fa-css-prefix}-rmb:before,
-.@{fa-css-prefix}-yen:before,
-.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }
-.@{fa-css-prefix}-ruble:before,
-.@{fa-css-prefix}-rouble:before,
-.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }
-.@{fa-css-prefix}-won:before,
-.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }
-.@{fa-css-prefix}-bitcoin:before,
-.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }
-.@{fa-css-prefix}-file:before { content: @fa-var-file; }
-.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }
-.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }
-.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }
-.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }
-.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }
-.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }
-.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }
-.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }
-.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }
-.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }
-.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }
-.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }
-.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }
-.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }
-.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }
-.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }
-.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
-.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }
-.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }
-.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }
-.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }
-.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }
-.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }
-.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }
-.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }
-.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }
-.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }
-.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }
-.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }
-.@{fa-css-prefix}-android:before { content: @fa-var-android; }
-.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }
-.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }
-.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }
-.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }
-.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
-.@{fa-css-prefix}-female:before { content: @fa-var-female; }
-.@{fa-css-prefix}-male:before { content: @fa-var-male; }
-.@{fa-css-prefix}-gittip:before,
-.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }
-.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
-.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
-.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
-.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }
-.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }
-.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }
-.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }
-.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }
-.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }
-.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }
-.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }
-.@{fa-css-prefix}-toggle-left:before,
-.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }
-.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }
-.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }
-.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }
-.@{fa-css-prefix}-turkish-lira:before,
-.@{fa-css-prefix}-try:before { content: @fa-var-try; }
-.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }
-.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }
-.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }
-.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }
-.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }
-.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }
-.@{fa-css-prefix}-institution:before,
-.@{fa-css-prefix}-bank:before,
-.@{fa-css-prefix}-university:before { content: @fa-var-university; }
-.@{fa-css-prefix}-mortar-board:before,
-.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }
-.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }
-.@{fa-css-prefix}-google:before { content: @fa-var-google; }
-.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }
-.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }
-.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }
-.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }
-.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }
-.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }
-.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; }
-.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }
-.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }
-.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }
-.@{fa-css-prefix}-language:before { content: @fa-var-language; }
-.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }
-.@{fa-css-prefix}-building:before { content: @fa-var-building; }
-.@{fa-css-prefix}-child:before { content: @fa-var-child; }
-.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }
-.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; }
-.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }
-.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }
-.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }
-.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }
-.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }
-.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }
-.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }
-.@{fa-css-prefix}-automobile:before,
-.@{fa-css-prefix}-car:before { content: @fa-var-car; }
-.@{fa-css-prefix}-cab:before,
-.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }
-.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }
-.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }
-.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }
-.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }
-.@{fa-css-prefix}-database:before { content: @fa-var-database; }
-.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; }
-.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; }
-.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; }
-.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; }
-.@{fa-css-prefix}-file-photo-o:before,
-.@{fa-css-prefix}-file-picture-o:before,
-.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; }
-.@{fa-css-prefix}-file-zip-o:before,
-.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; }
-.@{fa-css-prefix}-file-sound-o:before,
-.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; }
-.@{fa-css-prefix}-file-movie-o:before,
-.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; }
-.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; }
-.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }
-.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }
-.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }
-.@{fa-css-prefix}-life-bouy:before,
-.@{fa-css-prefix}-life-buoy:before,
-.@{fa-css-prefix}-life-saver:before,
-.@{fa-css-prefix}-support:before,
-.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
-.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }
-.@{fa-css-prefix}-ra:before,
-.@{fa-css-prefix}-resistance:before,
-.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }
-.@{fa-css-prefix}-ge:before,
-.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }
-.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }
-.@{fa-css-prefix}-git:before { content: @fa-var-git; }
-.@{fa-css-prefix}-y-combinator-square:before,
-.@{fa-css-prefix}-yc-square:before,
-.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }
-.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }
-.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }
-.@{fa-css-prefix}-wechat:before,
-.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }
-.@{fa-css-prefix}-send:before,
-.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }
-.@{fa-css-prefix}-send-o:before,
-.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }
-.@{fa-css-prefix}-history:before { content: @fa-var-history; }
-.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }
-.@{fa-css-prefix}-header:before { content: @fa-var-header; }
-.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }
-.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; }
-.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }
-.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }
-.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }
-.@{fa-css-prefix}-soccer-ball-o:before,
-.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; }
-.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }
-.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }
-.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }
-.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }
-.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }
-.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }
-.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; }
-.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }
-.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }
-.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }
-.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }
-.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }
-.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }
-.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }
-.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }
-.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }
-.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }
-.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }
-.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; }
-.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }
-.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }
-.@{fa-css-prefix}-at:before { content: @fa-var-at; }
-.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; }
-.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }
-.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }
-.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; }
-.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; }
-.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; }
-.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }
-.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }
-.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }
-.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }
-.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }
-.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }
-.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }
-.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }
-.@{fa-css-prefix}-cc:before { content: @fa-var-cc; }
-.@{fa-css-prefix}-shekel:before,
-.@{fa-css-prefix}-sheqel:before,
-.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }
-.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }
-.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }
-.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }
-.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }
-.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }
-.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }
-.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }
-.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }
-.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }
-.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }
-.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }
-.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }
-.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }
-.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }
-.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }
-.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }
-.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }
-.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }
-.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }
-.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }
-.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }
-.@{fa-css-prefix}-intersex:before,
-.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }
-.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }
-.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }
-.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }
-.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }
-.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }
-.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }
-.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }
-.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }
-.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; }
-.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }
-.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }
-.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }
-.@{fa-css-prefix}-server:before { content: @fa-var-server; }
-.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }
-.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }
-.@{fa-css-prefix}-hotel:before,
-.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }
-.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }
-.@{fa-css-prefix}-train:before { content: @fa-var-train; }
-.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }
-.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }
-.@{fa-css-prefix}-yc:before,
-.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; }
-.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; }
-.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }
-.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }
-.@{fa-css-prefix}-battery-4:before,
-.@{fa-css-prefix}-battery:before,
-.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }
-.@{fa-css-prefix}-battery-3:before,
-.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }
-.@{fa-css-prefix}-battery-2:before,
-.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; }
-.@{fa-css-prefix}-battery-1:before,
-.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; }
-.@{fa-css-prefix}-battery-0:before,
-.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; }
-.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; }
-.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; }
-.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; }
-.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; }
-.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; }
-.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; }
-.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }
-.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }
-.@{fa-css-prefix}-clone:before { content: @fa-var-clone; }
-.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; }
-.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; }
-.@{fa-css-prefix}-hourglass-1:before,
-.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; }
-.@{fa-css-prefix}-hourglass-2:before,
-.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; }
-.@{fa-css-prefix}-hourglass-3:before,
-.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; }
-.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; }
-.@{fa-css-prefix}-hand-grab-o:before,
-.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; }
-.@{fa-css-prefix}-hand-stop-o:before,
-.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; }
-.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; }
-.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; }
-.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; }
-.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; }
-.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; }
-.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; }
-.@{fa-css-prefix}-registered:before { content: @fa-var-registered; }
-.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; }
-.@{fa-css-prefix}-gg:before { content: @fa-var-gg; }
-.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; }
-.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; }
-.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; }
-.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; }
-.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; }
-.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; }
-.@{fa-css-prefix}-safari:before { content: @fa-var-safari; }
-.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; }
-.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; }
-.@{fa-css-prefix}-opera:before { content: @fa-var-opera; }
-.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; }
-.@{fa-css-prefix}-tv:before,
-.@{fa-css-prefix}-television:before { content: @fa-var-television; }
-.@{fa-css-prefix}-contao:before { content: @fa-var-contao; }
-.@{fa-css-prefix}-500px:before { content: @fa-var-500px; }
-.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; }
-.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; }
-.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; }
-.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; }
-.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; }
-.@{fa-css-prefix}-industry:before { content: @fa-var-industry; }
-.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; }
-.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; }
-.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; }
-.@{fa-css-prefix}-map:before { content: @fa-var-map; }
-.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; }
-.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; }
-.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; }
-.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; }
-.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; }
-.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; }
-.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; }
-.@{fa-css-prefix}-edge:before { content: @fa-var-edge; }
-.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; }
-.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; }
-.@{fa-css-prefix}-modx:before { content: @fa-var-modx; }
-.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; }
-.@{fa-css-prefix}-usb:before { content: @fa-var-usb; }
-.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; }
-.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; }
-.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; }
-.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; }
-.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; }
-.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; }
-.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; }
-.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; }
-.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; }
-.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; }
-.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; }
-.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; }
-.@{fa-css-prefix}-percent:before { content: @fa-var-percent; }
-.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; }
-.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; }
-.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; }
-.@{fa-css-prefix}-envira:before { content: @fa-var-envira; }
-.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; }
-.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; }
-.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; }
-.@{fa-css-prefix}-blind:before { content: @fa-var-blind; }
-.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; }
-.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; }
-.@{fa-css-prefix}-braille:before { content: @fa-var-braille; }
-.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; }
-.@{fa-css-prefix}-asl-interpreting:before,
-.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; }
-.@{fa-css-prefix}-deafness:before,
-.@{fa-css-prefix}-hard-of-hearing:before,
-.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; }
-.@{fa-css-prefix}-glide:before { content: @fa-var-glide; }
-.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; }
-.@{fa-css-prefix}-signing:before,
-.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; }
-.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; }
-.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; }
-.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; }
-.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; }
-.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; }
-.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; }
-.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }
-.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; }
-.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; }
-.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; }
-.@{fa-css-prefix}-google-plus-circle:before,
-.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; }
-.@{fa-css-prefix}-fa:before,
-.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; }
-.@{fa-css-prefix}-handshake-o:before { content: @fa-var-handshake-o; }
-.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; }
-.@{fa-css-prefix}-envelope-open-o:before { content: @fa-var-envelope-open-o; }
-.@{fa-css-prefix}-linode:before { content: @fa-var-linode; }
-.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; }
-.@{fa-css-prefix}-address-book-o:before { content: @fa-var-address-book-o; }
-.@{fa-css-prefix}-vcard:before,
-.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; }
-.@{fa-css-prefix}-vcard-o:before,
-.@{fa-css-prefix}-address-card-o:before { content: @fa-var-address-card-o; }
-.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; }
-.@{fa-css-prefix}-user-circle-o:before { content: @fa-var-user-circle-o; }
-.@{fa-css-prefix}-user-o:before { content: @fa-var-user-o; }
-.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; }
-.@{fa-css-prefix}-drivers-license:before,
-.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; }
-.@{fa-css-prefix}-drivers-license-o:before,
-.@{fa-css-prefix}-id-card-o:before { content: @fa-var-id-card-o; }
-.@{fa-css-prefix}-quora:before { content: @fa-var-quora; }
-.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; }
-.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; }
-.@{fa-css-prefix}-thermometer-4:before,
-.@{fa-css-prefix}-thermometer:before,
-.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; }
-.@{fa-css-prefix}-thermometer-3:before,
-.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; }
-.@{fa-css-prefix}-thermometer-2:before,
-.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; }
-.@{fa-css-prefix}-thermometer-1:before,
-.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; }
-.@{fa-css-prefix}-thermometer-0:before,
-.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; }
-.@{fa-css-prefix}-shower:before { content: @fa-var-shower; }
-.@{fa-css-prefix}-bathtub:before,
-.@{fa-css-prefix}-s15:before,
-.@{fa-css-prefix}-bath:before { content: @fa-var-bath; }
-.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; }
-.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; }
-.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; }
-.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; }
-.@{fa-css-prefix}-times-rectangle:before,
-.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; }
-.@{fa-css-prefix}-times-rectangle-o:before,
-.@{fa-css-prefix}-window-close-o:before { content: @fa-var-window-close-o; }
-.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; }
-.@{fa-css-prefix}-grav:before { content: @fa-var-grav; }
-.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; }
-.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; }
-.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; }
-.@{fa-css-prefix}-eercast:before { content: @fa-var-eercast; }
-.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; }
-.@{fa-css-prefix}-snowflake-o:before { content: @fa-var-snowflake-o; }
-.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; }
-.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; }
-.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; }
diff --git a/library/font_awesome/less/larger.less b/library/font_awesome/less/larger.less
deleted file mode 100644
index c9d646770..000000000
--- a/library/font_awesome/less/larger.less
+++ /dev/null
@@ -1,13 +0,0 @@
-// Icon Sizes
-// -------------------------
-
-/* makes the font 33% larger relative to the icon container */
-.@{fa-css-prefix}-lg {
- font-size: (4em / 3);
- line-height: (3em / 4);
- vertical-align: -15%;
-}
-.@{fa-css-prefix}-2x { font-size: 2em; }
-.@{fa-css-prefix}-3x { font-size: 3em; }
-.@{fa-css-prefix}-4x { font-size: 4em; }
-.@{fa-css-prefix}-5x { font-size: 5em; }
diff --git a/library/font_awesome/less/list.less b/library/font_awesome/less/list.less
deleted file mode 100644
index 0b440382f..000000000
--- a/library/font_awesome/less/list.less
+++ /dev/null
@@ -1,19 +0,0 @@
-// List Icons
-// -------------------------
-
-.@{fa-css-prefix}-ul {
- padding-left: 0;
- margin-left: @fa-li-width;
- list-style-type: none;
- > li { position: relative; }
-}
-.@{fa-css-prefix}-li {
- position: absolute;
- left: -@fa-li-width;
- width: @fa-li-width;
- top: (2em / 14);
- text-align: center;
- &.@{fa-css-prefix}-lg {
- left: (-@fa-li-width + (4em / 14));
- }
-}
diff --git a/library/font_awesome/less/mixins.less b/library/font_awesome/less/mixins.less
deleted file mode 100644
index beef231d0..000000000
--- a/library/font_awesome/less/mixins.less
+++ /dev/null
@@ -1,60 +0,0 @@
-// Mixins
-// --------------------------
-
-.fa-icon() {
- display: inline-block;
- font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
- font-size: inherit; // can't have font-size inherit on line above, so need to override
- text-rendering: auto; // optimizelegibility throws things off #1094
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-
-}
-
-.fa-icon-rotate(@degrees, @rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
- -webkit-transform: rotate(@degrees);
- -ms-transform: rotate(@degrees);
- transform: rotate(@degrees);
-}
-
-.fa-icon-flip(@horiz, @vert, @rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
- -webkit-transform: scale(@horiz, @vert);
- -ms-transform: scale(@horiz, @vert);
- transform: scale(@horiz, @vert);
-}
-
-
-// Only display content to screen readers. A la Bootstrap 4.
-//
-// See: http://a11yproject.com/posts/how-to-hide-content/
-
-.sr-only() {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0,0,0,0);
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-//
-// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-//
-// Credit: HTML5 Boilerplate
-
-.sr-only-focusable() {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
- }
-}
diff --git a/library/font_awesome/less/path.less b/library/font_awesome/less/path.less
deleted file mode 100644
index 835be41f8..000000000
--- a/library/font_awesome/less/path.less
+++ /dev/null
@@ -1,15 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
- font-family: 'FontAwesome';
- src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
- src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
- url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
- url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
- url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
- url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
- // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
- font-weight: normal;
- font-style: normal;
-}
diff --git a/library/font_awesome/less/rotated-flipped.less b/library/font_awesome/less/rotated-flipped.less
deleted file mode 100644
index f6ba81475..000000000
--- a/library/font_awesome/less/rotated-flipped.less
+++ /dev/null
@@ -1,20 +0,0 @@
-// Rotated & Flipped Icons
-// -------------------------
-
-.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
-.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
-.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
-
-.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
-.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
-
-// Hook for IE8-9
-// -------------------------
-
-:root .@{fa-css-prefix}-rotate-90,
-:root .@{fa-css-prefix}-rotate-180,
-:root .@{fa-css-prefix}-rotate-270,
-:root .@{fa-css-prefix}-flip-horizontal,
-:root .@{fa-css-prefix}-flip-vertical {
- filter: none;
-}
diff --git a/library/font_awesome/less/screen-reader.less b/library/font_awesome/less/screen-reader.less
deleted file mode 100644
index 11c188196..000000000
--- a/library/font_awesome/less/screen-reader.less
+++ /dev/null
@@ -1,5 +0,0 @@
-// Screen Readers
-// -------------------------
-
-.sr-only { .sr-only(); }
-.sr-only-focusable { .sr-only-focusable(); }
diff --git a/library/font_awesome/less/stacked.less b/library/font_awesome/less/stacked.less
deleted file mode 100644
index fc53fb0e7..000000000
--- a/library/font_awesome/less/stacked.less
+++ /dev/null
@@ -1,20 +0,0 @@
-// Stacked Icons
-// -------------------------
-
-.@{fa-css-prefix}-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.@{fa-css-prefix}-stack-1x { line-height: inherit; }
-.@{fa-css-prefix}-stack-2x { font-size: 2em; }
-.@{fa-css-prefix}-inverse { color: @fa-inverse; }
diff --git a/library/font_awesome/less/variables.less b/library/font_awesome/less/variables.less
deleted file mode 100644
index 7ddbbc011..000000000
--- a/library/font_awesome/less/variables.less
+++ /dev/null
@@ -1,800 +0,0 @@
-// Variables
-// --------------------------
-
-@fa-font-path: "../fonts";
-@fa-font-size-base: 14px;
-@fa-line-height-base: 1;
-//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts"; // for referencing Bootstrap CDN font files directly
-@fa-css-prefix: fa;
-@fa-version: "4.7.0";
-@fa-border-color: #eee;
-@fa-inverse: #fff;
-@fa-li-width: (30em / 14);
-
-@fa-var-500px: "\f26e";
-@fa-var-address-book: "\f2b9";
-@fa-var-address-book-o: "\f2ba";
-@fa-var-address-card: "\f2bb";
-@fa-var-address-card-o: "\f2bc";
-@fa-var-adjust: "\f042";
-@fa-var-adn: "\f170";
-@fa-var-align-center: "\f037";
-@fa-var-align-justify: "\f039";
-@fa-var-align-left: "\f036";
-@fa-var-align-right: "\f038";
-@fa-var-amazon: "\f270";
-@fa-var-ambulance: "\f0f9";
-@fa-var-american-sign-language-interpreting: "\f2a3";
-@fa-var-anchor: "\f13d";
-@fa-var-android: "\f17b";
-@fa-var-angellist: "\f209";
-@fa-var-angle-double-down: "\f103";
-@fa-var-angle-double-left: "\f100";
-@fa-var-angle-double-right: "\f101";
-@fa-var-angle-double-up: "\f102";
-@fa-var-angle-down: "\f107";
-@fa-var-angle-left: "\f104";
-@fa-var-angle-right: "\f105";
-@fa-var-angle-up: "\f106";
-@fa-var-apple: "\f179";
-@fa-var-archive: "\f187";
-@fa-var-area-chart: "\f1fe";
-@fa-var-arrow-circle-down: "\f0ab";
-@fa-var-arrow-circle-left: "\f0a8";
-@fa-var-arrow-circle-o-down: "\f01a";
-@fa-var-arrow-circle-o-left: "\f190";
-@fa-var-arrow-circle-o-right: "\f18e";
-@fa-var-arrow-circle-o-up: "\f01b";
-@fa-var-arrow-circle-right: "\f0a9";
-@fa-var-arrow-circle-up: "\f0aa";
-@fa-var-arrow-down: "\f063";
-@fa-var-arrow-left: "\f060";
-@fa-var-arrow-right: "\f061";
-@fa-var-arrow-up: "\f062";
-@fa-var-arrows: "\f047";
-@fa-var-arrows-alt: "\f0b2";
-@fa-var-arrows-h: "\f07e";
-@fa-var-arrows-v: "\f07d";
-@fa-var-asl-interpreting: "\f2a3";
-@fa-var-assistive-listening-systems: "\f2a2";
-@fa-var-asterisk: "\f069";
-@fa-var-at: "\f1fa";
-@fa-var-audio-description: "\f29e";
-@fa-var-automobile: "\f1b9";
-@fa-var-backward: "\f04a";
-@fa-var-balance-scale: "\f24e";
-@fa-var-ban: "\f05e";
-@fa-var-bandcamp: "\f2d5";
-@fa-var-bank: "\f19c";
-@fa-var-bar-chart: "\f080";
-@fa-var-bar-chart-o: "\f080";
-@fa-var-barcode: "\f02a";
-@fa-var-bars: "\f0c9";
-@fa-var-bath: "\f2cd";
-@fa-var-bathtub: "\f2cd";
-@fa-var-battery: "\f240";
-@fa-var-battery-0: "\f244";
-@fa-var-battery-1: "\f243";
-@fa-var-battery-2: "\f242";
-@fa-var-battery-3: "\f241";
-@fa-var-battery-4: "\f240";
-@fa-var-battery-empty: "\f244";
-@fa-var-battery-full: "\f240";
-@fa-var-battery-half: "\f242";
-@fa-var-battery-quarter: "\f243";
-@fa-var-battery-three-quarters: "\f241";
-@fa-var-bed: "\f236";
-@fa-var-beer: "\f0fc";
-@fa-var-behance: "\f1b4";
-@fa-var-behance-square: "\f1b5";
-@fa-var-bell: "\f0f3";
-@fa-var-bell-o: "\f0a2";
-@fa-var-bell-slash: "\f1f6";
-@fa-var-bell-slash-o: "\f1f7";
-@fa-var-bicycle: "\f206";
-@fa-var-binoculars: "\f1e5";
-@fa-var-birthday-cake: "\f1fd";
-@fa-var-bitbucket: "\f171";
-@fa-var-bitbucket-square: "\f172";
-@fa-var-bitcoin: "\f15a";
-@fa-var-black-tie: "\f27e";
-@fa-var-blind: "\f29d";
-@fa-var-bluetooth: "\f293";
-@fa-var-bluetooth-b: "\f294";
-@fa-var-bold: "\f032";
-@fa-var-bolt: "\f0e7";
-@fa-var-bomb: "\f1e2";
-@fa-var-book: "\f02d";
-@fa-var-bookmark: "\f02e";
-@fa-var-bookmark-o: "\f097";
-@fa-var-braille: "\f2a1";
-@fa-var-briefcase: "\f0b1";
-@fa-var-btc: "\f15a";
-@fa-var-bug: "\f188";
-@fa-var-building: "\f1ad";
-@fa-var-building-o: "\f0f7";
-@fa-var-bullhorn: "\f0a1";
-@fa-var-bullseye: "\f140";
-@fa-var-bus: "\f207";
-@fa-var-buysellads: "\f20d";
-@fa-var-cab: "\f1ba";
-@fa-var-calculator: "\f1ec";
-@fa-var-calendar: "\f073";
-@fa-var-calendar-check-o: "\f274";
-@fa-var-calendar-minus-o: "\f272";
-@fa-var-calendar-o: "\f133";
-@fa-var-calendar-plus-o: "\f271";
-@fa-var-calendar-times-o: "\f273";
-@fa-var-camera: "\f030";
-@fa-var-camera-retro: "\f083";
-@fa-var-car: "\f1b9";
-@fa-var-caret-down: "\f0d7";
-@fa-var-caret-left: "\f0d9";
-@fa-var-caret-right: "\f0da";
-@fa-var-caret-square-o-down: "\f150";
-@fa-var-caret-square-o-left: "\f191";
-@fa-var-caret-square-o-right: "\f152";
-@fa-var-caret-square-o-up: "\f151";
-@fa-var-caret-up: "\f0d8";
-@fa-var-cart-arrow-down: "\f218";
-@fa-var-cart-plus: "\f217";
-@fa-var-cc: "\f20a";
-@fa-var-cc-amex: "\f1f3";
-@fa-var-cc-diners-club: "\f24c";
-@fa-var-cc-discover: "\f1f2";
-@fa-var-cc-jcb: "\f24b";
-@fa-var-cc-mastercard: "\f1f1";
-@fa-var-cc-paypal: "\f1f4";
-@fa-var-cc-stripe: "\f1f5";
-@fa-var-cc-visa: "\f1f0";
-@fa-var-certificate: "\f0a3";
-@fa-var-chain: "\f0c1";
-@fa-var-chain-broken: "\f127";
-@fa-var-check: "\f00c";
-@fa-var-check-circle: "\f058";
-@fa-var-check-circle-o: "\f05d";
-@fa-var-check-square: "\f14a";
-@fa-var-check-square-o: "\f046";
-@fa-var-chevron-circle-down: "\f13a";
-@fa-var-chevron-circle-left: "\f137";
-@fa-var-chevron-circle-right: "\f138";
-@fa-var-chevron-circle-up: "\f139";
-@fa-var-chevron-down: "\f078";
-@fa-var-chevron-left: "\f053";
-@fa-var-chevron-right: "\f054";
-@fa-var-chevron-up: "\f077";
-@fa-var-child: "\f1ae";
-@fa-var-chrome: "\f268";
-@fa-var-circle: "\f111";
-@fa-var-circle-o: "\f10c";
-@fa-var-circle-o-notch: "\f1ce";
-@fa-var-circle-thin: "\f1db";
-@fa-var-clipboard: "\f0ea";
-@fa-var-clock-o: "\f017";
-@fa-var-clone: "\f24d";
-@fa-var-close: "\f00d";
-@fa-var-cloud: "\f0c2";
-@fa-var-cloud-download: "\f0ed";
-@fa-var-cloud-upload: "\f0ee";
-@fa-var-cny: "\f157";
-@fa-var-code: "\f121";
-@fa-var-code-fork: "\f126";
-@fa-var-codepen: "\f1cb";
-@fa-var-codiepie: "\f284";
-@fa-var-coffee: "\f0f4";
-@fa-var-cog: "\f013";
-@fa-var-cogs: "\f085";
-@fa-var-columns: "\f0db";
-@fa-var-comment: "\f075";
-@fa-var-comment-o: "\f0e5";
-@fa-var-commenting: "\f27a";
-@fa-var-commenting-o: "\f27b";
-@fa-var-comments: "\f086";
-@fa-var-comments-o: "\f0e6";
-@fa-var-compass: "\f14e";
-@fa-var-compress: "\f066";
-@fa-var-connectdevelop: "\f20e";
-@fa-var-contao: "\f26d";
-@fa-var-copy: "\f0c5";
-@fa-var-copyright: "\f1f9";
-@fa-var-creative-commons: "\f25e";
-@fa-var-credit-card: "\f09d";
-@fa-var-credit-card-alt: "\f283";
-@fa-var-crop: "\f125";
-@fa-var-crosshairs: "\f05b";
-@fa-var-css3: "\f13c";
-@fa-var-cube: "\f1b2";
-@fa-var-cubes: "\f1b3";
-@fa-var-cut: "\f0c4";
-@fa-var-cutlery: "\f0f5";
-@fa-var-dashboard: "\f0e4";
-@fa-var-dashcube: "\f210";
-@fa-var-database: "\f1c0";
-@fa-var-deaf: "\f2a4";
-@fa-var-deafness: "\f2a4";
-@fa-var-dedent: "\f03b";
-@fa-var-delicious: "\f1a5";
-@fa-var-desktop: "\f108";
-@fa-var-deviantart: "\f1bd";
-@fa-var-diamond: "\f219";
-@fa-var-digg: "\f1a6";
-@fa-var-dollar: "\f155";
-@fa-var-dot-circle-o: "\f192";
-@fa-var-download: "\f019";
-@fa-var-dribbble: "\f17d";
-@fa-var-drivers-license: "\f2c2";
-@fa-var-drivers-license-o: "\f2c3";
-@fa-var-dropbox: "\f16b";
-@fa-var-drupal: "\f1a9";
-@fa-var-edge: "\f282";
-@fa-var-edit: "\f044";
-@fa-var-eercast: "\f2da";
-@fa-var-eject: "\f052";
-@fa-var-ellipsis-h: "\f141";
-@fa-var-ellipsis-v: "\f142";
-@fa-var-empire: "\f1d1";
-@fa-var-envelope: "\f0e0";
-@fa-var-envelope-o: "\f003";
-@fa-var-envelope-open: "\f2b6";
-@fa-var-envelope-open-o: "\f2b7";
-@fa-var-envelope-square: "\f199";
-@fa-var-envira: "\f299";
-@fa-var-eraser: "\f12d";
-@fa-var-etsy: "\f2d7";
-@fa-var-eur: "\f153";
-@fa-var-euro: "\f153";
-@fa-var-exchange: "\f0ec";
-@fa-var-exclamation: "\f12a";
-@fa-var-exclamation-circle: "\f06a";
-@fa-var-exclamation-triangle: "\f071";
-@fa-var-expand: "\f065";
-@fa-var-expeditedssl: "\f23e";
-@fa-var-external-link: "\f08e";
-@fa-var-external-link-square: "\f14c";
-@fa-var-eye: "\f06e";
-@fa-var-eye-slash: "\f070";
-@fa-var-eyedropper: "\f1fb";
-@fa-var-fa: "\f2b4";
-@fa-var-facebook: "\f09a";
-@fa-var-facebook-f: "\f09a";
-@fa-var-facebook-official: "\f230";
-@fa-var-facebook-square: "\f082";
-@fa-var-fast-backward: "\f049";
-@fa-var-fast-forward: "\f050";
-@fa-var-fax: "\f1ac";
-@fa-var-feed: "\f09e";
-@fa-var-female: "\f182";
-@fa-var-fighter-jet: "\f0fb";
-@fa-var-file: "\f15b";
-@fa-var-file-archive-o: "\f1c6";
-@fa-var-file-audio-o: "\f1c7";
-@fa-var-file-code-o: "\f1c9";
-@fa-var-file-excel-o: "\f1c3";
-@fa-var-file-image-o: "\f1c5";
-@fa-var-file-movie-o: "\f1c8";
-@fa-var-file-o: "\f016";
-@fa-var-file-pdf-o: "\f1c1";
-@fa-var-file-photo-o: "\f1c5";
-@fa-var-file-picture-o: "\f1c5";
-@fa-var-file-powerpoint-o: "\f1c4";
-@fa-var-file-sound-o: "\f1c7";
-@fa-var-file-text: "\f15c";
-@fa-var-file-text-o: "\f0f6";
-@fa-var-file-video-o: "\f1c8";
-@fa-var-file-word-o: "\f1c2";
-@fa-var-file-zip-o: "\f1c6";
-@fa-var-files-o: "\f0c5";
-@fa-var-film: "\f008";
-@fa-var-filter: "\f0b0";
-@fa-var-fire: "\f06d";
-@fa-var-fire-extinguisher: "\f134";
-@fa-var-firefox: "\f269";
-@fa-var-first-order: "\f2b0";
-@fa-var-flag: "\f024";
-@fa-var-flag-checkered: "\f11e";
-@fa-var-flag-o: "\f11d";
-@fa-var-flash: "\f0e7";
-@fa-var-flask: "\f0c3";
-@fa-var-flickr: "\f16e";
-@fa-var-floppy-o: "\f0c7";
-@fa-var-folder: "\f07b";
-@fa-var-folder-o: "\f114";
-@fa-var-folder-open: "\f07c";
-@fa-var-folder-open-o: "\f115";
-@fa-var-font: "\f031";
-@fa-var-font-awesome: "\f2b4";
-@fa-var-fonticons: "\f280";
-@fa-var-fort-awesome: "\f286";
-@fa-var-forumbee: "\f211";
-@fa-var-forward: "\f04e";
-@fa-var-foursquare: "\f180";
-@fa-var-free-code-camp: "\f2c5";
-@fa-var-frown-o: "\f119";
-@fa-var-futbol-o: "\f1e3";
-@fa-var-gamepad: "\f11b";
-@fa-var-gavel: "\f0e3";
-@fa-var-gbp: "\f154";
-@fa-var-ge: "\f1d1";
-@fa-var-gear: "\f013";
-@fa-var-gears: "\f085";
-@fa-var-genderless: "\f22d";
-@fa-var-get-pocket: "\f265";
-@fa-var-gg: "\f260";
-@fa-var-gg-circle: "\f261";
-@fa-var-gift: "\f06b";
-@fa-var-git: "\f1d3";
-@fa-var-git-square: "\f1d2";
-@fa-var-github: "\f09b";
-@fa-var-github-alt: "\f113";
-@fa-var-github-square: "\f092";
-@fa-var-gitlab: "\f296";
-@fa-var-gittip: "\f184";
-@fa-var-glass: "\f000";
-@fa-var-glide: "\f2a5";
-@fa-var-glide-g: "\f2a6";
-@fa-var-globe: "\f0ac";
-@fa-var-google: "\f1a0";
-@fa-var-google-plus: "\f0d5";
-@fa-var-google-plus-circle: "\f2b3";
-@fa-var-google-plus-official: "\f2b3";
-@fa-var-google-plus-square: "\f0d4";
-@fa-var-google-wallet: "\f1ee";
-@fa-var-graduation-cap: "\f19d";
-@fa-var-gratipay: "\f184";
-@fa-var-grav: "\f2d6";
-@fa-var-group: "\f0c0";
-@fa-var-h-square: "\f0fd";
-@fa-var-hacker-news: "\f1d4";
-@fa-var-hand-grab-o: "\f255";
-@fa-var-hand-lizard-o: "\f258";
-@fa-var-hand-o-down: "\f0a7";
-@fa-var-hand-o-left: "\f0a5";
-@fa-var-hand-o-right: "\f0a4";
-@fa-var-hand-o-up: "\f0a6";
-@fa-var-hand-paper-o: "\f256";
-@fa-var-hand-peace-o: "\f25b";
-@fa-var-hand-pointer-o: "\f25a";
-@fa-var-hand-rock-o: "\f255";
-@fa-var-hand-scissors-o: "\f257";
-@fa-var-hand-spock-o: "\f259";
-@fa-var-hand-stop-o: "\f256";
-@fa-var-handshake-o: "\f2b5";
-@fa-var-hard-of-hearing: "\f2a4";
-@fa-var-hashtag: "\f292";
-@fa-var-hdd-o: "\f0a0";
-@fa-var-header: "\f1dc";
-@fa-var-headphones: "\f025";
-@fa-var-heart: "\f004";
-@fa-var-heart-o: "\f08a";
-@fa-var-heartbeat: "\f21e";
-@fa-var-history: "\f1da";
-@fa-var-home: "\f015";
-@fa-var-hospital-o: "\f0f8";
-@fa-var-hotel: "\f236";
-@fa-var-hourglass: "\f254";
-@fa-var-hourglass-1: "\f251";
-@fa-var-hourglass-2: "\f252";
-@fa-var-hourglass-3: "\f253";
-@fa-var-hourglass-end: "\f253";
-@fa-var-hourglass-half: "\f252";
-@fa-var-hourglass-o: "\f250";
-@fa-var-hourglass-start: "\f251";
-@fa-var-houzz: "\f27c";
-@fa-var-html5: "\f13b";
-@fa-var-i-cursor: "\f246";
-@fa-var-id-badge: "\f2c1";
-@fa-var-id-card: "\f2c2";
-@fa-var-id-card-o: "\f2c3";
-@fa-var-ils: "\f20b";
-@fa-var-image: "\f03e";
-@fa-var-imdb: "\f2d8";
-@fa-var-inbox: "\f01c";
-@fa-var-indent: "\f03c";
-@fa-var-industry: "\f275";
-@fa-var-info: "\f129";
-@fa-var-info-circle: "\f05a";
-@fa-var-inr: "\f156";
-@fa-var-instagram: "\f16d";
-@fa-var-institution: "\f19c";
-@fa-var-internet-explorer: "\f26b";
-@fa-var-intersex: "\f224";
-@fa-var-ioxhost: "\f208";
-@fa-var-italic: "\f033";
-@fa-var-joomla: "\f1aa";
-@fa-var-jpy: "\f157";
-@fa-var-jsfiddle: "\f1cc";
-@fa-var-key: "\f084";
-@fa-var-keyboard-o: "\f11c";
-@fa-var-krw: "\f159";
-@fa-var-language: "\f1ab";
-@fa-var-laptop: "\f109";
-@fa-var-lastfm: "\f202";
-@fa-var-lastfm-square: "\f203";
-@fa-var-leaf: "\f06c";
-@fa-var-leanpub: "\f212";
-@fa-var-legal: "\f0e3";
-@fa-var-lemon-o: "\f094";
-@fa-var-level-down: "\f149";
-@fa-var-level-up: "\f148";
-@fa-var-life-bouy: "\f1cd";
-@fa-var-life-buoy: "\f1cd";
-@fa-var-life-ring: "\f1cd";
-@fa-var-life-saver: "\f1cd";
-@fa-var-lightbulb-o: "\f0eb";
-@fa-var-line-chart: "\f201";
-@fa-var-link: "\f0c1";
-@fa-var-linkedin: "\f0e1";
-@fa-var-linkedin-square: "\f08c";
-@fa-var-linode: "\f2b8";
-@fa-var-linux: "\f17c";
-@fa-var-list: "\f03a";
-@fa-var-list-alt: "\f022";
-@fa-var-list-ol: "\f0cb";
-@fa-var-list-ul: "\f0ca";
-@fa-var-location-arrow: "\f124";
-@fa-var-lock: "\f023";
-@fa-var-long-arrow-down: "\f175";
-@fa-var-long-arrow-left: "\f177";
-@fa-var-long-arrow-right: "\f178";
-@fa-var-long-arrow-up: "\f176";
-@fa-var-low-vision: "\f2a8";
-@fa-var-magic: "\f0d0";
-@fa-var-magnet: "\f076";
-@fa-var-mail-forward: "\f064";
-@fa-var-mail-reply: "\f112";
-@fa-var-mail-reply-all: "\f122";
-@fa-var-male: "\f183";
-@fa-var-map: "\f279";
-@fa-var-map-marker: "\f041";
-@fa-var-map-o: "\f278";
-@fa-var-map-pin: "\f276";
-@fa-var-map-signs: "\f277";
-@fa-var-mars: "\f222";
-@fa-var-mars-double: "\f227";
-@fa-var-mars-stroke: "\f229";
-@fa-var-mars-stroke-h: "\f22b";
-@fa-var-mars-stroke-v: "\f22a";
-@fa-var-maxcdn: "\f136";
-@fa-var-meanpath: "\f20c";
-@fa-var-medium: "\f23a";
-@fa-var-medkit: "\f0fa";
-@fa-var-meetup: "\f2e0";
-@fa-var-meh-o: "\f11a";
-@fa-var-mercury: "\f223";
-@fa-var-microchip: "\f2db";
-@fa-var-microphone: "\f130";
-@fa-var-microphone-slash: "\f131";
-@fa-var-minus: "\f068";
-@fa-var-minus-circle: "\f056";
-@fa-var-minus-square: "\f146";
-@fa-var-minus-square-o: "\f147";
-@fa-var-mixcloud: "\f289";
-@fa-var-mobile: "\f10b";
-@fa-var-mobile-phone: "\f10b";
-@fa-var-modx: "\f285";
-@fa-var-money: "\f0d6";
-@fa-var-moon-o: "\f186";
-@fa-var-mortar-board: "\f19d";
-@fa-var-motorcycle: "\f21c";
-@fa-var-mouse-pointer: "\f245";
-@fa-var-music: "\f001";
-@fa-var-navicon: "\f0c9";
-@fa-var-neuter: "\f22c";
-@fa-var-newspaper-o: "\f1ea";
-@fa-var-object-group: "\f247";
-@fa-var-object-ungroup: "\f248";
-@fa-var-odnoklassniki: "\f263";
-@fa-var-odnoklassniki-square: "\f264";
-@fa-var-opencart: "\f23d";
-@fa-var-openid: "\f19b";
-@fa-var-opera: "\f26a";
-@fa-var-optin-monster: "\f23c";
-@fa-var-outdent: "\f03b";
-@fa-var-pagelines: "\f18c";
-@fa-var-paint-brush: "\f1fc";
-@fa-var-paper-plane: "\f1d8";
-@fa-var-paper-plane-o: "\f1d9";
-@fa-var-paperclip: "\f0c6";
-@fa-var-paragraph: "\f1dd";
-@fa-var-paste: "\f0ea";
-@fa-var-pause: "\f04c";
-@fa-var-pause-circle: "\f28b";
-@fa-var-pause-circle-o: "\f28c";
-@fa-var-paw: "\f1b0";
-@fa-var-paypal: "\f1ed";
-@fa-var-pencil: "\f040";
-@fa-var-pencil-square: "\f14b";
-@fa-var-pencil-square-o: "\f044";
-@fa-var-percent: "\f295";
-@fa-var-phone: "\f095";
-@fa-var-phone-square: "\f098";
-@fa-var-photo: "\f03e";
-@fa-var-picture-o: "\f03e";
-@fa-var-pie-chart: "\f200";
-@fa-var-pied-piper: "\f2ae";
-@fa-var-pied-piper-alt: "\f1a8";
-@fa-var-pied-piper-pp: "\f1a7";
-@fa-var-pinterest: "\f0d2";
-@fa-var-pinterest-p: "\f231";
-@fa-var-pinterest-square: "\f0d3";
-@fa-var-plane: "\f072";
-@fa-var-play: "\f04b";
-@fa-var-play-circle: "\f144";
-@fa-var-play-circle-o: "\f01d";
-@fa-var-plug: "\f1e6";
-@fa-var-plus: "\f067";
-@fa-var-plus-circle: "\f055";
-@fa-var-plus-square: "\f0fe";
-@fa-var-plus-square-o: "\f196";
-@fa-var-podcast: "\f2ce";
-@fa-var-power-off: "\f011";
-@fa-var-print: "\f02f";
-@fa-var-product-hunt: "\f288";
-@fa-var-puzzle-piece: "\f12e";
-@fa-var-qq: "\f1d6";
-@fa-var-qrcode: "\f029";
-@fa-var-question: "\f128";
-@fa-var-question-circle: "\f059";
-@fa-var-question-circle-o: "\f29c";
-@fa-var-quora: "\f2c4";
-@fa-var-quote-left: "\f10d";
-@fa-var-quote-right: "\f10e";
-@fa-var-ra: "\f1d0";
-@fa-var-random: "\f074";
-@fa-var-ravelry: "\f2d9";
-@fa-var-rebel: "\f1d0";
-@fa-var-recycle: "\f1b8";
-@fa-var-reddit: "\f1a1";
-@fa-var-reddit-alien: "\f281";
-@fa-var-reddit-square: "\f1a2";
-@fa-var-refresh: "\f021";
-@fa-var-registered: "\f25d";
-@fa-var-remove: "\f00d";
-@fa-var-renren: "\f18b";
-@fa-var-reorder: "\f0c9";
-@fa-var-repeat: "\f01e";
-@fa-var-reply: "\f112";
-@fa-var-reply-all: "\f122";
-@fa-var-resistance: "\f1d0";
-@fa-var-retweet: "\f079";
-@fa-var-rmb: "\f157";
-@fa-var-road: "\f018";
-@fa-var-rocket: "\f135";
-@fa-var-rotate-left: "\f0e2";
-@fa-var-rotate-right: "\f01e";
-@fa-var-rouble: "\f158";
-@fa-var-rss: "\f09e";
-@fa-var-rss-square: "\f143";
-@fa-var-rub: "\f158";
-@fa-var-ruble: "\f158";
-@fa-var-rupee: "\f156";
-@fa-var-s15: "\f2cd";
-@fa-var-safari: "\f267";
-@fa-var-save: "\f0c7";
-@fa-var-scissors: "\f0c4";
-@fa-var-scribd: "\f28a";
-@fa-var-search: "\f002";
-@fa-var-search-minus: "\f010";
-@fa-var-search-plus: "\f00e";
-@fa-var-sellsy: "\f213";
-@fa-var-send: "\f1d8";
-@fa-var-send-o: "\f1d9";
-@fa-var-server: "\f233";
-@fa-var-share: "\f064";
-@fa-var-share-alt: "\f1e0";
-@fa-var-share-alt-square: "\f1e1";
-@fa-var-share-square: "\f14d";
-@fa-var-share-square-o: "\f045";
-@fa-var-shekel: "\f20b";
-@fa-var-sheqel: "\f20b";
-@fa-var-shield: "\f132";
-@fa-var-ship: "\f21a";
-@fa-var-shirtsinbulk: "\f214";
-@fa-var-shopping-bag: "\f290";
-@fa-var-shopping-basket: "\f291";
-@fa-var-shopping-cart: "\f07a";
-@fa-var-shower: "\f2cc";
-@fa-var-sign-in: "\f090";
-@fa-var-sign-language: "\f2a7";
-@fa-var-sign-out: "\f08b";
-@fa-var-signal: "\f012";
-@fa-var-signing: "\f2a7";
-@fa-var-simplybuilt: "\f215";
-@fa-var-sitemap: "\f0e8";
-@fa-var-skyatlas: "\f216";
-@fa-var-skype: "\f17e";
-@fa-var-slack: "\f198";
-@fa-var-sliders: "\f1de";
-@fa-var-slideshare: "\f1e7";
-@fa-var-smile-o: "\f118";
-@fa-var-snapchat: "\f2ab";
-@fa-var-snapchat-ghost: "\f2ac";
-@fa-var-snapchat-square: "\f2ad";
-@fa-var-snowflake-o: "\f2dc";
-@fa-var-soccer-ball-o: "\f1e3";
-@fa-var-sort: "\f0dc";
-@fa-var-sort-alpha-asc: "\f15d";
-@fa-var-sort-alpha-desc: "\f15e";
-@fa-var-sort-amount-asc: "\f160";
-@fa-var-sort-amount-desc: "\f161";
-@fa-var-sort-asc: "\f0de";
-@fa-var-sort-desc: "\f0dd";
-@fa-var-sort-down: "\f0dd";
-@fa-var-sort-numeric-asc: "\f162";
-@fa-var-sort-numeric-desc: "\f163";
-@fa-var-sort-up: "\f0de";
-@fa-var-soundcloud: "\f1be";
-@fa-var-space-shuttle: "\f197";
-@fa-var-spinner: "\f110";
-@fa-var-spoon: "\f1b1";
-@fa-var-spotify: "\f1bc";
-@fa-var-square: "\f0c8";
-@fa-var-square-o: "\f096";
-@fa-var-stack-exchange: "\f18d";
-@fa-var-stack-overflow: "\f16c";
-@fa-var-star: "\f005";
-@fa-var-star-half: "\f089";
-@fa-var-star-half-empty: "\f123";
-@fa-var-star-half-full: "\f123";
-@fa-var-star-half-o: "\f123";
-@fa-var-star-o: "\f006";
-@fa-var-steam: "\f1b6";
-@fa-var-steam-square: "\f1b7";
-@fa-var-step-backward: "\f048";
-@fa-var-step-forward: "\f051";
-@fa-var-stethoscope: "\f0f1";
-@fa-var-sticky-note: "\f249";
-@fa-var-sticky-note-o: "\f24a";
-@fa-var-stop: "\f04d";
-@fa-var-stop-circle: "\f28d";
-@fa-var-stop-circle-o: "\f28e";
-@fa-var-street-view: "\f21d";
-@fa-var-strikethrough: "\f0cc";
-@fa-var-stumbleupon: "\f1a4";
-@fa-var-stumbleupon-circle: "\f1a3";
-@fa-var-subscript: "\f12c";
-@fa-var-subway: "\f239";
-@fa-var-suitcase: "\f0f2";
-@fa-var-sun-o: "\f185";
-@fa-var-superpowers: "\f2dd";
-@fa-var-superscript: "\f12b";
-@fa-var-support: "\f1cd";
-@fa-var-table: "\f0ce";
-@fa-var-tablet: "\f10a";
-@fa-var-tachometer: "\f0e4";
-@fa-var-tag: "\f02b";
-@fa-var-tags: "\f02c";
-@fa-var-tasks: "\f0ae";
-@fa-var-taxi: "\f1ba";
-@fa-var-telegram: "\f2c6";
-@fa-var-television: "\f26c";
-@fa-var-tencent-weibo: "\f1d5";
-@fa-var-terminal: "\f120";
-@fa-var-text-height: "\f034";
-@fa-var-text-width: "\f035";
-@fa-var-th: "\f00a";
-@fa-var-th-large: "\f009";
-@fa-var-th-list: "\f00b";
-@fa-var-themeisle: "\f2b2";
-@fa-var-thermometer: "\f2c7";
-@fa-var-thermometer-0: "\f2cb";
-@fa-var-thermometer-1: "\f2ca";
-@fa-var-thermometer-2: "\f2c9";
-@fa-var-thermometer-3: "\f2c8";
-@fa-var-thermometer-4: "\f2c7";
-@fa-var-thermometer-empty: "\f2cb";
-@fa-var-thermometer-full: "\f2c7";
-@fa-var-thermometer-half: "\f2c9";
-@fa-var-thermometer-quarter: "\f2ca";
-@fa-var-thermometer-three-quarters: "\f2c8";
-@fa-var-thumb-tack: "\f08d";
-@fa-var-thumbs-down: "\f165";
-@fa-var-thumbs-o-down: "\f088";
-@fa-var-thumbs-o-up: "\f087";
-@fa-var-thumbs-up: "\f164";
-@fa-var-ticket: "\f145";
-@fa-var-times: "\f00d";
-@fa-var-times-circle: "\f057";
-@fa-var-times-circle-o: "\f05c";
-@fa-var-times-rectangle: "\f2d3";
-@fa-var-times-rectangle-o: "\f2d4";
-@fa-var-tint: "\f043";
-@fa-var-toggle-down: "\f150";
-@fa-var-toggle-left: "\f191";
-@fa-var-toggle-off: "\f204";
-@fa-var-toggle-on: "\f205";
-@fa-var-toggle-right: "\f152";
-@fa-var-toggle-up: "\f151";
-@fa-var-trademark: "\f25c";
-@fa-var-train: "\f238";
-@fa-var-transgender: "\f224";
-@fa-var-transgender-alt: "\f225";
-@fa-var-trash: "\f1f8";
-@fa-var-trash-o: "\f014";
-@fa-var-tree: "\f1bb";
-@fa-var-trello: "\f181";
-@fa-var-tripadvisor: "\f262";
-@fa-var-trophy: "\f091";
-@fa-var-truck: "\f0d1";
-@fa-var-try: "\f195";
-@fa-var-tty: "\f1e4";
-@fa-var-tumblr: "\f173";
-@fa-var-tumblr-square: "\f174";
-@fa-var-turkish-lira: "\f195";
-@fa-var-tv: "\f26c";
-@fa-var-twitch: "\f1e8";
-@fa-var-twitter: "\f099";
-@fa-var-twitter-square: "\f081";
-@fa-var-umbrella: "\f0e9";
-@fa-var-underline: "\f0cd";
-@fa-var-undo: "\f0e2";
-@fa-var-universal-access: "\f29a";
-@fa-var-university: "\f19c";
-@fa-var-unlink: "\f127";
-@fa-var-unlock: "\f09c";
-@fa-var-unlock-alt: "\f13e";
-@fa-var-unsorted: "\f0dc";
-@fa-var-upload: "\f093";
-@fa-var-usb: "\f287";
-@fa-var-usd: "\f155";
-@fa-var-user: "\f007";
-@fa-var-user-circle: "\f2bd";
-@fa-var-user-circle-o: "\f2be";
-@fa-var-user-md: "\f0f0";
-@fa-var-user-o: "\f2c0";
-@fa-var-user-plus: "\f234";
-@fa-var-user-secret: "\f21b";
-@fa-var-user-times: "\f235";
-@fa-var-users: "\f0c0";
-@fa-var-vcard: "\f2bb";
-@fa-var-vcard-o: "\f2bc";
-@fa-var-venus: "\f221";
-@fa-var-venus-double: "\f226";
-@fa-var-venus-mars: "\f228";
-@fa-var-viacoin: "\f237";
-@fa-var-viadeo: "\f2a9";
-@fa-var-viadeo-square: "\f2aa";
-@fa-var-video-camera: "\f03d";
-@fa-var-vimeo: "\f27d";
-@fa-var-vimeo-square: "\f194";
-@fa-var-vine: "\f1ca";
-@fa-var-vk: "\f189";
-@fa-var-volume-control-phone: "\f2a0";
-@fa-var-volume-down: "\f027";
-@fa-var-volume-off: "\f026";
-@fa-var-volume-up: "\f028";
-@fa-var-warning: "\f071";
-@fa-var-wechat: "\f1d7";
-@fa-var-weibo: "\f18a";
-@fa-var-weixin: "\f1d7";
-@fa-var-whatsapp: "\f232";
-@fa-var-wheelchair: "\f193";
-@fa-var-wheelchair-alt: "\f29b";
-@fa-var-wifi: "\f1eb";
-@fa-var-wikipedia-w: "\f266";
-@fa-var-window-close: "\f2d3";
-@fa-var-window-close-o: "\f2d4";
-@fa-var-window-maximize: "\f2d0";
-@fa-var-window-minimize: "\f2d1";
-@fa-var-window-restore: "\f2d2";
-@fa-var-windows: "\f17a";
-@fa-var-won: "\f159";
-@fa-var-wordpress: "\f19a";
-@fa-var-wpbeginner: "\f297";
-@fa-var-wpexplorer: "\f2de";
-@fa-var-wpforms: "\f298";
-@fa-var-wrench: "\f0ad";
-@fa-var-xing: "\f168";
-@fa-var-xing-square: "\f169";
-@fa-var-y-combinator: "\f23b";
-@fa-var-y-combinator-square: "\f1d4";
-@fa-var-yahoo: "\f19e";
-@fa-var-yc: "\f23b";
-@fa-var-yc-square: "\f1d4";
-@fa-var-yelp: "\f1e9";
-@fa-var-yen: "\f157";
-@fa-var-yoast: "\f2b1";
-@fa-var-youtube: "\f167";
-@fa-var-youtube-play: "\f16a";
-@fa-var-youtube-square: "\f166";
-
diff --git a/library/font_awesome/package.json b/library/font_awesome/package.json
deleted file mode 100644
index 86f58db06..000000000
--- a/library/font_awesome/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "font-awesome",
- "description": "The iconic font and CSS framework",
- "version": "4.7.0",
- "style": "css/font-awesome.css",
- "keywords": ["font", "awesome", "fontawesome", "icon", "font", "bootstrap"],
- "homepage": "http://fontawesome.io/",
- "bugs": {
- "url" : "http://github.com/FortAwesome/Font-Awesome/issues"
- },
- "author": {
- "name": "Dave Gandy",
- "email": "dave@fontawesome.io",
- "web": "http://twitter.com/davegandy"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/FortAwesome/Font-Awesome.git"
- },
- "contributors": [
- {
- "name": "Brian Talbot",
- "web": "http://twitter.com/talbs"
- },
- {
- "name": "Travis Chase",
- "web": "http://twitter.com/supercodepoet"
- },
- {
- "name": "Rob Madole",
- "web": "http://twitter.com/robmadole"
- },
- {
- "name": "Geremia Taglialatela",
- "web": "http://twitter.com/gtagliala"
- }
- ],
- "license": "(OFL-1.1 AND MIT)",
- "dependencies": {
- },
- "engines" : {
- "node" : ">=0.10.3"
- }
-}
diff --git a/library/font_awesome/scss/_animated.scss b/library/font_awesome/scss/_animated.scss
deleted file mode 100644
index 8a020dbff..000000000
--- a/library/font_awesome/scss/_animated.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-// Spinning Icons
-// --------------------------
-
-.#{$fa-css-prefix}-spin {
- -webkit-animation: fa-spin 2s infinite linear;
- animation: fa-spin 2s infinite linear;
-}
-
-.#{$fa-css-prefix}-pulse {
- -webkit-animation: fa-spin 1s infinite steps(8);
- animation: fa-spin 1s infinite steps(8);
-}
-
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
diff --git a/library/font_awesome/scss/_bordered-pulled.scss b/library/font_awesome/scss/_bordered-pulled.scss
deleted file mode 100644
index d4b85a02f..000000000
--- a/library/font_awesome/scss/_bordered-pulled.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-// Bordered & Pulled
-// -------------------------
-
-.#{$fa-css-prefix}-border {
- padding: .2em .25em .15em;
- border: solid .08em $fa-border-color;
- border-radius: .1em;
-}
-
-.#{$fa-css-prefix}-pull-left { float: left; }
-.#{$fa-css-prefix}-pull-right { float: right; }
-
-.#{$fa-css-prefix} {
- &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
- &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
-}
-
-/* Deprecated as of 4.4.0 */
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-.#{$fa-css-prefix} {
- &.pull-left { margin-right: .3em; }
- &.pull-right { margin-left: .3em; }
-}
diff --git a/library/font_awesome/scss/_core.scss b/library/font_awesome/scss/_core.scss
deleted file mode 100644
index 7425ef85f..000000000
--- a/library/font_awesome/scss/_core.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base Class Definition
-// -------------------------
-
-.#{$fa-css-prefix} {
- display: inline-block;
- font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
- font-size: inherit; // can't have font-size inherit on line above, so need to override
- text-rendering: auto; // optimizelegibility throws things off #1094
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-
-}
diff --git a/library/font_awesome/scss/_fixed-width.scss b/library/font_awesome/scss/_fixed-width.scss
deleted file mode 100644
index b221c9813..000000000
--- a/library/font_awesome/scss/_fixed-width.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// Fixed Width Icons
-// -------------------------
-.#{$fa-css-prefix}-fw {
- width: (18em / 14);
- text-align: center;
-}
diff --git a/library/font_awesome/scss/_icons.scss b/library/font_awesome/scss/_icons.scss
deleted file mode 100644
index e63e702c4..000000000
--- a/library/font_awesome/scss/_icons.scss
+++ /dev/null
@@ -1,789 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-
-.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
-.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
-.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
-.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
-.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
-.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
-.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
-.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
-.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
-.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
-.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
-.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
-.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
-.#{$fa-css-prefix}-remove:before,
-.#{$fa-css-prefix}-close:before,
-.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
-.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
-.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
-.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
-.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
-.#{$fa-css-prefix}-gear:before,
-.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
-.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
-.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
-.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
-.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
-.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
-.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
-.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
-.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
-.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
-.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
-.#{$fa-css-prefix}-rotate-right:before,
-.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
-.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
-.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
-.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
-.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
-.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
-.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
-.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
-.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
-.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
-.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
-.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
-.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
-.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
-.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
-.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
-.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
-.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
-.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
-.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
-.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
-.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
-.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
-.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
-.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
-.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
-.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
-.#{$fa-css-prefix}-dedent:before,
-.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
-.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
-.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
-.#{$fa-css-prefix}-photo:before,
-.#{$fa-css-prefix}-image:before,
-.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
-.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
-.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
-.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
-.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
-.#{$fa-css-prefix}-edit:before,
-.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
-.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
-.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
-.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
-.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
-.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
-.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
-.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
-.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
-.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
-.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
-.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
-.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
-.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
-.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
-.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
-.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
-.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
-.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
-.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
-.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
-.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
-.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
-.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
-.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
-.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
-.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
-.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
-.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
-.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
-.#{$fa-css-prefix}-mail-forward:before,
-.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
-.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
-.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
-.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
-.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
-.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
-.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
-.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
-.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
-.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
-.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
-.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
-.#{$fa-css-prefix}-warning:before,
-.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
-.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
-.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
-.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
-.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
-.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
-.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
-.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
-.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
-.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
-.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
-.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
-.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
-.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
-.#{$fa-css-prefix}-bar-chart-o:before,
-.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
-.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
-.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
-.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
-.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
-.#{$fa-css-prefix}-gears:before,
-.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
-.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
-.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
-.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
-.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
-.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
-.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
-.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
-.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
-.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
-.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
-.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
-.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
-.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
-.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
-.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
-.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
-.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
-.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
-.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
-.#{$fa-css-prefix}-facebook-f:before,
-.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
-.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
-.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
-.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
-.#{$fa-css-prefix}-feed:before,
-.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
-.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
-.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
-.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
-.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
-.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
-.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
-.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
-.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
-.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
-.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
-.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
-.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
-.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
-.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
-.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
-.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
-.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
-.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
-.#{$fa-css-prefix}-group:before,
-.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
-.#{$fa-css-prefix}-chain:before,
-.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
-.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
-.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
-.#{$fa-css-prefix}-cut:before,
-.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
-.#{$fa-css-prefix}-copy:before,
-.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
-.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
-.#{$fa-css-prefix}-save:before,
-.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
-.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
-.#{$fa-css-prefix}-navicon:before,
-.#{$fa-css-prefix}-reorder:before,
-.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
-.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
-.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
-.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
-.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
-.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
-.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
-.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
-.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
-.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
-.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
-.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
-.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
-.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
-.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
-.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
-.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
-.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
-.#{$fa-css-prefix}-unsorted:before,
-.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
-.#{$fa-css-prefix}-sort-down:before,
-.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
-.#{$fa-css-prefix}-sort-up:before,
-.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
-.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
-.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
-.#{$fa-css-prefix}-rotate-left:before,
-.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
-.#{$fa-css-prefix}-legal:before,
-.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
-.#{$fa-css-prefix}-dashboard:before,
-.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
-.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
-.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
-.#{$fa-css-prefix}-flash:before,
-.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
-.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
-.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
-.#{$fa-css-prefix}-paste:before,
-.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
-.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
-.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
-.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
-.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
-.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
-.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
-.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
-.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
-.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
-.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
-.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
-.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
-.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
-.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
-.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
-.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
-.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
-.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
-.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
-.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
-.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
-.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
-.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
-.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
-.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
-.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
-.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
-.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
-.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
-.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
-.#{$fa-css-prefix}-mobile-phone:before,
-.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
-.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
-.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
-.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
-.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
-.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
-.#{$fa-css-prefix}-mail-reply:before,
-.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
-.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
-.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
-.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
-.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
-.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
-.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
-.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
-.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
-.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
-.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
-.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
-.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
-.#{$fa-css-prefix}-mail-reply-all:before,
-.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
-.#{$fa-css-prefix}-star-half-empty:before,
-.#{$fa-css-prefix}-star-half-full:before,
-.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
-.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
-.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
-.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
-.#{$fa-css-prefix}-unlink:before,
-.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
-.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
-.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
-.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
-.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
-.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
-.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
-.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
-.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
-.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
-.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
-.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
-.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
-.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
-.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
-.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
-.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
-.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
-.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
-.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
-.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
-.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
-.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
-.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
-.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
-.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
-.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
-.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
-.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
-.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
-.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
-.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
-.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
-.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
-.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
-.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
-.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
-.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
-.#{$fa-css-prefix}-toggle-down:before,
-.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
-.#{$fa-css-prefix}-toggle-up:before,
-.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
-.#{$fa-css-prefix}-toggle-right:before,
-.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
-.#{$fa-css-prefix}-euro:before,
-.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
-.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
-.#{$fa-css-prefix}-dollar:before,
-.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
-.#{$fa-css-prefix}-rupee:before,
-.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
-.#{$fa-css-prefix}-cny:before,
-.#{$fa-css-prefix}-rmb:before,
-.#{$fa-css-prefix}-yen:before,
-.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
-.#{$fa-css-prefix}-ruble:before,
-.#{$fa-css-prefix}-rouble:before,
-.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
-.#{$fa-css-prefix}-won:before,
-.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
-.#{$fa-css-prefix}-bitcoin:before,
-.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
-.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
-.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
-.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
-.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
-.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
-.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
-.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
-.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
-.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
-.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
-.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
-.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
-.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
-.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
-.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
-.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
-.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
-.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
-.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
-.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
-.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
-.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
-.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
-.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
-.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
-.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
-.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
-.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
-.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
-.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
-.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
-.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
-.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
-.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
-.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
-.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
-.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
-.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
-.#{$fa-css-prefix}-gittip:before,
-.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
-.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
-.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
-.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
-.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
-.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
-.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
-.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
-.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
-.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
-.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
-.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
-.#{$fa-css-prefix}-toggle-left:before,
-.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
-.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
-.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
-.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
-.#{$fa-css-prefix}-turkish-lira:before,
-.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
-.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
-.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
-.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
-.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
-.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
-.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
-.#{$fa-css-prefix}-institution:before,
-.#{$fa-css-prefix}-bank:before,
-.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
-.#{$fa-css-prefix}-mortar-board:before,
-.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
-.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
-.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
-.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
-.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
-.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
-.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
-.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
-.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
-.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; }
-.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
-.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
-.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
-.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
-.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
-.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
-.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
-.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
-.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
-.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
-.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
-.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
-.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
-.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
-.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
-.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
-.#{$fa-css-prefix}-automobile:before,
-.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
-.#{$fa-css-prefix}-cab:before,
-.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
-.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
-.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
-.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
-.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
-.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
-.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
-.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
-.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
-.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
-.#{$fa-css-prefix}-file-photo-o:before,
-.#{$fa-css-prefix}-file-picture-o:before,
-.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
-.#{$fa-css-prefix}-file-zip-o:before,
-.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
-.#{$fa-css-prefix}-file-sound-o:before,
-.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
-.#{$fa-css-prefix}-file-movie-o:before,
-.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
-.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
-.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
-.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
-.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
-.#{$fa-css-prefix}-life-bouy:before,
-.#{$fa-css-prefix}-life-buoy:before,
-.#{$fa-css-prefix}-life-saver:before,
-.#{$fa-css-prefix}-support:before,
-.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
-.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
-.#{$fa-css-prefix}-ra:before,
-.#{$fa-css-prefix}-resistance:before,
-.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
-.#{$fa-css-prefix}-ge:before,
-.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
-.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
-.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
-.#{$fa-css-prefix}-y-combinator-square:before,
-.#{$fa-css-prefix}-yc-square:before,
-.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
-.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
-.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
-.#{$fa-css-prefix}-wechat:before,
-.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
-.#{$fa-css-prefix}-send:before,
-.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
-.#{$fa-css-prefix}-send-o:before,
-.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
-.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
-.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
-.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
-.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
-.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
-.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
-.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
-.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
-.#{$fa-css-prefix}-soccer-ball-o:before,
-.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
-.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
-.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
-.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
-.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
-.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
-.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
-.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
-.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
-.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
-.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
-.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
-.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
-.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
-.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
-.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
-.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
-.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
-.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
-.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
-.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
-.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
-.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
-.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
-.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
-.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
-.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
-.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
-.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
-.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
-.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
-.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
-.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
-.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
-.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
-.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
-.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
-.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
-.#{$fa-css-prefix}-shekel:before,
-.#{$fa-css-prefix}-sheqel:before,
-.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
-.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
-.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
-.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
-.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
-.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
-.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
-.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
-.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
-.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
-.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
-.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
-.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
-.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
-.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
-.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
-.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
-.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
-.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
-.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
-.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
-.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
-.#{$fa-css-prefix}-intersex:before,
-.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
-.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
-.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
-.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
-.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
-.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
-.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
-.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
-.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
-.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
-.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
-.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
-.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
-.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
-.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
-.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
-.#{$fa-css-prefix}-hotel:before,
-.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
-.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
-.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
-.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
-.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
-.#{$fa-css-prefix}-yc:before,
-.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
-.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
-.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
-.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
-.#{$fa-css-prefix}-battery-4:before,
-.#{$fa-css-prefix}-battery:before,
-.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
-.#{$fa-css-prefix}-battery-3:before,
-.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
-.#{$fa-css-prefix}-battery-2:before,
-.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
-.#{$fa-css-prefix}-battery-1:before,
-.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
-.#{$fa-css-prefix}-battery-0:before,
-.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
-.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
-.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
-.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
-.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
-.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
-.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
-.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
-.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
-.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
-.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
-.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
-.#{$fa-css-prefix}-hourglass-1:before,
-.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
-.#{$fa-css-prefix}-hourglass-2:before,
-.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
-.#{$fa-css-prefix}-hourglass-3:before,
-.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
-.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
-.#{$fa-css-prefix}-hand-grab-o:before,
-.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
-.#{$fa-css-prefix}-hand-stop-o:before,
-.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
-.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
-.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
-.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
-.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
-.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
-.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
-.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
-.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
-.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
-.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
-.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
-.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
-.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
-.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
-.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
-.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
-.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
-.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
-.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
-.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
-.#{$fa-css-prefix}-tv:before,
-.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
-.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
-.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
-.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
-.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
-.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
-.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
-.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
-.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
-.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
-.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
-.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
-.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
-.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
-.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
-.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
-.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
-.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
-.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
-.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
-.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
-.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
-.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
-.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
-.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
-.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
-.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
-.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
-.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
-.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
-.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
-.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
-.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
-.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
-.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
-.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
-.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
-.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
-.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }
-.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; }
-.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; }
-.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; }
-.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; }
-.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; }
-.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; }
-.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; }
-.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; }
-.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; }
-.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; }
-.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; }
-.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; }
-.#{$fa-css-prefix}-asl-interpreting:before,
-.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; }
-.#{$fa-css-prefix}-deafness:before,
-.#{$fa-css-prefix}-hard-of-hearing:before,
-.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; }
-.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; }
-.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; }
-.#{$fa-css-prefix}-signing:before,
-.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; }
-.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; }
-.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; }
-.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; }
-.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; }
-.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; }
-.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; }
-.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
-.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; }
-.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; }
-.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; }
-.#{$fa-css-prefix}-google-plus-circle:before,
-.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; }
-.#{$fa-css-prefix}-fa:before,
-.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; }
-.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; }
-.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; }
-.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; }
-.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; }
-.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; }
-.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; }
-.#{$fa-css-prefix}-vcard:before,
-.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; }
-.#{$fa-css-prefix}-vcard-o:before,
-.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; }
-.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; }
-.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; }
-.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; }
-.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; }
-.#{$fa-css-prefix}-drivers-license:before,
-.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; }
-.#{$fa-css-prefix}-drivers-license-o:before,
-.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; }
-.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; }
-.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; }
-.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; }
-.#{$fa-css-prefix}-thermometer-4:before,
-.#{$fa-css-prefix}-thermometer:before,
-.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; }
-.#{$fa-css-prefix}-thermometer-3:before,
-.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; }
-.#{$fa-css-prefix}-thermometer-2:before,
-.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; }
-.#{$fa-css-prefix}-thermometer-1:before,
-.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; }
-.#{$fa-css-prefix}-thermometer-0:before,
-.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; }
-.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; }
-.#{$fa-css-prefix}-bathtub:before,
-.#{$fa-css-prefix}-s15:before,
-.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; }
-.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; }
-.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; }
-.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; }
-.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; }
-.#{$fa-css-prefix}-times-rectangle:before,
-.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; }
-.#{$fa-css-prefix}-times-rectangle-o:before,
-.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; }
-.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; }
-.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; }
-.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; }
-.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; }
-.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; }
-.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; }
-.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; }
-.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; }
-.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; }
-.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; }
-.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; }
diff --git a/library/font_awesome/scss/_larger.scss b/library/font_awesome/scss/_larger.scss
deleted file mode 100644
index 41e9a8184..000000000
--- a/library/font_awesome/scss/_larger.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// Icon Sizes
-// -------------------------
-
-/* makes the font 33% larger relative to the icon container */
-.#{$fa-css-prefix}-lg {
- font-size: (4em / 3);
- line-height: (3em / 4);
- vertical-align: -15%;
-}
-.#{$fa-css-prefix}-2x { font-size: 2em; }
-.#{$fa-css-prefix}-3x { font-size: 3em; }
-.#{$fa-css-prefix}-4x { font-size: 4em; }
-.#{$fa-css-prefix}-5x { font-size: 5em; }
diff --git a/library/font_awesome/scss/_list.scss b/library/font_awesome/scss/_list.scss
deleted file mode 100644
index 7d1e4d54d..000000000
--- a/library/font_awesome/scss/_list.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-// List Icons
-// -------------------------
-
-.#{$fa-css-prefix}-ul {
- padding-left: 0;
- margin-left: $fa-li-width;
- list-style-type: none;
- > li { position: relative; }
-}
-.#{$fa-css-prefix}-li {
- position: absolute;
- left: -$fa-li-width;
- width: $fa-li-width;
- top: (2em / 14);
- text-align: center;
- &.#{$fa-css-prefix}-lg {
- left: -$fa-li-width + (4em / 14);
- }
-}
diff --git a/library/font_awesome/scss/_mixins.scss b/library/font_awesome/scss/_mixins.scss
deleted file mode 100644
index c3bbd5745..000000000
--- a/library/font_awesome/scss/_mixins.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-// Mixins
-// --------------------------
-
-@mixin fa-icon() {
- display: inline-block;
- font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
- font-size: inherit; // can't have font-size inherit on line above, so need to override
- text-rendering: auto; // optimizelegibility throws things off #1094
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-
-}
-
-@mixin fa-icon-rotate($degrees, $rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
- -webkit-transform: rotate($degrees);
- -ms-transform: rotate($degrees);
- transform: rotate($degrees);
-}
-
-@mixin fa-icon-flip($horiz, $vert, $rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
- -webkit-transform: scale($horiz, $vert);
- -ms-transform: scale($horiz, $vert);
- transform: scale($horiz, $vert);
-}
-
-
-// Only display content to screen readers. A la Bootstrap 4.
-//
-// See: http://a11yproject.com/posts/how-to-hide-content/
-
-@mixin sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0,0,0,0);
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-//
-// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-//
-// Credit: HTML5 Boilerplate
-
-@mixin sr-only-focusable {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
- }
-}
diff --git a/library/font_awesome/scss/_path.scss b/library/font_awesome/scss/_path.scss
deleted file mode 100644
index bb457c23a..000000000
--- a/library/font_awesome/scss/_path.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
- font-family: 'FontAwesome';
- src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
- src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
- url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
- url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
- url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
- url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
-// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
- font-weight: normal;
- font-style: normal;
-}
diff --git a/library/font_awesome/scss/_rotated-flipped.scss b/library/font_awesome/scss/_rotated-flipped.scss
deleted file mode 100644
index a3558fd09..000000000
--- a/library/font_awesome/scss/_rotated-flipped.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-// Rotated & Flipped Icons
-// -------------------------
-
-.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
-.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
-.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
-
-.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
-.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
-
-// Hook for IE8-9
-// -------------------------
-
-:root .#{$fa-css-prefix}-rotate-90,
-:root .#{$fa-css-prefix}-rotate-180,
-:root .#{$fa-css-prefix}-rotate-270,
-:root .#{$fa-css-prefix}-flip-horizontal,
-:root .#{$fa-css-prefix}-flip-vertical {
- filter: none;
-}
diff --git a/library/font_awesome/scss/_screen-reader.scss b/library/font_awesome/scss/_screen-reader.scss
deleted file mode 100644
index 637426f0d..000000000
--- a/library/font_awesome/scss/_screen-reader.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-// Screen Readers
-// -------------------------
-
-.sr-only { @include sr-only(); }
-.sr-only-focusable { @include sr-only-focusable(); }
diff --git a/library/font_awesome/scss/_stacked.scss b/library/font_awesome/scss/_stacked.scss
deleted file mode 100644
index aef740366..000000000
--- a/library/font_awesome/scss/_stacked.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-// Stacked Icons
-// -------------------------
-
-.#{$fa-css-prefix}-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
-.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
-.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
diff --git a/library/font_awesome/scss/_variables.scss b/library/font_awesome/scss/_variables.scss
deleted file mode 100644
index 498fc4a08..000000000
--- a/library/font_awesome/scss/_variables.scss
+++ /dev/null
@@ -1,800 +0,0 @@
-// Variables
-// --------------------------
-
-$fa-font-path: "../fonts" !default;
-$fa-font-size-base: 14px !default;
-$fa-line-height-base: 1 !default;
-//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly
-$fa-css-prefix: fa !default;
-$fa-version: "4.7.0" !default;
-$fa-border-color: #eee !default;
-$fa-inverse: #fff !default;
-$fa-li-width: (30em / 14) !default;
-
-$fa-var-500px: "\f26e";
-$fa-var-address-book: "\f2b9";
-$fa-var-address-book-o: "\f2ba";
-$fa-var-address-card: "\f2bb";
-$fa-var-address-card-o: "\f2bc";
-$fa-var-adjust: "\f042";
-$fa-var-adn: "\f170";
-$fa-var-align-center: "\f037";
-$fa-var-align-justify: "\f039";
-$fa-var-align-left: "\f036";
-$fa-var-align-right: "\f038";
-$fa-var-amazon: "\f270";
-$fa-var-ambulance: "\f0f9";
-$fa-var-american-sign-language-interpreting: "\f2a3";
-$fa-var-anchor: "\f13d";
-$fa-var-android: "\f17b";
-$fa-var-angellist: "\f209";
-$fa-var-angle-double-down: "\f103";
-$fa-var-angle-double-left: "\f100";
-$fa-var-angle-double-right: "\f101";
-$fa-var-angle-double-up: "\f102";
-$fa-var-angle-down: "\f107";
-$fa-var-angle-left: "\f104";
-$fa-var-angle-right: "\f105";
-$fa-var-angle-up: "\f106";
-$fa-var-apple: "\f179";
-$fa-var-archive: "\f187";
-$fa-var-area-chart: "\f1fe";
-$fa-var-arrow-circle-down: "\f0ab";
-$fa-var-arrow-circle-left: "\f0a8";
-$fa-var-arrow-circle-o-down: "\f01a";
-$fa-var-arrow-circle-o-left: "\f190";
-$fa-var-arrow-circle-o-right: "\f18e";
-$fa-var-arrow-circle-o-up: "\f01b";
-$fa-var-arrow-circle-right: "\f0a9";
-$fa-var-arrow-circle-up: "\f0aa";
-$fa-var-arrow-down: "\f063";
-$fa-var-arrow-left: "\f060";
-$fa-var-arrow-right: "\f061";
-$fa-var-arrow-up: "\f062";
-$fa-var-arrows: "\f047";
-$fa-var-arrows-alt: "\f0b2";
-$fa-var-arrows-h: "\f07e";
-$fa-var-arrows-v: "\f07d";
-$fa-var-asl-interpreting: "\f2a3";
-$fa-var-assistive-listening-systems: "\f2a2";
-$fa-var-asterisk: "\f069";
-$fa-var-at: "\f1fa";
-$fa-var-audio-description: "\f29e";
-$fa-var-automobile: "\f1b9";
-$fa-var-backward: "\f04a";
-$fa-var-balance-scale: "\f24e";
-$fa-var-ban: "\f05e";
-$fa-var-bandcamp: "\f2d5";
-$fa-var-bank: "\f19c";
-$fa-var-bar-chart: "\f080";
-$fa-var-bar-chart-o: "\f080";
-$fa-var-barcode: "\f02a";
-$fa-var-bars: "\f0c9";
-$fa-var-bath: "\f2cd";
-$fa-var-bathtub: "\f2cd";
-$fa-var-battery: "\f240";
-$fa-var-battery-0: "\f244";
-$fa-var-battery-1: "\f243";
-$fa-var-battery-2: "\f242";
-$fa-var-battery-3: "\f241";
-$fa-var-battery-4: "\f240";
-$fa-var-battery-empty: "\f244";
-$fa-var-battery-full: "\f240";
-$fa-var-battery-half: "\f242";
-$fa-var-battery-quarter: "\f243";
-$fa-var-battery-three-quarters: "\f241";
-$fa-var-bed: "\f236";
-$fa-var-beer: "\f0fc";
-$fa-var-behance: "\f1b4";
-$fa-var-behance-square: "\f1b5";
-$fa-var-bell: "\f0f3";
-$fa-var-bell-o: "\f0a2";
-$fa-var-bell-slash: "\f1f6";
-$fa-var-bell-slash-o: "\f1f7";
-$fa-var-bicycle: "\f206";
-$fa-var-binoculars: "\f1e5";
-$fa-var-birthday-cake: "\f1fd";
-$fa-var-bitbucket: "\f171";
-$fa-var-bitbucket-square: "\f172";
-$fa-var-bitcoin: "\f15a";
-$fa-var-black-tie: "\f27e";
-$fa-var-blind: "\f29d";
-$fa-var-bluetooth: "\f293";
-$fa-var-bluetooth-b: "\f294";
-$fa-var-bold: "\f032";
-$fa-var-bolt: "\f0e7";
-$fa-var-bomb: "\f1e2";
-$fa-var-book: "\f02d";
-$fa-var-bookmark: "\f02e";
-$fa-var-bookmark-o: "\f097";
-$fa-var-braille: "\f2a1";
-$fa-var-briefcase: "\f0b1";
-$fa-var-btc: "\f15a";
-$fa-var-bug: "\f188";
-$fa-var-building: "\f1ad";
-$fa-var-building-o: "\f0f7";
-$fa-var-bullhorn: "\f0a1";
-$fa-var-bullseye: "\f140";
-$fa-var-bus: "\f207";
-$fa-var-buysellads: "\f20d";
-$fa-var-cab: "\f1ba";
-$fa-var-calculator: "\f1ec";
-$fa-var-calendar: "\f073";
-$fa-var-calendar-check-o: "\f274";
-$fa-var-calendar-minus-o: "\f272";
-$fa-var-calendar-o: "\f133";
-$fa-var-calendar-plus-o: "\f271";
-$fa-var-calendar-times-o: "\f273";
-$fa-var-camera: "\f030";
-$fa-var-camera-retro: "\f083";
-$fa-var-car: "\f1b9";
-$fa-var-caret-down: "\f0d7";
-$fa-var-caret-left: "\f0d9";
-$fa-var-caret-right: "\f0da";
-$fa-var-caret-square-o-down: "\f150";
-$fa-var-caret-square-o-left: "\f191";
-$fa-var-caret-square-o-right: "\f152";
-$fa-var-caret-square-o-up: "\f151";
-$fa-var-caret-up: "\f0d8";
-$fa-var-cart-arrow-down: "\f218";
-$fa-var-cart-plus: "\f217";
-$fa-var-cc: "\f20a";
-$fa-var-cc-amex: "\f1f3";
-$fa-var-cc-diners-club: "\f24c";
-$fa-var-cc-discover: "\f1f2";
-$fa-var-cc-jcb: "\f24b";
-$fa-var-cc-mastercard: "\f1f1";
-$fa-var-cc-paypal: "\f1f4";
-$fa-var-cc-stripe: "\f1f5";
-$fa-var-cc-visa: "\f1f0";
-$fa-var-certificate: "\f0a3";
-$fa-var-chain: "\f0c1";
-$fa-var-chain-broken: "\f127";
-$fa-var-check: "\f00c";
-$fa-var-check-circle: "\f058";
-$fa-var-check-circle-o: "\f05d";
-$fa-var-check-square: "\f14a";
-$fa-var-check-square-o: "\f046";
-$fa-var-chevron-circle-down: "\f13a";
-$fa-var-chevron-circle-left: "\f137";
-$fa-var-chevron-circle-right: "\f138";
-$fa-var-chevron-circle-up: "\f139";
-$fa-var-chevron-down: "\f078";
-$fa-var-chevron-left: "\f053";
-$fa-var-chevron-right: "\f054";
-$fa-var-chevron-up: "\f077";
-$fa-var-child: "\f1ae";
-$fa-var-chrome: "\f268";
-$fa-var-circle: "\f111";
-$fa-var-circle-o: "\f10c";
-$fa-var-circle-o-notch: "\f1ce";
-$fa-var-circle-thin: "\f1db";
-$fa-var-clipboard: "\f0ea";
-$fa-var-clock-o: "\f017";
-$fa-var-clone: "\f24d";
-$fa-var-close: "\f00d";
-$fa-var-cloud: "\f0c2";
-$fa-var-cloud-download: "\f0ed";
-$fa-var-cloud-upload: "\f0ee";
-$fa-var-cny: "\f157";
-$fa-var-code: "\f121";
-$fa-var-code-fork: "\f126";
-$fa-var-codepen: "\f1cb";
-$fa-var-codiepie: "\f284";
-$fa-var-coffee: "\f0f4";
-$fa-var-cog: "\f013";
-$fa-var-cogs: "\f085";
-$fa-var-columns: "\f0db";
-$fa-var-comment: "\f075";
-$fa-var-comment-o: "\f0e5";
-$fa-var-commenting: "\f27a";
-$fa-var-commenting-o: "\f27b";
-$fa-var-comments: "\f086";
-$fa-var-comments-o: "\f0e6";
-$fa-var-compass: "\f14e";
-$fa-var-compress: "\f066";
-$fa-var-connectdevelop: "\f20e";
-$fa-var-contao: "\f26d";
-$fa-var-copy: "\f0c5";
-$fa-var-copyright: "\f1f9";
-$fa-var-creative-commons: "\f25e";
-$fa-var-credit-card: "\f09d";
-$fa-var-credit-card-alt: "\f283";
-$fa-var-crop: "\f125";
-$fa-var-crosshairs: "\f05b";
-$fa-var-css3: "\f13c";
-$fa-var-cube: "\f1b2";
-$fa-var-cubes: "\f1b3";
-$fa-var-cut: "\f0c4";
-$fa-var-cutlery: "\f0f5";
-$fa-var-dashboard: "\f0e4";
-$fa-var-dashcube: "\f210";
-$fa-var-database: "\f1c0";
-$fa-var-deaf: "\f2a4";
-$fa-var-deafness: "\f2a4";
-$fa-var-dedent: "\f03b";
-$fa-var-delicious: "\f1a5";
-$fa-var-desktop: "\f108";
-$fa-var-deviantart: "\f1bd";
-$fa-var-diamond: "\f219";
-$fa-var-digg: "\f1a6";
-$fa-var-dollar: "\f155";
-$fa-var-dot-circle-o: "\f192";
-$fa-var-download: "\f019";
-$fa-var-dribbble: "\f17d";
-$fa-var-drivers-license: "\f2c2";
-$fa-var-drivers-license-o: "\f2c3";
-$fa-var-dropbox: "\f16b";
-$fa-var-drupal: "\f1a9";
-$fa-var-edge: "\f282";
-$fa-var-edit: "\f044";
-$fa-var-eercast: "\f2da";
-$fa-var-eject: "\f052";
-$fa-var-ellipsis-h: "\f141";
-$fa-var-ellipsis-v: "\f142";
-$fa-var-empire: "\f1d1";
-$fa-var-envelope: "\f0e0";
-$fa-var-envelope-o: "\f003";
-$fa-var-envelope-open: "\f2b6";
-$fa-var-envelope-open-o: "\f2b7";
-$fa-var-envelope-square: "\f199";
-$fa-var-envira: "\f299";
-$fa-var-eraser: "\f12d";
-$fa-var-etsy: "\f2d7";
-$fa-var-eur: "\f153";
-$fa-var-euro: "\f153";
-$fa-var-exchange: "\f0ec";
-$fa-var-exclamation: "\f12a";
-$fa-var-exclamation-circle: "\f06a";
-$fa-var-exclamation-triangle: "\f071";
-$fa-var-expand: "\f065";
-$fa-var-expeditedssl: "\f23e";
-$fa-var-external-link: "\f08e";
-$fa-var-external-link-square: "\f14c";
-$fa-var-eye: "\f06e";
-$fa-var-eye-slash: "\f070";
-$fa-var-eyedropper: "\f1fb";
-$fa-var-fa: "\f2b4";
-$fa-var-facebook: "\f09a";
-$fa-var-facebook-f: "\f09a";
-$fa-var-facebook-official: "\f230";
-$fa-var-facebook-square: "\f082";
-$fa-var-fast-backward: "\f049";
-$fa-var-fast-forward: "\f050";
-$fa-var-fax: "\f1ac";
-$fa-var-feed: "\f09e";
-$fa-var-female: "\f182";
-$fa-var-fighter-jet: "\f0fb";
-$fa-var-file: "\f15b";
-$fa-var-file-archive-o: "\f1c6";
-$fa-var-file-audio-o: "\f1c7";
-$fa-var-file-code-o: "\f1c9";
-$fa-var-file-excel-o: "\f1c3";
-$fa-var-file-image-o: "\f1c5";
-$fa-var-file-movie-o: "\f1c8";
-$fa-var-file-o: "\f016";
-$fa-var-file-pdf-o: "\f1c1";
-$fa-var-file-photo-o: "\f1c5";
-$fa-var-file-picture-o: "\f1c5";
-$fa-var-file-powerpoint-o: "\f1c4";
-$fa-var-file-sound-o: "\f1c7";
-$fa-var-file-text: "\f15c";
-$fa-var-file-text-o: "\f0f6";
-$fa-var-file-video-o: "\f1c8";
-$fa-var-file-word-o: "\f1c2";
-$fa-var-file-zip-o: "\f1c6";
-$fa-var-files-o: "\f0c5";
-$fa-var-film: "\f008";
-$fa-var-filter: "\f0b0";
-$fa-var-fire: "\f06d";
-$fa-var-fire-extinguisher: "\f134";
-$fa-var-firefox: "\f269";
-$fa-var-first-order: "\f2b0";
-$fa-var-flag: "\f024";
-$fa-var-flag-checkered: "\f11e";
-$fa-var-flag-o: "\f11d";
-$fa-var-flash: "\f0e7";
-$fa-var-flask: "\f0c3";
-$fa-var-flickr: "\f16e";
-$fa-var-floppy-o: "\f0c7";
-$fa-var-folder: "\f07b";
-$fa-var-folder-o: "\f114";
-$fa-var-folder-open: "\f07c";
-$fa-var-folder-open-o: "\f115";
-$fa-var-font: "\f031";
-$fa-var-font-awesome: "\f2b4";
-$fa-var-fonticons: "\f280";
-$fa-var-fort-awesome: "\f286";
-$fa-var-forumbee: "\f211";
-$fa-var-forward: "\f04e";
-$fa-var-foursquare: "\f180";
-$fa-var-free-code-camp: "\f2c5";
-$fa-var-frown-o: "\f119";
-$fa-var-futbol-o: "\f1e3";
-$fa-var-gamepad: "\f11b";
-$fa-var-gavel: "\f0e3";
-$fa-var-gbp: "\f154";
-$fa-var-ge: "\f1d1";
-$fa-var-gear: "\f013";
-$fa-var-gears: "\f085";
-$fa-var-genderless: "\f22d";
-$fa-var-get-pocket: "\f265";
-$fa-var-gg: "\f260";
-$fa-var-gg-circle: "\f261";
-$fa-var-gift: "\f06b";
-$fa-var-git: "\f1d3";
-$fa-var-git-square: "\f1d2";
-$fa-var-github: "\f09b";
-$fa-var-github-alt: "\f113";
-$fa-var-github-square: "\f092";
-$fa-var-gitlab: "\f296";
-$fa-var-gittip: "\f184";
-$fa-var-glass: "\f000";
-$fa-var-glide: "\f2a5";
-$fa-var-glide-g: "\f2a6";
-$fa-var-globe: "\f0ac";
-$fa-var-google: "\f1a0";
-$fa-var-google-plus: "\f0d5";
-$fa-var-google-plus-circle: "\f2b3";
-$fa-var-google-plus-official: "\f2b3";
-$fa-var-google-plus-square: "\f0d4";
-$fa-var-google-wallet: "\f1ee";
-$fa-var-graduation-cap: "\f19d";
-$fa-var-gratipay: "\f184";
-$fa-var-grav: "\f2d6";
-$fa-var-group: "\f0c0";
-$fa-var-h-square: "\f0fd";
-$fa-var-hacker-news: "\f1d4";
-$fa-var-hand-grab-o: "\f255";
-$fa-var-hand-lizard-o: "\f258";
-$fa-var-hand-o-down: "\f0a7";
-$fa-var-hand-o-left: "\f0a5";
-$fa-var-hand-o-right: "\f0a4";
-$fa-var-hand-o-up: "\f0a6";
-$fa-var-hand-paper-o: "\f256";
-$fa-var-hand-peace-o: "\f25b";
-$fa-var-hand-pointer-o: "\f25a";
-$fa-var-hand-rock-o: "\f255";
-$fa-var-hand-scissors-o: "\f257";
-$fa-var-hand-spock-o: "\f259";
-$fa-var-hand-stop-o: "\f256";
-$fa-var-handshake-o: "\f2b5";
-$fa-var-hard-of-hearing: "\f2a4";
-$fa-var-hashtag: "\f292";
-$fa-var-hdd-o: "\f0a0";
-$fa-var-header: "\f1dc";
-$fa-var-headphones: "\f025";
-$fa-var-heart: "\f004";
-$fa-var-heart-o: "\f08a";
-$fa-var-heartbeat: "\f21e";
-$fa-var-history: "\f1da";
-$fa-var-home: "\f015";
-$fa-var-hospital-o: "\f0f8";
-$fa-var-hotel: "\f236";
-$fa-var-hourglass: "\f254";
-$fa-var-hourglass-1: "\f251";
-$fa-var-hourglass-2: "\f252";
-$fa-var-hourglass-3: "\f253";
-$fa-var-hourglass-end: "\f253";
-$fa-var-hourglass-half: "\f252";
-$fa-var-hourglass-o: "\f250";
-$fa-var-hourglass-start: "\f251";
-$fa-var-houzz: "\f27c";
-$fa-var-html5: "\f13b";
-$fa-var-i-cursor: "\f246";
-$fa-var-id-badge: "\f2c1";
-$fa-var-id-card: "\f2c2";
-$fa-var-id-card-o: "\f2c3";
-$fa-var-ils: "\f20b";
-$fa-var-image: "\f03e";
-$fa-var-imdb: "\f2d8";
-$fa-var-inbox: "\f01c";
-$fa-var-indent: "\f03c";
-$fa-var-industry: "\f275";
-$fa-var-info: "\f129";
-$fa-var-info-circle: "\f05a";
-$fa-var-inr: "\f156";
-$fa-var-instagram: "\f16d";
-$fa-var-institution: "\f19c";
-$fa-var-internet-explorer: "\f26b";
-$fa-var-intersex: "\f224";
-$fa-var-ioxhost: "\f208";
-$fa-var-italic: "\f033";
-$fa-var-joomla: "\f1aa";
-$fa-var-jpy: "\f157";
-$fa-var-jsfiddle: "\f1cc";
-$fa-var-key: "\f084";
-$fa-var-keyboard-o: "\f11c";
-$fa-var-krw: "\f159";
-$fa-var-language: "\f1ab";
-$fa-var-laptop: "\f109";
-$fa-var-lastfm: "\f202";
-$fa-var-lastfm-square: "\f203";
-$fa-var-leaf: "\f06c";
-$fa-var-leanpub: "\f212";
-$fa-var-legal: "\f0e3";
-$fa-var-lemon-o: "\f094";
-$fa-var-level-down: "\f149";
-$fa-var-level-up: "\f148";
-$fa-var-life-bouy: "\f1cd";
-$fa-var-life-buoy: "\f1cd";
-$fa-var-life-ring: "\f1cd";
-$fa-var-life-saver: "\f1cd";
-$fa-var-lightbulb-o: "\f0eb";
-$fa-var-line-chart: "\f201";
-$fa-var-link: "\f0c1";
-$fa-var-linkedin: "\f0e1";
-$fa-var-linkedin-square: "\f08c";
-$fa-var-linode: "\f2b8";
-$fa-var-linux: "\f17c";
-$fa-var-list: "\f03a";
-$fa-var-list-alt: "\f022";
-$fa-var-list-ol: "\f0cb";
-$fa-var-list-ul: "\f0ca";
-$fa-var-location-arrow: "\f124";
-$fa-var-lock: "\f023";
-$fa-var-long-arrow-down: "\f175";
-$fa-var-long-arrow-left: "\f177";
-$fa-var-long-arrow-right: "\f178";
-$fa-var-long-arrow-up: "\f176";
-$fa-var-low-vision: "\f2a8";
-$fa-var-magic: "\f0d0";
-$fa-var-magnet: "\f076";
-$fa-var-mail-forward: "\f064";
-$fa-var-mail-reply: "\f112";
-$fa-var-mail-reply-all: "\f122";
-$fa-var-male: "\f183";
-$fa-var-map: "\f279";
-$fa-var-map-marker: "\f041";
-$fa-var-map-o: "\f278";
-$fa-var-map-pin: "\f276";
-$fa-var-map-signs: "\f277";
-$fa-var-mars: "\f222";
-$fa-var-mars-double: "\f227";
-$fa-var-mars-stroke: "\f229";
-$fa-var-mars-stroke-h: "\f22b";
-$fa-var-mars-stroke-v: "\f22a";
-$fa-var-maxcdn: "\f136";
-$fa-var-meanpath: "\f20c";
-$fa-var-medium: "\f23a";
-$fa-var-medkit: "\f0fa";
-$fa-var-meetup: "\f2e0";
-$fa-var-meh-o: "\f11a";
-$fa-var-mercury: "\f223";
-$fa-var-microchip: "\f2db";
-$fa-var-microphone: "\f130";
-$fa-var-microphone-slash: "\f131";
-$fa-var-minus: "\f068";
-$fa-var-minus-circle: "\f056";
-$fa-var-minus-square: "\f146";
-$fa-var-minus-square-o: "\f147";
-$fa-var-mixcloud: "\f289";
-$fa-var-mobile: "\f10b";
-$fa-var-mobile-phone: "\f10b";
-$fa-var-modx: "\f285";
-$fa-var-money: "\f0d6";
-$fa-var-moon-o: "\f186";
-$fa-var-mortar-board: "\f19d";
-$fa-var-motorcycle: "\f21c";
-$fa-var-mouse-pointer: "\f245";
-$fa-var-music: "\f001";
-$fa-var-navicon: "\f0c9";
-$fa-var-neuter: "\f22c";
-$fa-var-newspaper-o: "\f1ea";
-$fa-var-object-group: "\f247";
-$fa-var-object-ungroup: "\f248";
-$fa-var-odnoklassniki: "\f263";
-$fa-var-odnoklassniki-square: "\f264";
-$fa-var-opencart: "\f23d";
-$fa-var-openid: "\f19b";
-$fa-var-opera: "\f26a";
-$fa-var-optin-monster: "\f23c";
-$fa-var-outdent: "\f03b";
-$fa-var-pagelines: "\f18c";
-$fa-var-paint-brush: "\f1fc";
-$fa-var-paper-plane: "\f1d8";
-$fa-var-paper-plane-o: "\f1d9";
-$fa-var-paperclip: "\f0c6";
-$fa-var-paragraph: "\f1dd";
-$fa-var-paste: "\f0ea";
-$fa-var-pause: "\f04c";
-$fa-var-pause-circle: "\f28b";
-$fa-var-pause-circle-o: "\f28c";
-$fa-var-paw: "\f1b0";
-$fa-var-paypal: "\f1ed";
-$fa-var-pencil: "\f040";
-$fa-var-pencil-square: "\f14b";
-$fa-var-pencil-square-o: "\f044";
-$fa-var-percent: "\f295";
-$fa-var-phone: "\f095";
-$fa-var-phone-square: "\f098";
-$fa-var-photo: "\f03e";
-$fa-var-picture-o: "\f03e";
-$fa-var-pie-chart: "\f200";
-$fa-var-pied-piper: "\f2ae";
-$fa-var-pied-piper-alt: "\f1a8";
-$fa-var-pied-piper-pp: "\f1a7";
-$fa-var-pinterest: "\f0d2";
-$fa-var-pinterest-p: "\f231";
-$fa-var-pinterest-square: "\f0d3";
-$fa-var-plane: "\f072";
-$fa-var-play: "\f04b";
-$fa-var-play-circle: "\f144";
-$fa-var-play-circle-o: "\f01d";
-$fa-var-plug: "\f1e6";
-$fa-var-plus: "\f067";
-$fa-var-plus-circle: "\f055";
-$fa-var-plus-square: "\f0fe";
-$fa-var-plus-square-o: "\f196";
-$fa-var-podcast: "\f2ce";
-$fa-var-power-off: "\f011";
-$fa-var-print: "\f02f";
-$fa-var-product-hunt: "\f288";
-$fa-var-puzzle-piece: "\f12e";
-$fa-var-qq: "\f1d6";
-$fa-var-qrcode: "\f029";
-$fa-var-question: "\f128";
-$fa-var-question-circle: "\f059";
-$fa-var-question-circle-o: "\f29c";
-$fa-var-quora: "\f2c4";
-$fa-var-quote-left: "\f10d";
-$fa-var-quote-right: "\f10e";
-$fa-var-ra: "\f1d0";
-$fa-var-random: "\f074";
-$fa-var-ravelry: "\f2d9";
-$fa-var-rebel: "\f1d0";
-$fa-var-recycle: "\f1b8";
-$fa-var-reddit: "\f1a1";
-$fa-var-reddit-alien: "\f281";
-$fa-var-reddit-square: "\f1a2";
-$fa-var-refresh: "\f021";
-$fa-var-registered: "\f25d";
-$fa-var-remove: "\f00d";
-$fa-var-renren: "\f18b";
-$fa-var-reorder: "\f0c9";
-$fa-var-repeat: "\f01e";
-$fa-var-reply: "\f112";
-$fa-var-reply-all: "\f122";
-$fa-var-resistance: "\f1d0";
-$fa-var-retweet: "\f079";
-$fa-var-rmb: "\f157";
-$fa-var-road: "\f018";
-$fa-var-rocket: "\f135";
-$fa-var-rotate-left: "\f0e2";
-$fa-var-rotate-right: "\f01e";
-$fa-var-rouble: "\f158";
-$fa-var-rss: "\f09e";
-$fa-var-rss-square: "\f143";
-$fa-var-rub: "\f158";
-$fa-var-ruble: "\f158";
-$fa-var-rupee: "\f156";
-$fa-var-s15: "\f2cd";
-$fa-var-safari: "\f267";
-$fa-var-save: "\f0c7";
-$fa-var-scissors: "\f0c4";
-$fa-var-scribd: "\f28a";
-$fa-var-search: "\f002";
-$fa-var-search-minus: "\f010";
-$fa-var-search-plus: "\f00e";
-$fa-var-sellsy: "\f213";
-$fa-var-send: "\f1d8";
-$fa-var-send-o: "\f1d9";
-$fa-var-server: "\f233";
-$fa-var-share: "\f064";
-$fa-var-share-alt: "\f1e0";
-$fa-var-share-alt-square: "\f1e1";
-$fa-var-share-square: "\f14d";
-$fa-var-share-square-o: "\f045";
-$fa-var-shekel: "\f20b";
-$fa-var-sheqel: "\f20b";
-$fa-var-shield: "\f132";
-$fa-var-ship: "\f21a";
-$fa-var-shirtsinbulk: "\f214";
-$fa-var-shopping-bag: "\f290";
-$fa-var-shopping-basket: "\f291";
-$fa-var-shopping-cart: "\f07a";
-$fa-var-shower: "\f2cc";
-$fa-var-sign-in: "\f090";
-$fa-var-sign-language: "\f2a7";
-$fa-var-sign-out: "\f08b";
-$fa-var-signal: "\f012";
-$fa-var-signing: "\f2a7";
-$fa-var-simplybuilt: "\f215";
-$fa-var-sitemap: "\f0e8";
-$fa-var-skyatlas: "\f216";
-$fa-var-skype: "\f17e";
-$fa-var-slack: "\f198";
-$fa-var-sliders: "\f1de";
-$fa-var-slideshare: "\f1e7";
-$fa-var-smile-o: "\f118";
-$fa-var-snapchat: "\f2ab";
-$fa-var-snapchat-ghost: "\f2ac";
-$fa-var-snapchat-square: "\f2ad";
-$fa-var-snowflake-o: "\f2dc";
-$fa-var-soccer-ball-o: "\f1e3";
-$fa-var-sort: "\f0dc";
-$fa-var-sort-alpha-asc: "\f15d";
-$fa-var-sort-alpha-desc: "\f15e";
-$fa-var-sort-amount-asc: "\f160";
-$fa-var-sort-amount-desc: "\f161";
-$fa-var-sort-asc: "\f0de";
-$fa-var-sort-desc: "\f0dd";
-$fa-var-sort-down: "\f0dd";
-$fa-var-sort-numeric-asc: "\f162";
-$fa-var-sort-numeric-desc: "\f163";
-$fa-var-sort-up: "\f0de";
-$fa-var-soundcloud: "\f1be";
-$fa-var-space-shuttle: "\f197";
-$fa-var-spinner: "\f110";
-$fa-var-spoon: "\f1b1";
-$fa-var-spotify: "\f1bc";
-$fa-var-square: "\f0c8";
-$fa-var-square-o: "\f096";
-$fa-var-stack-exchange: "\f18d";
-$fa-var-stack-overflow: "\f16c";
-$fa-var-star: "\f005";
-$fa-var-star-half: "\f089";
-$fa-var-star-half-empty: "\f123";
-$fa-var-star-half-full: "\f123";
-$fa-var-star-half-o: "\f123";
-$fa-var-star-o: "\f006";
-$fa-var-steam: "\f1b6";
-$fa-var-steam-square: "\f1b7";
-$fa-var-step-backward: "\f048";
-$fa-var-step-forward: "\f051";
-$fa-var-stethoscope: "\f0f1";
-$fa-var-sticky-note: "\f249";
-$fa-var-sticky-note-o: "\f24a";
-$fa-var-stop: "\f04d";
-$fa-var-stop-circle: "\f28d";
-$fa-var-stop-circle-o: "\f28e";
-$fa-var-street-view: "\f21d";
-$fa-var-strikethrough: "\f0cc";
-$fa-var-stumbleupon: "\f1a4";
-$fa-var-stumbleupon-circle: "\f1a3";
-$fa-var-subscript: "\f12c";
-$fa-var-subway: "\f239";
-$fa-var-suitcase: "\f0f2";
-$fa-var-sun-o: "\f185";
-$fa-var-superpowers: "\f2dd";
-$fa-var-superscript: "\f12b";
-$fa-var-support: "\f1cd";
-$fa-var-table: "\f0ce";
-$fa-var-tablet: "\f10a";
-$fa-var-tachometer: "\f0e4";
-$fa-var-tag: "\f02b";
-$fa-var-tags: "\f02c";
-$fa-var-tasks: "\f0ae";
-$fa-var-taxi: "\f1ba";
-$fa-var-telegram: "\f2c6";
-$fa-var-television: "\f26c";
-$fa-var-tencent-weibo: "\f1d5";
-$fa-var-terminal: "\f120";
-$fa-var-text-height: "\f034";
-$fa-var-text-width: "\f035";
-$fa-var-th: "\f00a";
-$fa-var-th-large: "\f009";
-$fa-var-th-list: "\f00b";
-$fa-var-themeisle: "\f2b2";
-$fa-var-thermometer: "\f2c7";
-$fa-var-thermometer-0: "\f2cb";
-$fa-var-thermometer-1: "\f2ca";
-$fa-var-thermometer-2: "\f2c9";
-$fa-var-thermometer-3: "\f2c8";
-$fa-var-thermometer-4: "\f2c7";
-$fa-var-thermometer-empty: "\f2cb";
-$fa-var-thermometer-full: "\f2c7";
-$fa-var-thermometer-half: "\f2c9";
-$fa-var-thermometer-quarter: "\f2ca";
-$fa-var-thermometer-three-quarters: "\f2c8";
-$fa-var-thumb-tack: "\f08d";
-$fa-var-thumbs-down: "\f165";
-$fa-var-thumbs-o-down: "\f088";
-$fa-var-thumbs-o-up: "\f087";
-$fa-var-thumbs-up: "\f164";
-$fa-var-ticket: "\f145";
-$fa-var-times: "\f00d";
-$fa-var-times-circle: "\f057";
-$fa-var-times-circle-o: "\f05c";
-$fa-var-times-rectangle: "\f2d3";
-$fa-var-times-rectangle-o: "\f2d4";
-$fa-var-tint: "\f043";
-$fa-var-toggle-down: "\f150";
-$fa-var-toggle-left: "\f191";
-$fa-var-toggle-off: "\f204";
-$fa-var-toggle-on: "\f205";
-$fa-var-toggle-right: "\f152";
-$fa-var-toggle-up: "\f151";
-$fa-var-trademark: "\f25c";
-$fa-var-train: "\f238";
-$fa-var-transgender: "\f224";
-$fa-var-transgender-alt: "\f225";
-$fa-var-trash: "\f1f8";
-$fa-var-trash-o: "\f014";
-$fa-var-tree: "\f1bb";
-$fa-var-trello: "\f181";
-$fa-var-tripadvisor: "\f262";
-$fa-var-trophy: "\f091";
-$fa-var-truck: "\f0d1";
-$fa-var-try: "\f195";
-$fa-var-tty: "\f1e4";
-$fa-var-tumblr: "\f173";
-$fa-var-tumblr-square: "\f174";
-$fa-var-turkish-lira: "\f195";
-$fa-var-tv: "\f26c";
-$fa-var-twitch: "\f1e8";
-$fa-var-twitter: "\f099";
-$fa-var-twitter-square: "\f081";
-$fa-var-umbrella: "\f0e9";
-$fa-var-underline: "\f0cd";
-$fa-var-undo: "\f0e2";
-$fa-var-universal-access: "\f29a";
-$fa-var-university: "\f19c";
-$fa-var-unlink: "\f127";
-$fa-var-unlock: "\f09c";
-$fa-var-unlock-alt: "\f13e";
-$fa-var-unsorted: "\f0dc";
-$fa-var-upload: "\f093";
-$fa-var-usb: "\f287";
-$fa-var-usd: "\f155";
-$fa-var-user: "\f007";
-$fa-var-user-circle: "\f2bd";
-$fa-var-user-circle-o: "\f2be";
-$fa-var-user-md: "\f0f0";
-$fa-var-user-o: "\f2c0";
-$fa-var-user-plus: "\f234";
-$fa-var-user-secret: "\f21b";
-$fa-var-user-times: "\f235";
-$fa-var-users: "\f0c0";
-$fa-var-vcard: "\f2bb";
-$fa-var-vcard-o: "\f2bc";
-$fa-var-venus: "\f221";
-$fa-var-venus-double: "\f226";
-$fa-var-venus-mars: "\f228";
-$fa-var-viacoin: "\f237";
-$fa-var-viadeo: "\f2a9";
-$fa-var-viadeo-square: "\f2aa";
-$fa-var-video-camera: "\f03d";
-$fa-var-vimeo: "\f27d";
-$fa-var-vimeo-square: "\f194";
-$fa-var-vine: "\f1ca";
-$fa-var-vk: "\f189";
-$fa-var-volume-control-phone: "\f2a0";
-$fa-var-volume-down: "\f027";
-$fa-var-volume-off: "\f026";
-$fa-var-volume-up: "\f028";
-$fa-var-warning: "\f071";
-$fa-var-wechat: "\f1d7";
-$fa-var-weibo: "\f18a";
-$fa-var-weixin: "\f1d7";
-$fa-var-whatsapp: "\f232";
-$fa-var-wheelchair: "\f193";
-$fa-var-wheelchair-alt: "\f29b";
-$fa-var-wifi: "\f1eb";
-$fa-var-wikipedia-w: "\f266";
-$fa-var-window-close: "\f2d3";
-$fa-var-window-close-o: "\f2d4";
-$fa-var-window-maximize: "\f2d0";
-$fa-var-window-minimize: "\f2d1";
-$fa-var-window-restore: "\f2d2";
-$fa-var-windows: "\f17a";
-$fa-var-won: "\f159";
-$fa-var-wordpress: "\f19a";
-$fa-var-wpbeginner: "\f297";
-$fa-var-wpexplorer: "\f2de";
-$fa-var-wpforms: "\f298";
-$fa-var-wrench: "\f0ad";
-$fa-var-xing: "\f168";
-$fa-var-xing-square: "\f169";
-$fa-var-y-combinator: "\f23b";
-$fa-var-y-combinator-square: "\f1d4";
-$fa-var-yahoo: "\f19e";
-$fa-var-yc: "\f23b";
-$fa-var-yc-square: "\f1d4";
-$fa-var-yelp: "\f1e9";
-$fa-var-yen: "\f157";
-$fa-var-yoast: "\f2b1";
-$fa-var-youtube: "\f167";
-$fa-var-youtube-play: "\f16a";
-$fa-var-youtube-square: "\f166";
-
diff --git a/library/font_awesome/scss/font-awesome.scss b/library/font_awesome/scss/font-awesome.scss
deleted file mode 100644
index f1c83aaa5..000000000
--- a/library/font_awesome/scss/font-awesome.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-
-@import "variables";
-@import "mixins";
-@import "path";
-@import "core";
-@import "larger";
-@import "fixed-width";
-@import "list";
-@import "bordered-pulled";
-@import "animated";
-@import "rotated-flipped";
-@import "stacked";
-@import "icons";
-@import "screen-reader";
diff --git a/library/font_awesome/src/3.2.1/CNAME b/library/font_awesome/src/3.2.1/CNAME
deleted file mode 100644
index f13145254..000000000
--- a/library/font_awesome/src/3.2.1/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-fontawesome.io \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/Makefile b/library/font_awesome/src/3.2.1/Makefile
deleted file mode 100644
index 7359665af..000000000
--- a/library/font_awesome/src/3.2.1/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-PATH := ../node_modules/.bin:$(PATH)
-
-FA_ROOT_DIRECTORY = assets/font-awesome
-FA_LESS_DIRECTORY = assets/font-awesome/less
-FA_CSS_DIRECTORY = assets/font-awesome/css
-
-FA_LESS_MODERN = ${FA_LESS_DIRECTORY}/font-awesome.less
-FA_LESS_IE7 = ${FA_LESS_DIRECTORY}/font-awesome-ie7.less
-
-FA_CSS_MODERN = ${FA_CSS_DIRECTORY}/font-awesome.css
-FA_CSS_MODERN_MIN = ${FA_CSS_DIRECTORY}/font-awesome.min.css
-FA_CSS_IE7 = ${FA_CSS_DIRECTORY}/font-awesome-ie7.css
-FA_CSS_IE7_MIN = ${FA_CSS_DIRECTORY}/font-awesome-ie7.min.css
-
-SITE_LESS_DIRECTORY = assets/less
-SITE_CSS_DIRECTORY = assets/css
-
-SITE_LESS = ${SITE_LESS_DIRECTORY}/site.less
-SITE_CSS_MIN = ${SITE_CSS_DIRECTORY}/site.css
-
-build:
- @echo "Compiling Less files"
- @mkdir -p ${FA_CSS_DIRECTORY}
- lessc ${FA_LESS_MODERN} > ${FA_CSS_MODERN}
- lessc --compress ${FA_LESS_MODERN} > ${FA_CSS_MODERN_MIN}
- lessc ${FA_LESS_IE7} > ${FA_CSS_IE7}
- lessc --compress ${FA_LESS_IE7} > ${FA_CSS_IE7_MIN}
- lessc --compress ${SITE_LESS} > ${SITE_CSS_MIN}
- cp -r ${FA_ROOT_DIRECTORY}/* ../
- cd assets && zip -r9 font-awesome.zip font-awesome
-
-
-default: build
-
-
-.PHONY: build
diff --git a/library/font_awesome/src/3.2.1/assets/css/prettify.css b/library/font_awesome/src/3.2.1/assets/css/prettify.css
deleted file mode 100644
index aedd8d1a9..000000000
--- a/library/font_awesome/src/3.2.1/assets/css/prettify.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.com { color: #93a1a1; }
-.lit { color: #195f91; }
-.pun, .opn, .clo { color: #93a1a1; }
-.fun { color: #dc322f; }
-.str, .atv { color: #D14; }
-.kwd, .linenums .tag { color: #1e347b; }
-.typ, .atn, .dec, .var { color: teal; }
-.pln { color: #48484c; }
-
-.prettyprint {
- padding: 8px;
- background-color: #f7f7f9;
- border: 1px solid #e1e1e8;
-}
-.prettyprint.linenums {
- -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
- -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
- box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-}
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums {
- margin: 0 0 0 33px; /* IE indents via margin-left */
-}
-ol.linenums li {
- padding-left: 12px;
- color: #bebec5;
- line-height: 18px;
- text-shadow: 0 1px 0 #fff;
-} \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/css/pygments.css b/library/font_awesome/src/3.2.1/assets/css/pygments.css
deleted file mode 100644
index 5af20ee5e..000000000
--- a/library/font_awesome/src/3.2.1/assets/css/pygments.css
+++ /dev/null
@@ -1,71 +0,0 @@
-.hll { background-color: #ffffcc }
-/*{ background: #f0f3f3; }*/
-.c { color: #999; } /* Comment */
-.err { color: #AA0000; background-color: #FFAAAA } /* Error */
-.k { color: #006699; } /* Keyword */
-.o { color: #555555 } /* Operator */
-.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
-.cp { color: #009999 } /* Comment.Preproc */
-.c1 { color: #999; } /* Comment.Single */
-.cs { color: #999; } /* Comment.Special */
-.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #FF0000 } /* Generic.Error */
-.gh { color: #003300; } /* Generic.Heading */
-.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
-.go { color: #AAAAAA } /* Generic.Output */
-.gp { color: #000099; } /* Generic.Prompt */
-.gs { } /* Generic.Strong */
-.gu { color: #003300; } /* Generic.Subheading */
-.gt { color: #99CC66 } /* Generic.Traceback */
-.kc { color: #006699; } /* Keyword.Constant */
-.kd { color: #006699; } /* Keyword.Declaration */
-.kn { color: #006699; } /* Keyword.Namespace */
-.kp { color: #006699 } /* Keyword.Pseudo */
-.kr { color: #006699; } /* Keyword.Reserved */
-.kt { color: #007788; } /* Keyword.Type */
-.m { color: #FF6600 } /* Literal.Number */
-.s { color: #d44950 } /* Literal.String */
-.na { color: #4f9fcf } /* Name.Attribute */
-.nb { color: #336666 } /* Name.Builtin */
-.nc { color: #00AA88; } /* Name.Class */
-.no { color: #336600 } /* Name.Constant */
-.nd { color: #9999FF } /* Name.Decorator */
-.ni { color: #999999; } /* Name.Entity */
-.ne { color: #CC0000; } /* Name.Exception */
-.nf { color: #CC00FF } /* Name.Function */
-.nl { color: #9999FF } /* Name.Label */
-.nn { color: #00CCFF; } /* Name.Namespace */
-.nt { color: #2f6f9f; } /* Name.Tag */
-.nv { color: #003333 } /* Name.Variable */
-.ow { color: #000000; } /* Operator.Word */
-.w { color: #bbbbbb } /* Text.Whitespace */
-.mf { color: #FF6600 } /* Literal.Number.Float */
-.mh { color: #FF6600 } /* Literal.Number.Hex */
-.mi { color: #FF6600 } /* Literal.Number.Integer */
-.mo { color: #FF6600 } /* Literal.Number.Oct */
-.sb { color: #CC3300 } /* Literal.String.Backtick */
-.sc { color: #CC3300 } /* Literal.String.Char */
-.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
-.s2 { color: #CC3300 } /* Literal.String.Double */
-.se { color: #CC3300; } /* Literal.String.Escape */
-.sh { color: #CC3300 } /* Literal.String.Heredoc */
-.si { color: #AA0000 } /* Literal.String.Interpol */
-.sx { color: #CC3300 } /* Literal.String.Other */
-.sr { color: #33AAAA } /* Literal.String.Regex */
-.s1 { color: #CC3300 } /* Literal.String.Single */
-.ss { color: #FFCC33 } /* Literal.String.Symbol */
-.bp { color: #336666 } /* Name.Builtin.Pseudo */
-.vc { color: #003333 } /* Name.Variable.Class */
-.vg { color: #003333 } /* Name.Variable.Global */
-.vi { color: #003333 } /* Name.Variable.Instance */
-.il { color: #FF6600 } /* Literal.Number.Integer.Long */
-
-.css .o,
-.css .o + .nt,
-.css .nt + .nt { color: #999; }
-
-pre {
- background-color: #fafafa;
- padding: 8px 15px;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/css/site.css b/library/font_awesome/src/3.2.1/assets/css/site.css
deleted file mode 100644
index b5fd3f612..000000000
--- a/library/font_awesome/src/3.2.1/assets/css/site.css
+++ /dev/null
@@ -1,1154 +0,0 @@
-.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
-.clearfix:after{clear:both;}
-.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
-.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
-article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
-audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
-audio:not([controls]){display:none;}
-html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
-a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
-a:hover,a:active{outline:0;}
-sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
-sup{top:-0.5em;}
-sub{bottom:-0.25em;}
-img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
-#map_canvas img,.google-maps img{max-width:none;}
-button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
-button,input{*overflow:visible;line-height:normal;}
-button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
-button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
-label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;}
-input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
-input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
-textarea{overflow:auto;vertical-align:top;}
-@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) ")";} .ir a:after,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;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background-color:#ffffff;}
-a{color:#c83025;text-decoration:none;}
-a:hover,a:focus{color:#9d261d;text-decoration:underline;}
-.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
-.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);}
-.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;}
-.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
-.row:after{clear:both;}
-.row:before,.row:after{display:table;content:"";line-height:0;}
-.row:after{clear:both;}
-[class*="span"]{float:left;min-height:1px;margin-left:20px;}
-.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
-.span12{width:940px;}
-.span11{width:860px;}
-.span10{width:780px;}
-.span9{width:700px;}
-.span8{width:620px;}
-.span7{width:540px;}
-.span6{width:460px;}
-.span5{width:380px;}
-.span4{width:300px;}
-.span3{width:220px;}
-.span2{width:140px;}
-.span1{width:60px;}
-.offset12{margin-left:980px;}
-.offset11{margin-left:900px;}
-.offset10{margin-left:820px;}
-.offset9{margin-left:740px;}
-.offset8{margin-left:660px;}
-.offset7{margin-left:580px;}
-.offset6{margin-left:500px;}
-.offset5{margin-left:420px;}
-.offset4{margin-left:340px;}
-.offset3{margin-left:260px;}
-.offset2{margin-left:180px;}
-.offset1{margin-left:100px;}
-.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
-.row:after{clear:both;}
-.row:before,.row:after{display:table;content:"";line-height:0;}
-.row:after{clear:both;}
-[class*="span"]{float:left;min-height:1px;margin-left:20px;}
-.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
-.span12{width:940px;}
-.span11{width:860px;}
-.span10{width:780px;}
-.span9{width:700px;}
-.span8{width:620px;}
-.span7{width:540px;}
-.span6{width:460px;}
-.span5{width:380px;}
-.span4{width:300px;}
-.span3{width:220px;}
-.span2{width:140px;}
-.span1{width:60px;}
-.offset12{margin-left:980px;}
-.offset11{margin-left:900px;}
-.offset10{margin-left:820px;}
-.offset9{margin-left:740px;}
-.offset8{margin-left:660px;}
-.offset7{margin-left:580px;}
-.offset6{margin-left:500px;}
-.offset5{margin-left:420px;}
-.offset4{margin-left:340px;}
-.offset3{margin-left:260px;}
-.offset2{margin-left:180px;}
-.offset1{margin-left:100px;}
-.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
-.row-fluid:after{clear:both;}
-.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
-.row-fluid:after{clear:both;}
-.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
-.row-fluid [class*="span"]:first-child{margin-left:0;}
-.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
-.row-fluid .span12{width:100%;*width:99.94680851063829%;}
-.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
-.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
-.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
-.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
-.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
-.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
-.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
-.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
-.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
-.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
-.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
-.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
-.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
-.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
-.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
-.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
-.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
-.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
-.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
-.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
-.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
-.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
-.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
-.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
-.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
-.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
-.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
-.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
-.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
-.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
-.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
-.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
-.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
-.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
-.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
-.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
-.row-fluid:after{clear:both;}
-.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
-.row-fluid:after{clear:both;}
-.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
-.row-fluid [class*="span"]:first-child{margin-left:0;}
-.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
-.row-fluid .span12{width:100%;*width:99.94680851063829%;}
-.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
-.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
-.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
-.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
-.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
-.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
-.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
-.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
-.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
-.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
-.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
-.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
-.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
-.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
-.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
-.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
-.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
-.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
-.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
-.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
-.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
-.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
-.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
-.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
-.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
-.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
-.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
-.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
-.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
-.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
-.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
-.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
-.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
-.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
-.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
-[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}
-[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;}
-.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;}
-.container:after{clear:both;}
-.container:before,.container:after{display:table;content:"";line-height:0;}
-.container:after{clear:both;}
-.container:before,.container:after{display:table;content:"";line-height:0;}
-.container:after{clear:both;}
-.container:before,.container:after{display:table;content:"";line-height:0;}
-.container:after{clear:both;}
-.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
-.container-fluid:after{clear:both;}
-.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
-.container-fluid:after{clear:both;}
-p{margin:0 0 10px;}
-.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px;}
-small{font-size:85%;}
-strong{font-weight:bold;}
-em{font-style:italic;}
-cite{font-style:normal;}
-.muted{color:#999999;}
-a.muted:hover,a.muted:focus{color:#808080;}
-.text-warning{color:#b58603;}
-a.text-warning:hover,a.text-warning:focus{color:#836102;}
-.text-error{color:#9d261d;}
-a.text-error:hover,a.text-error:focus{color:#721c15;}
-.text-info{color:#007dbc;}
-a.text-info:hover,a.text-info:focus{color:#005b89;}
-.text-success{color:#5c7f41;}
-a.text-success:hover,a.text-success:focus{color:#435d2f;}
-.text-left{text-align:left;}
-.text-right{text-align:right;}
-.text-center{text-align:center;}
-h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:500;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;}
-h1,h2,h3{line-height:40px;}
-h1{font-size:38.5px;}
-h2{font-size:31.5px;}
-h3{font-size:24.5px;}
-h4{font-size:17.5px;}
-h5{font-size:14px;}
-h6{font-size:11.9px;}
-h1 small{font-size:24.5px;}
-h2 small{font-size:17.5px;}
-h3 small{font-size:14px;}
-h4 small{font-size:14px;}
-.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;}
-ul,ol{padding:0;margin:0 0 10px 25px;}
-ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
-li{line-height:20px;}
-ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
-ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;}
-dl{margin-bottom:20px;}
-dt,dd{line-height:20px;}
-dt{font-weight:bold;}
-dd{margin-left:10px;}
-.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
-.dl-horizontal:after{clear:both;}
-.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
-.dl-horizontal:after{clear:both;}
-.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;}
-hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
-abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;}
-abbr.initialism{font-size:90%;text-transform:uppercase;}
-blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25;}
-blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
-blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
-blockquote.pull-right small:before{content:'';}
-blockquote.pull-right small:after{content:'\00A0 \2014';}
-q:before,q:after,blockquote:before,blockquote:after{content:"";}
-address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
-code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;}
-pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;}
-pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;}
-.pre-scrollable{max-height:340px;overflow-y:scroll;}
-form{margin:0 0 20px;}
-fieldset{padding:0;margin:0;border:0;}
-legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;}
-label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px;}
-input,button,select,textarea{font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;}
-label{display:block;margin-bottom:5px;}
-select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;}
-input,textarea,.uneditable-input{width:206px;}
-textarea{height:auto;}
-textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);}
-input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;}
-input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;}
-select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}
-select{width:220px;border:1px solid #cccccc;background-color:#ffffff;}
-select[multiple],select[size]{height:auto;}
-select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
-.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
-.uneditable-input{overflow:hidden;white-space:nowrap;}
-.uneditable-textarea{width:auto;height:auto;}
-input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
-input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
-input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
-input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
-input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
-input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
-.radio,.checkbox{min-height:20px;padding-left:20px;}
-.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}
-.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
-.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
-.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
-.input-mini{width:60px;}
-.input-small{width:90px;}
-.input-medium{width:150px;}
-.input-large{width:210px;}
-.input-xlarge{width:270px;}
-.input-xxlarge{width:530px;}
-input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;}
-.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;}
-input,textarea,.uneditable-input{margin-left:0;}
-.controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
-input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
-input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
-input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
-input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
-input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
-input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
-input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
-input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
-input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
-input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
-input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
-input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
-input,textarea,.uneditable-input{margin-left:0;}
-.controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
-input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
-input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
-input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
-input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
-input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
-input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
-input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
-input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
-input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
-input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
-input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
-input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
-.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
-.controls-row:after{clear:both;}
-.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
-.controls-row:after{clear:both;}
-.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;}
-.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;}
-input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;}
-input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;}
-.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#b58603;}
-.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#b58603;}
-.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#b58603;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#836102;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #fbc124;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #fbc124;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #fbc124;}
-.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#b58603;background-color:#fffcee;border-color:#b58603;}
-.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#b58603;}
-.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#b58603;}
-.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#b58603;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#836102;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #fbc124;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #fbc124;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #fbc124;}
-.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#b58603;background-color:#fffcee;border-color:#b58603;}
-.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#9d261d;}
-.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#9d261d;}
-.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#9d261d;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#721c15;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dc4e44;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dc4e44;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dc4e44;}
-.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#9d261d;background-color:#fff0f0;border-color:#9d261d;}
-.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#9d261d;}
-.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#9d261d;}
-.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#9d261d;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#721c15;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dc4e44;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dc4e44;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dc4e44;}
-.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#9d261d;background-color:#fff0f0;border-color:#9d261d;}
-.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#5c7f41;}
-.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#5c7f41;}
-.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#5c7f41;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#435d2f;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #8eb670;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #8eb670;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #8eb670;}
-.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#5c7f41;background-color:#f3f9e8;border-color:#5c7f41;}
-.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#5c7f41;}
-.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#5c7f41;}
-.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#5c7f41;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#435d2f;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #8eb670;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #8eb670;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #8eb670;}
-.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#5c7f41;background-color:#f3f9e8;border-color:#5c7f41;}
-.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#007dbc;}
-.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#007dbc;}
-.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#007dbc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#005b89;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #23b5ff;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #23b5ff;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #23b5ff;}
-.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#007dbc;background-color:#f0f9ff;border-color:#007dbc;}
-.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#007dbc;}
-.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#007dbc;}
-.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#007dbc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#005b89;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #23b5ff;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #23b5ff;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #23b5ff;}
-.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#007dbc;background-color:#f0f9ff;border-color:#007dbc;}
-input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
-.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
-.form-actions:after{clear:both;}
-.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
-.form-actions:after{clear:both;}
-.help-block,.help-inline{color:#595959;}
-.help-block{display:block;margin-bottom:10px;}
-.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
-.input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px;}
-.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;}
-.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;}
-.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.input-append .active,.input-prepend .active{background-color:#d9e8c2;border-color:#95bf52;}
-.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
-.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
-.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
-.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;}
-.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
-.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
-.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
-.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
-.input-prepend.input-append .btn-group:first-child{margin-left:0;}
-input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
-.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
-.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
-.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
-.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
-.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;}
-.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
-.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;}
-.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
-.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
-.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;}
-.control-group{margin-bottom:10px;}
-legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;}
-.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
-.form-horizontal .control-group:after{clear:both;}
-.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
-.form-horizontal .control-group:after{clear:both;}
-.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
-.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;}
-.form-horizontal .help-block{margin-bottom:0;}
-.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;}
-.form-horizontal .form-actions{padding-left:180px;}
-table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
-.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
-.table th{font-weight:bold;}
-.table thead th{vertical-align:bottom;}
-.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
-.table tbody+tbody{border-top:2px solid #dddddd;}
-.table .table{background-color:#ffffff;}
-.table-condensed th,.table-condensed td{padding:4px 5px;}
-.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
-.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
-.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
-.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
-.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
-.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
-.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;}
-.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;}
-.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
-.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
-.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 td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;}
-.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}
-.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;}
-.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}
-.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;}
-.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}
-.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;}
-.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}
-.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;}
-.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}
-.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;}
-.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}
-.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;}
-.table tbody tr.success>td{background-color:#f3f9e8;}
-.table tbody tr.error>td{background-color:#fff0f0;}
-.table tbody tr.warning>td{background-color:#fffcee;}
-.table tbody tr.info>td{background-color:#f0f9ff;}
-.table-hover tbody tr.success:hover>td{background-color:#e8f4d4;}
-.table-hover tbody tr.error:hover>td{background-color:#ffd7d7;}
-.table-hover tbody tr.warning:hover>td{background-color:#fff8d5;}
-.table-hover tbody tr.info:hover>td{background-color:#d7efff;}
-[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;}
-.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");}
-.icon-glass{background-position:0 0;}
-.icon-music{background-position:-24px 0;}
-.icon-search{background-position:-48px 0;}
-.icon-envelope{background-position:-72px 0;}
-.icon-heart{background-position:-96px 0;}
-.icon-star{background-position:-120px 0;}
-.icon-star-empty{background-position:-144px 0;}
-.icon-user{background-position:-168px 0;}
-.icon-film{background-position:-192px 0;}
-.icon-th-large{background-position:-216px 0;}
-.icon-th{background-position:-240px 0;}
-.icon-th-list{background-position:-264px 0;}
-.icon-ok{background-position:-288px 0;}
-.icon-remove{background-position:-312px 0;}
-.icon-zoom-in{background-position:-336px 0;}
-.icon-zoom-out{background-position:-360px 0;}
-.icon-off{background-position:-384px 0;}
-.icon-signal{background-position:-408px 0;}
-.icon-cog{background-position:-432px 0;}
-.icon-trash{background-position:-456px 0;}
-.icon-home{background-position:0 -24px;}
-.icon-file{background-position:-24px -24px;}
-.icon-time{background-position:-48px -24px;}
-.icon-road{background-position:-72px -24px;}
-.icon-download-alt{background-position:-96px -24px;}
-.icon-download{background-position:-120px -24px;}
-.icon-upload{background-position:-144px -24px;}
-.icon-inbox{background-position:-168px -24px;}
-.icon-play-circle{background-position:-192px -24px;}
-.icon-repeat{background-position:-216px -24px;}
-.icon-refresh{background-position:-240px -24px;}
-.icon-list-alt{background-position:-264px -24px;}
-.icon-lock{background-position:-287px -24px;}
-.icon-flag{background-position:-312px -24px;}
-.icon-headphones{background-position:-336px -24px;}
-.icon-volume-off{background-position:-360px -24px;}
-.icon-volume-down{background-position:-384px -24px;}
-.icon-volume-up{background-position:-408px -24px;}
-.icon-qrcode{background-position:-432px -24px;}
-.icon-barcode{background-position:-456px -24px;}
-.icon-tag{background-position:0 -48px;}
-.icon-tags{background-position:-25px -48px;}
-.icon-book{background-position:-48px -48px;}
-.icon-bookmark{background-position:-72px -48px;}
-.icon-print{background-position:-96px -48px;}
-.icon-camera{background-position:-120px -48px;}
-.icon-font{background-position:-144px -48px;}
-.icon-bold{background-position:-167px -48px;}
-.icon-italic{background-position:-192px -48px;}
-.icon-text-height{background-position:-216px -48px;}
-.icon-text-width{background-position:-240px -48px;}
-.icon-align-left{background-position:-264px -48px;}
-.icon-align-center{background-position:-288px -48px;}
-.icon-align-right{background-position:-312px -48px;}
-.icon-align-justify{background-position:-336px -48px;}
-.icon-list{background-position:-360px -48px;}
-.icon-indent-left{background-position:-384px -48px;}
-.icon-indent-right{background-position:-408px -48px;}
-.icon-facetime-video{background-position:-432px -48px;}
-.icon-picture{background-position:-456px -48px;}
-.icon-pencil{background-position:0 -72px;}
-.icon-map-marker{background-position:-24px -72px;}
-.icon-adjust{background-position:-48px -72px;}
-.icon-tint{background-position:-72px -72px;}
-.icon-edit{background-position:-96px -72px;}
-.icon-share{background-position:-120px -72px;}
-.icon-check{background-position:-144px -72px;}
-.icon-move{background-position:-168px -72px;}
-.icon-step-backward{background-position:-192px -72px;}
-.icon-fast-backward{background-position:-216px -72px;}
-.icon-backward{background-position:-240px -72px;}
-.icon-play{background-position:-264px -72px;}
-.icon-pause{background-position:-288px -72px;}
-.icon-stop{background-position:-312px -72px;}
-.icon-forward{background-position:-336px -72px;}
-.icon-fast-forward{background-position:-360px -72px;}
-.icon-step-forward{background-position:-384px -72px;}
-.icon-eject{background-position:-408px -72px;}
-.icon-chevron-left{background-position:-432px -72px;}
-.icon-chevron-right{background-position:-456px -72px;}
-.icon-plus-sign{background-position:0 -96px;}
-.icon-minus-sign{background-position:-24px -96px;}
-.icon-remove-sign{background-position:-48px -96px;}
-.icon-ok-sign{background-position:-72px -96px;}
-.icon-question-sign{background-position:-96px -96px;}
-.icon-info-sign{background-position:-120px -96px;}
-.icon-screenshot{background-position:-144px -96px;}
-.icon-remove-circle{background-position:-168px -96px;}
-.icon-ok-circle{background-position:-192px -96px;}
-.icon-ban-circle{background-position:-216px -96px;}
-.icon-arrow-left{background-position:-240px -96px;}
-.icon-arrow-right{background-position:-264px -96px;}
-.icon-arrow-up{background-position:-289px -96px;}
-.icon-arrow-down{background-position:-312px -96px;}
-.icon-share-alt{background-position:-336px -96px;}
-.icon-resize-full{background-position:-360px -96px;}
-.icon-resize-small{background-position:-384px -96px;}
-.icon-plus{background-position:-408px -96px;}
-.icon-minus{background-position:-433px -96px;}
-.icon-asterisk{background-position:-456px -96px;}
-.icon-exclamation-sign{background-position:0 -120px;}
-.icon-gift{background-position:-24px -120px;}
-.icon-leaf{background-position:-48px -120px;}
-.icon-fire{background-position:-72px -120px;}
-.icon-eye-open{background-position:-96px -120px;}
-.icon-eye-close{background-position:-120px -120px;}
-.icon-warning-sign{background-position:-144px -120px;}
-.icon-plane{background-position:-168px -120px;}
-.icon-calendar{background-position:-192px -120px;}
-.icon-random{background-position:-216px -120px;width:16px;}
-.icon-comment{background-position:-240px -120px;}
-.icon-magnet{background-position:-264px -120px;}
-.icon-chevron-up{background-position:-288px -120px;}
-.icon-chevron-down{background-position:-313px -119px;}
-.icon-retweet{background-position:-336px -120px;}
-.icon-shopping-cart{background-position:-360px -120px;}
-.icon-folder-close{background-position:-384px -120px;width:16px;}
-.icon-folder-open{background-position:-408px -120px;width:16px;}
-.icon-resize-vertical{background-position:-432px -119px;}
-.icon-resize-horizontal{background-position:-456px -118px;}
-.icon-hdd{background-position:0 -144px;}
-.icon-bullhorn{background-position:-24px -144px;}
-.icon-bell{background-position:-48px -144px;}
-.icon-certificate{background-position:-72px -144px;}
-.icon-thumbs-up{background-position:-96px -144px;}
-.icon-thumbs-down{background-position:-120px -144px;}
-.icon-hand-right{background-position:-144px -144px;}
-.icon-hand-left{background-position:-168px -144px;}
-.icon-hand-up{background-position:-192px -144px;}
-.icon-hand-down{background-position:-216px -144px;}
-.icon-circle-arrow-right{background-position:-240px -144px;}
-.icon-circle-arrow-left{background-position:-264px -144px;}
-.icon-circle-arrow-up{background-position:-288px -144px;}
-.icon-circle-arrow-down{background-position:-312px -144px;}
-.icon-globe{background-position:-336px -144px;}
-.icon-wrench{background-position:-360px -144px;}
-.icon-tasks{background-position:-384px -144px;}
-.icon-filter{background-position:-408px -144px;}
-.icon-briefcase{background-position:-432px -144px;}
-.icon-fullscreen{background-position:-456px -144px;}
-.dropup,.dropdown{position:relative;}
-.dropdown-toggle{*margin-bottom:-3px;}
-.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
-.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}
-.dropdown .caret{margin-top:8px;margin-left:2px;}
-.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;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}
-.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
-.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;}
-.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#ffffff;background-color:#bf2e23;background-image:-moz-linear-gradient(top, #c83025, #b32b21);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#c83025), to(#b32b21));background-image:-webkit-linear-gradient(top, #c83025, #b32b21);background-image:-o-linear-gradient(top, #c83025, #b32b21);background-image:linear-gradient(to bottom, #c83025, #b32b21);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc83025', endColorstr='#ffb32b21', GradientType=0);}
-.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#bf2e23;background-image:-moz-linear-gradient(top, #c83025, #b32b21);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#c83025), to(#b32b21));background-image:-webkit-linear-gradient(top, #c83025, #b32b21);background-image:-o-linear-gradient(top, #c83025, #b32b21);background-image:linear-gradient(to bottom, #c83025, #b32b21);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc83025', endColorstr='#ffb32b21', GradientType=0);}
-.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999;}
-.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:default;}
-.open{*z-index:1000;}.open>.dropdown-menu{display:block;}
-.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 #000000;content:"";}
-.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
-.dropdown-submenu{position:relative;}
-.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
-.dropdown-submenu:hover>.dropdown-menu{display:block;}
-.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;}
-.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}
-.dropdown-submenu:hover>a:after{border-left-color:#ffffff;}
-.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
-.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;}
-.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
-.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
-.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
-.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}
-.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;}
-.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
-button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
-.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
-.btn:active,.btn.active{background-color:#cccccc \9;}
-.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
-.btn:active,.btn.active{background-color:#cccccc \9;}
-.btn:first-child{*margin-left:0;}
-.btn:first-child{*margin-left:0;}
-.btn:hover,.btn:focus{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
-.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
-.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
-.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
-.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
-.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;}
-.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;}
-.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}
-.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
-.btn-block+.btn-block{margin-top:5px;}
-input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}
-.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
-.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#e7d785;background-image:-moz-linear-gradient(top, #fffeb8, #c49c38);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fffeb8), to(#c49c38));background-image:-webkit-linear-gradient(top, #fffeb8, #c49c38);background-image:-o-linear-gradient(top, #fffeb8, #c49c38);background-image:linear-gradient(to bottom, #fffeb8, #c49c38);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffffeb8', endColorstr='#ffc49c38', GradientType=0);border-color:#c49c38 #c49c38 #896d27;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#c49c38;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#c49c38;*background-color:#b08c32;}
-.btn-primary:active,.btn-primary.active{background-color:#9c7c2d \9;}
-.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#c49c38;*background-color:#b08c32;}
-.btn-primary:active,.btn-primary.active{background-color:#9c7c2d \9;}
-.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#e7c44b;background-image:-moz-linear-gradient(top, #f9e27d, #cc9600);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f9e27d), to(#cc9600));background-image:-webkit-linear-gradient(top, #f9e27d, #cc9600);background-image:-o-linear-gradient(top, #f9e27d, #cc9600);background-image:linear-gradient(to bottom, #f9e27d, #cc9600);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9e27d', endColorstr='#ffcc9600', GradientType=0);border-color:#cc9600 #cc9600 #805e00;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#cc9600;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#cc9600;*background-color:#b38300;}
-.btn-warning:active,.btn-warning.active{background-color:#997100 \9;}
-.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#cc9600;*background-color:#b38300;}
-.btn-warning:active,.btn-warning.active{background-color:#997100 \9;}
-.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#cc4036;background-image:-moz-linear-gradient(top, #dc4e44, #b32b21);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#dc4e44), to(#b32b21));background-image:-webkit-linear-gradient(top, #dc4e44, #b32b21);background-image:-o-linear-gradient(top, #dc4e44, #b32b21);background-image:linear-gradient(to bottom, #dc4e44, #b32b21);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdc4e44', endColorstr='#ffb32b21', GradientType=0);border-color:#b32b21 #b32b21 #721c15;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#b32b21;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#b32b21;*background-color:#9d261d;}
-.btn-danger:active,.btn-danger.active{background-color:#872119 \9;}
-.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#b32b21;*background-color:#9d261d;}
-.btn-danger:active,.btn-danger.active{background-color:#872119 \9;}
-.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#83a94c;background-image:-moz-linear-gradient(top, #95bf52, #678943);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#95bf52), to(#678943));background-image:-webkit-linear-gradient(top, #95bf52, #678943);background-image:-o-linear-gradient(top, #95bf52, #678943);background-image:linear-gradient(to bottom, #95bf52, #678943);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff95bf52', endColorstr='#ff678943', GradientType=0);border-color:#678943 #678943 #40562a;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#678943;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#678943;*background-color:#5a783b;}
-.btn-success:active,.btn-success.active{background-color:#4d6732 \9;}
-.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#678943;*background-color:#5a783b;}
-.btn-success:active,.btn-success.active{background-color:#4d6732 \9;}
-.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#008ed0;background-image:-moz-linear-gradient(top, #009add, #007dbc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#009add), to(#007dbc));background-image:-webkit-linear-gradient(top, #009add, #007dbc);background-image:-o-linear-gradient(top, #009add, #007dbc);background-image:linear-gradient(to bottom, #009add, #007dbc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff009add', endColorstr='#ff007dbc', GradientType=0);border-color:#007dbc #007dbc #004a70;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#007dbc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#007dbc;*background-color:#006ca3;}
-.btn-info:active,.btn-info.active{background-color:#005b89 \9;}
-.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#007dbc;*background-color:#006ca3;}
-.btn-info:active,.btn-info.active{background-color:#005b89 \9;}
-.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
-.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
-.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
-.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
-button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
-button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
-button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
-button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
-.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
-.btn-link{border-color:transparent;cursor:pointer;color:#c83025;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.btn-link:hover,.btn-link:focus{color:#9d261d;text-decoration:underline;background-color:transparent;}
-.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333333;text-decoration:none;}
-.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}
-.btn-group:first-child{*margin-left:0;}
-.btn-group+.btn-group{margin-left:5px;}
-.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;}
-.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.btn-group>.btn+.btn{margin-left:-1px;}
-.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px;}
-.btn-group>.btn-mini{font-size:10.5px;}
-.btn-group>.btn-small{font-size:11.9px;}
-.btn-group>.btn-large{font-size:17.5px;}
-.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
-.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
-.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
-.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
-.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
-.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}
-.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}
-.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}
-.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}
-.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
-.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}
-.btn-group.open .btn-primary.dropdown-toggle{background-color:#c49c38;}
-.btn-group.open .btn-warning.dropdown-toggle{background-color:#cc9600;}
-.btn-group.open .btn-danger.dropdown-toggle{background-color:#b32b21;}
-.btn-group.open .btn-success.dropdown-toggle{background-color:#678943;}
-.btn-group.open .btn-info.dropdown-toggle{background-color:#007dbc;}
-.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}
-.btn .caret{margin-top:8px;margin-left:0;}
-.btn-large .caret{margin-top:6px;}
-.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}
-.btn-mini .caret,.btn-small .caret{margin-top:8px;}
-.dropup .btn-large .caret{border-bottom-width:5px;}
-.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
-.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}
-.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}
-.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
-.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
-.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}
-.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
-.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fffcee;border:1px solid #ffedca;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
-.alert,.alert h4{color:#b58603;}
-.alert h4{margin:0;}
-.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
-.alert-success{background-color:#f3f9e8;border-color:#e1ebb3;color:#5c7f41;}
-.alert-success h4{color:#5c7f41;}
-.alert-danger,.alert-error{background-color:#fff0f0;border-color:#ffdce1;color:#9d261d;}
-.alert-danger h4,.alert-error h4{color:#9d261d;}
-.alert-info{background-color:#f0f9ff;border-color:#ccf3ff;color:#007dbc;}
-.alert-info h4{color:#007dbc;}
-.alert-block{padding-top:14px;padding-bottom:14px;}
-.alert-block>p,.alert-block>ul{margin-bottom:0;}
-.alert-block p+p{margin-top:5px;}
-.nav{margin-left:0;margin-bottom:20px;list-style:none;}
-.nav>li>a{display:block;}
-.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;}
-.nav>li>a>img{max-width:none;}
-.nav>.pull-right{float:right;}
-.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
-.nav li+.nav-header{margin-top:9px;}
-.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
-.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
-.nav-list>li>a{padding:3px 15px;}
-.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#c83025;}
-.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}
-.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
-.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
-.nav-tabs:after,.nav-pills:after{clear:both;}
-.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
-.nav-tabs:after,.nav-pills:after{clear:both;}
-.nav-tabs>li,.nav-pills>li{float:left;}
-.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
-.nav-tabs{border-bottom:1px solid #ddd;}
-.nav-tabs>li{margin-bottom:-1px;}
-.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #dddddd;}
-.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
-.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
-.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#ffffff;background-color:#c83025;}
-.nav-stacked>li{float:none;}
-.nav-stacked>li>a{margin-right:0;}
-.nav-tabs.nav-stacked{border-bottom:0;}
-.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
-.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
-.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;}
-.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
-.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
-.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
-.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
-.nav .dropdown-toggle .caret{border-top-color:#c83025;border-bottom-color:#c83025;margin-top:6px;}
-.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#9d261d;border-bottom-color:#9d261d;}
-.nav-tabs .dropdown-toggle .caret{margin-top:8px;}
-.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;}
-.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
-.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;}
-.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#ffffff;background-color:#999999;border-color:#999999;}
-.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
-.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999999;}
-.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
-.tabbable:after{clear:both;}
-.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
-.tabbable:after{clear:both;}
-.tab-content{overflow:auto;}
-.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;}
-.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
-.tab-content>.active,.pill-content>.active{display:block;}
-.tabs-below>.nav-tabs{border-top:1px solid #ddd;}
-.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;}
-.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;}
-.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;}
-.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}
-.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
-.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
-.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
-.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
-.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
-.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
-.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
-.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
-.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
-.nav>.disabled>a{color:#999999;}
-.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;}
-.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}
-.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
-.navbar-inner:after{clear:both;}
-.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
-.navbar-inner:after{clear:both;}
-.navbar .container{width:auto;}
-.nav-collapse.collapse{height:auto;overflow:visible;}
-.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;}
-.navbar-text{margin-bottom:0;line-height:40px;color:#777777;}
-.navbar-link{color:#777777;}.navbar-link:hover,.navbar-link:focus{color:#333333;}
-.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;}
-.navbar .btn,.navbar .btn-group{margin-top:5px;}
-.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;}
-.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
-.navbar-form:after{clear:both;}
-.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
-.navbar-form:after{clear:both;}
-.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
-.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;}
-.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
-.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
-.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
-.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
-.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;}
-.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}
-.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
-.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
-.navbar-fixed-top{top:0;}
-.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);}
-.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);}
-.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
-.navbar .nav.pull-right{float:right;margin-right:0;}
-.navbar .nav>li{float:left;}
-.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;}
-.navbar .nav .dropdown-toggle .caret{margin-top:8px;}
-.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;}
-.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);}
-.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
-.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
-.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
-.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
-.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
-.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
-.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
-.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
-.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
-.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
-.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;}
-.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;}
-.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;}
-.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
-.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;}
-.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;}
-.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
-.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;}
-.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#ffffff;}
-.navbar-inverse .brand{color:#999999;}
-.navbar-inverse .navbar-text{color:#999999;}
-.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;}
-.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;}
-.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#ffffff;}
-.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;}
-.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;}
-.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
-.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;}
-.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
-.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
-.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
-.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
-.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
-.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
-.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
-.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}
-.breadcrumb>.active{color:#999999;}
-.pagination{margin:20px 0;}
-.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
-.pagination ul>li{display:inline;}
-.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;}
-.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;}
-.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;}
-.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999999;background-color:transparent;cursor:default;}
-.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
-.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
-.pagination-centered{text-align:center;}
-.pagination-right{text-align:right;}
-.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px;}
-.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
-.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
-.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;}
-.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;}
-.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px;}
-.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px;}
-.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;}
-.pager:after{clear:both;}
-.pager:before,.pager:after{display:table;content:"";line-height:0;}
-.pager:after{clear:both;}
-.pager li{display:inline;}
-.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
-.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;}
-.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:#999999;background-color:#fff;cursor:default;}
-.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
-.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
-.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
-.modal.fade.in{top:10%;}
-.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
-.modal-header h3{margin:0;line-height:30px;}
-.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
-.modal-form{margin-bottom:0;}
-.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
-.modal-footer:after{clear:both;}
-.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
-.modal-footer:after{clear:both;}
-.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;}
-.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
-.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:8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;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:#000000;}
-.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;}
-.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;}
-.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;}
-.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 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:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.popover-title:empty{display:none;}
-.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, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;}
-.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, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;}
-.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;}
-.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, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;}
-.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
-.thumbnails:after{clear:both;}
-.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
-.thumbnails:after{clear:both;}
-.row-fluid .thumbnails{margin-left:0;}
-.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;}
-.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
-a.thumbnail:hover,a.thumbnail:focus{border-color:#c83025;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
-.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
-.thumbnail .caption{padding:9px;color:#555555;}
-.media,.media-body{overflow:hidden;*overflow:visible;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{margin-left:0;list-style:none;}
-.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
-.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
-.label:empty,.badge:empty{display:none;}
-a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;}
-.label-important,.badge-important{background-color:#9d261d;}
-.label-important[href],.badge-important[href]{background-color:#721c15;}
-.label-warning,.badge-warning{background-color:#f4914e;}
-.label-warning[href],.badge-warning[href]{background-color:#f1731e;}
-.label-success,.badge-success{background-color:#5c7f41;}
-.label-success[href],.badge-success[href]{background-color:#435d2f;}
-.label-info,.badge-info{background-color:#007dbc;}
-.label-info[href],.badge-info[href]{background-color:#005b89;}
-.label-inverse,.badge-inverse{background-color:#333333;}
-.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
-.btn .label,.btn .badge{position:relative;top:-1px;}
-.btn-mini .label,.btn-mini .badge{top:0;}
-@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 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:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
-.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
-.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);}
-.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
-.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
-.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);}
-.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
-.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);}
-.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
-.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);}
-.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
-.progress-warning .bar,.progress .bar-warning{background-color:#f7ac79;background-image:-moz-linear-gradient(top, #f8be96, #f4914e);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f8be96), to(#f4914e));background-image:-webkit-linear-gradient(top, #f8be96, #f4914e);background-image:-o-linear-gradient(top, #f8be96, #f4914e);background-image:linear-gradient(to bottom, #f8be96, #f4914e);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8be96', endColorstr='#fff4914e', GradientType=0);}
-.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#f8be96;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
-.accordion{margin-bottom:20px;}
-.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
-.accordion-heading{border-bottom:0;}
-.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
-.accordion-toggle{cursor:pointer;}
-.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
-.carousel{position:relative;margin-bottom:20px;line-height:1;}
-.carousel-inner{overflow:hidden;width:100%;position:relative;}
-.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;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:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
-.carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
-.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255, 255, 255, 0.25);border-radius:5px;}
-.carousel-indicators .active{background-color:#fff;}
-.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);}
-.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;}
-.carousel-caption h4{margin:0 0 5px;}
-.carousel-caption p{margin-bottom:0;}
-.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
-.hero-unit li{line-height:30px;}
-.pull-right{float:right;}
-.pull-left{float:left;}
-.hide{display:none;}
-.show{display:block;}
-.invisible{visibility:hidden;}
-.affix{position:fixed;}
-@-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;}
-.visible-phone{display:none !important;}
-.visible-tablet{display:none !important;}
-.hidden-desktop{display:none !important;}
-.visible-desktop{display:inherit !important;}
-@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}.visible-print{display:none !important;}
-@media print{.visible-print{display:inherit !important;} .hidden-print{display:none !important;}}html,body{height:100%;}
-.wrapper{min-height:100%;height:auto !important;height:100%;}
-.wrapper{margin:0 auto -231px;}
-.push{height:231px;}
-.footer{margin-top:60px;height:90px;padding:40px 0 40px;}
-.padding-none{padding:0 !important;}
-.padding{padding:10px !important;}
-.padding-small{padding:5px !important;}
-.padding-large{padding:22px !important;}
-.padding-top-none{padding-top:0 !important;}
-.padding-top{padding-top:10px !important;}
-.padding-top-small{padding-top:5px !important;}
-.padding-top-large{padding-top:22px !important;}
-.padding-right-none{padding-right:0 !important;}
-.padding-right{padding-right:10px !important;}
-.padding-right-small{padding-right:5px !important;}
-.padding-right-large{padding-right:22px !important;}
-.padding-bottom-none{padding-bottom:0 !important;}
-.padding-bottom{padding-bottom:10px !important;}
-.padding-bottom-small{padding-bottom:5px !important;}
-.padding-bottom-large{padding-bottom:22px !important;}
-.padding-left-none{padding-left:0 !important;}
-.padding-left{padding-left:10px !important;}
-.padding-left-small{padding-left:5px !important;}
-.padding-left-large{padding-left:22px !important;}
-.margin-none{margin:0 !important;}
-.margin{margin:10px !important;}
-.margin-small{margin:5px !important;}
-.margin-large{margin:22px !important;}
-.margin-top-none{margin-top:0 !important;}
-.margin-top{margin-top:10px !important;}
-.margin-top-large{margin-top:22px !important;}
-.margin-top-small{margin-top:5px !important;}
-.margin-right-none{margin-right:0 !important;}
-.margin-right{margin-right:10px !important;}
-.margin-right-large{margin-right:22px !important;}
-.margin-right-small{margin-right:5px !important;}
-.margin-bottom-none{margin-bottom:0 !important;}
-.margin-bottom{margin-bottom:10px !important;}
-.margin-bottom-large{margin-bottom:22px !important;}
-.margin-bottom-small{margin-bottom:5px !important;}
-.margin-left-none{margin-left:0 !important;}
-.margin-left{margin-left:10px !important;}
-.margin-left-large{margin-left:22px !important;}
-.margin-left-small{margin-left:5px !important;}
-.border-left-none{border-left:none !important;}
-.border-right-none{border-right:none !important;}
-.border-bottom-none{border-bottom:none !important;}
-.border-top-none{border-top:none !important;}
-.display-block{display:block;}
-.no-underline:hover{text-decoration:none;}
-.clickable{cursor:pointer;}
-.strong{font-weight:bold;}
-.em{font-style:italic;}
-.small{font-size:85%;}
-.no-link{color:#333333;}
-.text-sans-serif{font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;}
-.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
-.text-default{font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:normal;}
-.hilite{color:#c83025;}.hilite:hover{color:#9d261d;text-decoration:underline;}
-.hilite [class^="icon-"]:before,.hilite [class*=" icon-"]:before{display:inline;}
-.strike{text-decoration:line-through;}
-.upper{text-transform:uppercase;}
-.lower{text-transform:lowercase;}
-.navbar .brand{font-family:museo-slab,"Helvetica Neue",Helvetica,Arial,sans-serif;}.navbar .brand .icon-flag{padding-right:3px;}
-.navbar .nav>li>a{padding:12px 10px 9px;}
-.navbar .nav.pull-right{margin-right:-10px;}
-h1,h2,h3,h4,h5,h6{font-family:museo-slab,"Helvetica Neue",Helvetica,Arial,sans-serif;}
-#iconCarousel{font-size:220px;text-align:center;line-height:225px;text-shadow:2px 2px 3px #222222;}#iconCarousel a{color:#ffffff;}
-#iconCarousel .carousel-control{top:253px;width:30px;height:30px;background:none;border-width:0;font-size:30px;line-height:25px;left:117px;}#iconCarousel .carousel-control.right{left:auto;right:117px;}
-.jumbotron{background:#9d261d;border-bottom:1px solid #721c15;background-color:#99251c;background-repeat:repeat-x;background-image:-moz-linear-gradient(-40deg, #9d261d, #99251c);background-image:-webkit-linear-gradient(-40deg, #9d261d, #99251c);background-image:-o-linear-gradient(-40deg, #9d261d, #99251c);background-image:linear-gradient(-40deg, #9d261d, #99251c);text-shadow:2px 2px 2px #333333;}.jumbotron,.jumbotron h1{color:#ffffff;}
-.jumbotron h1{font-size:80px;letter-spacing:-2px;line-height:1;}
-.jumbotron p{margin-top:15px;margin-bottom:15px;font-size:30px;line-height:1.3;font-weight:lighter;}
-.jumbotron .actions{margin-top:25px;}
-.jumbotron ul{margin-left:50px;}.jumbotron ul li{font-size:15px;line-height:30px;text-shadow:1px 1px 1px #333333;}.jumbotron ul li.icon-large:before{text-indent:-2em;vertical-align:baseline;}
-.jumbotron .btn-large{font-family:museo-slab,"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;font-size:24px;padding:17px 30px;letter-spacing:-1px;}
-.jumbotron .hero-content{text-align:center;}
-.jumbotron .shameless-self-promotion{font-size:14px;margin-top:25px;color:#c47d77;text-shadow:none;}.jumbotron .shameless-self-promotion a{color:#e2bebb;}
-.jumbotron .shameless-self-promotion a:hover{color:#ffffff;}
-.jumbotron-index{padding:40px 0;}.jumbotron-index h1{font-size:80px;letter-spacing:-2px;line-height:1;margin:0 0 15px;}
-.jumbotron-index p{margin-top:15px;margin-bottom:15px;font-size:30px;line-height:1.3;}
-.jumbotron-ad{padding:20px 0;}.jumbotron-ad h1{margin-top:25px;}
-.jumbotron-ad p{margin-bottom:35px;}
-.jumbotron-icon{padding:20px 0 30px;background-color:#e6e6e6;background-repeat:repeat-x;background-image:-moz-linear-gradient(-40deg, #eeeeee, #e6e6e6);background-image:-webkit-linear-gradient(-40deg, #eeeeee, #e6e6e6);background-image:-o-linear-gradient(-40deg, #eeeeee, #e6e6e6);background-image:linear-gradient(-40deg, #eeeeee, #e6e6e6);color:#222222;text-shadow:1px 1px 1px #ffffff;border-bottom:solid 1px #c4c4c4;}.jumbotron-icon h1{color:#222222;font-size:40px;}.jumbotron-icon h1 small{letter-spacing:normal;font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;margin-left:20px;}
-.jumbotron-icon .info-details{float:left;}.jumbotron-icon .info-details p{margin:25px 0;font-weight:bold;}
-.jumbotron-icon .info-details .dl-horizontal dt{width:80px;}
-.jumbotron-icon .info-details .dl-horizontal dd{margin-left:95px;}
-.jumbotron-icon .icon-2{font-size:2em;}
-.jumbotron-icon .icon-3{font-size:4em;}
-.jumbotron-icon .icon-4{font-size:7em;}
-.jumbotron-icon .icon-5{font-size:12em;}
-.jumbotron-icon .icon-6{font-size:20em;}
-.jumbotron-icon .icon-1,.jumbotron-icon .icon-2,.jumbotron-icon .icon-3,.jumbotron-icon .icon-4,.jumbotron-icon .icon-5,.jumbotron-icon .icon-6{margin-right:0.07142857142857142em;}
-.stripe-ad{margin-bottom:22px;}.stripe-ad .lead{margin-top:10px;margin-right:30px;}
-.btn-primary{color:#333333;text-shadow:0 -1px 0 rgba(255, 255, 255, 0.25);}.btn-primary:hover{text-shadow:0 -1px 0 rgba(255, 255, 255, 0.25);color:#333333;}
-section{margin-top:40px;}
-.stacked{padding-top:35px;height:105px;}
-#social-buttons{padding:22px 0 17px;text-align:center;background-color:#f5f5f5;border-top:1px solid #fff;border-bottom:1px solid #ddd;}#social-buttons ul.unstyled{margin:0;}
-#social-buttons .btn{font-weight:bold;padding:0px 5px;line-height:17px;margin:0;}
-#social-buttons .count.btn{background:#ffffff;font-weight:normal;}
-.the-icons{margin-top:22px;}.the-icons .span3 a{display:block;cursor:pointer;line-height:32px;height:32px;padding-left:10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.the-icons .span3 a,.the-icons .span3 a:hover{color:#222222;}
-.the-icons .span3 a [class^="icon-"],.the-icons .span3 a [class*=" icon-"]{width:32px;font-size:14px;display:inline-block;text-align:right;margin-right:10px;}
-.the-icons .span3 a:hover{background-color:#fff0f0;text-decoration:none;}.the-icons .span3 a:hover [class^="icon-"],.the-icons .span3 a:hover [class*=" icon-"]{*font-size:28px;*vertical-align:middle;}
-.the-icons .span3 a:hover [class^="icon-"]:before,.the-icons .span3 a:hover [class*=" icon-"]:before{font-size:28px;vertical-align:-5px;}
-#why .span4,#whats-new .span4{margin-bottom:20px;}
-#why h4 [class^="icon-"]:before,#whats-new h4 [class^="icon-"]:before,#why h4 [class*=" icon-"]:before,#whats-new h4 [class*=" icon-"]:before{vertical-align:-10%;font-size:28px;display:inline-block;width:1.0714285714285714em;text-align:center;margin-right:5px;}
-.rating{unicode-bidi:bidi-override;direction:rtl;font-size:30px;}.rating span.star{font-family:FontAwesome;font-weight:normal;font-style:normal;display:inline-block;}.rating span.star:hover{cursor:pointer;}
-.rating span.star:before{content:"\f006";padding-right:5px;color:#999999;}
-.rating span.star:hover:before,.rating span.star:hover~span.star:before{content:"\f005";color:#e3cf7a;}
-.label,.badge{background-color:#eeeeee;}
-.well.well-transparent{background-color:transparent;}
-footer{background-color:#9d261d;border-top:1px solid #872119;color:#ddb3b0;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);margin-top:60px;padding-top:45px;padding-bottom:60px;*zoom:1;}footer a{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}footer a:hover{color:#ffffff;}
-footer ul{line-height:25px;}
-footer .project{margin-top:10px;}
-.navbar .nav>li.dropdown-split-right>a{padding-left:7px;}
-.navbar .nav>li.dropdown-split-left>a{padding-right:0;}
-.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
-.clearfix:after{clear:both;}
-.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
-.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
-@-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;}
-.visible-phone{display:none !important;}
-.visible-tablet{display:none !important;}
-.hidden-desktop{display:none !important;}
-.visible-desktop{display:inherit !important;}
-@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}.visible-print{display:none !important;}
-@media print{.visible-print{display:inherit !important;} .hidden-print{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;}}@media (min-width:1200px){#iconCarousel{font-size:290px;line-height:295px;}#iconCarousel .carousel-control{top:310px;width:30px;height:30px;font-size:40px;line-height:35px;left:145px;}#iconCarousel .carousel-control.right{right:145px;} .jumbotron-index{padding:50px 0;}.jumbotron-index h1{font-size:100px;} .jumbotron-index p{font-size:40px;margin:20px 0;} .jumbotron-index .btn-large{font-size:30px;padding:21px 35px;} .jumbotron-index .shameless-self-promotion{margin-top:30px;} .jumbotron-ad{padding:50px 0;}.jumbotron-ad h1{font-size:90px;} .jumbotron-ad p{font-size:35px;margin:20px 0;} .stripe-ad .lead{margin-top:7px;} .lead{font-size:26px;line-height:36px;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;}}@media (min-width:768px) and (max-width:979px){#iconCarousel{font-size:200px;line-height:205px;}#iconCarousel .carousel-control{top:230px;width:30px;height:30px;font-size:40px;line-height:40px;left:74px;}#iconCarousel .carousel-control.right{right:74px;} .jumbotron-index{padding:50px 0;}.jumbotron-index h1{font-size:65px;} .jumbotron-index p{font-size:25px;} .jumbotron-index .shameless-self-promotion{font-size:12px;} .jumbotron-ad p{font-size:28px;} .jumbotron-icon h1 small{display:block;margin-top:15px;margin-left:0;line-height:20px;} .stripe-ad .lead{margin:0;font-size:19px;} .stripe-ad .span8{width:402px;} .stripe-ad .span4{width:302px;} #why .span4,#whats-new .span4,#new-styles .span4{width:352px;} .the-icons .span3{width:228px;} .wrapper{margin:0 auto -251px;} .push{height:251px;} .footer{margin-top:60px;height:110px;padding:40px 0 40px;} .footer{padding-left:20px;padding-right:20px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .row-fluid [class*="offset"]:first-child{margin-left:0;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade{top:-100px;} .modal.fade.in{top:20px;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px;} .media-object{margin-right:0;margin-left:0;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){.jumbotron,footer,#social-buttons{padding-left:20px;padding-right:20px;margin-right:-20px;margin-left:-20px;} #iconCarousel{font-size:180px;line-height:180px;width:280px;margin:30px auto 0;}#iconCarousel .carousel-control{top:90px;width:44px;height:44px;font-size:44px;line-height:44px;left:-7px;}#iconCarousel .carousel-control.right{right:-7px;} .jumbotron-index h1{font-size:58px;} .jumbotron-index p{font-size:24px;} .jumbotron-index .btn-large{font-size:20px;padding:14px 26px;} .jumbotron-index .shameless-self-promotion{font-size:12px;} .jumbotron-ad h1{font-size:39px;} .jumbotron-ad p{font-size:20px;margin-bottom:20px;} .jumbotron-icon .icon-1,.jumbotron-icon .icon-2,.jumbotron-icon .icon-3,.jumbotron-icon .icon-4,.jumbotron-icon .icon-5,.jumbotron-icon .icon-6{margin-right:0;} .jumbotron-icon .icon-6{font-size:16em;} .jumbotron-icon h1 small{display:block;margin-top:15px;margin-left:0;line-height:20px;} .stripe-ad .lead{margin:0 0 30px;} #carbonads-container{margin-right:-20px;margin-left:-20px;}#carbonads-container .carbonad{width:100%;height:120px;border-right:none;border-left:none;} #azcarbon{width:300px;margin:0 auto;} .wrapper{margin:0 auto -311px;} .push{height:311px;} .footer{margin-top:60px;height:170px;padding:40px 0 40px;} .footer{padding-left:20px;padding-right:20px;}}@media (max-width:767px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-top{margin-bottom:20px;} .navbar-fixed-bottom{margin-top:20px;} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .nav-collapse{clear:both;} .nav-collapse .nav{float:none;margin:0 0 10px;} .nav-collapse .nav>li{float:none;} .nav-collapse .nav>li>a{margin-bottom:2px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2;} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999999;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .open>.dropdown-menu{display:block;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-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);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;}}@media (min-width:768px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (max-width:767px){}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome.zip b/library/font_awesome/src/3.2.1/assets/font-awesome.zip
deleted file mode 100644
index 9b9abdc76..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome.zip
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.css b/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.css
deleted file mode 100644
index 17f07766c..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.css
+++ /dev/null
@@ -1,1203 +0,0 @@
-/*!
- * Font Awesome 3.2.1
- * the iconic font designed for Bootstrap
- * ------------------------------------------------------------------------------
- * The full suite of pictographic icons, examples, and documentation can be
- * found at http://fontawesome.io. Stay up to date on Twitter at
- * http://twitter.com/fontawesome.
- *
- * License
- * ------------------------------------------------------------------------------
- * - The Font Awesome font is licensed under SIL OFL 1.1 -
- * http://scripts.sil.org/OFL
- * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- * http://opensource.org/licenses/mit-license.html
- * - Font Awesome documentation licensed under CC BY 3.0 -
- * http://creativecommons.org/licenses/by/3.0/
- * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- * "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- * Author - Dave Gandy
- * ------------------------------------------------------------------------------
- * Email: dave@fontawesome.io
- * Twitter: http://twitter.com/davegandy
- * Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-.icon-large {
- font-size: 1.3333333333333333em;
- margin-top: -4px;
- padding-top: 3px;
- margin-bottom: -4px;
- padding-bottom: 3px;
- vertical-align: middle;
-}
-.nav [class^="icon-"],
-.nav [class*=" icon-"] {
- vertical-align: inherit;
- margin-top: -4px;
- padding-top: 3px;
- margin-bottom: -4px;
- padding-bottom: 3px;
-}
-.nav [class^="icon-"].icon-large,
-.nav [class*=" icon-"].icon-large {
- vertical-align: -25%;
-}
-.nav-pills [class^="icon-"].icon-large,
-.nav-tabs [class^="icon-"].icon-large,
-.nav-pills [class*=" icon-"].icon-large,
-.nav-tabs [class*=" icon-"].icon-large {
- line-height: .75em;
- margin-top: -7px;
- padding-top: 5px;
- margin-bottom: -5px;
- padding-bottom: 4px;
-}
-.btn [class^="icon-"].pull-left,
-.btn [class*=" icon-"].pull-left,
-.btn [class^="icon-"].pull-right,
-.btn [class*=" icon-"].pull-right {
- vertical-align: inherit;
-}
-.btn [class^="icon-"].icon-large,
-.btn [class*=" icon-"].icon-large {
- margin-top: -0.5em;
-}
-a [class^="icon-"],
-a [class*=" icon-"] {
- cursor: pointer;
-}
-.icon-glass {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf000;');
-}
-.icon-music {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf001;');
-}
-.icon-search {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf002;');
-}
-.icon-envelope-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf003;');
-}
-.icon-heart {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf004;');
-}
-.icon-star {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf005;');
-}
-.icon-star-empty {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf006;');
-}
-.icon-user {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf007;');
-}
-.icon-film {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;');
-}
-.icon-th-large {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;');
-}
-.icon-th {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;');
-}
-.icon-th-list {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;');
-}
-.icon-ok {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00c;');
-}
-.icon-remove {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00d;');
-}
-.icon-zoom-in {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00e;');
-}
-.icon-zoom-out {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf010;');
-}
-.icon-off {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');
-}
-.icon-power-off {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');
-}
-.icon-signal {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf012;');
-}
-.icon-cog {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf013;');
-}
-.icon-gear {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf013;');
-}
-.icon-trash {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf014;');
-}
-.icon-home {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf015;');
-}
-.icon-file-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf016;');
-}
-.icon-time {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf017;');
-}
-.icon-road {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf018;');
-}
-.icon-download-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf019;');
-}
-.icon-download {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01a;');
-}
-.icon-upload {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01b;');
-}
-.icon-inbox {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01c;');
-}
-.icon-play-circle {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01d;');
-}
-.icon-repeat {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');
-}
-.icon-rotate-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');
-}
-.icon-refresh {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf021;');
-}
-.icon-list-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf022;');
-}
-.icon-lock {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf023;');
-}
-.icon-flag {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf024;');
-}
-.icon-headphones {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf025;');
-}
-.icon-volume-off {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf026;');
-}
-.icon-volume-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf027;');
-}
-.icon-volume-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf028;');
-}
-.icon-qrcode {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf029;');
-}
-.icon-barcode {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02a;');
-}
-.icon-tag {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02b;');
-}
-.icon-tags {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02c;');
-}
-.icon-book {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02d;');
-}
-.icon-bookmark {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02e;');
-}
-.icon-print {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02f;');
-}
-.icon-camera {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf030;');
-}
-.icon-font {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf031;');
-}
-.icon-bold {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf032;');
-}
-.icon-italic {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf033;');
-}
-.icon-text-height {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf034;');
-}
-.icon-text-width {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf035;');
-}
-.icon-align-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf036;');
-}
-.icon-align-center {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf037;');
-}
-.icon-align-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf038;');
-}
-.icon-align-justify {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf039;');
-}
-.icon-list {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03a;');
-}
-.icon-indent-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03b;');
-}
-.icon-indent-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03c;');
-}
-.icon-facetime-video {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03d;');
-}
-.icon-picture {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03e;');
-}
-.icon-pencil {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf040;');
-}
-.icon-map-marker {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf041;');
-}
-.icon-adjust {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf042;');
-}
-.icon-tint {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf043;');
-}
-.icon-edit {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf044;');
-}
-.icon-share {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf045;');
-}
-.icon-check {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf046;');
-}
-.icon-move {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf047;');
-}
-.icon-step-backward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf048;');
-}
-.icon-fast-backward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf049;');
-}
-.icon-backward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04a;');
-}
-.icon-play {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04b;');
-}
-.icon-pause {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04c;');
-}
-.icon-stop {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04d;');
-}
-.icon-forward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04e;');
-}
-.icon-fast-forward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf050;');
-}
-.icon-step-forward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf051;');
-}
-.icon-eject {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf052;');
-}
-.icon-chevron-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf053;');
-}
-.icon-chevron-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf054;');
-}
-.icon-plus-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf055;');
-}
-.icon-minus-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf056;');
-}
-.icon-remove-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf057;');
-}
-.icon-ok-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf058;');
-}
-.icon-question-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf059;');
-}
-.icon-info-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05a;');
-}
-.icon-screenshot {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05b;');
-}
-.icon-remove-circle {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05c;');
-}
-.icon-ok-circle {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05d;');
-}
-.icon-ban-circle {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05e;');
-}
-.icon-arrow-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf060;');
-}
-.icon-arrow-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf061;');
-}
-.icon-arrow-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf062;');
-}
-.icon-arrow-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf063;');
-}
-.icon-share-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');
-}
-.icon-mail-forward {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');
-}
-.icon-resize-full {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf065;');
-}
-.icon-resize-small {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf066;');
-}
-.icon-plus {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf067;');
-}
-.icon-minus {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf068;');
-}
-.icon-asterisk {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf069;');
-}
-.icon-exclamation-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06a;');
-}
-.icon-gift {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06b;');
-}
-.icon-leaf {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06c;');
-}
-.icon-fire {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06d;');
-}
-.icon-eye-open {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06e;');
-}
-.icon-eye-close {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf070;');
-}
-.icon-warning-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf071;');
-}
-.icon-plane {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf072;');
-}
-.icon-calendar {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf073;');
-}
-.icon-random {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf074;');
-}
-.icon-comment {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf075;');
-}
-.icon-magnet {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf076;');
-}
-.icon-chevron-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf077;');
-}
-.icon-chevron-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf078;');
-}
-.icon-retweet {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf079;');
-}
-.icon-shopping-cart {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07a;');
-}
-.icon-folder-close {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07b;');
-}
-.icon-folder-open {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07c;');
-}
-.icon-resize-vertical {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07d;');
-}
-.icon-resize-horizontal {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07e;');
-}
-.icon-bar-chart {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf080;');
-}
-.icon-twitter-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf081;');
-}
-.icon-facebook-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf082;');
-}
-.icon-camera-retro {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf083;');
-}
-.icon-key {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf084;');
-}
-.icon-cogs {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf085;');
-}
-.icon-gears {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf085;');
-}
-.icon-comments {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf086;');
-}
-.icon-thumbs-up-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf087;');
-}
-.icon-thumbs-down-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf088;');
-}
-.icon-star-half {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf089;');
-}
-.icon-heart-empty {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08a;');
-}
-.icon-signout {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08b;');
-}
-.icon-linkedin-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08c;');
-}
-.icon-pushpin {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08d;');
-}
-.icon-external-link {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;');
-}
-.icon-signin {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf090;');
-}
-.icon-trophy {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf091;');
-}
-.icon-github-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf092;');
-}
-.icon-upload-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf093;');
-}
-.icon-lemon {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf094;');
-}
-.icon-phone {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf095;');
-}
-.icon-check-empty {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');
-}
-.icon-unchecked {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');
-}
-.icon-bookmark-empty {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf097;');
-}
-.icon-phone-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf098;');
-}
-.icon-twitter {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf099;');
-}
-.icon-facebook {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09a;');
-}
-.icon-github {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09b;');
-}
-.icon-unlock {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09c;');
-}
-.icon-credit-card {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09d;');
-}
-.icon-rss {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09e;');
-}
-.icon-hdd {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a0;');
-}
-.icon-bullhorn {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a1;');
-}
-.icon-bell {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a2;');
-}
-.icon-certificate {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a3;');
-}
-.icon-hand-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a4;');
-}
-.icon-hand-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a5;');
-}
-.icon-hand-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a6;');
-}
-.icon-hand-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a7;');
-}
-.icon-circle-arrow-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a8;');
-}
-.icon-circle-arrow-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a9;');
-}
-.icon-circle-arrow-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0aa;');
-}
-.icon-circle-arrow-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ab;');
-}
-.icon-globe {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ac;');
-}
-.icon-wrench {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ad;');
-}
-.icon-tasks {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ae;');
-}
-.icon-filter {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b0;');
-}
-.icon-briefcase {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b1;');
-}
-.icon-fullscreen {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;');
-}
-.icon-group {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c0;');
-}
-.icon-link {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c1;');
-}
-.icon-cloud {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c2;');
-}
-.icon-beaker {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c3;');
-}
-.icon-cut {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c4;');
-}
-.icon-copy {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c5;');
-}
-.icon-paper-clip {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');
-}
-.icon-paperclip {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');
-}
-.icon-save {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c7;');
-}
-.icon-sign-blank {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c8;');
-}
-.icon-reorder {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;');
-}
-.icon-list-ul {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ca;');
-}
-.icon-list-ol {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cb;');
-}
-.icon-strikethrough {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cc;');
-}
-.icon-underline {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cd;');
-}
-.icon-table {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ce;');
-}
-.icon-magic {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d0;');
-}
-.icon-truck {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d1;');
-}
-.icon-pinterest {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d2;');
-}
-.icon-pinterest-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d3;');
-}
-.icon-google-plus-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d4;');
-}
-.icon-google-plus {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d5;');
-}
-.icon-money {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d6;');
-}
-.icon-caret-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d7;');
-}
-.icon-caret-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d8;');
-}
-.icon-caret-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d9;');
-}
-.icon-caret-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0da;');
-}
-.icon-columns {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0db;');
-}
-.icon-sort {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dc;');
-}
-.icon-sort-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dd;');
-}
-.icon-sort-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0de;');
-}
-.icon-envelope {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;');
-}
-.icon-linkedin {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e1;');
-}
-.icon-undo {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');
-}
-.icon-rotate-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');
-}
-.icon-legal {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e3;');
-}
-.icon-dashboard {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e4;');
-}
-.icon-comment-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;');
-}
-.icon-comments-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e6;');
-}
-.icon-bolt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e7;');
-}
-.icon-sitemap {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e8;');
-}
-.icon-umbrella {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e9;');
-}
-.icon-paste {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ea;');
-}
-.icon-lightbulb {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0eb;');
-}
-.icon-exchange {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ec;');
-}
-.icon-cloud-download {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ed;');
-}
-.icon-cloud-upload {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ee;');
-}
-.icon-user-md {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f0;');
-}
-.icon-stethoscope {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f1;');
-}
-.icon-suitcase {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f2;');
-}
-.icon-bell-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;');
-}
-.icon-coffee {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f4;');
-}
-.icon-food {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f5;');
-}
-.icon-file-text-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f6;');
-}
-.icon-building {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f7;');
-}
-.icon-hospital {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f8;');
-}
-.icon-ambulance {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f9;');
-}
-.icon-medkit {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fa;');
-}
-.icon-fighter-jet {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fb;');
-}
-.icon-beer {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fc;');
-}
-.icon-h-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fd;');
-}
-.icon-plus-sign-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;');
-}
-.icon-double-angle-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf100;');
-}
-.icon-double-angle-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf101;');
-}
-.icon-double-angle-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf102;');
-}
-.icon-double-angle-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf103;');
-}
-.icon-angle-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf104;');
-}
-.icon-angle-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf105;');
-}
-.icon-angle-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf106;');
-}
-.icon-angle-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf107;');
-}
-.icon-desktop {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf108;');
-}
-.icon-laptop {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf109;');
-}
-.icon-tablet {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10a;');
-}
-.icon-mobile-phone {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10b;');
-}
-.icon-circle-blank {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10c;');
-}
-.icon-quote-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;');
-}
-.icon-quote-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10e;');
-}
-.icon-spinner {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf110;');
-}
-.icon-circle {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf111;');
-}
-.icon-reply {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');
-}
-.icon-mail-reply {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');
-}
-.icon-github-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf113;');
-}
-.icon-folder-close-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf114;');
-}
-.icon-folder-open-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf115;');
-}
-.icon-expand-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf116;');
-}
-.icon-collapse-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf117;');
-}
-.icon-smile {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;');
-}
-.icon-frown {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf119;');
-}
-.icon-meh {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11a;');
-}
-.icon-gamepad {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11b;');
-}
-.icon-keyboard {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11c;');
-}
-.icon-flag-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11d;');
-}
-.icon-flag-checkered {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11e;');
-}
-.icon-terminal {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf120;');
-}
-.icon-code {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;');
-}
-.icon-reply-all {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');
-}
-.icon-mail-reply-all {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');
-}
-.icon-star-half-empty {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');
-}
-.icon-star-half-full {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');
-}
-.icon-location-arrow {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf124;');
-}
-.icon-crop {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf125;');
-}
-.icon-code-fork {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf126;');
-}
-.icon-unlink {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf127;');
-}
-.icon-question {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf128;');
-}
-.icon-info {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf129;');
-}
-.icon-exclamation {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12a;');
-}
-.icon-superscript {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12b;');
-}
-.icon-subscript {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12c;');
-}
-.icon-eraser {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12d;');
-}
-.icon-puzzle-piece {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12e;');
-}
-.icon-microphone {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf130;');
-}
-.icon-microphone-off {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf131;');
-}
-.icon-shield {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf132;');
-}
-.icon-calendar-empty {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf133;');
-}
-.icon-fire-extinguisher {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf134;');
-}
-.icon-rocket {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf135;');
-}
-.icon-maxcdn {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf136;');
-}
-.icon-chevron-sign-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf137;');
-}
-.icon-chevron-sign-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf138;');
-}
-.icon-chevron-sign-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf139;');
-}
-.icon-chevron-sign-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13a;');
-}
-.icon-html5 {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13b;');
-}
-.icon-css3 {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13c;');
-}
-.icon-anchor {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13d;');
-}
-.icon-unlock-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;');
-}
-.icon-bullseye {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf140;');
-}
-.icon-ellipsis-horizontal {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;');
-}
-.icon-ellipsis-vertical {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;');
-}
-.icon-rss-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf143;');
-}
-.icon-play-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;');
-}
-.icon-ticket {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf145;');
-}
-.icon-minus-sign-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf146;');
-}
-.icon-check-minus {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf147;');
-}
-.icon-level-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf148;');
-}
-.icon-level-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf149;');
-}
-.icon-check-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14a;');
-}
-.icon-edit-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14b;');
-}
-.icon-external-link-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14c;');
-}
-.icon-share-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14d;');
-}
-.icon-compass {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14e;');
-}
-.icon-collapse {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf150;');
-}
-.icon-collapse-top {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf151;');
-}
-.icon-expand {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf152;');
-}
-.icon-eur {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');
-}
-.icon-euro {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');
-}
-.icon-gbp {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf154;');
-}
-.icon-usd {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');
-}
-.icon-dollar {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');
-}
-.icon-inr {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');
-}
-.icon-rupee {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');
-}
-.icon-jpy {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');
-}
-.icon-yen {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');
-}
-.icon-cny {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');
-}
-.icon-renminbi {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');
-}
-.icon-krw {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');
-}
-.icon-won {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');
-}
-.icon-btc {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');
-}
-.icon-bitcoin {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');
-}
-.icon-file {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15b;');
-}
-.icon-file-text {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15c;');
-}
-.icon-sort-by-alphabet {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15d;');
-}
-.icon-sort-by-alphabet-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15e;');
-}
-.icon-sort-by-attributes {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf160;');
-}
-.icon-sort-by-attributes-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf161;');
-}
-.icon-sort-by-order {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf162;');
-}
-.icon-sort-by-order-alt {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf163;');
-}
-.icon-thumbs-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;');
-}
-.icon-thumbs-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf165;');
-}
-.icon-youtube-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf166;');
-}
-.icon-youtube {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf167;');
-}
-.icon-xing {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf168;');
-}
-.icon-xing-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf169;');
-}
-.icon-youtube-play {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16a;');
-}
-.icon-dropbox {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16b;');
-}
-.icon-stackexchange {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16c;');
-}
-.icon-instagram {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16d;');
-}
-.icon-flickr {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16e;');
-}
-.icon-adn {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf170;');
-}
-.icon-bitbucket {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf171;');
-}
-.icon-bitbucket-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf172;');
-}
-.icon-tumblr {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf173;');
-}
-.icon-tumblr-sign {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf174;');
-}
-.icon-long-arrow-down {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf175;');
-}
-.icon-long-arrow-up {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf176;');
-}
-.icon-long-arrow-left {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf177;');
-}
-.icon-long-arrow-right {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf178;');
-}
-.icon-apple {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf179;');
-}
-.icon-windows {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17a;');
-}
-.icon-android {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17b;');
-}
-.icon-linux {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17c;');
-}
-.icon-dribbble {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17d;');
-}
-.icon-skype {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17e;');
-}
-.icon-foursquare {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf180;');
-}
-.icon-trello {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf181;');
-}
-.icon-female {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf182;');
-}
-.icon-male {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf183;');
-}
-.icon-gittip {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf184;');
-}
-.icon-sun {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf185;');
-}
-.icon-moon {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf186;');
-}
-.icon-archive {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf187;');
-}
-.icon-bug {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf188;');
-}
-.icon-vk {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf189;');
-}
-.icon-weibo {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18a;');
-}
-.icon-renren {
- *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18b;');
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.min.css b/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.min.css
deleted file mode 100644
index d3dae63bd..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.min.css
+++ /dev/null
@@ -1,384 +0,0 @@
-.icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;}
-.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;}
-.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;}
-.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;}
-.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;}
-a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;}
-.icon-glass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf000;');}
-.icon-music{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf001;');}
-.icon-search{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf002;');}
-.icon-envelope-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf003;');}
-.icon-heart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf004;');}
-.icon-star{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf005;');}
-.icon-star-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf006;');}
-.icon-user{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf007;');}
-.icon-film{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;');}
-.icon-th-large{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;');}
-.icon-th{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;');}
-.icon-th-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;');}
-.icon-ok{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00c;');}
-.icon-remove{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00d;');}
-.icon-zoom-in{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00e;');}
-.icon-zoom-out{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf010;');}
-.icon-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');}
-.icon-power-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');}
-.icon-signal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf012;');}
-.icon-cog{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf013;');}
-.icon-gear{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf013;');}
-.icon-trash{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf014;');}
-.icon-home{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf015;');}
-.icon-file-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf016;');}
-.icon-time{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf017;');}
-.icon-road{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf018;');}
-.icon-download-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf019;');}
-.icon-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01a;');}
-.icon-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01b;');}
-.icon-inbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01c;');}
-.icon-play-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01d;');}
-.icon-repeat{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');}
-.icon-rotate-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');}
-.icon-refresh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf021;');}
-.icon-list-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf022;');}
-.icon-lock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf023;');}
-.icon-flag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf024;');}
-.icon-headphones{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf025;');}
-.icon-volume-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf026;');}
-.icon-volume-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf027;');}
-.icon-volume-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf028;');}
-.icon-qrcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf029;');}
-.icon-barcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02a;');}
-.icon-tag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02b;');}
-.icon-tags{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02c;');}
-.icon-book{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02d;');}
-.icon-bookmark{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02e;');}
-.icon-print{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02f;');}
-.icon-camera{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf030;');}
-.icon-font{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf031;');}
-.icon-bold{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf032;');}
-.icon-italic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf033;');}
-.icon-text-height{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf034;');}
-.icon-text-width{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf035;');}
-.icon-align-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf036;');}
-.icon-align-center{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf037;');}
-.icon-align-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf038;');}
-.icon-align-justify{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf039;');}
-.icon-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03a;');}
-.icon-indent-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03b;');}
-.icon-indent-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03c;');}
-.icon-facetime-video{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03d;');}
-.icon-picture{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03e;');}
-.icon-pencil{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf040;');}
-.icon-map-marker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf041;');}
-.icon-adjust{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf042;');}
-.icon-tint{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf043;');}
-.icon-edit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf044;');}
-.icon-share{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf045;');}
-.icon-check{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf046;');}
-.icon-move{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf047;');}
-.icon-step-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf048;');}
-.icon-fast-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf049;');}
-.icon-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04a;');}
-.icon-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04b;');}
-.icon-pause{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04c;');}
-.icon-stop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04d;');}
-.icon-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04e;');}
-.icon-fast-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf050;');}
-.icon-step-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf051;');}
-.icon-eject{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf052;');}
-.icon-chevron-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf053;');}
-.icon-chevron-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf054;');}
-.icon-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf055;');}
-.icon-minus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf056;');}
-.icon-remove-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf057;');}
-.icon-ok-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf058;');}
-.icon-question-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf059;');}
-.icon-info-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05a;');}
-.icon-screenshot{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05b;');}
-.icon-remove-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05c;');}
-.icon-ok-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05d;');}
-.icon-ban-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05e;');}
-.icon-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf060;');}
-.icon-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf061;');}
-.icon-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf062;');}
-.icon-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf063;');}
-.icon-share-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');}
-.icon-mail-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');}
-.icon-resize-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf065;');}
-.icon-resize-small{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf066;');}
-.icon-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf067;');}
-.icon-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf068;');}
-.icon-asterisk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf069;');}
-.icon-exclamation-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06a;');}
-.icon-gift{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06b;');}
-.icon-leaf{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06c;');}
-.icon-fire{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06d;');}
-.icon-eye-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06e;');}
-.icon-eye-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf070;');}
-.icon-warning-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf071;');}
-.icon-plane{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf072;');}
-.icon-calendar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf073;');}
-.icon-random{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf074;');}
-.icon-comment{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf075;');}
-.icon-magnet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf076;');}
-.icon-chevron-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf077;');}
-.icon-chevron-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf078;');}
-.icon-retweet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf079;');}
-.icon-shopping-cart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07a;');}
-.icon-folder-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07b;');}
-.icon-folder-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07c;');}
-.icon-resize-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07d;');}
-.icon-resize-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07e;');}
-.icon-bar-chart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf080;');}
-.icon-twitter-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf081;');}
-.icon-facebook-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf082;');}
-.icon-camera-retro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf083;');}
-.icon-key{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf084;');}
-.icon-cogs{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf085;');}
-.icon-gears{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf085;');}
-.icon-comments{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf086;');}
-.icon-thumbs-up-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf087;');}
-.icon-thumbs-down-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf088;');}
-.icon-star-half{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf089;');}
-.icon-heart-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08a;');}
-.icon-signout{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08b;');}
-.icon-linkedin-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08c;');}
-.icon-pushpin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08d;');}
-.icon-external-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;');}
-.icon-signin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf090;');}
-.icon-trophy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf091;');}
-.icon-github-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf092;');}
-.icon-upload-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf093;');}
-.icon-lemon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf094;');}
-.icon-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf095;');}
-.icon-check-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');}
-.icon-unchecked{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');}
-.icon-bookmark-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf097;');}
-.icon-phone-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf098;');}
-.icon-twitter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf099;');}
-.icon-facebook{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09a;');}
-.icon-github{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09b;');}
-.icon-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09c;');}
-.icon-credit-card{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09d;');}
-.icon-rss{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09e;');}
-.icon-hdd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a0;');}
-.icon-bullhorn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a1;');}
-.icon-bell{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a2;');}
-.icon-certificate{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a3;');}
-.icon-hand-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a4;');}
-.icon-hand-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a5;');}
-.icon-hand-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a6;');}
-.icon-hand-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a7;');}
-.icon-circle-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a8;');}
-.icon-circle-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a9;');}
-.icon-circle-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0aa;');}
-.icon-circle-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ab;');}
-.icon-globe{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ac;');}
-.icon-wrench{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ad;');}
-.icon-tasks{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ae;');}
-.icon-filter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b0;');}
-.icon-briefcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b1;');}
-.icon-fullscreen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;');}
-.icon-group{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c0;');}
-.icon-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c1;');}
-.icon-cloud{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c2;');}
-.icon-beaker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c3;');}
-.icon-cut{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c4;');}
-.icon-copy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c5;');}
-.icon-paper-clip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');}
-.icon-paperclip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');}
-.icon-save{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c7;');}
-.icon-sign-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c8;');}
-.icon-reorder{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;');}
-.icon-list-ul{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ca;');}
-.icon-list-ol{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cb;');}
-.icon-strikethrough{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cc;');}
-.icon-underline{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cd;');}
-.icon-table{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ce;');}
-.icon-magic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d0;');}
-.icon-truck{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d1;');}
-.icon-pinterest{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d2;');}
-.icon-pinterest-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d3;');}
-.icon-google-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d4;');}
-.icon-google-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d5;');}
-.icon-money{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d6;');}
-.icon-caret-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d7;');}
-.icon-caret-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d8;');}
-.icon-caret-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d9;');}
-.icon-caret-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0da;');}
-.icon-columns{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0db;');}
-.icon-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dc;');}
-.icon-sort-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dd;');}
-.icon-sort-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0de;');}
-.icon-envelope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;');}
-.icon-linkedin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e1;');}
-.icon-undo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');}
-.icon-rotate-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');}
-.icon-legal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e3;');}
-.icon-dashboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e4;');}
-.icon-comment-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;');}
-.icon-comments-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e6;');}
-.icon-bolt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e7;');}
-.icon-sitemap{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e8;');}
-.icon-umbrella{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e9;');}
-.icon-paste{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ea;');}
-.icon-lightbulb{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0eb;');}
-.icon-exchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ec;');}
-.icon-cloud-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ed;');}
-.icon-cloud-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ee;');}
-.icon-user-md{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f0;');}
-.icon-stethoscope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f1;');}
-.icon-suitcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f2;');}
-.icon-bell-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;');}
-.icon-coffee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f4;');}
-.icon-food{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f5;');}
-.icon-file-text-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f6;');}
-.icon-building{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f7;');}
-.icon-hospital{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f8;');}
-.icon-ambulance{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f9;');}
-.icon-medkit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fa;');}
-.icon-fighter-jet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fb;');}
-.icon-beer{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fc;');}
-.icon-h-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fd;');}
-.icon-plus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;');}
-.icon-double-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf100;');}
-.icon-double-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf101;');}
-.icon-double-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf102;');}
-.icon-double-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf103;');}
-.icon-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf104;');}
-.icon-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf105;');}
-.icon-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf106;');}
-.icon-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf107;');}
-.icon-desktop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf108;');}
-.icon-laptop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf109;');}
-.icon-tablet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10a;');}
-.icon-mobile-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10b;');}
-.icon-circle-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10c;');}
-.icon-quote-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;');}
-.icon-quote-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10e;');}
-.icon-spinner{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf110;');}
-.icon-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf111;');}
-.icon-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');}
-.icon-mail-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');}
-.icon-github-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf113;');}
-.icon-folder-close-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf114;');}
-.icon-folder-open-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf115;');}
-.icon-expand-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf116;');}
-.icon-collapse-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf117;');}
-.icon-smile{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;');}
-.icon-frown{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf119;');}
-.icon-meh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11a;');}
-.icon-gamepad{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11b;');}
-.icon-keyboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11c;');}
-.icon-flag-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11d;');}
-.icon-flag-checkered{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11e;');}
-.icon-terminal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf120;');}
-.icon-code{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;');}
-.icon-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');}
-.icon-mail-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');}
-.icon-star-half-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');}
-.icon-star-half-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');}
-.icon-location-arrow{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf124;');}
-.icon-crop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf125;');}
-.icon-code-fork{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf126;');}
-.icon-unlink{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf127;');}
-.icon-question{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf128;');}
-.icon-info{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf129;');}
-.icon-exclamation{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12a;');}
-.icon-superscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12b;');}
-.icon-subscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12c;');}
-.icon-eraser{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12d;');}
-.icon-puzzle-piece{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12e;');}
-.icon-microphone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf130;');}
-.icon-microphone-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf131;');}
-.icon-shield{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf132;');}
-.icon-calendar-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf133;');}
-.icon-fire-extinguisher{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf134;');}
-.icon-rocket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf135;');}
-.icon-maxcdn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf136;');}
-.icon-chevron-sign-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf137;');}
-.icon-chevron-sign-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf138;');}
-.icon-chevron-sign-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf139;');}
-.icon-chevron-sign-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13a;');}
-.icon-html5{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13b;');}
-.icon-css3{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13c;');}
-.icon-anchor{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13d;');}
-.icon-unlock-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;');}
-.icon-bullseye{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf140;');}
-.icon-ellipsis-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;');}
-.icon-ellipsis-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;');}
-.icon-rss-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf143;');}
-.icon-play-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;');}
-.icon-ticket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf145;');}
-.icon-minus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf146;');}
-.icon-check-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf147;');}
-.icon-level-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf148;');}
-.icon-level-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf149;');}
-.icon-check-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14a;');}
-.icon-edit-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14b;');}
-.icon-external-link-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14c;');}
-.icon-share-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14d;');}
-.icon-compass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14e;');}
-.icon-collapse{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf150;');}
-.icon-collapse-top{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf151;');}
-.icon-expand{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf152;');}
-.icon-eur{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');}
-.icon-euro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');}
-.icon-gbp{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf154;');}
-.icon-usd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');}
-.icon-dollar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');}
-.icon-inr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');}
-.icon-rupee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');}
-.icon-jpy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');}
-.icon-yen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');}
-.icon-cny{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');}
-.icon-renminbi{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');}
-.icon-krw{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');}
-.icon-won{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');}
-.icon-btc{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');}
-.icon-bitcoin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');}
-.icon-file{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15b;');}
-.icon-file-text{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15c;');}
-.icon-sort-by-alphabet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15d;');}
-.icon-sort-by-alphabet-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15e;');}
-.icon-sort-by-attributes{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf160;');}
-.icon-sort-by-attributes-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf161;');}
-.icon-sort-by-order{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf162;');}
-.icon-sort-by-order-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf163;');}
-.icon-thumbs-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;');}
-.icon-thumbs-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf165;');}
-.icon-youtube-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf166;');}
-.icon-youtube{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf167;');}
-.icon-xing{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf168;');}
-.icon-xing-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf169;');}
-.icon-youtube-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16a;');}
-.icon-dropbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16b;');}
-.icon-stackexchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16c;');}
-.icon-instagram{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16d;');}
-.icon-flickr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16e;');}
-.icon-adn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf170;');}
-.icon-bitbucket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf171;');}
-.icon-bitbucket-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf172;');}
-.icon-tumblr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf173;');}
-.icon-tumblr-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf174;');}
-.icon-long-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf175;');}
-.icon-long-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf176;');}
-.icon-long-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf177;');}
-.icon-long-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf178;');}
-.icon-apple{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf179;');}
-.icon-windows{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17a;');}
-.icon-android{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17b;');}
-.icon-linux{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17c;');}
-.icon-dribbble{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17d;');}
-.icon-skype{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17e;');}
-.icon-foursquare{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf180;');}
-.icon-trello{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf181;');}
-.icon-female{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf182;');}
-.icon-male{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf183;');}
-.icon-gittip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf184;');}
-.icon-sun{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf185;');}
-.icon-moon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf186;');}
-.icon-archive{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf187;');}
-.icon-bug{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf188;');}
-.icon-vk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf189;');}
-.icon-weibo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18a;');}
-.icon-renren{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18b;');}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.css b/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.css
deleted file mode 100644
index 7ede1828a..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.css
+++ /dev/null
@@ -1,1479 +0,0 @@
-/*!
- * Font Awesome 3.2.1
- * the iconic font designed for Bootstrap
- * ------------------------------------------------------------------------------
- * The full suite of pictographic icons, examples, and documentation can be
- * found at http://fontawesome.io. Stay up to date on Twitter at
- * http://twitter.com/fontawesome.
- *
- * License
- * ------------------------------------------------------------------------------
- * - The Font Awesome font is licensed under SIL OFL 1.1 -
- * http://scripts.sil.org/OFL
- * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- * http://opensource.org/licenses/mit-license.html
- * - Font Awesome documentation licensed under CC BY 3.0 -
- * http://creativecommons.org/licenses/by/3.0/
- * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- * "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- * Author - Dave Gandy
- * ------------------------------------------------------------------------------
- * Email: dave@fontawesome.io
- * Twitter: http://twitter.com/davegandy
- * Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-/* FONT PATH
- * -------------------------- */
-@font-face {
- font-family: 'FontAwesome';
- src: url('../font/fontawesome-webfont.eot?v=3.2.1');
- src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-/* FONT AWESOME CORE
- * -------------------------- */
-[class^="icon-"],
-[class*=" icon-"] {
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- text-decoration: inherit;
- -webkit-font-smoothing: antialiased;
- *margin-right: .3em;
-}
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
- text-decoration: inherit;
- display: inline-block;
- speak: none;
-}
-/* makes the font 33% larger relative to the icon container */
-.icon-large:before {
- vertical-align: -10%;
- font-size: 1.3333333333333333em;
-}
-/* makes sure icons active on rollover in links */
-a [class^="icon-"],
-a [class*=" icon-"] {
- display: inline;
-}
-/* increased font size for icon-large */
-[class^="icon-"].icon-fixed-width,
-[class*=" icon-"].icon-fixed-width {
- display: inline-block;
- width: 1.1428571428571428em;
- text-align: right;
- padding-right: 0.2857142857142857em;
-}
-[class^="icon-"].icon-fixed-width.icon-large,
-[class*=" icon-"].icon-fixed-width.icon-large {
- width: 1.4285714285714286em;
-}
-.icons-ul {
- margin-left: 2.142857142857143em;
- list-style-type: none;
-}
-.icons-ul > li {
- position: relative;
-}
-.icons-ul .icon-li {
- position: absolute;
- left: -2.142857142857143em;
- width: 2.142857142857143em;
- text-align: center;
- line-height: inherit;
-}
-[class^="icon-"].hide,
-[class*=" icon-"].hide {
- display: none;
-}
-.icon-muted {
- color: #eeeeee;
-}
-.icon-light {
- color: #ffffff;
-}
-.icon-dark {
- color: #333333;
-}
-.icon-border {
- border: solid 1px #eeeeee;
- padding: .2em .25em .15em;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
-}
-.icon-2x {
- font-size: 2em;
-}
-.icon-2x.icon-border {
- border-width: 2px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
-}
-.icon-3x {
- font-size: 3em;
-}
-.icon-3x.icon-border {
- border-width: 3px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
-}
-.icon-4x {
- font-size: 4em;
-}
-.icon-4x.icon-border {
- border-width: 4px;
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
-}
-.icon-5x {
- font-size: 5em;
-}
-.icon-5x.icon-border {
- border-width: 5px;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- border-radius: 7px;
-}
-.pull-right {
- float: right;
-}
-.pull-left {
- float: left;
-}
-[class^="icon-"].pull-left,
-[class*=" icon-"].pull-left {
- margin-right: .3em;
-}
-[class^="icon-"].pull-right,
-[class*=" icon-"].pull-right {
- margin-left: .3em;
-}
-/* BOOTSTRAP SPECIFIC CLASSES
- * -------------------------- */
-/* Bootstrap 2.0 sprites.less reset */
-[class^="icon-"],
-[class*=" icon-"] {
- display: inline;
- width: auto;
- height: auto;
- line-height: normal;
- vertical-align: baseline;
- background-image: none;
- background-position: 0% 0%;
- background-repeat: repeat;
- margin-top: 0;
-}
-/* more sprites.less reset */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
- background-image: none;
-}
-/* keeps Bootstrap styles with and without icons the same */
-.btn [class^="icon-"].icon-large,
-.nav [class^="icon-"].icon-large,
-.btn [class*=" icon-"].icon-large,
-.nav [class*=" icon-"].icon-large {
- line-height: .9em;
-}
-.btn [class^="icon-"].icon-spin,
-.nav [class^="icon-"].icon-spin,
-.btn [class*=" icon-"].icon-spin,
-.nav [class*=" icon-"].icon-spin {
- display: inline-block;
-}
-.nav-tabs [class^="icon-"],
-.nav-pills [class^="icon-"],
-.nav-tabs [class*=" icon-"],
-.nav-pills [class*=" icon-"],
-.nav-tabs [class^="icon-"].icon-large,
-.nav-pills [class^="icon-"].icon-large,
-.nav-tabs [class*=" icon-"].icon-large,
-.nav-pills [class*=" icon-"].icon-large {
- line-height: .9em;
-}
-.btn [class^="icon-"].pull-left.icon-2x,
-.btn [class*=" icon-"].pull-left.icon-2x,
-.btn [class^="icon-"].pull-right.icon-2x,
-.btn [class*=" icon-"].pull-right.icon-2x {
- margin-top: .18em;
-}
-.btn [class^="icon-"].icon-spin.icon-large,
-.btn [class*=" icon-"].icon-spin.icon-large {
- line-height: .8em;
-}
-.btn.btn-small [class^="icon-"].pull-left.icon-2x,
-.btn.btn-small [class*=" icon-"].pull-left.icon-2x,
-.btn.btn-small [class^="icon-"].pull-right.icon-2x,
-.btn.btn-small [class*=" icon-"].pull-right.icon-2x {
- margin-top: .25em;
-}
-.btn.btn-large [class^="icon-"],
-.btn.btn-large [class*=" icon-"] {
- margin-top: 0;
-}
-.btn.btn-large [class^="icon-"].pull-left.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-left.icon-2x,
-.btn.btn-large [class^="icon-"].pull-right.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-right.icon-2x {
- margin-top: .05em;
-}
-.btn.btn-large [class^="icon-"].pull-left.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-left.icon-2x {
- margin-right: .2em;
-}
-.btn.btn-large [class^="icon-"].pull-right.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-right.icon-2x {
- margin-left: .2em;
-}
-/* Fixes alignment in nav lists */
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
- line-height: inherit;
-}
-/* EXTRAS
- * -------------------------- */
-/* Stacked and layered icon */
-.icon-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: -35%;
-}
-.icon-stack [class^="icon-"],
-.icon-stack [class*=" icon-"] {
- display: block;
- text-align: center;
- position: absolute;
- width: 100%;
- height: 100%;
- font-size: 1em;
- line-height: inherit;
- *line-height: 2em;
-}
-.icon-stack .icon-stack-base {
- font-size: 2em;
- *line-height: 1em;
-}
-/* Animated rotating icon */
-.icon-spin {
- display: inline-block;
- -moz-animation: spin 2s infinite linear;
- -o-animation: spin 2s infinite linear;
- -webkit-animation: spin 2s infinite linear;
- animation: spin 2s infinite linear;
-}
-/* Prevent stack and spinners from being taken inline when inside a link */
-a .icon-stack,
-a .icon-spin {
- display: inline-block;
- text-decoration: none;
-}
-@-moz-keyframes spin {
- 0% {
- -moz-transform: rotate(0deg);
- }
- 100% {
- -moz-transform: rotate(359deg);
- }
-}
-@-webkit-keyframes spin {
- 0% {
- -webkit-transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- }
-}
-@-o-keyframes spin {
- 0% {
- -o-transform: rotate(0deg);
- }
- 100% {
- -o-transform: rotate(359deg);
- }
-}
-@-ms-keyframes spin {
- 0% {
- -ms-transform: rotate(0deg);
- }
- 100% {
- -ms-transform: rotate(359deg);
- }
-}
-@keyframes spin {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(359deg);
- }
-}
-/* Icon rotations and mirroring */
-.icon-rotate-90:before {
- -webkit-transform: rotate(90deg);
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -o-transform: rotate(90deg);
- transform: rotate(90deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-}
-.icon-rotate-180:before {
- -webkit-transform: rotate(180deg);
- -moz-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- -o-transform: rotate(180deg);
- transform: rotate(180deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-}
-.icon-rotate-270:before {
- -webkit-transform: rotate(270deg);
- -moz-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- -o-transform: rotate(270deg);
- transform: rotate(270deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-}
-.icon-flip-horizontal:before {
- -webkit-transform: scale(-1, 1);
- -moz-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- -o-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-.icon-flip-vertical:before {
- -webkit-transform: scale(1, -1);
- -moz-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- -o-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-/* ensure rotation occurs inside anchor tags */
-a .icon-rotate-90:before,
-a .icon-rotate-180:before,
-a .icon-rotate-270:before,
-a .icon-flip-horizontal:before,
-a .icon-flip-vertical:before {
- display: inline-block;
-}
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-.icon-glass:before {
- content: "\f000";
-}
-.icon-music:before {
- content: "\f001";
-}
-.icon-search:before {
- content: "\f002";
-}
-.icon-envelope-alt:before {
- content: "\f003";
-}
-.icon-heart:before {
- content: "\f004";
-}
-.icon-star:before {
- content: "\f005";
-}
-.icon-star-empty:before {
- content: "\f006";
-}
-.icon-user:before {
- content: "\f007";
-}
-.icon-film:before {
- content: "\f008";
-}
-.icon-th-large:before {
- content: "\f009";
-}
-.icon-th:before {
- content: "\f00a";
-}
-.icon-th-list:before {
- content: "\f00b";
-}
-.icon-ok:before {
- content: "\f00c";
-}
-.icon-remove:before {
- content: "\f00d";
-}
-.icon-zoom-in:before {
- content: "\f00e";
-}
-.icon-zoom-out:before {
- content: "\f010";
-}
-.icon-power-off:before,
-.icon-off:before {
- content: "\f011";
-}
-.icon-signal:before {
- content: "\f012";
-}
-.icon-gear:before,
-.icon-cog:before {
- content: "\f013";
-}
-.icon-trash:before {
- content: "\f014";
-}
-.icon-home:before {
- content: "\f015";
-}
-.icon-file-alt:before {
- content: "\f016";
-}
-.icon-time:before {
- content: "\f017";
-}
-.icon-road:before {
- content: "\f018";
-}
-.icon-download-alt:before {
- content: "\f019";
-}
-.icon-download:before {
- content: "\f01a";
-}
-.icon-upload:before {
- content: "\f01b";
-}
-.icon-inbox:before {
- content: "\f01c";
-}
-.icon-play-circle:before {
- content: "\f01d";
-}
-.icon-rotate-right:before,
-.icon-repeat:before {
- content: "\f01e";
-}
-.icon-refresh:before {
- content: "\f021";
-}
-.icon-list-alt:before {
- content: "\f022";
-}
-.icon-lock:before {
- content: "\f023";
-}
-.icon-flag:before {
- content: "\f024";
-}
-.icon-headphones:before {
- content: "\f025";
-}
-.icon-volume-off:before {
- content: "\f026";
-}
-.icon-volume-down:before {
- content: "\f027";
-}
-.icon-volume-up:before {
- content: "\f028";
-}
-.icon-qrcode:before {
- content: "\f029";
-}
-.icon-barcode:before {
- content: "\f02a";
-}
-.icon-tag:before {
- content: "\f02b";
-}
-.icon-tags:before {
- content: "\f02c";
-}
-.icon-book:before {
- content: "\f02d";
-}
-.icon-bookmark:before {
- content: "\f02e";
-}
-.icon-print:before {
- content: "\f02f";
-}
-.icon-camera:before {
- content: "\f030";
-}
-.icon-font:before {
- content: "\f031";
-}
-.icon-bold:before {
- content: "\f032";
-}
-.icon-italic:before {
- content: "\f033";
-}
-.icon-text-height:before {
- content: "\f034";
-}
-.icon-text-width:before {
- content: "\f035";
-}
-.icon-align-left:before {
- content: "\f036";
-}
-.icon-align-center:before {
- content: "\f037";
-}
-.icon-align-right:before {
- content: "\f038";
-}
-.icon-align-justify:before {
- content: "\f039";
-}
-.icon-list:before {
- content: "\f03a";
-}
-.icon-indent-left:before {
- content: "\f03b";
-}
-.icon-indent-right:before {
- content: "\f03c";
-}
-.icon-facetime-video:before {
- content: "\f03d";
-}
-.icon-picture:before {
- content: "\f03e";
-}
-.icon-pencil:before {
- content: "\f040";
-}
-.icon-map-marker:before {
- content: "\f041";
-}
-.icon-adjust:before {
- content: "\f042";
-}
-.icon-tint:before {
- content: "\f043";
-}
-.icon-edit:before {
- content: "\f044";
-}
-.icon-share:before {
- content: "\f045";
-}
-.icon-check:before {
- content: "\f046";
-}
-.icon-move:before {
- content: "\f047";
-}
-.icon-step-backward:before {
- content: "\f048";
-}
-.icon-fast-backward:before {
- content: "\f049";
-}
-.icon-backward:before {
- content: "\f04a";
-}
-.icon-play:before {
- content: "\f04b";
-}
-.icon-pause:before {
- content: "\f04c";
-}
-.icon-stop:before {
- content: "\f04d";
-}
-.icon-forward:before {
- content: "\f04e";
-}
-.icon-fast-forward:before {
- content: "\f050";
-}
-.icon-step-forward:before {
- content: "\f051";
-}
-.icon-eject:before {
- content: "\f052";
-}
-.icon-chevron-left:before {
- content: "\f053";
-}
-.icon-chevron-right:before {
- content: "\f054";
-}
-.icon-plus-sign:before {
- content: "\f055";
-}
-.icon-minus-sign:before {
- content: "\f056";
-}
-.icon-remove-sign:before {
- content: "\f057";
-}
-.icon-ok-sign:before {
- content: "\f058";
-}
-.icon-question-sign:before {
- content: "\f059";
-}
-.icon-info-sign:before {
- content: "\f05a";
-}
-.icon-screenshot:before {
- content: "\f05b";
-}
-.icon-remove-circle:before {
- content: "\f05c";
-}
-.icon-ok-circle:before {
- content: "\f05d";
-}
-.icon-ban-circle:before {
- content: "\f05e";
-}
-.icon-arrow-left:before {
- content: "\f060";
-}
-.icon-arrow-right:before {
- content: "\f061";
-}
-.icon-arrow-up:before {
- content: "\f062";
-}
-.icon-arrow-down:before {
- content: "\f063";
-}
-.icon-mail-forward:before,
-.icon-share-alt:before {
- content: "\f064";
-}
-.icon-resize-full:before {
- content: "\f065";
-}
-.icon-resize-small:before {
- content: "\f066";
-}
-.icon-plus:before {
- content: "\f067";
-}
-.icon-minus:before {
- content: "\f068";
-}
-.icon-asterisk:before {
- content: "\f069";
-}
-.icon-exclamation-sign:before {
- content: "\f06a";
-}
-.icon-gift:before {
- content: "\f06b";
-}
-.icon-leaf:before {
- content: "\f06c";
-}
-.icon-fire:before {
- content: "\f06d";
-}
-.icon-eye-open:before {
- content: "\f06e";
-}
-.icon-eye-close:before {
- content: "\f070";
-}
-.icon-warning-sign:before {
- content: "\f071";
-}
-.icon-plane:before {
- content: "\f072";
-}
-.icon-calendar:before {
- content: "\f073";
-}
-.icon-random:before {
- content: "\f074";
-}
-.icon-comment:before {
- content: "\f075";
-}
-.icon-magnet:before {
- content: "\f076";
-}
-.icon-chevron-up:before {
- content: "\f077";
-}
-.icon-chevron-down:before {
- content: "\f078";
-}
-.icon-retweet:before {
- content: "\f079";
-}
-.icon-shopping-cart:before {
- content: "\f07a";
-}
-.icon-folder-close:before {
- content: "\f07b";
-}
-.icon-folder-open:before {
- content: "\f07c";
-}
-.icon-resize-vertical:before {
- content: "\f07d";
-}
-.icon-resize-horizontal:before {
- content: "\f07e";
-}
-.icon-bar-chart:before {
- content: "\f080";
-}
-.icon-twitter-sign:before {
- content: "\f081";
-}
-.icon-facebook-sign:before {
- content: "\f082";
-}
-.icon-camera-retro:before {
- content: "\f083";
-}
-.icon-key:before {
- content: "\f084";
-}
-.icon-gears:before,
-.icon-cogs:before {
- content: "\f085";
-}
-.icon-comments:before {
- content: "\f086";
-}
-.icon-thumbs-up-alt:before {
- content: "\f087";
-}
-.icon-thumbs-down-alt:before {
- content: "\f088";
-}
-.icon-star-half:before {
- content: "\f089";
-}
-.icon-heart-empty:before {
- content: "\f08a";
-}
-.icon-signout:before {
- content: "\f08b";
-}
-.icon-linkedin-sign:before {
- content: "\f08c";
-}
-.icon-pushpin:before {
- content: "\f08d";
-}
-.icon-external-link:before {
- content: "\f08e";
-}
-.icon-signin:before {
- content: "\f090";
-}
-.icon-trophy:before {
- content: "\f091";
-}
-.icon-github-sign:before {
- content: "\f092";
-}
-.icon-upload-alt:before {
- content: "\f093";
-}
-.icon-lemon:before {
- content: "\f094";
-}
-.icon-phone:before {
- content: "\f095";
-}
-.icon-unchecked:before,
-.icon-check-empty:before {
- content: "\f096";
-}
-.icon-bookmark-empty:before {
- content: "\f097";
-}
-.icon-phone-sign:before {
- content: "\f098";
-}
-.icon-twitter:before {
- content: "\f099";
-}
-.icon-facebook:before {
- content: "\f09a";
-}
-.icon-github:before {
- content: "\f09b";
-}
-.icon-unlock:before {
- content: "\f09c";
-}
-.icon-credit-card:before {
- content: "\f09d";
-}
-.icon-rss:before {
- content: "\f09e";
-}
-.icon-hdd:before {
- content: "\f0a0";
-}
-.icon-bullhorn:before {
- content: "\f0a1";
-}
-.icon-bell:before {
- content: "\f0a2";
-}
-.icon-certificate:before {
- content: "\f0a3";
-}
-.icon-hand-right:before {
- content: "\f0a4";
-}
-.icon-hand-left:before {
- content: "\f0a5";
-}
-.icon-hand-up:before {
- content: "\f0a6";
-}
-.icon-hand-down:before {
- content: "\f0a7";
-}
-.icon-circle-arrow-left:before {
- content: "\f0a8";
-}
-.icon-circle-arrow-right:before {
- content: "\f0a9";
-}
-.icon-circle-arrow-up:before {
- content: "\f0aa";
-}
-.icon-circle-arrow-down:before {
- content: "\f0ab";
-}
-.icon-globe:before {
- content: "\f0ac";
-}
-.icon-wrench:before {
- content: "\f0ad";
-}
-.icon-tasks:before {
- content: "\f0ae";
-}
-.icon-filter:before {
- content: "\f0b0";
-}
-.icon-briefcase:before {
- content: "\f0b1";
-}
-.icon-fullscreen:before {
- content: "\f0b2";
-}
-.icon-group:before {
- content: "\f0c0";
-}
-.icon-link:before {
- content: "\f0c1";
-}
-.icon-cloud:before {
- content: "\f0c2";
-}
-.icon-beaker:before {
- content: "\f0c3";
-}
-.icon-cut:before {
- content: "\f0c4";
-}
-.icon-copy:before {
- content: "\f0c5";
-}
-.icon-paperclip:before,
-.icon-paper-clip:before {
- content: "\f0c6";
-}
-.icon-save:before {
- content: "\f0c7";
-}
-.icon-sign-blank:before {
- content: "\f0c8";
-}
-.icon-reorder:before {
- content: "\f0c9";
-}
-.icon-list-ul:before {
- content: "\f0ca";
-}
-.icon-list-ol:before {
- content: "\f0cb";
-}
-.icon-strikethrough:before {
- content: "\f0cc";
-}
-.icon-underline:before {
- content: "\f0cd";
-}
-.icon-table:before {
- content: "\f0ce";
-}
-.icon-magic:before {
- content: "\f0d0";
-}
-.icon-truck:before {
- content: "\f0d1";
-}
-.icon-pinterest:before {
- content: "\f0d2";
-}
-.icon-pinterest-sign:before {
- content: "\f0d3";
-}
-.icon-google-plus-sign:before {
- content: "\f0d4";
-}
-.icon-google-plus:before {
- content: "\f0d5";
-}
-.icon-money:before {
- content: "\f0d6";
-}
-.icon-caret-down:before {
- content: "\f0d7";
-}
-.icon-caret-up:before {
- content: "\f0d8";
-}
-.icon-caret-left:before {
- content: "\f0d9";
-}
-.icon-caret-right:before {
- content: "\f0da";
-}
-.icon-columns:before {
- content: "\f0db";
-}
-.icon-sort:before {
- content: "\f0dc";
-}
-.icon-sort-down:before {
- content: "\f0dd";
-}
-.icon-sort-up:before {
- content: "\f0de";
-}
-.icon-envelope:before {
- content: "\f0e0";
-}
-.icon-linkedin:before {
- content: "\f0e1";
-}
-.icon-rotate-left:before,
-.icon-undo:before {
- content: "\f0e2";
-}
-.icon-legal:before {
- content: "\f0e3";
-}
-.icon-dashboard:before {
- content: "\f0e4";
-}
-.icon-comment-alt:before {
- content: "\f0e5";
-}
-.icon-comments-alt:before {
- content: "\f0e6";
-}
-.icon-bolt:before {
- content: "\f0e7";
-}
-.icon-sitemap:before {
- content: "\f0e8";
-}
-.icon-umbrella:before {
- content: "\f0e9";
-}
-.icon-paste:before {
- content: "\f0ea";
-}
-.icon-lightbulb:before {
- content: "\f0eb";
-}
-.icon-exchange:before {
- content: "\f0ec";
-}
-.icon-cloud-download:before {
- content: "\f0ed";
-}
-.icon-cloud-upload:before {
- content: "\f0ee";
-}
-.icon-user-md:before {
- content: "\f0f0";
-}
-.icon-stethoscope:before {
- content: "\f0f1";
-}
-.icon-suitcase:before {
- content: "\f0f2";
-}
-.icon-bell-alt:before {
- content: "\f0f3";
-}
-.icon-coffee:before {
- content: "\f0f4";
-}
-.icon-food:before {
- content: "\f0f5";
-}
-.icon-file-text-alt:before {
- content: "\f0f6";
-}
-.icon-building:before {
- content: "\f0f7";
-}
-.icon-hospital:before {
- content: "\f0f8";
-}
-.icon-ambulance:before {
- content: "\f0f9";
-}
-.icon-medkit:before {
- content: "\f0fa";
-}
-.icon-fighter-jet:before {
- content: "\f0fb";
-}
-.icon-beer:before {
- content: "\f0fc";
-}
-.icon-h-sign:before {
- content: "\f0fd";
-}
-.icon-plus-sign-alt:before {
- content: "\f0fe";
-}
-.icon-double-angle-left:before {
- content: "\f100";
-}
-.icon-double-angle-right:before {
- content: "\f101";
-}
-.icon-double-angle-up:before {
- content: "\f102";
-}
-.icon-double-angle-down:before {
- content: "\f103";
-}
-.icon-angle-left:before {
- content: "\f104";
-}
-.icon-angle-right:before {
- content: "\f105";
-}
-.icon-angle-up:before {
- content: "\f106";
-}
-.icon-angle-down:before {
- content: "\f107";
-}
-.icon-desktop:before {
- content: "\f108";
-}
-.icon-laptop:before {
- content: "\f109";
-}
-.icon-tablet:before {
- content: "\f10a";
-}
-.icon-mobile-phone:before {
- content: "\f10b";
-}
-.icon-circle-blank:before {
- content: "\f10c";
-}
-.icon-quote-left:before {
- content: "\f10d";
-}
-.icon-quote-right:before {
- content: "\f10e";
-}
-.icon-spinner:before {
- content: "\f110";
-}
-.icon-circle:before {
- content: "\f111";
-}
-.icon-mail-reply:before,
-.icon-reply:before {
- content: "\f112";
-}
-.icon-github-alt:before {
- content: "\f113";
-}
-.icon-folder-close-alt:before {
- content: "\f114";
-}
-.icon-folder-open-alt:before {
- content: "\f115";
-}
-.icon-expand-alt:before {
- content: "\f116";
-}
-.icon-collapse-alt:before {
- content: "\f117";
-}
-.icon-smile:before {
- content: "\f118";
-}
-.icon-frown:before {
- content: "\f119";
-}
-.icon-meh:before {
- content: "\f11a";
-}
-.icon-gamepad:before {
- content: "\f11b";
-}
-.icon-keyboard:before {
- content: "\f11c";
-}
-.icon-flag-alt:before {
- content: "\f11d";
-}
-.icon-flag-checkered:before {
- content: "\f11e";
-}
-.icon-terminal:before {
- content: "\f120";
-}
-.icon-code:before {
- content: "\f121";
-}
-.icon-reply-all:before {
- content: "\f122";
-}
-.icon-mail-reply-all:before {
- content: "\f122";
-}
-.icon-star-half-full:before,
-.icon-star-half-empty:before {
- content: "\f123";
-}
-.icon-location-arrow:before {
- content: "\f124";
-}
-.icon-crop:before {
- content: "\f125";
-}
-.icon-code-fork:before {
- content: "\f126";
-}
-.icon-unlink:before {
- content: "\f127";
-}
-.icon-question:before {
- content: "\f128";
-}
-.icon-info:before {
- content: "\f129";
-}
-.icon-exclamation:before {
- content: "\f12a";
-}
-.icon-superscript:before {
- content: "\f12b";
-}
-.icon-subscript:before {
- content: "\f12c";
-}
-.icon-eraser:before {
- content: "\f12d";
-}
-.icon-puzzle-piece:before {
- content: "\f12e";
-}
-.icon-microphone:before {
- content: "\f130";
-}
-.icon-microphone-off:before {
- content: "\f131";
-}
-.icon-shield:before {
- content: "\f132";
-}
-.icon-calendar-empty:before {
- content: "\f133";
-}
-.icon-fire-extinguisher:before {
- content: "\f134";
-}
-.icon-rocket:before {
- content: "\f135";
-}
-.icon-maxcdn:before {
- content: "\f136";
-}
-.icon-chevron-sign-left:before {
- content: "\f137";
-}
-.icon-chevron-sign-right:before {
- content: "\f138";
-}
-.icon-chevron-sign-up:before {
- content: "\f139";
-}
-.icon-chevron-sign-down:before {
- content: "\f13a";
-}
-.icon-html5:before {
- content: "\f13b";
-}
-.icon-css3:before {
- content: "\f13c";
-}
-.icon-anchor:before {
- content: "\f13d";
-}
-.icon-unlock-alt:before {
- content: "\f13e";
-}
-.icon-bullseye:before {
- content: "\f140";
-}
-.icon-ellipsis-horizontal:before {
- content: "\f141";
-}
-.icon-ellipsis-vertical:before {
- content: "\f142";
-}
-.icon-rss-sign:before {
- content: "\f143";
-}
-.icon-play-sign:before {
- content: "\f144";
-}
-.icon-ticket:before {
- content: "\f145";
-}
-.icon-minus-sign-alt:before {
- content: "\f146";
-}
-.icon-check-minus:before {
- content: "\f147";
-}
-.icon-level-up:before {
- content: "\f148";
-}
-.icon-level-down:before {
- content: "\f149";
-}
-.icon-check-sign:before {
- content: "\f14a";
-}
-.icon-edit-sign:before {
- content: "\f14b";
-}
-.icon-external-link-sign:before {
- content: "\f14c";
-}
-.icon-share-sign:before {
- content: "\f14d";
-}
-.icon-compass:before {
- content: "\f14e";
-}
-.icon-collapse:before {
- content: "\f150";
-}
-.icon-collapse-top:before {
- content: "\f151";
-}
-.icon-expand:before {
- content: "\f152";
-}
-.icon-euro:before,
-.icon-eur:before {
- content: "\f153";
-}
-.icon-gbp:before {
- content: "\f154";
-}
-.icon-dollar:before,
-.icon-usd:before {
- content: "\f155";
-}
-.icon-rupee:before,
-.icon-inr:before {
- content: "\f156";
-}
-.icon-yen:before,
-.icon-jpy:before {
- content: "\f157";
-}
-.icon-renminbi:before,
-.icon-cny:before {
- content: "\f158";
-}
-.icon-won:before,
-.icon-krw:before {
- content: "\f159";
-}
-.icon-bitcoin:before,
-.icon-btc:before {
- content: "\f15a";
-}
-.icon-file:before {
- content: "\f15b";
-}
-.icon-file-text:before {
- content: "\f15c";
-}
-.icon-sort-by-alphabet:before {
- content: "\f15d";
-}
-.icon-sort-by-alphabet-alt:before {
- content: "\f15e";
-}
-.icon-sort-by-attributes:before {
- content: "\f160";
-}
-.icon-sort-by-attributes-alt:before {
- content: "\f161";
-}
-.icon-sort-by-order:before {
- content: "\f162";
-}
-.icon-sort-by-order-alt:before {
- content: "\f163";
-}
-.icon-thumbs-up:before {
- content: "\f164";
-}
-.icon-thumbs-down:before {
- content: "\f165";
-}
-.icon-youtube-sign:before {
- content: "\f166";
-}
-.icon-youtube:before {
- content: "\f167";
-}
-.icon-xing:before {
- content: "\f168";
-}
-.icon-xing-sign:before {
- content: "\f169";
-}
-.icon-youtube-play:before {
- content: "\f16a";
-}
-.icon-dropbox:before {
- content: "\f16b";
-}
-.icon-stackexchange:before {
- content: "\f16c";
-}
-.icon-instagram:before {
- content: "\f16d";
-}
-.icon-flickr:before {
- content: "\f16e";
-}
-.icon-adn:before {
- content: "\f170";
-}
-.icon-bitbucket:before {
- content: "\f171";
-}
-.icon-bitbucket-sign:before {
- content: "\f172";
-}
-.icon-tumblr:before {
- content: "\f173";
-}
-.icon-tumblr-sign:before {
- content: "\f174";
-}
-.icon-long-arrow-down:before {
- content: "\f175";
-}
-.icon-long-arrow-up:before {
- content: "\f176";
-}
-.icon-long-arrow-left:before {
- content: "\f177";
-}
-.icon-long-arrow-right:before {
- content: "\f178";
-}
-.icon-apple:before {
- content: "\f179";
-}
-.icon-windows:before {
- content: "\f17a";
-}
-.icon-android:before {
- content: "\f17b";
-}
-.icon-linux:before {
- content: "\f17c";
-}
-.icon-dribbble:before {
- content: "\f17d";
-}
-.icon-skype:before {
- content: "\f17e";
-}
-.icon-foursquare:before {
- content: "\f180";
-}
-.icon-trello:before {
- content: "\f181";
-}
-.icon-female:before {
- content: "\f182";
-}
-.icon-male:before {
- content: "\f183";
-}
-.icon-gittip:before {
- content: "\f184";
-}
-.icon-sun:before {
- content: "\f185";
-}
-.icon-moon:before {
- content: "\f186";
-}
-.icon-archive:before {
- content: "\f187";
-}
-.icon-bug:before {
- content: "\f188";
-}
-.icon-vk:before {
- content: "\f189";
-}
-.icon-weibo:before {
- content: "\f18a";
-}
-.icon-renren:before {
- content: "\f18b";
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.min.css b/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.min.css
deleted file mode 100644
index 866437fa4..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/css/font-awesome.min.css
+++ /dev/null
@@ -1,403 +0,0 @@
-@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;}
-[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;}
-.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;}
-a [class^="icon-"],a [class*=" icon-"]{display:inline;}
-[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;}
-.icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;}
-.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;}
-[class^="icon-"].hide,[class*=" icon-"].hide{display:none;}
-.icon-muted{color:#eeeeee;}
-.icon-light{color:#ffffff;}
-.icon-dark{color:#333333;}
-.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
-.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
-.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
-.icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}
-.pull-right{float:right;}
-.pull-left{float:left;}
-[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;}
-[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}
-[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;}
-.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;}
-.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;}
-.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;}
-.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;}
-.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;}
-.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;}
-.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;}
-.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;}
-.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;}
-.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;}
-.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;}
-.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;}
-.icon-stack .icon-stack-base{font-size:2em;*line-height:1em;}
-.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;}
-a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;}
-@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);}
-.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);}
-.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
-.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);}
-.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);}
-a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;}
-.icon-glass:before{content:"\f000";}
-.icon-music:before{content:"\f001";}
-.icon-search:before{content:"\f002";}
-.icon-envelope-alt:before{content:"\f003";}
-.icon-heart:before{content:"\f004";}
-.icon-star:before{content:"\f005";}
-.icon-star-empty:before{content:"\f006";}
-.icon-user:before{content:"\f007";}
-.icon-film:before{content:"\f008";}
-.icon-th-large:before{content:"\f009";}
-.icon-th:before{content:"\f00a";}
-.icon-th-list:before{content:"\f00b";}
-.icon-ok:before{content:"\f00c";}
-.icon-remove:before{content:"\f00d";}
-.icon-zoom-in:before{content:"\f00e";}
-.icon-zoom-out:before{content:"\f010";}
-.icon-power-off:before,.icon-off:before{content:"\f011";}
-.icon-signal:before{content:"\f012";}
-.icon-gear:before,.icon-cog:before{content:"\f013";}
-.icon-trash:before{content:"\f014";}
-.icon-home:before{content:"\f015";}
-.icon-file-alt:before{content:"\f016";}
-.icon-time:before{content:"\f017";}
-.icon-road:before{content:"\f018";}
-.icon-download-alt:before{content:"\f019";}
-.icon-download:before{content:"\f01a";}
-.icon-upload:before{content:"\f01b";}
-.icon-inbox:before{content:"\f01c";}
-.icon-play-circle:before{content:"\f01d";}
-.icon-rotate-right:before,.icon-repeat:before{content:"\f01e";}
-.icon-refresh:before{content:"\f021";}
-.icon-list-alt:before{content:"\f022";}
-.icon-lock:before{content:"\f023";}
-.icon-flag:before{content:"\f024";}
-.icon-headphones:before{content:"\f025";}
-.icon-volume-off:before{content:"\f026";}
-.icon-volume-down:before{content:"\f027";}
-.icon-volume-up:before{content:"\f028";}
-.icon-qrcode:before{content:"\f029";}
-.icon-barcode:before{content:"\f02a";}
-.icon-tag:before{content:"\f02b";}
-.icon-tags:before{content:"\f02c";}
-.icon-book:before{content:"\f02d";}
-.icon-bookmark:before{content:"\f02e";}
-.icon-print:before{content:"\f02f";}
-.icon-camera:before{content:"\f030";}
-.icon-font:before{content:"\f031";}
-.icon-bold:before{content:"\f032";}
-.icon-italic:before{content:"\f033";}
-.icon-text-height:before{content:"\f034";}
-.icon-text-width:before{content:"\f035";}
-.icon-align-left:before{content:"\f036";}
-.icon-align-center:before{content:"\f037";}
-.icon-align-right:before{content:"\f038";}
-.icon-align-justify:before{content:"\f039";}
-.icon-list:before{content:"\f03a";}
-.icon-indent-left:before{content:"\f03b";}
-.icon-indent-right:before{content:"\f03c";}
-.icon-facetime-video:before{content:"\f03d";}
-.icon-picture:before{content:"\f03e";}
-.icon-pencil:before{content:"\f040";}
-.icon-map-marker:before{content:"\f041";}
-.icon-adjust:before{content:"\f042";}
-.icon-tint:before{content:"\f043";}
-.icon-edit:before{content:"\f044";}
-.icon-share:before{content:"\f045";}
-.icon-check:before{content:"\f046";}
-.icon-move:before{content:"\f047";}
-.icon-step-backward:before{content:"\f048";}
-.icon-fast-backward:before{content:"\f049";}
-.icon-backward:before{content:"\f04a";}
-.icon-play:before{content:"\f04b";}
-.icon-pause:before{content:"\f04c";}
-.icon-stop:before{content:"\f04d";}
-.icon-forward:before{content:"\f04e";}
-.icon-fast-forward:before{content:"\f050";}
-.icon-step-forward:before{content:"\f051";}
-.icon-eject:before{content:"\f052";}
-.icon-chevron-left:before{content:"\f053";}
-.icon-chevron-right:before{content:"\f054";}
-.icon-plus-sign:before{content:"\f055";}
-.icon-minus-sign:before{content:"\f056";}
-.icon-remove-sign:before{content:"\f057";}
-.icon-ok-sign:before{content:"\f058";}
-.icon-question-sign:before{content:"\f059";}
-.icon-info-sign:before{content:"\f05a";}
-.icon-screenshot:before{content:"\f05b";}
-.icon-remove-circle:before{content:"\f05c";}
-.icon-ok-circle:before{content:"\f05d";}
-.icon-ban-circle:before{content:"\f05e";}
-.icon-arrow-left:before{content:"\f060";}
-.icon-arrow-right:before{content:"\f061";}
-.icon-arrow-up:before{content:"\f062";}
-.icon-arrow-down:before{content:"\f063";}
-.icon-mail-forward:before,.icon-share-alt:before{content:"\f064";}
-.icon-resize-full:before{content:"\f065";}
-.icon-resize-small:before{content:"\f066";}
-.icon-plus:before{content:"\f067";}
-.icon-minus:before{content:"\f068";}
-.icon-asterisk:before{content:"\f069";}
-.icon-exclamation-sign:before{content:"\f06a";}
-.icon-gift:before{content:"\f06b";}
-.icon-leaf:before{content:"\f06c";}
-.icon-fire:before{content:"\f06d";}
-.icon-eye-open:before{content:"\f06e";}
-.icon-eye-close:before{content:"\f070";}
-.icon-warning-sign:before{content:"\f071";}
-.icon-plane:before{content:"\f072";}
-.icon-calendar:before{content:"\f073";}
-.icon-random:before{content:"\f074";}
-.icon-comment:before{content:"\f075";}
-.icon-magnet:before{content:"\f076";}
-.icon-chevron-up:before{content:"\f077";}
-.icon-chevron-down:before{content:"\f078";}
-.icon-retweet:before{content:"\f079";}
-.icon-shopping-cart:before{content:"\f07a";}
-.icon-folder-close:before{content:"\f07b";}
-.icon-folder-open:before{content:"\f07c";}
-.icon-resize-vertical:before{content:"\f07d";}
-.icon-resize-horizontal:before{content:"\f07e";}
-.icon-bar-chart:before{content:"\f080";}
-.icon-twitter-sign:before{content:"\f081";}
-.icon-facebook-sign:before{content:"\f082";}
-.icon-camera-retro:before{content:"\f083";}
-.icon-key:before{content:"\f084";}
-.icon-gears:before,.icon-cogs:before{content:"\f085";}
-.icon-comments:before{content:"\f086";}
-.icon-thumbs-up-alt:before{content:"\f087";}
-.icon-thumbs-down-alt:before{content:"\f088";}
-.icon-star-half:before{content:"\f089";}
-.icon-heart-empty:before{content:"\f08a";}
-.icon-signout:before{content:"\f08b";}
-.icon-linkedin-sign:before{content:"\f08c";}
-.icon-pushpin:before{content:"\f08d";}
-.icon-external-link:before{content:"\f08e";}
-.icon-signin:before{content:"\f090";}
-.icon-trophy:before{content:"\f091";}
-.icon-github-sign:before{content:"\f092";}
-.icon-upload-alt:before{content:"\f093";}
-.icon-lemon:before{content:"\f094";}
-.icon-phone:before{content:"\f095";}
-.icon-unchecked:before,.icon-check-empty:before{content:"\f096";}
-.icon-bookmark-empty:before{content:"\f097";}
-.icon-phone-sign:before{content:"\f098";}
-.icon-twitter:before{content:"\f099";}
-.icon-facebook:before{content:"\f09a";}
-.icon-github:before{content:"\f09b";}
-.icon-unlock:before{content:"\f09c";}
-.icon-credit-card:before{content:"\f09d";}
-.icon-rss:before{content:"\f09e";}
-.icon-hdd:before{content:"\f0a0";}
-.icon-bullhorn:before{content:"\f0a1";}
-.icon-bell:before{content:"\f0a2";}
-.icon-certificate:before{content:"\f0a3";}
-.icon-hand-right:before{content:"\f0a4";}
-.icon-hand-left:before{content:"\f0a5";}
-.icon-hand-up:before{content:"\f0a6";}
-.icon-hand-down:before{content:"\f0a7";}
-.icon-circle-arrow-left:before{content:"\f0a8";}
-.icon-circle-arrow-right:before{content:"\f0a9";}
-.icon-circle-arrow-up:before{content:"\f0aa";}
-.icon-circle-arrow-down:before{content:"\f0ab";}
-.icon-globe:before{content:"\f0ac";}
-.icon-wrench:before{content:"\f0ad";}
-.icon-tasks:before{content:"\f0ae";}
-.icon-filter:before{content:"\f0b0";}
-.icon-briefcase:before{content:"\f0b1";}
-.icon-fullscreen:before{content:"\f0b2";}
-.icon-group:before{content:"\f0c0";}
-.icon-link:before{content:"\f0c1";}
-.icon-cloud:before{content:"\f0c2";}
-.icon-beaker:before{content:"\f0c3";}
-.icon-cut:before{content:"\f0c4";}
-.icon-copy:before{content:"\f0c5";}
-.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";}
-.icon-save:before{content:"\f0c7";}
-.icon-sign-blank:before{content:"\f0c8";}
-.icon-reorder:before{content:"\f0c9";}
-.icon-list-ul:before{content:"\f0ca";}
-.icon-list-ol:before{content:"\f0cb";}
-.icon-strikethrough:before{content:"\f0cc";}
-.icon-underline:before{content:"\f0cd";}
-.icon-table:before{content:"\f0ce";}
-.icon-magic:before{content:"\f0d0";}
-.icon-truck:before{content:"\f0d1";}
-.icon-pinterest:before{content:"\f0d2";}
-.icon-pinterest-sign:before{content:"\f0d3";}
-.icon-google-plus-sign:before{content:"\f0d4";}
-.icon-google-plus:before{content:"\f0d5";}
-.icon-money:before{content:"\f0d6";}
-.icon-caret-down:before{content:"\f0d7";}
-.icon-caret-up:before{content:"\f0d8";}
-.icon-caret-left:before{content:"\f0d9";}
-.icon-caret-right:before{content:"\f0da";}
-.icon-columns:before{content:"\f0db";}
-.icon-sort:before{content:"\f0dc";}
-.icon-sort-down:before{content:"\f0dd";}
-.icon-sort-up:before{content:"\f0de";}
-.icon-envelope:before{content:"\f0e0";}
-.icon-linkedin:before{content:"\f0e1";}
-.icon-rotate-left:before,.icon-undo:before{content:"\f0e2";}
-.icon-legal:before{content:"\f0e3";}
-.icon-dashboard:before{content:"\f0e4";}
-.icon-comment-alt:before{content:"\f0e5";}
-.icon-comments-alt:before{content:"\f0e6";}
-.icon-bolt:before{content:"\f0e7";}
-.icon-sitemap:before{content:"\f0e8";}
-.icon-umbrella:before{content:"\f0e9";}
-.icon-paste:before{content:"\f0ea";}
-.icon-lightbulb:before{content:"\f0eb";}
-.icon-exchange:before{content:"\f0ec";}
-.icon-cloud-download:before{content:"\f0ed";}
-.icon-cloud-upload:before{content:"\f0ee";}
-.icon-user-md:before{content:"\f0f0";}
-.icon-stethoscope:before{content:"\f0f1";}
-.icon-suitcase:before{content:"\f0f2";}
-.icon-bell-alt:before{content:"\f0f3";}
-.icon-coffee:before{content:"\f0f4";}
-.icon-food:before{content:"\f0f5";}
-.icon-file-text-alt:before{content:"\f0f6";}
-.icon-building:before{content:"\f0f7";}
-.icon-hospital:before{content:"\f0f8";}
-.icon-ambulance:before{content:"\f0f9";}
-.icon-medkit:before{content:"\f0fa";}
-.icon-fighter-jet:before{content:"\f0fb";}
-.icon-beer:before{content:"\f0fc";}
-.icon-h-sign:before{content:"\f0fd";}
-.icon-plus-sign-alt:before{content:"\f0fe";}
-.icon-double-angle-left:before{content:"\f100";}
-.icon-double-angle-right:before{content:"\f101";}
-.icon-double-angle-up:before{content:"\f102";}
-.icon-double-angle-down:before{content:"\f103";}
-.icon-angle-left:before{content:"\f104";}
-.icon-angle-right:before{content:"\f105";}
-.icon-angle-up:before{content:"\f106";}
-.icon-angle-down:before{content:"\f107";}
-.icon-desktop:before{content:"\f108";}
-.icon-laptop:before{content:"\f109";}
-.icon-tablet:before{content:"\f10a";}
-.icon-mobile-phone:before{content:"\f10b";}
-.icon-circle-blank:before{content:"\f10c";}
-.icon-quote-left:before{content:"\f10d";}
-.icon-quote-right:before{content:"\f10e";}
-.icon-spinner:before{content:"\f110";}
-.icon-circle:before{content:"\f111";}
-.icon-mail-reply:before,.icon-reply:before{content:"\f112";}
-.icon-github-alt:before{content:"\f113";}
-.icon-folder-close-alt:before{content:"\f114";}
-.icon-folder-open-alt:before{content:"\f115";}
-.icon-expand-alt:before{content:"\f116";}
-.icon-collapse-alt:before{content:"\f117";}
-.icon-smile:before{content:"\f118";}
-.icon-frown:before{content:"\f119";}
-.icon-meh:before{content:"\f11a";}
-.icon-gamepad:before{content:"\f11b";}
-.icon-keyboard:before{content:"\f11c";}
-.icon-flag-alt:before{content:"\f11d";}
-.icon-flag-checkered:before{content:"\f11e";}
-.icon-terminal:before{content:"\f120";}
-.icon-code:before{content:"\f121";}
-.icon-reply-all:before{content:"\f122";}
-.icon-mail-reply-all:before{content:"\f122";}
-.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";}
-.icon-location-arrow:before{content:"\f124";}
-.icon-crop:before{content:"\f125";}
-.icon-code-fork:before{content:"\f126";}
-.icon-unlink:before{content:"\f127";}
-.icon-question:before{content:"\f128";}
-.icon-info:before{content:"\f129";}
-.icon-exclamation:before{content:"\f12a";}
-.icon-superscript:before{content:"\f12b";}
-.icon-subscript:before{content:"\f12c";}
-.icon-eraser:before{content:"\f12d";}
-.icon-puzzle-piece:before{content:"\f12e";}
-.icon-microphone:before{content:"\f130";}
-.icon-microphone-off:before{content:"\f131";}
-.icon-shield:before{content:"\f132";}
-.icon-calendar-empty:before{content:"\f133";}
-.icon-fire-extinguisher:before{content:"\f134";}
-.icon-rocket:before{content:"\f135";}
-.icon-maxcdn:before{content:"\f136";}
-.icon-chevron-sign-left:before{content:"\f137";}
-.icon-chevron-sign-right:before{content:"\f138";}
-.icon-chevron-sign-up:before{content:"\f139";}
-.icon-chevron-sign-down:before{content:"\f13a";}
-.icon-html5:before{content:"\f13b";}
-.icon-css3:before{content:"\f13c";}
-.icon-anchor:before{content:"\f13d";}
-.icon-unlock-alt:before{content:"\f13e";}
-.icon-bullseye:before{content:"\f140";}
-.icon-ellipsis-horizontal:before{content:"\f141";}
-.icon-ellipsis-vertical:before{content:"\f142";}
-.icon-rss-sign:before{content:"\f143";}
-.icon-play-sign:before{content:"\f144";}
-.icon-ticket:before{content:"\f145";}
-.icon-minus-sign-alt:before{content:"\f146";}
-.icon-check-minus:before{content:"\f147";}
-.icon-level-up:before{content:"\f148";}
-.icon-level-down:before{content:"\f149";}
-.icon-check-sign:before{content:"\f14a";}
-.icon-edit-sign:before{content:"\f14b";}
-.icon-external-link-sign:before{content:"\f14c";}
-.icon-share-sign:before{content:"\f14d";}
-.icon-compass:before{content:"\f14e";}
-.icon-collapse:before{content:"\f150";}
-.icon-collapse-top:before{content:"\f151";}
-.icon-expand:before{content:"\f152";}
-.icon-euro:before,.icon-eur:before{content:"\f153";}
-.icon-gbp:before{content:"\f154";}
-.icon-dollar:before,.icon-usd:before{content:"\f155";}
-.icon-rupee:before,.icon-inr:before{content:"\f156";}
-.icon-yen:before,.icon-jpy:before{content:"\f157";}
-.icon-renminbi:before,.icon-cny:before{content:"\f158";}
-.icon-won:before,.icon-krw:before{content:"\f159";}
-.icon-bitcoin:before,.icon-btc:before{content:"\f15a";}
-.icon-file:before{content:"\f15b";}
-.icon-file-text:before{content:"\f15c";}
-.icon-sort-by-alphabet:before{content:"\f15d";}
-.icon-sort-by-alphabet-alt:before{content:"\f15e";}
-.icon-sort-by-attributes:before{content:"\f160";}
-.icon-sort-by-attributes-alt:before{content:"\f161";}
-.icon-sort-by-order:before{content:"\f162";}
-.icon-sort-by-order-alt:before{content:"\f163";}
-.icon-thumbs-up:before{content:"\f164";}
-.icon-thumbs-down:before{content:"\f165";}
-.icon-youtube-sign:before{content:"\f166";}
-.icon-youtube:before{content:"\f167";}
-.icon-xing:before{content:"\f168";}
-.icon-xing-sign:before{content:"\f169";}
-.icon-youtube-play:before{content:"\f16a";}
-.icon-dropbox:before{content:"\f16b";}
-.icon-stackexchange:before{content:"\f16c";}
-.icon-instagram:before{content:"\f16d";}
-.icon-flickr:before{content:"\f16e";}
-.icon-adn:before{content:"\f170";}
-.icon-bitbucket:before{content:"\f171";}
-.icon-bitbucket-sign:before{content:"\f172";}
-.icon-tumblr:before{content:"\f173";}
-.icon-tumblr-sign:before{content:"\f174";}
-.icon-long-arrow-down:before{content:"\f175";}
-.icon-long-arrow-up:before{content:"\f176";}
-.icon-long-arrow-left:before{content:"\f177";}
-.icon-long-arrow-right:before{content:"\f178";}
-.icon-apple:before{content:"\f179";}
-.icon-windows:before{content:"\f17a";}
-.icon-android:before{content:"\f17b";}
-.icon-linux:before{content:"\f17c";}
-.icon-dribbble:before{content:"\f17d";}
-.icon-skype:before{content:"\f17e";}
-.icon-foursquare:before{content:"\f180";}
-.icon-trello:before{content:"\f181";}
-.icon-female:before{content:"\f182";}
-.icon-male:before{content:"\f183";}
-.icon-gittip:before{content:"\f184";}
-.icon-sun:before{content:"\f185";}
-.icon-moon:before{content:"\f186";}
-.icon-archive:before{content:"\f187";}
-.icon-bug:before{content:"\f188";}
-.icon-vk:before{content:"\f189";}
-.icon-weibo:before{content:"\f18a";}
-.icon-renren:before{content:"\f18b";}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/font/FontAwesome.otf b/library/font_awesome/src/3.2.1/assets/font-awesome/font/FontAwesome.otf
deleted file mode 100644
index 70125459f..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/font/FontAwesome.otf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.eot b/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.eot
deleted file mode 100644
index 0662cb96b..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.svg b/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.svg
deleted file mode 100644
index 2edb4ec34..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.svg
+++ /dev/null
@@ -1,399 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="fontawesomeregular" horiz-adv-x="1536" >
-<font-face units-per-em="1792" ascent="1536" descent="-256" />
-<missing-glyph horiz-adv-x="448" />
-<glyph unicode=" " horiz-adv-x="448" />
-<glyph unicode="&#x09;" horiz-adv-x="448" />
-<glyph unicode="&#xa0;" horiz-adv-x="448" />
-<glyph unicode="&#xa8;" horiz-adv-x="1792" />
-<glyph unicode="&#xa9;" horiz-adv-x="1792" />
-<glyph unicode="&#xae;" horiz-adv-x="1792" />
-<glyph unicode="&#xb4;" horiz-adv-x="1792" />
-<glyph unicode="&#xc6;" horiz-adv-x="1792" />
-<glyph unicode="&#x2000;" horiz-adv-x="768" />
-<glyph unicode="&#x2001;" />
-<glyph unicode="&#x2002;" horiz-adv-x="768" />
-<glyph unicode="&#x2003;" />
-<glyph unicode="&#x2004;" horiz-adv-x="512" />
-<glyph unicode="&#x2005;" horiz-adv-x="384" />
-<glyph unicode="&#x2006;" horiz-adv-x="256" />
-<glyph unicode="&#x2007;" horiz-adv-x="256" />
-<glyph unicode="&#x2008;" horiz-adv-x="192" />
-<glyph unicode="&#x2009;" horiz-adv-x="307" />
-<glyph unicode="&#x200a;" horiz-adv-x="85" />
-<glyph unicode="&#x202f;" horiz-adv-x="307" />
-<glyph unicode="&#x205f;" horiz-adv-x="384" />
-<glyph unicode="&#x2122;" horiz-adv-x="1792" />
-<glyph unicode="&#x221e;" horiz-adv-x="1792" />
-<glyph unicode="&#x2260;" horiz-adv-x="1792" />
-<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
-<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
-<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
-<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
-<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
-<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
-<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
-<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
-<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
-<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
-<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
-<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
-<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
-<glyph unicode="&#xf016;" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " />
-<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
-<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
-<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
-<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
-<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
-<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
-<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
-<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
-<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
-<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
-<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
-<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
-<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
-<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
-<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
-<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
-<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" />
-<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" />
-<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" />
-<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" />
-<glyph unicode="&#xf035;" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" />
-<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
-<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
-<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
-<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
-<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
-<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
-<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
-<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
-<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
-<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
-<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
-<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
-<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
-<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
-<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
-<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
-<glyph unicode="&#xf053;" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" />
-<glyph unicode="&#xf054;" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" />
-<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
-<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
-<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
-<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
-<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
-<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
-<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
-<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
-<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
-<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
-<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
-<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
-<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
-<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
-<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
-<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
-<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
-<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
-<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf077;" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" />
-<glyph unicode="&#xf078;" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
-<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
-<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
-<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
-<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf082;" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
-<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
-<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
-<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
-<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
-<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
-<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
-<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
-<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
-<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
-<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
-<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
-<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
-<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
-<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
-<glyph unicode="&#xf09a;" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" />
-<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
-<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
-<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
-<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
-<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
-<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
-<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
-<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
-<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
-<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
-<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
-<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
-<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
-<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
-<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
-<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
-<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
-<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
-<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
-<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
-<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
-<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
-<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
-<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
-<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
-<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
-<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
-<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
-<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
-<glyph unicode="&#xf0d4;" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
-<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" />
-<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
-<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
-<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
-<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
-<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
-<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
-<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
-<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
-<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
-<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
-<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
-<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
-<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
-<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
-<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
-<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
-<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
-<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
-<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
-<glyph unicode="&#xf0f3;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
-<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
-<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0f6;" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" />
-<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
-<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
-<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
-<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
-<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
-<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
-<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
-<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
-<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
-<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
-<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
-<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
-<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
-<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
-<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
-<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
-<glyph unicode="&#xf116;" horiz-adv-x="1152" d="M896 608v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h224q14 0 23 -9t9 -23zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28 t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68zM1152 928v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704q93 0 158.5 -65.5t65.5 -158.5z" />
-<glyph unicode="&#xf117;" horiz-adv-x="1152" d="M928 1152q93 0 158.5 -65.5t65.5 -158.5v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68z M864 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576z" />
-<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
-<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
-<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
-<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
-<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
-<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
-<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
-<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
-<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
-<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
-<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
-<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
-<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
-<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
-<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
-<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
-<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
-<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
-<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
-<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
-<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
-<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
-<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1708 881l-188 -881h-304l181 849q4 21 1 43q-4 20 -16 35q-10 14 -28 24q-18 9 -40 9h-197l-205 -960h-303l204 960h-304l-205 -960h-304l272 1280h1139q157 0 245 -118q86 -116 52 -281z" />
-<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
-<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
-<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
-<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
-<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
-<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
-<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
-<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
-<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
-<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
-<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
-<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
-<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
-<glyph unicode="&#xf158;" horiz-adv-x="1664" d="M1664 352v-32q0 -132 -94 -226t-226 -94h-128q-132 0 -226 94t-94 226v480h-224q-2 -102 -14.5 -190.5t-30.5 -156t-48.5 -126.5t-57 -99.5t-67.5 -77.5t-69.5 -58.5t-74 -44t-69 -32t-65.5 -25.5q-4 -2 -32 -13q-8 -2 -12 -2q-22 0 -30 20l-71 178q-5 13 0 25t17 17 q7 3 20 7.5t18 6.5q31 12 46.5 18.5t44.5 20t45.5 26t42 32.5t40.5 42.5t34.5 53.5t30.5 68.5t22.5 83.5t17 103t6.5 123h-256q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h1216q14 0 23 -9t9 -23v-160q0 -14 -9 -23t-23 -9h-224v-512q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v64q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1280 1376v-160q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h960q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
-<glyph unicode="&#xf15b;" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
-<glyph unicode="&#xf15c;" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
-<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
-<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
-<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
-<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
-<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
-<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
-<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
-<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
-<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
-<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
-<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
-<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
-<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
-<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
-<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " />
-<glyph unicode="&#xf174;" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
-<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
-<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
-<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
-<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
-<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
-<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
-<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
-<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
-<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
-<glyph unicode="&#xf180;" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" />
-<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
-<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
-<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
-<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
-<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
-<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
-<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
-<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
-<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
-<glyph unicode="&#xf18b;" horiz-adv-x="1920" d="M805 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM453 1176v-344q0 -179 -89.5 -326t-234.5 -217q-129 152 -129 351q0 200 129.5 352t323.5 184zM958 991q-128 -152 -128 -351q0 -201 128 -351q-145 70 -234.5 218t-89.5 328 v341q196 -33 324 -185zM1638 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM1286 1176v-344q0 -179 -91 -326t-237 -217v0q133 154 133 351q0 195 -133 351q129 151 328 185zM1920 640q0 -201 -129 -351q-145 70 -234.5 218 t-89.5 328v341q194 -32 323.5 -184t129.5 -352z" />
-<glyph unicode="&#xf18c;" horiz-adv-x="1792" />
-<glyph unicode="&#xf18d;" horiz-adv-x="1792" />
-<glyph unicode="&#xf18e;" horiz-adv-x="1792" />
-<glyph unicode="&#xf500;" horiz-adv-x="1792" />
-</font>
-</defs></svg> \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.ttf b/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.ttf
deleted file mode 100644
index d36592469..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.woff b/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.woff
deleted file mode 100644
index b9bd17e15..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/bootstrap.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/bootstrap.less
deleted file mode 100644
index a2c96046b..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/bootstrap.less
+++ /dev/null
@@ -1,84 +0,0 @@
-/* BOOTSTRAP SPECIFIC CLASSES
- * -------------------------- */
-
-/* Bootstrap 2.0 sprites.less reset */
-[class^="icon-"],
-[class*=" icon-"] {
- display: inline;
- width: auto;
- height: auto;
- line-height: normal;
- vertical-align: baseline;
- background-image: none;
- background-position: 0% 0%;
- background-repeat: repeat;
- margin-top: 0;
-}
-
-/* more sprites.less reset */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
- background-image: none;
-}
-
-
-/* keeps Bootstrap styles with and without icons the same */
-.btn, .nav {
- [class^="icon-"],
- [class*=" icon-"] {
-// display: inline;
- &.icon-large { line-height: .9em; }
- &.icon-spin { display: inline-block; }
- }
-}
-.nav-tabs, .nav-pills {
- [class^="icon-"],
- [class*=" icon-"] {
- &, &.icon-large { line-height: .9em; }
- }
-}
-.btn {
- [class^="icon-"],
- [class*=" icon-"] {
- &.pull-left, &.pull-right {
- &.icon-2x { margin-top: .18em; }
- }
- &.icon-spin.icon-large { line-height: .8em; }
- }
-}
-.btn.btn-small {
- [class^="icon-"],
- [class*=" icon-"] {
- &.pull-left, &.pull-right {
- &.icon-2x { margin-top: .25em; }
- }
- }
-}
-.btn.btn-large {
- [class^="icon-"],
- [class*=" icon-"] {
- margin-top: 0; // overrides bootstrap default
- &.pull-left, &.pull-right {
- &.icon-2x { margin-top: .05em; }
- }
- &.pull-left.icon-2x { margin-right: .2em; }
- &.pull-right.icon-2x { margin-left: .2em; }
- }
-}
-
-/* Fixes alignment in nav lists */
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
- line-height: inherit;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/core.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/core.less
deleted file mode 100644
index 1ef7e2235..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/core.less
+++ /dev/null
@@ -1,129 +0,0 @@
-/* FONT AWESOME CORE
- * -------------------------- */
-
-[class^="icon-"],
-[class*=" icon-"] {
- .icon-FontAwesome();
-}
-
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
- text-decoration: inherit;
- display: inline-block;
- speak: none;
-}
-
-/* makes the font 33% larger relative to the icon container */
-.icon-large:before {
- vertical-align: -10%;
- font-size: 4/3em;
-}
-
-/* makes sure icons active on rollover in links */
-a {
- [class^="icon-"],
- [class*=" icon-"] {
- display: inline;
- }
-}
-
-/* increased font size for icon-large */
-[class^="icon-"],
-[class*=" icon-"] {
- &.icon-fixed-width {
- display: inline-block;
- width: 16/14em;
- text-align: right;
- padding-right: 4/14em;
- &.icon-large {
- width: 20/14em;
- }
- }
-}
-
-.icons-ul {
- margin-left: @icons-li-width;
- list-style-type: none;
-
- > li { position: relative; }
-
- .icon-li {
- position: absolute;
- left: -@icons-li-width;
- width: @icons-li-width;
- text-align: center;
- line-height: inherit;
- }
-}
-
-// allows usage of the hide class directly on font awesome icons
-[class^="icon-"],
-[class*=" icon-"] {
- &.hide {
- display: none;
- }
-}
-
-.icon-muted { color: @iconMuted; }
-.icon-light { color: @iconLight; }
-.icon-dark { color: @iconDark; }
-
-// Icon Borders
-// -------------------------
-
-.icon-border {
- border: solid 1px @borderColor;
- padding: .2em .25em .15em;
- .border-radius(3px);
-}
-
-// Icon Sizes
-// -------------------------
-
-.icon-2x {
- font-size: 2em;
- &.icon-border {
- border-width: 2px;
- .border-radius(4px);
- }
-}
-.icon-3x {
- font-size: 3em;
- &.icon-border {
- border-width: 3px;
- .border-radius(5px);
- }
-}
-.icon-4x {
- font-size: 4em;
- &.icon-border {
- border-width: 4px;
- .border-radius(6px);
- }
-}
-
-.icon-5x {
- font-size: 5em;
- &.icon-border {
- border-width: 5px;
- .border-radius(7px);
- }
-}
-
-
-// Floats & Margins
-// -------------------------
-
-// Quick floats
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-[class^="icon-"],
-[class*=" icon-"] {
- &.pull-left {
- margin-right: .3em;
- }
- &.pull-right {
- margin-left: .3em;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/extras.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/extras.less
deleted file mode 100644
index c93c260c8..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/extras.less
+++ /dev/null
@@ -1,93 +0,0 @@
-/* EXTRAS
- * -------------------------- */
-
-/* Stacked and layered icon */
-.icon-stack();
-
-/* Animated rotating icon */
-.icon-spin {
- display: inline-block;
- -moz-animation: spin 2s infinite linear;
- -o-animation: spin 2s infinite linear;
- -webkit-animation: spin 2s infinite linear;
- animation: spin 2s infinite linear;
-}
-
-/* Prevent stack and spinners from being taken inline when inside a link */
-a .icon-stack,
-a .icon-spin {
- display: inline-block;
- text-decoration: none;
-}
-
-@-moz-keyframes spin {
- 0% { -moz-transform: rotate(0deg); }
- 100% { -moz-transform: rotate(359deg); }
-}
-@-webkit-keyframes spin {
- 0% { -webkit-transform: rotate(0deg); }
- 100% { -webkit-transform: rotate(359deg); }
-}
-@-o-keyframes spin {
- 0% { -o-transform: rotate(0deg); }
- 100% { -o-transform: rotate(359deg); }
-}
-@-ms-keyframes spin {
- 0% { -ms-transform: rotate(0deg); }
- 100% { -ms-transform: rotate(359deg); }
-}
-@keyframes spin {
- 0% { transform: rotate(0deg); }
- 100% { transform: rotate(359deg); }
-}
-
-/* Icon rotations and mirroring */
-.icon-rotate-90:before {
- -webkit-transform: rotate(90deg);
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -o-transform: rotate(90deg);
- transform: rotate(90deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-}
-
-.icon-rotate-180:before {
- -webkit-transform: rotate(180deg);
- -moz-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- -o-transform: rotate(180deg);
- transform: rotate(180deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-}
-
-.icon-rotate-270:before {
- -webkit-transform: rotate(270deg);
- -moz-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- -o-transform: rotate(270deg);
- transform: rotate(270deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-}
-
-.icon-flip-horizontal:before {
- -webkit-transform: scale(-1, 1);
- -moz-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- -o-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-
-.icon-flip-vertical:before {
- -webkit-transform: scale(1, -1);
- -moz-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- -o-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-
-/* ensure rotation occurs inside anchor tags */
-a {
- .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {
- &:before { display: inline-block; }
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome-ie7.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome-ie7.less
deleted file mode 100644
index 6675c4989..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome-ie7.less
+++ /dev/null
@@ -1,1953 +0,0 @@
-/*!
- * Font Awesome 3.2.1
- * the iconic font designed for Bootstrap
- * ------------------------------------------------------------------------------
- * The full suite of pictographic icons, examples, and documentation can be
- * found at http://fontawesome.io. Stay up to date on Twitter at
- * http://twitter.com/fontawesome.
- *
- * License
- * ------------------------------------------------------------------------------
- * - The Font Awesome font is licensed under SIL OFL 1.1 -
- * http://scripts.sil.org/OFL
- * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- * http://opensource.org/licenses/mit-license.html
- * - Font Awesome documentation licensed under CC BY 3.0 -
- * http://creativecommons.org/licenses/by/3.0/
- * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- * "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- * Author - Dave Gandy
- * ------------------------------------------------------------------------------
- * Email: dave@fontawesome.io
- * Twitter: http://twitter.com/davegandy
- * Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-
-.icon-large {
- font-size: 4/3em;
- margin-top: -4px;
- padding-top: 3px;
- margin-bottom: -4px;
- padding-bottom: 3px;
- vertical-align: middle;
-}
-
-.nav {
- [class^="icon-"],
- [class*=" icon-"] {
- vertical-align: inherit;
- margin-top: -4px;
- padding-top: 3px;
- margin-bottom: -4px;
- padding-bottom: 3px;
- &.icon-large {
- vertical-align: -25%;
- }
- }
-}
-
-.nav-pills, .nav-tabs {
- [class^="icon-"],
- [class*=" icon-"] {
- &.icon-large {
- line-height: .75em;
- margin-top: -7px;
- padding-top: 5px;
- margin-bottom: -5px;
- padding-bottom: 4px;
- }
- }
-}
-
-.btn {
- [class^="icon-"],
- [class*=" icon-"] {
- &.pull-left, &.pull-right { vertical-align: inherit; }
- &.icon-large {
- margin-top: -.5em;
- }
- }
-}
-
-a [class^="icon-"],
-a [class*=" icon-"] {
- cursor: pointer;
-}
-
-.ie7icon(@inner) { *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')"; }
-
-
-.icon-glass {
- .ie7icon('&#xf000;');
-}
-
-
-.icon-music {
- .ie7icon('&#xf001;');
-}
-
-
-.icon-search {
- .ie7icon('&#xf002;');
-}
-
-
-.icon-envelope-alt {
- .ie7icon('&#xf003;');
-}
-
-
-.icon-heart {
- .ie7icon('&#xf004;');
-}
-
-
-.icon-star {
- .ie7icon('&#xf005;');
-}
-
-
-.icon-star-empty {
- .ie7icon('&#xf006;');
-}
-
-
-.icon-user {
- .ie7icon('&#xf007;');
-}
-
-
-.icon-film {
- .ie7icon('&#xf008;');
-}
-
-
-.icon-th-large {
- .ie7icon('&#xf009;');
-}
-
-
-.icon-th {
- .ie7icon('&#xf00a;');
-}
-
-
-.icon-th-list {
- .ie7icon('&#xf00b;');
-}
-
-
-.icon-ok {
- .ie7icon('&#xf00c;');
-}
-
-
-.icon-remove {
- .ie7icon('&#xf00d;');
-}
-
-
-.icon-zoom-in {
- .ie7icon('&#xf00e;');
-}
-
-
-.icon-zoom-out {
- .ie7icon('&#xf010;');
-}
-
-
-.icon-off {
- .ie7icon('&#xf011;');
-}
-
-.icon-power-off {
- .ie7icon('&#xf011;');
-}
-
-
-.icon-signal {
- .ie7icon('&#xf012;');
-}
-
-
-.icon-cog {
- .ie7icon('&#xf013;');
-}
-
-.icon-gear {
- .ie7icon('&#xf013;');
-}
-
-
-.icon-trash {
- .ie7icon('&#xf014;');
-}
-
-
-.icon-home {
- .ie7icon('&#xf015;');
-}
-
-
-.icon-file-alt {
- .ie7icon('&#xf016;');
-}
-
-
-.icon-time {
- .ie7icon('&#xf017;');
-}
-
-
-.icon-road {
- .ie7icon('&#xf018;');
-}
-
-
-.icon-download-alt {
- .ie7icon('&#xf019;');
-}
-
-
-.icon-download {
- .ie7icon('&#xf01a;');
-}
-
-
-.icon-upload {
- .ie7icon('&#xf01b;');
-}
-
-
-.icon-inbox {
- .ie7icon('&#xf01c;');
-}
-
-
-.icon-play-circle {
- .ie7icon('&#xf01d;');
-}
-
-
-.icon-repeat {
- .ie7icon('&#xf01e;');
-}
-
-.icon-rotate-right {
- .ie7icon('&#xf01e;');
-}
-
-
-.icon-refresh {
- .ie7icon('&#xf021;');
-}
-
-
-.icon-list-alt {
- .ie7icon('&#xf022;');
-}
-
-
-.icon-lock {
- .ie7icon('&#xf023;');
-}
-
-
-.icon-flag {
- .ie7icon('&#xf024;');
-}
-
-
-.icon-headphones {
- .ie7icon('&#xf025;');
-}
-
-
-.icon-volume-off {
- .ie7icon('&#xf026;');
-}
-
-
-.icon-volume-down {
- .ie7icon('&#xf027;');
-}
-
-
-.icon-volume-up {
- .ie7icon('&#xf028;');
-}
-
-
-.icon-qrcode {
- .ie7icon('&#xf029;');
-}
-
-
-.icon-barcode {
- .ie7icon('&#xf02a;');
-}
-
-
-.icon-tag {
- .ie7icon('&#xf02b;');
-}
-
-
-.icon-tags {
- .ie7icon('&#xf02c;');
-}
-
-
-.icon-book {
- .ie7icon('&#xf02d;');
-}
-
-
-.icon-bookmark {
- .ie7icon('&#xf02e;');
-}
-
-
-.icon-print {
- .ie7icon('&#xf02f;');
-}
-
-
-.icon-camera {
- .ie7icon('&#xf030;');
-}
-
-
-.icon-font {
- .ie7icon('&#xf031;');
-}
-
-
-.icon-bold {
- .ie7icon('&#xf032;');
-}
-
-
-.icon-italic {
- .ie7icon('&#xf033;');
-}
-
-
-.icon-text-height {
- .ie7icon('&#xf034;');
-}
-
-
-.icon-text-width {
- .ie7icon('&#xf035;');
-}
-
-
-.icon-align-left {
- .ie7icon('&#xf036;');
-}
-
-
-.icon-align-center {
- .ie7icon('&#xf037;');
-}
-
-
-.icon-align-right {
- .ie7icon('&#xf038;');
-}
-
-
-.icon-align-justify {
- .ie7icon('&#xf039;');
-}
-
-
-.icon-list {
- .ie7icon('&#xf03a;');
-}
-
-
-.icon-indent-left {
- .ie7icon('&#xf03b;');
-}
-
-
-.icon-indent-right {
- .ie7icon('&#xf03c;');
-}
-
-
-.icon-facetime-video {
- .ie7icon('&#xf03d;');
-}
-
-
-.icon-picture {
- .ie7icon('&#xf03e;');
-}
-
-
-.icon-pencil {
- .ie7icon('&#xf040;');
-}
-
-
-.icon-map-marker {
- .ie7icon('&#xf041;');
-}
-
-
-.icon-adjust {
- .ie7icon('&#xf042;');
-}
-
-
-.icon-tint {
- .ie7icon('&#xf043;');
-}
-
-
-.icon-edit {
- .ie7icon('&#xf044;');
-}
-
-
-.icon-share {
- .ie7icon('&#xf045;');
-}
-
-
-.icon-check {
- .ie7icon('&#xf046;');
-}
-
-
-.icon-move {
- .ie7icon('&#xf047;');
-}
-
-
-.icon-step-backward {
- .ie7icon('&#xf048;');
-}
-
-
-.icon-fast-backward {
- .ie7icon('&#xf049;');
-}
-
-
-.icon-backward {
- .ie7icon('&#xf04a;');
-}
-
-
-.icon-play {
- .ie7icon('&#xf04b;');
-}
-
-
-.icon-pause {
- .ie7icon('&#xf04c;');
-}
-
-
-.icon-stop {
- .ie7icon('&#xf04d;');
-}
-
-
-.icon-forward {
- .ie7icon('&#xf04e;');
-}
-
-
-.icon-fast-forward {
- .ie7icon('&#xf050;');
-}
-
-
-.icon-step-forward {
- .ie7icon('&#xf051;');
-}
-
-
-.icon-eject {
- .ie7icon('&#xf052;');
-}
-
-
-.icon-chevron-left {
- .ie7icon('&#xf053;');
-}
-
-
-.icon-chevron-right {
- .ie7icon('&#xf054;');
-}
-
-
-.icon-plus-sign {
- .ie7icon('&#xf055;');
-}
-
-
-.icon-minus-sign {
- .ie7icon('&#xf056;');
-}
-
-
-.icon-remove-sign {
- .ie7icon('&#xf057;');
-}
-
-
-.icon-ok-sign {
- .ie7icon('&#xf058;');
-}
-
-
-.icon-question-sign {
- .ie7icon('&#xf059;');
-}
-
-
-.icon-info-sign {
- .ie7icon('&#xf05a;');
-}
-
-
-.icon-screenshot {
- .ie7icon('&#xf05b;');
-}
-
-
-.icon-remove-circle {
- .ie7icon('&#xf05c;');
-}
-
-
-.icon-ok-circle {
- .ie7icon('&#xf05d;');
-}
-
-
-.icon-ban-circle {
- .ie7icon('&#xf05e;');
-}
-
-
-.icon-arrow-left {
- .ie7icon('&#xf060;');
-}
-
-
-.icon-arrow-right {
- .ie7icon('&#xf061;');
-}
-
-
-.icon-arrow-up {
- .ie7icon('&#xf062;');
-}
-
-
-.icon-arrow-down {
- .ie7icon('&#xf063;');
-}
-
-
-.icon-share-alt {
- .ie7icon('&#xf064;');
-}
-
-.icon-mail-forward {
- .ie7icon('&#xf064;');
-}
-
-
-.icon-resize-full {
- .ie7icon('&#xf065;');
-}
-
-
-.icon-resize-small {
- .ie7icon('&#xf066;');
-}
-
-
-.icon-plus {
- .ie7icon('&#xf067;');
-}
-
-
-.icon-minus {
- .ie7icon('&#xf068;');
-}
-
-
-.icon-asterisk {
- .ie7icon('&#xf069;');
-}
-
-
-.icon-exclamation-sign {
- .ie7icon('&#xf06a;');
-}
-
-
-.icon-gift {
- .ie7icon('&#xf06b;');
-}
-
-
-.icon-leaf {
- .ie7icon('&#xf06c;');
-}
-
-
-.icon-fire {
- .ie7icon('&#xf06d;');
-}
-
-
-.icon-eye-open {
- .ie7icon('&#xf06e;');
-}
-
-
-.icon-eye-close {
- .ie7icon('&#xf070;');
-}
-
-
-.icon-warning-sign {
- .ie7icon('&#xf071;');
-}
-
-
-.icon-plane {
- .ie7icon('&#xf072;');
-}
-
-
-.icon-calendar {
- .ie7icon('&#xf073;');
-}
-
-
-.icon-random {
- .ie7icon('&#xf074;');
-}
-
-
-.icon-comment {
- .ie7icon('&#xf075;');
-}
-
-
-.icon-magnet {
- .ie7icon('&#xf076;');
-}
-
-
-.icon-chevron-up {
- .ie7icon('&#xf077;');
-}
-
-
-.icon-chevron-down {
- .ie7icon('&#xf078;');
-}
-
-
-.icon-retweet {
- .ie7icon('&#xf079;');
-}
-
-
-.icon-shopping-cart {
- .ie7icon('&#xf07a;');
-}
-
-
-.icon-folder-close {
- .ie7icon('&#xf07b;');
-}
-
-
-.icon-folder-open {
- .ie7icon('&#xf07c;');
-}
-
-
-.icon-resize-vertical {
- .ie7icon('&#xf07d;');
-}
-
-
-.icon-resize-horizontal {
- .ie7icon('&#xf07e;');
-}
-
-
-.icon-bar-chart {
- .ie7icon('&#xf080;');
-}
-
-
-.icon-twitter-sign {
- .ie7icon('&#xf081;');
-}
-
-
-.icon-facebook-sign {
- .ie7icon('&#xf082;');
-}
-
-
-.icon-camera-retro {
- .ie7icon('&#xf083;');
-}
-
-
-.icon-key {
- .ie7icon('&#xf084;');
-}
-
-
-.icon-cogs {
- .ie7icon('&#xf085;');
-}
-
-.icon-gears {
- .ie7icon('&#xf085;');
-}
-
-
-.icon-comments {
- .ie7icon('&#xf086;');
-}
-
-
-.icon-thumbs-up-alt {
- .ie7icon('&#xf087;');
-}
-
-
-.icon-thumbs-down-alt {
- .ie7icon('&#xf088;');
-}
-
-
-.icon-star-half {
- .ie7icon('&#xf089;');
-}
-
-
-.icon-heart-empty {
- .ie7icon('&#xf08a;');
-}
-
-
-.icon-signout {
- .ie7icon('&#xf08b;');
-}
-
-
-.icon-linkedin-sign {
- .ie7icon('&#xf08c;');
-}
-
-
-.icon-pushpin {
- .ie7icon('&#xf08d;');
-}
-
-
-.icon-external-link {
- .ie7icon('&#xf08e;');
-}
-
-
-.icon-signin {
- .ie7icon('&#xf090;');
-}
-
-
-.icon-trophy {
- .ie7icon('&#xf091;');
-}
-
-
-.icon-github-sign {
- .ie7icon('&#xf092;');
-}
-
-
-.icon-upload-alt {
- .ie7icon('&#xf093;');
-}
-
-
-.icon-lemon {
- .ie7icon('&#xf094;');
-}
-
-
-.icon-phone {
- .ie7icon('&#xf095;');
-}
-
-
-.icon-check-empty {
- .ie7icon('&#xf096;');
-}
-
-.icon-unchecked {
- .ie7icon('&#xf096;');
-}
-
-
-.icon-bookmark-empty {
- .ie7icon('&#xf097;');
-}
-
-
-.icon-phone-sign {
- .ie7icon('&#xf098;');
-}
-
-
-.icon-twitter {
- .ie7icon('&#xf099;');
-}
-
-
-.icon-facebook {
- .ie7icon('&#xf09a;');
-}
-
-
-.icon-github {
- .ie7icon('&#xf09b;');
-}
-
-
-.icon-unlock {
- .ie7icon('&#xf09c;');
-}
-
-
-.icon-credit-card {
- .ie7icon('&#xf09d;');
-}
-
-
-.icon-rss {
- .ie7icon('&#xf09e;');
-}
-
-
-.icon-hdd {
- .ie7icon('&#xf0a0;');
-}
-
-
-.icon-bullhorn {
- .ie7icon('&#xf0a1;');
-}
-
-
-.icon-bell {
- .ie7icon('&#xf0a2;');
-}
-
-
-.icon-certificate {
- .ie7icon('&#xf0a3;');
-}
-
-
-.icon-hand-right {
- .ie7icon('&#xf0a4;');
-}
-
-
-.icon-hand-left {
- .ie7icon('&#xf0a5;');
-}
-
-
-.icon-hand-up {
- .ie7icon('&#xf0a6;');
-}
-
-
-.icon-hand-down {
- .ie7icon('&#xf0a7;');
-}
-
-
-.icon-circle-arrow-left {
- .ie7icon('&#xf0a8;');
-}
-
-
-.icon-circle-arrow-right {
- .ie7icon('&#xf0a9;');
-}
-
-
-.icon-circle-arrow-up {
- .ie7icon('&#xf0aa;');
-}
-
-
-.icon-circle-arrow-down {
- .ie7icon('&#xf0ab;');
-}
-
-
-.icon-globe {
- .ie7icon('&#xf0ac;');
-}
-
-
-.icon-wrench {
- .ie7icon('&#xf0ad;');
-}
-
-
-.icon-tasks {
- .ie7icon('&#xf0ae;');
-}
-
-
-.icon-filter {
- .ie7icon('&#xf0b0;');
-}
-
-
-.icon-briefcase {
- .ie7icon('&#xf0b1;');
-}
-
-
-.icon-fullscreen {
- .ie7icon('&#xf0b2;');
-}
-
-
-.icon-group {
- .ie7icon('&#xf0c0;');
-}
-
-
-.icon-link {
- .ie7icon('&#xf0c1;');
-}
-
-
-.icon-cloud {
- .ie7icon('&#xf0c2;');
-}
-
-
-.icon-beaker {
- .ie7icon('&#xf0c3;');
-}
-
-
-.icon-cut {
- .ie7icon('&#xf0c4;');
-}
-
-
-.icon-copy {
- .ie7icon('&#xf0c5;');
-}
-
-
-.icon-paper-clip {
- .ie7icon('&#xf0c6;');
-}
-
-.icon-paperclip {
- .ie7icon('&#xf0c6;');
-}
-
-
-.icon-save {
- .ie7icon('&#xf0c7;');
-}
-
-
-.icon-sign-blank {
- .ie7icon('&#xf0c8;');
-}
-
-
-.icon-reorder {
- .ie7icon('&#xf0c9;');
-}
-
-
-.icon-list-ul {
- .ie7icon('&#xf0ca;');
-}
-
-
-.icon-list-ol {
- .ie7icon('&#xf0cb;');
-}
-
-
-.icon-strikethrough {
- .ie7icon('&#xf0cc;');
-}
-
-
-.icon-underline {
- .ie7icon('&#xf0cd;');
-}
-
-
-.icon-table {
- .ie7icon('&#xf0ce;');
-}
-
-
-.icon-magic {
- .ie7icon('&#xf0d0;');
-}
-
-
-.icon-truck {
- .ie7icon('&#xf0d1;');
-}
-
-
-.icon-pinterest {
- .ie7icon('&#xf0d2;');
-}
-
-
-.icon-pinterest-sign {
- .ie7icon('&#xf0d3;');
-}
-
-
-.icon-google-plus-sign {
- .ie7icon('&#xf0d4;');
-}
-
-
-.icon-google-plus {
- .ie7icon('&#xf0d5;');
-}
-
-
-.icon-money {
- .ie7icon('&#xf0d6;');
-}
-
-
-.icon-caret-down {
- .ie7icon('&#xf0d7;');
-}
-
-
-.icon-caret-up {
- .ie7icon('&#xf0d8;');
-}
-
-
-.icon-caret-left {
- .ie7icon('&#xf0d9;');
-}
-
-
-.icon-caret-right {
- .ie7icon('&#xf0da;');
-}
-
-
-.icon-columns {
- .ie7icon('&#xf0db;');
-}
-
-
-.icon-sort {
- .ie7icon('&#xf0dc;');
-}
-
-
-.icon-sort-down {
- .ie7icon('&#xf0dd;');
-}
-
-
-.icon-sort-up {
- .ie7icon('&#xf0de;');
-}
-
-
-.icon-envelope {
- .ie7icon('&#xf0e0;');
-}
-
-
-.icon-linkedin {
- .ie7icon('&#xf0e1;');
-}
-
-
-.icon-undo {
- .ie7icon('&#xf0e2;');
-}
-
-.icon-rotate-left {
- .ie7icon('&#xf0e2;');
-}
-
-
-.icon-legal {
- .ie7icon('&#xf0e3;');
-}
-
-
-.icon-dashboard {
- .ie7icon('&#xf0e4;');
-}
-
-
-.icon-comment-alt {
- .ie7icon('&#xf0e5;');
-}
-
-
-.icon-comments-alt {
- .ie7icon('&#xf0e6;');
-}
-
-
-.icon-bolt {
- .ie7icon('&#xf0e7;');
-}
-
-
-.icon-sitemap {
- .ie7icon('&#xf0e8;');
-}
-
-
-.icon-umbrella {
- .ie7icon('&#xf0e9;');
-}
-
-
-.icon-paste {
- .ie7icon('&#xf0ea;');
-}
-
-
-.icon-lightbulb {
- .ie7icon('&#xf0eb;');
-}
-
-
-.icon-exchange {
- .ie7icon('&#xf0ec;');
-}
-
-
-.icon-cloud-download {
- .ie7icon('&#xf0ed;');
-}
-
-
-.icon-cloud-upload {
- .ie7icon('&#xf0ee;');
-}
-
-
-.icon-user-md {
- .ie7icon('&#xf0f0;');
-}
-
-
-.icon-stethoscope {
- .ie7icon('&#xf0f1;');
-}
-
-
-.icon-suitcase {
- .ie7icon('&#xf0f2;');
-}
-
-
-.icon-bell-alt {
- .ie7icon('&#xf0f3;');
-}
-
-
-.icon-coffee {
- .ie7icon('&#xf0f4;');
-}
-
-
-.icon-food {
- .ie7icon('&#xf0f5;');
-}
-
-
-.icon-file-text-alt {
- .ie7icon('&#xf0f6;');
-}
-
-
-.icon-building {
- .ie7icon('&#xf0f7;');
-}
-
-
-.icon-hospital {
- .ie7icon('&#xf0f8;');
-}
-
-
-.icon-ambulance {
- .ie7icon('&#xf0f9;');
-}
-
-
-.icon-medkit {
- .ie7icon('&#xf0fa;');
-}
-
-
-.icon-fighter-jet {
- .ie7icon('&#xf0fb;');
-}
-
-
-.icon-beer {
- .ie7icon('&#xf0fc;');
-}
-
-
-.icon-h-sign {
- .ie7icon('&#xf0fd;');
-}
-
-
-.icon-plus-sign-alt {
- .ie7icon('&#xf0fe;');
-}
-
-
-.icon-double-angle-left {
- .ie7icon('&#xf100;');
-}
-
-
-.icon-double-angle-right {
- .ie7icon('&#xf101;');
-}
-
-
-.icon-double-angle-up {
- .ie7icon('&#xf102;');
-}
-
-
-.icon-double-angle-down {
- .ie7icon('&#xf103;');
-}
-
-
-.icon-angle-left {
- .ie7icon('&#xf104;');
-}
-
-
-.icon-angle-right {
- .ie7icon('&#xf105;');
-}
-
-
-.icon-angle-up {
- .ie7icon('&#xf106;');
-}
-
-
-.icon-angle-down {
- .ie7icon('&#xf107;');
-}
-
-
-.icon-desktop {
- .ie7icon('&#xf108;');
-}
-
-
-.icon-laptop {
- .ie7icon('&#xf109;');
-}
-
-
-.icon-tablet {
- .ie7icon('&#xf10a;');
-}
-
-
-.icon-mobile-phone {
- .ie7icon('&#xf10b;');
-}
-
-
-.icon-circle-blank {
- .ie7icon('&#xf10c;');
-}
-
-
-.icon-quote-left {
- .ie7icon('&#xf10d;');
-}
-
-
-.icon-quote-right {
- .ie7icon('&#xf10e;');
-}
-
-
-.icon-spinner {
- .ie7icon('&#xf110;');
-}
-
-
-.icon-circle {
- .ie7icon('&#xf111;');
-}
-
-
-.icon-reply {
- .ie7icon('&#xf112;');
-}
-
-.icon-mail-reply {
- .ie7icon('&#xf112;');
-}
-
-
-.icon-github-alt {
- .ie7icon('&#xf113;');
-}
-
-
-.icon-folder-close-alt {
- .ie7icon('&#xf114;');
-}
-
-
-.icon-folder-open-alt {
- .ie7icon('&#xf115;');
-}
-
-
-.icon-expand-alt {
- .ie7icon('&#xf116;');
-}
-
-
-.icon-collapse-alt {
- .ie7icon('&#xf117;');
-}
-
-
-.icon-smile {
- .ie7icon('&#xf118;');
-}
-
-
-.icon-frown {
- .ie7icon('&#xf119;');
-}
-
-
-.icon-meh {
- .ie7icon('&#xf11a;');
-}
-
-
-.icon-gamepad {
- .ie7icon('&#xf11b;');
-}
-
-
-.icon-keyboard {
- .ie7icon('&#xf11c;');
-}
-
-
-.icon-flag-alt {
- .ie7icon('&#xf11d;');
-}
-
-
-.icon-flag-checkered {
- .ie7icon('&#xf11e;');
-}
-
-
-.icon-terminal {
- .ie7icon('&#xf120;');
-}
-
-
-.icon-code {
- .ie7icon('&#xf121;');
-}
-
-
-.icon-reply-all {
- .ie7icon('&#xf122;');
-}
-
-
-.icon-mail-reply-all {
- .ie7icon('&#xf122;');
-}
-
-
-.icon-star-half-empty {
- .ie7icon('&#xf123;');
-}
-
-.icon-star-half-full {
- .ie7icon('&#xf123;');
-}
-
-
-.icon-location-arrow {
- .ie7icon('&#xf124;');
-}
-
-
-.icon-crop {
- .ie7icon('&#xf125;');
-}
-
-
-.icon-code-fork {
- .ie7icon('&#xf126;');
-}
-
-
-.icon-unlink {
- .ie7icon('&#xf127;');
-}
-
-
-.icon-question {
- .ie7icon('&#xf128;');
-}
-
-
-.icon-info {
- .ie7icon('&#xf129;');
-}
-
-
-.icon-exclamation {
- .ie7icon('&#xf12a;');
-}
-
-
-.icon-superscript {
- .ie7icon('&#xf12b;');
-}
-
-
-.icon-subscript {
- .ie7icon('&#xf12c;');
-}
-
-
-.icon-eraser {
- .ie7icon('&#xf12d;');
-}
-
-
-.icon-puzzle-piece {
- .ie7icon('&#xf12e;');
-}
-
-
-.icon-microphone {
- .ie7icon('&#xf130;');
-}
-
-
-.icon-microphone-off {
- .ie7icon('&#xf131;');
-}
-
-
-.icon-shield {
- .ie7icon('&#xf132;');
-}
-
-
-.icon-calendar-empty {
- .ie7icon('&#xf133;');
-}
-
-
-.icon-fire-extinguisher {
- .ie7icon('&#xf134;');
-}
-
-
-.icon-rocket {
- .ie7icon('&#xf135;');
-}
-
-
-.icon-maxcdn {
- .ie7icon('&#xf136;');
-}
-
-
-.icon-chevron-sign-left {
- .ie7icon('&#xf137;');
-}
-
-
-.icon-chevron-sign-right {
- .ie7icon('&#xf138;');
-}
-
-
-.icon-chevron-sign-up {
- .ie7icon('&#xf139;');
-}
-
-
-.icon-chevron-sign-down {
- .ie7icon('&#xf13a;');
-}
-
-
-.icon-html5 {
- .ie7icon('&#xf13b;');
-}
-
-
-.icon-css3 {
- .ie7icon('&#xf13c;');
-}
-
-
-.icon-anchor {
- .ie7icon('&#xf13d;');
-}
-
-
-.icon-unlock-alt {
- .ie7icon('&#xf13e;');
-}
-
-
-.icon-bullseye {
- .ie7icon('&#xf140;');
-}
-
-
-.icon-ellipsis-horizontal {
- .ie7icon('&#xf141;');
-}
-
-
-.icon-ellipsis-vertical {
- .ie7icon('&#xf142;');
-}
-
-
-.icon-rss-sign {
- .ie7icon('&#xf143;');
-}
-
-
-.icon-play-sign {
- .ie7icon('&#xf144;');
-}
-
-
-.icon-ticket {
- .ie7icon('&#xf145;');
-}
-
-
-.icon-minus-sign-alt {
- .ie7icon('&#xf146;');
-}
-
-
-.icon-check-minus {
- .ie7icon('&#xf147;');
-}
-
-
-.icon-level-up {
- .ie7icon('&#xf148;');
-}
-
-
-.icon-level-down {
- .ie7icon('&#xf149;');
-}
-
-
-.icon-check-sign {
- .ie7icon('&#xf14a;');
-}
-
-
-.icon-edit-sign {
- .ie7icon('&#xf14b;');
-}
-
-
-.icon-external-link-sign {
- .ie7icon('&#xf14c;');
-}
-
-
-.icon-share-sign {
- .ie7icon('&#xf14d;');
-}
-
-
-.icon-compass {
- .ie7icon('&#xf14e;');
-}
-
-
-.icon-collapse {
- .ie7icon('&#xf150;');
-}
-
-
-.icon-collapse-top {
- .ie7icon('&#xf151;');
-}
-
-
-.icon-expand {
- .ie7icon('&#xf152;');
-}
-
-
-.icon-eur {
- .ie7icon('&#xf153;');
-}
-
-.icon-euro {
- .ie7icon('&#xf153;');
-}
-
-
-.icon-gbp {
- .ie7icon('&#xf154;');
-}
-
-
-.icon-usd {
- .ie7icon('&#xf155;');
-}
-
-.icon-dollar {
- .ie7icon('&#xf155;');
-}
-
-
-.icon-inr {
- .ie7icon('&#xf156;');
-}
-
-.icon-rupee {
- .ie7icon('&#xf156;');
-}
-
-
-.icon-jpy {
- .ie7icon('&#xf157;');
-}
-
-.icon-yen {
- .ie7icon('&#xf157;');
-}
-
-
-.icon-cny {
- .ie7icon('&#xf158;');
-}
-
-.icon-renminbi {
- .ie7icon('&#xf158;');
-}
-
-
-.icon-krw {
- .ie7icon('&#xf159;');
-}
-
-.icon-won {
- .ie7icon('&#xf159;');
-}
-
-
-.icon-btc {
- .ie7icon('&#xf15a;');
-}
-
-.icon-bitcoin {
- .ie7icon('&#xf15a;');
-}
-
-
-.icon-file {
- .ie7icon('&#xf15b;');
-}
-
-
-.icon-file-text {
- .ie7icon('&#xf15c;');
-}
-
-
-.icon-sort-by-alphabet {
- .ie7icon('&#xf15d;');
-}
-
-
-.icon-sort-by-alphabet-alt {
- .ie7icon('&#xf15e;');
-}
-
-
-.icon-sort-by-attributes {
- .ie7icon('&#xf160;');
-}
-
-
-.icon-sort-by-attributes-alt {
- .ie7icon('&#xf161;');
-}
-
-
-.icon-sort-by-order {
- .ie7icon('&#xf162;');
-}
-
-
-.icon-sort-by-order-alt {
- .ie7icon('&#xf163;');
-}
-
-
-.icon-thumbs-up {
- .ie7icon('&#xf164;');
-}
-
-
-.icon-thumbs-down {
- .ie7icon('&#xf165;');
-}
-
-
-.icon-youtube-sign {
- .ie7icon('&#xf166;');
-}
-
-
-.icon-youtube {
- .ie7icon('&#xf167;');
-}
-
-
-.icon-xing {
- .ie7icon('&#xf168;');
-}
-
-
-.icon-xing-sign {
- .ie7icon('&#xf169;');
-}
-
-
-.icon-youtube-play {
- .ie7icon('&#xf16a;');
-}
-
-
-.icon-dropbox {
- .ie7icon('&#xf16b;');
-}
-
-
-.icon-stackexchange {
- .ie7icon('&#xf16c;');
-}
-
-
-.icon-instagram {
- .ie7icon('&#xf16d;');
-}
-
-
-.icon-flickr {
- .ie7icon('&#xf16e;');
-}
-
-
-.icon-adn {
- .ie7icon('&#xf170;');
-}
-
-
-.icon-bitbucket {
- .ie7icon('&#xf171;');
-}
-
-
-.icon-bitbucket-sign {
- .ie7icon('&#xf172;');
-}
-
-
-.icon-tumblr {
- .ie7icon('&#xf173;');
-}
-
-
-.icon-tumblr-sign {
- .ie7icon('&#xf174;');
-}
-
-
-.icon-long-arrow-down {
- .ie7icon('&#xf175;');
-}
-
-
-.icon-long-arrow-up {
- .ie7icon('&#xf176;');
-}
-
-
-.icon-long-arrow-left {
- .ie7icon('&#xf177;');
-}
-
-
-.icon-long-arrow-right {
- .ie7icon('&#xf178;');
-}
-
-
-.icon-apple {
- .ie7icon('&#xf179;');
-}
-
-
-.icon-windows {
- .ie7icon('&#xf17a;');
-}
-
-
-.icon-android {
- .ie7icon('&#xf17b;');
-}
-
-
-.icon-linux {
- .ie7icon('&#xf17c;');
-}
-
-
-.icon-dribbble {
- .ie7icon('&#xf17d;');
-}
-
-
-.icon-skype {
- .ie7icon('&#xf17e;');
-}
-
-
-.icon-foursquare {
- .ie7icon('&#xf180;');
-}
-
-
-.icon-trello {
- .ie7icon('&#xf181;');
-}
-
-
-.icon-female {
- .ie7icon('&#xf182;');
-}
-
-
-.icon-male {
- .ie7icon('&#xf183;');
-}
-
-
-.icon-gittip {
- .ie7icon('&#xf184;');
-}
-
-
-.icon-sun {
- .ie7icon('&#xf185;');
-}
-
-
-.icon-moon {
- .ie7icon('&#xf186;');
-}
-
-
-.icon-archive {
- .ie7icon('&#xf187;');
-}
-
-
-.icon-bug {
- .ie7icon('&#xf188;');
-}
-
-
-.icon-vk {
- .ie7icon('&#xf189;');
-}
-
-
-.icon-weibo {
- .ie7icon('&#xf18a;');
-}
-
-
-.icon-renren {
- .ie7icon('&#xf18b;');
-}
-
-
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome.less
deleted file mode 100644
index 0f454612b..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/font-awesome.less
+++ /dev/null
@@ -1,33 +0,0 @@
-/*!
- * Font Awesome 3.2.1
- * the iconic font designed for Bootstrap
- * ------------------------------------------------------------------------------
- * The full suite of pictographic icons, examples, and documentation can be
- * found at http://fontawesome.io. Stay up to date on Twitter at
- * http://twitter.com/fontawesome.
- *
- * License
- * ------------------------------------------------------------------------------
- * - The Font Awesome font is licensed under SIL OFL 1.1 -
- * http://scripts.sil.org/OFL
- * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- * http://opensource.org/licenses/mit-license.html
- * - Font Awesome documentation licensed under CC BY 3.0 -
- * http://creativecommons.org/licenses/by/3.0/
- * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- * "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- * Author - Dave Gandy
- * ------------------------------------------------------------------------------
- * Email: dave@fontawesome.io
- * Twitter: http://twitter.com/davegandy
- * Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-
-@import "variables.less";
-@import "mixins.less";
-@import "path.less";
-@import "core.less";
-@import "bootstrap.less";
-@import "extras.less";
-@import "icons.less";
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/icons.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/icons.less
deleted file mode 100644
index 476d201ec..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/icons.less
+++ /dev/null
@@ -1,381 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-
-.icon-glass:before { content: @glass; }
-.icon-music:before { content: @music; }
-.icon-search:before { content: @search; }
-.icon-envelope-alt:before { content: @envelope-alt; }
-.icon-heart:before { content: @heart; }
-.icon-star:before { content: @star; }
-.icon-star-empty:before { content: @star-empty; }
-.icon-user:before { content: @user; }
-.icon-film:before { content: @film; }
-.icon-th-large:before { content: @th-large; }
-.icon-th:before { content: @th; }
-.icon-th-list:before { content: @th-list; }
-.icon-ok:before { content: @ok; }
-.icon-remove:before { content: @remove; }
-.icon-zoom-in:before { content: @zoom-in; }
-.icon-zoom-out:before { content: @zoom-out; }
-.icon-power-off:before,
-.icon-off:before { content: @off; }
-.icon-signal:before { content: @signal; }
-.icon-gear:before,
-.icon-cog:before { content: @cog; }
-.icon-trash:before { content: @trash; }
-.icon-home:before { content: @home; }
-.icon-file-alt:before { content: @file-alt; }
-.icon-time:before { content: @time; }
-.icon-road:before { content: @road; }
-.icon-download-alt:before { content: @download-alt; }
-.icon-download:before { content: @download; }
-.icon-upload:before { content: @upload; }
-.icon-inbox:before { content: @inbox; }
-.icon-play-circle:before { content: @play-circle; }
-.icon-rotate-right:before,
-.icon-repeat:before { content: @repeat; }
-.icon-refresh:before { content: @refresh; }
-.icon-list-alt:before { content: @list-alt; }
-.icon-lock:before { content: @lock; }
-.icon-flag:before { content: @flag; }
-.icon-headphones:before { content: @headphones; }
-.icon-volume-off:before { content: @volume-off; }
-.icon-volume-down:before { content: @volume-down; }
-.icon-volume-up:before { content: @volume-up; }
-.icon-qrcode:before { content: @qrcode; }
-.icon-barcode:before { content: @barcode; }
-.icon-tag:before { content: @tag; }
-.icon-tags:before { content: @tags; }
-.icon-book:before { content: @book; }
-.icon-bookmark:before { content: @bookmark; }
-.icon-print:before { content: @print; }
-.icon-camera:before { content: @camera; }
-.icon-font:before { content: @font; }
-.icon-bold:before { content: @bold; }
-.icon-italic:before { content: @italic; }
-.icon-text-height:before { content: @text-height; }
-.icon-text-width:before { content: @text-width; }
-.icon-align-left:before { content: @align-left; }
-.icon-align-center:before { content: @align-center; }
-.icon-align-right:before { content: @align-right; }
-.icon-align-justify:before { content: @align-justify; }
-.icon-list:before { content: @list; }
-.icon-indent-left:before { content: @indent-left; }
-.icon-indent-right:before { content: @indent-right; }
-.icon-facetime-video:before { content: @facetime-video; }
-.icon-picture:before { content: @picture; }
-.icon-pencil:before { content: @pencil; }
-.icon-map-marker:before { content: @map-marker; }
-.icon-adjust:before { content: @adjust; }
-.icon-tint:before { content: @tint; }
-.icon-edit:before { content: @edit; }
-.icon-share:before { content: @share; }
-.icon-check:before { content: @check; }
-.icon-move:before { content: @move; }
-.icon-step-backward:before { content: @step-backward; }
-.icon-fast-backward:before { content: @fast-backward; }
-.icon-backward:before { content: @backward; }
-.icon-play:before { content: @play; }
-.icon-pause:before { content: @pause; }
-.icon-stop:before { content: @stop; }
-.icon-forward:before { content: @forward; }
-.icon-fast-forward:before { content: @fast-forward; }
-.icon-step-forward:before { content: @step-forward; }
-.icon-eject:before { content: @eject; }
-.icon-chevron-left:before { content: @chevron-left; }
-.icon-chevron-right:before { content: @chevron-right; }
-.icon-plus-sign:before { content: @plus-sign; }
-.icon-minus-sign:before { content: @minus-sign; }
-.icon-remove-sign:before { content: @remove-sign; }
-.icon-ok-sign:before { content: @ok-sign; }
-.icon-question-sign:before { content: @question-sign; }
-.icon-info-sign:before { content: @info-sign; }
-.icon-screenshot:before { content: @screenshot; }
-.icon-remove-circle:before { content: @remove-circle; }
-.icon-ok-circle:before { content: @ok-circle; }
-.icon-ban-circle:before { content: @ban-circle; }
-.icon-arrow-left:before { content: @arrow-left; }
-.icon-arrow-right:before { content: @arrow-right; }
-.icon-arrow-up:before { content: @arrow-up; }
-.icon-arrow-down:before { content: @arrow-down; }
-.icon-mail-forward:before,
-.icon-share-alt:before { content: @share-alt; }
-.icon-resize-full:before { content: @resize-full; }
-.icon-resize-small:before { content: @resize-small; }
-.icon-plus:before { content: @plus; }
-.icon-minus:before { content: @minus; }
-.icon-asterisk:before { content: @asterisk; }
-.icon-exclamation-sign:before { content: @exclamation-sign; }
-.icon-gift:before { content: @gift; }
-.icon-leaf:before { content: @leaf; }
-.icon-fire:before { content: @fire; }
-.icon-eye-open:before { content: @eye-open; }
-.icon-eye-close:before { content: @eye-close; }
-.icon-warning-sign:before { content: @warning-sign; }
-.icon-plane:before { content: @plane; }
-.icon-calendar:before { content: @calendar; }
-.icon-random:before { content: @random; }
-.icon-comment:before { content: @comment; }
-.icon-magnet:before { content: @magnet; }
-.icon-chevron-up:before { content: @chevron-up; }
-.icon-chevron-down:before { content: @chevron-down; }
-.icon-retweet:before { content: @retweet; }
-.icon-shopping-cart:before { content: @shopping-cart; }
-.icon-folder-close:before { content: @folder-close; }
-.icon-folder-open:before { content: @folder-open; }
-.icon-resize-vertical:before { content: @resize-vertical; }
-.icon-resize-horizontal:before { content: @resize-horizontal; }
-.icon-bar-chart:before { content: @bar-chart; }
-.icon-twitter-sign:before { content: @twitter-sign; }
-.icon-facebook-sign:before { content: @facebook-sign; }
-.icon-camera-retro:before { content: @camera-retro; }
-.icon-key:before { content: @key; }
-.icon-gears:before,
-.icon-cogs:before { content: @cogs; }
-.icon-comments:before { content: @comments; }
-.icon-thumbs-up-alt:before { content: @thumbs-up-alt; }
-.icon-thumbs-down-alt:before { content: @thumbs-down-alt; }
-.icon-star-half:before { content: @star-half; }
-.icon-heart-empty:before { content: @heart-empty; }
-.icon-signout:before { content: @signout; }
-.icon-linkedin-sign:before { content: @linkedin-sign; }
-.icon-pushpin:before { content: @pushpin; }
-.icon-external-link:before { content: @external-link; }
-.icon-signin:before { content: @signin; }
-.icon-trophy:before { content: @trophy; }
-.icon-github-sign:before { content: @github-sign; }
-.icon-upload-alt:before { content: @upload-alt; }
-.icon-lemon:before { content: @lemon; }
-.icon-phone:before { content: @phone; }
-.icon-unchecked:before,
-.icon-check-empty:before { content: @check-empty; }
-.icon-bookmark-empty:before { content: @bookmark-empty; }
-.icon-phone-sign:before { content: @phone-sign; }
-.icon-twitter:before { content: @twitter; }
-.icon-facebook:before { content: @facebook; }
-.icon-github:before { content: @github; }
-.icon-unlock:before { content: @unlock; }
-.icon-credit-card:before { content: @credit-card; }
-.icon-rss:before { content: @rss; }
-.icon-hdd:before { content: @hdd; }
-.icon-bullhorn:before { content: @bullhorn; }
-.icon-bell:before { content: @bell; }
-.icon-certificate:before { content: @certificate; }
-.icon-hand-right:before { content: @hand-right; }
-.icon-hand-left:before { content: @hand-left; }
-.icon-hand-up:before { content: @hand-up; }
-.icon-hand-down:before { content: @hand-down; }
-.icon-circle-arrow-left:before { content: @circle-arrow-left; }
-.icon-circle-arrow-right:before { content: @circle-arrow-right; }
-.icon-circle-arrow-up:before { content: @circle-arrow-up; }
-.icon-circle-arrow-down:before { content: @circle-arrow-down; }
-.icon-globe:before { content: @globe; }
-.icon-wrench:before { content: @wrench; }
-.icon-tasks:before { content: @tasks; }
-.icon-filter:before { content: @filter; }
-.icon-briefcase:before { content: @briefcase; }
-.icon-fullscreen:before { content: @fullscreen; }
-.icon-group:before { content: @group; }
-.icon-link:before { content: @link; }
-.icon-cloud:before { content: @cloud; }
-.icon-beaker:before { content: @beaker; }
-.icon-cut:before { content: @cut; }
-.icon-copy:before { content: @copy; }
-.icon-paperclip:before,
-.icon-paper-clip:before { content: @paper-clip; }
-.icon-save:before { content: @save; }
-.icon-sign-blank:before { content: @sign-blank; }
-.icon-reorder:before { content: @reorder; }
-.icon-list-ul:before { content: @list-ul; }
-.icon-list-ol:before { content: @list-ol; }
-.icon-strikethrough:before { content: @strikethrough; }
-.icon-underline:before { content: @underline; }
-.icon-table:before { content: @table; }
-.icon-magic:before { content: @magic; }
-.icon-truck:before { content: @truck; }
-.icon-pinterest:before { content: @pinterest; }
-.icon-pinterest-sign:before { content: @pinterest-sign; }
-.icon-google-plus-sign:before { content: @google-plus-sign; }
-.icon-google-plus:before { content: @google-plus; }
-.icon-money:before { content: @money; }
-.icon-caret-down:before { content: @caret-down; }
-.icon-caret-up:before { content: @caret-up; }
-.icon-caret-left:before { content: @caret-left; }
-.icon-caret-right:before { content: @caret-right; }
-.icon-columns:before { content: @columns; }
-.icon-sort:before { content: @sort; }
-.icon-sort-down:before { content: @sort-down; }
-.icon-sort-up:before { content: @sort-up; }
-.icon-envelope:before { content: @envelope; }
-.icon-linkedin:before { content: @linkedin; }
-.icon-rotate-left:before,
-.icon-undo:before { content: @undo; }
-.icon-legal:before { content: @legal; }
-.icon-dashboard:before { content: @dashboard; }
-.icon-comment-alt:before { content: @comment-alt; }
-.icon-comments-alt:before { content: @comments-alt; }
-.icon-bolt:before { content: @bolt; }
-.icon-sitemap:before { content: @sitemap; }
-.icon-umbrella:before { content: @umbrella; }
-.icon-paste:before { content: @paste; }
-.icon-lightbulb:before { content: @lightbulb; }
-.icon-exchange:before { content: @exchange; }
-.icon-cloud-download:before { content: @cloud-download; }
-.icon-cloud-upload:before { content: @cloud-upload; }
-.icon-user-md:before { content: @user-md; }
-.icon-stethoscope:before { content: @stethoscope; }
-.icon-suitcase:before { content: @suitcase; }
-.icon-bell-alt:before { content: @bell-alt; }
-.icon-coffee:before { content: @coffee; }
-.icon-food:before { content: @food; }
-.icon-file-text-alt:before { content: @file-text-alt; }
-.icon-building:before { content: @building; }
-.icon-hospital:before { content: @hospital; }
-.icon-ambulance:before { content: @ambulance; }
-.icon-medkit:before { content: @medkit; }
-.icon-fighter-jet:before { content: @fighter-jet; }
-.icon-beer:before { content: @beer; }
-.icon-h-sign:before { content: @h-sign; }
-.icon-plus-sign-alt:before { content: @plus-sign-alt; }
-.icon-double-angle-left:before { content: @double-angle-left; }
-.icon-double-angle-right:before { content: @double-angle-right; }
-.icon-double-angle-up:before { content: @double-angle-up; }
-.icon-double-angle-down:before { content: @double-angle-down; }
-.icon-angle-left:before { content: @angle-left; }
-.icon-angle-right:before { content: @angle-right; }
-.icon-angle-up:before { content: @angle-up; }
-.icon-angle-down:before { content: @angle-down; }
-.icon-desktop:before { content: @desktop; }
-.icon-laptop:before { content: @laptop; }
-.icon-tablet:before { content: @tablet; }
-.icon-mobile-phone:before { content: @mobile-phone; }
-.icon-circle-blank:before { content: @circle-blank; }
-.icon-quote-left:before { content: @quote-left; }
-.icon-quote-right:before { content: @quote-right; }
-.icon-spinner:before { content: @spinner; }
-.icon-circle:before { content: @circle; }
-.icon-mail-reply:before,
-.icon-reply:before { content: @reply; }
-.icon-github-alt:before { content: @github-alt; }
-.icon-folder-close-alt:before { content: @folder-close-alt; }
-.icon-folder-open-alt:before { content: @folder-open-alt; }
-.icon-expand-alt:before { content: @expand-alt; }
-.icon-collapse-alt:before { content: @collapse-alt; }
-.icon-smile:before { content: @smile; }
-.icon-frown:before { content: @frown; }
-.icon-meh:before { content: @meh; }
-.icon-gamepad:before { content: @gamepad; }
-.icon-keyboard:before { content: @keyboard; }
-.icon-flag-alt:before { content: @flag-alt; }
-.icon-flag-checkered:before { content: @flag-checkered; }
-.icon-terminal:before { content: @terminal; }
-.icon-code:before { content: @code; }
-.icon-reply-all:before { content: @reply-all; }
-.icon-mail-reply-all:before { content: @mail-reply-all; }
-.icon-star-half-full:before,
-.icon-star-half-empty:before { content: @star-half-empty; }
-.icon-location-arrow:before { content: @location-arrow; }
-.icon-crop:before { content: @crop; }
-.icon-code-fork:before { content: @code-fork; }
-.icon-unlink:before { content: @unlink; }
-.icon-question:before { content: @question; }
-.icon-info:before { content: @info; }
-.icon-exclamation:before { content: @exclamation; }
-.icon-superscript:before { content: @superscript; }
-.icon-subscript:before { content: @subscript; }
-.icon-eraser:before { content: @eraser; }
-.icon-puzzle-piece:before { content: @puzzle-piece; }
-.icon-microphone:before { content: @microphone; }
-.icon-microphone-off:before { content: @microphone-off; }
-.icon-shield:before { content: @shield; }
-.icon-calendar-empty:before { content: @calendar-empty; }
-.icon-fire-extinguisher:before { content: @fire-extinguisher; }
-.icon-rocket:before { content: @rocket; }
-.icon-maxcdn:before { content: @maxcdn; }
-.icon-chevron-sign-left:before { content: @chevron-sign-left; }
-.icon-chevron-sign-right:before { content: @chevron-sign-right; }
-.icon-chevron-sign-up:before { content: @chevron-sign-up; }
-.icon-chevron-sign-down:before { content: @chevron-sign-down; }
-.icon-html5:before { content: @html5; }
-.icon-css3:before { content: @css3; }
-.icon-anchor:before { content: @anchor; }
-.icon-unlock-alt:before { content: @unlock-alt; }
-.icon-bullseye:before { content: @bullseye; }
-.icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; }
-.icon-ellipsis-vertical:before { content: @ellipsis-vertical; }
-.icon-rss-sign:before { content: @rss-sign; }
-.icon-play-sign:before { content: @play-sign; }
-.icon-ticket:before { content: @ticket; }
-.icon-minus-sign-alt:before { content: @minus-sign-alt; }
-.icon-check-minus:before { content: @check-minus; }
-.icon-level-up:before { content: @level-up; }
-.icon-level-down:before { content: @level-down; }
-.icon-check-sign:before { content: @check-sign; }
-.icon-edit-sign:before { content: @edit-sign; }
-.icon-external-link-sign:before { content: @external-link-sign; }
-.icon-share-sign:before { content: @share-sign; }
-.icon-compass:before { content: @compass; }
-.icon-collapse:before { content: @collapse; }
-.icon-collapse-top:before { content: @collapse-top; }
-.icon-expand:before { content: @expand; }
-.icon-euro:before,
-.icon-eur:before { content: @eur; }
-.icon-gbp:before { content: @gbp; }
-.icon-dollar:before,
-.icon-usd:before { content: @usd; }
-.icon-rupee:before,
-.icon-inr:before { content: @inr; }
-.icon-yen:before,
-.icon-jpy:before { content: @jpy; }
-.icon-renminbi:before,
-.icon-cny:before { content: @cny; }
-.icon-won:before,
-.icon-krw:before { content: @krw; }
-.icon-bitcoin:before,
-.icon-btc:before { content: @btc; }
-.icon-file:before { content: @file; }
-.icon-file-text:before { content: @file-text; }
-.icon-sort-by-alphabet:before { content: @sort-by-alphabet; }
-.icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; }
-.icon-sort-by-attributes:before { content: @sort-by-attributes; }
-.icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; }
-.icon-sort-by-order:before { content: @sort-by-order; }
-.icon-sort-by-order-alt:before { content: @sort-by-order-alt; }
-.icon-thumbs-up:before { content: @thumbs-up; }
-.icon-thumbs-down:before { content: @thumbs-down; }
-.icon-youtube-sign:before { content: @youtube-sign; }
-.icon-youtube:before { content: @youtube; }
-.icon-xing:before { content: @xing; }
-.icon-xing-sign:before { content: @xing-sign; }
-.icon-youtube-play:before { content: @youtube-play; }
-.icon-dropbox:before { content: @dropbox; }
-.icon-stackexchange:before { content: @stackexchange; }
-.icon-instagram:before { content: @instagram; }
-.icon-flickr:before { content: @flickr; }
-.icon-adn:before { content: @adn; }
-.icon-bitbucket:before { content: @bitbucket; }
-.icon-bitbucket-sign:before { content: @bitbucket-sign; }
-.icon-tumblr:before { content: @tumblr; }
-.icon-tumblr-sign:before { content: @tumblr-sign; }
-.icon-long-arrow-down:before { content: @long-arrow-down; }
-.icon-long-arrow-up:before { content: @long-arrow-up; }
-.icon-long-arrow-left:before { content: @long-arrow-left; }
-.icon-long-arrow-right:before { content: @long-arrow-right; }
-.icon-apple:before { content: @apple; }
-.icon-windows:before { content: @windows; }
-.icon-android:before { content: @android; }
-.icon-linux:before { content: @linux; }
-.icon-dribbble:before { content: @dribbble; }
-.icon-skype:before { content: @skype; }
-.icon-foursquare:before { content: @foursquare; }
-.icon-trello:before { content: @trello; }
-.icon-female:before { content: @female; }
-.icon-male:before { content: @male; }
-.icon-gittip:before { content: @gittip; }
-.icon-sun:before { content: @sun; }
-.icon-moon:before { content: @moon; }
-.icon-archive:before { content: @archive; }
-.icon-bug:before { content: @bug; }
-.icon-vk:before { content: @vk; }
-.icon-weibo:before { content: @weibo; }
-.icon-renren:before { content: @renren; }
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/mixins.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/mixins.less
deleted file mode 100644
index f7fdda590..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/mixins.less
+++ /dev/null
@@ -1,48 +0,0 @@
-// Mixins
-// --------------------------
-
-.icon(@icon) {
- .icon-FontAwesome();
- content: @icon;
-}
-
-.icon-FontAwesome() {
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- text-decoration: inherit;
- -webkit-font-smoothing: antialiased;
- *margin-right: .3em; // fixes ie7 issues
-}
-
-.border-radius(@radius) {
- -webkit-border-radius: @radius;
- -moz-border-radius: @radius;
- border-radius: @radius;
-}
-
-.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) {
- .icon-stack {
- position: relative;
- display: inline-block;
- width: @width;
- height: @height;
- line-height: @width;
- vertical-align: -35%;
- [class^="icon-"],
- [class*=" icon-"] {
- display: block;
- text-align: center;
- position: absolute;
- width: 100%;
- height: 100%;
- font-size: @top-font-size;
- line-height: inherit;
- *line-height: @height;
- }
- .icon-stack-base {
- font-size: @base-font-size;
- *line-height: @height / @base-font-size;
- }
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/path.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/path.less
deleted file mode 100644
index 8ccef8cf0..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/path.less
+++ /dev/null
@@ -1,14 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
- font-family: 'FontAwesome';
- src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}');
- src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'),
- url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'),
- url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'),
- url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg');
-// src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts
- font-weight: normal;
- font-style: normal;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/less/variables.less b/library/font_awesome/src/3.2.1/assets/font-awesome/less/variables.less
deleted file mode 100644
index 9d0879b0d..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/less/variables.less
+++ /dev/null
@@ -1,735 +0,0 @@
-// Variables
-// --------------------------
-
-@FontAwesomePath: "../font";
-//@FontAwesomePath: "//netdna.bootstrapcdn.com/font-awesome/3.2.1/font"; // for referencing Bootstrap CDN font files directly
-@FontAwesomeVersion: "3.2.1";
-@borderColor: #eee;
-@iconMuted: #eee;
-@iconLight: #fff;
-@iconDark: #333;
-@icons-li-width: 30/14em;
-
-
- @glass: "\f000";
-
- @music: "\f001";
-
- @search: "\f002";
-
- @envelope-alt: "\f003";
-
- @heart: "\f004";
-
- @star: "\f005";
-
- @star-empty: "\f006";
-
- @user: "\f007";
-
- @film: "\f008";
-
- @th-large: "\f009";
-
- @th: "\f00a";
-
- @th-list: "\f00b";
-
- @ok: "\f00c";
-
- @remove: "\f00d";
-
- @zoom-in: "\f00e";
-
- @zoom-out: "\f010";
-
- @off: "\f011";
-
- @signal: "\f012";
-
- @cog: "\f013";
-
- @trash: "\f014";
-
- @home: "\f015";
-
- @file-alt: "\f016";
-
- @time: "\f017";
-
- @road: "\f018";
-
- @download-alt: "\f019";
-
- @download: "\f01a";
-
- @upload: "\f01b";
-
- @inbox: "\f01c";
-
- @play-circle: "\f01d";
-
- @repeat: "\f01e";
-
- @refresh: "\f021";
-
- @list-alt: "\f022";
-
- @lock: "\f023";
-
- @flag: "\f024";
-
- @headphones: "\f025";
-
- @volume-off: "\f026";
-
- @volume-down: "\f027";
-
- @volume-up: "\f028";
-
- @qrcode: "\f029";
-
- @barcode: "\f02a";
-
- @tag: "\f02b";
-
- @tags: "\f02c";
-
- @book: "\f02d";
-
- @bookmark: "\f02e";
-
- @print: "\f02f";
-
- @camera: "\f030";
-
- @font: "\f031";
-
- @bold: "\f032";
-
- @italic: "\f033";
-
- @text-height: "\f034";
-
- @text-width: "\f035";
-
- @align-left: "\f036";
-
- @align-center: "\f037";
-
- @align-right: "\f038";
-
- @align-justify: "\f039";
-
- @list: "\f03a";
-
- @indent-left: "\f03b";
-
- @indent-right: "\f03c";
-
- @facetime-video: "\f03d";
-
- @picture: "\f03e";
-
- @pencil: "\f040";
-
- @map-marker: "\f041";
-
- @adjust: "\f042";
-
- @tint: "\f043";
-
- @edit: "\f044";
-
- @share: "\f045";
-
- @check: "\f046";
-
- @move: "\f047";
-
- @step-backward: "\f048";
-
- @fast-backward: "\f049";
-
- @backward: "\f04a";
-
- @play: "\f04b";
-
- @pause: "\f04c";
-
- @stop: "\f04d";
-
- @forward: "\f04e";
-
- @fast-forward: "\f050";
-
- @step-forward: "\f051";
-
- @eject: "\f052";
-
- @chevron-left: "\f053";
-
- @chevron-right: "\f054";
-
- @plus-sign: "\f055";
-
- @minus-sign: "\f056";
-
- @remove-sign: "\f057";
-
- @ok-sign: "\f058";
-
- @question-sign: "\f059";
-
- @info-sign: "\f05a";
-
- @screenshot: "\f05b";
-
- @remove-circle: "\f05c";
-
- @ok-circle: "\f05d";
-
- @ban-circle: "\f05e";
-
- @arrow-left: "\f060";
-
- @arrow-right: "\f061";
-
- @arrow-up: "\f062";
-
- @arrow-down: "\f063";
-
- @share-alt: "\f064";
-
- @resize-full: "\f065";
-
- @resize-small: "\f066";
-
- @plus: "\f067";
-
- @minus: "\f068";
-
- @asterisk: "\f069";
-
- @exclamation-sign: "\f06a";
-
- @gift: "\f06b";
-
- @leaf: "\f06c";
-
- @fire: "\f06d";
-
- @eye-open: "\f06e";
-
- @eye-close: "\f070";
-
- @warning-sign: "\f071";
-
- @plane: "\f072";
-
- @calendar: "\f073";
-
- @random: "\f074";
-
- @comment: "\f075";
-
- @magnet: "\f076";
-
- @chevron-up: "\f077";
-
- @chevron-down: "\f078";
-
- @retweet: "\f079";
-
- @shopping-cart: "\f07a";
-
- @folder-close: "\f07b";
-
- @folder-open: "\f07c";
-
- @resize-vertical: "\f07d";
-
- @resize-horizontal: "\f07e";
-
- @bar-chart: "\f080";
-
- @twitter-sign: "\f081";
-
- @facebook-sign: "\f082";
-
- @camera-retro: "\f083";
-
- @key: "\f084";
-
- @cogs: "\f085";
-
- @comments: "\f086";
-
- @thumbs-up-alt: "\f087";
-
- @thumbs-down-alt: "\f088";
-
- @star-half: "\f089";
-
- @heart-empty: "\f08a";
-
- @signout: "\f08b";
-
- @linkedin-sign: "\f08c";
-
- @pushpin: "\f08d";
-
- @external-link: "\f08e";
-
- @signin: "\f090";
-
- @trophy: "\f091";
-
- @github-sign: "\f092";
-
- @upload-alt: "\f093";
-
- @lemon: "\f094";
-
- @phone: "\f095";
-
- @check-empty: "\f096";
-
- @bookmark-empty: "\f097";
-
- @phone-sign: "\f098";
-
- @twitter: "\f099";
-
- @facebook: "\f09a";
-
- @github: "\f09b";
-
- @unlock: "\f09c";
-
- @credit-card: "\f09d";
-
- @rss: "\f09e";
-
- @hdd: "\f0a0";
-
- @bullhorn: "\f0a1";
-
- @bell: "\f0a2";
-
- @certificate: "\f0a3";
-
- @hand-right: "\f0a4";
-
- @hand-left: "\f0a5";
-
- @hand-up: "\f0a6";
-
- @hand-down: "\f0a7";
-
- @circle-arrow-left: "\f0a8";
-
- @circle-arrow-right: "\f0a9";
-
- @circle-arrow-up: "\f0aa";
-
- @circle-arrow-down: "\f0ab";
-
- @globe: "\f0ac";
-
- @wrench: "\f0ad";
-
- @tasks: "\f0ae";
-
- @filter: "\f0b0";
-
- @briefcase: "\f0b1";
-
- @fullscreen: "\f0b2";
-
- @group: "\f0c0";
-
- @link: "\f0c1";
-
- @cloud: "\f0c2";
-
- @beaker: "\f0c3";
-
- @cut: "\f0c4";
-
- @copy: "\f0c5";
-
- @paper-clip: "\f0c6";
-
- @save: "\f0c7";
-
- @sign-blank: "\f0c8";
-
- @reorder: "\f0c9";
-
- @list-ul: "\f0ca";
-
- @list-ol: "\f0cb";
-
- @strikethrough: "\f0cc";
-
- @underline: "\f0cd";
-
- @table: "\f0ce";
-
- @magic: "\f0d0";
-
- @truck: "\f0d1";
-
- @pinterest: "\f0d2";
-
- @pinterest-sign: "\f0d3";
-
- @google-plus-sign: "\f0d4";
-
- @google-plus: "\f0d5";
-
- @money: "\f0d6";
-
- @caret-down: "\f0d7";
-
- @caret-up: "\f0d8";
-
- @caret-left: "\f0d9";
-
- @caret-right: "\f0da";
-
- @columns: "\f0db";
-
- @sort: "\f0dc";
-
- @sort-down: "\f0dd";
-
- @sort-up: "\f0de";
-
- @envelope: "\f0e0";
-
- @linkedin: "\f0e1";
-
- @undo: "\f0e2";
-
- @legal: "\f0e3";
-
- @dashboard: "\f0e4";
-
- @comment-alt: "\f0e5";
-
- @comments-alt: "\f0e6";
-
- @bolt: "\f0e7";
-
- @sitemap: "\f0e8";
-
- @umbrella: "\f0e9";
-
- @paste: "\f0ea";
-
- @lightbulb: "\f0eb";
-
- @exchange: "\f0ec";
-
- @cloud-download: "\f0ed";
-
- @cloud-upload: "\f0ee";
-
- @user-md: "\f0f0";
-
- @stethoscope: "\f0f1";
-
- @suitcase: "\f0f2";
-
- @bell-alt: "\f0f3";
-
- @coffee: "\f0f4";
-
- @food: "\f0f5";
-
- @file-text-alt: "\f0f6";
-
- @building: "\f0f7";
-
- @hospital: "\f0f8";
-
- @ambulance: "\f0f9";
-
- @medkit: "\f0fa";
-
- @fighter-jet: "\f0fb";
-
- @beer: "\f0fc";
-
- @h-sign: "\f0fd";
-
- @plus-sign-alt: "\f0fe";
-
- @double-angle-left: "\f100";
-
- @double-angle-right: "\f101";
-
- @double-angle-up: "\f102";
-
- @double-angle-down: "\f103";
-
- @angle-left: "\f104";
-
- @angle-right: "\f105";
-
- @angle-up: "\f106";
-
- @angle-down: "\f107";
-
- @desktop: "\f108";
-
- @laptop: "\f109";
-
- @tablet: "\f10a";
-
- @mobile-phone: "\f10b";
-
- @circle-blank: "\f10c";
-
- @quote-left: "\f10d";
-
- @quote-right: "\f10e";
-
- @spinner: "\f110";
-
- @circle: "\f111";
-
- @reply: "\f112";
-
- @github-alt: "\f113";
-
- @folder-close-alt: "\f114";
-
- @folder-open-alt: "\f115";
-
- @expand-alt: "\f116";
-
- @collapse-alt: "\f117";
-
- @smile: "\f118";
-
- @frown: "\f119";
-
- @meh: "\f11a";
-
- @gamepad: "\f11b";
-
- @keyboard: "\f11c";
-
- @flag-alt: "\f11d";
-
- @flag-checkered: "\f11e";
-
- @terminal: "\f120";
-
- @code: "\f121";
-
- @reply-all: "\f122";
-
- @mail-reply-all: "\f122";
-
- @star-half-empty: "\f123";
-
- @location-arrow: "\f124";
-
- @crop: "\f125";
-
- @code-fork: "\f126";
-
- @unlink: "\f127";
-
- @question: "\f128";
-
- @info: "\f129";
-
- @exclamation: "\f12a";
-
- @superscript: "\f12b";
-
- @subscript: "\f12c";
-
- @eraser: "\f12d";
-
- @puzzle-piece: "\f12e";
-
- @microphone: "\f130";
-
- @microphone-off: "\f131";
-
- @shield: "\f132";
-
- @calendar-empty: "\f133";
-
- @fire-extinguisher: "\f134";
-
- @rocket: "\f135";
-
- @maxcdn: "\f136";
-
- @chevron-sign-left: "\f137";
-
- @chevron-sign-right: "\f138";
-
- @chevron-sign-up: "\f139";
-
- @chevron-sign-down: "\f13a";
-
- @html5: "\f13b";
-
- @css3: "\f13c";
-
- @anchor: "\f13d";
-
- @unlock-alt: "\f13e";
-
- @bullseye: "\f140";
-
- @ellipsis-horizontal: "\f141";
-
- @ellipsis-vertical: "\f142";
-
- @rss-sign: "\f143";
-
- @play-sign: "\f144";
-
- @ticket: "\f145";
-
- @minus-sign-alt: "\f146";
-
- @check-minus: "\f147";
-
- @level-up: "\f148";
-
- @level-down: "\f149";
-
- @check-sign: "\f14a";
-
- @edit-sign: "\f14b";
-
- @external-link-sign: "\f14c";
-
- @share-sign: "\f14d";
-
- @compass: "\f14e";
-
- @collapse: "\f150";
-
- @collapse-top: "\f151";
-
- @expand: "\f152";
-
- @eur: "\f153";
-
- @gbp: "\f154";
-
- @usd: "\f155";
-
- @inr: "\f156";
-
- @jpy: "\f157";
-
- @cny: "\f158";
-
- @krw: "\f159";
-
- @btc: "\f15a";
-
- @file: "\f15b";
-
- @file-text: "\f15c";
-
- @sort-by-alphabet: "\f15d";
-
- @sort-by-alphabet-alt: "\f15e";
-
- @sort-by-attributes: "\f160";
-
- @sort-by-attributes-alt: "\f161";
-
- @sort-by-order: "\f162";
-
- @sort-by-order-alt: "\f163";
-
- @thumbs-up: "\f164";
-
- @thumbs-down: "\f165";
-
- @youtube-sign: "\f166";
-
- @youtube: "\f167";
-
- @xing: "\f168";
-
- @xing-sign: "\f169";
-
- @youtube-play: "\f16a";
-
- @dropbox: "\f16b";
-
- @stackexchange: "\f16c";
-
- @instagram: "\f16d";
-
- @flickr: "\f16e";
-
- @adn: "\f170";
-
- @bitbucket: "\f171";
-
- @bitbucket-sign: "\f172";
-
- @tumblr: "\f173";
-
- @tumblr-sign: "\f174";
-
- @long-arrow-down: "\f175";
-
- @long-arrow-up: "\f176";
-
- @long-arrow-left: "\f177";
-
- @long-arrow-right: "\f178";
-
- @apple: "\f179";
-
- @windows: "\f17a";
-
- @android: "\f17b";
-
- @linux: "\f17c";
-
- @dribbble: "\f17d";
-
- @skype: "\f17e";
-
- @foursquare: "\f180";
-
- @trello: "\f181";
-
- @female: "\f182";
-
- @male: "\f183";
-
- @gittip: "\f184";
-
- @sun: "\f185";
-
- @moon: "\f186";
-
- @archive: "\f187";
-
- @bug: "\f188";
-
- @vk: "\f189";
-
- @weibo: "\f18a";
-
- @renren: "\f18b";
-
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_bootstrap.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_bootstrap.scss
deleted file mode 100644
index 837d2df65..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_bootstrap.scss
+++ /dev/null
@@ -1,84 +0,0 @@
-/* BOOTSTRAP SPECIFIC CLASSES
- * -------------------------- */
-
-/* Bootstrap 2.0 sprites.less reset */
-[class^="icon-"],
-[class*=" icon-"] {
- display: inline;
- width: auto;
- height: auto;
- line-height: normal;
- vertical-align: baseline;
- background-image: none;
- background-position: 0% 0%;
- background-repeat: repeat;
- margin-top: 0;
-}
-
-/* more sprites.less reset */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
- background-image: none;
-}
-
-
-/* keeps Bootstrap styles with and without icons the same */
-.btn, .nav {
- [class^="icon-"],
- [class*=" icon-"] {
- // display: inline;
- &.icon-large { line-height: .9em; }
- &.icon-spin { display: inline-block; }
- }
-}
-.nav-tabs, .nav-pills {
- [class^="icon-"],
- [class*=" icon-"] {
- &, &.icon-large { line-height: .9em; }
- }
-}
-.btn {
- [class^="icon-"],
- [class*=" icon-"] {
- &.pull-left, &.pull-right {
- &.icon-2x { margin-top: .18em; }
- }
- &.icon-spin.icon-large { line-height: .8em; }
- }
-}
-.btn.btn-small {
- [class^="icon-"],
- [class*=" icon-"] {
- &.pull-left, &.pull-right {
- &.icon-2x { margin-top: .25em; }
- }
- }
-}
-.btn.btn-large {
- [class^="icon-"],
- [class*=" icon-"] {
- margin-top: 0; // overrides bootstrap default
- &.pull-left, &.pull-right {
- &.icon-2x { margin-top: .05em; }
- }
- &.pull-left.icon-2x { margin-right: .2em; }
- &.pull-right.icon-2x { margin-left: .2em; }
- }
-}
-
-/* Fixes alignment in nav lists */
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
- line-height: inherit;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_core.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_core.scss
deleted file mode 100644
index 0189c73df..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_core.scss
+++ /dev/null
@@ -1,129 +0,0 @@
-/* FONT AWESOME CORE
- * -------------------------- */
-
-[class^="icon-"],
-[class*=" icon-"] {
- @include icon-FontAwesome();
-}
-
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
- text-decoration: inherit;
- display: inline-block;
- speak: none;
-}
-
-/* makes the font 33% larger relative to the icon container */
-.icon-large:before {
- vertical-align: -10%;
- font-size: (4em/3);
-}
-
-/* makes sure icons active on rollover in links */
-a {
- [class^="icon-"],
- [class*=" icon-"] {
- display: inline;
- }
-}
-
-/* increased font size for icon-large */
-[class^="icon-"],
-[class*=" icon-"] {
- &.icon-fixed-width {
- display: inline-block;
- width: (16em/14);
- text-align: right;
- padding-right: (4em/14);
- &.icon-large {
- width: (20em/14);
- }
- }
-}
-
-.icons-ul {
- margin-left: $icons-li-width;
- list-style-type: none;
-
- > li { position: relative; }
-
- .icon-li {
- position: absolute;
- left: -$icons-li-width;
- width: $icons-li-width;
- text-align: center;
- line-height: inherit;
- }
-}
-
-// allows usage of the hide class directly on font awesome icons
-[class^="icon-"],
-[class*=" icon-"] {
- &.hide {
- display: none;
- }
-}
-
-.icon-muted { color: $iconMuted; }
-.icon-light { color: $iconLight; }
-.icon-dark { color: $iconDark; }
-
-// Icon Borders
-// -------------------------
-
-.icon-border {
- border: solid 1px $borderColor;
- padding: .2em .25em .15em;
- @include border-radius(3px);
-}
-
-// Icon Sizes
-// -------------------------
-
-.icon-2x {
- font-size: 2em;
- &.icon-border {
- border-width: 2px;
- @include border-radius(4px);
- }
-}
-.icon-3x {
- font-size: 3em;
- &.icon-border {
- border-width: 3px;
- @include border-radius(5px);
- }
-}
-.icon-4x {
- font-size: 4em;
- &.icon-border {
- border-width: 4px;
- @include border-radius(6px);
- }
-}
-
-.icon-5x {
- font-size: 5em;
- &.icon-border {
- border-width: 5px;
- @include border-radius(7px);
- }
-}
-
-
-// Floats & Margins
-// -------------------------
-
-// Quick floats
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-[class^="icon-"],
-[class*=" icon-"] {
- &.pull-left {
- margin-right: .3em;
- }
- &.pull-right {
- margin-left: .3em;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_extras.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_extras.scss
deleted file mode 100644
index 9a25845d8..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_extras.scss
+++ /dev/null
@@ -1,93 +0,0 @@
-/* EXTRAS
- * -------------------------- */
-
-/* Stacked and layered icon */
-@include icon-stack();
-
-/* Animated rotating icon */
-.icon-spin {
- display: inline-block;
- -moz-animation: spin 2s infinite linear;
- -o-animation: spin 2s infinite linear;
- -webkit-animation: spin 2s infinite linear;
- animation: spin 2s infinite linear;
-}
-
-/* Prevent stack and spinners from being taken inline when inside a link */
-a .icon-stack,
-a .icon-spin {
- display: inline-block;
- text-decoration: none;
-}
-
-@-moz-keyframes spin {
- 0% { -moz-transform: rotate(0deg); }
- 100% { -moz-transform: rotate(359deg); }
-}
-@-webkit-keyframes spin {
- 0% { -webkit-transform: rotate(0deg); }
- 100% { -webkit-transform: rotate(359deg); }
-}
-@-o-keyframes spin {
- 0% { -o-transform: rotate(0deg); }
- 100% { -o-transform: rotate(359deg); }
-}
-@-ms-keyframes spin {
- 0% { -ms-transform: rotate(0deg); }
- 100% { -ms-transform: rotate(359deg); }
-}
-@keyframes spin {
- 0% { transform: rotate(0deg); }
- 100% { transform: rotate(359deg); }
-}
-
-/* Icon rotations and mirroring */
-.icon-rotate-90:before {
- -webkit-transform: rotate(90deg);
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -o-transform: rotate(90deg);
- transform: rotate(90deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-}
-
-.icon-rotate-180:before {
- -webkit-transform: rotate(180deg);
- -moz-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- -o-transform: rotate(180deg);
- transform: rotate(180deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-}
-
-.icon-rotate-270:before {
- -webkit-transform: rotate(270deg);
- -moz-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- -o-transform: rotate(270deg);
- transform: rotate(270deg);
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-}
-
-.icon-flip-horizontal:before {
- -webkit-transform: scale(-1, 1);
- -moz-transform: scale(-1, 1);
- -ms-transform: scale(-1, 1);
- -o-transform: scale(-1, 1);
- transform: scale(-1, 1);
-}
-
-.icon-flip-vertical:before {
- -webkit-transform: scale(1, -1);
- -moz-transform: scale(1, -1);
- -ms-transform: scale(1, -1);
- -o-transform: scale(1, -1);
- transform: scale(1, -1);
-}
-
-/* ensure rotation occurs inside anchor tags */
-a {
- .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {
- &:before { display: inline-block; }
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_icons.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_icons.scss
deleted file mode 100644
index eefda0c9e..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_icons.scss
+++ /dev/null
@@ -1,381 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- * readers do not read off random characters that represent icons */
-
-.icon-glass:before { content: $glass; }
-.icon-music:before { content: $music; }
-.icon-search:before { content: $search; }
-.icon-envelope-alt:before { content: $envelope-alt; }
-.icon-heart:before { content: $heart; }
-.icon-star:before { content: $star; }
-.icon-star-empty:before { content: $star-empty; }
-.icon-user:before { content: $user; }
-.icon-film:before { content: $film; }
-.icon-th-large:before { content: $th-large; }
-.icon-th:before { content: $th; }
-.icon-th-list:before { content: $th-list; }
-.icon-ok:before { content: $ok; }
-.icon-remove:before { content: $remove; }
-.icon-zoom-in:before { content: $zoom-in; }
-.icon-zoom-out:before { content: $zoom-out; }
-.icon-power-off:before,
-.icon-off:before { content: $off; }
-.icon-signal:before { content: $signal; }
-.icon-gear:before,
-.icon-cog:before { content: $cog; }
-.icon-trash:before { content: $trash; }
-.icon-home:before { content: $home; }
-.icon-file-alt:before { content: $file-alt; }
-.icon-time:before { content: $time; }
-.icon-road:before { content: $road; }
-.icon-download-alt:before { content: $download-alt; }
-.icon-download:before { content: $download; }
-.icon-upload:before { content: $upload; }
-.icon-inbox:before { content: $inbox; }
-.icon-play-circle:before { content: $play-circle; }
-.icon-rotate-right:before,
-.icon-repeat:before { content: $repeat; }
-.icon-refresh:before { content: $refresh; }
-.icon-list-alt:before { content: $list-alt; }
-.icon-lock:before { content: $lock; }
-.icon-flag:before { content: $flag; }
-.icon-headphones:before { content: $headphones; }
-.icon-volume-off:before { content: $volume-off; }
-.icon-volume-down:before { content: $volume-down; }
-.icon-volume-up:before { content: $volume-up; }
-.icon-qrcode:before { content: $qrcode; }
-.icon-barcode:before { content: $barcode; }
-.icon-tag:before { content: $tag; }
-.icon-tags:before { content: $tags; }
-.icon-book:before { content: $book; }
-.icon-bookmark:before { content: $bookmark; }
-.icon-print:before { content: $print; }
-.icon-camera:before { content: $camera; }
-.icon-font:before { content: $font; }
-.icon-bold:before { content: $bold; }
-.icon-italic:before { content: $italic; }
-.icon-text-height:before { content: $text-height; }
-.icon-text-width:before { content: $text-width; }
-.icon-align-left:before { content: $align-left; }
-.icon-align-center:before { content: $align-center; }
-.icon-align-right:before { content: $align-right; }
-.icon-align-justify:before { content: $align-justify; }
-.icon-list:before { content: $list; }
-.icon-indent-left:before { content: $indent-left; }
-.icon-indent-right:before { content: $indent-right; }
-.icon-facetime-video:before { content: $facetime-video; }
-.icon-picture:before { content: $picture; }
-.icon-pencil:before { content: $pencil; }
-.icon-map-marker:before { content: $map-marker; }
-.icon-adjust:before { content: $adjust; }
-.icon-tint:before { content: $tint; }
-.icon-edit:before { content: $edit; }
-.icon-share:before { content: $share; }
-.icon-check:before { content: $check; }
-.icon-move:before { content: $move; }
-.icon-step-backward:before { content: $step-backward; }
-.icon-fast-backward:before { content: $fast-backward; }
-.icon-backward:before { content: $backward; }
-.icon-play:before { content: $play; }
-.icon-pause:before { content: $pause; }
-.icon-stop:before { content: $stop; }
-.icon-forward:before { content: $forward; }
-.icon-fast-forward:before { content: $fast-forward; }
-.icon-step-forward:before { content: $step-forward; }
-.icon-eject:before { content: $eject; }
-.icon-chevron-left:before { content: $chevron-left; }
-.icon-chevron-right:before { content: $chevron-right; }
-.icon-plus-sign:before { content: $plus-sign; }
-.icon-minus-sign:before { content: $minus-sign; }
-.icon-remove-sign:before { content: $remove-sign; }
-.icon-ok-sign:before { content: $ok-sign; }
-.icon-question-sign:before { content: $question-sign; }
-.icon-info-sign:before { content: $info-sign; }
-.icon-screenshot:before { content: $screenshot; }
-.icon-remove-circle:before { content: $remove-circle; }
-.icon-ok-circle:before { content: $ok-circle; }
-.icon-ban-circle:before { content: $ban-circle; }
-.icon-arrow-left:before { content: $arrow-left; }
-.icon-arrow-right:before { content: $arrow-right; }
-.icon-arrow-up:before { content: $arrow-up; }
-.icon-arrow-down:before { content: $arrow-down; }
-.icon-mail-forward:before,
-.icon-share-alt:before { content: $share-alt; }
-.icon-resize-full:before { content: $resize-full; }
-.icon-resize-small:before { content: $resize-small; }
-.icon-plus:before { content: $plus; }
-.icon-minus:before { content: $minus; }
-.icon-asterisk:before { content: $asterisk; }
-.icon-exclamation-sign:before { content: $exclamation-sign; }
-.icon-gift:before { content: $gift; }
-.icon-leaf:before { content: $leaf; }
-.icon-fire:before { content: $fire; }
-.icon-eye-open:before { content: $eye-open; }
-.icon-eye-close:before { content: $eye-close; }
-.icon-warning-sign:before { content: $warning-sign; }
-.icon-plane:before { content: $plane; }
-.icon-calendar:before { content: $calendar; }
-.icon-random:before { content: $random; }
-.icon-comment:before { content: $comment; }
-.icon-magnet:before { content: $magnet; }
-.icon-chevron-up:before { content: $chevron-up; }
-.icon-chevron-down:before { content: $chevron-down; }
-.icon-retweet:before { content: $retweet; }
-.icon-shopping-cart:before { content: $shopping-cart; }
-.icon-folder-close:before { content: $folder-close; }
-.icon-folder-open:before { content: $folder-open; }
-.icon-resize-vertical:before { content: $resize-vertical; }
-.icon-resize-horizontal:before { content: $resize-horizontal; }
-.icon-bar-chart:before { content: $bar-chart; }
-.icon-twitter-sign:before { content: $twitter-sign; }
-.icon-facebook-sign:before { content: $facebook-sign; }
-.icon-camera-retro:before { content: $camera-retro; }
-.icon-key:before { content: $key; }
-.icon-gears:before,
-.icon-cogs:before { content: $cogs; }
-.icon-comments:before { content: $comments; }
-.icon-thumbs-up-alt:before { content: $thumbs-up-alt; }
-.icon-thumbs-down-alt:before { content: $thumbs-down-alt; }
-.icon-star-half:before { content: $star-half; }
-.icon-heart-empty:before { content: $heart-empty; }
-.icon-signout:before { content: $signout; }
-.icon-linkedin-sign:before { content: $linkedin-sign; }
-.icon-pushpin:before { content: $pushpin; }
-.icon-external-link:before { content: $external-link; }
-.icon-signin:before { content: $signin; }
-.icon-trophy:before { content: $trophy; }
-.icon-github-sign:before { content: $github-sign; }
-.icon-upload-alt:before { content: $upload-alt; }
-.icon-lemon:before { content: $lemon; }
-.icon-phone:before { content: $phone; }
-.icon-unchecked:before,
-.icon-check-empty:before { content: $check-empty; }
-.icon-bookmark-empty:before { content: $bookmark-empty; }
-.icon-phone-sign:before { content: $phone-sign; }
-.icon-twitter:before { content: $twitter; }
-.icon-facebook:before { content: $facebook; }
-.icon-github:before { content: $github; }
-.icon-unlock:before { content: $unlock; }
-.icon-credit-card:before { content: $credit-card; }
-.icon-rss:before { content: $rss; }
-.icon-hdd:before { content: $hdd; }
-.icon-bullhorn:before { content: $bullhorn; }
-.icon-bell:before { content: $bell; }
-.icon-certificate:before { content: $certificate; }
-.icon-hand-right:before { content: $hand-right; }
-.icon-hand-left:before { content: $hand-left; }
-.icon-hand-up:before { content: $hand-up; }
-.icon-hand-down:before { content: $hand-down; }
-.icon-circle-arrow-left:before { content: $circle-arrow-left; }
-.icon-circle-arrow-right:before { content: $circle-arrow-right; }
-.icon-circle-arrow-up:before { content: $circle-arrow-up; }
-.icon-circle-arrow-down:before { content: $circle-arrow-down; }
-.icon-globe:before { content: $globe; }
-.icon-wrench:before { content: $wrench; }
-.icon-tasks:before { content: $tasks; }
-.icon-filter:before { content: $filter; }
-.icon-briefcase:before { content: $briefcase; }
-.icon-fullscreen:before { content: $fullscreen; }
-.icon-group:before { content: $group; }
-.icon-link:before { content: $link; }
-.icon-cloud:before { content: $cloud; }
-.icon-beaker:before { content: $beaker; }
-.icon-cut:before { content: $cut; }
-.icon-copy:before { content: $copy; }
-.icon-paperclip:before,
-.icon-paper-clip:before { content: $paper-clip; }
-.icon-save:before { content: $save; }
-.icon-sign-blank:before { content: $sign-blank; }
-.icon-reorder:before { content: $reorder; }
-.icon-list-ul:before { content: $list-ul; }
-.icon-list-ol:before { content: $list-ol; }
-.icon-strikethrough:before { content: $strikethrough; }
-.icon-underline:before { content: $underline; }
-.icon-table:before { content: $table; }
-.icon-magic:before { content: $magic; }
-.icon-truck:before { content: $truck; }
-.icon-pinterest:before { content: $pinterest; }
-.icon-pinterest-sign:before { content: $pinterest-sign; }
-.icon-google-plus-sign:before { content: $google-plus-sign; }
-.icon-google-plus:before { content: $google-plus; }
-.icon-money:before { content: $money; }
-.icon-caret-down:before { content: $caret-down; }
-.icon-caret-up:before { content: $caret-up; }
-.icon-caret-left:before { content: $caret-left; }
-.icon-caret-right:before { content: $caret-right; }
-.icon-columns:before { content: $columns; }
-.icon-sort:before { content: $sort; }
-.icon-sort-down:before { content: $sort-down; }
-.icon-sort-up:before { content: $sort-up; }
-.icon-envelope:before { content: $envelope; }
-.icon-linkedin:before { content: $linkedin; }
-.icon-rotate-left:before,
-.icon-undo:before { content: $undo; }
-.icon-legal:before { content: $legal; }
-.icon-dashboard:before { content: $dashboard; }
-.icon-comment-alt:before { content: $comment-alt; }
-.icon-comments-alt:before { content: $comments-alt; }
-.icon-bolt:before { content: $bolt; }
-.icon-sitemap:before { content: $sitemap; }
-.icon-umbrella:before { content: $umbrella; }
-.icon-paste:before { content: $paste; }
-.icon-lightbulb:before { content: $lightbulb; }
-.icon-exchange:before { content: $exchange; }
-.icon-cloud-download:before { content: $cloud-download; }
-.icon-cloud-upload:before { content: $cloud-upload; }
-.icon-user-md:before { content: $user-md; }
-.icon-stethoscope:before { content: $stethoscope; }
-.icon-suitcase:before { content: $suitcase; }
-.icon-bell-alt:before { content: $bell-alt; }
-.icon-coffee:before { content: $coffee; }
-.icon-food:before { content: $food; }
-.icon-file-text-alt:before { content: $file-text-alt; }
-.icon-building:before { content: $building; }
-.icon-hospital:before { content: $hospital; }
-.icon-ambulance:before { content: $ambulance; }
-.icon-medkit:before { content: $medkit; }
-.icon-fighter-jet:before { content: $fighter-jet; }
-.icon-beer:before { content: $beer; }
-.icon-h-sign:before { content: $h-sign; }
-.icon-plus-sign-alt:before { content: $plus-sign-alt; }
-.icon-double-angle-left:before { content: $double-angle-left; }
-.icon-double-angle-right:before { content: $double-angle-right; }
-.icon-double-angle-up:before { content: $double-angle-up; }
-.icon-double-angle-down:before { content: $double-angle-down; }
-.icon-angle-left:before { content: $angle-left; }
-.icon-angle-right:before { content: $angle-right; }
-.icon-angle-up:before { content: $angle-up; }
-.icon-angle-down:before { content: $angle-down; }
-.icon-desktop:before { content: $desktop; }
-.icon-laptop:before { content: $laptop; }
-.icon-tablet:before { content: $tablet; }
-.icon-mobile-phone:before { content: $mobile-phone; }
-.icon-circle-blank:before { content: $circle-blank; }
-.icon-quote-left:before { content: $quote-left; }
-.icon-quote-right:before { content: $quote-right; }
-.icon-spinner:before { content: $spinner; }
-.icon-circle:before { content: $circle; }
-.icon-mail-reply:before,
-.icon-reply:before { content: $reply; }
-.icon-github-alt:before { content: $github-alt; }
-.icon-folder-close-alt:before { content: $folder-close-alt; }
-.icon-folder-open-alt:before { content: $folder-open-alt; }
-.icon-expand-alt:before { content: $expand-alt; }
-.icon-collapse-alt:before { content: $collapse-alt; }
-.icon-smile:before { content: $smile; }
-.icon-frown:before { content: $frown; }
-.icon-meh:before { content: $meh; }
-.icon-gamepad:before { content: $gamepad; }
-.icon-keyboard:before { content: $keyboard; }
-.icon-flag-alt:before { content: $flag-alt; }
-.icon-flag-checkered:before { content: $flag-checkered; }
-.icon-terminal:before { content: $terminal; }
-.icon-code:before { content: $code; }
-.icon-reply-all:before { content: $reply-all; }
-.icon-mail-reply-all:before { content: $mail-reply-all; }
-.icon-star-half-full:before,
-.icon-star-half-empty:before { content: $star-half-empty; }
-.icon-location-arrow:before { content: $location-arrow; }
-.icon-crop:before { content: $crop; }
-.icon-code-fork:before { content: $code-fork; }
-.icon-unlink:before { content: $unlink; }
-.icon-question:before { content: $question; }
-.icon-info:before { content: $info; }
-.icon-exclamation:before { content: $exclamation; }
-.icon-superscript:before { content: $superscript; }
-.icon-subscript:before { content: $subscript; }
-.icon-eraser:before { content: $eraser; }
-.icon-puzzle-piece:before { content: $puzzle-piece; }
-.icon-microphone:before { content: $microphone; }
-.icon-microphone-off:before { content: $microphone-off; }
-.icon-shield:before { content: $shield; }
-.icon-calendar-empty:before { content: $calendar-empty; }
-.icon-fire-extinguisher:before { content: $fire-extinguisher; }
-.icon-rocket:before { content: $rocket; }
-.icon-maxcdn:before { content: $maxcdn; }
-.icon-chevron-sign-left:before { content: $chevron-sign-left; }
-.icon-chevron-sign-right:before { content: $chevron-sign-right; }
-.icon-chevron-sign-up:before { content: $chevron-sign-up; }
-.icon-chevron-sign-down:before { content: $chevron-sign-down; }
-.icon-html5:before { content: $html5; }
-.icon-css3:before { content: $css3; }
-.icon-anchor:before { content: $anchor; }
-.icon-unlock-alt:before { content: $unlock-alt; }
-.icon-bullseye:before { content: $bullseye; }
-.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; }
-.icon-ellipsis-vertical:before { content: $ellipsis-vertical; }
-.icon-rss-sign:before { content: $rss-sign; }
-.icon-play-sign:before { content: $play-sign; }
-.icon-ticket:before { content: $ticket; }
-.icon-minus-sign-alt:before { content: $minus-sign-alt; }
-.icon-check-minus:before { content: $check-minus; }
-.icon-level-up:before { content: $level-up; }
-.icon-level-down:before { content: $level-down; }
-.icon-check-sign:before { content: $check-sign; }
-.icon-edit-sign:before { content: $edit-sign; }
-.icon-external-link-sign:before { content: $external-link-sign; }
-.icon-share-sign:before { content: $share-sign; }
-.icon-compass:before { content: $compass; }
-.icon-collapse:before { content: $collapse; }
-.icon-collapse-top:before { content: $collapse-top; }
-.icon-expand:before { content: $expand; }
-.icon-euro:before,
-.icon-eur:before { content: $eur; }
-.icon-gbp:before { content: $gbp; }
-.icon-dollar:before,
-.icon-usd:before { content: $usd; }
-.icon-rupee:before,
-.icon-inr:before { content: $inr; }
-.icon-yen:before,
-.icon-jpy:before { content: $jpy; }
-.icon-renminbi:before,
-.icon-cny:before { content: $cny; }
-.icon-won:before,
-.icon-krw:before { content: $krw; }
-.icon-bitcoin:before,
-.icon-btc:before { content: $btc; }
-.icon-file:before { content: $file; }
-.icon-file-text:before { content: $file-text; }
-.icon-sort-by-alphabet:before { content: $sort-by-alphabet; }
-.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; }
-.icon-sort-by-attributes:before { content: $sort-by-attributes; }
-.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; }
-.icon-sort-by-order:before { content: $sort-by-order; }
-.icon-sort-by-order-alt:before { content: $sort-by-order-alt; }
-.icon-thumbs-up:before { content: $thumbs-up; }
-.icon-thumbs-down:before { content: $thumbs-down; }
-.icon-youtube-sign:before { content: $youtube-sign; }
-.icon-youtube:before { content: $youtube; }
-.icon-xing:before { content: $xing; }
-.icon-xing-sign:before { content: $xing-sign; }
-.icon-youtube-play:before { content: $youtube-play; }
-.icon-dropbox:before { content: $dropbox; }
-.icon-stackexchange:before { content: $stackexchange; }
-.icon-instagram:before { content: $instagram; }
-.icon-flickr:before { content: $flickr; }
-.icon-adn:before { content: $adn; }
-.icon-bitbucket:before { content: $bitbucket; }
-.icon-bitbucket-sign:before { content: $bitbucket-sign; }
-.icon-tumblr:before { content: $tumblr; }
-.icon-tumblr-sign:before { content: $tumblr-sign; }
-.icon-long-arrow-down:before { content: $long-arrow-down; }
-.icon-long-arrow-up:before { content: $long-arrow-up; }
-.icon-long-arrow-left:before { content: $long-arrow-left; }
-.icon-long-arrow-right:before { content: $long-arrow-right; }
-.icon-apple:before { content: $apple; }
-.icon-windows:before { content: $windows; }
-.icon-android:before { content: $android; }
-.icon-linux:before { content: $linux; }
-.icon-dribbble:before { content: $dribbble; }
-.icon-skype:before { content: $skype; }
-.icon-foursquare:before { content: $foursquare; }
-.icon-trello:before { content: $trello; }
-.icon-female:before { content: $female; }
-.icon-male:before { content: $male; }
-.icon-gittip:before { content: $gittip; }
-.icon-sun:before { content: $sun; }
-.icon-moon:before { content: $moon; }
-.icon-archive:before { content: $archive; }
-.icon-bug:before { content: $bug; }
-.icon-vk:before { content: $vk; }
-.icon-weibo:before { content: $weibo; }
-.icon-renren:before { content: $renren; }
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_mixins.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_mixins.scss
deleted file mode 100644
index ca9c5931b..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_mixins.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-// Mixins
-// --------------------------
-
-@mixin icon($icon) {
- @include icon-FontAwesome();
- content: $icon;
-}
-
-@mixin icon-FontAwesome() {
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- text-decoration: inherit;
- -webkit-font-smoothing: antialiased;
- *margin-right: .3em; // fixes ie7 issues
-}
-
-@mixin border-radius($radius) {
- -webkit-border-radius: $radius;
- -moz-border-radius: $radius;
- border-radius: $radius;
-}
-
-@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) {
- .icon-stack {
- position: relative;
- display: inline-block;
- width: $width;
- height: $height;
- line-height: $width;
- vertical-align: -35%;
- [class^="icon-"],
- [class*=" icon-"] {
- display: block;
- text-align: center;
- position: absolute;
- width: 100%;
- height: 100%;
- font-size: $top-font-size;
- line-height: inherit;
- *line-height: $height;
- }
- .icon-stack-base {
- font-size: $base-font-size;
- *line-height: #{$height / $base-font-size}em;
- }
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_path.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_path.scss
deleted file mode 100644
index bb3f36b70..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_path.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
- font-family: 'FontAwesome';
- src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}');
- src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'),
- url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'),
- url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'),
- url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg');
-// src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts
- font-weight: normal;
- font-style: normal;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_variables.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_variables.scss
deleted file mode 100644
index 7d6bbc5b1..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/_variables.scss
+++ /dev/null
@@ -1,734 +0,0 @@
-// Variables
-// --------------------------
-
-$FontAwesomePath: "../font" !default;
-$FontAwesomeVersion: "3.2.1" !default;
-$borderColor: #eeeeee !default;
-$iconMuted: #eeeeee !default;
-$iconLight: white !default;
-$iconDark: #333333 !default;
-$icons-li-width: (30em/14);
-
-
-$glass: "\f000";
-
-$music: "\f001";
-
-$search: "\f002";
-
-$envelope-alt: "\f003";
-
-$heart: "\f004";
-
-$star: "\f005";
-
-$star-empty: "\f006";
-
-$user: "\f007";
-
-$film: "\f008";
-
-$th-large: "\f009";
-
-$th: "\f00a";
-
-$th-list: "\f00b";
-
-$ok: "\f00c";
-
-$remove: "\f00d";
-
-$zoom-in: "\f00e";
-
-$zoom-out: "\f010";
-
-$off: "\f011";
-
-$signal: "\f012";
-
-$cog: "\f013";
-
-$trash: "\f014";
-
-$home: "\f015";
-
-$file-alt: "\f016";
-
-$time: "\f017";
-
-$road: "\f018";
-
-$download-alt: "\f019";
-
-$download: "\f01a";
-
-$upload: "\f01b";
-
-$inbox: "\f01c";
-
-$play-circle: "\f01d";
-
-$repeat: "\f01e";
-
-$refresh: "\f021";
-
-$list-alt: "\f022";
-
-$lock: "\f023";
-
-$flag: "\f024";
-
-$headphones: "\f025";
-
-$volume-off: "\f026";
-
-$volume-down: "\f027";
-
-$volume-up: "\f028";
-
-$qrcode: "\f029";
-
-$barcode: "\f02a";
-
-$tag: "\f02b";
-
-$tags: "\f02c";
-
-$book: "\f02d";
-
-$bookmark: "\f02e";
-
-$print: "\f02f";
-
-$camera: "\f030";
-
-$font: "\f031";
-
-$bold: "\f032";
-
-$italic: "\f033";
-
-$text-height: "\f034";
-
-$text-width: "\f035";
-
-$align-left: "\f036";
-
-$align-center: "\f037";
-
-$align-right: "\f038";
-
-$align-justify: "\f039";
-
-$list: "\f03a";
-
-$indent-left: "\f03b";
-
-$indent-right: "\f03c";
-
-$facetime-video: "\f03d";
-
-$picture: "\f03e";
-
-$pencil: "\f040";
-
-$map-marker: "\f041";
-
-$adjust: "\f042";
-
-$tint: "\f043";
-
-$edit: "\f044";
-
-$share: "\f045";
-
-$check: "\f046";
-
-$move: "\f047";
-
-$step-backward: "\f048";
-
-$fast-backward: "\f049";
-
-$backward: "\f04a";
-
-$play: "\f04b";
-
-$pause: "\f04c";
-
-$stop: "\f04d";
-
-$forward: "\f04e";
-
-$fast-forward: "\f050";
-
-$step-forward: "\f051";
-
-$eject: "\f052";
-
-$chevron-left: "\f053";
-
-$chevron-right: "\f054";
-
-$plus-sign: "\f055";
-
-$minus-sign: "\f056";
-
-$remove-sign: "\f057";
-
-$ok-sign: "\f058";
-
-$question-sign: "\f059";
-
-$info-sign: "\f05a";
-
-$screenshot: "\f05b";
-
-$remove-circle: "\f05c";
-
-$ok-circle: "\f05d";
-
-$ban-circle: "\f05e";
-
-$arrow-left: "\f060";
-
-$arrow-right: "\f061";
-
-$arrow-up: "\f062";
-
-$arrow-down: "\f063";
-
-$share-alt: "\f064";
-
-$resize-full: "\f065";
-
-$resize-small: "\f066";
-
-$plus: "\f067";
-
-$minus: "\f068";
-
-$asterisk: "\f069";
-
-$exclamation-sign: "\f06a";
-
-$gift: "\f06b";
-
-$leaf: "\f06c";
-
-$fire: "\f06d";
-
-$eye-open: "\f06e";
-
-$eye-close: "\f070";
-
-$warning-sign: "\f071";
-
-$plane: "\f072";
-
-$calendar: "\f073";
-
-$random: "\f074";
-
-$comment: "\f075";
-
-$magnet: "\f076";
-
-$chevron-up: "\f077";
-
-$chevron-down: "\f078";
-
-$retweet: "\f079";
-
-$shopping-cart: "\f07a";
-
-$folder-close: "\f07b";
-
-$folder-open: "\f07c";
-
-$resize-vertical: "\f07d";
-
-$resize-horizontal: "\f07e";
-
-$bar-chart: "\f080";
-
-$twitter-sign: "\f081";
-
-$facebook-sign: "\f082";
-
-$camera-retro: "\f083";
-
-$key: "\f084";
-
-$cogs: "\f085";
-
-$comments: "\f086";
-
-$thumbs-up-alt: "\f087";
-
-$thumbs-down-alt: "\f088";
-
-$star-half: "\f089";
-
-$heart-empty: "\f08a";
-
-$signout: "\f08b";
-
-$linkedin-sign: "\f08c";
-
-$pushpin: "\f08d";
-
-$external-link: "\f08e";
-
-$signin: "\f090";
-
-$trophy: "\f091";
-
-$github-sign: "\f092";
-
-$upload-alt: "\f093";
-
-$lemon: "\f094";
-
-$phone: "\f095";
-
-$check-empty: "\f096";
-
-$bookmark-empty: "\f097";
-
-$phone-sign: "\f098";
-
-$twitter: "\f099";
-
-$facebook: "\f09a";
-
-$github: "\f09b";
-
-$unlock: "\f09c";
-
-$credit-card: "\f09d";
-
-$rss: "\f09e";
-
-$hdd: "\f0a0";
-
-$bullhorn: "\f0a1";
-
-$bell: "\f0a2";
-
-$certificate: "\f0a3";
-
-$hand-right: "\f0a4";
-
-$hand-left: "\f0a5";
-
-$hand-up: "\f0a6";
-
-$hand-down: "\f0a7";
-
-$circle-arrow-left: "\f0a8";
-
-$circle-arrow-right: "\f0a9";
-
-$circle-arrow-up: "\f0aa";
-
-$circle-arrow-down: "\f0ab";
-
-$globe: "\f0ac";
-
-$wrench: "\f0ad";
-
-$tasks: "\f0ae";
-
-$filter: "\f0b0";
-
-$briefcase: "\f0b1";
-
-$fullscreen: "\f0b2";
-
-$group: "\f0c0";
-
-$link: "\f0c1";
-
-$cloud: "\f0c2";
-
-$beaker: "\f0c3";
-
-$cut: "\f0c4";
-
-$copy: "\f0c5";
-
-$paper-clip: "\f0c6";
-
-$save: "\f0c7";
-
-$sign-blank: "\f0c8";
-
-$reorder: "\f0c9";
-
-$list-ul: "\f0ca";
-
-$list-ol: "\f0cb";
-
-$strikethrough: "\f0cc";
-
-$underline: "\f0cd";
-
-$table: "\f0ce";
-
-$magic: "\f0d0";
-
-$truck: "\f0d1";
-
-$pinterest: "\f0d2";
-
-$pinterest-sign: "\f0d3";
-
-$google-plus-sign: "\f0d4";
-
-$google-plus: "\f0d5";
-
-$money: "\f0d6";
-
-$caret-down: "\f0d7";
-
-$caret-up: "\f0d8";
-
-$caret-left: "\f0d9";
-
-$caret-right: "\f0da";
-
-$columns: "\f0db";
-
-$sort: "\f0dc";
-
-$sort-down: "\f0dd";
-
-$sort-up: "\f0de";
-
-$envelope: "\f0e0";
-
-$linkedin: "\f0e1";
-
-$undo: "\f0e2";
-
-$legal: "\f0e3";
-
-$dashboard: "\f0e4";
-
-$comment-alt: "\f0e5";
-
-$comments-alt: "\f0e6";
-
-$bolt: "\f0e7";
-
-$sitemap: "\f0e8";
-
-$umbrella: "\f0e9";
-
-$paste: "\f0ea";
-
-$lightbulb: "\f0eb";
-
-$exchange: "\f0ec";
-
-$cloud-download: "\f0ed";
-
-$cloud-upload: "\f0ee";
-
-$user-md: "\f0f0";
-
-$stethoscope: "\f0f1";
-
-$suitcase: "\f0f2";
-
-$bell-alt: "\f0f3";
-
-$coffee: "\f0f4";
-
-$food: "\f0f5";
-
-$file-text-alt: "\f0f6";
-
-$building: "\f0f7";
-
-$hospital: "\f0f8";
-
-$ambulance: "\f0f9";
-
-$medkit: "\f0fa";
-
-$fighter-jet: "\f0fb";
-
-$beer: "\f0fc";
-
-$h-sign: "\f0fd";
-
-$plus-sign-alt: "\f0fe";
-
-$double-angle-left: "\f100";
-
-$double-angle-right: "\f101";
-
-$double-angle-up: "\f102";
-
-$double-angle-down: "\f103";
-
-$angle-left: "\f104";
-
-$angle-right: "\f105";
-
-$angle-up: "\f106";
-
-$angle-down: "\f107";
-
-$desktop: "\f108";
-
-$laptop: "\f109";
-
-$tablet: "\f10a";
-
-$mobile-phone: "\f10b";
-
-$circle-blank: "\f10c";
-
-$quote-left: "\f10d";
-
-$quote-right: "\f10e";
-
-$spinner: "\f110";
-
-$circle: "\f111";
-
-$reply: "\f112";
-
-$github-alt: "\f113";
-
-$folder-close-alt: "\f114";
-
-$folder-open-alt: "\f115";
-
-$expand-alt: "\f116";
-
-$collapse-alt: "\f117";
-
-$smile: "\f118";
-
-$frown: "\f119";
-
-$meh: "\f11a";
-
-$gamepad: "\f11b";
-
-$keyboard: "\f11c";
-
-$flag-alt: "\f11d";
-
-$flag-checkered: "\f11e";
-
-$terminal: "\f120";
-
-$code: "\f121";
-
-$reply-all: "\f122";
-
-$mail-reply-all: "\f122";
-
-$star-half-empty: "\f123";
-
-$location-arrow: "\f124";
-
-$crop: "\f125";
-
-$code-fork: "\f126";
-
-$unlink: "\f127";
-
-$question: "\f128";
-
-$info: "\f129";
-
-$exclamation: "\f12a";
-
-$superscript: "\f12b";
-
-$subscript: "\f12c";
-
-$eraser: "\f12d";
-
-$puzzle-piece: "\f12e";
-
-$microphone: "\f130";
-
-$microphone-off: "\f131";
-
-$shield: "\f132";
-
-$calendar-empty: "\f133";
-
-$fire-extinguisher: "\f134";
-
-$rocket: "\f135";
-
-$maxcdn: "\f136";
-
-$chevron-sign-left: "\f137";
-
-$chevron-sign-right: "\f138";
-
-$chevron-sign-up: "\f139";
-
-$chevron-sign-down: "\f13a";
-
-$html5: "\f13b";
-
-$css3: "\f13c";
-
-$anchor: "\f13d";
-
-$unlock-alt: "\f13e";
-
-$bullseye: "\f140";
-
-$ellipsis-horizontal: "\f141";
-
-$ellipsis-vertical: "\f142";
-
-$rss-sign: "\f143";
-
-$play-sign: "\f144";
-
-$ticket: "\f145";
-
-$minus-sign-alt: "\f146";
-
-$check-minus: "\f147";
-
-$level-up: "\f148";
-
-$level-down: "\f149";
-
-$check-sign: "\f14a";
-
-$edit-sign: "\f14b";
-
-$external-link-sign: "\f14c";
-
-$share-sign: "\f14d";
-
-$compass: "\f14e";
-
-$collapse: "\f150";
-
-$collapse-top: "\f151";
-
-$expand: "\f152";
-
-$eur: "\f153";
-
-$gbp: "\f154";
-
-$usd: "\f155";
-
-$inr: "\f156";
-
-$jpy: "\f157";
-
-$cny: "\f158";
-
-$krw: "\f159";
-
-$btc: "\f15a";
-
-$file: "\f15b";
-
-$file-text: "\f15c";
-
-$sort-by-alphabet: "\f15d";
-
-$sort-by-alphabet-alt: "\f15e";
-
-$sort-by-attributes: "\f160";
-
-$sort-by-attributes-alt: "\f161";
-
-$sort-by-order: "\f162";
-
-$sort-by-order-alt: "\f163";
-
-$thumbs-up: "\f164";
-
-$thumbs-down: "\f165";
-
-$youtube-sign: "\f166";
-
-$youtube: "\f167";
-
-$xing: "\f168";
-
-$xing-sign: "\f169";
-
-$youtube-play: "\f16a";
-
-$dropbox: "\f16b";
-
-$stackexchange: "\f16c";
-
-$instagram: "\f16d";
-
-$flickr: "\f16e";
-
-$adn: "\f170";
-
-$bitbucket: "\f171";
-
-$bitbucket-sign: "\f172";
-
-$tumblr: "\f173";
-
-$tumblr-sign: "\f174";
-
-$long-arrow-down: "\f175";
-
-$long-arrow-up: "\f176";
-
-$long-arrow-left: "\f177";
-
-$long-arrow-right: "\f178";
-
-$apple: "\f179";
-
-$windows: "\f17a";
-
-$android: "\f17b";
-
-$linux: "\f17c";
-
-$dribbble: "\f17d";
-
-$skype: "\f17e";
-
-$foursquare: "\f180";
-
-$trello: "\f181";
-
-$female: "\f182";
-
-$male: "\f183";
-
-$gittip: "\f184";
-
-$sun: "\f185";
-
-$moon: "\f186";
-
-$archive: "\f187";
-
-$bug: "\f188";
-
-$vk: "\f189";
-
-$weibo: "\f18a";
-
-$renren: "\f18b";
-
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome-ie7.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome-ie7.scss
deleted file mode 100644
index 0e236f61e..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome-ie7.scss
+++ /dev/null
@@ -1,1953 +0,0 @@
-/*!
- * Font Awesome 3.2.1
- * the iconic font designed for Bootstrap
- * ------------------------------------------------------------------------------
- * The full suite of pictographic icons, examples, and documentation can be
- * found at http://fontawesome.io. Stay up to date on Twitter at
- * http://twitter.com/fontawesome.
- *
- * License
- * ------------------------------------------------------------------------------
- * - The Font Awesome font is licensed under SIL OFL 1.1 -
- * http://scripts.sil.org/OFL
- * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- * http://opensource.org/licenses/mit-license.html
- * - Font Awesome documentation licensed under CC BY 3.0 -
- * http://creativecommons.org/licenses/by/3.0/
- * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- * "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- * Author - Dave Gandy
- * ------------------------------------------------------------------------------
- * Email: dave@fontawesome.io
- * Twitter: http://twitter.com/davegandy
- * Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-
-.icon-large {
- font-size: (4em/3);
- margin-top: -4px;
- padding-top: 3px;
- margin-bottom: -4px;
- padding-bottom: 3px;
- vertical-align: middle;
-}
-
-.nav {
- [class^="icon-"],
- [class*=" icon-"] {
- vertical-align: inherit;
- margin-top: -4px;
- padding-top: 3px;
- margin-bottom: -4px;
- padding-bottom: 3px;
- &.icon-large {
- vertical-align: -25%;
- }
- }
-}
-
-.nav-pills, .nav-tabs {
- [class^="icon-"],
- [class*=" icon-"] {
- &.icon-large {
- line-height: .75em;
- margin-top: -7px;
- padding-top: 5px;
- margin-bottom: -5px;
- padding-bottom: 4px;
- }
- }
-}
-
-.btn {
- [class^="icon-"],
- [class*=" icon-"] {
- &.pull-left, &.pull-right { vertical-align: inherit; }
- &.icon-large {
- margin-top: -.5em;
- }
- }
-}
-
-a [class^="icon-"],
-a [class*=" icon-"] {
- cursor: pointer;
-}
-
-@mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); }
-
-
-.icon-glass {
- @include ie7icon('&#xf000;');
-}
-
-
-.icon-music {
- @include ie7icon('&#xf001;');
-}
-
-
-.icon-search {
- @include ie7icon('&#xf002;');
-}
-
-
-.icon-envelope-alt {
- @include ie7icon('&#xf003;');
-}
-
-
-.icon-heart {
- @include ie7icon('&#xf004;');
-}
-
-
-.icon-star {
- @include ie7icon('&#xf005;');
-}
-
-
-.icon-star-empty {
- @include ie7icon('&#xf006;');
-}
-
-
-.icon-user {
- @include ie7icon('&#xf007;');
-}
-
-
-.icon-film {
- @include ie7icon('&#xf008;');
-}
-
-
-.icon-th-large {
- @include ie7icon('&#xf009;');
-}
-
-
-.icon-th {
- @include ie7icon('&#xf00a;');
-}
-
-
-.icon-th-list {
- @include ie7icon('&#xf00b;');
-}
-
-
-.icon-ok {
- @include ie7icon('&#xf00c;');
-}
-
-
-.icon-remove {
- @include ie7icon('&#xf00d;');
-}
-
-
-.icon-zoom-in {
- @include ie7icon('&#xf00e;');
-}
-
-
-.icon-zoom-out {
- @include ie7icon('&#xf010;');
-}
-
-
-.icon-off {
- @include ie7icon('&#xf011;');
-}
-
-.icon-power-off {
- @include ie7icon('&#xf011;');
-}
-
-
-.icon-signal {
- @include ie7icon('&#xf012;');
-}
-
-
-.icon-cog {
- @include ie7icon('&#xf013;');
-}
-
-.icon-gear {
- @include ie7icon('&#xf013;');
-}
-
-
-.icon-trash {
- @include ie7icon('&#xf014;');
-}
-
-
-.icon-home {
- @include ie7icon('&#xf015;');
-}
-
-
-.icon-file-alt {
- @include ie7icon('&#xf016;');
-}
-
-
-.icon-time {
- @include ie7icon('&#xf017;');
-}
-
-
-.icon-road {
- @include ie7icon('&#xf018;');
-}
-
-
-.icon-download-alt {
- @include ie7icon('&#xf019;');
-}
-
-
-.icon-download {
- @include ie7icon('&#xf01a;');
-}
-
-
-.icon-upload {
- @include ie7icon('&#xf01b;');
-}
-
-
-.icon-inbox {
- @include ie7icon('&#xf01c;');
-}
-
-
-.icon-play-circle {
- @include ie7icon('&#xf01d;');
-}
-
-
-.icon-repeat {
- @include ie7icon('&#xf01e;');
-}
-
-.icon-rotate-right {
- @include ie7icon('&#xf01e;');
-}
-
-
-.icon-refresh {
- @include ie7icon('&#xf021;');
-}
-
-
-.icon-list-alt {
- @include ie7icon('&#xf022;');
-}
-
-
-.icon-lock {
- @include ie7icon('&#xf023;');
-}
-
-
-.icon-flag {
- @include ie7icon('&#xf024;');
-}
-
-
-.icon-headphones {
- @include ie7icon('&#xf025;');
-}
-
-
-.icon-volume-off {
- @include ie7icon('&#xf026;');
-}
-
-
-.icon-volume-down {
- @include ie7icon('&#xf027;');
-}
-
-
-.icon-volume-up {
- @include ie7icon('&#xf028;');
-}
-
-
-.icon-qrcode {
- @include ie7icon('&#xf029;');
-}
-
-
-.icon-barcode {
- @include ie7icon('&#xf02a;');
-}
-
-
-.icon-tag {
- @include ie7icon('&#xf02b;');
-}
-
-
-.icon-tags {
- @include ie7icon('&#xf02c;');
-}
-
-
-.icon-book {
- @include ie7icon('&#xf02d;');
-}
-
-
-.icon-bookmark {
- @include ie7icon('&#xf02e;');
-}
-
-
-.icon-print {
- @include ie7icon('&#xf02f;');
-}
-
-
-.icon-camera {
- @include ie7icon('&#xf030;');
-}
-
-
-.icon-font {
- @include ie7icon('&#xf031;');
-}
-
-
-.icon-bold {
- @include ie7icon('&#xf032;');
-}
-
-
-.icon-italic {
- @include ie7icon('&#xf033;');
-}
-
-
-.icon-text-height {
- @include ie7icon('&#xf034;');
-}
-
-
-.icon-text-width {
- @include ie7icon('&#xf035;');
-}
-
-
-.icon-align-left {
- @include ie7icon('&#xf036;');
-}
-
-
-.icon-align-center {
- @include ie7icon('&#xf037;');
-}
-
-
-.icon-align-right {
- @include ie7icon('&#xf038;');
-}
-
-
-.icon-align-justify {
- @include ie7icon('&#xf039;');
-}
-
-
-.icon-list {
- @include ie7icon('&#xf03a;');
-}
-
-
-.icon-indent-left {
- @include ie7icon('&#xf03b;');
-}
-
-
-.icon-indent-right {
- @include ie7icon('&#xf03c;');
-}
-
-
-.icon-facetime-video {
- @include ie7icon('&#xf03d;');
-}
-
-
-.icon-picture {
- @include ie7icon('&#xf03e;');
-}
-
-
-.icon-pencil {
- @include ie7icon('&#xf040;');
-}
-
-
-.icon-map-marker {
- @include ie7icon('&#xf041;');
-}
-
-
-.icon-adjust {
- @include ie7icon('&#xf042;');
-}
-
-
-.icon-tint {
- @include ie7icon('&#xf043;');
-}
-
-
-.icon-edit {
- @include ie7icon('&#xf044;');
-}
-
-
-.icon-share {
- @include ie7icon('&#xf045;');
-}
-
-
-.icon-check {
- @include ie7icon('&#xf046;');
-}
-
-
-.icon-move {
- @include ie7icon('&#xf047;');
-}
-
-
-.icon-step-backward {
- @include ie7icon('&#xf048;');
-}
-
-
-.icon-fast-backward {
- @include ie7icon('&#xf049;');
-}
-
-
-.icon-backward {
- @include ie7icon('&#xf04a;');
-}
-
-
-.icon-play {
- @include ie7icon('&#xf04b;');
-}
-
-
-.icon-pause {
- @include ie7icon('&#xf04c;');
-}
-
-
-.icon-stop {
- @include ie7icon('&#xf04d;');
-}
-
-
-.icon-forward {
- @include ie7icon('&#xf04e;');
-}
-
-
-.icon-fast-forward {
- @include ie7icon('&#xf050;');
-}
-
-
-.icon-step-forward {
- @include ie7icon('&#xf051;');
-}
-
-
-.icon-eject {
- @include ie7icon('&#xf052;');
-}
-
-
-.icon-chevron-left {
- @include ie7icon('&#xf053;');
-}
-
-
-.icon-chevron-right {
- @include ie7icon('&#xf054;');
-}
-
-
-.icon-plus-sign {
- @include ie7icon('&#xf055;');
-}
-
-
-.icon-minus-sign {
- @include ie7icon('&#xf056;');
-}
-
-
-.icon-remove-sign {
- @include ie7icon('&#xf057;');
-}
-
-
-.icon-ok-sign {
- @include ie7icon('&#xf058;');
-}
-
-
-.icon-question-sign {
- @include ie7icon('&#xf059;');
-}
-
-
-.icon-info-sign {
- @include ie7icon('&#xf05a;');
-}
-
-
-.icon-screenshot {
- @include ie7icon('&#xf05b;');
-}
-
-
-.icon-remove-circle {
- @include ie7icon('&#xf05c;');
-}
-
-
-.icon-ok-circle {
- @include ie7icon('&#xf05d;');
-}
-
-
-.icon-ban-circle {
- @include ie7icon('&#xf05e;');
-}
-
-
-.icon-arrow-left {
- @include ie7icon('&#xf060;');
-}
-
-
-.icon-arrow-right {
- @include ie7icon('&#xf061;');
-}
-
-
-.icon-arrow-up {
- @include ie7icon('&#xf062;');
-}
-
-
-.icon-arrow-down {
- @include ie7icon('&#xf063;');
-}
-
-
-.icon-share-alt {
- @include ie7icon('&#xf064;');
-}
-
-.icon-mail-forward {
- @include ie7icon('&#xf064;');
-}
-
-
-.icon-resize-full {
- @include ie7icon('&#xf065;');
-}
-
-
-.icon-resize-small {
- @include ie7icon('&#xf066;');
-}
-
-
-.icon-plus {
- @include ie7icon('&#xf067;');
-}
-
-
-.icon-minus {
- @include ie7icon('&#xf068;');
-}
-
-
-.icon-asterisk {
- @include ie7icon('&#xf069;');
-}
-
-
-.icon-exclamation-sign {
- @include ie7icon('&#xf06a;');
-}
-
-
-.icon-gift {
- @include ie7icon('&#xf06b;');
-}
-
-
-.icon-leaf {
- @include ie7icon('&#xf06c;');
-}
-
-
-.icon-fire {
- @include ie7icon('&#xf06d;');
-}
-
-
-.icon-eye-open {
- @include ie7icon('&#xf06e;');
-}
-
-
-.icon-eye-close {
- @include ie7icon('&#xf070;');
-}
-
-
-.icon-warning-sign {
- @include ie7icon('&#xf071;');
-}
-
-
-.icon-plane {
- @include ie7icon('&#xf072;');
-}
-
-
-.icon-calendar {
- @include ie7icon('&#xf073;');
-}
-
-
-.icon-random {
- @include ie7icon('&#xf074;');
-}
-
-
-.icon-comment {
- @include ie7icon('&#xf075;');
-}
-
-
-.icon-magnet {
- @include ie7icon('&#xf076;');
-}
-
-
-.icon-chevron-up {
- @include ie7icon('&#xf077;');
-}
-
-
-.icon-chevron-down {
- @include ie7icon('&#xf078;');
-}
-
-
-.icon-retweet {
- @include ie7icon('&#xf079;');
-}
-
-
-.icon-shopping-cart {
- @include ie7icon('&#xf07a;');
-}
-
-
-.icon-folder-close {
- @include ie7icon('&#xf07b;');
-}
-
-
-.icon-folder-open {
- @include ie7icon('&#xf07c;');
-}
-
-
-.icon-resize-vertical {
- @include ie7icon('&#xf07d;');
-}
-
-
-.icon-resize-horizontal {
- @include ie7icon('&#xf07e;');
-}
-
-
-.icon-bar-chart {
- @include ie7icon('&#xf080;');
-}
-
-
-.icon-twitter-sign {
- @include ie7icon('&#xf081;');
-}
-
-
-.icon-facebook-sign {
- @include ie7icon('&#xf082;');
-}
-
-
-.icon-camera-retro {
- @include ie7icon('&#xf083;');
-}
-
-
-.icon-key {
- @include ie7icon('&#xf084;');
-}
-
-
-.icon-cogs {
- @include ie7icon('&#xf085;');
-}
-
-.icon-gears {
- @include ie7icon('&#xf085;');
-}
-
-
-.icon-comments {
- @include ie7icon('&#xf086;');
-}
-
-
-.icon-thumbs-up-alt {
- @include ie7icon('&#xf087;');
-}
-
-
-.icon-thumbs-down-alt {
- @include ie7icon('&#xf088;');
-}
-
-
-.icon-star-half {
- @include ie7icon('&#xf089;');
-}
-
-
-.icon-heart-empty {
- @include ie7icon('&#xf08a;');
-}
-
-
-.icon-signout {
- @include ie7icon('&#xf08b;');
-}
-
-
-.icon-linkedin-sign {
- @include ie7icon('&#xf08c;');
-}
-
-
-.icon-pushpin {
- @include ie7icon('&#xf08d;');
-}
-
-
-.icon-external-link {
- @include ie7icon('&#xf08e;');
-}
-
-
-.icon-signin {
- @include ie7icon('&#xf090;');
-}
-
-
-.icon-trophy {
- @include ie7icon('&#xf091;');
-}
-
-
-.icon-github-sign {
- @include ie7icon('&#xf092;');
-}
-
-
-.icon-upload-alt {
- @include ie7icon('&#xf093;');
-}
-
-
-.icon-lemon {
- @include ie7icon('&#xf094;');
-}
-
-
-.icon-phone {
- @include ie7icon('&#xf095;');
-}
-
-
-.icon-check-empty {
- @include ie7icon('&#xf096;');
-}
-
-.icon-unchecked {
- @include ie7icon('&#xf096;');
-}
-
-
-.icon-bookmark-empty {
- @include ie7icon('&#xf097;');
-}
-
-
-.icon-phone-sign {
- @include ie7icon('&#xf098;');
-}
-
-
-.icon-twitter {
- @include ie7icon('&#xf099;');
-}
-
-
-.icon-facebook {
- @include ie7icon('&#xf09a;');
-}
-
-
-.icon-github {
- @include ie7icon('&#xf09b;');
-}
-
-
-.icon-unlock {
- @include ie7icon('&#xf09c;');
-}
-
-
-.icon-credit-card {
- @include ie7icon('&#xf09d;');
-}
-
-
-.icon-rss {
- @include ie7icon('&#xf09e;');
-}
-
-
-.icon-hdd {
- @include ie7icon('&#xf0a0;');
-}
-
-
-.icon-bullhorn {
- @include ie7icon('&#xf0a1;');
-}
-
-
-.icon-bell {
- @include ie7icon('&#xf0a2;');
-}
-
-
-.icon-certificate {
- @include ie7icon('&#xf0a3;');
-}
-
-
-.icon-hand-right {
- @include ie7icon('&#xf0a4;');
-}
-
-
-.icon-hand-left {
- @include ie7icon('&#xf0a5;');
-}
-
-
-.icon-hand-up {
- @include ie7icon('&#xf0a6;');
-}
-
-
-.icon-hand-down {
- @include ie7icon('&#xf0a7;');
-}
-
-
-.icon-circle-arrow-left {
- @include ie7icon('&#xf0a8;');
-}
-
-
-.icon-circle-arrow-right {
- @include ie7icon('&#xf0a9;');
-}
-
-
-.icon-circle-arrow-up {
- @include ie7icon('&#xf0aa;');
-}
-
-
-.icon-circle-arrow-down {
- @include ie7icon('&#xf0ab;');
-}
-
-
-.icon-globe {
- @include ie7icon('&#xf0ac;');
-}
-
-
-.icon-wrench {
- @include ie7icon('&#xf0ad;');
-}
-
-
-.icon-tasks {
- @include ie7icon('&#xf0ae;');
-}
-
-
-.icon-filter {
- @include ie7icon('&#xf0b0;');
-}
-
-
-.icon-briefcase {
- @include ie7icon('&#xf0b1;');
-}
-
-
-.icon-fullscreen {
- @include ie7icon('&#xf0b2;');
-}
-
-
-.icon-group {
- @include ie7icon('&#xf0c0;');
-}
-
-
-.icon-link {
- @include ie7icon('&#xf0c1;');
-}
-
-
-.icon-cloud {
- @include ie7icon('&#xf0c2;');
-}
-
-
-.icon-beaker {
- @include ie7icon('&#xf0c3;');
-}
-
-
-.icon-cut {
- @include ie7icon('&#xf0c4;');
-}
-
-
-.icon-copy {
- @include ie7icon('&#xf0c5;');
-}
-
-
-.icon-paper-clip {
- @include ie7icon('&#xf0c6;');
-}
-
-.icon-paperclip {
- @include ie7icon('&#xf0c6;');
-}
-
-
-.icon-save {
- @include ie7icon('&#xf0c7;');
-}
-
-
-.icon-sign-blank {
- @include ie7icon('&#xf0c8;');
-}
-
-
-.icon-reorder {
- @include ie7icon('&#xf0c9;');
-}
-
-
-.icon-list-ul {
- @include ie7icon('&#xf0ca;');
-}
-
-
-.icon-list-ol {
- @include ie7icon('&#xf0cb;');
-}
-
-
-.icon-strikethrough {
- @include ie7icon('&#xf0cc;');
-}
-
-
-.icon-underline {
- @include ie7icon('&#xf0cd;');
-}
-
-
-.icon-table {
- @include ie7icon('&#xf0ce;');
-}
-
-
-.icon-magic {
- @include ie7icon('&#xf0d0;');
-}
-
-
-.icon-truck {
- @include ie7icon('&#xf0d1;');
-}
-
-
-.icon-pinterest {
- @include ie7icon('&#xf0d2;');
-}
-
-
-.icon-pinterest-sign {
- @include ie7icon('&#xf0d3;');
-}
-
-
-.icon-google-plus-sign {
- @include ie7icon('&#xf0d4;');
-}
-
-
-.icon-google-plus {
- @include ie7icon('&#xf0d5;');
-}
-
-
-.icon-money {
- @include ie7icon('&#xf0d6;');
-}
-
-
-.icon-caret-down {
- @include ie7icon('&#xf0d7;');
-}
-
-
-.icon-caret-up {
- @include ie7icon('&#xf0d8;');
-}
-
-
-.icon-caret-left {
- @include ie7icon('&#xf0d9;');
-}
-
-
-.icon-caret-right {
- @include ie7icon('&#xf0da;');
-}
-
-
-.icon-columns {
- @include ie7icon('&#xf0db;');
-}
-
-
-.icon-sort {
- @include ie7icon('&#xf0dc;');
-}
-
-
-.icon-sort-down {
- @include ie7icon('&#xf0dd;');
-}
-
-
-.icon-sort-up {
- @include ie7icon('&#xf0de;');
-}
-
-
-.icon-envelope {
- @include ie7icon('&#xf0e0;');
-}
-
-
-.icon-linkedin {
- @include ie7icon('&#xf0e1;');
-}
-
-
-.icon-undo {
- @include ie7icon('&#xf0e2;');
-}
-
-.icon-rotate-left {
- @include ie7icon('&#xf0e2;');
-}
-
-
-.icon-legal {
- @include ie7icon('&#xf0e3;');
-}
-
-
-.icon-dashboard {
- @include ie7icon('&#xf0e4;');
-}
-
-
-.icon-comment-alt {
- @include ie7icon('&#xf0e5;');
-}
-
-
-.icon-comments-alt {
- @include ie7icon('&#xf0e6;');
-}
-
-
-.icon-bolt {
- @include ie7icon('&#xf0e7;');
-}
-
-
-.icon-sitemap {
- @include ie7icon('&#xf0e8;');
-}
-
-
-.icon-umbrella {
- @include ie7icon('&#xf0e9;');
-}
-
-
-.icon-paste {
- @include ie7icon('&#xf0ea;');
-}
-
-
-.icon-lightbulb {
- @include ie7icon('&#xf0eb;');
-}
-
-
-.icon-exchange {
- @include ie7icon('&#xf0ec;');
-}
-
-
-.icon-cloud-download {
- @include ie7icon('&#xf0ed;');
-}
-
-
-.icon-cloud-upload {
- @include ie7icon('&#xf0ee;');
-}
-
-
-.icon-user-md {
- @include ie7icon('&#xf0f0;');
-}
-
-
-.icon-stethoscope {
- @include ie7icon('&#xf0f1;');
-}
-
-
-.icon-suitcase {
- @include ie7icon('&#xf0f2;');
-}
-
-
-.icon-bell-alt {
- @include ie7icon('&#xf0f3;');
-}
-
-
-.icon-coffee {
- @include ie7icon('&#xf0f4;');
-}
-
-
-.icon-food {
- @include ie7icon('&#xf0f5;');
-}
-
-
-.icon-file-text-alt {
- @include ie7icon('&#xf0f6;');
-}
-
-
-.icon-building {
- @include ie7icon('&#xf0f7;');
-}
-
-
-.icon-hospital {
- @include ie7icon('&#xf0f8;');
-}
-
-
-.icon-ambulance {
- @include ie7icon('&#xf0f9;');
-}
-
-
-.icon-medkit {
- @include ie7icon('&#xf0fa;');
-}
-
-
-.icon-fighter-jet {
- @include ie7icon('&#xf0fb;');
-}
-
-
-.icon-beer {
- @include ie7icon('&#xf0fc;');
-}
-
-
-.icon-h-sign {
- @include ie7icon('&#xf0fd;');
-}
-
-
-.icon-plus-sign-alt {
- @include ie7icon('&#xf0fe;');
-}
-
-
-.icon-double-angle-left {
- @include ie7icon('&#xf100;');
-}
-
-
-.icon-double-angle-right {
- @include ie7icon('&#xf101;');
-}
-
-
-.icon-double-angle-up {
- @include ie7icon('&#xf102;');
-}
-
-
-.icon-double-angle-down {
- @include ie7icon('&#xf103;');
-}
-
-
-.icon-angle-left {
- @include ie7icon('&#xf104;');
-}
-
-
-.icon-angle-right {
- @include ie7icon('&#xf105;');
-}
-
-
-.icon-angle-up {
- @include ie7icon('&#xf106;');
-}
-
-
-.icon-angle-down {
- @include ie7icon('&#xf107;');
-}
-
-
-.icon-desktop {
- @include ie7icon('&#xf108;');
-}
-
-
-.icon-laptop {
- @include ie7icon('&#xf109;');
-}
-
-
-.icon-tablet {
- @include ie7icon('&#xf10a;');
-}
-
-
-.icon-mobile-phone {
- @include ie7icon('&#xf10b;');
-}
-
-
-.icon-circle-blank {
- @include ie7icon('&#xf10c;');
-}
-
-
-.icon-quote-left {
- @include ie7icon('&#xf10d;');
-}
-
-
-.icon-quote-right {
- @include ie7icon('&#xf10e;');
-}
-
-
-.icon-spinner {
- @include ie7icon('&#xf110;');
-}
-
-
-.icon-circle {
- @include ie7icon('&#xf111;');
-}
-
-
-.icon-reply {
- @include ie7icon('&#xf112;');
-}
-
-.icon-mail-reply {
- @include ie7icon('&#xf112;');
-}
-
-
-.icon-github-alt {
- @include ie7icon('&#xf113;');
-}
-
-
-.icon-folder-close-alt {
- @include ie7icon('&#xf114;');
-}
-
-
-.icon-folder-open-alt {
- @include ie7icon('&#xf115;');
-}
-
-
-.icon-expand-alt {
- @include ie7icon('&#xf116;');
-}
-
-
-.icon-collapse-alt {
- @include ie7icon('&#xf117;');
-}
-
-
-.icon-smile {
- @include ie7icon('&#xf118;');
-}
-
-
-.icon-frown {
- @include ie7icon('&#xf119;');
-}
-
-
-.icon-meh {
- @include ie7icon('&#xf11a;');
-}
-
-
-.icon-gamepad {
- @include ie7icon('&#xf11b;');
-}
-
-
-.icon-keyboard {
- @include ie7icon('&#xf11c;');
-}
-
-
-.icon-flag-alt {
- @include ie7icon('&#xf11d;');
-}
-
-
-.icon-flag-checkered {
- @include ie7icon('&#xf11e;');
-}
-
-
-.icon-terminal {
- @include ie7icon('&#xf120;');
-}
-
-
-.icon-code {
- @include ie7icon('&#xf121;');
-}
-
-
-.icon-reply-all {
- @include ie7icon('&#xf122;');
-}
-
-
-.icon-mail-reply-all {
- @include ie7icon('&#xf122;');
-}
-
-
-.icon-star-half-empty {
- @include ie7icon('&#xf123;');
-}
-
-.icon-star-half-full {
- @include ie7icon('&#xf123;');
-}
-
-
-.icon-location-arrow {
- @include ie7icon('&#xf124;');
-}
-
-
-.icon-crop {
- @include ie7icon('&#xf125;');
-}
-
-
-.icon-code-fork {
- @include ie7icon('&#xf126;');
-}
-
-
-.icon-unlink {
- @include ie7icon('&#xf127;');
-}
-
-
-.icon-question {
- @include ie7icon('&#xf128;');
-}
-
-
-.icon-info {
- @include ie7icon('&#xf129;');
-}
-
-
-.icon-exclamation {
- @include ie7icon('&#xf12a;');
-}
-
-
-.icon-superscript {
- @include ie7icon('&#xf12b;');
-}
-
-
-.icon-subscript {
- @include ie7icon('&#xf12c;');
-}
-
-
-.icon-eraser {
- @include ie7icon('&#xf12d;');
-}
-
-
-.icon-puzzle-piece {
- @include ie7icon('&#xf12e;');
-}
-
-
-.icon-microphone {
- @include ie7icon('&#xf130;');
-}
-
-
-.icon-microphone-off {
- @include ie7icon('&#xf131;');
-}
-
-
-.icon-shield {
- @include ie7icon('&#xf132;');
-}
-
-
-.icon-calendar-empty {
- @include ie7icon('&#xf133;');
-}
-
-
-.icon-fire-extinguisher {
- @include ie7icon('&#xf134;');
-}
-
-
-.icon-rocket {
- @include ie7icon('&#xf135;');
-}
-
-
-.icon-maxcdn {
- @include ie7icon('&#xf136;');
-}
-
-
-.icon-chevron-sign-left {
- @include ie7icon('&#xf137;');
-}
-
-
-.icon-chevron-sign-right {
- @include ie7icon('&#xf138;');
-}
-
-
-.icon-chevron-sign-up {
- @include ie7icon('&#xf139;');
-}
-
-
-.icon-chevron-sign-down {
- @include ie7icon('&#xf13a;');
-}
-
-
-.icon-html5 {
- @include ie7icon('&#xf13b;');
-}
-
-
-.icon-css3 {
- @include ie7icon('&#xf13c;');
-}
-
-
-.icon-anchor {
- @include ie7icon('&#xf13d;');
-}
-
-
-.icon-unlock-alt {
- @include ie7icon('&#xf13e;');
-}
-
-
-.icon-bullseye {
- @include ie7icon('&#xf140;');
-}
-
-
-.icon-ellipsis-horizontal {
- @include ie7icon('&#xf141;');
-}
-
-
-.icon-ellipsis-vertical {
- @include ie7icon('&#xf142;');
-}
-
-
-.icon-rss-sign {
- @include ie7icon('&#xf143;');
-}
-
-
-.icon-play-sign {
- @include ie7icon('&#xf144;');
-}
-
-
-.icon-ticket {
- @include ie7icon('&#xf145;');
-}
-
-
-.icon-minus-sign-alt {
- @include ie7icon('&#xf146;');
-}
-
-
-.icon-check-minus {
- @include ie7icon('&#xf147;');
-}
-
-
-.icon-level-up {
- @include ie7icon('&#xf148;');
-}
-
-
-.icon-level-down {
- @include ie7icon('&#xf149;');
-}
-
-
-.icon-check-sign {
- @include ie7icon('&#xf14a;');
-}
-
-
-.icon-edit-sign {
- @include ie7icon('&#xf14b;');
-}
-
-
-.icon-external-link-sign {
- @include ie7icon('&#xf14c;');
-}
-
-
-.icon-share-sign {
- @include ie7icon('&#xf14d;');
-}
-
-
-.icon-compass {
- @include ie7icon('&#xf14e;');
-}
-
-
-.icon-collapse {
- @include ie7icon('&#xf150;');
-}
-
-
-.icon-collapse-top {
- @include ie7icon('&#xf151;');
-}
-
-
-.icon-expand {
- @include ie7icon('&#xf152;');
-}
-
-
-.icon-eur {
- @include ie7icon('&#xf153;');
-}
-
-.icon-euro {
- @include ie7icon('&#xf153;');
-}
-
-
-.icon-gbp {
- @include ie7icon('&#xf154;');
-}
-
-
-.icon-usd {
- @include ie7icon('&#xf155;');
-}
-
-.icon-dollar {
- @include ie7icon('&#xf155;');
-}
-
-
-.icon-inr {
- @include ie7icon('&#xf156;');
-}
-
-.icon-rupee {
- @include ie7icon('&#xf156;');
-}
-
-
-.icon-jpy {
- @include ie7icon('&#xf157;');
-}
-
-.icon-yen {
- @include ie7icon('&#xf157;');
-}
-
-
-.icon-cny {
- @include ie7icon('&#xf158;');
-}
-
-.icon-renminbi {
- @include ie7icon('&#xf158;');
-}
-
-
-.icon-krw {
- @include ie7icon('&#xf159;');
-}
-
-.icon-won {
- @include ie7icon('&#xf159;');
-}
-
-
-.icon-btc {
- @include ie7icon('&#xf15a;');
-}
-
-.icon-bitcoin {
- @include ie7icon('&#xf15a;');
-}
-
-
-.icon-file {
- @include ie7icon('&#xf15b;');
-}
-
-
-.icon-file-text {
- @include ie7icon('&#xf15c;');
-}
-
-
-.icon-sort-by-alphabet {
- @include ie7icon('&#xf15d;');
-}
-
-
-.icon-sort-by-alphabet-alt {
- @include ie7icon('&#xf15e;');
-}
-
-
-.icon-sort-by-attributes {
- @include ie7icon('&#xf160;');
-}
-
-
-.icon-sort-by-attributes-alt {
- @include ie7icon('&#xf161;');
-}
-
-
-.icon-sort-by-order {
- @include ie7icon('&#xf162;');
-}
-
-
-.icon-sort-by-order-alt {
- @include ie7icon('&#xf163;');
-}
-
-
-.icon-thumbs-up {
- @include ie7icon('&#xf164;');
-}
-
-
-.icon-thumbs-down {
- @include ie7icon('&#xf165;');
-}
-
-
-.icon-youtube-sign {
- @include ie7icon('&#xf166;');
-}
-
-
-.icon-youtube {
- @include ie7icon('&#xf167;');
-}
-
-
-.icon-xing {
- @include ie7icon('&#xf168;');
-}
-
-
-.icon-xing-sign {
- @include ie7icon('&#xf169;');
-}
-
-
-.icon-youtube-play {
- @include ie7icon('&#xf16a;');
-}
-
-
-.icon-dropbox {
- @include ie7icon('&#xf16b;');
-}
-
-
-.icon-stackexchange {
- @include ie7icon('&#xf16c;');
-}
-
-
-.icon-instagram {
- @include ie7icon('&#xf16d;');
-}
-
-
-.icon-flickr {
- @include ie7icon('&#xf16e;');
-}
-
-
-.icon-adn {
- @include ie7icon('&#xf170;');
-}
-
-
-.icon-bitbucket {
- @include ie7icon('&#xf171;');
-}
-
-
-.icon-bitbucket-sign {
- @include ie7icon('&#xf172;');
-}
-
-
-.icon-tumblr {
- @include ie7icon('&#xf173;');
-}
-
-
-.icon-tumblr-sign {
- @include ie7icon('&#xf174;');
-}
-
-
-.icon-long-arrow-down {
- @include ie7icon('&#xf175;');
-}
-
-
-.icon-long-arrow-up {
- @include ie7icon('&#xf176;');
-}
-
-
-.icon-long-arrow-left {
- @include ie7icon('&#xf177;');
-}
-
-
-.icon-long-arrow-right {
- @include ie7icon('&#xf178;');
-}
-
-
-.icon-apple {
- @include ie7icon('&#xf179;');
-}
-
-
-.icon-windows {
- @include ie7icon('&#xf17a;');
-}
-
-
-.icon-android {
- @include ie7icon('&#xf17b;');
-}
-
-
-.icon-linux {
- @include ie7icon('&#xf17c;');
-}
-
-
-.icon-dribbble {
- @include ie7icon('&#xf17d;');
-}
-
-
-.icon-skype {
- @include ie7icon('&#xf17e;');
-}
-
-
-.icon-foursquare {
- @include ie7icon('&#xf180;');
-}
-
-
-.icon-trello {
- @include ie7icon('&#xf181;');
-}
-
-
-.icon-female {
- @include ie7icon('&#xf182;');
-}
-
-
-.icon-male {
- @include ie7icon('&#xf183;');
-}
-
-
-.icon-gittip {
- @include ie7icon('&#xf184;');
-}
-
-
-.icon-sun {
- @include ie7icon('&#xf185;');
-}
-
-
-.icon-moon {
- @include ie7icon('&#xf186;');
-}
-
-
-.icon-archive {
- @include ie7icon('&#xf187;');
-}
-
-
-.icon-bug {
- @include ie7icon('&#xf188;');
-}
-
-
-.icon-vk {
- @include ie7icon('&#xf189;');
-}
-
-
-.icon-weibo {
- @include ie7icon('&#xf18a;');
-}
-
-
-.icon-renren {
- @include ie7icon('&#xf18b;');
-}
-
-
diff --git a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome.scss b/library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome.scss
deleted file mode 100644
index e5903d856..000000000
--- a/library/font_awesome/src/3.2.1/assets/font-awesome/scss/font-awesome.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-/*!
- * Font Awesome 3.2.1
- * the iconic font designed for Bootstrap
- * ------------------------------------------------------------------------------
- * The full suite of pictographic icons, examples, and documentation can be
- * found at http://fontawesome.io. Stay up to date on Twitter at
- * http://twitter.com/fontawesome.
- *
- * License
- * ------------------------------------------------------------------------------
- * - The Font Awesome font is licensed under SIL OFL 1.1 -
- * http://scripts.sil.org/OFL
- * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- * http://opensource.org/licenses/mit-license.html
- * - Font Awesome documentation licensed under CC BY 3.0 -
- * http://creativecommons.org/licenses/by/3.0/
- * - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- * "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- * Author - Dave Gandy
- * ------------------------------------------------------------------------------
- * Email: dave@fontawesome.io
- * Twitter: http://twitter.com/davegandy
- * Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-
-@import "variables";
-@import "mixins";
-@import "path";
-@import "core";
-@import "bootstrap";
-@import "extras";
-@import "icons";
diff --git a/library/font_awesome/src/3.2.1/assets/img/contribution-sample.png b/library/font_awesome/src/3.2.1/assets/img/contribution-sample.png
deleted file mode 100644
index 7e6356279..000000000
--- a/library/font_awesome/src/3.2.1/assets/img/contribution-sample.png
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/img/fort_awesome.jpg b/library/font_awesome/src/3.2.1/assets/img/fort_awesome.jpg
deleted file mode 100644
index 3542fae0f..000000000
--- a/library/font_awesome/src/3.2.1/assets/img/fort_awesome.jpg
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings-white.png b/library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings-white.png
deleted file mode 100644
index 3bf6484a2..000000000
--- a/library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings-white.png
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings.png b/library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings.png
deleted file mode 100644
index 8bc9e642b..000000000
--- a/library/font_awesome/src/3.2.1/assets/img/glyphicons-halflings.png
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/img/icon-flag.pdf b/library/font_awesome/src/3.2.1/assets/img/icon-flag.pdf
deleted file mode 100644
index 1c8913d14..000000000
--- a/library/font_awesome/src/3.2.1/assets/img/icon-flag.pdf
+++ /dev/null
@@ -1,1355 +0,0 @@
-%PDF-1.5 %âãÏÓ
-1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R 51 0 R 73 0 R 95 0 R 117 0 R 140 0 R 163 0 R]/Order 164 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R 51 0 R 73 0 R 95 0 R 117 0 R 140 0 R 163 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 42946/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:format>application/pdf</dc:format>
- <dc:title>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">Web</rdf:li>
- </rdf:Alt>
- </dc:title>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
- <xmp:CreatorTool>Adobe Illustrator CS6 (Macintosh)</xmp:CreatorTool>
- <xmp:CreateDate>2012-12-10T10:41:19-05:00</xmp:CreateDate>
- <xmp:ModifyDate>2013-01-02T00:01:34-05:00</xmp:ModifyDate>
- <xmp:MetadataDate>2013-01-02T00:01:34-05:00</xmp:MetadataDate>
- <xmp:Thumbnails>
- <rdf:Alt>
- <rdf:li rdf:parseType="Resource">
- <xmpGImg:width>256</xmpGImg:width>
- <xmpGImg:height>128</xmpGImg:height>
- <xmpGImg:format>JPEG</xmpGImg:format>
- <xmpGImg:image>/9j/4AAQSkZJRgABAgEAyADIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAyAAAAAEA&#xA;AQDIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAgAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYqw&#xA;/wDNP8zdE/Lnys2varG9wXlW3s7OKgeadwWC8jsoCoWZj0A7mgKrE/yX/wCcitD/ADM1G60n9Gya&#xA;PrFtEblLd5RcRywqwVikoSL4lLLVSvfau+KvXMVdirsVdirsVdirsVfOtx/zml5Ni80nTk0a5k0F&#xA;ZjE2tiVeXENx9VbYISyd/wC85U/Zrtir6HhminhjmhcSRSqHjddwysKgg+4xVfirsVdirsVdirsV&#xA;fP8A+fP/ADk5d+Q/Mf8Ahjy5p9ve6rbxpLqFxe82hiMqh44ljieNmYowYnkAKjr2VZH+QP58r+Zt&#xA;rfWeoWUen69pqpJNHCxaGaFzx9SMNV14tsyknqN96BV67irsVdirsVdirsVeD3f/ADmJ+W1v5pbS&#xA;Ba3kumRzeg+toEMNQ3EyLHy9Ro+9etP2cVe7RyRyxrJGweNwGR1IKspFQQR1BxVqaeCBPUmkWJOn&#xA;JyFFT7nFW45I5EEkbB0bdWUggj2IxVdirsVdiryr/nJjyZYeZfyn1Sa5kaGfQlbVbR0ANZII3BRg&#xA;f2XRyPY0PamKvA/+ca7vyl5H8t6/+avmG5mJs5BotlYQKC0jzLHOeFWUM7BdgSAqhia9lUH58/5y&#xA;9/MTXJZYPLix+XNNNVUxBZ7tl6VaaReK1/yEBHicVeP6n5v82apMZtT1q+vZSa87i5mlP3uxxVMv&#xA;L35p/mN5dlSTR/Md/ahKUh9d5ITTYcoZC8TU91xV7t5I/wCc1dQt7f6v500YXrqPgv8ATSsUjUH+&#xA;7IZDwJPirKP8nFVDzr/zmprl3BJa+T9HTTOQoNRvWFxMK90hAESsP8ouPbFUj/5xi88ebtV/PCB9&#xA;T1e6vW1a2ulv/rEjSCQRxGVNmqBwZBxp0Gw2xV9sEAih3B6jFXwDrf5Q6Xaf85B/8q3gvZRpct9b&#xA;xpdFQZUguYEueG5ILIsnDl3pWnbFX0z+cH/OQnlv8rfQ8uWFi2p65HbIYbQOEgt4qcY/Wk+Jq0Wo&#xA;QCpHUioxV8vecP8AnI783PM8sgk1uTSrN60stLJtEAJ6eoh9ZvD4nOKsBfzBrzz/AFh9SumnqD6p&#xA;nkL1HQ8i1cVZn5Q/P781/Ks0ZstenvLVCK2OoMbuAr140kJdB/qMuKvdNE/5zd0Y6aP075buU1JV&#xA;ofqMqPA7U6/vSjxgnt8XzxVh3nn/AJzK86atDJaeVrCHy/A44m7dvrV3T/ILKsSV/wBRiOxxVH/8&#xA;4d+a/MuqfmZrsGp6nc30d3pUl3cC5leUvPFcwIkhLljyCzMPpxVv/nMf8sDp+rx/mJb3CmDV5oLC&#xA;+tGrzW5jt2EciHoUaG2ow7Ed67Kp5/zj75f0X8rPy5v/AM1/NF5WLVreNLS2thzdYDJ8KANw5Syy&#xA;AbVooFSetFWHefv+cxPPOsSS23lSCPy9p52S4IW4vWHiXcGJKjsqVH82KvGdX88ec9ZlMuq67f3z&#xA;k1rPczSAfIMxA+jFVbQvzD896DMkuj+YL+yZOiRXEgjO9aNGSUYV7MMVe4eRP+cz/M2notr5x01N&#xA;ZiAp9fteNtc/N4wPRf8A2ITFU/8AMf8Azm9aCBk8t+WpGuCPgn1GZVRT7ww8i/8AyMXFXg3mv86f&#xA;zL80axBqupa3Ok1pIJbKC2PoQQspqCkSUWv+U1Se5xVONZ/J+C0/Pk/lpFqDfVJL6CGO+KVdYLmF&#xA;LkVWtC6RycfAkV2xVmn5mf8AOVPmh5pvLnkYDRdD08mzg1CnqXs0cP7sMGcUiDBaii8/8rFXhOq6&#xA;1rGr3TXerX1xqF01S091K80hruficscVRHl/zV5l8u3a3ehapdaZcKa87aV46/6wU0YexxV7l5b/&#xA;AOc0fPdhp31bWtKtNaulFEvuRtXPvIkatG3+xVcVYj58/wCcm/zT83RPaC9XRNNcUe00wNCzj/Ln&#xA;LNMfcBgp8MVfT3/OK+tarq35P2M2p3Ul5NBc3MEc0zF39NHqqljuePLavbbFWUfnX/5KPzf/ANsq&#xA;6/5NHFXxXH/6zbcf+BlB/wB0ubFXmmKuxV2KuxV2KvYP+cT/APyduj/8YLz/AKhpMVfemKvkDzN/&#xA;621D/wAx2n/90yHFWFf85Yf+Tt1j/jBZ/wDUNHirx/FXYq7FXYq7FX0B/wA4Vf8Ak09V/wC2Hcf9&#xA;Rlpir1X/AJzV/wDJWaV/23Lf/qDu8VYp5+/9Y28uf9GX/J18VfKuKuxV2KuxV2KuxV9K+Zv/AFtq&#xA;H/mO0/8A7pkOKvnXVv8Ajq3n/GeT/iZxVCYq7FXYq7FX3V/ziF/5Ju2/5jrv/iQxVmv51/8Ako/N&#xA;/wD2yrr/AJNHFXxXH/6zbcf+BlB/3S5sVeaYq7FXYq7FXYq9g/5xP/8AJ26P/wAYLz/qGkxV96Yq&#xA;+QPM3/rbUP8AzHaf/wB0yHFWFf8AOWH/AJO3WP8AjBZ/9Q0eKvH8VdirsVdirsVfQH/OFX/k09V/&#xA;7Ydx/wBRlpir1X/nNX/yVmlf9ty3/wCoO7xVinn7/wBY28uf9GX/ACdfFXyrirsVdirsVdirsVfS&#xA;vmb/ANbah/5jtP8A+6ZDir511b/jq3n/ABnk/wCJnFUJirsVdirsVfdX/OIX/km7b/mOu/8AiQxV&#xA;mv51/wDko/N//bKuv+TRxV8Vx/8ArNtx/wCBlB/3S5sVYLoXl3XtfvlsNE0641K8bcQWsTSsB0qQ&#xA;oNB7nbFXrOh/84i/nFqcSy3NvZaQG3C31z8QFO4tluKfrxVB+av+cV/zg8v273KafDrMEYJkbS5T&#xA;M4A8IZFimb/YocVeSTQzQSvDMjRTRsVkjcFWVgaEMDuCMVWgEkACpOwA61xV9L/84p/k752s/Odv&#xA;501exk0vSLW3mFqLleEtw86GMcYmIdUCuW5kUO1K9lX15ir5A8zf+ttQ/wDMdp//AHTIcVYV/wA5&#xA;Yf8Ak7dY/wCMFn/1DR4qw/yX+Uf5jec6P5e0O4urUmhvXCwWw8f30xRGp3Ckn2xV6RF/zhl+bL23&#xA;rNd6RHJ/yztczmT71gZP+GxVgHnb8lPzN8mRtPrmiTLYrWuoW5W4twB3aSIt6f8As+OKsGxVUggm&#xA;nmSGCNpZpCFjjQFmZj0AA3JxV9Zf84lflB518t65qHmzzDZPpdvdWDWNnZ3A4XEnqzRStI0f2owv&#xA;oUo4BNemKp//AM5q/wDkrNK/7blv/wBQd3irFPP3/rG3lz/oy/5Ovir5k0XQdb1y/TT9GsLjUb2T&#xA;7NvaxtK9OleKA0A7npir1vQv+cRfzi1SFZbi3stIDioS/ufjp2qtstwR8jviqH8yf84ofnFotu9x&#xA;FY22sRRir/o2f1Hp7RSrDI3yVScVeSXtje2F3LZ31vJa3cDcJredGjkRh1VkYBlPzxVQxVm35efk&#xA;/wCe/Pl7DHo2mTfo55Ak+rSqUtYlrR29RuIcqN+CVb2xV6/5m/8AW2of+Y7T/wDumQ4qs0r/AJw1&#xA;84ah5rvzrmo2+n6AtzI0N1CfWuLiMsShSLZY6jrzbY9mxV7f5c/5xl/JvRLdIzoa6pcLTndajI87&#xA;uR4pVYR/sUGKoHzd/wA4q/lJr1qwsbB9BvqH07qwdgte3OGQvGR40Cn3xV4bqv8Azhb+ZNveOmm6&#xA;lpl9aVPpzySTW8hH+XH6cgU/JzirKPJv/OE0izxz+ctdRolIL2Glqx5jwNxMq8fekX0jFX0x5a8t&#xA;aJ5Z0O10PQ7VbPTLJSlvApZqVJZiWYszMzEkkmpOKsd/Ov8A8lH5v/7ZV1/yaOKvEv8AnFHyh5c8&#xA;2/lN5i0TzFZLf6ZNq6u8DM6HlHBEysrxsjqQe6sPDpir6N8t+VPLfljTU03QNOg02yT/AHVboF5H&#xA;pydvtO3+UxJxVNcVdirGvMv5afl/5muBc695fsdQuhQfWZYV9YgbAGVaOR7E4qt8vflh+Xfl2dbn&#xA;RfLmn2V0u6XMcCGZe+0rAuPoOKsnxV2KvkDzN/621D/zHaf/AN0yHFX0p5h/Kn8vPMfmG28w65oV&#xA;vqGrWiCKKefmyFFJKiSHl6UlORpzU4qymOOOKNY41CRoAqIoAVVAoAAOgGKrsVcQGBBFQdiD0IxV&#xA;hOo/kl+UuoXT3V15U04zvu7RwrECfErHwFfemKp15d8i+TPLY/3AaJY6Y5HFpbaCOORh/lSAc2+k&#xA;4qnmKvAP+c1f/JWaV/23Lf8A6g7vFWV/lP5X0HzR+QHlvRNes1vtLurCMT27llrxkLKQyFXUhhUF&#xA;SDirOvKnkryp5S08af5c0uDTLXbmsK/G5HQySNykkb3dicVTrFXYqkXmXyJ5M80Ko8w6LZ6m0YpH&#xA;JcQo8iDwWSnNR8jiqUaX+S/5T6ZcC4s/KmmrOKFXkt0mKkdCvq8+J9xirM0RI0WONQiIAqIooABs&#xA;AAMVfMuvflv54uP+ct7fzNDo9w/l9rizuf0oAPq4jhsY4n5PWgYPGw4nf23GKvpvFXYq7FXYq7FX&#xA;Yqxb81NJ1HWPy28zaXpsJuL+8065htYFIBeRoyFUVIFScVeb/wDOJXk7zP5Y8jarB5h02bTLi61F&#xA;poILleEhjEMacuB+IDkp64q9xxV2KuxV2KuxV2KuxV8ya9+W/ni4/wCct7fzNDo9w/l9rizuf0oA&#xA;Pq4jhsY4n5PWgYPGw4nf23GKvpvFXYq7FXYq7FXYq7FXi/8Azlh5R8y+Z/y2srPy/p82p3drq0F1&#xA;Nb2685BELeeIsEG7UeVenz6Yqzb8m9F1PRPyu8taXqlu1rqFrZItxbvTkjEluLUruAdxirMsVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdirsVdirsVdirsVdirsVdirsVfLH/OS/51/mb5M/MWPR/LWs/UNObT4LgwfVrSb947yBm5&#xA;TRSPuEG1aYq8n/6Gj/Pb/qZv+nHT/wDsnxV3/Q0f57f9TN/046f/ANk+Ku/6Gj/Pb/qZv+nHT/8A&#xA;snxV3/Q0f57f9TN/046f/wBk+Ku/6Gj/AD2/6mb/AKcdP/7J8Vd/0NH+e3/Uzf8ATjp//ZPirv8A&#xA;oaP89v8AqZv+nHT/APsnxV9j/kn5k1nzJ+Vmg67rdz9a1S9ile6ueEcXIrPIgPCNUQfCo6DFXgV1&#xA;/wA5tawvmljbaBav5WWUqEZpBfPEDT1BJy9JWI34emfDl3xV9X2d3BeWcF5bnlBcxpNExBBKOoZT&#xA;Q9Njiq2/1LTtPgM9/dQ2kA6yzyLEn/BOQMVS+y85+T76YQWWu6fdTHpFDdQSMf8AYq5OKpxirsVQ&#xA;2oappmmwrNqN3DZwuwjSS4kSJS7fZUFyBU9hiqJxV8u/mV/zl9rvl/z5qGhaFo1nPpmj3Ulndy3h&#xA;l9aaSBik3pmN0WMB1KrVXr19sVfRPkzzPaeavKuleYrSNobfVLdLhYX3ZCw+JCe/FqivfFU0ubq1&#xA;tYWnupkghX7UsrBFHzZiBiqUweevJNxMsEHmHTZZmNFiS8gZifAKHriqdghgCDUHcEdCMVdiqhe3&#xA;9jYWsl3fXEVpaxCstxO6xxqOlWdiFGKqkM0M8Mc8EiywyqHilQhlZWFVZWGxBHQ4qvxV2KuxV2Ku&#xA;xV2KuxV8Qf8AOZP/AJNyH/tlW3/J2bFXhWKuxV2KuxV2KuxV2Kv0K/5xu/8AJJeVv+ME3/UTLir5&#xA;f1/8svKsH/OUA8jxQuvl2bULXlah6ER3FtHdPCrKAQnKQovcL3rvirIvzT/5yz80XF5daF5Hij0T&#xA;SbSRraPUQoe6lSI8A0YYcIVIGw4lv8odMVeA6vres6zeNe6vf3Go3j/auLqV5pD/ALJyxxVA4qz/&#xA;AMifnp+ZnkqSNdK1eS4sEI5aZek3FsQP2QrnlH/zzZTir07VP+c2fO89iItO0LT7K7K0e5kaWcV8&#xA;UjrHT/ZFsVeH+b/PPm3zhqR1HzJqc2o3IqI/UNI4wdysUS8Y419lUYq/RryDLLL5F8uSyu0ksml2&#xA;TSSMSzMzW6Ekk7kk4q+P/wDnJvyVoVh+edhbWUbQQ+ZIrW91FVb/AHfdXcsEzx1B48xFyPX4iT7Y&#xA;qyz81/8AnI288j3Mv5dfl1ZRafa+X1XT21SYetIrRKFZYY3HGqtsXk5cjU07lV85eYfNfmbzHd/W&#xA;9e1S61O434vdSvLxr2QMaKPZdsVSnFWXeSvzY/MHyXMjeX9auLe3U1awdvVtW33rBJyTfxADe+Kv&#xA;Yn/5zc85nThHH5e05dRpRrpnnaEnxEIZW/5KYq8a89/ml5689XQn8yapJdRI3KCyX93axHp8EKUS&#xA;tNuRq3icVfcP/OOUkkn5J+VWkYuwt5FBYknitxIqjfsAKDFXpGKuxV2KuxV2KuxV2KviD/nMn/yb&#xA;kP8A2yrb/k7NirwrFXYq7FXYq7FXYq7FX6Ff843f+SS8rf8AGCb/AKiZcVeFeZv/AFtqH/mO0/8A&#xA;7pkOKvnXVv8Ajq3n/GeT/iZxVCYq7FXYq7FXYq/TT8vP+UA8s/8AbKsf+oZMVfMH/OVP/k/fKP8A&#xA;zA6d/wB1G4xV4/8AnX/5Nzzf/wBtW6/5OnFWFYq7FXYq7FXYq/Qr/nG7/wAkl5W/4wTf9RMuKvSs&#xA;VdirsVdirsVdirsVfEH/ADmT/wCTch/7ZVt/ydmxV4VirsVdirsVdirsVdir9Cv+cbv/ACSXlb/j&#xA;BN/1Ey4q8K8zf+ttQ/8AMdp//dMhxV866t/x1bz/AIzyf8TOKoTFXYq7FXYq7FX6afl5/wAoB5Z/&#xA;7ZVj/wBQyYq+YP8AnKn/AMn75R/5gdO/7qNxirx/86//ACbnm/8A7at1/wAnTirCsVdirsVdirsV&#xA;foV/zjd/5JLyt/xgm/6iZcVelYq7FXYq7FXYq7FXYq+IP+cyf/JuQ/8AbKtv+Ts2KvCsVdirsVdi&#xA;rsVdirsVfoV/zjd/5JLyt/xgm/6iZcVeFeZv/W2of+Y7T/8AumQ4q8Ck0TWdU8zXWmabY3F5qL3M&#xA;qLZwRPJMWDkEcFBbbvir13yp/wA4e/mfq8aT6vJaaBA25juHM9xTt+7h5J9DSA4qy27/AOcG9QW1&#xA;LWfnCGa6ptFNYtFHWn+/Fnlbr/kYq8Z/MH8kvzG8hs0mt6Y0mnA0XVbMme0PzcAGOvYSKpxVggBJ&#xA;AAqTsAOtcVem/l7/AM47fmb50miki019K0lzV9U1BTDHx8Y4z+9l9uK0r1IxV986JpcWk6NYaVC7&#xA;SQ6fbQ2sbtTkywxiME07kLir5N/5yp/8n75R/wCYHTv+6jcYq8n/ADksL64/ObzVZwW0s13Pq1wI&#xA;beNGaRy8hZOKAcm5AginXFWVeT/+cTvzY8wJHcX1tD5ftHAYNqDkTFT4QRh3U+0nHFWet/zg3efV&#xA;Sy+cYzdU2iOnsI6+HqfWC3/CYq8o/ML/AJx2/M3yQj3V3YDU9JSpbUtO5Txqo7ypxWWP3LLx98Ve&#xA;ZYqzryL+Sf5k+dpYzo2jypYuRXVLsG3tAD+0JHHx08Iwx9sVfev5beT/APBvkXR/LJuPrT6bB6ct&#xA;xSgeR2MkhUfy83PGvbFWS4q7FXYq7FXYq7FXYq+IP+cyf/JuQ/8AbKtv+Ts2KvCsVdirsVdirsVd&#xA;irsVfoV/zjd/5JLyt/xgm/6iZcVeFeZv/W2of+Y7T/8AumQ4q+sLDQNC0+8u76w021tL2/b1L66g&#xA;hjilneteUrooZzU9WOKo/FXYq4gMCCKg7EHoRiqBt9A0K2uPrNtp1rDcbn1o4Y0ep6/EFBxVHYq7&#xA;FXyB/wA5U/8Ak/fKP/MDp3/dRuMVfWCaBoSavJrSabarrEqCOXUhDGLlkAoEabj6hUAdK4qj8Vdi&#xA;rsVQB8vaAbn60dNtTck8jP6EfqV8eXGuKo/FXYq7FXYq7FXYq7FXYq7FXxB/zmT/AOTch/7ZVt/y&#xA;dmxV4VirsVdirsVdirsVdir9Cv8AnG7/AMkl5W/4wTf9RMuKsG1r8lfO93/zk3B59hjtz5a9a2uX&#xA;uTModfq9mkDRmL7fIvFtQUoRv1xV9B4q7FXYq7FXYq7FXYq+fPz1/JXzv5y/Nnyz5j0WO3fSrOC1&#xA;t72WWZY2iNvdyTsxQ/EylJduFTsfbFX0HirsVdirsVdirsVdirsVdirsVdirsVdirsVfOn5/f845&#xA;+d/zD88x6/ot9plvZrZQ2pjvZbhJecbyMTSKCZafGP2sVebf9CVfmn/1ddD/AOki8/7JMVd/0JV+&#xA;af8A1ddD/wCki8/7JMVd/wBCVfmn/wBXXQ/+ki8/7JMVd/0JV+af/V10P/pIvP8AskxV3/QlX5p/&#xA;9XXQ/wDpIvP+yTFXf9CVfmn/ANXXQ/8ApIvP+yTFXf8AQlX5p/8AV10P/pIvP+yTFX1N+UnlDUvJ&#xA;35d6L5a1OWGa+06ORJ5LZnaIl5nkHAusbHZx1UYqy7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq//Z</xmpGImg:image>
- </rdf:li>
- </rdf:Alt>
- </xmp:Thumbnails>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
- <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
- <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID>
- <xmpMM:DocumentID>xmp.did:5FCFF6CD6B2068118083DDCF5AC233CF</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:ce683a68-df29-fd49-91a3-fb4d92bfa24e</xmpMM:InstanceID>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>xmp.iid:5ECFF6CD6B2068118083DDCF5AC233CF</stRef:instanceID>
- <stRef:documentID>xmp.did:5ECFF6CD6B2068118083DDCF5AC233CF</stRef:documentID>
- <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID>
- <stRef:renditionClass>proof:pdf</stRef:renditionClass>
- </xmpMM:DerivedFrom>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FA7F117407206811822AEAA5B991C736</stEvt:instanceID>
- <stEvt:when>2012-09-06T13:08:53-04:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS6 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:5FCFF6CD6B2068118083DDCF5AC233CF</stEvt:instanceID>
- <stEvt:when>2012-12-10T10:41:19-05:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS6 (Macintosh)</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
- <illustrator:StartupProfile>Web</illustrator:StartupProfile>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
- xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
- xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
- <xmpTPg:NPages>1</xmpTPg:NPages>
- <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
- <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
- <xmpTPg:MaxPageSize rdf:parseType="Resource">
- <stDim:w>60.000000</stDim:w>
- <stDim:h>56.000000</stDim:h>
- <stDim:unit>Points</stDim:unit>
- </xmpTPg:MaxPageSize>
- <xmpTPg:PlateNames>
- <rdf:Seq>
- <rdf:li>Cyan</rdf:li>
- <rdf:li>Magenta</rdf:li>
- <rdf:li>Yellow</rdf:li>
- <rdf:li>Black</rdf:li>
- </rdf:Seq>
- </xmpTPg:PlateNames>
- <xmpTPg:SwatchGroups>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Default Swatch Group</xmpG:groupName>
- <xmpG:groupType>0</xmpG:groupType>
- <xmpG:Colorants>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>White</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>255</xmpG:green>
- <xmpG:blue>255</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>Black</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>0</xmpG:green>
- <xmpG:blue>0</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>RGB Red</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>0</xmpG:green>
- <xmpG:blue>0</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>RGB Yellow</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>255</xmpG:green>
- <xmpG:blue>0</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>RGB Green</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>255</xmpG:green>
- <xmpG:blue>0</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>RGB Cyan</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>255</xmpG:green>
- <xmpG:blue>255</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>RGB Blue</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>0</xmpG:green>
- <xmpG:blue>255</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>RGB Magenta</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>0</xmpG:green>
- <xmpG:blue>255</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>193</xmpG:red>
- <xmpG:green>39</xmpG:green>
- <xmpG:blue>45</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>237</xmpG:red>
- <xmpG:green>28</xmpG:green>
- <xmpG:blue>36</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>241</xmpG:red>
- <xmpG:green>90</xmpG:green>
- <xmpG:blue>36</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>247</xmpG:red>
- <xmpG:green>147</xmpG:green>
- <xmpG:blue>30</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>251</xmpG:red>
- <xmpG:green>176</xmpG:green>
- <xmpG:blue>59</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>252</xmpG:red>
- <xmpG:green>238</xmpG:green>
- <xmpG:blue>33</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>217</xmpG:red>
- <xmpG:green>224</xmpG:green>
- <xmpG:blue>33</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>140</xmpG:red>
- <xmpG:green>198</xmpG:green>
- <xmpG:blue>63</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>57</xmpG:red>
- <xmpG:green>181</xmpG:green>
- <xmpG:blue>74</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>146</xmpG:green>
- <xmpG:blue>69</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>104</xmpG:green>
- <xmpG:blue>55</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>34</xmpG:red>
- <xmpG:green>181</xmpG:green>
- <xmpG:blue>115</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>169</xmpG:green>
- <xmpG:blue>157</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>41</xmpG:red>
- <xmpG:green>171</xmpG:green>
- <xmpG:blue>226</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>113</xmpG:green>
- <xmpG:blue>188</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>46</xmpG:red>
- <xmpG:green>49</xmpG:green>
- <xmpG:blue>146</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>27</xmpG:red>
- <xmpG:green>20</xmpG:green>
- <xmpG:blue>100</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>102</xmpG:red>
- <xmpG:green>45</xmpG:green>
- <xmpG:blue>145</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>147</xmpG:red>
- <xmpG:green>39</xmpG:green>
- <xmpG:blue>143</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>158</xmpG:red>
- <xmpG:green>0</xmpG:green>
- <xmpG:blue>93</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>212</xmpG:red>
- <xmpG:green>20</xmpG:green>
- <xmpG:blue>90</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>237</xmpG:red>
- <xmpG:green>30</xmpG:green>
- <xmpG:blue>121</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>199</xmpG:red>
- <xmpG:green>178</xmpG:green>
- <xmpG:blue>153</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>153</xmpG:red>
- <xmpG:green>134</xmpG:green>
- <xmpG:blue>117</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>115</xmpG:red>
- <xmpG:green>99</xmpG:green>
- <xmpG:blue>87</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>83</xmpG:red>
- <xmpG:green>71</xmpG:green>
- <xmpG:blue>65</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>198</xmpG:red>
- <xmpG:green>156</xmpG:green>
- <xmpG:blue>109</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>166</xmpG:red>
- <xmpG:green>124</xmpG:green>
- <xmpG:blue>82</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>140</xmpG:red>
- <xmpG:green>98</xmpG:green>
- <xmpG:blue>57</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>117</xmpG:red>
- <xmpG:green>76</xmpG:green>
- <xmpG:blue>36</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>96</xmpG:red>
- <xmpG:green>56</xmpG:green>
- <xmpG:blue>19</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>66</xmpG:red>
- <xmpG:green>33</xmpG:green>
- <xmpG:blue>11</xmpG:blue>
- </rdf:li>
- </rdf:Seq>
- </xmpG:Colorants>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Grays</xmpG:groupName>
- <xmpG:groupType>1</xmpG:groupType>
- <xmpG:Colorants>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>0</xmpG:red>
- <xmpG:green>0</xmpG:green>
- <xmpG:blue>0</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>26</xmpG:red>
- <xmpG:green>26</xmpG:green>
- <xmpG:blue>26</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>51</xmpG:red>
- <xmpG:green>51</xmpG:green>
- <xmpG:blue>51</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>77</xmpG:red>
- <xmpG:green>77</xmpG:green>
- <xmpG:blue>77</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>102</xmpG:red>
- <xmpG:green>102</xmpG:green>
- <xmpG:blue>102</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>128</xmpG:red>
- <xmpG:green>128</xmpG:green>
- <xmpG:blue>128</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>153</xmpG:red>
- <xmpG:green>153</xmpG:green>
- <xmpG:blue>153</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>179</xmpG:red>
- <xmpG:green>179</xmpG:green>
- <xmpG:blue>179</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>204</xmpG:red>
- <xmpG:green>204</xmpG:green>
- <xmpG:blue>204</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>230</xmpG:red>
- <xmpG:green>230</xmpG:green>
- <xmpG:blue>230</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>242</xmpG:red>
- <xmpG:green>242</xmpG:green>
- <xmpG:blue>242</xmpG:blue>
- </rdf:li>
- </rdf:Seq>
- </xmpG:Colorants>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Web Color Group</xmpG:groupName>
- <xmpG:groupType>1</xmpG:groupType>
- <xmpG:Colorants>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>63</xmpG:red>
- <xmpG:green>169</xmpG:green>
- <xmpG:blue>245</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>122</xmpG:red>
- <xmpG:green>201</xmpG:green>
- <xmpG:blue>67</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>147</xmpG:green>
- <xmpG:blue>30</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>29</xmpG:green>
- <xmpG:blue>37</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>255</xmpG:red>
- <xmpG:green>123</xmpG:green>
- <xmpG:blue>172</xmpG:blue>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName>
- <xmpG:mode>RGB</xmpG:mode>
- <xmpG:type>PROCESS</xmpG:type>
- <xmpG:red>189</xmpG:red>
- <xmpG:green>204</xmpG:green>
- <xmpG:blue>212</xmpG:blue>
- </rdf:li>
- </rdf:Seq>
- </xmpG:Colorants>
- </rdf:li>
- </rdf:Seq>
- </xmpTPg:SwatchGroups>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
- <pdf:Producer>Adobe PDF library 10.01</pdf:Producer>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[7 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[0.0 0.0 56.0 56.0]/BleedBox[0.0 0.0 60.0 56.0]/Contents 165 0 R/LastModified(D:20130102000134-05'00')/MediaBox[0.0 0.0 60.0 56.0]/Parent 3 0 R/PieceInfo<</Illustrator 166 0 R>>/Resources<</ExtGState<</GS0 167 0 R>>/Properties<</MC0 163 0 R>>>>/Thumb 168 0 R/TrimBox[0.0 0.0 60.0 56.0]/Type/Page>> endobj 165 0 obj <</Filter/FlateDecode/Length 537>>stream
-H‰TTËnU1 Üç+ò7ŸI¶ĪB >à
-º)H-ÿ/1vî=§¨ROÇqlόӇoõáé±×OŸky+½šWïõ‚ÏûÏò£þA(~Þ_ÊÃ×ï½¾ü-o•2DÕ¬u•Uu´Ñêõwfÿ.—Þ„Ví–U
-%n›Û0BÍü£…
-8;Ue`\B]'l3Wi]-*=SST5_&k8\Fg9!~> endstream endobj 169 0 obj [/Indexed/DeviceRGB 255 170 0 R] endobj 170 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
-VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
-PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 163 0 obj <</Intent 171 0 R/Name(Layer 1)/Type/OCG/Usage 172 0 R>> endobj 171 0 obj [/View/Design] endobj 172 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 167 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 166 0 obj <</LastModified(D:20130102000134-05'00')/Private 173 0 R>> endobj 173 0 obj <</AIMetaData 174 0 R/AIPDFPrivateData1 175 0 R/AIPDFPrivateData10 176 0 R/AIPDFPrivateData2 177 0 R/AIPDFPrivateData3 178 0 R/AIPDFPrivateData4 179 0 R/AIPDFPrivateData5 180 0 R/AIPDFPrivateData6 181 0 R/AIPDFPrivateData7 182 0 R/AIPDFPrivateData8 183 0 R/AIPDFPrivateData9 184 0 R/ContainerVersion 11/CreatorVersion 16/NumBlock 10/RoundtripVersion 16>> endobj 174 0 obj <</Length 927>>stream
-%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 16.0 %%AI8_CreatorVersion: 16.0.3 %%For: (Dave Gandy) () %%Title: (icon-flag.pdf) %%CreationDate: 1/2/13 12:01 AM %%Canvassize: 16383 %%BoundingBox: -56 -119 188 0 %%HiResBoundingBox: -56 -119 188 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 12.0 %AI12_BuildNumber: 690 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -56 60 0 %AI3_TemplateBox: 7.5 -7.5 7.5 -7.5 %AI3_TileBox: -366 -334 426 278 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -58.6665 18.333 6 1261 742 18 0 0 134 133 1 1 0 0 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:-393 -307 %AI7_GridSettings: 4 4 4 4 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 175 0 obj <</Length 6064>>stream
-%%BoundingBox: -56 -119 188 0 %%HiResBoundingBox: -56 -119 188 0 %AI7_Thumbnail: 128 64 8 %%BeginData: 5936 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDA0FFA8FD41FF7D527DFD3AFF27F827FD1EFFA8F8277DFD1DFF7D %F8F8F827FD38FF52F8F8F852FD07FFA8FD15FFFD04F8A8FD09FFA8FD12FF %FD05F87DFD37FF52F8F8F852FD04FFA87DFD0427527DA8FD08FF7D277DFD %05FFFD04F8A8FD05FFA85252272727527DFD09FFA85227FFFFFFFD05F87D %FD04FFA87D52522727277DA8FD09FF7D2752FD1EFF7DF8F8F87DFFFF7DFD %0AF8277DFD04FF7D27F8F8F8FD05FF52F8F827FFFFFFA85227FD09F8527D %FD04FFA852F8F8F852FFFF52FD04F8A8FFFF7D27FD0AF87DA8FFFFFFA87D %27F8F8F8FF27527DFD1BFF52F852FF7D27FD0DF8275252FD05F827FD06FF %F8F87DFFFF52FD0EF827522727FD05F87DFFFFFF52F827A8FF7D27FD0EF8 %27522727FD09F8A8FD05FFA8A8A8FD12FF52F87D7DFD18F8FD05FFA8F8F8 %A8FF52FD18F852FFFFFF52F827FFA8FD1DF8A8FFFFA87D2727F827F8527D %FD06FFA85252FD06FF52F8527DFD17F827FD06FFF8F8A8FF27FD18F87DFF %FFFF7DF852FFA8FD19F827F8F827A8A827FD0AF87DA8A87D52F8F8F8A8FD %05FF52F87D7DFD17F827FD05FFA8F8F8A8FF27FD18F852FFFFFF52F827FF %7DFD19F8FFF8F8A87DFD14F87DFD05FF52F8527DFD17F827FD06FFF8F8A8 %FF27FD18F87DFFFFFF7DF852FFA8FD19F8FFF8F8A827FD14F8A8FD05FF52 %F85252FD18F8FD05FFA8F8F8A8FF27FD18F852FFFFFF52F827FF7DFD19F8 %FFF8F87D27FD14F87DFD05FF52F8527DFD17F827FD06FFF8F8A8FF27FD18 %F87DFFFFFF7DF852FFA8FD19F8A8F8F8A827FD14F8A8FD05FF52F87D52FD %18F8FD05FFA8F8F8A8FF27FD18F852FFFFFF52F827FF7DFD19F8FFF8F87D %52FD14F8A8FD05FF52F8527DFD17F827FD06FFF8F87DFF27FD18F87DFFFF %FF7DF852FFA8FD19F8A8F8F8A827FD14F8A8FD05FF52F87D52FD18F8FD05 %FFA8F8F8A8FF27FD18F852FFFFFF52F827FF7DFD19F8FFF8F87D52FD14F8 %A8FD05FF52F8527DFD17F827FD06FFF8F8A8FF27FD18F87DFFFFFF7DF852 %FFA8FD19F8A8F8F8A827FD14F8A8FD05FF52F87D7DFD18F8FD05FFA8F8F8 %A8FF27FD18F852FFFFFF52F827FF7DFD19F8FFF8F87D27FD14F87DFD05FF %52F8527DFD06F82752527D2727FD0BF8A8FD06FFF8F8A8FF27FD05F82752 %527D5227FD0DF8FD04FF7DF852FFA8FD06F82752527D2727FD0CF852A8F8 %F8A827FD14F8A8FD05FF52F87D52F8F8F8277DA8FD05FFA87DFD08F852A8 %FD06FFA8F8F8A8FF27F8F8F8527DFD06FFA85227FD07F8277DFD05FF52F8 %27FF7DFD04F87DA8FD05FFA8A827FD08F8527DFFFFF8F87D27FD05F85252 %5227FD0AF827FD06FF52F852FFF852A8FD0BFF7D522752527DA8FD09FFF8 %F8A8FF52F852FD0CFF7D2752275252A8FD07FF7DF852FFFF27277DFD0BFF %A87D2752277D7DFD04FFA8F8F8A827F8F8277DFD05FF7D52FD07F87DFD07 %FF52F852FD1EFFA8F8F8A8FFFFA8FD1BFF52F827FD1CFFF8F8A8A8277DFD %09FFA85252527DA8FD09FF52F852FD1FFFF8F87DFD1EFF7DF852FD1BFFA8 %F8F8A8FD1BFF52F852FD1EFFA8F8F8A8FD1EFF52F827FD1CFFF8F87DFD1B %FF52F852FD1FFFF8F87DFD1EFF7DF852FD1BFFA8F8F8A8FD1BFF52F852FD %1EFFA8F8F8A8FD1EFF52F827FD1CFFF8F8A8FD1BFF52F852FD1FFFF8F8A8 %FD1EFF7DF852FD1CFFA87DFD1DFF7DA8FD1FFFA87DFD1FFFA87DA8FDFCFF %FDFCFFFDC0FF52FD1EF827FFFFFFA87D52FD1EFFA8527DFD39FF52FD1EF8 %27FFFFFF52F8F827FD1CFFA8F8F8F87DFD38FF52FD1FF8FFFFFFFD04F87D %FD05FFA8A87D7D7DA8FD0AFFA87DFD04FF52F8F8F827FD05FFA8A87D7D7D %A8A8FD09FFA87DA8FD20FF52FD1EF827FFFFFF27F8F8F8FFFFFFA87D27FD %06F82752FD07FF52F8F8A8FFFFFF7DF8F8F852FFFFFFA82727FD05F82727 %A8FD06FF7D27F827FD20FF52FD1EF827FFFFFF7DF8F87DFFA827FD0CF852 %7DA87D52FD04F87DFD04FF52F827FFFF5227FD0BF8277DA87D7D27FD04F8 %FD20FF52FD1EF827FD04FFF8F8A8A8FD17F87DFD04FF7DF827FF27FD16F8 %27FD20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8 %FD20FF52FD1EF827FD04FFF8F87D52FD17F8A8FD04FF52F852A8FD17F827 %FD20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8FD %20FF52FD1EF827FD04FFF8F87D27FD17F87DFD04FF52F8527DFD17F827FD %20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8FD20 %FF52FD1EF827FD04FFF8F87D27FD17F87DFD04FF52F852A8FD17F827FD20 %FF52FD1EF827FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD17F827FD %20FF52FD1EF827FD04FFF8F87D52FD17F87DFD04FF52F852A8FD17F827FD %20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8FD20 %FF52FD1EF827FD04FFF8F87D52FD17F87DFD04FF52F852A8FD17F827FD20 %FF52FD1FF8FFFFFFA8F8F8A827FD08F827FD0EF87DFD04FF7DF8527DFD08 %F827FD0EF827FD20FF52FD1EF827FD04FFF8F87D27FD04F8277DA8FFFFFF %7D52FD09F8277DFD05FF52F8527DFD05F8527DFFFFFFA87D27FD09F827FD %21FF52FD1FF8FFFFFFA8F8F8A827F8F87DA8FD08FFA852FD05F8277DA8FD %06FF7DF8527DF8F8277DFD09FF7D27FD05F852A8FD22FF52FD1EF827FD04 %FFF8F8A8FF52FD0EFFA87DA8FD0AFF52F827FF7DA8FD0EFF7DA8A8FD25FF %52FD1EF827FFFFFFA8F8F8A8FD1DFF7DF852FD39FF52FD1EF827FD04FFF8 %F87DFD1DFF52F827FD39FF52FD1FF8FFFFFFA8F8F8A8FD1DFF7DF827FD39 %FF52FD1EF827FD04FFF8F87DFD1DFF52F827FD39FF52FD1FF8FFFFFFA8F8 %F8A8FD1DFF7DF827FD39FF52FD1EF827FD04FF2727A8FD1DFF7D2752FD39 %FF52FD1FF8FD60FF52FD1EF827FD60FF52FD1FF8FD60FF7D7D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527DFD5FFFA8FD %62FFFF %%EndData endstream endobj 176 0 obj <</Filter[/FlateDecode]/Length 391>>stream
-H‰TA1 …AþC.#Á¡VÛq|\Ð"!U‚nhCA‚M+ÿ;Óî.§ñû&Ïy/ØÌ2ŠAo†yg [ÆFPP›3Æü2ë¦â¬µ¼w&@¢ìÌ
-iŽ%Ôy£&þ+Ha²AªQ\õ5a¾;&¤prþ™°Ú5$Öîß[ö!zä“k—ÀÐK”Tï&¾©¸@`ö~ž/$ú[íF¶瀥Ô@žŽpÂAÛÚ_ÏðþM ?^.4䧙ړÈCŒ&cº$†ŠÅ¶ê×yx¢÷Éò³çùㇴ‘¦»×òéþøe?ÿ]ÖÝ.MÓÛù°¼[çï?–5Îóï%ÏÇãé2_–_þ'Öå|9­K>;ý â–Ûñiºó*ý`
-H‰ÌWkoܸýüê‡
-Ì7MwÙ¢5 yDZ
-¡ß îÇÇODý öTçô¿êU‹„‚êëM¿^5w®Ã;[¼!}%žZ±ß˜o"ïÕ•Ø_™¿{p‹ÈBÐoD¬ 7Éé§ d[J¿b~5b±0÷
-pÑ€Ñ- b ¡»t.jB>A0¾ /%5AåÂU-n¼¸ƒÈc fnaâ@†)`þ3Ê€ýí—±É|F«3·
-Ö0Ò6Ï£\äX@žæY®ò</ò
-Æ Q!Š¸Àâ
-Y¤…*ò¢,ªÒ/¼ŒÊ¸LJY¦%æ*ó²`eYVÚ"*(¬vZaíU`Ê
-_V{¸ôÁæô^:(äÔ™ƒtßt8ˆ"Ü Uá7„ÍÁ×w—^ºW±@nÀè¦dÒ¤ƒÄAì@°RLˆàBß…Q9³ºwWï^¹e@ž¹àqÉÞ’³‘­%EKZ@sØXR°TüRÝVÍ{º%}²I¥KE.µ·ÔØžž–ªa{1ÚÈ,R‚´H,b‚°ˆÜ"dä{6ešÐ?™ÿ¸33×x)Bf‘¤|›á/¶[˜Ð;zDБ˒øSÄ—$~¢IðIí©9#­&¤ÇˆôžJRŒ"EHF;´W½AŸ6TÐ2ZrB+ŒhEX¬¥„2sÄ­ ñK"ŽÅˆf¢Zˆhî3R -çzŸÌB€È‘QdØ
-ŒP‡J3„M™& ”#ÈÇ ¡€š¢m*%Cà€#ÉŠ$î
-R@‡*ɪe’ h oŽ ÑW°ŠUð)}‚p/ö9‚û f\‚ã‰!C‚H±H‰#@íPÁÜ
-p¡TR$—$Š‘f"¤›ILJݗ°Š‰(CB’ ™)æ9Š#W¨U*XhútÕiU'Zä¦qúŽ²SAkGéqã(‡2I]×o:ó§T˜JµÙÃ#Ó‘0~>¬ËŽp •êMHHaTÀ˜™Rhse}™ _ê,$È{ÇLds‘NEÈ6(hnï¦dÃÊätǧt§“]¦'¤§ŠÛ4«*J*[8ˆ©tÈ\µk-è:ͯŒH¼P1WЫöã+cBœ²(õÓÎi׆†Œª’’/˜¥’0˜ŠSá™ÂÇTr9â%D¶È6Û«f[%Ó±‚D‚f1$„´a>>¨ ³d—(CÒ¢X Jƒù ÈöªƒQÂ&€1â¸1g6•9‡bQñp´ŒFÏÅ"£ú=oüŸQMåïˆù #GœÄ{ ÄâddOKÌ>Œ—)ÈgÔålÌ1Ómªô Š-v9UÐã¡@ßÓ=È=̇Hó³ñ˜9!z
-æ‡/Ä!
-I†2’f!IC­¦!æ¡©ä¡y(3I"粦„¢… Wb‘#‰F™ÑH‘g8²,¥… idB’Œ$))á¯ÊW„ ‚’£ZD% K—&Ä% L™$4IlJ>08Itrtª†ñi°‰•· ¹ »%ò[”ï;9,ùiwqaZ]‹Ò”Ì2”țͩo¨«b,uâÕ‘k®‰<d*:˜êqÈåà‘G4&¼í®­=!ˆ[bxM<´ïYÇ%-ªÆJõ1´ìš›ƒJ_5å¢=Èä
-'Ń’WÔÊ'u'õ' gØÐQÓnåVë3u§^ìµwåî
-•kGáâC¥Uf¿,ÊOÕ}E½¡Ñ?×ðJÑÜž^¡éu2wÞ¼·ˆ¯–yøÑÛ&úÖ¤#ÓÔVšU+vE¾ˆ­S•ŠrQWÔ« z­h=VoØËf]ÕY‹}¯?•f2y•ÁK(Š›RQÞÔõ›†;…ÃÜÔ=kÚ€ÿU>d˜Ð#÷yä:•ÓÈé™×<ñ˜ƒ©c1O=厓|ÍBÌsßx…eœ¬ÁÔ.ñfk¨êý‘1¼Òn+ÿq?×ÿ©Ž±° 0FB¬.E¦Ý45 ¤…²P…З#‹0Y¡uÀ×Å>aO/ KÎrÞ^ñeÐ_OQŒ3öBƒ¬Ú’}@HAÉê—#ªtfsi
-G‚D`a<Ë; º@º¸ÖÄ*\ÈqÖ€ã[ò¼HßÇ>‘ô厞ì/7±\e;
-ZWr¯ÌR——ç1þŒÜ…l12cL¬oÙ©«í®†»íj±«µª­G5›•îºZçnš»Wî¹{cíˆôÂÊÞ·;Þ‘¸js;fÅT>v´®“YÝ!Ÿ[?ª˜æ>·<r™vÔ2Ï\ã«6ñÊÿÖ:ö—w†/æWÓ\T–jq/¹¹z”Ë%¹+
-¤•¯¾7ï>¼æ«Ã·#^¾šK¶WäÀøp¸ó÷d¬«©óZI·-¾‰{®(ËÜz\¤Ð–[bw‘/è íÕ5Áoì›âÓ4H¦!â[ Š<Ê}9§ØyŽÕùÐtYÞƒ)ú€‹VζË]ØÊþPßi<}¶ØÀPe¬`›x_†ëXˆˆYÇoá¨2Ö-t‡±BÓtÕ³}ŸñÞ¾Šmºfç:)‡Ô}ãRžG»³SË“wÝ~þh›¿„Q†É¼ë æÏ/?ùÇ˧ŸÿÔ7†¿}ú¼¾õÓ凿ùç¿>½ühÖ Š‚y‘"ÄÅhÑ'e]›RÄ{ÿñœ^ùXVþP¶åŽËzŸq½ãRî(eŠ¶MSý¤7ܬöÚeš|¼:'Ûû øxÿ_™æ÷ÿþ/æX^q£× þÛÚ–ÒuÚÒo´Ïh‡Ñ΢ E‰¶[š…vv’z’Ø…ˆÐõ¢Á(° "a 'Ìì_ú¾öü}wè'Ù쇅ÚÆSAè¥É éÅ ö6(ˋ锿e{; CËOS<œ‡|vØ“ÚMŽ*‚!ùéå
-‡i™™˜Fá€PŽà,0à t©Y[ƒö*S?1ñ |NÌûú
-̃ éˆÍÖCás
- TdÅ /K8—W9ëkÇ×מ徿Š—‹F¾ª%ÀŒ<$1f¦=ë#»¶¥å{\ž#ÎâÎûFÎìÉ©mO²†Fj·.:Ü^jè¾(—s™qÇ ¼ÉÏ{ gýÎõ±ãÜÜcøæþ¡¥¡­mé¶E[Õª–ý“×æð_ß>ü¯>Ÿ¯ë÷Äc½ÙÞ
-Õ«œÃv½ÿÿÞ§îp'ÜÿãCìƒÈ»êòä·Aƒ9ý̵-¬Wm5«û ï‹Ð°HWÇÍÑÕÕûâìûçêïêðâñ«ËŸ_ž=ÞÐz6zmõÒìµÝ{úJËí/M_Ú¾6~iýrt„¦D³Rp† °’ÀÚö´ñ­­ok~[û[ ´ÀÌ&ˆ6hJ¬;aÝ K7$9% ÿôöùé{ô$I[Asñh4-ì£Aë™Ñ‚F¶£œÑ"zGãja7 Ú,"سée<Fd­:T®Å/¨è‰EÞ³ô ÁÓ(,–öÁÊk»]Nš+ÕǸiØÔ« ^º¢\”6Å¢Ò5 
-ª¶ÈRô}C®PÍ…/T_Û•º/ugV{ÓlT·¨nRnÓ²Qu«Îå—éøögu×vìuÜ»¦lßÈV¸obÇ6©[ÙjëÜ6ô\¦k,[·¶lnÈ”žÊ. Dµ^:¸6
-F‚²ígn}n~®-Ë=¹'j;Æ,ö¤æV’™Nº=Êž2ÕONêOêNÊ"£'(O
-ùƒ\-3·•ìA+çQÝ rÌÝâÙʇê*åƒXE;0ÿjškÈtáÒ\c|Ç……Qd‹‹Æ¬ð.]€9\„®µ!]Ú‹½ÄKh.]wÅ·[ï½y÷á»7ügË1vVîô@8˼ۇœ[:ùÐty¿;Ç+ø)ïOóæø÷“w°>|«u Ö_îµ6ûåÊ•üÔìá™Õ·Ú¸?Æ·ħA+qŽó\—£\ ÏfDZ²üKr?.:Ý2Lw ¡Á×÷Çùæ‘ð<ÃdÞõ¿„óç—Ÿ¿üãåÓÇÏêÃÇß>}^ßúéòÃûÿüþûÇ/?šõCay_dóÕä·YMUÂ"‘’°ƒì*Ž¥v(Ž[Ø~ÅóÂW¼C§”W6µMœPXEXÆ=#Žœ6VV{žØ&g¶ËÇ™30u„MEÂ9»Šˆ‡ÒÊæ5y"{ZR\»¥OÇô) 9Ñxæ?O<ñÅçÙý‡µ?o*ö]`¯Õ¸nP•QC0L«‰ŠŒ«YU¥K…ÒÃÖŒW;ŒeÍf)¡•Û6íGÚ”7õ›†]&Ž•6,
-Ýù¤îŽz“ú4=ѲÊì—Gåæ/‹Ùèé[Uç7[ê×—ºM¬X­Ö­J!)QǼ«‘¶/åȶ(¥hJ ŒŸZpËììWKoä6üýæb ¹|ŠT‹žAÎAN9 ØXì!>lòÿñUw“zÌȳcÇø°ÀZ…D‰dWuռɗQRe. RæÌ ¦„Êà–
-'æ{dÔ½Cͳon°Í\àì’†RÈs)`Ïæ[jT«²sÞ7#WàTjÌIEÜ¡åÁ{Ý×ý〜<7DÔ4W ­XÀA ÇL,m˜)φyÖ wdɽ˜Rîæ5±lNLO*
-9Øî±÷ã£O8¬
-â; u´¢¢rezwí¿)¨1‡ŠË:îTÔ «“ðy
-Ãdm@Óž)
-‚z¡fJNBGfb
-A¡¢€,?x™ŠaÑLL‚!ê`FX¥¶É¢ic9a© V³5 ÁMpa–;aeÙºDXµ,¶­ƒ`å&¢{+^ÀÃä¨ón`ÔøÆV\!gN ì9XÌÄYCò§vjh4Äh¨Ñ£¡§Æ 5[Ô£Ä'ÎQ5TÕ5í°„±Ï
-ì1hIu+ü! ˆ{ÐÙ…æ&¤—A/þ”ßzÅÍáïtÛm·ãcÀƒ—P]X³¨ˆz/'N@•¤Gûg·Å­?Â¥pÓ¤á¯&+ûŽPØcö#ÜÞ;U8++á‚mU×;Tó€Ì4‰¾T…Ø"p±ÊôЙTj 6,5~›„4×
-Ç‹ä
-Óö¦›PÁ=ÌN†Ž¨w®iÐ]Gð¢C2èÑÓ=:½A÷Ÿ@¬Þ …GH ]
-”$`U’wzÅëáä­@$ÖÍ‚I0T6õUZªaÊ Ä·‘üiÄ Â~‡óî ùc.aç0]ÅHè ·b¸tÛm¶¿tû­?Ì€
-ò¡ 
-òýòóûðCA>äCA¾_~~ÿBAÂéî¡ÿJ¦À
-^}ñ/2÷É…lÛ“¹ošÐ&Ï'5ÆWRŠQN¬‰9»ƒ9mNÍ)š“5†GýƒîÞyÔþ²'4'ëOÑÞhX}×Á/õ~¼?4öÞâ8ùpßØvÏß±>aÔèš“3÷Þµéàùó;–çSÒI˜ýCëeÜÙt×ý¦çÇß¾~züòôü¯^èŸ>y®—~9ýôçó󧿟OŸË%,û™Ž/chê±Á¿Ú„bZ0î0| Ò±ÐTÎ1¼:L/ØíäsÈ0Sƒ> ùn2è•hžè—h2#þ¸V¤sÈ0Æ,ä>˜h“€lZ z`Œ ¦s|wÃjcßu÷ê.ëΗZЭØïÏnoõ†¼Ù‡õ”°Ž«Üaüë?ã ö$`ov_ S‚YdÌ)r·æ†e̻ܰ2ßdUšä£Í¢=&Ä'9XßòCkÜÁ‰;Ù#{·!At ³2¼’kÐàqÒÛ2Sžsš3?¿~ÎÛž×w¿ËTÞ}mþ£
- ÈŸ«ògôX‰¥ÔªÄê…P“5h
-™C(B‡,’‘Fö
-ÃOPï d#°îUF€× ë «, c^dNÞùΩ"›­îžØ’ÆZØü¡Õ"‹U¬sþKžHwdDaí©KB Zb5ÏH`
-siÎäKr"‚À…fžÑTÞ༩àHp$,‰hd:ö"«¸î€èÞ„MâœÆ:§/jÜ“ÐW€•8å‘ ép›dE~,1I²cTÈ‘%W⥬…ù8‰ôU­A4I#ÑT*—°*ê¾i…Zå|çÊ+@Çä(•«+3ò%QÒ-‚ÂPHeUËÀ‹àʼnã¨EÆ/I²«!J¢” g =˜·Lmésgž?1‹ªó)Ì‹ä/Vì/®Wªõ~·±'vÙا…›Ø¼Êì3¯+²±ž-¶H(ðEm§T­
-=¡M?øS\x£pêå8¾ênÕ"î†ÈÞZŸÓq'l•
-Nþ®Þüš›ÞÖgån£é´°wÚèÇ
-q¦[¥a5r\˜®1J6n²ÒM<ÑÚîÄ/ψwŸäö'é³ÚÓöçO»0›9=ëBný‰Jpm ˆ
-m¡à6DH$ˆ¾ø>÷h'åe°héPDZNV‹Ëή Mšj5Ú_tÚ¤Ööè¿Ö­3Cw ±»Ô;¹t7Ò8‹
-NAi+WÌ*Ág¼åÍ—ÌÉêŒöÄõíi‘¾wÖ¾ÐÔ{¼œ—Ûfætn2»¨³ËjÎó{DÐ/)ZghŽ-XŽ9^f9³¼g¼ÌVgvÆ$E¡%áµ
-wHl” ÞhJWƒ…ñ,2³¸¹¬,Æ3y™ö\Wfæ˜Gâ½LlýÆ.{v4³”I|$ÒÁ!mf<AÌ›3Gç¯Úûs¨Ì$«¼/õ¥$ˆ øÅP÷/£²\â& t†£C·Ñ- ]3ñÊ*]”é¦HWyºËºÁntÛB×MÌìU3;ÙÄD黢Vk¨1ÉÉ0q|Ï´‡•H WvçäpeµàÜB:ºw¶Ë0@~\“µОy}¼Zuê•WƒuwNŽ!“{®ÎúÓLßuXiv¡XYaJØg;E¶@¾AK£žØAœô“ËöYÄ÷2Ó÷¶½Óaðê»…UtaѾêî ©´Å×4ärç䮑§ßdòÃ=ÄâûÝâC‹þOÊú|¿Áðþ ÇzÜ”½ÒsQ¥l¹vQô*Ie¯tšfXÞœ6˜“Vƒ==üj’n³„NtLŒ+—Îrùv+ñn[`4²!ù BGT¤£Ké¨'ˆˆOw0›e¾ÂùX_ÍYß? ’¶0È(ÿ8ÌlÊf Ù =¨×ë.owxS÷vÍÙ%˜¹ÀÑspg?'nnU7'^ÎÁÿrd±ªç³ªÄ¦ªnQ‡‚„$GV…GãZ.)©U…S¤ßçÔQr;êéÀrÉÛÅÞÀ?@¼‹`Ô\Ý"½æõ·¾Ó€­4ÊþÖõ,¬¿Û7¥_(¡Ë÷r•VàÇóIŘÁñK~v¸«Oùmõ·U Ç™œïÇéÜ ï|ü1à/¸á¯f 8Øá•ž)šÆhe±{•ö£çÔä‰Åƒ'öNÌ¥6¸BœÝÙ×9ó[w2v‡µSsF+ºÊB!¢¼ÌX®·í¢ÙÀªé™-ôµØR;^–|Úa´žw„ü ÜØ3ÌõŸ7øú{ùî*o ô#Ÿ¡÷€)°Ó†I˜1 ïparlÝ0®È÷ŒÏq߉gbÙH¹àK&É›µè\ô H½†SËVY ®â
-f²#ö¦j¸•+L¦ „¾©'¥÷Áèþ
-û¯Š& ³¢ÉÅر I9p9Ò†
-ÏF ¥V_`saòw»ÒtåÃ]ñ[¼ƒLч¹‰ 7aå:ÌœsÎ)ý‰Ètí*‡v‰…®.ÍïhÌRbœ¢»riR£4¥‰Ñ"µÅÅ¨ë› sµ;¿æý.lÓè7«®5 }pø¥UàØý_ Iºnþ&sø>u|Ý牿W'6NÌÛ¨YC|˜oQå£Ïï{Àë|ÖàÌñGs¾{Ä»Ž}— Øþ7ÝRc|‘4«9EÍò"jæ«ÚÑ£Ê_ÌÍñ› øåhp›œaúÉm09Ç–sœ9RÎÍ[ÔTdøh1©E¦æxD-Z¤"\éTÚ!Á‹FÇJ²X4©šÚf£r³ÚM'jiuOÈâH4FBàŒ0­ncâ†$ÅcDb‚?¿± §„ .»5gTmcEŠR%’ÎqeeîJPñ³­¹Iʇ»â· ø ;<@Oæ&‚܆•ë0sÊ9§ôs$"s¨Ëššæ4‡Ý”¨Å,ô©•(—¤1Q´]E$e¼b}‰q£FºY=Ì*Q:´ý<!0jÌ\X1b!Sl”¨ÅTx’dÄbdŒÆh03æc¥r-Ñ3`KcW¬ÊŒmÙ003™pÅæÌZƀ_ÌæÁ?˜õ^æ¹$"ÓO®cÓ9P]bVè¸d±–Íö¤¦¹Íô×][S;Ä«¶ð‡{^R7+¾Vü­8]q½â¥ ‹úcJ°>¹wQǽAeBqT¼ ´AÝ «T£/—¨ò/3<— #…§áÚ
-Ñ> Ï!@X™ÚËÅøäžìSzÊå¹8Ÿrx¶1{ææ›ïÞ:ÌôfW‹çÒÁº”¢œxkcmãøêlâ¤ðCÿëúXÖ?…ü -_&óæ‘t>¿nI%?¹ðœ¯æñêx>µüÍø÷øÝúùÓß~þþÓO?|þoûbúáÇŸ>ï_}ûô§~þüý¿øôôcÿê)þÙÜû’'»§é›þs¥W»Z½Ô«¦Xþ¤Y¢Zc×­µ+—í2ÈWÄg˜PlÄ0‹Š­ªc"¡.zÔLô, !_¯íFaè6`ÿtýól ü•Åò/ÿ6WÖ ¨ ‡;›1\˜-5Wb¯4vM˜Q¥dÉA3¤äÇ©ÇÜCc‹Œ{`”¸xÑ´¸ó",ž50ŒVCãJÏ0ÿ¨ïc³
-9´§•Y1¢¶r¥¥K“$Í:Q¡a…Æ÷´?0Êjn– ´ÑäP®QfU—/fÓž¹¤S¤|Wr®½xÓ@9éŸÿ±_®½•GþóæK$@0ô}º‰iÎe„‚X)Š,kׇ]{å5BûïóTwÏÍ>ö‚òi=ÚõqŸ©¾ÕSUo9Ú—º_¯Z¼¸Àÿ.Æ9î4!a´X*åL_-£wI‰er^¥¸¶\-ú¶ïköd°ÙM´åš-UÛBG©ÜZb®ßБkø>W©±›©°¸ZF¤x”ªÁ‹M.¹P¬ÊĺDHyˆ¹<ÔÚù"u–•:KK›ƒQf@¼ FüÀb»\¹¨Ý«DûfáiƒÏüô(—Ø Cå,RäaEšEI­*0*‚JªÖX#Nb.£/ðƒ’Ÿ˜%˜H"8rH$IJ¢¸•H'€—SI Ý!¬ä•üˆÞ
-¢¾D˜ä(e:wWcŽYwŸåÜ%žXôY úu#Áv äîÆaL,Ôaô£íh$s$r9îúo.G™Î¡uÈÁTsHóöIäAE!iaØ¥>ĸT £‘ˆê ŧÃî¬sÜa§”Kj¥íÃl´GØž ¸·1z¯H éT¤1ºŽ´¹í4¹&”„ß×pÈMí^móLmïBm줭ÛOÝR þ”Ÿ¹Ò¼!mçY;N´MðŽ¹Zä?îó³Ë“yY"æed¡óyAYÒæeeaý0÷¿u&ÝPøNÖBaHççpç¾/¶ú“’©÷ÙR3[§é:R¾Ç³t­ø2zK˜®gÑ.ẫéM^Š¸Z9=©ÝL×»'ûÝfx¡{ÞóÉrƒðùìû¦ù÷w¢âÍRúYMéÛFFÒ¹»€Yë2¢BJñšfgÖcûçâä½ç‚|#b)›±·‰Žÿs}õi»{~ùôÂbóçïÄÃé\{>öëXN¤©­ÈÃ6DoZô ý°«ÎcÛu˜&·¥ám³U“õŒAË8” ¹1d s@F‘0 #& "’Aä˾?4¨‰‘øÑYcXô†ÃEA# I²Cœ* Ç-è,`,RFÔU@|Èk ¹#¢1 HÄ<Œ\Mg§=°ÒAÑ*x† êIä-„<ò“E#Å>«÷ÜH¶ß)‘šElÁi²è´UxŠôôU~Š
-5+†
-E G§HêgšRæ¢%\Aª™™Ò+®
-Y […®Âך°aÅY}š Üú9lŸ7Ga·”³õg“#šU’Xƒ œ¡`pgš L˜ŠÁÁ`¡`0ð(L0L©dJ&㇒OhdBîjbFbâ¸BÏP,X„ŠÅŠC3S±¤5cñ ¿ÂcAdJ³¢eKLeæOVÏåçÿ8¡^=¦>¶>‹ô 7Ù­9‘ÜNô5§ È’Ï
-Ä‚pXð-…îÐØc­r¬à*YkÌËiÄQ‚ç˜6´‡øÓça.AÚÆ,dõ15t„ /=”ìÓ‘½ðãŽ0É¿–ì×ÏNòý^Ѩ:ØîÉ/¥`O;{$kZ\×=É*‘
-]Ò6´²€Ž)oˆ™+:׳²íj ÉLFœ&_Ùgº#EÉUÛØ)uë¸CÒìBxÐ9øbÇqˆîë1)%Éžñ¸\.»^\€¿Su˜ò¹OŽš½)³ä°`M8§uÅ_Îwì´úËêŽÏ0¸W͹0´mpøͳ¤3,¼Åpm19Íŵ=kP_ò%’˜Q‘ (­×Ì L÷3TDI¹¼VlMq „ߣÃϸ ð3Á I¾/c[]PÜ9:¹kd1N±ö0e¡-#Ý›B]6ÃÁ46¦ ¦ÃJó¯³{WÞšöQ”‰ÕO9 Ù屋”y?ÇÉ‹õ `QZB¦%Ñmµ`%'0ùÔüw‡mQª—wˆšºÕ$u`Zj¢» Ân
-òVÖòÁ浦™TÙÐòÖtŽyž›Îmµ\né-1W/6ƒ®pe¡’zœd€òJ† Õz¼8§A™&2–·\Yu™g¨«³iÐtt¬8mžGwï¯V«ÅlÚÓüÖ´ëyžg›ýÉü÷ȯ^Q^^]Þ_=»À Ô…Óï}sIíÝß¾|}qûS.,_ÞÝþúrSIRûÑÇí“OÔÀðAI>Qä•äù
-L­&.v}òF WÈ]™I
-£)©d²ɱÜryLÑT… MZ12,ÅŒhä-®Ú—ÉçTßÈfÓ V©Ú©ÒTf­C!÷“V#ÙÒÕ
-¾¼¸å=ËÆæ‘K‘Ï†Ó I&s>Ÿ8JÂKí£kÙÆ»vr$‘h¸V²Ê‹Í úC2–&:Dï”±´”¼Rÿ,' è šçWä
--Uižc¨+Í5ÎŒ²Ò4*a:/¥–°]¶3¿4mxžæÁ±6ào³VE®ä¨)+ºÎĉtˆœötò!9*vÎP;ózN¨HY9UJäRNÚÿq_æºveE~•vKà^ó
-ð68þš3€¬’];¸>ÐYŸXé@çB'U­<ð-²ë jmÜ!Ÿ[‡Pcš€ËuÀ࿯Á>у»àðÈ8¤÷0éˆ`Ímð¨s Ò68&½&bN†7ä¨ábšÓ&ntƒó.Ì6+ é
-ÌÝÆ´¬¤:>ë ™3é?»ÍÀ˜¶Î´G­Sïuî¶_ox+{½oîUO©dé]• ¨h( Ò-ä½érÄ«Í× NfH‘Z·«1F=PdZ€7«ÊQ¾¯‚ú‰ò/ŽÆð§ ;`!­/ѳÑ5†Û1.¼ŸËÝgñR
-Ýï%, ÍÓœ†jU¤
-8Óñ:ªh—ÃPéÊmË‘õPawNòßó]¤—5ò±£ê¬–o—µè¯Œœ=gdÌŒ¯P~Ë&çYkGîöÜÑ}¶½Ö>ÿã=÷ Ð%ö6Ys¦OwAWÔKèë•“Ž‚Bòxƒ¨*\FI½ºG•6Òº×Ù¹Û»Yn#)ÉܽN˜Ú»ÍÀèïu¦=jz­óx·¯«5z';~çCÖXÒñ`¢€*ÊôWM½9Äèà
-÷uµxgˆ[©;tüT¤\Ö%»#v¾ku ¶šU[<ŽÝ$Áôåc8ÚŠ9LZ
-ó{XEv pýqCÊÙ™'N0³Y! ǦMÄ4ÕrÜ£œ Ó¡€Áó ljñxKÀ@ªƒ0x4.BjãÄC¤5 m˜Ú9µH!Ø@tW¡QÔ¾XoÈÛq>th¡»è¢]”
-™M-z)bÔqØ£ë Ž63¨fi#£àñt’uˆ­¦ÎãH‘Ì)Ö‰‘úƒvnbþæ'~³«µ”
-¬­VI ×—rÛËdÄð|öZUŸv 3jÝc­óx±+V£‡’4¶—,yº ¦QPÂň`à»;ê͉›C®ÀÈl)pF¹±éYfæfK  ÉßÎ:üOö/»ÍÀ‚j;Ҵμ—y¸ÙRë߯?¿üéû—Ïß~þåö;ÃîþðüüïÛw¯üÛÛ——÷Ÿ?¾ùñ?oþþþÓû·/ïzÄïo¿ù긿¾ýðñÍŸ?ýòæù_oþüÓ‡—¿|~þùÓ˜ñ{þ©Uoß}ûç?øõó#_üjÇhðÐ …ÀÏä§_]QZ¹ˆ7×x˜ ¯fR¹†r]d)È éðWÐC£5-Ç"hŸTÌhcN“ŽXLTmÊ
-ø÷YÎbCóuú3îPÌÊBÐHÅ›ÊÉ¢]i|E@?‹,£ÉzݪeS"
-:¬!_µMõ’;³¦8=vðyÔÀÓ]Ôµ™_
-'6q’“¤†óÅ°#M¡–©„ÖF~é1°*hŒ*Û‘˜/5µ£iÕ¯™ W8{!#lÕ¸#£E¥wã ã1Î: ^#,±‹êD•J“>ûæ°˜Ë3G÷/ôPŽI/#ö’F¹ÌÜQò(Æ”H™òÚŒéÓ¨‚—A•r¦'’.{©™[î§Q•„UáZKú8[›Î-W`l¹Nv†íÓï¥oùõrüõ
-=úa»D*ß
-%SB‡,è…_B½s‰ò~îb%Y2'Šy™Äõ}õˆ+¶-¢Gr•&ø]Þ§Áôrï1¯jÒÙö¸ýrË#~ù–e+Ñ{¿÷ˆ'º|©ªª¶÷Ós½÷ˆºDŽ)\Æy¡÷—µväê×.ÑéëÎZËû=¯ñœíŒÛ·Úk=Þó®pýíõ§oõ‡>åS,Œ`e»£ušž$&.åLæ ÔUNšeGF?B€NŒxƉÑ}¹®µ#sÏ3JUëÛµDŠ•Ëž+2f®³qûü{­Ç{î§üù¿´WIv%! »Q˜ÁÔy²îûo[òDågÙ¯WIœÂ€‘eÉpe¥ügöé÷p&ïMµÃ6<Úź߄ƒà¤ðô¤ÆÉê¨>ÇF?4sX4¬t+<„Ó¦K.‰ÎŽ”o—ÅÏ0°Mre cë3FI…bå
-T¦^r:ÆdAÓ5x8{'\–Òæe¨¯ÔÊ\ua†l'0}(‡x+Ì}ÔDMø˱¨Nš @›‹(øÃpw°ph‚…zð;º5cŒ¹®}šL_¤0¨°ž£“Víi÷ pò
-.
-ˆ=À"ìâÍW!·à_¤¾Œø0XŽ9™ûúUÖ\‰=seDÕEìÍ…†ç{ÏŒøÊ<Ûý®Î_¹>ïYÀÃ<‹#æ¯é
-EWQŽfå,g›c-¾¤ÍB4$˜ìøö~†A7©*UErK_YQÊðÿÍ…æíwÇøÛ‰"Ï•Ý ež_WÌËCS¡>mØûîñˆ7ÀNª_ª
-H‰´W=Ž¥¹ <ïð'|©ÿp_ÁÀf†Ñ€³œlàÛ»Š”(õëuâ™Áô¼®GñG"‹ä|‰¤§Í6^šÓ“Z Èè/Õñä4å ùë?TÛSk—[®>’k¾T’Æ3Këd ý‘™æëèJõéøÿ˜\€ÛŽm¡,O:/=¹ìý ÿ~ù;üŽòú~¦'ç4J{QåÈ°„ð
-ÕÔ,º7ì"/4ãÝðHƨ–SH”†4<?‹s#v°>™qË•GZ–KU
-d[ܤä(\“°ú¶.&T™·ÍØÉåYH…ï¡é[Œ‘F¿[EYýiB“Jèê•UëºJxFñz*5Áщt/¥Y¡ÔLK¨9cbÐm&ox}€½&㟹K½I%ãH“gv‡ ¸PšÄ2¢ÍGðØG¬6péDft þ SœóíàFK\* )7k±|ö“ Ô)
-Íu3R(‹¹×'Äer¸ý½6è߶¹ÑžWp¥ÔúL£ !¸ÇÂèò3³ÊAìdGq–CÈAE¯…º ~؄αN
-¦¯¼)Ô‡¹o @z{Ä®¢ ‹ÂYXÊLtp¾x›Ê%¦µà«VÃýk;¤ /¥lA-aj·ÇNFœT:î8­«€ö'™|NÍh^”g›Öî/`¼*s<}X£²È¢”I*Ÿät`à‡uÈá>|OÙ¯mFpku DI¨®Ï¯hy¦ridøÞ=f¾uCÖ'’×v’ë†!…‚F–ÞŠYý` ¨
-‹¼×!‹•ý""}À3¯K²¦.› ñ“ùQfê%‡S˜GGW _l¾…®ðÿ=θTŠÝ s§SÍçWVɬ=û=c€Eƒ$I59!£ÙÔTX³G® Û£ë ËæÇJº…‚ÕtèëÒ•VdÇæB¼Ú÷ ÿ·®oqþFƾIĶP:˜Ë:Dçh!÷´QæH˜¼E4&@ë–­¡Ôí:AxÂÔD§ŠÆ/è Ý ÌÀ¾‹Q±j±Ç«µ-,HáÌ9,Ž¸q2O$ugàØJ¶¦Y<Ö†ÔX'Qp±,𜽳»Mø8¦zï7þ`iuœð“9yûb#h½ãkì!µÓ²ùFDéV_\gµø,Ì+–ÎbÇ›•ëÊÀœ2ójþ“»ÉXîNãÂR®Ð[¼ÙãÙÐ8!²«† ^{Íë$F¢2®Ó,ÿæL3”c
-„ý*ûÖà¾b¶e½„µ–=Añ†1˜#ŒFÉ8 àåÚÖí€æÑexyèò’Ê ï… ëömœ
-ÎÕ&²çtåÔxä³åÒuesçÿB‘Û•)·u‘ÝSJõØ dç±ùvÉ…ÿ[×·8oòGMÛ^+§Ï¯¨zÒ1û¸Ùpñrîø"s_€¿¥€­Ë¼¤’Û½ô²ìí1o¡‘T±E/ƒ Ø´o^…PøzÞãû£õ’› Ò¨›xEø†tP¤¦l›²ª
-¼™6ÎcÌbÕ¸›çt³ü‘Kå"·®@–M?(*ŠT~éZ-ÿ²y —o[îø¿u}‹3ê5W¹FâÃlwʆçÙZæå®õny]ؽ套P
-ûÏÞ³¥(–ÿùÅKÇi0I×镲»ÖíñµQ÷2rì‰&ªY&ýd `èiW¢g1K¾ª†Í…øÉíZˆ…÷¡ê=Ês—ÿÿ~‰Ý³¿ï˜×4zP õ 
-°+ؼ±CÉ6ø×´VÉøægtÜrhIÝö¡ÐueÓ}£ÓÆ¡ö:º€ôI¢ ›q›Û·#·ý?ºÞã BÂðë“ åó+ÊÛå €®=+ýC×î± †¤yÄjãß‘C§ISn],›»§:X,G8·ŒË¢ÿ_[æŠgiyð‡¡¼!&°Â†RØï1Ì~~E1EpdET®œ4A¸bµ4sÒƒD-5Õ[p¸t²l~, Ô6£
-£xì²èÀ.ûåØ–º"r=ï!ž‹üü›ùúÆI
-
-†Ÿ|-ˆ†¢ÕÕ\lÐʺžXC.6€oÄ—5ëâ—J e˘­ê ˤ<b¯›s¶*dTY#À²¸µâ.ÏB.¼UïQþ”¤ÄX42Ä1ú£Ž|Ó<`ñ.%Ý|fyq‰¾3Ó®ß=&ÌzöB’ðR²eÊOm…\¸9…šþä‘Êek~l;´ÀãòÒó-° 3®
-ÂÇøµÔ#> n+5ΩanL&,3 ­5vN¬Óت†o
-=¬ŽÜamv,|
-©íõÖóÛÏ(?k³Y¸n4üv† G9ß5&ªöá‹JRŸ&ÒHí ›ÇXÿ–cô6E†®@–ÍÍc EÑôäD¶t5V› ÙÓÄò-äÂÿÐõç'ÞîR¹kí¹¼–5˜Ú&¤ XŠ²ÚðùÌdëÝ|àD#.´!E­#ߊ6² úÁ@Õ"yU†ò¸,nÄOnÇŽ\„ºÞƒü3.‰Ó–³†œ™sÕu€œ¹¨iÃ|ÊN×X"Ý=µ|
-y“Yˆ¨,®5—¦¬ÉÌ;ºY&ýäFqgà-(]@¦µÙ°¹‘åìY/×Þ:‹+
-ÿþÃùR‰ Ê™û…~
-—¶ ¢¨ˆHUe¹ÎÜ;2Qþ}Ÿµgæ}ORªRµÁ~—göìû^{趟›êï¢î¹\÷ ÿ>º½ûìêòîêæúâöÍác˯‡ŸÜÜüxøðÑã¯/î×ç:ÿêâêúüÓ›—oÎo¾;ÿüùÕÝŸno^½|pø=7þÀ?þß>8<û–ß^ñï£WVñ^šÈÏ~[Îc»‹1ضà0ÂÕD¢UuâÎv‹¡®R0–³È„±A,qˆê}d ×BhÙj3ªj+þ±â¦ža&áP }wN¦A9É}H
-°ibayÄAûÇØíï¦IØÖ†aªÁd4èiº¯o+]Fÿ)F)SÉÉÚ°÷0ü4…h'XÚ'qÖ0¾óð©XíðiÔZÄwß+ÿàeFt1º¨õ™&ìöªòȱmi²8zÖº5
-›!š¡7òKœ¼G/Ó
- ë/[36Ïo³?¦v÷¼ßÅìÀ|Ì®m`æÚÚ.‡¬l Ôí±ùmnÚ4šà®óóŽeËpÒ.B«,Mm"¼x ì“»jß ¶fæ FC,CÝ¿ÍíÍêûÉ!Z/§R6`¾5¶ÔV TQ¸)À•º?¶¾íÖTha»ÆSÊ;v-ƒ#‚f¥ï´ó¾85ñj V[Ö6²¢ÅС ÙíÊX}zZ];9¤ ¥y»‰YÀzÌnm`Ö ó‡%†$4íí©ù={ÒÐgÙ¬X2ìÅ!Õ¡&òÌc³wEôh³ò#MÛªÑ÷ÔL$¦@Üñ™9cûâ:E'ì¶U.90_³k4¸¶É bíùäµ \%§NëÔ¦õ’s߶etS÷ↆ=Txl%è5kJÓléQ ƒç@{}íu.ÇlO¡ž€°s¹ŸÈYÀzmNÛ ÖÑY79NœËïÍïËÁ4‡FëÌfÇrß°·&´Ÿ„×Á¼ª= ã1e7”dÊNõèPÁ(SŠÌ jÓ·ÕÖw@â;í”]hé2Yz´ë=³eÔ*„"·äxí§ý䵌Zè®ø’ô®ÿÓVñôøòxqw|~Î…±Kü¶÷h_ß
-– ›Ûó¯o?__#ÿÇŸÞ«Ä<ûÙÕ équüéüËã›_;ýäøÝÝ9šÿñöæúýöÍýyyÿ,›D,!>=^üâ•«ç>^}ÿüñ«6>½y½l¤ÑËþíÕó»¦l÷Þ£òÊ×ÇÛËãõÝî–ô>]ôãâ·€>¹¹ÜïÜ‹åçüîÑãxþùõó)b|rüþêz">üâêçãƒÆÛ¯ÊÈOúÑX}Z'Å©šc+µÿ>{=wÕ¹¦Â Ežùß³7öù¿þð5ò_þöwwx>n>5ÒfO-Á£Äï?wxrŠnj=ÙïÿöÖíëÿº¢¦ƒ?¹¸ü×Õõ÷#‚O—wo9÷Õ½EâðûòËD`„2YW´Y4ŒMƒåÖ‚þ˜z¢Ï="jSƒ¼B
-{ÊÓE/+?KʶêÂ@ª
-]Ô1ȼŸ'““j+—Ü‘‚-rd‰©ÏÂéž¹C1°çøÆ_ÒÒ’BÊhïÒU,&ª^ð¡ÛžªÅÈ<Ä‚@
-Cå«â"„±ó3°®…XÙ0O<i £]
-¡¦ö­”×kVm€´8NivÐ3ƒ&GÀÉ-W£‰rfHkˆÎÄV h8ÖĦeû[æ[Ø»ÕP»,ujˆšhIsðÌDé=Uñ•úY@—ÎÚi0ÍZ6±®½q ä"£Ø|-À^àÔ:ŠþÒ ¨} WÀªZØ4¯ŠÍùlתŸ€½Fµö¶þÊ€$²L-[æ°Ñ(AÕ~ÆÌm©¥dl4bk Špí6ï¡=ÞÈãÞ›«š-Y^á„TÑbLå:³†q ÞÏä ³<ÆÈL¤g÷B›ÒcþF:¾…Èu;<ª)†b Àõb1ó>·‘ ê`öíF¤©¾6
-
-@W®óÍ­Šì5 Ãf§¢sòÙY a y&V߀ËIæ£
-l;…K-/CVÏEN†ý1!ÃýYV38!ôQÜÊ¥s]&‰ã8 ½JŽ QóºÎÓ÷ß6(9©Z%Æ—l
-Œ´ïíR ø²]u{ã<º4÷ßö È=ëÝêÆU (DÌ|˜Ïó~§(Í´žÁ\:JîuŠÌpÚùå#æsÔÜ·ýÓ» 2D‡ŠN¶rX>'oTúÆÜE5[+fó¡rlW©¨Í6EÚ|u§­Ãl%® ;Ï SÀˆnP9±»%\êd‘W±¢šŠ΃ËH*nÖ¦äœ]{ €1²}S`ehD°7«Ñ‰ò*µÉ{Ù¤/#öÄç»O¬jÍ0+{oÅ7¤p ×þiî‹2 XštH*˜¬
-¤KòßHÜɪÐฉœr²
-1éµ®1ò€@ Ùñ¨Øú(€#(Q_aÒÓΙߴ‚ȆSÓÏêzGÎR.ˆßj©¨­ÀŠ°/Q•;1ö>M|U
-Bñie³¸õ=-Ng»©Y$œ€@éÃCÑ;í™*·"»í:GM韜Èh%-DÎÜ(ØäÌUîÖAeîýß3†ævÎ"-㈿p8,ÒÜ¢IÀãƒPëp'*ð…ü#9ø€wÙøÒJ#§Õ`žŠŸµâ
-Ù,wÀu *¢X"]î RK™ç¶BѸ†z_7Š¶Ô\Y¹¥ÑZ$Ò÷zîùûÅ qáƒè;Ú™áµÒ@©&£AQÊnŸ·Öš©)ã‚&És^9nP
-Ö€ àçño-ƒ)S€-‹2oÑ~
-ž”xï
-š*{°Š%øžr*Q`ÈtO§ê7Ka *iå¨)O
-^½QàB·¤B™³ÌDê·3R³û"u§¢½·²ð}D§ð=:Ç`•3Câ‹tqJj\šÌÐÁ;ÛHEK¥ÅP”mc¥–Ÿ]®EŒjea£€1«¹_M`8Q‰Z ú¾ÑKý¦a—)Ù^ù‹êîù¾¨Ð©Ëý•Ý_`n'”v$tÖÈ1ã^ ú/SœMºƒabGl³Óuˆ¤M
->3Èæ"HÆ•¥Þ¨M Ó´¨•Cý¦lÜláº}€ãÀ–— ëߨÕó,&)—vÒ§Å6ióíÀ
-ÿiåx”Ze Ô\ã™ÊgL+ïðW† é¿’+:㎰gÔc§Ô(Á©K ÿ¹<ìAkæ·þÏu™ìZV\AôWî,²oìP_`ËST«R©ð÷^;ó¼B`ßx™y²Ù;U)Õ«H$‰2@lõ}´Û')le“.·ƒ°ÊðÁ’-œ~ï·I…p% ×<&w¤Kƒzü„¨½(Š“à”(Ž
-e,EÞ¦J(±µfÜ©_Y9õ˜Cîö;<ü¨A
-*óÄ%ùçíf¨Z°ãÊ·w‹66]îÎÓP=5<£|gy xÜ—
-ü2²AÑîÂe@V´¹ÛûuºÃa|­ûe5Ín>ÊjÜyzkÿçYzv‰¥uçùÞˆ3Èó—^Tòu€è{ñ¤
-úŽ"!9ƒÁˆÌær?ŠL¨Ì¬­=CNÒÍ` ~'‘«,q €¡‹lŽŠwRÇð?DêA­‹Èxø×€©¿Ú÷_>£A›OÅ¡A|‰ ì‚.Àk×yc×Åh®,/ä ´\ÃSnNŠàøRÌ—ÇW'¶ ŒBÞO)Ï®t1dÂøHß.yâF_O8qÌ
-¦E>”Õ¨2Ù<דðtE!ƒw¾Fî¤ðu¤zL¹ò– þ6[œ¶Ì8Öv™@®”–vOº¦(ì$‡|ß#ÄCÅ…>Þ¦I5ŠšéØð±5Ÿ?´v¾&Poâ‚ ‹4§kÔf @ËÑÍæû»G)D; Ô–ª„WNÓQ”óë²êM+æòh–²-o=ý’ Ô‹¾ÉÝ>evù“¥{ͦo?ëõm&9Ýc³øÑ
-yWaA€ZC¿×U³¥J+n¿xLkÅL˜L¨¤Ô¥ÆEßY©xXu´Ôx ðzz{B)n£}UÕi\/¥iÙdÔ.y2þÕ¬Zup”R?êo~H­˜½‡DP>n¯êQ!gÓ.¯™ß×5F%gµÇÉ´¶Š¯’€ûìs²9Ãj«=á<¼†dèdU†H®Þ}æƒ.(^ÊVÒZê ì0‘P
-5BùNkê}ö­ý˜9-.«f@NÔ°Ÿ1 {CŠu[£+ù 4ÌÕàìaÈprEìÚmgÃJÛÙ£¹Îú¬Fui¯|é ¿AŠ¯‘ßÅ”(˜ûÊ¿·;ÙjÓž€uëJû­Ø#@\aö(˜óÏÓà©ë–òx`z^Q±kÛ×è# ëê:³àv³ÖM,9¾ÕÅ»œDÁy¨ƒ‘B)ôª ŽàܾÏK»Ë
-ð×E6*u¤
- ?,ÅžËQT!ògIf°Ï7’³i[pº@/^|Á»8ìþÅü}<fóû¾|ýðéã×O¿ýúË—?^ÿúæì}ÚõÛ×÷ÿùúåÓ¯ÿ{}óã?|üøûçÿöõýöõwFþ‹m5?\·PiF"-'ƒ½>”zj†‡š(ô
-õRS»5%~‚®F‚mÅz®1ÓnUÅXÒ–ú+ÃŒ¢øfÒ. åÝ1<¾v‚ëQÛ¾·£Ü3‹ŽM¸Ó†w xW×>JІc“¼#± Ö)߬[ñÝ ã7nå(f¡3…£˜[
-!Æ-â<KýÁÉgìq…K@•x覇^áêqM¥ÕðöêƦ‚)a¦ÄU@ë¶d¦õL[.b9ÿt¦ùðlòÙ^Ø$CJ÷öåÄkÐÁ¤ûeGÂ&=
-ŠdI8— ² qš’Ý¥ž¡ÚŠˆ6#l³šÉÍ{„ìÞ¶à¯å!4ßz”è…u­í[©Ã¡Ԯݮʲ¾è.,¿sX5ÞnjŽŸÎCã ²Mõ‡ª©Ä¤èuTç¼LzÀEʘ|øx"_úm§+Öžô—fõRŸCñ¼^
-¥Ž»À4OÕì- y@{úE÷LÇb®—
-ºG¥³uÞ™KÕÒea³|òÍ zæmo¬·=²-šÝ'7TkW½¤ݵÃ1]¡]›\§«™Ö’Ì å­›¥ð¦R¢±¸@£—SŒ,ORÎ1 ó-$ß¼æÕ˜6Ë•UÅ”ù >¢J½µcÎnëÅ%šÚ‘½U¶9>Fº" AAF(úá‘‹¡ ìwËÝ»ŠÇÓEÙϵèÇû¹('¡;Fe=Œ€ MÍSâ w':aµ[×½ïLm‰MÁxF0ýÇ›C¿¢¦l·`élÁ9#ªPp[Mi¼2çUSóu&qtŸ §ä”•YÔ£7ð±p iJû TÎ!¸jZÓð÷ÈÿY/—^;Ž*
-ÿ•3 ‘€z?†à ”BBxve#E‚Ø
-ö ÿžõ­]Ýç†À̉”ÜZ§«»{¯¹`¯kâªý™èT¤©^jÔß/|÷—ôöTA'€åÅŒ©Ï²•]ÇãöÎ]áàÅa·†÷µåyBöëĽYÙ*xú倜nÈ–Ü¥jÍÒD 8P ê:ª~JÛÔÐ}Ãp‘¿´µê=iËN¾šälÔîW ¾¨Øãý­á_#Èf•Ù"X]‹ÜªÚ@´Þ–‹FUÜÂœÉìÊþ+Ä8Íêzå¢à9ŸÕÕ™ú¸g àÆæ9†Nž’’êyg„€Üßxâ^¢@ض’|è8«ˆçÊ-* sõ5Kßí‡æg6eô\!5Ø›yN ãU: ùíuo|BEÁ·ˆØ#2ÛG1ô:u’lË8i)úx·‰ŠÅSð»®±´k–8~Ð÷"\Ž²Ÿ˜DÌpÅì«Quš¯ÞkFbG­3*sÈá7£"T•mYµeÄELƒôºós&'©ŽílÙ ëq;©véî¿kƒþk}ó!ÒËã¼]G¢ ‘©
-Ô¶þºµ~uˆˆ¥Âçh]¡UD¯M”#^ ÅõQ§¬WLØqÌ;æ`&±n¶q+°Dsæç´I !éab (Pñ51Q
-Eíœ'…¡÷ÕòL¼€‘j°¬í§dA
-À,¸
-²À;aŠó+…8ÕUI·&âºu
-iÕ³ÖØIé£þC[Ô ò Ñ ’Oáצ¡¦Ø8e„9äkÖ/žÈsÜÚPp&€-t§¢g¼»_
-OQÄ
-aPcل͸Þ.@ ½
-í¹:6ê „wS%KxŸOmŒÓ¤_E¹™ÃÝö}úµ¢5©ºÂ%†¿Ò+IþÞ:iü
-C,ì
-IŸGŒ‹¼Æú™-¨s,å<5)Ù´ÆÇfL3ÓTR^ƒ »¾ÕXºÖ¸×à²Å8[ʦ'gÊGÐbu¶«Œâ‡Ä°LŠhÇÁÀ;Ú»æãŠl”d^‚°lÉ&À¸Û“>±,± í0{Üé M€I~`*éØ%7×Òpå‹UµÔÔêíÓ¯êlí½±T=.¼†ØKÂ)zñª~/0$ù>|îÌ Ü# ÝÓZ÷SÜ
-` 0^MÛ:'ƒ£›¼¿ec¨Ãg<dÏ$3ÆC;2ó–¤
-õ Ë«²Ñ˜B¹·~Ï´&g—“c™Q‚¯^#:»N“e™sÅ'F9µLÅ ƒNf‡. öÇÍôXAñö’O3+L†…¡Ï Ö R€JɈ÷sJ]Žt¶Nø³¹"†±Î½.îRÁ¥FÝJ¦Ó@1§%³Q]¶˜¹1óHùÎ7{mh0b|–F a‚„X(üÌ.§‡Äw;Ÿ=N¼Zè-Γ I¸z"R}ª*tçu ^˜4Áýpv„€ôŽÚ©ô%1çP'õ¤UÈ’& ¼-Œ|ô\O&Š­|§ ÇPý¼ý\-ž>h!áO@Ú)ÐÒñ¹=¿ Î\F܆~
-Ƶ¥í(¹õ]TQ’,ÊÞ\Ðh*Õô¼åLÅ[`›t¡1KÅeÊõx¬øɸֱŸsÔœÂZ×o¼wÊÞiÜ%¬Œ-Y k0lÃmûžBäjâ"¥V/…Qý6D’ß!Uz ,°ü
-ÅK%D¶Õ¢xŠü#@>âÅmÄ 5Q“Ä ^ )Ž.+V?2ª_;ÂÀ …‘n5£8ôu´Vd5{7P¢á!÷|¦ÍpMÎn¤×
-ÎLxÕõèZpãź¤1¦q…ã€ÜKgóe0ïÀ–fˆçZ¤ÀŠ©¸‰5¼‡ÃÈâ5Õˆ?Ö‰R
-cE-©ò¥Q$¶ßtÏŒ‡—Œyj9jÇ_{\¢µsb–»‰¸¶(øä´J®½\“¥zQÏ¢Ò×*€›î…À8KXÉGmTQd^Ü{Ꭻéõˆ;î–žô­úźÕPPs’­9tUÌcµ›R¥j—9éÅRîÿp]&I¶+ÝJm@fÑ7ã¿ÿþ§:2³ž4ª‚›Ñã8Áëi³iß®©cåÝðCªðQÛo®eÈSšÑ…»}K \Š&7nW9šËé$Ì‘¡B7Š\ßØòMÏ©“ÖrˉiëŽ\Ú·PÈïèG»9 TêÐRáQ=z«îÊb„-ÛÕ¶N&?ºžr(Ïe«'Lúªý[6-r‚§o»MÌ“:Ê 0}5s6%7½dîÒhv‘ð¨[•W¶œãY<¹×ÞÊ# â…Ú¹OG†p~¶uYß“jJgœQ?:Jãb“œKIrÓ±¾hØûQ:{,S¶ìù¯eàwG~•ñ”cn5…ð'È;‰mj†t2”ŽO#’ñ®–'©‚G‹ô;
-€{ ¶Ð|Wì4p•]%7­ª4ì9K¬hÐa¨[gF0O¯5Á3|ò*z¥_£¥>j|ÁAÎRKyFžæM¥<bf‘\SâØ¿ 4­}~ePçÉCµ ~l5ò°
-žö‡kPeã{¦Z™S\áT©§P…·µ—çÎk›èšÚ)`ÀòŠ…åqzªnÞ
-{®»ã“»ÔžÞ@i—Ž>³QNÌŽ`D¨f}R¿É{¾&¥¨Üxä!IªÊ@Êsþ0(µ»³Þ¨C+Íç×QÖ›™Æü¦ã¶ßôE¦´íAªP£îš²Ç»Ý®½cÉ’ß±{…uüÙ,ô‘+–”]©ÿR)jl¤B²Oð€-Ñ–³ÚCYQ’ñÔ6êØçò*éc”èhw=Â]Áåm© ¼=W¢ †=ÕŸŒ~h×°ßæ0n‚f­$`†@ø7·¼cQ–ž(
-Y!¸37ø8¹…oß!h¨3ìYc 9Õʆ¯f¯ïZô‡i‘jMÂ|c ^Ìõ¢€×æûíé}€}‚ѧ‹?âÑÄèºýa!2Ü ½m+(¤?÷¢ÈQ$ ]ïgGâÖ?/[1ÕævÉ*HåÄŸ.“ L5)óö¸ÌÐÓêi³ «üW ~;ðõ¢@¥zJÚâL{Rì±Ë~×,F5}‘=íÛîcRÐœ¦²5 C5á„@›?CÁUÑ¢ñ×rh âoÙ¦c`‰]GQÖ»¢«¹ìQ ç¥3|œ“mØÂjDm„u8L+ºÑ-_5—ìŠÈ»‡ÍÀ°<åî<µ7d4ÍHeg2³wg 5DÄgÓt×Óí>ßÉ!Š}w¥Ë­j¿ÛJ3n¦Nßï!þ‡»V²ýÙô3QKìŠýÖrרHµß³l£<BRLz%>TE*Q¨>@\£âuÓ혋ŠÃL4išAY
-A|ž­™ÂÁ“À”¦±ØAŒ] =A˜‡ Ô)oÕM565ïX‰n®OûÔrw<·
-©Ûmά¡9Ë;d¹r{r¨e{bð,ÎnÒÔÉD’ãê쉿ñ ¼ þæÕR
-P‰š›«„}jœ(ág ¥¸SÑ
-Úª”q:  ©ÿ‡—' .¼É¾DÅö²‹ä”ÍñðKD('ú?êTÒªÖ¯–™h3€V­u0DÄE©×œâ\FIG½ F‚`„§8*„§<¯&J4yzÍ+­Îxð=džg¼à~Í1®D]
-X}Š¸.ûD·H
-÷&£ç#‹Ò›«]ºÇBÆÕßïns€Ê®'¯åVq¤^ES>ÞõŸ³W^?Jü³fþ´î3y„1û³ß,ÏëÎ}þé=W®Zò©â]xÁΕœ­§0â²õIÍÝ7’¶Î}/ÛRñ™pŧq*ãôp´."óÛÔ±/Á‚@Nó¤–PÔs®²ƒKX~î°o ‚=Õé¹Úö†²9d÷á¦-<A®±ååP*"¾~Wíú¯F³‡§ÏS{`Þ-€ýûH¤T8ç T¶œô@jùŠzÌŒž{Ú÷È}¥‡
-5pÓ1g|q¾ÑŒò¥ÑÖŸã8[’^¯Õ€ #LÐG³%ðÔÉù2¸±zÚ‘Nnöžè^›å}fŠ’ÓÞÑ'ÓC<å„ÊÆA‡›qÉæ@§Äï­ÿ.
--¡s®¤m*(vùΚ"ݹöuX¤4~R#!ꃫjfKÂάÊE8‘ÿétòÓ1J"`B©éh/gõS¿e£Rˆ×¡³åW½ïp„ÓÑêGÿN‚eÔÛÄNQ _ÅÈŠJ8ážD앨‡<^Û™½zôlÚ”Zª¢c¥þCv™ìÚqAôWîR2l¨æÁ^I_`À¶’
-êdr”f¢$9-J7áo"yDùª‘—gfIôZE+©êw‘Ý1Ÿ8y/c*‡¿‰ òÒTè'è~lBrG&o¦:Ð˹A™ §9›´3a^®-Z…Ý.1IÞ­<½—¨3Þ¥î¼PAJ,…HïÕ«:Fi„بÌ>+ZšyJQËŠ"Ñ,ý܉¨Y7GæM
-×ìóô ]¿±Ñã 8«¿}V,a>6«=sé+!ÿÝ„†Yj1÷y7Eäh²ï&‘RœG" ¼îrð˜a/H wf^­¼+1é9#ÚÚhzPÈ -t¦ë &Ž÷12qvþ„HmNçô\Y%3‰šˆ]éû´HWmáy¬ÑÚu gqÇRÇÝ÷=àéâ„
-œtQIB cŸt&G))¶¶D•qãé}A¯Ø*m†—Z"lbê ›GÆÖJ»ùÎSF)þÝÕï”9„ 91U—Û’6aú ¸yª«Û¤mo‘f‰+/À¦žø½Uçe\2¡h'ùK b£É*Æ”9=.C»ÑØLÆø¨×Pr*Myi¸t7~¢3Òt$˜Ñ¶ºiTe•jsIåºLa«ÐƒÆR’y<aÃ[ÌSýæ¡üg
-c„ÇN0¬¡ªnüèYl¢Âñ—noó„χ¡ÒìEÚ^=UÌ]P``a I6'Y{E·‡ó”º…IÀ„jí=I;ÓSÄ) ©ÄUŸ5cqBÂB±ú +ªzÇNxi›ÝÉ}f‡]Zð½ªvµp8ª¾YÛñXÚË\œÑpÁk8|Fš¡,b
-MÁípí;e#2;r Ôw1§ª«Oƨt5¦G)nZ¿w’r—ôà6§~£šA•;ÖmÖ9‡êä)1Þ0@r^Nˆ ÈÏиQu¶™J¼­œ-à[öa.W=”¤žV:mJ0ûzL„Ý€‚iÅC­Ã“œš¸•k’êñ™4fŽ yB­'°>û *Ô6aµ§…Yµ‹r3ãw”7•â’õ›lÊ7^¥¿©÷»)©‹Ž›«É5V“â!ß‘9¤ãh°©á„
-ì” ]*0!9`KC`cßx¢\: T¨qÌ”V³BSÄ䮾J Ìüt ÕôÂSh+¸dé©JÞ1‚ þ„o‡Eþòoþø—¼>èO]³îSEʨkƒþÓkûÐ)H‡LX×?Ô Û̯Ÿ?2KãO¾~þÃ(·¨zÓ‹jmâJUU”i4ÒE
-ˆSL¶²qµ¨ŽÄß«IVXyÓÊÄÛ.£· §*\ò{@aa§<ÚÎJš€<€‘ºç; o‰5ÕšŒÀ«Æ6' ±ÎyøwÖs¸r­…€Ùñ^‹1>j¢çl.ÎZÚš~“¿‘´úý:L;À$•b­®\“2×È­÷éšãgôŽDJwù§¥”¾.Úå¡KjEã•‚|¸ÉÞBů“8ŠI> qb9ÏÙyöoç¨Ã×xg)—T§ºkê¬÷BxÇJ¨¢ÇŽþÙŸ."d‡5©OàØfUÓÕ>­ùz§]¬îÞåx¾ãÒQ¬MŒßi/K´ãxÇ
-?s$~Õ¥¡Ð×#XD_†N¿ávvvº·W²K¶í0buJJËDµ¥¸x|ìzÄã¸jDéÝM©Ks.ËêĘ-اœ9tžT  ¸FÆ|Ø$+¤³©”÷y¥W—ïÈÐ/¨3_á äãû•‘磅 ÔÖ%¤©$Ûõ4iÁѱž‚ŠMôv­k:H{OVQÒ©Û+mÖòÒeèCNœŽííôÈ~2C&tÓ¥”‰7ó£éªE>lšf´-õ²"o Ì\"ЦÝÁªZzŸ¶[‰«v÷È€¶ÇmÓ ëœ?§×½¿iŸÃ¯NcÚñ¥FÏ̸PT¨lPÌMlÀ[r2ÂLUq¯ó]´L^­;“ãååt1Õ†ßÿØ>@üáÇ/_?|þôõóo¿~üòÇëï
-}÷7bSS«ß¿~ø××/ŸýÏ뻟~úñÓ§ßùço_?òì÷¯¿êÉèãá‡ÓÞ96¦OV3¡‚]¦$‚hŸ6yÀÅ´tºý0/*¦K‘ "+z®1mÔxBùâ°¬ ê† ð±R†á°¡tp舴…ýp"ÏcÊ'g·]†­>£k˜®œ:/ª ÷Ú R°*ØìÌaèþÑmHæ‘´Þõ †ó—èäVYW­=ùDfõ’ÿg"M ä5¾<òšÁjÀΘ3¾XÕÎÄ¡#ÒSÕ€(9)$Úc’·3K;_xÝl¢WáU ív‹›¦Ö†éíñ£í&Á·”‹Ÿ*… aw&2å77Ã4ðýNùëÒ{noÓf4VGiAVÜ“ŽTNná"¼±†ò:·>¾µÑÁM<ç‘NQû&ÎS–MÓçínUKÀ¤»>´Çº žÕïfjÙñÄmZ6•Öþz•TøÀ1Î×Q‡¥:™˜ývM&§¶èSxSåµ#š«>ùZp¡[ç]”doÇc
-$¢wd§nîÖÇZ­¸°š2@ÒqîLÁ®¾D0´°ÀhñïPã9B¯ÔKÖ3KäãY;QÖêtOOh#³ÀVó“ÅâÞ8ë~ìBFݘ™îÎsÐT'é’+ïLF¨õ؈œ³iÜMÇ’e£ªìÁð·1âŸòþä@¯J+«-òc¶w4ù/ëe’d;¬[Á­Ôì{rìýïÉ™‡Ò}?ÂSª€+R"œÆ$—Oç#»é{dTä
-Ô¢üøÓ¨¸/q—½¢ë÷T½†~˜M°úbz`~¶ïÍÑý©ž£Þůø5#‰s^1n­a÷!èÆAUÚóoCϪÙ Ô>Ô1y®<»<Æu%$XÕ“è7ŽÊÿV~‹?òÄ|fö˜õý£÷õéQ¯†åú)í¬ÍrJ„„°€L«¯f¡Ê õ˜gÖ \É]s‡ÅaXô3&&# "øzš 3VÇšˆÒqÕ¨í·j ¯¾¿J€&Â5”"¸mâ¹ûô³BµmêÛ®‹v
- 9Þ©`ðªZ5„ò¹
-’L42îY椲 i 7Fë¬_/Ž:òCӲϽÈ£{IF•m¦|þ+ûõH_:0½ÕžÛ$ÉÜ3òÏ3_5ö5r» 1ãm‹GUÂÈ*H¡W.¿0òåÔ7{*7$£3ïgÝ ´V»]¼/¬oK™=÷±-”š¸°é#š+ã[ý·07D6êÜLz8™T•L/Dþ+Æa±Inœ—9ç…
-9¶|Ò¿EaRù8ÉLƒ×rÏÈ¡D±R¶F@ƮϹßÄkž0©ÿrô"úÐE\¿˜òKÈ|g¿«~É)ln›ìaï|eÚïÿhìÿWO%ú¶söme<b¢MoIX§ßUëqX`l˜z
-+Ýß9ñ«‹ùì3íÿ¾ka­Î¥ ­£E§ÓÊÚÝß>$·xwKï4Ÿi‡É±þ¹Yäé³]óô½Û·fÖùŸKÖC‘¾mWãöO÷±m]6Ýu¨t‹üEJtP¨‰Ç\}Tª S;ÂGw@XR+Žn+Vy¤¢í¸g_ËX^N1·‹¯†¿WžYO>¾èU-?_Fî´'Û<:Vã3Ü‚®VQkžæG]Õâ3#,ÀW«œ)øïÓÀ¤7¢¹…nZe1SÇü6•©ÓÞ8¯mšZ „t8/-t e0ç*Ì|
-Ù §]©ý.PATí§V¿4ǘ™‰Äæ,Ðpë䙩žDYWþÝxÛñ)º·’h§û¥¥CÿìýAw|ËÊÞ.ãóköƺ¹ê™á0ýi¾ü™ª¬¢Ùôï¿xÛ_WO·ök”N©ËAGE
-µ$§:7–bÛ람‡xsîg|kè,sM;7tž\ ñà}Oˆ?…ÍDÅ4)²æ8Q+¼74 PÄì©»+óžã(ùnŽ5”/½ÝÁѬ8äT`á>˜µŸw¤ÉA 抜ÒTQ=1»ãG‡âïÎQÖ¨ZØÞ¬ýgü
-r$šbõ ˆ¿Ä;ÜGSòKbb⊜È15~ßÙ/ô\Ïô!°AÛiBK©“ÄúC©öµ»ä†@b.:]4šû®Š"!Lϧޡ
-uä&>ôA\bš Læ%ø—£üú-:ô¥ð£þ~ý£…¶dS•ä)0©8ÖÊÐhaTl 
-¿erz©ý*º¡5ýªŒñÄiòÆï?©Ë}ÝNa¦fµé><Šd˜JiRµÙØÁg¦$¡PåßÆ™ØQBuBÊ\‰X¸$rš[ö²ò$k©¦Š,oÁ}ç4¬2Èz¬Ê…ÖØçš]
-¶+P ÝÏ¡š—UÁ p„NÈžlz©÷|EéÜ5gÖ¶ Iˆš`M¤–×™c´«G‚Ì [ÅZ› ƒH=‘=ÑD¹+ü:Û`^:-ħ³^µlÖdL‘\dºØYË]äQŸgX†'öÓÞQ‘>ÂФ¬—S™$PãˆØEÉœ)ž#UB!‚;F Ôbݨc7x …D6'¿·üÞÊz¦¹OöÖs˜lуŸ ·bodÔrf*ßt£sôò©Ö6èuŒrfÚ^”'G¤=¥³{H+ój¾ÍÈöá•mÕ$Å‚a™5|U5±"å)uÏK«ýfbT½ôn~B‡Û{‚®VóaÑD V ͵ºN))÷iQ}gÞ.¹þ*sçú›ŽÁƒ”ulu´"~Ö×-Ç^ΊJŠäèBÈG¨³8·Äý¨ÍRÕå¥ÎP/±ˆRžŠ²¤„Ëf®Ó¬AuˆšhÝÕ㬌@ËÕ
-lÁS.’LHl^d’Æ ¶7B®ý™J‘.ž‰Ò
-Œ\„§^GŒX÷
-™sÝ2¥óE#dÀ]yŽ¨jÜ5u„ÌÓ~ERR©P\“Ï8=sæo¹ÐŠüPWïÑÓê¾}ÞÒQÅ)¦Ö¸•Ì@ÂuœŸúZ™%tƒ(¯*éçé…fb
-ŽÎ¦£µŸ"*ˆrfÞ=Uîú*bË[Õ«…5ÿ”YÑ?:¿"|*¾ÓGá1¹?”òì)WKWgm°Ì+ÔòHdÔ‹çjùko-3y5n7(Í‘‹Ï·Ô³‘Ñ%ת‡InÌD–KY×p”˜x×@tT"çD ÀvÂ1ÏQSDÜpóŽ ¯Hh:¡²7?ÖÍN*"3©( RE;eSo-ð=ÒB#ª½lË£ÜfÔçÍ){V.¯»†™Ú3¤?`ž´ƒÞ’›çaKê§%7­SêðAò|yÜCÙÇÉ­Á³*~2ŽE“¤ì‡P^yĪÆkdVîÕ3€Ý¯=÷àɕˇ<hµûDRhT²Ð\³"Eê·)!%{³„ûnó™yÍ3ågŠÇÉd6#µã›˜‰ˆ‰§HZ¹C0Ž³Q¬§IC @øgœ7Ó#W-•Œ¨Üèëôç¨ã.ääÈÖÑ`A![®Ä[JRíÎížq¸*wAqµÒ¦ÉüŸÉÕ‚4‚0û>¥¤¥RH(yéBÖСæëVF 3\RZ~"hÊ:zÐã" ìL)ìúÌÜ®8¡sµ©±k͈Î<êOIPBu±û¡![ó(#Äÿ,¥´°[ô»JÒžL¯/‚ÎõÕ·ó®vj#ÈräÁC±±rG@WoNŒG3!08£ÿL3€:„ÊÇ•3®$²†i[kQ#v½ß5Æ!ÅŽçYŽ÷¨¦ +õÓgˆX꺩ç]Ç´jýË,6¯è4ž£’‰~k¶×qÇ]Y4ušÓ+RP0gâ *S6VŠî—Pê6¼Oºª„+""#©^VD1x<YÓ9 +Qµèo:[“Ÿx/B”Ùº8k¾Ùð û#Wi AÞÓêl¤µ‘& Êù мÒÆÛé`)¶U»9l’$ÍÒ‡A3‘ÖHFiÒ¦­Ÿ¤Óó€5nde)¤dwµu ò’Â4í1G®Gk¡24Ýãbq3Sª(7TÆ3ó2]s 39ÈHઔ ®G4»_ëJ¿xsWGÖqÒ:Ž°ÒÃ4«“iÉ« ?¦ƒ/1O~‰XŽNm`Ýܧ©+'&â7©ŽöÙbó«)¤$›´‰ÔÍ^Ii¥,ÜOºÖŠ¬—#E2Ddß*)Yš{EtD&¶ÙŽæ#édöX^©afáÅ@ˆYòùuhF?kX÷å¶ýd–@u?šãèˆñσêN=hô·ý”J?/VQ?zbuŒõôÌ2ÐË:žC’>¢ˆd\˜i ï™iN‚â…ä„df ÉÎ.DµÑrÌ“z¤¸†`ì«gTÔH`"Žw×ÎÄænÏÛÜŠ¡¨×5”.MÝ$ð”ô¹â‹ßÈíÊ¢—þù8 Œ嶹çADî2·ž|P:•ÏT"ÿUy™Œ?ù·ˆfSôN™“ÿ2zašP¨\é´¨ËãDªôíÈÜãÍ€®èó%ÿ!N
- 5ª §©j 5@Ôdöo<¹çaðÑlÖ«~6¢àHJå<…q>%ÚO'¹ëõK~)°l9Õãå%Du~½_(g‚ìÞ3üA«âˆo<;‰¯¨UÆô0­/„~œ´¢±˜8#1ó,å-…VÄ`^ .ÅïH¤\gH=nM¯K[9Ëmnkͼ’î¼i+‡˜nž£,?¾Ûã*¹‘gåEVß—UÝG-©ÊˆwWrêjw„?¬Iˆÿ[¨&xA‰ý¬^Eþ©y=§cD3Ûs†¥–ädÅò’’u•d€*k_-#³Á+åtT³t#«Í“•÷çgPÍãæÛSO - ÈÞ(e—ÿ0]FY¶¥ Q/
-êü'ÖÙAo½ÏJÉõ$„_ Me·ôìás^AƸ‘îKçv«ž$1j[ ·ˆ–Ÿ¸MFzD[íéLOŒ¹#¿ˆ´‚ô0ç”xç³Åj"åéad]ÿ˜8lÀ—‰l¸\K¯*ƒ÷{q¤¦Ã>y+Ÿé³éÉu]ö= éW=5°_uõïARùÐsJ+Îà ßK.1ÞÁiëÒA9Ñ°•EN¾âÃ,nïÒ]g4EKÉÆì•LmŸÍΣA<¸6UÀ+3þ^d?ÔÏÞ›Ùp®Ñ$»ˆù­H1ðЮ²Ð^³xf[H˜ÜÀþj•6]R+±ŸÉãÃY`í9ÍÊv ‘TGÕîÔJ_±ÛKm§Ef¡‰‚´zÖ¹ÄÙ´&ÎîÇgP¹£s~uC»"/@ÓªûkžOòEy ge®–ÕÞq]£–÷‘*µZŒ4²jœjëDgôS­»XíJ¾nözøn\8 £1ê’A¢g Ñs²Ä”}¹Gkì þ)lŸ‘ÆÈrÚZéÔÚÁ·’¥þÕ+Ç©oØiEµ¦òõ±”®ª¤½w¸O·)Ñ[qRæòj<é¡7¿=Ê®”Ä] …v†àåb!j¹bÕÖÎTg é‹¼{ªPµ¬çh“,Ö '‹þçŒ:oá„k[|È°ÙN ói‡æo%å¬y0[k鸥TwúƘð1<í‡Êƺs ŠûFÍÊß©õFèÄúƒdb,@Æ—FVÄErþE–=5ÞŽúµ.xWJBêÊÌ75j =C\¡?ñ[»Jî%BDüñ¾Í« `‰<èó~e/èRhu&×Y¿@íw•2ñ´ÎåÊB¬qÜ£n<7¢|&,ž‘¾Õ‡n+”Yþ@ð5ºÏ”URµú(&mìL×ÊçÙ/N–wÒ:¹¾S‚"¯uÉ,t,½Q1‡Ï¶K¢G³_ Ö»;\^ç
-ÂæüÍfÐÇ+¥„éØK±ºÁ,uÙi¸%!+Ïÿ
-H‰dWÍÎe5|‚y‡» sIÇqfVÐý ‘Ø¡Ö'zH­fÁÛOU9ç|߀­ÛÕvNâŸry>,ÆÓ×ì3{Ž1/ÿøçOg¶h{§Ìb¯<fYц·gš•Ý4wÙeÏBŸ*OÏ)déòü™Þ½=Óq‰îëÙcôǯB'÷~ô¹øg-û£Ç„C⢽ãëÑW<­ãžº À±­ cÊÊVýÝ› øÖ.‹…—_3?è4:¶ç˜w+À=…ôv;Θ°cT7£Úÿœ¸Øô§Gß@xbâ ;ïè³Äï>a~þÜ{Oœ¿žwÞ‘ÕÂ/öD‚ÆÊ7v˯Ølœ9pèBÊ‚wˆöî«<‰*Ö@ÍŽ·]v½µB¦ÅÒæŠÛ3œa%ÚmÉn-{cG$™ZÅL–'2 C xž1|‰+q‘8‹qɉ’CÌoDž5y^v©gR¯çTouÒz\ž7Šâ2E¹k ßt^‡×N”›Å|E*¶¨ùÜoÍìÙ’Bî|³n‡Cv%å H: ojyn¶"øJœæÊøŠë•@göY(ûŽ
-j Ù·!¢èÏýl>öíf!´Ç±›}•E[Bª„Ø©ƒô§¥¯B“…ƒœdw]Öc¾xGT}ŸdªY¢¾;U¿‡ì<ÏeÇâÃ×Æ}+IÞ¯ÊÛÕ«LÜp“Õ@ß Ák ±å·pÜíØcUÊQFSvmxµÀBºÃŽæué¦<ñpUŸh—©ÎžÈ¸ã„èu•§Å ŸÞç…“Àécà:ú^CC°¼£€ùƒÈfU16iW‹°z¡‰Ž(»> ÙMoD7n/`¼q´Å )«>ùƒ'í…ôVÈZY”r¶ÆÒñÁžuuJOfÍqæëg@Çáy^‰ôµ5„;ÁKI>ƒ×
-SwÔYë÷eñ¤]èœCvM„A¤éùÈ!d^ŽÅ4
-¤fl.ÎÚè<×+™4¯5Øu–A'§¼P­çܯ(Z*XH8*vVõ#À5‚Vgoiìøš]ì ø>æs®É/ìÃS
-bU”
-Ç`Œ hAbÖè…¿{Y>~ü“WB¼1œ¨ ¼¿ÒuDk:(Ϩz€tÑfPgÎQOŽÁëïõ@ÔíÒ
-È‹)uI@="zwš£ UÊbW©29Q½]¤€)JèöÙ󮜃f$!½"ñDd‰èˆ°õ.Ï ¹]©­
-¸©Ý&õ¢„¦p½W¬¢OYoÁ¦S**Í¥›Äv›…PÈ_ž.Ê *e=/ɳ(;…h7á7)˪jP"<7Ëk"hÃäÉìp»] ÙœEõN0J­"àí08¢ìÀëàé ‰Á«|½n?D•þ^](`€–:—y‘°.?ȵa£Ð)G¹9ÿâ9ZØ9|ä-Ô;ƒ†Üpï&Áj`jîë\V¿Ö­~¾$qN‹XTagGàâ™IÒb1ï3.ª)±!1&³z@0w\“ô•µéÜWÍ2mŸAÝÕ0£€²¸wòðK‚h]«n6cÔ·K$âÛcjßÂ\èší˜
-gViA—]fu…MéIÕdD»[÷bÇS÷nn,ª±ú$íXÀ5EÎ'Á$ãfæ¡ÅoC–0áš]ò¨ֻ¹SÛÛ¬@Á"ÚI‰rå»<A*•ò4
-Î(•k»¯3ÚýT”Ö%¯Ý®N:ƒŒ)Uá°¯ÍÖ£8aæXý”m¶ºþÑ¡¨iÉqÚ¤Ù-C,Û) 8 cFUD­]§7ÔÄíyÎC½5É<³ÍêAHŽöÍzÛz”ä‘ÛPñ•<¢êÌØuSáHÖµb£4e ÞT)™£d}a\ÃÈäÒòw5úräï7ß~úüþãËç¿ÿöáÓŸúâ_ƒÛ"
-âËÇ7?|þôñ·__|÷Ý·//üúýïŸ?ÐöËÇ×°üþ—ø}‰“ÁrÅ7&P)^ ¨5z:5rªø¬‰&O«ØØ^Vú«‘…„L~Ê«<¥ž‰Ø̼Ŏ£ÑN™-}“JÔÂ!Õ§lR¢ËÕ’
-¼ív5ÿiÔb—Ô=¡zÅ°¼$(BósŒ;jWm‚œüæØ››Ò±üZÑzU8Ñ1[ÔÝ–Ôï*æŠ_üæÿ{¶ÃDÁ+%± f§¦6£'ªûcÚßˤFÙYºQ”êÕÚ·G¼"}³»üÚîäÇM‰ËÀw
- n­èç¾O61†*è6¯ý(ضP#e§¤˜'½®$Ñ‘«Êå· ÅbPjcHËú¢™Ñä®GbCd%ùê‘èë s¤æ˜š™\Òòf¹ÿ±^&W$7 uE&ľœeŠü÷Aø #«çéªSw!c' €Yþ²fµä°5U3+œú>Ð÷ϸrй~‘³Xª»%²VúžO!I‘š2’åÀÛiöÊCÀ$Öé79¼¡ør²‹ ¶ëaÕfðvÔ¿»á›Ö–ÔÜ%Žy×Ä"j¦û¡è¾,Ï"â=iE{RÐÆeï ¥ÐsPPӨܵ*ôâà
-©fÚ‚©}L%ðÔ˜8)€=cØ:D•lÄ…ì/Ñ1ùñþ#û#Õç´ >²åB´7L´‹(.n©œ²ë5å× Ç鳊hçÑ?bx¥0a{ˆ÷”P‘à¿aò6JÊc«Q. ŽÛi$
-fþù¤†ý:(ú•°]jŠwïÈÄê©Ü´Ñ¾Z«½k
-}­@]½BÂYzL0Ñ9)êÅľ™š 19Y·ÅZ‘³ ô%1Ù¶Óàò>Súcs&Ãmï$)Q'ÇRÊ‹3$ö~YÉûšP" KÜã°ÇþƒÊCÂYpÂiÌ' ë
-Jýª¥ý¨(5ȘinÊS:ÐHv‘–Ãüڳ﵃ Øú…dÌ EsY#
-dwÿV‚Wÿ>îAn¾!è]Êö?óDe#¯H™F¤Xí·£ûG…^퇶VÞ­%?Îk`¤âäÃÁ6ûŽ
-ª”tzÙZäìùÌתÒÒ|m(gu&gæP7÷xí)}~¹½šÎµ¡êAêTØcÌ;©P»(VDK@GI}E»`os链¹We¹ÕÑüÎypDŒP%—‘¡@½˜‚-³ª ,óàÊóéÓP0d»ýxz‘“3y7Ì¥3ƒ”ŽAÓ´”–?ÐûÆ¥И!ðäØHøæBEgO®ÄVV’z”¡¤9gòöh%èàvÃÊ´ŒzAq–jhÿ&úU –Ëá®Ñ~)ê‰@ö@ªé$n²7wRÈ»Q q<Ô{~L\¥~Ìé»nLÕ¯ŒTú¼œ£Ëuréi¥}¢c>Q9cfL„N{uP\9ˆ¬wVØ¥¯ñi…H:~3·;,ZŒ³‘>Y³²z‹=]
-1s¾ï¤´~Õ  1¶š!o.ÖµB2êQÔ¤Nÿ%î½.ŒYÖ±árטOŠAÕÁõ@g ;$‰¢'’­à p‚7ï®êK dK!ê:ÃbG xhϤT-¸î¢Ö1
-ë7Ë[±ÜËHÒù¿3–§KŠè¶±tU\>Óîêl–uÊwÝ´T;膗„ÈÔ4#}hÒšVÈø
-ô¸ •p´EFZ‹™®`¯^9È/* êqù¹S­4@µ¿™%jZ¦dF”šÂà{ª#Y‹g€
-µ?Ý`lO(X-VÚÇÍæÛrNš@çºÒC`šðŽ ¹¦“§ú&njb –D“õ7—ÓaJ/±VG¡ ´W^;Üh­#.i£åšu*2ᘙ&æüf0yOz ):3Ïš…©" tÛHÎ%In¬ì.…žêè/„.‘1âîÅ3)Õ7³Wrt2Aˆ¬ù2²ú=ÛÚ1f¾ÞU4'/Ió'ÏÛǤ1g›
-W&§½Ê#nsu§Íµ •P;wÜb<••Uê ¾n¸2;`½Êä! QŦ»í³1ý|šÐuRUÝã,¼lW "B•¾‰_Øpÿœ`´@"”ÿÓü_ÛøÜmNéˆrtsaôô·ç!„„ˆŸŽÂ;‚‘nd=£¤WºiDA®»…=5[AæýiT³=)eÝBÉZÏbó‚Wx;¬KÝœmÉÃô(#´÷]áøêFïÆv÷ç’ sÔ‘xí6ßÚkfÜ­g¤^åTL
-ùÛÛ]9 ‹Êt÷{]lÀ†W)~}€ýEL¼iú…†>1Î9~ñù#fÊÜ@>³qoÊõ¥ˆ¨&!Ã4÷Æ1 ±ºD1g®ìNöµÜµTjà¨Z‰O¡X ƒsÒB}ã6DooÞÿ wü™h+*.›÷A#(°Y$¥ù!ájuþŒ»ø3ϔ⌿¿ Ìš_DŒú¶6eBÝ>XO_§[œ‚]¹8½–3…¥€Ú`ƒä0‘c  a:î?ì±ÐÎg¡gå¸í\²Mˆl¹s¦‘˜©lÙ<
-(œ­¿c¬(6YÕëÆuL¥‰£¥ajª·V[ãMf—–uÇ%ŽÙê8_ò¨ .T¡³ÔÌvˆZ€9_À==æõ¯”µ|¹˜¡r+³9žBn¼n÷£2Åb"± ¿sáJ±î!ZVF¨õ )½YÛ’_½ÂN VüÑ•ˆov”ÎC§d6²u#kÑèñ63ãhtÞ¨EûÏ3ÆIñ „ÿ(&ª×;F˾ՙVK¼½‹ÙÀÀ@°ö\''ÊŠfõys·2XAäȶ C½>*»•«fJ½@£»Ù‚èÌÕ‡U®1¿ºsË> °Ë¼úh ¶ð°^‚ß™idöU¿™VyÐ5j\ªã©Aœ›ÿX뼇åh¦Ò&sª "Y†rPHMï÷øãCâšjrµ9ÿe½\Zí:® üWöÐ „ôû1L”<„@ˆf!+`ˆ}…# üïS_­ÞçÈ(™ƒÑ©ÛÝ»{=jUymªÈ©ÐI«V¾‘ HX湎 ƒõ,(Q‹ñ¹Â+±Qn²›2­Ed§7
-`"
-n1wÆ-%Æš™ŽŽè(ø‘!sƲèh€ÝâðáÙéÝê—§32Étf¾¾ÒYo~E÷ÛüJýŸsòõû?¾¾þûúæßþíݧO~úñåÛÿ¼üýÃÇï>}øîEâ”ÿ½î¯ï¾ÿñåÍëÇŸ_^ÿõòçï¾ÿô—Ÿ^?üÅw÷õÍo®·ÿÔ¿>óœÏ>ëOþ¿sÒ”FÕ†èX-«Š’ÔVÒX_«ðǶ›æõõöv¥+óGý÷ögèo ¾šÄFèÎÌ]UêV´Wr¬Bè÷nHÿ>¡ªöé\-¼‹jkÐhÒ/än6Û‰Ò
-2T,ª
-œª;ØgRˆ‹m`×Ö%ê¢5mkÊÎ’m6Ù6
-GhÔã&4–AFq«áØ|9 :’¾Û2M&Š†oô%WLµ~Ï[­(gÉòˆ“«»Ú–§¯³W(Î(Á°È&Ñ”Õdl뤰Y”‰‡P¥³kwãÜ¢sGŠI"P§uÞn)&EÿÝ?Ûñ€`•*Ö[÷¢B0
-,Ç—úØŒ”Ü[ø@©@çUJa@s÷7Ï¥µbÛÀìÔX•°¬`XÞž†”³~_XyVÃi¦UdµÓÁd0é$¨¸A#:å3¼nuåA>Zqhd ÈÃi]º½>;Ý;€|î(°b»¼mgÎÈæè­Åþ¹#7š:óÞd]HVãh¦¨¬$±–üèü–Ò“d(ñ0y¹TC˜VÚEŽf{”&šK•¢»ÔGqCÜÂ"e€ÒJ¬Ú5 ‘ ?cJ !×zlÚ±ÇòŠ“]v
-@] VºHº½S쵄œJ©ìÇÎNóÍ8t†½¿`Û
-’ê‘žc¦tI9Ñe÷›ªz«ÉRvIU6éÂô  ¹½[Ý{×|ì!î#§t–‰‘«Ä‘éˆÄ?&}[ïæÐà î1TVˆM?:úw~ိp æX§²ë_îS…ÏçÉN½bš¡n•×"³bgÕfÌ„¬²,Ç^®©¡âyå|L]KUz|Jk …_IV¶5§›ù}dÞM—'ä¬ùº™Rä[ÀJjnÃ1úm{vnhïbP Ì¢‘|¶
-‹¢ØÑílƒÃnêêØP
-S`¬‰OëgSÌ
-ߌ®ª[kXŒèå< S· 0JH^*7[Mýƒ¿ ÖØÓX‰&+‡S ¶íUd¡ñÄëúJ ¾?*<Ym2ñ—Æd®
-©l•…¢Àd︊çåîÜ
-v>Øvš5ZêbÖ Z²«kXàü(úÞ…{!j6‹ÊMG¶ÑÀ’RÁ1êòÒ‡bN#¢„Ôå
-œí¡í5Ý<@¨väL .P Î’loÖF<°jWÛ$ç ï6o›¤‰mmkXþ]»ž]5N)wéSàñ°š¨¨$€!:.šÔ3òO«¾ÁgJIýÌÈjbªqCQ}G …%ï'àq§o•úÄ’¦Õ“>Ò¶Wþ¡ÓTã ½˜mÏ(¬áƒa(4+ Ig¤Ž2žž%dl–gkšB½ÄªÀ$Ì2÷:ÛF±Êy(q¶r²¼ËmØB\»¨Äi ç9K|^¾…ôf
-å!s]¬-œA¤¼¯R¤Eª>ºUxX5%‚ÄSšÉCû¦F»¦þ^´‰9^J÷Ϲò/ç8&,I0[M³°¬¡cg =àóý-qö 1†.´móªÒuØã ®°~ÅŒ¨U8,‡K>9¹ß±‡x®:˜Z˜]µð²+Ù»n¬÷¨ÓRÎÙjÄlA{—¢è¨2Ø-×4.;ò Õ¡$`•pTЫ¨kª›4G`Ù`'”ÎSÓ¸è¤E¤ßúîECK ¨±Ø—êÈ5Ô•{ùw‚ÄÌ#5§ºI™;ìf,ÄÇ@b‰jw[n­…BPubÈšµƒ›Oƒ#·Õ¥†
-QÀQ
-ÌÝ:Š»\_̇R1¨èåh‚Šäg„?¤=b¾
-(elâ³ti
-@5YöŽ¡»Ô;+&ÓoªYŒ [ÿïKìáš×+ÏÈëÄ‘;E÷“bÿQjäêª"8…_InTé j§õ]¶‹eÝ+»cH“ ÁøÕ\æƒ8¿_Iq6
-;¡˜šÏ”Úɳ6eÁƒ¶Fן¸†|¦š¸)Äõœ+¨º¯îséœ
-´ nto¯sùƒ¤!“Ü>Û2~{ßÔ+S§©_F³a{ãs¬Ì×Èw+Å7™Ò@î
-Pèt‘ñoͪüà;€ÏÀ¾îhÕˆý½AAªss¥sæ ®«‰§ïÔ2åà¿V(aë~O9úæÂA`Œ‚‡¾™j^‚È|“"4 Î;‰‚9çó—1w¬ømpøbƒ£çÀëk.gX’Fînìl¤õÊÉŠÔ¾ rõ°¥ÖŽÔ(næàs«c¶ÎoPñ¸Q¹J[ü„
-¿ó}9¶>Æuo#9 '
-]iÓû4ë¼RÌw,Ùñi-&D€CÜêiÕz¾mÑ2£¹ª¢ÖlµË-wm½§êܪ±ÕîŒ×%GYígáuÔ÷PVœ‘] åvA
-Sˆ ëê:ÅPSB)ýqì‘úq½¦Eb?KÕX\²HonkæT=LU-Ì6ŠÆ¾¤f°'¸UëÞ¦»&Í=L€õ Ç…À_‰é±ú¹+FSŽº;œÀZ;©– $ˆ¦µæÚøQâö ?r>³Kä¯ëR«f ¯_sÐ0½*Òyù÷V¸ º¡²ï†VB`Sƒž
-ñSêÂy™PÊy5åP¯˜¥ëþõx€ëä2Ô+Î’Uý±‰wFó–v3ƒ?ÀÍ"þÄQý^uÒã!|5–çÏéˈϨ×âI¯1ìfqƒØd¼Ë³èá»í˜t ŽÈK#aYëëãÀcÁ .ç´ƒ_FìUKRÎu‘güäùãwC½ìkÓ>P
-Ý[Çô(YÑí‡ÄÇ:—0jìHÓ+jmD®J½]/± éÔTm“„(f
-ñø¬O¡Ë6DȘ{ bk{¹ÇòöŪ÷4ëšÂ‘‰ò$ð7ºÔMßÍñ Q»¦þóŒ¿,êTª6ž—!y+ò­ïy"+z†2¥£¸’£«¾n”¹¦Õc^Ç# âG õ€ÙHb#Õ%£,bCĬäò8€Y@. 3d§Û-’¶ó(kß^K¸Þ Ü.¥g*Óøiäòÿé _W!ýíøë_óówýÍTo4#ŤÑÑ~
-äÿºÐ?¶æ€ÊT´«ù£hýãÙ¥ß#Wþüãß–—rwu$W…þ ê8ÐOfRæXÏu j ©ÀßH¾q¢ì¶Ñê1ïÉ/(šJ,yÍÑð4!üºÊkb‚6ÙTËçf!aë{÷ôÎÚ16éã*+¡íÌdˆî룪b1"ä6F} éQ²då1¦‰®D’>@âÕjEÈÎÜJ}*Ó]<Ä“É_T5Ÿ‰ç×íŽjè‹EWQžËVK¤ 1‡uµ:^êìEw•S"Ö< ÃÜBï½] ‘NA°×Ùïx]7c·K/œ>vû*¶LÖ©™Ü:HrÙ¼lKM°éüÚœ±Æ·0[ÉVd¬JÝTº6W©»EŒª‚¥d•isO3ä“[µ¥âGF›:z}-ÓÒŸÔ®“_"vÓ5 IȈ6Œ˜-Œ˜½:]ò^h”Ù#tœ«ïûDß é{ÞOR‡
-  b‚<ÈîS_5Ïhš€û—H>ºë“õ4UÓr&š&CdÍ›œ[Ý"/;Òÿ¸ßm9õ¢™™ª2-GMX¼ ÐClüþªï‰ÐD ;KÀ°w êö´äB<bÜÂB&Nï Žœv*¯ûÕ4¹‰vnû±ÓkÒøvüº)¶xx|°Š-U:m&Nà¯MèXŒHXk¨;A1ÑÂcÐ2*p·ðýZvšS=ŒJõ »Õî:;ȶ;Ì-°Ñ"R´î,LzÕp'¬û8 Ìû9¹¥1›ƒSº¼IžÕÚJ„}ó1±µœuž¦é]¥)K¹Ú¶iÝc’^Nš’èv}àAØÐŒCÔÕ}øã5#Ò.¨»*ÿBG"öØeèÞßb
-ð|«—Ö^¬Zœ t\½Èy;í±&êÊÉägŽ Òg7=.òârAJÿ:£ì•O«z>—•5!åuÅxܺÑ-Æv%xóé’+•d¯¸€<§0
-Ý'÷éúY5¹îQNÀš1;Þgž· ,L2åÖ…\úJ@ÓH‘‘zM¼Ë X*SW™+›L¦o8bæ—nö‘$›Éçd1ØY× \/ÒêÅþ®Ñ°jøõÙö‘®/¿¦M¬?›üÆA~¼–õÇ_>ùíÓÇ/Ÿþüã÷ÏÿyûIÐwo„¹qÚ÷o?þóËçOüëí»_ýåãÇ¿þý?¿üÎØïßþ¦‘?ëŸ ëo×MpEQõN2»6©L‡AÓ§
-(›VHN)‡ÚÊÈZáÝŸqiYÙ"¡?ö¢Ð86ròDû8;^DÆâóèÓë
-6¯¬Žl¢ M$·"ŸZ¡wÕ,‹Çx…L9*ù£ºŠíq!c˜HZ@½§Ÿˆ™$Šgf‰²ï<äA©
-í~QnRX\¢ÄDZÇ®•d7´)V—4§2Hˆ\7%U9±AzÇY‘L˜Å‡Ä¸¤³°Ã뾤Ð1 ZPóf`
-ï0?­€eá^ÔBô×Dù«œ8z®¿Q-€¹¹9&Ú5 Y¯2úÜ¿Fü¶®²¨Ú!kÕ{a{£?‘§„2æCñ\^ÈAì$Ö±a¾#þ¢¼—\V|5ñ²fÊC”Ã[áa\<»¿[PU‚ä;Pk4TˆÖc¹íûi!~N)Tmµuï
-I˜‚=©Øoiúa;9…B%Pz´ÓȤj„Ìw-—,9"wûøBUÁá~F½iGªmWä é¥T»ë¾XyZY£í#oþ@us¨ðæb7MÉq1ëº.ÀûE¹yÔÈ ¨3ˆÎ}Æ£lB»‹à!"‡å]È÷¹þX;ÙIHy^„tS÷%²`CzóØ~‘b¯õlã³ÕŠÝÇvê
-˧.á€Õ®i|œù¸»×¸¸ÑJµ"Kпô‘òDÔ<<V»yÎË£yŽ¶O½BÔ³ÝTÀåË/H0ào6&SwdŽ
-NzâvÖCZ çzÁìz!™–@r^~žò>môû*‘éa
-‘¹P8Û1ƉsúâºiÆaë’-H^CPÚ‰u”CáACréúp  © <¬eg rjNÌ΢ûà0Ï|2h¡òñÓãfCˆA0Ò ¶SFN;¯™ºöz…Ik?Ø¢XÓ E÷j,]? 3 rûêmbcijÎwµM=}Y¶¯XB L|‹@•.—épó»HQQSÓ©
-;’—%Åw©žÉXŸ…QBš¯Z|ÜjØ`õÇ`UºÑ‘e]î# ™d*#ø|õäC¯×í7TŸ®;!®[¸<¦t¾Ìkûx·<fK¢Á©èìÓ:u›œ¼£S(’ üºžá¡žªS²w*Ü™wo~MîLþÄîÏ­›ßŒ[hBó›䙢_Îe ±Äáñ5ÓO%ÔÉ
-tÌ«ÌSmÃ>/€pÐËÍ/pbò:¹±,Š_'s)~ãêÿ¯ÁÁ×]2±¸ªÉ Í—«ºâRŠŸn;ŸøXùÑ33ªFÔ/êàŒ’¨N£yPªÇi¶Ê­WÙU¿–ÀÅ°U¾ò}©FÀœøÝýÔœ€soNàŒù?³V™õ}m‘€+žYÍÿ©:Йt­Tˆ}—†Ÿ·ƒCÜMu‚?æ`2HAL„&äK'“”¦&˜“’ŸWFÙÍÉOíZï®eàwý›öÖoY™vì׬ÓÊ]©“¯œqÏåRÇp·<ù!Ýi“qÕŒ‘¤.^ðµÁs“)ÝZzÞ¼;Ž­£þ¨êŽ†%æu@µ{¼I%’ãá¹vÕ¤‹ÆεL¾’GK‚Y‚¯hu¼Aœ¦?5)Ѽ5Ò†V¹Î^[mÒzÉ '?™Çj\4ì ØõGcc`uþ0æýÜÆ
-`ëðª4 P$za [¿”Ü9ÍòÚa£ÖÞ+¨ëê%¬¾Ö—»êtGO‹%yF· QÚ±Å5S›o%=» ‰iî«™„µkäãÈæMoK « ŸiÝA‰D€fgt  tYøôüšKœicñ3--Í&ƒ³©îݵãªT¥LçLޢ͠ ê§kžšFó|EB³8sþÿKM²JöÐÓñI«"¢ÕïÉå'_¾sfôSiç@¿€F—0«i[
-¡+£YÁÀ–Eî
-}Bo
-kTE6ú"\$€TÖøԅѕ¹
-ºº>y}½ÿïÅþò?|*"¿¢D=û׋ÿP‹ý§“î¿|ëôÑþíÍ 4ÿÛõÕåÍ·ÿëêcvÌ¥%>y³?ýê'ö'ÿØ_¼{_¿ø¦o®nWQ ªþ ÿõâüæ}•=Þy”^y½¿>Û_Þ¨[ü]ºðÏé¿!\ztu¦ßt±|¾ûáé‹ùäùåyÁ÷…ï'¯®._#ÉngøÙþüg~ؽúÈ_RùåÙõçOïW9^ío‡ú2¸‡»qxŠÿÇ·»Ïøã†QþÁËOxøÐíà‡—Ão¿Ã9O¾Ù=ÂBJ*—¸I¬/h„9aÞáK@ï»NYåí.!ûçÉuä⋇¸Låë炇8çí »Ò HÄ¡A¦]ãø”2ÁÔœG—ÄrJ:Ž>#Zb,NÎY˜ ‡:@È_¦[dëdÏjat݈ ¡
-«²*ÔZuà³Ýۿɤ˜˜|Xž÷Õ˜\fA´A½ðcIàX=h¼êÆáå@²XLQŒbPSq-6®L­0A°Ô0ALhÌŽäv8ÏÅ2Ïd
-ih¥bö0Z *xöuÅ>Àâõ‡À=û
-¥7Ï®ZpaÈM"¸ĨžÖ`˜Œ`
-C+ì~žç¡Õ ‚g_W¬jüÿô½+}}òð325Œ $xH` 5dxÏÌE™ÞaŒÉ3ƒçÒ(J_Øw#¦s,(î‚ñݪb]‡Œ®Š5fX] B³TƱ¤¹\9Ú ¸ÇȬԅKÁ&´l²`j­:ðÀwö…G¢ ×AºRk„©½ŸöchU¬±ÉÀj¿
-5žR¯òræ6ÄsêÒÕ€M\7ؤÀ&ÔZuà{IW¶7.}çb»‰ÞÂJgq~n;—mç2°v.#U;—ÑÀv.^á£ëÎB™1ôRl4PØh«R]>8+M’Óîw§Ç8wB8(¼”‡¹Î€V5«Fªl4°Î‘m4Äî,fÒ¼äNª‚
-mUª±ëÀÕ9êµfJkŒÍ”Öl0SÚ€vJX§´‘ªSÚh`§´Æ؞ݲÁJU°Ñ@a£­J5vøà sçhŒÍs­jV3ŒT5Øh`£1¶g·l°Rl4PØh«R]>8ë¹gJ: mè'Í{:‚I“¥¶0Æâ⧖zp€fŸ»É_ÁŽz˜³†N¨TZ 6ÚªTcVï€ï:t­O• èåÊ$Œ–†‰X‹ ¬Ö*£~2CßúÔãe&R
-6QÝ`››TcVï€{:u­[•!èýJ%Œ¢†ŠX£ ¬0\F]e¦¾u«a&J%L°l»Á6 6©Æ¬Þߟªšý,˜8/}ý¯pSÔ
-ZÛFYÓ¬aV'˜æ¢î2eh]k*Ö„AkÛLÁ&¸la“jí:ðÁ}®_µdÍýZÜFSÓ¬UV˜î¢¾2uhýjJÖÄ@‹ÛDKÁ&²l³`“jí:ðAçi~œs> ‚€Çà:"˜¦Çóè:®c@Ë4 ¬¬ÄHUþb4°\çP±UcßSz;wûŽ(P–%É´„ÚÀJ¾T¥éårËæu¨â/»ž¾H'Ï/ÏŸ]þôþõéÍÍþú²€Ïöï..øÁ«ýíP_†ùánžâÿñíî3þ8¦7þÁËOxøÐíà‡—Ão¿Ã9O¾Ù”(«.‘­Ö?Îi8’\壻¬Ÿõ²Žv—¸ãçï)@7/×ÁÊØt‡äÙÇäë0^’‡7»C.kkR…£™,QªÝÜ¿‚ÛØÈ1¶gY#Kð­TUUU¦µéÀþ{ü½s«ˆ¹SAè†d´êª˜µÊ ê
-¸bÉ©; e‚T 6ÚªTc×ê–áY¨®uŽ Ï¥"s2¸ö:ZÕ ¬f©j°ÑÀ:‡£>¥ÜÅHö½s Øh °ÑV¥»|pûÊ–©²ƒÈ„o³e¥M¬V°Ë{vË
-d“¥3—ª¿Õ·öì#T1ßgKUð‹~½­+únÜ#&dßÕÜΕ«kZ©Ê/–_jíÙ-dVª‚
-mUª±ëÀEÿ'ëÕ²bÙq¿`þ¡7Ûà¦*ë½”/lÚØd$Œ1‚ü€ž…¬AøïY•Q•çÞ+y¡FîD×ÉÊÊGdä%8'ÙÎÈI»ÎÞ5Ÿg8«çÁÎœSBþì.oõ€ì¼=VÝ»îbð\…mº‹k)ÏCÂÍý¥>W-싧ô¯rð‰€³zbå<ðq½wÌX@ÿÐM{úWÛQ<l^Ô^®„ê@O¾>Dí¬Jwxú¿wìmha«á¥ôn—C/
-꿵HºÁôßÍ6°´ª\·ªÚ«7ðfpgÄ?Vè=8°óöXuϺ Àϯú#…}Lj?—yï¼tÛ‘ƒÏëÝzqâ䤸©“í.þGß»Lð’Õ û
-ØVݳnð&²õ¨aÖ#ÜÏýGá;GÝ‚àåà
-É.ìb~
-ÁÀƒc˜G‡9\ëþ¤oXùéáýÿ/A%Ï*1w†JeA@qTKF^­gÕµŸÈÔ‚X£¡¶ŒêÎÕªZ—QÃ67ä¾ÊA"–µb=‘s³8èÙ(bp•L™­š[Ž;™å4º¢ûþpNöíÓ
-î½ÿ|êÞŠ5R¢RáPªƒ_ ®:ô͵¡›ìÂzíX‰V ˜sÙü½»LØPv=Ú¾|58†`p×B0P¢µÅä/saŠ‡u€¢‘‡©Üìh¨¤D?ŒÁèwÖmÀ’©¡©æÙÆàh2¾à”Bilš¢ÇÒÁ³RM¥e‹0à]Á©¦´v¾8!ßÛekDh%Ú>¢ 7…SçKslÌS*‹XòÚ$ƒ[´K•ý½õ2ÆÓC–gúO­Ç9Õhf:¶Ðl½1zR ´É0Z”Uk‚QòrlÂð‡ßÏ&Z EH¼Üo~ ‚²qaEÅQ†QÉ{±T”<¶À`U’Çòö
-B—,oïî²Èå9ÅdAK¨ecZÀ¡WÂm±¢‚->
-¶6è’Ê9G^ ƒ-ÂI&O #l+
-6J
-]1›°$žm‘gÁ fyzè
-.ÌÄHRyV¶Ä”5` d’!+÷~½ØX@n1SA¼C4^okøO0%SW c˜àb €5Ú0aïËn,ÃÎæZyYoòôЯûxÝÓ¤ˆ…ì䜲AÊ‚{Š04Uê>!]be~¿)æGt_ë[NÆ­[#Ž½>à”?´%‡áhm—?X·\Øo€mÎ+ÜY”Õ‚`šµûzÆÊ$ö:´¡©Àg/íòB8äæb&Z¦‰º„ß½]>0C#¹{`Á°©T kRlËè‘—a€±rŒÌ†aÇV¬T†®ƒÙVêb)£®i…ý}ç×iÔè®â”N¸âžÛ샊ÿæ§Ï^ìþþúóü@s8,‡S®¼ ?á©BÌ9Y¤,L•7¶ÀÎD![Õ!ˆü>¶È µÁïƒô´nŠ¶ê÷­&Vá=
-–­ e K5[6Z¶O8KrUx6òûY)–ÊG…|8½™Æ@i›:6!IˆV©&N,è‹D^Ão‚Ô¯Åâw—~.‘±Ê‹W8̦¤‘öýv0r_ - s5¬mŠ‚Þ’aVæSÔŠYß«À&uÂìà÷S ™¯¡Øõ¨ŸóyOÜA¡OûÏ€ëQ"Œ@¨Ì€Œ<îÀRbßvm]Ñ°$+![MöÖ)–8_³¬–ý9ja'`d;YÂ,&ÚäçµVw½½ª$ |6ÏÈbÀ*C2ô ›ÌpiUBµï±Ïnÿ3k¥>e`ePÕ·¹k
-PW–a-vz´u‹T3É¢'+“]’eKFßœ[ÇR'
-Ý·ÑÈ­|ÕNRdÅ—¼ÁPCt |Çwu¦£b”³ŽLÍ‚È°·­4</(R®â
-¾ŠÕF®áÄnG0 ilvä2&’S­Kö Œø«´»P§¾Ø× çÁ‘Ýt8¼N\¦Ú˜jXí”pC–NуyÊK ¹í.b
-êLÛPš^Ö
-tPá|-fLª‹Ò`äà ¬%¿W†ÖüAR1…ƒuŽ>t
-a/3g&a‡h½­aI¡WíOÂs4N«}YÁ0uŠ *ËÃGˆ¶5Áa$‰£$EŸ.Jld è™U;î7tÿ»{+&vo§£¼Ø½ªªJút€PBeÇÐRžƒ–ö¸þü$Ü+…hQ!ìñ(o€­ÑüöIó§¯:÷‚‚>n.•0» ‰­æQùÔøÊDæ$?Ý]-ìP¶ÍÙ£¡‡¯ržz2!3Õ Ü2K0-ºÂkMDʳãƒqñ ùÎXÝΩü¯ƒ{N,ýÕ“t’ñî’ç°ñ÷Žƒ­Çd>
-ÆKìFõ†EÌŽ[‹Ò»wÐW$àLÐë©K±L–^Y\˜'®•ƒüî+ŸÁî½ö#–òÛÁúKÑØEbþ@bÆÑ9¼Ï²Ê:9‡Áõ¥ZKO#hF§·“láûµd÷„çØÒ­ùS‚`^U)%k!•éŒ»|êÅ¢™þ…êgÿü2€xúi±}~ põñ×{[¥ÌS—€”ÛÃH9rÜ5f8½¸¤È½&MÀš˜ pÎÍA)Ug9cŽÊ,™ 0oöIø¨™2}N‚äüû²±¦,9¨Ç|ë`ÿ´Ñ=J€ª“e„é2¸ÖPáŒ=€é¦Ñê¸w$\¸8;9z¨OÇÚàö4 XšYm>âpj˜&äk“ö
-wX–Jîýe;‹ä™–Ñ•î‡õrm|€òF:=‰­É¹S"÷œ‹b°ŸIÕÝvo%¨wÛå:oàmTÝðº…8Àˆï£*!òÀÝ_Ci¸`®šKš <CºÞöuêó-¹Ñ¿µFM”cgTc¦°ù®#Ù æ¶ÕÃBž´lmÒ ¬Ï
-áRî×>ç_ kùôÅrãYÝŽ•íHvñ u+;ò¼1ªÞí0Ùx 8
-–n!E€­•÷9 HM=wÀ.XÅ̓ÁÚ΃©\[Yñ.J
-bEÛ)Ö¨O–=ÌûÛoü~o›ZÝ{¿LTy¼bD­aÓýX½QíΦE°ƒëµø25€\c°ëq7…í‘ ëNÛç`<kÉ`P(qž\ ²¬êÊ—5
-¦ËžëÂøÁ”kÓÆCaÚ¥kL{vKžu t]]køåyá”
-|ò 0µÊ­».ã©Öbed™Äf°·Õé<ÂÿØ®–+bÖ’ øC=Û+ b&ûö‹Á ’8í¹Áäj{ʸkÑ…›Ñœ1R¬Nrch2š†N³†·Ìë–_ï§4¶°]‡ã$} À%tˆ ’\â$£Š;”­ð–npóJðpÚ®wDä{ôy±€7™rãaâ|‡)²JpÍä«@ç§!Ð$Eèoðqn¶^ˆ (’°’RÀ:H•ï´Íi#Ÿ!"EèZ(æÕ^?ÇWÅÚ3cå\Ì*1ïLP~â¾äà7€÷™uË䵚Öoá:±Š´d
-±nch O¾BÔ#AKÿ;üW€
-H‰|WKŽ$» <ïÐpA~×ÞöÚ€ï“I³æ=Ë¢©H‰¢‚ÁÏ=¢?ÿ¤så£NþCwùg íŸý£`¾º¶û>kF·b×^ à»
-YéâTv iÑ‹’cÙCëÊC÷ÿ­¹OF‘•·!Á¸–º—n^×6/I")³\èHJÎéP¶=åºé‘Ê»•yáÙëE¬ï®•ø|}ÿÆ¥ØnP㦰žå€Öëy&)Ñ÷(ì§OYßÈ‹*QÇê>ŽWp°~ŸÎ
-¿p_M«»×S”2x/7å×™ÞZNù÷þÒvE]Ð'îbC2†5^€<Þ`ˆÖ†—¯mìÖ_^aÆ!H­)4?ðx¼d2¼6U¸îlA&(âtÇÓ| –?‹‘ëÌðç*dÄ
-‰âru}6%Èë}Ë%÷Š&õ4H¬¸îlCnnª7Ö«Ý>غG;–çÁ‰ö®äKHŸ§ gÚ_eX±ûàÅGó> ¼Ø›ŠSë“öÀ­x±~£Ç+xe¡ŽÞ°¬Q <ùj\ææ Æ2‡â{ öBed þÖi]xõaŽ úÙ©»ÕÏ"+ɯN?‹:¶Œ°<tœ¡ôç«ûcùkÖçÂ
-$Å“í®“–Àå«“€À#ÐBGèAߌþ¥?Ü—0"¸Ù¬‘í8áOƒº w7¦ûEgÓ¬‡}ùºÄøyŒ‚j0LzÁ}×öq/Ò×’ç6…ÿ‰ÒLáIþ´EÉ (n‹‚hpg_iá¿öž–¼®Øí õÿÓ%k{„“Ë Ïдë-óráˆëóiMàΚdû—ù‘4b¿ ó½xÉÔ&Á«_Ô *…Þg.K`l¾oiäÅýö浪¶#™ÄÜ_ énCû¤³hײuïpJ¶8üˆÂ»Èæ„e¤Ý:ä Ý‹Öh
- œ²Íá)DË&Œ-»œàݨÍTæ"¸!u`Äðb(C­2 ÷øí,pFT¾Ô@ kA¶ŒA¶¥sRóî
-è´ ÊHÝ])Kà‚Þ0}'žyÇò†l>³]Šò;þµ><Pß
-«í9W´ZL:Ü·`5¦iˆž£€o̯Eð;*nçN—¦ðmL ‘ЇbÇ OÛ—7¨ ãÒ5˜0 ýÞÖ±–b'‘nƒâÓÒRx‹ œbVŒšzbïè•vhÐÇÇÖúû¥yázvø?"÷Ï5h¸˜ 9‡J >͉fz)^JóÓë'¯˜¸ä"±é‡4m2`¸œ!Ê›2´X +áÈ,ŒÒ×Û¤—:Uº(í]Åj_á¢f:ã*.•èM ê$ðfüg÷H»!fm–7Ô˜sê£GÂQ<ýýԉ߆íØ_ &úœ¬­Æ&”¬f¯(^¯9¢?W#¬­jm£Z‰í%l6f¾Zð%<Ð[ï3C»Oç¨ZR lxÓRõ:wPC’xókÙcC‚ºgò™Ï¼ìûü6¼iA6ò(2†¤{6¾õ8·>ô=`;°ýžºioy†zöZºk4ï0U²¦$ãhø>ŠÇÕ¼‡‡ý™!œrÆì„Ì8„;áÙG*jcY\„[¼^ç ߎ‹Ye×,ª(¦RT^\D:ánžÁ£X£#Íøµ¹Š+À§9¾Ž¯@ñ;“j>à¨jT}ÌAÍûÈãAyqñ¦Æ°‡©#„zc»ìPÔD•°>¼?BY »æ$ó7®<Ë•¶B§«ûú
-­ñ.¤½«:$RÃÿ$ÌäGÛ :µá6ø4šq¦öW«cj‰ñ=V8GP£€3€zI—ÃüÅxÐŒùf`ãwX·Ôv7¡£c9Íú˜ æK¨×ï¹Õ(ìÝ ³É×—@ðÌ¡ý-oð[ÆÆ^kÎÚHlqNXE{s4ƒ-ÖšÜ$!CjH §ÃÄ“õ!`Æw?Ú±z6Æ9/
-0üãý«ÛIxF?¸mO[:¾2[_ƒ#_©¥PHy[ßSí²#‹§ç…
-Ј¦P†Rñ>¢
-ËâŠG Jm€Pk& \!OX«LfÎè¶Ò8¨!Ϥ¤`gú¹Ü¤‚Æ¢Ç÷ «%P±*`Æ,ld=Ä*¤CÅ0•¸±Êr §
- N3:ò_su[3DJ"˜œ(Ûq ›Ü!ž‡9áxRÒ86‡9-SXÁDèçà * ÈäÓõŽ ÷y.ödÇëàGȬ_uFÅ’8m-fT%oÉ¡:¸¥ƒ-b–ñ,R°ºŒQ$› T¾%Ü‹GY¸cD#³ö6¸èzÔ@{]Ij½¤7"
-£úeðÊeë½6U Ã+gNM•eM¢Éb ù@Ê°Öõ"l,(8±T‰¿¢¹
-™–8Û×ØãòŽ÷‹áB…­ÀS}¹'e"è*æLïä7µØtP
-ÜL©V`
-{®‹ç<0
- '%„Ëpà²bôƒ®\Yꓺƒ¹i'%{ZE¾/½s9Œz’˘”¦$Ý-Á÷¥ÑËÓ‰d)¥êõcÛä±ËP1–µh)°¯u«®]BIØÔM÷P;ÏŠm¤ª ¥¨Ù"…ÞtbKIMo¹k¾ô<”á€6¨£ÜŠoÚÂN3æ•È4Œ£j_šºe$[õqê®q =ñáÀ5œU¬=sZE¦‹©½yZ´O}Ç
-™š3 †2(I-y›³
-&…mån*À°Á6ID[´¢è=m&
-º¨ˆiÔ¸˜[|æH
-}"g¥ ´øw  ÍCL„'ð•â6¤6ÄÒ0ΪìºÂQ0DiQ
-zˆöÎ@¯ŽöÂæ7@6óP÷³;`éÔµ'\Í£òPÅÔ×ïÒ`¼$–i(0+ eÐ]óá<´-î
-¤5b”fnà2S°`’†:ø@ÀžbúÕÖa‚¾*s`Nkí;_“¼EÌçÀ\+ü00tzˆs…YL€Uht–€çñ~¶×/̼ß`ôMÃAàdNX0Ï
-Ø®€_Zí
-Ø®€¡¯€½v¬ÛëJ»†¶ÆŠoWÜI®Û°ÝÃÒ¿vlwÀ&í€ý¦l6$Á/G#¶db–H>?Àî3ÜiиÉ‚è ¬H;[p#²„4ÅÀ „6Ñ„-9Ù\ÈÂa—ƒœÃÍE^1½¾ÃÆçÉ!LI®5'騒1Dƒ —]„Ï°ÈÇÃAp[ùð6½º¨É8ÖÌTwF}»ÿ~KX¿¾ïuáy“1š ¢~]e2e)ž›×îm“-äX¦Ú¯€<:‡¹Š e3J¼Î¾r'6洸ߕBªÿ?'ÜTܽì”Ö6 »Ó­Þ˦îóŠîq"ö¡èìE¿[üA_È'ø]|òÝ‹ž n³|¸¬‹¡
-n}W­È{ÉSóûF/q;r–‹Ìö3ñ÷½v×ÏYêXè²<“¹¢ìFd Á‘úL}PU/ýÈ"3¦ˆ‘S¶t xÃô,Ò0–‹LêJ¢&À»ÄÞ9O>{Od4HEîÊ ½×Ô§+äÊÛ ™*’%œ6ezZ›Ð''QÜ$ fðÕi‚
-nÞ“Â ·#´z„V#„2}ekfF"¯¨ÁoOù¼eê‘mÞdý,‘m«58%织ß;pa,û—w®¸œý1}· H@.Ýÿ uº†ËtíaÀÉùŸŒš‘ÌÓ¨¸ÚH®P¬]2‹£FÀ'1ÎQ/†pÎ*ÞB iåäæ·‡±”b¤ûTÑÑ%¹Œ~ür–u2ò±¯ôð^zæ‘IàÜìO»'²P‡„ñÇ7Œ‡ãÈ4 E,{?Wì0%ûL"žãzr8îi5½YBš²˜F\ª5 ž;œ¢¯^ÞBÚj>Xs‘O‹,U–H!a¯ÎÚÒ@uk5-xM›7MÓ` VÓ\¬·h6"|»|¬·xY.eó^ã:&ªKËßDZfð›§Ý-2x—tq36'š½S쯜¥±Qî›7›5‘!
-”æ‹{jÈ’áºâ,•3à MP>½=ý‘ À“˜€‹ÑZÁ“ÄŠu"î$×𺰠©Ÿäi2}ÌÕ<…fÁ7g:Ý  Y’¦L̘`Ôf{è¼
-–BJÞ[ûÓ!ØÀm“…§GOPú>Xà*«‹C‰ê²(M¸Î¡lÁRsK²úͤnçðÕyõØ;yDS·}ÂßáxÈźè '0Qè~|AŠ_µj¢K!Õ-€¢ìYXàÍ[7m¢ [r²¹îHO‚ÜëÀ°qÊÁ…Ò}pÍÆJ.à·°;ì<£x_¹>üÝöú à‹(礩L+.["¤4_ä‚ ¼Rˆs6Ŷ>Æ‹"nøÒîs€s4"žÉºÂŸ©!ÊJIwçsÁJj$89Q®`”íYç,]˜eÎ-¼Õþ´sÁSF*^ú‘‰Ao‹ŸÀXÇ
-“Y¢*‡8'KåÌpC”OoOäÂð$&àj´Öpçv˜u"î$×°)Þ£«åþ“<ͦ¹šç¢- gÊ|ºA²'$M™˜1Á¨‘°óþB óü€B®¾òu sHx¯Ð”¼·ö§C¶°' !O+Žž ô}°\5Í"áDuY•&\g‚P¶`©¹%YýfR·søÚëýÓ#šºínüÇC.ÆÐEoÐ8¡€‰B÷ã RüªUøX
-©n¼eÏ¢Ào~غiMØ’“Í…pGzä^†S6˜¨.hJr­9IG"‡w¸ozíÁhžJ[ ñ”Ê[¦Ùæ ÖOÐçm2ÂIisqÆ{ø½†Á:9aqçú‡ËÙÓwÛÀ€äûæ·‡ Ä°|ÜŒäï4‹Cy 0¼"Ï5î°öÇ;¬™ÌeSE²„Ó¦¸üh[©(̘"FÂmZ
-ð'±ReI±R>®[}ûÎúöß·¬o0|«o­¾µúV+}ûU?hí[+o¡ËÛj«n­ºÙ«[kÞZukÕ­U·¦©Û”äZs’ŽD®oYä`xm¢ [r²¹Ü>§AÞZ¨œî¶‰ÎÒD¿¼å&‚áÛ&j›¨T7ÃngØEkg‡ýáF³áÜ–ÉùŸŒš‘ÌÓ¨¸âH®ì0‹£ÆtãµÂ÷|ÅÄ{AÖ½·¬ƒ<XÌ‹4À†\±Œ3Á¥á<Ó` ñ>öÝ
-¼}ÂÌá¸Y\È*•;ñhÂÆœ ok IùÂb6ýË{wœ™Ìe7"Kì(qµð"¿  § /ˆtän.ªFÏÉèÍ…ÕäÝši»Î€Ån5gƒ˜MI®5'騒-DU°ÊHàr°S¸©"YÂ)Õ· ê{ÀªzíG™1EŒÄë1À9•‹LjnØ}^!\ßAæ<IÃøÀX?]è¡9yÂÛçÉG÷ta2¤"wež5¹ÚŸü[€
-H‰ì—ÑR¹†Ÿ ïà›­
-UKl“MÅW(ª¤ŽsrÎ%K=%iV£ÁxŸ~å1Æ3„ g-ßl%D½è›nýýÿŠÁØh.§×w™ŠÁáâ?’dpÐùýÕ óúûÛźÿ»üteÿ¡óñUwÄ©áJ=·¬ ‰±ÿ§Ii ¨*N´&NД ¦A.þý¨Ó½¦ùkÍ<¯~íkª²\ÜÀui:ÝÿHNÕÓ7½%¢\ÖpùüÉ—˜ÆªÔNDž<Ò‘ÓQ(¢¹I30œb™Tš¥Ñ`남cØÇj(Já˜ÚÞêøï/gè?ÃÐé>ÛNWØ+ÿ_møié6´Ö[b"µôôßÒÍÝ#î¸0€Öšî’ÎàUwüõü¬*lÑÀ÷:Ç=ì .±ÿ½øµÈy­U—Y5ùÔ U)™½âPÝùaÚ£Æô¾&8êÉÅÍg~â³ óÇr¯é;xzÐë‚Ãp‚Ó–yæ’AÂ¥sïÔkÄŒJ¼u¨Uï4ò ®ñ~÷U€D|TS*‰n ¡´ÌJAðV£QœÍŽ Ç7üÖî¡ ¼o32G¦õ¨†h/O»<œ«ßCC1!aQ$Ï2©‡7½?œGp ÄñÑ×L”z©ð¶Vœ¬2gƒ£^ç¨7ð2jÕŸðæeu<‚fÊ¥l _&| ™ˆ–•ˆä™Ç>zæ»nÈX•šÂ‰ÈS²±ôé,HaØn9Y\Ô,
-7®uÓX·¥ðÚ¶ÕñV3U9|È$³9Hàœ”EÁ‰:ÙÚ¨
-}¿Û•‰ß¯šàÃ6!Ô Ë'ø45öß©
-ïó—…÷¯h÷Ê“¤,àTIkµ%^,~¨ ï•Ð2_êÄÆ/¿!mµ[[¾ïGe׶–'ÖW[¶— .¹ËÿÖ{œ1#üj¬WDÈ›ø%P‹« \UHÎGUÁY¥’è.Jˬ¹§Q!|æÂj:1n¸+­Öá
-‚£1#óÂCb Ñ^»<ÞÇ£¡˜‡š°(:ÒC³L`ê±ÕïOGÐE ­‡ÖIÑKû4Öº RHL5€X/»ãøT n¹`Ø@i"§h1©þäè}u<‚FfÊ%yµœË…@3-cŒÍO.Þæâ®CÌ%Ï<Õ3ß=´~è¡Ö_<+MŠßW«óÁ§ì=š „ýËâ:hªZE¤YK`Äí”æÓÂ8âGnCW©bʧ{»…à;+EÔzKý¯»ÜºX‰÷7?†7:豺쩒ÕyS® #l†Åô ]5ÈÇe+º‘¥Nl[Ÿƒ7EÍ¢àtÖ ¡ Ÿ‡ƒb_Wïáºt¼¡Fp*…WnªŽcöP[äÖ]H¸ä.¯Tÿ(93òˆ_µŠ¡¯+5kµºÀUE5Xͪà¬Òn34!¥efŸÞ#7J"¬’\X!Dã1Æ w%›:ÜCAp4"fdîÈŠ M2D{‰Òò|„Õˆ†bj¢èHÍ2©Ç*¼?A%´ZûA/íOÐXë‚àdv£ñ©L5€ÌA5Xƒ[®˜5¥¥‰œ¢Å¤ú“£ÿ5öÕñ™)—äÕ²"Í´<Œ16HµDòÌcQµ(Ë~@Ç<òÏJ“â÷Õê|ð){faÿ²¸šªVÇ)¢ÃŽ#ØÖËöpq»ý¥ùäf«¿Ÿ\e|Ÿ¿>Ý;òí{Î/HN Š «RS8yJðHGLGQ
-¾«½¿ã_Ï÷òò.FüDƒ8NÖAú­îÈ[<ÈÛhËæ\“<åtW6(ãIRèÔÕþíI47iߢmÚ¢‚›Ï„Ëý
-mß
-Å ö~…¶ ¤å+?Z-_¡¾òÕöíù‚P³ß íØ è7õ+¯P7B[¶¯w[½¥%R;/AOañ!ñíÜÜ=âÞ héŽ é ^uÇ_ÏϪ «š|j†ª”Ì Õvh—ŸÀ5zz5Áåöäâfœ¦f7ø—Éž…ú“d¸'Ù–ŽU©)œˆ<%»â}6f R6‚[NB#5‹‚ÃMDéPší5ç¤,
-NäÐɈò;ãÈœkPæPÕZKGƒdŽ™·ü­´]ÔT’`/Có’ëmSëŠô—Ê/o¶4géÎ5ÉSN÷}Ù‡¸¶‡¸ÃþñoØ9Åoð üŠ£>MÃûÇöñäâfœ¦f7è ÆÙÁÓϳ.“,Kÿ]Ý•g&Ewæþtx¢·x¢ø4Å;ÇÕqÌ2k‹V.—ûf-W`¤÷X°Ür²¸©YÔêH·mÁ眔EÁ‰:Ûh“?`ÛÂðë‹ÅØ_x¼yb1Ü“Ï[i»¨©$)À,^†æ%×Û¦×é?ðþ·g ¿¼¹Þc©©U¼]|ÑíÓõ¥C:×$O9Ý÷eƒ÷ˆ{.  mGwIgðª;þz~V¶IM&߀š¡*%³Cå°?=j
-ôô6j‚oÅ“‹›±±Vÿ.ÙÁÓƒPl»"íïŠÉé½9Æ¢LHgþ,AR¼ }Tmܵ&ê÷°D²Ì®©!·€—zIp2©Æ†šbùŠêô.<
-»E=.ÒÏæaÈ%ÞË3>V¥¦p"ò”à‘ô ¦£P®¾fQ9hb^cבo§*ËUáÌ ›~À\@·î’ÎàUwüõü¬*lQ
-¢[æø5¢»'7ë5xó­ÀìàéçYW^§ßÃwfÆ™IÑݹ?Ýj¢ø4Å'©ÕqÌ"iV¾éc?Ç„p¦áÏÒ7^9Uo¸±ïK¨¡(¾á«ãÁ™>`d™]SCn¿ê%ÁÁ¤n¨CFÖ|Euú €š(ãˆIIkÆe)nõ{"YÙm΀>B±Oûø?}
-ܧÀ}
-ÜÁˆö×ûØJ¢_"¾Û‡Àm è–íC`ÛB`¢‰ýºâJñb÷1p÷1p73-‡ý}ܺ èÓ´ÖGÁÿ*Ŧšàe«½9ðxçr Ñ/—~á\“<åtWL:'†à–“Å…<‚D½(8ÜD”Ž5½}ÁÖ‡©ÒJä𱈶EÁ‰:ÙÚ˜‰ÐOˆá·1‹±Žñ x/Èb˜A¯7ÒrVIR€Y¼ Ì+¬n‹¢- wMÓ®TmT³DXG~H•PúãDú}ÐYþHå„r3ÿØ{ãáæ<ÌBu:øüU¬»ö¨¼ ¶åM-qûž”_/vvqyävÍõí×,*MŒ««5 uÁul[Ä®H S³Ó]”¼S•åªà½FÛ#{}¿1Sâa5Án–:;²Æ|šû=P#|\Ý?Æ“¤,ì¨Ê‰׋ê‚#£l©BÁoF›E³_v=mÃPþ+üP¿¶{(ko€N+švë&ÎbÕ‰ƒ?Û¯_Rš$ŸDرӈ›¶ÊÁy|Žß÷µs¸]©øCIõ¨ ͸ZbY0-oÌb>‹è/É”LÁ[ñö¼óö~@™0-¿è×S5*œsUÖdóáE­[RÙІƒ§-K¯RéÂ]Ì~àÉŽEüÛKÁrÜ"=¼/ô7!ÞµuDz_8fÝ1žq<ˆ2¢OƒczÓ“­ô4†'kái[KD¸é©ƒÈù®Û[¦x„¯i‘"8’áŠqÂ4ëÊ´éGV`Žd‹Dt,8s‹µ"K–Ls­Ú
-çÑ0ÕUÎß)Z.n˜·OðO×|[ÈU¶‰$zÖ‹©š%ÎÉr¶•DF)”OTO?Úð¤Æ9aÂQ¹»ôžË×b Þa¥žŒzê|TùéŤþûèÓÛ/жUŸàsyx<
-œS-YVè~é‹ÒPåA32A$øÂàBtiï"1½džx³eM ÷H…Àç»zæ~%˜¯3Y9_ú<»˜@wC¢Å?õWÞ’“ç=¯VãUUP®z‰ž´e¥òè‡CQù'À
-H‰ìWmoÛ8þúü -N
-ß%Þ~ŠÓm±·iwÑlö†k«Yl9Pì¾üû›RmYŽãK7YàZĤ†äp^žÎL?®–åÝKö·äô¬®GßØß“Ø‹¯óYµ˜”éøélR—®KvúSµl×ðgùí¶ÄµYÎ8{ÉN¯ªéè—ËzZÝlîý<š­üæåèã¬ü?ïö©Fs:mœa¯ß]¼‡ îéëéx9]T£zKøÑX>ŽztûÁêÑ©Cõ
-W-·Ø#7;Ý/é§òͪ¿=TØ=fÿ“ý‘ Æÿ¶¿$Ú‡£í»Èp¾˜ß.ª²ZþVª»Oeý×C?ªp ’¿™ÖÃdZ ’iõ˜¿\¬êqù¶Ýþ1®”|€Vò ÔºÏì­.‹Û²-Ã1:ð§k…
-z>pw\µ zÅ7 9…w®÷ðV![­@MmŒUfhìÆ>06Ï[¢;Œ’­Ï“5©qÇ‘´#+Œ¤cÊX"p ˆA‚Dß8F|/ð®Lqc‰ËœÓ6&)ÄšÖèÜ"wL‰LåtÏÁ(ÖHhäQRJqM©]¡´çàõ&#šEÁy7
-l!r¼)G¯a
-Ä£pNJ$ØaøKd ˜Q± M:O>%W %¯IbÙ‹—ìúŸÉÉpWªê‘É
-NîHWH=.ayIŽIYxò˜¤[$J['Ãnâ:>8u J^pì˜ôu2Ü‘À<ñÁ)ŒŽm'1 vÓØÉð¨DǺ©Œx=<™½ŽIg'Ã#€æ¨”æá}DRóuLZƒ“;RHmàÿ‡&·“a7½»: îdxLŠ;VP½¾8«sÒRŽ ÅwN905q¾ƒšŽ˜Ñ
-¸ÔiEÑy
-ÜK†G›ê‹Õ1ª/bv)a¼Æ+̆G—º/^TO¼¨û⥣÷Ø’BÒ#Š¯‡Ç¢7éNtá±O¶öoÉ/I|ªn M<ü>"¤xOTðž¨à=Q±CzCÒ’ÞÛÜÿ>–x_8ðžpà}áБžòÏ< éǬÔ ä¦GÀŽ»ÖELGfÿ¶õ‰¾%?bÇR ¡F…ßÇÃΦôzKú.ò7¥×{¥7$½¯!½ÍýïcaçûYþjÝP¼Zœ¯©¦wR
-Q4ð— '…êËnż/·æÍ£ÞDʺ¾œnôÊÌ›w¥yeD3ȦQìì–®Öl]Ôc á›*ìçÛ…}(÷{ì›ï¯×·²²È7kMë1±]TPYÚÝ*yîKÛønW=\E^l8êû¶²Xœ Þü(
-«g×ÐÖ‹ÛÉâKÕígW_Ž òþe³?Œ;S½nL ËœÝ$.sÎA» žà\;€Ú6åbMIm¦iò_ö«®·mc‰ú¹€ÿ_ $iMs—är™ ²|úBI´A àÄJª9…óÇû˜;³»óARJœ8¸è"ˆ<äÎΜݙ=£ Ÿ›Ú5UæsW×°t»mzÇÑŒa×â2ƒIÆ`'ã@4À”{|­Û‚8±E˜¸ù)ˆMÑtmz‡}"`¼Mž·l†‚#„¢'«}ÊÆ°s×nÙ{X´›¢iÝýlï7ØZ‹·Ù½ýýÑë××çÏ–«°GÔþe„ô¼BHLQ·Ž!à.¾Óä.<`@<bH­¢`80° ÃEZ ^2ÏÔ;Y{2„ãl\²*1ÓÒx4ìû;h¼íÛŒ
-‚ŒR”ŽYç˜úÜl,‰¥®ˆø
-±q¥7¹+V ²-\*&,¨T%¾°e¨PUŽ7paC8¡VÚ-”ÕEîLáÕ(,š_:Óþ-f‚C±3Iª¢ßbC>ØPŠoofOÌöž.WÏf¯——§°X?…š¾qiúõx<:zœ–÷÷7ËËóø(9 øtùj6µSp÷·ÕÍÙl*Swr já)îû¹}³F¨
-ë' .Bƒ2ÕO×µÜOs©.„ E¿ün¨ö˪@³)7£N©)7KUÌÆÜ ƒê’«@©ªÀδ‹™Ú²;É·©ÿgékoŸ¾Ò @¡n+oÁqWB+
-§=S±˜Y¬žŸêPQ“=)Ñy‹öƒëàËè"ø_Ãÿ· tÅÎt²P 2|-¨‡¿ &úB¢'ÀÂ@c&*cg
-:£úR¥Ró«µhЯW;Ó;èéÇ-Ý^«9v¦‡a¿„ŽîÁó´å×)ŽÑ%õ¡oe£ëÕ2‹6ÿ0“þaÐuýúêjvù~v:I>/]©¼€-–‹¬µmØѬ¡a7 [ƒ˜šliàÂÖì'¹€Ë¶j ;øöS›sn×`‹æq«C+f¡Ï=ïb…i÷/â÷•w˜-&>!`5uQV‚MfMUé6‡Åñʶ‚ÑTÂlnpá&]¬lš*ãpQWM´] mž'@“m GrÄl\!Á…ñ®b‹ëúŒ&¯Jã*rÞÅ¢á6¯©õäÆÖ§![ç}Çëbs^‡ÛæRM©Œk„¼Œ½î`i“q^(vA-1yªV˜Ãár²­ZáWHånÏ+g: j,YAý­êRQaA¨š…u^ûVÓ5AÌE£h¤m
-½î
- þBdÃÌO¯èc7 ”€“q ¦¸Õ›ÚwøÓXÚÚ¹ñ”Iiûƒ¾êæ ¦œŒþàª-µUi\é4!
-5ÂdãÌ» « ¹ª« $U†ƒ¦*£
-cþ:†(ƉqAøcO…>Ž† ‰7ZÖ÷‰»KHÀ­ëR§¡^ jÍŠ‘ÊuªÑeaÍ\ ¡¥"Îó
-4”Ö@¢M fMCÛ¥Øyn¡Œ=Ê8
-‚$ÎhWß'Êì e*‚­;G††Bd^•Ê»“ÆyMY“Û²)5c è„F….÷ ×j±«Ä˜@̘†02¶K¡ÓÔBû'„q I”Ѭ¾O„ ¸ §-nàÖiÂ4€î˜ž(}çx0˜?U‡1œ¹ÔE]s¥bL‰1˜1 ahl—bç¹UZ’‡BGÁÃ8ÎdWÝ'ÊìÄS!Éø6µo´Â5_ù¤‚$jsÐ^Ý+}G’w2*‰4±›
- Êúìt´›¢Œ ÄOŠHqFÂIqFꊇ%ùÅvÓ½bŒ!LåÈibŹ§£xÇM†@„õ¹éˆ5– ’ôIç¬$X’?Š0RIŠ0’R<ŒÄ&@QÆp¦ æèir—ÉE˜) ILŠS
-q±aŠœ'ÂÈCá‹b Ä
-}ÁªºOdõyÑrL¸"„‚"CQ“Ò®H U¤˜!EE6é^xb„iRHˆ‡lR¼4«pDž Gä;!m²©îG}>´þŽ¡x<—ý/‰á( ¡ˆ$!$¡È$Ý EŒ0E
- áM
-7M* ‘_—ÂŽ5™T÷‰¡>Zp C„P8$T8ã’–†HðE¤‰xLÒLl3Ý EŒ0E
- ñMŠ—fU™–<ŽÈwCÑ’M¹Oõù@Ž<ß~¾½3Ý]®æ¯Wóåâäò&{ˆÐ““«wáªÈöö—˳ìÞÑâýìr5;½Ÿý¤áñÙüâb¾xÛƒæW'¯ÎèíãŸáßux>º€¯ÑQ==œŸÍÒÍþìí|ñìäj5»èÞýÌdÇÑ‘ƒÙûùëÙãË“›ìø)
-ðñ³íPN·]šôyà›þÓé¬Ü×á…µm 'WÅî‘{FèŸ@@9”ر¯d`Æ¥þ“ÑIBC›ª§NVì+ ¸Aæ
-Ê͹šÍ1Z6M•ÉpH´!$Ú3<[
-šÔ,+0ÀÆ™'v¢C2;Üa™ãÑ|š@Âò€¹O°Lh—e¦$JÝ—J4pÏWý,ÅôÆf°Ë2\·e£¶> +¦Y#³ šh"xæŠéÖ8rº[ã(8©qL
-Éɲh3¥Sž>/_%£„QØ$õˆÒƒ’QŽ’PR—„‘ú$»Ô–l2&ÈXŠ˜ì#4·d’|”LR„qìÙ®h3“S~>¯W%“„QÄ‘­‘’€’É,%‘$' #¹If©-‰dL)°0Ù%BòÔ’GòPò˱“0Ž<›mæqÊÎçªä‘0
-˜Äïñ¬ø$$ %‘¤y\Ö—l7·%‘Œ "–"&»ÄÍ]ííì£d’âàq;Ù-mfrÊÏq&¿{ ?'§÷»7W»›íÝêþSóýݯÆ×g§gÍéÃnÛœ¯>îÖ÷7¿¯Ÿ7'»û›»÷Í_àû`ôzûv}yz6\¾zûq}ÿËúúòïëO—c§ÏÇnð7ÓŽÌžúͳÑÉÓ3­.¼»¾ø´y»½Mmw9_¿¿¹Ëȳ¿n7ëç3ÕœÂß›_g³ï°õ~^Àß«”Ö¡7PPµ‹pØ+übäòÛ+j Êm (~³‚AzìÕ¼ù¿ÁË
-«þÄ–ýƒÿDÝGQ8ÏæóÓ««‡Íùv—Šª(¨-¤ 6<Õx]:í™zÄG}>èÁ=ÉÇo}¶¹‡¥lýáÓLÿ¡Óìÿ(Àow\o?¼þ0Ô—ÛéIMJø ŽjEGµ W°‡Z¨›ÔJ¯°¥ly5üÚŠ­]¯S£u
-aÐ**nâEe|íÓÀ·ÔOÜq0ŽM&áe1£·%»56 «Š©QÙȦ3šn9~ àÍÑE(õH@k‡de“ß’™ü
-·UïMŸœÕ A`°jˆf23ŠHJo9 •)JÓ8´I|äiÑö€{@]M#ÞEÙõ4e1ž2TÞF7ع¥H­ILö°U¢CW(ì9òõrÎû6z:Pð”ÖNclzðSÁát5p"ÕçÙ£VçO³ŠÚã1Ù!IÛH6Ç…ø’ ‘£Â5QM)¥”—…6É„Ì‘päëÅp9=á©s2!À°Å
-x¸³1±óÓ¤<fyþT˨7JZÊÛÌ&{o²/y鶼v§ûLîÀœ®…Ø­b ·"ÝG×_Bx©ÅHýp€p¬¸0w6Æ$ü¨åùS-ׄ•˜K‹¢5¸]ÆãºÖãê5Í-GÁ3JÇ<V§É\²Ígÿà®KßËÛøù]É$ Óe˜®2=Íù»còBÿ¯ä…í†Þ…&À„#ëϨ-@aî°<zL¾vÑåbÙé úèp­ôÊG\41·º}±_p^I‹e¡SÞÔÿØò]ÐÚÚÆ U:ݸzeA/›PÞ˜ùú‚,Ñ žA`K¥7,bXAVY|½)>.“ÐÛ'£cTCÞ÷:5ø>í£!ôé:vÙÈÓYÚ©íÔU(_ûñ´2`lN i%]­dê6á¦áñ&‹ pÆ–ÿgú†Þã5+Û„ ð+N™_9²Ü¤@Kà‡šÜ¹Ø÷z1}qk1“þÊP~ÉR î=Þ 5ˆ;ð&Ùq~(È’ÓwQ x ܆;Þ—nÉû #)©—î9­¢-Òq ›Ë½YRùÃ>eÚ¶j“ Töš'4¥9 <DsÉË­œŽš“7msï¶JÎ;;`šz§Îç4VùiÓ+eøÄr™U0h±o}ÓÓ¡qPƒA¯G¯"xóç«ÈçU=Χæ·,Ä-œ¤°ß,=XΛÁvux„A±é­·x‹R‹AX3
- QçjW×ÅÁ` ¶Ì
-÷‡Ce1c ‹gBH›|ÑK=,vãà„gßÃ^ìB:¦,öBÃJÒ0^„ êE/¨•aP¸cHÙ‚è£þË~Õö´­dá_ÿà/Õ‚´I<3Û£~"i»ºZn© ]]iµB!1%{C‚’ÐÞþû}ž3c;ÆJzÙ.¥`Ïñœ3gÎësLF ÚÓYʦˆí‰±B1™Âý½ÞžÆ8К ^¡x¦FÂ'Óe”Oéøb i*4l©x¶{º‚pçL„ÑÒeNÉ3Çu…Œ»=¿ÊrRŒ–ã‹Fqñ?;®.h]LqZ‰-Õ(@ ÈYĶb„ Å€<YÂ:­àYe}qQI‚Cˆ:eè4H4WÈrºaf¤è±#!‹s 4‹¤qÌ/´Q©QxÅÜ LŽ“s—S Ø¡«R¢C¾d&†Ê#ÉätN‚Ed
-È‚¦™Ã”MãD\P[Ô=*+b<â\¤¤hœ,âåÜ°ÎLBWì:é¤Á»Ÿ*?·>½:½¿t#þ>Ô‘¯N·xˆÄ‡û\m/ø?«í)ã+^¦å-á¯-Ö¢,v—OâqΫÓÚ=ßá\E ºÛ <—Þ”0TÄéÁYâ91Š±Ú²Ûåq,øÐß.5±#âM±)ò6¯£ª|Ù;˜/æ\*´0&î²lØžÊ3ç$Ìài#mÇÚXo
-N‡4Ç0²™„ón/IS=S@8Ñ°…;c˜ (•§Â'9ñÒ?áÄ@’3ƒÀÇÉLŨ
-f[:$­L ¥„)ôJ<)õÅŽ…FÕi9mØöãá#ÔÑ©1@äûQÿ`dþ9Ú ÆãëËãÅZPÅ¢H¢_ÛígÇP
-¸ð Ó™qˆÓY†¸à©­zŽXêbquECGËuRIa|³ãâhT/“˜‹c%x*Cбü9çb>3Žb‡&gTÂìË ¾v s¤ø¹Â°##.èÊ.÷”¡Ëžj3ɯŠÄ¶‚L8
-³Y£€ÒiÚ…5û °86ÂA‚äN©\I9Ü ¤¸RlK’ÒäsÕLT GRf´ `ÉÙÞ4‚ R õ¹¦u
-|âD²3"°$d´ ÀÍŠX@j1:)Åø£Ê5—WU“+Êi¹ÕQc¤·Ð±4™”óƒ‘[òNÒÒœ·8}í—0wP#‚šÈÌ=iµ4rè¸S®qzJ‡–Ì>ra4DaÖFêvì¡‚ UýMÌæ‚8JŠ¸(g¸U|mJ%‰E* ³l¹ï’Å7ËÚà¬)€—¹±bCÖ¨Xg“V1BýÁ‰Žx5 {;äçAÚj– ŠT+[òµ)¥$Šg±—6T«_‘˜Vºˈm´ŠÍd¬Å·$…
-ÞÍCv
-Íä
-ø‰Q’Ý$V†5m¬‰~;ØÞÔONÔˆVoË
-4TÕ¨ÄwY?*èŸ~$èNÕΪО¼ÿ¨ÛÜ’Èr#ŸÄáåæH5—¦µäÓ,1@’;Ì7‹Æ´æ<6N{Ä·Úài=êüxïdý ×êôÿ>_|Ërï`ömµþíd?꿇ÇÐtúè¤_ŠrK¸¸¼bè¿›ÎpQ2ÁéÓyä7xªïý°å¯À®ýLWS´[
-lK8YÆ¿?@Â`´šŽ7Ù—‹ß‹ûókù0;ZFHÜÄ ¸úb}\Œhk~ôÛ‚¢­pI'¡ü4€’l™@vq½Ž:ÑÞ†¶óב½îDý£åzË͆‹ùäzº¾Ï¥îÂË>ÀºwÚ‚²jK•!³ßÜ蟪—…‰Ä¿¥±Ë{¹ÆÄ€7Í{κEWÛñçvƒª¦A+ehθÄxŸVÅÛ/Åüh2¹§•wivÙ8'ïÅØAyl3%ø·—Z˜„`\ÁÜ“»DXÊüöƒ­r‡³b>y* ‰°'S}½šÿÖ‹túoÿ(Æ×ÔA>o«ÖÍóç]æ¾_‡~ôÝ.T½£óóU$§nçËïì¦
-ÞeáÙZ6Ž)3.–ób¹º»lÈÖ[ëÅ AU¸Óþ8à¸! –£Éôzu[j=yÉ õêÞü,t»Â³?AÙy¬%^êÈýëHâ\úRH^
-ÉK!y)$ß[H²—Qè?ìWÉRÛ@ýáe¶ž%7–"É!r‘T®„-"l—%àëÓ=’HdÁ á%:P¤ÑHýúõë~½ê­Po…ÞWyœèt‚y»ðt4Eíªtµ4·¼]‹¶­dÚÕÖyÛ­,kgHƒ¹²Êè†\3cU¡Ð`-.¬ÕÂÀZÄygèµC1­Òe:oŸTø{»LáýÖFi_8èAΗâÏC.GHïYt•Ì³&j·>—ýåÅϯؘºj:;0ᾉ~d]ELìf¬}5nH5Ò`äaÊáðÂ0«ÿYåTŽ‰G¿f>‹vv2¿¿¿ ¾EÙïå½Ìï+¬GcG;‰£|D8¿¬—±P9°U/,íeÿ‘
-¹^…zÚª™`”Ä
--{%©+I§ãÌ&z£ÞõØÛ¢ödä0ÇÁ÷x2î'’%åˆü
-¥`Æ
-I pIhä’i„D†bw0±FJK²X7Æ•Ñ"DÀ±ËK
-ÕÕãôxû­_ÇyyÈ ÆoBþOÝ:Ž§HþìÔŸïêï¦Kµ >þ'—“+äñ,é…Ù4îŠ÷½0Á}—qÚJ¿`BrŒkUUëBÓ©Jg]¡¸ó¼Zï©â¬`©…ÊA{èÅÛþ䇻µ£×ÞóÀ¾gÓ[Ϭ ‚Ñ4£Œs`ü'rqÅ ¹K¥$—æ‰E3ÑÀâ“+Óì]Lg¡&§××YœgQ>Z®„ÅFÚ×(‚µ³Ôoi*TU·irK¡@³è=ËË“ë,ß/2ìËãfœO_X­ªþ
-H‰ìWÛnÛHýý_Dêû%,'cLf'6äL&‹ h‰±9aH¢“ñ|ýVUwS”‰•Ë ›…-X¦ÉîêSU§ªW{Ùô¤º</ëŸÊªxš¿+²{£ña^Uåy›¯.ÊE6k/×°ìYÙUøTdSX[·§]Û¼Å;ÓGå¢+›:o¯²ÙôiÓÍ‹EÓ.‹%><:>ûc^¼'c­ºIöS•w{Ùø`ÙœÙÍWeÏš¦êÍ‚ÍÅ¢Ëfãhǽ˦ó"¯
-–gŒpwüžÆ%÷À¹éór]žU·ç%b¦üM‰?¶Mà†¹ Äß80ôå°y·BÇ7î^äeýî\c«ê[‘X›$;þxN}Œ \Ù4;ƒªÿV×Ë êsYjÎX0ê¾ 7|ÏÎa÷l6à³·"fË *P×Åã÷E}¼\þO¤‰½Ë’ož%"õÿ“$zGb¾0K~¼K÷χø»D{g~>+Ô£éã?‹Å%Ú@hïhúKÝ|¨ã›GãGm³ÊN/òeóF‰8ŒM8™¤Eß@Pn"œvùâí—KRwÞÿ¹äõ™içþô`´ƒ¨6õò²ìvqê»”ó—2ñí 2Ló[ÌÿÞGJõ°n’—«B¶«!>>ÉOž\®‹“ÓϪKõmcßm‡7t?Ø.óöí^ØI£ìbÝ.†ÿŸU5‘¡Ó†³ˆÙ¿j•—Û/¹hÚ¿ˆÖ‰íw5«œ`oª1,b˜šë“tÁ„Àžã7*8ÿláÞD{½¨‚Í&l(Xß¼Á£Õã?W9hé¬xÓ´Eö¼h×q¼ÿ®M÷;ÊðÛ×G§w|'Á;MT”0{qøIÄàç%ܘ(›Ý§o–I­äDi«<ûD î_e«¯¨ìo4;ÿ£óædÌK‚Ƽ0%¼×(zè÷Äø±_«qw#æNÚv|‰¦U͇Lg«îNãî4î37YüÕSæ꫆LqÛÄx7þ šùîæ—U÷j –§å»UÕ«%E.šÇéCñ™ï΃ÝÃÉc8O@Ž»Õÿ:øÙ¿~\/ÚŽìZãw^?mê“V—õùýûáö¬€B8É«¢ë
-²ýälgkÇ/ç°{ݵ9÷j¼~ñ×èúýÑÉâ&-ãß/Ê®ÏvOv&ôŽ„„ôÎe¼O \2?šeób¡™áÞ‰ŒVÍ•ëdz´ö?E…e–aò=ÞpÝQ[u\¦¹õÒ*Zzß;—V^åi±sÒ K­ñÜl&ÃÍbD…0Þ3ôÜãLöVlÿšŸu—Çõ0T‡èuÞÒT%¬Pø:f¬¢ «3øˆkáÍÁK!÷¹—ÙѾôÙl_éDƒ­†(æJ(—BâƘWôÁÐTμc¸†+ÈV
-„Io EHʉ‹Ì9‹&Þ€ã ã
-MÙ#À.€
-©ŠV ‘ªÉY-‰-ŒÒ½PM”Â4G%Ю‡†p‰†8—ØöP,¡ºµ¢×3©<qËÔ(zÃA
-nÐ>zDEІÊ$‰¦äÚkI9Ã]n Ý‹ÒÇ;Ï(*‘d­˜¾E,cN-ljk„ ùo#X§\S‡0œ‚:L½6öŽaç¡ÆÓ‹Ÿ„¡ŠÂeÈ5õE 9o)¡5‘cŽm'æߦ(õí~²€IÚ ØZHý0W)ZÓŒÐwÇXPJj=2ˆM¼*kƒZèF&¡åT–j›hÉVžÊŠù ¨Ä«$Õ Å4;ƒ3g˜¦ïea<ÌÚi|ÄïÙ9”ðl6Ú^¼Á8}{uëV\³ÙqÜ..Ê孛Ⲹ/¿³ zéå»wéxø©÷†e…8jªeQgs8ÖÜŠ3\‹`ã'åûbokOø¼
-Ú÷1¡C1cHŽáhã9Õ;œx莔ü#Q–1fgßþWA `NÅ?PÏTòÎ/”ˆ›ß8·á¡Q‘tv£¥¥¦¢aЧ†
-=Ô’¸©d˜Lö\¿ –j‡rÛK'ˆ/ š£à³–À´[êfªÿvküFaK
-M_‘£¸x=¼`VǦŸÌº~)&kà;U¶
-j{vké 02dÒɵ¿þ¬É rénûØžµ$yךõ®ûdRYŸõ/3‘ »]ÈrépÅN…‹tü¤æ_+³n]¸{Ž?¨µ` HyƒTñV(wfká4Óîü
-hÙk–üR𾔸h‹GŠÄkÛ«¸‡*nwÖ¶«œYJ{€ vO—ŽÀ”Ý+YÅð¦L¬\`fÂïÊ€³VNI@áŸü,[}礽ôo÷·{.X8uj`vÔÈx|±õjÒûÔ~u•jþ9B0³ÃÆrÈm_¡nñ¸@Ýð ~%ŽQ§ÇtdžMf][ÓR’50Ÿ›ÈÄ´S¡ÌÆðÒÇ!kS#
-ÔFØ`Z‹uÁ³rà>]f"þè>'•D #ª@,16®˜uƒ ¨;ÊÞÌ·–Œjäk6ø
-ÑE´…-‡Ú ù9Ù2¿"™|hbn[ŒãNŒÎ Á÷@©
-d‘©øì<¸kV é¸döéRt÷ž‚ó0ñ÷vçÊ4¸^Ïʶ’žsž¨ÜZ– éˆNÜY‡(Ì@®MâëËÎuJ2Æ/-¤ñècç{P’<~80sÔõ^ +>\$ž7Ô5â„cìÇ:^N[„-O’e¡±SÄ õ«ó,àˆKÜÕëÙX¬hj ~LçæNSZaÎÄ«¸ØÌ·sB>5Ÿý)Tü7fžb·eºh‹éjCCÓs•JCÛä›úÓŠO”8ìÏîÏC¸7`zŠ´8ózÕv¿ú’Ï# rúp@Û¥XžêÓŸÃæêÑòMÜV3û0Aw”D[pÙ·‡¥zÍ¡4h]7
-àëâRrÓy•¬sSi·(C\t$ïdˆ²‹°a¦Û ŒßtuUT`àÈ¡TrµÌøþi
-üRjù”’J<›‹hlazÅZž6¯³1›„ý/\YDõc ƒ¿Ë`*ð"½OgÂ.³*´°ÌXX·1™`ƒÌ ‘| *&hªÓ¶˜p—Ús8Ë÷ï‡óÆ<=ëaPù0¢&|Ž#¦uaó±gãò‹Uüý”> ÔàA5|•Ĥ7M»3FÜ>Œ”d:ž$±ûÞžƒ3#±
-€{¼wºÄ4€ªº‚sÀ‰mì§ìrEÑ?)Iÿ-G“™óLŽò£LÊ^·œ[€üIáÿAöêBö+Å•È)·Jâ/äŸTèã•K]B_8‹%=¸çÁÝãe;Ù¯ËÃ,ضà®­cÕtüåuÑ–‹÷ocÊÿC•Ú½ûßx¿pØ”èz/Ž«j!XËçñ|\%²Áíí嘉iºRŠ¾4‘ð2F— ˜-òZ\»–³š•yY’©LfY´î‰!«pó/µåu4À¤?XeB…Èß`Ö»M®Í®ã2sLãŇ=Œ¤—6a„2`÷ùQ;
-?hǺÁtg„Í•r*žê2¥ºšTzr ›˜+Ç6æc¬°1æèöbKљ܎ûPp¾„–õù=‘àȘÇÇXŒ+]D‘©”>žcƒ8#¥…mFY½·r HUª>v,ÇRj¡Þ¦4](“›¬šM5Yª”sl”–{8ù†¤îÈ1žD:9%qéËKd’–3Æ5ÙwP+Mf9–‡Ï„øB`¼$÷ÎA”ˆG¥Ç˜†šC—ç"D¦
- Ñ’Ð0GPbbÅœ ƒ¦‘\øÁO‘§ý3X Æm#dŸ¼²-&ž¼£ƒäÚ©a‘ýiÇèŒò0mKu¥äÆ
-, *})´ÏqÐT–b9öc—ËfÓÙùH5bÀRhÄ€¥ØÐ
-rF±a£ ŠJ·GÅ5–X°×èýŸ]И™oÎœ_ç°×^å]½`c=3¶ýFMK9üüK—SÞ``&mØê[Ð)‚œçm5Àž_ò=Æ™fåý€ä[Ó^"2vöÛôŽ
-ˆ "y!¨ñk>ŠÞÉ´Æ_ßø¶ZÄär@af‘N$B÷ƒ"Ói5Q2óÔ•O;Å'§«÷ò¤©0àW‘bW)€H*˜
-ô-hoJ‡D³(úsHÊA­Ì¾3Q¦Ë¬&bCY‘Š.Õ¯/KbÆÍW%>šbE–ªŠQ_…c?1!¤h§1Ä`v™iWÒdKŠ~ˆMYµ‡òrÅ„“Æ–˜k²á§€éËêÓ½%/^?n‹b¥ä/jŠoZÄØ܀Ʊ¼>„jd¦õuÄ¥™ø—lœ_ÅFá|ùiÚ²6nŽø89n¬ê s*2(ÿjwJÌ##>£PÚ§ð†B€ñš¢Ã ¥=7xôÕ=²vÇÞ#'³ø¾ ”€-vœ
-¥¬8,Ð(bxòi^£)¾Ñø\+rsѹ™æu|ò‚Ñ×*Y
-iV¤‚èìa…©«S¡Hª­˜æôÉó…úÍ&'M]d»‘ö£ª¹MëŽ÷kV ÆÜ3—pëYQ~!ÄFyJ‚
-“æ©ÔY?ÓQÚè²Ö
-”Üݽ Åú¥µN1¨càÇV8Mnì-{~†;|¦"ïXݘ{éñ )¾¹.Æ´Lgå’
-EŸ&¿úUŠyÝIÂsdFÆ‚‘#õ0Š»y²fBPGxšRø×ïß;ê‰kÿ G<¸á*ß`Y¼‘§{8RÈ*ë13%gŸè <µ%ý÷.Á*£7“#zÿ‰ÃTþßã×°€Ä%Ó*+Tž‚…@$ÿ+…mE™sƒ#eÙ ‰+Ï@}ÈTÀFìÁL„IâžEæ^Ù”ŒcúA("¶²D²å­;¯¦­¨Eä ñIª$M «fñÀAŠ®¹Øþs¨ÿ:^äEÄùcÏ
- 2ÍL͆Ø%fáj‰tÔ™8í« 7 ?4)ÝûÑÏ/6ZÅ&xf 0é{ÃàÄè•ó’6*wšÃ] Ú¿uû  L.ÊZh;›sy9
-êd}tãVf'bçêïëŒ}ì Ûh»ØýBƒUæA_~Õ¼ïÓêqwÛåZ/'/.zW)’Ý i8õRêƒÓL°aKßK!Ñîx§6C>8Òö§áW_,¡­ƒ: 4ˆm{#-çÊ̯æ¬Ù
-NJ… gsÂ>ãÛêf"Àj
-w[n£í <žý`ðׂûpYÿ¡^`RÓz¬ûo–“?XMà¤ô/—“?XM®SŸ¡AhÚÏ¿.–3ØV­÷)6äÁÚÚPâ›Ð)wõA“X_磂„ÆX '‹Õÿ×fÁž–®ÑmŸÊ}*E‰ñ
- Wï÷¼Št×NyñéH
-«î(8iÞò̈\ìÑc Bì ¼`©"™Þ6èO¹lµV¯­>½ayðR'5¥šÍ°üˆÝz ôÃùi¼8éƒìÌv"h2ºçåǘ¹ËÑU2Ã+æÞq#ôî¡šÏ)€½—ÜÝ"ÔƒT°·q–Yê,keJÊ`žRÔú”±Ê>LÃÞ3%†?¢ñÌOgj:qÒ‘ÇŒãRñæ”ñ¬‡‚%-cÀA&µlOÐJ ÆwÓØßtAx¶äÂo¤K°Oïãwêb’ç,M^§ ‹™O¬Õg7Š©Q6íÂ]lÔäà.N5–ñØ
-ßêB2ÎÜvåqšÜ:3° OŸRñU×n ^§$päZëX—§Œ ¶Ÿe/¹Ëoðõ Ü|;t‰ÒC–çCQ;Ô ÐÒëîÒš‡d‘K…å8_ŠŽš$‘‹6l~îâôêY}—ùSqŽ
-1EòD»Yç`J#;É«#u<0Ä"7ÔÖ°½Æ鵡óšLOßW} œØè†ùë·?ÖG†ya>¿õÍ„Ì¢FóX(C¶B!9«6:°YéqÌ­‰Áæ~‹
-n¾– 47_G µzÿÆ̃“¤Ý ŸÔóý½ïä{6-6Úõ.Vxï/à."s”ˆ
-Þ VLpG!DÊ­b<»ý,ËÙlÜX¦o$"›B—ÈägºÉC×E¢ÐC¬Aó•:¸êûwù>ýñ—†úNVOÛ ;%ØoÚgü_åÎ7+"A¢‘H"ÏÚiïLYS „âL.„Dáiœ’yû?Nÿ) ñWÍ슼¦ ¢à<F‘xWä$çLS—–)qp—x£˜©ˆ¢ð".̓«o¨æ¦iÛ”ÒxÇ:tòzËÒqÊêò¶Åé#ôË°ÚîG¯ÉƒWn·ûMøš¦h:ÉéÆwrLÛÿˆúN—Uóï^ß8Il¨KíïN9•ÕÍo¯Oj¦©mÿmwºh„þ‹óvEÉUƒ » át1W""ˆKÎRLÄMSV%ùw%ªˆÁý?NEŠb¦Î™šŽ,e^4ì¿ A[ˆxG·¶¢j>"}Ãq Ÿ×ÎþÓ,d§ÀKšŠˆ‚l?qBÜIœ¬"òU (ÁίªÄÔl¼ˆÈ¦mÌ!
-ÏL€ È<gƒ1,~e¯¡BÊ’zqsˆ¦Bê-8¶¼„— ÄR7ªö¯úBâ}Uæ5AìA
-áŒ7±®y]v:ïÇ29Æ=“SNÿRÎ0‡âb ‹ÿþ+]YZýܬÎÚÖÿ9¯ò¶´.ú øA¥âawÁE
-ˆ@íëîH I: þ´Ÿþ½“…œLÒþÑç±äÌœ¹Û¹÷šúÜ„Ï£ѨÕm4à üöžiH3LÞ±/<—v /Ž²c'µr"ÏÄ–¦jÒ„h3\wh¦+¸‹ M™{Î,؈ÂH_°Š‰@ÀU˜ì½c‰æä
-M’òD:%B&îO泊dň „ö¡Ç«†]Ju‰²ž+h
-]kÿØC`Ä´ÊÚÕii|C•`hX‘‚sRc­Cɘü‹»|]ò±£ò|æ³'dŽYÑOønµpó_§š¥U¤„6&!!€ì×\,¦­E)žkšB·ÚzÇ-˜×d(!xÃ@ƒÁÙkM6ªýG§çßqÈÃמŠVf/ú¦ª³’=lÎuAG*V–QMx°ËѨÚßÒUÙz"ŸÂ¡nkfKÂöA? i–×iƒ” ÝjÌé;ŒÊ,R>ʘÊú
-’ét“R]"hº‹çu6’xäœ7ÚØOè’zÐö‡ÂàS¨P½ŋ+óùÒŠÏ‚A¡.³¯Ò,¥½lö%äʤS6_?†ØÇö¨ìŒ[<5hsuÈY(@«óò™my1²9sU>‚~-…ã«Õ
-IÑjä#$kÓ1 ]39Þ¡H̉m¸‚$G³KY&š S‘¡-¡¥öÇŽYŸhä* tÍ—îbä‚Å:Nq“ÏÁ¼û¦P6Ê‚Ý»Bqï| IWx‹—‘Tƒ—Ä€1}›K°}'éá~ppœ·ëãÙ4…U4P0Ou)Ê0?•h‚Û*íF”3ò¦l.J)`°  ðt§YÖ"öÃÁ¶Pã$âÊq „NF24ÿ±§þº°Ié67@ÄàÄѳ
-þqŸCK“w,Í>§œÁÀjæÄÝð‚&M{Äd”EXðï´Úg®aK—Ï \Õ¤sú_'îGB²ÒÈd„8…Š{P¨Ê’é+zû€Ì
-•†P'hHÇN©C¡…‰/Ï¿È{¨ ƒ‚P!ö¡>(À—CËLá²Óûk*ûT8—7ëød>£$=lÎu¡‰Ôñæ ¡£és}áÛsM³8USº «z:8cnõ»Yì:¤æ” çC^™BÛ/
-³WÝ#õ2Ù¦}%ϵ@z†Š¥ÚF†IúrúÖ "½Š%6rÉ£'¶­åø³±>Á]6éíÅÖÉïY“Eºs¤žx¤—åTÚ>}8»a“æïïÅÚØf’®ÕÆ¥î,{Ã"%ÄÚós-ÀÖâzbª¶.‚H‘Xß}»c“ÖÅÊ&N–î-ÒXbÕÁæúî©Cz¿—\qði;ì¸÷òiZ["}(‹ÍÒ^†’n¯ÆÆÚÖŠ]´—Ú’¾š¿ÍÇ@Z\/M‡µ— ÒªØÚ~>°HiŽ­ØÚø}xö‹´»LÒÞÑf.ô÷r"‹”*þqOì½n­±l5Ö®¯pûña+É$½ÛTǤ½ÉíÛÀ"%¾ÚúXï®õ2›´™Kü¨•Ù¤ú÷5)h2¥½û?ëUÚ–8EAD -[Ùq@Yd“QTTdðu`¡ðÿß$ ]BÒ¦2_òø{—“{Ï=wX“¶ €_nOÅV…î´]¨ß:ƒÕéàfÑ@Ná|9ÌuÞ?™^1œ¾ž'Úß(Ýé¯ù×çMö<M8^Ûa#ºd¼‘ï#"Ãi¿›¨þùlRžÿŠJâÅ
-x ¸Í­É¦Ù φØé$"š&ô|=#§©@!X·gz…s—Щj:^ [`v¾Þ“~~C:ÕVJ;Ý#D¦âëø%¤;-õ“ ;ª­[à6vÈJ(Ê8-o¨°.êN‹ÉV” Bõ+óKŸ4i®ÜBN¡ìÖ¿ÙŒ'Kè4A8Ýl.g«}ý6E©v2ÏáISÌub¼Òj6z°~˜‡§ö ê]åm•cÞö;ÉÏGÖíG¢>’wæíóê­(Œ¯Á(‘ò>®ù쌸==Oð­¶8?èÊÓå‡Ô£Ýë¤xÛȽ2oÏSá»ûöcü0;¼¿L)Ï¿™·×‘e1žܼÿ0o ÄN}7ÒïIñõy]©ÿìjúí{`%¾íFþìÅé{RÊ Ö4ï—´{å*‘ņyû$Oâ"ûöµ’Ëï£Üä·3?óv¾½ýª3o©RǼ=@ìsqUxc} Bêü8aÞ6S™B˜ü{9¹¿f}­ˆJã5̼­^¶'3æm3U”’lÄ.Å”?”cÜžÔÕ|xŸs.øƒ¸<t´"¾-Ç~’]YÕ—æ}F˨wö ¬œ˜^ʘFò_xû…×Ñ«á‰N=¥•öKÿËÆc©­n˜e1ÚÌöÁ†9€G þv%ª•»2<žÐþflo:G`ã»Òžù6R*¿b>{ŽM|é
-¿Úm0¹(÷DÇÇÿørªy¾‚S0ük¢¢sU _¡Ÿ_†Å 2QÈÖýsE![{©
-´»ð]·c:¶dp«Ø¬,L
-1:äg°àamÜtŒ,q¡\¶5jd…ÚDc%y‘˜m»ñvø$æÆ׎>É´æ¦Âx©gq® 2s0qhFóŸšyÙ2Ç’ {yßĤî]=ÑzZ³ó4¬öʼ!m‹M欼¹ÃñðH:[ÐíŸNù^0ëwnšßö‚KÙQXxx¿Úí§iJ¯ä#ŒÝ/9â]ÉeÌ>P¼Æ¥3¿a¬ï¼ÄxIÒªêŽFl¸ù‡ˆÙÍc\h¾˜T1:Û,®Û‚öMulÆ
-¼€xê´e%h©:Uê}ˆ.<fØô®Ü¥Ö•¥ÞÚï.÷e]!t—“*å%ë‘b²umb#ÈßA§/)¼Ë‡¡-It
-š1––4¤)è°Nµ_ÜŸ© 9¯xD ¸’Cqa®@mù=L\ÚÞD,saŒ¨ÿê‰÷rì…³‘`çÖ–ÔôòöàߤÚ$£øeÄÓ€5_õà ³¢b” è a¨ôÁh†³ìd/Aù¾I
-ÜyHA~›ÆU~ÞìGƒŒùòX³iˆS™•AŸßliÍ óL³ÀØ£è‰d™I³ÀX_:–f¡n#¥tŒ@¯F^—ƒaÜíðI{¦˜ ´^¿w|VïI©O³f¥7;¹à3£s$¹¡.cì6tÓ÷ä,ùE º°OCðkô}o)Ò±t§½ñõžhúž6 Ù}>yÒ÷´YhnÐØñúþuM›…^§|5g}Ï7Å cô½ÅŠ1 ¿?ÅŠ¾§Y1¶W†Þiè< ü®ž†¶Y8ܳy¿; qö¹`‚ÖÑxVÆ?V‘<°SUõÃM 7Ob…RÏV2‘¿µ!{¼ÝíÜÛˆ“±c»Û¥·ÍÞwåZ;b\rwÿ’Ð k#oãêsdŒ¡k
-r@ä+áµB[‚X,âGETÐJËÅB÷ÿîn’Íî²›,Ð?yü!;3gfÎœó#g~+'pCu&eﯡ+ÜÍfN{GÛ)j6yÅT3 ~ÖžçòÎq«7*eØ}å|çø#YÈŸ>¬mû$®ƒx¿Np<‚šf'Þ°×£\–œ*hæÄø}ÍEœŒÂ©êÝâÏ€´ÔuâÍiQ´ÐüuuC»W¢Ö#U/¶‡?EAßÉ ¥›ôøªvC}×uî¾ÖQ'ã@&˜ ÀÕebŽ+µþPAÓ}aP
-PrýKØcÎìÇÞõ)¬0ËT¸k}ÀïöC÷Eôüö)¹·r3©óÜ`Gœh®I£W`->Û€'^4×pd³ ×4`d+HtŸï!Ó:š¾Xî®Â%)C­PÃPäJô ñt)SDþôÜÒ¾¾5x¥A†Ùô´Û––UÃKó½Ø¸›ÓE luçÑUénUœ9G“ zÎ,ßN½ZÐ'Aè’¬Kämª‹ýi`Cx°l ÚRÖ4ʆ4g žryl«Çd‘£â"voÆ’©yGN~mnezÑVŠlï›—iüx\ÓM&œüï圜—ø¿ÊR—±4jå6S$Öc‡5€ÓiçÐûxpdHÄ<­çÛÙñÞà<H üöŽ_L€IÞVNXBÙö½ÇÉ5E(%º¿ïV¤ìbPuwv¼Q"nR˜n¥Àz‹ñÀBP)ˆ cèä#“*Ç…)…KiÊ‹yIMTQR_pë¤ú‡ÙoåÆÍM2öÏ<»¿í„÷OÑ$;hcù¹Ã0:Ù{,ÊcHO–]<¨M›è)Ÿ“÷y,zâå+¾&’­…͵{0ÚNˆ¹çÔ4£öÐÏÂѽÂCÜ‚«Ò ôØn¼ý¾.;½ê=P ÿ‰‰˜/˜'ÌâôEæ<12^Šð3
-Ýî–„ÙÃŽ/ÂìýnI›=ÑŠIQOƯûpƒ h^§ù²ËÍÇž¢ï‹/iøk±ª:‘»ßù«hpˆLÜÆØ‹ÁÚŠ& G˜rÑÊ…-HÙ°W!:²â°:ò,U_I@®h˜¸D“<½@žH“c•\¥tudKÞ®
-$¤ñ쬸×|=v!»ñÁ¾ õØôBzãÃ,%H©rÝÝߧI>|ÆJˆG€5…Û¤Dú˜”!K)ÑË}ÅBp*ɦä:¾°¤ÎsƒqòX_±z§Zn%¦þó6­Ì8žŽš±ÆӬə±6<é5c¸tjðÓ:|.…%œ7…Hœ+š„m0•œNî4Þ!£5üéñÖÇWJ¨8¬Ñ÷(-Å+ Ý}ÊñŽ»0oþµ
-H‰¬WéZâL½‚\„`¶
-b:TL]ÃÏe;DÙXÛf± 5?áWÚö¬àÿ&¡‘ÊÈ9ÖXè±¢\õy^%D[
-šÉNN¤òÖ†¢ACÑÑßc•È艔NèÃL]¦<|Ü |ŸFÙPšuš¡ùâ"´hÔ|ÏÊÔt3€éõT¶{ÙÌeöZôÑ6[$Jc|W. âš'Æ[|ˆ!Æ÷ìn½£ÆŒÅ­|9ŒÙL½ìJuËì1R7Ú
-ôw$eb»^éBçÐØ0àIæ
-ÀC‚×cå„ËYt`L;‘Èu)'~¸!f=ÈX3¢;;–†I—É}k©ÃCÏŬ¥Öüä5FáçxCZy–Æz ·X7\ Bu!­‹¿©du#ùC5NËëuá~¦}ôFÃJp²S«¹Ó«¿ÕN¡©^%·!0ù«âÏAå±:èTÕõÕïÚYç¦\JüW.—’u{Xîבø‡|güUfBà{7Ÿ‰äæW-Ø]~<Y$¿¾BðJºìïÖë‹“§DæöíÂD9s
-‹²ÖÿB}žçüÞ9é{/ŽofŸo¹,f#Mã{huÞž„èÝþJ*TwÎ…:‘.×Ô!eÍ;ÚI…+XùËÈ¥mŸ«MiÁ¾TùöõSE‰–Þ«6u‘&Kø ?—äQß”V!A¾¸…‰àÀp²íBõy^uìBãz­8õoíõ¦È¡I!¥_v¥º#$X:N٧Љ§Ò!î“‚Â¥ï7pB(5/ˆ´“«„v¼M`Ò[`¨0R©! žúia5§§ül“ßÌp°<N~N5îôáš#$§té1ws¾hÓ-'NmKË"1…~ѽrµÓ÷}§þUõ¶0æå²â‚Meènà‘ôKŽŒØ ¶õ}@/àë ÐõB±$²þ´Ô¢¿Ç*1µ¢R¿¥êd”œkjñ Ç)‘š6’%|Q9…¿ddEžN æ¸ðˆªå^«¥¢¾l4FçèV—ô®„
-öðÆeª$½s â,œÉ®çóRSõÛˆ}É"Ó.”åH§Wn}η‘GUó+4öª1ãAþ”/G9Í]9Îx
-D¾f(D¬é(ÐP¦@õÍÏ“³…|yY~En4
-à±!†]ªÙXÛVäÂü×Ò! Á¯».C߆èzÅ¥¡Õ@¦J7÷m+Z¶¸{?§M4œc„ âV_ôåù¯IÜ iÉ;\÷`O<,må˘c„ rªâ²¢á i¤+%io¯ŸcÞãâ"Æ-O'š«$×Ïœ–ö
-®õq|”fX;÷¾/cl9(x4ö½Ž'#æz°ðÇ¥ûXˆ±…¡+b†ÌÛ7ZºÔÄaëÞ™M\ƒTQ™VT0ÄbÖ &2«ÔŸì¼+OË
- ÎÐz +$cŽqå‰w 5Î
-êyõMœ,§1~mùÀ ¿0]' §ôË®T÷42áÃ/¢¢r³q\D™ÓÜÛû¦r„?—”»´;×]9m&$ÚL¾§Âµí·&£õ+É.œ’üóG,s€˜ù¸N¥òŸZ1ßjè¿uÁ“ÃIDÒIJ äf‡S˜’•V—‘ºÅAÍWé#ÔJ,ñiyÐ;ú ”ŒiI+“s‘`x€Á9KÆ·ãLÄ Ò03tûÜÌoiGûõjCjã&ß:a;°$üu”‚ݲŽÏ æoz3»
-»ˆA%ÖUbðyrHnƒ/VOÔ¢›ÜâdÑíH͒܆‚¥w:+µËoÚô˜3§òþqAÅ•hé½j»+¿—˜åhMMÝúÁ®üq—uàå-~tʶ€†èàšÚÉþâú7<C0—;3«2ø_ø“š³ r¬:T+­ùIå»’ûɯW 4UÜm
-ðéVh*i™BJ‰8ÑáÃÖ›ÐXÊ•õÙç³Çú0€·o;ÉJ¬>§Áò›ÑXW’nÇ7u+ø kNK‡ ¹Kd–1\­’C2Ls 3†KÍ‚öðåØ|úÿܶtLì@àe")_cžEóëÑò 3ûî¢BÙ!AI¬‹ýdˆˆHTÿJ!W;}7½tá<P[=fˆeìÂÄÃdÆoæ.“È!m»ÒÆxpUÙ DW‡¦nw<ÚÒ å ƒÆš'þ¹ßµ¼w°¿’àò/' +›ùfõ9í¼…V}OÑÀ»’dÇUÆsE³'¡¹+_oŠ{;÷-³bî­{@C¹‘6 •šn» .hÉòhùˆL aDC ‘‡†  ?W𢷻ú|¿= ÕçÞÿY¯ÎµD’(úýÄn‚dQ™fÈ1aVVF÷ߪêTUTjñO~Žsê¦sî¹4s¤:Æ¥aýaäßÛƒzïAC{ÐFˆ„„Sú*Î. ½^¯Ç3 Y[ âìOCˆBîB‡„@“=Y{¬š¸gq¡Ì»Ò3-´=0¿XêY¿¯âÌIû¥Vº85Ɉb×+5^·ŸÍ= ø°rmïz%ŒŽÈæ
-'ù-Y¥Ôn1)Nšˆ¦¶pQ’óe¬hÏPoi;¥Ò4a¯@Lå.ÖøxÅ€—o~’LFÃa€{ߥaÁˆïа`HÁ¢!EB¤0ሆ¸ p·¹¹±R‚¬þ¡/Ql‹™FÀ²à#+eÁÈÈ’´¡œ¾4}aXNeäàÇ‚êë:•C…•<¯CVì6ß_½+A'›ý7õ»’#\ãµhÓz3†C´+V¼ ˆ‰P2† †1¡WdÖPÉVincáý‚‰»P¸yºIO‚z‹½p)ÀJÉ÷cÀl,NN…Iê$˜Á…‚¯õŽtûÂؾ,«œîtYPÞ=Ìt“-ß\õd[Óí$çJÚéeÒ ^
-ÆY™Êpl.À}ÆLPëA¦h $ñDh!…õÛäâ»Ý#ö{¶õK$7‡­âUm‘®V’íÛZ`Ö¾ÔBµrìòª¸|ŠåÁOÍþ¯ä§^m Ͻ䯙‹§õбð쟩p|øë›ã³ò
-Õû‘;JÉÞñ»žJ‡Ûõ:&²Ý—Ÿ¬G×Û§BšÔdâÙT#íqÍ‚GƒÈ#çÑÑ÷Q‹¿ñ‘åæšjê§ÓÄûÑæ_üÑŸ¾ˆû(È F/pÿ0ƒ=úÜG7úQxí<š%=œGŒòý_Ö£ZøÏ•|Ôߘ$¸¦Ÿ}Σù@(wV{BZ~Œ,ðXðh3˜ç?Ú¼ܱÕBh”Bçÿõ&ìçFþ£Çgþ£õúu=jodðlþ{ÜùÉüËõ6ZL’Ýçü]¶šâþâ¾ýöS´ð[1VX~ÖÝ5 råhÓiÿ¤£Ú@MÆ—gÕ= vÉ^tÜó‰<AQ#P7Ï0S£w3}•ªíf€]üÀ}D¬—a:%ô˜N¢þ°h0d½F{^aHp’ùAU×TPdHBÊ>Ø{¯Þh!î By]±Ó!u·Ü´³NÑßÓ:³NÔfWlåaˆ .ýßR§¥»ÒíîÓKă™Iþ4/ß…!™UÒÔæ©y³Ü'?¨üv†éúã¦É>½åGún_”‹Nj„$$-$
-jºùž9
-Óˆ•'§‚Œ·ºuaY¼28íœ4h…á4~¬êä–lòM3+.¡»
-¾7ÀC^¯½û0cŒY ¹¢ÿ‹-xtTct·‰|›uYð‰bŸ›$Í襦y×ʼnOV,{Q!ÁŠAe*w'mÎR“ºq"¤€ª”Û<G 깊—6ê˜1…– ½}úgå‚Š•šMÆ×ß3 ©Ùëì†Øû{m·
-qÁ‹OFm•ý*ö’ö¾©b/ãîÛ*F)Úžëæ8`çJiYîЪX¦2þ°õ=Ç,@~ÞÚ»Rê„™;@Ì}
-
-urC‚:&3(Šuš'¹# …®ŸšÜN0C‚¹ì•ñbT!9zàÜ•_®SN!$lï‹‚’™IHPǬ òÜ ¬íÊ6yå&v¯Ü·6ºrÍIV¹syWnÝA‚+ù±Hq‡y"”Ó ‘¤S6щǮX6XH„qYphh‹BÈù „ løºTj®ƒueA’š!NÍüÌú0j[ÙµÐN•›ý7yVa3+öT‚ž“ìctKšP{K.‚ÝÉAŸf'Œ¦Þ•»lËOV9ï…Ù-‹µÈ¡Â
-p8ãW‡â,g’!uY¾À±ìèÿdËWŸ)Ò°whÃN?`‹‚íÆy–=[¾Žö†¦c<¨ÇÍ•nú=… ÛIk¿¸±ƒÔ
-†÷ÔàŒÉ‘¦[2¡œ@Bi*+g¿¨O(ìùÍÒSB&÷én¥^ôÕP<œ2â.|éIPo¡L§ôÅÂ䈋VRK¾ë…Õ™näÕá°7Þj$íÑïàªÛwÑUÑKxëån'‡—±Òâä”ÛISat¸ÔãNÖŒò­ì±Ø9uY3Áv÷·ƒÕv©÷åƒ÷nÄ YBa0cBœt´òÚØG
-Šò´ôøÑ8 d¡hÊ82í¶Û’Ûi6âB:†ÀˆÖi5u04qí=ìƒRQ\ ™£z©A¨ê§ …9Xï‚e
-b¦»‹È/åë,ªTJøaXg’mVB¿êu_Å_Ù,b2³Œ_NQJ<\;¼V0ïRÆß,Y³ûâÙI °Çm¥£Z@ä`sK.X6ø£Óݳ›EV íkT«`DÅ(š*N|Ÿh@.6ÎÁ·dŤu‹yÁIò¯Üù2V´g!öeBÒ0ƒ7>^1¬íZì%œ<Èx¯(MCð;I#Ä4tHxƒHh9¥¯Ópô¡`çµ ˜R$tn1l‚jÓ×âÜx˜»šD<)˜ çèP®Ží…“TÛbRœ—†”µç{[a
-ÿh…{ç«Ááj1º×BG‡‰Ü¿Ç½Æ0ÑI¬}‡Ýfî©2X\—Ÿ/{ùÛùÕììpucÌ^‚·¿#¹Ú«ÿjÐYþþ.geã}5þŸôê\O\¢O‡0`ÀظP˜bBè º÷¿#¹²©wóÇŸeÉG3gF£3·GRKï"DçñÞç‘üÅù2(•¨ËÊ=í‡Ë;ãì³Ü)¬¤ZÍç6ÁÒã4!¾ÛtBò¥ùB¶œå /ó¾ñ64mók§h§tr#ê)¬ê<—ì^4-D5é$ì°R%æÂðùü§†û8úæƪïƒbê#lC¼_™Ä2ó§,?Œ%“¥¬]¦Ȥ+‘…É
-:pŠ‡;}ã }~„aÝ»”HEDCQÇVǤ…ýDëKÔƒ€úS' RtÕ#úR~}eõEóˆŒpžxP¡9M˜+5<4`çý`ĪW ¹êóZ‚Ù&ƒgE*r·07m²æ.<å‰òâæ™Ì31
-²ƒo{p"š äßâêm$ƒ-ýÐC/ÇèD"§'ûxø¼ü"ï@8÷)A·âZ$Õ
-=fnG ?:uY‘ê?8Uc½h~*y‰iaB Ê"uY¬M×;Œ01§$QNwX¢\¿$ ‹Ü#ææµ°ñ¶i‰ÆÛe06´¥˜§fãM| #ˆ°1é§bª¸'›
-¯ÿ=¹4 ì)Õµ²­/:¬™Æox3ÖY§Ruø2í2ºiâÒ}óÜÈnØ×@¦>©äÊ%âÙ.$ø@b%„6õZ,TÆ]‰)”ÈKiiÚ3â°’Wl…°µ’7>o¹Ùkd¬ko3[S“›£BnãšgÍ¡ï†Ì«Át]Ö qtZqÆÙ?"úY¼–zn˜uÓ{U7­²ö¾nš·ªœÕÍ»QmïÏw²Õ‡,µÑêPA#J6ϳÍ÷uÓ*ÌFÝôaÇ¡¬E}¨€Q7f®Bù7Üè®i=ªÙîøÄskËýqÕ½’'¶=ó¼Ÿ=u ª%,éAËá ía¢
-‹uÀQu¦¼¨õÑw­Aøâ‚ú>úh¢ì§SçÔêÃï¦f@˽†02©Zßã[K@9]†Ü¸m+òtY\UÕ
-χÕ2
-DYpVÃì1‚uòk Õ>Ø ·ÇW r}˜AßSžUn &Š… ^\ãÃ
-gb£ZŠ¬Zjk½ò/PRƒ?N%]áYŠÙ\"Š±pÙ8;C$@´$÷†O¥."~é
-s¶¬ÄßÈÐcî‰_»,×h§ÌÁ‰ûg@iÈ°×
- l,³˜‰C¹$ÒLæÌ£-×dËwC¡ñTŽjVŒ ¾»3"I¥¨÷ô¿iO\ë¿ÈEnžç»‹ÝãâqõKðœxäÓªªvWwëÒn>¿œÿÇ(¬g‡—ùÊø•ø%ŸvòÕj<Z˜ÏÖwsøÏz³iC4³ÕÌïˆmhÙwÄpÉ\¹ÂýqyYñ·S7…{ev•U)›Ë­Wxxª@Cågéª×^A+u¼le/àã€vy
-R$Ð"Ë[z–±X)ì/Ìw¹C‘¯×®
-çUoDz–’¼VŽ§—ehūܼ•÷‹¤\9ž†¥^'+Êšôdø§™7!D @wÚ_ÆhÈJ zgî´¶!c½\²¡{E9Ôƒ8—ØK —½—ÍâÛ3/ßò5p 4d¼âiäUCÅÞúA–Ýlãnªj¼YrN«+M&Öq7ׄfɹt6ª°X`Åô¶&_bùáßvùÉäQ™ßLXóîiNÄgªÐ–ÇGÞ|L°"2ø‰x_ÓM÷Ý„aUrU±häæñtŒs î¤S¼Ë€ÍÚ2ä!ÝÓ«¢ªÊŽáÇ2V±…Âß“ Æ
-O&x˜ÏÛú¿#Pèüÿ§L
-§?`KÞdËfðÅÍ–f+i¡¬wDŽÙ2/
-ø¹P(yº»ÜÕÈAÀ…_™”ÝÎ’%Oß‘N÷%‰t²$½^õ}’mþ«-“¤
-ÇQЭmzó¾YrŸ„UÜ{/ÂÛø~œÅÏq• — ¯ÁîmMâÂí@—%½rú¢Ü1«Ân—Z‡I¬Àü4¼É<¿Û%Å:II¢>4öxX÷uK‘ù½L.P°\Ì‚n]Cäd—µÔ/«ú^ÚÆÂË2Hvù1Ý-q€‰–&yn½ëm­wƒüx±â#drJ–¤Ü+¹{ֹ߆Ê.„ƒOž¼´Q‚xÑÔGƒŸNž» v”ÂpC‡iJ#Š
-ƒg¯Â7P‹| DG7×Äàa86sýì
-?ÛF^’"ˆýãmtò7N㳪ŽðOrZò ÿƉØw‘P…®*~µ›dÃq¹~V©·]lòÊ»Ûø&”ª¨ªÄÁÞW®ä,G~¾ÞE¶®/˹-g~YzR/½Q˜ºóüfúaŽ@a–c5]r|˜cŸºg•ŸæXèýYŽ)+îƒû¶‹/|™ nd¯sl“~rª°HÉï9€û®‹rÍ÷u¹¾ï€œ>ºè²ßæ¾÷cKïC‰1x˜ïœÌ/+þ³`•ò&ñ³Ó@Uû9”¤¿|¶ŠXúgµñG G5Õøj£’ik_Ä°K˪«#WtCê&].nÇÌÏzÀí‚ç­ŽüiŸÄ°Q?Nª71˜µÿ6ŠY &þ(#fbJr t±åÈíâ(ÿn‰ƒÍ– ÿ9ª²D$j¡´¯`ÍÑJ\ôÎôB†Ÿô ‡›r-?:y†ºþÈŠæŒØWüd=Kë±0CèVå—±ª¾Ô`lM‰õ•=WNøb¯_Á»)Ÿn>“±¦Àòy t\• [çÄ c­•BÖ
-ÌX2±â*ÑX˜Œnæ¸M ävu sn4/Y?–äRQ«ÇÁmEá s(±•j{ÅÄf9·áظ!r.ç¼ÛTãgö?¢Û0ŽÍmƒì6lò Û º ÐÜÃð®†U\o»ì­õyCpúmÈ”„¼¢ÈóB
-SÑáËÏo öymøø-Üôr¿ßûÈJ ðïéŠ+õïþæ?Ï›g¸Ì ¢Ó¯Vçß\ü{}x³¼»¾X­›'OÀy{±¾{Ïáôàâòjµ8»¿¸m¨Õ?ƒ?þŸJK6·6,sß73‘mi«] »œîîß®¯–ë«›ÕÙí}»Ç¬ãW‹£‡í^«²§}ÖÎ`9…4~Új·! OÓîãsü‡ï¿õº1]
-Æâü.¦³ÂXkACÑ‹}Ð9kL5‹{,^‚ø¬-™öUû݉iÏyó7M4íQi¯›J,˜ˆßqJèO?°1«†ïn B™¿ò½"SvJñoÿÃ3ב§PÜV»ûv}{µºlgûKÄâÍÍúŒE'¾SïØ%í‰Ûo;Ÿ½‡ÉXv”¬yÌqÞ[åx£_rŽ Û¥èe“u/lP@$|¨Ëžò°ç,-©ò¢.aZ $»g2$œƒ0‚¡ Ÿár>Îu¶Çç.:ƒã\†Qfn=ôëñO=z¶tÑò¦ƒ”Åq%0'Õ [ßã‹ì3âƒ-Î3Ä»—ÎÆØjk;›Jž„+YI8Å5Ù˜œGlÀÑ.ÙXyì²]ˆÙ‹ ž¼á]Ž)!‰Âêë K.*»—9†¼p¼w^8Ù¡Uϧz)rŒÀ¡@*•œ½q•‚ˆwøÍ9§Œ,3<.õ¤ì³ªQʉÔê˜XMh—sêiÙå¥.'q¥ÆÏ ¼±Õ'vbw„
-JrIã
- t¥3”%K‰º„0¯8ÃRž3šï&ú2â z§ !Ù㣔…íDduJ±¦ {N‚$Iã;¸Š3ØtÙÂiœ4©‹Þb |ç%¯7±¹L·çÀr‰Q
-¦ct÷¨'”@ÒŸœ×ƒ£W¯+A¤Ôs“
-óÄ>»k&”´Z®¥‚ÂÈò‰Éj!ò]Q)Ññð#%Àâ\*ŧEž"Z)À$eÿ°Rzôœ-M¤@’ëà8g|ª™;¦/ǼqÎF¹½lɆ#Lã]9óFÍãÒ¥ø
-Oˆ%ûv¼¨7j
-ëõÞàLe-qìyØÊ
-È¢y›ÆÀ¢4qIþćè¢g/<¡\·Ò=‡0mDrÞ|]›U{8 tÍWp4²s“b ÜmÔ2®TbT%Rdi*&iÓè|Mgé<^lQ—¸a”ã(iæHNAÑüvŒY} c\çÇÇ~å¦ùíF÷II¸©@@ƒ­›8÷8ªêY²’Å\û%kê øµ_$R#\ÆK~؉”E1¹~ŠžË ðON¬>|)ÚQ‚ ¢:)y†tø2†’ÄÎÇéì†tæ¤!O¤PNÔÍ ÆØ”¹u124Y†hÈ)O›;.à’F²Y ™´ãƒCüÄ¥LÍ_pƒ¬`.‡údѱvýÊ°?PÝA@ÝÅ >Õ½ÏÊ1Á­ÊÌ.h—²Y“vÒØÂú^8
-Tôä=ŒÕÆ‘QÅÚ<©pÀŒach)A;"Ò"
-Ç›¤Z‰<úz‰±^Ëm¸‘²Âåã !¸‡¨¢ß="´|§3Iò¼¶oæðzaRB”Á
-Õž%ÒïNþ䕳ø<éSJuÁs¿˜ƒ©[s»²=×)¨wLõ’,৪²ÐKq(DZë¦nÙ«riå‹´ŒÉ"Ý.fª*)&Òj÷;\g£ŠŽš2PvW?Oüÿÿ#Š\œ5пè.–ê&ô¯ºŒ¥z§õô/»¥zljU¿êºñ¬ñ>GâñÓ“Ó)ýFÙê!/ôb¼I¥ÍCºÊ°%4~4”aɺûØ
-4-õ‹{,^‚ø¬-pêUû݉iÏÁ>~Ó
-+ÆFô¯ã›*aiY3uÅ#¾Xd)­i\‡Û8Ë°©l¡¥zgJv$h8žË%ÏQ3" eµï"«¤âz*ÊFë::öŸV-¸à
-Ô†pàèØšŠrñ×l‘Ío´¦Ð@îݦαYZIsi©JµéÉÖZ´/¨qÔYed»µJèPq´ Z¥ZÊpž–Xn¬Ý•7ä1Ú79pvÝ ä‘«õŠ#e9ÉHÕ’MÁÙÈIà‰L´a*å쀛Œt/ŠÎŠ›ôÛnKWºÙ<sàÈ( 7uæù®èæQ%X4õÆÄ
-‹¥KÅà`¨/°©Çy«z?œtíÑ$']_Ö;‚%„<
-Ϭ8¯p§7gæîÅÒªmµýÌZê^÷VJf`¾QâAžÊÑÆÁ‡ûjóuV„£Ò`M7Çã†3§—|0áxJ]-;¢d´KOúQO¶n‘lðÚ>„£Øæ‘×ÎUàe_"ñ¬ÇãFK5 m{B|4­PF¹‘–[9p ÆÑ%{N‡^¼zå 6tŸ·u>}ã)uye'NÞ¼+ vöX¿"à³®ø†€5ã$àžÌ²#p®J‰±Ý"0·ÀûÓ¶C¸Æ ‡v‹À8½s¨®¹wâ)Mó¢ú~Ý\dò/²ÂñidŽ+ú…›Ôkømug_o;ú¶êäk /G¹ï×Ø˼vC½[ÊÝÒIs·îÈ‹öñ¯€÷,w¾â]lú
-w÷Ð)3t >7°Â-ì†õv!ww°‹;»]Üë5ìîJ16¥Àa^Ã.|ív©÷W°{V¸]Xn`—é
-v•}n`7åvÕÞa7å »)`ŸØ`|4dÙa7_ßu±ªjŪEêy†ìeâ×à@Õ›Su|öÜÏ\ÂÞ¡y«nwòw'‘u«£÷J{¯Çã 1\PÎÊåa²[v<&3¹B]ÔžÝpä“ý“‘e âNA5õÒdø¨Ïì|Ôî;a?êþy?M.êùüåÓoO βíþWA8›ú6–W_Z²'–±´ Çã©28‡´n¡ÄÎÎ’[þÎ’ƒ] L[߬ñâæùM˜òÞÓ¦g9ñAÿÄòÍê¡wÞ°š¦Å½Ø!Á-j¨ñö„"v«•s”µÙ¦ŽËWÕúnc°àÁÿ±ÊÈçÛÓ6V˜¶lŠQl}o±ê;¿ß ¢O„Äÿãáÿ/¿%Üü<“ÙüÌ©<{ØÎÍ?;v±³±Öÿ?LíçÃÖçNh[/»þŒ¿×ÚµŽ³4âïDÒATÛ÷e.\-­fkùÏ\BÜf}} z 8gúˆ—oÑø¦?æËwË?…å Ì?|¯‹}wBZ¦R0;«´ ÛóŸPáàn&ÄhÇ
-ÁÁ‚gÕ€|8:²7 ke!Ó—âX$z—Þ£¹²šCï–Rã{Rã‹b0ôF¦ªÕˆ«°Àêb²’8 ÊB ´Ò7
-dµY×+qÉÕmrUFí”ÉzÓðxÊàAÐè¡Ox‘›Ê] W…~Båkcb¥æZòP¹” ôFx­(®‚v°$bn÷M3s”äP3Iß"N´aX««TÉp0¬j%ú¥Ó?(Ó
-5p‰”Eß‹5…Õ¹‰é›Ûb<ª¢=XR¾XYG™øœ&›áøÈ…¸zûjÌÜ(òV !yu"¬J’ÎQ ?äý‡È\&:sóeV2Ùw¢0ØÆû<ŸÐê£YY—‘±nµ4‡¬‚›Ì‡=‹Ÿpë@ö¸pë“.§©F¢Í=:0ˆÜ»•¥
-¼ÛxŠYˆnߢqGæö#ÐíiHÚ%¢¥´bç4¨
-
-ÂÚ%”êˆÀv°¢ã« "-wÑ÷8a©2¾;­ž
-{ö ô`¥(7‚mè*•R¢ê7hͺÜlÌÚ(ÁX7±4€AÌÂÉtzZ([ÔFœÐÞ+zi¶Ðhö¦¦µ°¡a‘ÄR ¦u`Õ´H˜`@¶é2”œm”\͆Y¶‚-¬5ª—â”ûŒ”-í-œ&kJ3{Ú㨬o+]ÙwbVj£­Ça½Ö4øm_rÁX½´ B¹Ìåá⯸‡›>Ü:E –R[–%
-8,mÅ}ÚTkd
-)f‹-á)Ç O‡ã)2¡Úp<eÞr<Ž§[FÄÎä¢|ž÷À5óŒ='ÔÖœP‡ê™nl„:œP{sBå:`Ê ú³uëÑœP‡*…ËulˆJ›1êØ•e:Ry½ÛÖoÅalâ@ §n½àaªÃAU/RNªg龡êpTU¾«gUZ V‡Ãª2ŽÓêpZB O´ö²ñª^ÛZÕ• Ì‘µ:³ÒbÐZZ}‰V3V+ÙÓ£·ZØY벩ðk Ÿê ˜×ðÙC@t?{p {‡æ¸Ý‰ß<>bȽ„ÞŠì½s\ ¸é6ìšrÖŽëÌrÙåï˜.ÎäútQ{v81OoŸ„o§ÖÖO觖|+³W|Pgv>*÷­ª5ÿ¼Ÿ$WGé|þòé·§è±÷_ÅÝìÊÛŒIõ µÏ¯( AÇSmæ³|«uï\å,ìÀ†;öÖsñ BÌí³4æ½³¯%Äý·7Š BêÝlYùÒü í‰É‡µÞžj÷Šˆ¯µ†ú {Óy›:£QmÀ6áçOœ·§m^¼µ´R»iwöõ·ØÆ]$ìUÑ'‚äƒÿñêðÿ—_üa;¤­ýÙczö°Ú_pTìå‡åÍÏV1ŒÍ?9²}ýìþ3þ^ët>˜í #ód’N¦ú9\¶-¨ikÚš³×·©_Â,Ã,ÎÙ>âå[4~…éÂòÝòãOayóßC„«*[° 1Y5®ZV÷êçCS¿?aÞ¯_¾ÿýÕ/,lÿûþãòo˜žCÿr,cý×òõ~ÿËÓÿ(­{„a
-ÀWéCÝ´I*&zn€:0!¸?ï¥Ôoc¨”Xqÿ”Øß½;,Ëe]ßëóuãÒcwÂÂ3®­*׳ôgQ
-0000000016 00000 n
-0000000250 00000 n
-0000043273 00000 n
-0000000006 00000 f
-0000179331 00000 n
-0000000008 00000 f
-0000043324 00000 n
-0000000009 00000 f
-0000000010 00000 f
-0000000011 00000 f
-0000000012 00000 f
-0000000013 00000 f
-0000000016 00000 f
-0000180537 00000 n
-0000180568 00000 n
-0000000017 00000 f
-0000000018 00000 f
-0000000019 00000 f
-0000000020 00000 f
-0000000021 00000 f
-0000000022 00000 f
-0000000023 00000 f
-0000000024 00000 f
-0000000025 00000 f
-0000000026 00000 f
-0000000027 00000 f
-0000000028 00000 f
-0000000030 00000 f
-0000179401 00000 n
-0000000031 00000 f
-0000000032 00000 f
-0000000033 00000 f
-0000000034 00000 f
-0000000035 00000 f
-0000000036 00000 f
-0000000039 00000 f
-0000180421 00000 n
-0000180452 00000 n
-0000000040 00000 f
-0000000041 00000 f
-0000000042 00000 f
-0000000043 00000 f
-0000000044 00000 f
-0000000045 00000 f
-0000000046 00000 f
-0000000047 00000 f
-0000000048 00000 f
-0000000049 00000 f
-0000000050 00000 f
-0000000052 00000 f
-0000179472 00000 n
-0000000053 00000 f
-0000000054 00000 f
-0000000055 00000 f
-0000000056 00000 f
-0000000057 00000 f
-0000000058 00000 f
-0000000061 00000 f
-0000180305 00000 n
-0000180336 00000 n
-0000000062 00000 f
-0000000063 00000 f
-0000000064 00000 f
-0000000065 00000 f
-0000000066 00000 f
-0000000067 00000 f
-0000000068 00000 f
-0000000069 00000 f
-0000000070 00000 f
-0000000071 00000 f
-0000000072 00000 f
-0000000074 00000 f
-0000179543 00000 n
-0000000075 00000 f
-0000000076 00000 f
-0000000077 00000 f
-0000000078 00000 f
-0000000079 00000 f
-0000000080 00000 f
-0000000083 00000 f
-0000180189 00000 n
-0000180220 00000 n
-0000000084 00000 f
-0000000085 00000 f
-0000000086 00000 f
-0000000087 00000 f
-0000000088 00000 f
-0000000089 00000 f
-0000000090 00000 f
-0000000091 00000 f
-0000000092 00000 f
-0000000093 00000 f
-0000000094 00000 f
-0000000096 00000 f
-0000179614 00000 n
-0000000097 00000 f
-0000000098 00000 f
-0000000099 00000 f
-0000000100 00000 f
-0000000101 00000 f
-0000000102 00000 f
-0000000105 00000 f
-0000180071 00000 n
-0000180103 00000 n
-0000000106 00000 f
-0000000107 00000 f
-0000000108 00000 f
-0000000109 00000 f
-0000000110 00000 f
-0000000111 00000 f
-0000000112 00000 f
-0000000113 00000 f
-0000000114 00000 f
-0000000115 00000 f
-0000000116 00000 f
-0000000118 00000 f
-0000179687 00000 n
-0000000119 00000 f
-0000000120 00000 f
-0000000121 00000 f
-0000000122 00000 f
-0000000123 00000 f
-0000000124 00000 f
-0000000127 00000 f
-0000179953 00000 n
-0000179985 00000 n
-0000000128 00000 f
-0000000129 00000 f
-0000000130 00000 f
-0000000131 00000 f
-0000000132 00000 f
-0000000133 00000 f
-0000000134 00000 f
-0000000135 00000 f
-0000000136 00000 f
-0000000137 00000 f
-0000000138 00000 f
-0000000139 00000 f
-0000000000 00000 f
-0000179761 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000179835 00000 n
-0000179867 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000044989 00000 n
-0000180653 00000 n
-0000043646 00000 n
-0000045295 00000 n
-0000045181 00000 n
-0000044253 00000 n
-0000044425 00000 n
-0000044475 00000 n
-0000045063 00000 n
-0000045095 00000 n
-0000045371 00000 n
-0000045743 00000 n
-0000046721 00000 n
-0000052837 00000 n
-0000053300 00000 n
-0000071520 00000 n
-0000098254 00000 n
-0000121507 00000 n
-0000129082 00000 n
-0000132781 00000 n
-0000145416 00000 n
-0000162249 00000 n
-0000180680 00000 n
-trailer <</Size 186/Root 1 0 R/Info 185 0 R/ID[<259D0C76573D48B7BC25A2F8F6E260DC><ADFA96586C954C3C9C4D87EC541C2C59>]>> startxref 180863 %%EOF \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.min.js b/library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.min.js
deleted file mode 100644
index 32535fddf..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * zeroclipboard
- * The Zero Clipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie, and a JavaScript interface.
- * Copyright 2012 Jon Rohan, James M. Greene, .
- * Released under the MIT license
- * http://jonrohan.github.com/ZeroClipboard/
- * v1.1.7
- */(function(){"use strict";var a=function(a,b){var c=a.style[b];a.currentStyle?c=a.currentStyle[b]:window.getComputedStyle&&(c=document.defaultView.getComputedStyle(a,null).getPropertyValue(b));if(c=="auto"&&b=="cursor"){var d=["a"];for(var e=0;e<d.length;e++)if(a.tagName.toLowerCase()==d[e])return"pointer"}return c},b=function(a){if(!l.prototype._singleton)return;a||(a=window.event);var b;this!==window?b=this:a.target?b=a.target:a.srcElement&&(b=a.srcElement),l.prototype._singleton.setCurrent(b)},c=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)},d=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},e=function(a,b){if(a.addClass)return a.addClass(b),a;if(b&&typeof b=="string"){var c=(b||"").split(/\s+/);if(a.nodeType===1)if(!a.className)a.className=b;else{var d=" "+a.className+" ",e=a.className;for(var f=0,g=c.length;f<g;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}}return a},f=function(a,b){if(a.removeClass)return a.removeClass(b),a;if(b&&typeof b=="string"||b===undefined){var c=(b||"").split(/\s+/);if(a.nodeType===1&&a.className)if(b){var d=(" "+a.className+" ").replace(/[\n\t]/g," ");for(var e=0,f=c.length;e<f;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},g=function(b){var c={left:0,top:0,width:b.width||b.offsetWidth||0,height:b.height||b.offsetHeight||0,zIndex:9999},d=a(b,"zIndex");d&&d!="auto"&&(c.zIndex=parseInt(d,10));while(b){var e=parseInt(a(b,"borderLeftWidth"),10),f=parseInt(a(b,"borderTopWidth"),10);c.left+=isNaN(b.offsetLeft)?0:b.offsetLeft,c.left+=isNaN(e)?0:e,c.top+=isNaN(b.offsetTop)?0:b.offsetTop,c.top+=isNaN(f)?0:f,b=b.offsetParent}return c},h=function(a){return(a.indexOf("?")>=0?"&":"?")+"nocache="+(new Date).getTime()},i=function(a){var b=[];return a.trustedDomains&&(typeof a.trustedDomains=="string"?b.push("trustedDomain="+a.trustedDomains):b.push("trustedDomain="+a.trustedDomains.join(","))),b.join("&")},j=function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},k=function(a){if(typeof a=="string")throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},l=function(a,b){a&&(l.prototype._singleton||this).glue(a);if(l.prototype._singleton)return l.prototype._singleton;l.prototype._singleton=this,this.options={};for(var c in o)this.options[c]=o[c];for(var d in b)this.options[d]=b[d];this.handlers={},l.detectFlashSupport()&&p()},m,n=[];l.prototype.setCurrent=function(b){m=b,this.reposition(),b.getAttribute("title")&&this.setTitle(b.getAttribute("title")),this.setHandCursor(a(b,"cursor")=="pointer")},l.prototype.setText=function(a){a&&a!==""&&(this.options.text=a,this.ready()&&this.flashBridge.setText(a))},l.prototype.setTitle=function(a){a&&a!==""&&this.htmlBridge.setAttribute("title",a)},l.prototype.setSize=function(a,b){this.ready()&&this.flashBridge.setSize(a,b)},l.prototype.setHandCursor=function(a){this.ready()&&this.flashBridge.setHandCursor(a)},l.version="1.1.7";var o={moviePath:"ZeroClipboard.swf",trustedDomains:null,text:null,hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",allowScriptAccess:"sameDomain"};l.setDefaults=function(a){for(var b in a)o[b]=a[b]},l.destroy=function(){l.prototype._singleton.unglue(n);var a=l.prototype._singleton.htmlBridge;a.parentNode.removeChild(a),delete l.prototype._singleton},l.detectFlashSupport=function(){var a=!1;try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}return a};var p=function(){var a=l.prototype._singleton,b=document.getElementById("global-zeroclipboard-html-bridge");if(!b){var c=' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="'+a.options.moviePath+h(a.options.moviePath)+'"/> <param name="allowScriptAccess" value="'+a.options.allowScriptAccess+'"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="'+i(a.options)+'"/> <embed src="'+a.options.moviePath+h(a.options.moviePath)+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+i(a.options)+'" scale="exactfit"> </embed> </object>';b=document.createElement("div"),b.id="global-zeroclipboard-html-bridge",b.setAttribute("class","global-zeroclipboard-container"),b.setAttribute("data-clipboard-ready",!1),b.style.position="absolute",b.style.left="-9999px",b.style.top="-9999px",b.style.width="15px",b.style.height="15px",b.style.zIndex="9999",b.innerHTML=c,document.body.appendChild(b)}a.htmlBridge=b,a.flashBridge=document["global-zeroclipboard-flash-bridge"]||b.children[0].lastElementChild};l.prototype.resetBridge=function(){this.htmlBridge.style.left="-9999px",this.htmlBridge.style.top="-9999px",this.htmlBridge.removeAttribute("title"),this.htmlBridge.removeAttribute("data-clipboard-text"),f(m,this.options.activeClass),m=null,this.options.text=null},l.prototype.ready=function(){var a=this.htmlBridge.getAttribute("data-clipboard-ready");return a==="true"||a===!0},l.prototype.reposition=function(){if(!m)return!1;var a=g(m);this.htmlBridge.style.top=a.top+"px",this.htmlBridge.style.left=a.left+"px",this.htmlBridge.style.width=a.width+"px",this.htmlBridge.style.height=a.height+"px",this.htmlBridge.style.zIndex=a.zIndex+1,this.setSize(a.width,a.height)},l.dispatch=function(a,b){l.prototype._singleton.receiveEvent(a,b)},l.prototype.on=function(a,b){var c=a.toString().split(/\s/g);for(var d=0;d<c.length;d++)a=c[d].toLowerCase().replace(/^on/,""),this.handlers[a]||(this.handlers[a]=b);this.handlers.noflash&&!l.detectFlashSupport()&&this.receiveEvent("onNoFlash",null)},l.prototype.addEventListener=l.prototype.on,l.prototype.off=function(a,b){var c=a.toString().split(/\s/g);for(var d=0;d<c.length;d++){a=c[d].toLowerCase().replace(/^on/,"");for(var e in this.handlers)e===a&&this.handlers[e]===b&&delete this.handlers[e]}},l.prototype.removeEventListener=l.prototype.off,l.prototype.receiveEvent=function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");var c=m;switch(a){case"load":if(b&&parseFloat(b.flashVersion.replace(",",".").replace(/[^0-9\.]/gi,""))<10){this.receiveEvent("onWrongFlash",{flashVersion:b.flashVersion});return}this.htmlBridge.setAttribute("data-clipboard-ready",!0);break;case"mouseover":e(c,this.options.hoverClass);break;case"mouseout":f(c,this.options.hoverClass),this.resetBridge();break;case"mousedown":e(c,this.options.activeClass);break;case"mouseup":f(c,this.options.activeClass);break;case"datarequested":var d=c.getAttribute("data-clipboard-target"),g=d?document.getElementById(d):null;if(g){var h=g.value||g.textContent||g.innerText;h&&this.setText(h)}else{var i=c.getAttribute("data-clipboard-text");i&&this.setText(i)}break;case"complete":this.options.text=null}if(this.handlers[a]){var j=this.handlers[a];typeof j=="function"?j.call(c,this,b):typeof j=="string"&&window[j].call(c,this,b)}},l.prototype.glue=function(a){a=k(a);for(var d=0;d<a.length;d++)j(a[d],n)==-1&&(n.push(a[d]),c(a[d],"mouseover",b))},l.prototype.unglue=function(a){a=k(a);for(var c=0;c<a.length;c++){d(a[c],"mouseover",b);var e=j(a[c],n);e!=-1&&n.splice(e,1)}},typeof module!="undefined"?module.exports=l:typeof define=="function"&&define.amd?define(function(){return l}):window.ZeroClipboard=l})(); \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.swf b/library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.swf
deleted file mode 100644
index 880e64ee7..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.swf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/3.2.1/assets/js/backbone.min.js b/library/font_awesome/src/3.2.1/assets/js/backbone.min.js
deleted file mode 100644
index 5846b325d..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/backbone.min.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// Backbone.js 0.9.1
-
-// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Backbone may be freely distributed under the MIT license.
-// For all details and documentation:
-// http://backbonejs.org
-(function(){var i=this,r=i.Backbone,s=Array.prototype.slice,t=Array.prototype.splice,g;g="undefined"!==typeof exports?exports:i.Backbone={};g.VERSION="0.9.1";var f=i._;!f&&"undefined"!==typeof require&&(f=require("underscore"));var h=i.jQuery||i.Zepto||i.ender;g.setDomLibrary=function(a){h=a};g.noConflict=function(){i.Backbone=r;return this};g.emulateHTTP=!1;g.emulateJSON=!1;g.Events={on:function(a,b,c){for(var d,a=a.split(/\s+/),e=this._callbacks||(this._callbacks={});d=a.shift();){d=e[d]||(e[d]=
-{});var f=d.tail||(d.tail=d.next={});f.callback=b;f.context=c;d.tail=f.next={}}return this},off:function(a,b,c){var d,e,f;if(a){if(e=this._callbacks)for(a=a.split(/\s+/);d=a.shift();)if(f=e[d],delete e[d],b&&f)for(;(f=f.next)&&f.next;)if(!(f.callback===b&&(!c||f.context===c)))this.on(d,f.callback,f.context)}else delete this._callbacks;return this},trigger:function(a){var b,c,d,e;if(!(d=this._callbacks))return this;e=d.all;for((a=a.split(/\s+/)).push(null);b=a.shift();)e&&a.push({next:e.next,tail:e.tail,
-event:b}),(c=d[b])&&a.push({next:c.next,tail:c.tail});for(e=s.call(arguments,1);c=a.pop();){b=c.tail;for(d=c.event?[c.event].concat(e):e;(c=c.next)!==b;)c.callback.apply(c.context||this,d)}return this}};g.Events.bind=g.Events.on;g.Events.unbind=g.Events.off;g.Model=function(a,b){var c;a||(a={});b&&b.parse&&(a=this.parse(a));if(c=j(this,"defaults"))a=f.extend({},c,a);b&&b.collection&&(this.collection=b.collection);this.attributes={};this._escapedAttributes={};this.cid=f.uniqueId("c");if(!this.set(a,
-{silent:!0}))throw Error("Can't create an invalid model");delete this._changed;this._previousAttributes=f.clone(this.attributes);this.initialize.apply(this,arguments)};f.extend(g.Model.prototype,g.Events,{idAttribute:"id",initialize:function(){},toJSON:function(){return f.clone(this.attributes)},get:function(a){return this.attributes[a]},escape:function(a){var b;if(b=this._escapedAttributes[a])return b;b=this.attributes[a];return this._escapedAttributes[a]=f.escape(null==b?"":""+b)},has:function(a){return null!=
-this.attributes[a]},set:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c||(c={});if(!d)return this;d instanceof g.Model&&(d=d.attributes);if(c.unset)for(e in d)d[e]=void 0;if(!this._validate(d,c))return!1;this.idAttribute in d&&(this.id=d[this.idAttribute]);var b=this.attributes,k=this._escapedAttributes,n=this._previousAttributes||{},h=this._setting;this._changed||(this._changed={});this._setting=!0;for(e in d)if(a=d[e],f.isEqual(b[e],a)||delete k[e],c.unset?delete b[e]:b[e]=
-a,this._changing&&!f.isEqual(this._changed[e],a)&&(this.trigger("change:"+e,this,a,c),this._moreChanges=!0),delete this._changed[e],!f.isEqual(n[e],a)||f.has(b,e)!=f.has(n,e))this._changed[e]=a;h||(!c.silent&&this.hasChanged()&&this.change(c),this._setting=!1);return this},unset:function(a,b){(b||(b={})).unset=!0;return this.set(a,null,b)},clear:function(a){(a||(a={})).unset=!0;return this.set(f.clone(this.attributes),a)},fetch:function(a){var a=a?f.clone(a):{},b=this,c=a.success;a.success=function(d,
-e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)};a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},save:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c=c?f.clone(c):{};c.wait&&(e=f.clone(this.attributes));a=f.extend({},c,{silent:!0});if(d&&!this.set(d,c.wait?a:c))return!1;var k=this,h=c.success;c.success=function(a,b,e){b=k.parse(a,e);c.wait&&(b=f.extend(d||{},b));if(!k.set(b,c))return!1;h?h(k,a):k.trigger("sync",k,a,c)};c.error=g.wrapError(c.error,
-k,c);b=this.isNew()?"create":"update";b=(this.sync||g.sync).call(this,b,this,c);c.wait&&this.set(e,a);return b},destroy:function(a){var a=a?f.clone(a):{},b=this,c=a.success,d=function(){b.trigger("destroy",b,b.collection,a)};if(this.isNew())return d();a.success=function(e){a.wait&&d();c?c(b,e):b.trigger("sync",b,e,a)};a.error=g.wrapError(a.error,b,a);var e=(this.sync||g.sync).call(this,"delete",this,a);a.wait||d();return e},url:function(){var a=j(this.collection,"url")||j(this,"urlRoot")||o();return this.isNew()?
-a:a+("/"==a.charAt(a.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(a){return a},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},change:function(a){if(this._changing||!this.hasChanged())return this;this._moreChanges=this._changing=!0;for(var b in this._changed)this.trigger("change:"+b,this,this._changed[b],a);for(;this._moreChanges;)this._moreChanges=!1,this.trigger("change",this,a);this._previousAttributes=f.clone(this.attributes);
-delete this._changed;this._changing=!1;return this},hasChanged:function(a){return!arguments.length?!f.isEmpty(this._changed):this._changed&&f.has(this._changed,a)},changedAttributes:function(a){if(!a)return this.hasChanged()?f.clone(this._changed):!1;var b,c=!1,d=this._previousAttributes,e;for(e in a)if(!f.isEqual(d[e],b=a[e]))(c||(c={}))[e]=b;return c},previous:function(a){return!arguments.length||!this._previousAttributes?null:this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},
-isValid:function(){return!this.validate(this.attributes)},_validate:function(a,b){if(b.silent||!this.validate)return!0;var a=f.extend({},this.attributes,a),c=this.validate(a,b);if(!c)return!0;b&&b.error?b.error(this,c,b):this.trigger("error",this,c,b);return!1}});g.Collection=function(a,b){b||(b={});b.comparator&&(this.comparator=b.comparator);this._reset();this.initialize.apply(this,arguments);a&&this.reset(a,{silent:!0,parse:b.parse})};f.extend(g.Collection.prototype,g.Events,{model:g.Model,initialize:function(){},
-toJSON:function(){return this.map(function(a){return a.toJSON()})},add:function(a,b){var c,d,e,g,h,i={},j={};b||(b={});a=f.isArray(a)?a.slice():[a];for(c=0,d=a.length;c<d;c++){if(!(e=a[c]=this._prepareModel(a[c],b)))throw Error("Can't add an invalid model to a collection");if(i[g=e.cid]||this._byCid[g]||null!=(h=e.id)&&(j[h]||this._byId[h]))throw Error("Can't add the same model to a collection twice");i[g]=j[h]=e}for(c=0;c<d;c++)(e=a[c]).on("all",this._onModelEvent,this),this._byCid[e.cid]=e,null!=
-e.id&&(this._byId[e.id]=e);this.length+=d;t.apply(this.models,[null!=b.at?b.at:this.models.length,0].concat(a));this.comparator&&this.sort({silent:!0});if(b.silent)return this;for(c=0,d=this.models.length;c<d;c++)if(i[(e=this.models[c]).cid])b.index=c,e.trigger("add",e,this,b);return this},remove:function(a,b){var c,d,e,g;b||(b={});a=f.isArray(a)?a.slice():[a];for(c=0,d=a.length;c<d;c++)if(g=this.getByCid(a[c])||this.get(a[c]))delete this._byId[g.id],delete this._byCid[g.cid],e=this.indexOf(g),this.models.splice(e,
-1),this.length--,b.silent||(b.index=e,g.trigger("remove",g,this,b)),this._removeReference(g);return this},get:function(a){return null==a?null:this._byId[null!=a.id?a.id:a]},getByCid:function(a){return a&&this._byCid[a.cid||a]},at:function(a){return this.models[a]},sort:function(a){a||(a={});if(!this.comparator)throw Error("Cannot sort a set without a comparator");var b=f.bind(this.comparator,this);1==this.comparator.length?this.models=this.sortBy(b):this.models.sort(b);a.silent||this.trigger("reset",
-this,a);return this},pluck:function(a){return f.map(this.models,function(b){return b.get(a)})},reset:function(a,b){a||(a=[]);b||(b={});for(var c=0,d=this.models.length;c<d;c++)this._removeReference(this.models[c]);this._reset();this.add(a,{silent:!0,parse:b.parse});b.silent||this.trigger("reset",this,b);return this},fetch:function(a){a=a?f.clone(a):{};void 0===a.parse&&(a.parse=!0);var b=this,c=a.success;a.success=function(d,e,f){b[a.add?"add":"reset"](b.parse(d,f),a);c&&c(b,d)};a.error=g.wrapError(a.error,
-b,a);return(this.sync||g.sync).call(this,"read",this,a)},create:function(a,b){var c=this,b=b?f.clone(b):{},a=this._prepareModel(a,b);if(!a)return!1;b.wait||c.add(a,b);var d=b.success;b.success=function(e,f){b.wait&&c.add(e,b);d?d(e,f):e.trigger("sync",a,f,b)};a.save(null,b);return a},parse:function(a){return a},chain:function(){return f(this.models).chain()},_reset:function(){this.length=0;this.models=[];this._byId={};this._byCid={}},_prepareModel:function(a,b){a instanceof g.Model?a.collection||
-(a.collection=this):(b.collection=this,a=new this.model(a,b),a._validate(a.attributes,b)||(a=!1));return a},_removeReference:function(a){this==a.collection&&delete a.collection;a.off("all",this._onModelEvent,this)},_onModelEvent:function(a,b,c,d){("add"==a||"remove"==a)&&c!=this||("destroy"==a&&this.remove(b,d),b&&a==="change:"+b.idAttribute&&(delete this._byId[b.previous(b.idAttribute)],this._byId[b.id]=b),this.trigger.apply(this,arguments))}});f.each("forEach,each,map,reduce,reduceRight,find,detect,filter,select,reject,every,all,some,any,include,contains,invoke,max,min,sortBy,sortedIndex,toArray,size,first,initial,rest,last,without,indexOf,shuffle,lastIndexOf,isEmpty,groupBy".split(","),
-function(a){g.Collection.prototype[a]=function(){return f[a].apply(f,[this.models].concat(f.toArray(arguments)))}});g.Router=function(a){a||(a={});a.routes&&(this.routes=a.routes);this._bindRoutes();this.initialize.apply(this,arguments)};var u=/:\w+/g,v=/\*\w+/g,w=/[-[\]{}()+?.,\\^$|#\s]/g;f.extend(g.Router.prototype,g.Events,{initialize:function(){},route:function(a,b,c){g.history||(g.history=new g.History);f.isRegExp(a)||(a=this._routeToRegExp(a));c||(c=this[b]);g.history.route(a,f.bind(function(d){d=
-this._extractParameters(a,d);c&&c.apply(this,d);this.trigger.apply(this,["route:"+b].concat(d));g.history.trigger("route",this,b,d)},this));return this},navigate:function(a,b){g.history.navigate(a,b)},_bindRoutes:function(){if(this.routes){var a=[],b;for(b in this.routes)a.unshift([b,this.routes[b]]);b=0;for(var c=a.length;b<c;b++)this.route(a[b][0],a[b][1],this[a[b][1]])}},_routeToRegExp:function(a){a=a.replace(w,"\\$&").replace(u,"([^/]+)").replace(v,"(.*?)");return RegExp("^"+a+"$")},_extractParameters:function(a,
-b){return a.exec(b).slice(1)}});g.History=function(){this.handlers=[];f.bindAll(this,"checkUrl")};var m=/^[#\/]/,x=/msie [\w.]+/,l=!1;f.extend(g.History.prototype,g.Events,{interval:50,getFragment:function(a,b){if(null==a)if(this._hasPushState||b){var a=window.location.pathname,c=window.location.search;c&&(a+=c)}else a=window.location.hash;a=decodeURIComponent(a);a.indexOf(this.options.root)||(a=a.substr(this.options.root.length));return a.replace(m,"")},start:function(a){if(l)throw Error("Backbone.history has already been started");
-this.options=f.extend({},{root:"/"},this.options,a);this._wantsHashChange=!1!==this.options.hashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=!(!this.options.pushState||!window.history||!window.history.pushState);var a=this.getFragment(),b=document.documentMode;if(b=x.exec(navigator.userAgent.toLowerCase())&&(!b||7>=b))this.iframe=h('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(a);this._hasPushState?h(window).bind("popstate",
-this.checkUrl):this._wantsHashChange&&"onhashchange"in window&&!b?h(window).bind("hashchange",this.checkUrl):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval));this.fragment=a;l=!0;a=window.location;b=a.pathname==this.options.root;if(this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!b)return this.fragment=this.getFragment(null,!0),window.location.replace(this.options.root+"#"+this.fragment),!0;this._wantsPushState&&this._hasPushState&&b&&a.hash&&
-(this.fragment=a.hash.replace(m,""),window.history.replaceState({},document.title,a.protocol+"//"+a.host+this.options.root+this.fragment));if(!this.options.silent)return this.loadUrl()},stop:function(){h(window).unbind("popstate",this.checkUrl).unbind("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);l=!1},route:function(a,b){this.handlers.unshift({route:a,callback:b})},checkUrl:function(){var a=this.getFragment();a==this.fragment&&this.iframe&&(a=this.getFragment(this.iframe.location.hash));
-if(a==this.fragment||a==decodeURIComponent(this.fragment))return!1;this.iframe&&this.navigate(a);this.loadUrl()||this.loadUrl(window.location.hash)},loadUrl:function(a){var b=this.fragment=this.getFragment(a);return f.any(this.handlers,function(a){if(a.route.test(b))return a.callback(b),!0})},navigate:function(a,b){if(!l)return!1;if(!b||!0===b)b={trigger:b};var c=(a||"").replace(m,"");this.fragment==c||this.fragment==decodeURIComponent(c)||(this._hasPushState?(0!=c.indexOf(this.options.root)&&(c=
-this.options.root+c),this.fragment=c,window.history[b.replace?"replaceState":"pushState"]({},document.title,c)):this._wantsHashChange?(this.fragment=c,this._updateHash(window.location,c,b.replace),this.iframe&&c!=this.getFragment(this.iframe.location.hash)&&(b.replace||this.iframe.document.open().close(),this._updateHash(this.iframe.location,c,b.replace))):window.location.assign(this.options.root+a),b.trigger&&this.loadUrl(a))},_updateHash:function(a,b,c){c?a.replace(a.toString().replace(/(javascript:|#).*$/,
-"")+"#"+b):a.hash=b}});g.View=function(a){this.cid=f.uniqueId("view");this._configure(a||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var y=/^(\S+)\s*(.*)$/,p="model,collection,el,id,attributes,className,tagName".split(",");f.extend(g.View.prototype,g.Events,{tagName:"div",$:function(a){return this.$el.find(a)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();return this},make:function(a,b,c){a=document.createElement(a);
-b&&h(a).attr(b);c&&h(a).html(c);return a},setElement:function(a,b){this.$el=h(a);this.el=this.$el[0];!1!==b&&this.delegateEvents();return this},delegateEvents:function(a){if(a||(a=j(this,"events"))){this.undelegateEvents();for(var b in a){var c=a[b];f.isFunction(c)||(c=this[a[b]]);if(!c)throw Error('Event "'+a[b]+'" does not exist');var d=b.match(y),e=d[1],d=d[2],c=f.bind(c,this),e=e+(".delegateEvents"+this.cid);""===d?this.$el.bind(e,c):this.$el.delegate(d,e,c)}}},undelegateEvents:function(){this.$el.unbind(".delegateEvents"+
-this.cid)},_configure:function(a){this.options&&(a=f.extend({},this.options,a));for(var b=0,c=p.length;b<c;b++){var d=p[b];a[d]&&(this[d]=a[d])}this.options=a},_ensureElement:function(){if(this.el)this.setElement(this.el,!1);else{var a=j(this,"attributes")||{};this.id&&(a.id=this.id);this.className&&(a["class"]=this.className);this.setElement(this.make(this.tagName,a),!1)}}});g.Model.extend=g.Collection.extend=g.Router.extend=g.View.extend=function(a,b){var c=z(this,a,b);c.extend=this.extend;return c};
-var A={create:"POST",update:"PUT","delete":"DELETE",read:"GET"};g.sync=function(a,b,c){var d=A[a],e={type:d,dataType:"json"};c.url||(e.url=j(b,"url")||o());if(!c.data&&b&&("create"==a||"update"==a))e.contentType="application/json",e.data=JSON.stringify(b.toJSON());g.emulateJSON&&(e.contentType="application/x-www-form-urlencoded",e.data=e.data?{model:e.data}:{});if(g.emulateHTTP&&("PUT"===d||"DELETE"===d))g.emulateJSON&&(e.data._method=d),e.type="POST",e.beforeSend=function(a){a.setRequestHeader("X-HTTP-Method-Override",
-d)};"GET"!==e.type&&!g.emulateJSON&&(e.processData=!1);return h.ajax(f.extend(e,c))};g.wrapError=function(a,b,c){return function(d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}};var q=function(){},z=function(a,b,c){var d;d=b&&b.hasOwnProperty("constructor")?b.constructor:function(){a.apply(this,arguments)};f.extend(d,a);q.prototype=a.prototype;d.prototype=new q;b&&f.extend(d.prototype,b);c&&f.extend(d,c);d.prototype.constructor=d;d.__super__=a.prototype;return d},j=function(a,b){return!a||!a[b]?
-null:f.isFunction(a[b])?a[b]():a[b]},o=function(){throw Error('A "url" property or function must be specified');}}).call(this);
diff --git a/library/font_awesome/src/3.2.1/assets/js/bootstrap-2.3.1.min.js b/library/font_awesome/src/3.2.1/assets/js/bootstrap-2.3.1.min.js
deleted file mode 100644
index 95c5ac5ee..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/bootstrap-2.3.1.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
-* Bootstrap.js by @fat & @mdo
-* Copyright 2012 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||s.toggleClass("open"),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown-menu",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.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},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.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>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery); \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/js/bootstrap-222.min.js b/library/font_awesome/src/3.2.1/assets/js/bootstrap-222.min.js
deleted file mode 100644
index 6eeb15ce3..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/bootstrap-222.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
-* Bootstrap.js by @fat & @mdo
-* Copyright 2012 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function($){"use strict";$(function(){$.support.transition=function(){var transitionEnd=function(){var name,el=document.createElement("bootstrap"),transEndEventNames={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(name in transEndEventNames)if(void 0!==el.style[name])return transEndEventNames[name]}();return transitionEnd&&{end:transitionEnd}}()})}(window.jQuery),!function($){"use strict";var dismiss='[data-dismiss="alert"]',Alert=function(el){$(el).on("click",dismiss,this.close)};Alert.prototype.close=function(e){function removeElement(){$parent.trigger("closed").remove()}var $parent,$this=$(this),selector=$this.attr("data-target");selector||(selector=$this.attr("href"),selector=selector&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),e&&e.preventDefault(),$parent.length||($parent=$this.hasClass("alert")?$this:$this.parent()),$parent.trigger(e=$.Event("close")),e.isDefaultPrevented()||($parent.removeClass("in"),$.support.transition&&$parent.hasClass("fade")?$parent.on($.support.transition.end,removeElement):removeElement())};var old=$.fn.alert;$.fn.alert=function(option){return this.each(function(){var $this=$(this),data=$this.data("alert");data||$this.data("alert",data=new Alert(this)),"string"==typeof option&&data[option].call($this)})},$.fn.alert.Constructor=Alert,$.fn.alert.noConflict=function(){return $.fn.alert=old,this},$(document).on("click.alert.data-api",dismiss,Alert.prototype.close)}(window.jQuery),!function($){"use strict";var Button=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.button.defaults,options)};Button.prototype.setState=function(state){var d="disabled",$el=this.$element,data=$el.data(),val=$el.is("input")?"val":"html";state+="Text",data.resetText||$el.data("resetText",$el[val]()),$el[val](data[state]||this.options[state]),setTimeout(function(){"loadingText"==state?$el.addClass(d).attr(d,d):$el.removeClass(d).removeAttr(d)},0)},Button.prototype.toggle=function(){var $parent=this.$element.closest('[data-toggle="buttons-radio"]');$parent&&$parent.find(".active").removeClass("active"),this.$element.toggleClass("active")};var old=$.fn.button;$.fn.button=function(option){return this.each(function(){var $this=$(this),data=$this.data("button"),options="object"==typeof option&&option;data||$this.data("button",data=new Button(this,options)),"toggle"==option?data.toggle():option&&data.setState(option)})},$.fn.button.defaults={loadingText:"loading..."},$.fn.button.Constructor=Button,$.fn.button.noConflict=function(){return $.fn.button=old,this},$(document).on("click.button.data-api","[data-toggle^=button]",function(e){var $btn=$(e.target);$btn.hasClass("btn")||($btn=$btn.closest(".btn")),$btn.button("toggle")})}(window.jQuery),!function($){"use strict";var Carousel=function(element,options){this.$element=$(element),this.options=options,"hover"==this.options.pause&&this.$element.on("mouseenter",$.proxy(this.pause,this)).on("mouseleave",$.proxy(this.cycle,this))};Carousel.prototype={cycle:function(e){return e||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval($.proxy(this.next,this),this.options.interval)),this},to:function(pos){var $active=this.$element.find(".item.active"),children=$active.parent().children(),activePos=children.index($active),that=this;if(!(pos>children.length-1||0>pos))return this.sliding?this.$element.one("slid",function(){that.to(pos)}):activePos==pos?this.pause().cycle():this.slide(pos>activePos?"next":"prev",$(children[pos]))},pause:function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&$.support.transition.end&&(this.$element.trigger($.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){return this.sliding?void 0:this.slide("next")},prev:function(){return this.sliding?void 0:this.slide("prev")},slide:function(type,next){var e,$active=this.$element.find(".item.active"),$next=next||$active[type](),isCycling=this.interval,direction="next"==type?"left":"right",fallback="next"==type?"first":"last",that=this;if(this.sliding=!0,isCycling&&this.pause(),$next=$next.length?$next:this.$element.find(".item")[fallback](),e=$.Event("slide",{relatedTarget:$next[0]}),!$next.hasClass("active")){if($.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(e),e.isDefaultPrevented())return;$next.addClass(type),$next[0].offsetWidth,$active.addClass(direction),$next.addClass(direction),this.$element.one($.support.transition.end,function(){$next.removeClass([type,direction].join(" ")).addClass("active"),$active.removeClass(["active",direction].join(" ")),that.sliding=!1,setTimeout(function(){that.$element.trigger("slid")},0)})}else{if(this.$element.trigger(e),e.isDefaultPrevented())return;$active.removeClass("active"),$next.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return isCycling&&this.cycle(),this}}};var old=$.fn.carousel;$.fn.carousel=function(option){return this.each(function(){var $this=$(this),data=$this.data("carousel"),options=$.extend({},$.fn.carousel.defaults,"object"==typeof option&&option),action="string"==typeof option?option:options.slide;data||$this.data("carousel",data=new Carousel(this,options)),"number"==typeof option?data.to(option):action?data[action]():options.interval&&data.cycle()})},$.fn.carousel.defaults={interval:5e3,pause:"hover"},$.fn.carousel.Constructor=Carousel,$.fn.carousel.noConflict=function(){return $.fn.carousel=old,this},$(document).on("click.carousel.data-api","[data-slide]",function(e){var href,$this=$(this),$target=$($this.attr("data-target")||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")),options=$.extend({},$target.data(),$this.data());$target.carousel(options),e.preventDefault()})}(window.jQuery),!function($){"use strict";var Collapse=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.collapse.defaults,options),this.options.parent&&(this.$parent=$(this.options.parent)),this.options.toggle&&this.toggle()};Collapse.prototype={constructor:Collapse,dimension:function(){var hasWidth=this.$element.hasClass("width");return hasWidth?"width":"height"},show:function(){var dimension,scroll,actives,hasData;if(!this.transitioning){if(dimension=this.dimension(),scroll=$.camelCase(["scroll",dimension].join("-")),actives=this.$parent&&this.$parent.find("> .accordion-group > .in"),actives&&actives.length){if(hasData=actives.data("collapse"),hasData&&hasData.transitioning)return;actives.collapse("hide"),hasData||actives.data("collapse",null)}this.$element[dimension](0),this.transition("addClass",$.Event("show"),"shown"),$.support.transition&&this.$element[dimension](this.$element[0][scroll])}},hide:function(){var dimension;this.transitioning||(dimension=this.dimension(),this.reset(this.$element[dimension]()),this.transition("removeClass",$.Event("hide"),"hidden"),this.$element[dimension](0))},reset:function(size){var dimension=this.dimension();return this.$element.removeClass("collapse")[dimension](size||"auto")[0].offsetWidth,this.$element[null!==size?"addClass":"removeClass"]("collapse"),this},transition:function(method,startEvent,completeEvent){var that=this,complete=function(){"show"==startEvent.type&&that.reset(),that.transitioning=0,that.$element.trigger(completeEvent)};this.$element.trigger(startEvent),startEvent.isDefaultPrevented()||(this.transitioning=1,this.$element[method]("in"),$.support.transition&&this.$element.hasClass("collapse")?this.$element.one($.support.transition.end,complete):complete())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var old=$.fn.collapse;$.fn.collapse=function(option){return this.each(function(){var $this=$(this),data=$this.data("collapse"),options="object"==typeof option&&option;data||$this.data("collapse",data=new Collapse(this,options)),"string"==typeof option&&data[option]()})},$.fn.collapse.defaults={toggle:!0},$.fn.collapse.Constructor=Collapse,$.fn.collapse.noConflict=function(){return $.fn.collapse=old,this},$(document).on("click.collapse.data-api","[data-toggle=collapse]",function(e){var href,$this=$(this),target=$this.attr("data-target")||e.preventDefault()||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,""),option=$(target).data("collapse")?"toggle":$this.data();$this[$(target).hasClass("in")?"addClass":"removeClass"]("collapsed"),$(target).collapse(option)})}(window.jQuery),!function($){"use strict";function clearMenus(){$(toggle).each(function(){getParent($(this)).removeClass("open")})}function getParent($this){var $parent,selector=$this.attr("data-target");return selector||(selector=$this.attr("href"),selector=selector&&/#/.test(selector)&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),$parent.length||($parent=$this.parent()),$parent}var toggle="[data-toggle=dropdown]",Dropdown=function(element){var $el=$(element).on("click.dropdown.data-api",this.toggle);$("html").on("click.dropdown.data-api",function(){$el.parent().removeClass("open")})};Dropdown.prototype={constructor:Dropdown,toggle:function(){var $parent,isActive,$this=$(this);if(!$this.is(".disabled, :disabled"))return $parent=getParent($this),isActive=$parent.hasClass("open"),clearMenus(),isActive||$parent.toggleClass("open"),$this.focus(),!1},keydown:function(e){var $this,$items,$parent,isActive,index;if(/(38|40|27)/.test(e.keyCode)&&($this=$(this),e.preventDefault(),e.stopPropagation(),!$this.is(".disabled, :disabled"))){if($parent=getParent($this),isActive=$parent.hasClass("open"),!isActive||isActive&&27==e.keyCode)return $this.click();$items=$("[role=menu] li:not(.divider):visible a",$parent),$items.length&&(index=$items.index($items.filter(":focus")),38==e.keyCode&&index>0&&index--,40==e.keyCode&&$items.length-1>index&&index++,~index||(index=0),$items.eq(index).focus())}}};var old=$.fn.dropdown;$.fn.dropdown=function(option){return this.each(function(){var $this=$(this),data=$this.data("dropdown");data||$this.data("dropdown",data=new Dropdown(this)),"string"==typeof option&&data[option].call($this)})},$.fn.dropdown.Constructor=Dropdown,$.fn.dropdown.noConflict=function(){return $.fn.dropdown=old,this},$(document).on("click.dropdown.data-api touchstart.dropdown.data-api",clearMenus).on("click.dropdown touchstart.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("touchstart.dropdown.data-api",".dropdown-menu",function(e){e.stopPropagation()}).on("click.dropdown.data-api touchstart.dropdown.data-api",toggle,Dropdown.prototype.toggle).on("keydown.dropdown.data-api touchstart.dropdown.data-api",toggle+", [role=menu]",Dropdown.prototype.keydown)}(window.jQuery),!function($){"use strict";var Modal=function(element,options){this.options=options,this.$element=$(element).delegate('[data-dismiss="modal"]',"click.dismiss.modal",$.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};Modal.prototype={constructor:Modal,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var that=this,e=$.Event("show");this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var transition=$.support.transition&&that.$element.hasClass("fade");that.$element.parent().length||that.$element.appendTo(document.body),that.$element.show(),transition&&that.$element[0].offsetWidth,that.$element.addClass("in").attr("aria-hidden",!1),that.enforceFocus(),transition?that.$element.one($.support.transition.end,function(){that.$element.focus().trigger("shown")}):that.$element.focus().trigger("shown")}))},hide:function(e){e&&e.preventDefault(),e=$.Event("hide"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),$(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),$.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var that=this;$(document).on("focusin.modal",function(e){that.$element[0]===e.target||that.$element.has(e.target).length||that.$element.focus()})},escape:function(){var that=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(e){27==e.which&&that.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var that=this,timeout=setTimeout(function(){that.$element.off($.support.transition.end),that.hideModal()},500);this.$element.one($.support.transition.end,function(){clearTimeout(timeout),that.hideModal()})},hideModal:function(){this.$element.hide().trigger("hidden"),this.backdrop()},removeBackdrop:function(){this.$backdrop.remove(),this.$backdrop=null},backdrop:function(callback){var animate=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var doAnimate=$.support.transition&&animate;this.$backdrop=$('<div class="modal-backdrop '+animate+'" />').appendTo(document.body),this.$backdrop.click("static"==this.options.backdrop?$.proxy(this.$element[0].focus,this.$element[0]):$.proxy(this.hide,this)),doAnimate&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),doAnimate?this.$backdrop.one($.support.transition.end,callback):callback()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),$.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one($.support.transition.end,$.proxy(this.removeBackdrop,this)):this.removeBackdrop()):callback&&callback()}};var old=$.fn.modal;$.fn.modal=function(option){return this.each(function(){var $this=$(this),data=$this.data("modal"),options=$.extend({},$.fn.modal.defaults,$this.data(),"object"==typeof option&&option);data||$this.data("modal",data=new Modal(this,options)),"string"==typeof option?data[option]():options.show&&data.show()})},$.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},$.fn.modal.Constructor=Modal,$.fn.modal.noConflict=function(){return $.fn.modal=old,this},$(document).on("click.modal.data-api",'[data-toggle="modal"]',function(e){var $this=$(this),href=$this.attr("href"),$target=$($this.attr("data-target")||href&&href.replace(/.*(?=#[^\s]+$)/,"")),option=$target.data("modal")?"toggle":$.extend({remote:!/#/.test(href)&&href},$target.data(),$this.data());e.preventDefault(),$target.modal(option).one("hide",function(){$this.focus()})})}(window.jQuery),!function($){"use strict";var Tooltip=function(element,options){this.init("tooltip",element,options)};Tooltip.prototype={constructor:Tooltip,init:function(type,element,options){var eventIn,eventOut;this.type=type,this.$element=$(element),this.options=this.getOptions(options),this.enabled=!0,"click"==this.options.trigger?this.$element.on("click."+this.type,this.options.selector,$.proxy(this.toggle,this)):"manual"!=this.options.trigger&&(eventIn="hover"==this.options.trigger?"mouseenter":"focus",eventOut="hover"==this.options.trigger?"mouseleave":"blur",this.$element.on(eventIn+"."+this.type,this.options.selector,$.proxy(this.enter,this)),this.$element.on(eventOut+"."+this.type,this.options.selector,$.proxy(this.leave,this))),this.options.selector?this._options=$.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(options){return options=$.extend({},$.fn[this.type].defaults,options,this.$element.data()),options.delay&&"number"==typeof options.delay&&(options.delay={show:options.delay,hide:options.delay}),options},enter:function(e){var self=$(e.currentTarget)[this.type](this._options).data(this.type);return self.options.delay&&self.options.delay.show?(clearTimeout(this.timeout),self.hoverState="in",this.timeout=setTimeout(function(){"in"==self.hoverState&&self.show()},self.options.delay.show),void 0):self.show()},leave:function(e){var self=$(e.currentTarget)[this.type](this._options).data(this.type);return this.timeout&&clearTimeout(this.timeout),self.options.delay&&self.options.delay.hide?(self.hoverState="out",this.timeout=setTimeout(function(){"out"==self.hoverState&&self.hide()},self.options.delay.hide),void 0):self.hide()},show:function(){var $tip,inside,pos,actualWidth,actualHeight,placement,tp;if(this.hasContent()&&this.enabled){switch($tip=this.tip(),this.setContent(),this.options.animation&&$tip.addClass("fade"),placement="function"==typeof this.options.placement?this.options.placement.call(this,$tip[0],this.$element[0]):this.options.placement,inside=/in/.test(placement),$tip.detach().css({top:0,left:0,display:"block"}).insertAfter(this.$element),pos=this.getPosition(inside),actualWidth=$tip[0].offsetWidth,actualHeight=$tip[0].offsetHeight,inside?placement.split(" ")[1]:placement){case"bottom":tp={top:pos.top+pos.height,left:pos.left+pos.width/2-actualWidth/2};break;case"top":tp={top:pos.top-actualHeight,left:pos.left+pos.width/2-actualWidth/2};break;case"left":tp={top:pos.top+pos.height/2-actualHeight/2,left:pos.left-actualWidth};break;case"right":tp={top:pos.top+pos.height/2-actualHeight/2,left:pos.left+pos.width}}$tip.offset(tp).addClass(placement).addClass("in")}},setContent:function(){var $tip=this.tip(),title=this.getTitle();$tip.find(".tooltip-inner")[this.options.html?"html":"text"](title),$tip.removeClass("fade in top bottom left right")},hide:function(){function removeWithAnimation(){var timeout=setTimeout(function(){$tip.off($.support.transition.end).detach()},500);$tip.one($.support.transition.end,function(){clearTimeout(timeout),$tip.detach()})}var $tip=this.tip();return $tip.removeClass("in"),$.support.transition&&this.$tip.hasClass("fade")?removeWithAnimation():$tip.detach(),this},fixTitle:function(){var $e=this.$element;($e.attr("title")||"string"!=typeof $e.attr("data-original-title"))&&$e.attr("data-original-title",$e.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(inside){return $.extend({},inside?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var title,$e=this.$element,o=this.options;return title=$e.attr("data-original-title")||("function"==typeof o.title?o.title.call($e[0]):o.title)},tip:function(){return this.$tip=this.$tip||$(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(e){var self=$(e.currentTarget)[this.type](this._options).data(this.type);self[self.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var old=$.fn.tooltip;$.fn.tooltip=function(option){return this.each(function(){var $this=$(this),data=$this.data("tooltip"),options="object"==typeof option&&option;data||$this.data("tooltip",data=new Tooltip(this,options)),"string"==typeof option&&data[option]()})},$.fn.tooltip.Constructor=Tooltip,$.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0,html:!1},$.fn.tooltip.noConflict=function(){return $.fn.tooltip=old,this}}(window.jQuery),!function($){"use strict";var Popover=function(element,options){this.init("popover",element,options)};Popover.prototype=$.extend({},$.fn.tooltip.Constructor.prototype,{constructor:Popover,setContent:function(){var $tip=this.tip(),title=this.getTitle(),content=this.getContent();$tip.find(".popover-title")[this.options.html?"html":"text"](title),$tip.find(".popover-content")[this.options.html?"html":"text"](content),$tip.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var content,$e=this.$element,o=this.options;return content=$e.attr("data-content")||("function"==typeof o.content?o.content.call($e[0]):o.content)},tip:function(){return this.$tip||(this.$tip=$(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var old=$.fn.popover;$.fn.popover=function(option){return this.each(function(){var $this=$(this),data=$this.data("popover"),options="object"==typeof option&&option;data||$this.data("popover",data=new Popover(this,options)),"string"==typeof option&&data[option]()})},$.fn.popover.Constructor=Popover,$.fn.popover.defaults=$.extend({},$.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'}),$.fn.popover.noConflict=function(){return $.fn.popover=old,this}}(window.jQuery),!function($){"use strict";function ScrollSpy(element,options){var href,process=$.proxy(this.process,this),$element=$(element).is("body")?$(window):$(element);this.options=$.extend({},$.fn.scrollspy.defaults,options),this.$scrollElement=$element.on("scroll.scroll-spy.data-api",process),this.selector=(this.options.target||(href=$(element).attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=$("body"),this.refresh(),this.process()}ScrollSpy.prototype={constructor:ScrollSpy,refresh:function(){var $targets,self=this;this.offsets=$([]),this.targets=$([]),$targets=this.$body.find(this.selector).map(function(){var $el=$(this),href=$el.data("target")||$el.attr("href"),$href=/^#\w/.test(href)&&$(href);return $href&&$href.length&&[[$href.position().top+self.$scrollElement.scrollTop(),href]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){self.offsets.push(this[0]),self.targets.push(this[1])})},process:function(){var i,scrollTop=this.$scrollElement.scrollTop()+this.options.offset,scrollHeight=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,maxScroll=scrollHeight-this.$scrollElement.height(),offsets=this.offsets,targets=this.targets,activeTarget=this.activeTarget;if(scrollTop>=maxScroll)return activeTarget!=(i=targets.last()[0])&&this.activate(i);for(i=offsets.length;i--;)activeTarget!=targets[i]&&scrollTop>=offsets[i]&&(!offsets[i+1]||offsets[i+1]>=scrollTop)&&this.activate(targets[i])},activate:function(target){var active,selector;this.activeTarget=target,$(this.selector).parent(".active").removeClass("active"),selector=this.selector+'[data-target="'+target+'"],'+this.selector+'[href="'+target+'"]',active=$(selector).parent("li").addClass("active"),active.parent(".dropdown-menu").length&&(active=active.closest("li.dropdown").addClass("active")),active.trigger("activate")}};var old=$.fn.scrollspy;$.fn.scrollspy=function(option){return this.each(function(){var $this=$(this),data=$this.data("scrollspy"),options="object"==typeof option&&option;data||$this.data("scrollspy",data=new ScrollSpy(this,options)),"string"==typeof option&&data[option]()})},$.fn.scrollspy.Constructor=ScrollSpy,$.fn.scrollspy.defaults={offset:10},$.fn.scrollspy.noConflict=function(){return $.fn.scrollspy=old,this},$(window).on("load",function(){$('[data-spy="scroll"]').each(function(){var $spy=$(this);$spy.scrollspy($spy.data())})})}(window.jQuery),!function($){"use strict";var Tab=function(element){this.element=$(element)};Tab.prototype={constructor:Tab,show:function(){var previous,$target,e,$this=this.element,$ul=$this.closest("ul:not(.dropdown-menu)"),selector=$this.attr("data-target");selector||(selector=$this.attr("href"),selector=selector&&selector.replace(/.*(?=#[^\s]*$)/,"")),$this.parent("li").hasClass("active")||(previous=$ul.find(".active:last a")[0],e=$.Event("show",{relatedTarget:previous}),$this.trigger(e),e.isDefaultPrevented()||($target=$(selector),this.activate($this.parent("li"),$ul),this.activate($target,$target.parent(),function(){$this.trigger({type:"shown",relatedTarget:previous})})))},activate:function(element,container,callback){function next(){$active.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),element.addClass("active"),transition?(element[0].offsetWidth,element.addClass("in")):element.removeClass("fade"),element.parent(".dropdown-menu")&&element.closest("li.dropdown").addClass("active"),callback&&callback()}var $active=container.find("> .active"),transition=callback&&$.support.transition&&$active.hasClass("fade");transition?$active.one($.support.transition.end,next):next(),$active.removeClass("in")}};var old=$.fn.tab;$.fn.tab=function(option){return this.each(function(){var $this=$(this),data=$this.data("tab");data||$this.data("tab",data=new Tab(this)),"string"==typeof option&&data[option]()})},$.fn.tab.Constructor=Tab,$.fn.tab.noConflict=function(){return $.fn.tab=old,this},$(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(e){e.preventDefault(),$(this).tab("show")})}(window.jQuery),!function($){"use strict";var Typeahead=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.typeahead.defaults,options),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=$(this.options.menu),this.shown=!1,this.listen()};Typeahead.prototype={constructor:Typeahead,select:function(){var val=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(val)).change(),this.hide()},updater:function(item){return item},show:function(){var pos=$.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:pos.top+pos.height,left:pos.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(){var items;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(items=$.isFunction(this.source)?this.source(this.query,$.proxy(this.process,this)):this.source,items?this.process(items):this)},process:function(items){var that=this;return items=$.grep(items,function(item){return that.matcher(item)}),items=this.sorter(items),items.length?this.render(items.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(item){return~item.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(items){for(var item,beginswith=[],caseSensitive=[],caseInsensitive=[];item=items.shift();)item.toLowerCase().indexOf(this.query.toLowerCase())?~item.indexOf(this.query)?caseSensitive.push(item):caseInsensitive.push(item):beginswith.push(item);return beginswith.concat(caseSensitive,caseInsensitive)},highlighter:function(item){var query=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return item.replace(RegExp("("+query+")","ig"),function($1,match){return"<strong>"+match+"</strong>"})},render:function(items){var that=this;return items=$(items).map(function(i,item){return i=$(that.options.item).attr("data-value",item),i.find("a").html(that.highlighter(item)),i[0]}),items.first().addClass("active"),this.$menu.html(items),this},next:function(){var active=this.$menu.find(".active").removeClass("active"),next=active.next();next.length||(next=$(this.$menu.find("li")[0])),next.addClass("active")},prev:function(){var active=this.$menu.find(".active").removeClass("active"),prev=active.prev();prev.length||(prev=this.$menu.find("li").last()),prev.addClass("active")},listen:function(){this.$element.on("blur",$.proxy(this.blur,this)).on("keypress",$.proxy(this.keypress,this)).on("keyup",$.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",$.proxy(this.keydown,this)),this.$menu.on("click",$.proxy(this.click,this)).on("mouseenter","li",$.proxy(this.mouseenter,this))},eventSupported:function(eventName){var isSupported=eventName in this.$element;return isSupported||(this.$element.setAttribute(eventName,"return;"),isSupported="function"==typeof this.$element[eventName]),isSupported},move:function(e){if(this.shown){switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()}},keydown:function(e){this.suppressKeyPressRepeat=~$.inArray(e.keyCode,[40,38,9,13,27]),this.move(e)},keypress:function(e){this.suppressKeyPressRepeat||this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},blur:function(){var that=this;setTimeout(function(){that.hide()},150)},click:function(e){e.stopPropagation(),e.preventDefault(),this.select()},mouseenter:function(e){this.$menu.find(".active").removeClass("active"),$(e.currentTarget).addClass("active")}};var old=$.fn.typeahead;$.fn.typeahead=function(option){return this.each(function(){var $this=$(this),data=$this.data("typeahead"),options="object"==typeof option&&option;data||$this.data("typeahead",data=new Typeahead(this,options)),"string"==typeof option&&data[option]()})},$.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},$.fn.typeahead.Constructor=Typeahead,$.fn.typeahead.noConflict=function(){return $.fn.typeahead=old,this},$(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(e){var $this=$(this);$this.data("typeahead")||(e.preventDefault(),$this.typeahead($this.data()))})}(window.jQuery),!function($){"use strict";var Affix=function(element,options){this.options=$.extend({},$.fn.affix.defaults,options),this.$window=$(window).on("scroll.affix.data-api",$.proxy(this.checkPosition,this)).on("click.affix.data-api",$.proxy(function(){setTimeout($.proxy(this.checkPosition,this),1)},this)),this.$element=$(element),this.checkPosition()};Affix.prototype.checkPosition=function(){if(this.$element.is(":visible")){var affix,scrollHeight=$(document).height(),scrollTop=this.$window.scrollTop(),position=this.$element.offset(),offset=this.options.offset,offsetBottom=offset.bottom,offsetTop=offset.top,reset="affix affix-top affix-bottom";"object"!=typeof offset&&(offsetBottom=offsetTop=offset),"function"==typeof offsetTop&&(offsetTop=offset.top()),"function"==typeof offsetBottom&&(offsetBottom=offset.bottom()),affix=null!=this.unpin&&scrollTop+this.unpin<=position.top?!1:null!=offsetBottom&&position.top+this.$element.height()>=scrollHeight-offsetBottom?"bottom":null!=offsetTop&&offsetTop>=scrollTop?"top":!1,this.affixed!==affix&&(this.affixed=affix,this.unpin="bottom"==affix?position.top-scrollTop:null,this.$element.removeClass(reset).addClass("affix"+(affix?"-"+affix:"")))}};var old=$.fn.affix;$.fn.affix=function(option){return this.each(function(){var $this=$(this),data=$this.data("affix"),options="object"==typeof option&&option;data||$this.data("affix",data=new Affix(this,options)),"string"==typeof option&&data[option]()})},$.fn.affix.Constructor=Affix,$.fn.affix.defaults={offset:0},$.fn.affix.noConflict=function(){return $.fn.affix=old,this},$(window).on("load",function(){$('[data-spy="affix"]').each(function(){var $spy=$(this),data=$spy.data();data.offset=data.offset||{},data.offsetBottom&&(data.offset.bottom=data.offsetBottom),data.offsetTop&&(data.offset.top=data.offsetTop),$spy.affix(data)})})}(window.jQuery); \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/js/jquery-1.7.1.min.js b/library/font_awesome/src/3.2.1/assets/js/jquery-1.7.1.min.js
deleted file mode 100644
index 198b3ff07..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/jquery-1.7.1.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.7.1 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
-f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
-{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/js/prettify.min.js b/library/font_awesome/src/3.2.1/assets/js/prettify.min.js
deleted file mode 100644
index eef5ad7e6..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/prettify.min.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
-(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
-[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
-f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
-(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
-{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
-t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
-"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
-l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
-q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
-q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
-"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
-a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
-for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
-m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
-a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
-j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
-"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
-H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
-J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
-I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
-["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
-/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
-["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
-hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
-!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
-250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
-PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
diff --git a/library/font_awesome/src/3.2.1/assets/js/site.js b/library/font_awesome/src/3.2.1/assets/js/site.js
deleted file mode 100644
index 16fa261a6..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/site.js
+++ /dev/null
@@ -1,38 +0,0 @@
-$(function() {
- // start the icon carousel
- $('#iconCarousel').carousel({
- interval: 5000
- });
-
-
-
-
- // make code pretty
-// $('pre').addClass('prettyprint');
-// window.prettyPrint && prettyPrint();
-
- // Disable links with href="#" inside <section>, so users can click on them
- // to preview :active state without being scrolled up to the top of the page.
-// $('section a[href="#"]').click(function(e) {
-// e.preventDefault();
-// e.stopPropagation();
-// });
-
-// // inject twitter & github counts
-// $.ajax({
-// url: 'http://api.twitter.com/1/users/show.json',
-// data: {screen_name: 'fortaweso_me'},
-// dataType: 'jsonp',
-// success: function(data) {
-// $('#followers').html(data.followers_count);
-// }
-// });
-// $.ajax({
-// url: 'https://api.github.com/repos/fortawesome/Font-Awesome',
-// dataType: 'jsonp',
-// success: function(data) {
-// $('#watchers').html(data.data.watchers);
-// $('#forks').html(data.data.forks);
-// }
-// });
-});
diff --git a/library/font_awesome/src/3.2.1/assets/js/underscore.min.js b/library/font_awesome/src/3.2.1/assets/js/underscore.min.js
deleted file mode 100644
index 5b55f32be..000000000
--- a/library/font_awesome/src/3.2.1/assets/js/underscore.min.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Underscore.js 1.3.1
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
-h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
-b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
-null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
-function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
-e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
-function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
-return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
-c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
-b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
-return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
-d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
-var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
-c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
-a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
-b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
-1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
-b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
-b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
-function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
-u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
-function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
-true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/accordion.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/accordion.less
deleted file mode 100644
index d63523bc8..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/accordion.less
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Accordion
-// --------------------------------------------------
-
-
-// Parent container
-.accordion {
- margin-bottom: @baseLineHeight;
-}
-
-// Group == heading + body
-.accordion-group {
- margin-bottom: 2px;
- border: 1px solid #e5e5e5;
- .border-radius(@baseBorderRadius);
-}
-.accordion-heading {
- border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
- display: block;
- padding: 8px 15px;
-}
-
-// General toggle styles
-.accordion-toggle {
- cursor: pointer;
-}
-
-// Inner needs the styles because you can't animate properly with any styles on the element
-.accordion-inner {
- padding: 9px 15px;
- border-top: 1px solid #e5e5e5;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/alerts.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/alerts.less
deleted file mode 100644
index 0116b191b..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/alerts.less
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// Alerts
-// --------------------------------------------------
-
-
-// Base styles
-// -------------------------
-
-.alert {
- padding: 8px 35px 8px 14px;
- margin-bottom: @baseLineHeight;
- text-shadow: 0 1px 0 rgba(255,255,255,.5);
- background-color: @warningBackground;
- border: 1px solid @warningBorder;
- .border-radius(@baseBorderRadius);
-}
-.alert,
-.alert h4 {
- // Specified for the h4 to prevent conflicts of changing @headingsColor
- color: @warningText;
-}
-.alert h4 {
- margin: 0;
-}
-
-// Adjust close link position
-.alert .close {
- position: relative;
- top: -2px;
- right: -21px;
- line-height: @baseLineHeight;
-}
-
-
-// Alternate styles
-// -------------------------
-
-.alert-success {
- background-color: @successBackground;
- border-color: @successBorder;
- color: @successText;
-}
-.alert-success h4 {
- color: @successText;
-}
-.alert-danger,
-.alert-error {
- background-color: @errorBackground;
- border-color: @errorBorder;
- color: @errorText;
-}
-.alert-danger h4,
-.alert-error h4 {
- color: @errorText;
-}
-.alert-info {
- background-color: @infoBackground;
- border-color: @infoBorder;
- color: @infoText;
-}
-.alert-info h4 {
- color: @infoText;
-}
-
-
-// Block alerts
-// -------------------------
-
-.alert-block {
- padding-top: 14px;
- padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
- margin-bottom: 0;
-}
-.alert-block p + p {
- margin-top: 5px;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/bootstrap.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/bootstrap.less
deleted file mode 100644
index d4ebf37ac..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/bootstrap.less
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!
- * Bootstrap v2.3.2
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-// Core variables and mixins
-@import "variables.less"; // Modify this for custom colors, font-sizes, etc
-@import "mixins.less";
-
-// CSS Reset
-@import "reset.less";
-
-// Grid system and page structure
-@import "scaffolding.less";
-@import "grid.less";
-@import "layouts.less";
-
-// Base CSS
-@import "type.less";
-@import "code.less";
-@import "forms.less";
-@import "tables.less";
-
-// Components: common
-@import "sprites.less";
-@import "dropdowns.less";
-@import "wells.less";
-@import "component-animations.less";
-@import "close.less";
-
-// Components: Buttons & Alerts
-@import "buttons.less";
-@import "button-groups.less";
-@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
-
-// Components: Nav
-@import "navs.less";
-@import "navbar.less";
-@import "breadcrumbs.less";
-@import "pagination.less";
-@import "pager.less";
-
-// Components: Popovers
-@import "modals.less";
-@import "tooltip.less";
-@import "popovers.less";
-
-// Components: Misc
-@import "thumbnails.less";
-@import "media.less";
-@import "labels-badges.less";
-@import "progress-bars.less";
-@import "accordion.less";
-@import "carousel.less";
-@import "hero-unit.less";
-
-// Utility classes
-@import "utilities.less"; // Has to be last to override when necessary
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/breadcrumbs.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/breadcrumbs.less
deleted file mode 100644
index f753df6be..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/breadcrumbs.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Breadcrumbs
-// --------------------------------------------------
-
-
-.breadcrumb {
- padding: 8px 15px;
- margin: 0 0 @baseLineHeight;
- list-style: none;
- background-color: #f5f5f5;
- .border-radius(@baseBorderRadius);
- > li {
- display: inline-block;
- .ie7-inline-block();
- text-shadow: 0 1px 0 @white;
- > .divider {
- padding: 0 5px;
- color: #ccc;
- }
- }
- > .active {
- color: @grayLight;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/button-groups.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/button-groups.less
deleted file mode 100644
index 55cdc6033..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/button-groups.less
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-// Button groups
-// --------------------------------------------------
-
-
-// Make the div behave like a button
-.btn-group {
- position: relative;
- display: inline-block;
- .ie7-inline-block();
- font-size: 0; // remove as part 1 of font-size inline-block hack
- vertical-align: middle; // match .btn alignment given font-size hack above
- white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page)
- .ie7-restore-left-whitespace();
-}
-
-// Space out series of button groups
-.btn-group + .btn-group {
- margin-left: 5px;
-}
-
-// Optional: Group multiple button groups together for a toolbar
-.btn-toolbar {
- font-size: 0; // Hack to remove whitespace that results from using inline-block
- margin-top: @baseLineHeight / 2;
- margin-bottom: @baseLineHeight / 2;
- > .btn + .btn,
- > .btn-group + .btn,
- > .btn + .btn-group {
- margin-left: 5px;
- }
-}
-
-// Float them, remove border radius, then re-add to first and last elements
-.btn-group > .btn {
- position: relative;
- .border-radius(0);
-}
-.btn-group > .btn + .btn {
- margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
- font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack
-}
-
-// Reset fonts for other sizes
-.btn-group > .btn-mini {
- font-size: @fontSizeMini;
-}
-.btn-group > .btn-small {
- font-size: @fontSizeSmall;
-}
-.btn-group > .btn-large {
- font-size: @fontSizeLarge;
-}
-
-// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
-.btn-group > .btn:first-child {
- margin-left: 0;
- .border-top-left-radius(@baseBorderRadius);
- .border-bottom-left-radius(@baseBorderRadius);
-}
-// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
- .border-top-right-radius(@baseBorderRadius);
- .border-bottom-right-radius(@baseBorderRadius);
-}
-// Reset corners for large buttons
-.btn-group > .btn.large:first-child {
- margin-left: 0;
- .border-top-left-radius(@borderRadiusLarge);
- .border-bottom-left-radius(@borderRadiusLarge);
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
- .border-top-right-radius(@borderRadiusLarge);
- .border-bottom-right-radius(@borderRadiusLarge);
-}
-
-// On hover/focus/active, bring the proper btn to front
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
- z-index: 2;
-}
-
-// On active and open, don't show outline
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
- outline: 0;
-}
-
-
-
-// Split button dropdowns
-// ----------------------
-
-// Give the line between buttons some depth
-.btn-group > .btn + .dropdown-toggle {
- padding-left: 8px;
- padding-right: 8px;
- .box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
- *padding-top: 5px;
- *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
- padding-left: 5px;
- padding-right: 5px;
- *padding-top: 2px;
- *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
- *padding-top: 5px;
- *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
- padding-left: 12px;
- padding-right: 12px;
- *padding-top: 7px;
- *padding-bottom: 7px;
-}
-
-.btn-group.open {
-
- // The clickable button for toggling the menu
- // Remove the gradient and set the same inset shadow as the :active state
- .dropdown-toggle {
- background-image: none;
- .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
- }
-
- // Keep the hover's background when dropdown is open
- .btn.dropdown-toggle {
- background-color: @btnBackgroundHighlight;
- }
- .btn-primary.dropdown-toggle {
- background-color: @btnPrimaryBackgroundHighlight;
- }
- .btn-warning.dropdown-toggle {
- background-color: @btnWarningBackgroundHighlight;
- }
- .btn-danger.dropdown-toggle {
- background-color: @btnDangerBackgroundHighlight;
- }
- .btn-success.dropdown-toggle {
- background-color: @btnSuccessBackgroundHighlight;
- }
- .btn-info.dropdown-toggle {
- background-color: @btnInfoBackgroundHighlight;
- }
- .btn-inverse.dropdown-toggle {
- background-color: @btnInverseBackgroundHighlight;
- }
-}
-
-
-// Reposition the caret
-.btn .caret {
- margin-top: 8px;
- margin-left: 0;
-}
-// Carets in other button sizes
-.btn-large .caret {
- margin-top: 6px;
-}
-.btn-large .caret {
- border-left-width: 5px;
- border-right-width: 5px;
- border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
- margin-top: 8px;
-}
-// Upside down carets for .dropup
-.dropup .btn-large .caret {
- border-bottom-width: 5px;
-}
-
-
-
-// Account for other colors
-.btn-primary,
-.btn-warning,
-.btn-danger,
-.btn-info,
-.btn-success,
-.btn-inverse {
- .caret {
- border-top-color: @white;
- border-bottom-color: @white;
- }
-}
-
-
-
-// Vertical button groups
-// ----------------------
-
-.btn-group-vertical {
- display: inline-block; // makes buttons only take up the width they need
- .ie7-inline-block();
-}
-.btn-group-vertical > .btn {
- display: block;
- float: none;
- max-width: 100%;
- .border-radius(0);
-}
-.btn-group-vertical > .btn + .btn {
- margin-left: 0;
- margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
- .border-radius(@baseBorderRadius @baseBorderRadius 0 0);
-}
-.btn-group-vertical > .btn:last-child {
- .border-radius(0 0 @baseBorderRadius @baseBorderRadius);
-}
-.btn-group-vertical > .btn-large:first-child {
- .border-radius(@borderRadiusLarge @borderRadiusLarge 0 0);
-}
-.btn-group-vertical > .btn-large:last-child {
- .border-radius(0 0 @borderRadiusLarge @borderRadiusLarge);
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/buttons.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/buttons.less
deleted file mode 100644
index 4cd4d862b..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/buttons.less
+++ /dev/null
@@ -1,228 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core
-.btn {
- display: inline-block;
- .ie7-inline-block();
- padding: 4px 12px;
- margin-bottom: 0; // For input.btn
- font-size: @baseFontSize;
- line-height: @baseLineHeight;
- text-align: center;
- vertical-align: middle;
- cursor: pointer;
- .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
- border: 1px solid @btnBorder;
- *border: 0; // Remove the border to prevent IE7's black border on input:focus
- border-bottom-color: darken(@btnBorder, 10%);
- .border-radius(@baseBorderRadius);
- .ie7-restore-left-whitespace(); // Give IE7 some love
- .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
-
- // Hover/focus state
- &:hover,
- &:focus {
- color: @grayDark;
- text-decoration: none;
- background-position: 0 -15px;
-
- // transition is only when going to hover/focus, otherwise the background
- // behind the gradient (there for IE<=9 fallback) gets mismatched
- .transition(background-position .1s linear);
- }
-
- // Focus state for keyboard and accessibility
- &:focus {
- .tab-focus();
- }
-
- // Active state
- &.active,
- &:active {
- background-image: none;
- outline: 0;
- .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
- }
-
- // Disabled state
- &.disabled,
- &[disabled] {
- cursor: default;
- background-image: none;
- .opacity(65);
- .box-shadow(none);
- }
-
-}
-
-
-
-// Button Sizes
-// --------------------------------------------------
-
-// Large
-.btn-large {
- padding: @paddingLarge;
- font-size: @fontSizeLarge;
- .border-radius(@borderRadiusLarge);
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
- margin-top: 4px;
-}
-
-// Small
-.btn-small {
- padding: @paddingSmall;
- font-size: @fontSizeSmall;
- .border-radius(@borderRadiusSmall);
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
- margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
- margin-top: -1px;
-}
-
-// Mini
-.btn-mini {
- padding: @paddingMini;
- font-size: @fontSizeMini;
- .border-radius(@borderRadiusSmall);
-}
-
-
-// Block button
-// -------------------------
-
-.btn-block {
- display: block;
- width: 100%;
- padding-left: 0;
- padding-right: 0;
- .box-sizing(border-box);
-}
-
-// Vertically space out multiple block buttons
-.btn-block + .btn-block {
- margin-top: 5px;
-}
-
-// Specificity overrides
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
- &.btn-block {
- width: 100%;
- }
-}
-
-
-
-// Alternate buttons
-// --------------------------------------------------
-
-// Provide *some* extra contrast for those who can get it
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
- color: rgba(255,255,255,.75);
-}
-
-// Set the backgrounds
-// -------------------------
-.btn-primary {
- .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
-}
-// Warning appears are orange
-.btn-warning {
- .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
-}
-// Danger and error appear as red
-.btn-danger {
- .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
-}
-// Success appears as green
-.btn-success {
- .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
-}
-// Info appears as a neutral blue
-.btn-info {
- .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
-}
-// Inverse appears as dark gray
-.btn-inverse {
- .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
-}
-
-
-// Cross-browser Jank
-// --------------------------------------------------
-
-button.btn,
-input[type="submit"].btn {
-
- // Firefox 3.6 only I believe
- &::-moz-focus-inner {
- padding: 0;
- border: 0;
- }
-
- // IE7 has some default padding on button controls
- *padding-top: 3px;
- *padding-bottom: 3px;
-
- &.btn-large {
- *padding-top: 7px;
- *padding-bottom: 7px;
- }
- &.btn-small {
- *padding-top: 3px;
- *padding-bottom: 3px;
- }
- &.btn-mini {
- *padding-top: 1px;
- *padding-bottom: 1px;
- }
-}
-
-
-// Link buttons
-// --------------------------------------------------
-
-// Make a button look and behave like a link
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
- background-color: transparent;
- background-image: none;
- .box-shadow(none);
-}
-.btn-link {
- border-color: transparent;
- cursor: pointer;
- color: @linkColor;
- .border-radius(0);
-}
-.btn-link:hover,
-.btn-link:focus {
- color: @linkColorHover;
- text-decoration: underline;
- background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
- color: @grayDark;
- text-decoration: none;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/carousel.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/carousel.less
deleted file mode 100644
index 55bc05014..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/carousel.less
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// Carousel
-// --------------------------------------------------
-
-
-.carousel {
- position: relative;
- margin-bottom: @baseLineHeight;
- line-height: 1;
-}
-
-.carousel-inner {
- overflow: hidden;
- width: 100%;
- position: relative;
-}
-
-.carousel-inner {
-
- > .item {
- display: none;
- position: relative;
- .transition(.6s ease-in-out left);
-
- // Account for jankitude on images
- > img,
- > a > img {
- display: block;
- line-height: 1;
- }
- }
-
- > .active,
- > .next,
- > .prev { display: block; }
-
- > .active {
- left: 0;
- }
-
- > .next,
- > .prev {
- position: absolute;
- top: 0;
- width: 100%;
- }
-
- > .next {
- left: 100%;
- }
- > .prev {
- left: -100%;
- }
- > .next.left,
- > .prev.right {
- left: 0;
- }
-
- > .active.left {
- left: -100%;
- }
- > .active.right {
- left: 100%;
- }
-
-}
-
-// Left/right controls for nav
-// ---------------------------
-
-.carousel-control {
- position: absolute;
- top: 40%;
- left: 15px;
- width: 40px;
- height: 40px;
- margin-top: -20px;
- font-size: 60px;
- font-weight: 100;
- line-height: 30px;
- color: @white;
- text-align: center;
- background: @grayDarker;
- border: 3px solid @white;
- .border-radius(23px);
- .opacity(50);
-
- // we can't have this transition here
- // because webkit cancels the carousel
- // animation if you trip this while
- // in the middle of another animation
- // ;_;
- // .transition(opacity .2s linear);
-
- // Reposition the right one
- &.right {
- left: auto;
- right: 15px;
- }
-
- // Hover/focus state
- &:hover,
- &:focus {
- color: @white;
- text-decoration: none;
- .opacity(90);
- }
-}
-
-// Carousel indicator pips
-// -----------------------------
-.carousel-indicators {
- position: absolute;
- top: 15px;
- right: 15px;
- z-index: 5;
- margin: 0;
- list-style: none;
-
- li {
- display: block;
- float: left;
- width: 10px;
- height: 10px;
- margin-left: 5px;
- text-indent: -999px;
- background-color: #ccc;
- background-color: rgba(255,255,255,.25);
- border-radius: 5px;
- }
- .active {
- background-color: #fff;
- }
-}
-
-// Caption for text below images
-// -----------------------------
-
-.carousel-caption {
- position: absolute;
- left: 0;
- right: 0;
- bottom: 0;
- padding: 15px;
- background: @grayDark;
- background: rgba(0,0,0,.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
- color: @white;
- line-height: @baseLineHeight;
-}
-.carousel-caption h4 {
- margin: 0 0 5px;
-}
-.carousel-caption p {
- margin-bottom: 0;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/close.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/close.less
deleted file mode 100644
index 4c626bda6..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/close.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Close icons
-// --------------------------------------------------
-
-
-.close {
- float: right;
- font-size: 20px;
- font-weight: bold;
- line-height: @baseLineHeight;
- color: @black;
- text-shadow: 0 1px 0 rgba(255,255,255,1);
- .opacity(20);
- &:hover,
- &:focus {
- color: @black;
- text-decoration: none;
- cursor: pointer;
- .opacity(40);
- }
-}
-
-// Additional properties for button version
-// iOS requires the button element instead of an anchor tag.
-// If you want the anchor version, it requires `href="#"`.
-button.close {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
-} \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/code.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/code.less
deleted file mode 100644
index 266a926e7..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/code.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Code (inline and blocK)
-// --------------------------------------------------
-
-
-// Inline and block code styles
-code,
-pre {
- padding: 0 3px 2px;
- #font > #family > .monospace;
- font-size: @baseFontSize - 2;
- color: @grayDark;
- .border-radius(3px);
-}
-
-// Inline code
-code {
- padding: 2px 4px;
- color: #d14;
- background-color: #f7f7f9;
- border: 1px solid #e1e1e8;
- white-space: nowrap;
-}
-
-// Blocks of code
-pre {
- display: block;
- padding: (@baseLineHeight - 1) / 2;
- margin: 0 0 @baseLineHeight / 2;
- font-size: @baseFontSize - 1; // 14px to 13px
- line-height: @baseLineHeight;
- word-break: break-all;
- word-wrap: break-word;
- white-space: pre;
- white-space: pre-wrap;
- background-color: #f5f5f5;
- border: 1px solid #ccc; // fallback for IE7-8
- border: 1px solid rgba(0,0,0,.15);
- .border-radius(@baseBorderRadius);
-
- // Make prettyprint styles more spaced out for readability
- &.prettyprint {
- margin-bottom: @baseLineHeight;
- }
-
- // Account for some code outputs that place code tags in pre tags
- code {
- padding: 0;
- color: inherit;
- white-space: pre;
- white-space: pre-wrap;
- background-color: transparent;
- border: 0;
- }
-}
-
-// Enable scrollable blocks of code
-.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll;
-} \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/component-animations.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/component-animations.less
deleted file mode 100644
index d614263a7..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/component-animations.less
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// Component animations
-// --------------------------------------------------
-
-
-.fade {
- opacity: 0;
- .transition(opacity .15s linear);
- &.in {
- opacity: 1;
- }
-}
-
-.collapse {
- position: relative;
- height: 0;
- overflow: hidden;
- .transition(height .35s ease);
- &.in {
- height: auto;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/dropdowns.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/dropdowns.less
deleted file mode 100644
index 9e47b4715..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/dropdowns.less
+++ /dev/null
@@ -1,248 +0,0 @@
-//
-// Dropdown menus
-// --------------------------------------------------
-
-
-// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
-.dropup,
-.dropdown {
- position: relative;
-}
-.dropdown-toggle {
- // The caret makes the toggle a bit too tall in IE7
- *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
- outline: 0;
-}
-
-// Dropdown arrow/caret
-// --------------------
-.caret {
- display: inline-block;
- width: 0;
- height: 0;
- vertical-align: top;
- border-top: 4px solid @black;
- border-right: 4px solid transparent;
- border-left: 4px solid transparent;
- content: "";
-}
-
-// Place the caret
-.dropdown .caret {
- margin-top: 8px;
- margin-left: 2px;
-}
-
-// The dropdown menu (ul)
-// ----------------------
-.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: @zindexDropdown;
- display: none; // none by default, but block on "open" of the menu
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0; // override default ul
- list-style: none;
- background-color: @dropdownBackground;
- border: 1px solid #ccc; // Fallback for IE7-8
- border: 1px solid @dropdownBorder;
- *border-right-width: 2px;
- *border-bottom-width: 2px;
- .border-radius(6px);
- .box-shadow(0 5px 10px rgba(0,0,0,.2));
- -webkit-background-clip: padding-box;
- -moz-background-clip: padding;
- background-clip: padding-box;
-
- // Aligns the dropdown menu to right
- &.pull-right {
- right: 0;
- left: auto;
- }
-
- // Dividers (basically an hr) within the dropdown
- .divider {
- .nav-divider(@dropdownDividerTop, @dropdownDividerBottom);
- }
-
- // Links within the dropdown menu
- > li > a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: normal;
- line-height: @baseLineHeight;
- color: @dropdownLinkColor;
- white-space: nowrap;
- }
-}
-
-// Hover/Focus state
-// -----------
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
- text-decoration: none;
- color: @dropdownLinkColorHover;
- #gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%));
-}
-
-// Active state
-// ------------
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
- color: @dropdownLinkColorActive;
- text-decoration: none;
- outline: 0;
- #gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%));
-}
-
-// Disabled state
-// --------------
-// Gray out text and ensure the hover/focus state remains gray
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
- color: @grayLight;
-}
-// Nuke hover/focus effects
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
- text-decoration: none;
- background-color: transparent;
- background-image: none; // Remove CSS gradient
- .reset-filter();
- cursor: default;
-}
-
-// Open state for the dropdown
-// ---------------------------
-.open {
- // IE7's z-index only goes to the nearest positioned ancestor, which would
- // make the menu appear below buttons that appeared later on the page
- *z-index: @zindexDropdown;
-
- & > .dropdown-menu {
- display: block;
- }
-}
-
-// Backdrop to catch body clicks on mobile, etc.
-// ---------------------------
-.dropdown-backdrop {
- position: fixed;
- left: 0;
- right: 0;
- bottom: 0;
- top: 0;
- z-index: @zindexDropdown - 10;
-}
-
-// Right aligned dropdowns
-// ---------------------------
-.pull-right > .dropdown-menu {
- right: 0;
- left: auto;
-}
-
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-// ------------------------------------------------------
-// Just add .dropup after the standard .dropdown class and you're set, bro.
-// TODO: abstract this so that the navbar fixed styles are not placed here?
-.dropup,
-.navbar-fixed-bottom .dropdown {
- // Reverse the caret
- .caret {
- border-top: 0;
- border-bottom: 4px solid @black;
- content: "";
- }
- // Different positioning for bottom up menu
- .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 1px;
- }
-}
-
-// Sub menus
-// ---------------------------
-.dropdown-submenu {
- position: relative;
-}
-// Default dropdowns
-.dropdown-submenu > .dropdown-menu {
- top: 0;
- left: 100%;
- margin-top: -6px;
- margin-left: -1px;
- .border-radius(0 6px 6px 6px);
-}
-.dropdown-submenu:hover > .dropdown-menu {
- display: block;
-}
-
-// Dropups
-.dropup .dropdown-submenu > .dropdown-menu {
- top: auto;
- bottom: 0;
- margin-top: 0;
- margin-bottom: -2px;
- .border-radius(5px 5px 5px 0);
-}
-
-// Caret to indicate there is a submenu
-.dropdown-submenu > a:after {
- display: block;
- content: " ";
- float: right;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
- border-width: 5px 0 5px 5px;
- border-left-color: darken(@dropdownBackground, 20%);
- margin-top: 5px;
- margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
- border-left-color: @dropdownLinkColorHover;
-}
-
-// Left aligned submenus
-.dropdown-submenu.pull-left {
- // Undo the float
- // Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere.
- float: none;
-
- // Positioning the submenu
- > .dropdown-menu {
- left: -100%;
- margin-left: 10px;
- .border-radius(6px 0 6px 6px);
- }
-}
-
-// Tweak nav headers
-// -----------------
-// Increase padding from 15px to 20px on sides
-.dropdown .dropdown-menu .nav-header {
- padding-left: 20px;
- padding-right: 20px;
-}
-
-// Typeahead
-// ---------
-.typeahead {
- z-index: 1051;
- margin-top: 2px; // give it some space to breathe
- .border-radius(@baseBorderRadius);
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/forms.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/forms.less
deleted file mode 100644
index 06767bdd3..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/forms.less
+++ /dev/null
@@ -1,690 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-
-// GENERAL STYLES
-// --------------
-
-// Make all forms have space below them
-form {
- margin: 0 0 @baseLineHeight;
-}
-
-fieldset {
- padding: 0;
- margin: 0;
- border: 0;
-}
-
-// Groups of fields with labels on top (legends)
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: @baseLineHeight;
- font-size: @baseFontSize * 1.5;
- line-height: @baseLineHeight * 2;
- color: @grayDark;
- border: 0;
- border-bottom: 1px solid #e5e5e5;
-
- // Small
- small {
- font-size: @baseLineHeight * .75;
- color: @grayLight;
- }
-}
-
-// Set font for forms
-label,
-input,
-button,
-select,
-textarea {
- #font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here
-}
-input,
-button,
-select,
-textarea {
- font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element)
-}
-
-// Identify controls by their labels
-label {
- display: block;
- margin-bottom: 5px;
-}
-
-// Form controls
-// -------------------------
-
-// Shared size and type resets
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
- display: inline-block;
- height: @baseLineHeight;
- padding: 4px 6px;
- margin-bottom: @baseLineHeight / 2;
- font-size: @baseFontSize;
- line-height: @baseLineHeight;
- color: @gray;
- .border-radius(@inputBorderRadius);
- vertical-align: middle;
-}
-
-// Reset appearance properties for textual inputs and textarea
-// Declare width for legacy (can't be on input[type=*] selectors or it's too specific)
-input,
-textarea,
-.uneditable-input {
- width: 206px; // plus 12px padding and 2px border
-}
-// Reset height since textareas have rows
-textarea {
- height: auto;
-}
-// Everything else
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
- background-color: @inputBackground;
- border: 1px solid @inputBorder;
- .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
- .transition(~"border linear .2s, box-shadow linear .2s");
-
- // Focus state
- &:focus {
- border-color: rgba(82,168,236,.8);
- outline: 0;
- outline: thin dotted \9; /* IE6-9 */
- .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)");
- }
-}
-
-// Position radios and checkboxes better
-input[type="radio"],
-input[type="checkbox"] {
- margin: 4px 0 0;
- *margin-top: 0; /* IE7 */
- margin-top: 1px \9; /* IE8-9 */
- line-height: normal;
-}
-
-// Reset width of input images, buttons, radios, checkboxes
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
- width: auto; // Override of generic input selector
-}
-
-// Set the height of select and file controls to match text inputs
-select,
-input[type="file"] {
- height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */
- *margin-top: 4px; /* For IE7, add top margin to align select with labels */
- line-height: @inputHeight;
-}
-
-// Make select elements obey height by applying a border
-select {
- width: 220px; // default input width + 10px of padding that doesn't get applied
- border: 1px solid @inputBorder;
- background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color
-}
-
-// Make multiple select elements height not fixed
-select[multiple],
-select[size] {
- height: auto;
-}
-
-// Focus for select, file, radio, and checkbox
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
- .tab-focus();
-}
-
-
-// Uneditable inputs
-// -------------------------
-
-// Make uneditable inputs look inactive
-.uneditable-input,
-.uneditable-textarea {
- color: @grayLight;
- background-color: darken(@inputBackground, 1%);
- border-color: @inputBorder;
- .box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
- cursor: not-allowed;
-}
-
-// For text that needs to appear as an input but should not be an input
-.uneditable-input {
- overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
- white-space: nowrap;
-}
-
-// Make uneditable textareas behave like a textarea
-.uneditable-textarea {
- width: auto;
- height: auto;
-}
-
-
-// Placeholder
-// -------------------------
-
-// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector
-input,
-textarea {
- .placeholder();
-}
-
-
-// CHECKBOXES & RADIOS
-// -------------------
-
-// Indent the labels to position radios/checkboxes as hanging
-.radio,
-.checkbox {
- min-height: @baseLineHeight; // clear the floating input if there is no label text
- padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
- float: left;
- margin-left: -20px;
-}
-
-// Move the options list down to align with labels
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
- padding-top: 5px; // has to be padding because margin collaspes
-}
-
-// Radios and checkboxes on same line
-// TODO v3: Convert .inline to .control-inline
-.radio.inline,
-.checkbox.inline {
- display: inline-block;
- padding-top: 5px;
- margin-bottom: 0;
- vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
- margin-left: 10px; // space out consecutive inline controls
-}
-
-
-
-// INPUT SIZES
-// -----------
-
-// General classes for quick sizes
-.input-mini { width: 60px; }
-.input-small { width: 90px; }
-.input-medium { width: 150px; }
-.input-large { width: 210px; }
-.input-xlarge { width: 270px; }
-.input-xxlarge { width: 530px; }
-
-// Grid style input sizes
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-// Redeclare since the fluid row class is more specific
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
- float: none;
- margin-left: 0;
-}
-// Ensure input-prepend/append never wraps
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
- display: inline-block;
-}
-
-
-
-// GRID SIZING FOR INPUTS
-// ----------------------
-
-// Grid sizes
-#grid > .input(@gridColumnWidth, @gridGutterWidth);
-
-// Control row for multiple inputs per line
-.controls-row {
- .clearfix(); // Clear the float from controls
-}
-
-// Float to collapse white-space for proper grid alignment
-.controls-row [class*="span"],
-// Redeclare the fluid grid collapse since we undo the float for inputs
-.row-fluid .controls-row [class*="span"] {
- float: left;
-}
-// Explicity set top padding on all checkboxes/radios, not just first-child
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
- padding-top: 5px;
-}
-
-
-
-
-// DISABLED STATE
-// --------------
-
-// Disabled and read-only inputs
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
- cursor: not-allowed;
- background-color: @inputDisabledBackground;
-}
-// Explicitly reset the colors here
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
- background-color: transparent;
-}
-
-
-
-
-// FORM FIELD FEEDBACK STATES
-// --------------------------
-
-// Warning
-.control-group.warning {
- .formFieldState(@warningText, @warningText, @warningBackground);
-}
-// Error
-.control-group.error {
- .formFieldState(@errorText, @errorText, @errorBackground);
-}
-// Success
-.control-group.success {
- .formFieldState(@successText, @successText, @successBackground);
-}
-// Success
-.control-group.info {
- .formFieldState(@infoText, @infoText, @infoBackground);
-}
-
-// HTML5 invalid states
-// Shares styles with the .control-group.error above
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
- color: #b94a48;
- border-color: #ee5f5b;
- &:focus {
- border-color: darken(#ee5f5b, 10%);
- @shadow: 0 0 6px lighten(#ee5f5b, 20%);
- .box-shadow(@shadow);
- }
-}
-
-
-
-// FORM ACTIONS
-// ------------
-
-.form-actions {
- padding: (@baseLineHeight - 1) 20px @baseLineHeight;
- margin-top: @baseLineHeight;
- margin-bottom: @baseLineHeight;
- background-color: @formActionsBackground;
- border-top: 1px solid #e5e5e5;
- .clearfix(); // Adding clearfix to allow for .pull-right button containers
-}
-
-
-
-// HELP TEXT
-// ---------
-
-.help-block,
-.help-inline {
- color: lighten(@textColor, 15%); // lighten the text some for contrast
-}
-
-.help-block {
- display: block; // account for any element using help-block
- margin-bottom: @baseLineHeight / 2;
-}
-
-.help-inline {
- display: inline-block;
- .ie7-inline-block();
- vertical-align: middle;
- padding-left: 5px;
-}
-
-
-
-// INPUT GROUPS
-// ------------
-
-// Allow us to put symbols and text within the input field for a cleaner look
-.input-append,
-.input-prepend {
- display: inline-block;
- margin-bottom: @baseLineHeight / 2;
- vertical-align: middle;
- font-size: 0; // white space collapse hack
- white-space: nowrap; // Prevent span and input from separating
-
- // Reset the white space collapse hack
- input,
- select,
- .uneditable-input,
- .dropdown-menu,
- .popover {
- font-size: @baseFontSize;
- }
-
- input,
- select,
- .uneditable-input {
- position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
- margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
- *margin-left: 0;
- vertical-align: top;
- .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
- // Make input on top when focused so blue border and shadow always show
- &:focus {
- z-index: 2;
- }
- }
- .add-on {
- display: inline-block;
- width: auto;
- height: @baseLineHeight;
- min-width: 16px;
- padding: 4px 5px;
- font-size: @baseFontSize;
- font-weight: normal;
- line-height: @baseLineHeight;
- text-align: center;
- text-shadow: 0 1px 0 @white;
- background-color: @grayLighter;
- border: 1px solid #ccc;
- }
- .add-on,
- .btn,
- .btn-group > .dropdown-toggle {
- vertical-align: top;
- .border-radius(0);
- }
- .active {
- background-color: lighten(@green, 30);
- border-color: @green;
- }
-}
-
-.input-prepend {
- .add-on,
- .btn {
- margin-right: -1px;
- }
- .add-on:first-child,
- .btn:first-child {
- // FYI, `.btn:first-child` accounts for a button group that's prepended
- .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
- }
-}
-
-.input-append {
- input,
- select,
- .uneditable-input {
- .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
- + .btn-group .btn:last-child {
- .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
- }
- }
- .add-on,
- .btn,
- .btn-group {
- margin-left: -1px;
- }
- .add-on:last-child,
- .btn:last-child,
- .btn-group:last-child > .dropdown-toggle {
- .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
- }
-}
-
-// Remove all border-radius for inputs with both prepend and append
-.input-prepend.input-append {
- input,
- select,
- .uneditable-input {
- .border-radius(0);
- + .btn-group .btn {
- .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
- }
- }
- .add-on:first-child,
- .btn:first-child {
- margin-right: -1px;
- .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
- }
- .add-on:last-child,
- .btn:last-child {
- margin-left: -1px;
- .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
- }
- .btn-group:first-child {
- margin-left: 0;
- }
-}
-
-
-
-
-// SEARCH FORM
-// -----------
-
-input.search-query {
- padding-right: 14px;
- padding-right: 4px \9;
- padding-left: 14px;
- padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */
- margin-bottom: 0; // Remove the default margin on all inputs
- .border-radius(15px);
-}
-
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
- .border-radius(0); // Override due to specificity
-}
-.form-search .input-append .search-query {
- .border-radius(14px 0 0 14px);
-}
-.form-search .input-append .btn {
- .border-radius(0 14px 14px 0);
-}
-.form-search .input-prepend .search-query {
- .border-radius(0 14px 14px 0);
-}
-.form-search .input-prepend .btn {
- .border-radius(14px 0 0 14px);
-}
-
-
-
-
-// HORIZONTAL & VERTICAL FORMS
-// ---------------------------
-
-// Common properties
-// -----------------
-
-.form-search,
-.form-inline,
-.form-horizontal {
- input,
- textarea,
- select,
- .help-inline,
- .uneditable-input,
- .input-prepend,
- .input-append {
- display: inline-block;
- .ie7-inline-block();
- margin-bottom: 0;
- vertical-align: middle;
- }
- // Re-hide hidden elements due to specifity
- .hide {
- display: none;
- }
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
- display: inline-block;
-}
-// Remove margin for input-prepend/-append
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
- margin-bottom: 0;
-}
-// Inline checkbox/radio labels (remove padding on left)
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
- padding-left: 0;
- margin-bottom: 0;
- vertical-align: middle;
-}
-// Remove float and margin, set to inline-block
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
- float: left;
- margin-right: 3px;
- margin-left: 0;
-}
-
-
-// Margin to space out fieldsets
-.control-group {
- margin-bottom: @baseLineHeight / 2;
-}
-
-// Legend collapses margin, so next element is responsible for spacing
-legend + .control-group {
- margin-top: @baseLineHeight;
- -webkit-margin-top-collapse: separate;
-}
-
-// Horizontal-specific styles
-// --------------------------
-
-.form-horizontal {
- // Increase spacing between groups
- .control-group {
- margin-bottom: @baseLineHeight;
- .clearfix();
- }
- // Float the labels left
- .control-label {
- float: left;
- width: @horizontalComponentOffset - 20;
- padding-top: 5px;
- text-align: right;
- }
- // Move over all input controls and content
- .controls {
- // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend
- // don't inherit the margin of the parent, in this case .controls
- *display: inline-block;
- *padding-left: 20px;
- margin-left: @horizontalComponentOffset;
- *margin-left: 0;
- &:first-child {
- *padding-left: @horizontalComponentOffset;
- }
- }
- // Remove bottom margin on block level help text since that's accounted for on .control-group
- .help-block {
- margin-bottom: 0;
- }
- // And apply it only to .help-block instances that follow a form control
- input,
- select,
- textarea,
- .uneditable-input,
- .input-prepend,
- .input-append {
- + .help-block {
- margin-top: @baseLineHeight / 2;
- }
- }
- // Move over buttons in .form-actions to align with .controls
- .form-actions {
- padding-left: @horizontalComponentOffset;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/grid.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/grid.less
deleted file mode 100644
index 750d20351..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/grid.less
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// Grid system
-// --------------------------------------------------
-
-
-// Fixed (940px)
-#grid > .core(@gridColumnWidth, @gridGutterWidth);
-
-// Fluid (940px)
-#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
-
-// Reset utility classes due to specificity
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
- display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
- float: right;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/hero-unit.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/hero-unit.less
deleted file mode 100644
index 763d86aee..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/hero-unit.less
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Hero unit
-// --------------------------------------------------
-
-
-.hero-unit {
- padding: 60px;
- margin-bottom: 30px;
- font-size: 18px;
- font-weight: 200;
- line-height: @baseLineHeight * 1.5;
- color: @heroUnitLeadColor;
- background-color: @heroUnitBackground;
- .border-radius(6px);
- h1 {
- margin-bottom: 0;
- font-size: 60px;
- line-height: 1;
- color: @heroUnitHeadingColor;
- letter-spacing: -1px;
- }
- li {
- line-height: @baseLineHeight * 1.5; // Reset since we specify in type.less
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/labels-badges.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/labels-badges.less
deleted file mode 100644
index bc321fe5c..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/labels-badges.less
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// Labels and badges
-// --------------------------------------------------
-
-
-// Base classes
-.label,
-.badge {
- display: inline-block;
- padding: 2px 4px;
- font-size: @baseFontSize * .846;
- font-weight: bold;
- line-height: 14px; // ensure proper line-height if floated
- color: @white;
- vertical-align: baseline;
- white-space: nowrap;
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- background-color: @grayLight;
-}
-// Set unique padding and border-radii
-.label {
- .border-radius(3px);
-}
-.badge {
- padding-left: 9px;
- padding-right: 9px;
- .border-radius(9px);
-}
-
-// Empty labels/badges collapse
-.label,
-.badge {
- &:empty {
- display: none;
- }
-}
-
-// Hover/focus state, but only for links
-a {
- &.label:hover,
- &.label:focus,
- &.badge:hover,
- &.badge:focus {
- color: @white;
- text-decoration: none;
- cursor: pointer;
- }
-}
-
-// Colors
-// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
-.label,
-.badge {
- // Important (red)
- &-important { background-color: @errorText; }
- &-important[href] { background-color: darken(@errorText, 10%); }
- // Warnings (orange)
- &-warning { background-color: @orange; }
- &-warning[href] { background-color: darken(@orange, 10%); }
- // Success (green)
- &-success { background-color: @successText; }
- &-success[href] { background-color: darken(@successText, 10%); }
- // Info (turquoise)
- &-info { background-color: @infoText; }
- &-info[href] { background-color: darken(@infoText, 10%); }
- // Inverse (black)
- &-inverse { background-color: @grayDark; }
- &-inverse[href] { background-color: darken(@grayDark, 10%); }
-}
-
-// Quick fix for labels/badges in buttons
-.btn {
- .label,
- .badge {
- position: relative;
- top: -1px;
- }
-}
-.btn-mini {
- .label,
- .badge {
- top: 0;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/layouts.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/layouts.less
deleted file mode 100644
index 24a206211..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/layouts.less
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// Layouts
-// --------------------------------------------------
-
-
-// Container (centered, fixed-width layouts)
-.container {
- .container-fixed();
-}
-
-// Fluid layouts (left aligned, with sidebar, min- & max-width content)
-.container-fluid {
- padding-right: @gridGutterWidth;
- padding-left: @gridGutterWidth;
- .clearfix();
-} \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/media.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/media.less
deleted file mode 100644
index e461e446d..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/media.less
+++ /dev/null
@@ -1,55 +0,0 @@
-// Media objects
-// Source: http://stubbornella.org/content/?p=497
-// --------------------------------------------------
-
-
-// Common styles
-// -------------------------
-
-// Clear the floats
-.media,
-.media-body {
- overflow: hidden;
- *overflow: visible;
- zoom: 1;
-}
-
-// Proper spacing between instances of .media
-.media,
-.media .media {
- margin-top: 15px;
-}
-.media:first-child {
- margin-top: 0;
-}
-
-// For images and videos, set to block
-.media-object {
- display: block;
-}
-
-// Reset margins on headings for tighter default spacing
-.media-heading {
- margin: 0 0 5px;
-}
-
-
-// Media image alignment
-// -------------------------
-
-.media > .pull-left {
- margin-right: 10px;
-}
-.media > .pull-right {
- margin-left: 10px;
-}
-
-
-// Media list variation
-// -------------------------
-
-// Undo default ul/ol styles
-.media-list {
- margin-left: 0;
- list-style: none;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/mixins.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/mixins.less
deleted file mode 100644
index 79d889219..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/mixins.less
+++ /dev/null
@@ -1,702 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-
-// UTILITY MIXINS
-// --------------------------------------------------
-
-// Clearfix
-// --------
-// For clearing floats like a boss h5bp.com/q
-.clearfix {
- *zoom: 1;
- &:before,
- &:after {
- display: table;
- content: "";
- // Fixes Opera/contenteditable bug:
- // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
- line-height: 0;
- }
- &:after {
- clear: both;
- }
-}
-
-// Webkit-style focus
-// ------------------
-.tab-focus() {
- // Default
- outline: thin dotted #333;
- // Webkit
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-
-// Center-align a block level element
-// ----------------------------------
-.center-block() {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-// IE7 inline-block
-// ----------------
-.ie7-inline-block() {
- *display: inline; /* IE7 inline-block hack */
- *zoom: 1;
-}
-
-// IE7 likes to collapse whitespace on either side of the inline-block elements.
-// Ems because we're attempting to match the width of a space character. Left
-// version is for form buttons, which typically come after other elements, and
-// right version is for icons, which come before. Applying both is ok, but it will
-// mean that space between those elements will be .6em (~2 space characters) in IE7,
-// instead of the 1 space in other browsers.
-.ie7-restore-left-whitespace() {
- *margin-left: .3em;
-
- &:first-child {
- *margin-left: 0;
- }
-}
-
-.ie7-restore-right-whitespace() {
- *margin-right: .3em;
-}
-
-// Sizing shortcuts
-// -------------------------
-.size(@height, @width) {
- width: @width;
- height: @height;
-}
-.square(@size) {
- .size(@size, @size);
-}
-
-// Placeholder text
-// -------------------------
-.placeholder(@color: @placeholderText) {
- &:-moz-placeholder {
- color: @color;
- }
- &:-ms-input-placeholder {
- color: @color;
- }
- &::-webkit-input-placeholder {
- color: @color;
- }
-}
-
-// Text overflow
-// -------------------------
-// Requires inline-block or block for proper styling
-.text-overflow() {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-// CSS image replacement
-// -------------------------
-// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
-.hide-text {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
-}
-
-
-// FONTS
-// --------------------------------------------------
-
-#font {
- #family {
- .serif() {
- font-family: @serifFontFamily;
- }
- .sans-serif() {
- font-family: @sansFontFamily;
- }
- .monospace() {
- font-family: @monoFontFamily;
- }
- }
- .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
- font-size: @size;
- font-weight: @weight;
- line-height: @lineHeight;
- }
- .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
- #font > #family > .serif;
- #font > .shorthand(@size, @weight, @lineHeight);
- }
- .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
- #font > #family > .sans-serif;
- #font > .shorthand(@size, @weight, @lineHeight);
- }
- .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
- #font > #family > .monospace;
- #font > .shorthand(@size, @weight, @lineHeight);
- }
-}
-
-
-// FORMS
-// --------------------------------------------------
-
-// Block level inputs
-.input-block-level {
- display: block;
- width: 100%;
- min-height: @inputHeight; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
- .box-sizing(border-box); // Makes inputs behave like true block-level elements
-}
-
-
-
-// Mixin for form field states
-.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
- // Set the text color
- .control-label,
- .help-block,
- .help-inline {
- color: @textColor;
- }
- // Style inputs accordingly
- .checkbox,
- .radio,
- input,
- select,
- textarea {
- color: @textColor;
- }
- input,
- select,
- textarea {
- border-color: @borderColor;
- .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
- &:focus {
- border-color: darken(@borderColor, 10%);
- @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
- .box-shadow(@shadow);
- }
- }
- // Give a small background color for input-prepend/-append
- .input-prepend .add-on,
- .input-append .add-on {
- color: @textColor;
- background-color: @backgroundColor;
- border-color: @textColor;
- }
-}
-
-
-
-// CSS3 PROPERTIES
-// --------------------------------------------------
-
-// Border Radius
-.border-radius(@radius) {
- -webkit-border-radius: @radius;
- -moz-border-radius: @radius;
- border-radius: @radius;
-}
-
-// Single Corner Border Radius
-.border-top-left-radius(@radius) {
- -webkit-border-top-left-radius: @radius;
- -moz-border-radius-topleft: @radius;
- border-top-left-radius: @radius;
-}
-.border-top-right-radius(@radius) {
- -webkit-border-top-right-radius: @radius;
- -moz-border-radius-topright: @radius;
- border-top-right-radius: @radius;
-}
-.border-bottom-right-radius(@radius) {
- -webkit-border-bottom-right-radius: @radius;
- -moz-border-radius-bottomright: @radius;
- border-bottom-right-radius: @radius;
-}
-.border-bottom-left-radius(@radius) {
- -webkit-border-bottom-left-radius: @radius;
- -moz-border-radius-bottomleft: @radius;
- border-bottom-left-radius: @radius;
-}
-
-// Single Side Border Radius
-.border-top-radius(@radius) {
- .border-top-right-radius(@radius);
- .border-top-left-radius(@radius);
-}
-.border-right-radius(@radius) {
- .border-top-right-radius(@radius);
- .border-bottom-right-radius(@radius);
-}
-.border-bottom-radius(@radius) {
- .border-bottom-right-radius(@radius);
- .border-bottom-left-radius(@radius);
-}
-.border-left-radius(@radius) {
- .border-top-left-radius(@radius);
- .border-bottom-left-radius(@radius);
-}
-
-// Drop shadows
-.box-shadow(@shadow) {
- -webkit-box-shadow: @shadow;
- -moz-box-shadow: @shadow;
- box-shadow: @shadow;
-}
-
-// Transitions
-.transition(@transition) {
- -webkit-transition: @transition;
- -moz-transition: @transition;
- -o-transition: @transition;
- transition: @transition;
-}
-.transition-delay(@transition-delay) {
- -webkit-transition-delay: @transition-delay;
- -moz-transition-delay: @transition-delay;
- -o-transition-delay: @transition-delay;
- transition-delay: @transition-delay;
-}
-.transition-duration(@transition-duration) {
- -webkit-transition-duration: @transition-duration;
- -moz-transition-duration: @transition-duration;
- -o-transition-duration: @transition-duration;
- transition-duration: @transition-duration;
-}
-
-// Transformations
-.rotate(@degrees) {
- -webkit-transform: rotate(@degrees);
- -moz-transform: rotate(@degrees);
- -ms-transform: rotate(@degrees);
- -o-transform: rotate(@degrees);
- transform: rotate(@degrees);
-}
-.scale(@ratio) {
- -webkit-transform: scale(@ratio);
- -moz-transform: scale(@ratio);
- -ms-transform: scale(@ratio);
- -o-transform: scale(@ratio);
- transform: scale(@ratio);
-}
-.translate(@x, @y) {
- -webkit-transform: translate(@x, @y);
- -moz-transform: translate(@x, @y);
- -ms-transform: translate(@x, @y);
- -o-transform: translate(@x, @y);
- transform: translate(@x, @y);
-}
-.skew(@x, @y) {
- -webkit-transform: skew(@x, @y);
- -moz-transform: skew(@x, @y);
- -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885
- -o-transform: skew(@x, @y);
- transform: skew(@x, @y);
- -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
-}
-.translate3d(@x, @y, @z) {
- -webkit-transform: translate3d(@x, @y, @z);
- -moz-transform: translate3d(@x, @y, @z);
- -o-transform: translate3d(@x, @y, @z);
- transform: translate3d(@x, @y, @z);
-}
-
-// Backface visibility
-// Prevent browsers from flickering when using CSS 3D transforms.
-// Default value is `visible`, but can be changed to `hidden
-// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
-.backface-visibility(@visibility){
- -webkit-backface-visibility: @visibility;
- -moz-backface-visibility: @visibility;
- backface-visibility: @visibility;
-}
-
-// Background clipping
-// Heads up: FF 3.6 and under need "padding" instead of "padding-box"
-.background-clip(@clip) {
- -webkit-background-clip: @clip;
- -moz-background-clip: @clip;
- background-clip: @clip;
-}
-
-// Background sizing
-.background-size(@size) {
- -webkit-background-size: @size;
- -moz-background-size: @size;
- -o-background-size: @size;
- background-size: @size;
-}
-
-
-// Box sizing
-.box-sizing(@boxmodel) {
- -webkit-box-sizing: @boxmodel;
- -moz-box-sizing: @boxmodel;
- box-sizing: @boxmodel;
-}
-
-// User select
-// For selecting text on the page
-.user-select(@select) {
- -webkit-user-select: @select;
- -moz-user-select: @select;
- -ms-user-select: @select;
- -o-user-select: @select;
- user-select: @select;
-}
-
-// Resize anything
-.resizable(@direction) {
- resize: @direction; // Options: horizontal, vertical, both
- overflow: auto; // Safari fix
-}
-
-// CSS3 Content Columns
-.content-columns(@columnCount, @columnGap: @gridGutterWidth) {
- -webkit-column-count: @columnCount;
- -moz-column-count: @columnCount;
- column-count: @columnCount;
- -webkit-column-gap: @columnGap;
- -moz-column-gap: @columnGap;
- column-gap: @columnGap;
-}
-
-// Optional hyphenation
-.hyphens(@mode: auto) {
- word-wrap: break-word;
- -webkit-hyphens: @mode;
- -moz-hyphens: @mode;
- -ms-hyphens: @mode;
- -o-hyphens: @mode;
- hyphens: @mode;
-}
-
-// Opacity
-.opacity(@opacity) {
- opacity: @opacity / 100;
- filter: ~"alpha(opacity=@{opacity})";
-}
-
-
-
-// BACKGROUNDS
-// --------------------------------------------------
-
-// Add an alphatransparency value to any background or border color (via Elyse Holladay)
-#translucent {
- .background(@color: @white, @alpha: 1) {
- background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
- }
- .border(@color: @white, @alpha: 1) {
- border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
- .background-clip(padding-box);
- }
-}
-
-// Gradient Bar Colors for buttons and alerts
-.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
- color: @textColor;
- text-shadow: @textShadow;
- #gradient > .vertical(@primaryColor, @secondaryColor);
- border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
- border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
-}
-
-// Gradients
-#gradient {
- .horizontal(@startColor: #555, @endColor: #333) {
- background-color: @endColor;
- background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
- background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
- background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
- background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
- background-repeat: repeat-x;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
- }
- .vertical(@startColor: #555, @endColor: #333) {
- background-color: mix(@startColor, @endColor, 60%);
- background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
- background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
- background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
- background-repeat: repeat-x;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
- }
- .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
- background-color: @endColor;
- background-repeat: repeat-x;
- background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
- background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
- background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
- }
- .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
- background-color: mix(@midColor, @endColor, 80%);
- background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
- background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
- background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
- background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
- background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
- background-repeat: no-repeat;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
- }
-
- .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
- background-color: mix(@midColor, @endColor, 80%);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
- background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
- background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-repeat: no-repeat;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
- }
- .radial(@innerColor: #555, @outerColor: #333) {
- background-color: @outerColor;
- background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
- background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
- background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
- background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
- background-repeat: no-repeat;
- }
- .striped(@color: #555, @angle: 45deg) {
- background-color: @color;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(@angle, 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: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(@angle, 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(@angle, 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);
- }
-}
-// Reset filters for IE
-.reset-filter() {
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
-}
-
-
-
-// COMPONENT MIXINS
-// --------------------------------------------------
-
-// Horizontal dividers
-// -------------------------
-// Dividers (basically an hr) within dropdowns and nav lists
-.nav-divider(@top: #e5e5e5, @bottom: @white) {
- // IE7 needs a set width since we gave a height. Restricting just
- // to IE7 to keep the 1px left/right space in other browsers.
- // It is unclear where IE is getting the extra space that we need
- // to negative-margin away, but so it goes.
- *width: 100%;
- height: 1px;
- margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
- *margin: -5px 0 5px;
- overflow: hidden;
- background-color: @top;
- border-bottom: 1px solid @bottom;
-}
-
-// Button backgrounds
-// ------------------
-.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
- // gradientBar will set the background to a pleasing blend of these, to support IE<=9
- .gradientBar(@startColor, @endColor, @textColor, @textShadow);
- *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- .reset-filter();
-
- // in these cases the gradient won't cover the background, so we override
- &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
- color: @textColor;
- background-color: @endColor;
- *background-color: darken(@endColor, 5%);
- }
-
- // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
- &:active,
- &.active {
- background-color: darken(@endColor, 10%) e("\9");
- }
-}
-
-// Navbar vertical align
-// -------------------------
-// Vertically center elements in the navbar.
-// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
-.navbarVerticalAlign(@elementHeight) {
- margin-top: (@navbarHeight - @elementHeight) / 2;
-}
-
-
-
-// Grid System
-// -----------
-
-// Centered container element
-.container-fixed() {
- margin-right: auto;
- margin-left: auto;
- .clearfix();
-}
-
-// Table columns
-.tableColumns(@columnSpan: 1) {
- float: none; // undo default grid column styles
- width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
- margin-left: 0; // undo default grid column styles
-}
-
-// Make a Grid
-// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
-.makeRow() {
- margin-left: @gridGutterWidth * -1;
- .clearfix();
-}
-.makeColumn(@columns: 1, @offset: 0) {
- float: left;
- margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
- width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
-}
-
-// The Grid
-#grid {
-
- .core (@gridColumnWidth, @gridGutterWidth) {
-
- .spanX (@index) when (@index > 0) {
- .span@{index} { .span(@index); }
- .spanX(@index - 1);
- }
- .spanX (0) {}
-
- .offsetX (@index) when (@index > 0) {
- .offset@{index} { .offset(@index); }
- .offsetX(@index - 1);
- }
- .offsetX (0) {}
-
- .offset (@columns) {
- margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
- }
-
- .span (@columns) {
- width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
- }
-
- .row {
- margin-left: @gridGutterWidth * -1;
- .clearfix();
- }
-
- [class*="span"] {
- float: left;
- min-height: 1px; // prevent collapsing columns
- margin-left: @gridGutterWidth;
- }
-
- // Set the container width, and override it for fixed navbars in media queries
- .container,
- .navbar-static-top .container,
- .navbar-fixed-top .container,
- .navbar-fixed-bottom .container { .span(@gridColumns); }
-
- // generate .spanX and .offsetX
- .spanX (@gridColumns);
- .offsetX (@gridColumns);
-
- }
-
- .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
-
- .spanX (@index) when (@index > 0) {
- .span@{index} { .span(@index); }
- .spanX(@index - 1);
- }
- .spanX (0) {}
-
- .offsetX (@index) when (@index > 0) {
- .offset@{index} { .offset(@index); }
- .offset@{index}:first-child { .offsetFirstChild(@index); }
- .offsetX(@index - 1);
- }
- .offsetX (0) {}
-
- .offset (@columns) {
- margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
- *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
- }
-
- .offsetFirstChild (@columns) {
- margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
- *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
- }
-
- .span (@columns) {
- width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
- *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
- }
-
- .row-fluid {
- width: 100%;
- .clearfix();
- [class*="span"] {
- .input-block-level();
- float: left;
- margin-left: @fluidGridGutterWidth;
- *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
- }
- [class*="span"]:first-child {
- margin-left: 0;
- }
-
- // Space grid-sized controls properly if multiple per line
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: @fluidGridGutterWidth;
- }
-
- // generate .spanX and .offsetX
- .spanX (@gridColumns);
- .offsetX (@gridColumns);
- }
-
- }
-
- .input(@gridColumnWidth, @gridGutterWidth) {
-
- .spanX (@index) when (@index > 0) {
- input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
- .spanX(@index - 1);
- }
- .spanX (0) {}
-
- .span(@columns) {
- width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
- }
-
- input,
- textarea,
- .uneditable-input {
- margin-left: 0; // override margin-left from core grid system
- }
-
- // Space grid-sized controls properly if multiple per line
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: @gridGutterWidth;
- }
-
- // generate .spanX
- .spanX (@gridColumns);
-
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/modals.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/modals.less
deleted file mode 100644
index 8e272d409..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/modals.less
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// Modals
-// --------------------------------------------------
-
-// Background
-.modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: @zindexModalBackdrop;
- background-color: @black;
- // Fade for backdrop
- &.fade { opacity: 0; }
-}
-
-.modal-backdrop,
-.modal-backdrop.fade.in {
- .opacity(80);
-}
-
-// Base modal
-.modal {
- position: fixed;
- top: 10%;
- left: 50%;
- z-index: @zindexModal;
- width: 560px;
- margin-left: -280px;
- background-color: @white;
- border: 1px solid #999;
- border: 1px solid rgba(0,0,0,.3);
- *border: 1px solid #999; /* IE6-7 */
- .border-radius(6px);
- .box-shadow(0 3px 7px rgba(0,0,0,0.3));
- .background-clip(padding-box);
- // Remove focus outline from opened modal
- outline: none;
-
- &.fade {
- .transition(e('opacity .3s linear, top .3s ease-out'));
- top: -25%;
- }
- &.fade.in { top: 10%; }
-}
-.modal-header {
- padding: 9px 15px;
- border-bottom: 1px solid #eee;
- // Close icon
- .close { margin-top: 2px; }
- // Heading
- h3 {
- margin: 0;
- line-height: 30px;
- }
-}
-
-// Body (where all modal content resides)
-.modal-body {
- position: relative;
- overflow-y: auto;
- max-height: 400px;
- padding: 15px;
-}
-// Remove bottom margin if need be
-.modal-form {
- margin-bottom: 0;
-}
-
-// Footer (for actions)
-.modal-footer {
- padding: 14px 15px 15px;
- margin-bottom: 0;
- text-align: right; // right align buttons
- background-color: #f5f5f5;
- border-top: 1px solid #ddd;
- .border-radius(0 0 6px 6px);
- .box-shadow(inset 0 1px 0 @white);
- .clearfix(); // clear it in case folks use .pull-* classes on buttons
-
- // Properly space out buttons
- .btn + .btn {
- margin-left: 5px;
- margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
- }
- // but override that for button groups
- .btn-group .btn + .btn {
- margin-left: -1px;
- }
- // and override it for block buttons as well
- .btn-block + .btn-block {
- margin-left: 0;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navbar.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navbar.less
deleted file mode 100644
index 93d09bcad..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navbar.less
+++ /dev/null
@@ -1,497 +0,0 @@
-//
-// Navbars (Redux)
-// --------------------------------------------------
-
-
-// COMMON STYLES
-// -------------
-
-// Base class and wrapper
-.navbar {
- overflow: visible;
- margin-bottom: @baseLineHeight;
-
- // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
- *position: relative;
- *z-index: 2;
-}
-
-// Inner for background effects
-// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
-.navbar-inner {
- min-height: @navbarHeight;
- padding-left: 20px;
- padding-right: 20px;
- #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
- border: 1px solid @navbarBorder;
- .border-radius(@baseBorderRadius);
- .box-shadow(0 1px 4px rgba(0,0,0,.065));
-
- // Prevent floats from breaking the navbar
- .clearfix();
-}
-
-// Set width to auto for default container
-// We then reset it for fixed navbars in the #gridSystem mixin
-.navbar .container {
- width: auto;
-}
-
-// Override the default collapsed state
-.nav-collapse.collapse {
- height: auto;
- overflow: visible;
-}
-
-
-// Brand: website or project name
-// -------------------------
-.navbar .brand {
- float: left;
- display: block;
- // Vertically center the text given @navbarHeight
- padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
- margin-left: -20px; // negative indent to left-align the text down the page
- font-size: 20px;
- font-weight: 200;
- color: @navbarBrandColor;
- text-shadow: 0 1px 0 @navbarBackgroundHighlight;
- &:hover,
- &:focus {
- text-decoration: none;
- }
-}
-
-// Plain text in topbar
-// -------------------------
-.navbar-text {
- margin-bottom: 0;
- line-height: @navbarHeight;
- color: @navbarText;
-}
-
-// Janky solution for now to account for links outside the .nav
-// -------------------------
-.navbar-link {
- color: @navbarLinkColor;
- &:hover,
- &:focus {
- color: @navbarLinkColorHover;
- }
-}
-
-// Dividers in navbar
-// -------------------------
-.navbar .divider-vertical {
- height: @navbarHeight;
- margin: 0 9px;
- border-left: 1px solid @navbarBackground;
- border-right: 1px solid @navbarBackgroundHighlight;
-}
-
-// Buttons in navbar
-// -------------------------
-.navbar .btn,
-.navbar .btn-group {
- .navbarVerticalAlign(30px); // Vertically center in navbar
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
- margin-top: 0; // then undo the margin here so we don't accidentally double it
-}
-
-// Navbar forms
-// -------------------------
-.navbar-form {
- margin-bottom: 0; // remove default bottom margin
- .clearfix();
- input,
- select,
- .radio,
- .checkbox {
- .navbarVerticalAlign(30px); // Vertically center in navbar
- }
- input,
- select,
- .btn {
- display: inline-block;
- margin-bottom: 0;
- }
- input[type="image"],
- input[type="checkbox"],
- input[type="radio"] {
- margin-top: 3px;
- }
- .input-append,
- .input-prepend {
- margin-top: 5px;
- white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
- input {
- margin-top: 0; // remove the margin on top since it's on the parent
- }
- }
-}
-
-// Navbar search
-// -------------------------
-.navbar-search {
- position: relative;
- float: left;
- .navbarVerticalAlign(30px); // Vertically center in navbar
- margin-bottom: 0;
- .search-query {
- margin-bottom: 0;
- padding: 4px 14px;
- #font > .sans-serif(13px, normal, 1);
- .border-radius(15px); // redeclare because of specificity of the type attribute
- }
-}
-
-
-
-// Static navbar
-// -------------------------
-
-.navbar-static-top {
- position: static;
- margin-bottom: 0; // remove 18px margin for default navbar
- .navbar-inner {
- .border-radius(0);
- }
-}
-
-
-
-// Fixed navbar
-// -------------------------
-
-// Shared (top/bottom) styles
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- position: fixed;
- right: 0;
- left: 0;
- z-index: @zindexFixedNavbar;
- margin-bottom: 0; // remove 18px margin for default navbar
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
- border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
- border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
- padding-left: 0;
- padding-right: 0;
- .border-radius(0);
-}
-
-// Reset container width
-// Required here as we reset the width earlier on and the grid mixins don't override early enough
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
- #grid > .core > .span(@gridColumns);
-}
-
-// Fixed to top
-.navbar-fixed-top {
- top: 0;
-}
-.navbar-fixed-top,
-.navbar-static-top {
- .navbar-inner {
- .box-shadow(~"0 1px 10px rgba(0,0,0,.1)");
- }
-}
-
-// Fixed to bottom
-.navbar-fixed-bottom {
- bottom: 0;
- .navbar-inner {
- .box-shadow(~"0 -1px 10px rgba(0,0,0,.1)");
- }
-}
-
-
-
-// NAVIGATION
-// ----------
-
-.navbar .nav {
- position: relative;
- left: 0;
- display: block;
- float: left;
- margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
- float: right; // redeclare due to specificity
- margin-right: 0; // remove margin on float right nav
-}
-.navbar .nav > li {
- float: left;
-}
-
-// Links
-.navbar .nav > li > a {
- float: none;
- // Vertically center the text given @navbarHeight
- padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
- color: @navbarLinkColor;
- text-decoration: none;
- text-shadow: 0 1px 0 @navbarBackgroundHighlight;
-}
-.navbar .nav .dropdown-toggle .caret {
- margin-top: 8px;
-}
-
-// Hover/focus
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
- background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
- color: @navbarLinkColorHover;
- text-decoration: none;
-}
-
-// Active nav items
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
- color: @navbarLinkColorActive;
- text-decoration: none;
- background-color: @navbarLinkBackgroundActive;
- .box-shadow(inset 0 3px 8px rgba(0,0,0,.125));
-}
-
-// Navbar button for toggling navbar items in responsive layouts
-// These definitions need to come after '.navbar .btn'
-.navbar .btn-navbar {
- display: none;
- float: right;
- padding: 7px 10px;
- margin-left: 5px;
- margin-right: 5px;
- .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
- .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
-}
-.navbar .btn-navbar .icon-bar {
- display: block;
- width: 18px;
- height: 2px;
- background-color: #f5f5f5;
- .border-radius(1px);
- .box-shadow(0 1px 0 rgba(0,0,0,.25));
-}
-.btn-navbar .icon-bar + .icon-bar {
- margin-top: 3px;
-}
-
-
-
-// Dropdown menus
-// --------------
-
-// Menu position and menu carets
-.navbar .nav > li > .dropdown-menu {
- &:before {
- content: '';
- display: inline-block;
- border-left: 7px solid transparent;
- border-right: 7px solid transparent;
- border-bottom: 7px solid #ccc;
- border-bottom-color: @dropdownBorder;
- position: absolute;
- top: -7px;
- left: 9px;
- }
- &:after {
- content: '';
- display: inline-block;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- border-bottom: 6px solid @dropdownBackground;
- position: absolute;
- top: -6px;
- left: 10px;
- }
-}
-// Menu position and menu caret support for dropups via extra dropup class
-.navbar-fixed-bottom .nav > li > .dropdown-menu {
- &:before {
- border-top: 7px solid #ccc;
- border-top-color: @dropdownBorder;
- border-bottom: 0;
- bottom: -7px;
- top: auto;
- }
- &:after {
- border-top: 6px solid @dropdownBackground;
- border-bottom: 0;
- bottom: -6px;
- top: auto;
- }
-}
-
-// Caret should match text color on hover/focus
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
- border-top-color: @navbarLinkColorHover;
- border-bottom-color: @navbarLinkColorHover;
-}
-
-// Remove background color from open dropdown
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
- background-color: @navbarLinkBackgroundActive;
- color: @navbarLinkColorActive;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
- border-top-color: @navbarLinkColor;
- border-bottom-color: @navbarLinkColor;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
- border-top-color: @navbarLinkColorActive;
- border-bottom-color: @navbarLinkColorActive;
-}
-
-// Right aligned menus need alt position
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
- left: auto;
- right: 0;
- &:before {
- left: auto;
- right: 12px;
- }
- &:after {
- left: auto;
- right: 13px;
- }
- .dropdown-menu {
- left: auto;
- right: 100%;
- margin-left: 0;
- margin-right: -1px;
- .border-radius(6px 0 6px 6px);
- }
-}
-
-
-// Inverted navbar
-// -------------------------
-
-.navbar-inverse {
-
- .navbar-inner {
- #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
- border-color: @navbarInverseBorder;
- }
-
- .brand,
- .nav > li > a {
- color: @navbarInverseLinkColor;
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- &:hover,
- &:focus {
- color: @navbarInverseLinkColorHover;
- }
- }
-
- .brand {
- color: @navbarInverseBrandColor;
- }
-
- .navbar-text {
- color: @navbarInverseText;
- }
-
- .nav > li > a:focus,
- .nav > li > a:hover {
- background-color: @navbarInverseLinkBackgroundHover;
- color: @navbarInverseLinkColorHover;
- }
-
- .nav .active > a,
- .nav .active > a:hover,
- .nav .active > a:focus {
- color: @navbarInverseLinkColorActive;
- background-color: @navbarInverseLinkBackgroundActive;
- }
-
- // Inline text links
- .navbar-link {
- color: @navbarInverseLinkColor;
- &:hover,
- &:focus {
- color: @navbarInverseLinkColorHover;
- }
- }
-
- // Dividers in navbar
- .divider-vertical {
- border-left-color: @navbarInverseBackground;
- border-right-color: @navbarInverseBackgroundHighlight;
- }
-
- // Dropdowns
- .nav li.dropdown.open > .dropdown-toggle,
- .nav li.dropdown.active > .dropdown-toggle,
- .nav li.dropdown.open.active > .dropdown-toggle {
- background-color: @navbarInverseLinkBackgroundActive;
- color: @navbarInverseLinkColorActive;
- }
- .nav li.dropdown > a:hover .caret,
- .nav li.dropdown > a:focus .caret {
- border-top-color: @navbarInverseLinkColorActive;
- border-bottom-color: @navbarInverseLinkColorActive;
- }
- .nav li.dropdown > .dropdown-toggle .caret {
- border-top-color: @navbarInverseLinkColor;
- border-bottom-color: @navbarInverseLinkColor;
- }
- .nav li.dropdown.open > .dropdown-toggle .caret,
- .nav li.dropdown.active > .dropdown-toggle .caret,
- .nav li.dropdown.open.active > .dropdown-toggle .caret {
- border-top-color: @navbarInverseLinkColorActive;
- border-bottom-color: @navbarInverseLinkColorActive;
- }
-
- // Navbar search
- .navbar-search {
- .search-query {
- color: @white;
- background-color: @navbarInverseSearchBackground;
- border-color: @navbarInverseSearchBorder;
- .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
- .transition(none);
- .placeholder(@navbarInverseSearchPlaceholderColor);
-
- // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
- &:focus,
- &.focused {
- padding: 5px 15px;
- color: @grayDark;
- text-shadow: 0 1px 0 @white;
- background-color: @navbarInverseSearchBackgroundFocus;
- border: 0;
- .box-shadow(0 0 3px rgba(0,0,0,.15));
- outline: 0;
- }
- }
- }
-
- // Navbar collapse button
- .btn-navbar {
- .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
- }
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navs.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navs.less
deleted file mode 100644
index 01cd805bd..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navs.less
+++ /dev/null
@@ -1,409 +0,0 @@
-//
-// Navs
-// --------------------------------------------------
-
-
-// BASE CLASS
-// ----------
-
-.nav {
- margin-left: 0;
- margin-bottom: @baseLineHeight;
- list-style: none;
-}
-
-// Make links block level
-.nav > li > a {
- display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
- text-decoration: none;
- background-color: @grayLighter;
-}
-
-// Prevent IE8 from misplacing imgs
-// See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
-.nav > li > a > img {
- max-width: none;
-}
-
-// Redeclare pull classes because of specifity
-.nav > .pull-right {
- float: right;
-}
-
-// Nav headers (for dropdowns and lists)
-.nav-header {
- display: block;
- padding: 3px 15px;
- font-size: 11px;
- font-weight: bold;
- line-height: @baseLineHeight;
- color: @grayLight;
- text-shadow: 0 1px 0 rgba(255,255,255,.5);
- text-transform: uppercase;
-}
-// Space them out when they follow another list item (link)
-.nav li + .nav-header {
- margin-top: 9px;
-}
-
-
-
-// NAV LIST
-// --------
-
-.nav-list {
- padding-left: 15px;
- padding-right: 15px;
- margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
- margin-left: -15px;
- margin-right: -15px;
- text-shadow: 0 1px 0 rgba(255,255,255,.5);
-}
-.nav-list > li > a {
- padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
- color: @white;
- text-shadow: 0 -1px 0 rgba(0,0,0,.2);
- background-color: @linkColor;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
- margin-right: 2px;
-}
-// Dividers (basically an hr) within the dropdown
-.nav-list .divider {
- .nav-divider();
-}
-
-
-
-// TABS AND PILLS
-// -------------
-
-// Common styles
-.nav-tabs,
-.nav-pills {
- .clearfix();
-}
-.nav-tabs > li,
-.nav-pills > li {
- float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
- padding-right: 12px;
- padding-left: 12px;
- margin-right: 2px;
- line-height: 14px; // keeps the overall height an even number
-}
-
-// TABS
-// ----
-
-// Give the tabs something to sit on
-.nav-tabs {
- border-bottom: 1px solid #ddd;
-}
-// Make the list-items overlay the bottom border
-.nav-tabs > li {
- margin-bottom: -1px;
-}
-// Actual tabs (as links)
-.nav-tabs > li > a {
- padding-top: 8px;
- padding-bottom: 8px;
- line-height: @baseLineHeight;
- border: 1px solid transparent;
- .border-radius(4px 4px 0 0);
- &:hover,
- &:focus {
- border-color: @grayLighter @grayLighter #ddd;
- }
-}
-// Active state, and it's :hover/:focus to override normal :hover/:focus
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
- color: @gray;
- background-color: @bodyBackground;
- border: 1px solid #ddd;
- border-bottom-color: transparent;
- cursor: default;
-}
-
-
-// PILLS
-// -----
-
-// Links rendered as pills
-.nav-pills > li > a {
- padding-top: 8px;
- padding-bottom: 8px;
- margin-top: 2px;
- margin-bottom: 2px;
- .border-radius(5px);
-}
-
-// Active state
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
- color: @white;
- background-color: @linkColor;
-}
-
-
-
-// STACKED NAV
-// -----------
-
-// Stacked tabs and pills
-.nav-stacked > li {
- float: none;
-}
-.nav-stacked > li > a {
- margin-right: 0; // no need for the gap between nav items
-}
-
-// Tabs
-.nav-tabs.nav-stacked {
- border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
- border: 1px solid #ddd;
- .border-radius(0);
-}
-.nav-tabs.nav-stacked > li:first-child > a {
- .border-top-radius(4px);
-}
-.nav-tabs.nav-stacked > li:last-child > a {
- .border-bottom-radius(4px);
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
- border-color: #ddd;
- z-index: 2;
-}
-
-// Pills
-.nav-pills.nav-stacked > li > a {
- margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
- margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
-}
-
-
-
-// DROPDOWNS
-// ---------
-
-.nav-tabs .dropdown-menu {
- .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu
-}
-.nav-pills .dropdown-menu {
- .border-radius(6px); // make rounded corners match the pills
-}
-
-// Default dropdown links
-// -------------------------
-// Make carets use linkColor to start
-.nav .dropdown-toggle .caret {
- border-top-color: @linkColor;
- border-bottom-color: @linkColor;
- margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
- border-top-color: @linkColorHover;
- border-bottom-color: @linkColorHover;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
- margin-top: 8px;
-}
-
-// Active dropdown links
-// -------------------------
-.nav .active .dropdown-toggle .caret {
- border-top-color: #fff;
- border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
- border-top-color: @gray;
- border-bottom-color: @gray;
-}
-
-// Active:hover/:focus dropdown links
-// -------------------------
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
- cursor: pointer;
-}
-
-// Open dropdowns
-// -------------------------
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
- color: @white;
- background-color: @grayLight;
- border-color: @grayLight;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
- border-top-color: @white;
- border-bottom-color: @white;
- .opacity(100);
-}
-
-// Dropdowns in stacked tabs
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
- border-color: @grayLight;
-}
-
-
-
-// TABBABLE
-// --------
-
-
-// COMMON STYLES
-// -------------
-
-// Clear any floats
-.tabbable {
- .clearfix();
-}
-.tab-content {
- overflow: auto; // prevent content from running below tabs
-}
-
-// Remove border on bottom, left, right
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
- border-bottom: 0;
-}
-
-// Show/hide tabbable areas
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
- display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
- display: block;
-}
-
-
-// BOTTOM
-// ------
-
-.tabs-below > .nav-tabs {
- border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
- margin-top: -1px;
- margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
- .border-radius(0 0 4px 4px);
- &:hover,
- &:focus {
- border-bottom-color: transparent;
- border-top-color: #ddd;
- }
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
- border-color: transparent #ddd #ddd #ddd;
-}
-
-// LEFT & RIGHT
-// ------------
-
-// Common styles
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
- float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
- min-width: 74px;
- margin-right: 0;
- margin-bottom: 3px;
-}
-
-// Tabs on the left
-.tabs-left > .nav-tabs {
- float: left;
- margin-right: 19px;
- border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
- margin-right: -1px;
- .border-radius(4px 0 0 4px);
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
- border-color: @grayLighter #ddd @grayLighter @grayLighter;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
- border-color: #ddd transparent #ddd #ddd;
- *border-right-color: @white;
-}
-
-// Tabs on the right
-.tabs-right > .nav-tabs {
- float: right;
- margin-left: 19px;
- border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
- margin-left: -1px;
- .border-radius(0 4px 4px 0);
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
- border-color: @grayLighter @grayLighter @grayLighter #ddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
- border-color: #ddd #ddd #ddd transparent;
- *border-left-color: @white;
-}
-
-
-
-// DISABLED STATES
-// ---------------
-
-// Gray out text
-.nav > .disabled > a {
- color: @grayLight;
-}
-// Nuke hover/focus effects
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
- text-decoration: none;
- background-color: transparent;
- cursor: default;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pager.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pager.less
deleted file mode 100644
index 147618829..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pager.less
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Pager pagination
-// --------------------------------------------------
-
-
-.pager {
- margin: @baseLineHeight 0;
- list-style: none;
- text-align: center;
- .clearfix();
-}
-.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: #f5f5f5;
-}
-.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: @grayLight;
- background-color: #fff;
- cursor: default;
-} \ No newline at end of file
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pagination.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pagination.less
deleted file mode 100644
index a789db2d2..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pagination.less
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// Pagination (multiple pages)
-// --------------------------------------------------
-
-// Space out pagination from surrounding content
-.pagination {
- margin: @baseLineHeight 0;
-}
-
-.pagination ul {
- // Allow for text-based alignment
- display: inline-block;
- .ie7-inline-block();
- // Reset default ul styles
- margin-left: 0;
- margin-bottom: 0;
- // Visuals
- .border-radius(@baseBorderRadius);
- .box-shadow(0 1px 2px rgba(0,0,0,.05));
-}
-.pagination ul > li {
- display: inline; // Remove list-style and block-level defaults
-}
-.pagination ul > li > a,
-.pagination ul > li > span {
- float: left; // Collapse white-space
- padding: 4px 12px;
- line-height: @baseLineHeight;
- text-decoration: none;
- background-color: @paginationBackground;
- border: 1px solid @paginationBorder;
- border-left-width: 0;
-}
-.pagination ul > li > a:hover,
-.pagination ul > li > a:focus,
-.pagination ul > .active > a,
-.pagination ul > .active > span {
- background-color: @paginationActiveBackground;
-}
-.pagination ul > .active > a,
-.pagination ul > .active > span {
- color: @grayLight;
- cursor: default;
-}
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover,
-.pagination ul > .disabled > a:focus {
- color: @grayLight;
- background-color: transparent;
- cursor: default;
-}
-.pagination ul > li:first-child > a,
-.pagination ul > li:first-child > span {
- border-left-width: 1px;
- .border-left-radius(@baseBorderRadius);
-}
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
- .border-right-radius(@baseBorderRadius);
-}
-
-
-// Alignment
-// --------------------------------------------------
-
-.pagination-centered {
- text-align: center;
-}
-.pagination-right {
- text-align: right;
-}
-
-
-// Sizing
-// --------------------------------------------------
-
-// Large
-.pagination-large {
- ul > li > a,
- ul > li > span {
- padding: @paddingLarge;
- font-size: @fontSizeLarge;
- }
- ul > li:first-child > a,
- ul > li:first-child > span {
- .border-left-radius(@borderRadiusLarge);
- }
- ul > li:last-child > a,
- ul > li:last-child > span {
- .border-right-radius(@borderRadiusLarge);
- }
-}
-
-// Small and mini
-.pagination-mini,
-.pagination-small {
- ul > li:first-child > a,
- ul > li:first-child > span {
- .border-left-radius(@borderRadiusSmall);
- }
- ul > li:last-child > a,
- ul > li:last-child > span {
- .border-right-radius(@borderRadiusSmall);
- }
-}
-
-// Small
-.pagination-small {
- ul > li > a,
- ul > li > span {
- padding: @paddingSmall;
- font-size: @fontSizeSmall;
- }
-}
-// Mini
-.pagination-mini {
- ul > li > a,
- ul > li > span {
- padding: @paddingMini;
- font-size: @fontSizeMini;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/popovers.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/popovers.less
deleted file mode 100644
index aae35c8cd..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/popovers.less
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// Popovers
-// --------------------------------------------------
-
-
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: @zindexPopover;
- display: none;
- max-width: 276px;
- padding: 1px;
- text-align: left; // Reset given new insertion method
- background-color: @popoverBackground;
- -webkit-background-clip: padding-box;
- -moz-background-clip: padding;
- background-clip: padding-box;
- border: 1px solid #ccc;
- border: 1px solid rgba(0,0,0,.2);
- .border-radius(6px);
- .box-shadow(0 5px 10px rgba(0,0,0,.2));
-
- // Overrides for proper insertion
- white-space: normal;
-
- // Offset the popover to account for the popover arrow
- &.top { margin-top: -10px; }
- &.right { margin-left: 10px; }
- &.bottom { margin-top: 10px; }
- &.left { margin-left: -10px; }
-}
-
-.popover-title {
- margin: 0; // reset heading margin
- padding: 8px 14px;
- font-size: 14px;
- font-weight: normal;
- line-height: 18px;
- background-color: @popoverTitleBackground;
- border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
- .border-radius(5px 5px 0 0);
-
- &:empty {
- display: none;
- }
-}
-
-.popover-content {
- padding: 9px 14px;
-}
-
-// Arrows
-//
-// .arrow is outer, .arrow:after is inner
-
-.popover .arrow,
-.popover .arrow:after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-.popover .arrow {
- border-width: @popoverArrowOuterWidth;
-}
-.popover .arrow:after {
- border-width: @popoverArrowWidth;
- content: "";
-}
-
-.popover {
- &.top .arrow {
- left: 50%;
- margin-left: -@popoverArrowOuterWidth;
- border-bottom-width: 0;
- border-top-color: #999; // IE8 fallback
- border-top-color: @popoverArrowOuterColor;
- bottom: -@popoverArrowOuterWidth;
- &:after {
- bottom: 1px;
- margin-left: -@popoverArrowWidth;
- border-bottom-width: 0;
- border-top-color: @popoverArrowColor;
- }
- }
- &.right .arrow {
- top: 50%;
- left: -@popoverArrowOuterWidth;
- margin-top: -@popoverArrowOuterWidth;
- border-left-width: 0;
- border-right-color: #999; // IE8 fallback
- border-right-color: @popoverArrowOuterColor;
- &:after {
- left: 1px;
- bottom: -@popoverArrowWidth;
- border-left-width: 0;
- border-right-color: @popoverArrowColor;
- }
- }
- &.bottom .arrow {
- left: 50%;
- margin-left: -@popoverArrowOuterWidth;
- border-top-width: 0;
- border-bottom-color: #999; // IE8 fallback
- border-bottom-color: @popoverArrowOuterColor;
- top: -@popoverArrowOuterWidth;
- &:after {
- top: 1px;
- margin-left: -@popoverArrowWidth;
- border-top-width: 0;
- border-bottom-color: @popoverArrowColor;
- }
- }
-
- &.left .arrow {
- top: 50%;
- right: -@popoverArrowOuterWidth;
- margin-top: -@popoverArrowOuterWidth;
- border-right-width: 0;
- border-left-color: #999; // IE8 fallback
- border-left-color: @popoverArrowOuterColor;
- &:after {
- right: 1px;
- border-right-width: 0;
- border-left-color: @popoverArrowColor;
- bottom: -@popoverArrowWidth;
- }
- }
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/progress-bars.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/progress-bars.less
deleted file mode 100644
index 5e0c3dda0..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/progress-bars.less
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// Progress bars
-// --------------------------------------------------
-
-
-// ANIMATIONS
-// ----------
-
-// Webkit
-@-webkit-keyframes progress-bar-stripes {
- from { background-position: 40px 0; }
- to { background-position: 0 0; }
-}
-
-// Firefox
-@-moz-keyframes progress-bar-stripes {
- from { background-position: 40px 0; }
- to { background-position: 0 0; }
-}
-
-// IE9
-@-ms-keyframes progress-bar-stripes {
- from { background-position: 40px 0; }
- to { background-position: 0 0; }
-}
-
-// Opera
-@-o-keyframes progress-bar-stripes {
- from { background-position: 0 0; }
- to { background-position: 40px 0; }
-}
-
-// Spec
-@keyframes progress-bar-stripes {
- from { background-position: 40px 0; }
- to { background-position: 0 0; }
-}
-
-
-
-// THE BARS
-// --------
-
-// Outer container
-.progress {
- overflow: hidden;
- height: @baseLineHeight;
- margin-bottom: @baseLineHeight;
- #gradient > .vertical(#f5f5f5, #f9f9f9);
- .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
- .border-radius(@baseBorderRadius);
-}
-
-// Bar of progress
-.progress .bar {
- width: 0%;
- height: 100%;
- color: @white;
- float: left;
- font-size: 12px;
- text-align: center;
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- #gradient > .vertical(#149bdf, #0480be);
- .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
- .box-sizing(border-box);
- .transition(width .6s ease);
-}
-.progress .bar + .bar {
- .box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
-}
-
-// Striped bars
-.progress-striped .bar {
- #gradient > .striped(#149bdf);
- .background-size(40px 40px);
-}
-
-// Call animation for the active one
-.progress.active .bar {
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -moz-animation: progress-bar-stripes 2s linear infinite;
- -ms-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
-}
-
-
-
-// COLORS
-// ------
-
-// Danger (red)
-.progress-danger .bar, .progress .bar-danger {
- #gradient > .vertical(#ee5f5b, #c43c35);
-}
-.progress-danger.progress-striped .bar, .progress-striped .bar-danger {
- #gradient > .striped(#ee5f5b);
-}
-
-// Success (green)
-.progress-success .bar, .progress .bar-success {
- #gradient > .vertical(#62c462, #57a957);
-}
-.progress-success.progress-striped .bar, .progress-striped .bar-success {
- #gradient > .striped(#62c462);
-}
-
-// Info (teal)
-.progress-info .bar, .progress .bar-info {
- #gradient > .vertical(#5bc0de, #339bb9);
-}
-.progress-info.progress-striped .bar, .progress-striped .bar-info {
- #gradient > .striped(#5bc0de);
-}
-
-// Warning (orange)
-.progress-warning .bar, .progress .bar-warning {
- #gradient > .vertical(lighten(@orange, 15%), @orange);
-}
-.progress-warning.progress-striped .bar, .progress-striped .bar-warning {
- #gradient > .striped(lighten(@orange, 15%));
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/reset.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/reset.less
deleted file mode 100644
index 4806bd5e5..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/reset.less
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Reset CSS
-// Adapted from http://github.com/necolas/normalize.css
-// --------------------------------------------------
-
-
-// Display in IE6-9 and FF3
-// -------------------------
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
- display: block;
-}
-
-// Display block in IE6-9 and FF3
-// -------------------------
-
-audio,
-canvas,
-video {
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-// Prevents modern browsers from displaying 'audio' without controls
-// -------------------------
-
-audio:not([controls]) {
- display: none;
-}
-
-// Base settings
-// -------------------------
-
-html {
- font-size: 100%;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
-}
-// Focus states
-a:focus {
- .tab-focus();
-}
-// Hover & Active
-a:hover,
-a:active {
- outline: 0;
-}
-
-// Prevents sub and sup affecting line-height in all browsers
-// -------------------------
-
-sub,
-sup {
- position: relative;
- font-size: 75%;
- line-height: 0;
- vertical-align: baseline;
-}
-sup {
- top: -0.5em;
-}
-sub {
- bottom: -0.25em;
-}
-
-// Img border in a's and image quality
-// -------------------------
-
-img {
- /* Responsive images (ensure images don't scale beyond their parents) */
- max-width: 100%; /* Part 1: Set a maxium relative to the parent */
- width: auto\9; /* IE7-8 need help adjusting responsive images */
- height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
- vertical-align: middle;
- border: 0;
- -ms-interpolation-mode: bicubic;
-}
-
-// Prevent max-width from affecting Google Maps
-#map_canvas img,
-.google-maps img {
- max-width: none;
-}
-
-// Forms
-// -------------------------
-
-// Font size in all browsers, margin changes, misc consistency
-button,
-input,
-select,
-textarea {
- margin: 0;
- font-size: 100%;
- vertical-align: middle;
-}
-button,
-input {
- *overflow: visible; // Inner spacing ie IE6/7
- line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
- padding: 0;
- border: 0;
-}
-button,
-html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
- cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
- cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-}
-input[type="search"] { // Appearance in Safari/Chrome
- .box-sizing(content-box);
- -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
- -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
-}
-textarea {
- overflow: auto; // Remove vertical scrollbar in IE6-9
- vertical-align: top; // Readability and alignment cross-browser
-}
-
-
-// Printing
-// -------------------------
-// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
-
-@media print {
-
- * {
- text-shadow: none !important;
- color: #000 !important; // Black prints faster: h5bp.com/s
- 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) ")";
- }
-
- // Don't show links for images, or javascript/internal links
- .ir a:after,
- a[href^="javascript:"]:after,
- a[href^="#"]:after {
- content: "";
- }
-
- pre,
- blockquote {
- border: 1px solid #999;
- page-break-inside: avoid;
- }
-
- thead {
- display: table-header-group; // h5bp.com/t
- }
-
- tr,
- img {
- page-break-inside: avoid;
- }
-
- img {
- max-width: 100% !important;
- }
-
- @page {
- margin: 0.5cm;
- }
-
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
-
- h2,
- h3 {
- page-break-after: avoid;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-1200px-min.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-1200px-min.less
deleted file mode 100644
index 4f35ba6ca..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-1200px-min.less
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Responsive: Large desktop and up
-// --------------------------------------------------
-
-
-@media (min-width: 1200px) {
-
- // Fixed grid
- #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
-
- // Fluid grid
- #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
-
- // Input grid
- #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
-
- // Thumbnails
- .thumbnails {
- margin-left: -@gridGutterWidth1200;
- }
- .thumbnails > li {
- margin-left: @gridGutterWidth1200;
- }
- .row-fluid .thumbnails {
- margin-left: 0;
- }
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-767px-max.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-767px-max.less
deleted file mode 100644
index 128f4ce30..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-767px-max.less
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// Responsive: Landscape phone to desktop/tablet
-// --------------------------------------------------
-
-
-@media (max-width: 767px) {
-
- // Padding to set content in a bit
- body {
- padding-left: 20px;
- padding-right: 20px;
- }
- // Negative indent the now static "fixed" navbar
- .navbar-fixed-top,
- .navbar-fixed-bottom,
- .navbar-static-top {
- margin-left: -20px;
- margin-right: -20px;
- }
- // Remove padding on container given explicit padding set on body
- .container-fluid {
- padding: 0;
- }
-
- // TYPOGRAPHY
- // ----------
- // Reset horizontal dl
- .dl-horizontal {
- dt {
- float: none;
- clear: none;
- width: auto;
- text-align: left;
- }
- dd {
- margin-left: 0;
- }
- }
-
- // GRID & CONTAINERS
- // -----------------
- // Remove width from containers
- .container {
- width: auto;
- }
- // Fluid rows
- .row-fluid {
- width: 100%;
- }
- // Undo negative margin on rows and thumbnails
- .row,
- .thumbnails {
- margin-left: 0;
- }
- .thumbnails > li {
- float: none;
- margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
- }
- // Make all grid-sized elements block level again
- [class*="span"],
- .uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing
- .row-fluid [class*="span"] {
- float: none;
- display: block;
- width: 100%;
- margin-left: 0;
- .box-sizing(border-box);
- }
- .span12,
- .row-fluid .span12 {
- width: 100%;
- .box-sizing(border-box);
- }
- .row-fluid [class*="offset"]:first-child {
- margin-left: 0;
- }
-
- // FORM FIELDS
- // -----------
- // Make span* classes full width
- .input-large,
- .input-xlarge,
- .input-xxlarge,
- input[class*="span"],
- select[class*="span"],
- textarea[class*="span"],
- .uneditable-input {
- .input-block-level();
- }
- // But don't let it screw up prepend/append inputs
- .input-prepend input,
- .input-append input,
- .input-prepend input[class*="span"],
- .input-append input[class*="span"] {
- display: inline-block; // redeclare so they don't wrap to new lines
- width: auto;
- }
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: 0;
- }
-
- // Modals
- .modal {
- position: fixed;
- top: 20px;
- left: 20px;
- right: 20px;
- width: auto;
- margin: 0;
- &.fade { top: -100px; }
- &.fade.in { top: 20px; }
- }
-
-}
-
-
-
-// UP TO LANDSCAPE PHONE
-// ---------------------
-
-@media (max-width: 480px) {
-
- // Smooth out the collapsing/expanding nav
- .nav-collapse {
- -webkit-transform: translate3d(0, 0, 0); // activate the GPU
- }
-
- // Block level the page header small tag for readability
- .page-header h1 small {
- display: block;
- line-height: @baseLineHeight;
- }
-
- // Update checkboxes for iOS
- input[type="checkbox"],
- input[type="radio"] {
- border: 1px solid #ccc;
- }
-
- // Remove the horizontal form styles
- .form-horizontal {
- .control-label {
- float: none;
- width: auto;
- padding-top: 0;
- text-align: left;
- }
- // Move over all input controls and content
- .controls {
- margin-left: 0;
- }
- // Move the options list down to align with labels
- .control-list {
- padding-top: 0; // has to be padding because margin collaspes
- }
- // Move over buttons in .form-actions to align with .controls
- .form-actions {
- padding-left: 10px;
- padding-right: 10px;
- }
- }
-
- // Medias
- // Reset float and spacing to stack
- .media .pull-left,
- .media .pull-right {
- float: none;
- display: block;
- margin-bottom: 10px;
- }
- // Remove side margins since we stack instead of indent
- .media-object {
- margin-right: 0;
- margin-left: 0;
- }
-
- // Modals
- .modal {
- top: 10px;
- left: 10px;
- right: 10px;
- }
- .modal-header .close {
- padding: 10px;
- margin: -10px;
- }
-
- // Carousel
- .carousel-caption {
- position: static;
- }
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-768px-979px.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-768px-979px.less
deleted file mode 100644
index 8e8c486a0..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-768px-979px.less
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Responsive: Tablet to desktop
-// --------------------------------------------------
-
-
-@media (min-width: 768px) and (max-width: 979px) {
-
- // Fixed grid
- #grid > .core(@gridColumnWidth768, @gridGutterWidth768);
-
- // Fluid grid
- #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
-
- // Input grid
- #grid > .input(@gridColumnWidth768, @gridGutterWidth768);
-
- // No need to reset .thumbnails here since it's the same @gridGutterWidth
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-navbar.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-navbar.less
deleted file mode 100644
index 21cd3ba67..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-navbar.less
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-// Responsive: Navbar
-// --------------------------------------------------
-
-
-// TABLETS AND BELOW
-// -----------------
-@media (max-width: @navbarCollapseWidth) {
-
- // UNFIX THE TOPBAR
- // ----------------
- // Remove any padding from the body
- body {
- padding-top: 0;
- }
- // Unfix the navbars
- .navbar-fixed-top,
- .navbar-fixed-bottom {
- position: static;
- }
- .navbar-fixed-top {
- margin-bottom: @baseLineHeight;
- }
- .navbar-fixed-bottom {
- margin-top: @baseLineHeight;
- }
- .navbar-fixed-top .navbar-inner,
- .navbar-fixed-bottom .navbar-inner {
- padding: 5px;
- }
- .navbar .container {
- width: auto;
- padding: 0;
- }
- // Account for brand name
- .navbar .brand {
- padding-left: 10px;
- padding-right: 10px;
- margin: 0 0 0 -5px;
- }
-
- // COLLAPSIBLE NAVBAR
- // ------------------
- // Nav collapse clears brand
- .nav-collapse {
- clear: both;
- }
- // Block-level the nav
- .nav-collapse .nav {
- float: none;
- margin: 0 0 (@baseLineHeight / 2);
- }
- .nav-collapse .nav > li {
- float: none;
- }
- .nav-collapse .nav > li > a {
- margin-bottom: 2px;
- }
- .nav-collapse .nav > .divider-vertical {
- display: none;
- }
- .nav-collapse .nav .nav-header {
- color: @navbarText;
- text-shadow: none;
- }
- // Nav and dropdown links in navbar
- .nav-collapse .nav > li > a,
- .nav-collapse .dropdown-menu a {
- padding: 9px 15px;
- font-weight: bold;
- color: @navbarLinkColor;
- .border-radius(3px);
- }
- // Buttons
- .nav-collapse .btn {
- padding: 4px 10px 4px;
- font-weight: normal;
- .border-radius(@baseBorderRadius);
- }
- .nav-collapse .dropdown-menu li + li a {
- margin-bottom: 2px;
- }
- .nav-collapse .nav > li > a:hover,
- .nav-collapse .nav > li > a:focus,
- .nav-collapse .dropdown-menu a:hover,
- .nav-collapse .dropdown-menu a:focus {
- background-color: @navbarBackground;
- }
- .navbar-inverse .nav-collapse .nav > li > a,
- .navbar-inverse .nav-collapse .dropdown-menu a {
- color: @navbarInverseLinkColor;
- }
- .navbar-inverse .nav-collapse .nav > li > a:hover,
- .navbar-inverse .nav-collapse .nav > li > a:focus,
- .navbar-inverse .nav-collapse .dropdown-menu a:hover,
- .navbar-inverse .nav-collapse .dropdown-menu a:focus {
- background-color: @navbarInverseBackground;
- }
- // Buttons in the navbar
- .nav-collapse.in .btn-group {
- margin-top: 5px;
- padding: 0;
- }
- // Dropdowns in the navbar
- .nav-collapse .dropdown-menu {
- position: static;
- top: auto;
- left: auto;
- float: none;
- display: none;
- max-width: none;
- margin: 0 15px;
- padding: 0;
- background-color: transparent;
- border: none;
- .border-radius(0);
- .box-shadow(none);
- }
- .nav-collapse .open > .dropdown-menu {
- display: block;
- }
-
- .nav-collapse .dropdown-menu:before,
- .nav-collapse .dropdown-menu:after {
- display: none;
- }
- .nav-collapse .dropdown-menu .divider {
- display: none;
- }
- .nav-collapse .nav > li > .dropdown-menu {
- &:before,
- &:after {
- display: none;
- }
- }
- // Forms in navbar
- .nav-collapse .navbar-form,
- .nav-collapse .navbar-search {
- float: none;
- padding: (@baseLineHeight / 2) 15px;
- margin: (@baseLineHeight / 2) 0;
- border-top: 1px solid @navbarBackground;
- border-bottom: 1px solid @navbarBackground;
- .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)");
- }
- .navbar-inverse .nav-collapse .navbar-form,
- .navbar-inverse .nav-collapse .navbar-search {
- border-top-color: @navbarInverseBackground;
- border-bottom-color: @navbarInverseBackground;
- }
- // Pull right (secondary) nav content
- .navbar .nav-collapse .nav.pull-right {
- float: none;
- margin-left: 0;
- }
- // Hide everything in the navbar save .brand and toggle button */
- .nav-collapse,
- .nav-collapse.collapse {
- overflow: hidden;
- height: 0;
- }
- // Navbar button
- .navbar .btn-navbar {
- display: block;
- }
-
- // STATIC NAVBAR
- // -------------
- .navbar-static .navbar-inner {
- padding-left: 10px;
- padding-right: 10px;
- }
-
-
-}
-
-
-// DEFAULT DESKTOP
-// ---------------
-
-@media (min-width: @navbarCollapseDesktopWidth) {
-
- // Required to make the collapsing navbar work on regular desktops
- .nav-collapse.collapse {
- height: auto !important;
- overflow: visible !important;
- }
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-utilities.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-utilities.less
deleted file mode 100644
index bf43e8ef7..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-utilities.less
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// Responsive: Utility classes
-// --------------------------------------------------
-
-
-// IE10 Metro responsive
-// Required for Windows 8 Metro split-screen snapping with IE10
-// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
-@-ms-viewport{
- width: device-width;
-}
-
-// Hide from screenreaders and browsers
-// Credit: HTML5 Boilerplate
-.hidden {
- display: none;
- visibility: hidden;
-}
-
-// Visibility utilities
-
-// For desktops
-.visible-phone { display: none !important; }
-.visible-tablet { display: none !important; }
-.hidden-phone { }
-.hidden-tablet { }
-.hidden-desktop { display: none !important; }
-.visible-desktop { display: inherit !important; }
-
-// Tablets & small desktops only
-@media (min-width: 768px) and (max-width: 979px) {
- // Hide everything else
- .hidden-desktop { display: inherit !important; }
- .visible-desktop { display: none !important ; }
- // Show
- .visible-tablet { display: inherit !important; }
- // Hide
- .hidden-tablet { display: none !important; }
-}
-
-// Phones only
-@media (max-width: 767px) {
- // Hide everything else
- .hidden-desktop { display: inherit !important; }
- .visible-desktop { display: none !important; }
- // Show
- .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
- // Hide
- .hidden-phone { display: none !important; }
-}
-
-// Print utilities
-.visible-print { display: none !important; }
-.hidden-print { }
-
-@media print {
- .visible-print { display: inherit !important; }
- .hidden-print { display: none !important; }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive.less
deleted file mode 100644
index 9e5f9b1f4..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive.less
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!
- * Bootstrap Responsive v2.3.2
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-
-// Responsive.less
-// For phone and tablet devices
-// -------------------------------------------------------------
-
-
-// REPEAT VARIABLES & MIXINS
-// -------------------------
-// Required since we compile the responsive stuff separately
-
-@import "variables.less"; // Modify this for custom colors, font-sizes, etc
-@import "mixins.less";
-
-
-// RESPONSIVE CLASSES
-// ------------------
-
-@import "responsive-utilities.less";
-
-
-// MEDIA QUERIES
-// ------------------
-
-// Large desktops
-@import "responsive-1200px-min.less";
-
-// Tablets to regular desktops
-@import "responsive-768px-979px.less";
-
-// Phones to portrait tablets and narrow desktops
-@import "responsive-767px-max.less";
-
-
-// RESPONSIVE NAVBAR
-// ------------------
-
-// From 979px and below, show a button to toggle navbar contents
-@import "responsive-navbar.less";
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/scaffolding.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/scaffolding.less
deleted file mode 100644
index f17e8cadb..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/scaffolding.less
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Scaffolding
-// --------------------------------------------------
-
-
-// Body reset
-// -------------------------
-
-body {
- margin: 0;
- font-family: @baseFontFamily;
- font-size: @baseFontSize;
- line-height: @baseLineHeight;
- color: @textColor;
- background-color: @bodyBackground;
-}
-
-
-// Links
-// -------------------------
-
-a {
- color: @linkColor;
- text-decoration: none;
-}
-a:hover,
-a:focus {
- color: @linkColorHover;
- text-decoration: underline;
-}
-
-
-// Images
-// -------------------------
-
-// Rounded corners
-.img-rounded {
- .border-radius(6px);
-}
-
-// Add polaroid-esque trim
-.img-polaroid {
- padding: 4px;
- background-color: #fff;
- border: 1px solid #ccc;
- border: 1px solid rgba(0,0,0,.2);
- .box-shadow(0 1px 3px rgba(0,0,0,.1));
-}
-
-// Perfect circle
-.img-circle {
- .border-radius(500px); // crank the border-radius so it works with most reasonably sized images
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/sprites.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/sprites.less
deleted file mode 100644
index 1812bf71a..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/sprites.less
+++ /dev/null
@@ -1,197 +0,0 @@
-//
-// Sprites
-// --------------------------------------------------
-
-
-// ICONS
-// -----
-
-// All icons receive the styles of the <i> tag with a base class
-// of .i and are then given a unique class to add width, height,
-// and background-position. Your resulting HTML will look like
-// <i class="icon-inbox"></i>.
-
-// For the white version of the icons, just add the .icon-white class:
-// <i class="icon-inbox icon-white"></i>
-
-[class^="icon-"],
-[class*=" icon-"] {
- display: inline-block;
- width: 14px;
- height: 14px;
- .ie7-restore-right-whitespace();
- line-height: 14px;
- vertical-align: text-top;
- background-image: url("@{iconSpritePath}");
- background-position: 14px 14px;
- background-repeat: no-repeat;
- margin-top: 1px;
-}
-
-/* White icons with optional class, or on hover/focus/active states of certain elements */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:focus > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > li > a:focus > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:focus > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"],
-.dropdown-submenu:focus > a > [class*=" icon-"] {
- background-image: url("@{iconWhiteSpritePath}");
-}
-
-.icon-glass { background-position: 0 0; }
-.icon-music { background-position: -24px 0; }
-.icon-search { background-position: -48px 0; }
-.icon-envelope { background-position: -72px 0; }
-.icon-heart { background-position: -96px 0; }
-.icon-star { background-position: -120px 0; }
-.icon-star-empty { background-position: -144px 0; }
-.icon-user { background-position: -168px 0; }
-.icon-film { background-position: -192px 0; }
-.icon-th-large { background-position: -216px 0; }
-.icon-th { background-position: -240px 0; }
-.icon-th-list { background-position: -264px 0; }
-.icon-ok { background-position: -288px 0; }
-.icon-remove { background-position: -312px 0; }
-.icon-zoom-in { background-position: -336px 0; }
-.icon-zoom-out { background-position: -360px 0; }
-.icon-off { background-position: -384px 0; }
-.icon-signal { background-position: -408px 0; }
-.icon-cog { background-position: -432px 0; }
-.icon-trash { background-position: -456px 0; }
-
-.icon-home { background-position: 0 -24px; }
-.icon-file { background-position: -24px -24px; }
-.icon-time { background-position: -48px -24px; }
-.icon-road { background-position: -72px -24px; }
-.icon-download-alt { background-position: -96px -24px; }
-.icon-download { background-position: -120px -24px; }
-.icon-upload { background-position: -144px -24px; }
-.icon-inbox { background-position: -168px -24px; }
-.icon-play-circle { background-position: -192px -24px; }
-.icon-repeat { background-position: -216px -24px; }
-.icon-refresh { background-position: -240px -24px; }
-.icon-list-alt { background-position: -264px -24px; }
-.icon-lock { background-position: -287px -24px; } // 1px off
-.icon-flag { background-position: -312px -24px; }
-.icon-headphones { background-position: -336px -24px; }
-.icon-volume-off { background-position: -360px -24px; }
-.icon-volume-down { background-position: -384px -24px; }
-.icon-volume-up { background-position: -408px -24px; }
-.icon-qrcode { background-position: -432px -24px; }
-.icon-barcode { background-position: -456px -24px; }
-
-.icon-tag { background-position: 0 -48px; }
-.icon-tags { background-position: -25px -48px; } // 1px off
-.icon-book { background-position: -48px -48px; }
-.icon-bookmark { background-position: -72px -48px; }
-.icon-print { background-position: -96px -48px; }
-.icon-camera { background-position: -120px -48px; }
-.icon-font { background-position: -144px -48px; }
-.icon-bold { background-position: -167px -48px; } // 1px off
-.icon-italic { background-position: -192px -48px; }
-.icon-text-height { background-position: -216px -48px; }
-.icon-text-width { background-position: -240px -48px; }
-.icon-align-left { background-position: -264px -48px; }
-.icon-align-center { background-position: -288px -48px; }
-.icon-align-right { background-position: -312px -48px; }
-.icon-align-justify { background-position: -336px -48px; }
-.icon-list { background-position: -360px -48px; }
-.icon-indent-left { background-position: -384px -48px; }
-.icon-indent-right { background-position: -408px -48px; }
-.icon-facetime-video { background-position: -432px -48px; }
-.icon-picture { background-position: -456px -48px; }
-
-.icon-pencil { background-position: 0 -72px; }
-.icon-map-marker { background-position: -24px -72px; }
-.icon-adjust { background-position: -48px -72px; }
-.icon-tint { background-position: -72px -72px; }
-.icon-edit { background-position: -96px -72px; }
-.icon-share { background-position: -120px -72px; }
-.icon-check { background-position: -144px -72px; }
-.icon-move { background-position: -168px -72px; }
-.icon-step-backward { background-position: -192px -72px; }
-.icon-fast-backward { background-position: -216px -72px; }
-.icon-backward { background-position: -240px -72px; }
-.icon-play { background-position: -264px -72px; }
-.icon-pause { background-position: -288px -72px; }
-.icon-stop { background-position: -312px -72px; }
-.icon-forward { background-position: -336px -72px; }
-.icon-fast-forward { background-position: -360px -72px; }
-.icon-step-forward { background-position: -384px -72px; }
-.icon-eject { background-position: -408px -72px; }
-.icon-chevron-left { background-position: -432px -72px; }
-.icon-chevron-right { background-position: -456px -72px; }
-
-.icon-plus-sign { background-position: 0 -96px; }
-.icon-minus-sign { background-position: -24px -96px; }
-.icon-remove-sign { background-position: -48px -96px; }
-.icon-ok-sign { background-position: -72px -96px; }
-.icon-question-sign { background-position: -96px -96px; }
-.icon-info-sign { background-position: -120px -96px; }
-.icon-screenshot { background-position: -144px -96px; }
-.icon-remove-circle { background-position: -168px -96px; }
-.icon-ok-circle { background-position: -192px -96px; }
-.icon-ban-circle { background-position: -216px -96px; }
-.icon-arrow-left { background-position: -240px -96px; }
-.icon-arrow-right { background-position: -264px -96px; }
-.icon-arrow-up { background-position: -289px -96px; } // 1px off
-.icon-arrow-down { background-position: -312px -96px; }
-.icon-share-alt { background-position: -336px -96px; }
-.icon-resize-full { background-position: -360px -96px; }
-.icon-resize-small { background-position: -384px -96px; }
-.icon-plus { background-position: -408px -96px; }
-.icon-minus { background-position: -433px -96px; }
-.icon-asterisk { background-position: -456px -96px; }
-
-.icon-exclamation-sign { background-position: 0 -120px; }
-.icon-gift { background-position: -24px -120px; }
-.icon-leaf { background-position: -48px -120px; }
-.icon-fire { background-position: -72px -120px; }
-.icon-eye-open { background-position: -96px -120px; }
-.icon-eye-close { background-position: -120px -120px; }
-.icon-warning-sign { background-position: -144px -120px; }
-.icon-plane { background-position: -168px -120px; }
-.icon-calendar { background-position: -192px -120px; }
-.icon-random { background-position: -216px -120px; width: 16px; }
-.icon-comment { background-position: -240px -120px; }
-.icon-magnet { background-position: -264px -120px; }
-.icon-chevron-up { background-position: -288px -120px; }
-.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
-.icon-retweet { background-position: -336px -120px; }
-.icon-shopping-cart { background-position: -360px -120px; }
-.icon-folder-close { background-position: -384px -120px; width: 16px; }
-.icon-folder-open { background-position: -408px -120px; width: 16px; }
-.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
-.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
-
-.icon-hdd { background-position: 0 -144px; }
-.icon-bullhorn { background-position: -24px -144px; }
-.icon-bell { background-position: -48px -144px; }
-.icon-certificate { background-position: -72px -144px; }
-.icon-thumbs-up { background-position: -96px -144px; }
-.icon-thumbs-down { background-position: -120px -144px; }
-.icon-hand-right { background-position: -144px -144px; }
-.icon-hand-left { background-position: -168px -144px; }
-.icon-hand-up { background-position: -192px -144px; }
-.icon-hand-down { background-position: -216px -144px; }
-.icon-circle-arrow-right { background-position: -240px -144px; }
-.icon-circle-arrow-left { background-position: -264px -144px; }
-.icon-circle-arrow-up { background-position: -288px -144px; }
-.icon-circle-arrow-down { background-position: -312px -144px; }
-.icon-globe { background-position: -336px -144px; }
-.icon-wrench { background-position: -360px -144px; }
-.icon-tasks { background-position: -384px -144px; }
-.icon-filter { background-position: -408px -144px; }
-.icon-briefcase { background-position: -432px -144px; }
-.icon-fullscreen { background-position: -456px -144px; }
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tables.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tables.less
deleted file mode 100644
index 0e35271e1..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tables.less
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// Tables
-// --------------------------------------------------
-
-
-// BASE TABLES
-// -----------------
-
-table {
- max-width: 100%;
- background-color: @tableBackground;
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-// BASELINE STYLES
-// ---------------
-
-.table {
- width: 100%;
- margin-bottom: @baseLineHeight;
- // Cells
- th,
- td {
- padding: 8px;
- line-height: @baseLineHeight;
- text-align: left;
- vertical-align: top;
- border-top: 1px solid @tableBorder;
- }
- th {
- font-weight: bold;
- }
- // Bottom align for column headings
- thead th {
- vertical-align: bottom;
- }
- // Remove top border from thead by default
- caption + thead tr:first-child th,
- caption + thead tr:first-child td,
- colgroup + thead tr:first-child th,
- colgroup + thead tr:first-child td,
- thead:first-child tr:first-child th,
- thead:first-child tr:first-child td {
- border-top: 0;
- }
- // Account for multiple tbody instances
- tbody + tbody {
- border-top: 2px solid @tableBorder;
- }
-
- // Nesting
- .table {
- background-color: @bodyBackground;
- }
-}
-
-
-
-// CONDENSED TABLE W/ HALF PADDING
-// -------------------------------
-
-.table-condensed {
- th,
- td {
- padding: 4px 5px;
- }
-}
-
-
-// BORDERED VERSION
-// ----------------
-
-.table-bordered {
- border: 1px solid @tableBorder;
- border-collapse: separate; // Done so we can round those corners!
- *border-collapse: collapse; // IE7 can't round corners anyway
- border-left: 0;
- .border-radius(@baseBorderRadius);
- th,
- td {
- border-left: 1px solid @tableBorder;
- }
- // Prevent a double border
- caption + thead tr:first-child th,
- caption + tbody tr:first-child th,
- caption + tbody tr:first-child td,
- colgroup + thead tr:first-child th,
- colgroup + tbody tr:first-child th,
- colgroup + tbody tr:first-child td,
- thead:first-child tr:first-child th,
- tbody:first-child tr:first-child th,
- tbody:first-child tr:first-child td {
- border-top: 0;
- }
- // For first th/td in the first row in the first thead or tbody
- thead:first-child tr:first-child > th:first-child,
- tbody:first-child tr:first-child > td:first-child,
- tbody:first-child tr:first-child > th:first-child {
- .border-top-left-radius(@baseBorderRadius);
- }
- // For last th/td in the first row in the first thead or tbody
- thead:first-child tr:first-child > th:last-child,
- tbody:first-child tr:first-child > td:last-child,
- tbody:first-child tr:first-child > th:last-child {
- .border-top-right-radius(@baseBorderRadius);
- }
- // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
- thead:last-child tr:last-child > th:first-child,
- tbody:last-child tr:last-child > td:first-child,
- tbody:last-child tr:last-child > th:first-child,
- tfoot:last-child tr:last-child > td:first-child,
- tfoot:last-child tr:last-child > th:first-child {
- .border-bottom-left-radius(@baseBorderRadius);
- }
- // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
- thead:last-child tr:last-child > th:last-child,
- tbody:last-child tr:last-child > td:last-child,
- tbody:last-child tr:last-child > th:last-child,
- tfoot:last-child tr:last-child > td:last-child,
- tfoot:last-child tr:last-child > th:last-child {
- .border-bottom-right-radius(@baseBorderRadius);
- }
-
- // Clear border-radius for first and last td in the last row in the last tbody for table with tfoot
- tfoot + tbody:last-child tr:last-child td:first-child {
- .border-bottom-left-radius(0);
- }
- tfoot + tbody:last-child tr:last-child td:last-child {
- .border-bottom-right-radius(0);
- }
-
- // Special fixes to round the left border on the first td/th
- caption + thead tr:first-child th:first-child,
- caption + tbody tr:first-child td:first-child,
- colgroup + thead tr:first-child th:first-child,
- colgroup + tbody tr:first-child td:first-child {
- .border-top-left-radius(@baseBorderRadius);
- }
- caption + thead tr:first-child th:last-child,
- caption + tbody tr:first-child td:last-child,
- colgroup + thead tr:first-child th:last-child,
- colgroup + tbody tr:first-child td:last-child {
- .border-top-right-radius(@baseBorderRadius);
- }
-
-}
-
-
-
-
-// ZEBRA-STRIPING
-// --------------
-
-// Default zebra-stripe styles (alternating gray and transparent backgrounds)
-.table-striped {
- tbody {
- > tr:nth-child(odd) > td,
- > tr:nth-child(odd) > th {
- background-color: @tableBackgroundAccent;
- }
- }
-}
-
-
-// HOVER EFFECT
-// ------------
-// Placed here since it has to come after the potential zebra striping
-.table-hover {
- tbody {
- tr:hover > td,
- tr:hover > th {
- background-color: @tableBackgroundHover;
- }
- }
-}
-
-
-// TABLE CELL SIZING
-// -----------------
-
-// Reset default grid behavior
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
- display: table-cell;
- float: none; // undo default grid column styles
- margin-left: 0; // undo default grid column styles
-}
-
-// Change the column widths to account for td/th padding
-.table td,
-.table th {
- &.span1 { .tableColumns(1); }
- &.span2 { .tableColumns(2); }
- &.span3 { .tableColumns(3); }
- &.span4 { .tableColumns(4); }
- &.span5 { .tableColumns(5); }
- &.span6 { .tableColumns(6); }
- &.span7 { .tableColumns(7); }
- &.span8 { .tableColumns(8); }
- &.span9 { .tableColumns(9); }
- &.span10 { .tableColumns(10); }
- &.span11 { .tableColumns(11); }
- &.span12 { .tableColumns(12); }
-}
-
-
-
-// TABLE BACKGROUNDS
-// -----------------
-// Exact selectors below required to override .table-striped
-
-.table tbody tr {
- &.success > td {
- background-color: @successBackground;
- }
- &.error > td {
- background-color: @errorBackground;
- }
- &.warning > td {
- background-color: @warningBackground;
- }
- &.info > td {
- background-color: @infoBackground;
- }
-}
-
-// Hover states for .table-hover
-.table-hover tbody tr {
- &.success:hover > td {
- background-color: darken(@successBackground, 5%);
- }
- &.error:hover > td {
- background-color: darken(@errorBackground, 5%);
- }
- &.warning:hover > td {
- background-color: darken(@warningBackground, 5%);
- }
- &.info:hover > td {
- background-color: darken(@infoBackground, 5%);
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/thumbnails.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/thumbnails.less
deleted file mode 100644
index 4fd07d253..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/thumbnails.less
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Thumbnails
-// --------------------------------------------------
-
-
-// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
-
-// Make wrapper ul behave like the grid
-.thumbnails {
- margin-left: -@gridGutterWidth;
- list-style: none;
- .clearfix();
-}
-// Fluid rows have no left margin
-.row-fluid .thumbnails {
- margin-left: 0;
-}
-
-// Float li to make thumbnails appear in a row
-.thumbnails > li {
- float: left; // Explicity set the float since we don't require .span* classes
- margin-bottom: @baseLineHeight;
- margin-left: @gridGutterWidth;
-}
-
-// The actual thumbnail (can be `a` or `div`)
-.thumbnail {
- display: block;
- padding: 4px;
- line-height: @baseLineHeight;
- border: 1px solid #ddd;
- .border-radius(@baseBorderRadius);
- .box-shadow(0 1px 3px rgba(0,0,0,.055));
- .transition(all .2s ease-in-out);
-}
-// Add a hover/focus state for linked versions only
-a.thumbnail:hover,
-a.thumbnail:focus {
- border-color: @linkColor;
- .box-shadow(0 1px 4px rgba(0,105,214,.25));
-}
-
-// Images and captions
-.thumbnail > img {
- display: block;
- max-width: 100%;
- margin-left: auto;
- margin-right: auto;
-}
-.thumbnail .caption {
- padding: 9px;
- color: @gray;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tooltip.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tooltip.less
deleted file mode 100644
index 83d5f2bd7..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tooltip.less
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// Tooltips
-// --------------------------------------------------
-
-
-// Base class
-.tooltip {
- position: absolute;
- z-index: @zindexTooltip;
- display: block;
- visibility: visible;
- font-size: 11px;
- line-height: 1.4;
- .opacity(0);
- &.in { .opacity(80); }
- &.top { margin-top: -3px; padding: 5px 0; }
- &.right { margin-left: 3px; padding: 0 5px; }
- &.bottom { margin-top: 3px; padding: 5px 0; }
- &.left { margin-left: -3px; padding: 0 5px; }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
- max-width: 200px;
- padding: 8px;
- color: @tooltipColor;
- text-align: center;
- text-decoration: none;
- background-color: @tooltipBackground;
- .border-radius(@baseBorderRadius);
-}
-
-// Arrows
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-.tooltip {
- &.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -@tooltipArrowWidth;
- border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
- border-top-color: @tooltipArrowColor;
- }
- &.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -@tooltipArrowWidth;
- border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
- border-right-color: @tooltipArrowColor;
- }
- &.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -@tooltipArrowWidth;
- border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
- border-left-color: @tooltipArrowColor;
- }
- &.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -@tooltipArrowWidth;
- border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
- border-bottom-color: @tooltipArrowColor;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/type.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/type.less
deleted file mode 100644
index 337138ac8..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/type.less
+++ /dev/null
@@ -1,247 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-
-// Body text
-// -------------------------
-
-p {
- margin: 0 0 @baseLineHeight / 2;
-}
-.lead {
- margin-bottom: @baseLineHeight;
- font-size: @baseFontSize * 1.5;
- font-weight: 200;
- line-height: @baseLineHeight * 1.5;
-}
-
-
-// Emphasis & misc
-// -------------------------
-
-// Ex: 14px base font * 85% = about 12px
-small { font-size: 85%; }
-
-strong { font-weight: bold; }
-em { font-style: italic; }
-cite { font-style: normal; }
-
-// Utility classes
-.muted { color: @grayLight; }
-a.muted:hover,
-a.muted:focus { color: darken(@grayLight, 10%); }
-
-.text-warning { color: @warningText; }
-a.text-warning:hover,
-a.text-warning:focus { color: darken(@warningText, 10%); }
-
-.text-error { color: @errorText; }
-a.text-error:hover,
-a.text-error:focus { color: darken(@errorText, 10%); }
-
-.text-info { color: @infoText; }
-a.text-info:hover,
-a.text-info:focus { color: darken(@infoText, 10%); }
-
-.text-success { color: @successText; }
-a.text-success:hover,
-a.text-success:focus { color: darken(@successText, 10%); }
-
-.text-left { text-align: left; }
-.text-right { text-align: right; }
-.text-center { text-align: center; }
-
-
-// Headings
-// -------------------------
-
-h1, h2, h3, h4, h5, h6 {
- margin: (@baseLineHeight / 2) 0;
- font-family: @headingsFontFamily;
- font-weight: @headingsFontWeight;
- line-height: @baseLineHeight;
- color: @headingsColor;
- text-rendering: optimizelegibility; // Fix the character spacing for headings
- small {
- font-weight: normal;
- line-height: 1;
- color: @grayLight;
- }
-}
-
-h1,
-h2,
-h3 { line-height: @baseLineHeight * 2; }
-
-h1 { font-size: @baseFontSize * 2.75; } // ~38px
-h2 { font-size: @baseFontSize * 2.25; } // ~32px
-h3 { font-size: @baseFontSize * 1.75; } // ~24px
-h4 { font-size: @baseFontSize * 1.25; } // ~18px
-h5 { font-size: @baseFontSize; }
-h6 { font-size: @baseFontSize * 0.85; } // ~12px
-
-h1 small { font-size: @baseFontSize * 1.75; } // ~24px
-h2 small { font-size: @baseFontSize * 1.25; } // ~18px
-h3 small { font-size: @baseFontSize; }
-h4 small { font-size: @baseFontSize; }
-
-
-// Page header
-// -------------------------
-
-.page-header {
- padding-bottom: (@baseLineHeight / 2) - 1;
- margin: @baseLineHeight 0 (@baseLineHeight * 1.5);
- border-bottom: 1px solid @grayLighter;
-}
-
-
-
-// Lists
-// --------------------------------------------------
-
-// Unordered and Ordered lists
-ul, ol {
- padding: 0;
- margin: 0 0 @baseLineHeight / 2 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
- margin-bottom: 0;
-}
-li {
- line-height: @baseLineHeight;
-}
-
-// Remove default list styles
-ul.unstyled,
-ol.unstyled {
- margin-left: 0;
- list-style: none;
-}
-
-// Single-line list items
-ul.inline,
-ol.inline {
- margin-left: 0;
- list-style: none;
- > li {
- display: inline-block;
- .ie7-inline-block();
- padding-left: 5px;
- padding-right: 5px;
- }
-}
-
-// Description Lists
-dl {
- margin-bottom: @baseLineHeight;
-}
-dt,
-dd {
- line-height: @baseLineHeight;
-}
-dt {
- font-weight: bold;
-}
-dd {
- margin-left: @baseLineHeight / 2;
-}
-// Horizontal layout (like forms)
-.dl-horizontal {
- .clearfix(); // Ensure dl clears floats if empty dd elements present
- dt {
- float: left;
- width: @horizontalComponentOffset - 20;
- clear: left;
- text-align: right;
- .text-overflow();
- }
- dd {
- margin-left: @horizontalComponentOffset;
- }
-}
-
-// MISC
-// ----
-
-// Horizontal rules
-hr {
- margin: @baseLineHeight 0;
- border: 0;
- border-top: 1px solid @hrBorder;
- border-bottom: 1px solid @white;
-}
-
-// Abbreviations and acronyms
-abbr[title],
-// Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257
-abbr[data-original-title] {
- cursor: help;
- border-bottom: 1px dotted @grayLight;
-}
-abbr.initialism {
- font-size: 90%;
- text-transform: uppercase;
-}
-
-// Blockquotes
-blockquote {
- padding: 0 0 0 15px;
- margin: 0 0 @baseLineHeight;
- border-left: 5px solid @grayLighter;
- p {
- margin-bottom: 0;
- font-size: @baseFontSize * 1.25;
- font-weight: 300;
- line-height: 1.25;
- }
- small {
- display: block;
- line-height: @baseLineHeight;
- color: @grayLight;
- &:before {
- content: '\2014 \00A0';
- }
- }
-
- // Float right with text-align: right
- &.pull-right {
- float: right;
- padding-right: 15px;
- padding-left: 0;
- border-right: 5px solid @grayLighter;
- border-left: 0;
- p,
- small {
- text-align: right;
- }
- small {
- &:before {
- content: '';
- }
- &:after {
- content: '\00A0 \2014';
- }
- }
- }
-}
-
-// Quotes
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
- content: "";
-}
-
-// Addresses
-address {
- display: block;
- margin-bottom: @baseLineHeight;
- font-style: normal;
- line-height: @baseLineHeight;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/utilities.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/utilities.less
deleted file mode 100644
index 314b4ffdb..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/utilities.less
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Utility classes
-// --------------------------------------------------
-
-
-// Quick floats
-.pull-right {
- float: right;
-}
-.pull-left {
- float: left;
-}
-
-// Toggling content
-.hide {
- display: none;
-}
-.show {
- display: block;
-}
-
-// Visibility
-.invisible {
- visibility: hidden;
-}
-
-// For Affix plugin
-.affix {
- position: fixed;
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/variables.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/variables.less
deleted file mode 100644
index 31c131b1e..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/variables.less
+++ /dev/null
@@ -1,301 +0,0 @@
-//
-// Variables
-// --------------------------------------------------
-
-
-// Global values
-// --------------------------------------------------
-
-
-// Grays
-// -------------------------
-@black: #000;
-@grayDarker: #222;
-@grayDark: #333;
-@gray: #555;
-@grayLight: #999;
-@grayLighter: #eee;
-@white: #fff;
-
-
-// Accent colors
-// -------------------------
-@blue: #049cdb;
-@blueDark: #0064cd;
-@green: #46a546;
-@red: #9d261d;
-@yellow: #ffc40d;
-@orange: #f89406;
-@pink: #c3325f;
-@purple: #7a43b6;
-
-
-// Scaffolding
-// -------------------------
-@bodyBackground: @white;
-@textColor: @grayDark;
-
-
-// Links
-// -------------------------
-@linkColor: #08c;
-@linkColorHover: darken(@linkColor, 15%);
-
-
-// Typography
-// -------------------------
-@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
-@serifFontFamily: Georgia, "Times New Roman", Times, serif;
-@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;
-
-@baseFontSize: 14px;
-@baseFontFamily: @sansFontFamily;
-@baseLineHeight: 20px;
-@altFontFamily: @serifFontFamily;
-
-@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
-@headingsFontWeight: bold; // instead of browser default, bold
-@headingsColor: inherit; // empty to use BS default, @textColor
-
-
-// Component sizing
-// -------------------------
-// Based on 14px font-size and 20px line-height
-
-@fontSizeLarge: @baseFontSize * 1.25; // ~18px
-@fontSizeSmall: @baseFontSize * 0.85; // ~12px
-@fontSizeMini: @baseFontSize * 0.75; // ~11px
-
-@paddingLarge: 11px 19px; // 44px
-@paddingSmall: 2px 10px; // 26px
-@paddingMini: 0 6px; // 22px
-
-@baseBorderRadius: 4px;
-@borderRadiusLarge: 6px;
-@borderRadiusSmall: 3px;
-
-
-// Tables
-// -------------------------
-@tableBackground: transparent; // overall background-color
-@tableBackgroundAccent: #f9f9f9; // for striping
-@tableBackgroundHover: #f5f5f5; // for hover
-@tableBorder: #ddd; // table and cell border
-
-// Buttons
-// -------------------------
-@btnBackground: @white;
-@btnBackgroundHighlight: darken(@white, 10%);
-@btnBorder: #ccc;
-
-@btnPrimaryBackground: @linkColor;
-@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
-
-@btnInfoBackground: #5bc0de;
-@btnInfoBackgroundHighlight: #2f96b4;
-
-@btnSuccessBackground: #62c462;
-@btnSuccessBackgroundHighlight: #51a351;
-
-@btnWarningBackground: lighten(@orange, 15%);
-@btnWarningBackgroundHighlight: @orange;
-
-@btnDangerBackground: #ee5f5b;
-@btnDangerBackgroundHighlight: #bd362f;
-
-@btnInverseBackground: #444;
-@btnInverseBackgroundHighlight: @grayDarker;
-
-
-// Forms
-// -------------------------
-@inputBackground: @white;
-@inputBorder: #ccc;
-@inputBorderRadius: @baseBorderRadius;
-@inputDisabledBackground: @grayLighter;
-@formActionsBackground: #f5f5f5;
-@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
-
-
-// Dropdowns
-// -------------------------
-@dropdownBackground: @white;
-@dropdownBorder: rgba(0,0,0,.2);
-@dropdownDividerTop: #e5e5e5;
-@dropdownDividerBottom: @white;
-
-@dropdownLinkColor: @grayDark;
-@dropdownLinkColorHover: @white;
-@dropdownLinkColorActive: @white;
-
-@dropdownLinkBackgroundActive: @linkColor;
-@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;
-
-
-
-// COMPONENT VARIABLES
-// --------------------------------------------------
-
-
-// Z-index master list
-// -------------------------
-// Used for a bird's eye view of components dependent on the z-axis
-// Try to avoid customizing these :)
-@zindexDropdown: 1000;
-@zindexPopover: 1010;
-@zindexTooltip: 1030;
-@zindexFixedNavbar: 1030;
-@zindexModalBackdrop: 1040;
-@zindexModal: 1050;
-
-
-// Sprite icons path
-// -------------------------
-@iconSpritePath: "../img/glyphicons-halflings.png";
-@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
-
-
-// Input placeholder text color
-// -------------------------
-@placeholderText: @grayLight;
-
-
-// Hr border color
-// -------------------------
-@hrBorder: @grayLighter;
-
-
-// Horizontal forms & lists
-// -------------------------
-@horizontalComponentOffset: 180px;
-
-
-// Wells
-// -------------------------
-@wellBackground: #f5f5f5;
-
-
-// Navbar
-// -------------------------
-@navbarCollapseWidth: 979px;
-@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;
-
-@navbarHeight: 40px;
-@navbarBackgroundHighlight: #ffffff;
-@navbarBackground: darken(@navbarBackgroundHighlight, 5%);
-@navbarBorder: darken(@navbarBackground, 12%);
-
-@navbarText: #777;
-@navbarLinkColor: #777;
-@navbarLinkColorHover: @grayDark;
-@navbarLinkColorActive: @gray;
-@navbarLinkBackgroundHover: transparent;
-@navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
-
-@navbarBrandColor: @navbarLinkColor;
-
-// Inverted navbar
-@navbarInverseBackground: #111111;
-@navbarInverseBackgroundHighlight: #222222;
-@navbarInverseBorder: #252525;
-
-@navbarInverseText: @grayLight;
-@navbarInverseLinkColor: @grayLight;
-@navbarInverseLinkColorHover: @white;
-@navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
-@navbarInverseLinkBackgroundHover: transparent;
-@navbarInverseLinkBackgroundActive: @navbarInverseBackground;
-
-@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
-@navbarInverseSearchBackgroundFocus: @white;
-@navbarInverseSearchBorder: @navbarInverseBackground;
-@navbarInverseSearchPlaceholderColor: #ccc;
-
-@navbarInverseBrandColor: @navbarInverseLinkColor;
-
-
-// Pagination
-// -------------------------
-@paginationBackground: #fff;
-@paginationBorder: #ddd;
-@paginationActiveBackground: #f5f5f5;
-
-
-// Hero unit
-// -------------------------
-@heroUnitBackground: @grayLighter;
-@heroUnitHeadingColor: inherit;
-@heroUnitLeadColor: inherit;
-
-
-// Form states and alerts
-// -------------------------
-@warningText: #c09853;
-@warningBackground: #fcf8e3;
-@warningBorder: darken(spin(@warningBackground, -10), 3%);
-
-@errorText: #b94a48;
-@errorBackground: #f2dede;
-@errorBorder: darken(spin(@errorBackground, -10), 3%);
-
-@successText: #468847;
-@successBackground: #dff0d8;
-@successBorder: darken(spin(@successBackground, -10), 5%);
-
-@infoText: #3a87ad;
-@infoBackground: #d9edf7;
-@infoBorder: darken(spin(@infoBackground, -10), 7%);
-
-
-// Tooltips and popovers
-// -------------------------
-@tooltipColor: #fff;
-@tooltipBackground: #000;
-@tooltipArrowWidth: 5px;
-@tooltipArrowColor: @tooltipBackground;
-
-@popoverBackground: #fff;
-@popoverArrowWidth: 10px;
-@popoverArrowColor: #fff;
-@popoverTitleBackground: darken(@popoverBackground, 3%);
-
-// Special enhancement for popovers
-@popoverArrowOuterWidth: @popoverArrowWidth + 1;
-@popoverArrowOuterColor: rgba(0,0,0,.25);
-
-
-
-// GRID
-// --------------------------------------------------
-
-
-// Default 940px grid
-// -------------------------
-@gridColumns: 12;
-@gridColumnWidth: 60px;
-@gridGutterWidth: 20px;
-@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
-
-// 1200px min
-@gridColumnWidth1200: 70px;
-@gridGutterWidth1200: 30px;
-@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
-
-// 768px-979px
-@gridColumnWidth768: 42px;
-@gridGutterWidth768: 20px;
-@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
-
-
-// Fluid grid
-// -------------------------
-@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);
-@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);
-
-// 1200px min
-@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200);
-@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200);
-
-// 768px-979px
-@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768);
-@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768);
diff --git a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/wells.less b/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/wells.less
deleted file mode 100644
index 84a744b1c..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/bootstrap-2.3.2/wells.less
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Wells
-// --------------------------------------------------
-
-
-// Base class
-.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: @wellBackground;
- border: 1px solid darken(@wellBackground, 7%);
- .border-radius(@baseBorderRadius);
- .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
- blockquote {
- border-color: #ddd;
- border-color: rgba(0,0,0,.15);
- }
-}
-
-// Sizes
-.well-large {
- padding: 24px;
- .border-radius(@borderRadiusLarge);
-}
-.well-small {
- padding: 9px;
- .border-radius(@borderRadiusSmall);
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/lazy.less b/library/font_awesome/src/3.2.1/assets/less/lazy.less
deleted file mode 100644
index 3c914de8c..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/lazy.less
+++ /dev/null
@@ -1,85 +0,0 @@
-.padding-none { padding: 0 !important; }
-.padding { padding: 10px !important; }
-.padding-small { padding: 5px !important; }
-.padding-large { padding: 22px !important; }
-
-.padding-top-none { padding-top: 0 !important; }
-.padding-top { padding-top: 10px !important; }
-.padding-top-small { padding-top: 5px !important; }
-.padding-top-large { padding-top: 22px !important; }
-
-.padding-right-none { padding-right: 0 !important; }
-.padding-right { padding-right: 10px !important; }
-.padding-right-small { padding-right: 5px !important; }
-.padding-right-large { padding-right: 22px !important; }
-
-.padding-bottom-none { padding-bottom: 0 !important; }
-.padding-bottom { padding-bottom: 10px !important; }
-.padding-bottom-small { padding-bottom: 5px !important; }
-.padding-bottom-large { padding-bottom: 22px !important; }
-
-.padding-left-none { padding-left: 0 !important; }
-.padding-left { padding-left: 10px !important; }
-.padding-left-small { padding-left: 5px !important; }
-.padding-left-large { padding-left: 22px !important; }
-
-.margin-none { margin: 0 !important; }
-.margin { margin: 10px !important; }
-.margin-small { margin: 5px !important; }
-.margin-large { margin: 22px !important; }
-
-.margin-top-none { margin-top: 0 !important; }
-.margin-top { margin-top: 10px !important; }
-.margin-top-large { margin-top: 22px !important; }
-.margin-top-small { margin-top: 5px !important; }
-
-.margin-right-none { margin-right: 0 !important; }
-.margin-right { margin-right: 10px !important; }
-.margin-right-large { margin-right: 22px !important; }
-.margin-right-small { margin-right: 5px !important; }
-
-.margin-bottom-none { margin-bottom: 0 !important; }
-.margin-bottom { margin-bottom: 10px !important; }
-.margin-bottom-large { margin-bottom: 22px !important; }
-.margin-bottom-small { margin-bottom: 5px !important; }
-
-.margin-left-none { margin-left: 0 !important; }
-.margin-left { margin-left: 10px !important; }
-.margin-left-large { margin-left: 22px !important; }
-.margin-left-small { margin-left: 5px !important; }
-
-.border-left-none { border-left: none !important; }
-.border-right-none { border-right: none !important; }
-.border-bottom-none { border-bottom: none !important; }
-.border-top-none { border-top: none !important; }
-
-.display-block { display: block; } // use to swap an anchor tag to span a whole row to make click target larger
-.no-underline:hover { text-decoration: none; }
-.clickable { cursor: pointer; }
-.strong { font-weight: bold; }
-.em { font-style: italic; }
-.small { font-size: 85%; } // Ex: 14px base font * 85% = about 12px
-.no-link { color: @grayDark; }
-.text-sans-serif { font-family: @sansFontFamily; }
-.text-ellipsis { .text-overflow(); } // truncates text to a single line with an ellipsis at the end
-.text-default {
- font-family: @sansFontFamily;
- font-size: @baseFontSize;
- line-height: @baseLineHeight;
- font-weight: normal;
-}
-.hilite {
- color: @linkColor;
- &:hover {
- color: @linkColorHover;
- text-decoration: underline;
- }
- [class^="icon-"], [class*=" icon-"] {
- &:before {
- display: inline;
- }
- }
-}
-.strike { text-decoration: line-through; }
-.upper { text-transform: uppercase; }
-.lower { text-transform: lowercase; }
diff --git a/library/font_awesome/src/3.2.1/assets/less/mixins.less b/library/font_awesome/src/3.2.1/assets/less/mixins.less
deleted file mode 100644
index 2ae1efc89..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/mixins.less
+++ /dev/null
@@ -1,58 +0,0 @@
-.gradient-text (@color: #808080, @color1: #999, @color2: #B3B3B3, @color3: #B3B3B3, @color4: #666) {
- // fallback for browsers that don't support this
-// color: @color;
-
- // makes simple gradient text in webkit browsers
-// background: -webkit-gradient(linear, left top, left bottom, from(@colorTop), to(@colorBottom));
-
- // makes a more complex background, allowing iPhone-like text gradients
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @color1), color-stop(55%, @color2), color-stop(55%, @color3), color-stop(100%, @color4)); // Safari 4+, Chrome 2+
- background-image: -webkit-linear-gradient(top, @color1 0%, @color2 55%, @color3 55%, @color4 100%); // Safari 5.1+, Chrome 10+
-
- -webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
-}
-
-// Mixin for generating button backgrounds
-// ---------------------------------------
-.buttonBackgroundThreeColors(@startColor, @midColor, @colorStop, @endColor) {
- // gradientBar will set the background to a pleasing blend of these, to support IE<=9
- #gradient > .vertical-three-colors(@startColor, @midColor, @colorStop, @endColor);
- border-color: @startColor @startColor darken(@endColor, 15%);
- border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
-
- .reset-filter();
-
- // in these cases the gradient won't cover the background, so we override
- &:hover, &:active, &.active, &.disabled, &[disabled] {
- background-color: @endColor;
- }
-
- // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
- &:active,
- &.active {
- background-color: darken(@endColor, 10%) e("\9");
- }
-}
-
-.icon-size (@size: 14px, @width-multiplier: .9, @height-multiplier: 1) {
- i { font-size: @size; }
- line-height: @size * 1.1;
- height: @size * @height-multiplier * 1.05;
- text-align: center;
-}
-
-.sticky-footer (@footer-height: @baseLineHeight * 4, @footer-padding-top: 70px, @footer-padding-bottom: 70px, @footer-margin-top: 70px) {
- .wrapper {
- margin: 0 auto -(@footer-height + @footer-padding-bottom + @footer-padding-top + @footer-margin-top + 1);
- }
- .push {
- height: @footer-height + @footer-padding-bottom + @footer-padding-top + @footer-margin-top + 1;
- }
-
- .footer {
- margin-top: @footer-margin-top;
- height: @footer-height;
- padding: @footer-padding-top 0 @footer-padding-bottom;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/responsive-1200px-min.less b/library/font_awesome/src/3.2.1/assets/less/responsive-1200px-min.less
deleted file mode 100644
index 6599595c1..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/responsive-1200px-min.less
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// Responsive: Large desktop and up
-// --------------------------------------------------
-
-
-@media (min-width: 1200px) {
-
- #iconCarousel {
- @size: 290px;
- font-size: @size;
- line-height: @size + 5;
- .carousel-control {
- top: @size + 20px;
- .square(30px);
- font-size: 40px;
- line-height: 35px;
- left: 370/2 - 40px;
- &.right {
- right: 370/2 - 40px;
- }
- }
- }
-
- .jumbotron-index {
- padding: 50px 0;
- h1 { font-size: 100px; }
- p {
- font-size: 40px;
- margin: 20px 0;
- }
- .btn-large {
- font-size: 30px;
- padding: 21px 35px;
- }
- .shameless-self-promotion {
- margin-top: 30px;
- }
- }
-
- .jumbotron-ad {
- padding: 50px 0;
- h1 { font-size: 90px; }
- p {
- font-size: 35px;
- margin: 20px 0;
- }
- }
-
- .stripe-ad .lead { margin-top: 7px; }
-
- .lead {
- font-size: 26px;
- line-height: 36px;
- }
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/responsive-767px-max.less b/library/font_awesome/src/3.2.1/assets/less/responsive-767px-max.less
deleted file mode 100644
index 38484c786..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/responsive-767px-max.less
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// Responsive: Landscape phone to desktop/tablet
-// --------------------------------------------------
-
-
-@media (max-width: 767px) {
- .jumbotron, footer, #social-buttons {
- padding-left: 20px;
- padding-right: 20px;
- margin-right: -20px;
- margin-left: -20px;
- }
-
- #iconCarousel {
- @size: 180px;
- font-size: @size;
- line-height: @size;
- width: 280px;
- margin: 30px auto 0;
- .carousel-control {
- top: @size / 2;
- .square(44px);
- font-size: 44px;
- line-height: 44px;
- left: -7px;
- &.right { right: -7px; }
- }
- }
-
- .jumbotron-index {
- h1 { font-size: 58px; }
- p { font-size: 24px; }
- .btn-large {
- font-size: 20px;
- padding: 14px 26px;
- }
- .shameless-self-promotion { font-size: 12px; }
- }
-
- .jumbotron-ad {
- h1 { font-size: 39px; }
- p {
- font-size: 20px;
- margin-bottom: 20px;
- }
- }
-
- .jumbotron-icon {
- .icon-1, .icon-2, .icon-3, .icon-4, .icon-5, .icon-6 { margin-right: 0; }
- .icon-6 { font-size: 16em; }
- h1 small {
- display: block;
- margin-top: 15px;
- margin-left: 0;
- line-height: 20px;
- }
- }
-
- .stripe-ad .lead {
- margin: 0 0 30px;
- }
-
- #carbonads-container {
- margin-right: -20px;
- margin-left: -20px;
- .carbonad {
- width: 100%;
- height: 120px;
- border-right: none;
- border-left: none;
- }
- }
- #azcarbon {
- width: 300px;
- margin: 0 auto;
- }
-
- .sticky-footer(170px, 40px, 40px, 60px); // sets default values for sticky footer
- .footer {
- padding-left: 20px;
- padding-right: 20px;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/responsive-768px-979px.less b/library/font_awesome/src/3.2.1/assets/less/responsive-768px-979px.less
deleted file mode 100644
index e46a45c57..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/responsive-768px-979px.less
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// Responsive: Tablet to desktop
-// --------------------------------------------------
-
-
-@media (min-width: 768px) and (max-width: 979px) {
-
- #iconCarousel {
- @size: 200px;
- font-size: @size;
- line-height: @size + 5;
- .carousel-control {
- top: @size + 30px;
- .square(30px);
- font-size: 40px;
- line-height: 40px;
- left: 228/2 - 40px;
- &.right {
- right: 228/2 - 40px;
- }
- }
- }
-
- .jumbotron-index {
- padding: 50px 0;
- h1 { font-size: 65px; }
- p { font-size: 25px; }
- .shameless-self-promotion { font-size: 12px; }
- }
-
- .jumbotron-ad {
- p { font-size: 28px; }
- }
-
- .jumbotron-icon {
- h1 small {
- display: block;
- margin-top: 15px;
- margin-left: 0;
- line-height: 20px;
- }
- }
-
- .stripe-ad {
- .lead {
- margin: 0;
- font-size: 19px;
- }
- @ad-width: 302px;
- .span8 { width: 476px + 228px - @ad-width; }
- .span4 { width: @ad-width; }
- }
-
- #why, #whats-new, #new-styles {
- .span4 { width: 352px; }
- }
-
- .the-icons {
- .span3 { width: 228px; }
- }
-
- .sticky-footer(110px, 40px, 40px, 60px); // sets default values for sticky footer
- .footer {
- padding-left: 20px;
- padding-right: 20px;
- }
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/responsive-navbar.less b/library/font_awesome/src/3.2.1/assets/less/responsive-navbar.less
deleted file mode 100644
index b15033ed9..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/responsive-navbar.less
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Responsive: Navbar
-// --------------------------------------------------
-
-
-// TABLETS AND BELOW
-// -----------------
-@media (max-width: @navbarCollapseWidth) {
-
-
-}
diff --git a/library/font_awesome/src/3.2.1/assets/less/responsive.less b/library/font_awesome/src/3.2.1/assets/less/responsive.less
deleted file mode 100644
index 07802894e..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/responsive.less
+++ /dev/null
@@ -1,53 +0,0 @@
-/*!
- * Bootstrap Responsive v2.3.2
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-
-// Responsive.less
-// For phone and tablet devices
-// -------------------------------------------------------------
-
-
-// REPEAT VARIABLES & MIXINS
-// -------------------------
-// Required since we compile the responsive stuff separately
-
-@import "bootstrap-2.3.2/variables.less"; // Modify this for custom colors, font-sizes, etc
-@import "bootstrap-2.3.2/mixins.less";
-
-@import "variables.less"; // Modify this for custom colors, font-sizes, etc
-
-// RESPONSIVE CLASSES
-// ------------------
-
-@import "bootstrap-2.3.2/responsive-utilities.less";
-
-
-// MEDIA QUERIES
-// ------------------
-
-// Large desktops
-@import "bootstrap-2.3.2/responsive-1200px-min.less";
-@import "responsive-1200px-min.less";
-
-// Tablets to regular desktops
-@import "bootstrap-2.3.2/responsive-768px-979px.less";
-@import "responsive-768px-979px.less";
-
-// Phones to portrait tablets and narrow desktops
-@import "bootstrap-2.3.2/responsive-767px-max.less";
-@import "responsive-767px-max.less";
-
-
-// RESPONSIVE NAVBAR
-// ------------------
-
-// From 979px and below, show a button to toggle navbar contents
-@import "bootstrap-2.3.2/responsive-navbar.less";
-@import "responsive-navbar.less";
diff --git a/library/font_awesome/src/3.2.1/assets/less/site.less b/library/font_awesome/src/3.2.1/assets/less/site.less
deleted file mode 100644
index fa185c1aa..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/site.less
+++ /dev/null
@@ -1,352 +0,0 @@
-@import "bootstrap-2.3.2/bootstrap.less";
-@import "bootstrap-2.3.2/responsive-utilities.less";
-@import "sticky-footer.less";
-
-@import "mixins.less";
-@import "variables.less";
-@import "lazy.less";
-
-.navbar .brand {
- font-family: @serifFontFamily;
- .icon-flag { padding-right: 3px; }
-}
-
-.navbar .nav > li > a { padding: 12px 10px 9px; }
-.navbar .nav.pull-right { margin-right: -10px; }
-//.navbar, .jumbotron, #social-buttons { min-width: 990px; } // necessary fix for non-responsive layouts
-
-h1, h2, h3, h4, h5, h6 { font-family: @serifFontFamily; }
-
-#iconCarousel {
- a { color: @white; }
- @size: 220px;
- font-size: @size;
- text-align: center;
- line-height: @size + 5;
- text-shadow: 2px 2px 3px @grayDarker;
- .carousel-control {
- top: @size + 33px;
- .square(30px);
- background: none;
- border-width: 0;
- font-size: 30px;
- line-height: 25px;
- left: 300/2 - 33px;
- &.right {
- left: auto;
- right: 300/2 - 33px;
- }
- }
-}
-
-.jumbotron {
- background: @red;
- border-bottom: 1px solid @redDark;
- &, h1 { color: @white; }
- #gradient > .directional(@red, mix(@red, @redDark, 90%), -40deg);
-// background-color: @red;
-
-// &:after {
-// content:'';
-// display:block;
-// position:absolute;
-// top:0;
-// right:0;
-// bottom:0;
-// left:0;
-// background:url(../img/grain-tm400.png);
-// opacity:.5;
-// }
-
- h1 {
- font-size: 80px;
- letter-spacing: -2px;
- line-height: 1;
- }
- p {
- margin-top: 15px;
- margin-bottom: 15px;
- font-size: 30px;
- line-height: 1.3;
- font-weight: lighter;
- }
- .actions { margin-top: 25px;}
- text-shadow: 2px 2px 2px @grayDark;
- ul {
- margin-left: 50px;
- li {
- &.icon-large:before {
- text-indent: -2em;
- vertical-align: baseline;
- }
- font-size: 15px;
- line-height: 30px;
- text-shadow: 1px 1px 1px @grayDark;
- }
- }
- .btn-large {
- font-family: @serifFontFamily;
- font-weight: 500;
- font-size: 24px;
- padding: 17px 30px;
- letter-spacing: -1px;
- }
- .hero-content {
- text-align: center;
- }
- .shameless-self-promotion {
- font-size: 14px;
- margin-top: 25px;
- color: mix(@white, @red, 40%);
- text-shadow: none;
- a { color: mix(@white, @red, 70%); }
- a:hover { color: mix(@white, @red, 100%); }
- }
-}
-
-.jumbotron-index {
- padding: 40px 0;
- h1 {
- font-size: 80px;
- letter-spacing: -2px;
- line-height: 1;
- margin: 0 0 15px;
- }
- p {
- margin-top: 15px;
- margin-bottom: 15px;
- font-size: 30px;
- line-height: 1.3;
- }
-}
-
-.jumbotron-ad {
- padding: 20px 0;
- h1 { margin-top: 25px; }
- p { margin-bottom: 35px; }
-}
-
-.jumbotron-icon {
- padding: 20px 0 30px;
- #gradient > .directional(@grayLighter, mix(@grayLighter, @grayLight, 90%), -40deg);
- color: @grayDarker;
- text-shadow: 1px 1px 1px @white;
- border-bottom: solid 1px mix(@grayLight, @grayLighter, 50%);
-
- h1 {
- color: @grayDarker;
- font-size: 40px;
- small {
- letter-spacing: normal;
- font-family: @sansFontFamily;
- font-size: @baseFontSize;
- margin-left: 20px;
- }
- }
-
- .info-details {
- float: left;
- p {
- margin: 25px 0;
- font-weight: bold;
- }
- .dl-horizontal {
- dt { width: @horizontalComponentOffset - 100; }
- dd { margin-left: @horizontalComponentOffset - 85; }
- }
- }
- .icon-2 { font-size: 2em; }
- .icon-3 { font-size: 4em; }
- .icon-4 { font-size: 7em; }
- .icon-5 { font-size: 12em; }
- .icon-6 { font-size: 20em; }
-
- .icon-1, .icon-2, .icon-3, .icon-4, .icon-5, .icon-6 { margin-right: 1/14em; }
-}
-
-//.info-ad {
-// float: right;
-// width: 154px;
-// height: 219px;
-// margin-left: 15px;
-//}
-
-.stripe-ad {
- margin-bottom: 22px;
- .lead {
- margin-top: 10px;
- margin-right: 30px;
- }
-}
-
-.btn-primary {
- color: @grayDark;
- text-shadow: 0 -1px 0 rgba(255,255,255,.25);
- &:hover {
- text-shadow: 0 -1px 0 rgba(255,255,255,.25);
- color: @grayDark;
- }
-}
-
-section { margin-top: 40px; }
-
-.stacked {
- padding-top: 35px;
- height: 105px;
-}
-
-#social-buttons {
- ul.unstyled { margin: 0; }
-
- padding: 22px 0 17px;
- text-align: center;
- background-color: #f5f5f5;
- border-top: 1px solid #fff;
- border-bottom: 1px solid #ddd;
- .btn {
-// font-family: @serifFontFamily;
- font-weight: bold;
-// font-size: @baseFontSize;
- padding: 0px 5px;
- line-height: @baseLineHeight - 3;
- margin: 0;
- }
- .count.btn {
- background: @white;
- font-weight: normal;
- }
-}
-
-.the-icons {
- margin-top: 22px;
- .span3 {
- a {
- display: block;
- &, &:hover { color: @grayDarker; }
-
- cursor: pointer;
- line-height: 32px;
- height: 32px;
- padding-left: 10px;
- .border-radius(6px);
-
- [class^="icon-"],
- [class*=" icon-"] {
- width: 32px;
- font-size: 14px;
- display: inline-block;
- text-align: right;
- margin-right: 10px;
- }
-
- &:hover {
- background-color: @errorBackground;
- text-decoration: none;
- [class^="icon-"], [class*=" icon-"] {
- *font-size: 28px;
- *vertical-align: middle;
- }
-
- [class^="icon-"]:before,
- [class*=" icon-"]:before {
- font-size: 28px;
- vertical-align: -5px;
- }
- }
- }
- }
-}
-
-#why, #whats-new {
- .span4 { margin-bottom: 20px; }
- h4 {
- [class^="icon-"]:before,
- [class*=" icon-"]:before {
- vertical-align: -10%;
- font-size: 28px;
- display: inline-block;
- width: 30/28em;
- text-align: center;
- margin-right: 5px;
-// color: mix(@grayLight, @grayLighter, 70%);
-
- // Gradient on the icons
-// background: -webkit-linear-gradient(mix(@grayLight, @grayLighter, 50%), mix(@gray, @grayLight, 50%));
-// -webkit-background-clip: text;
-// -webkit-text-fill-color: transparent;
- }
- }
-}
-
-
-.rating {
- unicode-bidi: bidi-override;
- direction: rtl;
-
- font-size: 30px;
- span.star {
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- &:hover {
- cursor: pointer;
- }
- }
- span.star:before {
- content: "\f006"; // empty star
- padding-right: 5px;
- color: @grayLight;
- }
-
- span.star:hover:before, span.star:hover ~ span.star:before {
- content: "\f005"; // solid star
- color: #e3cf7a;
- }
-}
-
-
-.label,
-.badge {
- background-color: @grayLighter;
-}
-
-.well.well-transparent {
- background-color: transparent;
-}
-
-footer {
-// #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
- background-color: @red;
- border-top: 1px solid mix(@red, @redDark, 50%);
- a {
- color: @white;
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- &:hover {
- color: @white;
- }
-
- }
-
- color: mix(@red, @white, 35%);
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- margin-top: 60px;
- padding-top: 45px;
- padding-bottom: 60px;
- *zoom: 1; // ie7 hack
- ul {
-// margin-left: 30px;
- line-height: 25px;
- }
-
- .project { margin-top: 10px; }
-}
-
-// makes dropdowns closer for split dropdown
-// Links
-.navbar .nav > li {
- &.dropdown-split-right > a { padding-left: 7px; }
- &.dropdown-split-left > a { padding-right: 0; }
-}
-
-@import "responsive.less";
diff --git a/library/font_awesome/src/3.2.1/assets/less/sticky-footer.less b/library/font_awesome/src/3.2.1/assets/less/sticky-footer.less
deleted file mode 100644
index 3b71ee3a9..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/sticky-footer.less
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// Sticky Footer
-// --------------------------------------------------
-// make sure to set .sticky-footer()
-
-html, body {
- height: 100%;
-}
-.wrapper {
- min-height: 100%;
- height: auto !important;
- height: 100%;
-}
-
-//.footer { min-width: 990px; } // necessary fix for non-responsive layouts
-
-.sticky-footer(90px, 40px, 40px, 60px); // sets default values for sticky footer
diff --git a/library/font_awesome/src/3.2.1/assets/less/variables.less b/library/font_awesome/src/3.2.1/assets/less/variables.less
deleted file mode 100644
index 5b692ae1a..000000000
--- a/library/font_awesome/src/3.2.1/assets/less/variables.less
+++ /dev/null
@@ -1,347 +0,0 @@
-//
-// Variables
-// --------------------------------------------------
-
-
-// Global values
-// --------------------------------------------------
-
-
-// Grays
-// -------------------------
-@black: #000;
-@grayDarker: #222;
-@grayDark: #333;
-@gray: #555;
-@grayLight: #999;
-@grayLighter: #eee;
-@white: #fff;
-
-// Blues
-// -------------------------
-@blueDarker: #003366;
-@blueDark: #005f9b; // Pantone 3015 C;
-@blue: #009add; // Pantone 2925 C;
-@blueLight: #b8dcf2;
-@blueLighter: #f0f9ff;
-
-// Greens
-// -------------------------
-@greenDarker: #41683b;
-@greenDark: #678943;
-@green: #95bf52;
-@greenLight: #ddefbd;
-@greenLighter: #f3f9e8;
-
-// Reds
-// -------------------------
-@redDarker: #702222;
-@redDark: #ba4a4a;
-@red: #dd7373;
-@redLight: #f2adb1;
-@redLighter: #fff0f0;
-
-// Yellows
-// -------------------------
-@yellowDarker: #5b4411;
-@yellowDark: #cc9600;
-@yellow: #f9e27d;
-@yellowLight: #fff5bd;
-@yellowLighter: #fffcee;
-
-// Oranges
-// -------------------------
-@orangeDarker: #8c3900;
-@orangeDark: #cc5d11;
-@orange: #f4914e;
-@orangeLight: #ffd0a6;
-@orangeLighter: #fff4e6;
-
-// Purples
-// -------------------------
-@purpleDarker: #4a226d;
-@purpleDark: #7457ad;
-@purple: #9780d6;
-@purpleLight: #c3b8f4;
-@purpleLighter: #fbf5ff;
-
-
-// Accent colors
-// -------------------------
-@red: #9d261d;
-@redDark: darken(@red, 10%);
-
-
-// Scaffolding
-// -------------------------
-@bodyBackground: @white;
-@textColor: @grayDark;
-
-
-// Links
-// -------------------------
-@linkColor: lighten(@red, 10%);
-@linkColorHover: @red;
-
-
-// Typography
-// -------------------------
-@sansFontFamily: proxima-nova, "Helvetica Neue", Helvetica, Arial, sans-serif;
-@serifFontFamily: museo-slab, "Helvetica Neue", Helvetica, Arial, sans-serif;
-@monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace;
-
-@baseFontSize: 14px;
-@baseFontFamily: @sansFontFamily;
-@baseLineHeight: 20px;
-@altFontFamily: @serifFontFamily;
-
-@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
-@headingsFontWeight: 500; // instead of browser default, bold
-@headingsColor: inherit; // empty to use BS default, @textColor
-
-
-// Component sizing
-// -------------------------
-// Based on 14px font-size and 20px line-height
-
-@fontSizeLarge: @baseFontSize * 1.25; // ~18px
-@fontSizeSmall: @baseFontSize * 0.85; // ~12px
-@fontSizeMini: @baseFontSize * 0.75; // ~11px
-
-@paddingLarge: 11px 19px; // 44px
-@paddingSmall: 2px 10px; // 26px
-@paddingMini: 0 6px; // 22px
-
-@baseBorderRadius: 4px;
-@borderRadiusLarge: 6px;
-@borderRadiusSmall: 3px;
-
-
-// Tables
-// -------------------------
-@tableBackground: transparent; // overall background-color
-@tableBackgroundAccent: #f9f9f9; // for striping
-@tableBackgroundHover: #f5f5f5; // for hover
-@tableBorder: #ddd; // table and cell border
-
-// Buttons
-// -------------------------
-@btnBackground: @white;
-@btnBackgroundHighlight: darken(@white, 10%);
-@btnBorder: #bbb;
-
-@btnPrimaryBackground: #fffeb8;
-@btnPrimaryBackgroundHighlight: #c49c38;
-
-@btnInfoBackground: @blue;
-@btnInfoBackgroundHighlight: mix(@blue, @blueDark, 50%);
-
-@btnSuccessBackground: @green;
-@btnSuccessBackgroundHighlight: @greenDark;
-
-@btnWarningBackground: @yellow;
-@btnWarningBackgroundHighlight: @yellowDark;
-
-@btnDangerBackground: lighten(@red, 20%);
-@btnDangerBackgroundHighlight: lighten(@red, 5%);
-
-@btnInverseBackground: #444;
-@btnInverseBackgroundHighlight: @grayDarker;
-
-
-// Forms
-// -------------------------
-@inputBackground: @white;
-@inputBorder: #ccc;
-@inputBorderRadius: @baseBorderRadius;
-@inputDisabledBackground: @grayLighter;
-@formActionsBackground: #f5f5f5;
-@inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
-
-
-// Dropdowns
-// -------------------------
-@dropdownBackground: @white;
-@dropdownBorder: rgba(0,0,0,.2);
-@dropdownDividerTop: #e5e5e5;
-@dropdownDividerBottom: @white;
-
-@dropdownLinkColor: @grayDark;
-@dropdownLinkColorHover: @white;
-@dropdownLinkColorActive: @white;
-
-@dropdownLinkBackgroundActive: @linkColor;
-@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;
-
-
-
-// COMPONENT VARIABLES
-// --------------------------------------------------
-
-
-// Z-index master list
-// -------------------------
-// Used for a bird's eye view of components dependent on the z-axis
-// Try to avoid customizing these :)
-@zindexDropdown: 1000;
-@zindexPopover: 1010;
-@zindexTooltip: 1030;
-@zindexFixedNavbar: 1030;
-@zindexModalBackdrop: 1040;
-@zindexModal: 1050;
-
-
-// Sprite icons path
-// -------------------------
-@iconSpritePath: "../img/glyphicons-halflings.png";
-@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
-
-
-// Input placeholder text color
-// -------------------------
-@placeholderText: @grayLight;
-
-
-// Hr border color
-// -------------------------
-@hrBorder: @grayLighter;
-
-
-// Horizontal forms & lists
-// -------------------------
-@horizontalComponentOffset: 180px;
-
-
-// Wells
-// -------------------------
-@wellBackground: #f5f5f5;
-
-
-// Navbar
-// -------------------------
-@navbarCollapseWidth: 767px;
-@navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;
-
-@navbarHeight: 40px;
-@navbarBackgroundHighlight: #ffffff;
-@navbarBackground: darken(@navbarBackgroundHighlight, 5%);
-@navbarBorder: darken(@navbarBackground, 12%);
-
-@navbarText: #777;
-@navbarLinkColor: #777;
-@navbarLinkColorHover: @grayDark;
-@navbarLinkColorActive: @gray;
-@navbarLinkBackgroundHover: transparent;
-@navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
-
-@navbarBrandColor: @navbarLinkColor;
-
-// Inverted navbar
-@navbarInverseBackground: #111111;
-@navbarInverseBackgroundHighlight: #222222;
-@navbarInverseBorder: #252525;
-
-@navbarInverseText: @grayLight;
-@navbarInverseLinkColor: @grayLight;
-@navbarInverseLinkColorHover: @white;
-@navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
-@navbarInverseLinkBackgroundHover: transparent;
-@navbarInverseLinkBackgroundActive: @navbarInverseBackground;
-
-@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
-@navbarInverseSearchBackgroundFocus: @white;
-@navbarInverseSearchBorder: @navbarInverseBackground;
-@navbarInverseSearchPlaceholderColor: #ccc;
-
-@navbarInverseBrandColor: @navbarInverseLinkColor;
-
-
-// Pagination
-// -------------------------
-@paginationBackground: #fff;
-@paginationBorder: #ddd;
-@paginationActiveBackground: #f5f5f5;
-
-
-// Hero unit
-// -------------------------
-@heroUnitBackground: @grayLighter;
-@heroUnitHeadingColor: inherit;
-@heroUnitLeadColor: inherit;
-
-
-// Form states and alerts
-// -------------------------
-@warningText: mix(@yellowDark, @yellowDarker, 80%);
-@warningBackground: @yellowLighter;
-@warningBorder: darken(spin(@warningBackground, -10), 7%);
-
-@errorText: @red;
-@errorBackground: @redLighter;
-@errorBorder: darken(spin(@errorBackground, -10), 4%);
-
-@successText: mix(@greenDarker, @greenDark, 30%);
-@successBackground: @greenLighter;
-@successBorder: darken(spin(@successBackground, -10), 13%);
-
-@infoText: mix(@blueDark, @blue, 50%);
-@infoBackground: @blueLighter;
-@infoBorder: darken(spin(@infoBackground, -10), 7%);
-
-@inverseText: @white;
-@inverseBackground: @gray;
-@inverseBorder: darken(spin(@inverseBackground, -10), 7%);
-
-
-// Tooltips and popovers
-// -------------------------
-@tooltipColor: #fff;
-@tooltipBackground: #000;
-@tooltipArrowWidth: 5px;
-@tooltipArrowColor: @tooltipBackground;
-
-@popoverBackground: #fff;
-@popoverArrowWidth: 10px;
-@popoverArrowColor: #fff;
-@popoverTitleBackground: darken(@popoverBackground, 3%);
-
-// Special enhancement for popovers
-@popoverArrowOuterWidth: @popoverArrowWidth + 1;
-@popoverArrowOuterColor: rgba(0,0,0,.25);
-
-
-
-// GRID
-// --------------------------------------------------
-
-
-// Default 940px grid
-// -------------------------
-@gridColumns: 12;
-@gridColumnWidth: 60px;
-@gridGutterWidth: 20px;
-@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
-
-// 1200px min
-@gridColumnWidth1200: 70px;
-@gridGutterWidth1200: 30px;
-@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
-
-// 768px-979px
-@gridColumnWidth768: 42px;
-@gridGutterWidth768: 20px;
-@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
-
-
-// Fluid grid
-// -------------------------
-@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);
-@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);
-
-// 1200px min
-@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200);
-@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200);
-
-// 768px-979px
-@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768);
-@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768);
diff --git a/library/font_awesome/src/3.2.1/cheatsheet/index.html b/library/font_awesome/src/3.2.1/cheatsheet/index.html
deleted file mode 100644
index a6460285a..000000000
--- a/library/font_awesome/src/3.2.1/cheatsheet/index.html
+++ /dev/null
@@ -1,2388 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Font Awesome Cheatsheet</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-list-ul icon-large"></i>&nbsp; Cheatsheet</h1>
- <p>The complete Font Awesome 3.2.1 icon reference</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- Print this page to PDF for the complete set of vectors. Or to use on the desktop, install FontAwesome.otf and copy
- and paste the icons (not the unicode) directly into your designs.
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<h2 class="page-header">Every Font Awesome 3.2.1 Icon, CSS Class, &amp; Unicode</h2>
-
-<div class="row">
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf000</i>
- icon-glass
- <span class="muted">(&amp;#xf000;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf001</i>
- icon-music
- <span class="muted">(&amp;#xf001;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf002</i>
- icon-search
- <span class="muted">(&amp;#xf002;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf003</i>
- icon-envelope-alt
- <span class="muted">(&amp;#xf003;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf004</i>
- icon-heart
- <span class="muted">(&amp;#xf004;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf005</i>
- icon-star
- <span class="muted">(&amp;#xf005;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf006</i>
- icon-star-empty
- <span class="muted">(&amp;#xf006;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf007</i>
- icon-user
- <span class="muted">(&amp;#xf007;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf008</i>
- icon-film
- <span class="muted">(&amp;#xf008;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf009</i>
- icon-th-large
- <span class="muted">(&amp;#xf009;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf00a</i>
- icon-th
- <span class="muted">(&amp;#xf00a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf00b</i>
- icon-th-list
- <span class="muted">(&amp;#xf00b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf00c</i>
- icon-ok
- <span class="muted">(&amp;#xf00c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf00d</i>
- icon-remove
- <span class="muted">(&amp;#xf00d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf00e</i>
- icon-zoom-in
- <span class="muted">(&amp;#xf00e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf010</i>
- icon-zoom-out
- <span class="muted">(&amp;#xf010;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf011</i>
- icon-off
- <span class="muted">(&amp;#xf011;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf012</i>
- icon-signal
- <span class="muted">(&amp;#xf012;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf013</i>
- icon-cog
- <span class="muted">(&amp;#xf013;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf014</i>
- icon-trash
- <span class="muted">(&amp;#xf014;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf015</i>
- icon-home
- <span class="muted">(&amp;#xf015;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf016</i>
- icon-file-alt
- <span class="muted">(&amp;#xf016;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf017</i>
- icon-time
- <span class="muted">(&amp;#xf017;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf018</i>
- icon-road
- <span class="muted">(&amp;#xf018;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf019</i>
- icon-download-alt
- <span class="muted">(&amp;#xf019;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf01a</i>
- icon-download
- <span class="muted">(&amp;#xf01a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf01b</i>
- icon-upload
- <span class="muted">(&amp;#xf01b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf01c</i>
- icon-inbox
- <span class="muted">(&amp;#xf01c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf01d</i>
- icon-play-circle
- <span class="muted">(&amp;#xf01d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf01e</i>
- icon-repeat
- <span class="muted">(&amp;#xf01e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf021</i>
- icon-refresh
- <span class="muted">(&amp;#xf021;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf022</i>
- icon-list-alt
- <span class="muted">(&amp;#xf022;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf023</i>
- icon-lock
- <span class="muted">(&amp;#xf023;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf024</i>
- icon-flag
- <span class="muted">(&amp;#xf024;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf025</i>
- icon-headphones
- <span class="muted">(&amp;#xf025;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf026</i>
- icon-volume-off
- <span class="muted">(&amp;#xf026;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf027</i>
- icon-volume-down
- <span class="muted">(&amp;#xf027;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf028</i>
- icon-volume-up
- <span class="muted">(&amp;#xf028;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf029</i>
- icon-qrcode
- <span class="muted">(&amp;#xf029;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf02a</i>
- icon-barcode
- <span class="muted">(&amp;#xf02a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf02b</i>
- icon-tag
- <span class="muted">(&amp;#xf02b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf02c</i>
- icon-tags
- <span class="muted">(&amp;#xf02c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf02d</i>
- icon-book
- <span class="muted">(&amp;#xf02d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf02e</i>
- icon-bookmark
- <span class="muted">(&amp;#xf02e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf02f</i>
- icon-print
- <span class="muted">(&amp;#xf02f;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf030</i>
- icon-camera
- <span class="muted">(&amp;#xf030;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf031</i>
- icon-font
- <span class="muted">(&amp;#xf031;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf032</i>
- icon-bold
- <span class="muted">(&amp;#xf032;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf033</i>
- icon-italic
- <span class="muted">(&amp;#xf033;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf034</i>
- icon-text-height
- <span class="muted">(&amp;#xf034;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf035</i>
- icon-text-width
- <span class="muted">(&amp;#xf035;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf036</i>
- icon-align-left
- <span class="muted">(&amp;#xf036;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf037</i>
- icon-align-center
- <span class="muted">(&amp;#xf037;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf038</i>
- icon-align-right
- <span class="muted">(&amp;#xf038;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf039</i>
- icon-align-justify
- <span class="muted">(&amp;#xf039;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf03a</i>
- icon-list
- <span class="muted">(&amp;#xf03a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf03b</i>
- icon-indent-left
- <span class="muted">(&amp;#xf03b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf03c</i>
- icon-indent-right
- <span class="muted">(&amp;#xf03c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf03d</i>
- icon-facetime-video
- <span class="muted">(&amp;#xf03d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf03e</i>
- icon-picture
- <span class="muted">(&amp;#xf03e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf040</i>
- icon-pencil
- <span class="muted">(&amp;#xf040;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf041</i>
- icon-map-marker
- <span class="muted">(&amp;#xf041;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf042</i>
- icon-adjust
- <span class="muted">(&amp;#xf042;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf043</i>
- icon-tint
- <span class="muted">(&amp;#xf043;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf044</i>
- icon-edit
- <span class="muted">(&amp;#xf044;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf045</i>
- icon-share
- <span class="muted">(&amp;#xf045;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf046</i>
- icon-check
- <span class="muted">(&amp;#xf046;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf047</i>
- icon-move
- <span class="muted">(&amp;#xf047;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf048</i>
- icon-step-backward
- <span class="muted">(&amp;#xf048;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf049</i>
- icon-fast-backward
- <span class="muted">(&amp;#xf049;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf04a</i>
- icon-backward
- <span class="muted">(&amp;#xf04a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf04b</i>
- icon-play
- <span class="muted">(&amp;#xf04b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf04c</i>
- icon-pause
- <span class="muted">(&amp;#xf04c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf04d</i>
- icon-stop
- <span class="muted">(&amp;#xf04d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf04e</i>
- icon-forward
- <span class="muted">(&amp;#xf04e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf050</i>
- icon-fast-forward
- <span class="muted">(&amp;#xf050;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf051</i>
- icon-step-forward
- <span class="muted">(&amp;#xf051;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf052</i>
- icon-eject
- <span class="muted">(&amp;#xf052;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf053</i>
- icon-chevron-left
- <span class="muted">(&amp;#xf053;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf054</i>
- icon-chevron-right
- <span class="muted">(&amp;#xf054;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf055</i>
- icon-plus-sign
- <span class="muted">(&amp;#xf055;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf056</i>
- icon-minus-sign
- <span class="muted">(&amp;#xf056;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf057</i>
- icon-remove-sign
- <span class="muted">(&amp;#xf057;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf058</i>
- icon-ok-sign
- <span class="muted">(&amp;#xf058;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf059</i>
- icon-question-sign
- <span class="muted">(&amp;#xf059;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf05a</i>
- icon-info-sign
- <span class="muted">(&amp;#xf05a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf05b</i>
- icon-screenshot
- <span class="muted">(&amp;#xf05b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf05c</i>
- icon-remove-circle
- <span class="muted">(&amp;#xf05c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf05d</i>
- icon-ok-circle
- <span class="muted">(&amp;#xf05d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf05e</i>
- icon-ban-circle
- <span class="muted">(&amp;#xf05e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf060</i>
- icon-arrow-left
- <span class="muted">(&amp;#xf060;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf061</i>
- icon-arrow-right
- <span class="muted">(&amp;#xf061;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf062</i>
- icon-arrow-up
- <span class="muted">(&amp;#xf062;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf063</i>
- icon-arrow-down
- <span class="muted">(&amp;#xf063;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf064</i>
- icon-share-alt
- <span class="muted">(&amp;#xf064;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf065</i>
- icon-resize-full
- <span class="muted">(&amp;#xf065;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf066</i>
- icon-resize-small
- <span class="muted">(&amp;#xf066;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf067</i>
- icon-plus
- <span class="muted">(&amp;#xf067;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf068</i>
- icon-minus
- <span class="muted">(&amp;#xf068;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf069</i>
- icon-asterisk
- <span class="muted">(&amp;#xf069;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf06a</i>
- icon-exclamation-sign
- <span class="muted">(&amp;#xf06a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf06b</i>
- icon-gift
- <span class="muted">(&amp;#xf06b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf06c</i>
- icon-leaf
- <span class="muted">(&amp;#xf06c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf06d</i>
- icon-fire
- <span class="muted">(&amp;#xf06d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf06e</i>
- icon-eye-open
- <span class="muted">(&amp;#xf06e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf070</i>
- icon-eye-close
- <span class="muted">(&amp;#xf070;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf071</i>
- icon-warning-sign
- <span class="muted">(&amp;#xf071;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf072</i>
- icon-plane
- <span class="muted">(&amp;#xf072;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf073</i>
- icon-calendar
- <span class="muted">(&amp;#xf073;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf074</i>
- icon-random
- <span class="muted">(&amp;#xf074;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf075</i>
- icon-comment
- <span class="muted">(&amp;#xf075;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf076</i>
- icon-magnet
- <span class="muted">(&amp;#xf076;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf077</i>
- icon-chevron-up
- <span class="muted">(&amp;#xf077;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf078</i>
- icon-chevron-down
- <span class="muted">(&amp;#xf078;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf079</i>
- icon-retweet
- <span class="muted">(&amp;#xf079;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf07a</i>
- icon-shopping-cart
- <span class="muted">(&amp;#xf07a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf07b</i>
- icon-folder-close
- <span class="muted">(&amp;#xf07b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf07c</i>
- icon-folder-open
- <span class="muted">(&amp;#xf07c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf07d</i>
- icon-resize-vertical
- <span class="muted">(&amp;#xf07d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf07e</i>
- icon-resize-horizontal
- <span class="muted">(&amp;#xf07e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf080</i>
- icon-bar-chart
- <span class="muted">(&amp;#xf080;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf081</i>
- icon-twitter-sign
- <span class="muted">(&amp;#xf081;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf082</i>
- icon-facebook-sign
- <span class="muted">(&amp;#xf082;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf083</i>
- icon-camera-retro
- <span class="muted">(&amp;#xf083;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf084</i>
- icon-key
- <span class="muted">(&amp;#xf084;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf085</i>
- icon-cogs
- <span class="muted">(&amp;#xf085;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf086</i>
- icon-comments
- <span class="muted">(&amp;#xf086;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf087</i>
- icon-thumbs-up-alt
- <span class="muted">(&amp;#xf087;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf088</i>
- icon-thumbs-down-alt
- <span class="muted">(&amp;#xf088;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf089</i>
- icon-star-half
- <span class="muted">(&amp;#xf089;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf08a</i>
- icon-heart-empty
- <span class="muted">(&amp;#xf08a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf08b</i>
- icon-signout
- <span class="muted">(&amp;#xf08b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf08c</i>
- icon-linkedin-sign
- <span class="muted">(&amp;#xf08c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf08d</i>
- icon-pushpin
- <span class="muted">(&amp;#xf08d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf08e</i>
- icon-external-link
- <span class="muted">(&amp;#xf08e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf090</i>
- icon-signin
- <span class="muted">(&amp;#xf090;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf091</i>
- icon-trophy
- <span class="muted">(&amp;#xf091;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf092</i>
- icon-github-sign
- <span class="muted">(&amp;#xf092;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf093</i>
- icon-upload-alt
- <span class="muted">(&amp;#xf093;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf094</i>
- icon-lemon
- <span class="muted">(&amp;#xf094;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf095</i>
- icon-phone
- <span class="muted">(&amp;#xf095;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf096</i>
- icon-check-empty
- <span class="muted">(&amp;#xf096;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf097</i>
- icon-bookmark-empty
- <span class="muted">(&amp;#xf097;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf098</i>
- icon-phone-sign
- <span class="muted">(&amp;#xf098;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf099</i>
- icon-twitter
- <span class="muted">(&amp;#xf099;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf09a</i>
- icon-facebook
- <span class="muted">(&amp;#xf09a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf09b</i>
- icon-github
- <span class="muted">(&amp;#xf09b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf09c</i>
- icon-unlock
- <span class="muted">(&amp;#xf09c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf09d</i>
- icon-credit-card
- <span class="muted">(&amp;#xf09d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf09e</i>
- icon-rss
- <span class="muted">(&amp;#xf09e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a0</i>
- icon-hdd
- <span class="muted">(&amp;#xf0a0;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a1</i>
- icon-bullhorn
- <span class="muted">(&amp;#xf0a1;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a2</i>
- icon-bell
- <span class="muted">(&amp;#xf0a2;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a3</i>
- icon-certificate
- <span class="muted">(&amp;#xf0a3;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a4</i>
- icon-hand-right
- <span class="muted">(&amp;#xf0a4;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a5</i>
- icon-hand-left
- <span class="muted">(&amp;#xf0a5;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a6</i>
- icon-hand-up
- <span class="muted">(&amp;#xf0a6;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a7</i>
- icon-hand-down
- <span class="muted">(&amp;#xf0a7;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a8</i>
- icon-circle-arrow-left
- <span class="muted">(&amp;#xf0a8;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0a9</i>
- icon-circle-arrow-right
- <span class="muted">(&amp;#xf0a9;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0aa</i>
- icon-circle-arrow-up
- <span class="muted">(&amp;#xf0aa;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ab</i>
- icon-circle-arrow-down
- <span class="muted">(&amp;#xf0ab;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ac</i>
- icon-globe
- <span class="muted">(&amp;#xf0ac;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ad</i>
- icon-wrench
- <span class="muted">(&amp;#xf0ad;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ae</i>
- icon-tasks
- <span class="muted">(&amp;#xf0ae;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0b0</i>
- icon-filter
- <span class="muted">(&amp;#xf0b0;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0b1</i>
- icon-briefcase
- <span class="muted">(&amp;#xf0b1;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0b2</i>
- icon-fullscreen
- <span class="muted">(&amp;#xf0b2;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c0</i>
- icon-group
- <span class="muted">(&amp;#xf0c0;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c1</i>
- icon-link
- <span class="muted">(&amp;#xf0c1;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c2</i>
- icon-cloud
- <span class="muted">(&amp;#xf0c2;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c3</i>
- icon-beaker
- <span class="muted">(&amp;#xf0c3;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c4</i>
- icon-cut
- <span class="muted">(&amp;#xf0c4;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c5</i>
- icon-copy
- <span class="muted">(&amp;#xf0c5;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c6</i>
- icon-paper-clip
- <span class="muted">(&amp;#xf0c6;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c7</i>
- icon-save
- <span class="muted">(&amp;#xf0c7;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c8</i>
- icon-sign-blank
- <span class="muted">(&amp;#xf0c8;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0c9</i>
- icon-reorder
- <span class="muted">(&amp;#xf0c9;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ca</i>
- icon-list-ul
- <span class="muted">(&amp;#xf0ca;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0cb</i>
- icon-list-ol
- <span class="muted">(&amp;#xf0cb;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0cc</i>
- icon-strikethrough
- <span class="muted">(&amp;#xf0cc;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0cd</i>
- icon-underline
- <span class="muted">(&amp;#xf0cd;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ce</i>
- icon-table
- <span class="muted">(&amp;#xf0ce;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d0</i>
- icon-magic
- <span class="muted">(&amp;#xf0d0;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d1</i>
- icon-truck
- <span class="muted">(&amp;#xf0d1;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d2</i>
- icon-pinterest
- <span class="muted">(&amp;#xf0d2;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d3</i>
- icon-pinterest-sign
- <span class="muted">(&amp;#xf0d3;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d4</i>
- icon-google-plus-sign
- <span class="muted">(&amp;#xf0d4;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d5</i>
- icon-google-plus
- <span class="muted">(&amp;#xf0d5;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d6</i>
- icon-money
- <span class="muted">(&amp;#xf0d6;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d7</i>
- icon-caret-down
- <span class="muted">(&amp;#xf0d7;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d8</i>
- icon-caret-up
- <span class="muted">(&amp;#xf0d8;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0d9</i>
- icon-caret-left
- <span class="muted">(&amp;#xf0d9;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0da</i>
- icon-caret-right
- <span class="muted">(&amp;#xf0da;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0db</i>
- icon-columns
- <span class="muted">(&amp;#xf0db;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0dc</i>
- icon-sort
- <span class="muted">(&amp;#xf0dc;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0dd</i>
- icon-sort-down
- <span class="muted">(&amp;#xf0dd;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0de</i>
- icon-sort-up
- <span class="muted">(&amp;#xf0de;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e0</i>
- icon-envelope
- <span class="muted">(&amp;#xf0e0;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e1</i>
- icon-linkedin
- <span class="muted">(&amp;#xf0e1;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e2</i>
- icon-undo
- <span class="muted">(&amp;#xf0e2;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e3</i>
- icon-legal
- <span class="muted">(&amp;#xf0e3;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e4</i>
- icon-dashboard
- <span class="muted">(&amp;#xf0e4;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e5</i>
- icon-comment-alt
- <span class="muted">(&amp;#xf0e5;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e6</i>
- icon-comments-alt
- <span class="muted">(&amp;#xf0e6;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e7</i>
- icon-bolt
- <span class="muted">(&amp;#xf0e7;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e8</i>
- icon-sitemap
- <span class="muted">(&amp;#xf0e8;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0e9</i>
- icon-umbrella
- <span class="muted">(&amp;#xf0e9;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ea</i>
- icon-paste
- <span class="muted">(&amp;#xf0ea;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0eb</i>
- icon-lightbulb
- <span class="muted">(&amp;#xf0eb;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ec</i>
- icon-exchange
- <span class="muted">(&amp;#xf0ec;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ed</i>
- icon-cloud-download
- <span class="muted">(&amp;#xf0ed;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0ee</i>
- icon-cloud-upload
- <span class="muted">(&amp;#xf0ee;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f0</i>
- icon-user-md
- <span class="muted">(&amp;#xf0f0;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f1</i>
- icon-stethoscope
- <span class="muted">(&amp;#xf0f1;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f2</i>
- icon-suitcase
- <span class="muted">(&amp;#xf0f2;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f3</i>
- icon-bell-alt
- <span class="muted">(&amp;#xf0f3;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f4</i>
- icon-coffee
- <span class="muted">(&amp;#xf0f4;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f5</i>
- icon-food
- <span class="muted">(&amp;#xf0f5;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f6</i>
- icon-file-text-alt
- <span class="muted">(&amp;#xf0f6;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f7</i>
- icon-building
- <span class="muted">(&amp;#xf0f7;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f8</i>
- icon-hospital
- <span class="muted">(&amp;#xf0f8;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0f9</i>
- icon-ambulance
- <span class="muted">(&amp;#xf0f9;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0fa</i>
- icon-medkit
- <span class="muted">(&amp;#xf0fa;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0fb</i>
- icon-fighter-jet
- <span class="muted">(&amp;#xf0fb;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0fc</i>
- icon-beer
- <span class="muted">(&amp;#xf0fc;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0fd</i>
- icon-h-sign
- <span class="muted">(&amp;#xf0fd;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf0fe</i>
- icon-plus-sign-alt
- <span class="muted">(&amp;#xf0fe;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf100</i>
- icon-double-angle-left
- <span class="muted">(&amp;#xf100;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf101</i>
- icon-double-angle-right
- <span class="muted">(&amp;#xf101;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf102</i>
- icon-double-angle-up
- <span class="muted">(&amp;#xf102;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf103</i>
- icon-double-angle-down
- <span class="muted">(&amp;#xf103;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf104</i>
- icon-angle-left
- <span class="muted">(&amp;#xf104;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf105</i>
- icon-angle-right
- <span class="muted">(&amp;#xf105;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf106</i>
- icon-angle-up
- <span class="muted">(&amp;#xf106;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf107</i>
- icon-angle-down
- <span class="muted">(&amp;#xf107;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf108</i>
- icon-desktop
- <span class="muted">(&amp;#xf108;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf109</i>
- icon-laptop
- <span class="muted">(&amp;#xf109;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf10a</i>
- icon-tablet
- <span class="muted">(&amp;#xf10a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf10b</i>
- icon-mobile-phone
- <span class="muted">(&amp;#xf10b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf10c</i>
- icon-circle-blank
- <span class="muted">(&amp;#xf10c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf10d</i>
- icon-quote-left
- <span class="muted">(&amp;#xf10d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf10e</i>
- icon-quote-right
- <span class="muted">(&amp;#xf10e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf110</i>
- icon-spinner
- <span class="muted">(&amp;#xf110;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf111</i>
- icon-circle
- <span class="muted">(&amp;#xf111;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf112</i>
- icon-reply
- <span class="muted">(&amp;#xf112;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf113</i>
- icon-github-alt
- <span class="muted">(&amp;#xf113;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf114</i>
- icon-folder-close-alt
- <span class="muted">(&amp;#xf114;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf115</i>
- icon-folder-open-alt
- <span class="muted">(&amp;#xf115;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf116</i>
- icon-expand-alt
- <span class="muted">(&amp;#xf116;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf117</i>
- icon-collapse-alt
- <span class="muted">(&amp;#xf117;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf118</i>
- icon-smile
- <span class="muted">(&amp;#xf118;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf119</i>
- icon-frown
- <span class="muted">(&amp;#xf119;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf11a</i>
- icon-meh
- <span class="muted">(&amp;#xf11a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf11b</i>
- icon-gamepad
- <span class="muted">(&amp;#xf11b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf11c</i>
- icon-keyboard
- <span class="muted">(&amp;#xf11c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf11d</i>
- icon-flag-alt
- <span class="muted">(&amp;#xf11d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf11e</i>
- icon-flag-checkered
- <span class="muted">(&amp;#xf11e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf120</i>
- icon-terminal
- <span class="muted">(&amp;#xf120;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf121</i>
- icon-code
- <span class="muted">(&amp;#xf121;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf122</i>
- icon-reply-all
- <span class="muted">(&amp;#xf122;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf122</i>
- icon-mail-reply-all
- <span class="muted">(&amp;#xf122;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf123</i>
- icon-star-half-empty
- <span class="muted">(&amp;#xf123;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf124</i>
- icon-location-arrow
- <span class="muted">(&amp;#xf124;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf125</i>
- icon-crop
- <span class="muted">(&amp;#xf125;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf126</i>
- icon-code-fork
- <span class="muted">(&amp;#xf126;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf127</i>
- icon-unlink
- <span class="muted">(&amp;#xf127;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf128</i>
- icon-question
- <span class="muted">(&amp;#xf128;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf129</i>
- icon-info
- <span class="muted">(&amp;#xf129;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf12a</i>
- icon-exclamation
- <span class="muted">(&amp;#xf12a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf12b</i>
- icon-superscript
- <span class="muted">(&amp;#xf12b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf12c</i>
- icon-subscript
- <span class="muted">(&amp;#xf12c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf12d</i>
- icon-eraser
- <span class="muted">(&amp;#xf12d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf12e</i>
- icon-puzzle-piece
- <span class="muted">(&amp;#xf12e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf130</i>
- icon-microphone
- <span class="muted">(&amp;#xf130;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf131</i>
- icon-microphone-off
- <span class="muted">(&amp;#xf131;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf132</i>
- icon-shield
- <span class="muted">(&amp;#xf132;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf133</i>
- icon-calendar-empty
- <span class="muted">(&amp;#xf133;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf134</i>
- icon-fire-extinguisher
- <span class="muted">(&amp;#xf134;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf135</i>
- icon-rocket
- <span class="muted">(&amp;#xf135;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf136</i>
- icon-maxcdn
- <span class="muted">(&amp;#xf136;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf137</i>
- icon-chevron-sign-left
- <span class="muted">(&amp;#xf137;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf138</i>
- icon-chevron-sign-right
- <span class="muted">(&amp;#xf138;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf139</i>
- icon-chevron-sign-up
- <span class="muted">(&amp;#xf139;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf13a</i>
- icon-chevron-sign-down
- <span class="muted">(&amp;#xf13a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf13b</i>
- icon-html5
- <span class="muted">(&amp;#xf13b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf13c</i>
- icon-css3
- <span class="muted">(&amp;#xf13c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf13d</i>
- icon-anchor
- <span class="muted">(&amp;#xf13d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf13e</i>
- icon-unlock-alt
- <span class="muted">(&amp;#xf13e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf140</i>
- icon-bullseye
- <span class="muted">(&amp;#xf140;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf141</i>
- icon-ellipsis-horizontal
- <span class="muted">(&amp;#xf141;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf142</i>
- icon-ellipsis-vertical
- <span class="muted">(&amp;#xf142;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf143</i>
- icon-rss-sign
- <span class="muted">(&amp;#xf143;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf144</i>
- icon-play-sign
- <span class="muted">(&amp;#xf144;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf145</i>
- icon-ticket
- <span class="muted">(&amp;#xf145;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf146</i>
- icon-minus-sign-alt
- <span class="muted">(&amp;#xf146;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf147</i>
- icon-check-minus
- <span class="muted">(&amp;#xf147;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf148</i>
- icon-level-up
- <span class="muted">(&amp;#xf148;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf149</i>
- icon-level-down
- <span class="muted">(&amp;#xf149;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf14a</i>
- icon-check-sign
- <span class="muted">(&amp;#xf14a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf14b</i>
- icon-edit-sign
- <span class="muted">(&amp;#xf14b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf14c</i>
- icon-external-link-sign
- <span class="muted">(&amp;#xf14c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf14d</i>
- icon-share-sign
- <span class="muted">(&amp;#xf14d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf14e</i>
- icon-compass
- <span class="muted">(&amp;#xf14e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf150</i>
- icon-collapse
- <span class="muted">(&amp;#xf150;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf151</i>
- icon-collapse-top
- <span class="muted">(&amp;#xf151;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf152</i>
- icon-expand
- <span class="muted">(&amp;#xf152;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf153</i>
- icon-eur
- <span class="muted">(&amp;#xf153;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf154</i>
- icon-gbp
- <span class="muted">(&amp;#xf154;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf155</i>
- icon-usd
- <span class="muted">(&amp;#xf155;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf156</i>
- icon-inr
- <span class="muted">(&amp;#xf156;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf157</i>
- icon-jpy
- <span class="muted">(&amp;#xf157;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf158</i>
- icon-cny
- <span class="muted">(&amp;#xf158;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf159</i>
- icon-krw
- <span class="muted">(&amp;#xf159;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf15a</i>
- icon-btc
- <span class="muted">(&amp;#xf15a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf15b</i>
- icon-file
- <span class="muted">(&amp;#xf15b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf15c</i>
- icon-file-text
- <span class="muted">(&amp;#xf15c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf15d</i>
- icon-sort-by-alphabet
- <span class="muted">(&amp;#xf15d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf15e</i>
- icon-sort-by-alphabet-alt
- <span class="muted">(&amp;#xf15e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf160</i>
- icon-sort-by-attributes
- <span class="muted">(&amp;#xf160;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf161</i>
- icon-sort-by-attributes-alt
- <span class="muted">(&amp;#xf161;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf162</i>
- icon-sort-by-order
- <span class="muted">(&amp;#xf162;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf163</i>
- icon-sort-by-order-alt
- <span class="muted">(&amp;#xf163;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf164</i>
- icon-thumbs-up
- <span class="muted">(&amp;#xf164;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf165</i>
- icon-thumbs-down
- <span class="muted">(&amp;#xf165;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf166</i>
- icon-youtube-sign
- <span class="muted">(&amp;#xf166;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf167</i>
- icon-youtube
- <span class="muted">(&amp;#xf167;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf168</i>
- icon-xing
- <span class="muted">(&amp;#xf168;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf169</i>
- icon-xing-sign
- <span class="muted">(&amp;#xf169;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf16a</i>
- icon-youtube-play
- <span class="muted">(&amp;#xf16a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf16b</i>
- icon-dropbox
- <span class="muted">(&amp;#xf16b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf16c</i>
- icon-stackexchange
- <span class="muted">(&amp;#xf16c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf16d</i>
- icon-instagram
- <span class="muted">(&amp;#xf16d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf16e</i>
- icon-flickr
- <span class="muted">(&amp;#xf16e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf170</i>
- icon-adn
- <span class="muted">(&amp;#xf170;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf171</i>
- icon-bitbucket
- <span class="muted">(&amp;#xf171;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf172</i>
- icon-bitbucket-sign
- <span class="muted">(&amp;#xf172;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf173</i>
- icon-tumblr
- <span class="muted">(&amp;#xf173;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf174</i>
- icon-tumblr-sign
- <span class="muted">(&amp;#xf174;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf175</i>
- icon-long-arrow-down
- <span class="muted">(&amp;#xf175;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf176</i>
- icon-long-arrow-up
- <span class="muted">(&amp;#xf176;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf177</i>
- icon-long-arrow-left
- <span class="muted">(&amp;#xf177;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf178</i>
- icon-long-arrow-right
- <span class="muted">(&amp;#xf178;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf179</i>
- icon-apple
- <span class="muted">(&amp;#xf179;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf17a</i>
- icon-windows
- <span class="muted">(&amp;#xf17a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf17b</i>
- icon-android
- <span class="muted">(&amp;#xf17b;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf17c</i>
- icon-linux
- <span class="muted">(&amp;#xf17c;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf17d</i>
- icon-dribbble
- <span class="muted">(&amp;#xf17d;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf17e</i>
- icon-skype
- <span class="muted">(&amp;#xf17e;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf180</i>
- icon-foursquare
- <span class="muted">(&amp;#xf180;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf181</i>
- icon-trello
- <span class="muted">(&amp;#xf181;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf182</i>
- icon-female
- <span class="muted">(&amp;#xf182;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf183</i>
- icon-male
- <span class="muted">(&amp;#xf183;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf184</i>
- icon-gittip
- <span class="muted">(&amp;#xf184;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf185</i>
- icon-sun
- <span class="muted">(&amp;#xf185;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf186</i>
- icon-moon
- <span class="muted">(&amp;#xf186;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf187</i>
- icon-archive
- <span class="muted">(&amp;#xf187;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf188</i>
- icon-bug
- <span class="muted">(&amp;#xf188;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf189</i>
- icon-vk
- <span class="muted">(&amp;#xf189;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf18a</i>
- icon-weibo
- <span class="muted">(&amp;#xf18a;)</span>
- </div>
-
- <div class="span4">
- <i class="icon-fixed-width">&#xf18b</i>
- icon-renren
- <span class="muted">(&amp;#xf18b;)</span>
- </div>
-
-</div>
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/community/index.html b/library/font_awesome/src/3.2.1/community/index.html
deleted file mode 100644
index 616b039c4..000000000
--- a/library/font_awesome/src/3.2.1/community/index.html
+++ /dev/null
@@ -1,363 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>The Font Awesome Community</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li class="active"><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-thumbs-up-alt icon-large"></i>&nbsp; Community</h1>
- <p>Lots of ways to get involved with Font Awesome</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- Font Awesome has a vibrant community of folks helping each other out. You can
- <a href="#getting-support">get support</a>,
- <a href="#reporting-bugs">report bugs</a>,
- <a href="#requesting-new-icons">request new icons</a>,
- <a href="#submitting-pull-requests">submit pull requests</a>, and
- <a href="#project-milestones">check upcoming milestones</a>.
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<div id="getting-support">
- <h2 class="page-header">Getting Support</h2>
- <p>
- Having trouble getting Font Awesome up and running? Something not working the way you think it should? I hate that
- I don't have time to answer Font Awesome support emails anymore. So here are some things you might wanna do:
- </p>
- <ol>
- <li>
- Make sure you've read the latest version of how to <a href="../get-started/">get started</a>.
- It's been updated recently to make Font Awesome even easier to use.
- </li>
- <li>
- Check out the <a href="http://stackoverflow.com/questions/tagged/font-awesome">existing questions tagged as
- Font Awesome</a> over on Stack Overflow. Other folks might have had the same question you've had.
- </li>
- <li>
- Can't find the answer to your question on Stack Overflow?
- <a href="http://stackoverflow.com/questions/ask?tags=font-awesome">Ask a new question</a>, then
- <a href="mailto:dave@fontawesome.io">send me an email</a> and I might be able to take a look.
- </li>
- </ol>
-</div>
-
-<section id="reporting-bugs">
- <h2 class="page-header">Reporting Bugs</h2>
- <p>
- Found a problem with Font Awesome? Feel free to submit an issue on the GitHub project. But please keep the following in mind:
- </p>
- <ol>
- <li>Please be nice. Font Awesome is a happy place.</li>
- <li>Please <a href="https://github.com/FortAwesome/Font-Awesome/search?type=Issues">search</a> to see if your icon request already exists.</li>
- <li>
- Before opening any issue, please read the generic <a href="https://github.com/necolas/issue-guidelines">issue
- guidelines</a>, by <a href="https://github.com/necolas/">Nicolas Gallagher</a>.
- </li>
- <li>
- After doing everything above, feel free to
- <a href="https://github.com/FortAwesome/Font-Awesome/issues/new">submit an issue</a>.
- </li>
- </ol>
-</section>
-
-<section id="requesting-new-icons">
- <h2 class="page-header">Requesting New Icons</h2>
- <p>
- New icons mostly start as requests by the
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Font Awesome community on GitHub</a>. Want to request a new
- icon? Here are some things to keep in mind:
- </p>
- <ol>
- <li>Please be nice. Font Awesome is a happy place.</li>
- <li>Please <a href="https://github.com/FortAwesome/Font-Awesome/search?type=Issues">search</a> to see if your icon request already exists.</li>
- <li>
- Please and thank you if you include the following:
- <ul>
- <li>
- Title your <a href="https://github.com/FortAwesome/Font-Awesome/issues/new?title=Icon%20Request:%20icon-name">new issue</a>
- <code>Icon request: icon-name</code>.
- </li>
- <li>Include a few use cases for your requested icon. How do you plan on using it?</li>
- <li>Attach a single color image or two that represent the idea you're going for.</li>
- </ul>
- </li>
- <li>
- Concrete objects make good icons, since abstract concepts are, well, abstract. It's harder to make an icon
- to represent happiness. It's easier to make a smiley face. <i class="icon-smile"></i>
- </li>
- </ol>
-</section>
-
-<section id="submitting-pull-requests">
- <h2 class="page-header">Submitting Pull Requests</h2>
- Found a way to solve a bug in Font Awesome? Want to contribute new features? Here are a few things to remember:
- <ol>
- <li>Please submit all pull requests against *-wip branches.</li>
- <li>All pull requests submitted against master will be summarily closed and this guide referenced.</li>
- <li>
- After doing everything above, feel free to
- <a href="https://github.com/FortAwesome/Font-Awesome/issues/new">submit a pull request</a>.
- </li>
- </ol>
-</section>
-
-<section id="project-milestones">
- <h2 class="page-header">Project Milestones</h2>
- <p>
- Want to keep up with what's planned for Font Awesome? Check out our
- <a href="https://github.com/FortAwesome/Font-Awesome/milestones">milestones</a> on the GitHub project.
- </p>
-</section>
-
-
-<section id="thanks-to">
- <h2 class="page-header">Thanks To</h2>
- <div class="row">
- <div class="span4">
- <p>
- Thanks to <a href="https://twitter.com/robmadole/">@robmadole</a> and
- <a href="https://twitter.com/supercodepoet/">@supercodepoet</a> for icon design
- review, advice, some Jekyll help, and being all around badass coders.
- </p>
- </div>
- <div class="span4">
- <p>
- Thanks to <a href="https://twitter.com/grantgordon">@grantgordon</a> and
- <a href="https://twitter.com/johnsmclay">@johnsmclay</a> for developing and hosting
- <a href="http://icnfnt.com/">icnfnt</a>, the best way to subset Font Awesome.
- </p>
- </div>
- <div class="span4">
- <p>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent
- <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN</a>, the fastest and easiest way to
- <a href="../get-started/#bootstrapcdn">get started</a> with Font Awesome.
- </p>
- </div>
- </div>
-</section>
-
-<section id="tell-me-thanks">
- <h2 class="page-header">Tell Me Thanks</h2>
- <p class="lead">
- Hopefully you think Font Awesome <em>is</em> awesome. I've put hundreds of hours into the project to give back to the
- open source community. If you'd like, here are a couple of ways you can tell me thanks for all my hard work.
- </p>
- <div class="row">
- <div class="span6">
- <h3><a href="https://www.gittip.com/davegandy/"><i class="icon-gittip"></i> Tip me on Gittip</a></h3>
- <p>
- Gittip is a great way to let developers know you appreciate their work.
- </p>
- </div>
- <div class="span6">
- <h3><a href="http://amzn.com/w/G64X58AY416W" target="_blank">My Amazon Wish List</a></h3>
- <p>
- Or pick something straight
- from <a href="http://amzn.com/w/G64X58AY416W" target="_blank">my wish list</a>. Gift cards are great.
- </p>
- </div>
- </div>
-</section>
-
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/design.html b/library/font_awesome/src/3.2.1/design.html
deleted file mode 100644
index 9c5830d74..000000000
--- a/library/font_awesome/src/3.2.1/design.html
+++ /dev/null
@@ -1 +0,0 @@
-<META HTTP-EQUIV=REFRESH CONTENT="0; URL=cheatsheet/">
diff --git a/library/font_awesome/src/3.2.1/examples/index.html b/library/font_awesome/src/3.2.1/examples/index.html
deleted file mode 100644
index c0604c8c4..000000000
--- a/library/font_awesome/src/3.2.1/examples/index.html
+++ /dev/null
@@ -1,680 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Font Awesome Examples</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left active"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone active">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-magic icon-large"></i>&nbsp; Examples</h1>
- <p>Lots of easy ways to use Font Awesome</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- After you <a href="../get-started/">get up and running</a>, you can place Font Awesome icons just about
- anywhere with the <code>&lt;i&gt;</code> tag.
- Many examples appreciatively re-used from the <a href="http://getbootstrap.com">Bootstrap documentation</a>.
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<div id="new-styles">
- <h2 class="page-header">New Styles in 3.2</h2>
- <div class="row">
- <div class="span4">
- <h4><a href="#rotated-flipped">Rotated and Flipped Icons</a></h4>
- <div class="well well-transparent">
- <i class="icon-shield"></i>&nbsp; normal<br>
- <i class="icon-shield icon-rotate-90"></i>&nbsp; icon-rotate-90<br>
- <i class="icon-shield icon-rotate-180"></i>&nbsp; icon-rotate-180<br>
- <i class="icon-shield icon-rotate-270"></i>&nbsp; icon-rotate-270<br>
- <i class="icon-shield icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal<br>
- <i class="icon-shield icon-flip-vertical"></i>&nbsp; icon-flip-vertical
- </div>
- </div>
- <div class="span4">
- <h4><a href="#stacked">Stacked Icons</a></h4>
- <div class="well well-transparent stacked">
- <span class="icon-stack">
- <i class="icon-check-empty icon-stack-base"></i>
- <i class="icon-twitter"></i>
- </span>
- icon-twitter on icon-check-empty<br>
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-flag icon-light"></i>
- </span>
- icon-flag on icon-circle<br>
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-terminal icon-light"></i>
- </span>
- icon-terminal on icon-sign-blank
- </div>
- </div>
- <div class="span4">
- <h4><a href="#bulleted-lists">Better Bulleted Lists</a></h4>
- <div class="well well-transparent">
- <ul class="icons-ul">
- <li><i class="icon-li icon-chevron-sign-right"></i>New bulleted lists</li>
- <li><i class="icon-li icon-bullseye"></i>Fix some old bugs</li>
- <li><i class="icon-li icon-play-sign"></i>And deal with arbitrary</li>
- <li><i class="icon-li icon-ok-sign"></i>Font sizes better</li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-<section id="inline-icons">
- <h2 class="page-header">Inline Icons</h2>
- <div class="row">
- <div class="span3">
- <p>Place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag.</p>
- </div>
- <div class="span9">
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-camera-retro"></i> icon-camera-retro
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera-retro&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera-retro
-</code></pre></div>
- <div class="alert alert-info"><i class="icon-info-sign"></i> Icon classes are echoed via CSS :before.</div>
- </div>
- </div>
-</section>
-
-<section id="larger-icons">
- <h2 class="page-header">Larger Icons</h2>
- <div class="row">
- <div class="span3">
- <p>
- To increase the size of icons relative to its container, use <code>icon-large</code>, <code>icon-2x</code>,
- <code>icon-3x</code>, or <code>icon-4x</code>.
- </p>
- </div>
- <div class="span9">
- <p>
- Increase the icon size by using the <code>icon-large</code> (33% increase), <code>icon-2x</code>,
- <code>icon-3x</code>, or <code>icon-4x</code> classes.
- </p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <p><i class="icon-camera-retro icon-large"></i> icon-camera-retro</p>
- <p><i class="icon-camera-retro icon-2x"></i> icon-camera-retro</p>
- <p><i class="icon-camera-retro icon-3x"></i> icon-camera-retro</p>
- <p><i class="icon-camera-retro icon-4x"></i> icon-camera-retro</p>
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;p&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera-retro icon-large&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera-retro<span class="nt">&lt;/p&gt;</span>
-<span class="nt">&lt;p&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera-retro icon-2x&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera-retro<span class="nt">&lt;/p&gt;</span>
-<span class="nt">&lt;p&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera-retro icon-3x&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera-retro<span class="nt">&lt;/p&gt;</span>
-<span class="nt">&lt;p&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera-retro icon-4x&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera-retro<span class="nt">&lt;/p&gt;</span>
-</code></pre></div>
- <div class="alert alert-info">
- <i class="icon-info-sign"></i> If your icons are getting chopped off on top and bottom, make sure you have
- sufficient line-height.
- </div>
- </div>
- </div>
-</section>
-
-<section id="bordered-pulled">
- <h2 class="page-header">Bordered & Pulled Icons</h2>
- <div class="row">
- <div class="span3">
- <p>
- Use <code>icon-border</code> and <code>pull-right</code> or <code>pull-left</code> for easy pull quotes or
- article graphics.
- </p>
- </div>
- <div class="span9">
- <div class="well well-large well-transparent">
- <i class="icon-quote-left icon-4x pull-left icon-muted"></i>
- Use a few of the new styles together, and you've got easy pull quotes or a great introductory article image.
- Or spinning icons for loading and refreshing content. Or fun big icons in multi-line buttons. You can combine all
- of them in any combination to get lots of new possibilities.
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-quote-left icon-4x pull-left icon-muted&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
-Use a few of the new styles together ... lots of new possibilities.
-</code></pre></div>
- <div class="well well-large well-transparent clearfix">
- <i class="icon-flag icon-4x pull-left icon-border"></i>
- Use a few of the new styles together, and you've got easy pull quotes or a great introductory article image.
- Or spinning icons for loading and refreshing content. Or fun big icons in multi-line buttons. You can combine all
- of them in any combination to get lots of new possibilities.
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flag icon-4x pull-left icon-border&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
-Use a few of the new styles together ... lots of new possibilities.
-</code></pre></div>
- </div>
- </div>
-</section>
-
-<section id="buttons">
- <h2 class="page-header">Buttons</h2>
- <div class="row">
- <div class="span3">
- <p>
- <a class="btn" href="#">
- <i class="icon-repeat"></i> Reload</a>
- <a class="btn btn-success" href="#">
- <i class="icon-shopping-cart icon-large"></i> Checkout</a>
- </p>
- <p>
- <a class="btn btn-large btn-primary" href="#">
- <i class="icon-comment"></i> Comment</a>
- <a class="btn btn-small btn-info" href="#">
- <i class="icon-info-sign"></i> Info</a>
- </p>
- <p>
- <a class="btn btn-danger" href="#">
- <i class="icon-trash icon-large"></i> Delete</a>
- <a class="btn btn-small" href="#">
- <i class="icon-cog"></i> Settings</a>
- </p>
- <p>
- <a class="btn btn-large btn-danger" href="#">
- <i class="icon-flag icon-2x pull-left"></i> Font Awesome<br>Version 3.2.1</a>
- </p>
- <p>
- <a class="btn btn-primary" href="#">
- <i class="icon-refresh icon-spin"></i> Synchronizing Content...</a>
- </p>
- </div>
- <div class="span9">
- <p>
- Font Awesome icons work great in buttons. You can even combine them with larger icon styles,
- <code>pull-right</code> and <code>pull-left</code>, and <code>icon-spin</code>.
- </p>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-repeat&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Reload<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-success&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shopping-cart icon-large&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Checkout<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-large btn-primary&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-comment&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Comment<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-small btn-info&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-info-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Info<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-danger&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-trash icon-large&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Delete<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-small&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cog&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Settings<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-large btn-danger&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flag icon-2x pull-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Font Awesome<span class="nt">&lt;br&gt;</span>Version 3.2.1<span class="nt">&lt;/a&gt;</span>
-<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-primary&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-refresh icon-spin&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Synchronizing Content...<span class="nt">&lt;/a&gt;</span>
-</code></pre></div>
- </div>
- </div>
-</section>
-
-<section id="button-groups">
- <h2 class="page-header">Button Groups</h2>
- <div class="row">
- <div class="span3">
- <p>
- <div class="btn-group">
- <a class="btn" href="#"><i class="icon-align-left"></i></a>
- <a class="btn" href="#"><i class="icon-align-center"></i></a>
- <a class="btn" href="#"><i class="icon-align-right"></i></a>
- <a class="btn" href="#"><i class="icon-align-justify"></i></a>
- </div>
- </p>
- </div>
- <div class="span9">
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;btn-group&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-left&quot;</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
- <span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-center&quot;</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
- <span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-right&quot;</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
- <span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-justify&quot;</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
-<span class="nt">&lt;/div&gt;</span>
-</code></pre></div>
- </div>
- </div>
-</section>
-
-<section id="button-dropdowns">
- <h2 class="page-header">Button Dropdowns</h2>
- <div class="row">
- <div class="span3">
- <div class="btn-group open">
- <a class="btn btn-primary" href="#"><i class="icon-user"></i> User</a>
- <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
- <span class="icon-caret-down"></span></a>
- <ul class="dropdown-menu">
- <li><a href="#"><i class="icon-fixed-width icon-pencil"></i> Edit</a></li>
- <li><a href="#"><i class="icon-fixed-width icon-trash"></i> Delete</a></li>
- <li><a href="#"><i class="icon-fixed-width icon-ban-circle"></i> Ban</a></li>
- <li class="divider"></li>
- <li><a href="#"><i class="i"></i> Make admin</a></li>
- </ul>
- </div>
- </div>
- <div class="span9">
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;btn-group open&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-primary&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-user&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> User<span class="nt">&lt;/a&gt;</span>
- <span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">&quot;btn btn-primary dropdown-toggle&quot;</span> <span class="na">data-toggle=</span><span class="s">&quot;dropdown&quot;</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;icon-caret-down&quot;</span><span class="nt">&gt;&lt;/span&gt;&lt;/a&gt;</span>
- <span class="nt">&lt;ul</span> <span class="na">class=</span><span class="s">&quot;dropdown-menu&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-pencil&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Edit<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-trash&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Delete<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-ban-circle&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Ban<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li</span> <span class="na">class=</span><span class="s">&quot;divider&quot;</span><span class="nt">&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;i&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Make admin<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;/ul&gt;</span>
-<span class="nt">&lt;/div&gt;</span>
-</code></pre></div>
- <div class="alert alert-info"><i class="icon-info-sign"></i> Don't forget to add the appropriate JavaScript to enable button dropdowns.</div>
- </div>
- </div>
-</section>
-
-<section id="bulleted-lists">
- <h2 class="page-header">Bulleted Lists</h2>
- <div class="row">
- <div class="span12">
- </div>
- <div class="span3">
- <ul class="icons-ul">
- <li><i class="icon-li icon-ok"></i>Bulleted lists (like this one)</li>
- <li><i class="icon-li icon-ok"></i>Buttons</li>
- <li><i class="icon-li icon-ok"></i>Button groups</li>
- <li><i class="icon-li icon-ok"></i>Navigation</li>
- <li><i class="icon-li icon-ok"></i>Prepended form inputs</li>
- <li><i class="icon-li icon-ok"></i>&hellip;and many more with custom CSS</li>
- </ul>
- </div>
- <div class="span9">
- <p>Easily replace individual bullets.</p>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;ul</span> <span class="na">class=</span><span class="s">&quot;icons-ul&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;li&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-li icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>Bulleted lists (like this one)<span class="nt">&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-li icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>Buttons<span class="nt">&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-li icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>Button groups<span class="nt">&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-li icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>Navigation<span class="nt">&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-li icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>Prepended form inputs<span class="nt">&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-li icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;hellip;</span>and many more with custom CSS<span class="nt">&lt;/li&gt;</span>
-<span class="nt">&lt;/ul&gt;</span>
-</code></pre></div>
- <div class="alert alert-info"><i class="icon-info-sign"></i> Make sure to NOT include any whitespace after the icon declaration.</div>
- </div>
- </div>
-</section>
-
-<section id="navigation">
- <h2 class="page-header">Navigation</h2>
- <div class="row">
- <div class="span3">
- <div class="well" style="padding: 8px 0;">
- <ul class="nav nav-list">
- <li class="active"><a href="#"><i class="icon-fixed-width icon-home"></i> Home</a></li>
- <li><a href="#"><i class="icon-fixed-width icon-book"></i> Library</a></li>
- <li><a href="#"><i class="icon-fixed-width icon-pencil"></i> Applications</a></li>
- <li><a href="#"><i class="icon-fixed-width icon-cogs"></i> Settings</a></li>
- </ul>
- </div>
- </div>
- <div class="span9">
- <p>Use Font Awesome icons in navigation to provide helpful visual cues.</p>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;ul</span> <span class="na">class=</span><span class="s">&quot;nav nav-list&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;li</span> <span class="na">class=</span><span class="s">&quot;active&quot;</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-home&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Home<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-book&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Library<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-pencil&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Applications<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
- <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fixed-width icon-cogs&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Settings<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
-<span class="nt">&lt;/ul&gt;</span>
-</code></pre></div>
- </div>
- </div>
-</section>
-
-<section id="form-inputs">
- <h2 class="page-header">Prepended & Appended Form Inputs</h2>
- <div class="row">
- <div class="span3">
- <form>
- <div class="input-prepend">
- <span class="add-on"><i class="icon-envelope"></i></span>
- <input class="span2" type="text" placeholder="Email address">
- </div>
- <div class="input-prepend">
- <span class="add-on"><i class="icon-key"></i></span>
- <input class="span2" type="password" placeholder="Password">
- </div>
- </form>
- </div>
- <div class="span9">
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;form&gt;</span>
- <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;input-prepend&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;add-on&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-envelope&quot;</span><span class="nt">&gt;&lt;/i&gt;&lt;/span&gt;</span>
- <span class="nt">&lt;input</span> <span class="na">class=</span><span class="s">&quot;span2&quot;</span> <span class="na">type=</span><span class="s">&quot;text&quot;</span> <span class="na">placeholder=</span><span class="s">&quot;Email address&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;/div&gt;</span>
- <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;input-prepend&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;add-on&quot;</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-key&quot;</span><span class="nt">&gt;&lt;/i&gt;&lt;/span&gt;</span>
- <span class="nt">&lt;input</span> <span class="na">class=</span><span class="s">&quot;span2&quot;</span> <span class="na">type=</span><span class="s">&quot;password&quot;</span> <span class="na">placeholder=</span><span class="s">&quot;Password&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;/div&gt;</span>
-<span class="nt">&lt;/form&gt;</span>
-</code></pre></div>
- </div>
- </div>
-</section>
-
-<section id="animated-spinner">
- <h2 class="page-header">Animated Spinner</h2>
- <div class="row">
- <div class="span3">
- Use the <code>icon-spin</code> class to get any icon to rotate. Works well with <code>icon-spinner</code> and
- <code>icon-refresh</code>.
- </div>
- <div class="span9">
- <div class="well well-large well-transparent lead">
- <i class="icon-spinner icon-spin icon-large"></i> Spinner icon when loading content...
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-spinner icon-spin icon-large&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> Spinner icon when loading content...
-</code></pre></div>
- <p class="alert alert-info">
- <i class="icon-info-sign"></i> CSS3 animations aren't supported in IE7 - IE9.
- </p>
- </div>
- </div>
-</section>
-
-<section id="rotated-flipped">
- <h2 class="page-header">Rotated &amp; Flipped</h2>
- <div class="row">
- <div class="span3">
- A set of classes that can be used to arbitrarily rotate and flip icons.
- </div>
- <div class="span9">
- <div class="well well-large well-transparent lead">
- <i class="icon-shield"></i>&nbsp; normal<br>
- <i class="icon-shield icon-rotate-90"></i>&nbsp; icon-rotate-90<br>
- <i class="icon-shield icon-rotate-180"></i>&nbsp; icon-rotate-180<br>
- <i class="icon-shield icon-rotate-270"></i>&nbsp; icon-rotate-270<br>
- <i class="icon-shield icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal<br>
- <i class="icon-shield icon-flip-vertical"></i>&nbsp; icon-flip-vertical
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span> normal<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield icon-rotate-90&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span> icon-rotate-90<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield icon-rotate-180&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span> icon-rotate-180<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield icon-rotate-270&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span> icon-rotate-270<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield icon-flip-horizontal&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span> icon-flip-horizontal<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield icon-flip-vertical&quot;</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span> icon-flip-vertical
-</code></pre></div>
- <p class="alert alert-info">
- <i class="icon-info-sign"></i> Rotating and flipping icons aren't yet supported in IE7.
- </p>
- </div>
- </div>
-</section>
-
-<section id="stacked">
- <h2 class="page-header">Stacked Icons</h2>
- <div class="row">
- <div class="span3">
- A method for easily stacking multiple icons. Use the <code>icon-stack</code> class on the parent and
- <code>icon-stack-base</code> for the bottom icon.
- </div>
- <div class="span9">
- <div class="well well-large well-transparent lead">
- <span class="icon-stack">
- <i class="icon-check-empty icon-stack-base"></i>
- <i class="icon-twitter"></i>
- </span>
- icon-twitter on icon-check-empty<br>
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-flag icon-light"></i>
- </span>
- icon-flag on icon-circle<br>
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-terminal icon-light"></i>
- </span>
- icon-terminal on icon-sign-blank<br>
- <span class="icon-stack">
- <i class="icon-camera"></i>
- <i class="icon-ban-circle icon-stack-base text-error"></i>
- </span>
- icon-camera on icon-ban-circle
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;icon-stack&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-check-empty icon-stack-base&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-twitter&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
-<span class="nt">&lt;/span&gt;</span>
-icon-twitter on icon-check-empty<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;icon-stack&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle icon-stack-base&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flag icon-light&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
-<span class="nt">&lt;/span&gt;</span>
-icon-flag on icon-circle<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;icon-stack&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sign-blank icon-stack-base&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-terminal icon-light&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
-<span class="nt">&lt;/span&gt;</span>
-icon-terminal on icon-sign-blank<span class="nt">&lt;br&gt;</span>
-<span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">&quot;icon-stack&quot;</span><span class="nt">&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
- <span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ban-circle icon-stack-base text-error&quot;</span><span class="nt">&gt;&lt;/i&gt;</span>
-<span class="nt">&lt;/span&gt;</span>
-icon-camera on icon-ban-circle
-</code></pre></div>
- </div>
- </div>
-</section>
-
-<section id="custom">
- <h2 class="page-header">Custom CSS</h2>
- <div class="row">
- <div class="span3">
- <p>Anything you can do with CSS font styles, you can do with Font Awesome.</p>
- </div>
- <div class="span9">
- <p>Star Ratings (inspired by <a href="http://css-tricks.com/star-ratings/" target="_blank">CSS Tricks</a>)</p>
- <div class="well">
- <span class="rating">
- <span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span>
- </span>
- </div>
- </div>
- </div>
-</section>
-
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/get-started/index.html b/library/font_awesome/src/3.2.1/get-started/index.html
deleted file mode 100644
index ea9830ac0..000000000
--- a/library/font_awesome/src/3.2.1/get-started/index.html
+++ /dev/null
@@ -1,308 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Get Started with Font Awesome</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li class="active"><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-cogs icon-large"></i>&nbsp; Get Started</h1>
- <p>Easy ways to get Font Awesome 3.2.1 onto your website</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- Setting up Font Awesome can be as simple as adding two lines of code to your website, or you can be a pro and
- customize the LESS yourself! Font Awesome even plays nicely with
- <a href="http://getbootstrap.com">Bootstrap</a>!
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<div id="bootstrapcdn">
- <h2 class="page-header">EASIEST: <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN</a></h2>
- <p>Add Font Awesome + Bootstrap into your website with two lines of code. You don't even have to download or install anything!</p>
- <ol>
- <li>
- Paste the following code into the <code>&lt;head&gt;</code> section of your site's HTML.
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;link</span> <span class="na">href=</span><span class="s">&quot;//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.no-icons.min.css&quot;</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span><span class="nt">&gt;</span>
-<span class="nt">&lt;link</span> <span class="na">href=</span><span class="s">&quot;//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css&quot;</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span><span class="nt">&gt;</span>
-</code></pre></div>
- <div class="alert alert-info margin-top">
- <i class="icon-info-sign"></i> Want to use Font Awesome by itself without Bootstrap? Just don't include the first line.
- </div>
- </li>
- <li>
- Pat yourself on the back for your scalable-vector-icons-on-the-website
- <a href="http://37signals.com/svn/posts/312-lingo-judo">judo solution</a> in two lines of code.
- </li>
- <li>
- Check out the <a href="../examples/">examples</a> to start using Font Awesome!
- </li>
- </ol>
-</div>
-
-<section id="default-css">
- <h2 class="page-header">EASY: Default CSS</h2>
- <p>Use this method to get the default Font Awesome CSS with the default Bootstrap CSS.</p>
- <ol>
- <li>Copy the <code>font-awesome</code> directory into your project.</li>
- <li>
- In the <code>&lt;head&gt;</code> of your html, reference the location to your font-awesome.min.css.
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;path/to/bootstrap/css/bootstrap.min.css&quot;</span><span class="nt">&gt;</span>
-<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;path/to/font-awesome/css/font-awesome.min.css&quot;</span><span class="nt">&gt;</span>
-</code></pre></div>
- </li>
- <li>Check out the <a href="../examples/">examples</a> to start using Font Awesome!</li>
- </ol>
-</section>
-
-<section id="custom-less">
- <h2 class="page-header">PRO: Custom LESS</h2>
- <p>Use this method to customize Font Awesome and Bootstrap 2.3.2 using LESS.</p>
- <ol>
- <li>Copy the <code>font-awesome</code> directory into your project.</li>
- <li>Open your project's bootstrap/bootstrap.less and replace
-<div class="highlight"><pre><code class="html">@import &quot;sprites.less&quot;;
-</code></pre></div>
- with
-<div class="highlight"><pre><code class="html">@import &quot;path/to/font-awesome/less/font-awesome.less&quot;;
-</code></pre></div>
- </li>
- <li>
- Open your project's font-awesome/variables.less and edit the <code>@FontAwesomePath</code> variable to point to your font directory.
-<div class="highlight"><pre><code class="html">@FontAwesomePath: &quot;../font&quot;;
-</code></pre></div>
- <p class="alert alert-info"><i class="icon-info-sign"></i> The font path is relative from your compiled CSS directory.</p>
- </li>
- <li>Re-compile your LESS if using a static compiler. Otherwise, you should be good to go.</li>
- <li>Check out the <a href="../examples/">examples</a> to start using Font Awesome!</li>
- </ol>
-</section>
-
-<section id="not-using-bootstrap">
- <h2 class="page-header">Not using Bootstrap?</h2>
- <p>Font Awesome works just as well without Bootstrap.</p>
- <ol>
- <li>Copy the <code>font-awesome</code> directory into your project.</li>
- <li>Follow the above directions and skip the Bootstrap parts.</li>
- <li>Open your project's font-awesome.less or font-awesome.min.css and edit the font location to point it to your font directory (see above examples).</li>
- <li>Check out the <a href="../examples/">examples</a> to start using Font Awesome!</li>
- </ol>
-</section>
-
-<section id="need-ie7">
- <h2 class="page-header">Need IE7 Support?</h2>
- <p>Font Awesome supports IE7. If you need it, you have my condolences.</p>
- <ol>
- <li>Get Font Awesome working properly in a modern browser.</li>
- <li>Copy font-awesome-ie7.min.css into your project.</li>
- <li>
- In the <code>&lt;head&gt;</code> of your html, reference the location to your font-awesome-ie7.min.css.
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;path/to/bootstrap/css/bootstrap.min.css&quot;</span><span class="nt">&gt;</span>
-<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href=</span><span class="s">&quot;path/to/font-awesome/css/font-awesome.min.css&quot;</span><span class="nt">&gt;</span>
-<span class="c">&lt;!--[if IE 7]&gt;</span>
-<span class="c"> &lt;link rel=&quot;stylesheet&quot; href=&quot;path/to/font-awesome/css/font-awesome-ie7.min.css&quot;&gt;</span>
-<span class="c">&lt;![endif]--&gt;</span>
-</code></pre></div>
- </li>
- <li>Go complain to whoever decided your project needs IE7 support.</li>
- </ol>
-</section>
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/adjust/index.html b/library/font_awesome/src/3.2.1/icon/adjust/index.html
deleted file mode 100644
index 21482f25c..000000000
--- a/library/font_awesome/src/3.2.1/icon/adjust/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-adjust: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-adjust icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-adjust icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-adjust icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-adjust icon-3"></i>&nbsp;&nbsp;
- <i class="icon-adjust icon-2"></i>&nbsp;
- </span>
- <i class="icon-adjust icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-adjust
- <small>
- <i class="icon-adjust"></i> &middot;
- Unicode: <span class="upper">f042</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-adjust"></i> icon-adjust
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-adjust&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-adjust
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/adn/index.html b/library/font_awesome/src/3.2.1/icon/adn/index.html
deleted file mode 100644
index 9ecc4ab34..000000000
--- a/library/font_awesome/src/3.2.1/icon/adn/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-adn: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-adn icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-adn icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-adn icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-adn icon-3"></i>&nbsp;&nbsp;
- <i class="icon-adn icon-2"></i>&nbsp;
- </span>
- <i class="icon-adn icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-adn
- <small>
- <i class="icon-adn"></i> &middot;
- Unicode: <span class="upper">f170</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-adn"></i> icon-adn
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-adn&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-adn
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/align-center/index.html b/library/font_awesome/src/3.2.1/icon/align-center/index.html
deleted file mode 100644
index 1c1741075..000000000
--- a/library/font_awesome/src/3.2.1/icon/align-center/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-align-center: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-align-center icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-align-center icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-align-center icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-align-center icon-3"></i>&nbsp;&nbsp;
- <i class="icon-align-center icon-2"></i>&nbsp;
- </span>
- <i class="icon-align-center icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-align-center
- <small>
- <i class="icon-align-center"></i> &middot;
- Unicode: <span class="upper">f037</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-align-center"></i> icon-align-center
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-center&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-align-center
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/align-justify/index.html b/library/font_awesome/src/3.2.1/icon/align-justify/index.html
deleted file mode 100644
index 2cae1cd47..000000000
--- a/library/font_awesome/src/3.2.1/icon/align-justify/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-align-justify: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-align-justify icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-align-justify icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-align-justify icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-align-justify icon-3"></i>&nbsp;&nbsp;
- <i class="icon-align-justify icon-2"></i>&nbsp;
- </span>
- <i class="icon-align-justify icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-align-justify
- <small>
- <i class="icon-align-justify"></i> &middot;
- Unicode: <span class="upper">f039</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-align-justify"></i> icon-align-justify
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-justify&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-align-justify
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/align-left/index.html b/library/font_awesome/src/3.2.1/icon/align-left/index.html
deleted file mode 100644
index d5130fe11..000000000
--- a/library/font_awesome/src/3.2.1/icon/align-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-align-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-align-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-align-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-align-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-align-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-align-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-align-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-align-left
- <small>
- <i class="icon-align-left"></i> &middot;
- Unicode: <span class="upper">f036</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-align-left"></i> icon-align-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-align-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/align-right/index.html b/library/font_awesome/src/3.2.1/icon/align-right/index.html
deleted file mode 100644
index 77cc1f648..000000000
--- a/library/font_awesome/src/3.2.1/icon/align-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-align-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-align-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-align-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-align-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-align-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-align-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-align-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-align-right
- <small>
- <i class="icon-align-right"></i> &middot;
- Unicode: <span class="upper">f038</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-align-right"></i> icon-align-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-align-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-align-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ambulance/index.html b/library/font_awesome/src/3.2.1/icon/ambulance/index.html
deleted file mode 100644
index 2923d5d41..000000000
--- a/library/font_awesome/src/3.2.1/icon/ambulance/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ambulance: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ambulance icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ambulance icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ambulance icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ambulance icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ambulance icon-2"></i>&nbsp;
- </span>
- <i class="icon-ambulance icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ambulance
- <small>
- <i class="icon-ambulance"></i> &middot;
- Unicode: <span class="upper">f0f9</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Medical Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ambulance"></i> icon-ambulance
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ambulance&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ambulance
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/anchor/index.html b/library/font_awesome/src/3.2.1/icon/anchor/index.html
deleted file mode 100644
index c1fe261f3..000000000
--- a/library/font_awesome/src/3.2.1/icon/anchor/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-anchor: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-anchor icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-anchor icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-anchor icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-anchor icon-3"></i>&nbsp;&nbsp;
- <i class="icon-anchor icon-2"></i>&nbsp;
- </span>
- <i class="icon-anchor icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-anchor
- <small>
- <i class="icon-anchor"></i> &middot;
- Unicode: <span class="upper">f13d</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-anchor"></i> icon-anchor
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-anchor&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-anchor
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/android/index.html b/library/font_awesome/src/3.2.1/icon/android/index.html
deleted file mode 100644
index d74cbf626..000000000
--- a/library/font_awesome/src/3.2.1/icon/android/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-android: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-android icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-android icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-android icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-android icon-3"></i>&nbsp;&nbsp;
- <i class="icon-android icon-2"></i>&nbsp;
- </span>
- <i class="icon-android icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-android
- <small>
- <i class="icon-android"></i> &middot;
- Unicode: <span class="upper">f17b</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-android"></i> icon-android
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-android&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-android
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/angle-down/index.html b/library/font_awesome/src/3.2.1/icon/angle-down/index.html
deleted file mode 100644
index 2c9ddafb7..000000000
--- a/library/font_awesome/src/3.2.1/icon/angle-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-angle-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-angle-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-angle-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-angle-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-angle-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-angle-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-angle-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-angle-down
- <small>
- <i class="icon-angle-down"></i> &middot;
- Unicode: <span class="upper">f107</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-angle-down"></i> icon-angle-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-angle-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-angle-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/angle-left/index.html b/library/font_awesome/src/3.2.1/icon/angle-left/index.html
deleted file mode 100644
index d08bee4b6..000000000
--- a/library/font_awesome/src/3.2.1/icon/angle-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-angle-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-angle-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-angle-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-angle-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-angle-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-angle-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-angle-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-angle-left
- <small>
- <i class="icon-angle-left"></i> &middot;
- Unicode: <span class="upper">f104</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-angle-left"></i> icon-angle-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-angle-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-angle-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/angle-right/index.html b/library/font_awesome/src/3.2.1/icon/angle-right/index.html
deleted file mode 100644
index 51ab55edd..000000000
--- a/library/font_awesome/src/3.2.1/icon/angle-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-angle-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-angle-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-angle-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-angle-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-angle-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-angle-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-angle-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-angle-right
- <small>
- <i class="icon-angle-right"></i> &middot;
- Unicode: <span class="upper">f105</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-angle-right"></i> icon-angle-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-angle-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-angle-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/angle-up/index.html b/library/font_awesome/src/3.2.1/icon/angle-up/index.html
deleted file mode 100644
index 573758e54..000000000
--- a/library/font_awesome/src/3.2.1/icon/angle-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-angle-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-angle-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-angle-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-angle-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-angle-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-angle-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-angle-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-angle-up
- <small>
- <i class="icon-angle-up"></i> &middot;
- Unicode: <span class="upper">f106</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-angle-up"></i> icon-angle-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-angle-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-angle-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/apple/index.html b/library/font_awesome/src/3.2.1/icon/apple/index.html
deleted file mode 100644
index 5c97c9c91..000000000
--- a/library/font_awesome/src/3.2.1/icon/apple/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-apple: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-apple icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-apple icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-apple icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-apple icon-3"></i>&nbsp;&nbsp;
- <i class="icon-apple icon-2"></i>&nbsp;
- </span>
- <i class="icon-apple icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-apple
- <small>
- <i class="icon-apple"></i> &middot;
- Unicode: <span class="upper">f179</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-apple"></i> icon-apple
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-apple&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-apple
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/archive/index.html b/library/font_awesome/src/3.2.1/icon/archive/index.html
deleted file mode 100644
index cf88844e5..000000000
--- a/library/font_awesome/src/3.2.1/icon/archive/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-archive: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-archive icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-archive icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-archive icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-archive icon-3"></i>&nbsp;&nbsp;
- <i class="icon-archive icon-2"></i>&nbsp;
- </span>
- <i class="icon-archive icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-archive
- <small>
- <i class="icon-archive"></i> &middot;
- Unicode: <span class="upper">f187</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-archive"></i> icon-archive
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-archive&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-archive
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/arrow-down/index.html b/library/font_awesome/src/3.2.1/icon/arrow-down/index.html
deleted file mode 100644
index 8c939cd56..000000000
--- a/library/font_awesome/src/3.2.1/icon/arrow-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-arrow-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-arrow-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-arrow-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-arrow-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-arrow-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-arrow-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-arrow-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-arrow-down
- <small>
- <i class="icon-arrow-down"></i> &middot;
- Unicode: <span class="upper">f063</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-arrow-down"></i> icon-arrow-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-arrow-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-arrow-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/arrow-left/index.html b/library/font_awesome/src/3.2.1/icon/arrow-left/index.html
deleted file mode 100644
index dc93f3dbc..000000000
--- a/library/font_awesome/src/3.2.1/icon/arrow-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-arrow-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-arrow-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-arrow-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-arrow-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-arrow-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-arrow-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-arrow-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-arrow-left
- <small>
- <i class="icon-arrow-left"></i> &middot;
- Unicode: <span class="upper">f060</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-arrow-left"></i> icon-arrow-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-arrow-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-arrow-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/arrow-right/index.html b/library/font_awesome/src/3.2.1/icon/arrow-right/index.html
deleted file mode 100644
index a44e49957..000000000
--- a/library/font_awesome/src/3.2.1/icon/arrow-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-arrow-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-arrow-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-arrow-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-arrow-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-arrow-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-arrow-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-arrow-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-arrow-right
- <small>
- <i class="icon-arrow-right"></i> &middot;
- Unicode: <span class="upper">f061</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-arrow-right"></i> icon-arrow-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-arrow-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-arrow-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/arrow-up/index.html b/library/font_awesome/src/3.2.1/icon/arrow-up/index.html
deleted file mode 100644
index 014f44b37..000000000
--- a/library/font_awesome/src/3.2.1/icon/arrow-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-arrow-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-arrow-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-arrow-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-arrow-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-arrow-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-arrow-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-arrow-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-arrow-up
- <small>
- <i class="icon-arrow-up"></i> &middot;
- Unicode: <span class="upper">f062</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-arrow-up"></i> icon-arrow-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-arrow-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-arrow-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/asterisk/index.html b/library/font_awesome/src/3.2.1/icon/asterisk/index.html
deleted file mode 100644
index 459b88593..000000000
--- a/library/font_awesome/src/3.2.1/icon/asterisk/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-asterisk: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-asterisk icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-asterisk icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-asterisk icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-asterisk icon-3"></i>&nbsp;&nbsp;
- <i class="icon-asterisk icon-2"></i>&nbsp;
- </span>
- <i class="icon-asterisk icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-asterisk
- <small>
- <i class="icon-asterisk"></i> &middot;
- Unicode: <span class="upper">f069</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-asterisk"></i> icon-asterisk
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-asterisk&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-asterisk
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/backward/index.html b/library/font_awesome/src/3.2.1/icon/backward/index.html
deleted file mode 100644
index 6338facbc..000000000
--- a/library/font_awesome/src/3.2.1/icon/backward/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-backward: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-backward icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-backward icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-backward icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-backward icon-3"></i>&nbsp;&nbsp;
- <i class="icon-backward icon-2"></i>&nbsp;
- </span>
- <i class="icon-backward icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-backward
- <small>
- <i class="icon-backward"></i> &middot;
- Unicode: <span class="upper">f04a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-backward"></i> icon-backward
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-backward&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-backward
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ban-circle/index.html b/library/font_awesome/src/3.2.1/icon/ban-circle/index.html
deleted file mode 100644
index 6c90e2fd6..000000000
--- a/library/font_awesome/src/3.2.1/icon/ban-circle/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ban-circle: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ban-circle icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ban-circle icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ban-circle icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ban-circle icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ban-circle icon-2"></i>&nbsp;
- </span>
- <i class="icon-ban-circle icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ban-circle
- <small>
- <i class="icon-ban-circle"></i> &middot;
- Unicode: <span class="upper">f05e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ban-circle"></i> icon-ban-circle
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ban-circle&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ban-circle
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bar-chart/index.html b/library/font_awesome/src/3.2.1/icon/bar-chart/index.html
deleted file mode 100644
index 89a5dc3cb..000000000
--- a/library/font_awesome/src/3.2.1/icon/bar-chart/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bar-chart: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bar-chart icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bar-chart icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bar-chart icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bar-chart icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bar-chart icon-2"></i>&nbsp;
- </span>
- <i class="icon-bar-chart icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bar-chart
- <small>
- <i class="icon-bar-chart"></i> &middot;
- Unicode: <span class="upper">f080</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bar-chart"></i> icon-bar-chart
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bar-chart&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bar-chart
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/barcode/index.html b/library/font_awesome/src/3.2.1/icon/barcode/index.html
deleted file mode 100644
index 760534e60..000000000
--- a/library/font_awesome/src/3.2.1/icon/barcode/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-barcode: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-barcode icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-barcode icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-barcode icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-barcode icon-3"></i>&nbsp;&nbsp;
- <i class="icon-barcode icon-2"></i>&nbsp;
- </span>
- <i class="icon-barcode icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-barcode
- <small>
- <i class="icon-barcode"></i> &middot;
- Unicode: <span class="upper">f02a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-barcode"></i> icon-barcode
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-barcode&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-barcode
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/beaker/index.html b/library/font_awesome/src/3.2.1/icon/beaker/index.html
deleted file mode 100644
index 368923d5f..000000000
--- a/library/font_awesome/src/3.2.1/icon/beaker/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-beaker: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-beaker icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-beaker icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-beaker icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-beaker icon-3"></i>&nbsp;&nbsp;
- <i class="icon-beaker icon-2"></i>&nbsp;
- </span>
- <i class="icon-beaker icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-beaker
- <small>
- <i class="icon-beaker"></i> &middot;
- Unicode: <span class="upper">f0c3</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-beaker"></i> icon-beaker
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-beaker&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-beaker
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/beer/index.html b/library/font_awesome/src/3.2.1/icon/beer/index.html
deleted file mode 100644
index 838a1ca50..000000000
--- a/library/font_awesome/src/3.2.1/icon/beer/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-beer: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-beer icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-beer icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-beer icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-beer icon-3"></i>&nbsp;&nbsp;
- <i class="icon-beer icon-2"></i>&nbsp;
- </span>
- <i class="icon-beer icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-beer
- <small>
- <i class="icon-beer"></i> &middot;
- Unicode: <span class="upper">f0fc</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-beer"></i> icon-beer
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-beer&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-beer
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bell-alt/index.html b/library/font_awesome/src/3.2.1/icon/bell-alt/index.html
deleted file mode 100644
index 26ebf4bad..000000000
--- a/library/font_awesome/src/3.2.1/icon/bell-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bell-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bell-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bell-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bell-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bell-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bell-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-bell-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bell-alt
- <small>
- <i class="icon-bell-alt"></i> &middot;
- Unicode: <span class="upper">f0f3</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bell-alt"></i> icon-bell-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bell-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bell-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bell/index.html b/library/font_awesome/src/3.2.1/icon/bell/index.html
deleted file mode 100644
index f30075f51..000000000
--- a/library/font_awesome/src/3.2.1/icon/bell/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bell: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bell icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bell icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bell icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bell icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bell icon-2"></i>&nbsp;
- </span>
- <i class="icon-bell icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bell
- <small>
- <i class="icon-bell"></i> &middot;
- Unicode: <span class="upper">f0a2</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bell"></i> icon-bell
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bell&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bell
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bitbucket-sign/index.html b/library/font_awesome/src/3.2.1/icon/bitbucket-sign/index.html
deleted file mode 100644
index b49591c56..000000000
--- a/library/font_awesome/src/3.2.1/icon/bitbucket-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bitbucket-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bitbucket-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bitbucket-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bitbucket-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bitbucket-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bitbucket-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-bitbucket-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bitbucket-sign
- <small>
- <i class="icon-bitbucket-sign"></i> &middot;
- Unicode: <span class="upper">f172</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bitbucket-sign"></i> icon-bitbucket-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bitbucket-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bitbucket-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bitbucket/index.html b/library/font_awesome/src/3.2.1/icon/bitbucket/index.html
deleted file mode 100644
index d3645b5c9..000000000
--- a/library/font_awesome/src/3.2.1/icon/bitbucket/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bitbucket: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bitbucket icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bitbucket icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bitbucket icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bitbucket icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bitbucket icon-2"></i>&nbsp;
- </span>
- <i class="icon-bitbucket icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bitbucket
- <small>
- <i class="icon-bitbucket"></i> &middot;
- Unicode: <span class="upper">f171</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bitbucket"></i> icon-bitbucket
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bitbucket&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bitbucket
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bold/index.html b/library/font_awesome/src/3.2.1/icon/bold/index.html
deleted file mode 100644
index 7a8240b14..000000000
--- a/library/font_awesome/src/3.2.1/icon/bold/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bold: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bold icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bold icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bold icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bold icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bold icon-2"></i>&nbsp;
- </span>
- <i class="icon-bold icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bold
- <small>
- <i class="icon-bold"></i> &middot;
- Unicode: <span class="upper">f032</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bold"></i> icon-bold
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bold&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bold
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bolt/index.html b/library/font_awesome/src/3.2.1/icon/bolt/index.html
deleted file mode 100644
index 6fed3da76..000000000
--- a/library/font_awesome/src/3.2.1/icon/bolt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bolt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bolt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bolt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bolt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bolt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bolt icon-2"></i>&nbsp;
- </span>
- <i class="icon-bolt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bolt
- <small>
- <i class="icon-bolt"></i> &middot;
- Unicode: <span class="upper">f0e7</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bolt"></i> icon-bolt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bolt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bolt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/book/index.html b/library/font_awesome/src/3.2.1/icon/book/index.html
deleted file mode 100644
index aedd49ecd..000000000
--- a/library/font_awesome/src/3.2.1/icon/book/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-book: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-book icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-book icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-book icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-book icon-3"></i>&nbsp;&nbsp;
- <i class="icon-book icon-2"></i>&nbsp;
- </span>
- <i class="icon-book icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-book
- <small>
- <i class="icon-book"></i> &middot;
- Unicode: <span class="upper">f02d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-book"></i> icon-book
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-book&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-book
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bookmark-empty/index.html b/library/font_awesome/src/3.2.1/icon/bookmark-empty/index.html
deleted file mode 100644
index 273f32a3e..000000000
--- a/library/font_awesome/src/3.2.1/icon/bookmark-empty/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bookmark-empty: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bookmark-empty icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bookmark-empty icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bookmark-empty icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bookmark-empty icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bookmark-empty icon-2"></i>&nbsp;
- </span>
- <i class="icon-bookmark-empty icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bookmark-empty
- <small>
- <i class="icon-bookmark-empty"></i> &middot;
- Unicode: <span class="upper">f097</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bookmark-empty"></i> icon-bookmark-empty
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bookmark-empty&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bookmark-empty
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bookmark/index.html b/library/font_awesome/src/3.2.1/icon/bookmark/index.html
deleted file mode 100644
index c1c3ef7de..000000000
--- a/library/font_awesome/src/3.2.1/icon/bookmark/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bookmark: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bookmark icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bookmark icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bookmark icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bookmark icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bookmark icon-2"></i>&nbsp;
- </span>
- <i class="icon-bookmark icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bookmark
- <small>
- <i class="icon-bookmark"></i> &middot;
- Unicode: <span class="upper">f02e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bookmark"></i> icon-bookmark
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bookmark&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bookmark
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/briefcase/index.html b/library/font_awesome/src/3.2.1/icon/briefcase/index.html
deleted file mode 100644
index 15af5eefb..000000000
--- a/library/font_awesome/src/3.2.1/icon/briefcase/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-briefcase: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-briefcase icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-briefcase icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-briefcase icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-briefcase icon-3"></i>&nbsp;&nbsp;
- <i class="icon-briefcase icon-2"></i>&nbsp;
- </span>
- <i class="icon-briefcase icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-briefcase
- <small>
- <i class="icon-briefcase"></i> &middot;
- Unicode: <span class="upper">f0b1</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-briefcase"></i> icon-briefcase
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-briefcase&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-briefcase
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/btc/index.html b/library/font_awesome/src/3.2.1/icon/btc/index.html
deleted file mode 100644
index 59da41a87..000000000
--- a/library/font_awesome/src/3.2.1/icon/btc/index.html
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-btc: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-btc icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-btc icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-btc icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-btc icon-3"></i>&nbsp;&nbsp;
- <i class="icon-btc icon-2"></i>&nbsp;
- </span>
- <i class="icon-btc icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-btc
- <small>
- <i class="icon-btc"></i> &middot;
- Unicode: <span class="upper">f15a</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons,
-
- Brand Icons
-
-
-
- &middot; Aliases:
-
- icon-bitcoin
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-btc"></i> icon-btc
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-btc&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-btc
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bug/index.html b/library/font_awesome/src/3.2.1/icon/bug/index.html
deleted file mode 100644
index 5b6a148fb..000000000
--- a/library/font_awesome/src/3.2.1/icon/bug/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bug: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bug icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bug icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bug icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bug icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bug icon-2"></i>&nbsp;
- </span>
- <i class="icon-bug icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bug
- <small>
- <i class="icon-bug"></i> &middot;
- Unicode: <span class="upper">f188</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bug"></i> icon-bug
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bug&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bug
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/building/index.html b/library/font_awesome/src/3.2.1/icon/building/index.html
deleted file mode 100644
index cae086791..000000000
--- a/library/font_awesome/src/3.2.1/icon/building/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-building: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-building icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-building icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-building icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-building icon-3"></i>&nbsp;&nbsp;
- <i class="icon-building icon-2"></i>&nbsp;
- </span>
- <i class="icon-building icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-building
- <small>
- <i class="icon-building"></i> &middot;
- Unicode: <span class="upper">f0f7</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-building"></i> icon-building
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-building&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-building
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bullhorn/index.html b/library/font_awesome/src/3.2.1/icon/bullhorn/index.html
deleted file mode 100644
index 189e88a95..000000000
--- a/library/font_awesome/src/3.2.1/icon/bullhorn/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bullhorn: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bullhorn icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bullhorn icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bullhorn icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bullhorn icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bullhorn icon-2"></i>&nbsp;
- </span>
- <i class="icon-bullhorn icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bullhorn
- <small>
- <i class="icon-bullhorn"></i> &middot;
- Unicode: <span class="upper">f0a1</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bullhorn"></i> icon-bullhorn
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bullhorn&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bullhorn
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/bullseye/index.html b/library/font_awesome/src/3.2.1/icon/bullseye/index.html
deleted file mode 100644
index 1c4dcbf38..000000000
--- a/library/font_awesome/src/3.2.1/icon/bullseye/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-bullseye: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-bullseye icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-bullseye icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-bullseye icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-bullseye icon-3"></i>&nbsp;&nbsp;
- <i class="icon-bullseye icon-2"></i>&nbsp;
- </span>
- <i class="icon-bullseye icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-bullseye
- <small>
- <i class="icon-bullseye"></i> &middot;
- Unicode: <span class="upper">f140</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-bullseye"></i> icon-bullseye
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-bullseye&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-bullseye
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/calendar-empty/index.html b/library/font_awesome/src/3.2.1/icon/calendar-empty/index.html
deleted file mode 100644
index 4deda7e1a..000000000
--- a/library/font_awesome/src/3.2.1/icon/calendar-empty/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-calendar-empty: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-calendar-empty icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-calendar-empty icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-calendar-empty icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-calendar-empty icon-3"></i>&nbsp;&nbsp;
- <i class="icon-calendar-empty icon-2"></i>&nbsp;
- </span>
- <i class="icon-calendar-empty icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-calendar-empty
- <small>
- <i class="icon-calendar-empty"></i> &middot;
- Unicode: <span class="upper">f133</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-calendar-empty"></i> icon-calendar-empty
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-calendar-empty&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-calendar-empty
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/calendar/index.html b/library/font_awesome/src/3.2.1/icon/calendar/index.html
deleted file mode 100644
index ff01fde88..000000000
--- a/library/font_awesome/src/3.2.1/icon/calendar/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-calendar: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-calendar icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-calendar icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-calendar icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-calendar icon-3"></i>&nbsp;&nbsp;
- <i class="icon-calendar icon-2"></i>&nbsp;
- </span>
- <i class="icon-calendar icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-calendar
- <small>
- <i class="icon-calendar"></i> &middot;
- Unicode: <span class="upper">f073</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-calendar"></i> icon-calendar
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-calendar&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-calendar
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/camera-retro/index.html b/library/font_awesome/src/3.2.1/icon/camera-retro/index.html
deleted file mode 100644
index e1f8bdbd4..000000000
--- a/library/font_awesome/src/3.2.1/icon/camera-retro/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-camera-retro: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-camera-retro icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-camera-retro icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-camera-retro icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-camera-retro icon-3"></i>&nbsp;&nbsp;
- <i class="icon-camera-retro icon-2"></i>&nbsp;
- </span>
- <i class="icon-camera-retro icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-camera-retro
- <small>
- <i class="icon-camera-retro"></i> &middot;
- Unicode: <span class="upper">f083</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-camera-retro"></i> icon-camera-retro
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera-retro&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera-retro
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/camera/index.html b/library/font_awesome/src/3.2.1/icon/camera/index.html
deleted file mode 100644
index fb3c6ae64..000000000
--- a/library/font_awesome/src/3.2.1/icon/camera/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-camera: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-camera icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-camera icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-camera icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-camera icon-3"></i>&nbsp;&nbsp;
- <i class="icon-camera icon-2"></i>&nbsp;
- </span>
- <i class="icon-camera icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-camera
- <small>
- <i class="icon-camera"></i> &middot;
- Unicode: <span class="upper">f030</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-camera"></i> icon-camera
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-camera&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-camera
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/caret-down/index.html b/library/font_awesome/src/3.2.1/icon/caret-down/index.html
deleted file mode 100644
index ad35768ce..000000000
--- a/library/font_awesome/src/3.2.1/icon/caret-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-caret-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-caret-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-caret-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-caret-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-caret-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-caret-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-caret-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-caret-down
- <small>
- <i class="icon-caret-down"></i> &middot;
- Unicode: <span class="upper">f0d7</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-caret-down"></i> icon-caret-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-caret-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-caret-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/caret-left/index.html b/library/font_awesome/src/3.2.1/icon/caret-left/index.html
deleted file mode 100644
index 00b7a6635..000000000
--- a/library/font_awesome/src/3.2.1/icon/caret-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-caret-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-caret-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-caret-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-caret-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-caret-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-caret-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-caret-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-caret-left
- <small>
- <i class="icon-caret-left"></i> &middot;
- Unicode: <span class="upper">f0d9</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-caret-left"></i> icon-caret-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-caret-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-caret-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/caret-right/index.html b/library/font_awesome/src/3.2.1/icon/caret-right/index.html
deleted file mode 100644
index 6cbb07e3e..000000000
--- a/library/font_awesome/src/3.2.1/icon/caret-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-caret-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-caret-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-caret-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-caret-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-caret-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-caret-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-caret-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-caret-right
- <small>
- <i class="icon-caret-right"></i> &middot;
- Unicode: <span class="upper">f0da</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-caret-right"></i> icon-caret-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-caret-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-caret-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/caret-up/index.html b/library/font_awesome/src/3.2.1/icon/caret-up/index.html
deleted file mode 100644
index 7f99181df..000000000
--- a/library/font_awesome/src/3.2.1/icon/caret-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-caret-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-caret-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-caret-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-caret-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-caret-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-caret-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-caret-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-caret-up
- <small>
- <i class="icon-caret-up"></i> &middot;
- Unicode: <span class="upper">f0d8</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-caret-up"></i> icon-caret-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-caret-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-caret-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/certificate/index.html b/library/font_awesome/src/3.2.1/icon/certificate/index.html
deleted file mode 100644
index 2d8136f14..000000000
--- a/library/font_awesome/src/3.2.1/icon/certificate/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-certificate: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-certificate icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-certificate icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-certificate icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-certificate icon-3"></i>&nbsp;&nbsp;
- <i class="icon-certificate icon-2"></i>&nbsp;
- </span>
- <i class="icon-certificate icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-certificate
- <small>
- <i class="icon-certificate"></i> &middot;
- Unicode: <span class="upper">f0a3</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-certificate"></i> icon-certificate
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-certificate&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-certificate
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/check-empty/index.html b/library/font_awesome/src/3.2.1/icon/check-empty/index.html
deleted file mode 100644
index 5e151fcfa..000000000
--- a/library/font_awesome/src/3.2.1/icon/check-empty/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-check-empty: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-check-empty icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-check-empty icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-check-empty icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-check-empty icon-3"></i>&nbsp;&nbsp;
- <i class="icon-check-empty icon-2"></i>&nbsp;
- </span>
- <i class="icon-check-empty icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-check-empty
- <small>
- <i class="icon-check-empty"></i> &middot;
- Unicode: <span class="upper">f096</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-unchecked
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-check-empty"></i> icon-check-empty
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-check-empty&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-check-empty
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/check-minus/index.html b/library/font_awesome/src/3.2.1/icon/check-minus/index.html
deleted file mode 100644
index 9c07a46fc..000000000
--- a/library/font_awesome/src/3.2.1/icon/check-minus/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-check-minus: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-check-minus icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-check-minus icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-check-minus icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-check-minus icon-3"></i>&nbsp;&nbsp;
- <i class="icon-check-minus icon-2"></i>&nbsp;
- </span>
- <i class="icon-check-minus icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-check-minus
- <small>
- <i class="icon-check-minus"></i> &middot;
- Unicode: <span class="upper">f147</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-check-minus"></i> icon-check-minus
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-check-minus&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-check-minus
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/check-sign/index.html b/library/font_awesome/src/3.2.1/icon/check-sign/index.html
deleted file mode 100644
index e45f99aa5..000000000
--- a/library/font_awesome/src/3.2.1/icon/check-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-check-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-check-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-check-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-check-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-check-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-check-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-check-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-check-sign
- <small>
- <i class="icon-check-sign"></i> &middot;
- Unicode: <span class="upper">f14a</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-check-sign"></i> icon-check-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-check-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-check-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/check/index.html b/library/font_awesome/src/3.2.1/icon/check/index.html
deleted file mode 100644
index c9b5e8155..000000000
--- a/library/font_awesome/src/3.2.1/icon/check/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-check: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-check icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-check icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-check icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-check icon-3"></i>&nbsp;&nbsp;
- <i class="icon-check icon-2"></i>&nbsp;
- </span>
- <i class="icon-check icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-check
- <small>
- <i class="icon-check"></i> &middot;
- Unicode: <span class="upper">f046</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-check"></i> icon-check
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-check&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-check
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-down/index.html b/library/font_awesome/src/3.2.1/icon/chevron-down/index.html
deleted file mode 100644
index f95e5173c..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-down
- <small>
- <i class="icon-chevron-down"></i> &middot;
- Unicode: <span class="upper">f078</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-down"></i> icon-chevron-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-left/index.html b/library/font_awesome/src/3.2.1/icon/chevron-left/index.html
deleted file mode 100644
index 84a22cf0d..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-left
- <small>
- <i class="icon-chevron-left"></i> &middot;
- Unicode: <span class="upper">f053</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-left"></i> icon-chevron-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-right/index.html b/library/font_awesome/src/3.2.1/icon/chevron-right/index.html
deleted file mode 100644
index 558787287..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-right
- <small>
- <i class="icon-chevron-right"></i> &middot;
- Unicode: <span class="upper">f054</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-right"></i> icon-chevron-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-sign-down/index.html b/library/font_awesome/src/3.2.1/icon/chevron-sign-down/index.html
deleted file mode 100644
index dad0a7318..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-sign-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-sign-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-sign-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-sign-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-sign-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-sign-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-sign-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-sign-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-sign-down
- <small>
- <i class="icon-chevron-sign-down"></i> &middot;
- Unicode: <span class="upper">f13a</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-sign-down"></i> icon-chevron-sign-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-sign-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-sign-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-sign-left/index.html b/library/font_awesome/src/3.2.1/icon/chevron-sign-left/index.html
deleted file mode 100644
index d570f1a60..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-sign-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-sign-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-sign-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-sign-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-sign-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-sign-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-sign-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-sign-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-sign-left
- <small>
- <i class="icon-chevron-sign-left"></i> &middot;
- Unicode: <span class="upper">f137</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-sign-left"></i> icon-chevron-sign-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-sign-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-sign-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-sign-right/index.html b/library/font_awesome/src/3.2.1/icon/chevron-sign-right/index.html
deleted file mode 100644
index c31d24e63..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-sign-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-sign-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-sign-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-sign-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-sign-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-sign-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-sign-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-sign-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-sign-right
- <small>
- <i class="icon-chevron-sign-right"></i> &middot;
- Unicode: <span class="upper">f138</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-sign-right"></i> icon-chevron-sign-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-sign-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-sign-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-sign-up/index.html b/library/font_awesome/src/3.2.1/icon/chevron-sign-up/index.html
deleted file mode 100644
index 3f9d6d61c..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-sign-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-sign-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-sign-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-sign-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-sign-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-sign-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-sign-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-sign-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-sign-up
- <small>
- <i class="icon-chevron-sign-up"></i> &middot;
- Unicode: <span class="upper">f139</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-sign-up"></i> icon-chevron-sign-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-sign-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-sign-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/chevron-up/index.html b/library/font_awesome/src/3.2.1/icon/chevron-up/index.html
deleted file mode 100644
index c99d2e56c..000000000
--- a/library/font_awesome/src/3.2.1/icon/chevron-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-chevron-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-chevron-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-chevron-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-chevron-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-chevron-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-chevron-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-chevron-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-chevron-up
- <small>
- <i class="icon-chevron-up"></i> &middot;
- Unicode: <span class="upper">f077</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-chevron-up"></i> icon-chevron-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-chevron-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-chevron-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/circle-arrow-down/index.html b/library/font_awesome/src/3.2.1/icon/circle-arrow-down/index.html
deleted file mode 100644
index f4c8b7333..000000000
--- a/library/font_awesome/src/3.2.1/icon/circle-arrow-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-circle-arrow-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-circle-arrow-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-circle-arrow-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-circle-arrow-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-circle-arrow-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-circle-arrow-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-circle-arrow-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-circle-arrow-down
- <small>
- <i class="icon-circle-arrow-down"></i> &middot;
- Unicode: <span class="upper">f0ab</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-circle-arrow-down"></i> icon-circle-arrow-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle-arrow-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-circle-arrow-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/circle-arrow-left/index.html b/library/font_awesome/src/3.2.1/icon/circle-arrow-left/index.html
deleted file mode 100644
index 7b3e4f2e0..000000000
--- a/library/font_awesome/src/3.2.1/icon/circle-arrow-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-circle-arrow-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-circle-arrow-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-circle-arrow-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-circle-arrow-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-circle-arrow-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-circle-arrow-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-circle-arrow-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-circle-arrow-left
- <small>
- <i class="icon-circle-arrow-left"></i> &middot;
- Unicode: <span class="upper">f0a8</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-circle-arrow-left"></i> icon-circle-arrow-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle-arrow-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-circle-arrow-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/circle-arrow-right/index.html b/library/font_awesome/src/3.2.1/icon/circle-arrow-right/index.html
deleted file mode 100644
index e5af31e3b..000000000
--- a/library/font_awesome/src/3.2.1/icon/circle-arrow-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-circle-arrow-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-circle-arrow-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-circle-arrow-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-circle-arrow-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-circle-arrow-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-circle-arrow-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-circle-arrow-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-circle-arrow-right
- <small>
- <i class="icon-circle-arrow-right"></i> &middot;
- Unicode: <span class="upper">f0a9</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-circle-arrow-right"></i> icon-circle-arrow-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle-arrow-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-circle-arrow-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/circle-arrow-up/index.html b/library/font_awesome/src/3.2.1/icon/circle-arrow-up/index.html
deleted file mode 100644
index 037027392..000000000
--- a/library/font_awesome/src/3.2.1/icon/circle-arrow-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-circle-arrow-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-circle-arrow-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-circle-arrow-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-circle-arrow-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-circle-arrow-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-circle-arrow-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-circle-arrow-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-circle-arrow-up
- <small>
- <i class="icon-circle-arrow-up"></i> &middot;
- Unicode: <span class="upper">f0aa</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-circle-arrow-up"></i> icon-circle-arrow-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle-arrow-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-circle-arrow-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/circle-blank/index.html b/library/font_awesome/src/3.2.1/icon/circle-blank/index.html
deleted file mode 100644
index bb32df00d..000000000
--- a/library/font_awesome/src/3.2.1/icon/circle-blank/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-circle-blank: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-circle-blank icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-circle-blank icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-circle-blank icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-circle-blank icon-3"></i>&nbsp;&nbsp;
- <i class="icon-circle-blank icon-2"></i>&nbsp;
- </span>
- <i class="icon-circle-blank icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-circle-blank
- <small>
- <i class="icon-circle-blank"></i> &middot;
- Unicode: <span class="upper">f10c</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-circle-blank"></i> icon-circle-blank
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle-blank&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-circle-blank
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/circle/index.html b/library/font_awesome/src/3.2.1/icon/circle/index.html
deleted file mode 100644
index f8b8f320e..000000000
--- a/library/font_awesome/src/3.2.1/icon/circle/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-circle: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-circle icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-circle icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-circle icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-circle icon-3"></i>&nbsp;&nbsp;
- <i class="icon-circle icon-2"></i>&nbsp;
- </span>
- <i class="icon-circle icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-circle
- <small>
- <i class="icon-circle"></i> &middot;
- Unicode: <span class="upper">f111</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-circle"></i> icon-circle
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-circle&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-circle
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cloud-download/index.html b/library/font_awesome/src/3.2.1/icon/cloud-download/index.html
deleted file mode 100644
index 911d48df4..000000000
--- a/library/font_awesome/src/3.2.1/icon/cloud-download/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cloud-download: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cloud-download icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cloud-download icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cloud-download icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cloud-download icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cloud-download icon-2"></i>&nbsp;
- </span>
- <i class="icon-cloud-download icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cloud-download
- <small>
- <i class="icon-cloud-download"></i> &middot;
- Unicode: <span class="upper">f0ed</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cloud-download"></i> icon-cloud-download
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cloud-download&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cloud-download
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cloud-upload/index.html b/library/font_awesome/src/3.2.1/icon/cloud-upload/index.html
deleted file mode 100644
index f230dd256..000000000
--- a/library/font_awesome/src/3.2.1/icon/cloud-upload/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cloud-upload: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cloud-upload icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cloud-upload icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cloud-upload icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cloud-upload icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cloud-upload icon-2"></i>&nbsp;
- </span>
- <i class="icon-cloud-upload icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cloud-upload
- <small>
- <i class="icon-cloud-upload"></i> &middot;
- Unicode: <span class="upper">f0ee</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cloud-upload"></i> icon-cloud-upload
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cloud-upload&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cloud-upload
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cloud/index.html b/library/font_awesome/src/3.2.1/icon/cloud/index.html
deleted file mode 100644
index c5a752365..000000000
--- a/library/font_awesome/src/3.2.1/icon/cloud/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cloud: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cloud icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cloud icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cloud icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cloud icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cloud icon-2"></i>&nbsp;
- </span>
- <i class="icon-cloud icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cloud
- <small>
- <i class="icon-cloud"></i> &middot;
- Unicode: <span class="upper">f0c2</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cloud"></i> icon-cloud
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cloud&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cloud
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cny/index.html b/library/font_awesome/src/3.2.1/icon/cny/index.html
deleted file mode 100644
index 4fb1e0ab0..000000000
--- a/library/font_awesome/src/3.2.1/icon/cny/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cny: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cny icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cny icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cny icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cny icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cny icon-2"></i>&nbsp;
- </span>
- <i class="icon-cny icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cny
- <small>
- <i class="icon-cny"></i> &middot;
- Unicode: <span class="upper">f158</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- &middot; Aliases:
-
- icon-renminbi
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cny"></i> icon-cny
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cny&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cny
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/code-fork/index.html b/library/font_awesome/src/3.2.1/icon/code-fork/index.html
deleted file mode 100644
index 33ec52194..000000000
--- a/library/font_awesome/src/3.2.1/icon/code-fork/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-code-fork: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-code-fork icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-code-fork icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-code-fork icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-code-fork icon-3"></i>&nbsp;&nbsp;
- <i class="icon-code-fork icon-2"></i>&nbsp;
- </span>
- <i class="icon-code-fork icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-code-fork
- <small>
- <i class="icon-code-fork"></i> &middot;
- Unicode: <span class="upper">f126</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-code-fork"></i> icon-code-fork
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-code-fork&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-code-fork
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/code/index.html b/library/font_awesome/src/3.2.1/icon/code/index.html
deleted file mode 100644
index 74d45ef20..000000000
--- a/library/font_awesome/src/3.2.1/icon/code/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-code: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-code icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-code icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-code icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-code icon-3"></i>&nbsp;&nbsp;
- <i class="icon-code icon-2"></i>&nbsp;
- </span>
- <i class="icon-code icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-code
- <small>
- <i class="icon-code"></i> &middot;
- Unicode: <span class="upper">f121</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-code"></i> icon-code
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-code&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-code
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/coffee/index.html b/library/font_awesome/src/3.2.1/icon/coffee/index.html
deleted file mode 100644
index f77950d4a..000000000
--- a/library/font_awesome/src/3.2.1/icon/coffee/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-coffee: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-coffee icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-coffee icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-coffee icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-coffee icon-3"></i>&nbsp;&nbsp;
- <i class="icon-coffee icon-2"></i>&nbsp;
- </span>
- <i class="icon-coffee icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-coffee
- <small>
- <i class="icon-coffee"></i> &middot;
- Unicode: <span class="upper">f0f4</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-coffee"></i> icon-coffee
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-coffee&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-coffee
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cog/index.html b/library/font_awesome/src/3.2.1/icon/cog/index.html
deleted file mode 100644
index c0a67b27b..000000000
--- a/library/font_awesome/src/3.2.1/icon/cog/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cog: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cog icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cog icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cog icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cog icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cog icon-2"></i>&nbsp;
- </span>
- <i class="icon-cog icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cog
- <small>
- <i class="icon-cog"></i> &middot;
- Unicode: <span class="upper">f013</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-gear
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cog"></i> icon-cog
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cog&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cog
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cogs/index.html b/library/font_awesome/src/3.2.1/icon/cogs/index.html
deleted file mode 100644
index 83f009045..000000000
--- a/library/font_awesome/src/3.2.1/icon/cogs/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cogs: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cogs icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cogs icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cogs icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cogs icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cogs icon-2"></i>&nbsp;
- </span>
- <i class="icon-cogs icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cogs
- <small>
- <i class="icon-cogs"></i> &middot;
- Unicode: <span class="upper">f085</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-gears
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cogs"></i> icon-cogs
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cogs&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cogs
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/collapse-alt/index.html b/library/font_awesome/src/3.2.1/icon/collapse-alt/index.html
deleted file mode 100644
index 9d1caefbc..000000000
--- a/library/font_awesome/src/3.2.1/icon/collapse-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-collapse-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-collapse-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-collapse-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-collapse-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-collapse-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-collapse-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-collapse-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-collapse-alt
- <small>
- <i class="icon-collapse-alt"></i> &middot;
- Unicode: <span class="upper">f117</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-collapse-alt"></i> icon-collapse-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-collapse-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-collapse-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/collapse-top/index.html b/library/font_awesome/src/3.2.1/icon/collapse-top/index.html
deleted file mode 100644
index 02b59f726..000000000
--- a/library/font_awesome/src/3.2.1/icon/collapse-top/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-collapse-top: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-collapse-top icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-collapse-top icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-collapse-top icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-collapse-top icon-3"></i>&nbsp;&nbsp;
- <i class="icon-collapse-top icon-2"></i>&nbsp;
- </span>
- <i class="icon-collapse-top icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-collapse-top
- <small>
- <i class="icon-collapse-top"></i> &middot;
- Unicode: <span class="upper">f151</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-collapse-top"></i> icon-collapse-top
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-collapse-top&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-collapse-top
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/collapse/index.html b/library/font_awesome/src/3.2.1/icon/collapse/index.html
deleted file mode 100644
index 433cd5080..000000000
--- a/library/font_awesome/src/3.2.1/icon/collapse/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-collapse: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-collapse icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-collapse icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-collapse icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-collapse icon-3"></i>&nbsp;&nbsp;
- <i class="icon-collapse icon-2"></i>&nbsp;
- </span>
- <i class="icon-collapse icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-collapse
- <small>
- <i class="icon-collapse"></i> &middot;
- Unicode: <span class="upper">f150</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-collapse"></i> icon-collapse
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-collapse&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-collapse
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/columns/index.html b/library/font_awesome/src/3.2.1/icon/columns/index.html
deleted file mode 100644
index df91235d6..000000000
--- a/library/font_awesome/src/3.2.1/icon/columns/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-columns: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-columns icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-columns icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-columns icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-columns icon-3"></i>&nbsp;&nbsp;
- <i class="icon-columns icon-2"></i>&nbsp;
- </span>
- <i class="icon-columns icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-columns
- <small>
- <i class="icon-columns"></i> &middot;
- Unicode: <span class="upper">f0db</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-columns"></i> icon-columns
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-columns&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-columns
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/comment-alt/index.html b/library/font_awesome/src/3.2.1/icon/comment-alt/index.html
deleted file mode 100644
index dbfa3acde..000000000
--- a/library/font_awesome/src/3.2.1/icon/comment-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-comment-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-comment-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-comment-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-comment-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-comment-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-comment-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-comment-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-comment-alt
- <small>
- <i class="icon-comment-alt"></i> &middot;
- Unicode: <span class="upper">f0e5</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-comment-alt"></i> icon-comment-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-comment-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-comment-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/comment/index.html b/library/font_awesome/src/3.2.1/icon/comment/index.html
deleted file mode 100644
index ed6a4b694..000000000
--- a/library/font_awesome/src/3.2.1/icon/comment/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-comment: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-comment icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-comment icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-comment icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-comment icon-3"></i>&nbsp;&nbsp;
- <i class="icon-comment icon-2"></i>&nbsp;
- </span>
- <i class="icon-comment icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-comment
- <small>
- <i class="icon-comment"></i> &middot;
- Unicode: <span class="upper">f075</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-comment"></i> icon-comment
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-comment&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-comment
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/comments-alt/index.html b/library/font_awesome/src/3.2.1/icon/comments-alt/index.html
deleted file mode 100644
index cab838708..000000000
--- a/library/font_awesome/src/3.2.1/icon/comments-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-comments-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-comments-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-comments-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-comments-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-comments-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-comments-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-comments-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-comments-alt
- <small>
- <i class="icon-comments-alt"></i> &middot;
- Unicode: <span class="upper">f0e6</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-comments-alt"></i> icon-comments-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-comments-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-comments-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/comments/index.html b/library/font_awesome/src/3.2.1/icon/comments/index.html
deleted file mode 100644
index 0eab83a22..000000000
--- a/library/font_awesome/src/3.2.1/icon/comments/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-comments: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-comments icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-comments icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-comments icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-comments icon-3"></i>&nbsp;&nbsp;
- <i class="icon-comments icon-2"></i>&nbsp;
- </span>
- <i class="icon-comments icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-comments
- <small>
- <i class="icon-comments"></i> &middot;
- Unicode: <span class="upper">f086</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-comments"></i> icon-comments
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-comments&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-comments
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/compass/index.html b/library/font_awesome/src/3.2.1/icon/compass/index.html
deleted file mode 100644
index d8bbab107..000000000
--- a/library/font_awesome/src/3.2.1/icon/compass/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-compass: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-compass icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-compass icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-compass icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-compass icon-3"></i>&nbsp;&nbsp;
- <i class="icon-compass icon-2"></i>&nbsp;
- </span>
- <i class="icon-compass icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-compass
- <small>
- <i class="icon-compass"></i> &middot;
- Unicode: <span class="upper">f14e</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-compass"></i> icon-compass
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-compass&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-compass
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/copy/index.html b/library/font_awesome/src/3.2.1/icon/copy/index.html
deleted file mode 100644
index 5ee8486da..000000000
--- a/library/font_awesome/src/3.2.1/icon/copy/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-copy: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-copy icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-copy icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-copy icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-copy icon-3"></i>&nbsp;&nbsp;
- <i class="icon-copy icon-2"></i>&nbsp;
- </span>
- <i class="icon-copy icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-copy
- <small>
- <i class="icon-copy"></i> &middot;
- Unicode: <span class="upper">f0c5</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-copy"></i> icon-copy
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-copy&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-copy
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/credit-card/index.html b/library/font_awesome/src/3.2.1/icon/credit-card/index.html
deleted file mode 100644
index 7cf6e2e7b..000000000
--- a/library/font_awesome/src/3.2.1/icon/credit-card/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-credit-card: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-credit-card icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-credit-card icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-credit-card icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-credit-card icon-3"></i>&nbsp;&nbsp;
- <i class="icon-credit-card icon-2"></i>&nbsp;
- </span>
- <i class="icon-credit-card icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-credit-card
- <small>
- <i class="icon-credit-card"></i> &middot;
- Unicode: <span class="upper">f09d</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-credit-card"></i> icon-credit-card
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-credit-card&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-credit-card
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/crop/index.html b/library/font_awesome/src/3.2.1/icon/crop/index.html
deleted file mode 100644
index 5eadec8ca..000000000
--- a/library/font_awesome/src/3.2.1/icon/crop/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-crop: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-crop icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-crop icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-crop icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-crop icon-3"></i>&nbsp;&nbsp;
- <i class="icon-crop icon-2"></i>&nbsp;
- </span>
- <i class="icon-crop icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-crop
- <small>
- <i class="icon-crop"></i> &middot;
- Unicode: <span class="upper">f125</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-crop"></i> icon-crop
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-crop&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-crop
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/css3/index.html b/library/font_awesome/src/3.2.1/icon/css3/index.html
deleted file mode 100644
index 035a28aef..000000000
--- a/library/font_awesome/src/3.2.1/icon/css3/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-css3: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-css3 icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-css3 icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-css3 icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-css3 icon-3"></i>&nbsp;&nbsp;
- <i class="icon-css3 icon-2"></i>&nbsp;
- </span>
- <i class="icon-css3 icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-css3
- <small>
- <i class="icon-css3"></i> &middot;
- Unicode: <span class="upper">f13c</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-css3"></i> icon-css3
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-css3&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-css3
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/cut/index.html b/library/font_awesome/src/3.2.1/icon/cut/index.html
deleted file mode 100644
index fb927f0ca..000000000
--- a/library/font_awesome/src/3.2.1/icon/cut/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-cut: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-cut icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-cut icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-cut icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-cut icon-3"></i>&nbsp;&nbsp;
- <i class="icon-cut icon-2"></i>&nbsp;
- </span>
- <i class="icon-cut icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-cut
- <small>
- <i class="icon-cut"></i> &middot;
- Unicode: <span class="upper">f0c4</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-cut"></i> icon-cut
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-cut&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-cut
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/dashboard/index.html b/library/font_awesome/src/3.2.1/icon/dashboard/index.html
deleted file mode 100644
index 1755eb169..000000000
--- a/library/font_awesome/src/3.2.1/icon/dashboard/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-dashboard: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-dashboard icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-dashboard icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-dashboard icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-dashboard icon-3"></i>&nbsp;&nbsp;
- <i class="icon-dashboard icon-2"></i>&nbsp;
- </span>
- <i class="icon-dashboard icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-dashboard
- <small>
- <i class="icon-dashboard"></i> &middot;
- Unicode: <span class="upper">f0e4</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-dashboard"></i> icon-dashboard
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-dashboard&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-dashboard
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/desktop/index.html b/library/font_awesome/src/3.2.1/icon/desktop/index.html
deleted file mode 100644
index 151055e52..000000000
--- a/library/font_awesome/src/3.2.1/icon/desktop/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-desktop: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-desktop icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-desktop icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-desktop icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-desktop icon-3"></i>&nbsp;&nbsp;
- <i class="icon-desktop icon-2"></i>&nbsp;
- </span>
- <i class="icon-desktop icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-desktop
- <small>
- <i class="icon-desktop"></i> &middot;
- Unicode: <span class="upper">f108</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-desktop"></i> icon-desktop
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-desktop&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-desktop
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/double-angle-down/index.html b/library/font_awesome/src/3.2.1/icon/double-angle-down/index.html
deleted file mode 100644
index 350dc343f..000000000
--- a/library/font_awesome/src/3.2.1/icon/double-angle-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-double-angle-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-double-angle-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-double-angle-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-double-angle-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-double-angle-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-double-angle-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-double-angle-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-double-angle-down
- <small>
- <i class="icon-double-angle-down"></i> &middot;
- Unicode: <span class="upper">f103</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-double-angle-down"></i> icon-double-angle-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-double-angle-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-double-angle-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/double-angle-left/index.html b/library/font_awesome/src/3.2.1/icon/double-angle-left/index.html
deleted file mode 100644
index 10d5bc0b7..000000000
--- a/library/font_awesome/src/3.2.1/icon/double-angle-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-double-angle-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-double-angle-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-double-angle-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-double-angle-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-double-angle-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-double-angle-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-double-angle-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-double-angle-left
- <small>
- <i class="icon-double-angle-left"></i> &middot;
- Unicode: <span class="upper">f100</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-double-angle-left"></i> icon-double-angle-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-double-angle-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-double-angle-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/double-angle-right/index.html b/library/font_awesome/src/3.2.1/icon/double-angle-right/index.html
deleted file mode 100644
index 55dd56ff2..000000000
--- a/library/font_awesome/src/3.2.1/icon/double-angle-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-double-angle-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-double-angle-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-double-angle-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-double-angle-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-double-angle-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-double-angle-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-double-angle-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-double-angle-right
- <small>
- <i class="icon-double-angle-right"></i> &middot;
- Unicode: <span class="upper">f101</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-double-angle-right"></i> icon-double-angle-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-double-angle-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-double-angle-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/double-angle-up/index.html b/library/font_awesome/src/3.2.1/icon/double-angle-up/index.html
deleted file mode 100644
index 4e4b9c3f2..000000000
--- a/library/font_awesome/src/3.2.1/icon/double-angle-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-double-angle-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-double-angle-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-double-angle-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-double-angle-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-double-angle-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-double-angle-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-double-angle-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-double-angle-up
- <small>
- <i class="icon-double-angle-up"></i> &middot;
- Unicode: <span class="upper">f102</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-double-angle-up"></i> icon-double-angle-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-double-angle-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-double-angle-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/download-alt/index.html b/library/font_awesome/src/3.2.1/icon/download-alt/index.html
deleted file mode 100644
index fee31dc01..000000000
--- a/library/font_awesome/src/3.2.1/icon/download-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-download-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-download-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-download-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-download-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-download-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-download-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-download-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-download-alt
- <small>
- <i class="icon-download-alt"></i> &middot;
- Unicode: <span class="upper">f019</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-download-alt"></i> icon-download-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-download-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-download-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/download/index.html b/library/font_awesome/src/3.2.1/icon/download/index.html
deleted file mode 100644
index cbcd62c24..000000000
--- a/library/font_awesome/src/3.2.1/icon/download/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-download: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-download icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-download icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-download icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-download icon-3"></i>&nbsp;&nbsp;
- <i class="icon-download icon-2"></i>&nbsp;
- </span>
- <i class="icon-download icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-download
- <small>
- <i class="icon-download"></i> &middot;
- Unicode: <span class="upper">f01a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-download"></i> icon-download
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-download&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-download
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/dribbble/index.html b/library/font_awesome/src/3.2.1/icon/dribbble/index.html
deleted file mode 100644
index 45e123712..000000000
--- a/library/font_awesome/src/3.2.1/icon/dribbble/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-dribbble: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-dribbble icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-dribbble icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-dribbble icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-dribbble icon-3"></i>&nbsp;&nbsp;
- <i class="icon-dribbble icon-2"></i>&nbsp;
- </span>
- <i class="icon-dribbble icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-dribbble
- <small>
- <i class="icon-dribbble"></i> &middot;
- Unicode: <span class="upper">f17d</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-dribbble"></i> icon-dribbble
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-dribbble&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-dribbble
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/dropbox/index.html b/library/font_awesome/src/3.2.1/icon/dropbox/index.html
deleted file mode 100644
index a4e21d350..000000000
--- a/library/font_awesome/src/3.2.1/icon/dropbox/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-dropbox: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-dropbox icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-dropbox icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-dropbox icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-dropbox icon-3"></i>&nbsp;&nbsp;
- <i class="icon-dropbox icon-2"></i>&nbsp;
- </span>
- <i class="icon-dropbox icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-dropbox
- <small>
- <i class="icon-dropbox"></i> &middot;
- Unicode: <span class="upper">f16b</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-dropbox"></i> icon-dropbox
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-dropbox&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-dropbox
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/edit-sign/index.html b/library/font_awesome/src/3.2.1/icon/edit-sign/index.html
deleted file mode 100644
index 174916ce3..000000000
--- a/library/font_awesome/src/3.2.1/icon/edit-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-edit-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-edit-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-edit-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-edit-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-edit-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-edit-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-edit-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-edit-sign
- <small>
- <i class="icon-edit-sign"></i> &middot;
- Unicode: <span class="upper">f14b</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-edit-sign"></i> icon-edit-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-edit-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-edit-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/edit/index.html b/library/font_awesome/src/3.2.1/icon/edit/index.html
deleted file mode 100644
index 2d0bde6c0..000000000
--- a/library/font_awesome/src/3.2.1/icon/edit/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-edit: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-edit icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-edit icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-edit icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-edit icon-3"></i>&nbsp;&nbsp;
- <i class="icon-edit icon-2"></i>&nbsp;
- </span>
- <i class="icon-edit icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-edit
- <small>
- <i class="icon-edit"></i> &middot;
- Unicode: <span class="upper">f044</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-edit"></i> icon-edit
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-edit&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-edit
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/eject/index.html b/library/font_awesome/src/3.2.1/icon/eject/index.html
deleted file mode 100644
index 6141c5b9f..000000000
--- a/library/font_awesome/src/3.2.1/icon/eject/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-eject: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-eject icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-eject icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-eject icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-eject icon-3"></i>&nbsp;&nbsp;
- <i class="icon-eject icon-2"></i>&nbsp;
- </span>
- <i class="icon-eject icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-eject
- <small>
- <i class="icon-eject"></i> &middot;
- Unicode: <span class="upper">f052</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-eject"></i> icon-eject
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-eject&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-eject
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ellipsis-horizontal/index.html b/library/font_awesome/src/3.2.1/icon/ellipsis-horizontal/index.html
deleted file mode 100644
index 6afa2c933..000000000
--- a/library/font_awesome/src/3.2.1/icon/ellipsis-horizontal/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ellipsis-horizontal: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ellipsis-horizontal icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ellipsis-horizontal icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ellipsis-horizontal icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ellipsis-horizontal icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ellipsis-horizontal icon-2"></i>&nbsp;
- </span>
- <i class="icon-ellipsis-horizontal icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ellipsis-horizontal
- <small>
- <i class="icon-ellipsis-horizontal"></i> &middot;
- Unicode: <span class="upper">f141</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ellipsis-horizontal"></i> icon-ellipsis-horizontal
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ellipsis-horizontal&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ellipsis-horizontal
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ellipsis-vertical/index.html b/library/font_awesome/src/3.2.1/icon/ellipsis-vertical/index.html
deleted file mode 100644
index f88b29b5c..000000000
--- a/library/font_awesome/src/3.2.1/icon/ellipsis-vertical/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ellipsis-vertical: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ellipsis-vertical icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ellipsis-vertical icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ellipsis-vertical icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ellipsis-vertical icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ellipsis-vertical icon-2"></i>&nbsp;
- </span>
- <i class="icon-ellipsis-vertical icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ellipsis-vertical
- <small>
- <i class="icon-ellipsis-vertical"></i> &middot;
- Unicode: <span class="upper">f142</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ellipsis-vertical"></i> icon-ellipsis-vertical
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ellipsis-vertical&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ellipsis-vertical
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/envelope-alt/index.html b/library/font_awesome/src/3.2.1/icon/envelope-alt/index.html
deleted file mode 100644
index 12b46a49d..000000000
--- a/library/font_awesome/src/3.2.1/icon/envelope-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-envelope-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-envelope-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-envelope-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-envelope-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-envelope-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-envelope-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-envelope-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-envelope-alt
- <small>
- <i class="icon-envelope-alt"></i> &middot;
- Unicode: <span class="upper">f003</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-envelope-alt"></i> icon-envelope-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-envelope-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-envelope-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/envelope/index.html b/library/font_awesome/src/3.2.1/icon/envelope/index.html
deleted file mode 100644
index 409ab37b7..000000000
--- a/library/font_awesome/src/3.2.1/icon/envelope/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-envelope: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-envelope icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-envelope icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-envelope icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-envelope icon-3"></i>&nbsp;&nbsp;
- <i class="icon-envelope icon-2"></i>&nbsp;
- </span>
- <i class="icon-envelope icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-envelope
- <small>
- <i class="icon-envelope"></i> &middot;
- Unicode: <span class="upper">f0e0</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-envelope"></i> icon-envelope
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-envelope&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-envelope
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/eraser/index.html b/library/font_awesome/src/3.2.1/icon/eraser/index.html
deleted file mode 100644
index 0850b60c8..000000000
--- a/library/font_awesome/src/3.2.1/icon/eraser/index.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-eraser: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-eraser icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-eraser icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-eraser icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-eraser icon-3"></i>&nbsp;&nbsp;
- <i class="icon-eraser icon-2"></i>&nbsp;
- </span>
- <i class="icon-eraser icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-eraser
- <small>
- <i class="icon-eraser"></i> &middot;
- Unicode: <span class="upper">f12d</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Text Editor Icons,
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-eraser"></i> icon-eraser
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-eraser&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-eraser
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/eur/index.html b/library/font_awesome/src/3.2.1/icon/eur/index.html
deleted file mode 100644
index b3065ca3b..000000000
--- a/library/font_awesome/src/3.2.1/icon/eur/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-eur: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-eur icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-eur icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-eur icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-eur icon-3"></i>&nbsp;&nbsp;
- <i class="icon-eur icon-2"></i>&nbsp;
- </span>
- <i class="icon-eur icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-eur
- <small>
- <i class="icon-eur"></i> &middot;
- Unicode: <span class="upper">f153</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- &middot; Aliases:
-
- icon-euro
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-eur"></i> icon-eur
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-eur&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-eur
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/exchange/index.html b/library/font_awesome/src/3.2.1/icon/exchange/index.html
deleted file mode 100644
index aa1ec82be..000000000
--- a/library/font_awesome/src/3.2.1/icon/exchange/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-exchange: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-exchange icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-exchange icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-exchange icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-exchange icon-3"></i>&nbsp;&nbsp;
- <i class="icon-exchange icon-2"></i>&nbsp;
- </span>
- <i class="icon-exchange icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-exchange
- <small>
- <i class="icon-exchange"></i> &middot;
- Unicode: <span class="upper">f0ec</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-exchange"></i> icon-exchange
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-exchange&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-exchange
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/exclamation-sign/index.html b/library/font_awesome/src/3.2.1/icon/exclamation-sign/index.html
deleted file mode 100644
index 7be7e8352..000000000
--- a/library/font_awesome/src/3.2.1/icon/exclamation-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-exclamation-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-exclamation-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-exclamation-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-exclamation-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-exclamation-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-exclamation-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-exclamation-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-exclamation-sign
- <small>
- <i class="icon-exclamation-sign"></i> &middot;
- Unicode: <span class="upper">f06a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-exclamation-sign"></i> icon-exclamation-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-exclamation-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-exclamation-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/exclamation/index.html b/library/font_awesome/src/3.2.1/icon/exclamation/index.html
deleted file mode 100644
index 0a0c44077..000000000
--- a/library/font_awesome/src/3.2.1/icon/exclamation/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-exclamation: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-exclamation icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-exclamation icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-exclamation icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-exclamation icon-3"></i>&nbsp;&nbsp;
- <i class="icon-exclamation icon-2"></i>&nbsp;
- </span>
- <i class="icon-exclamation icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-exclamation
- <small>
- <i class="icon-exclamation"></i> &middot;
- Unicode: <span class="upper">f12a</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-exclamation"></i> icon-exclamation
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-exclamation&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-exclamation
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/expand-alt/index.html b/library/font_awesome/src/3.2.1/icon/expand-alt/index.html
deleted file mode 100644
index 4ec46254b..000000000
--- a/library/font_awesome/src/3.2.1/icon/expand-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-expand-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-expand-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-expand-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-expand-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-expand-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-expand-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-expand-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-expand-alt
- <small>
- <i class="icon-expand-alt"></i> &middot;
- Unicode: <span class="upper">f116</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-expand-alt"></i> icon-expand-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-expand-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-expand-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/expand/index.html b/library/font_awesome/src/3.2.1/icon/expand/index.html
deleted file mode 100644
index 267d332ad..000000000
--- a/library/font_awesome/src/3.2.1/icon/expand/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-expand: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-expand icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-expand icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-expand icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-expand icon-3"></i>&nbsp;&nbsp;
- <i class="icon-expand icon-2"></i>&nbsp;
- </span>
- <i class="icon-expand icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-expand
- <small>
- <i class="icon-expand"></i> &middot;
- Unicode: <span class="upper">f152</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-expand"></i> icon-expand
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-expand&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-expand
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/external-link-sign/index.html b/library/font_awesome/src/3.2.1/icon/external-link-sign/index.html
deleted file mode 100644
index 102cb2d0b..000000000
--- a/library/font_awesome/src/3.2.1/icon/external-link-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-external-link-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-external-link-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-external-link-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-external-link-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-external-link-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-external-link-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-external-link-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-external-link-sign
- <small>
- <i class="icon-external-link-sign"></i> &middot;
- Unicode: <span class="upper">f14c</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-external-link-sign"></i> icon-external-link-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-external-link-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-external-link-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/external-link/index.html b/library/font_awesome/src/3.2.1/icon/external-link/index.html
deleted file mode 100644
index b00cea66e..000000000
--- a/library/font_awesome/src/3.2.1/icon/external-link/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-external-link: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-external-link icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-external-link icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-external-link icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-external-link icon-3"></i>&nbsp;&nbsp;
- <i class="icon-external-link icon-2"></i>&nbsp;
- </span>
- <i class="icon-external-link icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-external-link
- <small>
- <i class="icon-external-link"></i> &middot;
- Unicode: <span class="upper">f08e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-external-link"></i> icon-external-link
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-external-link&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-external-link
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/eye-close/index.html b/library/font_awesome/src/3.2.1/icon/eye-close/index.html
deleted file mode 100644
index 2f09dfd67..000000000
--- a/library/font_awesome/src/3.2.1/icon/eye-close/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-eye-close: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-eye-close icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-eye-close icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-eye-close icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-eye-close icon-3"></i>&nbsp;&nbsp;
- <i class="icon-eye-close icon-2"></i>&nbsp;
- </span>
- <i class="icon-eye-close icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-eye-close
- <small>
- <i class="icon-eye-close"></i> &middot;
- Unicode: <span class="upper">f070</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-eye-close"></i> icon-eye-close
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-eye-close&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-eye-close
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/eye-open/index.html b/library/font_awesome/src/3.2.1/icon/eye-open/index.html
deleted file mode 100644
index cee72d473..000000000
--- a/library/font_awesome/src/3.2.1/icon/eye-open/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-eye-open: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-eye-open icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-eye-open icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-eye-open icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-eye-open icon-3"></i>&nbsp;&nbsp;
- <i class="icon-eye-open icon-2"></i>&nbsp;
- </span>
- <i class="icon-eye-open icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-eye-open
- <small>
- <i class="icon-eye-open"></i> &middot;
- Unicode: <span class="upper">f06e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-eye-open"></i> icon-eye-open
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-eye-open&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-eye-open
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/facebook-sign/index.html b/library/font_awesome/src/3.2.1/icon/facebook-sign/index.html
deleted file mode 100644
index ce197d249..000000000
--- a/library/font_awesome/src/3.2.1/icon/facebook-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-facebook-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-facebook-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-facebook-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-facebook-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-facebook-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-facebook-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-facebook-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-facebook-sign
- <small>
- <i class="icon-facebook-sign"></i> &middot;
- Unicode: <span class="upper">f082</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-facebook-sign"></i> icon-facebook-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-facebook-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-facebook-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/facebook/index.html b/library/font_awesome/src/3.2.1/icon/facebook/index.html
deleted file mode 100644
index 8df80427d..000000000
--- a/library/font_awesome/src/3.2.1/icon/facebook/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-facebook: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-facebook icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-facebook icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-facebook icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-facebook icon-3"></i>&nbsp;&nbsp;
- <i class="icon-facebook icon-2"></i>&nbsp;
- </span>
- <i class="icon-facebook icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-facebook
- <small>
- <i class="icon-facebook"></i> &middot;
- Unicode: <span class="upper">f09a</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-facebook"></i> icon-facebook
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-facebook&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-facebook
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/facetime-video/index.html b/library/font_awesome/src/3.2.1/icon/facetime-video/index.html
deleted file mode 100644
index 27a6d4c7e..000000000
--- a/library/font_awesome/src/3.2.1/icon/facetime-video/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-facetime-video: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-facetime-video icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-facetime-video icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-facetime-video icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-facetime-video icon-3"></i>&nbsp;&nbsp;
- <i class="icon-facetime-video icon-2"></i>&nbsp;
- </span>
- <i class="icon-facetime-video icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-facetime-video
- <small>
- <i class="icon-facetime-video"></i> &middot;
- Unicode: <span class="upper">f03d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-facetime-video"></i> icon-facetime-video
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-facetime-video&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-facetime-video
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/fast-backward/index.html b/library/font_awesome/src/3.2.1/icon/fast-backward/index.html
deleted file mode 100644
index 5def1fdaf..000000000
--- a/library/font_awesome/src/3.2.1/icon/fast-backward/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-fast-backward: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-fast-backward icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-fast-backward icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-fast-backward icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-fast-backward icon-3"></i>&nbsp;&nbsp;
- <i class="icon-fast-backward icon-2"></i>&nbsp;
- </span>
- <i class="icon-fast-backward icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-fast-backward
- <small>
- <i class="icon-fast-backward"></i> &middot;
- Unicode: <span class="upper">f049</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-fast-backward"></i> icon-fast-backward
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fast-backward&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-fast-backward
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/fast-forward/index.html b/library/font_awesome/src/3.2.1/icon/fast-forward/index.html
deleted file mode 100644
index 840d1a692..000000000
--- a/library/font_awesome/src/3.2.1/icon/fast-forward/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-fast-forward: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-fast-forward icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-fast-forward icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-fast-forward icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-fast-forward icon-3"></i>&nbsp;&nbsp;
- <i class="icon-fast-forward icon-2"></i>&nbsp;
- </span>
- <i class="icon-fast-forward icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-fast-forward
- <small>
- <i class="icon-fast-forward"></i> &middot;
- Unicode: <span class="upper">f050</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-fast-forward"></i> icon-fast-forward
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fast-forward&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-fast-forward
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/female/index.html b/library/font_awesome/src/3.2.1/icon/female/index.html
deleted file mode 100644
index d3c12d844..000000000
--- a/library/font_awesome/src/3.2.1/icon/female/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-female: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-female icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-female icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-female icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-female icon-3"></i>&nbsp;&nbsp;
- <i class="icon-female icon-2"></i>&nbsp;
- </span>
- <i class="icon-female icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-female
- <small>
- <i class="icon-female"></i> &middot;
- Unicode: <span class="upper">f182</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-female"></i> icon-female
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-female&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-female
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/fighter-jet/index.html b/library/font_awesome/src/3.2.1/icon/fighter-jet/index.html
deleted file mode 100644
index d53371d59..000000000
--- a/library/font_awesome/src/3.2.1/icon/fighter-jet/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-fighter-jet: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-fighter-jet icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-fighter-jet icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-fighter-jet icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-fighter-jet icon-3"></i>&nbsp;&nbsp;
- <i class="icon-fighter-jet icon-2"></i>&nbsp;
- </span>
- <i class="icon-fighter-jet icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-fighter-jet
- <small>
- <i class="icon-fighter-jet"></i> &middot;
- Unicode: <span class="upper">f0fb</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-fighter-jet"></i> icon-fighter-jet
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fighter-jet&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-fighter-jet
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/file-alt/index.html b/library/font_awesome/src/3.2.1/icon/file-alt/index.html
deleted file mode 100644
index f9ce0deb6..000000000
--- a/library/font_awesome/src/3.2.1/icon/file-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-file-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-file-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-file-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-file-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-file-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-file-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-file-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-file-alt
- <small>
- <i class="icon-file-alt"></i> &middot;
- Unicode: <span class="upper">f016</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-file-alt"></i> icon-file-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-file-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-file-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/file-text-alt/index.html b/library/font_awesome/src/3.2.1/icon/file-text-alt/index.html
deleted file mode 100644
index da1a9850a..000000000
--- a/library/font_awesome/src/3.2.1/icon/file-text-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-file-text-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-file-text-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-file-text-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-file-text-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-file-text-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-file-text-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-file-text-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-file-text-alt
- <small>
- <i class="icon-file-text-alt"></i> &middot;
- Unicode: <span class="upper">f0f6</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-file-text-alt"></i> icon-file-text-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-file-text-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-file-text-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/file-text/index.html b/library/font_awesome/src/3.2.1/icon/file-text/index.html
deleted file mode 100644
index b2dd0fed1..000000000
--- a/library/font_awesome/src/3.2.1/icon/file-text/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-file-text: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-file-text icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-file-text icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-file-text icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-file-text icon-3"></i>&nbsp;&nbsp;
- <i class="icon-file-text icon-2"></i>&nbsp;
- </span>
- <i class="icon-file-text icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-file-text
- <small>
- <i class="icon-file-text"></i> &middot;
- Unicode: <span class="upper">f15c</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-file-text"></i> icon-file-text
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-file-text&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-file-text
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/file/index.html b/library/font_awesome/src/3.2.1/icon/file/index.html
deleted file mode 100644
index d620d317e..000000000
--- a/library/font_awesome/src/3.2.1/icon/file/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-file: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-file icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-file icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-file icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-file icon-3"></i>&nbsp;&nbsp;
- <i class="icon-file icon-2"></i>&nbsp;
- </span>
- <i class="icon-file icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-file
- <small>
- <i class="icon-file"></i> &middot;
- Unicode: <span class="upper">f15b</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-file"></i> icon-file
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-file&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-file
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/film/index.html b/library/font_awesome/src/3.2.1/icon/film/index.html
deleted file mode 100644
index b758a4b7a..000000000
--- a/library/font_awesome/src/3.2.1/icon/film/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-film: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-film icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-film icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-film icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-film icon-3"></i>&nbsp;&nbsp;
- <i class="icon-film icon-2"></i>&nbsp;
- </span>
- <i class="icon-film icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-film
- <small>
- <i class="icon-film"></i> &middot;
- Unicode: <span class="upper">f008</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-film"></i> icon-film
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-film&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-film
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/filter/index.html b/library/font_awesome/src/3.2.1/icon/filter/index.html
deleted file mode 100644
index 665252ebf..000000000
--- a/library/font_awesome/src/3.2.1/icon/filter/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-filter: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-filter icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-filter icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-filter icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-filter icon-3"></i>&nbsp;&nbsp;
- <i class="icon-filter icon-2"></i>&nbsp;
- </span>
- <i class="icon-filter icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-filter
- <small>
- <i class="icon-filter"></i> &middot;
- Unicode: <span class="upper">f0b0</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-filter"></i> icon-filter
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-filter&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-filter
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/fire-extinguisher/index.html b/library/font_awesome/src/3.2.1/icon/fire-extinguisher/index.html
deleted file mode 100644
index 45211a6c9..000000000
--- a/library/font_awesome/src/3.2.1/icon/fire-extinguisher/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-fire-extinguisher: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-fire-extinguisher icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-fire-extinguisher icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-fire-extinguisher icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-fire-extinguisher icon-3"></i>&nbsp;&nbsp;
- <i class="icon-fire-extinguisher icon-2"></i>&nbsp;
- </span>
- <i class="icon-fire-extinguisher icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-fire-extinguisher
- <small>
- <i class="icon-fire-extinguisher"></i> &middot;
- Unicode: <span class="upper">f134</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-fire-extinguisher"></i> icon-fire-extinguisher
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fire-extinguisher&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-fire-extinguisher
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/fire/index.html b/library/font_awesome/src/3.2.1/icon/fire/index.html
deleted file mode 100644
index 882a4dee1..000000000
--- a/library/font_awesome/src/3.2.1/icon/fire/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-fire: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-fire icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-fire icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-fire icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-fire icon-3"></i>&nbsp;&nbsp;
- <i class="icon-fire icon-2"></i>&nbsp;
- </span>
- <i class="icon-fire icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-fire
- <small>
- <i class="icon-fire"></i> &middot;
- Unicode: <span class="upper">f06d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-fire"></i> icon-fire
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fire&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-fire
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/flag-alt/index.html b/library/font_awesome/src/3.2.1/icon/flag-alt/index.html
deleted file mode 100644
index 839d0c32b..000000000
--- a/library/font_awesome/src/3.2.1/icon/flag-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-flag-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-flag-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-flag-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-flag-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-flag-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-flag-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-flag-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-flag-alt
- <small>
- <i class="icon-flag-alt"></i> &middot;
- Unicode: <span class="upper">f11d</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-flag-alt"></i> icon-flag-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flag-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-flag-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/flag-checkered/index.html b/library/font_awesome/src/3.2.1/icon/flag-checkered/index.html
deleted file mode 100644
index 8ec4d2150..000000000
--- a/library/font_awesome/src/3.2.1/icon/flag-checkered/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-flag-checkered: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-flag-checkered icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-flag-checkered icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-flag-checkered icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-flag-checkered icon-3"></i>&nbsp;&nbsp;
- <i class="icon-flag-checkered icon-2"></i>&nbsp;
- </span>
- <i class="icon-flag-checkered icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-flag-checkered
- <small>
- <i class="icon-flag-checkered"></i> &middot;
- Unicode: <span class="upper">f11e</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-flag-checkered"></i> icon-flag-checkered
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flag-checkered&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-flag-checkered
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/flag/index.html b/library/font_awesome/src/3.2.1/icon/flag/index.html
deleted file mode 100644
index f3911091f..000000000
--- a/library/font_awesome/src/3.2.1/icon/flag/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-flag: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-flag icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-flag icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-flag icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-flag icon-3"></i>&nbsp;&nbsp;
- <i class="icon-flag icon-2"></i>&nbsp;
- </span>
- <i class="icon-flag icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-flag
- <small>
- <i class="icon-flag"></i> &middot;
- Unicode: <span class="upper">f024</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-flag"></i> icon-flag
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flag&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-flag
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/flickr/index.html b/library/font_awesome/src/3.2.1/icon/flickr/index.html
deleted file mode 100644
index 87092685d..000000000
--- a/library/font_awesome/src/3.2.1/icon/flickr/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-flickr: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-flickr icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-flickr icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-flickr icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-flickr icon-3"></i>&nbsp;&nbsp;
- <i class="icon-flickr icon-2"></i>&nbsp;
- </span>
- <i class="icon-flickr icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-flickr
- <small>
- <i class="icon-flickr"></i> &middot;
- Unicode: <span class="upper">f16e</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-flickr"></i> icon-flickr
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-flickr&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-flickr
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/folder-close-alt/index.html b/library/font_awesome/src/3.2.1/icon/folder-close-alt/index.html
deleted file mode 100644
index 7856d6583..000000000
--- a/library/font_awesome/src/3.2.1/icon/folder-close-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-folder-close-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-folder-close-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-folder-close-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-folder-close-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-folder-close-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-folder-close-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-folder-close-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-folder-close-alt
- <small>
- <i class="icon-folder-close-alt"></i> &middot;
- Unicode: <span class="upper">f114</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-folder-close-alt"></i> icon-folder-close-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-folder-close-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-folder-close-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/folder-close/index.html b/library/font_awesome/src/3.2.1/icon/folder-close/index.html
deleted file mode 100644
index 54613825b..000000000
--- a/library/font_awesome/src/3.2.1/icon/folder-close/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-folder-close: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-folder-close icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-folder-close icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-folder-close icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-folder-close icon-3"></i>&nbsp;&nbsp;
- <i class="icon-folder-close icon-2"></i>&nbsp;
- </span>
- <i class="icon-folder-close icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-folder-close
- <small>
- <i class="icon-folder-close"></i> &middot;
- Unicode: <span class="upper">f07b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-folder-close"></i> icon-folder-close
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-folder-close&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-folder-close
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/folder-open-alt/index.html b/library/font_awesome/src/3.2.1/icon/folder-open-alt/index.html
deleted file mode 100644
index 6af09bb8c..000000000
--- a/library/font_awesome/src/3.2.1/icon/folder-open-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-folder-open-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-folder-open-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-folder-open-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-folder-open-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-folder-open-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-folder-open-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-folder-open-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-folder-open-alt
- <small>
- <i class="icon-folder-open-alt"></i> &middot;
- Unicode: <span class="upper">f115</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-folder-open-alt"></i> icon-folder-open-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-folder-open-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-folder-open-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/folder-open/index.html b/library/font_awesome/src/3.2.1/icon/folder-open/index.html
deleted file mode 100644
index 7c97b1724..000000000
--- a/library/font_awesome/src/3.2.1/icon/folder-open/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-folder-open: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-folder-open icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-folder-open icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-folder-open icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-folder-open icon-3"></i>&nbsp;&nbsp;
- <i class="icon-folder-open icon-2"></i>&nbsp;
- </span>
- <i class="icon-folder-open icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-folder-open
- <small>
- <i class="icon-folder-open"></i> &middot;
- Unicode: <span class="upper">f07c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-folder-open"></i> icon-folder-open
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-folder-open&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-folder-open
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/font/index.html b/library/font_awesome/src/3.2.1/icon/font/index.html
deleted file mode 100644
index 9a5f43953..000000000
--- a/library/font_awesome/src/3.2.1/icon/font/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-font: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-font icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-font icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-font icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-font icon-3"></i>&nbsp;&nbsp;
- <i class="icon-font icon-2"></i>&nbsp;
- </span>
- <i class="icon-font icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-font
- <small>
- <i class="icon-font"></i> &middot;
- Unicode: <span class="upper">f031</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-font"></i> icon-font
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-font&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-font
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/food/index.html b/library/font_awesome/src/3.2.1/icon/food/index.html
deleted file mode 100644
index c455da4e2..000000000
--- a/library/font_awesome/src/3.2.1/icon/food/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-food: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-food icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-food icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-food icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-food icon-3"></i>&nbsp;&nbsp;
- <i class="icon-food icon-2"></i>&nbsp;
- </span>
- <i class="icon-food icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-food
- <small>
- <i class="icon-food"></i> &middot;
- Unicode: <span class="upper">f0f5</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-food"></i> icon-food
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-food&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-food
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/forward/index.html b/library/font_awesome/src/3.2.1/icon/forward/index.html
deleted file mode 100644
index cae1db43c..000000000
--- a/library/font_awesome/src/3.2.1/icon/forward/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-forward: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-forward icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-forward icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-forward icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-forward icon-3"></i>&nbsp;&nbsp;
- <i class="icon-forward icon-2"></i>&nbsp;
- </span>
- <i class="icon-forward icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-forward
- <small>
- <i class="icon-forward"></i> &middot;
- Unicode: <span class="upper">f04e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-forward"></i> icon-forward
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-forward&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-forward
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/foursquare/index.html b/library/font_awesome/src/3.2.1/icon/foursquare/index.html
deleted file mode 100644
index a7c0e2e0d..000000000
--- a/library/font_awesome/src/3.2.1/icon/foursquare/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-foursquare: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-foursquare icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-foursquare icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-foursquare icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-foursquare icon-3"></i>&nbsp;&nbsp;
- <i class="icon-foursquare icon-2"></i>&nbsp;
- </span>
- <i class="icon-foursquare icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-foursquare
- <small>
- <i class="icon-foursquare"></i> &middot;
- Unicode: <span class="upper">f180</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-foursquare"></i> icon-foursquare
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-foursquare&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-foursquare
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/frown/index.html b/library/font_awesome/src/3.2.1/icon/frown/index.html
deleted file mode 100644
index 9fa1c4032..000000000
--- a/library/font_awesome/src/3.2.1/icon/frown/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-frown: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-frown icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-frown icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-frown icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-frown icon-3"></i>&nbsp;&nbsp;
- <i class="icon-frown icon-2"></i>&nbsp;
- </span>
- <i class="icon-frown icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-frown
- <small>
- <i class="icon-frown"></i> &middot;
- Unicode: <span class="upper">f119</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-frown"></i> icon-frown
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-frown&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-frown
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/fullscreen/index.html b/library/font_awesome/src/3.2.1/icon/fullscreen/index.html
deleted file mode 100644
index c8dc296d4..000000000
--- a/library/font_awesome/src/3.2.1/icon/fullscreen/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-fullscreen: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-fullscreen icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-fullscreen icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-fullscreen icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-fullscreen icon-3"></i>&nbsp;&nbsp;
- <i class="icon-fullscreen icon-2"></i>&nbsp;
- </span>
- <i class="icon-fullscreen icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-fullscreen
- <small>
- <i class="icon-fullscreen"></i> &middot;
- Unicode: <span class="upper">f0b2</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-fullscreen"></i> icon-fullscreen
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-fullscreen&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-fullscreen
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/gamepad/index.html b/library/font_awesome/src/3.2.1/icon/gamepad/index.html
deleted file mode 100644
index b6749231d..000000000
--- a/library/font_awesome/src/3.2.1/icon/gamepad/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-gamepad: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-gamepad icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-gamepad icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-gamepad icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-gamepad icon-3"></i>&nbsp;&nbsp;
- <i class="icon-gamepad icon-2"></i>&nbsp;
- </span>
- <i class="icon-gamepad icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-gamepad
- <small>
- <i class="icon-gamepad"></i> &middot;
- Unicode: <span class="upper">f11b</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-gamepad"></i> icon-gamepad
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-gamepad&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-gamepad
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/gbp/index.html b/library/font_awesome/src/3.2.1/icon/gbp/index.html
deleted file mode 100644
index f13fed073..000000000
--- a/library/font_awesome/src/3.2.1/icon/gbp/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-gbp: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-gbp icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-gbp icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-gbp icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-gbp icon-3"></i>&nbsp;&nbsp;
- <i class="icon-gbp icon-2"></i>&nbsp;
- </span>
- <i class="icon-gbp icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-gbp
- <small>
- <i class="icon-gbp"></i> &middot;
- Unicode: <span class="upper">f154</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-gbp"></i> icon-gbp
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-gbp&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-gbp
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/gift/index.html b/library/font_awesome/src/3.2.1/icon/gift/index.html
deleted file mode 100644
index 813be301f..000000000
--- a/library/font_awesome/src/3.2.1/icon/gift/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-gift: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-gift icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-gift icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-gift icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-gift icon-3"></i>&nbsp;&nbsp;
- <i class="icon-gift icon-2"></i>&nbsp;
- </span>
- <i class="icon-gift icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-gift
- <small>
- <i class="icon-gift"></i> &middot;
- Unicode: <span class="upper">f06b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-gift"></i> icon-gift
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-gift&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-gift
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/github-alt/index.html b/library/font_awesome/src/3.2.1/icon/github-alt/index.html
deleted file mode 100644
index 5efb5c855..000000000
--- a/library/font_awesome/src/3.2.1/icon/github-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-github-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-github-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-github-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-github-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-github-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-github-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-github-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-github-alt
- <small>
- <i class="icon-github-alt"></i> &middot;
- Unicode: <span class="upper">f113</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-github-alt"></i> icon-github-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-github-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-github-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/github-sign/index.html b/library/font_awesome/src/3.2.1/icon/github-sign/index.html
deleted file mode 100644
index a56bdb9d8..000000000
--- a/library/font_awesome/src/3.2.1/icon/github-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-github-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-github-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-github-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-github-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-github-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-github-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-github-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-github-sign
- <small>
- <i class="icon-github-sign"></i> &middot;
- Unicode: <span class="upper">f092</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-github-sign"></i> icon-github-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-github-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-github-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/github/index.html b/library/font_awesome/src/3.2.1/icon/github/index.html
deleted file mode 100644
index 99a57e781..000000000
--- a/library/font_awesome/src/3.2.1/icon/github/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-github: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-github icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-github icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-github icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-github icon-3"></i>&nbsp;&nbsp;
- <i class="icon-github icon-2"></i>&nbsp;
- </span>
- <i class="icon-github icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-github
- <small>
- <i class="icon-github"></i> &middot;
- Unicode: <span class="upper">f09b</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-github"></i> icon-github
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-github&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-github
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/gittip/index.html b/library/font_awesome/src/3.2.1/icon/gittip/index.html
deleted file mode 100644
index f60630ea5..000000000
--- a/library/font_awesome/src/3.2.1/icon/gittip/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-gittip: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-gittip icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-gittip icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-gittip icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-gittip icon-3"></i>&nbsp;&nbsp;
- <i class="icon-gittip icon-2"></i>&nbsp;
- </span>
- <i class="icon-gittip icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-gittip
- <small>
- <i class="icon-gittip"></i> &middot;
- Unicode: <span class="upper">f184</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-gittip"></i> icon-gittip
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-gittip&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-gittip
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/glass/index.html b/library/font_awesome/src/3.2.1/icon/glass/index.html
deleted file mode 100644
index 3e07ab7ef..000000000
--- a/library/font_awesome/src/3.2.1/icon/glass/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-glass: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-glass icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-glass icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-glass icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-glass icon-3"></i>&nbsp;&nbsp;
- <i class="icon-glass icon-2"></i>&nbsp;
- </span>
- <i class="icon-glass icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-glass
- <small>
- <i class="icon-glass"></i> &middot;
- Unicode: <span class="upper">f000</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-glass"></i> icon-glass
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-glass&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-glass
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/globe/index.html b/library/font_awesome/src/3.2.1/icon/globe/index.html
deleted file mode 100644
index d5302b1cf..000000000
--- a/library/font_awesome/src/3.2.1/icon/globe/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-globe: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-globe icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-globe icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-globe icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-globe icon-3"></i>&nbsp;&nbsp;
- <i class="icon-globe icon-2"></i>&nbsp;
- </span>
- <i class="icon-globe icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-globe
- <small>
- <i class="icon-globe"></i> &middot;
- Unicode: <span class="upper">f0ac</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-globe"></i> icon-globe
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-globe&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-globe
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/google-plus-sign/index.html b/library/font_awesome/src/3.2.1/icon/google-plus-sign/index.html
deleted file mode 100644
index a8629e105..000000000
--- a/library/font_awesome/src/3.2.1/icon/google-plus-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-google-plus-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-google-plus-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-google-plus-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-google-plus-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-google-plus-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-google-plus-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-google-plus-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-google-plus-sign
- <small>
- <i class="icon-google-plus-sign"></i> &middot;
- Unicode: <span class="upper">f0d4</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-google-plus-sign"></i> icon-google-plus-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-google-plus-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-google-plus-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/google-plus/index.html b/library/font_awesome/src/3.2.1/icon/google-plus/index.html
deleted file mode 100644
index 3370c67bb..000000000
--- a/library/font_awesome/src/3.2.1/icon/google-plus/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-google-plus: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-google-plus icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-google-plus icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-google-plus icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-google-plus icon-3"></i>&nbsp;&nbsp;
- <i class="icon-google-plus icon-2"></i>&nbsp;
- </span>
- <i class="icon-google-plus icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-google-plus
- <small>
- <i class="icon-google-plus"></i> &middot;
- Unicode: <span class="upper">f0d5</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-google-plus"></i> icon-google-plus
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-google-plus&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-google-plus
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/group/index.html b/library/font_awesome/src/3.2.1/icon/group/index.html
deleted file mode 100644
index 0e689f76a..000000000
--- a/library/font_awesome/src/3.2.1/icon/group/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-group: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-group icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-group icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-group icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-group icon-3"></i>&nbsp;&nbsp;
- <i class="icon-group icon-2"></i>&nbsp;
- </span>
- <i class="icon-group icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-group
- <small>
- <i class="icon-group"></i> &middot;
- Unicode: <span class="upper">f0c0</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-group"></i> icon-group
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-group&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-group
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/h-sign/index.html b/library/font_awesome/src/3.2.1/icon/h-sign/index.html
deleted file mode 100644
index cf445e669..000000000
--- a/library/font_awesome/src/3.2.1/icon/h-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-h-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-h-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-h-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-h-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-h-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-h-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-h-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-h-sign
- <small>
- <i class="icon-h-sign"></i> &middot;
- Unicode: <span class="upper">f0fd</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Medical Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-h-sign"></i> icon-h-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-h-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-h-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/hand-down/index.html b/library/font_awesome/src/3.2.1/icon/hand-down/index.html
deleted file mode 100644
index 4cc230a8d..000000000
--- a/library/font_awesome/src/3.2.1/icon/hand-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-hand-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-hand-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-hand-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-hand-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-hand-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-hand-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-hand-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-hand-down
- <small>
- <i class="icon-hand-down"></i> &middot;
- Unicode: <span class="upper">f0a7</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-hand-down"></i> icon-hand-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-hand-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-hand-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/hand-left/index.html b/library/font_awesome/src/3.2.1/icon/hand-left/index.html
deleted file mode 100644
index 28aa29348..000000000
--- a/library/font_awesome/src/3.2.1/icon/hand-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-hand-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-hand-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-hand-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-hand-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-hand-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-hand-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-hand-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-hand-left
- <small>
- <i class="icon-hand-left"></i> &middot;
- Unicode: <span class="upper">f0a5</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-hand-left"></i> icon-hand-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-hand-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-hand-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/hand-right/index.html b/library/font_awesome/src/3.2.1/icon/hand-right/index.html
deleted file mode 100644
index 31663d6f1..000000000
--- a/library/font_awesome/src/3.2.1/icon/hand-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-hand-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-hand-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-hand-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-hand-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-hand-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-hand-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-hand-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-hand-right
- <small>
- <i class="icon-hand-right"></i> &middot;
- Unicode: <span class="upper">f0a4</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-hand-right"></i> icon-hand-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-hand-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-hand-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/hand-up/index.html b/library/font_awesome/src/3.2.1/icon/hand-up/index.html
deleted file mode 100644
index 8168f0d3b..000000000
--- a/library/font_awesome/src/3.2.1/icon/hand-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-hand-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-hand-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-hand-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-hand-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-hand-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-hand-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-hand-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-hand-up
- <small>
- <i class="icon-hand-up"></i> &middot;
- Unicode: <span class="upper">f0a6</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-hand-up"></i> icon-hand-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-hand-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-hand-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/hdd/index.html b/library/font_awesome/src/3.2.1/icon/hdd/index.html
deleted file mode 100644
index 1f58003a0..000000000
--- a/library/font_awesome/src/3.2.1/icon/hdd/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-hdd: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-hdd icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-hdd icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-hdd icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-hdd icon-3"></i>&nbsp;&nbsp;
- <i class="icon-hdd icon-2"></i>&nbsp;
- </span>
- <i class="icon-hdd icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-hdd
- <small>
- <i class="icon-hdd"></i> &middot;
- Unicode: <span class="upper">f0a0</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-hdd"></i> icon-hdd
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-hdd&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-hdd
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/headphones/index.html b/library/font_awesome/src/3.2.1/icon/headphones/index.html
deleted file mode 100644
index b85d941c1..000000000
--- a/library/font_awesome/src/3.2.1/icon/headphones/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-headphones: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-headphones icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-headphones icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-headphones icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-headphones icon-3"></i>&nbsp;&nbsp;
- <i class="icon-headphones icon-2"></i>&nbsp;
- </span>
- <i class="icon-headphones icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-headphones
- <small>
- <i class="icon-headphones"></i> &middot;
- Unicode: <span class="upper">f025</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-headphones"></i> icon-headphones
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-headphones&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-headphones
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/heart-empty/index.html b/library/font_awesome/src/3.2.1/icon/heart-empty/index.html
deleted file mode 100644
index 4d2166a4f..000000000
--- a/library/font_awesome/src/3.2.1/icon/heart-empty/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-heart-empty: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-heart-empty icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-heart-empty icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-heart-empty icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-heart-empty icon-3"></i>&nbsp;&nbsp;
- <i class="icon-heart-empty icon-2"></i>&nbsp;
- </span>
- <i class="icon-heart-empty icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-heart-empty
- <small>
- <i class="icon-heart-empty"></i> &middot;
- Unicode: <span class="upper">f08a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-heart-empty"></i> icon-heart-empty
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-heart-empty&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-heart-empty
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/heart/index.html b/library/font_awesome/src/3.2.1/icon/heart/index.html
deleted file mode 100644
index 3da9fbda0..000000000
--- a/library/font_awesome/src/3.2.1/icon/heart/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-heart: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-heart icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-heart icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-heart icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-heart icon-3"></i>&nbsp;&nbsp;
- <i class="icon-heart icon-2"></i>&nbsp;
- </span>
- <i class="icon-heart icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-heart
- <small>
- <i class="icon-heart"></i> &middot;
- Unicode: <span class="upper">f004</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-heart"></i> icon-heart
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-heart&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-heart
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/home/index.html b/library/font_awesome/src/3.2.1/icon/home/index.html
deleted file mode 100644
index 04ea6e624..000000000
--- a/library/font_awesome/src/3.2.1/icon/home/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-home: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-home icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-home icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-home icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-home icon-3"></i>&nbsp;&nbsp;
- <i class="icon-home icon-2"></i>&nbsp;
- </span>
- <i class="icon-home icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-home
- <small>
- <i class="icon-home"></i> &middot;
- Unicode: <span class="upper">f015</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-home"></i> icon-home
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-home&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-home
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/hospital/index.html b/library/font_awesome/src/3.2.1/icon/hospital/index.html
deleted file mode 100644
index 184e62a30..000000000
--- a/library/font_awesome/src/3.2.1/icon/hospital/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-hospital: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-hospital icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-hospital icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-hospital icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-hospital icon-3"></i>&nbsp;&nbsp;
- <i class="icon-hospital icon-2"></i>&nbsp;
- </span>
- <i class="icon-hospital icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-hospital
- <small>
- <i class="icon-hospital"></i> &middot;
- Unicode: <span class="upper">f0f8</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Medical Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-hospital"></i> icon-hospital
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-hospital&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-hospital
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/html5/index.html b/library/font_awesome/src/3.2.1/icon/html5/index.html
deleted file mode 100644
index d61430de9..000000000
--- a/library/font_awesome/src/3.2.1/icon/html5/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-html5: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-html5 icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-html5 icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-html5 icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-html5 icon-3"></i>&nbsp;&nbsp;
- <i class="icon-html5 icon-2"></i>&nbsp;
- </span>
- <i class="icon-html5 icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-html5
- <small>
- <i class="icon-html5"></i> &middot;
- Unicode: <span class="upper">f13b</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-html5"></i> icon-html5
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-html5&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-html5
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/inbox/index.html b/library/font_awesome/src/3.2.1/icon/inbox/index.html
deleted file mode 100644
index 8913a224e..000000000
--- a/library/font_awesome/src/3.2.1/icon/inbox/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-inbox: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-inbox icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-inbox icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-inbox icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-inbox icon-3"></i>&nbsp;&nbsp;
- <i class="icon-inbox icon-2"></i>&nbsp;
- </span>
- <i class="icon-inbox icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-inbox
- <small>
- <i class="icon-inbox"></i> &middot;
- Unicode: <span class="upper">f01c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-inbox"></i> icon-inbox
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-inbox&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-inbox
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/indent-left/index.html b/library/font_awesome/src/3.2.1/icon/indent-left/index.html
deleted file mode 100644
index c1b0d133f..000000000
--- a/library/font_awesome/src/3.2.1/icon/indent-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-indent-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-indent-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-indent-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-indent-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-indent-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-indent-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-indent-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-indent-left
- <small>
- <i class="icon-indent-left"></i> &middot;
- Unicode: <span class="upper">f03b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-indent-left"></i> icon-indent-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-indent-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-indent-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/indent-right/index.html b/library/font_awesome/src/3.2.1/icon/indent-right/index.html
deleted file mode 100644
index 93978a7ab..000000000
--- a/library/font_awesome/src/3.2.1/icon/indent-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-indent-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-indent-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-indent-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-indent-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-indent-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-indent-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-indent-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-indent-right
- <small>
- <i class="icon-indent-right"></i> &middot;
- Unicode: <span class="upper">f03c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-indent-right"></i> icon-indent-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-indent-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-indent-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/info-sign/index.html b/library/font_awesome/src/3.2.1/icon/info-sign/index.html
deleted file mode 100644
index 05069266d..000000000
--- a/library/font_awesome/src/3.2.1/icon/info-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-info-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-info-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-info-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-info-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-info-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-info-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-info-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-info-sign
- <small>
- <i class="icon-info-sign"></i> &middot;
- Unicode: <span class="upper">f05a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-info-sign"></i> icon-info-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-info-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-info-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/info/index.html b/library/font_awesome/src/3.2.1/icon/info/index.html
deleted file mode 100644
index cb9096c26..000000000
--- a/library/font_awesome/src/3.2.1/icon/info/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-info: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-info icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-info icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-info icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-info icon-3"></i>&nbsp;&nbsp;
- <i class="icon-info icon-2"></i>&nbsp;
- </span>
- <i class="icon-info icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-info
- <small>
- <i class="icon-info"></i> &middot;
- Unicode: <span class="upper">f129</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-info"></i> icon-info
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-info&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-info
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/inr/index.html b/library/font_awesome/src/3.2.1/icon/inr/index.html
deleted file mode 100644
index 7474f9582..000000000
--- a/library/font_awesome/src/3.2.1/icon/inr/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-inr: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-inr icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-inr icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-inr icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-inr icon-3"></i>&nbsp;&nbsp;
- <i class="icon-inr icon-2"></i>&nbsp;
- </span>
- <i class="icon-inr icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-inr
- <small>
- <i class="icon-inr"></i> &middot;
- Unicode: <span class="upper">f156</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- &middot; Aliases:
-
- icon-rupee
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-inr"></i> icon-inr
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-inr&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-inr
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/instagram/index.html b/library/font_awesome/src/3.2.1/icon/instagram/index.html
deleted file mode 100644
index b1db62396..000000000
--- a/library/font_awesome/src/3.2.1/icon/instagram/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-instagram: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-instagram icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-instagram icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-instagram icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-instagram icon-3"></i>&nbsp;&nbsp;
- <i class="icon-instagram icon-2"></i>&nbsp;
- </span>
- <i class="icon-instagram icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-instagram
- <small>
- <i class="icon-instagram"></i> &middot;
- Unicode: <span class="upper">f16d</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-instagram"></i> icon-instagram
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-instagram&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-instagram
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/italic/index.html b/library/font_awesome/src/3.2.1/icon/italic/index.html
deleted file mode 100644
index c91237791..000000000
--- a/library/font_awesome/src/3.2.1/icon/italic/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-italic: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-italic icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-italic icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-italic icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-italic icon-3"></i>&nbsp;&nbsp;
- <i class="icon-italic icon-2"></i>&nbsp;
- </span>
- <i class="icon-italic icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-italic
- <small>
- <i class="icon-italic"></i> &middot;
- Unicode: <span class="upper">f033</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-italic"></i> icon-italic
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-italic&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-italic
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/jpy/index.html b/library/font_awesome/src/3.2.1/icon/jpy/index.html
deleted file mode 100644
index 128770129..000000000
--- a/library/font_awesome/src/3.2.1/icon/jpy/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-jpy: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-jpy icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-jpy icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-jpy icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-jpy icon-3"></i>&nbsp;&nbsp;
- <i class="icon-jpy icon-2"></i>&nbsp;
- </span>
- <i class="icon-jpy icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-jpy
- <small>
- <i class="icon-jpy"></i> &middot;
- Unicode: <span class="upper">f157</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- &middot; Aliases:
-
- icon-yen
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-jpy"></i> icon-jpy
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-jpy&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-jpy
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/key/index.html b/library/font_awesome/src/3.2.1/icon/key/index.html
deleted file mode 100644
index ef3573e3f..000000000
--- a/library/font_awesome/src/3.2.1/icon/key/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-key: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-key icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-key icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-key icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-key icon-3"></i>&nbsp;&nbsp;
- <i class="icon-key icon-2"></i>&nbsp;
- </span>
- <i class="icon-key icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-key
- <small>
- <i class="icon-key"></i> &middot;
- Unicode: <span class="upper">f084</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-key"></i> icon-key
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-key&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-key
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/keyboard/index.html b/library/font_awesome/src/3.2.1/icon/keyboard/index.html
deleted file mode 100644
index 084f2d173..000000000
--- a/library/font_awesome/src/3.2.1/icon/keyboard/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-keyboard: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-keyboard icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-keyboard icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-keyboard icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-keyboard icon-3"></i>&nbsp;&nbsp;
- <i class="icon-keyboard icon-2"></i>&nbsp;
- </span>
- <i class="icon-keyboard icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-keyboard
- <small>
- <i class="icon-keyboard"></i> &middot;
- Unicode: <span class="upper">f11c</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-keyboard"></i> icon-keyboard
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-keyboard&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-keyboard
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/krw/index.html b/library/font_awesome/src/3.2.1/icon/krw/index.html
deleted file mode 100644
index 902411891..000000000
--- a/library/font_awesome/src/3.2.1/icon/krw/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-krw: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-krw icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-krw icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-krw icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-krw icon-3"></i>&nbsp;&nbsp;
- <i class="icon-krw icon-2"></i>&nbsp;
- </span>
- <i class="icon-krw icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-krw
- <small>
- <i class="icon-krw"></i> &middot;
- Unicode: <span class="upper">f159</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- &middot; Aliases:
-
- icon-won
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-krw"></i> icon-krw
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-krw&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-krw
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/laptop/index.html b/library/font_awesome/src/3.2.1/icon/laptop/index.html
deleted file mode 100644
index 2be4f34f9..000000000
--- a/library/font_awesome/src/3.2.1/icon/laptop/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-laptop: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-laptop icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-laptop icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-laptop icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-laptop icon-3"></i>&nbsp;&nbsp;
- <i class="icon-laptop icon-2"></i>&nbsp;
- </span>
- <i class="icon-laptop icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-laptop
- <small>
- <i class="icon-laptop"></i> &middot;
- Unicode: <span class="upper">f109</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-laptop"></i> icon-laptop
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-laptop&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-laptop
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/leaf/index.html b/library/font_awesome/src/3.2.1/icon/leaf/index.html
deleted file mode 100644
index 1d9bff360..000000000
--- a/library/font_awesome/src/3.2.1/icon/leaf/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-leaf: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-leaf icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-leaf icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-leaf icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-leaf icon-3"></i>&nbsp;&nbsp;
- <i class="icon-leaf icon-2"></i>&nbsp;
- </span>
- <i class="icon-leaf icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-leaf
- <small>
- <i class="icon-leaf"></i> &middot;
- Unicode: <span class="upper">f06c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-leaf"></i> icon-leaf
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-leaf&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-leaf
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/legal/index.html b/library/font_awesome/src/3.2.1/icon/legal/index.html
deleted file mode 100644
index 9ac9ca2af..000000000
--- a/library/font_awesome/src/3.2.1/icon/legal/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-legal: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-legal icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-legal icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-legal icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-legal icon-3"></i>&nbsp;&nbsp;
- <i class="icon-legal icon-2"></i>&nbsp;
- </span>
- <i class="icon-legal icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-legal
- <small>
- <i class="icon-legal"></i> &middot;
- Unicode: <span class="upper">f0e3</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-legal"></i> icon-legal
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-legal&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-legal
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/lemon/index.html b/library/font_awesome/src/3.2.1/icon/lemon/index.html
deleted file mode 100644
index 3072c5a20..000000000
--- a/library/font_awesome/src/3.2.1/icon/lemon/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-lemon: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-lemon icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-lemon icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-lemon icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-lemon icon-3"></i>&nbsp;&nbsp;
- <i class="icon-lemon icon-2"></i>&nbsp;
- </span>
- <i class="icon-lemon icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-lemon
- <small>
- <i class="icon-lemon"></i> &middot;
- Unicode: <span class="upper">f094</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-lemon"></i> icon-lemon
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-lemon&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-lemon
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/level-down/index.html b/library/font_awesome/src/3.2.1/icon/level-down/index.html
deleted file mode 100644
index 32beec6dd..000000000
--- a/library/font_awesome/src/3.2.1/icon/level-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-level-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-level-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-level-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-level-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-level-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-level-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-level-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-level-down
- <small>
- <i class="icon-level-down"></i> &middot;
- Unicode: <span class="upper">f149</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-level-down"></i> icon-level-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-level-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-level-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/level-up/index.html b/library/font_awesome/src/3.2.1/icon/level-up/index.html
deleted file mode 100644
index 4a1b1dfea..000000000
--- a/library/font_awesome/src/3.2.1/icon/level-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-level-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-level-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-level-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-level-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-level-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-level-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-level-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-level-up
- <small>
- <i class="icon-level-up"></i> &middot;
- Unicode: <span class="upper">f148</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-level-up"></i> icon-level-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-level-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-level-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/lightbulb/index.html b/library/font_awesome/src/3.2.1/icon/lightbulb/index.html
deleted file mode 100644
index c7eda03e9..000000000
--- a/library/font_awesome/src/3.2.1/icon/lightbulb/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-lightbulb: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-lightbulb icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-lightbulb icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-lightbulb icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-lightbulb icon-3"></i>&nbsp;&nbsp;
- <i class="icon-lightbulb icon-2"></i>&nbsp;
- </span>
- <i class="icon-lightbulb icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-lightbulb
- <small>
- <i class="icon-lightbulb"></i> &middot;
- Unicode: <span class="upper">f0eb</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-lightbulb"></i> icon-lightbulb
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-lightbulb&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-lightbulb
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/link/index.html b/library/font_awesome/src/3.2.1/icon/link/index.html
deleted file mode 100644
index 9e056532b..000000000
--- a/library/font_awesome/src/3.2.1/icon/link/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-link: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-link icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-link icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-link icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-link icon-3"></i>&nbsp;&nbsp;
- <i class="icon-link icon-2"></i>&nbsp;
- </span>
- <i class="icon-link icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-link
- <small>
- <i class="icon-link"></i> &middot;
- Unicode: <span class="upper">f0c1</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-link"></i> icon-link
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-link&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-link
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/linkedin-sign/index.html b/library/font_awesome/src/3.2.1/icon/linkedin-sign/index.html
deleted file mode 100644
index 1fa213997..000000000
--- a/library/font_awesome/src/3.2.1/icon/linkedin-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-linkedin-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-linkedin-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-linkedin-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-linkedin-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-linkedin-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-linkedin-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-linkedin-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-linkedin-sign
- <small>
- <i class="icon-linkedin-sign"></i> &middot;
- Unicode: <span class="upper">f08c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-linkedin-sign"></i> icon-linkedin-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-linkedin-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-linkedin-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/linkedin/index.html b/library/font_awesome/src/3.2.1/icon/linkedin/index.html
deleted file mode 100644
index bd43ade8a..000000000
--- a/library/font_awesome/src/3.2.1/icon/linkedin/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-linkedin: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-linkedin icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-linkedin icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-linkedin icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-linkedin icon-3"></i>&nbsp;&nbsp;
- <i class="icon-linkedin icon-2"></i>&nbsp;
- </span>
- <i class="icon-linkedin icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-linkedin
- <small>
- <i class="icon-linkedin"></i> &middot;
- Unicode: <span class="upper">f0e1</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-linkedin"></i> icon-linkedin
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-linkedin&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-linkedin
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/linux/index.html b/library/font_awesome/src/3.2.1/icon/linux/index.html
deleted file mode 100644
index bfac729d5..000000000
--- a/library/font_awesome/src/3.2.1/icon/linux/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-linux: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-linux icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-linux icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-linux icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-linux icon-3"></i>&nbsp;&nbsp;
- <i class="icon-linux icon-2"></i>&nbsp;
- </span>
- <i class="icon-linux icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-linux
- <small>
- <i class="icon-linux"></i> &middot;
- Unicode: <span class="upper">f17c</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-linux"></i> icon-linux
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-linux&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-linux
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/list-alt/index.html b/library/font_awesome/src/3.2.1/icon/list-alt/index.html
deleted file mode 100644
index 2dfcff0de..000000000
--- a/library/font_awesome/src/3.2.1/icon/list-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-list-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-list-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-list-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-list-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-list-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-list-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-list-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-list-alt
- <small>
- <i class="icon-list-alt"></i> &middot;
- Unicode: <span class="upper">f022</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-list-alt"></i> icon-list-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-list-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-list-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/list-ol/index.html b/library/font_awesome/src/3.2.1/icon/list-ol/index.html
deleted file mode 100644
index ad4a78f98..000000000
--- a/library/font_awesome/src/3.2.1/icon/list-ol/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-list-ol: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-list-ol icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-list-ol icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-list-ol icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-list-ol icon-3"></i>&nbsp;&nbsp;
- <i class="icon-list-ol icon-2"></i>&nbsp;
- </span>
- <i class="icon-list-ol icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-list-ol
- <small>
- <i class="icon-list-ol"></i> &middot;
- Unicode: <span class="upper">f0cb</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-list-ol"></i> icon-list-ol
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-list-ol&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-list-ol
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/list-ul/index.html b/library/font_awesome/src/3.2.1/icon/list-ul/index.html
deleted file mode 100644
index 18a7e8c5a..000000000
--- a/library/font_awesome/src/3.2.1/icon/list-ul/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-list-ul: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-list-ul icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-list-ul icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-list-ul icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-list-ul icon-3"></i>&nbsp;&nbsp;
- <i class="icon-list-ul icon-2"></i>&nbsp;
- </span>
- <i class="icon-list-ul icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-list-ul
- <small>
- <i class="icon-list-ul"></i> &middot;
- Unicode: <span class="upper">f0ca</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-list-ul"></i> icon-list-ul
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-list-ul&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-list-ul
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/list/index.html b/library/font_awesome/src/3.2.1/icon/list/index.html
deleted file mode 100644
index 86b46f4f1..000000000
--- a/library/font_awesome/src/3.2.1/icon/list/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-list: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-list icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-list icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-list icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-list icon-3"></i>&nbsp;&nbsp;
- <i class="icon-list icon-2"></i>&nbsp;
- </span>
- <i class="icon-list icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-list
- <small>
- <i class="icon-list"></i> &middot;
- Unicode: <span class="upper">f03a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-list"></i> icon-list
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-list&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-list
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/location-arrow/index.html b/library/font_awesome/src/3.2.1/icon/location-arrow/index.html
deleted file mode 100644
index 02a3c43ae..000000000
--- a/library/font_awesome/src/3.2.1/icon/location-arrow/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-location-arrow: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-location-arrow icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-location-arrow icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-location-arrow icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-location-arrow icon-3"></i>&nbsp;&nbsp;
- <i class="icon-location-arrow icon-2"></i>&nbsp;
- </span>
- <i class="icon-location-arrow icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-location-arrow
- <small>
- <i class="icon-location-arrow"></i> &middot;
- Unicode: <span class="upper">f124</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-location-arrow"></i> icon-location-arrow
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-location-arrow&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-location-arrow
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/lock/index.html b/library/font_awesome/src/3.2.1/icon/lock/index.html
deleted file mode 100644
index c64ffe12f..000000000
--- a/library/font_awesome/src/3.2.1/icon/lock/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-lock: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-lock icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-lock icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-lock icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-lock icon-3"></i>&nbsp;&nbsp;
- <i class="icon-lock icon-2"></i>&nbsp;
- </span>
- <i class="icon-lock icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-lock
- <small>
- <i class="icon-lock"></i> &middot;
- Unicode: <span class="upper">f023</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-lock"></i> icon-lock
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-lock&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-lock
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/long-arrow-down/index.html b/library/font_awesome/src/3.2.1/icon/long-arrow-down/index.html
deleted file mode 100644
index 84d3e00f9..000000000
--- a/library/font_awesome/src/3.2.1/icon/long-arrow-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-long-arrow-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-long-arrow-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-long-arrow-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-long-arrow-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-long-arrow-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-long-arrow-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-long-arrow-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-long-arrow-down
- <small>
- <i class="icon-long-arrow-down"></i> &middot;
- Unicode: <span class="upper">f175</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-long-arrow-down"></i> icon-long-arrow-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-long-arrow-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-long-arrow-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/long-arrow-left/index.html b/library/font_awesome/src/3.2.1/icon/long-arrow-left/index.html
deleted file mode 100644
index b49665c0d..000000000
--- a/library/font_awesome/src/3.2.1/icon/long-arrow-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-long-arrow-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-long-arrow-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-long-arrow-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-long-arrow-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-long-arrow-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-long-arrow-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-long-arrow-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-long-arrow-left
- <small>
- <i class="icon-long-arrow-left"></i> &middot;
- Unicode: <span class="upper">f177</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-long-arrow-left"></i> icon-long-arrow-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-long-arrow-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-long-arrow-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/long-arrow-right/index.html b/library/font_awesome/src/3.2.1/icon/long-arrow-right/index.html
deleted file mode 100644
index a5d5a98e0..000000000
--- a/library/font_awesome/src/3.2.1/icon/long-arrow-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-long-arrow-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-long-arrow-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-long-arrow-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-long-arrow-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-long-arrow-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-long-arrow-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-long-arrow-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-long-arrow-right
- <small>
- <i class="icon-long-arrow-right"></i> &middot;
- Unicode: <span class="upper">f178</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-long-arrow-right"></i> icon-long-arrow-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-long-arrow-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-long-arrow-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/long-arrow-up/index.html b/library/font_awesome/src/3.2.1/icon/long-arrow-up/index.html
deleted file mode 100644
index fa1985e59..000000000
--- a/library/font_awesome/src/3.2.1/icon/long-arrow-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-long-arrow-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-long-arrow-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-long-arrow-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-long-arrow-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-long-arrow-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-long-arrow-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-long-arrow-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-long-arrow-up
- <small>
- <i class="icon-long-arrow-up"></i> &middot;
- Unicode: <span class="upper">f176</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Directional Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-long-arrow-up"></i> icon-long-arrow-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-long-arrow-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-long-arrow-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/magic/index.html b/library/font_awesome/src/3.2.1/icon/magic/index.html
deleted file mode 100644
index ffd1995e6..000000000
--- a/library/font_awesome/src/3.2.1/icon/magic/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-magic: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-magic icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-magic icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-magic icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-magic icon-3"></i>&nbsp;&nbsp;
- <i class="icon-magic icon-2"></i>&nbsp;
- </span>
- <i class="icon-magic icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-magic
- <small>
- <i class="icon-magic"></i> &middot;
- Unicode: <span class="upper">f0d0</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-magic"></i> icon-magic
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-magic&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-magic
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/magnet/index.html b/library/font_awesome/src/3.2.1/icon/magnet/index.html
deleted file mode 100644
index 669379bc1..000000000
--- a/library/font_awesome/src/3.2.1/icon/magnet/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-magnet: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-magnet icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-magnet icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-magnet icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-magnet icon-3"></i>&nbsp;&nbsp;
- <i class="icon-magnet icon-2"></i>&nbsp;
- </span>
- <i class="icon-magnet icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-magnet
- <small>
- <i class="icon-magnet"></i> &middot;
- Unicode: <span class="upper">f076</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-magnet"></i> icon-magnet
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-magnet&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-magnet
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/mail-reply-all/index.html b/library/font_awesome/src/3.2.1/icon/mail-reply-all/index.html
deleted file mode 100644
index 1a8dc0f15..000000000
--- a/library/font_awesome/src/3.2.1/icon/mail-reply-all/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-mail-reply-all: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-mail-reply-all icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-mail-reply-all icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-mail-reply-all icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-mail-reply-all icon-3"></i>&nbsp;&nbsp;
- <i class="icon-mail-reply-all icon-2"></i>&nbsp;
- </span>
- <i class="icon-mail-reply-all icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-mail-reply-all
- <small>
- <i class="icon-mail-reply-all"></i> &middot;
- Unicode: <span class="upper">f122</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-mail-reply-all"></i> icon-mail-reply-all
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-mail-reply-all&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-mail-reply-all
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/male/index.html b/library/font_awesome/src/3.2.1/icon/male/index.html
deleted file mode 100644
index ffc56809c..000000000
--- a/library/font_awesome/src/3.2.1/icon/male/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-male: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-male icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-male icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-male icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-male icon-3"></i>&nbsp;&nbsp;
- <i class="icon-male icon-2"></i>&nbsp;
- </span>
- <i class="icon-male icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-male
- <small>
- <i class="icon-male"></i> &middot;
- Unicode: <span class="upper">f183</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-male"></i> icon-male
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-male&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-male
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/map-marker/index.html b/library/font_awesome/src/3.2.1/icon/map-marker/index.html
deleted file mode 100644
index a6a54e4aa..000000000
--- a/library/font_awesome/src/3.2.1/icon/map-marker/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-map-marker: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-map-marker icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-map-marker icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-map-marker icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-map-marker icon-3"></i>&nbsp;&nbsp;
- <i class="icon-map-marker icon-2"></i>&nbsp;
- </span>
- <i class="icon-map-marker icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-map-marker
- <small>
- <i class="icon-map-marker"></i> &middot;
- Unicode: <span class="upper">f041</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-map-marker"></i> icon-map-marker
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-map-marker&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-map-marker
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/maxcdn/index.html b/library/font_awesome/src/3.2.1/icon/maxcdn/index.html
deleted file mode 100644
index ce1490825..000000000
--- a/library/font_awesome/src/3.2.1/icon/maxcdn/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-maxcdn: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-maxcdn icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-maxcdn icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-maxcdn icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-maxcdn icon-3"></i>&nbsp;&nbsp;
- <i class="icon-maxcdn icon-2"></i>&nbsp;
- </span>
- <i class="icon-maxcdn icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-maxcdn
- <small>
- <i class="icon-maxcdn"></i> &middot;
- Unicode: <span class="upper">f136</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-maxcdn"></i> icon-maxcdn
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-maxcdn&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-maxcdn
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/medkit/index.html b/library/font_awesome/src/3.2.1/icon/medkit/index.html
deleted file mode 100644
index 954ce242e..000000000
--- a/library/font_awesome/src/3.2.1/icon/medkit/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-medkit: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-medkit icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-medkit icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-medkit icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-medkit icon-3"></i>&nbsp;&nbsp;
- <i class="icon-medkit icon-2"></i>&nbsp;
- </span>
- <i class="icon-medkit icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-medkit
- <small>
- <i class="icon-medkit"></i> &middot;
- Unicode: <span class="upper">f0fa</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Medical Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-medkit"></i> icon-medkit
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-medkit&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-medkit
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/meh/index.html b/library/font_awesome/src/3.2.1/icon/meh/index.html
deleted file mode 100644
index e344e19de..000000000
--- a/library/font_awesome/src/3.2.1/icon/meh/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-meh: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-meh icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-meh icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-meh icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-meh icon-3"></i>&nbsp;&nbsp;
- <i class="icon-meh icon-2"></i>&nbsp;
- </span>
- <i class="icon-meh icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-meh
- <small>
- <i class="icon-meh"></i> &middot;
- Unicode: <span class="upper">f11a</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-meh"></i> icon-meh
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-meh&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-meh
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/microphone-off/index.html b/library/font_awesome/src/3.2.1/icon/microphone-off/index.html
deleted file mode 100644
index 2201b4e7c..000000000
--- a/library/font_awesome/src/3.2.1/icon/microphone-off/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-microphone-off: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-microphone-off icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-microphone-off icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-microphone-off icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-microphone-off icon-3"></i>&nbsp;&nbsp;
- <i class="icon-microphone-off icon-2"></i>&nbsp;
- </span>
- <i class="icon-microphone-off icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-microphone-off
- <small>
- <i class="icon-microphone-off"></i> &middot;
- Unicode: <span class="upper">f131</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-microphone-off"></i> icon-microphone-off
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-microphone-off&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-microphone-off
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/microphone/index.html b/library/font_awesome/src/3.2.1/icon/microphone/index.html
deleted file mode 100644
index fe900f56f..000000000
--- a/library/font_awesome/src/3.2.1/icon/microphone/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-microphone: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-microphone icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-microphone icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-microphone icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-microphone icon-3"></i>&nbsp;&nbsp;
- <i class="icon-microphone icon-2"></i>&nbsp;
- </span>
- <i class="icon-microphone icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-microphone
- <small>
- <i class="icon-microphone"></i> &middot;
- Unicode: <span class="upper">f130</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-microphone"></i> icon-microphone
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-microphone&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-microphone
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/minus-sign-alt/index.html b/library/font_awesome/src/3.2.1/icon/minus-sign-alt/index.html
deleted file mode 100644
index 0b6339059..000000000
--- a/library/font_awesome/src/3.2.1/icon/minus-sign-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-minus-sign-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-minus-sign-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-minus-sign-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-minus-sign-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-minus-sign-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-minus-sign-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-minus-sign-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-minus-sign-alt
- <small>
- <i class="icon-minus-sign-alt"></i> &middot;
- Unicode: <span class="upper">f146</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-minus-sign-alt"></i> icon-minus-sign-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-minus-sign-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-minus-sign-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/minus-sign/index.html b/library/font_awesome/src/3.2.1/icon/minus-sign/index.html
deleted file mode 100644
index e02c1d88a..000000000
--- a/library/font_awesome/src/3.2.1/icon/minus-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-minus-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-minus-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-minus-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-minus-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-minus-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-minus-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-minus-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-minus-sign
- <small>
- <i class="icon-minus-sign"></i> &middot;
- Unicode: <span class="upper">f056</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-minus-sign"></i> icon-minus-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-minus-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-minus-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/minus/index.html b/library/font_awesome/src/3.2.1/icon/minus/index.html
deleted file mode 100644
index c5bdf8887..000000000
--- a/library/font_awesome/src/3.2.1/icon/minus/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-minus: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-minus icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-minus icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-minus icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-minus icon-3"></i>&nbsp;&nbsp;
- <i class="icon-minus icon-2"></i>&nbsp;
- </span>
- <i class="icon-minus icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-minus
- <small>
- <i class="icon-minus"></i> &middot;
- Unicode: <span class="upper">f068</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-minus"></i> icon-minus
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-minus&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-minus
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/mobile-phone/index.html b/library/font_awesome/src/3.2.1/icon/mobile-phone/index.html
deleted file mode 100644
index 26a6ddf65..000000000
--- a/library/font_awesome/src/3.2.1/icon/mobile-phone/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-mobile-phone: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-mobile-phone icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-mobile-phone icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-mobile-phone icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-mobile-phone icon-3"></i>&nbsp;&nbsp;
- <i class="icon-mobile-phone icon-2"></i>&nbsp;
- </span>
- <i class="icon-mobile-phone icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-mobile-phone
- <small>
- <i class="icon-mobile-phone"></i> &middot;
- Unicode: <span class="upper">f10b</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-mobile-phone"></i> icon-mobile-phone
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-mobile-phone&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-mobile-phone
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/money/index.html b/library/font_awesome/src/3.2.1/icon/money/index.html
deleted file mode 100644
index 268b62d77..000000000
--- a/library/font_awesome/src/3.2.1/icon/money/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-money: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-money icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-money icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-money icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-money icon-3"></i>&nbsp;&nbsp;
- <i class="icon-money icon-2"></i>&nbsp;
- </span>
- <i class="icon-money icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-money
- <small>
- <i class="icon-money"></i> &middot;
- Unicode: <span class="upper">f0d6</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-money"></i> icon-money
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-money&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-money
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/moon/index.html b/library/font_awesome/src/3.2.1/icon/moon/index.html
deleted file mode 100644
index de8e99b19..000000000
--- a/library/font_awesome/src/3.2.1/icon/moon/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-moon: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-moon icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-moon icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-moon icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-moon icon-3"></i>&nbsp;&nbsp;
- <i class="icon-moon icon-2"></i>&nbsp;
- </span>
- <i class="icon-moon icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-moon
- <small>
- <i class="icon-moon"></i> &middot;
- Unicode: <span class="upper">f186</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-moon"></i> icon-moon
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-moon&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-moon
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/move/index.html b/library/font_awesome/src/3.2.1/icon/move/index.html
deleted file mode 100644
index 6d34735a9..000000000
--- a/library/font_awesome/src/3.2.1/icon/move/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-move: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-move icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-move icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-move icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-move icon-3"></i>&nbsp;&nbsp;
- <i class="icon-move icon-2"></i>&nbsp;
- </span>
- <i class="icon-move icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-move
- <small>
- <i class="icon-move"></i> &middot;
- Unicode: <span class="upper">f047</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-move"></i> icon-move
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-move&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-move
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/music/index.html b/library/font_awesome/src/3.2.1/icon/music/index.html
deleted file mode 100644
index 79464c5a5..000000000
--- a/library/font_awesome/src/3.2.1/icon/music/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-music: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-music icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-music icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-music icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-music icon-3"></i>&nbsp;&nbsp;
- <i class="icon-music icon-2"></i>&nbsp;
- </span>
- <i class="icon-music icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-music
- <small>
- <i class="icon-music"></i> &middot;
- Unicode: <span class="upper">f001</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-music"></i> icon-music
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-music&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-music
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/off/index.html b/library/font_awesome/src/3.2.1/icon/off/index.html
deleted file mode 100644
index 7a6b1ff99..000000000
--- a/library/font_awesome/src/3.2.1/icon/off/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-off: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-off icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-off icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-off icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-off icon-3"></i>&nbsp;&nbsp;
- <i class="icon-off icon-2"></i>&nbsp;
- </span>
- <i class="icon-off icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-off
- <small>
- <i class="icon-off"></i> &middot;
- Unicode: <span class="upper">f011</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-power-off
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-off"></i> icon-off
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-off&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-off
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ok-circle/index.html b/library/font_awesome/src/3.2.1/icon/ok-circle/index.html
deleted file mode 100644
index 4983c67f6..000000000
--- a/library/font_awesome/src/3.2.1/icon/ok-circle/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ok-circle: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ok-circle icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ok-circle icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ok-circle icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ok-circle icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ok-circle icon-2"></i>&nbsp;
- </span>
- <i class="icon-ok-circle icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ok-circle
- <small>
- <i class="icon-ok-circle"></i> &middot;
- Unicode: <span class="upper">f05d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ok-circle"></i> icon-ok-circle
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ok-circle&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ok-circle
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ok-sign/index.html b/library/font_awesome/src/3.2.1/icon/ok-sign/index.html
deleted file mode 100644
index 4b256c138..000000000
--- a/library/font_awesome/src/3.2.1/icon/ok-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ok-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ok-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ok-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ok-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ok-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ok-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-ok-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ok-sign
- <small>
- <i class="icon-ok-sign"></i> &middot;
- Unicode: <span class="upper">f058</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ok-sign"></i> icon-ok-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ok-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ok-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ok/index.html b/library/font_awesome/src/3.2.1/icon/ok/index.html
deleted file mode 100644
index dd095945b..000000000
--- a/library/font_awesome/src/3.2.1/icon/ok/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ok: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ok icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ok icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ok icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ok icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ok icon-2"></i>&nbsp;
- </span>
- <i class="icon-ok icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ok
- <small>
- <i class="icon-ok"></i> &middot;
- Unicode: <span class="upper">f00c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ok"></i> icon-ok
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ok&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ok
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/paper-clip/index.html b/library/font_awesome/src/3.2.1/icon/paper-clip/index.html
deleted file mode 100644
index ff213c7a7..000000000
--- a/library/font_awesome/src/3.2.1/icon/paper-clip/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-paper-clip: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-paper-clip icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-paper-clip icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-paper-clip icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-paper-clip icon-3"></i>&nbsp;&nbsp;
- <i class="icon-paper-clip icon-2"></i>&nbsp;
- </span>
- <i class="icon-paper-clip icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-paper-clip
- <small>
- <i class="icon-paper-clip"></i> &middot;
- Unicode: <span class="upper">f0c6</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- &middot; Aliases:
-
- icon-paperclip
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-paper-clip"></i> icon-paper-clip
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-paper-clip&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-paper-clip
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/paste/index.html b/library/font_awesome/src/3.2.1/icon/paste/index.html
deleted file mode 100644
index 9389aa15a..000000000
--- a/library/font_awesome/src/3.2.1/icon/paste/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-paste: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-paste icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-paste icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-paste icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-paste icon-3"></i>&nbsp;&nbsp;
- <i class="icon-paste icon-2"></i>&nbsp;
- </span>
- <i class="icon-paste icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-paste
- <small>
- <i class="icon-paste"></i> &middot;
- Unicode: <span class="upper">f0ea</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-paste"></i> icon-paste
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-paste&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-paste
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/pause/index.html b/library/font_awesome/src/3.2.1/icon/pause/index.html
deleted file mode 100644
index 35c7fbfb1..000000000
--- a/library/font_awesome/src/3.2.1/icon/pause/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-pause: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-pause icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-pause icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-pause icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-pause icon-3"></i>&nbsp;&nbsp;
- <i class="icon-pause icon-2"></i>&nbsp;
- </span>
- <i class="icon-pause icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-pause
- <small>
- <i class="icon-pause"></i> &middot;
- Unicode: <span class="upper">f04c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-pause"></i> icon-pause
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-pause&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-pause
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/pencil/index.html b/library/font_awesome/src/3.2.1/icon/pencil/index.html
deleted file mode 100644
index 4209b1a9d..000000000
--- a/library/font_awesome/src/3.2.1/icon/pencil/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-pencil: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-pencil icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-pencil icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-pencil icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-pencil icon-3"></i>&nbsp;&nbsp;
- <i class="icon-pencil icon-2"></i>&nbsp;
- </span>
- <i class="icon-pencil icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-pencil
- <small>
- <i class="icon-pencil"></i> &middot;
- Unicode: <span class="upper">f040</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-pencil"></i> icon-pencil
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-pencil&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-pencil
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/phone-sign/index.html b/library/font_awesome/src/3.2.1/icon/phone-sign/index.html
deleted file mode 100644
index 3d60922c3..000000000
--- a/library/font_awesome/src/3.2.1/icon/phone-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-phone-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-phone-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-phone-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-phone-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-phone-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-phone-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-phone-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-phone-sign
- <small>
- <i class="icon-phone-sign"></i> &middot;
- Unicode: <span class="upper">f098</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-phone-sign"></i> icon-phone-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-phone-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-phone-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/phone/index.html b/library/font_awesome/src/3.2.1/icon/phone/index.html
deleted file mode 100644
index b37897e44..000000000
--- a/library/font_awesome/src/3.2.1/icon/phone/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-phone: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-phone icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-phone icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-phone icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-phone icon-3"></i>&nbsp;&nbsp;
- <i class="icon-phone icon-2"></i>&nbsp;
- </span>
- <i class="icon-phone icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-phone
- <small>
- <i class="icon-phone"></i> &middot;
- Unicode: <span class="upper">f095</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-phone"></i> icon-phone
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-phone&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-phone
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/picture/index.html b/library/font_awesome/src/3.2.1/icon/picture/index.html
deleted file mode 100644
index 35cd2ea93..000000000
--- a/library/font_awesome/src/3.2.1/icon/picture/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-picture: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-picture icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-picture icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-picture icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-picture icon-3"></i>&nbsp;&nbsp;
- <i class="icon-picture icon-2"></i>&nbsp;
- </span>
- <i class="icon-picture icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-picture
- <small>
- <i class="icon-picture"></i> &middot;
- Unicode: <span class="upper">f03e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-picture"></i> icon-picture
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-picture&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-picture
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/pinterest-sign/index.html b/library/font_awesome/src/3.2.1/icon/pinterest-sign/index.html
deleted file mode 100644
index 0ab362e3d..000000000
--- a/library/font_awesome/src/3.2.1/icon/pinterest-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-pinterest-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-pinterest-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-pinterest-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-pinterest-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-pinterest-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-pinterest-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-pinterest-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-pinterest-sign
- <small>
- <i class="icon-pinterest-sign"></i> &middot;
- Unicode: <span class="upper">f0d3</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-pinterest-sign"></i> icon-pinterest-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-pinterest-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-pinterest-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/pinterest/index.html b/library/font_awesome/src/3.2.1/icon/pinterest/index.html
deleted file mode 100644
index 557e94e8b..000000000
--- a/library/font_awesome/src/3.2.1/icon/pinterest/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-pinterest: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-pinterest icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-pinterest icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-pinterest icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-pinterest icon-3"></i>&nbsp;&nbsp;
- <i class="icon-pinterest icon-2"></i>&nbsp;
- </span>
- <i class="icon-pinterest icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-pinterest
- <small>
- <i class="icon-pinterest"></i> &middot;
- Unicode: <span class="upper">f0d2</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-pinterest"></i> icon-pinterest
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-pinterest&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-pinterest
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/plane/index.html b/library/font_awesome/src/3.2.1/icon/plane/index.html
deleted file mode 100644
index 1543b9367..000000000
--- a/library/font_awesome/src/3.2.1/icon/plane/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-plane: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-plane icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-plane icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-plane icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-plane icon-3"></i>&nbsp;&nbsp;
- <i class="icon-plane icon-2"></i>&nbsp;
- </span>
- <i class="icon-plane icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-plane
- <small>
- <i class="icon-plane"></i> &middot;
- Unicode: <span class="upper">f072</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-plane"></i> icon-plane
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-plane&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-plane
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/play-circle/index.html b/library/font_awesome/src/3.2.1/icon/play-circle/index.html
deleted file mode 100644
index 78d958d29..000000000
--- a/library/font_awesome/src/3.2.1/icon/play-circle/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-play-circle: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-play-circle icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-play-circle icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-play-circle icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-play-circle icon-3"></i>&nbsp;&nbsp;
- <i class="icon-play-circle icon-2"></i>&nbsp;
- </span>
- <i class="icon-play-circle icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-play-circle
- <small>
- <i class="icon-play-circle"></i> &middot;
- Unicode: <span class="upper">f01d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-play-circle"></i> icon-play-circle
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-play-circle&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-play-circle
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/play-sign/index.html b/library/font_awesome/src/3.2.1/icon/play-sign/index.html
deleted file mode 100644
index 777a8c892..000000000
--- a/library/font_awesome/src/3.2.1/icon/play-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-play-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-play-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-play-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-play-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-play-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-play-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-play-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-play-sign
- <small>
- <i class="icon-play-sign"></i> &middot;
- Unicode: <span class="upper">f144</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-play-sign"></i> icon-play-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-play-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-play-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/play/index.html b/library/font_awesome/src/3.2.1/icon/play/index.html
deleted file mode 100644
index 1af20b77b..000000000
--- a/library/font_awesome/src/3.2.1/icon/play/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-play: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-play icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-play icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-play icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-play icon-3"></i>&nbsp;&nbsp;
- <i class="icon-play icon-2"></i>&nbsp;
- </span>
- <i class="icon-play icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-play
- <small>
- <i class="icon-play"></i> &middot;
- Unicode: <span class="upper">f04b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-play"></i> icon-play
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-play&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-play
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/plus-sign-alt/index.html b/library/font_awesome/src/3.2.1/icon/plus-sign-alt/index.html
deleted file mode 100644
index 6feba6d7e..000000000
--- a/library/font_awesome/src/3.2.1/icon/plus-sign-alt/index.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-plus-sign-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-plus-sign-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-plus-sign-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-plus-sign-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-plus-sign-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-plus-sign-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-plus-sign-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-plus-sign-alt
- <small>
- <i class="icon-plus-sign-alt"></i> &middot;
- Unicode: <span class="upper">f0fe</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Medical Icons,
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-plus-sign-alt"></i> icon-plus-sign-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-plus-sign-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-plus-sign-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/plus-sign/index.html b/library/font_awesome/src/3.2.1/icon/plus-sign/index.html
deleted file mode 100644
index dd43bdc85..000000000
--- a/library/font_awesome/src/3.2.1/icon/plus-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-plus-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-plus-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-plus-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-plus-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-plus-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-plus-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-plus-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-plus-sign
- <small>
- <i class="icon-plus-sign"></i> &middot;
- Unicode: <span class="upper">f055</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-plus-sign"></i> icon-plus-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-plus-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-plus-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/plus/index.html b/library/font_awesome/src/3.2.1/icon/plus/index.html
deleted file mode 100644
index dd2e93167..000000000
--- a/library/font_awesome/src/3.2.1/icon/plus/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-plus: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-plus icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-plus icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-plus icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-plus icon-3"></i>&nbsp;&nbsp;
- <i class="icon-plus icon-2"></i>&nbsp;
- </span>
- <i class="icon-plus icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-plus
- <small>
- <i class="icon-plus"></i> &middot;
- Unicode: <span class="upper">f067</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-plus"></i> icon-plus
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-plus&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-plus
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/print/index.html b/library/font_awesome/src/3.2.1/icon/print/index.html
deleted file mode 100644
index 01423d36a..000000000
--- a/library/font_awesome/src/3.2.1/icon/print/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-print: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-print icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-print icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-print icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-print icon-3"></i>&nbsp;&nbsp;
- <i class="icon-print icon-2"></i>&nbsp;
- </span>
- <i class="icon-print icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-print
- <small>
- <i class="icon-print"></i> &middot;
- Unicode: <span class="upper">f02f</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-print"></i> icon-print
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-print&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-print
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/pushpin/index.html b/library/font_awesome/src/3.2.1/icon/pushpin/index.html
deleted file mode 100644
index e7c84fed8..000000000
--- a/library/font_awesome/src/3.2.1/icon/pushpin/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-pushpin: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-pushpin icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-pushpin icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-pushpin icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-pushpin icon-3"></i>&nbsp;&nbsp;
- <i class="icon-pushpin icon-2"></i>&nbsp;
- </span>
- <i class="icon-pushpin icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-pushpin
- <small>
- <i class="icon-pushpin"></i> &middot;
- Unicode: <span class="upper">f08d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-pushpin"></i> icon-pushpin
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-pushpin&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-pushpin
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/puzzle-piece/index.html b/library/font_awesome/src/3.2.1/icon/puzzle-piece/index.html
deleted file mode 100644
index aa4aa9e6f..000000000
--- a/library/font_awesome/src/3.2.1/icon/puzzle-piece/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-puzzle-piece: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-puzzle-piece icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-puzzle-piece icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-puzzle-piece icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-puzzle-piece icon-3"></i>&nbsp;&nbsp;
- <i class="icon-puzzle-piece icon-2"></i>&nbsp;
- </span>
- <i class="icon-puzzle-piece icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-puzzle-piece
- <small>
- <i class="icon-puzzle-piece"></i> &middot;
- Unicode: <span class="upper">f12e</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-puzzle-piece"></i> icon-puzzle-piece
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-puzzle-piece&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-puzzle-piece
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/qrcode/index.html b/library/font_awesome/src/3.2.1/icon/qrcode/index.html
deleted file mode 100644
index edb87cfd6..000000000
--- a/library/font_awesome/src/3.2.1/icon/qrcode/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-qrcode: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-qrcode icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-qrcode icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-qrcode icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-qrcode icon-3"></i>&nbsp;&nbsp;
- <i class="icon-qrcode icon-2"></i>&nbsp;
- </span>
- <i class="icon-qrcode icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-qrcode
- <small>
- <i class="icon-qrcode"></i> &middot;
- Unicode: <span class="upper">f029</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-qrcode"></i> icon-qrcode
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-qrcode&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-qrcode
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/question-sign/index.html b/library/font_awesome/src/3.2.1/icon/question-sign/index.html
deleted file mode 100644
index 3565fe1ce..000000000
--- a/library/font_awesome/src/3.2.1/icon/question-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-question-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-question-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-question-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-question-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-question-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-question-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-question-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-question-sign
- <small>
- <i class="icon-question-sign"></i> &middot;
- Unicode: <span class="upper">f059</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-question-sign"></i> icon-question-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-question-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-question-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/question/index.html b/library/font_awesome/src/3.2.1/icon/question/index.html
deleted file mode 100644
index 4c9642f16..000000000
--- a/library/font_awesome/src/3.2.1/icon/question/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-question: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-question icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-question icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-question icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-question icon-3"></i>&nbsp;&nbsp;
- <i class="icon-question icon-2"></i>&nbsp;
- </span>
- <i class="icon-question icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-question
- <small>
- <i class="icon-question"></i> &middot;
- Unicode: <span class="upper">f128</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-question"></i> icon-question
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-question&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-question
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/quote-left/index.html b/library/font_awesome/src/3.2.1/icon/quote-left/index.html
deleted file mode 100644
index f5801a726..000000000
--- a/library/font_awesome/src/3.2.1/icon/quote-left/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-quote-left: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-quote-left icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-quote-left icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-quote-left icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-quote-left icon-3"></i>&nbsp;&nbsp;
- <i class="icon-quote-left icon-2"></i>&nbsp;
- </span>
- <i class="icon-quote-left icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-quote-left
- <small>
- <i class="icon-quote-left"></i> &middot;
- Unicode: <span class="upper">f10d</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-quote-left"></i> icon-quote-left
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-quote-left&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-quote-left
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/quote-right/index.html b/library/font_awesome/src/3.2.1/icon/quote-right/index.html
deleted file mode 100644
index d86492ddc..000000000
--- a/library/font_awesome/src/3.2.1/icon/quote-right/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-quote-right: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-quote-right icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-quote-right icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-quote-right icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-quote-right icon-3"></i>&nbsp;&nbsp;
- <i class="icon-quote-right icon-2"></i>&nbsp;
- </span>
- <i class="icon-quote-right icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-quote-right
- <small>
- <i class="icon-quote-right"></i> &middot;
- Unicode: <span class="upper">f10e</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-quote-right"></i> icon-quote-right
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-quote-right&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-quote-right
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/random/index.html b/library/font_awesome/src/3.2.1/icon/random/index.html
deleted file mode 100644
index ecea8f077..000000000
--- a/library/font_awesome/src/3.2.1/icon/random/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-random: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-random icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-random icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-random icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-random icon-3"></i>&nbsp;&nbsp;
- <i class="icon-random icon-2"></i>&nbsp;
- </span>
- <i class="icon-random icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-random
- <small>
- <i class="icon-random"></i> &middot;
- Unicode: <span class="upper">f074</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-random"></i> icon-random
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-random&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-random
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/refresh/index.html b/library/font_awesome/src/3.2.1/icon/refresh/index.html
deleted file mode 100644
index 0ea53e72a..000000000
--- a/library/font_awesome/src/3.2.1/icon/refresh/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-refresh: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-refresh icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-refresh icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-refresh icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-refresh icon-3"></i>&nbsp;&nbsp;
- <i class="icon-refresh icon-2"></i>&nbsp;
- </span>
- <i class="icon-refresh icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-refresh
- <small>
- <i class="icon-refresh"></i> &middot;
- Unicode: <span class="upper">f021</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-refresh"></i> icon-refresh
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-refresh&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-refresh
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/remove-circle/index.html b/library/font_awesome/src/3.2.1/icon/remove-circle/index.html
deleted file mode 100644
index 5ccd832b3..000000000
--- a/library/font_awesome/src/3.2.1/icon/remove-circle/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-remove-circle: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-remove-circle icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-remove-circle icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-remove-circle icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-remove-circle icon-3"></i>&nbsp;&nbsp;
- <i class="icon-remove-circle icon-2"></i>&nbsp;
- </span>
- <i class="icon-remove-circle icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-remove-circle
- <small>
- <i class="icon-remove-circle"></i> &middot;
- Unicode: <span class="upper">f05c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-remove-circle"></i> icon-remove-circle
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-remove-circle&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-remove-circle
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/remove-sign/index.html b/library/font_awesome/src/3.2.1/icon/remove-sign/index.html
deleted file mode 100644
index e20bda87b..000000000
--- a/library/font_awesome/src/3.2.1/icon/remove-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-remove-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-remove-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-remove-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-remove-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-remove-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-remove-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-remove-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-remove-sign
- <small>
- <i class="icon-remove-sign"></i> &middot;
- Unicode: <span class="upper">f057</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-remove-sign"></i> icon-remove-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-remove-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-remove-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/remove/index.html b/library/font_awesome/src/3.2.1/icon/remove/index.html
deleted file mode 100644
index 5b70894cd..000000000
--- a/library/font_awesome/src/3.2.1/icon/remove/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-remove: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-remove icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-remove icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-remove icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-remove icon-3"></i>&nbsp;&nbsp;
- <i class="icon-remove icon-2"></i>&nbsp;
- </span>
- <i class="icon-remove icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-remove
- <small>
- <i class="icon-remove"></i> &middot;
- Unicode: <span class="upper">f00d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-remove"></i> icon-remove
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-remove&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-remove
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/renren/index.html b/library/font_awesome/src/3.2.1/icon/renren/index.html
deleted file mode 100644
index d549c17d0..000000000
--- a/library/font_awesome/src/3.2.1/icon/renren/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-renren: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-renren icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-renren icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-renren icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-renren icon-3"></i>&nbsp;&nbsp;
- <i class="icon-renren icon-2"></i>&nbsp;
- </span>
- <i class="icon-renren icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-renren
- <small>
- <i class="icon-renren"></i> &middot;
- Unicode: <span class="upper">f18b</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-renren"></i> icon-renren
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-renren&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-renren
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/reorder/index.html b/library/font_awesome/src/3.2.1/icon/reorder/index.html
deleted file mode 100644
index 6e87cbd72..000000000
--- a/library/font_awesome/src/3.2.1/icon/reorder/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-reorder: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-reorder icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-reorder icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-reorder icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-reorder icon-3"></i>&nbsp;&nbsp;
- <i class="icon-reorder icon-2"></i>&nbsp;
- </span>
- <i class="icon-reorder icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-reorder
- <small>
- <i class="icon-reorder"></i> &middot;
- Unicode: <span class="upper">f0c9</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-reorder"></i> icon-reorder
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-reorder&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-reorder
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/repeat/index.html b/library/font_awesome/src/3.2.1/icon/repeat/index.html
deleted file mode 100644
index 78b074fa5..000000000
--- a/library/font_awesome/src/3.2.1/icon/repeat/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-repeat: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-repeat icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-repeat icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-repeat icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-repeat icon-3"></i>&nbsp;&nbsp;
- <i class="icon-repeat icon-2"></i>&nbsp;
- </span>
- <i class="icon-repeat icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-repeat
- <small>
- <i class="icon-repeat"></i> &middot;
- Unicode: <span class="upper">f01e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- &middot; Aliases:
-
- icon-rotate-right
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-repeat"></i> icon-repeat
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-repeat&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-repeat
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/reply-all/index.html b/library/font_awesome/src/3.2.1/icon/reply-all/index.html
deleted file mode 100644
index 2a9e117a7..000000000
--- a/library/font_awesome/src/3.2.1/icon/reply-all/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-reply-all: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-reply-all icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-reply-all icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-reply-all icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-reply-all icon-3"></i>&nbsp;&nbsp;
- <i class="icon-reply-all icon-2"></i>&nbsp;
- </span>
- <i class="icon-reply-all icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-reply-all
- <small>
- <i class="icon-reply-all"></i> &middot;
- Unicode: <span class="upper">f122</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-reply-all"></i> icon-reply-all
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-reply-all&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-reply-all
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/reply/index.html b/library/font_awesome/src/3.2.1/icon/reply/index.html
deleted file mode 100644
index d1da772ee..000000000
--- a/library/font_awesome/src/3.2.1/icon/reply/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-reply: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-reply icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-reply icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-reply icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-reply icon-3"></i>&nbsp;&nbsp;
- <i class="icon-reply icon-2"></i>&nbsp;
- </span>
- <i class="icon-reply icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-reply
- <small>
- <i class="icon-reply"></i> &middot;
- Unicode: <span class="upper">f112</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-mail-reply
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-reply"></i> icon-reply
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-reply&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-reply
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/resize-full/index.html b/library/font_awesome/src/3.2.1/icon/resize-full/index.html
deleted file mode 100644
index fe78c6d5a..000000000
--- a/library/font_awesome/src/3.2.1/icon/resize-full/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-resize-full: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-resize-full icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-resize-full icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-resize-full icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-resize-full icon-3"></i>&nbsp;&nbsp;
- <i class="icon-resize-full icon-2"></i>&nbsp;
- </span>
- <i class="icon-resize-full icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-resize-full
- <small>
- <i class="icon-resize-full"></i> &middot;
- Unicode: <span class="upper">f065</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-resize-full"></i> icon-resize-full
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-resize-full&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-resize-full
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/resize-horizontal/index.html b/library/font_awesome/src/3.2.1/icon/resize-horizontal/index.html
deleted file mode 100644
index 2e5518d98..000000000
--- a/library/font_awesome/src/3.2.1/icon/resize-horizontal/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-resize-horizontal: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-resize-horizontal icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-resize-horizontal icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-resize-horizontal icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-resize-horizontal icon-3"></i>&nbsp;&nbsp;
- <i class="icon-resize-horizontal icon-2"></i>&nbsp;
- </span>
- <i class="icon-resize-horizontal icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-resize-horizontal
- <small>
- <i class="icon-resize-horizontal"></i> &middot;
- Unicode: <span class="upper">f07e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-resize-horizontal"></i> icon-resize-horizontal
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-resize-horizontal&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-resize-horizontal
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/resize-small/index.html b/library/font_awesome/src/3.2.1/icon/resize-small/index.html
deleted file mode 100644
index 53ff95709..000000000
--- a/library/font_awesome/src/3.2.1/icon/resize-small/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-resize-small: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-resize-small icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-resize-small icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-resize-small icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-resize-small icon-3"></i>&nbsp;&nbsp;
- <i class="icon-resize-small icon-2"></i>&nbsp;
- </span>
- <i class="icon-resize-small icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-resize-small
- <small>
- <i class="icon-resize-small"></i> &middot;
- Unicode: <span class="upper">f066</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-resize-small"></i> icon-resize-small
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-resize-small&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-resize-small
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/resize-vertical/index.html b/library/font_awesome/src/3.2.1/icon/resize-vertical/index.html
deleted file mode 100644
index d90512929..000000000
--- a/library/font_awesome/src/3.2.1/icon/resize-vertical/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-resize-vertical: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-resize-vertical icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-resize-vertical icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-resize-vertical icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-resize-vertical icon-3"></i>&nbsp;&nbsp;
- <i class="icon-resize-vertical icon-2"></i>&nbsp;
- </span>
- <i class="icon-resize-vertical icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-resize-vertical
- <small>
- <i class="icon-resize-vertical"></i> &middot;
- Unicode: <span class="upper">f07d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-resize-vertical"></i> icon-resize-vertical
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-resize-vertical&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-resize-vertical
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/retweet/index.html b/library/font_awesome/src/3.2.1/icon/retweet/index.html
deleted file mode 100644
index 49c0c051d..000000000
--- a/library/font_awesome/src/3.2.1/icon/retweet/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-retweet: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-retweet icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-retweet icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-retweet icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-retweet icon-3"></i>&nbsp;&nbsp;
- <i class="icon-retweet icon-2"></i>&nbsp;
- </span>
- <i class="icon-retweet icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-retweet
- <small>
- <i class="icon-retweet"></i> &middot;
- Unicode: <span class="upper">f079</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-retweet"></i> icon-retweet
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-retweet&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-retweet
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/road/index.html b/library/font_awesome/src/3.2.1/icon/road/index.html
deleted file mode 100644
index 11b722737..000000000
--- a/library/font_awesome/src/3.2.1/icon/road/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-road: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-road icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-road icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-road icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-road icon-3"></i>&nbsp;&nbsp;
- <i class="icon-road icon-2"></i>&nbsp;
- </span>
- <i class="icon-road icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-road
- <small>
- <i class="icon-road"></i> &middot;
- Unicode: <span class="upper">f018</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-road"></i> icon-road
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-road&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-road
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/rocket/index.html b/library/font_awesome/src/3.2.1/icon/rocket/index.html
deleted file mode 100644
index 7e8feb6d5..000000000
--- a/library/font_awesome/src/3.2.1/icon/rocket/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-rocket: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-rocket icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-rocket icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-rocket icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-rocket icon-3"></i>&nbsp;&nbsp;
- <i class="icon-rocket icon-2"></i>&nbsp;
- </span>
- <i class="icon-rocket icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-rocket
- <small>
- <i class="icon-rocket"></i> &middot;
- Unicode: <span class="upper">f135</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-rocket"></i> icon-rocket
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-rocket&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-rocket
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/rss-sign/index.html b/library/font_awesome/src/3.2.1/icon/rss-sign/index.html
deleted file mode 100644
index fb0e23691..000000000
--- a/library/font_awesome/src/3.2.1/icon/rss-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-rss-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-rss-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-rss-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-rss-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-rss-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-rss-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-rss-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-rss-sign
- <small>
- <i class="icon-rss-sign"></i> &middot;
- Unicode: <span class="upper">f143</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-rss-sign"></i> icon-rss-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-rss-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-rss-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/rss/index.html b/library/font_awesome/src/3.2.1/icon/rss/index.html
deleted file mode 100644
index b461d6712..000000000
--- a/library/font_awesome/src/3.2.1/icon/rss/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-rss: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-rss icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-rss icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-rss icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-rss icon-3"></i>&nbsp;&nbsp;
- <i class="icon-rss icon-2"></i>&nbsp;
- </span>
- <i class="icon-rss icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-rss
- <small>
- <i class="icon-rss"></i> &middot;
- Unicode: <span class="upper">f09e</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-rss"></i> icon-rss
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-rss&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-rss
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/save/index.html b/library/font_awesome/src/3.2.1/icon/save/index.html
deleted file mode 100644
index eef9f72fc..000000000
--- a/library/font_awesome/src/3.2.1/icon/save/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-save: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-save icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-save icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-save icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-save icon-3"></i>&nbsp;&nbsp;
- <i class="icon-save icon-2"></i>&nbsp;
- </span>
- <i class="icon-save icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-save
- <small>
- <i class="icon-save"></i> &middot;
- Unicode: <span class="upper">f0c7</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-save"></i> icon-save
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-save&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-save
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/screenshot/index.html b/library/font_awesome/src/3.2.1/icon/screenshot/index.html
deleted file mode 100644
index 7d58b8985..000000000
--- a/library/font_awesome/src/3.2.1/icon/screenshot/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-screenshot: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-screenshot icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-screenshot icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-screenshot icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-screenshot icon-3"></i>&nbsp;&nbsp;
- <i class="icon-screenshot icon-2"></i>&nbsp;
- </span>
- <i class="icon-screenshot icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-screenshot
- <small>
- <i class="icon-screenshot"></i> &middot;
- Unicode: <span class="upper">f05b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-screenshot"></i> icon-screenshot
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-screenshot&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-screenshot
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/search/index.html b/library/font_awesome/src/3.2.1/icon/search/index.html
deleted file mode 100644
index 89e4121d4..000000000
--- a/library/font_awesome/src/3.2.1/icon/search/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-search: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-search icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-search icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-search icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-search icon-3"></i>&nbsp;&nbsp;
- <i class="icon-search icon-2"></i>&nbsp;
- </span>
- <i class="icon-search icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-search
- <small>
- <i class="icon-search"></i> &middot;
- Unicode: <span class="upper">f002</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-search"></i> icon-search
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-search&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-search
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/share-alt/index.html b/library/font_awesome/src/3.2.1/icon/share-alt/index.html
deleted file mode 100644
index 34487dac7..000000000
--- a/library/font_awesome/src/3.2.1/icon/share-alt/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-share-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-share-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-share-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-share-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-share-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-share-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-share-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-share-alt
- <small>
- <i class="icon-share-alt"></i> &middot;
- Unicode: <span class="upper">f064</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-mail-forward
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-share-alt"></i> icon-share-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-share-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-share-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/share-sign/index.html b/library/font_awesome/src/3.2.1/icon/share-sign/index.html
deleted file mode 100644
index bc2fa62ee..000000000
--- a/library/font_awesome/src/3.2.1/icon/share-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-share-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-share-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-share-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-share-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-share-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-share-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-share-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-share-sign
- <small>
- <i class="icon-share-sign"></i> &middot;
- Unicode: <span class="upper">f14d</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-share-sign"></i> icon-share-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-share-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-share-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/share/index.html b/library/font_awesome/src/3.2.1/icon/share/index.html
deleted file mode 100644
index 5065e37f6..000000000
--- a/library/font_awesome/src/3.2.1/icon/share/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-share: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-share icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-share icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-share icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-share icon-3"></i>&nbsp;&nbsp;
- <i class="icon-share icon-2"></i>&nbsp;
- </span>
- <i class="icon-share icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-share
- <small>
- <i class="icon-share"></i> &middot;
- Unicode: <span class="upper">f045</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-share"></i> icon-share
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-share&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-share
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/shield/index.html b/library/font_awesome/src/3.2.1/icon/shield/index.html
deleted file mode 100644
index 1c8cfc738..000000000
--- a/library/font_awesome/src/3.2.1/icon/shield/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-shield: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-shield icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-shield icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-shield icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-shield icon-3"></i>&nbsp;&nbsp;
- <i class="icon-shield icon-2"></i>&nbsp;
- </span>
- <i class="icon-shield icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-shield
- <small>
- <i class="icon-shield"></i> &middot;
- Unicode: <span class="upper">f132</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-shield"></i> icon-shield
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shield&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-shield
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/shopping-cart/index.html b/library/font_awesome/src/3.2.1/icon/shopping-cart/index.html
deleted file mode 100644
index 62eb1b462..000000000
--- a/library/font_awesome/src/3.2.1/icon/shopping-cart/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-shopping-cart: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-shopping-cart icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-shopping-cart icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-shopping-cart icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-shopping-cart icon-3"></i>&nbsp;&nbsp;
- <i class="icon-shopping-cart icon-2"></i>&nbsp;
- </span>
- <i class="icon-shopping-cart icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-shopping-cart
- <small>
- <i class="icon-shopping-cart"></i> &middot;
- Unicode: <span class="upper">f07a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-shopping-cart"></i> icon-shopping-cart
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-shopping-cart&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-shopping-cart
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sign-blank/index.html b/library/font_awesome/src/3.2.1/icon/sign-blank/index.html
deleted file mode 100644
index 105a6b760..000000000
--- a/library/font_awesome/src/3.2.1/icon/sign-blank/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sign-blank: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sign-blank icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sign-blank icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sign-blank icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sign-blank icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sign-blank icon-2"></i>&nbsp;
- </span>
- <i class="icon-sign-blank icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sign-blank
- <small>
- <i class="icon-sign-blank"></i> &middot;
- Unicode: <span class="upper">f0c8</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sign-blank"></i> icon-sign-blank
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sign-blank&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sign-blank
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/signal/index.html b/library/font_awesome/src/3.2.1/icon/signal/index.html
deleted file mode 100644
index 90a065df3..000000000
--- a/library/font_awesome/src/3.2.1/icon/signal/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-signal: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-signal icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-signal icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-signal icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-signal icon-3"></i>&nbsp;&nbsp;
- <i class="icon-signal icon-2"></i>&nbsp;
- </span>
- <i class="icon-signal icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-signal
- <small>
- <i class="icon-signal"></i> &middot;
- Unicode: <span class="upper">f012</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-signal"></i> icon-signal
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-signal&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-signal
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/signin/index.html b/library/font_awesome/src/3.2.1/icon/signin/index.html
deleted file mode 100644
index dce861178..000000000
--- a/library/font_awesome/src/3.2.1/icon/signin/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-signin: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-signin icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-signin icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-signin icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-signin icon-3"></i>&nbsp;&nbsp;
- <i class="icon-signin icon-2"></i>&nbsp;
- </span>
- <i class="icon-signin icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-signin
- <small>
- <i class="icon-signin"></i> &middot;
- Unicode: <span class="upper">f090</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-signin"></i> icon-signin
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-signin&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-signin
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/signout/index.html b/library/font_awesome/src/3.2.1/icon/signout/index.html
deleted file mode 100644
index ff4999460..000000000
--- a/library/font_awesome/src/3.2.1/icon/signout/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-signout: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-signout icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-signout icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-signout icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-signout icon-3"></i>&nbsp;&nbsp;
- <i class="icon-signout icon-2"></i>&nbsp;
- </span>
- <i class="icon-signout icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-signout
- <small>
- <i class="icon-signout"></i> &middot;
- Unicode: <span class="upper">f08b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-signout"></i> icon-signout
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-signout&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-signout
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sitemap/index.html b/library/font_awesome/src/3.2.1/icon/sitemap/index.html
deleted file mode 100644
index 4cc279994..000000000
--- a/library/font_awesome/src/3.2.1/icon/sitemap/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sitemap: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sitemap icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sitemap icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sitemap icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sitemap icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sitemap icon-2"></i>&nbsp;
- </span>
- <i class="icon-sitemap icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sitemap
- <small>
- <i class="icon-sitemap"></i> &middot;
- Unicode: <span class="upper">f0e8</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sitemap"></i> icon-sitemap
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sitemap&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sitemap
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/skype/index.html b/library/font_awesome/src/3.2.1/icon/skype/index.html
deleted file mode 100644
index 68b975feb..000000000
--- a/library/font_awesome/src/3.2.1/icon/skype/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-skype: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-skype icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-skype icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-skype icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-skype icon-3"></i>&nbsp;&nbsp;
- <i class="icon-skype icon-2"></i>&nbsp;
- </span>
- <i class="icon-skype icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-skype
- <small>
- <i class="icon-skype"></i> &middot;
- Unicode: <span class="upper">f17e</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-skype"></i> icon-skype
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-skype&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-skype
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/smile/index.html b/library/font_awesome/src/3.2.1/icon/smile/index.html
deleted file mode 100644
index 935e0be8b..000000000
--- a/library/font_awesome/src/3.2.1/icon/smile/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-smile: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-smile icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-smile icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-smile icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-smile icon-3"></i>&nbsp;&nbsp;
- <i class="icon-smile icon-2"></i>&nbsp;
- </span>
- <i class="icon-smile icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-smile
- <small>
- <i class="icon-smile"></i> &middot;
- Unicode: <span class="upper">f118</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-smile"></i> icon-smile
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-smile&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-smile
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html b/library/font_awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html
deleted file mode 100644
index acb7c86e5..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-by-alphabet-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-by-alphabet-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-by-alphabet-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-by-alphabet-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-by-alphabet-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-by-alphabet-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-by-alphabet-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-by-alphabet-alt
- <small>
- <i class="icon-sort-by-alphabet-alt"></i> &middot;
- Unicode: <span class="upper">f15e</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-by-alphabet-alt"></i> icon-sort-by-alphabet-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-by-alphabet-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-by-alphabet-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-by-alphabet/index.html b/library/font_awesome/src/3.2.1/icon/sort-by-alphabet/index.html
deleted file mode 100644
index 293cb18f9..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-by-alphabet/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-by-alphabet: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-by-alphabet icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-by-alphabet icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-by-alphabet icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-by-alphabet icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-by-alphabet icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-by-alphabet icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-by-alphabet
- <small>
- <i class="icon-sort-by-alphabet"></i> &middot;
- Unicode: <span class="upper">f15d</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-by-alphabet"></i> icon-sort-by-alphabet
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-by-alphabet&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-by-alphabet
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html b/library/font_awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html
deleted file mode 100644
index 680bea787..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-by-attributes-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-by-attributes-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-by-attributes-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-by-attributes-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-by-attributes-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-by-attributes-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-by-attributes-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-by-attributes-alt
- <small>
- <i class="icon-sort-by-attributes-alt"></i> &middot;
- Unicode: <span class="upper">f161</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-by-attributes-alt"></i> icon-sort-by-attributes-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-by-attributes-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-by-attributes-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-by-attributes/index.html b/library/font_awesome/src/3.2.1/icon/sort-by-attributes/index.html
deleted file mode 100644
index e91164ccf..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-by-attributes/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-by-attributes: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-by-attributes icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-by-attributes icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-by-attributes icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-by-attributes icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-by-attributes icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-by-attributes icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-by-attributes
- <small>
- <i class="icon-sort-by-attributes"></i> &middot;
- Unicode: <span class="upper">f160</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-by-attributes"></i> icon-sort-by-attributes
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-by-attributes&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-by-attributes
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-by-order-alt/index.html b/library/font_awesome/src/3.2.1/icon/sort-by-order-alt/index.html
deleted file mode 100644
index ca0029d7e..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-by-order-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-by-order-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-by-order-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-by-order-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-by-order-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-by-order-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-by-order-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-by-order-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-by-order-alt
- <small>
- <i class="icon-sort-by-order-alt"></i> &middot;
- Unicode: <span class="upper">f163</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-by-order-alt"></i> icon-sort-by-order-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-by-order-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-by-order-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-by-order/index.html b/library/font_awesome/src/3.2.1/icon/sort-by-order/index.html
deleted file mode 100644
index cfd4f84ee..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-by-order/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-by-order: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-by-order icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-by-order icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-by-order icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-by-order icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-by-order icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-by-order icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-by-order
- <small>
- <i class="icon-sort-by-order"></i> &middot;
- Unicode: <span class="upper">f162</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-by-order"></i> icon-sort-by-order
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-by-order&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-by-order
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-down/index.html b/library/font_awesome/src/3.2.1/icon/sort-down/index.html
deleted file mode 100644
index 4f4271609..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-down
- <small>
- <i class="icon-sort-down"></i> &middot;
- Unicode: <span class="upper">f0dd</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-down"></i> icon-sort-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort-up/index.html b/library/font_awesome/src/3.2.1/icon/sort-up/index.html
deleted file mode 100644
index 1d0540f63..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort-up
- <small>
- <i class="icon-sort-up"></i> &middot;
- Unicode: <span class="upper">f0de</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort-up"></i> icon-sort-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sort/index.html b/library/font_awesome/src/3.2.1/icon/sort/index.html
deleted file mode 100644
index 67b87cd42..000000000
--- a/library/font_awesome/src/3.2.1/icon/sort/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sort: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sort icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sort icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sort icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sort icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sort icon-2"></i>&nbsp;
- </span>
- <i class="icon-sort icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sort
- <small>
- <i class="icon-sort"></i> &middot;
- Unicode: <span class="upper">f0dc</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sort"></i> icon-sort
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sort&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sort
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/spinner/index.html b/library/font_awesome/src/3.2.1/icon/spinner/index.html
deleted file mode 100644
index 8fd7bf836..000000000
--- a/library/font_awesome/src/3.2.1/icon/spinner/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-spinner: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-spinner icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-spinner icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-spinner icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-spinner icon-3"></i>&nbsp;&nbsp;
- <i class="icon-spinner icon-2"></i>&nbsp;
- </span>
- <i class="icon-spinner icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-spinner
- <small>
- <i class="icon-spinner"></i> &middot;
- Unicode: <span class="upper">f110</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-spinner"></i> icon-spinner
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-spinner&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-spinner
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/stackexchange/index.html b/library/font_awesome/src/3.2.1/icon/stackexchange/index.html
deleted file mode 100644
index 8a569376d..000000000
--- a/library/font_awesome/src/3.2.1/icon/stackexchange/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-stackexchange: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-stackexchange icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-stackexchange icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-stackexchange icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-stackexchange icon-3"></i>&nbsp;&nbsp;
- <i class="icon-stackexchange icon-2"></i>&nbsp;
- </span>
- <i class="icon-stackexchange icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-stackexchange
- <small>
- <i class="icon-stackexchange"></i> &middot;
- Unicode: <span class="upper">f16c</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-stackexchange"></i> icon-stackexchange
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-stackexchange&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-stackexchange
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/star-empty/index.html b/library/font_awesome/src/3.2.1/icon/star-empty/index.html
deleted file mode 100644
index f0de9b04e..000000000
--- a/library/font_awesome/src/3.2.1/icon/star-empty/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-star-empty: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-star-empty icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-star-empty icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-star-empty icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-star-empty icon-3"></i>&nbsp;&nbsp;
- <i class="icon-star-empty icon-2"></i>&nbsp;
- </span>
- <i class="icon-star-empty icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-star-empty
- <small>
- <i class="icon-star-empty"></i> &middot;
- Unicode: <span class="upper">f006</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-star-empty"></i> icon-star-empty
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-star-empty&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-star-empty
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/star-half-empty/index.html b/library/font_awesome/src/3.2.1/icon/star-half-empty/index.html
deleted file mode 100644
index 82b9e61d9..000000000
--- a/library/font_awesome/src/3.2.1/icon/star-half-empty/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-star-half-empty: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-star-half-empty icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-star-half-empty icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-star-half-empty icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-star-half-empty icon-3"></i>&nbsp;&nbsp;
- <i class="icon-star-half-empty icon-2"></i>&nbsp;
- </span>
- <i class="icon-star-half-empty icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-star-half-empty
- <small>
- <i class="icon-star-half-empty"></i> &middot;
- Unicode: <span class="upper">f123</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- &middot; Aliases:
-
- icon-star-half-full
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-star-half-empty"></i> icon-star-half-empty
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-star-half-empty&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-star-half-empty
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/star-half/index.html b/library/font_awesome/src/3.2.1/icon/star-half/index.html
deleted file mode 100644
index 1411b0075..000000000
--- a/library/font_awesome/src/3.2.1/icon/star-half/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-star-half: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-star-half icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-star-half icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-star-half icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-star-half icon-3"></i>&nbsp;&nbsp;
- <i class="icon-star-half icon-2"></i>&nbsp;
- </span>
- <i class="icon-star-half icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-star-half
- <small>
- <i class="icon-star-half"></i> &middot;
- Unicode: <span class="upper">f089</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-star-half"></i> icon-star-half
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-star-half&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-star-half
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/star/index.html b/library/font_awesome/src/3.2.1/icon/star/index.html
deleted file mode 100644
index 5defff409..000000000
--- a/library/font_awesome/src/3.2.1/icon/star/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-star: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-star icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-star icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-star icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-star icon-3"></i>&nbsp;&nbsp;
- <i class="icon-star icon-2"></i>&nbsp;
- </span>
- <i class="icon-star icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-star
- <small>
- <i class="icon-star"></i> &middot;
- Unicode: <span class="upper">f005</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-star"></i> icon-star
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-star&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-star
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/step-backward/index.html b/library/font_awesome/src/3.2.1/icon/step-backward/index.html
deleted file mode 100644
index afbfc6572..000000000
--- a/library/font_awesome/src/3.2.1/icon/step-backward/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-step-backward: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-step-backward icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-step-backward icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-step-backward icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-step-backward icon-3"></i>&nbsp;&nbsp;
- <i class="icon-step-backward icon-2"></i>&nbsp;
- </span>
- <i class="icon-step-backward icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-step-backward
- <small>
- <i class="icon-step-backward"></i> &middot;
- Unicode: <span class="upper">f048</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-step-backward"></i> icon-step-backward
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-step-backward&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-step-backward
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/step-forward/index.html b/library/font_awesome/src/3.2.1/icon/step-forward/index.html
deleted file mode 100644
index 18ba8dc5e..000000000
--- a/library/font_awesome/src/3.2.1/icon/step-forward/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-step-forward: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-step-forward icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-step-forward icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-step-forward icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-step-forward icon-3"></i>&nbsp;&nbsp;
- <i class="icon-step-forward icon-2"></i>&nbsp;
- </span>
- <i class="icon-step-forward icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-step-forward
- <small>
- <i class="icon-step-forward"></i> &middot;
- Unicode: <span class="upper">f051</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-step-forward"></i> icon-step-forward
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-step-forward&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-step-forward
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/stethoscope/index.html b/library/font_awesome/src/3.2.1/icon/stethoscope/index.html
deleted file mode 100644
index f4bd96121..000000000
--- a/library/font_awesome/src/3.2.1/icon/stethoscope/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-stethoscope: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-stethoscope icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-stethoscope icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-stethoscope icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-stethoscope icon-3"></i>&nbsp;&nbsp;
- <i class="icon-stethoscope icon-2"></i>&nbsp;
- </span>
- <i class="icon-stethoscope icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-stethoscope
- <small>
- <i class="icon-stethoscope"></i> &middot;
- Unicode: <span class="upper">f0f1</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Medical Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-stethoscope"></i> icon-stethoscope
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-stethoscope&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-stethoscope
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/stop/index.html b/library/font_awesome/src/3.2.1/icon/stop/index.html
deleted file mode 100644
index d470aad76..000000000
--- a/library/font_awesome/src/3.2.1/icon/stop/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-stop: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-stop icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-stop icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-stop icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-stop icon-3"></i>&nbsp;&nbsp;
- <i class="icon-stop icon-2"></i>&nbsp;
- </span>
- <i class="icon-stop icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-stop
- <small>
- <i class="icon-stop"></i> &middot;
- Unicode: <span class="upper">f04d</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-stop"></i> icon-stop
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-stop&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-stop
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/strikethrough/index.html b/library/font_awesome/src/3.2.1/icon/strikethrough/index.html
deleted file mode 100644
index 290a87e12..000000000
--- a/library/font_awesome/src/3.2.1/icon/strikethrough/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-strikethrough: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-strikethrough icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-strikethrough icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-strikethrough icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-strikethrough icon-3"></i>&nbsp;&nbsp;
- <i class="icon-strikethrough icon-2"></i>&nbsp;
- </span>
- <i class="icon-strikethrough icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-strikethrough
- <small>
- <i class="icon-strikethrough"></i> &middot;
- Unicode: <span class="upper">f0cc</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-strikethrough"></i> icon-strikethrough
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-strikethrough&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-strikethrough
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/subscript/index.html b/library/font_awesome/src/3.2.1/icon/subscript/index.html
deleted file mode 100644
index 6f002b402..000000000
--- a/library/font_awesome/src/3.2.1/icon/subscript/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-subscript: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-subscript icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-subscript icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-subscript icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-subscript icon-3"></i>&nbsp;&nbsp;
- <i class="icon-subscript icon-2"></i>&nbsp;
- </span>
- <i class="icon-subscript icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-subscript
- <small>
- <i class="icon-subscript"></i> &middot;
- Unicode: <span class="upper">f12c</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-subscript"></i> icon-subscript
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-subscript&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-subscript
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/suitcase/index.html b/library/font_awesome/src/3.2.1/icon/suitcase/index.html
deleted file mode 100644
index 31904aeed..000000000
--- a/library/font_awesome/src/3.2.1/icon/suitcase/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-suitcase: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-suitcase icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-suitcase icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-suitcase icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-suitcase icon-3"></i>&nbsp;&nbsp;
- <i class="icon-suitcase icon-2"></i>&nbsp;
- </span>
- <i class="icon-suitcase icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-suitcase
- <small>
- <i class="icon-suitcase"></i> &middot;
- Unicode: <span class="upper">f0f2</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-suitcase"></i> icon-suitcase
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-suitcase&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-suitcase
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/sun/index.html b/library/font_awesome/src/3.2.1/icon/sun/index.html
deleted file mode 100644
index b51eb9f82..000000000
--- a/library/font_awesome/src/3.2.1/icon/sun/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-sun: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-sun icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-sun icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-sun icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-sun icon-3"></i>&nbsp;&nbsp;
- <i class="icon-sun icon-2"></i>&nbsp;
- </span>
- <i class="icon-sun icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-sun
- <small>
- <i class="icon-sun"></i> &middot;
- Unicode: <span class="upper">f185</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-sun"></i> icon-sun
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-sun&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-sun
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/superscript/index.html b/library/font_awesome/src/3.2.1/icon/superscript/index.html
deleted file mode 100644
index 26a79f1af..000000000
--- a/library/font_awesome/src/3.2.1/icon/superscript/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-superscript: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-superscript icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-superscript icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-superscript icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-superscript icon-3"></i>&nbsp;&nbsp;
- <i class="icon-superscript icon-2"></i>&nbsp;
- </span>
- <i class="icon-superscript icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-superscript
- <small>
- <i class="icon-superscript"></i> &middot;
- Unicode: <span class="upper">f12b</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-superscript"></i> icon-superscript
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-superscript&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-superscript
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/table/index.html b/library/font_awesome/src/3.2.1/icon/table/index.html
deleted file mode 100644
index 333ae25d5..000000000
--- a/library/font_awesome/src/3.2.1/icon/table/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-table: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-table icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-table icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-table icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-table icon-3"></i>&nbsp;&nbsp;
- <i class="icon-table icon-2"></i>&nbsp;
- </span>
- <i class="icon-table icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-table
- <small>
- <i class="icon-table"></i> &middot;
- Unicode: <span class="upper">f0ce</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-table"></i> icon-table
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-table&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-table
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tablet/index.html b/library/font_awesome/src/3.2.1/icon/tablet/index.html
deleted file mode 100644
index 145880116..000000000
--- a/library/font_awesome/src/3.2.1/icon/tablet/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tablet: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tablet icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tablet icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tablet icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tablet icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tablet icon-2"></i>&nbsp;
- </span>
- <i class="icon-tablet icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tablet
- <small>
- <i class="icon-tablet"></i> &middot;
- Unicode: <span class="upper">f10a</span> &middot;
- Created: v3.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tablet"></i> icon-tablet
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tablet&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tablet
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tag/index.html b/library/font_awesome/src/3.2.1/icon/tag/index.html
deleted file mode 100644
index 6db72cef8..000000000
--- a/library/font_awesome/src/3.2.1/icon/tag/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tag: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tag icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tag icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tag icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tag icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tag icon-2"></i>&nbsp;
- </span>
- <i class="icon-tag icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tag
- <small>
- <i class="icon-tag"></i> &middot;
- Unicode: <span class="upper">f02b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tag"></i> icon-tag
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tag&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tag
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tags/index.html b/library/font_awesome/src/3.2.1/icon/tags/index.html
deleted file mode 100644
index a6bbaf6c0..000000000
--- a/library/font_awesome/src/3.2.1/icon/tags/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tags: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tags icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tags icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tags icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tags icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tags icon-2"></i>&nbsp;
- </span>
- <i class="icon-tags icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tags
- <small>
- <i class="icon-tags"></i> &middot;
- Unicode: <span class="upper">f02c</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tags"></i> icon-tags
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tags&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tags
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tasks/index.html b/library/font_awesome/src/3.2.1/icon/tasks/index.html
deleted file mode 100644
index 1286518ba..000000000
--- a/library/font_awesome/src/3.2.1/icon/tasks/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tasks: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tasks icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tasks icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tasks icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tasks icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tasks icon-2"></i>&nbsp;
- </span>
- <i class="icon-tasks icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tasks
- <small>
- <i class="icon-tasks"></i> &middot;
- Unicode: <span class="upper">f0ae</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tasks"></i> icon-tasks
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tasks&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tasks
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/terminal/index.html b/library/font_awesome/src/3.2.1/icon/terminal/index.html
deleted file mode 100644
index 3b42e117b..000000000
--- a/library/font_awesome/src/3.2.1/icon/terminal/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-terminal: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-terminal icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-terminal icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-terminal icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-terminal icon-3"></i>&nbsp;&nbsp;
- <i class="icon-terminal icon-2"></i>&nbsp;
- </span>
- <i class="icon-terminal icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-terminal
- <small>
- <i class="icon-terminal"></i> &middot;
- Unicode: <span class="upper">f120</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-terminal"></i> icon-terminal
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-terminal&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-terminal
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/text-height/index.html b/library/font_awesome/src/3.2.1/icon/text-height/index.html
deleted file mode 100644
index db9fc1c97..000000000
--- a/library/font_awesome/src/3.2.1/icon/text-height/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-text-height: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-text-height icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-text-height icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-text-height icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-text-height icon-3"></i>&nbsp;&nbsp;
- <i class="icon-text-height icon-2"></i>&nbsp;
- </span>
- <i class="icon-text-height icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-text-height
- <small>
- <i class="icon-text-height"></i> &middot;
- Unicode: <span class="upper">f034</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-text-height"></i> icon-text-height
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-text-height&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-text-height
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/text-width/index.html b/library/font_awesome/src/3.2.1/icon/text-width/index.html
deleted file mode 100644
index a631f0381..000000000
--- a/library/font_awesome/src/3.2.1/icon/text-width/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-text-width: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-text-width icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-text-width icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-text-width icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-text-width icon-3"></i>&nbsp;&nbsp;
- <i class="icon-text-width icon-2"></i>&nbsp;
- </span>
- <i class="icon-text-width icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-text-width
- <small>
- <i class="icon-text-width"></i> &middot;
- Unicode: <span class="upper">f035</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-text-width"></i> icon-text-width
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-text-width&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-text-width
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/th-large/index.html b/library/font_awesome/src/3.2.1/icon/th-large/index.html
deleted file mode 100644
index 4bf7f8f64..000000000
--- a/library/font_awesome/src/3.2.1/icon/th-large/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-th-large: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-th-large icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-th-large icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-th-large icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-th-large icon-3"></i>&nbsp;&nbsp;
- <i class="icon-th-large icon-2"></i>&nbsp;
- </span>
- <i class="icon-th-large icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-th-large
- <small>
- <i class="icon-th-large"></i> &middot;
- Unicode: <span class="upper">f009</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-th-large"></i> icon-th-large
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-th-large&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-th-large
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/th-list/index.html b/library/font_awesome/src/3.2.1/icon/th-list/index.html
deleted file mode 100644
index 6e2054526..000000000
--- a/library/font_awesome/src/3.2.1/icon/th-list/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-th-list: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-th-list icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-th-list icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-th-list icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-th-list icon-3"></i>&nbsp;&nbsp;
- <i class="icon-th-list icon-2"></i>&nbsp;
- </span>
- <i class="icon-th-list icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-th-list
- <small>
- <i class="icon-th-list"></i> &middot;
- Unicode: <span class="upper">f00b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-th-list"></i> icon-th-list
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-th-list&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-th-list
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/th/index.html b/library/font_awesome/src/3.2.1/icon/th/index.html
deleted file mode 100644
index f5fab7507..000000000
--- a/library/font_awesome/src/3.2.1/icon/th/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-th: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-th icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-th icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-th icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-th icon-3"></i>&nbsp;&nbsp;
- <i class="icon-th icon-2"></i>&nbsp;
- </span>
- <i class="icon-th icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-th
- <small>
- <i class="icon-th"></i> &middot;
- Unicode: <span class="upper">f00a</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-th"></i> icon-th
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-th&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-th
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/thumbs-down-alt/index.html b/library/font_awesome/src/3.2.1/icon/thumbs-down-alt/index.html
deleted file mode 100644
index 72bfe5631..000000000
--- a/library/font_awesome/src/3.2.1/icon/thumbs-down-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-thumbs-down-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-thumbs-down-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-thumbs-down-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-thumbs-down-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-thumbs-down-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-thumbs-down-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-thumbs-down-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-thumbs-down-alt
- <small>
- <i class="icon-thumbs-down-alt"></i> &middot;
- Unicode: <span class="upper">f088</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-thumbs-down-alt"></i> icon-thumbs-down-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-thumbs-down-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-thumbs-down-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/thumbs-down/index.html b/library/font_awesome/src/3.2.1/icon/thumbs-down/index.html
deleted file mode 100644
index 0db7214e9..000000000
--- a/library/font_awesome/src/3.2.1/icon/thumbs-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-thumbs-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-thumbs-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-thumbs-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-thumbs-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-thumbs-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-thumbs-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-thumbs-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-thumbs-down
- <small>
- <i class="icon-thumbs-down"></i> &middot;
- Unicode: <span class="upper">f165</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-thumbs-down"></i> icon-thumbs-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-thumbs-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-thumbs-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/thumbs-up-alt/index.html b/library/font_awesome/src/3.2.1/icon/thumbs-up-alt/index.html
deleted file mode 100644
index 950e75270..000000000
--- a/library/font_awesome/src/3.2.1/icon/thumbs-up-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-thumbs-up-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-thumbs-up-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-thumbs-up-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-thumbs-up-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-thumbs-up-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-thumbs-up-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-thumbs-up-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-thumbs-up-alt
- <small>
- <i class="icon-thumbs-up-alt"></i> &middot;
- Unicode: <span class="upper">f087</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-thumbs-up-alt"></i> icon-thumbs-up-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-thumbs-up-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-thumbs-up-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/thumbs-up/index.html b/library/font_awesome/src/3.2.1/icon/thumbs-up/index.html
deleted file mode 100644
index 43564afa8..000000000
--- a/library/font_awesome/src/3.2.1/icon/thumbs-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-thumbs-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-thumbs-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-thumbs-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-thumbs-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-thumbs-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-thumbs-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-thumbs-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-thumbs-up
- <small>
- <i class="icon-thumbs-up"></i> &middot;
- Unicode: <span class="upper">f164</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-thumbs-up"></i> icon-thumbs-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-thumbs-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-thumbs-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/ticket/index.html b/library/font_awesome/src/3.2.1/icon/ticket/index.html
deleted file mode 100644
index c94a15f08..000000000
--- a/library/font_awesome/src/3.2.1/icon/ticket/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-ticket: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-ticket icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-ticket icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-ticket icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-ticket icon-3"></i>&nbsp;&nbsp;
- <i class="icon-ticket icon-2"></i>&nbsp;
- </span>
- <i class="icon-ticket icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-ticket
- <small>
- <i class="icon-ticket"></i> &middot;
- Unicode: <span class="upper">f145</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-ticket"></i> icon-ticket
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-ticket&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-ticket
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/time/index.html b/library/font_awesome/src/3.2.1/icon/time/index.html
deleted file mode 100644
index bfa505d9d..000000000
--- a/library/font_awesome/src/3.2.1/icon/time/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-time: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-time icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-time icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-time icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-time icon-3"></i>&nbsp;&nbsp;
- <i class="icon-time icon-2"></i>&nbsp;
- </span>
- <i class="icon-time icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-time
- <small>
- <i class="icon-time"></i> &middot;
- Unicode: <span class="upper">f017</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-time"></i> icon-time
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-time&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-time
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tint/index.html b/library/font_awesome/src/3.2.1/icon/tint/index.html
deleted file mode 100644
index 8e079ce01..000000000
--- a/library/font_awesome/src/3.2.1/icon/tint/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tint: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tint icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tint icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tint icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tint icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tint icon-2"></i>&nbsp;
- </span>
- <i class="icon-tint icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tint
- <small>
- <i class="icon-tint"></i> &middot;
- Unicode: <span class="upper">f043</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tint"></i> icon-tint
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tint&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tint
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/trash/index.html b/library/font_awesome/src/3.2.1/icon/trash/index.html
deleted file mode 100644
index e2d16ab2b..000000000
--- a/library/font_awesome/src/3.2.1/icon/trash/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-trash: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-trash icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-trash icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-trash icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-trash icon-3"></i>&nbsp;&nbsp;
- <i class="icon-trash icon-2"></i>&nbsp;
- </span>
- <i class="icon-trash icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-trash
- <small>
- <i class="icon-trash"></i> &middot;
- Unicode: <span class="upper">f014</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-trash"></i> icon-trash
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-trash&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-trash
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/trello/index.html b/library/font_awesome/src/3.2.1/icon/trello/index.html
deleted file mode 100644
index 3ea84577c..000000000
--- a/library/font_awesome/src/3.2.1/icon/trello/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-trello: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-trello icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-trello icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-trello icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-trello icon-3"></i>&nbsp;&nbsp;
- <i class="icon-trello icon-2"></i>&nbsp;
- </span>
- <i class="icon-trello icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-trello
- <small>
- <i class="icon-trello"></i> &middot;
- Unicode: <span class="upper">f181</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-trello"></i> icon-trello
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-trello&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-trello
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/trophy/index.html b/library/font_awesome/src/3.2.1/icon/trophy/index.html
deleted file mode 100644
index afc1542ad..000000000
--- a/library/font_awesome/src/3.2.1/icon/trophy/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-trophy: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-trophy icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-trophy icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-trophy icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-trophy icon-3"></i>&nbsp;&nbsp;
- <i class="icon-trophy icon-2"></i>&nbsp;
- </span>
- <i class="icon-trophy icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-trophy
- <small>
- <i class="icon-trophy"></i> &middot;
- Unicode: <span class="upper">f091</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-trophy"></i> icon-trophy
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-trophy&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-trophy
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/truck/index.html b/library/font_awesome/src/3.2.1/icon/truck/index.html
deleted file mode 100644
index fdc00d7df..000000000
--- a/library/font_awesome/src/3.2.1/icon/truck/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-truck: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-truck icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-truck icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-truck icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-truck icon-3"></i>&nbsp;&nbsp;
- <i class="icon-truck icon-2"></i>&nbsp;
- </span>
- <i class="icon-truck icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-truck
- <small>
- <i class="icon-truck"></i> &middot;
- Unicode: <span class="upper">f0d1</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-truck"></i> icon-truck
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-truck&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-truck
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tumblr-sign/index.html b/library/font_awesome/src/3.2.1/icon/tumblr-sign/index.html
deleted file mode 100644
index 9a613cbcc..000000000
--- a/library/font_awesome/src/3.2.1/icon/tumblr-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tumblr-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tumblr-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tumblr-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tumblr-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tumblr-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tumblr-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-tumblr-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tumblr-sign
- <small>
- <i class="icon-tumblr-sign"></i> &middot;
- Unicode: <span class="upper">f174</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tumblr-sign"></i> icon-tumblr-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tumblr-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tumblr-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/tumblr/index.html b/library/font_awesome/src/3.2.1/icon/tumblr/index.html
deleted file mode 100644
index fd7f30615..000000000
--- a/library/font_awesome/src/3.2.1/icon/tumblr/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-tumblr: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-tumblr icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-tumblr icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-tumblr icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-tumblr icon-3"></i>&nbsp;&nbsp;
- <i class="icon-tumblr icon-2"></i>&nbsp;
- </span>
- <i class="icon-tumblr icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-tumblr
- <small>
- <i class="icon-tumblr"></i> &middot;
- Unicode: <span class="upper">f173</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-tumblr"></i> icon-tumblr
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-tumblr&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-tumblr
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/twitter-sign/index.html b/library/font_awesome/src/3.2.1/icon/twitter-sign/index.html
deleted file mode 100644
index 009efcb2e..000000000
--- a/library/font_awesome/src/3.2.1/icon/twitter-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-twitter-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-twitter-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-twitter-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-twitter-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-twitter-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-twitter-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-twitter-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-twitter-sign
- <small>
- <i class="icon-twitter-sign"></i> &middot;
- Unicode: <span class="upper">f081</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-twitter-sign"></i> icon-twitter-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-twitter-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-twitter-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/twitter/index.html b/library/font_awesome/src/3.2.1/icon/twitter/index.html
deleted file mode 100644
index 42854fabc..000000000
--- a/library/font_awesome/src/3.2.1/icon/twitter/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-twitter: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-twitter icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-twitter icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-twitter icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-twitter icon-3"></i>&nbsp;&nbsp;
- <i class="icon-twitter icon-2"></i>&nbsp;
- </span>
- <i class="icon-twitter icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-twitter
- <small>
- <i class="icon-twitter"></i> &middot;
- Unicode: <span class="upper">f099</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-twitter"></i> icon-twitter
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-twitter&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-twitter
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/umbrella/index.html b/library/font_awesome/src/3.2.1/icon/umbrella/index.html
deleted file mode 100644
index af2a1a944..000000000
--- a/library/font_awesome/src/3.2.1/icon/umbrella/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-umbrella: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-umbrella icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-umbrella icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-umbrella icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-umbrella icon-3"></i>&nbsp;&nbsp;
- <i class="icon-umbrella icon-2"></i>&nbsp;
- </span>
- <i class="icon-umbrella icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-umbrella
- <small>
- <i class="icon-umbrella"></i> &middot;
- Unicode: <span class="upper">f0e9</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-umbrella"></i> icon-umbrella
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-umbrella&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-umbrella
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/underline/index.html b/library/font_awesome/src/3.2.1/icon/underline/index.html
deleted file mode 100644
index 2e493cd4e..000000000
--- a/library/font_awesome/src/3.2.1/icon/underline/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-underline: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-underline icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-underline icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-underline icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-underline icon-3"></i>&nbsp;&nbsp;
- <i class="icon-underline icon-2"></i>&nbsp;
- </span>
- <i class="icon-underline icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-underline
- <small>
- <i class="icon-underline"></i> &middot;
- Unicode: <span class="upper">f0cd</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-underline"></i> icon-underline
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-underline&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-underline
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/undo/index.html b/library/font_awesome/src/3.2.1/icon/undo/index.html
deleted file mode 100644
index d0f3a4615..000000000
--- a/library/font_awesome/src/3.2.1/icon/undo/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-undo: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-undo icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-undo icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-undo icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-undo icon-3"></i>&nbsp;&nbsp;
- <i class="icon-undo icon-2"></i>&nbsp;
- </span>
- <i class="icon-undo icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-undo
- <small>
- <i class="icon-undo"></i> &middot;
- Unicode: <span class="upper">f0e2</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- &middot; Aliases:
-
- icon-rotate-left
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-undo"></i> icon-undo
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-undo&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-undo
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/unlink/index.html b/library/font_awesome/src/3.2.1/icon/unlink/index.html
deleted file mode 100644
index d427fcca6..000000000
--- a/library/font_awesome/src/3.2.1/icon/unlink/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-unlink: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-unlink icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-unlink icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-unlink icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-unlink icon-3"></i>&nbsp;&nbsp;
- <i class="icon-unlink icon-2"></i>&nbsp;
- </span>
- <i class="icon-unlink icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-unlink
- <small>
- <i class="icon-unlink"></i> &middot;
- Unicode: <span class="upper">f127</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Text Editor Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-unlink"></i> icon-unlink
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-unlink&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-unlink
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/unlock-alt/index.html b/library/font_awesome/src/3.2.1/icon/unlock-alt/index.html
deleted file mode 100644
index 0bec883a5..000000000
--- a/library/font_awesome/src/3.2.1/icon/unlock-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-unlock-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-unlock-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-unlock-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-unlock-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-unlock-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-unlock-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-unlock-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-unlock-alt
- <small>
- <i class="icon-unlock-alt"></i> &middot;
- Unicode: <span class="upper">f13e</span> &middot;
- Created: v3.1 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-unlock-alt"></i> icon-unlock-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-unlock-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-unlock-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/unlock/index.html b/library/font_awesome/src/3.2.1/icon/unlock/index.html
deleted file mode 100644
index 9adf272fc..000000000
--- a/library/font_awesome/src/3.2.1/icon/unlock/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-unlock: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-unlock icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-unlock icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-unlock icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-unlock icon-3"></i>&nbsp;&nbsp;
- <i class="icon-unlock icon-2"></i>&nbsp;
- </span>
- <i class="icon-unlock icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-unlock
- <small>
- <i class="icon-unlock"></i> &middot;
- Unicode: <span class="upper">f09c</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-unlock"></i> icon-unlock
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-unlock&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-unlock
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/upload-alt/index.html b/library/font_awesome/src/3.2.1/icon/upload-alt/index.html
deleted file mode 100644
index f4664081c..000000000
--- a/library/font_awesome/src/3.2.1/icon/upload-alt/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-upload-alt: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-upload-alt icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-upload-alt icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-upload-alt icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-upload-alt icon-3"></i>&nbsp;&nbsp;
- <i class="icon-upload-alt icon-2"></i>&nbsp;
- </span>
- <i class="icon-upload-alt icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-upload-alt
- <small>
- <i class="icon-upload-alt"></i> &middot;
- Unicode: <span class="upper">f093</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-upload-alt"></i> icon-upload-alt
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-upload-alt&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-upload-alt
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/upload/index.html b/library/font_awesome/src/3.2.1/icon/upload/index.html
deleted file mode 100644
index 6119f9f4b..000000000
--- a/library/font_awesome/src/3.2.1/icon/upload/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-upload: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-upload icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-upload icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-upload icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-upload icon-3"></i>&nbsp;&nbsp;
- <i class="icon-upload icon-2"></i>&nbsp;
- </span>
- <i class="icon-upload icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-upload
- <small>
- <i class="icon-upload"></i> &middot;
- Unicode: <span class="upper">f01b</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-upload"></i> icon-upload
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-upload&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-upload
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/usd/index.html b/library/font_awesome/src/3.2.1/icon/usd/index.html
deleted file mode 100644
index 0d1d8a403..000000000
--- a/library/font_awesome/src/3.2.1/icon/usd/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-usd: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-usd icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-usd icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-usd icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-usd icon-3"></i>&nbsp;&nbsp;
- <i class="icon-usd icon-2"></i>&nbsp;
- </span>
- <i class="icon-usd icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-usd
- <small>
- <i class="icon-usd"></i> &middot;
- Unicode: <span class="upper">f155</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Currency Icons
-
-
-
- &middot; Aliases:
-
- icon-dollar
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-usd"></i> icon-usd
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-usd&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-usd
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/user-md/index.html b/library/font_awesome/src/3.2.1/icon/user-md/index.html
deleted file mode 100644
index 926509da7..000000000
--- a/library/font_awesome/src/3.2.1/icon/user-md/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-user-md: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-user-md icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-user-md icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-user-md icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-user-md icon-3"></i>&nbsp;&nbsp;
- <i class="icon-user-md icon-2"></i>&nbsp;
- </span>
- <i class="icon-user-md icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-user-md
- <small>
- <i class="icon-user-md"></i> &middot;
- Unicode: <span class="upper">f0f0</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Medical Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-user-md"></i> icon-user-md
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-user-md&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-user-md
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/user/index.html b/library/font_awesome/src/3.2.1/icon/user/index.html
deleted file mode 100644
index ce3e264a0..000000000
--- a/library/font_awesome/src/3.2.1/icon/user/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-user: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-user icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-user icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-user icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-user icon-3"></i>&nbsp;&nbsp;
- <i class="icon-user icon-2"></i>&nbsp;
- </span>
- <i class="icon-user icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-user
- <small>
- <i class="icon-user"></i> &middot;
- Unicode: <span class="upper">f007</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-user"></i> icon-user
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-user&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-user
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/vk/index.html b/library/font_awesome/src/3.2.1/icon/vk/index.html
deleted file mode 100644
index 308192606..000000000
--- a/library/font_awesome/src/3.2.1/icon/vk/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-vk: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-vk icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-vk icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-vk icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-vk icon-3"></i>&nbsp;&nbsp;
- <i class="icon-vk icon-2"></i>&nbsp;
- </span>
- <i class="icon-vk icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-vk
- <small>
- <i class="icon-vk"></i> &middot;
- Unicode: <span class="upper">f189</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-vk"></i> icon-vk
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-vk&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-vk
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/volume-down/index.html b/library/font_awesome/src/3.2.1/icon/volume-down/index.html
deleted file mode 100644
index e9aa24e95..000000000
--- a/library/font_awesome/src/3.2.1/icon/volume-down/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-volume-down: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-volume-down icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-volume-down icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-volume-down icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-volume-down icon-3"></i>&nbsp;&nbsp;
- <i class="icon-volume-down icon-2"></i>&nbsp;
- </span>
- <i class="icon-volume-down icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-volume-down
- <small>
- <i class="icon-volume-down"></i> &middot;
- Unicode: <span class="upper">f027</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-volume-down"></i> icon-volume-down
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-volume-down&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-volume-down
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/volume-off/index.html b/library/font_awesome/src/3.2.1/icon/volume-off/index.html
deleted file mode 100644
index 53a1d58e6..000000000
--- a/library/font_awesome/src/3.2.1/icon/volume-off/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-volume-off: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-volume-off icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-volume-off icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-volume-off icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-volume-off icon-3"></i>&nbsp;&nbsp;
- <i class="icon-volume-off icon-2"></i>&nbsp;
- </span>
- <i class="icon-volume-off icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-volume-off
- <small>
- <i class="icon-volume-off"></i> &middot;
- Unicode: <span class="upper">f026</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-volume-off"></i> icon-volume-off
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-volume-off&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-volume-off
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/volume-up/index.html b/library/font_awesome/src/3.2.1/icon/volume-up/index.html
deleted file mode 100644
index c9f82fb6f..000000000
--- a/library/font_awesome/src/3.2.1/icon/volume-up/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-volume-up: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-volume-up icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-volume-up icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-volume-up icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-volume-up icon-3"></i>&nbsp;&nbsp;
- <i class="icon-volume-up icon-2"></i>&nbsp;
- </span>
- <i class="icon-volume-up icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-volume-up
- <small>
- <i class="icon-volume-up"></i> &middot;
- Unicode: <span class="upper">f028</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-volume-up"></i> icon-volume-up
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-volume-up&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-volume-up
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/warning-sign/index.html b/library/font_awesome/src/3.2.1/icon/warning-sign/index.html
deleted file mode 100644
index 29a342a7c..000000000
--- a/library/font_awesome/src/3.2.1/icon/warning-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-warning-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-warning-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-warning-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-warning-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-warning-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-warning-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-warning-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-warning-sign
- <small>
- <i class="icon-warning-sign"></i> &middot;
- Unicode: <span class="upper">f071</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-warning-sign"></i> icon-warning-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-warning-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-warning-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/weibo/index.html b/library/font_awesome/src/3.2.1/icon/weibo/index.html
deleted file mode 100644
index 6a1ab7a34..000000000
--- a/library/font_awesome/src/3.2.1/icon/weibo/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-weibo: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-weibo icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-weibo icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-weibo icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-weibo icon-3"></i>&nbsp;&nbsp;
- <i class="icon-weibo icon-2"></i>&nbsp;
- </span>
- <i class="icon-weibo icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-weibo
- <small>
- <i class="icon-weibo"></i> &middot;
- Unicode: <span class="upper">f18a</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-weibo"></i> icon-weibo
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-weibo&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-weibo
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/windows/index.html b/library/font_awesome/src/3.2.1/icon/windows/index.html
deleted file mode 100644
index 973a33974..000000000
--- a/library/font_awesome/src/3.2.1/icon/windows/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-windows: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-windows icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-windows icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-windows icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-windows icon-3"></i>&nbsp;&nbsp;
- <i class="icon-windows icon-2"></i>&nbsp;
- </span>
- <i class="icon-windows icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-windows
- <small>
- <i class="icon-windows"></i> &middot;
- Unicode: <span class="upper">f17a</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-windows"></i> icon-windows
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-windows&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-windows
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/wrench/index.html b/library/font_awesome/src/3.2.1/icon/wrench/index.html
deleted file mode 100644
index 3a9cac23d..000000000
--- a/library/font_awesome/src/3.2.1/icon/wrench/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-wrench: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-wrench icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-wrench icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-wrench icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-wrench icon-3"></i>&nbsp;&nbsp;
- <i class="icon-wrench icon-2"></i>&nbsp;
- </span>
- <i class="icon-wrench icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-wrench
- <small>
- <i class="icon-wrench"></i> &middot;
- Unicode: <span class="upper">f0ad</span> &middot;
- Created: v2.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-wrench"></i> icon-wrench
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-wrench&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-wrench
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/xing-sign/index.html b/library/font_awesome/src/3.2.1/icon/xing-sign/index.html
deleted file mode 100644
index e1d173ccf..000000000
--- a/library/font_awesome/src/3.2.1/icon/xing-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-xing-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-xing-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-xing-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-xing-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-xing-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-xing-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-xing-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-xing-sign
- <small>
- <i class="icon-xing-sign"></i> &middot;
- Unicode: <span class="upper">f169</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-xing-sign"></i> icon-xing-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-xing-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-xing-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/xing/index.html b/library/font_awesome/src/3.2.1/icon/xing/index.html
deleted file mode 100644
index 3d378d233..000000000
--- a/library/font_awesome/src/3.2.1/icon/xing/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-xing: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-xing icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-xing icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-xing icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-xing icon-3"></i>&nbsp;&nbsp;
- <i class="icon-xing icon-2"></i>&nbsp;
- </span>
- <i class="icon-xing icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-xing
- <small>
- <i class="icon-xing"></i> &middot;
- Unicode: <span class="upper">f168</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-xing"></i> icon-xing
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-xing&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-xing
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/youtube-play/index.html b/library/font_awesome/src/3.2.1/icon/youtube-play/index.html
deleted file mode 100644
index f15866955..000000000
--- a/library/font_awesome/src/3.2.1/icon/youtube-play/index.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-youtube-play: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-youtube-play icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-youtube-play icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-youtube-play icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-youtube-play icon-3"></i>&nbsp;&nbsp;
- <i class="icon-youtube-play icon-2"></i>&nbsp;
- </span>
- <i class="icon-youtube-play icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-youtube-play
- <small>
- <i class="icon-youtube-play"></i> &middot;
- Unicode: <span class="upper">f16a</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons,
-
- Video Player Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-youtube-play"></i> icon-youtube-play
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-youtube-play&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-youtube-play
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/youtube-sign/index.html b/library/font_awesome/src/3.2.1/icon/youtube-sign/index.html
deleted file mode 100644
index fcec9ccc3..000000000
--- a/library/font_awesome/src/3.2.1/icon/youtube-sign/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-youtube-sign: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-youtube-sign icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-youtube-sign icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-youtube-sign icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-youtube-sign icon-3"></i>&nbsp;&nbsp;
- <i class="icon-youtube-sign icon-2"></i>&nbsp;
- </span>
- <i class="icon-youtube-sign icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-youtube-sign
- <small>
- <i class="icon-youtube-sign"></i> &middot;
- Unicode: <span class="upper">f166</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-youtube-sign"></i> icon-youtube-sign
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-youtube-sign&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-youtube-sign
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/youtube/index.html b/library/font_awesome/src/3.2.1/icon/youtube/index.html
deleted file mode 100644
index 406a3bc42..000000000
--- a/library/font_awesome/src/3.2.1/icon/youtube/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-youtube: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-youtube icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-youtube icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-youtube icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-youtube icon-3"></i>&nbsp;&nbsp;
- <i class="icon-youtube icon-2"></i>&nbsp;
- </span>
- <i class="icon-youtube icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-youtube
- <small>
- <i class="icon-youtube"></i> &middot;
- Unicode: <span class="upper">f167</span> &middot;
- Created: v3.2 &middot;
- Categories:
-
- Brand Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-youtube"></i> icon-youtube
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-youtube&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-youtube
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/zoom-in/index.html b/library/font_awesome/src/3.2.1/icon/zoom-in/index.html
deleted file mode 100644
index 7c30b0e9e..000000000
--- a/library/font_awesome/src/3.2.1/icon/zoom-in/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-zoom-in: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-zoom-in icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-zoom-in icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-zoom-in icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-zoom-in icon-3"></i>&nbsp;&nbsp;
- <i class="icon-zoom-in icon-2"></i>&nbsp;
- </span>
- <i class="icon-zoom-in icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-zoom-in
- <small>
- <i class="icon-zoom-in"></i> &middot;
- Unicode: <span class="upper">f00e</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-zoom-in"></i> icon-zoom-in
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-zoom-in&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-zoom-in
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icon/zoom-out/index.html b/library/font_awesome/src/3.2.1/icon/zoom-out/index.html
deleted file mode 100644
index ddbe58999..000000000
--- a/library/font_awesome/src/3.2.1/icon/zoom-out/index.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>icon-zoom-out: Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../../assets/css/site.css">
- <link rel="stylesheet" href="../../assets/css/pygments.css">
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../../">Home</a></li>
- <li><a href="../../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../../examples/#new-styles">New Styles</a></li>
- <li><a href="../../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../../examples/#buttons">Buttons</a></li>
- <li><a href="../../examples/#button-groups">Button Groups</a></li>
- <li><a href="../../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../../examples/#navigation">Navigation</a></li>
- <li><a href="../../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../../examples/#stacked">Stacked</a></li>
- <li><a href="../../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../../community/">Community</a></li>
- <li><a href="../../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="icon-zoom-out icon-6"></i>&nbsp;&nbsp;
- <span class="hidden-phone">
- <i class="icon-zoom-out icon-5"></i>&nbsp;&nbsp;
- <span class="hidden-tablet"><i class="icon-zoom-out icon-4"></i>&nbsp;&nbsp;</span>
- <i class="icon-zoom-out icon-3"></i>&nbsp;&nbsp;
- <i class="icon-zoom-out icon-2"></i>&nbsp;
- </span>
- <i class="icon-zoom-out icon-1"></i>
- </div>
- <h1 class="info-class">
- icon-zoom-out
- <small>
- <i class="icon-zoom-out"></i> &middot;
- Unicode: <span class="upper">f010</span> &middot;
- Created: v1.0 &middot;
- Categories:
-
- Web Application Icons
-
-
-
- </small>
- </h1>
- </div>
-</div>
-
-
-<div class="container">
- <section>
- <div class="row-fluid">
- <div class="span9">
- <p>After you get <a href="../../integration/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="icon-zoom-out"></i> icon-zoom-out
- </div>
- </div>
-<div class="highlight"><pre><code class="html"><span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">&quot;icon-zoom-out&quot;</span><span class="nt">&gt;&lt;/i&gt;</span> icon-zoom-out
-</code></pre></div>
- <br>
- <div class="lead"><i class="icon-info-sign"></i> Looking for more? Check out the <a href="../../examples/">examples</a>.</div>
- </div>
- <div class="span3">
- <div class="info-ad"><div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-</div>
- </div>
- </div>
- </section>
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/icons.yml b/library/font_awesome/src/3.2.1/icons.yml
deleted file mode 100644
index c3c8f531a..000000000
--- a/library/font_awesome/src/3.2.1/icons.yml
+++ /dev/null
@@ -1,2590 +0,0 @@
-icons:
- - name: Glass
- id: glass
- unicode: f000
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Music
- id: music
- unicode: f001
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Search
- id: search
- unicode: f002
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Envelope Alt
- id: envelope-alt
- unicode: f003
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Heart
- id: heart
- unicode: f004
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Star
- id: star
- unicode: f005
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Star Empty
- id: star-empty
- unicode: f006
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: User
- id: user
- unicode: f007
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Film
- id: film
- unicode: f008
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: th-large
- id: th-large
- unicode: f009
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: th
- id: th
- unicode: f00a
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: th-list
- id: th-list
- unicode: f00b
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: OK
- id: ok
- unicode: f00c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Remove
- id: remove
- unicode: f00d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Zoom In
- id: zoom-in
- unicode: f00e
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: Zoom Out
- id: zoom-out
- unicode: f010
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Off
- id: 'off'
- unicode: f011
- created: 1.0
- aliases:
- - power-off
- categories:
- - Web Application Icons
-
- - name: signal
- id: signal
- unicode: f012
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: cog
- id: cog
- unicode: f013
- created: 1.0
- aliases:
- - gear
- categories:
- - Web Application Icons
-
- - name: trash
- id: trash
- unicode: f014
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: home
- id: home
- unicode: f015
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: file-alt
- id: file-alt
- unicode: f016
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: time
- id: time
- unicode: f017
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: road
- id: road
- unicode: f018
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: download-alt
- id: download-alt
- unicode: f019
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: download
- id: download
- unicode: f01a
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: upload
- id: upload
- unicode: f01b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: inbox
- id: inbox
- unicode: f01c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: play-circle
- id: play-circle
- unicode: f01d
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: repeat
- id: repeat
- unicode: f01e
- created: 1.0
- aliases:
- - rotate-right
- categories:
- - Text Editor Icons
-
-
- - name: refresh
- id: refresh
- unicode: f021
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: list-alt
- id: list-alt
- unicode: f022
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: lock
- id: lock
- unicode: f023
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: flag
- id: flag
- unicode: f024
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: headphones
- id: headphones
- unicode: f025
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: volume-off
- id: volume-off
- unicode: f026
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: volume-down
- id: volume-down
- unicode: f027
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: volume-up
- id: volume-up
- unicode: f028
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: qrcode
- id: qrcode
- unicode: f029
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: barcode
- id: barcode
- unicode: f02a
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: tag
- id: tag
- unicode: f02b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: tags
- id: tags
- unicode: f02c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: book
- id: book
- unicode: f02d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: bookmark
- id: bookmark
- unicode: f02e
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: print
- id: print
- unicode: f02f
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: camera
- id: camera
- unicode: f030
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: font
- id: font
- unicode: f031
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: bold
- id: bold
- unicode: f032
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: italic
- id: italic
- unicode: f033
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: text-height
- id: text-height
- unicode: f034
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: text-width
- id: text-width
- unicode: f035
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: align-left
- id: align-left
- unicode: f036
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: align-center
- id: align-center
- unicode: f037
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: align-right
- id: align-right
- unicode: f038
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: align-justify
- id: align-justify
- unicode: f039
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: list
- id: list
- unicode: f03a
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: indent-left
- id: indent-left
- unicode: f03b
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: indent-right
- id: indent-right
- unicode: f03c
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: facetime-video
- id: facetime-video
- unicode: f03d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: picture
- id: picture
- unicode: f03e
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: pencil
- id: pencil
- unicode: f040
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: map-marker
- id: map-marker
- unicode: f041
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: adjust
- id: adjust
- unicode: f042
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: tint
- id: tint
- unicode: f043
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: edit
- id: edit
- unicode: f044
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: share
- id: share
- unicode: f045
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: check
- id: check
- unicode: f046
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: move
- id: move
- unicode: f047
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: step-backward
- id: step-backward
- unicode: f048
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: fast-backward
- id: fast-backward
- unicode: f049
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: backward
- id: backward
- unicode: f04a
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: play
- id: play
- unicode: f04b
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: pause
- id: pause
- unicode: f04c
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: stop
- id: stop
- unicode: f04d
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: forward
- id: forward
- unicode: f04e
- created: 1.0
- categories:
- - Video Player Icons
-
-
- - name: fast-forward
- id: fast-forward
- unicode: f050
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: step-forward
- id: step-forward
- unicode: f051
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: eject
- id: eject
- unicode: f052
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: chevron-left
- id: chevron-left
- unicode: f053
- created: 1.0
- categories:
- - Directional Icons
-
- - name: chevron-right
- id: chevron-right
- unicode: f054
- created: 1.0
- categories:
- - Directional Icons
-
- - name: plus-sign
- id: plus-sign
- unicode: f055
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: minus-sign
- id: minus-sign
- unicode: f056
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: remove-sign
- id: remove-sign
- unicode: f057
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: ok-sign
- id: ok-sign
- unicode: f058
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: question-sign
- id: question-sign
- unicode: f059
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: info-sign
- id: info-sign
- unicode: f05a
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: screenshot
- id: screenshot
- unicode: f05b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: remove-circle
- id: remove-circle
- unicode: f05c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: ok-circle
- id: ok-circle
- unicode: f05d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: ban-circle
- id: ban-circle
- unicode: f05e
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: arrow-left
- id: arrow-left
- unicode: f060
- created: 1.0
- categories:
- - Directional Icons
-
- - name: arrow-right
- id: arrow-right
- unicode: f061
- created: 1.0
- categories:
- - Directional Icons
-
- - name: arrow-up
- id: arrow-up
- unicode: f062
- created: 1.0
- categories:
- - Directional Icons
-
- - name: arrow-down
- id: arrow-down
- unicode: f063
- created: 1.0
- categories:
- - Directional Icons
-
- - name: share-alt
- id: share-alt
- unicode: f064
- created: 1.0
- aliases:
- - mail-forward
- categories:
- - Web Application Icons
-
- - name: resize-full
- id: resize-full
- unicode: f065
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: resize-small
- id: resize-small
- unicode: f066
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: plus
- id: plus
- unicode: f067
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: minus
- id: minus
- unicode: f068
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: asterisk
- id: asterisk
- unicode: f069
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: exclamation-sign
- id: exclamation-sign
- unicode: f06a
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: gift
- id: gift
- unicode: f06b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: leaf
- id: leaf
- unicode: f06c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: fire
- id: fire
- unicode: f06d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: eye-open
- id: eye-open
- unicode: f06e
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: eye-close
- id: eye-close
- unicode: f070
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: warning-sign
- id: warning-sign
- unicode: f071
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: plane
- id: plane
- unicode: f072
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: calendar
- id: calendar
- unicode: f073
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: random
- id: random
- unicode: f074
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: comment
- id: comment
- unicode: f075
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: magnet
- id: magnet
- unicode: f076
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: chevron-up
- id: chevron-up
- unicode: f077
- created: 1.0
- categories:
- - Directional Icons
-
- - name: chevron-down
- id: chevron-down
- unicode: f078
- created: 1.0
- categories:
- - Directional Icons
-
- - name: retweet
- id: retweet
- unicode: f079
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: shopping-cart
- id: shopping-cart
- unicode: f07a
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: folder-close
- id: folder-close
- unicode: f07b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: folder-open
- id: folder-open
- unicode: f07c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: resize-vertical
- id: resize-vertical
- unicode: f07d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: resize-horizontal
- id: resize-horizontal
- unicode: f07e
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: bar-chart
- id: bar-chart
- unicode: f080
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: twitter-sign
- id: twitter-sign
- unicode: f081
- created: 1.0
- categories:
- - Brand Icons
-
- - name: facebook-sign
- id: facebook-sign
- unicode: f082
- created: 1.0
- categories:
- - Brand Icons
-
- - name: camera-retro
- id: camera-retro
- unicode: f083
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: key
- id: key
- unicode: f084
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: cogs
- id: cogs
- unicode: f085
- created: 1.0
- aliases:
- - gears
- categories:
- - Web Application Icons
-
- - name: comments
- id: comments
- unicode: f086
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: thumbs-up-alt
- id: thumbs-up-alt
- unicode: f087
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: thumbs-down-alt
- id: thumbs-down-alt
- unicode: f088
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: star-half
- id: star-half
- unicode: f089
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: heart-empty
- id: heart-empty
- unicode: f08a
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: signout
- id: signout
- unicode: f08b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: linkedin-sign
- id: linkedin-sign
- unicode: f08c
- created: 1.0
- categories:
- - Brand Icons
-
- - name: pushpin
- id: pushpin
- unicode: f08d
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: external-link
- id: external-link
- unicode: f08e
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: signin
- id: signin
- unicode: f090
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: trophy
- id: trophy
- unicode: f091
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: github-sign
- id: github-sign
- unicode: f092
- created: 1.0
- categories:
- - Brand Icons
-
- - name: upload-alt
- id: upload-alt
- unicode: f093
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: lemon
- id: lemon
- unicode: f094
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: phone
- id: phone
- unicode: f095
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: check-empty
- id: check-empty
- unicode: f096
- created: 2.0
- aliases:
- - unchecked
- categories:
- - Web Application Icons
-
- - name: bookmark-empty
- id: bookmark-empty
- unicode: f097
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: phone-sign
- id: phone-sign
- unicode: f098
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: twitter
- id: twitter
- unicode: f099
- created: 2.0
- categories:
- - Brand Icons
-
- - name: facebook
- id: facebook
- unicode: f09a
- created: 2.0
- categories:
- - Brand Icons
-
- - name: github
- id: github
- unicode: f09b
- created: 2.0
- categories:
- - Brand Icons
-
- - name: unlock
- id: unlock
- unicode: f09c
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: credit-card
- id: credit-card
- unicode: f09d
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: rss
- id: rss
- unicode: f09e
- created: 2.0
- categories:
- - Web Application Icons
-
-
- - name: hdd
- id: hdd
- unicode: f0a0
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: bullhorn
- id: bullhorn
- unicode: f0a1
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: bell
- id: bell
- unicode: f0a2
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: certificate
- id: certificate
- unicode: f0a3
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: hand-right
- id: hand-right
- unicode: f0a4
- created: 2.0
- categories:
- - Directional Icons
-
- - name: hand-left
- id: hand-left
- unicode: f0a5
- created: 2.0
- categories:
- - Directional Icons
-
- - name: hand-up
- id: hand-up
- unicode: f0a6
- created: 2.0
- categories:
- - Directional Icons
-
- - name: hand-down
- id: hand-down
- unicode: f0a7
- created: 2.0
- categories:
- - Directional Icons
-
- - name: circle-arrow-left
- id: circle-arrow-left
- unicode: f0a8
- created: 2.0
- categories:
- - Directional Icons
-
- - name: circle-arrow-right
- id: circle-arrow-right
- unicode: f0a9
- created: 2.0
- categories:
- - Directional Icons
-
- - name: circle-arrow-up
- id: circle-arrow-up
- unicode: f0aa
- created: 2.0
- categories:
- - Directional Icons
-
- - name: circle-arrow-down
- id: circle-arrow-down
- unicode: f0ab
- created: 2.0
- categories:
- - Directional Icons
-
- - name: globe
- id: globe
- unicode: f0ac
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: wrench
- id: wrench
- unicode: f0ad
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: tasks
- id: tasks
- unicode: f0ae
- created: 2.0
- categories:
- - Web Application Icons
-
-
- - name: filter
- id: filter
- unicode: f0b0
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: briefcase
- id: briefcase
- unicode: f0b1
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: fullscreen
- id: fullscreen
- unicode: f0b2
- created: 2.0
- categories:
- - Video Player Icons
-
-
- - name: group
- id: group
- unicode: f0c0
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: link
- id: link
- unicode: f0c1
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: cloud
- id: cloud
- unicode: f0c2
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: beaker
- id: beaker
- unicode: f0c3
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: cut
- id: cut
- unicode: f0c4
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: copy
- id: copy
- unicode: f0c5
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: paper-clip
- id: paper-clip
- unicode: f0c6
- created: 2.0
- aliases:
- - paperclip
- categories:
- - Text Editor Icons
-
- - name: save
- id: save
- unicode: f0c7
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: sign-blank
- id: sign-blank
- unicode: f0c8
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: reorder
- id: reorder
- unicode: f0c9
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: list-ul
- id: list-ul
- unicode: f0ca
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: list-ol
- id: list-ol
- unicode: f0cb
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: strikethrough
- id: strikethrough
- unicode: f0cc
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: underline
- id: underline
- unicode: f0cd
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: table
- id: table
- unicode: f0ce
- created: 2.0
- categories:
- - Text Editor Icons
-
-
- - name: magic
- id: magic
- unicode: f0d0
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: truck
- id: truck
- unicode: f0d1
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: pinterest
- id: pinterest
- unicode: f0d2
- created: 2.0
- categories:
- - Brand Icons
-
- - name: pinterest-sign
- id: pinterest-sign
- unicode: f0d3
- created: 2.0
- categories:
- - Brand Icons
-
- - name: google-plus-sign
- id: google-plus-sign
- unicode: f0d4
- created: 2.0
- categories:
- - Brand Icons
-
- - name: google-plus
- id: google-plus
- unicode: f0d5
- created: 2.0
- categories:
- - Brand Icons
-
- - name: money
- id: money
- unicode: f0d6
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: caret-down
- id: caret-down
- unicode: f0d7
- created: 2.0
- categories:
- - Directional Icons
-
- - name: caret-up
- id: caret-up
- unicode: f0d8
- created: 2.0
- categories:
- - Directional Icons
-
- - name: caret-left
- id: caret-left
- unicode: f0d9
- created: 2.0
- categories:
- - Directional Icons
-
- - name: caret-right
- id: caret-right
- unicode: f0da
- created: 2.0
- categories:
- - Directional Icons
-
- - name: columns
- id: columns
- unicode: f0db
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: sort
- id: sort
- unicode: f0dc
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: sort-down
- id: sort-down
- unicode: f0dd
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: sort-up
- id: sort-up
- unicode: f0de
- created: 2.0
- categories:
- - Web Application Icons
-
-
- - name: Envelope
- id: envelope
- unicode: f0e0
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: linkedin
- id: linkedin
- unicode: f0e1
- created: 2.0
- categories:
- - Brand Icons
-
-
- - name: undo
- id: undo
- unicode: f0e2
- created: 2.0
- aliases:
- - rotate-left
- categories:
- - Text Editor Icons
-
- - name: legal
- id: legal
- unicode: f0e3
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: dashboard
- id: dashboard
- unicode: f0e4
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: comment-alt
- id: comment-alt
- unicode: f0e5
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: comments-alt
- id: comments-alt
- unicode: f0e6
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: bolt
- id: bolt
- unicode: f0e7
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: sitemap
- id: sitemap
- unicode: f0e8
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: umbrella
- id: umbrella
- unicode: f0e9
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: paste
- id: paste
- unicode: f0ea
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: lightbulb
- id: lightbulb
- unicode: f0eb
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: exchange
- id: exchange
- unicode: f0ec
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: cloud-download
- id: cloud-download
- unicode: f0ed
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: cloud-upload
- id: cloud-upload
- unicode: f0ee
- created: 3.0
- categories:
- - Web Application Icons
-
-
- - name: user-md
- id: user-md
- unicode: f0f0
- created: 2.0
- categories:
- - Medical Icons
-
- - name: stethoscope
- id: stethoscope
- unicode: f0f1
- created: 3.0
- categories:
- - Medical Icons
-
- - name: suitcase
- id: suitcase
- unicode: f0f2
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: bell-alt
- id: bell-alt
- unicode: f0f3
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: coffee
- id: coffee
- unicode: f0f4
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: food
- id: food
- unicode: f0f5
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: file-text-alt
- id: file-text-alt
- unicode: f0f6
- created: 3.0
- categories:
- - Text Editor Icons
-
- - name: building
- id: building
- unicode: f0f7
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: hospital
- id: hospital
- unicode: f0f8
- created: 3.0
- categories:
- - Medical Icons
-
- - name: ambulance
- id: ambulance
- unicode: f0f9
- created: 3.0
- categories:
- - Medical Icons
-
- - name: medkit
- id: medkit
- unicode: f0fa
- created: 3.0
- categories:
- - Medical Icons
-
- - name: fighter-jet
- id: fighter-jet
- unicode: f0fb
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: beer
- id: beer
- unicode: f0fc
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: h-sign
- id: h-sign
- unicode: f0fd
- created: 3.0
- categories:
- - Medical Icons
-
- - name: plus-sign-alt
- id: plus-sign-alt
- unicode: f0fe
- created: 3.0
- categories:
- - Medical Icons
- - Web Application Icons
-
-
- - name: double-angle-left
- id: double-angle-left
- unicode: f100
- created: 3.0
- categories:
- - Directional Icons
-
- - name: double-angle-right
- id: double-angle-right
- unicode: f101
- created: 3.0
- categories:
- - Directional Icons
-
- - name: double-angle-up
- id: double-angle-up
- unicode: f102
- created: 3.0
- categories:
- - Directional Icons
-
- - name: double-angle-down
- id: double-angle-down
- unicode: f103
- created: 3.0
- categories:
- - Directional Icons
-
- - name: angle-left
- id: angle-left
- unicode: f104
- created: 3.0
- categories:
- - Directional Icons
-
- - name: angle-right
- id: angle-right
- unicode: f105
- created: 3.0
- categories:
- - Directional Icons
-
- - name: angle-up
- id: angle-up
- unicode: f106
- created: 3.0
- categories:
- - Directional Icons
-
- - name: angle-down
- id: angle-down
- unicode: f107
- created: 3.0
- categories:
- - Directional Icons
-
- - name: desktop
- id: desktop
- unicode: f108
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: laptop
- id: laptop
- unicode: f109
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: tablet
- id: tablet
- unicode: f10a
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: mobile-phone
- id: mobile-phone
- unicode: f10b
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: circle-blank
- id: circle-blank
- unicode: f10c
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: quote-left
- id: quote-left
- unicode: f10d
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: quote-right
- id: quote-right
- unicode: f10e
- created: 3.0
- categories:
- - Web Application Icons
-
-
- - name: spinner
- id: spinner
- unicode: f110
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: circle
- id: circle
- unicode: f111
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: reply
- id: reply
- unicode: f112
- created: 3.0
- aliases:
- - mail-reply
- categories:
- - Web Application Icons
-
- - name: github-alt
- id: github-alt
- unicode: f113
- created: 3.0
- categories:
- - Brand Icons
-
- - name: folder-close-alt
- id: folder-close-alt
- unicode: f114
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: folder-open-alt
- id: folder-open-alt
- unicode: f115
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: expand-alt
- id: expand-alt
- unicode: f116
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: collapse-alt
- id: collapse-alt
- unicode: f117
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: smile
- id: smile
- unicode: f118
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: frown
- id: frown
- unicode: f119
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: meh
- id: meh
- unicode: f11a
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: gamepad
- id: gamepad
- unicode: f11b
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: keyboard
- id: keyboard
- unicode: f11c
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: flag-alt
- id: flag-alt
- unicode: f11d
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: flag-checkered
- id: flag-checkered
- unicode: f11e
- created: 3.1
- categories:
- - Web Application Icons
-
-
- - name: terminal
- id: terminal
- unicode: f120
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: code
- id: code
- unicode: f121
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: reply-all
- id: reply-all
- unicode: f122
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: mail-reply-all
- id: mail-reply-all
- unicode: f122
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: star-half-empty
- id: star-half-empty
- unicode: f123
- created: 3.1
- aliases:
- - star-half-full
- categories:
- - Web Application Icons
-
- - name: location-arrow
- id: location-arrow
- unicode: f124
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: crop
- id: crop
- unicode: f125
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: code-fork
- id: code-fork
- unicode: f126
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: unlink
- id: unlink
- unicode: f127
- created: 3.1
- categories:
- - Text Editor Icons
-
- - name: question
- id: question
- unicode: f128
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: info
- id: info
- unicode: f129
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: exclamation
- id: exclamation
- unicode: f12a
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: superscript
- id: superscript
- unicode: f12b
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: subscript
- id: subscript
- unicode: f12c
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: eraser
- id: eraser
- unicode: f12d
- created: 3.1
- categories:
- - Text Editor Icons
- - Web Application Icons
-
- - name: puzzle-piece
- id: puzzle-piece
- unicode: f12e
- created: 3.1
- categories:
- - Web Application Icons
-
-
- - name: microphone
- id: microphone
- unicode: f130
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: microphone-off
- id: microphone-off
- unicode: f131
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: shield
- id: shield
- unicode: f132
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: calendar-empty
- id: calendar-empty
- unicode: f133
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: fire-extinguisher
- id: fire-extinguisher
- unicode: f134
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: rocket
- id: rocket
- unicode: f135
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: MaxCDN
- id: maxcdn
- unicode: f136
- created: 3.1
- categories:
- - Brand Icons
-
- - name: Chevron Sign Left
- id: chevron-sign-left
- unicode: f137
- created: 3.1
- categories:
- - Directional Icons
-
- - name: Chevron Sign Right
- id: chevron-sign-right
- unicode: f138
- created: 3.1
- categories:
- - Directional Icons
-
- - name: Chevron Sign Up
- id: chevron-sign-up
- unicode: f139
- created: 3.1
- categories:
- - Directional Icons
-
- - name: Chevron Sign Down
- id: chevron-sign-down
- unicode: f13a
- created: 3.1
- categories:
- - Directional Icons
-
- - name: HTML 5 Logo
- id: html5
- unicode: f13b
- created: 3.1
- categories:
- - Brand Icons
-
- - name: CSS 3 Logo
- id: css3
- unicode: f13c
- created: 3.1
- categories:
- - Brand Icons
-
- - name: Anchor
- id: anchor
- unicode: f13d
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Unlock Alt
- id: unlock-alt
- unicode: f13e
- created: 3.1
- categories:
- - Web Application Icons
-
-
- - name: Bullseye
- id: bullseye
- unicode: f140
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Horizontal Ellipsis
- id: ellipsis-horizontal
- unicode: f141
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Vertical Ellipsis
- id: ellipsis-vertical
- unicode: f142
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: RSS Sign
- id: rss-sign
- unicode: f143
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Play Sign
- id: play-sign
- unicode: f144
- created: 3.1
- categories:
- - Video Player Icons
-
- - name: Ticket
- id: ticket
- unicode: f145
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Minus Sign Alt
- id: minus-sign-alt
- unicode: f146
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Check Minus
- id: check-minus
- unicode: f147
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Level Up
- id: level-up
- unicode: f148
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Level Down
- id: level-down
- unicode: f149
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Check Sign
- id: check-sign
- unicode: f14a
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Edit Sign
- id: edit-sign
- unicode: f14b
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Exteral Link Sign
- id: external-link-sign
- unicode: f14c
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Share Sign
- id: share-sign
- unicode: f14d
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: Compass
- id: compass
- unicode: f14e
- created: 3.2
- categories:
- - Web Application Icons
-
-
- - name: Collapse
- id: collapse
- unicode: f150
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Collapse Top
- id: collapse-top
- unicode: f151
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Expand
- id: expand
- unicode: f152
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Euro (EUR)
- id: eur
- unicode: f153
- created: 3.2
- aliases:
- - euro
- categories:
- - Currency Icons
-
- - name: GBP
- id: gbp
- unicode: f154
- created: 3.2
- categories:
- - Currency Icons
-
- - name: US Dollar
- id: usd
- unicode: f155
- created: 3.2
- aliases:
- - dollar
- categories:
- - Currency Icons
-
- - name: Indian Rupee (INR)
- id: inr
- unicode: f156
- created: 3.2
- aliases:
- - rupee
- categories:
- - Currency Icons
-
- - name: Japanese Yen (JPY)
- id: jpy
- unicode: f157
- created: 3.2
- aliases:
- - yen
- categories:
- - Currency Icons
-
- - name: Renminbi (CNY)
- id: cny
- unicode: f158
- created: 3.2
- aliases:
- - renminbi
- categories:
- - Currency Icons
-
- - name: Korean Won (KRW)
- id: krw
- unicode: f159
- created: 3.2
- aliases:
- - won
- categories:
- - Currency Icons
-
- - name: Bitcoin (BTC)
- id: btc
- unicode: f15a
- created: 3.2
- aliases:
- - bitcoin
- categories:
- - Currency Icons
- - Brand Icons
-
- - name: File
- id: file
- unicode: f15b
- created: 3.2
- categories:
- - Text Editor Icons
-
- - name: File Text
- id: file-text
- unicode: f15c
- created: 3.2
- categories:
- - Text Editor Icons
-
- - name: Sort By Alphabet
- id: sort-by-alphabet
- unicode: f15d
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort By Alphabet Alt
- id: sort-by-alphabet-alt
- unicode: f15e
- created: 3.2
- categories:
- - Web Application Icons
-
-
- - name: Sort By Attributes
- id: sort-by-attributes
- unicode: f160
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort By Attributes Alt
- id: sort-by-attributes-alt
- unicode: f161
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort By Order
- id: sort-by-order
- unicode: f162
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort By Order Alt
- id: sort-by-order-alt
- unicode: f163
- created: 3.2
- categories:
- - Web Application Icons
-
-
- - name: thumbs-up
- id: thumbs-up
- unicode: f164
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: thumbs-down
- id: thumbs-down
- unicode: f165
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: YouTube Sign
- id: youtube-sign
- unicode: f166
- created: 3.2
- categories:
- - Brand Icons
-
- - name: YouTube
- id: youtube
- unicode: f167
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Xing
- id: xing
- unicode: f168
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Xing Sign
- id: xing-sign
- unicode: f169
- created: 3.2
- categories:
- - Brand Icons
-
- - name: YouTube Play
- id: youtube-play
- unicode: f16a
- created: 3.2
- categories:
- - Brand Icons
- - Video Player Icons
-
- - name: Dropbox
- id: dropbox
- unicode: f16b
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Stack Exchange
- id: stackexchange
- unicode: f16c
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Instagram
- id: instagram
- unicode: f16d
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Flickr
- id: flickr
- unicode: f16e
- created: 3.2
- categories:
- - Brand Icons
-
- - name: App.net
- id: adn
- unicode: f170
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Bitbucket
- id: bitbucket
- unicode: f171
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Bitbucket Sign
- id: bitbucket-sign
- unicode: f172
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Tumblr
- id: tumblr
- unicode: f173
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Tumblr Sign
- id: tumblr-sign
- unicode: f174
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Long Arrow Down
- id: long-arrow-down
- unicode: f175
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Long Arrow Up
- id: long-arrow-up
- unicode: f176
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Long Arrow Left
- id: long-arrow-left
- unicode: f177
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Long Arrow Right
- id: long-arrow-right
- unicode: f178
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Apple
- id: apple
- unicode: f179
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Windows
- id: windows
- unicode: f17a
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Android
- id: android
- unicode: f17b
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Linux
- id: linux
- unicode: f17c
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Dribbble
- id: dribbble
- unicode: f17d
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Skype
- id: skype
- unicode: f17e
- created: 3.2
- categories:
- - Brand Icons
-
-
- - name: Foursquare
- id: foursquare
- unicode: f180
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Trello
- id: trello
- unicode: f181
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Female
- id: female
- unicode: f182
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Male
- id: male
- unicode: f183
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Gittip
- id: gittip
- unicode: f184
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Sun
- id: sun
- unicode: f185
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Moon
- id: moon
- unicode: f186
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Archive
- id: archive
- unicode: f187
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Bug
- id: bug
- unicode: f188
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: VK
- id: vk
- unicode: f189
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Weibo
- id: weibo
- unicode: f18a
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Renren
- id: renren
- unicode: f18b
- created: 3.2
- categories:
- - Brand Icons
diff --git a/library/font_awesome/src/3.2.1/icons/index.html b/library/font_awesome/src/3.2.1/icons/index.html
deleted file mode 100644
index c28cd9480..000000000
--- a/library/font_awesome/src/3.2.1/icons/index.html
+++ /dev/null
@@ -1,1211 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Font Awesome Icons</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left active"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone active">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-flag icon-large"></i>&nbsp; The Icons</h1>
- <p>The complete set of 361 icons in Font Awesome 3.2.1</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- You asked, Font Awesome delivers with 58 shiny new icons in version 3.2.
- Want to request new icons? <a href="../community/#requesting-new-icons">Here's how</a>.
- <!--The ever-expanding list of Font Awesome 3.2.1 icons.-->
- Need vectors or want to use on the desktop? Check the <a href="../cheatsheet/">cheatsheet</a>.
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<div id="new">
- <h2 class="page-header">New Icons in 3.2</h2>
-
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/compass"><i class="icon-compass"></i> icon-compass</a></div>
-
- <div class="span3"><a href="../icon/collapse"><i class="icon-collapse"></i> icon-collapse</a></div>
-
- <div class="span3"><a href="../icon/collapse-top"><i class="icon-collapse-top"></i> icon-collapse-top</a></div>
-
- <div class="span3"><a href="../icon/expand"><i class="icon-expand"></i> icon-expand</a></div>
-
- <div class="span3"><a href="../icon/eur"><i class="icon-eur"></i> icon-eur</a></div>
-
- <div class="span3"><a href="../icon/eur"><i class="icon-euro"></i> icon-euro <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/gbp"><i class="icon-gbp"></i> icon-gbp</a></div>
-
- <div class="span3"><a href="../icon/usd"><i class="icon-usd"></i> icon-usd</a></div>
-
- <div class="span3"><a href="../icon/usd"><i class="icon-dollar"></i> icon-dollar <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/inr"><i class="icon-inr"></i> icon-inr</a></div>
-
- <div class="span3"><a href="../icon/inr"><i class="icon-rupee"></i> icon-rupee <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/jpy"><i class="icon-jpy"></i> icon-jpy</a></div>
-
- <div class="span3"><a href="../icon/jpy"><i class="icon-yen"></i> icon-yen <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/cny"><i class="icon-cny"></i> icon-cny</a></div>
-
- <div class="span3"><a href="../icon/cny"><i class="icon-renminbi"></i> icon-renminbi <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/krw"><i class="icon-krw"></i> icon-krw</a></div>
-
- <div class="span3"><a href="../icon/krw"><i class="icon-won"></i> icon-won <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-btc"></i> icon-btc</a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-bitcoin"></i> icon-bitcoin <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/file"><i class="icon-file"></i> icon-file</a></div>
-
- <div class="span3"><a href="../icon/file-text"><i class="icon-file-text"></i> icon-file-text</a></div>
-
- <div class="span3"><a href="../icon/sort-by-alphabet"><i class="icon-sort-by-alphabet"></i> icon-sort-by-alphabet</a></div>
-
- <div class="span3"><a href="../icon/sort-by-alphabet-alt"><i class="icon-sort-by-alphabet-alt"></i> icon-sort-by-alphabet-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-by-attributes"><i class="icon-sort-by-attributes"></i> icon-sort-by-attributes</a></div>
-
- <div class="span3"><a href="../icon/sort-by-attributes-alt"><i class="icon-sort-by-attributes-alt"></i> icon-sort-by-attributes-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-by-order"><i class="icon-sort-by-order"></i> icon-sort-by-order</a></div>
-
- <div class="span3"><a href="../icon/sort-by-order-alt"><i class="icon-sort-by-order-alt"></i> icon-sort-by-order-alt</a></div>
-
- <div class="span3"><a href="../icon/thumbs-up"><i class="icon-thumbs-up"></i> icon-thumbs-up</a></div>
-
- <div class="span3"><a href="../icon/thumbs-down"><i class="icon-thumbs-down"></i> icon-thumbs-down</a></div>
-
- <div class="span3"><a href="../icon/youtube-sign"><i class="icon-youtube-sign"></i> icon-youtube-sign</a></div>
-
- <div class="span3"><a href="../icon/youtube"><i class="icon-youtube"></i> icon-youtube</a></div>
-
- <div class="span3"><a href="../icon/xing"><i class="icon-xing"></i> icon-xing</a></div>
-
- <div class="span3"><a href="../icon/xing-sign"><i class="icon-xing-sign"></i> icon-xing-sign</a></div>
-
- <div class="span3"><a href="../icon/youtube-play"><i class="icon-youtube-play"></i> icon-youtube-play</a></div>
-
- <div class="span3"><a href="../icon/dropbox"><i class="icon-dropbox"></i> icon-dropbox</a></div>
-
- <div class="span3"><a href="../icon/stackexchange"><i class="icon-stackexchange"></i> icon-stackexchange</a></div>
-
- <div class="span3"><a href="../icon/instagram"><i class="icon-instagram"></i> icon-instagram</a></div>
-
- <div class="span3"><a href="../icon/flickr"><i class="icon-flickr"></i> icon-flickr</a></div>
-
- <div class="span3"><a href="../icon/adn"><i class="icon-adn"></i> icon-adn</a></div>
-
- <div class="span3"><a href="../icon/bitbucket"><i class="icon-bitbucket"></i> icon-bitbucket</a></div>
-
- <div class="span3"><a href="../icon/bitbucket-sign"><i class="icon-bitbucket-sign"></i> icon-bitbucket-sign</a></div>
-
- <div class="span3"><a href="../icon/tumblr"><i class="icon-tumblr"></i> icon-tumblr</a></div>
-
- <div class="span3"><a href="../icon/tumblr-sign"><i class="icon-tumblr-sign"></i> icon-tumblr-sign</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-down"><i class="icon-long-arrow-down"></i> icon-long-arrow-down</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-up"><i class="icon-long-arrow-up"></i> icon-long-arrow-up</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-left"><i class="icon-long-arrow-left"></i> icon-long-arrow-left</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-right"><i class="icon-long-arrow-right"></i> icon-long-arrow-right</a></div>
-
- <div class="span3"><a href="../icon/apple"><i class="icon-apple"></i> icon-apple</a></div>
-
- <div class="span3"><a href="../icon/windows"><i class="icon-windows"></i> icon-windows</a></div>
-
- <div class="span3"><a href="../icon/android"><i class="icon-android"></i> icon-android</a></div>
-
- <div class="span3"><a href="../icon/linux"><i class="icon-linux"></i> icon-linux</a></div>
-
- <div class="span3"><a href="../icon/dribbble"><i class="icon-dribbble"></i> icon-dribbble</a></div>
-
- <div class="span3"><a href="../icon/skype"><i class="icon-skype"></i> icon-skype</a></div>
-
- <div class="span3"><a href="../icon/foursquare"><i class="icon-foursquare"></i> icon-foursquare</a></div>
-
- <div class="span3"><a href="../icon/trello"><i class="icon-trello"></i> icon-trello</a></div>
-
- <div class="span3"><a href="../icon/female"><i class="icon-female"></i> icon-female</a></div>
-
- <div class="span3"><a href="../icon/male"><i class="icon-male"></i> icon-male</a></div>
-
- <div class="span3"><a href="../icon/gittip"><i class="icon-gittip"></i> icon-gittip</a></div>
-
- <div class="span3"><a href="../icon/sun"><i class="icon-sun"></i> icon-sun</a></div>
-
- <div class="span3"><a href="../icon/moon"><i class="icon-moon"></i> icon-moon</a></div>
-
- <div class="span3"><a href="../icon/archive"><i class="icon-archive"></i> icon-archive</a></div>
-
- <div class="span3"><a href="../icon/bug"><i class="icon-bug"></i> icon-bug</a></div>
-
- <div class="span3"><a href="../icon/vk"><i class="icon-vk"></i> icon-vk</a></div>
-
- <div class="span3"><a href="../icon/weibo"><i class="icon-weibo"></i> icon-weibo</a></div>
-
- <div class="span3"><a href="../icon/renren"><i class="icon-renren"></i> icon-renren</a></div>
-
- </div>
-
-</div>
-
-<section id="web-application">
- <h2 class="page-header">Web Application Icons</h2>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/adjust"><i class="icon-adjust"></i> icon-adjust</a></div>
-
- <div class="span3"><a href="../icon/anchor"><i class="icon-anchor"></i> icon-anchor</a></div>
-
- <div class="span3"><a href="../icon/archive"><i class="icon-archive"></i> icon-archive</a></div>
-
- <div class="span3"><a href="../icon/asterisk"><i class="icon-asterisk"></i> icon-asterisk</a></div>
-
- <div class="span3"><a href="../icon/ban-circle"><i class="icon-ban-circle"></i> icon-ban-circle</a></div>
-
- <div class="span3"><a href="../icon/bar-chart"><i class="icon-bar-chart"></i> icon-bar-chart</a></div>
-
- <div class="span3"><a href="../icon/barcode"><i class="icon-barcode"></i> icon-barcode</a></div>
-
- <div class="span3"><a href="../icon/beaker"><i class="icon-beaker"></i> icon-beaker</a></div>
-
- <div class="span3"><a href="../icon/beer"><i class="icon-beer"></i> icon-beer</a></div>
-
- <div class="span3"><a href="../icon/bell"><i class="icon-bell"></i> icon-bell</a></div>
-
- <div class="span3"><a href="../icon/bell-alt"><i class="icon-bell-alt"></i> icon-bell-alt</a></div>
-
- <div class="span3"><a href="../icon/bolt"><i class="icon-bolt"></i> icon-bolt</a></div>
-
- <div class="span3"><a href="../icon/book"><i class="icon-book"></i> icon-book</a></div>
-
- <div class="span3"><a href="../icon/bookmark"><i class="icon-bookmark"></i> icon-bookmark</a></div>
-
- <div class="span3"><a href="../icon/bookmark-empty"><i class="icon-bookmark-empty"></i> icon-bookmark-empty</a></div>
-
- <div class="span3"><a href="../icon/briefcase"><i class="icon-briefcase"></i> icon-briefcase</a></div>
-
- <div class="span3"><a href="../icon/bug"><i class="icon-bug"></i> icon-bug</a></div>
-
- <div class="span3"><a href="../icon/building"><i class="icon-building"></i> icon-building</a></div>
-
- <div class="span3"><a href="../icon/bullhorn"><i class="icon-bullhorn"></i> icon-bullhorn</a></div>
-
- <div class="span3"><a href="../icon/bullseye"><i class="icon-bullseye"></i> icon-bullseye</a></div>
-
- <div class="span3"><a href="../icon/calendar"><i class="icon-calendar"></i> icon-calendar</a></div>
-
- <div class="span3"><a href="../icon/calendar-empty"><i class="icon-calendar-empty"></i> icon-calendar-empty</a></div>
-
- <div class="span3"><a href="../icon/camera"><i class="icon-camera"></i> icon-camera</a></div>
-
- <div class="span3"><a href="../icon/camera-retro"><i class="icon-camera-retro"></i> icon-camera-retro</a></div>
-
- <div class="span3"><a href="../icon/certificate"><i class="icon-certificate"></i> icon-certificate</a></div>
-
- <div class="span3"><a href="../icon/check"><i class="icon-check"></i> icon-check</a></div>
-
- <div class="span3"><a href="../icon/check-empty"><i class="icon-check-empty"></i> icon-check-empty</a></div>
-
- <div class="span3"><a href="../icon/check-minus"><i class="icon-check-minus"></i> icon-check-minus</a></div>
-
- <div class="span3"><a href="../icon/check-sign"><i class="icon-check-sign"></i> icon-check-sign</a></div>
-
- <div class="span3"><a href="../icon/circle"><i class="icon-circle"></i> icon-circle</a></div>
-
- <div class="span3"><a href="../icon/circle-blank"><i class="icon-circle-blank"></i> icon-circle-blank</a></div>
-
- <div class="span3"><a href="../icon/cloud"><i class="icon-cloud"></i> icon-cloud</a></div>
-
- <div class="span3"><a href="../icon/cloud-download"><i class="icon-cloud-download"></i> icon-cloud-download</a></div>
-
- <div class="span3"><a href="../icon/cloud-upload"><i class="icon-cloud-upload"></i> icon-cloud-upload</a></div>
-
- <div class="span3"><a href="../icon/code"><i class="icon-code"></i> icon-code</a></div>
-
- <div class="span3"><a href="../icon/code-fork"><i class="icon-code-fork"></i> icon-code-fork</a></div>
-
- <div class="span3"><a href="../icon/coffee"><i class="icon-coffee"></i> icon-coffee</a></div>
-
- <div class="span3"><a href="../icon/cog"><i class="icon-cog"></i> icon-cog</a></div>
-
- <div class="span3"><a href="../icon/cogs"><i class="icon-cogs"></i> icon-cogs</a></div>
-
- <div class="span3"><a href="../icon/collapse"><i class="icon-collapse"></i> icon-collapse</a></div>
-
- <div class="span3"><a href="../icon/collapse-alt"><i class="icon-collapse-alt"></i> icon-collapse-alt</a></div>
-
- <div class="span3"><a href="../icon/collapse-top"><i class="icon-collapse-top"></i> icon-collapse-top</a></div>
-
- <div class="span3"><a href="../icon/comment"><i class="icon-comment"></i> icon-comment</a></div>
-
- <div class="span3"><a href="../icon/comment-alt"><i class="icon-comment-alt"></i> icon-comment-alt</a></div>
-
- <div class="span3"><a href="../icon/comments"><i class="icon-comments"></i> icon-comments</a></div>
-
- <div class="span3"><a href="../icon/comments-alt"><i class="icon-comments-alt"></i> icon-comments-alt</a></div>
-
- <div class="span3"><a href="../icon/compass"><i class="icon-compass"></i> icon-compass</a></div>
-
- <div class="span3"><a href="../icon/credit-card"><i class="icon-credit-card"></i> icon-credit-card</a></div>
-
- <div class="span3"><a href="../icon/crop"><i class="icon-crop"></i> icon-crop</a></div>
-
- <div class="span3"><a href="../icon/dashboard"><i class="icon-dashboard"></i> icon-dashboard</a></div>
-
- <div class="span3"><a href="../icon/desktop"><i class="icon-desktop"></i> icon-desktop</a></div>
-
- <div class="span3"><a href="../icon/download"><i class="icon-download"></i> icon-download</a></div>
-
- <div class="span3"><a href="../icon/download-alt"><i class="icon-download-alt"></i> icon-download-alt</a></div>
-
- <div class="span3"><a href="../icon/edit"><i class="icon-edit"></i> icon-edit</a></div>
-
- <div class="span3"><a href="../icon/edit-sign"><i class="icon-edit-sign"></i> icon-edit-sign</a></div>
-
- <div class="span3"><a href="../icon/ellipsis-horizontal"><i class="icon-ellipsis-horizontal"></i> icon-ellipsis-horizontal</a></div>
-
- <div class="span3"><a href="../icon/ellipsis-vertical"><i class="icon-ellipsis-vertical"></i> icon-ellipsis-vertical</a></div>
-
- <div class="span3"><a href="../icon/envelope"><i class="icon-envelope"></i> icon-envelope</a></div>
-
- <div class="span3"><a href="../icon/envelope-alt"><i class="icon-envelope-alt"></i> icon-envelope-alt</a></div>
-
- <div class="span3"><a href="../icon/eraser"><i class="icon-eraser"></i> icon-eraser</a></div>
-
- <div class="span3"><a href="../icon/exchange"><i class="icon-exchange"></i> icon-exchange</a></div>
-
- <div class="span3"><a href="../icon/exclamation"><i class="icon-exclamation"></i> icon-exclamation</a></div>
-
- <div class="span3"><a href="../icon/exclamation-sign"><i class="icon-exclamation-sign"></i> icon-exclamation-sign</a></div>
-
- <div class="span3"><a href="../icon/expand"><i class="icon-expand"></i> icon-expand</a></div>
-
- <div class="span3"><a href="../icon/expand-alt"><i class="icon-expand-alt"></i> icon-expand-alt</a></div>
-
- <div class="span3"><a href="../icon/external-link"><i class="icon-external-link"></i> icon-external-link</a></div>
-
- <div class="span3"><a href="../icon/external-link-sign"><i class="icon-external-link-sign"></i> icon-external-link-sign</a></div>
-
- <div class="span3"><a href="../icon/eye-close"><i class="icon-eye-close"></i> icon-eye-close</a></div>
-
- <div class="span3"><a href="../icon/eye-open"><i class="icon-eye-open"></i> icon-eye-open</a></div>
-
- <div class="span3"><a href="../icon/facetime-video"><i class="icon-facetime-video"></i> icon-facetime-video</a></div>
-
- <div class="span3"><a href="../icon/female"><i class="icon-female"></i> icon-female</a></div>
-
- <div class="span3"><a href="../icon/fighter-jet"><i class="icon-fighter-jet"></i> icon-fighter-jet</a></div>
-
- <div class="span3"><a href="../icon/film"><i class="icon-film"></i> icon-film</a></div>
-
- <div class="span3"><a href="../icon/filter"><i class="icon-filter"></i> icon-filter</a></div>
-
- <div class="span3"><a href="../icon/fire"><i class="icon-fire"></i> icon-fire</a></div>
-
- <div class="span3"><a href="../icon/fire-extinguisher"><i class="icon-fire-extinguisher"></i> icon-fire-extinguisher</a></div>
-
- <div class="span3"><a href="../icon/flag"><i class="icon-flag"></i> icon-flag</a></div>
-
- <div class="span3"><a href="../icon/flag-alt"><i class="icon-flag-alt"></i> icon-flag-alt</a></div>
-
- <div class="span3"><a href="../icon/flag-checkered"><i class="icon-flag-checkered"></i> icon-flag-checkered</a></div>
-
- <div class="span3"><a href="../icon/folder-close"><i class="icon-folder-close"></i> icon-folder-close</a></div>
-
- <div class="span3"><a href="../icon/folder-close-alt"><i class="icon-folder-close-alt"></i> icon-folder-close-alt</a></div>
-
- <div class="span3"><a href="../icon/folder-open"><i class="icon-folder-open"></i> icon-folder-open</a></div>
-
- <div class="span3"><a href="../icon/folder-open-alt"><i class="icon-folder-open-alt"></i> icon-folder-open-alt</a></div>
-
- <div class="span3"><a href="../icon/food"><i class="icon-food"></i> icon-food</a></div>
-
- <div class="span3"><a href="../icon/frown"><i class="icon-frown"></i> icon-frown</a></div>
-
- <div class="span3"><a href="../icon/gamepad"><i class="icon-gamepad"></i> icon-gamepad</a></div>
-
- <div class="span3"><a href="../icon/cog"><i class="icon-gear"></i> icon-gear <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/cogs"><i class="icon-gears"></i> icon-gears <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/gift"><i class="icon-gift"></i> icon-gift</a></div>
-
- <div class="span3"><a href="../icon/glass"><i class="icon-glass"></i> icon-glass</a></div>
-
- <div class="span3"><a href="../icon/globe"><i class="icon-globe"></i> icon-globe</a></div>
-
- <div class="span3"><a href="../icon/group"><i class="icon-group"></i> icon-group</a></div>
-
- <div class="span3"><a href="../icon/hdd"><i class="icon-hdd"></i> icon-hdd</a></div>
-
- <div class="span3"><a href="../icon/headphones"><i class="icon-headphones"></i> icon-headphones</a></div>
-
- <div class="span3"><a href="../icon/heart"><i class="icon-heart"></i> icon-heart</a></div>
-
- <div class="span3"><a href="../icon/heart-empty"><i class="icon-heart-empty"></i> icon-heart-empty</a></div>
-
- <div class="span3"><a href="../icon/home"><i class="icon-home"></i> icon-home</a></div>
-
- <div class="span3"><a href="../icon/inbox"><i class="icon-inbox"></i> icon-inbox</a></div>
-
- <div class="span3"><a href="../icon/info"><i class="icon-info"></i> icon-info</a></div>
-
- <div class="span3"><a href="../icon/info-sign"><i class="icon-info-sign"></i> icon-info-sign</a></div>
-
- <div class="span3"><a href="../icon/key"><i class="icon-key"></i> icon-key</a></div>
-
- <div class="span3"><a href="../icon/keyboard"><i class="icon-keyboard"></i> icon-keyboard</a></div>
-
- <div class="span3"><a href="../icon/laptop"><i class="icon-laptop"></i> icon-laptop</a></div>
-
- <div class="span3"><a href="../icon/leaf"><i class="icon-leaf"></i> icon-leaf</a></div>
-
- <div class="span3"><a href="../icon/legal"><i class="icon-legal"></i> icon-legal</a></div>
-
- <div class="span3"><a href="../icon/lemon"><i class="icon-lemon"></i> icon-lemon</a></div>
-
- <div class="span3"><a href="../icon/level-down"><i class="icon-level-down"></i> icon-level-down</a></div>
-
- <div class="span3"><a href="../icon/level-up"><i class="icon-level-up"></i> icon-level-up</a></div>
-
- <div class="span3"><a href="../icon/lightbulb"><i class="icon-lightbulb"></i> icon-lightbulb</a></div>
-
- <div class="span3"><a href="../icon/location-arrow"><i class="icon-location-arrow"></i> icon-location-arrow</a></div>
-
- <div class="span3"><a href="../icon/lock"><i class="icon-lock"></i> icon-lock</a></div>
-
- <div class="span3"><a href="../icon/magic"><i class="icon-magic"></i> icon-magic</a></div>
-
- <div class="span3"><a href="../icon/magnet"><i class="icon-magnet"></i> icon-magnet</a></div>
-
- <div class="span3"><a href="../icon/share-alt"><i class="icon-mail-forward"></i> icon-mail-forward <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/reply"><i class="icon-mail-reply"></i> icon-mail-reply <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/mail-reply-all"><i class="icon-mail-reply-all"></i> icon-mail-reply-all</a></div>
-
- <div class="span3"><a href="../icon/male"><i class="icon-male"></i> icon-male</a></div>
-
- <div class="span3"><a href="../icon/map-marker"><i class="icon-map-marker"></i> icon-map-marker</a></div>
-
- <div class="span3"><a href="../icon/meh"><i class="icon-meh"></i> icon-meh</a></div>
-
- <div class="span3"><a href="../icon/microphone"><i class="icon-microphone"></i> icon-microphone</a></div>
-
- <div class="span3"><a href="../icon/microphone-off"><i class="icon-microphone-off"></i> icon-microphone-off</a></div>
-
- <div class="span3"><a href="../icon/minus"><i class="icon-minus"></i> icon-minus</a></div>
-
- <div class="span3"><a href="../icon/minus-sign"><i class="icon-minus-sign"></i> icon-minus-sign</a></div>
-
- <div class="span3"><a href="../icon/minus-sign-alt"><i class="icon-minus-sign-alt"></i> icon-minus-sign-alt</a></div>
-
- <div class="span3"><a href="../icon/mobile-phone"><i class="icon-mobile-phone"></i> icon-mobile-phone</a></div>
-
- <div class="span3"><a href="../icon/money"><i class="icon-money"></i> icon-money</a></div>
-
- <div class="span3"><a href="../icon/moon"><i class="icon-moon"></i> icon-moon</a></div>
-
- <div class="span3"><a href="../icon/move"><i class="icon-move"></i> icon-move</a></div>
-
- <div class="span3"><a href="../icon/music"><i class="icon-music"></i> icon-music</a></div>
-
- <div class="span3"><a href="../icon/off"><i class="icon-off"></i> icon-off</a></div>
-
- <div class="span3"><a href="../icon/ok"><i class="icon-ok"></i> icon-ok</a></div>
-
- <div class="span3"><a href="../icon/ok-circle"><i class="icon-ok-circle"></i> icon-ok-circle</a></div>
-
- <div class="span3"><a href="../icon/ok-sign"><i class="icon-ok-sign"></i> icon-ok-sign</a></div>
-
- <div class="span3"><a href="../icon/pencil"><i class="icon-pencil"></i> icon-pencil</a></div>
-
- <div class="span3"><a href="../icon/phone"><i class="icon-phone"></i> icon-phone</a></div>
-
- <div class="span3"><a href="../icon/phone-sign"><i class="icon-phone-sign"></i> icon-phone-sign</a></div>
-
- <div class="span3"><a href="../icon/picture"><i class="icon-picture"></i> icon-picture</a></div>
-
- <div class="span3"><a href="../icon/plane"><i class="icon-plane"></i> icon-plane</a></div>
-
- <div class="span3"><a href="../icon/plus"><i class="icon-plus"></i> icon-plus</a></div>
-
- <div class="span3"><a href="../icon/plus-sign"><i class="icon-plus-sign"></i> icon-plus-sign</a></div>
-
- <div class="span3"><a href="../icon/plus-sign-alt"><i class="icon-plus-sign-alt"></i> icon-plus-sign-alt</a></div>
-
- <div class="span3"><a href="../icon/off"><i class="icon-power-off"></i> icon-power-off <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/print"><i class="icon-print"></i> icon-print</a></div>
-
- <div class="span3"><a href="../icon/pushpin"><i class="icon-pushpin"></i> icon-pushpin</a></div>
-
- <div class="span3"><a href="../icon/puzzle-piece"><i class="icon-puzzle-piece"></i> icon-puzzle-piece</a></div>
-
- <div class="span3"><a href="../icon/qrcode"><i class="icon-qrcode"></i> icon-qrcode</a></div>
-
- <div class="span3"><a href="../icon/question"><i class="icon-question"></i> icon-question</a></div>
-
- <div class="span3"><a href="../icon/question-sign"><i class="icon-question-sign"></i> icon-question-sign</a></div>
-
- <div class="span3"><a href="../icon/quote-left"><i class="icon-quote-left"></i> icon-quote-left</a></div>
-
- <div class="span3"><a href="../icon/quote-right"><i class="icon-quote-right"></i> icon-quote-right</a></div>
-
- <div class="span3"><a href="../icon/random"><i class="icon-random"></i> icon-random</a></div>
-
- <div class="span3"><a href="../icon/refresh"><i class="icon-refresh"></i> icon-refresh</a></div>
-
- <div class="span3"><a href="../icon/remove"><i class="icon-remove"></i> icon-remove</a></div>
-
- <div class="span3"><a href="../icon/remove-circle"><i class="icon-remove-circle"></i> icon-remove-circle</a></div>
-
- <div class="span3"><a href="../icon/remove-sign"><i class="icon-remove-sign"></i> icon-remove-sign</a></div>
-
- <div class="span3"><a href="../icon/reorder"><i class="icon-reorder"></i> icon-reorder</a></div>
-
- <div class="span3"><a href="../icon/reply"><i class="icon-reply"></i> icon-reply</a></div>
-
- <div class="span3"><a href="../icon/reply-all"><i class="icon-reply-all"></i> icon-reply-all</a></div>
-
- <div class="span3"><a href="../icon/resize-horizontal"><i class="icon-resize-horizontal"></i> icon-resize-horizontal</a></div>
-
- <div class="span3"><a href="../icon/resize-vertical"><i class="icon-resize-vertical"></i> icon-resize-vertical</a></div>
-
- <div class="span3"><a href="../icon/retweet"><i class="icon-retweet"></i> icon-retweet</a></div>
-
- <div class="span3"><a href="../icon/road"><i class="icon-road"></i> icon-road</a></div>
-
- <div class="span3"><a href="../icon/rocket"><i class="icon-rocket"></i> icon-rocket</a></div>
-
- <div class="span3"><a href="../icon/rss"><i class="icon-rss"></i> icon-rss</a></div>
-
- <div class="span3"><a href="../icon/rss-sign"><i class="icon-rss-sign"></i> icon-rss-sign</a></div>
-
- <div class="span3"><a href="../icon/screenshot"><i class="icon-screenshot"></i> icon-screenshot</a></div>
-
- <div class="span3"><a href="../icon/search"><i class="icon-search"></i> icon-search</a></div>
-
- <div class="span3"><a href="../icon/share"><i class="icon-share"></i> icon-share</a></div>
-
- <div class="span3"><a href="../icon/share-alt"><i class="icon-share-alt"></i> icon-share-alt</a></div>
-
- <div class="span3"><a href="../icon/share-sign"><i class="icon-share-sign"></i> icon-share-sign</a></div>
-
- <div class="span3"><a href="../icon/shield"><i class="icon-shield"></i> icon-shield</a></div>
-
- <div class="span3"><a href="../icon/shopping-cart"><i class="icon-shopping-cart"></i> icon-shopping-cart</a></div>
-
- <div class="span3"><a href="../icon/sign-blank"><i class="icon-sign-blank"></i> icon-sign-blank</a></div>
-
- <div class="span3"><a href="../icon/signal"><i class="icon-signal"></i> icon-signal</a></div>
-
- <div class="span3"><a href="../icon/signin"><i class="icon-signin"></i> icon-signin</a></div>
-
- <div class="span3"><a href="../icon/signout"><i class="icon-signout"></i> icon-signout</a></div>
-
- <div class="span3"><a href="../icon/sitemap"><i class="icon-sitemap"></i> icon-sitemap</a></div>
-
- <div class="span3"><a href="../icon/smile"><i class="icon-smile"></i> icon-smile</a></div>
-
- <div class="span3"><a href="../icon/sort"><i class="icon-sort"></i> icon-sort</a></div>
-
- <div class="span3"><a href="../icon/sort-by-alphabet"><i class="icon-sort-by-alphabet"></i> icon-sort-by-alphabet</a></div>
-
- <div class="span3"><a href="../icon/sort-by-alphabet-alt"><i class="icon-sort-by-alphabet-alt"></i> icon-sort-by-alphabet-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-by-attributes"><i class="icon-sort-by-attributes"></i> icon-sort-by-attributes</a></div>
-
- <div class="span3"><a href="../icon/sort-by-attributes-alt"><i class="icon-sort-by-attributes-alt"></i> icon-sort-by-attributes-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-by-order"><i class="icon-sort-by-order"></i> icon-sort-by-order</a></div>
-
- <div class="span3"><a href="../icon/sort-by-order-alt"><i class="icon-sort-by-order-alt"></i> icon-sort-by-order-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-down"><i class="icon-sort-down"></i> icon-sort-down</a></div>
-
- <div class="span3"><a href="../icon/sort-up"><i class="icon-sort-up"></i> icon-sort-up</a></div>
-
- <div class="span3"><a href="../icon/spinner"><i class="icon-spinner"></i> icon-spinner</a></div>
-
- <div class="span3"><a href="../icon/star"><i class="icon-star"></i> icon-star</a></div>
-
- <div class="span3"><a href="../icon/star-empty"><i class="icon-star-empty"></i> icon-star-empty</a></div>
-
- <div class="span3"><a href="../icon/star-half"><i class="icon-star-half"></i> icon-star-half</a></div>
-
- <div class="span3"><a href="../icon/star-half-empty"><i class="icon-star-half-empty"></i> icon-star-half-empty</a></div>
-
- <div class="span3"><a href="../icon/star-half-empty"><i class="icon-star-half-full"></i> icon-star-half-full <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/subscript"><i class="icon-subscript"></i> icon-subscript</a></div>
-
- <div class="span3"><a href="../icon/suitcase"><i class="icon-suitcase"></i> icon-suitcase</a></div>
-
- <div class="span3"><a href="../icon/sun"><i class="icon-sun"></i> icon-sun</a></div>
-
- <div class="span3"><a href="../icon/superscript"><i class="icon-superscript"></i> icon-superscript</a></div>
-
- <div class="span3"><a href="../icon/tablet"><i class="icon-tablet"></i> icon-tablet</a></div>
-
- <div class="span3"><a href="../icon/tag"><i class="icon-tag"></i> icon-tag</a></div>
-
- <div class="span3"><a href="../icon/tags"><i class="icon-tags"></i> icon-tags</a></div>
-
- <div class="span3"><a href="../icon/tasks"><i class="icon-tasks"></i> icon-tasks</a></div>
-
- <div class="span3"><a href="../icon/terminal"><i class="icon-terminal"></i> icon-terminal</a></div>
-
- <div class="span3"><a href="../icon/thumbs-down"><i class="icon-thumbs-down"></i> icon-thumbs-down</a></div>
-
- <div class="span3"><a href="../icon/thumbs-down-alt"><i class="icon-thumbs-down-alt"></i> icon-thumbs-down-alt</a></div>
-
- <div class="span3"><a href="../icon/thumbs-up"><i class="icon-thumbs-up"></i> icon-thumbs-up</a></div>
-
- <div class="span3"><a href="../icon/thumbs-up-alt"><i class="icon-thumbs-up-alt"></i> icon-thumbs-up-alt</a></div>
-
- <div class="span3"><a href="../icon/ticket"><i class="icon-ticket"></i> icon-ticket</a></div>
-
- <div class="span3"><a href="../icon/time"><i class="icon-time"></i> icon-time</a></div>
-
- <div class="span3"><a href="../icon/tint"><i class="icon-tint"></i> icon-tint</a></div>
-
- <div class="span3"><a href="../icon/trash"><i class="icon-trash"></i> icon-trash</a></div>
-
- <div class="span3"><a href="../icon/trophy"><i class="icon-trophy"></i> icon-trophy</a></div>
-
- <div class="span3"><a href="../icon/truck"><i class="icon-truck"></i> icon-truck</a></div>
-
- <div class="span3"><a href="../icon/umbrella"><i class="icon-umbrella"></i> icon-umbrella</a></div>
-
- <div class="span3"><a href="../icon/check-empty"><i class="icon-unchecked"></i> icon-unchecked <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/unlock"><i class="icon-unlock"></i> icon-unlock</a></div>
-
- <div class="span3"><a href="../icon/unlock-alt"><i class="icon-unlock-alt"></i> icon-unlock-alt</a></div>
-
- <div class="span3"><a href="../icon/upload"><i class="icon-upload"></i> icon-upload</a></div>
-
- <div class="span3"><a href="../icon/upload-alt"><i class="icon-upload-alt"></i> icon-upload-alt</a></div>
-
- <div class="span3"><a href="../icon/user"><i class="icon-user"></i> icon-user</a></div>
-
- <div class="span3"><a href="../icon/volume-down"><i class="icon-volume-down"></i> icon-volume-down</a></div>
-
- <div class="span3"><a href="../icon/volume-off"><i class="icon-volume-off"></i> icon-volume-off</a></div>
-
- <div class="span3"><a href="../icon/volume-up"><i class="icon-volume-up"></i> icon-volume-up</a></div>
-
- <div class="span3"><a href="../icon/warning-sign"><i class="icon-warning-sign"></i> icon-warning-sign</a></div>
-
- <div class="span3"><a href="../icon/wrench"><i class="icon-wrench"></i> icon-wrench</a></div>
-
- <div class="span3"><a href="../icon/zoom-in"><i class="icon-zoom-in"></i> icon-zoom-in</a></div>
-
- <div class="span3"><a href="../icon/zoom-out"><i class="icon-zoom-out"></i> icon-zoom-out</a></div>
-
- </div>
-
-</section>
-
-<section id="currency">
- <h2 class="page-header">Currency Icons</h2>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/btc"><i class="icon-bitcoin"></i> icon-bitcoin <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-btc"></i> icon-btc</a></div>
-
- <div class="span3"><a href="../icon/cny"><i class="icon-cny"></i> icon-cny</a></div>
-
- <div class="span3"><a href="../icon/usd"><i class="icon-dollar"></i> icon-dollar <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/eur"><i class="icon-eur"></i> icon-eur</a></div>
-
- <div class="span3"><a href="../icon/eur"><i class="icon-euro"></i> icon-euro <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/gbp"><i class="icon-gbp"></i> icon-gbp</a></div>
-
- <div class="span3"><a href="../icon/inr"><i class="icon-inr"></i> icon-inr</a></div>
-
- <div class="span3"><a href="../icon/jpy"><i class="icon-jpy"></i> icon-jpy</a></div>
-
- <div class="span3"><a href="../icon/krw"><i class="icon-krw"></i> icon-krw</a></div>
-
- <div class="span3"><a href="../icon/cny"><i class="icon-renminbi"></i> icon-renminbi <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/inr"><i class="icon-rupee"></i> icon-rupee <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/usd"><i class="icon-usd"></i> icon-usd</a></div>
-
- <div class="span3"><a href="../icon/krw"><i class="icon-won"></i> icon-won <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/jpy"><i class="icon-yen"></i> icon-yen <span class="muted">(alias)</span></a></div>
-
- </div>
-
-</section>
-
-<section id="text-editor">
- <h2 class="page-header">Text Editor Icons</h2>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/align-center"><i class="icon-align-center"></i> icon-align-center</a></div>
-
- <div class="span3"><a href="../icon/align-justify"><i class="icon-align-justify"></i> icon-align-justify</a></div>
-
- <div class="span3"><a href="../icon/align-left"><i class="icon-align-left"></i> icon-align-left</a></div>
-
- <div class="span3"><a href="../icon/align-right"><i class="icon-align-right"></i> icon-align-right</a></div>
-
- <div class="span3"><a href="../icon/bold"><i class="icon-bold"></i> icon-bold</a></div>
-
- <div class="span3"><a href="../icon/columns"><i class="icon-columns"></i> icon-columns</a></div>
-
- <div class="span3"><a href="../icon/copy"><i class="icon-copy"></i> icon-copy</a></div>
-
- <div class="span3"><a href="../icon/cut"><i class="icon-cut"></i> icon-cut</a></div>
-
- <div class="span3"><a href="../icon/eraser"><i class="icon-eraser"></i> icon-eraser</a></div>
-
- <div class="span3"><a href="../icon/file"><i class="icon-file"></i> icon-file</a></div>
-
- <div class="span3"><a href="../icon/file-alt"><i class="icon-file-alt"></i> icon-file-alt</a></div>
-
- <div class="span3"><a href="../icon/file-text"><i class="icon-file-text"></i> icon-file-text</a></div>
-
- <div class="span3"><a href="../icon/file-text-alt"><i class="icon-file-text-alt"></i> icon-file-text-alt</a></div>
-
- <div class="span3"><a href="../icon/font"><i class="icon-font"></i> icon-font</a></div>
-
- <div class="span3"><a href="../icon/indent-left"><i class="icon-indent-left"></i> icon-indent-left</a></div>
-
- <div class="span3"><a href="../icon/indent-right"><i class="icon-indent-right"></i> icon-indent-right</a></div>
-
- <div class="span3"><a href="../icon/italic"><i class="icon-italic"></i> icon-italic</a></div>
-
- <div class="span3"><a href="../icon/link"><i class="icon-link"></i> icon-link</a></div>
-
- <div class="span3"><a href="../icon/list"><i class="icon-list"></i> icon-list</a></div>
-
- <div class="span3"><a href="../icon/list-alt"><i class="icon-list-alt"></i> icon-list-alt</a></div>
-
- <div class="span3"><a href="../icon/list-ol"><i class="icon-list-ol"></i> icon-list-ol</a></div>
-
- <div class="span3"><a href="../icon/list-ul"><i class="icon-list-ul"></i> icon-list-ul</a></div>
-
- <div class="span3"><a href="../icon/paper-clip"><i class="icon-paper-clip"></i> icon-paper-clip</a></div>
-
- <div class="span3"><a href="../icon/paper-clip"><i class="icon-paperclip"></i> icon-paperclip <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/paste"><i class="icon-paste"></i> icon-paste</a></div>
-
- <div class="span3"><a href="../icon/repeat"><i class="icon-repeat"></i> icon-repeat</a></div>
-
- <div class="span3"><a href="../icon/undo"><i class="icon-rotate-left"></i> icon-rotate-left <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/repeat"><i class="icon-rotate-right"></i> icon-rotate-right <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/save"><i class="icon-save"></i> icon-save</a></div>
-
- <div class="span3"><a href="../icon/strikethrough"><i class="icon-strikethrough"></i> icon-strikethrough</a></div>
-
- <div class="span3"><a href="../icon/table"><i class="icon-table"></i> icon-table</a></div>
-
- <div class="span3"><a href="../icon/text-height"><i class="icon-text-height"></i> icon-text-height</a></div>
-
- <div class="span3"><a href="../icon/text-width"><i class="icon-text-width"></i> icon-text-width</a></div>
-
- <div class="span3"><a href="../icon/th"><i class="icon-th"></i> icon-th</a></div>
-
- <div class="span3"><a href="../icon/th-large"><i class="icon-th-large"></i> icon-th-large</a></div>
-
- <div class="span3"><a href="../icon/th-list"><i class="icon-th-list"></i> icon-th-list</a></div>
-
- <div class="span3"><a href="../icon/underline"><i class="icon-underline"></i> icon-underline</a></div>
-
- <div class="span3"><a href="../icon/undo"><i class="icon-undo"></i> icon-undo</a></div>
-
- <div class="span3"><a href="../icon/unlink"><i class="icon-unlink"></i> icon-unlink</a></div>
-
- </div>
-
-</section>
-
-<section id="directional">
- <h2 class="page-header">Directional Icons</h2>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/angle-down"><i class="icon-angle-down"></i> icon-angle-down</a></div>
-
- <div class="span3"><a href="../icon/angle-left"><i class="icon-angle-left"></i> icon-angle-left</a></div>
-
- <div class="span3"><a href="../icon/angle-right"><i class="icon-angle-right"></i> icon-angle-right</a></div>
-
- <div class="span3"><a href="../icon/angle-up"><i class="icon-angle-up"></i> icon-angle-up</a></div>
-
- <div class="span3"><a href="../icon/arrow-down"><i class="icon-arrow-down"></i> icon-arrow-down</a></div>
-
- <div class="span3"><a href="../icon/arrow-left"><i class="icon-arrow-left"></i> icon-arrow-left</a></div>
-
- <div class="span3"><a href="../icon/arrow-right"><i class="icon-arrow-right"></i> icon-arrow-right</a></div>
-
- <div class="span3"><a href="../icon/arrow-up"><i class="icon-arrow-up"></i> icon-arrow-up</a></div>
-
- <div class="span3"><a href="../icon/caret-down"><i class="icon-caret-down"></i> icon-caret-down</a></div>
-
- <div class="span3"><a href="../icon/caret-left"><i class="icon-caret-left"></i> icon-caret-left</a></div>
-
- <div class="span3"><a href="../icon/caret-right"><i class="icon-caret-right"></i> icon-caret-right</a></div>
-
- <div class="span3"><a href="../icon/caret-up"><i class="icon-caret-up"></i> icon-caret-up</a></div>
-
- <div class="span3"><a href="../icon/chevron-down"><i class="icon-chevron-down"></i> icon-chevron-down</a></div>
-
- <div class="span3"><a href="../icon/chevron-left"><i class="icon-chevron-left"></i> icon-chevron-left</a></div>
-
- <div class="span3"><a href="../icon/chevron-right"><i class="icon-chevron-right"></i> icon-chevron-right</a></div>
-
- <div class="span3"><a href="../icon/chevron-sign-down"><i class="icon-chevron-sign-down"></i> icon-chevron-sign-down</a></div>
-
- <div class="span3"><a href="../icon/chevron-sign-left"><i class="icon-chevron-sign-left"></i> icon-chevron-sign-left</a></div>
-
- <div class="span3"><a href="../icon/chevron-sign-right"><i class="icon-chevron-sign-right"></i> icon-chevron-sign-right</a></div>
-
- <div class="span3"><a href="../icon/chevron-sign-up"><i class="icon-chevron-sign-up"></i> icon-chevron-sign-up</a></div>
-
- <div class="span3"><a href="../icon/chevron-up"><i class="icon-chevron-up"></i> icon-chevron-up</a></div>
-
- <div class="span3"><a href="../icon/circle-arrow-down"><i class="icon-circle-arrow-down"></i> icon-circle-arrow-down</a></div>
-
- <div class="span3"><a href="../icon/circle-arrow-left"><i class="icon-circle-arrow-left"></i> icon-circle-arrow-left</a></div>
-
- <div class="span3"><a href="../icon/circle-arrow-right"><i class="icon-circle-arrow-right"></i> icon-circle-arrow-right</a></div>
-
- <div class="span3"><a href="../icon/circle-arrow-up"><i class="icon-circle-arrow-up"></i> icon-circle-arrow-up</a></div>
-
- <div class="span3"><a href="../icon/double-angle-down"><i class="icon-double-angle-down"></i> icon-double-angle-down</a></div>
-
- <div class="span3"><a href="../icon/double-angle-left"><i class="icon-double-angle-left"></i> icon-double-angle-left</a></div>
-
- <div class="span3"><a href="../icon/double-angle-right"><i class="icon-double-angle-right"></i> icon-double-angle-right</a></div>
-
- <div class="span3"><a href="../icon/double-angle-up"><i class="icon-double-angle-up"></i> icon-double-angle-up</a></div>
-
- <div class="span3"><a href="../icon/hand-down"><i class="icon-hand-down"></i> icon-hand-down</a></div>
-
- <div class="span3"><a href="../icon/hand-left"><i class="icon-hand-left"></i> icon-hand-left</a></div>
-
- <div class="span3"><a href="../icon/hand-right"><i class="icon-hand-right"></i> icon-hand-right</a></div>
-
- <div class="span3"><a href="../icon/hand-up"><i class="icon-hand-up"></i> icon-hand-up</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-down"><i class="icon-long-arrow-down"></i> icon-long-arrow-down</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-left"><i class="icon-long-arrow-left"></i> icon-long-arrow-left</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-right"><i class="icon-long-arrow-right"></i> icon-long-arrow-right</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-up"><i class="icon-long-arrow-up"></i> icon-long-arrow-up</a></div>
-
- </div>
-
-</section>
-
-<section id="video-player">
- <h2 class="page-header">Video Player Icons</h2>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/backward"><i class="icon-backward"></i> icon-backward</a></div>
-
- <div class="span3"><a href="../icon/eject"><i class="icon-eject"></i> icon-eject</a></div>
-
- <div class="span3"><a href="../icon/fast-backward"><i class="icon-fast-backward"></i> icon-fast-backward</a></div>
-
- <div class="span3"><a href="../icon/fast-forward"><i class="icon-fast-forward"></i> icon-fast-forward</a></div>
-
- <div class="span3"><a href="../icon/forward"><i class="icon-forward"></i> icon-forward</a></div>
-
- <div class="span3"><a href="../icon/fullscreen"><i class="icon-fullscreen"></i> icon-fullscreen</a></div>
-
- <div class="span3"><a href="../icon/pause"><i class="icon-pause"></i> icon-pause</a></div>
-
- <div class="span3"><a href="../icon/play"><i class="icon-play"></i> icon-play</a></div>
-
- <div class="span3"><a href="../icon/play-circle"><i class="icon-play-circle"></i> icon-play-circle</a></div>
-
- <div class="span3"><a href="../icon/play-sign"><i class="icon-play-sign"></i> icon-play-sign</a></div>
-
- <div class="span3"><a href="../icon/resize-full"><i class="icon-resize-full"></i> icon-resize-full</a></div>
-
- <div class="span3"><a href="../icon/resize-small"><i class="icon-resize-small"></i> icon-resize-small</a></div>
-
- <div class="span3"><a href="../icon/step-backward"><i class="icon-step-backward"></i> icon-step-backward</a></div>
-
- <div class="span3"><a href="../icon/step-forward"><i class="icon-step-forward"></i> icon-step-forward</a></div>
-
- <div class="span3"><a href="../icon/stop"><i class="icon-stop"></i> icon-stop</a></div>
-
- <div class="span3"><a href="../icon/youtube-play"><i class="icon-youtube-play"></i> icon-youtube-play</a></div>
-
- </div>
-
-</section>
-
-<section id="brand">
- <h2 class="page-header">Brand Icons</h2>
-
- <div class="alert alert-info">
- <ul class="margin-bottom-none">
- <li>All brand icons are trademarks of their respective owners.</li>
- <li>The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.</li>
-</ul>
-
- </div>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/adn"><i class="icon-adn"></i> icon-adn</a></div>
-
- <div class="span3"><a href="../icon/android"><i class="icon-android"></i> icon-android</a></div>
-
- <div class="span3"><a href="../icon/apple"><i class="icon-apple"></i> icon-apple</a></div>
-
- <div class="span3"><a href="../icon/bitbucket"><i class="icon-bitbucket"></i> icon-bitbucket</a></div>
-
- <div class="span3"><a href="../icon/bitbucket-sign"><i class="icon-bitbucket-sign"></i> icon-bitbucket-sign</a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-bitcoin"></i> icon-bitcoin <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-btc"></i> icon-btc</a></div>
-
- <div class="span3"><a href="../icon/css3"><i class="icon-css3"></i> icon-css3</a></div>
-
- <div class="span3"><a href="../icon/dribbble"><i class="icon-dribbble"></i> icon-dribbble</a></div>
-
- <div class="span3"><a href="../icon/dropbox"><i class="icon-dropbox"></i> icon-dropbox</a></div>
-
- <div class="span3"><a href="../icon/facebook"><i class="icon-facebook"></i> icon-facebook</a></div>
-
- <div class="span3"><a href="../icon/facebook-sign"><i class="icon-facebook-sign"></i> icon-facebook-sign</a></div>
-
- <div class="span3"><a href="../icon/flickr"><i class="icon-flickr"></i> icon-flickr</a></div>
-
- <div class="span3"><a href="../icon/foursquare"><i class="icon-foursquare"></i> icon-foursquare</a></div>
-
- <div class="span3"><a href="../icon/github"><i class="icon-github"></i> icon-github</a></div>
-
- <div class="span3"><a href="../icon/github-alt"><i class="icon-github-alt"></i> icon-github-alt</a></div>
-
- <div class="span3"><a href="../icon/github-sign"><i class="icon-github-sign"></i> icon-github-sign</a></div>
-
- <div class="span3"><a href="../icon/gittip"><i class="icon-gittip"></i> icon-gittip</a></div>
-
- <div class="span3"><a href="../icon/google-plus"><i class="icon-google-plus"></i> icon-google-plus</a></div>
-
- <div class="span3"><a href="../icon/google-plus-sign"><i class="icon-google-plus-sign"></i> icon-google-plus-sign</a></div>
-
- <div class="span3"><a href="../icon/html5"><i class="icon-html5"></i> icon-html5</a></div>
-
- <div class="span3"><a href="../icon/instagram"><i class="icon-instagram"></i> icon-instagram</a></div>
-
- <div class="span3"><a href="../icon/linkedin"><i class="icon-linkedin"></i> icon-linkedin</a></div>
-
- <div class="span3"><a href="../icon/linkedin-sign"><i class="icon-linkedin-sign"></i> icon-linkedin-sign</a></div>
-
- <div class="span3"><a href="../icon/linux"><i class="icon-linux"></i> icon-linux</a></div>
-
- <div class="span3"><a href="../icon/maxcdn"><i class="icon-maxcdn"></i> icon-maxcdn</a></div>
-
- <div class="span3"><a href="../icon/pinterest"><i class="icon-pinterest"></i> icon-pinterest</a></div>
-
- <div class="span3"><a href="../icon/pinterest-sign"><i class="icon-pinterest-sign"></i> icon-pinterest-sign</a></div>
-
- <div class="span3"><a href="../icon/renren"><i class="icon-renren"></i> icon-renren</a></div>
-
- <div class="span3"><a href="../icon/skype"><i class="icon-skype"></i> icon-skype</a></div>
-
- <div class="span3"><a href="../icon/stackexchange"><i class="icon-stackexchange"></i> icon-stackexchange</a></div>
-
- <div class="span3"><a href="../icon/trello"><i class="icon-trello"></i> icon-trello</a></div>
-
- <div class="span3"><a href="../icon/tumblr"><i class="icon-tumblr"></i> icon-tumblr</a></div>
-
- <div class="span3"><a href="../icon/tumblr-sign"><i class="icon-tumblr-sign"></i> icon-tumblr-sign</a></div>
-
- <div class="span3"><a href="../icon/twitter"><i class="icon-twitter"></i> icon-twitter</a></div>
-
- <div class="span3"><a href="../icon/twitter-sign"><i class="icon-twitter-sign"></i> icon-twitter-sign</a></div>
-
- <div class="span3"><a href="../icon/vk"><i class="icon-vk"></i> icon-vk</a></div>
-
- <div class="span3"><a href="../icon/weibo"><i class="icon-weibo"></i> icon-weibo</a></div>
-
- <div class="span3"><a href="../icon/windows"><i class="icon-windows"></i> icon-windows</a></div>
-
- <div class="span3"><a href="../icon/xing"><i class="icon-xing"></i> icon-xing</a></div>
-
- <div class="span3"><a href="../icon/xing-sign"><i class="icon-xing-sign"></i> icon-xing-sign</a></div>
-
- <div class="span3"><a href="../icon/youtube"><i class="icon-youtube"></i> icon-youtube</a></div>
-
- <div class="span3"><a href="../icon/youtube-play"><i class="icon-youtube-play"></i> icon-youtube-play</a></div>
-
- <div class="span3"><a href="../icon/youtube-sign"><i class="icon-youtube-sign"></i> icon-youtube-sign</a></div>
-
- </div>
-</section>
-
-<section id="medical">
- <h2 class="page-header">Medical Icons</h2>
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/ambulance"><i class="icon-ambulance"></i> icon-ambulance</a></div>
-
- <div class="span3"><a href="../icon/h-sign"><i class="icon-h-sign"></i> icon-h-sign</a></div>
-
- <div class="span3"><a href="../icon/hospital"><i class="icon-hospital"></i> icon-hospital</a></div>
-
- <div class="span3"><a href="../icon/medkit"><i class="icon-medkit"></i> icon-medkit</a></div>
-
- <div class="span3"><a href="../icon/plus-sign-alt"><i class="icon-plus-sign-alt"></i> icon-plus-sign-alt</a></div>
-
- <div class="span3"><a href="../icon/stethoscope"><i class="icon-stethoscope"></i> icon-stethoscope</a></div>
-
- <div class="span3"><a href="../icon/user-md"><i class="icon-user-md"></i> icon-user-md</a></div>
-
- </div>
-
-</section>
-
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/index.html b/library/font_awesome/src/3.2.1/index.html
deleted file mode 100644
index 751adca98..000000000
--- a/library/font_awesome/src/3.2.1/index.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Font Awesome, the iconic font designed for Bootstrap</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="./assets/css/site.css">
- <link rel="stylesheet" href="./assets/css/pygments.css">
- <link rel="stylesheet" href="./assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="./assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="./assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="./"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet active"><a href="./">Home</a></li>
- <li><a href="./get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="./icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="./icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="./icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="./icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="./icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="./icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="./icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="./icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="./icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="./icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="./examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="./examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="./examples/#new-styles">New Styles</a></li>
- <li><a href="./examples/#inline-icons">Inline Icons</a></li>
- <li><a href="./examples/#larger-icons">Larger Icons</a></li>
- <li><a href="./examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="./examples/#buttons">Buttons</a></li>
- <li><a href="./examples/#button-groups">Button Groups</a></li>
- <li><a href="./examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="./examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="./examples/#navigation">Navigation</a></li>
- <li><a href="./examples/#form-inputs">Form Inputs</a></li>
- <li><a href="./examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="./examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="./examples/#stacked">Stacked</a></li>
- <li><a href="./examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="./whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="./community/">Community</a></li>
- <li><a href="./license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <div class="jumbotron jumbotron-index hidden-print">
- <div class="container">
- <div class="row">
- <div class="span8">
- <div class="hero-content">
- <h1>Font Awesome</h1>
- <p>The iconic font designed for Bootstrap</p>
- <div class="actions">
- <a class="btn btn-primary btn-large" href="./assets/font-awesome.zip"
- onClick="_gaq.push(['_trackEvent', 'Outbound Link', 'Download on GitHub']);">
- <i class="icon-download-alt icon-large"></i>&nbsp;&nbsp;
- Download
- </a>
- </div>
- <div class="shameless-self-promotion">
- <a href="https://github.com/FortAwesome/Font-Awesome"
- onClick="_gaq.push(['_trackEvent', 'Outbound Link', 'View Project on GitHub']);">
- GitHub Project</a> &nbsp;&nbsp;&middot;&nbsp;&nbsp;
- Version 3.2.1 &nbsp;&nbsp;&middot;&nbsp;&nbsp;
- Created &amp; Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- </div>
- </div>
- <div class="span4">
- <div id="iconCarousel" class="carousel slide">
- <!-- Carousel items -->
- <div class="carousel-inner">
- <div class="active item"><div><i class="icon-flag"></i></div></div>
- <div class="item"><div><i class="icon-compass"></i></div></div>
- <div class="item"><div><i class="icon-rocket"></i></div></div>
- <div class="item"><div><i class="icon-shield"></i></div></div>
- <div class="item"><div><i class="icon-star-half-empty"></i></div></div>
- <div class="item"><div><i class="icon-envelope-alt"></i></div></div>
- <div class="item"><div><i class="icon-medkit"></i></div></div>
- <div class="item"><div><i class="icon-book"></i></div></div>
- <div class="item"><div><i class="icon-fighter-jet"></i></div></div>
- <div class="item"><div><i class="icon-beer"></i></div></div>
- <div class="item"><div><i class="icon-heart-empty"></i></div></div>
- <div class="item"><div><i class="icon-thumbs-up"></i></div></div>
- </div>
- <!-- Carousel nav -->
- <a class="carousel-control left" href="#iconCarousel" data-slide="prev"
- onClick="_gaq.push(['_trackEvent', 'iconCarousel', 'Prev']);">
- <i class="icon-circle-arrow-left"></i></a>
- <a class="carousel-control right" href="#iconCarousel" data-slide="next"
- onClick="_gaq.push(['_trackEvent', 'iconCarousel', 'Next']);">
- <i class="icon-circle-arrow-right"></i></a>
- </div>
- </div>
- </div>
-
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
- <section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
- <p class="lead">
- Font Awesome gives you scalable vector icons that can instantly be customized &mdash; size, color, drop shadow,
- and anything that can be done with the power of CSS.
- </p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
- <div id="why">
- <div class="row">
- <div class="span4">
- <h4><i class="icon-flag"></i> One Font, 361 Icons</h4>
- In a single collection, Font Awesome is a pictographic language of web-related actions.
- </div>
- <div class="span4">
- <h4><i class="icon-pencil"></i> CSS Control</h4>
- Easily style icon color, size, shadow, and anything that's possible with CSS.
- </div>
- <div class="span4">
- <h4><i class="icon-fullscreen"></i> Infinite Scalability</h4>
- Scalable vector graphics means every icon looks awesome at any size.
- </div>
- <div class="span4">
- <h4><i class="icon-microphone"></i> Free, as in Speech</h4>
- Font Awesome is completely free for commercial use. Check out the <a href="./license/">license</a>.
- </div>
- <div class="span4">
- <h4><i class="icon-ok"></i> IE7 Support</h4>
- Font Awesome supports IE7. If you need it, you have my condolences.
- </div>
- <div class="span4">
- <h4><i class="icon-eye-open"></i> Perfect on Retina Displays</h4>
- Font Awesome icons are vectors, which mean they're gorgeous on high-resolution displays.
- </div>
- <div class="span4">
- <h4><i class="icon-thumbs-up-alt"></i> Made for Bootstrap</h4>
- Designed from scratch to be fully compatible with <a href="http://getbootstrap.com">Bootstrap 2.3.2</a>.
- </div>
- <div class="span4">
- <h4><i class="icon-desktop"></i> Desktop Friendly</h4>
- To use on the desktop or for a complete set of vectors,
- check out the <a href="./cheatsheet/">cheatsheet</a>.
- </div>
- <div class="span4">
- <h4><i class="icon-search"></i> Screen Reader Compatible</h4>
- Font Awesome won't trip up screen readers, unlike other icon fonts.
- </div>
- </div>
-</div>
-
- <section id="thanks-to">
- <h2 class="page-header">Thanks To</h2>
- <div class="row">
- <div class="span4">
- <p>
- Thanks to <a href="https://twitter.com/robmadole/">@robmadole</a> and
- <a href="https://twitter.com/supercodepoet/">@supercodepoet</a> for icon design
- review, advice, some Jekyll help, and being all around badass coders.
- </p>
- </div>
- <div class="span4">
- <p>
- Thanks to <a href="https://twitter.com/grantgordon">@grantgordon</a> and
- <a href="https://twitter.com/johnsmclay">@johnsmclay</a> for developing and hosting
- <a href="http://icnfnt.com/">icnfnt</a>, the best way to subset Font Awesome.
- </p>
- </div>
- <div class="span4">
- <p>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent
- <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN</a>, the fastest and easiest way to
- <a href="./get-started/#bootstrapcdn">get started</a> with Font Awesome.
- </p>
- </div>
- </div>
-</section>
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="./assets/js/jquery-1.7.1.min.js"></script>
-<script src="./assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="./assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="./assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/license/index.html b/library/font_awesome/src/3.2.1/license/index.html
deleted file mode 100644
index e37dea886..000000000
--- a/library/font_awesome/src/3.2.1/license/index.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Font Awesome License</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li class="active"><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-legal icon-large"></i>&nbsp; License</h1>
- <p>The full details of how Font Awesome is licensed</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- Font Awesome is fully open source and is GPL compatible. You can use it for commercial projects, open source
- projects, or really just about whatever you want.
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<div>
- <div class="alert alert-info">
- <ul class="icons-ul margin-bottom-none">
- <li>
- <i class="icon-li icon-info-sign icon-large"></i>Attribution is no longer required as of Font Awesome 3.0 but is much appreciated:
- "Font Awesome by Dave Gandy - http://fontawesome.io".
- </li>
- </ul>
- </div>
-</div>
-
-<section>
- <h2 class="page-header">Font License</h2>
- <ul>
- <li>
- Applies to all desktop and webfont files in the following directory:
- <code>font-awesome/font/</code>.
- </li>
- <li>License: SIL OFL 1.1</li>
- <li>URL: <a href="http://scripts.sil.org/OFL">http://scripts.sil.org/OFL</a></li>
- </ul>
-</section>
-
-<section>
- <h2 class="page-header">Code License</h2>
- <ul>
- <li>
- Applies to all CSS and LESS files in the following directories:
- <code>font-awesome/css/</code> and
- <code>font-awesome/less/</code>.
- </li>
- <li>License: MIT License</li>
- <li>URL: <a href="http://opensource.org/licenses/mit-license.html">http://opensource.org/licenses/mit-license.html</a></li>
- </ul>
-</section>
-
-<section>
- <h2 class="page-header">Documentation License</h2>
- <ul>
- <li>Applies to all Font Awesome project files that are not a part of the Font or Code licenses.</li>
- <li>License: CC BY 3.0</li>
- <li>URL: <a href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</a></li>
- </ul>
-</section>
-
-<section>
- <h2 class="page-header">Brand Icons</h2>
- <ul class="margin-bottom-none">
- <li>All brand icons are trademarks of their respective owners.</li>
- <li>The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.</li>
-</ul>
-
-</section>
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/test/index.html b/library/font_awesome/src/3.2.1/test/index.html
deleted file mode 100644
index 42557221c..000000000
--- a/library/font_awesome/src/3.2.1/test/index.html
+++ /dev/null
@@ -1,1056 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>Font Awesome Visual Test Cases</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
- <section class="container">
- <h1 class="page-header">Visual Test Cases</h1>
-
- <h3>Icons <small>Icons should have proper alignment and not be clipped</small></h3>
- <div class="row">
- <div class="span3">
- <div class="well">
- <i class="icon-building"></i> Building
- </div>
- </div>
- <div class="span3">
- <div class="well">
- <i class="icon-building icon-large"></i> Building Large
- </div>
- </div>
- <div class="span3">
- <i class="icon-building"></i> Building
- </div>
- <div class="span3">
- <i class="icon-building icon-large"></i> Building Large
- </div>
- </div>
- <div class="row" style="font-size: 24px; line-height: 1.5em;">
- <div class="span4">
- <div class="well">
- <i class="icon-building"></i> Building
- </div>
- </div>
- <div class="span4">
- <div class="well">
- <i class="icon-building icon-large"></i> Building Large
- </div>
- </div>
- <div class="span4">
- <i class="icon-building icon-large"></i> Building Large
- </div>
- </div>
- <div class="row">
- <div class="span3">
- <div class="well">
- <i class="icon-circle"></i> Circle
- </div>
- </div>
- <div class="span3">
- <div class="well">
- <i class="icon-circle icon-large"></i> Circle Large
- </div>
- </div>
- <div class="span3">
- <i class="icon-circle"></i> Circle
- </div>
- <div class="span3">
- <i class="icon-circle icon-large"></i> Circle Large
- </div>
- </div>
- <div class="row" style="font-size: 24px; line-height: 1.5em;">
- <div class="span4">
- <div class="well">
- <i class="icon-circle"></i> Circle
- </div>
- </div>
- <div class="span4">
- <div class="well">
- <i class="icon-circle icon-large"></i> Circle Large
- </div>
- </div>
- <div class="span4">
- <i class="icon-circle icon-large"></i> Circle Large
- </div>
- </div>
-
-
- <h3>Links with Icons <small>icon should activate link & underline</small></h3>
- <div class="row lead">
- <div class="span2">
- <a href="#"><i class="icon-building"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="icon-building icon-large"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="icon-caret-down"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="icon-double-angle-right"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="icon-double-angle-right icon-large"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="icon-caret-down"></i></a>
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <a href="#"><i class="icon-building"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="icon-building icon-large"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="icon-caret-down"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="icon-double-angle-right"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="icon-double-angle-right icon-large"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="icon-caret-down"></i></a>
- </div>
- </div>
-
-
- <h3>Navbar <small>should stay same height </small></h3>
- <div class="navbar navbar-inverse navbar-static-top">
- <div class="navbar-inner">
- <div class="container">
- <a class="brand" href="#"><i class="icon-flag"></i> Font Awesome</a>
- <ul class="nav">
- <li style="border: solid 1px white;"><a href="#">Nav Item 1</a></li>
- <li class="dropdown" style="border: solid 1px white;">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="icon-building"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="icon-building icon-large"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="icon-building icon-large"></i> Nav Item 3</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="icon-envelope"></i> Nav Item 4</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="icon-circle icon-large"></i> Nav Item 5</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="icon-circle"></i> Nav Item 6</a></li>
- </ul>
- </div>
- </div>
- </div>
-
-
- <h3>Plain buttons next to buttons w/icons <small>should be same height, icons not clipped</small></h3>
- <h4>Buttons</h4>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-mini">Button</button>
- <button class="btn btn-mini"><i class="icon-building"></i> Button</button>
- <button class="btn btn-mini"><i class="icon-building"></i></button>
- </div>
- <div>
- <button class="btn btn-small">Button</button>
- <button class="btn btn-small"><i class="icon-building"></i> Button</button>
- <button class="btn btn-small"><i class="icon-building"></i></button>
- </div>
- <div>
- <button class="btn">Button</button>
- <button class="btn"><i class="icon-building"></i> Button</button>
- <button class="btn"><i class="icon-building"></i></button>
- </div>
- <div>
- <button class="btn btn-large">Button</button>
- <button class="btn btn-large"><i class="icon-building"></i> Button</button>
- <button class="btn btn-large"><i class="icon-building"></i></button>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-mini">Button</button>
- <button class="btn btn-mini"><i class="icon-building icon-large"></i> Button</button>
- <button class="btn btn-mini"><i class="icon-building icon-large"></i></button>
- </div>
- <div>
- <button class="btn btn-small">Button</button>
- <button class="btn btn-small"><i class="icon-building icon-large"></i> Button</button>
- <button class="btn btn-small"><i class="icon-building icon-large"></i></button>
- </div>
- <div>
- <button class="btn">Button</button>
- <button class="btn"><i class="icon-building icon-large"></i> Button</button>
- <button class="btn"><i class="icon-building icon-large"></i></button>
- </div>
- <div>
- <button class="btn btn-large">Button</button>
- <button class="btn btn-large"><i class="icon-building icon-large"></i> Button</button>
- <button class="btn btn-large"><i class="icon-building icon-large"></i></button>
- </div>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-mini">Button</button>
- <button class="btn btn-mini"><i class="icon-circle"></i> Button</button>
- <button class="btn btn-mini"><i class="icon-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-small">Button</button>
- <button class="btn btn-small"><i class="icon-circle"></i> Button</button>
- <button class="btn btn-small"><i class="icon-circle"></i></button>
- </div>
- <div>
- <button class="btn">Button</button>
- <button class="btn"><i class="icon-circle"></i> Button</button>
- <button class="btn"><i class="icon-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-large">Button</button>
- <button class="btn btn-large"><i class="icon-circle"></i> Button</button>
- <button class="btn btn-large"><i class="icon-circle"></i></button>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-mini">Button</button>
- <button class="btn btn-mini"><i class="icon-circle icon-large"></i> Button</button>
- <button class="btn btn-mini"><i class="icon-circle icon-large"></i></button>
- </div>
- <div>
- <button class="btn btn-small">Button</button>
- <button class="btn btn-small"><i class="icon-circle icon-large"></i> Button</button>
- <button class="btn btn-small"><i class="icon-circle icon-large"></i></button>
- </div>
- <div>
- <button class="btn">Button</button>
- <button class="btn"><i class="icon-circle icon-large"></i> Button</button>
- <button class="btn"><i class="icon-circle icon-large"></i></button>
- </div>
- <div>
- <button class="btn btn-large">Button</button>
- <button class="btn btn-large"><i class="icon-circle icon-large"></i> Button</button>
- <button class="btn btn-large"><i class="icon-circle icon-large"></i></button>
- </div>
- </div>
- </div>
- </div>
-
-
- <h4>Anchors</h4>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-mini">Button</a>
- <a class="btn btn-mini"><i class="icon-building"></i> Button</a>
- <a class="btn btn-mini"><i class="icon-building"></i></a>
- </div>
- <div>
- <a class="btn btn-small">Button</a>
- <a class="btn btn-small"><i class="icon-building"></i> Button</a>
- <a class="btn btn-small"><i class="icon-building"></i></a>
- </div>
- <div>
- <a class="btn">Button</a>
- <a class="btn"><i class="icon-building"></i> Button</a>
- <a class="btn"><i class="icon-building"></i></a>
- </div>
- <div>
- <a class="btn btn-large">Button</a>
- <a class="btn btn-large"><i class="icon-building"></i> Button</a>
- <a class="btn btn-large"><i class="icon-building"></i></a>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-mini">Button</a>
- <a class="btn btn-mini"><i class="icon-building icon-large"></i> Button</a>
- <a class="btn btn-mini"><i class="icon-building icon-large"></i></a>
- </div>
- <div>
- <a class="btn btn-small">Button</a>
- <a class="btn btn-small"><i class="icon-building icon-large"></i> Button</a>
- <a class="btn btn-small"><i class="icon-building icon-large"></i></a>
- </div>
- <div>
- <a class="btn">Button</a>
- <a class="btn"><i class="icon-building icon-large"></i> Button</a>
- <a class="btn"><i class="icon-building icon-large"></i></a>
- </div>
- <div>
- <a class="btn btn-large">Button</a>
- <a class="btn btn-large"><i class="icon-building icon-large"></i> Button</a>
- <a class="btn btn-large"><i class="icon-building icon-large"></i></a>
- </div>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-mini">Button</a>
- <a class="btn btn-mini"><i class="icon-circle"></i> Button</a>
- <a class="btn btn-mini"><i class="icon-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-small">Button</a>
- <a class="btn btn-small"><i class="icon-circle"></i> Button</a>
- <a class="btn btn-small"><i class="icon-circle"></i></a>
- </div>
- <div>
- <a class="btn">Button</a>
- <a class="btn"><i class="icon-circle"></i> Button</a>
- <a class="btn"><i class="icon-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-large">Button</a>
- <a class="btn btn-large"><i class="icon-circle"></i> Button</a>
- <a class="btn btn-large"><i class="icon-circle"></i></a>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-mini">Button</a>
- <a class="btn btn-mini"><i class="icon-circle icon-large"></i> Button</a>
- <a class="btn btn-mini"><i class="icon-circle icon-large"></i></a>
- </div>
- <div>
- <a class="btn btn-small">Button</a>
- <a class="btn btn-small"><i class="icon-circle icon-large"></i> Button</a>
- <a class="btn btn-small"><i class="icon-circle icon-large"></i></a>
- </div>
- <div>
- <a class="btn">Button</a>
- <a class="btn"><i class="icon-circle icon-large"></i> Button</a>
- <a class="btn"><i class="icon-circle icon-large"></i></a>
- </div>
- <div>
- <a class="btn btn-large">Button</a>
- <a class="btn btn-large"><i class="icon-circle icon-large"></i> Button</a>
- <a class="btn btn-large"><i class="icon-circle icon-large"></i></a>
- </div>
- </div>
- </div>
- </div>
-
-
- <h3>Buttons with pulled 2x, 3x, 4x <small>should be same height, have correct line height</small></h3>
- <div class="row">
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-large" href="#">
- <i class="icon-github icon-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-large" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn" href="#">
- <i class="icon-github icon-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-small" href="#">
- <i class="icon-github icon-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-small" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- </div>
-
-
- <h3>Nav pills & nav tabs <small>should be same height and properly vertically aligned</small></h3>
- <div class="row">
- <div class="span9">
- <ul class="nav nav-pills" style="border: solid 1px #d3d3d3;">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="icon-building"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="icon-building icon-large"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="icon-building"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="icon-building icon-large"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="icon-building icon-large"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="icon-spinner icon-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="icon-circle icon-large"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="icon-circle"></i> Nav Item 7</a></li>
- </ul>
- <ul class="nav nav-tabs">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="icon-building"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="icon-building icon-large"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="icon-building"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="icon-building icon-large"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="icon-building icon-large"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="icon-spinner icon-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="icon-circle icon-large"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="icon-circle"></i> Nav Item 7</a></li>
- </ul>
- </div>
- <div class="span3">
- <ul class="nav nav-list">
- <li>
- <a href="#c1">
- <i class="icon-chevron-right icon-fixed-width pull-right"></i> Overview
- </a>
- </li>
- <li>
- <a href="#c1">
- Overview
- <i class="icon-chevron-right icon-fixed-width pull-right"></i>
- </a>
- </li>
- </ul>
- </div>
- </div>
-
-
-
- <h3>2x, 3x, 4x icons in text <small>should have margins next to and below text</small></h3>
- <div class="row">
- <div class="span6">
- <p class="lead">
- <i class="icon-stethoscope icon-3x pull-left icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
- <div class="span6">
- <p class="lead">
- <i class="icon-ambulance icon-4x pull-right icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
- </div>
- <div class="row">
- <div class="span4">
- <i class="icon-building icon-2x pull-left icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="span4">
- <i class="icon-stethoscope icon-3x pull-right icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="span4">
- <i class="icon-ambulance icon-4x pull-left"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- </div>
-
-
- <h3>Bullets <small>should wrap appropriately, have proper spacing</small></h3>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li icon-double-angle-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-building"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="icon-building"></i>
- <span class="label">foo</span>
- <a class="btn">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li icon-double-angle-right icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-building icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul lead">
- <li><i class="icon-li icon-double-angle-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-building"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul lead">
- <li><i class="icon-li icon-double-angle-right icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-building icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><a href="#"><i class="icon-li icon-double-angle-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="icon-li icon-arrow-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="icon-li icon-building"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><a href="#"><i class="icon-li icon-double-angle-right icon-large"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="icon-li icon-arrow-right icon-large"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="icon-li icon-building icon-large"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li icon-refresh icon-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-spinner icon-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-spinner icon-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="icon-building"></i>
- <span class="label">foo</span>
- <a class="btn">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li icon-refresh icon-spin icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-spinner icon-spin icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-spinner icon-spin icon-large"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="icon-building"></i>
- <span class="label">foo</span>
- <a class="btn">foo</a>
- </li>
- </ul>
- </div>
- </div>
- </div>
-
-
- <div class="row">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
-
-
- <h3>Spinning icons <small>icons should be aligned well and on center, buttons should be same height, won't work in ie7</small></h3>
- <div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh icon-spin"></i> Loading...
- <button class="btn btn-small"><i class="icon-refresh icon-spin"></i> Loading...</button>
- <button class="btn btn-small">Loading...</button>
- <i class="icon-circle-blank icon-spin"></i> Loading...
- <button class="btn btn-small"><i class="icon-circle-blank icon-spin"></i> Loading...</button>
- <a href="#"><i class="icon-refresh icon-spin"></i> Loading...</a>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh icon-spin"></i> Loading...
- <button class="btn"><i class="icon-refresh icon-spin"></i> Loading...</button>
- <button class="btn">Loading...</button>
- <i class="icon-circle-blank icon-spin"></i> Loading...
- <button class="btn"><i class="icon-circle-blank icon-spin"></i> Loading...</button>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="icon-spinner icon-spin"></i> Loading...
- <button class="btn btn-large"><i class="icon-spinner icon-spin"></i> Loading...</button>
- <button class="btn btn-large">Loading...</button>
- <i class="icon-circle-blank icon-spin"></i> Loading...
- <button class="btn btn-large"><i class="icon-circle-blank icon-spin"></i> Loading...</button>
- </div>
- <h4>icon-large</h4>
- <div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh icon-large icon-spin"></i> Loading...
- <button class="btn btn-small"><i class="icon-refresh icon-large icon-spin"></i> Loading...</button>
- <button class="btn btn-small">Loading...</button>
- <i class="icon-circle-blank icon-large icon-spin"></i> Loading...
- <button class="btn btn-small"><i class="icon-circle-blank icon-large icon-spin"></i> Loading...</button>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh icon-large icon-spin"></i> Loading...
- <button class="btn"><i class="icon-refresh icon-large icon-spin"></i> Loading...</button>
- <button class="btn">Loading...</button>
- <i class="icon-circle-blank icon-large icon-spin"></i> Loading...
- <button class="btn"><i class="icon-circle-blank icon-large icon-spin"></i> Loading...</button>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="icon-spinner icon-large icon-spin"></i> Loading...
- <button class="btn btn-large"><i class="icon-spinner icon-large icon-spin"></i> Loading...</button>
- <button class="btn btn-large">Loading...</button>
- <i class="icon-circle-blank icon-large icon-spin"></i> Loading...
- <button class="btn btn-large"><i class="icon-circle-blank icon-large icon-spin"></i> Loading...</button>
- </div>
- <h4>Bootstrap Prepend and Append</h4>
- <div class="row">
- <div class="span6">
- <div class="input-prepend">
- <span class="add-on"><i class="icon-spinner icon-spin"></i></span>
- <input class="span2" id="prependedInput" type="text" placeholder="Username">
- </div>
- </div>
- <div class="span6">
- <div class="input-append">
- <input class="span2" id="appendedInput" type="text">
- <span class="add-on"><i class="icon-spinner icon-spin"></i></span>
- </div>
- </div>
- </div>
-
- <h3>Stacked icons</h3>
- <div class="well">
- <p>
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-twitter icon-light"></i>
- </span>
- Twitter Icon
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-facebook icon-light"></i>
- </span>
- Facebook Icon
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-github icon-light"></i>
- </span>
- GitHub Icon
-</p>
-<p>
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-twitter icon-light"></i>
- </span>
- Twitter Icon
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-facebook icon-light"></i>
- </span>
- Facebook Icon
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-github icon-light"></i>
- </span>
- GitHub Icon
-</p>
-<p>
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-twitter"></i>
- </span>
- Twitter Icon
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-facebook"></i>
- </span>
- Facebook Icon
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-github"></i>
- </span>
- GitHub Icon
-</p>
- </div>
- <div class="well lead">
- <p>
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-twitter icon-light"></i>
- </span>
- Twitter Icon
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-facebook icon-light"></i>
- </span>
- Facebook Icon
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-github icon-light"></i>
- </span>
- GitHub Icon
-</p>
-<p>
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-twitter icon-light"></i>
- </span>
- Twitter Icon
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-facebook icon-light"></i>
- </span>
- Facebook Icon
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-github icon-light"></i>
- </span>
- GitHub Icon
-</p>
-<p>
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-twitter"></i>
- </span>
- Twitter Icon
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-facebook"></i>
- </span>
- Facebook Icon
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-github"></i>
- </span>
- GitHub Icon
-</p>
- </div>
- <h4>Stacked icons inside anchor</h4>
- <div class="well">
- <p>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-twitter icon-light"></i>
- </span>
- Twitter Icon
- </a>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-facebook icon-light"></i>
- </span>
- Facebook Icon
- </a>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-github icon-light"></i>
- </span>
- GitHub Icon
- </a>
-</p>
-<p>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-twitter icon-light"></i>
- </span>
- Twitter Icon
- </a>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-facebook icon-light"></i>
- </span>
- Facebook Icon
- </a>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-github icon-light"></i>
- </span>
- GitHub Icon
- </a>
-</p>
-<p>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-twitter"></i>
- </span>
- Twitter Icon
- </a>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-facebook"></i>
- </span>
- Facebook Icon
- </a>
- <a href="#">
- <span class="icon-stack">
- <i class="icon-circle-blank icon-stack-base"></i>
- <i class="icon-github"></i>
- </span>
- GitHub Icon
- </a>
-</p>
- </div>
-
-
- <h3>Mirrored and rotated icons</h3>
- <div class="row">
- <div class="span6">
- <div class="well">
- <i class="icon-flag"></i>&nbsp; normal<br>
-<i class="icon-flag icon-rotate-90"></i>&nbsp; icon-rotate-90<br>
-<i class="icon-flag icon-rotate-180"></i>&nbsp; icon-rotate-180<br>
-<i class="icon-flag icon-rotate-270"></i>&nbsp; icon-rotate-270<br>
-<i class="icon-flag icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal<br>
-<i class="icon-flag icon-flip-vertical"></i>&nbsp; icon-flip-vertical
-
- </div>
- </div>
- <div class="span6">
- <div class="well lead">
- <i class="icon-flag"></i>&nbsp; normal<br>
-<i class="icon-flag icon-rotate-90"></i>&nbsp; icon-rotate-90<br>
-<i class="icon-flag icon-rotate-180"></i>&nbsp; icon-rotate-180<br>
-<i class="icon-flag icon-rotate-270"></i>&nbsp; icon-rotate-270<br>
-<i class="icon-flag icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal<br>
-<i class="icon-flag icon-flip-vertical"></i>&nbsp; icon-flip-vertical
-
- </div>
- </div>
- </div>
- <h4>Mirrored and rotated icons inside anchors and buttons</h4>
- <div class="row">
- <div class="span6">
- <div class="well">
- <a href="#"><i class="icon-flag"></i>&nbsp; normal</a><br>
-<a href="#"><i class="icon-flag icon-rotate-90"></i>&nbsp; icon-rotate-90</a><br>
-<a href="#"><i class="icon-flag icon-rotate-180"></i>&nbsp; icon-rotate-180</a><br>
-<a href="#"><i class="icon-flag icon-rotate-270"></i>&nbsp; icon-rotate-270</a><br>
-<a href="#"><i class="icon-flag icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal</a><br>
-<a href="#"><i class="icon-flag icon-flip-vertical"></i>&nbsp; icon-flip-vertical</a>
-
- </div>
- </div>
- <div class="span6">
- <div class="well">
- <a class="btn" href="#"><i class="icon-flag"></i>&nbsp; normal</a><br>
-<a class="btn" href="#"><i class="icon-flag icon-rotate-90"></i>&nbsp; icon-rotate-90</a><br>
-<a class="btn" href="#"><i class="icon-flag icon-rotate-180"></i>&nbsp; icon-rotate-180</a><br>
-<a class="btn" href="#"><i class="icon-flag icon-rotate-270"></i>&nbsp; icon-rotate-270</a><br>
-<a class="btn" href="#"><i class="icon-flag icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal</a><br>
-<a class="btn" href="#"><i class="icon-flag icon-flip-vertical"></i>&nbsp; icon-flip-vertical</a>
-
- </div>
- </div>
- </div>
-
-</section>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/3.2.1/whats-new/index.html b/library/font_awesome/src/3.2.1/whats-new/index.html
deleted file mode 100644
index 4effebab8..000000000
--- a/library/font_awesome/src/3.2.1/whats-new/index.html
+++ /dev/null
@@ -1,442 +0,0 @@
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>What's New</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="../assets/css/site.css">
- <link rel="stylesheet" href="../assets/css/pygments.css">
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome.css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="../assets/font-awesome/css/font-awesome-ie7.css">
- <![endif]-->
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="../assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
- <div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="navbar-inner">
- <div class="container">
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
-
- <a class="brand" href="../"><i class="icon-flag"></i> Font Awesome</a>
- <div class="nav-collapse collapse">
- <ul class="nav">
- <li class="hidden-tablet "><a href="../">Home</a></li>
- <li><a href="../get-started/">Get Started</a></li>
- <li class="dropdown-split-left"><a href="../icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../icons/"><i class="icon-flag icon-fixed-width"></i>&nbsp; Icons</a></li>
- <li class="divider"></li>
- <li><a href="../icons/#new"><i class="icon-shield icon-fixed-width"></i>&nbsp; New Icons in 3.2.1</a></li>
- <li><a href="../icons/#web-application"><i class="icon-camera-retro icon-fixed-width"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="../icons/#currency"><i class="icon-won icon-fixed-width"></i>&nbsp; Currency Icons</a></li>
- <li><a href="../icons/#text-editor"><i class="icon-file-text-alt icon-fixed-width"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="../icons/#directional"><i class="icon-hand-right icon-fixed-width"></i>&nbsp; Directional Icons</a></li>
- <li><a href="../icons/#video-player"><i class="icon-play-sign icon-fixed-width"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="../icons/#brand"><i class="icon-github icon-fixed-width"></i>&nbsp; Brand Icons</a></li>
- <li><a href="../icons/#medical"><i class="icon-medkit icon-fixed-width"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left"><a href="../examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-phone">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="../examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="../examples/#new-styles">New Styles</a></li>
- <li><a href="../examples/#inline-icons">Inline Icons</a></li>
- <li><a href="../examples/#larger-icons">Larger Icons</a></li>
- <li><a href="../examples/#bordered-pulled">Bordered & Pulled</a></li>
- <li><a href="../examples/#buttons">Buttons</a></li>
- <li><a href="../examples/#button-groups">Button Groups</a></li>
- <li><a href="../examples/#button-dropdowns">Button Dropdowns</a></li>
- <li><a href="../examples/#bulleted-lists">Bulleted Lists</a></li>
- <li><a href="../examples/#navigation">Navigation</a></li>
- <li><a href="../examples/#form-inputs">Form Inputs</a></li>
- <li><a href="../examples/#animated-spinner">Animated Spinner</a></li>
- <li><a href="../examples/#rotated-flipped">Rotated &amp; Flipped</a></li>
- <li><a href="../examples/#stacked">Stacked</a></li>
- <li><a href="../examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li class="active"><a href="../whats-new/">
- <span class="hidden-tablet">What's </span>New</a>
- </li>
- <li><a href="../community/">Community</a></li>
- <li><a href="../license/">License</a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="http://articles.fortawesome.com">Blog</a></li>
- </ul>
- </div>
- </div>
- </div>
-</div>
-
-
-
-
-
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
- <h1><i class="icon-lightbulb icon-large"></i>&nbsp; What's New</h1>
- <p>What's New in the latest version &mdash; Font Awesome 3.2</p>
- </div>
-</div>
-
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <ul class="unstyled inline">
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/fontawesome" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @fontawesome</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://fontawesome.io" data-text="Font Awesome, the iconic font designed for Bootstrap" data-counturl="http://fortawesome.github.com/Font-Awesome/" data-count="horizontal" data-via="fontawesome" data-related="davegandy:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
-
-
-<div class="container">
-
- <section class="old-docs">
- <div class="row">
- <div class="span12">
- <div class="alert alert-danger">
- <strong>Heads up!</strong> These docs are for v3.2.1, which is no longer officially supported. <a href="../../">Check out the latest version of Font Awesome!</a>
- </div>
- </div>
- </div>
- </section>
-<section class="hidden-print">
- <div class="row stripe-ad">
- <div class="span8">
-
-<p class="lead">
- Font Awesome is always getting a little awesome-er. So here's what's new in the latest version, Font Awesome
- 3.2. Have some ideas for new features?
- <a href="../community/">Help contribute</a>.
-</p>
-
- </div>
- <div class="span4">
- <div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/32291/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
-
- </div>
- </div>
-</section>
-
-
-<div id="whats-new">
- <div class="row">
- <div class="span4">
- <h4><i class="icon-compass"></i> 58 New Icons in 3.2</h4>
- Requested by the active community on the <a href="https://github.com/FortAwesome/Font-Awesome">Font Awesome GitHub project</a>.
- </div>
- <div class="span4">
- <h4><i class="icon-terminal"></i> SCSS Support</h4>
- A long term solution is now in place for SCSS support. Need SASS? Try <a href="http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#syntax">sass-convert</a>.
- </div>
- <div class="span4">
- <h4><i class="icon-legal"></i> <a href="../license/">Better & Simpler License</a></h4>
- SIL OFL 1.1 for font, MIT license for code. No more attribution required, but much appreciated.
- </div>
- <div class="span4 margin-bottom-large">
- <h4><i class="icon-magic"></i> Pixel Perfection at 14px</h4>
- Version 3 was re-created from the ground up to be razor sharp at Bootstrap's default 14px.
- </div>
- <div class="span4">
- <h4><i class="icon-th-large"></i> <a href="http://icnfnt.com/">Font Subsetting</a></h4>
- Thanks to <a href="https://twitter.com/grantgordon">@grantgordon</a> and <a href="https://twitter.com/johnsmclay">@johnsmclay</a>, you can <a href="http://icnfnt.com/">subset</a> to get just the icons you need.
- </div>
- <div class="span4">
- <h4><i class="icon-question-sign"></i> Want More Details?</h4>
- Check out the <a href="https://github.com/FortAwesome/Font-Awesome#changelog">CHANGELOG on the GitHub project</a> to see
- what's new and changed.
- </div>
- </div>
-</div>
-
- <section id="new-styles">
- <h2 class="page-header">New Styles in 3.2</h2>
- <div class="row">
- <div class="span4">
- <h4><a href="#rotated-flipped">Rotated and Flipped Icons</a></h4>
- <div class="well well-transparent">
- <i class="icon-shield"></i>&nbsp; normal<br>
- <i class="icon-shield icon-rotate-90"></i>&nbsp; icon-rotate-90<br>
- <i class="icon-shield icon-rotate-180"></i>&nbsp; icon-rotate-180<br>
- <i class="icon-shield icon-rotate-270"></i>&nbsp; icon-rotate-270<br>
- <i class="icon-shield icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal<br>
- <i class="icon-shield icon-flip-vertical"></i>&nbsp; icon-flip-vertical
- </div>
- </div>
- <div class="span4">
- <h4><a href="#stacked">Stacked Icons</a></h4>
- <div class="well well-transparent stacked">
- <span class="icon-stack">
- <i class="icon-check-empty icon-stack-base"></i>
- <i class="icon-twitter"></i>
- </span>
- icon-twitter on icon-check-empty<br>
- <span class="icon-stack">
- <i class="icon-circle icon-stack-base"></i>
- <i class="icon-flag icon-light"></i>
- </span>
- icon-flag on icon-circle<br>
- <span class="icon-stack">
- <i class="icon-sign-blank icon-stack-base"></i>
- <i class="icon-terminal icon-light"></i>
- </span>
- icon-terminal on icon-sign-blank
- </div>
- </div>
- <div class="span4">
- <h4><a href="#bulleted-lists">Better Bulleted Lists</a></h4>
- <div class="well well-transparent">
- <ul class="icons-ul">
- <li><i class="icon-li icon-chevron-sign-right"></i>New bulleted lists</li>
- <li><i class="icon-li icon-bullseye"></i>Fix some old bugs</li>
- <li><i class="icon-li icon-play-sign"></i>And deal with arbitrary</li>
- <li><i class="icon-li icon-ok-sign"></i>Font sizes better</li>
- </ul>
- </div>
- </div>
- </div>
-</section>
-
- <section id="new">
- <h2 class="page-header">New Icons in 3.2</h2>
-
- <div class="margin-botom-large">
- You asked, Font Awesome delivers with 58 shiny new icons in version 3.2.
- Want to request new icons? <a href="../community/#requesting-new-icons">Here's how</a>.
- </div>
-
-
- <div class="row the-icons">
-
-
-
- <div class="span3"><a href="../icon/compass"><i class="icon-compass"></i> icon-compass</a></div>
-
- <div class="span3"><a href="../icon/collapse"><i class="icon-collapse"></i> icon-collapse</a></div>
-
- <div class="span3"><a href="../icon/collapse-top"><i class="icon-collapse-top"></i> icon-collapse-top</a></div>
-
- <div class="span3"><a href="../icon/expand"><i class="icon-expand"></i> icon-expand</a></div>
-
- <div class="span3"><a href="../icon/eur"><i class="icon-eur"></i> icon-eur</a></div>
-
- <div class="span3"><a href="../icon/eur"><i class="icon-euro"></i> icon-euro <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/gbp"><i class="icon-gbp"></i> icon-gbp</a></div>
-
- <div class="span3"><a href="../icon/usd"><i class="icon-usd"></i> icon-usd</a></div>
-
- <div class="span3"><a href="../icon/usd"><i class="icon-dollar"></i> icon-dollar <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/inr"><i class="icon-inr"></i> icon-inr</a></div>
-
- <div class="span3"><a href="../icon/inr"><i class="icon-rupee"></i> icon-rupee <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/jpy"><i class="icon-jpy"></i> icon-jpy</a></div>
-
- <div class="span3"><a href="../icon/jpy"><i class="icon-yen"></i> icon-yen <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/cny"><i class="icon-cny"></i> icon-cny</a></div>
-
- <div class="span3"><a href="../icon/cny"><i class="icon-renminbi"></i> icon-renminbi <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/krw"><i class="icon-krw"></i> icon-krw</a></div>
-
- <div class="span3"><a href="../icon/krw"><i class="icon-won"></i> icon-won <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-btc"></i> icon-btc</a></div>
-
- <div class="span3"><a href="../icon/btc"><i class="icon-bitcoin"></i> icon-bitcoin <span class="muted">(alias)</span></a></div>
-
- <div class="span3"><a href="../icon/file"><i class="icon-file"></i> icon-file</a></div>
-
- <div class="span3"><a href="../icon/file-text"><i class="icon-file-text"></i> icon-file-text</a></div>
-
- <div class="span3"><a href="../icon/sort-by-alphabet"><i class="icon-sort-by-alphabet"></i> icon-sort-by-alphabet</a></div>
-
- <div class="span3"><a href="../icon/sort-by-alphabet-alt"><i class="icon-sort-by-alphabet-alt"></i> icon-sort-by-alphabet-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-by-attributes"><i class="icon-sort-by-attributes"></i> icon-sort-by-attributes</a></div>
-
- <div class="span3"><a href="../icon/sort-by-attributes-alt"><i class="icon-sort-by-attributes-alt"></i> icon-sort-by-attributes-alt</a></div>
-
- <div class="span3"><a href="../icon/sort-by-order"><i class="icon-sort-by-order"></i> icon-sort-by-order</a></div>
-
- <div class="span3"><a href="../icon/sort-by-order-alt"><i class="icon-sort-by-order-alt"></i> icon-sort-by-order-alt</a></div>
-
- <div class="span3"><a href="../icon/thumbs-up"><i class="icon-thumbs-up"></i> icon-thumbs-up</a></div>
-
- <div class="span3"><a href="../icon/thumbs-down"><i class="icon-thumbs-down"></i> icon-thumbs-down</a></div>
-
- <div class="span3"><a href="../icon/youtube-sign"><i class="icon-youtube-sign"></i> icon-youtube-sign</a></div>
-
- <div class="span3"><a href="../icon/youtube"><i class="icon-youtube"></i> icon-youtube</a></div>
-
- <div class="span3"><a href="../icon/xing"><i class="icon-xing"></i> icon-xing</a></div>
-
- <div class="span3"><a href="../icon/xing-sign"><i class="icon-xing-sign"></i> icon-xing-sign</a></div>
-
- <div class="span3"><a href="../icon/youtube-play"><i class="icon-youtube-play"></i> icon-youtube-play</a></div>
-
- <div class="span3"><a href="../icon/dropbox"><i class="icon-dropbox"></i> icon-dropbox</a></div>
-
- <div class="span3"><a href="../icon/stackexchange"><i class="icon-stackexchange"></i> icon-stackexchange</a></div>
-
- <div class="span3"><a href="../icon/instagram"><i class="icon-instagram"></i> icon-instagram</a></div>
-
- <div class="span3"><a href="../icon/flickr"><i class="icon-flickr"></i> icon-flickr</a></div>
-
- <div class="span3"><a href="../icon/adn"><i class="icon-adn"></i> icon-adn</a></div>
-
- <div class="span3"><a href="../icon/bitbucket"><i class="icon-bitbucket"></i> icon-bitbucket</a></div>
-
- <div class="span3"><a href="../icon/bitbucket-sign"><i class="icon-bitbucket-sign"></i> icon-bitbucket-sign</a></div>
-
- <div class="span3"><a href="../icon/tumblr"><i class="icon-tumblr"></i> icon-tumblr</a></div>
-
- <div class="span3"><a href="../icon/tumblr-sign"><i class="icon-tumblr-sign"></i> icon-tumblr-sign</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-down"><i class="icon-long-arrow-down"></i> icon-long-arrow-down</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-up"><i class="icon-long-arrow-up"></i> icon-long-arrow-up</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-left"><i class="icon-long-arrow-left"></i> icon-long-arrow-left</a></div>
-
- <div class="span3"><a href="../icon/long-arrow-right"><i class="icon-long-arrow-right"></i> icon-long-arrow-right</a></div>
-
- <div class="span3"><a href="../icon/apple"><i class="icon-apple"></i> icon-apple</a></div>
-
- <div class="span3"><a href="../icon/windows"><i class="icon-windows"></i> icon-windows</a></div>
-
- <div class="span3"><a href="../icon/android"><i class="icon-android"></i> icon-android</a></div>
-
- <div class="span3"><a href="../icon/linux"><i class="icon-linux"></i> icon-linux</a></div>
-
- <div class="span3"><a href="../icon/dribbble"><i class="icon-dribbble"></i> icon-dribbble</a></div>
-
- <div class="span3"><a href="../icon/skype"><i class="icon-skype"></i> icon-skype</a></div>
-
- <div class="span3"><a href="../icon/foursquare"><i class="icon-foursquare"></i> icon-foursquare</a></div>
-
- <div class="span3"><a href="../icon/trello"><i class="icon-trello"></i> icon-trello</a></div>
-
- <div class="span3"><a href="../icon/female"><i class="icon-female"></i> icon-female</a></div>
-
- <div class="span3"><a href="../icon/male"><i class="icon-male"></i> icon-male</a></div>
-
- <div class="span3"><a href="../icon/gittip"><i class="icon-gittip"></i> icon-gittip</a></div>
-
- <div class="span3"><a href="../icon/sun"><i class="icon-sun"></i> icon-sun</a></div>
-
- <div class="span3"><a href="../icon/moon"><i class="icon-moon"></i> icon-moon</a></div>
-
- <div class="span3"><a href="../icon/archive"><i class="icon-archive"></i> icon-archive</a></div>
-
- <div class="span3"><a href="../icon/bug"><i class="icon-bug"></i> icon-bug</a></div>
-
- <div class="span3"><a href="../icon/vk"><i class="icon-vk"></i> icon-vk</a></div>
-
- <div class="span3"><a href="../icon/weibo"><i class="icon-weibo"></i> icon-weibo</a></div>
-
- <div class="span3"><a href="../icon/renren"><i class="icon-renren"></i> icon-renren</a></div>
-
- </div>
-
-</section>
-
-</div>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-<footer class="footer hidden-print">
- <div class="container text-center">
- <div>
- <i class="icon-flag"></i> Font Awesome 3.2.1
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Created and Maintained by <a href="http://twitter.com/davegandy">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="http://scripts.sil.org/OFL">SIL OFL 1.1</a>
- <span class="hidden-phone">&middot;</span><br class="visible-phone">
- Code licensed under <a href="http://opensource.org/licenses/mit-license.html">MIT License</a>
- <span class="hidden-phone hidden-tablet">&middot;</span><br class="visible-phone visible-tablet">
- Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="icon-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="http://www.bootstrapcdn.com/#tab_fontawesome">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="https://github.com/FortAwesome/Font-Awesome">GitHub Project</a> &middot;
- <a href="https://github.com/FortAwesome/Font-Awesome/issues">Issues</a>
- </div>
- </div>
-</footer>
-
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="../assets/js/jquery-1.7.1.min.js"></script>
-<script src="../assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="../assets/js/bootstrap-2.3.1.min.js"></script>
-<script src="../assets/js/site.js"></script>
-
-</body>
-</html>
diff --git a/library/font_awesome/src/CNAME b/library/font_awesome/src/CNAME
deleted file mode 100644
index f13145254..000000000
--- a/library/font_awesome/src/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-fontawesome.io \ No newline at end of file
diff --git a/library/font_awesome/src/Makefile b/library/font_awesome/src/Makefile
deleted file mode 100644
index 80e243f14..000000000
--- a/library/font_awesome/src/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
----
----
-PATH := ../node_modules/.bin:$(PATH)
-
-FA_ROOT_DIRECTORY = assets/font-awesome
-FA_LESS_DIRECTORY = assets/font-awesome/less
-FA_SCSS_DIRECTORY = assets/font-awesome/scss
-FA_CSS_DIRECTORY = assets/font-awesome/css
-
-FA_LESS_MODERN = ${FA_LESS_DIRECTORY}/font-awesome.less
-FA_SCSS_MODERN = ${FA_SCSS_DIRECTORY}/font-awesome.scss
-
-FA_CSS_MODERN = ${FA_CSS_DIRECTORY}/font-awesome.css
-FA_CSS_MODERN_MIN = ${FA_CSS_DIRECTORY}/font-awesome.min.css
-
-SITE_LESS_DIRECTORY = assets/less
-SITE_CSS_DIRECTORY = assets/css
-
-SITE_LESS = ${SITE_LESS_DIRECTORY}/site.less
-SITE_CSS = ${SITE_CSS_DIRECTORY}/site.css
-
-build:
- @echo "Compiling Less files"
- @mkdir -p ${FA_CSS_DIRECTORY}
-
- bundle exec lessc ${FA_LESS_MODERN} > ${FA_CSS_MODERN}
- bundle exec lessc --compress ${FA_LESS_MODERN} > ${FA_CSS_MODERN_MIN}
-# sass ${FA_SCSS_MODERN} ${FA_CSS_MODERN}
-
- bundle exec lessc --compress ${SITE_LESS} > ${SITE_CSS}
- cp -r ${FA_ROOT_DIRECTORY}/* ../
- mv README.md-nobuild ../README.md
- cd assets && mv font-awesome font-awesome-{{ site.fontawesome.version }} && zip -r9 font-awesome-{{ site.fontawesome.version }}.zip font-awesome-{{ site.fontawesome.version }} && mv font-awesome-{{ site.fontawesome.version }} font-awesome
-
- find .. -type f ! -perm 644 -exec chmod 644 {} \;
-
-default: build
-
-
-.PHONY: build
diff --git a/library/font_awesome/src/README.md-nobuild b/library/font_awesome/src/README.md-nobuild
deleted file mode 100644
index e155b7b67..000000000
--- a/library/font_awesome/src/README.md-nobuild
+++ /dev/null
@@ -1,108 +0,0 @@
----
----
-# [Font Awesome v{{ site.fontawesome.version }}]({{ site.fontawesome.url }})
-### The iconic font and CSS framework
-
-Font Awesome is a full suite of {{ icons | size }} pictographic icons for easy scalable vector graphics on websites,
-created and maintained by [{{ site.fontawesome.author.name }}](https://twitter.com/{{ site.fontawesome.author.twitter }}).
-Stay up to date with the latest release and announcements on Twitter:
-[@{{ site.fontawesome.twitter }}](http://twitter.com/{{ site.fontawesome.twitter }}).
-
-Get started at {{ site.fontawesome.url }}!
-
-## License
-- The Font Awesome font is licensed under the SIL OFL 1.1:
- - http://scripts.sil.org/OFL
-- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License:
- - https://opensource.org/licenses/mit-license.html
-- The Font Awesome documentation is licensed under the CC BY 3.0 License:
- - http://creativecommons.org/licenses/by/3.0/
-- Attribution is no longer required as of Font Awesome 3.0, but much appreciated:
- - `Font Awesome by Dave Gandy - http://fontawesome.io`
-- Full details: http://fontawesome.io/license/
-
-## Changelog
-- [v4.7.0 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/10012)
-- [v4.6.3 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/9189)
-- [v4.6.3 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/9189)
-- [v4.6.2 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/9117)
-- [v4.6.1 GitHub pull request](https://github.com/FortAwesome/Font-Awesome/pull/8962)
-- [v4.6.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.6.0+is%3Aclosed)
-- [v4.5.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.5.0+is%3Aclosed)
-- [v4.4.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.4.0+is%3Aclosed)
-- [v4.3.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?q=milestone%3A4.3.0+is%3Aclosed)
-- [v4.2.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=12&page=1&state=closed)
-- [v4.1.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=6&page=1&state=closed)
-- [v4.0.3 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=9&page=1&state=closed)
-- [v4.0.2 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=8&page=1&state=closed)
-- [v4.0.1 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=7&page=1&state=closed)
-- [v4.0.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=2&page=1&state=closed)
-- [v3.2.1 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=5&page=1&state=closed)
-- [v3.2.0 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=3&page=1&state=closed)
-- [v3.1.1 GitHub milestones](https://github.com/FortAwesome/Font-Awesome/issues?milestone=4&page=1&state=closed)
-- v3.1.0 - Added 54 icons, icon stacking styles, flipping and rotating icons, removed Sass support
-- v3.0.2 - much improved rendering and alignment in IE7
-- v3.0.1 - much improved rendering in webkit, various bug fixes
-- v3.0.0 - all icons redesigned from scratch, optimized for Bootstrap's 14px default
-
-## Contributing
-
-Please read through our [contributing guidelines](https://github.com/FortAwesome/Font-Awesome/blob/master/CONTRIBUTING.md).
-Included are directions for opening issues, coding standards, and notes on development.
-
-## Versioning
-
-Font Awesome will be maintained under the Semantic Versioning guidelines as much as possible. Releases will be numbered
-with the following format:
-
-`<major>.<minor>.<patch>`
-
-And constructed with the following guidelines:
-
-* Breaking backward compatibility bumps the major (and resets the minor and patch)
-* New additions, including new icons, without breaking backward compatibility bumps the minor (and resets the patch)
-* Bug fixes, changes to brand logos, and misc changes bumps the patch
-
-For more information on SemVer, please visit http://semver.org.
-
-## Author
-- Email: {{ site.fontawesome.author.email }}
-- Twitter: http://twitter.com/{{ site.fontawesome.author.twitter }}
-- GitHub: https://github.com/{{ site.fontawesome.author.github }}
-
-## Component
-To include as a [component](https://github.com/componentjs/component), just run
-
- $ component install FortAwesome/Font-Awesome
-
-Or add
-
- "FortAwesome/Font-Awesome": "*"
-
-to the `dependencies` in your `component.json`.
-
-## Hacking on Font Awesome
-
-**Before you can build the project**, you must first have the following installed:
-
-- [Ruby](https://www.ruby-lang.org/en/)
-- Ruby Development Headers
- - **Ubuntu:** `sudo apt-get install ruby-dev` *(Only if you're __NOT__ using `rbenv` or `rvm`)*
- - **Windows:** [DevKit](http://rubyinstaller.org/)
-- [Bundler](http://bundler.io/) (Run `gem install bundler` to install).
-- [Node Package Manager (AKA NPM)](https://docs.npmjs.com/getting-started/installing-node)
-- [Less](http://lesscss.org/) (Run `npm install -g less` to install).
-- [Less Plugin: Clean CSS](https://github.com/less/less-plugin-clean-css) (Run `npm install -g less-plugin-clean-css` to install).
-
-From the root of the repository, install the tools used to develop.
-
- $ bundle install
- $ npm install
-
-Build the project and documentation:
-
- $ bundle exec jekyll build
-
-Or serve it on a local server on http://localhost:7998/Font-Awesome/:
-
- $ bundle exec jekyll -w serve
diff --git a/library/font_awesome/src/_includes/accessibility/accessibility-facdn.html b/library/font_awesome/src/_includes/accessibility/accessibility-facdn.html
deleted file mode 100644
index 624e0fcec..000000000
--- a/library/font_awesome/src/_includes/accessibility/accessibility-facdn.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<section id="accessibility-cdn" class="accessibility-cdn">
- <div class="row">
- <div class="col-md-8">
- <h3>
- <i class="gg-col fa fa-magic text-muted fa-lg padding-right" aria-hidden="true"></i>
- Use Font Awesome CDN's auto accessibility
- </h3>
-
- <p><a href="{{ page.relative_path }}get-started/#get-started-cdn">Font Awesome CDN</a> helps you automate accessibility support more easily so your icons work for the most people possible. You only need turn on a setting, <a href="https://cdn.fontawesome.com/help#qa-autoa11y">use our simple syntax</a>, and any icons you use will have all of the best practices and manual techniques below <strong>applied automatically</strong>.</p>
- </div>
-
- <div class="col-md-4">
- <a href="{{ page.relative_path }}get-started/#get-started-cdn" class="btn btn-success btn-block btn-lg margin-top-lg margin-bottom">Automate Your Icons' Accessibility</a>
-
- <p class="text-sm text-center margin-bottom-none">
- <a href="https://cdn.fontawesome.com/help#qa-autoa11y">Read more about our auto accessibility</a>
- </p>
- </div>
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/accessibility/accessibility-manual.html b/library/font_awesome/src/_includes/accessibility/accessibility-manual.html
deleted file mode 100644
index c886ba85b..000000000
--- a/library/font_awesome/src/_includes/accessibility/accessibility-manual.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<section id="accessibility-manual" class="accessibility-manual">
-
- <h3>
- <i class="gg-col fa fa-wrench text-muted fa-lg padding-right" aria-hidden="true"></i>
- Manually make your icons accessible
- </h3>
-
- <p>When using icons in your UI, there are manual techniques and ways to help assistive technology either ignore or better understand Font Awesome.</p>
-
- <h4 class="margin-top-xl">Icons used for pure decoration or visual styling</h4>
- <p>If you're using an icon to add some extra decoration or branding, it does not need to be announced to users as they are navigating your site or app aurally. Additionally, if you're using an icon to visually re-emphasize or add styling to content already present in your HTML, it does not need to be repeated to an assistive technology-using user. You can make sure this is not read by adding the <code>aria-hidden="true"</code> to your Font Awesome markup.</p>
-
- <div class="margin-top-lg margin-bottom-lg">
-{% highlight html %}
-<i class="fa fa-fighter-jet" aria-hidden="true"></i>
-{% endhighlight %}
-<small class="text-muted">an icon being used as pure decoration</small>
- </div>
-
- <div class="margin-bottom-lg">
-{% highlight html %}
-<h1 class="logo">
- <i class="fa fa-pied-piper" aria-hidden="true"></i>
- Pied Piper, A Middle-Out Compression Solution Making Data Storage Problems Smaller
-</h1>
-{% endhighlight %}
-<small class="text-muted">an icon being used as a logo</small>
- </div>
-
- <div class="margin-bottom-lg">
-{% highlight html %}
-<a href="https://github.com/FortAwesome/Font-Awesome"><i class="fa fa-github" aria-hidden="true"></i> View this project's code on Github</a>
-{% endhighlight %}
-<small class="text-muted">an icon being used in front of link text</small>
- </div>
-
- <h4 class="margin-top-xl">Icons with semantic or interactive purpose</h4>
- <p>
- If you're using an icon to convey meaning (rather than only as a decorative element), ensure that this meaning is also conveyed to assistive technologies. This goes for content you're abbreviating via icons as well as interactive controls (buttons, form elements, toggles, etc.). There are a few techniques to accomplish this:
- </p>
-
- <h4 class="margin-top-xl text-muted">If an icon is <strong>not</strong> an interactive element</h4>
- <p>
- The simplest way to provide a text alternative is to use the <code>aria-hidden="true"</code> attribute on the icon and to include the text with an additional element, such as a <code>&lt;span&gt;</code>, with appropriate CSS to visually hide the element while keeping it accessible to assistive technologies. In addition, you can add a <code>title</code> attribute on the icon to provide a tooltip for sighted mouse users.
- </p>
-
- <div class="margin-bottom-lg margin-top-lg">
-{% highlight html %}
-<dl>
- <dt>
- <i class="fa fa-car" aria-hidden="true" title="Time to destination by car"></i>
- <span class="sr-only">Time to destination by car:</span>
- </dt>
- <dd>4 minutes</dd>
-
- <dt>
- <i class="fa fa-bicycle" aria-hidden="true" title="Time to destination by bike"></i>
- <span class="sr-only">Time to destination by bike:</span>
- </dt>
- <dd>12 minutes</dd>
-</dl>
-{% endhighlight %}
- <small class="text-muted">an icon being used to communicate travel methods</small>
- </div>
-
- <div class="margin-bottom-lg margin-top-lg">
-{% highlight html %}
-<i class="fa fa-hourglass" aria-hidden="true" title="60 minutes remain in your exam"></i>
-<span class="sr-only">60 minutes remain in your exam</span>
-
-<i class="fa fa-hourglass-half" aria-hidden="true" title="30 minutes remain in your exam"></i>
-<span class="sr-only">30 minutes remain in your exam</span>
-
-<i class="fa fa-hourglass-end" aria-hidden="true" title="0 minutes remain in your exam"></i>
-<span class="sr-only">0 minutes remain in your exam</span>
-{% endhighlight %}
- <small class="text-muted">an icon being used to denote time remaining</small>
- </div>
-
- <h4 class="margin-top-xl text-muted">If an icon represents an interactive element</h4>
- <p>
- In the case of focusable interactive elements, there are various options to include an alternative text or label to the element, without the need for any visually hidden <code>&lt;span&gt;</code> or similar. For instance, simply adding the <code>aria-label</code> attribute with a text description to the interactive element itself will be sufficient to provide an accessible alternative name for the element. If you need to provide a visual tooltip on mouseover/focus, we recommend additionally using the <code>title</code> attribute or a <a href="https://github.com/chinchang/hint.css">custom tooltip</a> solution.
- </p>
-
- <div class="margin-bottom-lg margin-top-lg">
-{% highlight html %}
-<a href="path/to/shopping/cart" aria-label="View 3 items in your shopping cart">
- <i class="fa fa-shopping-cart" aria-hidden="true"></i>
-</a>
-{% endhighlight %}
- <small class="text-muted">an icon being used to communicate shopping cart state</small>
- </div>
-
- <div class="margin-bottom-lg margin-top-lg">
-{% highlight html %}
-<a href="#navigation-main" aria-label="Skip to main navigation">
- <i class="fa fa-bars" aria-hidden="true"></i>
-</a>
-{% endhighlight %}
- <small class="text-muted">an icon being used as a link to a navigation menu</small>
- </div>
-
- <div class="margin-bottom-lg margin-top-lg">
-{% highlight html %}
-<a class="btn btn-danger" href="path/to/settings" aria-label="Delete">
- <i class="fa fa-trash-o" aria-hidden="true" title="Delete this item?"></i>
-</a>
-{% endhighlight %}
- <small class="text-muted">an icon being used as a delete button's symbol with a <code>title</code> attribute to provide a native mouse tooltip</small>
- </div>
-
-
- <div class="alert alert-success">
- <ul class="fa-ul margin-bottom-none">
- <li>
- <i class="fa-li fa fa-info-circle fa-lg" aria-hidden"true"></i>
- <a href="{{ page.relative_path }}examples/#accessible">See more examples of how to add accessibility-minded icons</a> into your UI.
- </li>
- </ul>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/accessibility/background.html b/library/font_awesome/src/_includes/accessibility/background.html
deleted file mode 100644
index da97e4762..000000000
--- a/library/font_awesome/src/_includes/accessibility/background.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<div id="accessibility-background">
- <h4 class="margin-top-none">About Icon Fonts &amp; Accessibility</h4>
- <p>
- Modern versions of assistive technology, like screen readers, will read CSS generated content (how Font Awesome icons are rendered), as well as specific Unicode characters. When reading our default markup for rendering icons, assisistive technology may have the following problems.
- </p>
-
- <ul>
- <li>
- The assistive technology may not find any content to read out to a user
- </li>
- <li>
- The assistive technology may read the unicode equivalent, which could not match up to what the icon means in context, or worse is just plain confusing
- </li>
- </ul>
-</div>
diff --git a/library/font_awesome/src/_includes/accessibility/cta-cdn-ally.html b/library/font_awesome/src/_includes/accessibility/cta-cdn-ally.html
deleted file mode 100644
index 61d4fe3a6..000000000
--- a/library/font_awesome/src/_includes/accessibility/cta-cdn-ally.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="well text-center">
- <div class="text-center margin-bottom">
- <i class="gg-col fa fa-magic fa-3x text-muted padding-right" aria-hidden="true"></i>
- <i class="gg-col fa fa-plus fa-2x text-muted padding-right" aria-hidden="true"></i>
- <i class="gg-col fa fa-universal-access fa-3x text-muted" aria-hidden="true"></i>
- </div>
- <h3>Automate your icons' accessibility</h3>
- <p><a href="{{ page.relative_path }}get-started/#get-started-cdn">Font Awesome CDN</a> helps you automate accessibility support more easily so your icons work for the most people possible. You only need turn on a setting and any icons you use will have all of the best practices we recommend applied automatically.</p>
-
- <a href="{{ page.relative_path }}get-started/#get-started-cdn" class="btn btn-success btn-lg">Get Automated Accessibility</a>
-</div>
diff --git a/library/font_awesome/src/_includes/accessibility/other.html b/library/font_awesome/src/_includes/accessibility/other.html
deleted file mode 100644
index d3054ba8c..000000000
--- a/library/font_awesome/src/_includes/accessibility/other.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<section id="accessibility-other" class="accessibility-other">
- <h2 class="page-header">Other cases and information</h2>
- <p>
- While the scenarios and techniques here help avoid some serious issues and confusion, they are not exhaustive. There are many complex contexts and use cases when it comes to accessibility, such as users with low vision who need a high color contrast ratio to see UI. There are some great tools and resources to learn from and work on these issues out there. Here are a few reads we recommend.
- </p>
-
- <ul>
- <li><a href="https://www.filamentgroup.com/lab/bulletproof_icon_fonts.html">https://www.filamentgroup.com/lab/bulletproof_icon_fonts.html</a></li>
- <li><a href="https://css-tricks.com/html-for-icon-font-usage/">https://css-tricks.com/html-for-icon-font-usage/</a></li>
- <li><a href="http://www.sitepoint.com/icon-fonts-vs-svg-debate/">http://www.sitepoint.com/icon-fonts-vs-svg-debate/</a></li>
- <li><a href="http://leaverou.github.io/contrast-ratio">http://leaverou.github.io/contrast-ratio/</a></li>
- </ul>
-
- <p>
- We'll continue to work on these under the larger topic of accessibility, but in the meantime, <a href="{{ page.relative_path }}community/#reporting-bugs">let us know if any bugs or issues</a>.
- </p>
-</section>
diff --git a/library/font_awesome/src/_includes/ads/fusion.html b/library/font_awesome/src/_includes/ads/fusion.html
deleted file mode 100644
index c49a9f42c..000000000
--- a/library/font_awesome/src/_includes/ads/fusion.html
+++ /dev/null
@@ -1 +0,0 @@
-<script src="https://cdn.fusionads.net/fusion.js?zoneid=1332&amp;serve=C6SDP2Y&amp;placement=fontawesome" id="_fusionads_js"></script>
diff --git a/library/font_awesome/src/_includes/brand-adblock-warning.html b/library/font_awesome/src/_includes/brand-adblock-warning.html
deleted file mode 100644
index 9f4ddd8b6..000000000
--- a/library/font_awesome/src/_includes/brand-adblock-warning.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<h4><i class="fa fa-warning" aria-hidden"true"></i> Warning!</h4>
-Apparently, Adblock Plus can remove Font Awesome brand icons with their "Remove Social
-Media Buttons" setting. We will not use hacks to force them to display. Please
-<a href="https://adblockplus.org/en/bugs" class="alert-link">report an issue with Adblock Plus</a> if you believe this to be
-an error. To work around this, you'll need to modify the social icon class names.
diff --git a/library/font_awesome/src/_includes/brand-license.html b/library/font_awesome/src/_includes/brand-license.html
deleted file mode 100644
index 731aa354a..000000000
--- a/library/font_awesome/src/_includes/brand-license.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<ul class="margin-bottom-none padding-left-lg">
- <li>All brand icons are trademarks of their respective owners.</li>
- <li>The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.</li>
- <li>Brand icons should only be used to represent the company or product to which they refer.</li>
- <li class="strong">Please do not use brand logos for any purpose except to represent that particular brand or service.</li>
-</ul>
diff --git a/library/font_awesome/src/_includes/code/core.less b/library/font_awesome/src/_includes/code/core.less
deleted file mode 100644
index cbd0d1ae7..000000000
--- a/library/font_awesome/src/_includes/code/core.less
+++ /dev/null
@@ -1,6 +0,0 @@
- display: inline-block;
- font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
- font-size: inherit; // can't have font-size inherit on line above, so need to override
- text-rendering: auto; // optimizelegibility throws things off #1094
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
diff --git a/library/font_awesome/src/_includes/code/core.scss b/library/font_awesome/src/_includes/code/core.scss
deleted file mode 100644
index c7ea6e0e3..000000000
--- a/library/font_awesome/src/_includes/code/core.scss
+++ /dev/null
@@ -1,6 +0,0 @@
- display: inline-block;
- font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
- font-size: inherit; // can't have font-size inherit on line above, so need to override
- text-rendering: auto; // optimizelegibility throws things off #1094
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
diff --git a/library/font_awesome/src/_includes/code/license.css b/library/font_awesome/src/_includes/code/license.css
deleted file mode 100644
index 7e503a805..000000000
--- a/library/font_awesome/src/_includes/code/license.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- * Font Awesome {{ site.fontawesome.version }} by @{{ site.fontawesome.author.twitter }} - {{ site.fontawesome.url }} - @{{ site.fontawesome.twitter }}
- * License - {{ site.fontawesome.url }}/license (Font: {{ site.fontawesome.license.font.version }}, CSS: {{ site.fontawesome.license.code.version }})
- */ \ No newline at end of file
diff --git a/library/font_awesome/src/_includes/community/getting-support.html b/library/font_awesome/src/_includes/community/getting-support.html
deleted file mode 100644
index 8ae311adc..000000000
--- a/library/font_awesome/src/_includes/community/getting-support.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<div id="getting-support">
- <h2 class="page-header">Getting Support</h2>
- <p>
- Having trouble getting Font Awesome up and running? Something not working the way you think it should? I hate that
- I don't have time to answer Font Awesome support emails anymore. So here are some things you might wanna do:
- </p>
- <ol>
- <li>
- Make sure you've read the latest version of how to <a href="{{ page.relative_path }}get-started/">get started</a>.
- It's been updated recently to make Font Awesome even easier to use.
- </li>
- <li>
- Check out the <a href="http://stackoverflow.com/questions/tagged/font-awesome">existing questions tagged as
- Font Awesome</a> over on Stack Overflow. Other folks might have had the same question you've had.
- </li>
- <li>
- Can't find the answer to your question on Stack Overflow?
- <a href="http://stackoverflow.com/questions/ask?tags=font-awesome">Ask a new question</a>, then
- <a href="mailto:{{ site.fontawesome.author.email }}">send me an email</a> and I might be able to take a look.
- </li>
- </ol>
-</div>
diff --git a/library/font_awesome/src/_includes/community/project-milestones.html b/library/font_awesome/src/_includes/community/project-milestones.html
deleted file mode 100644
index 598569981..000000000
--- a/library/font_awesome/src/_includes/community/project-milestones.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<section id="project-milestones">
- <h2 class="page-header">Project Milestones</h2>
- <p>
- Want to keep up with what's planned for Font Awesome? Check out our
- <a href="{{ site.fontawesome.github.url }}/milestones">milestones</a> on the GitHub project.
- </p>
-</section>
diff --git a/library/font_awesome/src/_includes/community/reporting-bugs.html b/library/font_awesome/src/_includes/community/reporting-bugs.html
deleted file mode 100644
index b8fb61e49..000000000
--- a/library/font_awesome/src/_includes/community/reporting-bugs.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<section id="reporting-bugs">
- <h2 class="page-header">Reporting Bugs</h2>
- <p>
- Found a problem with Font Awesome? Feel free to submit an issue on the GitHub project. But please keep the following in mind:
- </p>
- <ol>
- <li>Please be nice. Font Awesome is a happy place.</li>
- <li>Please <a href="{{ site.fontawesome.github.url }}/search?type=Issues">search</a> to see if your bug was already reported.</li>
- <li>
- Before opening any issue, please read the generic <a href="https://github.com/necolas/issue-guidelines">issue
- guidelines</a>, by <a href="https://github.com/necolas/">Nicolas Gallagher</a>.
- </li>
- <li>
- After doing everything above, feel free to
- <a href="{{ site.fontawesome.github.url }}/issues/new">submit an issue</a>.
- </li>
- </ol>
-</section>
diff --git a/library/font_awesome/src/_includes/community/requesting-new-icons.html b/library/font_awesome/src/_includes/community/requesting-new-icons.html
deleted file mode 100644
index d08aa16ff..000000000
--- a/library/font_awesome/src/_includes/community/requesting-new-icons.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<section id="requesting-new-icons">
- <h2 class="page-header">Requesting New Icons</h2>
- <p>
- New icons mostly start as requests by the
- <a href="{{ site.fontawesome.github.url }}/issues">Font Awesome community on GitHub</a>. Want to request a new
- icon? Here are some things to keep in mind:
- </p>
- <ol>
- <li>Please be nice. Font Awesome is a happy place.</li>
- <li>Please <a href="{{ site.fontawesome.github.url }}/search?type=Issues">search</a> to see if your icon request already exists. If a request is found, please add a &#x1F44D; reaction to that one.</li>
- <li>
- Please make requests for single icons, unless you are requesting a couple of strictly related icons (e.g., thumbs-up/thumbs-down).
- </li>
- <li>
- Please and thank you if you include the following:
- <ul>
- <li>
- Title your <a href="{{ site.fontawesome.github.url }}/issues/new?title=Icon%20Request:%20fa-">new issue</a>
- <code>Icon request: icon-name</code> (e.g., <code>Icon request: icon-car</code>).
- </li>
- <li>Include a few use cases for your requested icon. How do you plan on using it?</li>
- <li>Attach a single color image or two that represent the idea you're going for.</li>
- </ul>
- </li>
- <li>
- Request concrete objects: it's harder to make an icon to represent happiness, it's easier to make a smiley face. <i class="fa fa-smile-o" title="Smiling face"></i>
- </li>
- </ol>
-</section>
diff --git a/library/font_awesome/src/_includes/community/submitting-pull-requests.html b/library/font_awesome/src/_includes/community/submitting-pull-requests.html
deleted file mode 100644
index 1a55aba7b..000000000
--- a/library/font_awesome/src/_includes/community/submitting-pull-requests.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<section id="submitting-pull-requests">
- <h2 class="page-header">Submitting Pull Requests</h2>
- Found a way to solve a bug in Font Awesome? Want to contribute new features? Here are a few things to remember:
- <ol>
- <li>Please do not submit new icons.</li>
- <li>Please submit all pull requests against *-wip branches.</li>
- <li>All pull requests submitted against master will be summarily closed and this guide referenced.</li>
- <li>
- After doing everything above, feel free to
- <a href="{{ site.fontawesome.github.url }}/issues/new">submit a pull request</a>.
- </li>
- </ol>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/accessible.html b/library/font_awesome/src/_includes/examples/accessible.html
deleted file mode 100644
index 0360a4621..000000000
--- a/library/font_awesome/src/_includes/examples/accessible.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<section id="accessible">
- <h2 class="page-header">
- Accessibility-Minded
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p>
- <a class="btn btn-default" href="path/to/settings" aria-label="Settings">
- <i class="fa fa-cog" aria-hidden="true"></i>
- </a>
-
- <a class="btn btn-danger" href="path/to/settings" aria-label="Delete">
- <i class="fa fa-trash-o" aria-hidden="true"></i>
- </a>
-
- <a class="btn btn-primary" href="#navigation-main" aria-label="Skip to main navigation">
- <i class="fa fa-bars" aria-hidden="true"></i>
- </a>
- </p>
-
- <p>
- <i class="fa fa-refresh fa-spin fa-3x fa-fw" aria-hidden="true"></i>
- <span class="sr-only">Refreshing...</span>
-
- <i class="fa fa-cog fa-spin fa-3x fa-fw" aria-hidden="true"></i>
- <span class="sr-only">Saving. Hang tight!</span>
- </p>
-
- <p>
- <div class="input-group margin-bottom-sm">
- <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw" aria-hidden="true"></i></span>
- <input class="form-control" type="text" placeholder="Email address">
- </div>
- <div class="input-group">
- <span class="input-group-addon"><i class="fa fa-key fa-fw" aria-hidden="true"></i></span>
- <input class="form-control" type="password" placeholder="Password">
- </div>
- </p>
-
- <p>
- <a href="path/to/shopping/cart" class="btn btn-primary" aria-label="View 3 items in your shopping cart">
- <i class="fa fa-shopping-cart" aria-hidden="true"></i>
- </a>
- </p>
-
- <p>
- <i class="fa fa-battery-half" aria-hidden="true"></i>
- <span class="sr-only">Battery level: 50%</span>
- </p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- With <a href="{{ page.relative_path }}accessibility/">our thoughts on icon accessibility</a> in mind, If an icon only adds some extra decoration or branding, it does not need to be announced to users as they are navigating your site or app aurally. Alternatively, if an icon conveys meaning in your content or interface, ensure that this meaning is also conveyed to assistive technologies through alternative displays or text.
- </p>
-
-{% highlight html %}
-<a class="btn btn-default" href="path/to/settings" aria-label="Settings">
- <i class="fa fa-cog" aria-hidden="true"></i>
-</a>
-
-<a class="btn btn-danger" href="path/to/settings" aria-label="Delete">
- <i class="fa fa-trash-o" aria-hidden="true"></i>
-</a>
-
-<a class="btn btn-primary" href="#navigation-main" aria-label="Skip to main navigation">
- <i class="fa fa-bars" aria-hidden="true"></i>
-</a>
-{% endhighlight %}
-
-{% highlight html %}
-<i class="fa fa-refresh fa-spin fa-3x fa-fw" aria-hidden="true"></i>
-<span class="sr-only">Refreshing...</span>
-
-<i class="fa fa-cog fa-spin fa-3x fa-fw" aria-hidden="true"></i>
-<span class="sr-only">Saving. Hang tight!</span>
-{% endhighlight %}
-
-{% highlight html %}
-<div class="input-group margin-bottom-sm">
- <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw" aria-hidden="true"></i></span>
- <input class="form-control" type="text" placeholder="Email address">
-</div>
-<div class="input-group">
- <span class="input-group-addon"><i class="fa fa-key fa-fw" aria-hidden="true"></i></span>
- <input class="form-control" type="password" placeholder="Password">
-</div>
-{% endhighlight %}
-
-{% highlight html %}
-<a href="path/to/shopping/cart" class="btn btn-primary" aria-label="View 3 items in your shopping cart">
- <i class="fa fa-shopping-cart" aria-hidden="true"></i>
-</a>
-{% endhighlight %}
-
-{% highlight html %}
-<i class="fa fa-battery-half" aria-hidden="true"></i>
-<span class="sr-only">Battery level: 50%</span>
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/animated.html b/library/font_awesome/src/_includes/examples/animated.html
deleted file mode 100644
index 927e98bbd..000000000
--- a/library/font_awesome/src/_includes/examples/animated.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<section id="animated">
- <h2 class="page-header">
- Animated Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/animated.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_animated.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p>
- <i class="fa fa-spinner fa-spin fa-3x fa-fw margin-bottom"></i>
- <span class="sr-only">Loading example (with fa-spinner icon)</span>
-
- <i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw margin-bottom"></i>
- <span class="sr-only">Loading (with fa-circle-o-notch icon)</span>
-
- <i class="fa fa-refresh fa-spin fa-3x fa-fw margin-bottom"></i>
- <span class="sr-only">Loading example (with fa-refresh icon)</span>
-
- <i class="fa fa-cog fa-spin fa-3x fa-fw margin-bottom"></i>
- <span class="sr-only">Loading example (with fa-cog icon)</span>
-
- <i class="fa fa-spinner fa-pulse fa-3x fa-fw margin-bottom"></i>
- <span class="sr-only">Loading example (with fa-spinner icon)</span>
- </p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- Use the <code>fa-spin</code> class to get any icon to rotate, and use <code>fa-pulse</code> to have it rotate
- with 8 steps. Works well with <code>fa-spinner</code>, <code>fa-refresh</code>, and <code>fa-cog</code>.
- </p>
-{% highlight html %}
-<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
-<span class="sr-only">Loading...</span>
-
-<i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw"></i>
-<span class="sr-only">Loading...</span>
-
-<i class="fa fa-refresh fa-spin fa-3x fa-fw"></i>
-<span class="sr-only">Loading...</span>
-
-<i class="fa fa-cog fa-spin fa-3x fa-fw"></i>
-<span class="sr-only">Loading...</span>
-
-<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i>
-<span class="sr-only">Loading...</span>
-{% endhighlight %}
- <p class="alert alert-success">
- <i class="fa fa-exclamation-triangle fa-lg" aria-hidden="true"></i><strong class="sr-only">Note:</strong>
- Some browsers on some platforms have issues with animated icons resulting in a jittery wobbling effect. See
- <a href="https://github.com/FortAwesome/Font-Awesome/issues/671" class="alert-link" target="_blank">issue #671</a>
- for examples and possible workarounds.
- </p>
- <p class="alert alert-success">
- <i class="fa fa-info-circle fa-lg" aria-hidden="true"></i><strong class="sr-only">Note:</strong> CSS3 animations aren't supported in IE8 - IE9.
- </p>
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/basic.html b/library/font_awesome/src/_includes/examples/basic.html
deleted file mode 100644
index c00fb4787..000000000
--- a/library/font_awesome/src/_includes/examples/basic.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<section id="basic">
- <h2 class="page-header">
- Basic Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/core.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_core.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
-
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p>
- <i class="fa fa-camera-retro"></i>
- <span class="sr-only">Example: basic icon</span>
- fa-camera-retro
- </p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- You can place Font Awesome icons just about anywhere using the CSS Prefix <code>fa</code> and the icon's
- name. Font Awesome is designed to be used with inline elements (we like the <code>&lt;i&gt;</code> tag for
- brevity, but using a <code>&lt;span&gt;</code> is more semantically correct).
- </p>
-{% highlight html %}
-<i class="fa fa-camera-retro"></i> fa-camera-retro
-{% endhighlight %}
- <div class="alert alert-success">
- <ul class="fa-ul">
- <li>
- <i class="fa fa-info-circle fa-lg fa-li" aria-hidden="true"></i>
- <strong class="sr-only">Example: basic icon</strong>
- If you change the font-size of the icon's container, the icon gets bigger. Same things goes for color,
- drop shadow, and anything else that gets inherited using CSS.
- </li>
- </ul>
- </div>
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/bootstrap.html b/library/font_awesome/src/_includes/examples/bootstrap.html
deleted file mode 100644
index bcc6c0171..000000000
--- a/library/font_awesome/src/_includes/examples/bootstrap.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<section id="bootstrap">
- <h2 class="page-header">Bootstrap 3 Examples</h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p>
- <a class="btn btn-danger" href="#">
- <i class="fa fa-trash-o fa-lg"></i> Delete</a>
- <a class="btn btn-default btn-sm" href="#">
- <i class="fa fa-cog"></i> Settings</a>
- </p>
- <p>
- <a class="btn btn-lg btn-success" href="#">
- <i class="fa fa-flag fa-2x pull-left"></i> Font Awesome<br>Version {{ site.fontawesome.version }}</a>
- </p>
- <div class="margin-bottom">
- <div class="btn-group">
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-left" title="Align Left"></i>
- </a>
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-center" title="Align Center"></i>
- </a>
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-right" title="Align Right"></i>
- </a>
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-justify" title="Align Justify"></i>
- </a>
- </div>
- </div>
- <div class="margin-bottom">
- <div class="input-group margin-bottom-sm">
- <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
- <input class="form-control" type="text" placeholder="Email address">
- </div>
- <div class="input-group">
- <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
- <input class="form-control" type="password" placeholder="Password">
- </div>
- </div>
- <div class="margin-bottom">
- <div class="btn-group open">
- <a class="btn btn-primary" href="#"><i class="fa fa-user fa-fw"></i> User</a>
- <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
- <span class="fa fa-caret-down" title="Toggle dropdown menu"></span>
- </a>
- <ul class="dropdown-menu">
- <li><a href="#"><i class="fa fa-pencil fa-fw"></i> Edit</a></li>
- <li><a href="#"><i class="fa fa-trash-o fa-fw"></i> Delete</a></li>
- <li><a href="#"><i class="fa fa-ban fa-fw"></i> Ban</a></li>
- <li class="divider"></li>
- <li><a href="#"><i class="fa fa-unlock"></i> Make admin</a></li>
- </ul>
- </div>
- </div>
-
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- Font Awesome works great with the full range of Bootstrap components.
- </p>
-{% highlight html %}
-<a class="btn btn-danger" href="#">
- <i class="fa fa-trash-o fa-lg"></i> Delete</a>
-<a class="btn btn-default btn-sm" href="#">
- <i class="fa fa-cog"></i> Settings</a>
-
-<a class="btn btn-lg btn-success" href="#">
- <i class="fa fa-flag fa-2x pull-left"></i> Font Awesome<br>Version {{ site.fontawesome.version }}</a>
-
-<div class="btn-group">
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-left" title="Align Left"></i>
- </a>
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-center" title="Align Center"></i>
- </a>
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-right" title="Align Right"></i>
- </a>
- <a class="btn btn-default" href="#">
- <i class="fa fa-align-justify" title="Align Justify"></i>
- </a>
-</div>
-
-<div class="input-group margin-bottom-sm">
- <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
- <input class="form-control" type="text" placeholder="Email address">
-</div>
-<div class="input-group">
- <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
- <input class="form-control" type="password" placeholder="Password">
-</div>
-
-<div class="btn-group open">
- <a class="btn btn-primary" href="#"><i class="fa fa-user fa-fw"></i> User</a>
- <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
- <span class="fa fa-caret-down" title="Toggle dropdown menu"></span>
- </a>
- <ul class="dropdown-menu">
- <li><a href="#"><i class="fa fa-pencil fa-fw"></i> Edit</a></li>
- <li><a href="#"><i class="fa fa-trash-o fa-fw"></i> Delete</a></li>
- <li><a href="#"><i class="fa fa-ban fa-fw"></i> Ban</a></li>
- <li class="divider"></li>
- <li><a href="#"><i class="fa fa-unlock"></i> Make admin</a></li>
- </ul>
-</div>
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/bordered-pulled.html b/library/font_awesome/src/_includes/examples/bordered-pulled.html
deleted file mode 100644
index b7841f0c2..000000000
--- a/library/font_awesome/src/_includes/examples/bordered-pulled.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<section id="bordered-pulled">
- <h2 class="page-header">
- Bordered &amp; Pulled Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/bordered-pulled.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_bordered-pulled.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p>
- <i class="fa fa-quote-left fa-3x fa-pull-left fa-border" aria-hidden="true"></i>
- &hellip;tomorrow we will run faster, stretch out our arms farther&hellip; And then one fine morning&mdash;
- So we beat on, boats against the current, borne back ceaselessly into the past.
- </p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- Use <code>fa-border</code> and <code>fa-pull-right</code> or <code>fa-pull-left</code> for easy pull quotes or
- article icons.
- </p>
-{% highlight html %}
-<i class="fa fa-quote-left fa-3x fa-pull-left fa-border" aria-hidden="true"></i>
-...tomorrow we will run faster, stretch out our arms farther...
-And then one fine morning&mdash; So we beat on, boats against the
-current, borne back ceaselessly into the past.
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/custom.html b/library/font_awesome/src/_includes/examples/custom.html
deleted file mode 100644
index 2de7ad7ab..000000000
--- a/library/font_awesome/src/_includes/examples/custom.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<section id="custom">
- <h2 class="page-header">Custom CSS</h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p>Anything you can do with CSS font styles, you can do with Font Awesome.</p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>Star Ratings (inspired by <a href="http://css-tricks.com/star-ratings/" target="_blank">CSS Tricks</a>)</p>
- <div class="well">
- <span class="rating">
- <span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span>
- </span>
- </div>
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/fixed-width.html b/library/font_awesome/src/_includes/examples/fixed-width.html
deleted file mode 100644
index 845a79609..000000000
--- a/library/font_awesome/src/_includes/examples/fixed-width.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<section id="fixed-width">
- <h2 class="page-header">
- Fixed Width Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/fixed-width.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_fixed-width.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <div class="list-group">
- <a class="list-group-item" href="#"><i class="fa fa-home fa-fw" aria-hidde="true"></i>&nbsp; Home</a>
- <a class="list-group-item" href="#"><i class="fa fa-book fa-fw" aria-hidde="true"></i>&nbsp; Library</a>
- <a class="list-group-item" href="#"><i class="fa fa-pencil fa-fw" aria-hidde="true"></i>&nbsp; Applications</a>
- <a class="list-group-item" href="#"><i class="fa fa-cog fa-fw" aria-hidde="true"></i>&nbsp; Settings</a>
- </div>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- Use <code>fa-fw</code> to set icons at a fixed width. Great to use when different icon widths throw off alignment.
- Especially useful in things like nav lists &amp; list groups.
- </p>
-{% highlight html %}
-<div class="list-group">
- <a class="list-group-item" href="#"><i class="fa fa-home fa-fw" aria-hidden="true"></i>&nbsp; Home</a>
- <a class="list-group-item" href="#"><i class="fa fa-book fa-fw" aria-hidden="true"></i>&nbsp; Library</a>
- <a class="list-group-item" href="#"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; Applications</a>
- <a class="list-group-item" href="#"><i class="fa fa-cog fa-fw" aria-hidden="true"></i>&nbsp; Settings</a>
-</div>
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/larger.html b/library/font_awesome/src/_includes/examples/larger.html
deleted file mode 100644
index f10c7188a..000000000
--- a/library/font_awesome/src/_includes/examples/larger.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<section id="larger">
- <h2 class="page-header">
- Larger Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/larger.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_larger.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p><i class="fa fa-camera-retro fa-lg" aria-hidden="true"></i> fa-lg</p>
- <p><i class="fa fa-camera-retro fa-2x" aria-hidden="true"></i> fa-2x</p>
- <p><i class="fa fa-camera-retro fa-3x" aria-hidden="true"></i> fa-3x</p>
- <p><i class="fa fa-camera-retro fa-4x" aria-hidden="true"></i> fa-4x</p>
- <p><i class="fa fa-camera-retro fa-5x" aria-hidden="true"></i> fa-5x</p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- To increase icon sizes relative to their container, use the <code>fa-lg</code> (33% increase), <code>fa-2x</code>,
- <code>fa-3x</code>, <code>fa-4x</code>, or <code>fa-5x</code> classes.
- </p>
-{% highlight html %}
-<i class="fa fa-camera-retro fa-lg"></i> fa-lg
-<i class="fa fa-camera-retro fa-2x"></i> fa-2x
-<i class="fa fa-camera-retro fa-3x"></i> fa-3x
-<i class="fa fa-camera-retro fa-4x"></i> fa-4x
-<i class="fa fa-camera-retro fa-5x"></i> fa-5x
-{% endhighlight %}
- <div class="alert alert-success">
- <ul class="fa-ul">
- <li>
- <i class="fa fa-exclamation-triangle fa-li fa-lg"></i>
- If your icons are getting chopped off on top and bottom, make sure you have
- sufficient line-height.
- </li>
- </ul>
- </div>
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/list.html b/library/font_awesome/src/_includes/examples/list.html
deleted file mode 100644
index 1c7f3008f..000000000
--- a/library/font_awesome/src/_includes/examples/list.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<section id="list">
- <h2 class="page-header">
- List Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/list.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_list.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-check-square"></i>List icons</li>
- <li><i class="fa-li fa fa-check-square"></i>can be used</li>
- <li><i class="fa-li fa fa-spinner fa-spin"></i>as bullets</li>
- <li><i class="fa-li fa fa-square"></i>in lists</li>
- </ul>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>Use <code>fa-ul</code> and <code>fa-li</code> to easily replace default bullets in unordered lists.</p>
-{% highlight html %}
-<ul class="fa-ul">
- <li><i class="fa-li fa fa-check-square"></i>List icons</li>
- <li><i class="fa-li fa fa-check-square"></i>can be used</li>
- <li><i class="fa-li fa fa-spinner fa-spin"></i>as bullets</li>
- <li><i class="fa-li fa fa-square"></i>in lists</li>
-</ul>
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/rotated-flipped.html b/library/font_awesome/src/_includes/examples/rotated-flipped.html
deleted file mode 100644
index 4c5b437f1..000000000
--- a/library/font_awesome/src/_includes/examples/rotated-flipped.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<section id="rotated-flipped">
- <h2 class="page-header">
- Rotated &amp; Flipped
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/rotated-flipped.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_rotated-flipped.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <p style="font-size: 18px;">
- <i class="fa fa-shield" aria-hidden="true"></i>&nbsp; normal<br>
- <i class="fa fa-shield fa-rotate-90" aria-hidden="true"></i>&nbsp; fa-rotate-90<br>
- <i class="fa fa-shield fa-rotate-180" aria-hidden="true"></i>&nbsp; fa-rotate-180<br>
- <i class="fa fa-shield fa-rotate-270" aria-hidden="true"></i>&nbsp; fa-rotate-270<br>
- <i class="fa fa-shield fa-flip-horizontal" aria-hidden="true"></i>&nbsp; fa-flip-horizontal<br>
- <i class="fa fa-shield fa-flip-vertical" aria-hidden="true"></i>&nbsp; fa-flip-vertical
- </p>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- To arbitrarily rotate and flip icons, use the <code>fa-rotate-*</code> and <code>fa-flip-*</code> classes.
- </p>
-{% highlight html %}
-<i class="fa fa-shield"></i> normal<br>
-<i class="fa fa-shield fa-rotate-90"></i> fa-rotate-90<br>
-<i class="fa fa-shield fa-rotate-180"></i> fa-rotate-180<br>
-<i class="fa fa-shield fa-rotate-270"></i> fa-rotate-270<br>
-<i class="fa fa-shield fa-flip-horizontal"></i> fa-flip-horizontal<br>
-<i class="fa fa-shield fa-flip-vertical"></i> fa-flip-vertical
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/examples/stacked.html b/library/font_awesome/src/_includes/examples/stacked.html
deleted file mode 100644
index 505ed2edf..000000000
--- a/library/font_awesome/src/_includes/examples/stacked.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<section id="stacked">
- <h2 class="page-header">
- Stacked Icons
- <div class="pull-right text-default margin-top padding-top-sm hidden-xs">
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/less/stacked.less" class="text-muted padding-right">View LESS</a>
- <a href="https://github.com/FortAwesome/Font-Awesome/blob/{{ site.fontawesome.doc_blob }}/scss/_stacked.scss" class="text-muted">View SASS</a>
- </div>
- </h2>
- <div class="row">
- <div class="col-md-3 col-sm-4">
- <div class="margin-bottom">
- <span class="fa-stack fa-lg" aria-hidden="true">
- <i class="fa fa-square-o fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x"></i>
- </span>
- fa-twitter on fa-square-o<br>
- <span class="fa-stack fa-lg" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-flag fa-stack-1x fa-inverse"></i>
- </span>
- fa-flag on fa-circle<br>
- <span class="fa-stack fa-lg" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-terminal fa-stack-1x fa-inverse"></i>
- </span>
- fa-terminal on fa-square<br>
- <span class="fa-stack fa-lg" aria-hidden="true">
- <i class="fa fa-camera fa-stack-1x"></i>
- <i class="fa fa-ban fa-stack-2x text-danger"></i>
- </span>
- fa-ban on fa-camera
- </div>
- </div>
- <div class="col-md-9 col-sm-8">
- <p>
- To stack multiple icons, use the <code>fa-stack</code> class on the parent, the <code>fa-stack-1x</code>
- for the regularly sized icon, and <code>fa-stack-2x</code> for the larger icon. <code>fa-inverse</code>
- can be used as an alternative icon color. You can even throw <a href="#larger">larger icon</a> classes on the parent
- to get further control of sizing.
- </p>
-{% highlight html %}
-<span class="fa-stack fa-lg">
- <i class="fa fa-square-o fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x"></i>
-</span>
-fa-twitter on fa-square-o<br>
-<span class="fa-stack fa-lg">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-flag fa-stack-1x fa-inverse"></i>
-</span>
-fa-flag on fa-circle<br>
-<span class="fa-stack fa-lg">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-terminal fa-stack-1x fa-inverse"></i>
-</span>
-fa-terminal on fa-square<br>
-<span class="fa-stack fa-lg">
- <i class="fa fa-camera fa-stack-1x"></i>
- <i class="fa fa-ban fa-stack-2x text-danger"></i>
-</span>
-fa-ban on fa-camera
-{% endhighlight %}
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/footer.html b/library/font_awesome/src/_includes/footer.html
deleted file mode 100644
index d15a65524..000000000
--- a/library/font_awesome/src/_includes/footer.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<footer id="footer" class="footer hidden-print">
- <div class="container text-center">
- <div id="inventory">
- <a href="http://www.wpbeginner.com/?utm_source=fontawesome_footer&utm_medium=banner&utm_campaign=fontawesome"
- title="Beginner's Guide to WordPress" target="_blank" rel="nofollow"
- onClick="_gaq.push(['_trackEvent', 'Outbound Link', 'wpbeginner.com']);">
- <img src="{{ page.relative_path }}assets/img/logo-wpbeginner.png" width="220" height="65" alt="">
- </a>
- <a href="http://themeisle.com/?utm_source=fontawesome_footer&utm_medium=banner&utm_campaign=fontawesome"
- title="Premium Wordpress Themes" target="_blank" rel="nofollow"
- onClick="_gaq.push(['_trackEvent', 'Outbound Link', 'themeisle.com']);">
- <img src="{{ page.relative_path }}assets/img/logo-themeisle.png" width="220" height="65" alt="">
- </a>
- </div>
- <div>
- <i class="fa fa-flag" aria-hidden="true"></i> Font Awesome {{ site.fontawesome.version }}
- <span class="hide-xs">&middot;</span><br class="hide-sm hide-md hide-lg">
- Created by <a href="https://twitter.com/{{ site.fontawesome.author.twitter }}">Dave Gandy</a>
- </div>
- <div>
- Font Awesome licensed under <a href="{{ site.fontawesome.license.font.url }}">{{ site.fontawesome.license.font.version }}</a>
- <span class="hide-xs">&middot;</span><br class="hide-sm hide-md hide-lg">
- Code licensed under <a href="{{ site.fontawesome.license.code.url }}">{{ site.fontawesome.license.code.version }}</a>
- <span class="hide-xs hide-sm">&middot;</span><br class="hide-md hide-lg">
- Documentation licensed under <a href="{{ site.fontawesome.license.documentation.url }}">{{ site.fontawesome.license.documentation.version }}</a>
- </div>
- <div>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378/"><i class="fa fa-maxcdn"></i> MaxCDN</a> for providing the excellent <a href="https://www.bootstrapcdn.com/fontawesome/">BootstrapCDN for Font Awesome</a>
- </div>
- <div class="project">
- <a href="{{ site.fontawesome.github.url }}">GitHub Project</a> &middot;
- <a href="{{ site.fontawesome.github.url }}/issues">Issues</a> &middot;
- <a href="{{ page.relative_path }}3.2.1">Old 3.2.1 Docs</a>
- </div>
- </div>
-</footer>
diff --git a/library/font_awesome/src/_includes/icons/accessibility.html b/library/font_awesome/src/_includes/icons/accessibility.html
deleted file mode 100644
index 14cd92e5c..000000000
--- a/library/font_awesome/src/_includes/icons/accessibility.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="accessibility">
- <h2 class="page-header">Accessibility Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_currency = icons | expand_aliases | category:"Accessibility Icons" | sort_by:'class' %}
-
- {% for icon in icons_currency %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/brand.html b/library/font_awesome/src/_includes/icons/brand.html
deleted file mode 100644
index 3243bc83e..000000000
--- a/library/font_awesome/src/_includes/icons/brand.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<section id="brand">
- <h2 class="page-header">Brand Icons</h2>
-
- <div class="row fontawesome-icon-list margin-bottom-lg">
- {% assign icons_brand = icons | expand_aliases | category:"Brand Icons" | sort_by:'class' %}
-
- {% for icon in icons_brand %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
- <div class="alert alert-warning">
- {% include brand-adblock-warning.html %}
- </div>
-
- <div class="alert alert-success">
- {% include brand-license.html %}
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/icons/chart.html b/library/font_awesome/src/_includes/icons/chart.html
deleted file mode 100644
index f5cbc1cca..000000000
--- a/library/font_awesome/src/_includes/icons/chart.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="chart">
- <h2 class="page-header">Chart Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_chart = icons | expand_aliases | category:"Chart Icons" | sort_by:'class' %}
-
- {% for icon in icons_chart %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/currency.html b/library/font_awesome/src/_includes/icons/currency.html
deleted file mode 100644
index bc9061513..000000000
--- a/library/font_awesome/src/_includes/icons/currency.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="currency">
- <h2 class="page-header">Currency Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_currency = icons | expand_aliases | category:"Currency Icons" | sort_by:'class' %}
-
- {% for icon in icons_currency %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/directional.html b/library/font_awesome/src/_includes/icons/directional.html
deleted file mode 100644
index d8f2a4c0e..000000000
--- a/library/font_awesome/src/_includes/icons/directional.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="directional">
- <h2 class="page-header">Directional Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_directional = icons | expand_aliases | category:"Directional Icons" | sort_by:'class' %}
-
- {% for icon in icons_directional %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/file-type.html b/library/font_awesome/src/_includes/icons/file-type.html
deleted file mode 100644
index 290022be1..000000000
--- a/library/font_awesome/src/_includes/icons/file-type.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="file-type">
- <h2 class="page-header">File Type Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_file_type = icons | expand_aliases | category:"File Type Icons" | sort_by:'class' %}
-
- {% for icon in icons_file_type %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/form-control.html b/library/font_awesome/src/_includes/icons/form-control.html
deleted file mode 100644
index a8cac628a..000000000
--- a/library/font_awesome/src/_includes/icons/form-control.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<section id="form-control">
- <h2 class="page-header">Form Control Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_form_control = icons | expand_aliases | category:"Form Control Icons" | sort_by:'class' %}
-
- {% for icon in icons_form_control %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/icons/gender.html b/library/font_awesome/src/_includes/icons/gender.html
deleted file mode 100644
index 1fbde026b..000000000
--- a/library/font_awesome/src/_includes/icons/gender.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="gender">
- <h2 class="page-header">Gender Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_gender = icons | expand_aliases | category:"Gender Icons" | sort_by:'class' %}
-
- {% for icon in icons_gender %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/hand.html b/library/font_awesome/src/_includes/icons/hand.html
deleted file mode 100644
index 4104af2e0..000000000
--- a/library/font_awesome/src/_includes/icons/hand.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="hand">
- <h2 class="page-header">Hand Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_hand = icons | expand_aliases | category:"Hand Icons" | sort_by:'class' %}
-
- {% for icon in icons_hand %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/medical.html b/library/font_awesome/src/_includes/icons/medical.html
deleted file mode 100644
index 23364382a..000000000
--- a/library/font_awesome/src/_includes/icons/medical.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="medical">
- <h2 class="page-header">Medical Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_medical = icons | expand_aliases | category:"Medical Icons" | sort_by:'class' %}
-
- {% for icon in icons_medical %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/new.html b/library/font_awesome/src/_includes/icons/new.html
deleted file mode 100644
index 91a10b3e8..000000000
--- a/library/font_awesome/src/_includes/icons/new.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<section id="new">
- <h2 class="page-header">{{ icons | version:site.fontawesome.minor_version | size }} New Icons in {{ site.fontawesome.minor_version }}</h2>
- {% if page.navbar_active != "icons" %}
- <div class="margin-botom-large">
- You asked, Font Awesome delivers with {{ icons | version:site.fontawesome.minor_version | size }} shiny new icons in version {{ site.fontawesome.minor_version }}.
- Want to request new icons? <a href="{{ page.relative_path }}community/#requesting-new-icons">Here's how</a>.
- </div>
- {% endif %}
-
- <div class="row fontawesome-icon-list">
- {% assign icons_new = icons | expand_aliases | version:site.fontawesome.minor_version | sort_by:'class' %}
-
- {% for icon in icons_new %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/payment.html b/library/font_awesome/src/_includes/icons/payment.html
deleted file mode 100644
index 03a636465..000000000
--- a/library/font_awesome/src/_includes/icons/payment.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="payment">
- <h2 class="page-header">Payment Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_payment = icons | expand_aliases | category:"Payment Icons" | sort_by:'class' %}
-
- {% for icon in icons_payment %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/spinner.html b/library/font_awesome/src/_includes/icons/spinner.html
deleted file mode 100644
index ef9d68e8b..000000000
--- a/library/font_awesome/src/_includes/icons/spinner.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<section id="spinner">
- <h2 class="page-header">Spinner Icons</h2>
-
- <div class="alert alert-success">
- <ul class="fa-ul">
- <li>
- <i class="fa fa-info-circle fa-lg fa-li" aria-hidden="true"></i>
- <strong class="sr-only">Note:</strong>
- These icons work great with the <code>fa-spin</code> class. Check out the
- <a href="{{ page.relative_path }}examples/#animated" class="alert-link">spinning icons example</a>.
- </li>
- </ul>
- </div>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_spinner = icons | expand_aliases | category:"Spinner Icons" | sort_by:'class' %}
-
- {% for icon in icons_spinner %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/icons/text-editor.html b/library/font_awesome/src/_includes/icons/text-editor.html
deleted file mode 100644
index 05d33cb2b..000000000
--- a/library/font_awesome/src/_includes/icons/text-editor.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="text-editor">
- <h2 class="page-header">Text Editor Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_text_editor = icons | expand_aliases | category:"Text Editor Icons" | sort_by:'class' %}
-
- {% for icon in icons_text_editor %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/transportation.html b/library/font_awesome/src/_includes/icons/transportation.html
deleted file mode 100644
index af2fd7e7f..000000000
--- a/library/font_awesome/src/_includes/icons/transportation.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="transportation">
- <h2 class="page-header">Transportation Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_transportation = icons | expand_aliases | category:"Transportation Icons" | sort_by:'class' %}
-
- {% for icon in icons_transportation %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/video-player.html b/library/font_awesome/src/_includes/icons/video-player.html
deleted file mode 100644
index 4a57612d1..000000000
--- a/library/font_awesome/src/_includes/icons/video-player.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="video-player">
- <h2 class="page-header">Video Player Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_video_player = icons | expand_aliases | category:"Video Player Icons" | sort_by:'class' %}
-
- {% for icon in icons_video_player %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/icons/web-application.html b/library/font_awesome/src/_includes/icons/web-application.html
deleted file mode 100644
index 6e737e6cd..000000000
--- a/library/font_awesome/src/_includes/icons/web-application.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<section id="web-application">
- <h2 class="page-header">Web Application Icons</h2>
-
- <div class="row fontawesome-icon-list">
- {% assign icons_web_application = icons | expand_aliases | category:"Web Application Icons" | sort_by:'class' %}
-
- {% for icon in icons_web_application %}
- <div class="fa-hover col-md-3 col-sm-4"><a href="{{ page.relative_path }}icon/{{ icon.id }}"><i class="fa fa-{{ icon.class }}" aria-hidden="true"></i> <span class="sr-only">Example of </span>{{ icon.class }}{% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}</a></div>
- {% endfor %}
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/jumbotron-carousel.html b/library/font_awesome/src/_includes/jumbotron-carousel.html
deleted file mode 100644
index bf938adec..000000000
--- a/library/font_awesome/src/_includes/jumbotron-carousel.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<div class="jumbotron jumbotron-carousel hidden-print">
- <div class="container">
- <div class="row">
- <div class="col-md-8 col-sm-8 text-center">
- <h1>Font Awesome</h1>
- <p>The iconic font and CSS toolkit</p>
- <div class="actions">
- <a class="btn btn-default btn-lg" href="#modal-download" data-toggle="modal"
- onClick="_gaq.push(['_trackEvent', 'Launch Modal', 'Launch Download Modal']);">
- <i class="fa fa-download fa-lg" aria-hidden="true"></i>&nbsp;
- Download
- </a>
- </div>
- <div class="shameless-self-promotion">
- Version {{ site.fontawesome.version }} &nbsp;&nbsp;&middot;&nbsp;&nbsp;
- <a href="{{ site.fontawesome.github.url }}"
- onClick="_gaq.push(['_trackEvent', 'Outbound Link', 'View Project on GitHub']);">
- GitHub Project</a> &nbsp;&nbsp;&middot;&nbsp;&nbsp;
- <a href="{{ page.relative_path }}3.2.1">Old 3.2.1 Docs</a> &nbsp;&nbsp;&middot;&nbsp;&nbsp;
- Created by <a href="http://twitter.com/{{ site.fontawesome.author.twitter }}">Dave Gandy</a>
- </div>
- </div>
- <div class="col-md-4 col-sm-4">
- <div id="icon-carousel" class="carousel slide">
- <!-- Carousel items -->
- <div class="carousel-inner">
- <div class="active item"><div><i class="fa fa-font-awesome" aria-hidden="true"></i><span class="sr-only">flag icon</span></div></div>
- <div class="item"><div><i class="fa fa-handshake-o" aria-hidden="true"></i><span class="sr-only">fort awesome icon</span></div></div>
- <div class="item"><div><i class="fa fa-bath" aria-hidden="true"></i><span class="sr-only">fort awesome icon</span></div></div>
- <div class="item"><div><i class="fa fa-envelope-open-o" aria-hidden="true"></i><span class="sr-only">fort awesome icon</span></div></div>
- <div class="item"><div><i class="fa fa-fort-awesome" aria-hidden="true"></i><span class="sr-only">fort awesome icon</span></div></div>
- <div class="item"><div><i class="fa fa-commenting" aria-hidden="true"></i><span class="sr-only">commenting icon</span></div></div>
- <div class="item"><div><i class="fa fa-map-signs" aria-hidden="true"></i><span class="sr-only">map signs icon</span></div></div>
- <div class="item"><div><i class="fa fa-envelope" aria-hidden="true"></i><span class="sr-only">envelope icon</span></div></div>
- <div class="item"><div><i class="fa fa-send-o" aria-hidden="true"></i><span class="sr-only">send icon</span></div></div>
- <div class="item"><div><i class="fa fa-book" aria-hidden="true"></i><span class="sr-only">book icon</span></div></div>
- <div class="item"><div><i class="fa fa-fighter-jet" aria-hidden="true"></i><span class="sr-only">fighter jet icon</span></div></div>
- <div class="item"><div><i class="fa fa-beer" aria-hidden="true"></i><span class="sr-only">beer icon</span></div></div>
- <div class="item"><div><i class="fa fa-heart-o" aria-hidden="true"></i><span class="sr-only">heart icon</span></div></div>
- <div class="item"><div><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sr-only">thumbs up icon</span></div></div>
- <div class="item"><div><i class="fa fa-pied-piper-alt" aria-hidden="true"></i><span class="sr-only">pied piper icon</span></div></div>
- </div>
- <!-- Carousel nav -->
- <a class="carousel-control left" href="#icon-carousel" data-slide="prev"
- onClick="_gaq.push(['_trackEvent', 'iconCarousel', 'Prev']);">
- <i class="fa fa-arrow-circle-left" aria-hidden="true"></i>
- <span class="sr-only">Previous</span>
- </a>
- <a class="carousel-control right" href="#icon-carousel" data-slide="next"
- onClick="_gaq.push(['_trackEvent', 'iconCarousel', 'Next']);">
- <i class="fa fa-arrow-circle-right" aria-hidden="true"></i>
- <span class="sr-only">Next</span>
- </a>
- </div>
- </div>
- </div>
-
- </div>
-</div>
diff --git a/library/font_awesome/src/_includes/jumbotron.html b/library/font_awesome/src/_includes/jumbotron.html
deleted file mode 100644
index 93920f7a7..000000000
--- a/library/font_awesome/src/_includes/jumbotron.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<div class="jumbotron jumbotron-ad hidden-print">
- <div class="container">
-
- {% if page.in_page_nav %}
- <div class="col-md-9">
- <h1>{{ jumbotron_h1 }}</h1>
- <p>{{ jumbotron_p }}</p>
- </div>
-
- <div class="col-md-3">
- {{ jumbotron_nav }}
- </div>
- {% else %}
- <h1>{{ jumbotron_h1 }}</h1>
- <p>{{ jumbotron_p }}</p>
- {% endif %}
- </div>
-
-</div>
diff --git a/library/font_awesome/src/_includes/modals/download.html b/library/font_awesome/src/_includes/modals/download.html
deleted file mode 100644
index 384620bdc..000000000
--- a/library/font_awesome/src/_includes/modals/download.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<div class="modal fade" id="modal-download" tabindex="-1" role="dialog" aria-labelledby="modal-download-label"
- xmlns="http://www.w3.org/1999/html">
- <div class="modal-dialog" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fa fa-times" aria-hidden="true"></i><span class="close"></span></button>
- <h2 class="modal-title" id="modal-download-label">
- <i class="fa fa-download fa-lg" aria-hidden="true"></i>&nbsp;
- Download
- </h2>
- </div>
- <div class="modal-body">
- <div class="text-lg margin-bottom-lg">
- Before you download, check out our latest project: Fort Awesome&mdash;
- </div>
-
- <div class="row">
- <div class="col-md-6 col-sm-6 margin-bottom-lg">
- <h4 class="page-header margin-top-none padding-bottom-sm margin-bottom-sm">More Sets</h4>
- Font Awesome not the right look? We've got the perfect icon set for your website!
- </div>
- <div class="col-md-6 col-sm-6 margin-bottom-lg">
- <h4 class="page-header margin-top-none padding-bottom-sm margin-bottom-sm">Your Icons</h4>
- Copy &amp; paste your own logo and icons directly into Fort Awesome. Easy peasy.
- </div>
- <div class="col-md-6 col-sm-6 margin-bottom-lg">
- <h4 class="page-header margin-top-none padding-bottom-sm margin-bottom-sm">Fonts Too!</h4>
- Subset and serve your typefaces too! We've got some great ones to start with.
- </div>
- <div class="col-md-6 col-sm-6 margin-bottom-lg">
- <h4 class="page-header margin-top-none padding-bottom-sm margin-bottom-sm">Optimized</h4>
- Subsetting your icons and typefaces often shrinks them by 95% or more!
- </div>
- <div class="col-md-6 col-sm-6 margin-bottom-lg">
- <h4 class="page-header margin-top-none padding-bottom-sm margin-bottom-sm">Hosted</h4>
- No more messing with files! Update and deploy your icons to our CDN.
- </div>
- <div class="col-md-6 col-sm-6 margin-bottom-lg">
- <h4 class="page-header margin-top-none padding-bottom-sm margin-bottom-sm">Faster</h4>
- Optimized and hosted means your icons and typefaces load much faster.
- </div>
- </div>
-
- <a href="https://fortawesome.com/start?utm_source=font_awesome_homepage&utm_medium=display&utm_content=download_modal&utm_campaign=promo_{{ site.fontawesome.minor_version }}_update" class="btn btn-success btn-lg btn-block">
- Take your icon game <br class="visible-xs" />to the next level with
- <h2 class="margin-top-sm margin-bottom-sm hidden-xs"><i class="fas fas-fort-logo fas-lg valign-baseline"></i>&nbsp; Fort Awesome</h2>
- <h3 class="margin-top-sm margin-bottom-sm visible-xs"><i class="fas fas-fort-logo fas-lg valign-baseline"></i>&nbsp; Fort Awesome</h3>
- </a>
- <div class="text-center margin-top-sm margin-bottom-sm">or</div>
- <a class="btn btn-default btn-lg btn-block" href="{{ page.relative_path }}assets/font-awesome-{{ site.fontawesome.version }}.zip"
- onClick="_gaq.push(['_trackEvent', 'Outbound Modal Link', 'Download on GitHub']);">
- No thanks, just download <br class="visible-xs" />Font Awesome
- </a>
-
- </div>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/_includes/modals/kickstarter.html b/library/font_awesome/src/_includes/modals/kickstarter.html
deleted file mode 100644
index 7f6f770eb..000000000
--- a/library/font_awesome/src/_includes/modals/kickstarter.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<div class="modal fade" id="modal-kickstarter" tabindex="-1" role="dialog" aria-labelledby="modal-kickstarter-label"
- xmlns="http://www.w3.org/1999/html">
- <div class="modal-dialog modal-lg" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fa fa-times" aria-hidden="true"></i><span class="close"></span></button>
- <h2 class="modal-title" id="modal-kickstarter-label">
- <i class="fa fa-youtube-play fa-lg" aria-hidden="true"></i>&nbsp; Font Awesome 5!
- </h2>
- </div>
- <div class="modal-body">
-
- <style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
- <div class='embed-container'><iframe src='https://www.youtube.com/embed/CNoH3J7iSrA' frameborder='0' allowfullscreen></iframe></div>
-
- <a class="btn btn-kickstarter btn-lg btn-block margin-top" href="http://five.fontawesome.io/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=kickstarter_modal&utm_campaign=promo_4.7_update"
- onClick="_gaq.push(['_trackEvent', 'Outbound Modal Link', 'Check out the Kickstarter']);">
- <h3 class="margin text-sans-serif strong">Check out the <br class="hide-sm hide-md hide-lg">Kickstarter! &nbsp;<i class="fa fa-external-link-square" aria-hidden="true"></i></h3>
- </a>
-
- </div>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/_includes/navbar.html b/library/font_awesome/src/_includes/navbar.html
deleted file mode 100644
index 97f4dc789..000000000
--- a/library/font_awesome/src/_includes/navbar.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<div class="collapse hidden-print" id="banner">
- <div class="container">
- <div class="message-container">
- <div class="tagline">
- <span id="rotating-message"></span>
- </div>
- <div class="action">
- <a id="rotating-url" class="btn btn-primary btn-lg btn-block" href=""></a>
- </div>
- </div>
- </div>
-</div>
-
-<div class="navbar navbar-org navbar-static-top">
- <div class="container">
- <ul class="nav navbar-nav navbar-right">
- <li>
- <a href="http://fortawesome.com/start?utm_source=font_awesome_navbar&utm_medium=display&utm_content=font_awesome_navbar&utm_campaign=promo_{{ site.fontawesome.minor_version }}_update" data-toggle="tooltip" data-container="body" data-placement="bottom" data-html="true" title="Take your front end game<br>to the next level!">
- <i class="fa fa-fort-awesome fa-lg valign-baseline"></i>&nbsp;
- Fort Awesome
- </a>
- </li>
- <li>
- <a href="http://symbolset.com/?utm_source=font_awesome_navbar&utm_medium=display&utm_content=font_awesome_navbar&utm_campaign=promo_{{ site.fontawesome.minor_version }}_update" data-toggle="tooltip" data-container="body" data-placement="bottom" data-html="true" title="Get the perfect icon set!">
- <i class="fas fas-heart-ss"></i>&nbsp;
- Symbolset
- </a>
- </li>
- <li class="active">
- <a href="http://fontawesome.io/?utm_source=font_awesome_navbar&utm_medium=display&utm_content=font_awesome_navbar&utm_campaign=promo_{{ site.fontawesome.minor_version }}_update" data-toggle="tooltip" data-container="body" data-placement="bottom" data-html="true" title="The iconic font<br>&amp; CSS toolkit">
- <i class="fa fa-font-awesome"></i>&nbsp;
- Font Awesome</a>
- </li>
- </ul>
- <div class="navbar-text navbar-right hide-xs">Build and serve a faster front end!</div>
- </div>
-</div>
-
-<div class="navbar navbar-inverse navbar-static-top hidden-print">
- <div class="container">
- <div class="navbar-header">
- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
- <i class="fa fa-bars fa-lg" aria-hidden="true" title="Toggle navigation"></i>
- <span class="sr-only">Toggle navigation</span>
- </button>
- <a class="navbar-brand" href="{{ page.relative_path }}"><i class="fa fa-font-awesome" aria-hidden="true"></i> Font Awesome</a>
- </div>
-
- <div class="navbar-collapse collapse">
- <ul class="nav navbar-nav">
- <li class="hidden-sm {% if page.navbar_active == "home" %} active{% endif %}"><a href="{{ page.relative_path }}">Home</a></li>
- <li class="hidden-sm{% if page.navbar_active == "whats-new" %} active{% endif %}">
- <a href="{{ page.relative_path }}whats-new/">What's New</a>
- </li>
- <li class="hidden-xs hidden-md hidden-lg{% if page.navbar_active == "whats-new" %} active{% endif %}">
- <a href="{{ page.relative_path }}whats-new/">New</a>
- </li>
-
- <li class="hidden-sm{% if page.navbar_active == "get-started" %} active{% endif %}"><a href="{{ page.relative_path }}get-started/">Get Started</a></li>
- <li class="hidden-xs hidden-md hidden-lg{% if page.navbar_active == "get-started" %} active{% endif %}">
- <a href="{{ page.relative_path }}get-started/">Start</a>
- </li>
-
- <li class="dropdown-split-left{% if page.navbar_active == "icons" %} active{% endif %}"><a href="{{ page.relative_path }}icons/">Icons</a></li>
- <li class="dropdown dropdown-split-right hidden-xs{% if page.navbar_active == "icons" %} active{% endif %}">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="fa fa-caret-down" aria-hidden="true" title="Toggle dropdown menu"></i>
- <span class="sr-only">Toggle dropdown menu</span>
- <span class="toggle drop down"></span>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="{{ page.relative_path }}icons/"><i class="fa fa-flag fa-fw" aria-hidden="true"></i>&nbsp; All Icons</a></li>
- <li class="divider"></li>
- <li><a href="{{ page.relative_path }}icons/#new"><i class="fa fa-handshake-o fa-fw" aria-hidden="true"></i>&nbsp; New Icons in {{ site.fontawesome.minor_version }}</a></li>
- <li><a href="{{ page.relative_path }}icons/#web-application"><i class="fa fa-camera-retro fa-fw" aria-hidden="true"></i>&nbsp; Web Application Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#accessibility"><i class="fa fa-universal-access fa-fw" aria-hidden="true"></i>&nbsp; Accessibility Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#hand"><i class="fa fa-hand-spock-o fa-fw" aria-hidden="true"></i>&nbsp; Hand Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#transportation"><i class="fa fa-ship fa-fw" aria-hidden="true"></i>&nbsp; Transportation Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#gender"><i class="fa fa-venus fa-fw" aria-hidden="true"></i>&nbsp; Gender Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#file-type"><i class="fa fa-file-image-o fa-fw" aria-hidden="true"></i>&nbsp; File Type Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#spinner"><i class="fa fa-spinner fa-fw" aria-hidden="true"></i>&nbsp; Spinner Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#form-control"><i class="fa fa-check-square fa-fw" aria-hidden="true"></i>&nbsp; Form Control Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#payment"><i class="fa fa-credit-card fa-fw" aria-hidden="true"></i>&nbsp; Payment Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#chart"><i class="fa fa-pie-chart fa-fw" aria-hidden="true"></i>&nbsp; Chart Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#currency"><i class="fa fa-won fa-fw" aria-hidden="true"></i>&nbsp; Currency Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#text-editor"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Text Editor Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#directional"><i class="fa fa-arrow-right fa-fw" aria-hidden="true"></i>&nbsp; Directional Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#video-player"><i class="fa fa-play-circle fa-fw" aria-hidden="true"></i>&nbsp; Video Player Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#brand"><i class="fa fa-facebook-official fa-fw" aria-hidden="true"></i>&nbsp; Brand Icons</a></li>
- <li><a href="{{ page.relative_path }}icons/#medical"><i class="fa fa-medkit fa-fw" aria-hidden="true"></i>&nbsp; Medical Icons</a></li>
- </ul>
- </li>
- <li class="dropdown-split-left{% if page.navbar_active == "examples" %} active{% endif %}"><a href="{{ page.relative_path }}examples/">Examples</a></li>
- <li class="dropdown dropdown-split-right hidden-xs{% if page.navbar_active == "examples" %} active{% endif %}">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <i class="fa fa-caret-down" aria-hidden="true" title="Toggle dropdown menu"></i>
- <span class="sr-only">Toggle dropdown menu</span>
- <span class="toggle drop down"></span>
- </a>
- <ul class="dropdown-menu pull-right">
- <li><a href="{{ page.relative_path }}examples/">Examples</a></li>
- <li class="divider"></li>
- <li><a href="{{ page.relative_path }}examples/#basic">Basic Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#larger">Larger Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#fixed-width">Fixed Width Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#list">List Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#bordered-pulled">Bordered & Pulled Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#animated">Animated Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#accessible">Accessibility-Minded</a></li>
- <li><a href="{{ page.relative_path }}examples/#rotated-flipped">Rotated &amp; Flipped Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#stacked">Stacked Icons</a></li>
- <li><a href="{{ page.relative_path }}examples/#bootstrap">Bootstrap 3 Examples</a></li>
- <li><a href="{{ page.relative_path }}examples/#custom">Custom CSS</a></li>
- </ul>
- </li>
- <li class="hidden-sm{% if page.navbar_active == "accessibility" %} active{% endif %}"><a href="{{ page.relative_path }}accessibility/">Accessibility</a></li>
- <li class="hidden-xs hidden-md hidden-lg{% if page.navbar_active == "accessibility" %} active{% endif %}"><a href="{{ page.relative_path }}accessibility/"><i class="fa fa-universal-access"></i></a></li>
- <li{% if page.navbar_active == "community" %} class="active"{% endif %}><a href="{{ page.relative_path }}community/">Community</a></li>
- <li{% if page.navbar_active == "license" %} class="active"{% endif %}><a href="{{ page.relative_path }}license/">License</a></li>
- </ul>
-
- <ul class="nav navbar-nav navbar-right">
- <li><a href="{{ site.fontawesome.blog_url }}">Blog</a></li>
- </ul>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/_includes/new-features.html b/library/font_awesome/src/_includes/new-features.html
deleted file mode 100644
index e8d46f1c1..000000000
--- a/library/font_awesome/src/_includes/new-features.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-<section id="whats-new" class="feature-list">
- <div class="row">
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-file-text-o" aria-hidden="true"></i> Completely Rewritten</h4>
- Everything re-written from the ground up for speed and simplicity.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-fighter-jet" aria-hidden="true"></i> CSS Best Practices</h4>
- New icon base class allows simpler CSS, faster rendering, and easier control.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-terminal" aria-hidden="true"></i> New Icon Names</h4>
- Icons have been renamed to improve consistency and predictability.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-thumbs-o-up" aria-hidden="true"></i> Bootstrap 3</h4>
- Font Awesome {{ site.fontawesome.minor_version }} is fully tested and compatible with Bootstrap 3.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-code" aria-hidden="true"></i> Better Compatibility</h4>
- Font Awesome is now more compatible with all web frameworks, including Foundation.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-rub" aria-hidden="true"></i> {{ icons | version:site.fontawesome.minor_version | size }} New Icons in {{ site.fontawesome.minor_version }}</h4>
- Requested by the active community on the <a href="{{ site.fontawesome.github.url }}">Font Awesome GitHub project</a>.
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/new-naming.html b/library/font_awesome/src/_includes/new-naming.html
deleted file mode 100644
index 9777649a6..000000000
--- a/library/font_awesome/src/_includes/new-naming.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<section id="new-naming">
- <h2 class="page-header">New Naming Conventions in {{ site.fontawesome.minor_version }}</h2>
- <p class="lead text-center alert alert-success">fa-[name]-[shape]-[o]-[direction]</p>
- <p>
- A desire for better icon naming <strong>consistency</strong> and <strong>predictability</strong> are at the heart
- of the changes in naming conventions. Once you know the name of the base icon shape, you should be able to predict
- the names of variants.
- </p>
- <div class="row">
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">fa-*</h4>
- <p class="margin-bottom-sm">Solid icons as the base variant</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-bookmark fa-li" aria-hidden="true"></i>
- fa-bookmark
- </li>
- <li>
- <i class="fa fa-comment fa-li" aria-hidden="true"></i>
- fa-comment
- </li>
- <li>
- <i class="fa fa-folder fa-li" aria-hidden="true"></i>
- fa-folder
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">*-o</h4>
- <p class="margin-bottom-sm">Outlined version of previous modifier</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-bookmark-o fa-li" aria-hidden="true"></i>
- fa-bookmark-o
- </li>
- <li>
- <i class="fa fa-comment-o fa-li" aria-hidden="true"></i>
- fa-comment-o
- </li>
- <li>
- <i class="fa fa-folder-o fa-li" aria-hidden="true"></i>
- fa-folder-o
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">*-circle</h4>
- <p class="margin-bottom-sm">Circle under previous modifier</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-check-circle fa-li" aria-hidden="true"></i>
- fa-check-circle
- </li>
- <li>
- <i class="fa fa-exclamation-circle fa-li" aria-hidden="true"></i>
- fa-exclamation-circle
- </li>
- <li>
- <i class="fa fa-plus-circle fa-li" aria-hidden="true"></i>
- fa-plus-circle
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">*-square</h4>
- <p class="margin-bottom-sm">Square under previous modifier</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-check-square fa-li" aria-hidden="true"></i>
- fa-check-square
- </li>
- <li>
- <i class="fa fa-twitter-square fa-li" aria-hidden="true"></i>
- fa-twitter-square
- </li>
- <li>
- <i class="fa fa-plus-square fa-li" aria-hidden="true"></i>
- fa-plus-square
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">*-right, *-up, etc.</h4>
- <p class="margin-bottom-sm">Directional modifier always at the end</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-arrow-right fa-li" aria-hidden="true"></i>
- fa-arrow-right
- </li>
- <li>
- <i class="fa fa-arrow-circle-right fa-li" aria-hidden="true"></i>
- fa-arrow-circle-right
- </li>
- <li>
- <i class="fa fa-angle-double-right fa-li" aria-hidden="true"></i>
- fa-angle-double-right
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">*-alt</h4>
- <p class="margin-bottom-sm">Alternative to the original</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-unlock-alt fa-li" aria-hidden="true"></i>
- fa-unlock-alt
- </li>
- <li>
- <i class="fa fa-list-alt fa-li" aria-hidden="true"></i>
- fa-list-alt
- </li>
- <li>
- <i class="fa fa-github-alt fa-li" aria-hidden="true"></i>
- fa-github-alt
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">*-h, *-v</h4>
- <p class="margin-bottom-sm">Horizontal &amp; vertical modifiers</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-arrows-v fa-li" aria-hidden="true"></i>
- fa-arrows-v
- </li>
- <li>
- <i class="fa fa-arrows-h fa-li" aria-hidden="true"></i>
- fa-arrows-h
- </li>
- <li>
- <i class="fa fa-ellipsis-v fa-li" aria-hidden="true"></i>
- fa-ellipsis-v
- </li>
- </ul>
- </div>
- <div class="col-lg-3 col-md-4 col-sm-6">
- <h4 class="margin-bottom-sm">Combine 'em up&helip;</h4>
- <p class="margin-bottom-sm">Consistent when strung together</p>
- <ul class="fa-ul padding-left-sm">
- <li>
- <i class="fa fa-arrow-circle-o-right fa-li" aria-hidden="true"></i>
- fa-arrow-circle-o-right
- </li>
- <li>
- <i class="fa fa-caret-square-o-right fa-li" aria-hidden="true"></i>
- fa-caret-square-o-right
- </li>
- <li>
- <i class="fa fa-hand-o-right fa-li" aria-hidden="true"></i>
- fa-hand-o-right
- </li>
- </ul>
- </div>
-
- </div>
-
-</section>
diff --git a/library/font_awesome/src/_includes/new-upgrading.html b/library/font_awesome/src/_includes/new-upgrading.html
deleted file mode 100644
index 5d2d88d93..000000000
--- a/library/font_awesome/src/_includes/new-upgrading.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<section id="new-upgrading">
- <h2 class="page-header">Upgrading from 3.2.1?</h2>
- <p>
- For complete documentation of the syntax changes in {{ site.fontawesome.minor_version }}, check out the
- <a href="{{ page.relative_path }}examples">examples</a>. For the changes to icon names,
- <a href="https://twitter.com/gtagliala">@gtagliala</a> has put together a
- <a href="{{ site.fontawesome.github.url }}/wiki/Upgrading-from-3.2.1-to-4">great wiki page</a> that
- documents all the changes.
- </p>
-</section>
diff --git a/library/font_awesome/src/_includes/products/camera-retro-tee.html b/library/font_awesome/src/_includes/products/camera-retro-tee.html
deleted file mode 100644
index 4f6ff4dc9..000000000
--- a/library/font_awesome/src/_includes/products/camera-retro-tee.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<a class="product" href="http://www.amazon.com/Camera-Retro-T-shirt-Small-Asphalt/dp/B01ELWGV14">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="camera-asphalt">
- <img src="http://ecx.images-amazon.com/images/I/81mzUUTrfYL._UX679_.jpg">
- </div>
- <div class="tab-pane" id="camera-kelly-green">
- <img src="http://ecx.images-amazon.com/images/I/81AihmIpmUL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#camera-asphalt" data-toggle="tab"><span class="swatch swatch-asphalt" title="Asphalt"></span><span class="sr-only"> Asphalt</span></span></li>
- <li><span data-target="#camera-kelly-green" data-toggle="tab"><span class="swatch swatch-kellygreen" title="Kelly Green"></span> <span class="sr-only"> Kelly Green</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Camera Retro Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/classics-tee.html b/library/font_awesome/src/_includes/products/classics-tee.html
deleted file mode 100644
index 458f34ac2..000000000
--- a/library/font_awesome/src/_includes/products/classics-tee.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<a class="product" href="http://www.amazon.com/Mens-Classics-T-shirt-Small-Navy/dp/B01ELY5MT4">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="classics-kelly-green">
- <img src="http://ecx.images-amazon.com/images/I/81nYbDVxo8L._UX679_.jpg">
- </div>
- <div class="tab-pane" id="classics-navy">
- <img src="http://ecx.images-amazon.com/images/I/81MMb-JjRNL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#classics-kelly-green" data-toggle="tab"><span class="swatch swatch-kellygreen" title="Kelly Green"></span> <span class="sr-only"> Kelly Green</span></span></li>
- <li><span data-target="#classics-navy" data-toggle="tab"><span class="swatch swatch-navy"></span><span class="sr-only" title="Navy"> Navy</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Classics Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/cta-suggestions.html b/library/font_awesome/src/_includes/products/cta-suggestions.html
deleted file mode 100644
index 09f703c0d..000000000
--- a/library/font_awesome/src/_includes/products/cta-suggestions.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<div class="product-cta">
- <h3 class="cta-title">Have Ideas or Requests?</h3>
-
- <div class="cta-content">
- <p>
- Got a great idea for a Font Awesome goodie or shirt? Don't see your favorite icon in a wear-able or share-able format?
- </p>
-
- <p>
- We're all ears! Spend a few minutes and let us know what you'd want. If we end up using your idea, we'll send you a free copy.
- </p>
- </div>
-
- <a class="btn btn-success btn-block btn-lg" href="mailto:suggestions@fortawesome.com?subject=I have a store idea!">Make a Store Suggestion!</a>
-
-
- <p class="text-muted cta-fine-print">
- Please note: While we appreciate all suggestions, not every idea might be right for Font Awesome nor could we physically make every idea.
- </p>
-</div>
diff --git a/library/font_awesome/src/_includes/products/fa-ther-tee.html b/library/font_awesome/src/_includes/products/fa-ther-tee.html
deleted file mode 100644
index 7699d6bbf..000000000
--- a/library/font_awesome/src/_includes/products/fa-ther-tee.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<a class="product" href="http://www.amazon.com/Father-T-shirt-Small-Kelly-Green/dp/B01ELXTKW0">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="father-kelly-green">
- <img src="http://ecx.images-amazon.com/images/I/81QUekkdt7L._UX679_.jpg">
- </div>
- <div class="tab-pane" id="father-navy">
- <img src="http://ecx.images-amazon.com/images/I/817wsSl9ScL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#father-kelly-green" data-toggle="tab"><span class="swatch swatch-kellygreen" title="Kelly Green"></span> <span class="sr-only"> Kelly Green</span></span></li>
- <li><span data-target="#father-navy" data-toggle="tab"><span class="swatch swatch-navy" title="Navy"></span><span class="sr-only"> Navy</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Fa-ther Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/green-logo-tee.html b/library/font_awesome/src/_includes/products/green-logo-tee.html
deleted file mode 100644
index 9226a5497..000000000
--- a/library/font_awesome/src/_includes/products/green-logo-tee.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<a class="product" href="http://www.amazon.com/Mens-Schmancy-Green-Small-Black/dp/B01ELYOYY8">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="green-logo-black">
- <img src="http://ecx.images-amazon.com/images/I/715simtOAGL._UX679_.jpg">
- </div>
- <div class="tab-pane" id="green-logo-kelly-green">
- <img src="http://ecx.images-amazon.com/images/I/81Y2BFVgUAL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#green-logo-black" data-toggle="tab"><span class="swatch swatch-navy" title="Navy"></span><span class="sr-only"> Navy</span></span></li>
- <li><span data-target="#green-logo-kelly-green" data-toggle="tab"><span class="swatch swatch-kellygreen" title="Kelly Green"></span> <span class="sr-only"> Kelly Green</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Green Logo Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/old-skool-tee.html b/library/font_awesome/src/_includes/products/old-skool-tee.html
deleted file mode 100644
index 4fff5b9f6..000000000
--- a/library/font_awesome/src/_includes/products/old-skool-tee.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<a class="product" href="http://www.amazon.com/Mens-Skool-T-shirt-Small-Navy/dp/B01ELWVHJ0">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="old-skool-kelly-green">
- <img src="http://ecx.images-amazon.com/images/I/812ghxTnRrL._UX679_.jpg">
- </div>
- <div class="tab-pane" id="old-skool-navy">
- <img src="http://ecx.images-amazon.com/images/I/819SDvnOv8L._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#old-skool-kelly-green" data-toggle="tab"><span class="swatch swatch-kellygreen" title="Kelly Green"></span> <span class="sr-only"> Kelly Green</span></span></li>
- <li><span data-target="#old-skool-navy" data-toggle="tab"><span class="swatch swatch-navy" title="Navy"></span><span class="sr-only"> Navy</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Old Skool Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/rock-paper-scissors-lizard-spock-tee.html b/library/font_awesome/src/_includes/products/rock-paper-scissors-lizard-spock-tee.html
deleted file mode 100644
index 294123171..000000000
--- a/library/font_awesome/src/_includes/products/rock-paper-scissors-lizard-spock-tee.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<a class="product" href="http://www.amazon.com/Paper-Scissors-Lizard-Spock-T-shirt/dp/B01ELX6N7U">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="rpsls-blue">
- <img src="http://ecx.images-amazon.com/images/I/81AqlTK02KL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#rpsls-blue" data-toggle="tab"><span class="swatch swatch-royalblue" title="Royal Blue"></span><span class="sr-only"> Royal Blue</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Rock Paper Scissors Lizard Spock Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/space-shuttle-tee.html b/library/font_awesome/src/_includes/products/space-shuttle-tee.html
deleted file mode 100644
index ddac55331..000000000
--- a/library/font_awesome/src/_includes/products/space-shuttle-tee.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<a class="product" href="http://www.amazon.com/Space-Shuttle-T-shirt-Small-Black/dp/B01ELRXO14">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="shuttle-black">
- <img src="http://ecx.images-amazon.com/images/I/71e4BRlSOML._UX679_.jpg">
- </div>
- <div class="tab-pane" id="shuttle-navy">
- <img src="http://ecx.images-amazon.com/images/I/81U%2BSAV23IL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#shuttle-black" data-toggle="tab"><span class="swatch swatch-black" title="Black"></span><span class="sr-only"> Black</span></span></li>
- <li><span data-target="#shuttle-navy" data-toggle="tab"><span class="swatch swatch-navy" title="Navy"></span><span class="sr-only"> Navy</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0 padding-right-sm">Space Shuttle Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/products/white-logo-tee.html b/library/font_awesome/src/_includes/products/white-logo-tee.html
deleted file mode 100644
index bd4ac26c3..000000000
--- a/library/font_awesome/src/_includes/products/white-logo-tee.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<a class="product" href="http://www.amazon.com/Mens-Schmancy-White-T-shirt-Small/dp/B01ELYG428">
- <div class="product-sizes">
- <span class="sr-only">Available in the following sizes: </span>
- <i class="fa fa-male" title="Men"></i>
- <i class="fa fa-female" title="Women"></i>
- <i class="fa fa-child" title="Kids"></i>
- </div>
- <div class="tab-content">
- <div class="tab-pane active" id="white-logo-kelly-green">
- <img src="http://ecx.images-amazon.com/images/I/81fPcfH8KkL._UX679_.jpg">
- </div>
- <div class="tab-pane" id="white-logo-navy">
- <img src="http://ecx.images-amazon.com/images/I/81wt4C6gBlL._UX679_.jpg">
- </div>
- <div class="tab-pane" id="white-logo-silver">
- <img src="http://ecx.images-amazon.com/images/I/71pEdMm86PL._UX679_.jpg">
- </div>
- </div>
-
- <ul class="list-inline text-center margin-bottom-0">
- <li class="active"><span data-target="#white-logo-kelly-green" data-toggle="tab"><span class="swatch swatch-kellygreen" title="Kelly Green"></span> <span class="sr-only"> Kelly Green</span></span></li>
- <li><span data-target="#white-logo-navy" data-toggle="tab"><span class="swatch swatch-navy" title="Navy"></span><span class="sr-only"> Navy</span></span></li>
- <li><span data-target="#white-logo-silver" data-toggle="tab"><span class="swatch swatch-silver" title="Silver"></span><span class="sr-only"> Silver</span></span></li>
- </ul>
-
- <hr />
-
- <div class="gg margin-bottom-sm">
- <h3 class="gg-col product-title margin-top-0 margin-bottom-0">White Logo Tee</h3>
- <h3 class="gg-col text-right text-success margin-top-0 margin-bottom-0">$28</h3>
- </div>
- <div class="text-muted">
- American Apparel Fine Jersey Short Sleeve T-Shirt
- </div>
-</a>
diff --git a/library/font_awesome/src/_includes/stripe-ad.html b/library/font_awesome/src/_includes/stripe-ad.html
deleted file mode 100644
index 8aa93e971..000000000
--- a/library/font_awesome/src/_includes/stripe-ad.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<section class="hidden-print">
- <div class="stripe-ad">
- {% include ads/fusion.html %}
- {{ stripe_ad_content }}
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/stripe-social.html b/library/font_awesome/src/_includes/stripe-social.html
deleted file mode 100644
index 9529bbd96..000000000
--- a/library/font_awesome/src/_includes/stripe-social.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<div id="social-buttons" class="hidden-print">
- <div class="container">
- <form id="newsletter" method="post" action="https://formkeep.com/f/ba101f5b69f0">
- <div class="row">
- <div class="col-md-4 col-md-offset-2 col-sm-6">
- <div class="form-group margin-bottom">
- <input name="email" type="email" class="form-control" id="email" placeholder="Enter your email address&hellip;" required>
- </div>
- </div>
- <div class="col-md-4 col-sm-6">
- <button type="submit" class="btn btn-success btn-block margin-bottom-lg"
- data-toggle="popover" data-trigger="hover" data-placement="top" title="Stay up to date with the Awesome"
- data-content="We'll send you updates on new Font Awesome releases, icons, and other stuff that we're working on. We won't spam you. Scout's honor.">
- Subscribe to Font Awesome Updates&nbsp;&nbsp;<i class="fa fa-envelope" aria-hidden="true"></i>
- </button>
- </div>
- </div>
- </form>
-
- <ul class="list-inline">
- <li>
- <iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
- </li>
- <li>
- <iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user=FortAwesome&repo=Font-Awesome&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
- </li>
- <li class="follow-btn">
- <a href="https://twitter.com/{{ site.fontawesome.twitter }}" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @{{ site.fontawesome.twitter }}</a>
- </li>
- <li class="tweet-btn hidden-phone">
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="{{ site.fontawesome.url }}" data-text="Font Awesome, the iconic font and CSS framework" data-counturl="{{ site.fontawesome.legacy_url }}" data-count="horizontal" data-via="{{ site.fontawesome.twitter }}" data-related="{{ site.fontawesome.author.twitter }}:Creator of Font Awesome">Tweet</a>
- </li>
- </ul>
- </div>
-</div>
diff --git a/library/font_awesome/src/_includes/tell-me-thanks.html b/library/font_awesome/src/_includes/tell-me-thanks.html
deleted file mode 100644
index 19e4d502f..000000000
--- a/library/font_awesome/src/_includes/tell-me-thanks.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<section id="tell-me-thanks">
- <h2 class="page-header">Tell Me Thanks</h2>
- <p class="lead">
- Hopefully you think Font Awesome <em>is</em> awesome. I've put hundreds of hours into the project to give back to the
- open source community. If you'd like, here are a couple of ways you can tell me thanks for all my hard work.
- </p>
- <div class="row">
- <div class="col-md-6 col-sm-6">
- <h3><a href="https://www.gittip.com/davegandy/"><i class="fa fa-gittip padding-right-sm" aria-hidden="true"></i>Tip me on Gittip</a></h3>
- <p>
- Gittip is a great way to let developers know you appreciate their work.
- </p>
- </div>
- <div class="col-md-6 col-sm-6">
- <h3><a href="http://amzn.com/w/G64X58AY416W" target="_blank">My Amazon Wish List</a></h3>
- <p>
- Or pick something straight
- from <a href="http://amzn.com/w/G64X58AY416W" target="_blank">my wish list</a>. Gift cards are great.
- </p>
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/tests/rotated-flipped-inside-anchor.html b/library/font_awesome/src/_includes/tests/rotated-flipped-inside-anchor.html
deleted file mode 100644
index 2c48c0ef4..000000000
--- a/library/font_awesome/src/_includes/tests/rotated-flipped-inside-anchor.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<a href="#"><i class="fa fa-flag" aria-hidden="true"></i>&nbsp; normal</a><br>
-<a href="#"><i class="fa fa-flag fa-rotate-90" aria-hidden="true"></i>&nbsp; fa-rotate-90</a><br>
-<a href="#"><i class="fa fa-flag fa-rotate-180" aria-hidden="true"></i>&nbsp; fa-rotate-180</a><br>
-<a href="#"><i class="fa fa-flag fa-rotate-270" aria-hidden="true"></i>&nbsp; fa-rotate-270</a><br>
-<a href="#"><i class="fa fa-flag fa-flip-horizontal" aria-hidden="true"></i>&nbsp; fa-flip-horizontal</a><br>
-<a href="#"><i class="fa fa-flag fa-flip-vertical" aria-hidden="true"></i>&nbsp; fa-flip-vertical</a>
diff --git a/library/font_awesome/src/_includes/tests/rotated-flipped-inside-btn.html b/library/font_awesome/src/_includes/tests/rotated-flipped-inside-btn.html
deleted file mode 100644
index 9399fc311..000000000
--- a/library/font_awesome/src/_includes/tests/rotated-flipped-inside-btn.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<a class="btn btn-default" href="#"><i class="fa fa-flag" aria-hidden="true"></i>&nbsp; normal</a><br>
-<a class="btn btn-default" href="#"><i class="fa fa-flag fa-rotate-90" aria-hidden="true"></i>&nbsp; fa-rotate-90</a><br>
-<a class="btn btn-default" href="#"><i class="fa fa-flag fa-rotate-180" aria-hidden="true"></i>&nbsp; fa-rotate-180</a><br>
-<a class="btn btn-default" href="#"><i class="fa fa-flag fa-rotate-270" aria-hidden="true"></i>&nbsp; fa-rotate-270</a><br>
-<a class="btn btn-default" href="#"><i class="fa fa-flag fa-flip-horizontal" aria-hidden="true"></i>&nbsp; fa-flip-horizontal</a><br>
-<a class="btn btn-default" href="#"><i class="fa fa-flag fa-flip-vertical" aria-hidden="true"></i>&nbsp; fa-flip-vertical</a>
diff --git a/library/font_awesome/src/_includes/tests/rotated-flipped.html b/library/font_awesome/src/_includes/tests/rotated-flipped.html
deleted file mode 100644
index 7f12a77ef..000000000
--- a/library/font_awesome/src/_includes/tests/rotated-flipped.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<i class="fa fa-flag" aria-hidden="true"></i>&nbsp; normal<br>
-<i class="fa fa-flag fa-rotate-90" aria-hidden="true"></i>&nbsp; fa-rotate-90<br>
-<i class="fa fa-flag fa-rotate-180" aria-hidden="true"></i>&nbsp; fa-rotate-180<br>
-<i class="fa fa-flag fa-rotate-270" aria-hidden="true"></i>&nbsp; fa-rotate-270<br>
-<i class="fa fa-flag fa-flip-horizontal" aria-hidden="true"></i>&nbsp; fa-flip-horizontal<br>
-<i class="fa fa-flag fa-flip-vertical" aria-hidden="true"></i>&nbsp; fa-flip-vertical
diff --git a/library/font_awesome/src/_includes/tests/stacked-inside-anchor.html b/library/font_awesome/src/_includes/tests/stacked-inside-anchor.html
deleted file mode 100644
index 04a6b31d2..000000000
--- a/library/font_awesome/src/_includes/tests/stacked-inside-anchor.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<p>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
- </span>
- Twitter Icon
- </a>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-facebook-f fa-stack-1x fa-inverse"></i>
- </span>
- Facebook Icon
- </a>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-github fa-stack-1x fa-inverse"></i>
- </span>
- GitHub Icon
- </a>
-</p>
-<p>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
- </span>
- Twitter Icon
- </a>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-facebook-f fa-stack-1x fa-inverse"></i>
- </span>
- Facebook Icon
- </a>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-github fa-stack-1x fa-inverse"></i>
- </span>
- GitHub Icon
- </a>
-</p>
-<p>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle-o fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x"></i>
- </span>
- Twitter Icon
- </a>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle-o fa-stack-2x"></i>
- <i class="fa fa-facebook-f fa-stack-1x"></i>
- </span>
- Facebook Icon
- </a>
- <a href="#">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle-o fa-stack-2x"></i>
- <i class="fa fa-github fa-stack-1x"></i>
- </span>
- GitHub Icon
- </a>
-</p>
diff --git a/library/font_awesome/src/_includes/tests/stacked-with-text.html b/library/font_awesome/src/_includes/tests/stacked-with-text.html
deleted file mode 100644
index 28a7500c8..000000000
--- a/library/font_awesome/src/_includes/tests/stacked-with-text.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<span class="fa-stack" aria-hidden="true">
- <i class="fa fa-calendar-o fa-stack-2x"></i>
- <span class="fa-stack-1x padding-top-sm">27</span>
-</span>
diff --git a/library/font_awesome/src/_includes/tests/stacked.html b/library/font_awesome/src/_includes/tests/stacked.html
deleted file mode 100644
index 4d0040759..000000000
--- a/library/font_awesome/src/_includes/tests/stacked.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<span style="border: solid 1px #d3d3d3; display: inline-block; text-align: center">
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
- </span><br>Center
-</span>
-<hr>
-<p>
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
- </span>
- Twitter Icon
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-facebook-f fa-stack-1x fa-inverse"></i>
- </span>
- Facebook Icon
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-square fa-stack-2x"></i>
- <i class="fa fa-github fa-stack-1x fa-inverse"></i>
- </span>
- GitHub Icon
-</p>
-<p>
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
- </span>
- Twitter Icon
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-facebook-f fa-stack-1x fa-inverse"></i>
- </span>
- Facebook Icon
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle fa-stack-2x"></i>
- <i class="fa fa-github fa-stack-1x fa-inverse"></i>
- </span>
- GitHub Icon
-</p>
-<p>
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle-o fa-stack-2x"></i>
- <i class="fa fa-twitter fa-stack-1x"></i>
- </span>
- Twitter Icon
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle-o fa-stack-2x"></i>
- <i class="fa fa-facebook-f fa-stack-1x"></i>
- </span>
- Facebook Icon
- <span class="fa-stack" aria-hidden="true">
- <i class="fa fa-circle-o fa-stack-2x"></i>
- <i class="fa fa-github fa-stack-1x"></i>
- </span>
- GitHub Icon
-</p>
diff --git a/library/font_awesome/src/_includes/thanks-to.html b/library/font_awesome/src/_includes/thanks-to.html
deleted file mode 100644
index 8aebf591c..000000000
--- a/library/font_awesome/src/_includes/thanks-to.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<section id="thanks-to">
- <h2 class="page-header">Thanks To</h2>
- <div class="row">
- <div class="col-md-4 col-sm-4">
- <p>
- Thanks to <a href="https://twitter.com/robmadole/">@robmadole</a> and
- <a href="https://twitter.com/supercodepoet/">@supercodepoet</a> for icon design
- review, advice, some Jekyll help, and being all around badass coders.
- </p>
- </div>
- <div class="col-md-4 col-sm-4">
- <p>
- HUGE thanks to <a href="https://twitter.com/gtagliala">@gtagliala</a> for doing such a fantastic job managing
- pull requests and issues on the Font Awesome
- <a href="{{ site.fontawesome.github.url }}">GitHub project</a>.
- </p>
- </div>
- <div class="col-md-4 col-sm-4">
- <p>
- Thanks to <a href="http://tracking.maxcdn.com/c/148092/3982/378"><i class="fa fa-maxcdn" aria-hidden="true">&nbsp;</i>MaxCDN</a> for providing the excellent
- <a href="https://www.bootstrapcdn.com/fontawesome/">BootstrapCDN</a>, the fastest and easiest way to
- <a href="{{ page.relative_path }}get-started/#bootstrapcdn">get started</a> with Font Awesome.
- </p>
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_includes/why.html b/library/font_awesome/src/_includes/why.html
deleted file mode 100644
index 1574d2c6c..000000000
--- a/library/font_awesome/src/_includes/why.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<section id="why" class="feature-list">
- <div class="row">
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-flag" aria-hidden="true"></i> One Font, {{ icons | size }} Icons</h4>
- In a single collection, Font Awesome is a pictographic language of web-related actions.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-ban" aria-hidden="true"></i> No JavaScript Required</h4>
- Fewer compatibility concerns because Font Awesome doesn't require JavaScript.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-arrows-alt" aria-hidden="true"></i> Infinite Scalability</h4>
- Scalable vector graphics means every icon looks awesome at any size.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-microphone" aria-hidden="true"></i> Free, as in Speech</h4>
- Font Awesome is completely free for commercial use. Check out the <a href="{{ page.relative_path }}license/">license</a>.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-pencil" aria-hidden="true"></i> CSS Control</h4>
- Easily style icon color, size, shadow, and anything that's possible with CSS.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-eye" aria-hidden="true"></i> Perfect on Retina Displays</h4>
- Font Awesome icons are vectors, which mean they're gorgeous on high-resolution displays.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-gamepad" aria-hidden="true"></i> Plays Well with Others</h4>
- Originally designed for <a href="{{ site.bootstrap.url }}">Bootstrap</a>, Font Awesome works great with all frameworks.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-desktop" aria-hidden="true"></i> Desktop Friendly</h4>
- To use on the desktop or for a complete set of vectors,
- check out the <a href="{{ page.relative_path }}cheatsheet/">cheatsheet</a>.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-wheelchair" aria-hidden="true"></i> Accessibility-minded</h4>
- Font Awesome <i class="fa fa-heart" aria-hidden="true"></i><span class="sr-only">loves</span> screen readers and
-<a href="{{ page.relative_path }}accessibility/">helps make your icons accessible</a> on the web.
- </div>
- </div>
-</section>
diff --git a/library/font_awesome/src/_layouts/base.html b/library/font_awesome/src/_layouts/base.html
deleted file mode 100644
index 2e0cf9ded..000000000
--- a/library/font_awesome/src/_layouts/base.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <meta name="description" content="Font Awesome, the iconic font and CSS framework">
- <meta name="author" content="Dave Gandy">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <link rel="shortcut icon" href="{{ page.relative_path }}assets/ico/favicon.ico">
-
- <title>{% if page.title %}{{ page.title }}{% endif %}</title>
-
- <!-- CSS
- ================================================== -->
- <link rel="stylesheet" href="{{ page.relative_path }}assets/css/site.css">
- <link rel="stylesheet" href="{{ page.relative_path }}assets/css/pygments.css">
- <link rel="stylesheet" href="{{ page.relative_path }}assets/font-awesome/css/font-awesome.css">
-
- <!--[if lt IE 9]>
- <script src="{{ page.relative_path }}assets/js/html5shiv.js"></script>
- <script src="{{ page.relative_path }}assets/js/respond.min.js"></script>
- <![endif]-->
-
- <script src="https://use.fonticons.com/ffe176a3.js"></script>
-
- <script>
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script');
- ga.src = 'https://www.google-analytics.com/ga.js';
- var s = document.scripts[0];
- s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body class="font-awesome {{ page.view_class }}">
- <div id="wrap"> <!-- necessary for sticky footer. wrap all content except footer -->
- {% include navbar.html %}
-
- {{ content }}
- </div>
- {% include footer.html %}
- {% include modals/kickstarter.html %}
- <script src="https://platform.twitter.com/widgets.js"></script>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/{{ site.jquery.version }}/jquery.min.js"></script>
- <script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/{{ site.jquery_validate.version }}/jquery.validate.min.js"></script>
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/{{ site.bootstrap.version }}/js/bootstrap.min.js"></script>
- <script src="https://cdn.jsdelivr.net/algoliasearch/3.13.1/algoliasearch.jquery.min.js" integrity="sha256-2MTQjOt4Q02v+W/QjgCO5yv+si9RAo/o/RGR5alVYzY=" crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/algoliasearch.helper/2.9.1/algoliasearch.helper.min.js" integrity="sha256-MhjLBzVVNkMEKnIE2ueYNb7QSj+oiSv4x89dlui09hg=" crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/underscorejs/1.8.3/underscore-min.js" integrity="sha256-obZACiHd7gkOk9iIL/pimWMTJ4W/pBsKu+oZnSeBIek=" crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/backbonejs/1.2.2/backbone-min.js" integrity="sha256-p6bkfFqmxtebrKOS+wyGi+Qf3d111eWUQP67keyXJ6Q=" crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/jsdelivr-rum/1.5/jsdelivr-rum.min.js" integrity="sha256-HlY2rbkgbiHhtilMXmQ86rjL/EIxGDtdg9GU9/T2ZxE=" crossorigin="anonymous"></script>
- <script src="{{ page.relative_path }}assets/js/site.js"></script>
- <script src="{{ page.relative_path }}assets/js/search.js"></script>
- <script src="{{ page.relative_path }}assets/js/monetization.js" type="text/javascript"></script>
-
- <script>
- (function(){
- // format, zoneKey, segment:value, options
- _bsa.init('imageonly', 'CVADP2Y', 'placement:demo', {
- target: '#inventory',
- disable_css: true,
- path: 'http://inventory.fontawesome.io/api/inventory?zone=CVADP2Y'
- });
- })();
- </script>
-
- <!-- Facebook Pixel Code -->
- <script>
- !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
- n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
- n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
- t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
- document,'script','https://connect.facebook.net/en_US/fbevents.js');
-
- fbq('init', '590758314440297');
- fbq('track', "PageView");</script>
- <noscript><img height="1" width="1" style="display:none"
- src="https://www.facebook.com/tr?id=590758314440297&ev=PageView&noscript=1"
- /></noscript>
- <!-- End Facebook Pixel Code -->
- </body>
-</html>
diff --git a/library/font_awesome/src/_layouts/icon.html b/library/font_awesome/src/_layouts/icon.html
deleted file mode 100644
index 66edaf2a7..000000000
--- a/library/font_awesome/src/_layouts/icon.html
+++ /dev/null
@@ -1,79 +0,0 @@
----
-layout: base
-title_suffix: Font Awesome Icons
-relative_path: ../../
----
-<div class="jumbotron jumbotron-icon">
- <div class="container">
- <div class="info-icons">
- <i class="fa fa-{{ page.icon.id }} fa-6" aria-hidden="true"></i>
- <span class="sr-only">Example of {{ page.icon.id }} at 6x</span>&nbsp;&nbsp;
- <span class="hide-xs">
- <i class="fa fa-{{ page.icon.id }} fa-5" aria-hidden="true"></i>
- <span class="sr-only">Example of {{ page.icon.id }} at 5x</span>
- &nbsp;&nbsp;
- <span class="hide-sm">
- <i class="fa fa-{{ page.icon.id }} fa-4" aria-hidden="true"></i>
- <span class="sr-only">Example of {{ page.icon.id }} at 4x</span>
- &nbsp;&nbsp;
- </span>
- <i class="fa fa-{{ page.icon.id }} fa-3" aria-hidden="true"></i>
- <span class="sr-only">Example of {{ page.icon.id }} at 3x</span>
- &nbsp;&nbsp;
- <i class="fa fa-{{ page.icon.id }} fa-2" aria-hidden="true"></i>
- <span class="sr-only">Example of {{ page.icon.id }} at 2x</span>
- &nbsp;
- </span>
- <i class="fa fa-{{ page.icon.id }} fa-1" aria-hidden="true"></i>
- <span class="sr-only">Example of {{ page.icon.id }}</span>
- </div>
- <h1 class="info-class">
- fa-{{ page.icon.id }}
- <small>
- <i class="fa fa-{{ page.icon.id }}" aria-hidden="true"></i> &middot;
- Unicode: <span class="upper">{{ page.icon.unicode }}</span> &middot;
- Created: v{{ page.icon.created }} &middot;
- Categories:
- {% for category in page.icon.categories %}
- {{ category }}{% unless forloop.last %},{% endunless %}
- {% endfor %}
- {% assign icon_alias_count = page.icon.aliases | size %}
- {% if icon_alias_count > 0 %}
- &middot; Aliases:
- {% for alias in page.icon.aliases %}
- fa-{{ alias }}{% unless forloop.last %},{% endunless %}
- {% endfor %}
- {% endif %}
- {% if page.icon.url %}&middot; <a target="_blank" rel="nofollow" href="http://{{ page.icon.url }}">{{ page.icon.url }}<i class="fa fa-external-link-square margin-left-sm"></i></a>{% endif %}
- </small>
- </h1>
- </div>
-</div>
-
-<div class="container">
- <section>
- <div class="row">
- <div class="col-md-9 col-sm-9">
- <p>After you get <a href="{{ page.relative_path }}get-started/">up and running</a>, you can place Font Awesome icons just about anywhere with the <code>&lt;i&gt;</code> tag:</p>
- <div class="well well-transparent">
- <div style="font-size: 24px; line-height: 1.5em;">
- <i class="fa fa-{{ page.icon.id }}" aria-hidden="true"></i><span class="sr-only">Example of {{ page.icon.id }}</span> fa-{{ page.icon.id }}
- </div>
- </div>
-{% highlight html %}
-<i class="fa fa-{{ page.icon.id }}" aria-hidden="true"></i>
-{% endhighlight %}
- <p class="margin-bottom-lg">
- <small class="text-muted">Note: to improve <a href="{{ page.relative_path }}accessibility/">web accessibility</a>, we recommend using <strong>aria-hidden="true"</strong> to hide icons used purely for decoration.</small>
- </p>
-
- <div class="lead">
- <i class="fa fa-info-circle" aria-hidden"true"></i> Looking for more? Check out the <a href="{{ page.relative_path }}examples/">examples</a>.
- </div>
- </div>
- <div class="col-md-3 col-sm-3">
- <div class="vertical-ad">{% include ads/fusion.html %}</div>
- </div>
- </div>
- </section>
-</div>
diff --git a/library/font_awesome/src/_layouts/survey.html b/library/font_awesome/src/_layouts/survey.html
deleted file mode 100644
index 2af18f38e..000000000
--- a/library/font_awesome/src/_layouts/survey.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <meta name="description" content="Font Awesome, the iconic font and CSS framework">
- <meta name="author" content="Dave Gandy">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <link rel="shortcut icon" href="{{ page.relative_path }}assets/ico/favicon.ico">
-
- <title>{% if page.title %}{{ page.title }}{% endif %}</title>
-
- <style type="text/css">
- html{
- margin: 0;
- height: 100%;
- overflow: hidden;
- }
- iframe{
- position: absolute;
- left:0;
- right:0;
- bottom:0;
- top:0;
- border:0;
- }
- </style>
-
- <script>
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script');
- ga.src = 'https://www.google-analytics.com/ga.js';
- var s = document.scripts[0];
- s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body>
- {{content}}
-</body>
-</html>
diff --git a/library/font_awesome/src/_plugins/flatten_icon_filters.rb b/library/font_awesome/src/_plugins/flatten_icon_filters.rb
deleted file mode 100644
index 1e3daff80..000000000
--- a/library/font_awesome/src/_plugins/flatten_icon_filters.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-##
-# Flattens the icons object to a one-dimensional array of possible search terms.
-
-require 'set'
-
-module Jekyll
- module FlattenArray
- def flattenIconFilters(icons)
- flattened = Set.new
- icons.each do |icon|
- toAdd = []
-
- toAdd.push(icon["class"].downcase) # Add class as a filter value
-
- # Add any existing aliases as a filter value
- if not icon["aliases"].nil?
- icon["aliases"].each do |iconAlias|
- toAdd.push(iconAlias.downcase)
- end
- end
-
- # Add any existing filters as a filter value
- if not icon["filter"].nil?
- icon["filter"].each do |iconFilter|
- toAdd.push(iconFilter.downcase)
- end
- end
- flattened.merge(toAdd)
-
- print toAdd if toAdd.include? true
- print toAdd if toAdd.include? false
- end
- return flattened.to_a # .to_a because we can't jsonify a <Set>
- end
- end
-end
-
-Liquid::Template.register_filter(Jekyll::FlattenArray)
diff --git a/library/font_awesome/src/_plugins/icon_page_generator.rb b/library/font_awesome/src/_plugins/icon_page_generator.rb
deleted file mode 100644
index 32b7cd428..000000000
--- a/library/font_awesome/src/_plugins/icon_page_generator.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-##
-# Create individual pages for each icon in the FontAwesome set
-
-require 'yaml'
-
-module Jekyll
-
- class IconPage < Page
-
- ##
- # Take a single icon and render a page for it.
-
- def initialize(site, base, dir, icon)
- @site = site
- @base = base
- @dir = dir
- @name = "#{icon.id}.html"
- @icon = icon
-
- self.process(@name)
-
- self.read_yaml(File.join(base, site.config['layouts']), site.config['icon_layout'])
-
- self.data['icon'] = icon
- self.data['title'] = "fa-#{icon.id}: " + self.data['title_suffix']
- end
-
- end
-
- class IconGenerator < Generator
-
- ##
- # Iterate over every described icon in a YAML file and create a page for it
-
- safe true
-
- def generate(site)
- site.icons.each do |icon|
- site.pages << IconPage.new(site, site.source, site.config['icon_destination'], icon)
- end
- end
-
- end
-
-end
diff --git a/library/font_awesome/src/_plugins/site.rb b/library/font_awesome/src/_plugins/site.rb
deleted file mode 100644
index a6a74b7bb..000000000
--- a/library/font_awesome/src/_plugins/site.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-##
-# Provide an icons attribute on the site object
-
-require 'yaml'
-require 'forwardable'
-
-module Jekyll
-
- class Icon
-
- attr_reader :name, :id, :unicode, :created, :categories
-
- def initialize(icon_object)
- @icon_object = icon_object
-
- # Class name used in CSS and HTML
- @icon_object['class'] = icon_object['id']
- # Normalize the aliases
- @icon_object['aliases'] ||= []
-
- @name = icon_object['name']
- @id = icon_object['id']
- @class = icon_object['class']
- @aliases = icon_object['aliases']
- @unicode = icon_object['unicode']
- @created = icon_object['created']
- @categories = icon_object['categories']
- end
-
- def to_liquid
- return @icon_object
- end
-
- end
-
- class IconList
- ##
- # A list of icons
- #
- include Enumerable
- extend Forwardable
-
- def_delegators :@icon_array, :each, :<<
-
- def initialize(icon_array)
- @original_icon_array = icon_array
- @icon_array = []
-
- icon_array.each { |icon_object|
- @icon_array << Icon.new(icon_object)
- }
- end
-
- def [](k)
- @icon_array[k]
- end
-
- def to_liquid
- @original_icon_array
- end
-
- end
-
- module IconFilters
- def expand_aliases(icons)
- expanded = []
-
- icons.each { |icon|
- # Remove the aliases since we are expanding them
- expanded << icon.reject{ |k| k == 'aliases'}
-
- icon['aliases'].each { |alias_id|
- alias_icon = expanded[-1].dup
- alias_icon['class'] = alias_id
- alias_icon['alias_of'] = icon
-
- expanded << alias_icon
- }
- }
-
- return expanded
- end
-
- def category(icons, cat)
- icons.select { |icon| icon['categories'].include?(cat) }
- end
-
- def version(icons, version)
- icons.select { |icon| icon['created'] == version }
- end
-
- def sort_by(icons, sort_key)
- icons.sort_by! { |icon| icon[sort_key] }
- end
- end
-
- Liquid::Template.register_filter(IconFilters)
-
- class Site
-
- attr_reader :icons
-
- def process
- self.reset_icons
- self.reset
- self.read
- self.generate
- self.render
- self.cleanup
- self.write
-
- self.build
- end
-
- ##
- # Reads the YAML file that stores all data about icons
- def reset_icons
- @icons = IconList.new(YAML.load_file(self.config['icon_meta'])['icons'])
- end
-
- ##
- # After generation, runs a build of Font-Awesome
- def build
- system("make build", :chdir => self.config['destination'], :out => :err)
- end
-
- def site_payload
- {
- "site" => self.config.merge({
- "time" => self.time,
- "posts" => self.posts.sort { |a, b| b <=> a },
- "pages" => self.pages,
- "html_pages" => self.pages.reject { |page| !page.html? },
- "categories" => post_attr_hash('categories'),
- "tags" => post_attr_hash('tags')}),
- "icons" => @icons,
- }
- end
-
- end
-
-end
diff --git a/library/font_awesome/src/accessibility.html b/library/font_awesome/src/accessibility.html
deleted file mode 100644
index f201921ab..000000000
--- a/library/font_awesome/src/accessibility.html
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: base
-title: Font Awesome & Accessibility
-navbar_active: accessibility
-view_class: v-accessibility
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-universal-access" aria-hidden="true"></i>&nbsp; Accessibility{% endcapture %}
-{% capture jumbotron_p %}Make your icons awesome for all of your users{% endcapture %}
-
-{% include jumbotron.html %}
-
-<div class="container">
- <section id="accessibility-intro" class="accessibility-intro">
- <div class="row">
- <div class="col-md-6">
- <p class="lead">
- Icons are symbols that can convey a ton of information and really help people comprehend directions, signs, and interfaces. It's important that we create and use them so that they can reach the largest amount of people possible.
- </p>
- </div>
- <div class="col-md-6">
- {% include accessibility/background.html %}
- </div>
- </div>
- </section>
-
- <h2 class="page-header">
- Using Font Awesome with Acessibility in mind
- </h2>
-
- {% include accessibility/accessibility-facdn.html %}
-
- <div class="hr margin-top-xl">
- <span class="hr-text text-xl text-muted">or</span>
- </div>
-
- {% include accessibility/accessibility-manual.html %}
- {% include accessibility/other.html %}
-</div>
diff --git a/library/font_awesome/src/assets/css/prettify.css b/library/font_awesome/src/assets/css/prettify.css
deleted file mode 100644
index aedd8d1a9..000000000
--- a/library/font_awesome/src/assets/css/prettify.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.com { color: #93a1a1; }
-.lit { color: #195f91; }
-.pun, .opn, .clo { color: #93a1a1; }
-.fun { color: #dc322f; }
-.str, .atv { color: #D14; }
-.kwd, .linenums .tag { color: #1e347b; }
-.typ, .atn, .dec, .var { color: teal; }
-.pln { color: #48484c; }
-
-.prettyprint {
- padding: 8px;
- background-color: #f7f7f9;
- border: 1px solid #e1e1e8;
-}
-.prettyprint.linenums {
- -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
- -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
- box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-}
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums {
- margin: 0 0 0 33px; /* IE indents via margin-left */
-}
-ol.linenums li {
- padding-left: 12px;
- color: #bebec5;
- line-height: 18px;
- text-shadow: 0 1px 0 #fff;
-} \ No newline at end of file
diff --git a/library/font_awesome/src/assets/css/pygments.css b/library/font_awesome/src/assets/css/pygments.css
deleted file mode 100644
index 5af20ee5e..000000000
--- a/library/font_awesome/src/assets/css/pygments.css
+++ /dev/null
@@ -1,71 +0,0 @@
-.hll { background-color: #ffffcc }
-/*{ background: #f0f3f3; }*/
-.c { color: #999; } /* Comment */
-.err { color: #AA0000; background-color: #FFAAAA } /* Error */
-.k { color: #006699; } /* Keyword */
-.o { color: #555555 } /* Operator */
-.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
-.cp { color: #009999 } /* Comment.Preproc */
-.c1 { color: #999; } /* Comment.Single */
-.cs { color: #999; } /* Comment.Special */
-.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #FF0000 } /* Generic.Error */
-.gh { color: #003300; } /* Generic.Heading */
-.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
-.go { color: #AAAAAA } /* Generic.Output */
-.gp { color: #000099; } /* Generic.Prompt */
-.gs { } /* Generic.Strong */
-.gu { color: #003300; } /* Generic.Subheading */
-.gt { color: #99CC66 } /* Generic.Traceback */
-.kc { color: #006699; } /* Keyword.Constant */
-.kd { color: #006699; } /* Keyword.Declaration */
-.kn { color: #006699; } /* Keyword.Namespace */
-.kp { color: #006699 } /* Keyword.Pseudo */
-.kr { color: #006699; } /* Keyword.Reserved */
-.kt { color: #007788; } /* Keyword.Type */
-.m { color: #FF6600 } /* Literal.Number */
-.s { color: #d44950 } /* Literal.String */
-.na { color: #4f9fcf } /* Name.Attribute */
-.nb { color: #336666 } /* Name.Builtin */
-.nc { color: #00AA88; } /* Name.Class */
-.no { color: #336600 } /* Name.Constant */
-.nd { color: #9999FF } /* Name.Decorator */
-.ni { color: #999999; } /* Name.Entity */
-.ne { color: #CC0000; } /* Name.Exception */
-.nf { color: #CC00FF } /* Name.Function */
-.nl { color: #9999FF } /* Name.Label */
-.nn { color: #00CCFF; } /* Name.Namespace */
-.nt { color: #2f6f9f; } /* Name.Tag */
-.nv { color: #003333 } /* Name.Variable */
-.ow { color: #000000; } /* Operator.Word */
-.w { color: #bbbbbb } /* Text.Whitespace */
-.mf { color: #FF6600 } /* Literal.Number.Float */
-.mh { color: #FF6600 } /* Literal.Number.Hex */
-.mi { color: #FF6600 } /* Literal.Number.Integer */
-.mo { color: #FF6600 } /* Literal.Number.Oct */
-.sb { color: #CC3300 } /* Literal.String.Backtick */
-.sc { color: #CC3300 } /* Literal.String.Char */
-.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
-.s2 { color: #CC3300 } /* Literal.String.Double */
-.se { color: #CC3300; } /* Literal.String.Escape */
-.sh { color: #CC3300 } /* Literal.String.Heredoc */
-.si { color: #AA0000 } /* Literal.String.Interpol */
-.sx { color: #CC3300 } /* Literal.String.Other */
-.sr { color: #33AAAA } /* Literal.String.Regex */
-.s1 { color: #CC3300 } /* Literal.String.Single */
-.ss { color: #FFCC33 } /* Literal.String.Symbol */
-.bp { color: #336666 } /* Name.Builtin.Pseudo */
-.vc { color: #003333 } /* Name.Variable.Class */
-.vg { color: #003333 } /* Name.Variable.Global */
-.vi { color: #003333 } /* Name.Variable.Instance */
-.il { color: #FF6600 } /* Literal.Number.Integer.Long */
-
-.css .o,
-.css .o + .nt,
-.css .nt + .nt { color: #999; }
-
-pre {
- background-color: #fafafa;
- padding: 8px 15px;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/HELP-US-OUT.txt b/library/font_awesome/src/assets/font-awesome/HELP-US-OUT.txt
deleted file mode 100644
index 83d083dd7..000000000
--- a/library/font_awesome/src/assets/font-awesome/HELP-US-OUT.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
-Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
-comprehensive icon sets or copy and paste your own.
-
-Please. Check it out.
-
--Dave Gandy
diff --git a/library/font_awesome/src/assets/font-awesome/fonts/FontAwesome.otf b/library/font_awesome/src/assets/font-awesome/fonts/FontAwesome.otf
deleted file mode 100644
index 401ec0f36..000000000
--- a/library/font_awesome/src/assets/font-awesome/fonts/FontAwesome.otf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot b/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot
deleted file mode 100644
index e9f60ca95..000000000
--- a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg b/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg
deleted file mode 100644
index 855c845e5..000000000
--- a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,2671 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg>
-<metadata>
-Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016
- By ,,,
-Copyright Dave Gandy 2016. All rights reserved.
-</metadata>
-<defs>
-<font id="FontAwesome" horiz-adv-x="1536" >
- <font-face
- font-family="FontAwesome"
- font-weight="400"
- font-stretch="normal"
- units-per-em="1792"
- panose-1="0 0 0 0 0 0 0 0 0 0"
- ascent="1536"
- descent="-256"
- bbox="-1.02083 -256.962 2304.6 1537.02"
- underline-thickness="0"
- underline-position="0"
- unicode-range="U+0020-F500"
- />
-<missing-glyph horiz-adv-x="896"
-d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
- <glyph glyph-name=".notdef" horiz-adv-x="896"
-d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
- <glyph glyph-name=".null" horiz-adv-x="0"
- />
- <glyph glyph-name="nonmarkingreturn" horiz-adv-x="597"
- />
- <glyph glyph-name="space" unicode=" " horiz-adv-x="448"
- />
- <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="1792"
- />
- <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1792"
- />
- <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1792"
- />
- <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="1792"
- />
- <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1792"
- />
- <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1792"
- />
- <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="1792"
- />
- <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="1792"
- />
- <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="1792"
- />
- <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1792"
-d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
- <glyph glyph-name="music" unicode="&#xf001;"
-d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89
-t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
- <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664"
-d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5
-t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
- <glyph glyph-name="envelope" unicode="&#xf003;" horiz-adv-x="1792"
-d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13
-t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z
-M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792"
-d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600
-q-18 -18 -44 -18z" />
- <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664"
-d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455
-l502 -73q56 -9 56 -46z" />
- <glyph glyph-name="star_empty" unicode="&#xf006;" horiz-adv-x="1664"
-d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500
-l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
- <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280"
-d="M1280 137q0 -109 -62.5 -187t-150.5 -78h-854q-88 0 -150.5 78t-62.5 187q0 85 8.5 160.5t31.5 152t58.5 131t94 89t134.5 34.5q131 -128 313 -128t313 128q76 0 134.5 -34.5t94 -89t58.5 -131t31.5 -152t8.5 -160.5zM1024 1024q0 -159 -112.5 -271.5t-271.5 -112.5
-t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920"
-d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128
-q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45
-t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128
-q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19
-t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="th_large" unicode="&#xf009;" horiz-adv-x="1664"
-d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38
-h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
- <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792"
-d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
-h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192
-q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
- <glyph glyph-name="th_list" unicode="&#xf00b;" horiz-adv-x="1792"
-d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
-h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
- <glyph glyph-name="ok" unicode="&#xf00c;" horiz-adv-x="1792"
-d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
- <glyph glyph-name="remove" unicode="&#xf00d;" horiz-adv-x="1408"
-d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68
-t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
- <glyph glyph-name="zoom_in" unicode="&#xf00e;" horiz-adv-x="1664"
-d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224
-q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5
-t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
- <glyph glyph-name="zoom_out" unicode="&#xf010;" horiz-adv-x="1664"
-d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z
-M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z
-" />
- <glyph glyph-name="off" unicode="&#xf011;"
-d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5
-t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
- <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792"
-d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
-v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
- <glyph glyph-name="cog" unicode="&#xf013;"
-d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38
-q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13
-l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22
-q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
- <glyph glyph-name="trash" unicode="&#xf014;" horiz-adv-x="1408"
-d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576
-q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832
-q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
- <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1664"
-d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5
-l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
- <glyph glyph-name="file_alt" unicode="&#xf016;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-" />
- <glyph glyph-name="time" unicode="&#xf017;"
-d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1920"
-d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256
-q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
- <glyph glyph-name="download_alt" unicode="&#xf019;" horiz-adv-x="1664"
-d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136
-q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
- <glyph glyph-name="download" unicode="&#xf01a;"
-d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273
-t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="upload" unicode="&#xf01b;"
-d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198
-t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="inbox" unicode="&#xf01c;"
-d="M1023 576h316q-1 3 -2.5 8.5t-2.5 7.5l-212 496h-708l-212 -496q-1 -3 -2.5 -8.5t-2.5 -7.5h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552
-q25 -61 25 -123z" />
- <glyph glyph-name="play_circle" unicode="&#xf01d;"
-d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="repeat" unicode="&#xf01e;"
-d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q15 0 25 -9
-l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
- <glyph glyph-name="refresh" unicode="&#xf021;"
-d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117
-q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5
-q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
- <glyph glyph-name="list_alt" unicode="&#xf022;" horiz-adv-x="1792"
-d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z
-M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5
-t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47
-t47 -113z" />
- <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152"
-d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
- <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1792"
-d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48
-t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
- <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664"
-d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78
-t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5
-t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
- <glyph glyph-name="volume_off" unicode="&#xf026;" horiz-adv-x="768"
-d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
- <glyph glyph-name="volume_down" unicode="&#xf027;" horiz-adv-x="1152"
-d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
-t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
- <glyph glyph-name="volume_up" unicode="&#xf028;" horiz-adv-x="1664"
-d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
-t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5
-t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289
-t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
- <glyph glyph-name="qrcode" unicode="&#xf029;" horiz-adv-x="1408"
-d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z
-M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
- <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="1792"
-d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z
-M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
- <glyph glyph-name="tag" unicode="&#xf02b;"
-d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
-l715 -714q37 -39 37 -91z" />
- <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1920"
-d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
-l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
- <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664"
-d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23
-q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906
-q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5
-t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
- <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280"
-d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
- <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664"
-d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68
-v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
- <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920"
-d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136
-q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664"
-d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57
-q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -5 -0.5 -13.5t-0.5 -12.5q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5
-q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
- <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408"
-d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142
-q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5
-t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68 -0.5t68 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5
-t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
- <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024"
-d="M0 -126l17 85q22 7 61.5 16.5t72 19t59.5 23.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5
-q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
- <glyph glyph-name="text_height" unicode="&#xf034;" horiz-adv-x="1792"
-d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2
-t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5
-q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
-q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
- <glyph glyph-name="text_width" unicode="&#xf035;"
-d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1
-t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
-q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5
-t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49
-t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
- <glyph glyph-name="align_left" unicode="&#xf036;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45
-t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="align_center" unicode="&#xf037;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19
-h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
- <glyph glyph-name="align_right" unicode="&#xf038;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
-t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="align_justify" unicode="&#xf039;" horiz-adv-x="1792"
-d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
-t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
- <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792"
-d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5
-t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344
-q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
-t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192
-q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="indent_left" unicode="&#xf03b;" horiz-adv-x="1792"
-d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
-t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
-q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="indent_right" unicode="&#xf03c;" horiz-adv-x="1792"
-d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
-t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
-q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="facetime_video" unicode="&#xf03d;" horiz-adv-x="1792"
-d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5
-q39 -17 39 -59z" />
- <glyph glyph-name="picture" unicode="&#xf03e;" horiz-adv-x="1920"
-d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216
-q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="pencil" unicode="&#xf040;"
-d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38
-q53 0 91 -38l235 -234q37 -39 37 -91z" />
- <glyph glyph-name="map_marker" unicode="&#xf041;" horiz-adv-x="1024"
-d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
- <glyph glyph-name="adjust" unicode="&#xf042;"
-d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024"
-d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362
-q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
- <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="1792"
-d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
-q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92
-l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
- <glyph glyph-name="share" unicode="&#xf045;" horiz-adv-x="1664"
-d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832
-q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5
-t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
- <glyph glyph-name="check" unicode="&#xf046;" horiz-adv-x="1664"
-d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832
-q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110
-q24 -24 24 -57t-24 -57z" />
- <glyph glyph-name="move" unicode="&#xf047;" horiz-adv-x="1792"
-d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45
-t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
- <glyph glyph-name="step_backward" unicode="&#xf048;" horiz-adv-x="1024"
-d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19z" />
- <glyph glyph-name="fast_backward" unicode="&#xf049;" horiz-adv-x="1792"
-d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19l710 710
-q19 19 32 13t13 -32v-710q4 10 13 19z" />
- <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1664"
-d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q4 10 13 19z" />
- <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1408"
-d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
- <glyph glyph-name="pause" unicode="&#xf04c;"
-d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
- <glyph glyph-name="stop" unicode="&#xf04d;"
-d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
- <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1664"
-d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
- <glyph glyph-name="fast_forward" unicode="&#xf050;" horiz-adv-x="1792"
-d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19l-710 -710
-q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
- <glyph glyph-name="step_forward" unicode="&#xf051;" horiz-adv-x="1024"
-d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19z" />
- <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538"
-d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
- <glyph glyph-name="chevron_left" unicode="&#xf053;" horiz-adv-x="1280"
-d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
- <glyph glyph-name="chevron_right" unicode="&#xf054;" horiz-adv-x="1280"
-d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
- <glyph glyph-name="plus_sign" unicode="&#xf055;"
-d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5
-t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="minus_sign" unicode="&#xf056;"
-d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
-t103 -385.5z" />
- <glyph glyph-name="remove_sign" unicode="&#xf057;"
-d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19
-q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ok_sign" unicode="&#xf058;"
-d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="question_sign" unicode="&#xf059;"
-d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59
-q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="info_sign" unicode="&#xf05a;"
-d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23
-t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="screenshot" unicode="&#xf05b;"
-d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109
-q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143
-q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
- <glyph glyph-name="remove_circle" unicode="&#xf05c;"
-d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
-l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5
-t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ok_circle" unicode="&#xf05d;"
-d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198
-t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ban_circle" unicode="&#xf05e;"
-d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61
-t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
- <glyph glyph-name="arrow_left" unicode="&#xf060;"
-d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5
-t32.5 -90.5z" />
- <glyph glyph-name="arrow_right" unicode="&#xf061;"
-d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
- <glyph glyph-name="arrow_up" unicode="&#xf062;" horiz-adv-x="1664"
-d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651
-q37 -39 37 -91z" />
- <glyph glyph-name="arrow_down" unicode="&#xf063;" horiz-adv-x="1664"
-d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
- <glyph glyph-name="share_alt" unicode="&#xf064;" horiz-adv-x="1792"
-d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22
-t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
- <glyph glyph-name="resize_full" unicode="&#xf065;"
-d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332
-q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
- <glyph glyph-name="resize_small" unicode="&#xf066;"
-d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45
-t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
- <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408"
-d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
- <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408"
-d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
- <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1664"
-d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154
-q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
- <glyph glyph-name="exclamation_sign" unicode="&#xf06a;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192
-q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
- <glyph glyph-name="gift" unicode="&#xf06b;"
-d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320
-q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5
-t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
- <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792"
-d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268
-q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-43 0 -63.5 17.5t-45.5 59.5q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5
-t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
- <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408"
-d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1
-q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
- <glyph glyph-name="eye_open" unicode="&#xf06e;" horiz-adv-x="1792"
-d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5
-t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
- <glyph glyph-name="eye_close" unicode="&#xf070;" horiz-adv-x="1792"
-d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9
-q-106 -189 -316 -567t-315 -566l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5
-q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z
-" />
- <glyph glyph-name="warning_sign" unicode="&#xf071;" horiz-adv-x="1792"
-d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185
-q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
- <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1408"
-d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9
-q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
- <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664"
-d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
-M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64
-q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47
-h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792"
-d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1
-t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5
-v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111
-t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
- <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792"
-d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281
-q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
- <glyph glyph-name="magnet" unicode="&#xf076;"
-d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384
-q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
- <glyph glyph-name="chevron_up" unicode="&#xf077;" horiz-adv-x="1792"
-d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
- <glyph glyph-name="chevron_down" unicode="&#xf078;" horiz-adv-x="1792"
-d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
- <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920"
-d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -10 7 -21
-zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z
-" />
- <glyph glyph-name="shopping_cart" unicode="&#xf07a;" horiz-adv-x="1664"
-d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45
-t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
- <glyph glyph-name="folder_close" unicode="&#xf07b;" horiz-adv-x="1664"
-d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
- <glyph glyph-name="folder_open" unicode="&#xf07c;" horiz-adv-x="1920"
-d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5
-t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
- <glyph glyph-name="resize_vertical" unicode="&#xf07d;" horiz-adv-x="768"
-d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
- <glyph glyph-name="resize_horizontal" unicode="&#xf07e;" horiz-adv-x="1792"
-d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
- <glyph glyph-name="bar_chart" unicode="&#xf080;" horiz-adv-x="2048"
-d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
- <glyph glyph-name="twitter_sign" unicode="&#xf081;"
-d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4
-q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5
-t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="facebook_sign" unicode="&#xf082;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960
-q0 119 84.5 203.5t203.5 84.5h960z" />
- <glyph glyph-name="camera_retro" unicode="&#xf083;" horiz-adv-x="1792"
-d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5
-t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280
-q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1792"
-d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26
-l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5
-t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
- <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920"
-d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5
-t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -11 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5
-l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7
-l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -8 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31
-q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20
-t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68
-q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70
-q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
- <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792"
-d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224
-q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7
-q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
- <glyph glyph-name="thumbs_up_alt" unicode="&#xf087;"
-d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5
-t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769
-q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128
-q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
- <glyph glyph-name="thumbs_down_alt" unicode="&#xf088;"
-d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 31 18 69q0 37 -17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5
-t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z
-M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5
-h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -73 49 -163z" />
- <glyph glyph-name="star_half" unicode="&#xf089;" horiz-adv-x="896"
-d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
- <glyph glyph-name="heart_empty" unicode="&#xf08a;" horiz-adv-x="1792"
-d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559
-q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5
-q224 0 351 -124t127 -344z" />
- <glyph glyph-name="signout" unicode="&#xf08b;" horiz-adv-x="1664"
-d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704
-q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
- <glyph glyph-name="linkedin_sign" unicode="&#xf08c;"
-d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5
-q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="pushpin" unicode="&#xf08d;" horiz-adv-x="1152"
-d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38
-t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
- <glyph glyph-name="external_link" unicode="&#xf08e;" horiz-adv-x="1792"
-d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320
-q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
- <glyph glyph-name="signin" unicode="&#xf090;"
-d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5
-q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664"
-d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91
-t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96
-q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
- <glyph glyph-name="github_sign" unicode="&#xf092;"
-d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4
-q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4
-t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16
-q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="upload_alt" unicode="&#xf093;" horiz-adv-x="1664"
-d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92
-t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
- <glyph glyph-name="lemon" unicode="&#xf094;"
-d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5
-q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44
-q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5
-q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -13 2 -25t3.5 -16.5t7.5 -20.5t8 -20q16 -40 25 -118.5t9 -136.5z" />
- <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408"
-d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -53 3.5t-57.5 12.5t-47 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-127 79 -264 216t-216 264q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47t-12.5 57.5t-3.5 53q0 92 51 186
-q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174q2 -1 19 -11.5t24 -14
-t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
- <glyph glyph-name="check_empty" unicode="&#xf096;" horiz-adv-x="1408"
-d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
-q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="bookmark_empty" unicode="&#xf097;" horiz-adv-x="1280"
-d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289
-q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
- <glyph glyph-name="phone_sign" unicode="&#xf098;"
-d="M1280 343q0 11 -2 16t-18 16.5t-40.5 25t-47.5 26.5t-45.5 25t-28.5 15q-5 3 -19 13t-25 15t-21 5q-15 0 -36.5 -20.5t-39.5 -45t-38.5 -45t-33.5 -20.5q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170 126.5t-127 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5
-t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5
-t320.5 -216.5q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z
-" />
- <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1664"
-d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41
-q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
- <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="1024"
-d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
- <glyph glyph-name="github" unicode="&#xf09b;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24
-q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5
-t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12
-q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z
-M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
- <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664"
-d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5
-t316.5 -131.5t131.5 -316.5z" />
- <glyph glyph-name="credit_card" unicode="&#xf09d;" horiz-adv-x="1920"
-d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608
-q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
- <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408"
-d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5
-t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294
-q187 -186 294 -425.5t120 -501.5z" />
- <glyph glyph-name="hdd" unicode="&#xf0a0;"
-d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5
-h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75
-l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
- <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792"
-d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5
-t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
- <glyph glyph-name="bell" unicode="&#xf0a2;" horiz-adv-x="1792"
-d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z
-M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5
-t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
- <glyph glyph-name="certificate" unicode="&#xf0a3;"
-d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70
-l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70
-l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
- <glyph glyph-name="hand_right" unicode="&#xf0a4;" horiz-adv-x="1792"
-d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106
-q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43
-q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5
-t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
- <glyph glyph-name="hand_left" unicode="&#xf0a5;" horiz-adv-x="1792"
-d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-8 9 -12 14q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5
-t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45z
-M1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67
-q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="hand_up" unicode="&#xf0a6;"
-d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576
-q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5
-t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76
-q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
- <glyph glyph-name="hand_down" unicode="&#xf0a7;"
-d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33
-t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580
-q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100
-q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
- <glyph glyph-name="circle_arrow_left" unicode="&#xf0a8;"
-d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="circle_arrow_right" unicode="&#xf0a9;"
-d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="circle_arrow_up" unicode="&#xf0aa;"
-d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="circle_arrow_down" unicode="&#xf0ab;"
-d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="globe" unicode="&#xf0ac;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11
-q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 11t-9.5 10q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5
-q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5
-q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5
-t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-4 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3
-q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25
-q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5
-t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5
-t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10.5t17 -19.5q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21
-q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5
-q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3
-q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5
-t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q8 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5
-q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7
-q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
- <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1664"
-d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5
-t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
- <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792"
-d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19
-t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
- <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408"
-d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
- <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792"
-d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68
-t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
- <glyph glyph-name="fullscreen" unicode="&#xf0b2;"
-d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144
-l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z
-" />
- <glyph glyph-name="group" unicode="&#xf0c0;" horiz-adv-x="1920"
-d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5
-t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75
-t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5
-t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
- <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1664"
-d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26
-l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15
-t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207
-q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
- <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920"
-d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z
-" />
- <glyph glyph-name="beaker" unicode="&#xf0c3;" horiz-adv-x="1664"
-d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
- <glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="1792"
-d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84
-q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148
-q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108
-q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6
-q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
- <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="1792"
-d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299
-h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
- <glyph glyph-name="paper_clip" unicode="&#xf0c6;" horiz-adv-x="1408"
-d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181
-l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235
-z" />
- <glyph glyph-name="save" unicode="&#xf0c7;"
-d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5
-h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
- <glyph glyph-name="sign_blank" unicode="&#xf0c8;"
-d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="reorder" unicode="&#xf0c9;"
-d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45
-t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
- <glyph glyph-name="ul" unicode="&#xf0ca;" horiz-adv-x="1792"
-d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
-t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z
-M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="ol" unicode="&#xf0cb;" horiz-adv-x="1792"
-d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362
-q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5
-t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 121.5t0.5 121.5v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216
-q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
- <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792"
-d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 98 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6
-l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -56 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23
-l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
- <glyph glyph-name="underline" unicode="&#xf0cd;"
-d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47
-q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41
-q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472
-q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
- <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664"
-d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23
-v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192
-q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192
-q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113
-z" />
- <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1664"
-d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276
-l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
- <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1792"
-d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5
-t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38
-t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
- <glyph glyph-name="pinterest" unicode="&#xf0d2;"
-d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134
-q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33
-q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="pinterest_sign" unicode="&#xf0d3;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5
-t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5
-t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
- <glyph glyph-name="google_plus_sign" unicode="&#xf0d4;"
-d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585
-h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="google_plus" unicode="&#xf0d5;" horiz-adv-x="2304"
-d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62
-q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
- <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920"
-d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384
-v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
- <glyph glyph-name="caret_down" unicode="&#xf0d7;" horiz-adv-x="1024"
-d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
- <glyph glyph-name="caret_up" unicode="&#xf0d8;" horiz-adv-x="1024"
-d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="caret_left" unicode="&#xf0d9;" horiz-adv-x="640"
-d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
- <glyph glyph-name="caret_right" unicode="&#xf0da;" horiz-adv-x="640"
-d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664"
-d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
- <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024"
-d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="sort_down" unicode="&#xf0dd;" horiz-adv-x="1024"
-d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
- <glyph glyph-name="sort_up" unicode="&#xf0de;" horiz-adv-x="1024"
-d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
- <glyph glyph-name="envelope_alt" unicode="&#xf0e0;" horiz-adv-x="1792"
-d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123
-q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
- <glyph glyph-name="linkedin" unicode="&#xf0e1;"
-d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329
-q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
- <glyph glyph-name="undo" unicode="&#xf0e2;"
-d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
-t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
- <glyph glyph-name="legal" unicode="&#xf0e3;" horiz-adv-x="1792"
-d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5
-t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14
-q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28
-q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
- <glyph glyph-name="dashboard" unicode="&#xf0e4;" horiz-adv-x="1792"
-d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5
-t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5
-t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29
-q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="comment_alt" unicode="&#xf0e5;" horiz-adv-x="1792"
-d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640
-q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5
-t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
- <glyph glyph-name="comments_alt" unicode="&#xf0e6;" horiz-adv-x="1792"
-d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257
-t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5
-t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129
-q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
- <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896"
-d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
- <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792"
-d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320
-q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68
-z" />
- <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664"
-d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97
-q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69
-q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
- <glyph glyph-name="paste" unicode="&#xf0ea;" horiz-adv-x="1792"
-d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28
-h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
- <glyph glyph-name="light_bulb" unicode="&#xf0eb;" horiz-adv-x="1024"
-d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134
-q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47
-q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5
-t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
- <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792"
-d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9
-q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
- <glyph glyph-name="cloud_download" unicode="&#xf0ed;" horiz-adv-x="1920"
-d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
-q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
- <glyph glyph-name="cloud_upload" unicode="&#xf0ee;" horiz-adv-x="1920"
-d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
-q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
- <glyph glyph-name="user_md" unicode="&#xf0f0;" horiz-adv-x="1408"
-d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56
-t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68
-t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
-t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408"
-d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48
-t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252
-t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
- <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792"
-d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66
-t66 -158z" />
- <glyph glyph-name="bell_alt" unicode="&#xf0f3;" horiz-adv-x="1792"
-d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5
-t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
- <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1920"
-d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45
-t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="food" unicode="&#xf0f5;" horiz-adv-x="1408"
-d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45
-t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
- <glyph glyph-name="file_text_alt" unicode="&#xf0f6;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704
-q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
- <glyph glyph-name="building" unicode="&#xf0f7;" horiz-adv-x="1408"
-d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
- <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="1408"
-d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
-M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5
-t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320
-v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
- <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1920"
-d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5
-t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152
-q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792"
-d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32
-q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
- <glyph glyph-name="fighter_jet" unicode="&#xf0fb;" horiz-adv-x="1920"
-d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96
-q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q128 -28 200 -52t80 -34z" />
- <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1664"
-d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
- <glyph glyph-name="h_sign" unicode="&#xf0fd;"
-d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="f0fe" unicode="&#xf0fe;"
-d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="double_angle_left" unicode="&#xf100;" horiz-adv-x="1024"
-d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
-t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
- <glyph glyph-name="double_angle_right" unicode="&#xf101;" horiz-adv-x="1024"
-d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23
-l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="double_angle_up" unicode="&#xf102;" horiz-adv-x="1152"
-d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393
-q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="double_angle_down" unicode="&#xf103;" horiz-adv-x="1152"
-d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
-t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
- <glyph glyph-name="angle_left" unicode="&#xf104;" horiz-adv-x="640"
-d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
- <glyph glyph-name="angle_right" unicode="&#xf105;" horiz-adv-x="640"
-d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="angle_up" unicode="&#xf106;" horiz-adv-x="1152"
-d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
- <glyph glyph-name="angle_down" unicode="&#xf107;" horiz-adv-x="1152"
-d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
- <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920"
-d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19
-t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920"
-d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z
-M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
- <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152"
-d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832
-q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
- <glyph glyph-name="mobile_phone" unicode="&#xf10b;" horiz-adv-x="768"
-d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136
-q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
- <glyph glyph-name="circle_blank" unicode="&#xf10c;"
-d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103
-t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="quote_left" unicode="&#xf10d;" horiz-adv-x="1664"
-d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z
-M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
- <glyph glyph-name="quote_right" unicode="&#xf10e;" horiz-adv-x="1664"
-d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216
-v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
- <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1792"
-d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5
-t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z
-M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5
-q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
- <glyph glyph-name="circle" unicode="&#xf111;"
-d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792"
-d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19
-l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
- <glyph glyph-name="github_alt" unicode="&#xf113;" horiz-adv-x="1664"
-d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320
-q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86
-t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218
-q0 -87 -27 -168q136 -160 136 -398z" />
- <glyph glyph-name="folder_close_alt" unicode="&#xf114;" horiz-adv-x="1664"
-d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320
-q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
- <glyph glyph-name="folder_open_alt" unicode="&#xf115;" horiz-adv-x="1920"
-d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68
-v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z
-" />
- <glyph glyph-name="expand_alt" unicode="&#xf116;" horiz-adv-x="1792"
- />
- <glyph glyph-name="collapse_alt" unicode="&#xf117;" horiz-adv-x="1792"
- />
- <glyph glyph-name="smile" unicode="&#xf118;"
-d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
-t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5
-t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="frown" unicode="&#xf119;"
-d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
-t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204
-t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="meh" unicode="&#xf11a;"
-d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
-t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920"
-d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
-t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150
-t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
- <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="1920"
-d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16
-h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16
-h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96
-q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896
-h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="flag_alt" unicode="&#xf11d;" horiz-adv-x="1792"
-d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9
-h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102
-q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
- <glyph glyph-name="flag_checkered" unicode="&#xf11e;" horiz-adv-x="1792"
-d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2
-q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266
-q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8
-q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
- <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1664"
-d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9
-t9 -23z" />
- <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1920"
-d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5
-l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
- <glyph glyph-name="reply_all" unicode="&#xf122;" horiz-adv-x="1792"
-d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1
-q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
- <glyph glyph-name="star_half_empty" unicode="&#xf123;" horiz-adv-x="1664"
-d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5
-l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
- <glyph glyph-name="location_arrow" unicode="&#xf124;" horiz-adv-x="1408"
-d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
- <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664"
-d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23
-v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
- <glyph glyph-name="code_fork" unicode="&#xf126;" horiz-adv-x="1024"
-d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5
-q-2 -287 -226 -414q-67 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497
-q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
- <glyph glyph-name="unlink" unicode="&#xf127;" horiz-adv-x="1664"
-d="M439 265l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320
-q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18
-l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9
-t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
- <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="1024"
-d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5
-t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
- <glyph glyph-name="_279" unicode="&#xf129;" horiz-adv-x="640"
-d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192
-q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
- <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="640"
-d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
- <glyph glyph-name="superscript" unicode="&#xf12b;"
-d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
-M1534 846v-206h-514l-3 27q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5
-t-65.5 -51.5t-30.5 -63h232v80h126z" />
- <glyph glyph-name="subscript" unicode="&#xf12c;"
-d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
-M1536 -50v-206h-514l-4 27q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73
-h232v80h126z" />
- <glyph glyph-name="_283" unicode="&#xf12d;" horiz-adv-x="1920"
-d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
- <glyph glyph-name="puzzle_piece" unicode="&#xf12e;" horiz-adv-x="1664"
-d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5
-t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89
-q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117
-q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
- <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152"
-d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5
-t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
- <glyph glyph-name="microphone_off" unicode="&#xf131;" horiz-adv-x="1408"
-d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128
-q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23
-t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
- <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280"
-d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150
-t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
- <glyph glyph-name="calendar_empty" unicode="&#xf133;" horiz-adv-x="1664"
-d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
-q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="fire_extinguisher" unicode="&#xf134;" horiz-adv-x="1408"
-d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800
-q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113
-q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
- <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1664"
-d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1
-q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
- <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1792"
-d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
- <glyph glyph-name="chevron_sign_left" unicode="&#xf137;"
-d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="chevron_sign_right" unicode="&#xf138;"
-d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="chevron_sign_up" unicode="&#xf139;"
-d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="chevron_sign_down" unicode="&#xf13a;"
-d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
-t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408"
-d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
- <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1792"
-d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
- <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792"
-d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352
-q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19
-t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
- <glyph glyph-name="unlock_alt" unicode="&#xf13e;" horiz-adv-x="1152"
-d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181
-v-320h736z" />
- <glyph glyph-name="bullseye" unicode="&#xf140;"
-d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150
-t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
-q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="ellipsis_horizontal" unicode="&#xf141;" horiz-adv-x="1408"
-d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
- <glyph glyph-name="ellipsis_vertical" unicode="&#xf142;" horiz-adv-x="384"
-d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192
-q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
- <glyph glyph-name="_303" unicode="&#xf143;"
-d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 233 -176.5 396.5t-396.5 176.5q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128
-q13 0 23 10t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="play_sign" unicode="&#xf144;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56
-q16 -8 32 -8q17 0 32 9z" />
- <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1792"
-d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136
-t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
- <glyph glyph-name="minus_sign_alt" unicode="&#xf146;"
-d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
-t84.5 -203.5z" />
- <glyph glyph-name="check_minus" unicode="&#xf147;" horiz-adv-x="1408"
-d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5
-t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="level_up" unicode="&#xf148;" horiz-adv-x="1024"
-d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
- <glyph glyph-name="level_down" unicode="&#xf149;" horiz-adv-x="1024"
-d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
- <glyph glyph-name="check_sign" unicode="&#xf14a;"
-d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5
-t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="edit_sign" unicode="&#xf14b;"
-d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120
-v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_312" unicode="&#xf14c;"
-d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960
-q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="share_sign" unicode="&#xf14d;"
-d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q11 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5
-t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="compass" unicode="&#xf14e;"
-d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="collapse" unicode="&#xf150;"
-d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120
-v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="collapse_top" unicode="&#xf151;"
-d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_317" unicode="&#xf152;"
-d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5
-t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1024"
-d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9
-t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26
-l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
- <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1024"
-d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7
-q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
- <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="1024"
-d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43
-t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5
-t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50
-t53 -63.5t31.5 -76.5t13 -94z" />
- <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898"
-d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102
-q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
- <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1027"
-d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61
-l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
- <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280"
-d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128
-q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
- <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792"
-d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23
-t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28
-q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
- <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1280"
-d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164
-l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30
-t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
- <glyph glyph-name="file" unicode="&#xf15b;"
-d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
- <glyph glyph-name="file_text" unicode="&#xf15c;"
-d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704
-q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
- <glyph glyph-name="sort_by_alphabet" unicode="&#xf15d;" horiz-adv-x="1664"
-d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23
-v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162
-l230 -662h70z" />
- <glyph glyph-name="_329" unicode="&#xf15e;" horiz-adv-x="1664"
-d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150
-v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248
-v119h121z" />
- <glyph glyph-name="sort_by_attributes" unicode="&#xf160;" horiz-adv-x="1792"
-d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832
-q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256
-q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
- <glyph glyph-name="sort_by_attributes_alt" unicode="&#xf161;" horiz-adv-x="1792"
-d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192
-q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832
-q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
- <glyph glyph-name="sort_by_order" unicode="&#xf162;"
-d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23
-zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5
-t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
- <glyph glyph-name="sort_by_order_alt" unicode="&#xf163;"
-d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9
-t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13
-q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
- <glyph glyph-name="_334" unicode="&#xf164;" horiz-adv-x="1664"
-d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76
-q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5
-t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
- <glyph glyph-name="_335" unicode="&#xf165;" horiz-adv-x="1664"
-d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135
-t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121
-t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
- <glyph glyph-name="youtube_sign" unicode="&#xf166;"
-d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 17 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15
-q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38
-q21 -29 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5
-q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78q7 -23 23 -69l24 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38
-q-51 0 -78 -38q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5
-h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="youtube" unicode="&#xf167;"
-d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73
-q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51
-q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99
-q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-38 -51 -106 -51q-67 0 -105 51
-q-28 38 -28 118v175q0 80 28 117q38 51 105 51q68 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
- <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408"
-d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942
-q25 45 64 45h241q22 0 31 -15z" />
- <glyph glyph-name="xing_sign" unicode="&#xf169;"
-d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1
-l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="youtube_play" unicode="&#xf16a;" horiz-adv-x="1792"
-d="M711 408l484 250l-484 253v-503zM896 1270q168 0 324.5 -4.5t229.5 -9.5l73 -4q1 0 17 -1.5t23 -3t23.5 -4.5t28.5 -8t28 -13t31 -19.5t29 -26.5q6 -6 15.5 -18.5t29 -58.5t26.5 -101q8 -64 12.5 -136.5t5.5 -113.5v-40v-136q1 -145 -18 -290q-7 -55 -25 -99.5t-32 -61.5
-l-14 -17q-14 -15 -29 -26.5t-31 -19t-28 -12.5t-28.5 -8t-24 -4.5t-23 -3t-16.5 -1.5q-251 -19 -627 -19q-207 2 -359.5 6.5t-200.5 7.5l-49 4l-36 4q-36 5 -54.5 10t-51 21t-56.5 41q-6 6 -15.5 18.5t-29 58.5t-26.5 101q-8 64 -12.5 136.5t-5.5 113.5v40v136
-q-1 145 18 290q7 55 25 99.5t32 61.5l14 17q14 15 29 26.5t31 19.5t28 13t28.5 8t23.5 4.5t23 3t17 1.5q251 18 627 18z" />
- <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1792"
-d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
- <glyph glyph-name="stackexchange" unicode="&#xf16c;"
-d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
- <glyph glyph-name="instagram" unicode="&#xf16d;"
-d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270
-q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5
-t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317
-q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
- <glyph glyph-name="flickr" unicode="&#xf16e;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150
-t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
- <glyph glyph-name="adn" unicode="&#xf170;"
-d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="f171" unicode="&#xf171;" horiz-adv-x="1408"
-d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22
-t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18
-t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5
-t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
- <glyph glyph-name="bitbucket_sign" unicode="&#xf172;"
-d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5
-t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z
-M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120
-v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="1024"
-d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14
-q78 2 134 29z" />
- <glyph glyph-name="tumblr_sign" unicode="&#xf174;"
-d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z
-M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="long_arrow_down" unicode="&#xf175;" horiz-adv-x="768"
-d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
- <glyph glyph-name="long_arrow_up" unicode="&#xf176;" horiz-adv-x="768"
-d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
- <glyph glyph-name="long_arrow_left" unicode="&#xf177;" horiz-adv-x="1792"
-d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
- <glyph glyph-name="long_arrow_right" unicode="&#xf178;" horiz-adv-x="1792"
-d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
- <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1408"
-d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q113 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65
-q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
- <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664"
-d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
- <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408"
-d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30
-t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5
-h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
- <glyph glyph-name="linux" unicode="&#xf17c;"
-d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-10 -11 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z
-M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7
-q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15
-q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5
-t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19
-q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63
-q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18q-2 -1 -4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92
-q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152
-q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-6 0 -8 -2t0 -4
-t5 -3q14 -4 18 -31q0 -3 8 2q2 2 2 3zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5
-t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43
-q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49
-t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54
-q110 143 124 195q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5
-t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5
-t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
- <glyph glyph-name="dribble" unicode="&#xf17d;"
-d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81
-t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19
-q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -5 6.5 -17t7.5 -17q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6
-t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="skype" unicode="&#xf17e;"
-d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5
-t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5
-q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80
-q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
- <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1280"
-d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z
-M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324
-l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
- <glyph glyph-name="trello" unicode="&#xf181;"
-d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408
-q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
- <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280"
-d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43
-q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024"
-d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z
-M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="gittip" unicode="&#xf184;"
-d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="sun" unicode="&#xf185;" horiz-adv-x="1792"
-d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4
-l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94
-q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
- <glyph glyph-name="_366" unicode="&#xf186;"
-d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61
-t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
- <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1792"
-d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536
-q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
- <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1664"
-d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207
-q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19
-t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
- <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1920"
-d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-40 -51 -55 -72t-30.5 -49.5t-12 -42t13 -34.5t32.5 -43t57 -53q4 -2 5 -4q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58
-t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6
-q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q16 19 38 30q53 26 239 24
-q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2
-q39 5 64 -2.5t31 -16.5z" />
- <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792"
-d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12
-q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422
-q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178
-q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z
-M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
- <glyph glyph-name="renren" unicode="&#xf18b;"
-d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495
-q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
- <glyph glyph-name="_372" unicode="&#xf18c;" horiz-adv-x="1408"
-d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5
-t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56
-t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -4 1 -50t-1 -72q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5
-t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
- <glyph glyph-name="stack_exchange" unicode="&#xf18d;" horiz-adv-x="1280"
-d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z
-" />
- <glyph glyph-name="_374" unicode="&#xf18e;"
-d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
-t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="arrow_circle_alt_left" unicode="&#xf190;"
-d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
-t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_376" unicode="&#xf191;"
-d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z
-M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="dot_circle_alt" unicode="&#xf192;"
-d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5
-t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_378" unicode="&#xf193;" horiz-adv-x="1664"
-d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128
-q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 17 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
- <glyph glyph-name="vimeo_square" unicode="&#xf194;"
-d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179
-q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_380" unicode="&#xf195;" horiz-adv-x="1152"
-d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160
-q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
- <glyph glyph-name="plus_square_o" unicode="&#xf196;" horiz-adv-x="1408"
-d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832
-q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_382" unicode="&#xf197;" horiz-adv-x="2176"
-d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40
-t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29
-q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
- <glyph glyph-name="_383" unicode="&#xf198;" horiz-adv-x="1664"
-d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9
-q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102
-t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
- <glyph glyph-name="_384" unicode="&#xf199;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69
-q-47 32 -142 92.5t-142 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13
-t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
- <glyph glyph-name="_385" unicode="&#xf19a;" horiz-adv-x="1792"
-d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5
-t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21
-t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286
-t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273
-t273 -182.5t331.5 -68z" />
- <glyph glyph-name="_386" unicode="&#xf19b;" horiz-adv-x="1792"
-d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
- <glyph glyph-name="_387" unicode="&#xf19c;" horiz-adv-x="2048"
-d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64
-q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
- <glyph glyph-name="_388" unicode="&#xf19d;" horiz-adv-x="2304"
-d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433
-q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
- <glyph glyph-name="_389" unicode="&#xf19e;"
-d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q44 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0
-q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
- <glyph glyph-name="uniF1A0" unicode="&#xf1a0;"
-d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5
-t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
- <glyph glyph-name="f1a1" unicode="&#xf1a1;" horiz-adv-x="1792"
-d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26
-t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37
-q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191
-t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_392" unicode="&#xf1a2;"
-d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54
-q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83
-q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
-q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_393" unicode="&#xf1a3;"
-d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150
-v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103
-t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="f1a4" unicode="&#xf1a4;" horiz-adv-x="1920"
-d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328
-v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
- <glyph glyph-name="_395" unicode="&#xf1a5;"
-d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
-t84.5 -203.5z" />
- <glyph glyph-name="_396" unicode="&#xf1a6;" horiz-adv-x="2048"
-d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
-v-369h123z" />
- <glyph glyph-name="_397" unicode="&#xf1a7;"
-d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101
-v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
-q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_398" unicode="&#xf1a8;" horiz-adv-x="2038"
-d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14
-q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24
-q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33
-q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5
-t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43
-q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5
-t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13
-t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
- <glyph glyph-name="_399" unicode="&#xf1a9;"
-d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10
-q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14
-q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14
-t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44
-q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
- <glyph glyph-name="_400" unicode="&#xf1aa;"
-d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z
-M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5
-t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5
-q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126
-t135.5 51q85 0 145 -60.5t60 -145.5z" />
- <glyph glyph-name="f1ab" unicode="&#xf1ab;"
-d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5
-q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28
-q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z
-M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11
-q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q107 36 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5
-q20 0 20 -21v-418z" />
- <glyph glyph-name="_402" unicode="&#xf1ac;" horiz-adv-x="1792"
-d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48
-l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23
-t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128
-q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128
-q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
- <glyph glyph-name="_403" unicode="&#xf1ad;"
-d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9
-t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64
-q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
-q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9
-t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64
-q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
-q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9
-t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
- <glyph glyph-name="_404" unicode="&#xf1ae;" horiz-adv-x="1280"
-d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68q29 28 68.5 28t67.5 -28l228 -228h368l228 228q28 28 68 28t68 -28q28 -29 28 -68.5t-28 -67.5zM864 1152
-q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="uniF1B1" unicode="&#xf1b0;" horiz-adv-x="1664"
-d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5
-q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819
-q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5
-t100.5 134t141.5 55.5z" />
- <glyph glyph-name="_406" unicode="&#xf1b1;" horiz-adv-x="768"
-d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
- <glyph glyph-name="_407" unicode="&#xf1b2;" horiz-adv-x="1792"
-d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z
-" />
- <glyph glyph-name="_408" unicode="&#xf1b3;" horiz-adv-x="2304"
-d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67
-t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-4 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70
-v-400l434 -186q36 -16 57 -48t21 -70z" />
- <glyph glyph-name="_409" unicode="&#xf1b4;" horiz-adv-x="2048"
-d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658
-q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204
-q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
- <glyph glyph-name="_410" unicode="&#xf1b5;"
-d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5
-t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217
-t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
- <glyph glyph-name="_411" unicode="&#xf1b6;" horiz-adv-x="1792"
-d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5
-q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89
-q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
- <glyph glyph-name="_412" unicode="&#xf1b7;"
-d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5
-q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5
-q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z
-" />
- <glyph glyph-name="_413" unicode="&#xf1b8;" horiz-adv-x="1792"
-d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188
-l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5
-t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1
-q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
- <glyph glyph-name="_414" unicode="&#xf1b9;" horiz-adv-x="2048"
-d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384
-q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5
-l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="_415" unicode="&#xf1ba;" horiz-adv-x="2048"
-d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5
-t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z
-M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
- <glyph glyph-name="_416" unicode="&#xf1bb;"
-d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384
-q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
- <glyph glyph-name="_417" unicode="&#xf1bc;"
-d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64
-q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37
-q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_418" unicode="&#xf1bd;" horiz-adv-x="1024"
-d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
- <glyph glyph-name="_419" unicode="&#xf1be;" horiz-adv-x="2304"
-d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11
-q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245
-q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785
-l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242
-q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236
-q0 -11 -8 -19t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786
-q-13 2 -22 11t-9 22v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
- <glyph glyph-name="uniF1C0" unicode="&#xf1c0;"
-d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127
-t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5
-t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
- <glyph glyph-name="uniF1C1" unicode="&#xf1c1;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197
-q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8
-q-1 1 -1 2q-1 2 -1 3q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
- <glyph glyph-name="_422" unicode="&#xf1c2;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4q0 3 -0.5 6.5t-1.5 8t-1 6.5q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5
-t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300z" />
- <glyph glyph-name="_423" unicode="&#xf1c3;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107
-h-290v-107h68l189 -272l-194 -283h-68z" />
- <glyph glyph-name="_424" unicode="&#xf1c4;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
- <glyph glyph-name="_425" unicode="&#xf1c5;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
- <glyph glyph-name="_426" unicode="&#xf1c6;"
-d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400
-v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79
-q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
- <glyph glyph-name="_427" unicode="&#xf1c7;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5
-q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
- <glyph glyph-name="_428" unicode="&#xf1c8;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
- <glyph glyph-name="_429" unicode="&#xf1c9;"
-d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
-M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243
-l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
- <glyph glyph-name="_430" unicode="&#xf1ca;"
-d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406
-q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
- <glyph glyph-name="_431" unicode="&#xf1cb;" horiz-adv-x="1792"
-d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
-q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
- <glyph glyph-name="_432" unicode="&#xf1cc;" horiz-adv-x="2048"
-d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94
-q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55
-t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97l93 -108q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z" />
- <glyph glyph-name="_433" unicode="&#xf1cd;" horiz-adv-x="1792"
-d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194
-q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5
-t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
- <glyph glyph-name="_434" unicode="&#xf1ce;" horiz-adv-x="1792"
-d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5
-t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
- <glyph glyph-name="uniF1D0" unicode="&#xf1d0;" horiz-adv-x="1792"
-d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41
-t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170
-t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136
-q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
- <glyph glyph-name="uniF1D1" unicode="&#xf1d1;" horiz-adv-x="1792"
-d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251
-l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162
-q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33
-q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5
-t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
-t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF1D2" unicode="&#xf1d2;"
-d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85
-q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392
-q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072
-q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_438" unicode="&#xf1d3;" horiz-adv-x="1792"
-d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58
-q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47
-q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171
-v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
- <glyph glyph-name="_439" unicode="&#xf1d4;"
-d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="uniF1D5" unicode="&#xf1d5;" horiz-adv-x="1280"
-d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5
-t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153
-t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
- <glyph glyph-name="uniF1D6" unicode="&#xf1d6;" horiz-adv-x="1792"
-d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5
-q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20
-t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5
-t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
- <glyph glyph-name="uniF1D7" unicode="&#xf1d7;" horiz-adv-x="2048"
-d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25
-q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5
-q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109
-q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
- <glyph glyph-name="_443" unicode="&#xf1d8;" horiz-adv-x="1792"
-d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
- <glyph glyph-name="_444" unicode="&#xf1d9;" horiz-adv-x="1792"
-d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137
-l863 639l-478 -797z" />
- <glyph glyph-name="_445" unicode="&#xf1da;"
-d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
-t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23
-t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_446" unicode="&#xf1db;"
-d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
-t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_447" unicode="&#xf1dc;" horiz-adv-x="1792"
-d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15
-t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2
-t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160
-q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5
-q0 -26 -12 -48t-36 -22z" />
- <glyph glyph-name="_448" unicode="&#xf1dd;" horiz-adv-x="1280"
-d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179
-q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
- <glyph glyph-name="_449" unicode="&#xf1de;"
-d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256
-q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
- <glyph glyph-name="uniF1E0" unicode="&#xf1e0;"
-d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5
-t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
- <glyph glyph-name="_451" unicode="&#xf1e1;"
-d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5
-t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_452" unicode="&#xf1e2;" horiz-adv-x="1792"
-d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5
-t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91
-q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9
-t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
- <glyph glyph-name="_453" unicode="&#xf1e3;" horiz-adv-x="1792"
-d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323
-l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
- <glyph glyph-name="_454" unicode="&#xf1e4;" horiz-adv-x="1792"
-d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
-v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192
-q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23
-zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5
-t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
- <glyph glyph-name="_455" unicode="&#xf1e5;" horiz-adv-x="1792"
-d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z
-M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_456" unicode="&#xf1e6;" horiz-adv-x="1792"
-d="M1755 1083q37 -38 37 -90.5t-37 -90.5l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234
-l401 400q38 37 91 37t90 -37z" />
- <glyph glyph-name="_457" unicode="&#xf1e7;" horiz-adv-x="1792"
-d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5
-t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z
-M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q4 -2 11.5 -7
-t10.5 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
- <glyph glyph-name="_458" unicode="&#xf1e8;" horiz-adv-x="1792"
-d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
- <glyph glyph-name="_459" unicode="&#xf1e9;"
-d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36
-q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q71 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5
-t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87
-q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
- <glyph glyph-name="_460" unicode="&#xf1ea;" horiz-adv-x="2048"
-d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19
-t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
- <glyph glyph-name="_461" unicode="&#xf1eb;" horiz-adv-x="2048"
-d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121
-q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z
-M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
- <glyph glyph-name="_462" unicode="&#xf1ec;" horiz-adv-x="1792"
-d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
-t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5
-t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5
-t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
-M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38
-h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_463" unicode="&#xf1ed;"
-d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246
-q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598
-q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
- <glyph glyph-name="_464" unicode="&#xf1ee;" horiz-adv-x="1792"
-d="M441 864q33 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640
-q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
- <glyph glyph-name="uniF1F0" unicode="&#xf1f0;" horiz-adv-x="2304"
-d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27
-q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128
-q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_466" unicode="&#xf1f1;" horiz-adv-x="2304"
-d="M1119 1195q-128 85 -281 85q-103 0 -197.5 -40.5t-162.5 -108.5t-108.5 -162t-40.5 -197q0 -104 40.5 -198t108.5 -162t162 -108.5t198 -40.5q153 0 281 85q-131 107 -178 265.5t0.5 316.5t177.5 265zM1152 1171q-126 -99 -172 -249.5t-0.5 -300.5t172.5 -249
-q127 99 172.5 249t-0.5 300.5t-172 249.5zM1185 1195q130 -107 177.5 -265.5t0.5 -317t-178 -264.5q128 -85 281 -85q104 0 198 40.5t162 108.5t108.5 162t40.5 198q0 103 -40.5 197t-108.5 162t-162.5 108.5t-197.5 40.5q-153 0 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17z
-M1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-2h-3v3h3h2v-1zM1947 7h3l-4 5h2l1 1q1 1 1 3t-1 3l-1 1h-3h-6v-13h3v5h1zM685 75q0 19 11 31t30 12q18 0 29 -12.5t11 -30.5q0 -19 -11 -31t-29 -12q-19 0 -30 12t-11 31zM1158 119q30 0 35 -32
-h-70q5 32 35 32zM1514 75q0 19 11 31t29 12t29.5 -12.5t11.5 -30.5q0 -19 -11 -31t-30 -12q-18 0 -29 12t-11 31zM1786 75q0 18 11.5 30.5t29.5 12.5t29.5 -12.5t11.5 -30.5q0 -19 -11.5 -31t-29.5 -12t-29.5 12.5t-11.5 30.5zM1944 3q-2 0 -4 1q-1 0 -3 2t-2 3q-1 2 -1 4
-q0 3 1 4q0 2 2 4l1 1q2 0 2 1q2 1 4 1q3 0 4 -1l4 -2l2 -4v-1q1 -2 1 -3l-1 -1v-3t-1 -1l-1 -2q-2 -2 -4 -2q-1 -1 -4 -1zM599 7h30v85q0 24 -14.5 38.5t-39.5 15.5q-32 0 -47 -24q-14 24 -45 24q-24 0 -39 -20v16h-30v-135h30v75q0 36 33 36q30 0 30 -36v-75h29v75
-q0 36 33 36q30 0 30 -36v-75zM765 7h29v68v67h-29v-16q-17 20 -43 20q-29 0 -48 -20t-19 -51t19 -51t48 -20q28 0 43 20v-17zM943 48q0 34 -47 40l-14 2q-23 4 -23 14q0 15 25 15q23 0 43 -11l12 24q-22 14 -55 14q-26 0 -41 -12t-15 -32q0 -33 47 -39l13 -2q24 -4 24 -14
-q0 -17 -31 -17q-25 0 -45 14l-13 -23q25 -17 58 -17q29 0 45.5 12t16.5 32zM1073 14l-8 25q-13 -7 -26 -7q-19 0 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61q0 -50 47 -50q21 0 36 10zM1159 146q-29 0 -48 -20t-19 -51q0 -32 19.5 -51.5t49.5 -19.5q33 0 55 19l-14 22
-q-18 -15 -39 -15q-34 0 -41 33h101v12q0 32 -18 51.5t-46 19.5zM1318 146q-23 0 -35 -20v16h-30v-135h30v76q0 35 29 35q10 0 18 -4l9 28q-9 4 -21 4zM1348 75q0 -31 19.5 -51t52.5 -20q29 0 48 16l-14 24q-18 -13 -35 -12q-18 0 -29.5 12t-11.5 31t11.5 31t29.5 12
-q19 0 35 -12l14 24q-20 16 -48 16q-33 0 -52.5 -20t-19.5 -51zM1593 7h30v68v67h-30v-16q-15 20 -42 20q-29 0 -48.5 -20t-19.5 -51t19.5 -51t48.5 -20q28 0 42 20v-17zM1726 146q-23 0 -35 -20v16h-29v-135h29v76q0 35 29 35q10 0 18 -4l9 28q-8 4 -21 4zM1866 7h29v68v122
-h-29v-71q-15 20 -43 20t-47.5 -20.5t-19.5 -50.5t19.5 -50.5t47.5 -20.5q29 0 43 20v-17zM1944 27l-2 -1h-3q-2 -1 -4 -3q-3 -1 -3 -4q-1 -2 -1 -6q0 -3 1 -5q0 -2 3 -4q2 -2 4 -3t5 -1q4 0 6 1q0 1 2 2l2 1q1 1 3 4q1 2 1 5q0 4 -1 6q-1 1 -3 4q0 1 -2 2l-2 1q-1 0 -3 0.5
-t-3 0.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_467" unicode="&#xf1f2;" horiz-adv-x="2304"
-d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42
-q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604
-v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569
-q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73
-t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
- <glyph glyph-name="f1f3" unicode="&#xf1f3;" horiz-adv-x="2304"
-d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z
-M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260
-l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279
-v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040
-q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168
-q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5
-t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21
-h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5
-t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
- <glyph glyph-name="_469" unicode="&#xf1f4;" horiz-adv-x="2304"
-d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16
-t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76
-q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59
-t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489
-l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66
-q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_470" unicode="&#xf1f5;" horiz-adv-x="2304"
-d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109
-q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118
-q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151
-q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31
-q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_471" unicode="&#xf1f6;" horiz-adv-x="2048"
-d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5
-l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5
-l418 363q10 8 23.5 7t21.5 -11z" />
- <glyph glyph-name="_472" unicode="&#xf1f7;" horiz-adv-x="2048"
-d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128
-q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161
-q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
- <glyph glyph-name="_473" unicode="&#xf1f8;" horiz-adv-x="1408"
-d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704
-q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167
-q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_474" unicode="&#xf1f9;"
-d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5
-t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5
-t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_475" unicode="&#xf1fa;"
-d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53
-q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24
-t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61
-t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
- <glyph glyph-name="_476" unicode="&#xf1fb;" horiz-adv-x="1792"
-d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10
-t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
- <glyph glyph-name="f1fc" unicode="&#xf1fc;" horiz-adv-x="1792"
-d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5
-t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
- <glyph glyph-name="_478" unicode="&#xf1fd;" horiz-adv-x="1792"
-d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11q24 0 44 -7t31 -15t33 -27q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5
-t47 37.5q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-24 0 -44 7t-31 15t-33 27q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38
-t-58 27t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448
-h256v448h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5
-q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
- <glyph glyph-name="_479" unicode="&#xf1fe;" horiz-adv-x="2048"
-d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
- <glyph glyph-name="_480" unicode="&#xf200;" horiz-adv-x="1792"
-d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_481" unicode="&#xf201;" horiz-adv-x="2048"
-d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9
-t9 -23z" />
- <glyph glyph-name="_482" unicode="&#xf202;" horiz-adv-x="1792"
-d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20
-q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50
-t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1
-q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
- <glyph glyph-name="_483" unicode="&#xf203;"
-d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73
-q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110
-q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960
-q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_484" unicode="&#xf204;" horiz-adv-x="2048"
-d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5
-t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5
-t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
- <glyph glyph-name="_485" unicode="&#xf205;" horiz-adv-x="2048"
-d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5
-t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
- <glyph glyph-name="_486" unicode="&#xf206;" horiz-adv-x="2304"
-d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94
-q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469
-q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400
-q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
- <glyph glyph-name="_487" unicode="&#xf207;"
-d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5
-h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
-t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
- <glyph glyph-name="_488" unicode="&#xf208;" horiz-adv-x="2048"
-d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327
-q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5
-q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
- <glyph glyph-name="_489" unicode="&#xf209;" horiz-adv-x="1280"
-d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q17 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119
-t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5
-t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14
-q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88
-q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5
-t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
- <glyph glyph-name="_490" unicode="&#xf20a;" horiz-adv-x="2048"
-d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206
-q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307
-t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14
-t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
- <glyph glyph-name="_491" unicode="&#xf20b;"
-d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5
-t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
- <glyph glyph-name="_492" unicode="&#xf20c;"
-d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55
-q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410
-q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
- <glyph glyph-name="_493" unicode="&#xf20d;"
-d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
- <glyph glyph-name="_494" unicode="&#xf20e;" horiz-adv-x="2048"
-d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335
-q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5
-q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360l15 -6l188 199v347l-187 194q-13 -8 -29 -10zM986 1438
-h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13zM552 226h402l64 66
-l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946
-l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82
-zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
- <glyph glyph-name="f210" unicode="&#xf210;"
-d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
- <glyph glyph-name="_496" unicode="&#xf211;"
-d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384
-q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
- <glyph glyph-name="f212" unicode="&#xf212;" horiz-adv-x="2048"
-d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021
-q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25
-q209 0 374 -102q172 107 374 102z" />
- <glyph glyph-name="_498" unicode="&#xf213;" horiz-adv-x="2048"
-d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101
-q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284
-q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
- <glyph glyph-name="_499" unicode="&#xf214;"
-d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
-l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
-v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
-M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
-v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51
-h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5
-t-43 -34t-16.5 -53.5z" />
- <glyph glyph-name="_500" unicode="&#xf215;" horiz-adv-x="2048"
-d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832
-q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
- <glyph glyph-name="_501" unicode="&#xf216;" horiz-adv-x="2048"
-d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126t-103.5 132.5t-108.5 126.5t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5
-t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113
-t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5
-q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
- <glyph glyph-name="_502" unicode="&#xf217;" horiz-adv-x="1664"
-d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
-t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
-q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
- <glyph glyph-name="_503" unicode="&#xf218;" horiz-adv-x="1664"
-d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
-t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
-q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
- <glyph glyph-name="_504" unicode="&#xf219;" horiz-adv-x="2048"
-d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20
-l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
- <glyph glyph-name="_505" unicode="&#xf21a;" horiz-adv-x="2048"
-d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
-q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83
-q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314
-v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
-q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
- <glyph glyph-name="_506" unicode="&#xf21b;"
-d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14
-t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5
-q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31
-t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
- <glyph glyph-name="_507" unicode="&#xf21c;" horiz-adv-x="2304"
-d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5
-t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105
-l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226
-t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
- <glyph glyph-name="_508" unicode="&#xf21d;"
-d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12
-q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384
-q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5
-t158.5 -65.5t65.5 -158.5z" />
- <glyph glyph-name="_509" unicode="&#xf21e;" horiz-adv-x="1792"
-d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221
-q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124
-t127 -344z" />
- <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1280"
-d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292
-q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
- <glyph glyph-name="_511" unicode="&#xf222;"
-d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5
-q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_512" unicode="&#xf223;" horiz-adv-x="1280"
-d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5
-t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
-t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_513" unicode="&#xf224;"
-d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
-q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
-t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_514" unicode="&#xf225;" horiz-adv-x="1792"
-d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
-q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9
-t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5
-t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_515" unicode="&#xf226;" horiz-adv-x="1792"
-d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23
-t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391
-q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391
-q0 -226 -154 -391q103 -57 218 -57z" />
- <glyph glyph-name="_516" unicode="&#xf227;" horiz-adv-x="1920"
-d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230
-q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9
-t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128
-q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -28 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
- <glyph glyph-name="_517" unicode="&#xf228;" horiz-adv-x="2048"
-d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23
-t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9
-t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5
-t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
- <glyph glyph-name="_518" unicode="&#xf229;"
-d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5
-t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
-t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_519" unicode="&#xf22a;" horiz-adv-x="1280"
-d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22
-t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5
-t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_520" unicode="&#xf22b;" horiz-adv-x="2048"
-d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5
-t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5
-t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_521" unicode="&#xf22c;" horiz-adv-x="1280"
-d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5
-t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
- <glyph glyph-name="_522" unicode="&#xf22d;" horiz-adv-x="1280"
-d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123
-t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
- <glyph glyph-name="_523" unicode="&#xf22e;" horiz-adv-x="1792"
- />
- <glyph glyph-name="_524" unicode="&#xf22f;" horiz-adv-x="1792"
- />
- <glyph glyph-name="_525" unicode="&#xf230;"
-d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
- <glyph glyph-name="_526" unicode="&#xf231;" horiz-adv-x="1280"
-d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5
-l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5
-q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
- <glyph glyph-name="_527" unicode="&#xf232;"
-d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5
-t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233
-l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
- <glyph glyph-name="_528" unicode="&#xf233;" horiz-adv-x="1792"
-d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216
-q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
- <glyph glyph-name="_529" unicode="&#xf234;" horiz-adv-x="2048"
-d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5
-t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5
-t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
- <glyph glyph-name="_530" unicode="&#xf235;" horiz-adv-x="2048"
-d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136
-q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69
-t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
- <glyph glyph-name="_531" unicode="&#xf236;" horiz-adv-x="2048"
-d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704
-q-26 0 -45 -19t-19 -45v-384h1152z" />
- <glyph glyph-name="_532" unicode="&#xf237;"
-d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
- <glyph glyph-name="_533" unicode="&#xf238;"
-d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56
-t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
- <glyph glyph-name="_534" unicode="&#xf239;"
-d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47
-t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
- <glyph glyph-name="_535" unicode="&#xf23a;" horiz-adv-x="1792"
-d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116
-q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
- <glyph glyph-name="_536" unicode="&#xf23b;"
-d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
- <glyph glyph-name="_537" unicode="&#xf23c;" horiz-adv-x="2296"
-d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5
-q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5
-q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42
-q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37
-q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5
-q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139
-q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 5 5 8q16 18 60 23h13q5 18 19 30t33 8
-t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132
-q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132
-q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z
-M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-105 2 -211 0v1q-1 -27 2.5 -86
-t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103
-q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34q0 2 0.5 3.5t1.5 3t1 2.5v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4
-l-10 -2.5t-12 -2l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-6 -1 -9 -1q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130
-t-73 70q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -1 -1 -4t-1 -5q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150
-q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12
-q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
- <glyph glyph-name="_538" unicode="&#xf23d;" horiz-adv-x="2304"
-d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5
-t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5
-t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
- <glyph glyph-name="_539" unicode="&#xf23e;" horiz-adv-x="1792"
-d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348
-t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23
-t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96
-q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512
-q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
- <glyph glyph-name="_540" unicode="&#xf240;" horiz-adv-x="2304"
-d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113
-v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
- <glyph glyph-name="_541" unicode="&#xf241;" horiz-adv-x="2304"
-d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
-h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_542" unicode="&#xf242;" horiz-adv-x="2304"
-d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
-h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_543" unicode="&#xf243;" horiz-adv-x="2304"
-d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
-h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_544" unicode="&#xf244;" horiz-adv-x="2304"
-d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23
-v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
- <glyph glyph-name="_545" unicode="&#xf245;" horiz-adv-x="1280"
-d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
- <glyph glyph-name="_546" unicode="&#xf246;" horiz-adv-x="1024"
-d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
- <glyph glyph-name="_547" unicode="&#xf247;" horiz-adv-x="2048"
-d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
-h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
- <glyph glyph-name="_548" unicode="&#xf248;" horiz-adv-x="2304"
-d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
-v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
- <glyph glyph-name="_549" unicode="&#xf249;"
-d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
- <glyph glyph-name="_550" unicode="&#xf24a;"
-d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68
-z" />
- <glyph glyph-name="_551" unicode="&#xf24b;" horiz-adv-x="2304"
-d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5
-t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88
-t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90
-t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_552" unicode="&#xf24c;" horiz-adv-x="2304"
-d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294
-t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z
-M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_553" unicode="&#xf24d;" horiz-adv-x="1792"
-d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113
-zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
- <glyph glyph-name="_554" unicode="&#xf24e;" horiz-adv-x="2304"
-d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64
-q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91
-t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5
-t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
- <glyph glyph-name="_555" unicode="&#xf250;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5
-t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
- <glyph glyph-name="_556" unicode="&#xf251;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
- <glyph glyph-name="_557" unicode="&#xf252;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
- <glyph glyph-name="_558" unicode="&#xf253;"
-d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
-t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196
-h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
- <glyph glyph-name="_559" unicode="&#xf254;"
-d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87
-t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9
-h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
- <glyph glyph-name="_560" unicode="&#xf255;"
-d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25
-q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27
-t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21
-q72 69 174 69z" />
- <glyph glyph-name="_561" unicode="&#xf256;" horiz-adv-x="1792"
-d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33
-t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52
-h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
- <glyph glyph-name="_562" unicode="&#xf257;" horiz-adv-x="1792"
-d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668
-q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17
-t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5
-t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5
-q0 -42 -23 -78t-61 -53l-310 -141h91z" />
- <glyph glyph-name="_563" unicode="&#xf258;" horiz-adv-x="2048"
-d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32
-q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68
-q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
- <glyph glyph-name="_564" unicode="&#xf259;" horiz-adv-x="2048"
-d="M459 -256q-77 0 -137.5 47.5t-79.5 122.5l-101 401q-13 57 -13 108q0 45 -5 67l-116 477q-7 27 -7 57q0 93 62 161t155 78q17 85 82.5 139t152.5 54q83 0 148 -51.5t85 -132.5l83 -348l103 428q20 81 85 132.5t148 51.5q89 0 155.5 -57.5t80.5 -144.5q92 -10 152 -79
-t60 -162q0 -24 -7 -59l-123 -512q10 7 37.5 28.5t38.5 29.5t35 23t41 20.5t41.5 11t49.5 5.5q105 0 180 -74t75 -179q0 -62 -28.5 -118t-78.5 -94l-507 -380q-68 -51 -153 -51h-694zM1104 1408q-38 0 -68.5 -24t-39.5 -62l-164 -682h-127l-145 602q-9 38 -39.5 62t-68.5 24
-q-48 0 -80 -33t-32 -80q0 -15 3 -28l132 -547h-26l-99 408q-9 37 -40 62.5t-69 25.5q-47 0 -80 -33t-33 -79q0 -14 3 -26l116 -478q7 -28 9 -86t10 -88l100 -401q8 -32 34 -52.5t59 -20.5h694q42 0 76 26l507 379q56 43 56 110q0 52 -37.5 88.5t-89.5 36.5q-43 0 -77 -26
-l-307 -230v227q0 4 32 138t68 282t39 161q4 18 4 29q0 47 -32 81t-79 34q-39 0 -69.5 -24t-39.5 -62l-116 -482h-26l150 624q3 14 3 28q0 48 -31.5 82t-79.5 34z" />
- <glyph glyph-name="_565" unicode="&#xf25a;" horiz-adv-x="1792"
-d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5
-q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5
-v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32
-v-384h32z" />
- <glyph glyph-name="_566" unicode="&#xf25b;"
-d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181
-v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46
-q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5
-q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308
-q0 -53 37.5 -90.5t90.5 -37.5h668z" />
- <glyph glyph-name="_567" unicode="&#xf25c;" horiz-adv-x="1973"
-d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5
-t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141
-q13 0 22 -8.5t10 -20.5z" />
- <glyph glyph-name="_568" unicode="&#xf25d;" horiz-adv-x="1792"
-d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109
-t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640
-q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_569" unicode="&#xf25e;" horiz-adv-x="1792"
-d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78
-q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5
-t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376
-q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191
-t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
- <glyph glyph-name="f260" unicode="&#xf260;" horiz-adv-x="2048"
-d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
- <glyph glyph-name="f261" unicode="&#xf261;" horiz-adv-x="1792"
-d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191
-t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_572" unicode="&#xf262;" horiz-adv-x="2304"
-d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57
-t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197
-t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5
-t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5
-t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5
-q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
- <glyph glyph-name="f263" unicode="&#xf263;" horiz-adv-x="1280"
-d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5
-t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94
-q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
- <glyph glyph-name="_574" unicode="&#xf264;"
-d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32
-q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5
-zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="_575" unicode="&#xf265;" horiz-adv-x="1720"
-d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33
-l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
- <glyph glyph-name="_576" unicode="&#xf266;" horiz-adv-x="2304"
-d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540
-q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81
-l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
- <glyph glyph-name="_577" unicode="&#xf267;" horiz-adv-x="1792"
-d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640
-q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5
-t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5
-t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5
-t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191
-t191 -286t71 -348z" />
- <glyph glyph-name="_578" unicode="&#xf268;" horiz-adv-x="1792"
-d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962
-q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
- <glyph glyph-name="_579" unicode="&#xf269;" horiz-adv-x="1792"
-d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5
-q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5
-q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
- <glyph glyph-name="_580" unicode="&#xf26a;" horiz-adv-x="1792"
-d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339
-q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z
-" />
- <glyph glyph-name="_581" unicode="&#xf26b;" horiz-adv-x="1792"
-d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606
-q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z
-M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
- <glyph glyph-name="_582" unicode="&#xf26c;" horiz-adv-x="2048"
-d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23
-v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
- <glyph glyph-name="_583" unicode="&#xf26d;" horiz-adv-x="1792"
-d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34
-h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100
-q-68 175 -180 287z" />
- <glyph glyph-name="_584" unicode="&#xf26e;"
-d="M1401 -11l-6 -6q-113 -113 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6
-q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13
-q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 33 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249
-q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 33 -6t30 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183
-q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46
-t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
- <glyph glyph-name="_585" unicode="&#xf270;" horiz-adv-x="1792"
-d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z
-M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30
-q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57
-t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133
-q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
- <glyph glyph-name="_586" unicode="&#xf271;" horiz-adv-x="1792"
-d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9
-h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224
-v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
- <glyph glyph-name="_587" unicode="&#xf272;" horiz-adv-x="1792"
-d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23
-t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47
-t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_588" unicode="&#xf273;" horiz-adv-x="1792"
-d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z
-M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
-q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_589" unicode="&#xf274;" horiz-adv-x="1792"
-d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23
-t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47
-t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
- <glyph glyph-name="_590" unicode="&#xf275;" horiz-adv-x="1792"
-d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
- <glyph glyph-name="_591" unicode="&#xf276;" horiz-adv-x="1024"
-d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q62 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249
-q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
- <glyph glyph-name="_592" unicode="&#xf277;" horiz-adv-x="1792"
-d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768
-q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
- <glyph glyph-name="_593" unicode="&#xf278;" horiz-adv-x="2048"
-d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173
-v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
- <glyph glyph-name="_594" unicode="&#xf279;" horiz-adv-x="1792"
-d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472
-q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
- <glyph glyph-name="_595" unicode="&#xf27a;" horiz-adv-x="1792"
-d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5
-t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37
-t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
- <glyph glyph-name="_596" unicode="&#xf27b;" horiz-adv-x="1792"
-d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5
-t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5
-t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51
-t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
- <glyph glyph-name="_597" unicode="&#xf27c;" horiz-adv-x="1024"
-d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
- <glyph glyph-name="_598" unicode="&#xf27d;" horiz-adv-x="1792"
-d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246
-q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
- <glyph glyph-name="f27e" unicode="&#xf27e;"
-d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
- <glyph glyph-name="uniF280" unicode="&#xf280;"
-d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72
-h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275
-l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
- <glyph glyph-name="uniF281" unicode="&#xf281;" horiz-adv-x="1792"
-d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5
-l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44
-t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106
-q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
- <glyph glyph-name="_602" unicode="&#xf282;" horiz-adv-x="1792"
-d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53
-q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
- <glyph glyph-name="_603" unicode="&#xf283;" horiz-adv-x="2304"
-d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
- <glyph glyph-name="_604" unicode="&#xf284;" horiz-adv-x="1792"
-d="M1584 246l-218 111q-74 -120 -196.5 -189t-263.5 -69q-147 0 -271 72t-196 196t-72 270q0 110 42.5 209.5t115 172t172 115t209.5 42.5q131 0 247.5 -60.5t192.5 -168.5l215 125q-110 169 -286.5 265t-378.5 96q-161 0 -308 -63t-253 -169t-169 -253t-63 -308t63 -308
-t169 -253t253 -169t308 -63q213 0 397.5 107t290.5 292zM1030 643l693 -352q-116 -253 -334.5 -400t-492.5 -147q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q260 0 470.5 -133.5t335.5 -366.5zM1543 640h-39v-160h-96v352h136q32 0 54.5 -20
-t28.5 -48t1 -56t-27.5 -48t-57.5 -20z" />
- <glyph glyph-name="uniF285" unicode="&#xf285;" horiz-adv-x="1792"
-d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
- <glyph glyph-name="uniF286" unicode="&#xf286;" horiz-adv-x="1792"
-d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96
-q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5
-q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96
-q16 0 16 -16z" />
- <glyph glyph-name="_607" unicode="&#xf287;" horiz-adv-x="2304"
-d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96
-q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5
-t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
- <glyph glyph-name="_608" unicode="&#xf288;" horiz-adv-x="1792"
-d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348
-t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_609" unicode="&#xf289;" horiz-adv-x="2304"
-d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22
-q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5
-q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13
-q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
- <glyph glyph-name="_610" unicode="&#xf28a;"
-d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83
-t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20
-q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5
-t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
- <glyph glyph-name="_611" unicode="&#xf28b;"
-d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103
-t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_612" unicode="&#xf28c;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
-t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
- <glyph glyph-name="_613" unicode="&#xf28d;"
-d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
-t103 -385.5z" />
- <glyph glyph-name="_614" unicode="&#xf28e;"
-d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
-t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
- <glyph glyph-name="_615" unicode="&#xf290;" horiz-adv-x="1792"
-d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5
-t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="_616" unicode="&#xf291;" horiz-adv-x="2048"
-d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5
-t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416
-q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441
-h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
- <glyph glyph-name="_617" unicode="&#xf292;" horiz-adv-x="1792"
-d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12
-q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311
-q15 0 25 -12q9 -12 6 -28z" />
- <glyph glyph-name="_618" unicode="&#xf293;"
-d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5
-t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
- <glyph glyph-name="_619" unicode="&#xf294;" horiz-adv-x="1024"
-d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
- <glyph glyph-name="_620" unicode="&#xf295;"
-d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5
-t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
-t271.5 -112.5t112.5 -271.5z" />
- <glyph glyph-name="_621" unicode="&#xf296;" horiz-adv-x="1792"
-d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
- <glyph glyph-name="_622" unicode="&#xf297;" horiz-adv-x="1792"
-d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111
-q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
- <glyph glyph-name="_623" unicode="&#xf298;"
-d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14
-t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
- <glyph glyph-name="_624" unicode="&#xf299;" horiz-adv-x="1792"
-d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57
-q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285
-q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
- <glyph glyph-name="_625" unicode="&#xf29a;" horiz-adv-x="1792"
-d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42
-q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
-M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298
-t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="_626" unicode="&#xf29b;"
-d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300
-l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z
-M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
- <glyph glyph-name="_627" unicode="&#xf29c;"
-d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5
-t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5
-t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5
-t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="_628" unicode="&#xf29d;" horiz-adv-x="1408"
-d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457
-q-67 -192 -92 -234q-15 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521
-q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661
-q3 -1 7 1t7 4l3 2q11 9 11 17z" />
- <glyph glyph-name="_629" unicode="&#xf29e;" horiz-adv-x="2304"
-d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10
-t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5
-t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5
-h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96
-t9.5 -70.5z" />
- <glyph glyph-name="uniF2A0" unicode="&#xf2a0;" horiz-adv-x="1408"
-d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5
-q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127
-l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272
-t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249
-q-18 -19 -45 -19z" />
- <glyph glyph-name="uniF2A1" unicode="&#xf2a1;" horiz-adv-x="2176"
-d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352
-q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864
-q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136
-t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56
-t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56
-t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136
-t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
- <glyph glyph-name="uniF2A2" unicode="&#xf2a2;" horiz-adv-x="1792"
-d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z
-M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72
-t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45
-t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4
-q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
- <glyph glyph-name="uniF2A3" unicode="&#xf2a3;" horiz-adv-x="2304"
-d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55
-q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5
-q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101
-q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35
-q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5
-q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
- <glyph glyph-name="uniF2A4" unicode="&#xf2a4;" horiz-adv-x="1792"
-d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19
-t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74
-t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233
-l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
- <glyph glyph-name="uniF2A5" unicode="&#xf2a5;"
-d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2
-q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10
-q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5
-t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="uniF2A6" unicode="&#xf2a6;" horiz-adv-x="1535"
-d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5
-l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5
-q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9
-q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
- <glyph glyph-name="uniF2A7" unicode="&#xf2a7;" horiz-adv-x="1664"
-d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37
-t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
-l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147q-2 -1 -5 -3.5t-4 -4.5q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148
-q-34 23 -76 23q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26
-l-12 224q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
- <glyph glyph-name="uniF2A8" unicode="&#xf2a8;" horiz-adv-x="1792"
-d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5
-q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841
-q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5
-q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
- <glyph glyph-name="uniF2A9" unicode="&#xf2a9;" horiz-adv-x="1280"
-d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5
-q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z
-M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
- <glyph glyph-name="uniF2AA" unicode="&#xf2aa;"
-d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z
-M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5
-q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 42 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
-t84.5 -203.5z" />
- <glyph glyph-name="uniF2AB" unicode="&#xf2ab;"
-d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114
-q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5
-t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
-t103 -385.5z" />
- <glyph glyph-name="uniF2AC" unicode="&#xf2ac;" horiz-adv-x="1664"
-d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35
-q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5
-t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
- <glyph glyph-name="uniF2AD" unicode="&#xf2ad;"
-d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115
-q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15
-t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960
-q119 0 203.5 -84.5t84.5 -203.5z" />
- <glyph glyph-name="uniF2AE" unicode="&#xf2ae;" horiz-adv-x="2304"
-d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7
-q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158
-q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
- <glyph glyph-name="uniF2B0" unicode="&#xf2b0;"
-d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104
-q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108
-l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z
-M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
- <glyph glyph-name="uniF2B1" unicode="&#xf2b1;" horiz-adv-x="1664"
-d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5
-t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
- <glyph glyph-name="uniF2B2" unicode="&#xf2b2;" horiz-adv-x="1792"
-d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5
-t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114
-q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50
-q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5
-t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46
-q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5
-q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177
-t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
- <glyph glyph-name="uniF2B3" unicode="&#xf2b3;"
-d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110
-h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
- <glyph glyph-name="uniF2B4" unicode="&#xf2b4;"
-d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5
-q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
- <glyph glyph-name="uniF2B5" unicode="&#xf2b5;" horiz-adv-x="2304"
-d="M192 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32zM1665 442q-10 13 -38.5 50t-41.5 54t-38 49t-42.5 53t-40.5 47t-45 49l-125 -140q-83 -94 -208.5 -92t-205.5 98q-57 69 -56.5 158t58.5 157l177 206q-22 11 -51 16.5t-47.5 6t-56.5 -0.5t-49 -1q-92 0 -158 -66
-l-158 -158h-155v-544q5 0 21 0.5t22 0t19.5 -2t20.5 -4.5t17.5 -8.5t18.5 -13.5l297 -292q115 -111 227 -111q78 0 125 47q57 -20 112.5 8t72.5 85q74 -6 127 44q20 18 36 45.5t14 50.5q10 -10 43 -10q43 0 77 21t49.5 53t12 71.5t-30.5 73.5zM1824 384h96v512h-93l-157 180
-q-66 76 -169 76h-167q-89 0 -146 -67l-209 -243q-28 -33 -28 -75t27 -75q43 -51 110 -52t111 49l193 218q25 23 53.5 21.5t47 -27t8.5 -56.5q16 -19 56 -63t60 -68q29 -36 82.5 -105.5t64.5 -84.5q52 -66 60 -140zM2112 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32z
-M2304 960v-640q0 -26 -19 -45t-45 -19h-434q-27 -65 -82 -106.5t-125 -51.5q-33 -48 -80.5 -81.5t-102.5 -45.5q-42 -53 -104.5 -81.5t-128.5 -24.5q-60 -34 -126 -39.5t-127.5 14t-117 53.5t-103.5 81l-287 282h-358q-26 0 -45 19t-19 45v672q0 26 19 45t45 19h421
-q14 14 47 48t47.5 48t44 40t50.5 37.5t51 25.5t62 19.5t68 5.5h117q99 0 181 -56q82 56 181 56h167q35 0 67 -6t56.5 -14.5t51.5 -26.5t44.5 -31t43 -39.5t39 -42t41 -48t41.5 -48.5h355q26 0 45 -19t19 -45z" />
- <glyph glyph-name="uniF2B6" unicode="&#xf2b6;" horiz-adv-x="1792"
-d="M1792 882v-978q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v978q0 15 11 24q8 7 39 34.5t41.5 36t45.5 37.5t70 55.5t96 73t143.5 107t192.5 140.5q5 4 52.5 40t71.5 52.5t64 35t69 18.5t69 -18.5t65 -35.5t71 -52t52 -40q110 -80 192.5 -140.5t143.5 -107
-t96 -73t70 -55.5t45.5 -37.5t41.5 -36t39 -34.5q11 -9 11 -24zM1228 297q263 191 345 252q11 8 12.5 20.5t-6.5 23.5l-38 52q-8 11 -21 12.5t-24 -6.5q-231 -169 -343 -250q-5 -3 -52 -39t-71.5 -52.5t-64.5 -35t-69 -18.5t-69 18.5t-64.5 35t-71.5 52.5t-52 39
-q-186 134 -343 250q-11 8 -24 6.5t-21 -12.5l-38 -52q-8 -11 -6.5 -23.5t12.5 -20.5q82 -61 345 -252q10 -8 50 -38t65 -47t64 -39.5t77.5 -33.5t75.5 -11t75.5 11t79 34.5t64.5 39.5t65 47.5t48 36.5z" />
- <glyph glyph-name="uniF2B7" unicode="&#xf2b7;" horiz-adv-x="1792"
-d="M1474 623l39 -51q8 -11 6.5 -23.5t-11.5 -20.5q-43 -34 -126.5 -98.5t-146.5 -113t-67 -51.5q-39 -32 -60 -48t-60.5 -41t-76.5 -36.5t-74 -11.5h-1h-1q-37 0 -74 11.5t-76 36.5t-61 41.5t-60 47.5q-5 4 -65 50.5t-143.5 111t-122.5 94.5q-11 8 -12.5 20.5t6.5 23.5
-l37 52q8 11 21.5 13t24.5 -7q94 -73 306 -236q5 -4 43.5 -35t60.5 -46.5t56.5 -32.5t58.5 -17h1h1q24 0 58.5 17t56.5 32.5t60.5 46.5t43.5 35q258 198 313 242q11 8 24 6.5t21 -12.5zM1664 -96v928q-90 83 -159 139q-91 74 -389 304q-3 2 -43 35t-61 48t-56 32.5t-59 17.5
-h-1h-1q-24 0 -59 -17.5t-56 -32.5t-61 -48t-43 -35q-215 -166 -315.5 -245.5t-129.5 -104t-82 -74.5q-14 -12 -21 -19v-928q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 832v-928q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v928q0 56 41 94
-q123 114 350 290.5t233 181.5q36 30 59 47.5t61.5 42t76 36.5t74.5 12h1h1q37 0 74.5 -12t76 -36.5t61.5 -42t59 -47.5q43 -36 156 -122t226 -177t201 -173q41 -38 41 -94z" />
- <glyph glyph-name="uniF2B8" unicode="&#xf2b8;"
-d="M330 1l202 -214l-34 236l-216 213zM556 -225l274 218l-11 245l-300 -215zM245 413l227 -213l-48 327l-245 204zM495 189l317 214l-14 324l-352 -200zM843 178l95 -80l-2 239l-103 79q0 -1 1 -8.5t0 -12t-5 -7.5l-78 -52l85 -70q7 -6 7 -88zM138 930l256 -200l-68 465
-l-279 173zM1173 267l15 234l-230 -164l2 -240zM417 722l373 194l-19 441l-423 -163zM1270 357l20 233l-226 142l-2 -105l144 -95q6 -4 4 -9l-7 -119zM1461 496l30 222l-179 -128l-20 -228zM1273 329l-71 49l-8 -117q0 -5 -4 -8l-234 -187q-7 -5 -14 0l-98 83l7 -161
-q0 -5 -4 -8l-293 -234q-4 -2 -6 -2q-8 2 -8 3l-228 242q-4 4 -59 277q-2 7 5 11l61 37q-94 86 -95 92l-72 351q-2 7 6 12l94 45q-133 100 -135 108l-96 466q-2 10 7 13l433 135q5 0 8 -1l317 -153q6 -4 6 -9l20 -463q0 -7 -6 -10l-118 -61l126 -85q5 -2 5 -8l5 -123l121 74
-q5 4 11 0l84 -56l3 110q0 6 5 9l206 126q6 3 11 0l245 -135q4 -4 5 -7t-6.5 -60t-17.5 -124.5t-10 -70.5q0 -5 -4 -7l-191 -153q-6 -5 -13 0z" />
- <glyph glyph-name="uniF2B9" unicode="&#xf2b9;" horiz-adv-x="1664"
-d="M1201 298q0 57 -5.5 107t-21 100.5t-39.5 86t-64 58t-91 22.5q-6 -4 -33.5 -20.5t-42.5 -24.5t-40.5 -20t-49 -17t-46.5 -5t-46.5 5t-49 17t-40.5 20t-42.5 24.5t-33.5 20.5q-51 0 -91 -22.5t-64 -58t-39.5 -86t-21 -100.5t-5.5 -107q0 -73 42 -121.5t103 -48.5h576
-q61 0 103 48.5t42 121.5zM1028 892q0 108 -76.5 184t-183.5 76t-183.5 -76t-76.5 -184q0 -107 76.5 -183t183.5 -76t183.5 76t76.5 183zM1664 352v-192q0 -14 -9 -23t-23 -9h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216
-q66 0 113 -47t47 -113v-224h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23z" />
- <glyph glyph-name="uniF2BA" unicode="&#xf2ba;" horiz-adv-x="1664"
-d="M1028 892q0 -107 -76.5 -183t-183.5 -76t-183.5 76t-76.5 183q0 108 76.5 184t183.5 76t183.5 -76t76.5 -184zM980 672q46 0 82.5 -17t60 -47.5t39.5 -67t24 -81t11.5 -82.5t3.5 -79q0 -67 -39.5 -118.5t-105.5 -51.5h-576q-66 0 -105.5 51.5t-39.5 118.5q0 48 4.5 93.5
-t18.5 98.5t36.5 91.5t63 64.5t93.5 26h5q7 -4 32 -19.5t35.5 -21t33 -17t37 -16t35 -9t39.5 -4.5t39.5 4.5t35 9t37 16t33 17t35.5 21t32 19.5zM1664 928q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96
-q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216q66 0 113 -47t47 -113v-224h96q13 0 22.5 -9.5t9.5 -22.5v-192zM1408 -96v1472q0 13 -9.5 22.5t-22.5 9.5h-1216
-q-13 0 -22.5 -9.5t-9.5 -22.5v-1472q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5z" />
- <glyph glyph-name="uniF2BB" unicode="&#xf2bb;" horiz-adv-x="2048"
-d="M1024 405q0 64 -9 117.5t-29.5 103t-60.5 78t-97 28.5q-6 -4 -30 -18t-37.5 -21.5t-35.5 -17.5t-43 -14.5t-42 -4.5t-42 4.5t-43 14.5t-35.5 17.5t-37.5 21.5t-30 18q-57 0 -97 -28.5t-60.5 -78t-29.5 -103t-9 -117.5t37 -106.5t91 -42.5h512q54 0 91 42.5t37 106.5z
-M867 925q0 94 -66.5 160.5t-160.5 66.5t-160.5 -66.5t-66.5 -160.5t66.5 -160.5t160.5 -66.5t160.5 66.5t66.5 160.5zM1792 416v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1792 676v56q0 15 -10.5 25.5t-25.5 10.5h-568
-q-15 0 -25.5 -10.5t-10.5 -25.5v-56q0 -15 10.5 -25.5t25.5 -10.5h568q15 0 25.5 10.5t10.5 25.5zM1792 928v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-352v96q0 14 -9 23t-23 9
-h-64q-14 0 -23 -9t-9 -23v-96h-768v96q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-96h-352q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2BC" unicode="&#xf2bc;" horiz-adv-x="2048"
-d="M1024 405q0 -64 -37 -106.5t-91 -42.5h-512q-54 0 -91 42.5t-37 106.5t9 117.5t29.5 103t60.5 78t97 28.5q6 -4 30 -18t37.5 -21.5t35.5 -17.5t43 -14.5t42 -4.5t42 4.5t43 14.5t35.5 17.5t37.5 21.5t30 18q57 0 97 -28.5t60.5 -78t29.5 -103t9 -117.5zM867 925
-q0 -94 -66.5 -160.5t-160.5 -66.5t-160.5 66.5t-66.5 160.5t66.5 160.5t160.5 66.5t160.5 -66.5t66.5 -160.5zM1792 480v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1792 732v-56q0 -15 -10.5 -25.5t-25.5 -10.5h-568
-q-15 0 -25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5zM1792 992v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1920 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1728q-13 0 -22.5 -9.5
-t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h352v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h768v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h352q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113
-t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2BD" unicode="&#xf2bd;" horiz-adv-x="1792"
-d="M1523 197q-22 155 -87.5 257.5t-184.5 118.5q-67 -74 -159.5 -115.5t-195.5 -41.5t-195.5 41.5t-159.5 115.5q-119 -16 -184.5 -118.5t-87.5 -257.5q106 -150 271 -237.5t356 -87.5t356 87.5t271 237.5zM1280 896q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5
-t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1792 640q0 -182 -71 -347.5t-190.5 -286t-285.5 -191.5t-349 -71q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2BE" unicode="&#xf2be;" horiz-adv-x="1792"
-d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348q0 -181 -70.5 -347t-190.5 -286t-286 -191.5t-349 -71.5t-349 71t-285.5 191.5t-190.5 286t-71 347.5t71 348t191 286t286 191t348 71zM1515 185q149 205 149 455q0 156 -61 298t-164 245t-245 164t-298 61t-298 -61
-t-245 -164t-164 -245t-61 -298q0 -250 149 -455q66 327 306 327q131 -128 313 -128t313 128q240 0 306 -327zM1280 832q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5z" />
- <glyph glyph-name="uniF2C0" unicode="&#xf2c0;"
-d="M1201 752q47 -14 89.5 -38t89 -73t79.5 -115.5t55 -172t22 -236.5q0 -154 -100 -263.5t-241 -109.5h-854q-141 0 -241 109.5t-100 263.5q0 131 22 236.5t55 172t79.5 115.5t89 73t89.5 38q-79 125 -79 272q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5
-t198.5 -40.5t163.5 -109.5t109.5 -163.5t40.5 -198.5q0 -147 -79 -272zM768 1408q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM1195 -128q88 0 150.5 71.5t62.5 173.5q0 239 -78.5 377t-225.5 145
-q-145 -127 -336 -127t-336 127q-147 -7 -225.5 -145t-78.5 -377q0 -102 62.5 -173.5t150.5 -71.5h854z" />
- <glyph glyph-name="uniF2C1" unicode="&#xf2c1;" horiz-adv-x="1280"
-d="M1024 278q0 -64 -37 -107t-91 -43h-512q-54 0 -91 43t-37 107t9 118t29.5 104t61 78.5t96.5 28.5q80 -75 188 -75t188 75q56 0 96.5 -28.5t61 -78.5t29.5 -104t9 -118zM870 797q0 -94 -67.5 -160.5t-162.5 -66.5t-162.5 66.5t-67.5 160.5t67.5 160.5t162.5 66.5
-t162.5 -66.5t67.5 -160.5zM1152 -96v1376h-1024v-1376q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1280 1376v-1472q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h352v-96q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v96h352
-q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2C2" unicode="&#xf2c2;" horiz-adv-x="2048"
-d="M896 324q0 54 -7.5 100.5t-24.5 90t-51 68.5t-81 25q-64 -64 -156 -64t-156 64q-47 0 -81 -25t-51 -68.5t-24.5 -90t-7.5 -100.5q0 -55 31.5 -93.5t75.5 -38.5h426q44 0 75.5 38.5t31.5 93.5zM768 768q0 80 -56 136t-136 56t-136 -56t-56 -136t56 -136t136 -56t136 56
-t56 136zM1792 288v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1408 544v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1792 544v64q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23
-v-64q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1792 800v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM128 1152h1792v96q0 14 -9 23t-23 9h-1728q-14 0 -23 -9t-9 -23v-96zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728
-q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2C3" unicode="&#xf2c3;" horiz-adv-x="2048"
-d="M896 324q0 -55 -31.5 -93.5t-75.5 -38.5h-426q-44 0 -75.5 38.5t-31.5 93.5q0 54 7.5 100.5t24.5 90t51 68.5t81 25q64 -64 156 -64t156 64q47 0 81 -25t51 -68.5t24.5 -90t7.5 -100.5zM768 768q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z
-M1792 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1408 608v-64q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v64
-q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 864v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1920 32v1120h-1792v-1120q0 -13 9.5 -22.5t22.5 -9.5h1728q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47
-h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2C4" unicode="&#xf2c4;" horiz-adv-x="1792"
-d="M1255 749q0 318 -105 474.5t-330 156.5q-222 0 -326 -157t-104 -474q0 -316 104 -471.5t326 -155.5q74 0 131 17q-22 43 -39 73t-44 65t-53.5 56.5t-63 36t-77.5 14.5q-46 0 -79 -16l-49 97q105 91 276 91q132 0 215.5 -54t150.5 -155q67 149 67 402zM1645 117h117
-q3 -27 -2 -67t-26.5 -95t-58 -100.5t-107 -78t-162.5 -32.5q-71 0 -130.5 19t-105.5 56t-79 78t-66 96q-97 -27 -205 -27q-150 0 -292.5 58t-253 158.5t-178 249t-67.5 317.5q0 170 67.5 319.5t178.5 250.5t253.5 159t291.5 58q121 0 238.5 -36t217 -106t176 -164.5
-t119.5 -219t43 -261.5q0 -190 -80.5 -347.5t-218.5 -264.5q47 -70 93.5 -106.5t104.5 -36.5q61 0 94 37.5t38 85.5z" />
- <glyph glyph-name="uniF2C5" unicode="&#xf2c5;" horiz-adv-x="2304"
-d="M453 -101q0 -21 -16 -37.5t-37 -16.5q-1 0 -13 3q-63 15 -162 140q-225 284 -225 676q0 341 213 614q39 51 95 103.5t94 52.5q19 0 35 -13.5t16 -32.5q0 -27 -63 -90q-98 -102 -147 -184q-119 -199 -119 -449q0 -281 123 -491q50 -85 136 -173q2 -3 14.5 -16t19.5 -21
-t17 -20.5t14.5 -23.5t4.5 -21zM1796 33q0 -29 -17.5 -48.5t-46.5 -19.5h-1081q-26 0 -45 19t-19 45q0 29 17.5 48.5t46.5 19.5h1081q26 0 45 -19t19 -45zM1581 644q0 -134 -67 -233q-25 -38 -69.5 -78.5t-83.5 -60.5q-16 -10 -27 -10q-7 0 -15 6t-8 12q0 9 19 30t42 46
-t42 67.5t19 88.5q0 76 -35 130q-29 42 -46 42q-3 0 -3 -5q0 -12 7.5 -35.5t7.5 -36.5q0 -22 -21.5 -35t-44.5 -13q-66 0 -66 76q0 15 1.5 44t1.5 44q0 25 -10 46q-13 25 -42 53.5t-51 28.5q-5 0 -7 -0.5t-3.5 -2.5t-1.5 -6q0 -2 16 -26t16 -54q0 -37 -19 -68t-46 -54
-t-53.5 -46t-45.5 -54t-19 -68q0 -98 42 -160q29 -43 79 -63q16 -5 17 -10q1 -2 1 -5q0 -16 -18 -16q-6 0 -33 11q-119 43 -195 139.5t-76 218.5q0 55 24.5 115.5t60 115t70.5 108.5t59.5 113.5t24.5 111.5q0 53 -25 94q-29 48 -56 64q-19 9 -19 21q0 20 41 20q50 0 110 -29
-q41 -19 71 -44.5t49.5 -51t33.5 -62.5t22 -69t16 -80q0 -1 3 -17.5t4.5 -25t5.5 -25t9 -27t11 -21.5t14.5 -16.5t18.5 -5.5q23 0 37 14t14 37q0 25 -20 67t-20 52t10 10q27 0 93 -70q72 -76 102.5 -156t30.5 -186zM2304 615q0 -274 -138 -503q-19 -32 -48 -72t-68 -86.5
-t-81 -77t-74 -30.5q-16 0 -31 15.5t-15 31.5q0 15 29 50.5t68.5 77t48.5 52.5q183 230 183 531q0 131 -20.5 235t-72.5 211q-58 119 -163 228q-2 3 -13 13.5t-16.5 16.5t-15 17.5t-15 20t-9.5 18.5t-4 19q0 19 16 35.5t35 16.5q70 0 196 -169q98 -131 146 -273t60 -314
-q2 -42 2 -64z" />
- <glyph glyph-name="uniF2C6" unicode="&#xf2c6;" horiz-adv-x="1792"
-d="M1189 229l147 693q9 44 -10.5 63t-51.5 7l-864 -333q-29 -11 -39.5 -25t-2.5 -26.5t32 -19.5l221 -69l513 323q21 14 32 6q7 -5 -4 -15l-415 -375v0v0l-16 -228q23 0 45 22l108 104l224 -165q64 -36 81 38zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
-t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2C7" unicode="&#xf2c7;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v907h128v-907q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2C8" unicode="&#xf2c8;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v651h128v-651q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2C9" unicode="&#xf2c9;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v395h128v-395q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2CA" unicode="&#xf2ca;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v139h128v-139q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
-t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
-v128h192z" />
- <glyph glyph-name="uniF2CB" unicode="&#xf2cb;" horiz-adv-x="1024"
-d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 79 56 135.5t136 56.5t136 -56.5t56 -135.5zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5z
-M896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
- <glyph glyph-name="uniF2CC" unicode="&#xf2cc;" horiz-adv-x="1920"
-d="M1433 1287q10 -10 10 -23t-10 -23l-626 -626q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l44 44q-72 91 -81.5 207t46.5 215q-74 71 -176 71q-106 0 -181 -75t-75 -181v-1280h-256v1280q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5q106 0 201 -41
-t166 -115q94 39 197 24.5t185 -79.5l44 44q10 10 23 10t23 -10zM1344 1024q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1600 896q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1856 1024q26 0 45 -19t19 -45t-19 -45t-45 -19
-t-45 19t-19 45t19 45t45 19zM1216 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1408 832q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1728 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 768
-q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 640q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1600 768q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 512q-26 0 -45 19t-19 45t19 45t45 19t45 -19
-t19 -45t-19 -45t-45 -19zM1472 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 384
-q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 256q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19z" />
- <glyph glyph-name="uniF2CD" unicode="&#xf2cd;" horiz-adv-x="1792"
-d="M1664 448v-192q0 -169 -128 -286v-194q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v118q-63 -22 -128 -22h-768q-65 0 -128 22v-110q0 -17 -9.5 -28.5t-22.5 -11.5h-64q-13 0 -22.5 11.5t-9.5 28.5v186q-128 117 -128 286v192h1536zM704 864q0 -14 -9 -23t-23 -9t-23 9
-t-9 23t9 23t23 9t23 -9t9 -23zM768 928q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM704 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1056q0 -14 -9 -23t-23 -9t-23 9
-t-9 23t9 23t23 9t23 -9t9 -23zM704 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v640q0 106 75 181t181 75q108 0 184 -78q46 19 98 12t93 -39l22 22q11 11 22 0l42 -42
-q11 -11 0 -22l-314 -314q-11 -11 -22 0l-42 42q-11 11 0 22l22 22q-36 46 -40.5 104t23.5 108q-37 35 -88 35q-53 0 -90.5 -37.5t-37.5 -90.5v-640h1504q14 0 23 -9t9 -23zM896 1056q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1120q0 -14 -9 -23t-23 -9
-t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM896 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1248q0 -14 -9 -23
-t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1024 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1088 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23z" />
- <glyph glyph-name="uniF2CE" unicode="&#xf2ce;"
-d="M994 344q0 -86 -17 -197q-31 -215 -55 -313q-22 -90 -152 -90t-152 90q-24 98 -55 313q-17 110 -17 197q0 168 224 168t224 -168zM1536 768q0 -240 -134 -434t-350 -280q-8 -3 -15 3t-6 15q7 48 10 66q4 32 6 47q1 9 9 12q159 81 255.5 234t96.5 337q0 180 -91 330.5
-t-247 234.5t-337 74q-124 -7 -237 -61t-193.5 -140.5t-128 -202t-46.5 -240.5q1 -184 99 -336.5t257 -231.5q7 -3 9 -12q3 -21 6 -45q1 -9 5 -32.5t6 -35.5q1 -9 -6.5 -15t-15.5 -2q-148 58 -261 169.5t-173.5 264t-52.5 319.5q7 143 66 273.5t154.5 227t225 157.5t272.5 70
-q164 10 315.5 -46.5t261 -160.5t175 -250.5t65.5 -308.5zM994 800q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5zM1282 768q0 -122 -53.5 -228.5t-146.5 -177.5q-8 -6 -16 -2t-10 14q-6 52 -29 92q-7 10 3 20
-q58 54 91 127t33 155q0 111 -58.5 204t-157.5 141.5t-212 36.5q-133 -15 -229 -113t-109 -231q-10 -92 23.5 -176t98.5 -144q10 -10 3 -20q-24 -41 -29 -93q-2 -9 -10 -13t-16 2q-95 74 -148.5 183t-51.5 234q3 131 69 244t177 181.5t241 74.5q144 7 268 -60t196.5 -187.5
-t72.5 -263.5z" />
- <glyph glyph-name="uniF2D0" unicode="&#xf2d0;" horiz-adv-x="1792"
-d="M256 128h1280v768h-1280v-768zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D1" unicode="&#xf2d1;" horiz-adv-x="1792"
-d="M1792 224v-192q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D2" unicode="&#xf2d2;" horiz-adv-x="2048"
-d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96q66 0 113 -47t47 -113v-352zM2048 1376v-960q0 -66 -47 -113t-113 -47h-608v-352q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h608v352q0 66 47 113t113 47h960q66 0 113 -47
-t47 -113z" />
- <glyph glyph-name="uniF2D3" unicode="&#xf2d3;" horiz-adv-x="1792"
-d="M1175 215l146 146q10 10 10 23t-10 23l-233 233l233 233q10 10 10 23t-10 23l-146 146q-10 10 -23 10t-23 -10l-233 -233l-233 233q-10 10 -23 10t-23 -10l-146 -146q-10 -10 -10 -23t10 -23l233 -233l-233 -233q-10 -10 -10 -23t10 -23l146 -146q10 -10 23 -10t23 10
-l233 233l233 -233q10 -10 23 -10t23 10zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D4" unicode="&#xf2d4;" horiz-adv-x="1792"
-d="M1257 425l-146 -146q-10 -10 -23 -10t-23 10l-169 169l-169 -169q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l169 169l-169 169q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l169 -169l169 169q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
-l-169 -169l169 -169q10 -10 10 -23t-10 -23zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D5" unicode="&#xf2d5;" horiz-adv-x="1792"
-d="M1070 358l306 564h-654l-306 -564h654zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2D6" unicode="&#xf2d6;" horiz-adv-x="1794"
-d="M1291 1060q-15 17 -35 8.5t-26 -28.5t5 -38q14 -17 40 -14.5t34 20.5t-18 52zM895 814q-8 -8 -19.5 -8t-18.5 8q-8 8 -8 19t8 18q7 8 18.5 8t19.5 -8q7 -7 7 -18t-7 -19zM1060 740l-35 -35q-12 -13 -29.5 -13t-30.5 13l-38 38q-12 13 -12 30t12 30l35 35q12 12 29.5 12
-t30.5 -12l38 -39q12 -12 12 -29.5t-12 -29.5zM951 870q-7 -8 -18.5 -8t-19.5 8q-7 8 -7 19t7 19q8 8 19 8t19 -8t8 -19t-8 -19zM1354 968q-34 -64 -107.5 -85.5t-127.5 16.5q-38 28 -61 66.5t-21 87.5t39 92t75.5 53t70.5 -5t70 -51q2 -2 13 -12.5t14.5 -13.5t13 -13.5
-t12.5 -15.5t10 -15.5t8.5 -18t4 -18.5t1 -21t-5 -22t-9.5 -24zM1555 486q3 20 -8.5 34.5t-27.5 21.5t-33 17t-23 20q-40 71 -84 98.5t-113 11.5q19 13 40 18.5t33 4.5l12 -1q2 45 -34 90q6 20 6.5 40.5t-2.5 30.5l-3 10q43 24 71 65t34 91q10 84 -43 150.5t-137 76.5
-q-60 7 -114 -18.5t-82 -74.5q-30 -51 -33.5 -101t14.5 -87t43.5 -64t56.5 -42q-45 4 -88 36t-57 88q-28 108 32 222q-16 21 -29 32q-50 0 -89 -19q19 24 42 37t36 14l13 1q0 50 -13 78q-10 21 -32.5 28.5t-47 -3.5t-37.5 -40q2 4 4 7q-7 -28 -6.5 -75.5t19 -117t48.5 -122.5
-q-25 -14 -47 -36q-35 -16 -85.5 -70.5t-84.5 -101.5l-33 -46q-90 -34 -181 -125.5t-75 -162.5q1 -16 11 -27q-15 -12 -30 -30q-21 -25 -21 -54t21.5 -40t63.5 6q41 19 77 49.5t55 60.5q-2 2 -6.5 5t-20.5 7.5t-33 3.5q23 5 51 12.5t40 10t27.5 6t26 4t23.5 0.5q14 -7 22 34
-q7 37 7 90q0 102 -40 150q106 -103 101 -219q-1 -29 -15 -50t-27 -27l-13 -6q-4 -7 -19 -32t-26 -45.5t-26.5 -52t-25 -61t-17 -63t-6.5 -66.5t10 -63q-35 54 -37 80q-22 -24 -34.5 -39t-33.5 -42t-30.5 -46t-16.5 -41t-0.5 -38t25.5 -27q45 -25 144 64t190.5 221.5
-t122.5 228.5q86 52 145 115.5t86 119.5q47 -93 154 -178q104 -83 167 -80q39 2 46 43zM1794 640q0 -182 -71 -348t-191 -286t-286.5 -191t-348.5 -71t-348.5 71t-286.5 191t-191 286t-71 348t71 348t191 286t286.5 191t348.5 71t348.5 -71t286.5 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2D7" unicode="&#xf2d7;"
-d="M518 1353v-655q103 -1 191.5 1.5t125.5 5.5l37 3q68 2 90.5 24.5t39.5 94.5l33 142h103l-14 -322l7 -319h-103l-29 127q-15 68 -45 93t-84 26q-87 8 -352 8v-556q0 -78 43.5 -115.5t133.5 -37.5h357q35 0 59.5 2t55 7.5t54 18t48.5 32t46 50.5t39 73l93 216h89
-q-6 -37 -31.5 -252t-30.5 -276q-146 5 -263.5 8t-162.5 4h-44h-628l-376 -12v102l127 25q67 13 91.5 37t25.5 79l8 643q3 402 -8 645q-2 61 -25.5 84t-91.5 36l-127 24v102l376 -12h702q139 0 374 27q-6 -68 -14 -194.5t-12 -219.5l-5 -92h-93l-32 124q-31 121 -74 179.5
-t-113 58.5h-548q-28 0 -35.5 -8.5t-7.5 -30.5z" />
- <glyph glyph-name="uniF2D8" unicode="&#xf2d8;"
-d="M922 739v-182q0 -4 0.5 -15t0 -15l-1.5 -12t-3.5 -11.5t-6.5 -7.5t-11 -5.5t-16 -1.5v309q9 0 16 -1t11 -5t6.5 -5.5t3.5 -9.5t1 -10.5v-13.5v-14zM1238 643v-121q0 -1 0.5 -12.5t0 -15.5t-2.5 -11.5t-7.5 -10.5t-13.5 -3q-9 0 -14 9q-4 10 -4 165v7v8.5v9t1.5 8.5l3.5 7
-t5 5.5t8 1.5q6 0 10 -1.5t6.5 -4.5t4 -6t2 -8.5t0.5 -8v-9.5v-9zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221q-20 148 -32 221h-158v-472h107v312l45 -312h76l43 319v-319zM1039 712q0 67 -5 90q-3 16 -11 28.5t-17 20.5t-25 14t-26.5 8.5t-31 4t-29 1.5
-h-29.5h-12h-91v-472h56q169 -1 197 24.5t25 180.5q-1 62 -1 100zM1356 515v133q0 29 -2 45t-9.5 33.5t-24.5 25t-46 7.5q-46 0 -77 -34v154h-117v-472h110l7 30q30 -36 77 -36q50 0 66 30.5t16 83.5zM1536 1248v-1216q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113
-v1216q0 66 47 113t113 47h1216q66 0 113 -47t47 -113z" />
- <glyph glyph-name="uniF2D9" unicode="&#xf2d9;" horiz-adv-x="2176"
-d="M1143 -197q-6 1 -11 4q-13 8 -36 23t-86 65t-116.5 104.5t-112 140t-89.5 172.5q-17 3 -175 37q66 -213 235 -362t391 -184zM502 409l168 -28q-25 76 -41 167.5t-19 145.5l-4 53q-84 -82 -121 -224q5 -65 17 -114zM612 1018q-43 -64 -77 -148q44 46 74 68zM2049 584
-q0 161 -62 307t-167.5 252t-250.5 168.5t-304 62.5q-147 0 -281 -52.5t-240 -148.5q-30 -58 -45 -160q60 51 143 83.5t158.5 43t143 13.5t108.5 -1l40 -3q33 -1 53 -15.5t24.5 -33t6.5 -37t-1 -28.5q-126 11 -227.5 0.5t-183 -43.5t-142.5 -71.5t-131 -98.5
-q4 -36 11.5 -92.5t35.5 -178t62 -179.5q123 -6 247.5 14.5t214.5 53.5t162.5 67t109.5 59l37 24q22 16 39.5 20.5t30.5 -5t17 -34.5q14 -97 -39 -121q-208 -97 -467 -134q-135 -20 -317 -16q41 -96 110 -176.5t137 -127t130.5 -79t101.5 -43.5l39 -12q143 -23 263 15
-q195 99 314 289t119 418zM2123 621q-14 -135 -40 -212q-70 -208 -181.5 -346.5t-318.5 -253.5q-48 -33 -82 -44q-72 -26 -163 -16q-36 -3 -73 -3q-283 0 -504.5 173t-295.5 442q-1 0 -4 0.5t-5 0.5q-6 -50 2.5 -112.5t26 -115t36 -98t31.5 -71.5l14 -26q8 -12 54 -82
-q-71 38 -124.5 106.5t-78.5 140t-39.5 137t-17.5 107.5l-2 42q-5 2 -33.5 12.5t-48.5 18t-53 20.5t-57.5 25t-50 25.5t-42.5 27t-25 25.5q19 -10 50.5 -25.5t113 -45.5t145.5 -38l2 32q11 149 94 290q41 202 176 365q28 115 81 214q15 28 32 45t49 32q158 74 303.5 104
-t302 11t306.5 -97q220 -115 333 -336t87 -474z" />
- <glyph glyph-name="uniF2DA" unicode="&#xf2da;" horiz-adv-x="1792"
-d="M1341 752q29 44 -6.5 129.5t-121.5 142.5q-58 39 -125.5 53.5t-118 4.5t-68.5 -37q-12 -23 -4.5 -28t42.5 -10q23 -3 38.5 -5t44.5 -9.5t56 -17.5q36 -13 67.5 -31.5t53 -37t40 -38.5t30.5 -38t22 -34.5t16.5 -28.5t12 -18.5t10.5 -6t11 9.5zM1704 178
-q-52 -127 -148.5 -220t-214.5 -141.5t-253 -60.5t-266 13.5t-251 91t-210 161.5t-141.5 235.5t-46.5 303.5q1 41 8.5 84.5t12.5 64t24 80.5t23 73q-51 -208 1 -397t173 -318t291 -206t346 -83t349 74.5t289 244.5q20 27 18 14q0 -4 -4 -14zM1465 627q0 -104 -40.5 -199
-t-108.5 -164t-162 -109.5t-198 -40.5t-198 40.5t-162 109.5t-108.5 164t-40.5 199t40.5 199t108.5 164t162 109.5t198 40.5t198 -40.5t162 -109.5t108.5 -164t40.5 -199zM1752 915q-65 147 -180.5 251t-253 153.5t-292 53.5t-301 -36.5t-275.5 -129t-220 -211.5t-131 -297
-t-10 -373q-49 161 -51.5 311.5t35.5 272.5t109 227t165.5 180.5t207 126t232 71t242.5 9t236 -54t216 -124.5t178 -197q33 -50 62 -121t31 -112zM1690 573q12 244 -136.5 416t-396.5 240q-8 0 -10 5t24 8q125 -4 230 -50t173 -120t116 -168.5t58.5 -199t-1 -208
-t-61.5 -197.5t-122.5 -167t-185 -117.5t-248.5 -46.5q108 30 201.5 80t174 123t129.5 176.5t55 225.5z" />
- <glyph glyph-name="uniF2DB" unicode="&#xf2db;"
-d="M192 256v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 512v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 768v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16
-q0 16 16 16h112zM192 1024v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 1280v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM1280 1440v-1472q0 -40 -28 -68t-68 -28h-832q-40 0 -68 28
-t-28 68v1472q0 40 28 68t68 28h832q40 0 68 -28t28 -68zM1536 208v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 464v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 720v-32
-q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 976v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 1232v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16
-h48q16 0 16 -16z" />
- <glyph glyph-name="uniF2DC" unicode="&#xf2dc;" horiz-adv-x="1664"
-d="M1566 419l-167 -33l186 -107q23 -13 29.5 -38.5t-6.5 -48.5q-14 -23 -39 -29.5t-48 6.5l-186 106l55 -160q13 -38 -12 -63.5t-60.5 -20.5t-48.5 42l-102 300l-271 156v-313l208 -238q16 -18 17 -39t-11 -36.5t-28.5 -25t-37 -5.5t-36.5 22l-112 128v-214q0 -26 -19 -45
-t-45 -19t-45 19t-19 45v214l-112 -128q-16 -18 -36.5 -22t-37 5.5t-28.5 25t-11 36.5t17 39l208 238v313l-271 -156l-102 -300q-13 -37 -48.5 -42t-60.5 20.5t-12 63.5l55 160l-186 -106q-23 -13 -48 -6.5t-39 29.5q-13 23 -6.5 48.5t29.5 38.5l186 107l-167 33
-q-29 6 -42 29t-8.5 46.5t25.5 40t50 10.5l310 -62l271 157l-271 157l-310 -62q-4 -1 -13 -1q-27 0 -44 18t-19 40t11 43t40 26l167 33l-186 107q-23 13 -29.5 38.5t6.5 48.5t39 30t48 -7l186 -106l-55 160q-13 38 12 63.5t60.5 20.5t48.5 -42l102 -300l271 -156v313
-l-208 238q-16 18 -17 39t11 36.5t28.5 25t37 5.5t36.5 -22l112 -128v214q0 26 19 45t45 19t45 -19t19 -45v-214l112 128q16 18 36.5 22t37 -5.5t28.5 -25t11 -36.5t-17 -39l-208 -238v-313l271 156l102 300q13 37 48.5 42t60.5 -20.5t12 -63.5l-55 -160l186 106
-q23 13 48 6.5t39 -29.5q13 -23 6.5 -48.5t-29.5 -38.5l-186 -107l167 -33q27 -5 40 -26t11 -43t-19 -40t-44 -18q-9 0 -13 1l-310 62l-271 -157l271 -157l310 62q29 6 50 -10.5t25.5 -40t-8.5 -46.5t-42 -29z" />
- <glyph glyph-name="uniF2DD" unicode="&#xf2dd;" horiz-adv-x="1792"
-d="M1473 607q7 118 -33 226.5t-113 189t-177 131t-221 57.5q-116 7 -225.5 -32t-192 -110.5t-135 -175t-59.5 -220.5q-7 -118 33 -226.5t113 -189t177.5 -131t221.5 -57.5q155 -9 293 59t224 195.5t94 283.5zM1792 1536l-349 -348q120 -117 180.5 -272t50.5 -321
-q-11 -183 -102 -339t-241 -255.5t-332 -124.5l-999 -132l347 347q-120 116 -180.5 271.5t-50.5 321.5q11 184 102 340t241.5 255.5t332.5 124.5q167 22 500 66t500 66z" />
- <glyph glyph-name="uniF2DE" unicode="&#xf2de;" horiz-adv-x="1792"
-d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640q0 159 -62 304t-167.5 250.5t-250.5 167.5t-304 62
-t-304 -62t-250.5 -167.5t-167.5 -250.5t-62 -304t62 -304t167.5 -250.5t250.5 -167.5t304 -62t304 62t250.5 167.5t167.5 250.5t62 304zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71
-t286 -191t191 -286t71 -348z" />
- <glyph glyph-name="uniF2E0" unicode="&#xf2e0;" horiz-adv-x="1920"
-d="M1334 302q-4 24 -27.5 34t-49.5 10.5t-48.5 12.5t-25.5 38q-5 47 33 139.5t75 181t32 127.5q-14 101 -117 103q-45 1 -75 -16l-3 -2l-5 -2.5t-4.5 -2t-5 -2t-5 -0.5t-6 1.5t-6 3.5t-6.5 5q-3 2 -9 8.5t-9 9t-8.5 7.5t-9.5 7.5t-9.5 5.5t-11 4.5t-11.5 2.5q-30 5 -48 -3
-t-45 -31q-1 -1 -9 -8.5t-12.5 -11t-15 -10t-16.5 -5.5t-17 3q-54 27 -84 40q-41 18 -94 -5t-76 -65q-16 -28 -41 -98.5t-43.5 -132.5t-40 -134t-21.5 -73q-22 -69 18.5 -119t110.5 -46q30 2 50.5 15t38.5 46q7 13 79 199.5t77 194.5q6 11 21.5 18t29.5 0q27 -15 21 -53
-q-2 -18 -51 -139.5t-50 -132.5q-6 -38 19.5 -56.5t60.5 -7t55 49.5q4 8 45.5 92t81.5 163.5t46 88.5q20 29 41 28q29 0 25 -38q-2 -16 -65.5 -147.5t-70.5 -159.5q-12 -53 13 -103t74 -74q17 -9 51 -15.5t71.5 -8t62.5 14t20 48.5zM383 86q3 -15 -5 -27.5t-23 -15.5
-q-14 -3 -26.5 5t-15.5 23q-3 14 5 27t22 16t27 -5t16 -23zM953 -177q12 -17 8.5 -37.5t-20.5 -32.5t-37.5 -8t-32.5 21q-11 17 -7.5 37.5t20.5 32.5t37.5 8t31.5 -21zM177 635q-18 -27 -49.5 -33t-57.5 13q-26 18 -32 50t12 58q18 27 49.5 33t57.5 -12q26 -19 32 -50.5
-t-12 -58.5zM1467 -42q19 -28 13 -61.5t-34 -52.5t-60.5 -13t-51.5 34t-13 61t33 53q28 19 60.5 13t52.5 -34zM1579 562q69 -113 42.5 -244.5t-134.5 -207.5q-90 -63 -199 -60q-20 -80 -84.5 -127t-143.5 -44.5t-140 57.5q-12 -9 -13 -10q-103 -71 -225 -48.5t-193 126.5
-q-50 73 -53 164q-83 14 -142.5 70.5t-80.5 128t-2 152t81 138.5q-36 60 -38 128t24.5 125t79.5 98.5t121 50.5q32 85 99 148t146.5 91.5t168 17t159.5 -66.5q72 21 140 17.5t128.5 -36t104.5 -80t67.5 -115t17.5 -140.5q52 -16 87 -57t45.5 -89t-5.5 -99.5t-58 -87.5z
-M455 1222q14 -20 9.5 -44.5t-24.5 -38.5q-19 -14 -43.5 -9.5t-37.5 24.5q-14 20 -9.5 44.5t24.5 38.5q19 14 43.5 9.5t37.5 -24.5zM614 1503q4 -16 -5 -30.5t-26 -18.5t-31 5.5t-18 26.5q-3 17 6.5 31t25.5 18q17 4 31 -5.5t17 -26.5zM1800 555q4 -20 -6.5 -37t-30.5 -21
-q-19 -4 -36 6.5t-21 30.5t6.5 37t30.5 22q20 4 36.5 -7.5t20.5 -30.5zM1136 1448q16 -27 8.5 -58.5t-35.5 -47.5q-27 -16 -57.5 -8.5t-46.5 34.5q-16 28 -8.5 59t34.5 48t58 9t47 -36zM1882 792q4 -15 -4 -27.5t-23 -16.5q-15 -3 -27.5 5.5t-15.5 22.5q-3 15 5 28t23 16
-q14 3 26.5 -5t15.5 -23zM1691 1033q15 -22 10.5 -49t-26.5 -43q-22 -15 -49 -10t-42 27t-10 49t27 43t48.5 11t41.5 -28z" />
- <glyph glyph-name="uniF2E1" unicode="&#xf2e1;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E2" unicode="&#xf2e2;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E3" unicode="&#xf2e3;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E4" unicode="&#xf2e4;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E5" unicode="&#xf2e5;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E6" unicode="&#xf2e6;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E7" unicode="&#xf2e7;" horiz-adv-x="1792"
- />
- <glyph glyph-name="_698" unicode="&#xf2e8;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2E9" unicode="&#xf2e9;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EA" unicode="&#xf2ea;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EB" unicode="&#xf2eb;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EC" unicode="&#xf2ec;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2ED" unicode="&#xf2ed;" horiz-adv-x="1792"
- />
- <glyph glyph-name="uniF2EE" unicode="&#xf2ee;" horiz-adv-x="1792"
- />
- <glyph glyph-name="lessequal" unicode="&#xf500;" horiz-adv-x="1792"
- />
- </font>
-</defs></svg>
diff --git a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf b/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 35acda2fa..000000000
--- a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff b/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 400014a4b..000000000
--- a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff2 b/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff2
deleted file mode 100644
index 4d13fc604..000000000
--- a/library/font_awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff2
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/font-awesome/less/animated.less b/library/font_awesome/src/assets/font-awesome/less/animated.less
deleted file mode 100644
index e489ea318..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/animated.less
+++ /dev/null
@@ -1,37 +0,0 @@
----
----
-
-// Animated Icons
-// --------------------------
-
-.@{fa-css-prefix}-spin {
- -webkit-animation: fa-spin 2s infinite linear;
- animation: fa-spin 2s infinite linear;
-}
-
-.@{fa-css-prefix}-pulse {
- -webkit-animation: fa-spin 1s infinite steps(8);
- animation: fa-spin 1s infinite steps(8);
-}
-
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/bordered-pulled.less b/library/font_awesome/src/assets/font-awesome/less/bordered-pulled.less
deleted file mode 100644
index cd14a68a1..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/bordered-pulled.less
+++ /dev/null
@@ -1,28 +0,0 @@
----
----
-
-// Bordered & Pulled
-// -------------------------
-
-.@{fa-css-prefix}-border {
- padding: .2em .25em .15em;
- border: solid .08em @fa-border-color;
- border-radius: .1em;
-}
-
-.@{fa-css-prefix}-pull-left { float: left; }
-.@{fa-css-prefix}-pull-right { float: right; }
-
-.@{fa-css-prefix} {
- &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
- &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
-}
-
-/* Deprecated as of 4.4.0 */
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-.@{fa-css-prefix} {
- &.pull-left { margin-right: .3em; }
- &.pull-right { margin-left: .3em; }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/core.less b/library/font_awesome/src/assets/font-awesome/less/core.less
deleted file mode 100644
index d299d0d03..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/core.less
+++ /dev/null
@@ -1,9 +0,0 @@
----
----
-
-// Base Class Definition
-// -------------------------
-
-.@{fa-css-prefix} {
-{% include code/core.less %}
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/fixed-width.less b/library/font_awesome/src/assets/font-awesome/less/fixed-width.less
deleted file mode 100644
index f3b657b52..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/fixed-width.less
+++ /dev/null
@@ -1,9 +0,0 @@
----
----
-
-// Fixed Width Icons
-// -------------------------
-.@{fa-css-prefix}-fw {
- width: (18em / 14);
- text-align: center;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/font-awesome.less b/library/font_awesome/src/assets/font-awesome/less/font-awesome.less
deleted file mode 100644
index 3fb656e35..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/font-awesome.less
+++ /dev/null
@@ -1,17 +0,0 @@
----
----
-{% include code/license.css %}
-
-@import "variables.less";
-@import "mixins.less";
-@import "path.less";
-@import "core.less";
-@import "larger.less";
-@import "fixed-width.less";
-@import "list.less";
-@import "bordered-pulled.less";
-@import "animated.less";
-@import "rotated-flipped.less";
-@import "stacked.less";
-@import "icons.less";
-@import "screen-reader.less";
diff --git a/library/font_awesome/src/assets/font-awesome/less/icons.less b/library/font_awesome/src/assets/font-awesome/less/icons.less
deleted file mode 100644
index 1d29b69a6..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/icons.less
+++ /dev/null
@@ -1,7 +0,0 @@
----
----
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-{% for icon in icons %}{% for alias in icon.aliases %}
-.@{fa-css-prefix}-{{ alias }}:before,{% endfor %}
-.@{fa-css-prefix}-{{ icon.id }}:before { content: @fa-var-{{ icon.id }}; }{% endfor %}
diff --git a/library/font_awesome/src/assets/font-awesome/less/larger.less b/library/font_awesome/src/assets/font-awesome/less/larger.less
deleted file mode 100644
index 472643eb0..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/larger.less
+++ /dev/null
@@ -1,16 +0,0 @@
----
----
-
-// Icon Sizes
-// -------------------------
-
-/* makes the font 33% larger relative to the icon container */
-.@{fa-css-prefix}-lg {
- font-size: (4em / 3);
- line-height: (3em / 4);
- vertical-align: -15%;
-}
-.@{fa-css-prefix}-2x { font-size: 2em; }
-.@{fa-css-prefix}-3x { font-size: 3em; }
-.@{fa-css-prefix}-4x { font-size: 4em; }
-.@{fa-css-prefix}-5x { font-size: 5em; }
diff --git a/library/font_awesome/src/assets/font-awesome/less/list.less b/library/font_awesome/src/assets/font-awesome/less/list.less
deleted file mode 100644
index e32bc0d2e..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/list.less
+++ /dev/null
@@ -1,22 +0,0 @@
----
----
-
-// List Icons
-// -------------------------
-
-.@{fa-css-prefix}-ul {
- padding-left: 0;
- margin-left: @fa-li-width;
- list-style-type: none;
- > li { position: relative; }
-}
-.@{fa-css-prefix}-li {
- position: absolute;
- left: -@fa-li-width;
- width: @fa-li-width;
- top: (2em / 14);
- text-align: center;
- &.@{fa-css-prefix}-lg {
- left: (-@fa-li-width + (4em / 14));
- }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/mixins.less b/library/font_awesome/src/assets/font-awesome/less/mixins.less
deleted file mode 100644
index 588973976..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/mixins.less
+++ /dev/null
@@ -1,56 +0,0 @@
----
----
-// Mixins
-// --------------------------
-
-.fa-icon() {
-{% include code/core.less %}
-}
-
-.fa-icon-rotate(@degrees, @rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
- -webkit-transform: rotate(@degrees);
- -ms-transform: rotate(@degrees);
- transform: rotate(@degrees);
-}
-
-.fa-icon-flip(@horiz, @vert, @rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
- -webkit-transform: scale(@horiz, @vert);
- -ms-transform: scale(@horiz, @vert);
- transform: scale(@horiz, @vert);
-}
-
-
-// Only display content to screen readers. A la Bootstrap 4.
-//
-// See: http://a11yproject.com/posts/how-to-hide-content/
-
-.sr-only() {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0,0,0,0);
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-//
-// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-//
-// Credit: HTML5 Boilerplate
-
-.sr-only-focusable() {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
- }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/path.less b/library/font_awesome/src/assets/font-awesome/less/path.less
deleted file mode 100644
index 835be41f8..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/path.less
+++ /dev/null
@@ -1,15 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
- font-family: 'FontAwesome';
- src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
- src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
- url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
- url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
- url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
- url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
- // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
- font-weight: normal;
- font-style: normal;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/rotated-flipped.less b/library/font_awesome/src/assets/font-awesome/less/rotated-flipped.less
deleted file mode 100644
index bf7a0b423..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/rotated-flipped.less
+++ /dev/null
@@ -1,23 +0,0 @@
----
----
-
-// Rotated & Flipped Icons
-// -------------------------
-
-.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
-.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
-.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
-
-.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
-.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
-
-// Hook for IE8-9
-// -------------------------
-
-:root .@{fa-css-prefix}-rotate-90,
-:root .@{fa-css-prefix}-rotate-180,
-:root .@{fa-css-prefix}-rotate-270,
-:root .@{fa-css-prefix}-flip-horizontal,
-:root .@{fa-css-prefix}-flip-vertical {
- filter: none;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/less/screen-reader.less b/library/font_awesome/src/assets/font-awesome/less/screen-reader.less
deleted file mode 100644
index 11c188196..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/screen-reader.less
+++ /dev/null
@@ -1,5 +0,0 @@
-// Screen Readers
-// -------------------------
-
-.sr-only { .sr-only(); }
-.sr-only-focusable { .sr-only-focusable(); }
diff --git a/library/font_awesome/src/assets/font-awesome/less/stacked.less b/library/font_awesome/src/assets/font-awesome/less/stacked.less
deleted file mode 100644
index 2a1e4189b..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/stacked.less
+++ /dev/null
@@ -1,23 +0,0 @@
----
----
-
-// Stacked Icons
-// -------------------------
-
-.@{fa-css-prefix}-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.@{fa-css-prefix}-stack-1x { line-height: inherit; }
-.@{fa-css-prefix}-stack-2x { font-size: 2em; }
-.@{fa-css-prefix}-inverse { color: @fa-inverse; }
diff --git a/library/font_awesome/src/assets/font-awesome/less/variables.less b/library/font_awesome/src/assets/font-awesome/less/variables.less
deleted file mode 100644
index 83207e414..000000000
--- a/library/font_awesome/src/assets/font-awesome/less/variables.less
+++ /dev/null
@@ -1,17 +0,0 @@
----
----
-// Variables
-// --------------------------
-
-@fa-font-path: "../fonts";
-@fa-font-size-base: 14px;
-@fa-line-height-base: 1;
-//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/{{site.fontawesome.version}}/fonts"; // for referencing Bootstrap CDN font files directly
-@fa-css-prefix: {{ site.fontawesome.css_prefix }};
-@fa-version: "{{ site.fontawesome.version }}";
-@fa-border-color: #eee;
-@fa-inverse: #fff;
-@fa-li-width: (30em / 14);
-
-{% assign sorted_icons = icons | expand_aliases | sort_by:'class' %}{% for icon in sorted_icons %}@fa-var-{{ icon.class }}: "\{{ icon.unicode }}";
-{% endfor %}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_animated.scss b/library/font_awesome/src/assets/font-awesome/scss/_animated.scss
deleted file mode 100644
index fed5a987f..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_animated.scss
+++ /dev/null
@@ -1,37 +0,0 @@
----
----
-
-// Spinning Icons
-// --------------------------
-
-.#{$fa-css-prefix}-spin {
- -webkit-animation: fa-spin 2s infinite linear;
- animation: fa-spin 2s infinite linear;
-}
-
-.#{$fa-css-prefix}-pulse {
- -webkit-animation: fa-spin 1s infinite steps(8);
- animation: fa-spin 1s infinite steps(8);
-}
-
-@-webkit-keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
-
-@keyframes fa-spin {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_bordered-pulled.scss b/library/font_awesome/src/assets/font-awesome/scss/_bordered-pulled.scss
deleted file mode 100644
index 40bafcba9..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_bordered-pulled.scss
+++ /dev/null
@@ -1,28 +0,0 @@
----
----
-
-// Bordered & Pulled
-// -------------------------
-
-.#{$fa-css-prefix}-border {
- padding: .2em .25em .15em;
- border: solid .08em $fa-border-color;
- border-radius: .1em;
-}
-
-.#{$fa-css-prefix}-pull-left { float: left; }
-.#{$fa-css-prefix}-pull-right { float: right; }
-
-.#{$fa-css-prefix} {
- &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
- &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
-}
-
-/* Deprecated as of 4.4.0 */
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-.#{$fa-css-prefix} {
- &.pull-left { margin-right: .3em; }
- &.pull-right { margin-left: .3em; }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_core.scss b/library/font_awesome/src/assets/font-awesome/scss/_core.scss
deleted file mode 100644
index 45e548bac..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_core.scss
+++ /dev/null
@@ -1,9 +0,0 @@
----
----
-
-// Base Class Definition
-// -------------------------
-
-.#{$fa-css-prefix} {
-{% include code/core.scss %}
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_fixed-width.scss b/library/font_awesome/src/assets/font-awesome/scss/_fixed-width.scss
deleted file mode 100644
index cfb14543a..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_fixed-width.scss
+++ /dev/null
@@ -1,9 +0,0 @@
----
----
-
-// Fixed Width Icons
-// -------------------------
-.#{$fa-css-prefix}-fw {
- width: (18em / 14);
- text-align: center;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_icons.scss b/library/font_awesome/src/assets/font-awesome/scss/_icons.scss
deleted file mode 100644
index 23128aaee..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_icons.scss
+++ /dev/null
@@ -1,7 +0,0 @@
----
----
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
- readers do not read off random characters that represent icons */
-{% for icon in icons %}{% for alias in icon.aliases %}
-.#{$fa-css-prefix}-{{ alias }}:before,{% endfor %}
-.#{$fa-css-prefix}-{{ icon.id }}:before { content: $fa-var-{{ icon.id }}; }{% endfor %}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_larger.scss b/library/font_awesome/src/assets/font-awesome/scss/_larger.scss
deleted file mode 100644
index 403572384..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_larger.scss
+++ /dev/null
@@ -1,16 +0,0 @@
----
----
-
-// Icon Sizes
-// -------------------------
-
-/* makes the font 33% larger relative to the icon container */
-.#{$fa-css-prefix}-lg {
- font-size: (4em / 3);
- line-height: (3em / 4);
- vertical-align: -15%;
-}
-.#{$fa-css-prefix}-2x { font-size: 2em; }
-.#{$fa-css-prefix}-3x { font-size: 3em; }
-.#{$fa-css-prefix}-4x { font-size: 4em; }
-.#{$fa-css-prefix}-5x { font-size: 5em; }
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_list.scss b/library/font_awesome/src/assets/font-awesome/scss/_list.scss
deleted file mode 100644
index 1c6498268..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_list.scss
+++ /dev/null
@@ -1,22 +0,0 @@
----
----
-
-// List Icons
-// -------------------------
-
-.#{$fa-css-prefix}-ul {
- padding-left: 0;
- margin-left: $fa-li-width;
- list-style-type: none;
- > li { position: relative; }
-}
-.#{$fa-css-prefix}-li {
- position: absolute;
- left: -$fa-li-width;
- width: $fa-li-width;
- top: (2em / 14);
- text-align: center;
- &.#{$fa-css-prefix}-lg {
- left: -$fa-li-width + (4em / 14);
- }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_mixins.scss b/library/font_awesome/src/assets/font-awesome/scss/_mixins.scss
deleted file mode 100644
index 241166198..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_mixins.scss
+++ /dev/null
@@ -1,56 +0,0 @@
----
----
-// Mixins
-// --------------------------
-
-@mixin fa-icon() {
-{% include code/core.scss %}
-}
-
-@mixin fa-icon-rotate($degrees, $rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
- -webkit-transform: rotate($degrees);
- -ms-transform: rotate($degrees);
- transform: rotate($degrees);
-}
-
-@mixin fa-icon-flip($horiz, $vert, $rotation) {
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
- -webkit-transform: scale($horiz, $vert);
- -ms-transform: scale($horiz, $vert);
- transform: scale($horiz, $vert);
-}
-
-
-// Only display content to screen readers. A la Bootstrap 4.
-//
-// See: http://a11yproject.com/posts/how-to-hide-content/
-
-@mixin sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0,0,0,0);
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-//
-// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-//
-// Credit: HTML5 Boilerplate
-
-@mixin sr-only-focusable {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
- }
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_path.scss b/library/font_awesome/src/assets/font-awesome/scss/_path.scss
deleted file mode 100644
index bb457c23a..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_path.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
- font-family: 'FontAwesome';
- src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
- src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
- url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
- url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
- url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
- url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
-// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
- font-weight: normal;
- font-style: normal;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_rotated-flipped.scss b/library/font_awesome/src/assets/font-awesome/scss/_rotated-flipped.scss
deleted file mode 100644
index 6e95eb46a..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_rotated-flipped.scss
+++ /dev/null
@@ -1,23 +0,0 @@
----
----
-
-// Rotated & Flipped Icons
-// -------------------------
-
-.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
-.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
-.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
-
-.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
-.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
-
-// Hook for IE8-9
-// -------------------------
-
-:root .#{$fa-css-prefix}-rotate-90,
-:root .#{$fa-css-prefix}-rotate-180,
-:root .#{$fa-css-prefix}-rotate-270,
-:root .#{$fa-css-prefix}-flip-horizontal,
-:root .#{$fa-css-prefix}-flip-vertical {
- filter: none;
-}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_screen-reader.scss b/library/font_awesome/src/assets/font-awesome/scss/_screen-reader.scss
deleted file mode 100644
index 637426f0d..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_screen-reader.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-// Screen Readers
-// -------------------------
-
-.sr-only { @include sr-only(); }
-.sr-only-focusable { @include sr-only-focusable(); }
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_stacked.scss b/library/font_awesome/src/assets/font-awesome/scss/_stacked.scss
deleted file mode 100644
index 01c9443be..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_stacked.scss
+++ /dev/null
@@ -1,23 +0,0 @@
----
----
-
-// Stacked Icons
-// -------------------------
-
-.#{$fa-css-prefix}-stack {
- position: relative;
- display: inline-block;
- width: 2em;
- height: 2em;
- line-height: 2em;
- vertical-align: middle;
-}
-.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
- position: absolute;
- left: 0;
- width: 100%;
- text-align: center;
-}
-.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
-.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
-.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
diff --git a/library/font_awesome/src/assets/font-awesome/scss/_variables.scss b/library/font_awesome/src/assets/font-awesome/scss/_variables.scss
deleted file mode 100644
index 9dfa9018d..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/_variables.scss
+++ /dev/null
@@ -1,17 +0,0 @@
----
----
-// Variables
-// --------------------------
-
-$fa-font-path: "../fonts" !default;
-$fa-font-size-base: 14px !default;
-$fa-line-height-base: 1 !default;
-//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/{{site.fontawesome.version}}/fonts" !default; // for referencing Bootstrap CDN font files directly
-$fa-css-prefix: {{ site.fontawesome.css_prefix }} !default;
-$fa-version: "{{ site.fontawesome.version }}" !default;
-$fa-border-color: #eee !default;
-$fa-inverse: #fff !default;
-$fa-li-width: (30em / 14) !default;
-
-{% assign sorted_icons = icons | expand_aliases | sort_by:'class' %}{% for icon in sorted_icons %}$fa-var-{{ icon.class }}: "\{{ icon.unicode }}";
-{% endfor %}
diff --git a/library/font_awesome/src/assets/font-awesome/scss/font-awesome.scss b/library/font_awesome/src/assets/font-awesome/scss/font-awesome.scss
deleted file mode 100644
index f7b78ecd1..000000000
--- a/library/font_awesome/src/assets/font-awesome/scss/font-awesome.scss
+++ /dev/null
@@ -1,17 +0,0 @@
----
----
-{% include code/license.css %}
-
-@import "variables";
-@import "mixins";
-@import "path";
-@import "core";
-@import "larger";
-@import "fixed-width";
-@import "list";
-@import "bordered-pulled";
-@import "animated";
-@import "rotated-flipped";
-@import "stacked";
-@import "icons";
-@import "screen-reader";
diff --git a/library/font_awesome/src/assets/img/algolia.png b/library/font_awesome/src/assets/img/algolia.png
deleted file mode 100644
index f5a89619b..000000000
--- a/library/font_awesome/src/assets/img/algolia.png
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/img/logo-themeisle.png b/library/font_awesome/src/assets/img/logo-themeisle.png
deleted file mode 100644
index c0f432867..000000000
--- a/library/font_awesome/src/assets/img/logo-themeisle.png
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/img/logo-wpbeginner.png b/library/font_awesome/src/assets/img/logo-wpbeginner.png
deleted file mode 100644
index c0711153f..000000000
--- a/library/font_awesome/src/assets/img/logo-wpbeginner.png
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.min.js b/library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.min.js
deleted file mode 100644
index 32535fddf..000000000
--- a/library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * zeroclipboard
- * The Zero Clipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie, and a JavaScript interface.
- * Copyright 2012 Jon Rohan, James M. Greene, .
- * Released under the MIT license
- * http://jonrohan.github.com/ZeroClipboard/
- * v1.1.7
- */(function(){"use strict";var a=function(a,b){var c=a.style[b];a.currentStyle?c=a.currentStyle[b]:window.getComputedStyle&&(c=document.defaultView.getComputedStyle(a,null).getPropertyValue(b));if(c=="auto"&&b=="cursor"){var d=["a"];for(var e=0;e<d.length;e++)if(a.tagName.toLowerCase()==d[e])return"pointer"}return c},b=function(a){if(!l.prototype._singleton)return;a||(a=window.event);var b;this!==window?b=this:a.target?b=a.target:a.srcElement&&(b=a.srcElement),l.prototype._singleton.setCurrent(b)},c=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)},d=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},e=function(a,b){if(a.addClass)return a.addClass(b),a;if(b&&typeof b=="string"){var c=(b||"").split(/\s+/);if(a.nodeType===1)if(!a.className)a.className=b;else{var d=" "+a.className+" ",e=a.className;for(var f=0,g=c.length;f<g;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}}return a},f=function(a,b){if(a.removeClass)return a.removeClass(b),a;if(b&&typeof b=="string"||b===undefined){var c=(b||"").split(/\s+/);if(a.nodeType===1&&a.className)if(b){var d=(" "+a.className+" ").replace(/[\n\t]/g," ");for(var e=0,f=c.length;e<f;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},g=function(b){var c={left:0,top:0,width:b.width||b.offsetWidth||0,height:b.height||b.offsetHeight||0,zIndex:9999},d=a(b,"zIndex");d&&d!="auto"&&(c.zIndex=parseInt(d,10));while(b){var e=parseInt(a(b,"borderLeftWidth"),10),f=parseInt(a(b,"borderTopWidth"),10);c.left+=isNaN(b.offsetLeft)?0:b.offsetLeft,c.left+=isNaN(e)?0:e,c.top+=isNaN(b.offsetTop)?0:b.offsetTop,c.top+=isNaN(f)?0:f,b=b.offsetParent}return c},h=function(a){return(a.indexOf("?")>=0?"&":"?")+"nocache="+(new Date).getTime()},i=function(a){var b=[];return a.trustedDomains&&(typeof a.trustedDomains=="string"?b.push("trustedDomain="+a.trustedDomains):b.push("trustedDomain="+a.trustedDomains.join(","))),b.join("&")},j=function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},k=function(a){if(typeof a=="string")throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},l=function(a,b){a&&(l.prototype._singleton||this).glue(a);if(l.prototype._singleton)return l.prototype._singleton;l.prototype._singleton=this,this.options={};for(var c in o)this.options[c]=o[c];for(var d in b)this.options[d]=b[d];this.handlers={},l.detectFlashSupport()&&p()},m,n=[];l.prototype.setCurrent=function(b){m=b,this.reposition(),b.getAttribute("title")&&this.setTitle(b.getAttribute("title")),this.setHandCursor(a(b,"cursor")=="pointer")},l.prototype.setText=function(a){a&&a!==""&&(this.options.text=a,this.ready()&&this.flashBridge.setText(a))},l.prototype.setTitle=function(a){a&&a!==""&&this.htmlBridge.setAttribute("title",a)},l.prototype.setSize=function(a,b){this.ready()&&this.flashBridge.setSize(a,b)},l.prototype.setHandCursor=function(a){this.ready()&&this.flashBridge.setHandCursor(a)},l.version="1.1.7";var o={moviePath:"ZeroClipboard.swf",trustedDomains:null,text:null,hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",allowScriptAccess:"sameDomain"};l.setDefaults=function(a){for(var b in a)o[b]=a[b]},l.destroy=function(){l.prototype._singleton.unglue(n);var a=l.prototype._singleton.htmlBridge;a.parentNode.removeChild(a),delete l.prototype._singleton},l.detectFlashSupport=function(){var a=!1;try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}return a};var p=function(){var a=l.prototype._singleton,b=document.getElementById("global-zeroclipboard-html-bridge");if(!b){var c=' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="'+a.options.moviePath+h(a.options.moviePath)+'"/> <param name="allowScriptAccess" value="'+a.options.allowScriptAccess+'"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="'+i(a.options)+'"/> <embed src="'+a.options.moviePath+h(a.options.moviePath)+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+i(a.options)+'" scale="exactfit"> </embed> </object>';b=document.createElement("div"),b.id="global-zeroclipboard-html-bridge",b.setAttribute("class","global-zeroclipboard-container"),b.setAttribute("data-clipboard-ready",!1),b.style.position="absolute",b.style.left="-9999px",b.style.top="-9999px",b.style.width="15px",b.style.height="15px",b.style.zIndex="9999",b.innerHTML=c,document.body.appendChild(b)}a.htmlBridge=b,a.flashBridge=document["global-zeroclipboard-flash-bridge"]||b.children[0].lastElementChild};l.prototype.resetBridge=function(){this.htmlBridge.style.left="-9999px",this.htmlBridge.style.top="-9999px",this.htmlBridge.removeAttribute("title"),this.htmlBridge.removeAttribute("data-clipboard-text"),f(m,this.options.activeClass),m=null,this.options.text=null},l.prototype.ready=function(){var a=this.htmlBridge.getAttribute("data-clipboard-ready");return a==="true"||a===!0},l.prototype.reposition=function(){if(!m)return!1;var a=g(m);this.htmlBridge.style.top=a.top+"px",this.htmlBridge.style.left=a.left+"px",this.htmlBridge.style.width=a.width+"px",this.htmlBridge.style.height=a.height+"px",this.htmlBridge.style.zIndex=a.zIndex+1,this.setSize(a.width,a.height)},l.dispatch=function(a,b){l.prototype._singleton.receiveEvent(a,b)},l.prototype.on=function(a,b){var c=a.toString().split(/\s/g);for(var d=0;d<c.length;d++)a=c[d].toLowerCase().replace(/^on/,""),this.handlers[a]||(this.handlers[a]=b);this.handlers.noflash&&!l.detectFlashSupport()&&this.receiveEvent("onNoFlash",null)},l.prototype.addEventListener=l.prototype.on,l.prototype.off=function(a,b){var c=a.toString().split(/\s/g);for(var d=0;d<c.length;d++){a=c[d].toLowerCase().replace(/^on/,"");for(var e in this.handlers)e===a&&this.handlers[e]===b&&delete this.handlers[e]}},l.prototype.removeEventListener=l.prototype.off,l.prototype.receiveEvent=function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");var c=m;switch(a){case"load":if(b&&parseFloat(b.flashVersion.replace(",",".").replace(/[^0-9\.]/gi,""))<10){this.receiveEvent("onWrongFlash",{flashVersion:b.flashVersion});return}this.htmlBridge.setAttribute("data-clipboard-ready",!0);break;case"mouseover":e(c,this.options.hoverClass);break;case"mouseout":f(c,this.options.hoverClass),this.resetBridge();break;case"mousedown":e(c,this.options.activeClass);break;case"mouseup":f(c,this.options.activeClass);break;case"datarequested":var d=c.getAttribute("data-clipboard-target"),g=d?document.getElementById(d):null;if(g){var h=g.value||g.textContent||g.innerText;h&&this.setText(h)}else{var i=c.getAttribute("data-clipboard-text");i&&this.setText(i)}break;case"complete":this.options.text=null}if(this.handlers[a]){var j=this.handlers[a];typeof j=="function"?j.call(c,this,b):typeof j=="string"&&window[j].call(c,this,b)}},l.prototype.glue=function(a){a=k(a);for(var d=0;d<a.length;d++)j(a[d],n)==-1&&(n.push(a[d]),c(a[d],"mouseover",b))},l.prototype.unglue=function(a){a=k(a);for(var c=0;c<a.length;c++){d(a[c],"mouseover",b);var e=j(a[c],n);e!=-1&&n.splice(e,1)}},typeof module!="undefined"?module.exports=l:typeof define=="function"&&define.amd?define(function(){return l}):window.ZeroClipboard=l})(); \ No newline at end of file
diff --git a/library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.swf b/library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.swf
deleted file mode 100644
index 880e64ee7..000000000
--- a/library/font_awesome/src/assets/js/ZeroClipboard-1.1.7.swf
+++ /dev/null
Binary files differ
diff --git a/library/font_awesome/src/assets/js/html5shiv.js b/library/font_awesome/src/assets/js/html5shiv.js
deleted file mode 100644
index 784f221ca..000000000
--- a/library/font_awesome/src/assets/js/html5shiv.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
-a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
-c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
-"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
-for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
diff --git a/library/font_awesome/src/assets/js/monetization.js b/library/font_awesome/src/assets/js/monetization.js
deleted file mode 100644
index 0e3c2a730..000000000
--- a/library/font_awesome/src/assets/js/monetization.js
+++ /dev/null
@@ -1 +0,0 @@
-var _bsa={init:function(format,zoneKey,segment,options){var options=typeof options!=='undefined'?options:false;var srv=document.createElement('script');srv.id='_bsa_srv-'+zoneKey;srv.type='text/javascript';srv.src=(options&&options.path)?options.path:'//srv.buysellads.com/ads/'+zoneKey+'.json';srv.src=this.appendQueryString(srv.src,'callback','_bsa_go');if(segment)srv.src=this.appendQueryString(srv.src,'segment',segment);if(options&&this.isset(options.ip))srv.src=this.appendQueryString(srv.src,'forwardedip',options.ip);if(!this.isset(window['_bsa_queue']))window['_bsa_queue']=[];if(options&&!this.isset(options.platforms)||!this.isset(options))options.platforms=['desktop','mobile'];if(_bsa[format].readyToInit!=false||(options&&options.testMode)||!_bsa.objExists(zoneKey))window['_bsa_queue'].push([format,zoneKey,segment,options]);if(_bsa[format].readyToInit!=false&&!options.testMode){srv.src+=this.frequencyCap();if(_bsa.objExists(zoneKey))document.getElementsByTagName('head')[0].appendChild(srv)}else if((options&&options.testMode)||!_bsa.objExists(zoneKey))_bsa_go(_bsa[format].testData);else _bsa[format](zoneKey,segment,options)},frequencyCap:function(){var day=_bsa.getCookie('_bsap_daycap'),life=_bsa.getCookie('_bsap_lifecap'),day=this.isset(day)?day.split(';')[0].split(','):[],life=this.isset(life)?life.split(';')[0].split(','):[];if(day.length||life.length){var freqcap=[];for(var i=0;i<day.length;i++){var adspot=day[i];for(var found=-1,find=0;find<freqcap.length&&found==-1;find++)if(freqcap[find][0]==adspot)found=find;if(found==-1)freqcap.push([adspot,1,0]);else freqcap[found][1]++}for(var i=0;i<life.length;i++){var adspot=day[i];for(var found=-1,find=0;find<freqcap.length&&found==-1;find++)if(freqcap[find][0]==adspot)found=find;if(found==-1)freqcap.push([adspot,0,1]);else freqcap[found][2]++}for(var i=0;i<freqcap.length;i++)freqcap[i]=freqcap[i][0]+':'+freqcap[i][1]+','+freqcap[i][2]}if(freqcap&&freqcap.length)return'&freqcap='+encodeURIComponent(freqcap.join(';'));else return''},appendQueryString:function(url,name,value){var re=new RegExp('([?&]'+name+'=)[^&]+','');function add(sep){url+=sep+name+'='+encodeURIComponent(value)}function change(){url=url.replace(re,'$1'+encodeURIComponent(value))}if(url.indexOf('?')===-1){add('?')}else{if(re.test(url)){change()}else{add('&')}}return url},clearQueue:function(){window['_bsa_queue'].shift()},link:function(link){var l=link.split('?encredirect='),time=Date.now()/1000|0,fulllink;if(typeof l[1]!='undefined')fulllink=l[0]+'?segment='+window['_bsa_queue'][2]+';&encredirect='+encodeURIComponent(l[1]);else if(l[0].search('srv.buysellads.com')>0)fulllink=l[0]+'?segment='+window['_bsa_queue'][2]+';';else fulllink=l[0];fulllink=fulllink.replace('[publisher]',window['_bsa_queue'][2]);fulllink=fulllink.replace('[timestamp]',time);return fulllink},drop:function(output,target,elType,idName){var div=document.createElement(elType);div.id=idName;div.innerHTML=output;if(!this.isset(target))where='body';for(i=0;i<document.querySelectorAll(target).length;i++)document.querySelectorAll(target)[i].appendChild(div)},hide:function(e){if(document.getElementById(e)){this.removeClass(document.getElementById(e),'_bsa_show');this.addClass(document.getElementById(e),'_bsa_hide')}},show:function(e){if(document.getElementById(e)){this.removeClass(document.getElementById(e),'_bsa_hide');this.addClass(document.getElementById(e),'_bsa_show')}},close:function(e){this.hide(e);if(this.isset(_bsa.setCookie))_bsa.setCookie(e,'hide',1)},hasClass:function(el,name){return new RegExp('(\\s|^)'+name+'(\\s|$)').test(el.className)},addClass:function(el,name){if(!this.hasClass(el,name))el.className+=(el.className?' ':'')+name},removeClass:function(el,name){if(this.hasClass(el,name))el.className=el.className.replace(new RegExp('(\\s|^)'+name+'(\\s|$)'),' ').replace(/^\s+|\s+$/g,'')},removeEl:function(el){if(typeof el!=='undefined'&&el!=null)el.parentNode.removeChild(el)},isHex:function(c){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(c)},isMobile:function(){var check=false;(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check=true})(navigator.userAgent||navigator.vendor||window.opera);return check},extend:function(target){for(var i=1;i<arguments.length;++i){var from=arguments[i];if(typeof from!=='object')continue;for(var j in from){if(from.hasOwnProperty(j)){target[j]=typeof from[j]==='object'?this.extend({},target[j],from[j]):from[j]}}}return target},isset:function(v){return typeof v!=='undefined'&&v!=null},exists:function(el){if(el===null)return false;return true},objExists:function(obj){var hasOwnProperty=Object.prototype.hasOwnProperty;if(obj==null)return false;if(obj.length>0)return true;if(obj.length===0)return false;for(var key in obj)if(hasOwnProperty.call(obj,key))return true;return false},getAttr:function(v,id){return document.getElementById(id).getAttribute('data-'+v)},getUrlVar:function(el,name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)",regex=new RegExp(regexS),results=regex.exec(el.src);if(results==null)return'';else return results[1]}};var _bsa_go=function(json){if(window['_bsa_queue'][0])if((window['_bsa_queue'][0][3]&&window['_bsa_queue'][0][3].platforms.indexOf('mobile')>-1&&_bsa.isMobile())||(window['_bsa_queue'][0][3]&&window['_bsa_queue'][0][3].platforms.indexOf('desktop')>-1&&!_bsa.isMobile()))for(i=json['ads'].length-1;i>=0;i--)if(json['ads'][i].statlink==null)json['ads'].splice(i,1);if(_bsa.isset(json['ads'][0].statlink)){for(var i=0;i<json['ads'].length;i++)_bsa_serving_callback(json['ads'][i].bannerid,json['ads'][i].zonekey,json['ads'][i].freqcap);_bsa[window['_bsa_queue'][0][0]](window['_bsa_queue'][0][1],window['_bsa_queue'][0][2],window['_bsa_queue'][0][3],json['ads'])}};_bsa.getCookie=function(name){var nameEQ=name+'=',ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length)}return null};_bsa.setCookie=function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires='; expires='+date.toGMTString()}else var expires='';document.cookie=name+'='+value+expires+'; path=/'};_bsa.removeCookie=function(name){this.setCookie(name,'',-1)};window['_bsa_serving_callback']=function(banner,zone,freqcap){var append=function(w,data,days){var c=document.cookie,i=c.indexOf(w+'='),existing=i>=0?c.substring(i+w.length+1).split(';')[0]+',':'',d=new Date();d.setTime(days*3600000+d);data=existing+data;data=data.substring(0,2048);document.cookie=w+'='+data+'; expires='+d.toGMTString()+'; path=\/'};if(freqcap){append('_bsap_daycap',banner,1);append('_bsap_lifecap',banner,365)}};_bsa.default=function(zoneKey,segment,options,ads){var disable_css=_bsa.isset(options)&&_bsa.isset(options.disable_css)?options.disable_css:false;_bsa.default.elID=function(options){return(options&&options.id)?options.id:'_default_'};_bsa.default.align=function(options){return(options&&options.align)?options.align:'vertical'};function css(colors){var c='<style type="text/css">',id=_bsa.default.elID(options);if(_bsa.default.align(options)=='vertical')c+='#'+id+'{flex-direction:column}#'+id+' ._default_{margin-bottom:10px;}';else c+='#'+id+'{flex-direction:row}#'+id+' a._default_{width:49%;}';c+='#'+id+'{position:relative;display:flex;}#'+id+' a._default_{display:block;position:relative;margin:5px;text-decoration:none;}#'+id+' a._default_:hover .default-title{text-decoration:underline;}#'+id+' .default-ad{position:absolute;right:0;top:0;background:#e1e1e1;color:#9a9a9a;padding:2px 3px;font-size:12.5px;border-radius:2px;font-weight:600;}#'+id+' a._default_ .default-image img{float:left;margin:0 10px 0 0;}#'+id+' a._default_ .default-title{display:block;margin:4px 0 0 0;font-size:16px;font-weight:600;padding:0 0 4px;}#'+id+' a._default_ .default-description{display:block;font-size:14px;color:#414141;margin-right:5%;}#'+id+' a._default_:hover .default-description{color:#111;}';c+='</style>';return c}function template(ads){var c='<span class="default-ad">ad</span>';for(var i=0;i<ads.length;i++)c+='<a href="'+ads[i].statlink+'" target="_blank" rel="nofollow" class="_default_"><span class="default-image"><img src="'+(_bsa.isset(ads[i].base64)?ads[i].base64:ads[i].image)+'" /></span><span class="default-title">'+ads[i].title+'</span><span class="default-description">'+ads[i].description+'</span></a>'+(_bsa.isset(ads[i].pixel)?'<img src="'+ads[i].pixel.replace('[timestamp]',ads[i].time)+'" style="display:none;" height="0" width="0" />':'')+'';return c}if(ads){_bsa.drop((disable_css?'':css(ads))+template(ads),options.target,'div',_bsa.default.elID(options));_bsa.clearQueue()}};_bsa.default.readyToInit=true;_bsa.default.testData={ads:[{barcolor:'#1a1b1c',barcolorHover:'rgba(0,0,0,.8)',callToActionTextColor:'#ffffff',callToActionColor:'#06c',callToActionColorHover:'#06c',callToActionTextColorHover:'#ffffff',textcolor:'#ffffff',textcolorHover:'#ffffff',barcolorHover:'#1a1b1c',statlink:'//demo.com/',image:'//dummyimage.com/80x80/000/1a1b1c',title:'This is a title',description:'Hi, please try my fancy new product over here!',calltoaction:'Learn More',base64:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAFVBMVEUAAAAaGxwJCgoDAwMNDQ4GBgcQEBGUR2suAAAAb0lEQVR4Ae3RMYoGMQxDYeEnz/2PvIGw05gpXP6grwoPVATrJ0VERERERBWSur/7jsHogee7b1BSH/cldDD7grut0mFJWDKjb1SV5XeIzegbhYSLd2jPvnEn1P89DR59xVXmfvBoJJh9ioiIiIiIPyBgActqvt8OAAAAAElFTkSuQmCC'}]};_bsa.imageonly=function(zoneKey,segment,options,ads){var disable_css=_bsa.isset(options)&&_bsa.isset(options.disable_css)?options.disable_css:false;_bsa.default.elID=function(options){return(options&&options.id)?options.id:zoneKey};_bsa.default.align=function(options){return(options&&options.align)?options.align:'vertical'};function css(colors){var c='<style type="text/css">',id=_bsa.default.elID(options);if(_bsa.default.align(options)=='vertical')c+='#'+id+'{flex-direction:column}#'+id+' ._default_{margin-bottom:10px;}';else c+='#'+id+'{flex-direction:row}#'+id+' a._default_{width:49%;}';c+='#'+id+'{position:relative;display:flex;flex-wrap:wrap;}#'+id+' a._default_{display:block;position:relative;margin:5px;text-decoration:none;}#'+id+' a._default_:hover .default-title{text-decoration:underline;}#'+id+' .default-ad{position:absolute;right:0;top:0;background:#e1e1e1;color:#9a9a9a;padding:2px 3px;font-size:12.5px;border-radius:2px;font-weight:600;}#'+id+' a._default_ .default-image img{float:left;margin:0 10px 0 0;}#'+id+' a._default_ .default-title{display:block;margin:4px 0 0 0;font-size:16px;font-weight:600;padding:0 0 4px;}#'+id+' a._default_ .default-description{display:block;font-size:14px;color:#414141;margin-right:5%;}#'+id+' a._default_:hover .default-description{color:#111;}';c+='</style>';return c}function template(ads){var c='';for(var i=0;i<ads.length;i++)c+='<a href="'+ads[i].statlink+'" target="_blank" rel="nofollow" class="ad'+i+'"><img src="'+(_bsa.isset(ads[i].base64)?ads[i].base64:ads[i].image)+'" alt="'+ads[i].alt+'" width="'+ads[i].width+'" height="'+ads[i].height+'" /></a>'+(_bsa.isset(ads[i].pixel)?'<img src="'+ads[i].pixel.replace('[timestamp]',ads[i].time)+'" style="display:none;" height="0" width="0" />':'')+'';return c}if(ads){_bsa.drop((disable_css?'':css(ads))+template(ads),options.target,'div',_bsa.default.elID(options));_bsa.clearQueue()}};_bsa.imageonly.readyToInit=true;_bsa.imageonly.testData={ads:[{barcolor:'#1a1b1c',barcolorHover:'rgba(0,0,0,.8)',callToActionTextColor:'#ffffff',callToActionColor:'#06c',callToActionColorHover:'#06c',callToActionTextColorHover:'#ffffff',textcolor:'#ffffff',textcolorHover:'#ffffff',barcolorHover:'#1a1b1c',statlink:'//demo.com/',image:'//dummyimage.com/80x80/000/1a1b1c',title:'This is a title',description:'Hi, please try my fancy new product over here!',calltoaction:'Learn More',base64:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAFVBMVEUAAAAaGxwJCgoDAwMNDQ4GBgcQEBGUR2suAAAAb0lEQVR4Ae3RMYoGMQxDYeEnz/2PvIGw05gpXP6grwoPVATrJ0VERERERBWSur/7jsHogee7b1BSH/cldDD7grut0mFJWDKjb1SV5XeIzegbhYSLd2jPvnEn1P89DR59xVXmfvBoJJh9ioiIiIiIPyBgActqvt8OAAAAAElFTkSuQmCC'}]};_bsa.fancybar=function(zoneKey,segment,options,ads){var disable_css=_bsa.isset(options)&&_bsa.isset(options.disable_css)?options.disable_css:false;_bsa.fancybar.elID=function(options){return(options&&options.id)?options.id:'_fbn_'};function css(colors){var c=colors[0],barcolor=_bsa.isset(c)&&_bsa.isHex(c.barcolor)?c.barcolor:_bsa.fancybar.testData.ads[0].barcolor,barcolorHover=_bsa.isset(c)&&_bsa.isHex(c.barcolorHover)?c.barcolorHover:_bsa.fancybar.testData.ads[0].barcolorHover,callToActionTextColor=_bsa.isset(c)&&_bsa.isHex(c.callToActionTextColor)?c.callToActionTextColor:_bsa.fancybar.testData.ads[0].callToActionTextColor,callToActionColor=_bsa.isset(c)&&_bsa.isHex(c.callToActionColor)?c.callToActionColor:_bsa.fancybar.testData.ads[0].callToActionColor,callToActionColorHover=_bsa.isset(c)&&_bsa.isHex(c.callToActionColorHover)?c.callToActionColorHover:_bsa.fancybar.testData.ads[0].callToActionColorHover,callToActionTextColorHover=_bsa.isset(c)&&_bsa.isHex(c.callToActionTextColorHover)?c.callToActionTextColorHover:_bsa.fancybar.testData.ads[0].callToActionTextColorHover,textcolor=_bsa.isset(c)&&_bsa.isHex(c.textcolor)?c.textcolor:_bsa.fancybar.testData.ads[0].textcolor,textcolorHover=_bsa.isset(c)&&_bsa.isHex(c.textcolorHover)?c.textcolorHover:_bsa.fancybar.testData.ads[0].textcolorHover,barcolorHover=_bsa.isset(c)&&_bsa.isHex(c.barcolorHover)?c.barcolorHover:_bsa.fancybar.testData.ads[0].barcolorHover;return'<style type="text/css">._bsa_hide ._bsa_fancybar{top:-100%;}._bsa_show ._bsa_fancybar {top:0;}._bsa_fancybar{display:block;width:100%;float:left;position:fixed;top:-80px;left:0;right:0;z-index:100001;background-color:'+barcolor+';-webkit-transition:top 700ms;-moz-transition:top 700ms;-o-transition:top 700ms;transition:top 700ms;text-align:center;box-sizing:border-box;font-family:helvetica,arial,sans-serif;margin:0 auto;box-shadow: 0 1px 5px rgba(0,0,0,.6);backface-visibility:hidden;}._bsa_fancybar a {display:block;position:relative;text-align:left;text-decoration:none;margin:0 auto;float:left;width:100%;padding:10px 5%;box-sizing:border-box;}._bsa_fancybar a:hover {background:'+barcolorHover+';display: block;}._bsa_fancybar a .fancybar-cta {display:block;float:right;color:'+callToActionTextColor+';background-color:'+callToActionColor+';border-radius:2px;line-height:28px;font-size:15px;box-sizing:border-box;margin:0;padding:0 12px;}._bsa_fancybar a:hover .fancybar-cta {background:'+callToActionColorHover+';color:'+callToActionTextColorHover+';}._bsa_fancybar a .fancybar-logo {display:block;float:left;padding:0;margin:-10px 0;}._bsa_fancybar a .fancybar-logo img {display:block;max-width:110px;}._bsa_fancybar a .fancybar-text {float:left;font-size:16px;line-height:16px;padding:8px 0 0 15px;color:'+textcolor+';}._bsa_fancybar a:hover .fancybar-text {color:'+textcolorHover+';}@media all and (max-width:680px){._bsa_fancybar a .fancybar-logo{margin:0 auto;display:block;min-width:100%;}._bsa_fancybar a .fancybar-logo img {max-width:110px;display:block;margin:0 auto;}._bsa_fancybar a .fancybar-text{font-size:13px;line-height:13px;padding:10px 0;text-align:center;width:100%;display:block;}._bsa_fancybar a .fancybar-cta{display:block;float:left;width:100%;margin:0;box-sizing:border-box;text-align:center;}}._bsa_fancybar .fancybar-close{display:block;position:absolute;top:11px;right:15px;padding:5px 10px 7px;border-radius: 2px;color:'+textcolor+';z-index:2;font-size:14px;line-height:12px;}._bsa_fancybar .fancybar-close:hover{cursor:pointer;background:'+barcolorHover+';}</style>'}function template(ads){var a=ads[0],link=_bsa.isset(a)&&_bsa.isset(a.statlink)?_bsa.link(a.statlink):_bsa.fancybar.testData.ads[0].statlink,image=_bsa.isset(a)&&_bsa.isset(a.image)?a.image:_bsa.fancybar.testData.ads[0].image,base64=_bsa.isset(a)&&_bsa.isset(a.base64)?a.base64:_bsa.fancybar.testData.ads[0].base64,text=_bsa.isset(a)&&_bsa.isset(a.text)?a.text:_bsa.fancybar.testData.ads[0].text,calltoaction=_bsa.isset(a)&&_bsa.isset(a.calltoaction)?a.calltoaction:_bsa.fancybar.testData.ads[0].calltoaction,pixel=_bsa.isset(a)&&_bsa.isset(a.pixel)?a.pixel:null,time=Date.now()/1000|0;return'<div class="_bsa_fancybar"><span class="fancybar-close" onclick="_bsa.close(\''+_bsa.fancybar.elID(options)+'\')">x</span><a href="'+link+'" target="_blank" rel="nofollow"><span class="fancybar-logo"><img src="'+(_bsa.isset(base64)?base64:image)+'" /></span><span class="fancybar-cta">'+calltoaction+'</span><span class="fancybar-text">'+text+'</span></a>'+(_bsa.isset(pixel)?'<img src="'+pixel.replace('[timestamp]',time)+'" style="display:none;" height="0" width="0" />':'')+'</div>'}if(!_bsa.getCookie(_bsa.fancybar.elID(options))){var _fancybar_didScroll;var _fancybar_didDrop=false;window.onscroll=function(){_fancybar_didScroll=true};var _fancybar_scrollInterval=setInterval(function(){if(_fancybar_didScroll&&!_bsa.getCookie(_bsa.fancybar.elID(options))){_fancybar_didScroll=false;var scrollTop=(window.pageYOffset!==undefined)?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;if(scrollTop>=100&&!document.getElementById(_bsa.fancybar.elID(options))){_bsa.fancybar.readyToInit=true;_bsa.init('fancybar',zoneKey,segment,options)}else if(scrollTop>=100){_bsa.show(_bsa.fancybar.elID(options))}if(scrollTop<100){_bsa.hide(_bsa.fancybar.elID(options))}}},500)}if(ads){_bsa.drop((disable_css?'':css(ads))+template(ads),'body','div',_bsa.fancybar.elID(options));_bsa.clearQueue()}};_bsa.fancybar.readyToInit=false;_bsa.fancybar.testData={ads:[{barcolor:'#1a1b1c',barcolorHover:'rgba(0,0,0,.8)',callToActionTextColor:'#ffffff',callToActionColor:'#06c',callToActionColorHover:'#06c',callToActionTextColorHover:'#ffffff',textcolor:'#ffffff',textcolorHover:'#ffffff',barcolorHover:'#1a1b1c',statlink:'//demo.com/',image:'//dummyimage.com/125x50/000/1a1b1c',text:'Hi, please try my fancy new product over here!',calltoaction:'Learn More',base64:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAyBAMAAACDoMmvAAAAG1BMVEUAAAAaGxwGBgcNDQ4QEBEWFxgJCgoDAwMTFBUu0R9eAAABlElEQVRIie2TsVLCQBCGjyQkluIIUh6jqKWoKGVmEGqQMVIeM2AsAQdtkQjDY7ubDclxSbSwsLl/JrfH7X67e5vAmJaWltZfdYqLM9520d6ArpQAEw8xpvUl0rhZwrURvDSfwR5n8IU28aPu+Xqa4jsjXH14tlDiJKPBGUHGEWNWT3Uu3JoU5xxm8WSK2NdA8TkDFvNFwYwsviaZieKzxT4f92cKzO7itk4nLekuGelhTpzZy90PowLLIhzlK520wxo8n4fe7FVneB8dC7xcyJ89BVB2g/sDkc970HXVf+/wXQNUnjU2H+PH0A28+nIT3oS7O5xseO5Hw57D0/ydr+1G45ExSlIszHbzM4+fB+mBjNMXSZDlsiDKk8PXY88tmcV1JQkyXUpb4Dm84cUHVB+/rKQY1J9IxdK8FEuZYPhG0gD0PeNx7jRvx7dndi8qLyeF4tZSHpLCN3m4N33mNMKtiYM2lri9m7I35IZTNkmPn/gSCjr+HPZXasBleV3FnFa576m+lObpPwhzLvatlpbW/+obifk8WyshfY8AAAAASUVORK5CYII='}]}; \ No newline at end of file
diff --git a/library/font_awesome/src/assets/js/prettify.min.js b/library/font_awesome/src/assets/js/prettify.min.js
deleted file mode 100644
index eef5ad7e6..000000000
--- a/library/font_awesome/src/assets/js/prettify.min.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
-(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
-[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
-f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
-(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
-{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
-t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
-"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
-l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
-q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
-q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
-"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
-a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
-for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
-m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
-a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
-j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
-"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
-H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
-J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
-I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
-["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
-/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
-["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
-hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
-!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
-250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
-PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
diff --git a/library/font_awesome/src/assets/js/respond.min.js b/library/font_awesome/src/assets/js/respond.min.js
deleted file mode 100644
index 56418a245..000000000
--- a/library/font_awesome/src/assets/js/respond.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
-/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
-window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document);
-
-/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
-(function(a){"use strict";function x(){u(!0)}var b={};a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,b.mediaQueriesSupported;var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var a=m.shift();v(a.href,function(b){p(b,a.href,a.media),h[a.href]=!0,setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(a){var b="clientWidth",h=d[b],k="CSS1Compat"===c.compatMode&&h||c.body[b]||h,m={},n=l[l.length-1],o=(new Date).getTime();if(a&&q&&i>o-q)return clearTimeout(r),r=setTimeout(u,i),void 0;q=o;for(var p in e)if(e.hasOwnProperty(p)){var v=e[p],w=v.minw,x=v.maxw,y=null===w,z=null===x,A="em";w&&(w=parseFloat(w)*(w.indexOf(A)>-1?t||s():1)),x&&(x=parseFloat(x)*(x.indexOf(A)>-1?t||s():1)),v.hasquery&&(y&&z||!(y||k>=w)||!(z||x>=k))||(m[v.media]||(m[v.media]=[]),m[v.media].push(f[v.rules]))}for(var B in g)g.hasOwnProperty(B)&&g[B]&&g[B].parentNode===j&&j.removeChild(g[B]);for(var C in m)if(m.hasOwnProperty(C)){var D=c.createElement("style"),E=m[C].join("\n");D.type="text/css",D.media=C,j.insertBefore(D,n.nextSibling),D.styleSheet?D.styleSheet.cssText=E:D.appendChild(c.createTextNode(E)),g.push(D)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)})(this);
diff --git a/library/font_awesome/src/assets/js/search.js b/library/font_awesome/src/assets/js/search.js
deleted file mode 100644
index 1c4d447f1..000000000
--- a/library/font_awesome/src/assets/js/search.js
+++ /dev/null
@@ -1,92 +0,0 @@
-$(function() {
- var SearchView = Backbone.View.extend({
- events: {
- "click #search-clear": "clear"
- },
-
- initialize: function() {
- this.algolia = algoliasearch("M19DXW5X0Q", "c79b2e61519372a99fa5890db070064c");
- this.algoliaHelper = algoliasearchHelper(this.algolia, "font_awesome");
- this.template = _.template($("#results-template").html());
-
- this.$searchInput = this.$("#search-input");
- this.$searchResultsSection = this.$("#search-results");
- this.$searchInputClear = this.$("#search-clear");
- this.$iconsSection = this.$("#icons");
-
- this.$searchInput.on("keyup", _.debounce(_.bind(this.search, this), 200));
- this.algoliaHelper.on("result", _.bind(this.showResults, this));
- },
-
- search: function(event) {
- var query = this.$searchInput.val();
-
- if (query !== "") {
- this. algoliaHelper.setQuery(query).search();
- } else {
- this.clearResults();
- }
- },
-
- clear: function(event) {
- event.preventDefault();
-
- this.clearResults();
- },
-
- showResults: function(content, state) {
- this.$searchResultsSection.html("");
- this.$searchResultsSection.removeClass("hide");
- this.$searchInputClear.removeClass("hide");
- this.$iconsSection.addClass("hide");
-
- var results = [];
-
- _.each(content.hits, function(result) {
- results.push(new SearchResultView({ result: result }).render())
- });
-
- this.$searchResultsSection.html(this.template({ content: content, results: results.join("") }));
- },
-
- clearResults: function() {
- this.$searchInput.val("").focus();
- this.$searchResultsSection.addClass("hide");
- this.$searchResultsSection.html("");
- this.$searchInputClear.addClass("hide");
- this.$iconsSection.removeClass("hide");
- }
- });
-
- var SearchResultView = Backbone.View.extend({
- initialize: function(options) {
- this.template = _.template($("#result-template").html());
- this.result = options.result
- },
-
- render: function() {
- var matches = [];
-
- this.pullMatches(matches, this.result._highlightResult.aliases);
- this.pullMatches(matches, this.result._highlightResult.synonyms);
-
- return this.template({ result: this.result, matches: matches });
- },
-
- pullMatches: function(matches, list) {
- if (list !== undefined) {
- _.each(list, function(highlight) {
- if (highlight.matchLevel !== "none") {
- matches.push(highlight.value)
- }
- })
- }
- }
- });
-
- var $searchViewElement = $("[data-view=search]");
-
- if ($searchViewElement.length > 0) {
- new SearchView({ el: $searchViewElement });
- }
-});
diff --git a/library/font_awesome/src/assets/js/site.js b/library/font_awesome/src/assets/js/site.js
deleted file mode 100644
index f92d2fa50..000000000
--- a/library/font_awesome/src/assets/js/site.js
+++ /dev/null
@@ -1,89 +0,0 @@
-$(function () {
- $("#newsletter").validate();
-
- var ads = [
- // {
- // quote: "<i class='fas fas-perfect fas-2x valign-middle margin-right'></i>Looking for the best icon sets? Check out <strong>Symbolset</strong>, <a href='https://articles.fortawesome.com/fort-awesome-acquires-symbolset-72229dab2c13'>now</a> from the maker of Font Awesome.",
- // class: "symbolset",
- // url: "https://symbolset.com/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_1_best_icons&utm_campaign=promo_4.7_update",
- // btn_text: "Gimme Some!"
- // },
- // {
- // quote: "<i class='fas fas-curate fas-2x valign-middle margin-right'></i>Need a different look for your icons? Check out <strong>Symbolset</strong>, <a href='https://articles.fortawesome.com/fort-awesome-acquires-symbolset-72229dab2c13'>now</a> from the maker of Font Awesome.",
- // class: "symbolset",
- // url: "https://symbolset.com/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_2_different_look&utm_campaign=promo_4.7_update",
- // btn_text: "Gimme Some!"
- // },
- // {
- // quote: "Take your icon game to the next level. Check out <strong>Fort Awesome</strong>, from the maker of Font Awesome.",
- // class: "fort-awesome",
- // url: "https://fortawesome.com/start?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_1_next_level&utm_campaign=promo_4.7_update",
- // btn_text: "Gimme Some!"
- // },
- // {
- // quote: "Make your icons load 10x faster! Check out <strong>Fort Awesome</strong>, from the maker of Font Awesome.",
- // class: "fort-awesome",
- // url: "https://fortawesome.com/start?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_3_faster_loading&utm_campaign=promo_4.7_update",
- // btn_text: "Gimme Some!"
- // },
- // {
- // quote: "Want to add your own icon? Check out <strong>Fort Awesome</strong>, from the maker of Font Awesome.",
- // class: "fort-awesome",
- // url: "https://fortawesome.com/start?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_6_your_own_icon&utm_campaign=promo_4.7_update",
- // btn_text: "Gimme Some!"
- // }
- {
- quote: "Font Awesome 5. The most awesome-est Font Awesome ever!",
- class: "kickstarter",
- url: "http://five.fontawesome.io/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_1_most_awesome-est&utm_campaign=promo_4.7_update",
- btn_text: "Check out the Kickstarter",
- },
- {
- quote: "Get 1,000+ more icons and SVG in Font Awesome 5 Pro!",
- class: "kickstarter",
- url: "http://five.fontawesome.io/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=ad_2_svg_and_1000_more&utm_campaign=promo_4.7_update",
- btn_text: "Check out the Kickstarter",
- },
- ];
-
- selectAd();
-
- // start the icon carousel
- $('#icon-carousel').carousel({
- interval: 5000
- });
-
- $('[data-toggle="tooltip"]').tooltip();
- $('[data-toggle="popover"]').popover();
- if (storageAvailable('localStorage') && !localStorage.seenKickstarterModal) {
- $('#modal-kickstarter').modal('toggle');
- }
-
- if (storageAvailable('localStorage')) {
- localStorage.seenKickstarterModal = true;
- // Yippee! We can use localStorage awesomeness
- }
-
- function storageAvailable(type) {
- try {
- var storage = window[type],
- x = '__storage_test__';
- storage.setItem(x, x);
- storage.removeItem(x);
- return true;
- }
- catch(e) {
- return false;
- }
- }
- function selectAd() {
- random_number = Math.floor(Math.random() * ads.length);
- random_ad = ads[random_number];
-
- $('#banner').addClass(random_ad.class);
- $('#rotating-message').html(random_ad.quote);
- $('#rotating-url').attr("href", random_ad.url);
- $('#rotating-url').html(random_ad.btn_text);
- $('#banner').collapse('show');
- }
-});
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/.csscomb.json b/library/font_awesome/src/assets/less/bootstrap-3.3.5/.csscomb.json
deleted file mode 100644
index 40695a478..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/.csscomb.json
+++ /dev/null
@@ -1,304 +0,0 @@
-{
- "always-semicolon": true,
- "block-indent": 2,
- "color-case": "lower",
- "color-shorthand": true,
- "element-case": "lower",
- "eof-newline": true,
- "leading-zero": false,
- "remove-empty-rulesets": true,
- "space-after-colon": 1,
- "space-after-combinator": 1,
- "space-before-selector-delimiter": 0,
- "space-between-declarations": "\n",
- "space-after-opening-brace": "\n",
- "space-before-closing-brace": "\n",
- "space-before-colon": 0,
- "space-before-combinator": 1,
- "space-before-opening-brace": 1,
- "strip-spaces": true,
- "unitless-zero": true,
- "vendor-prefix-align": true,
- "sort-order": [
- [
- "position",
- "top",
- "right",
- "bottom",
- "left",
- "z-index",
- "display",
- "float",
- "width",
- "min-width",
- "max-width",
- "height",
- "min-height",
- "max-height",
- "-webkit-box-sizing",
- "-moz-box-sizing",
- "box-sizing",
- "-webkit-appearance",
- "padding",
- "padding-top",
- "padding-right",
- "padding-bottom",
- "padding-left",
- "margin",
- "margin-top",
- "margin-right",
- "margin-bottom",
- "margin-left",
- "overflow",
- "overflow-x",
- "overflow-y",
- "-webkit-overflow-scrolling",
- "-ms-overflow-x",
- "-ms-overflow-y",
- "-ms-overflow-style",
- "clip",
- "clear",
- "font",
- "font-family",
- "font-size",
- "font-style",
- "font-weight",
- "font-variant",
- "font-size-adjust",
- "font-stretch",
- "font-effect",
- "font-emphasize",
- "font-emphasize-position",
- "font-emphasize-style",
- "font-smooth",
- "-webkit-hyphens",
- "-moz-hyphens",
- "hyphens",
- "line-height",
- "color",
- "text-align",
- "-webkit-text-align-last",
- "-moz-text-align-last",
- "-ms-text-align-last",
- "text-align-last",
- "text-emphasis",
- "text-emphasis-color",
- "text-emphasis-style",
- "text-emphasis-position",
- "text-decoration",
- "text-indent",
- "text-justify",
- "text-outline",
- "-ms-text-overflow",
- "text-overflow",
- "text-overflow-ellipsis",
- "text-overflow-mode",
- "text-shadow",
- "text-transform",
- "text-wrap",
- "-webkit-text-size-adjust",
- "-ms-text-size-adjust",
- "letter-spacing",
- "-ms-word-break",
- "word-break",
- "word-spacing",
- "-ms-word-wrap",
- "word-wrap",
- "-moz-tab-size",
- "-o-tab-size",
- "tab-size",
- "white-space",
- "vertical-align",
- "list-style",
- "list-style-position",
- "list-style-type",
- "list-style-image",
- "pointer-events",
- "-ms-touch-action",
- "touch-action",
- "cursor",
- "visibility",
- "zoom",
- "flex-direction",
- "flex-order",
- "flex-pack",
- "flex-align",
- "table-layout",
- "empty-cells",
- "caption-side",
- "border-spacing",
- "border-collapse",
- "content",
- "quotes",
- "counter-reset",
- "counter-increment",
- "resize",
- "-webkit-user-select",
- "-moz-user-select",
- "-ms-user-select",
- "-o-user-select",
- "user-select",
- "nav-index",
- "nav-up",
- "nav-right",
- "nav-down",
- "nav-left",
- "background",
- "background-color",
- "background-image",
- "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
- "filter:progid:DXImageTransform.Microsoft.gradient",
- "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
- "filter",
- "background-repeat",
- "background-attachment",
- "background-position",
- "background-position-x",
- "background-position-y",
- "-webkit-background-clip",
- "-moz-background-clip",
- "background-clip",
- "background-origin",
- "-webkit-background-size",
- "-moz-background-size",
- "-o-background-size",
- "background-size",
- "border",
- "border-color",
- "border-style",
- "border-width",
- "border-top",
- "border-top-color",
- "border-top-style",
- "border-top-width",
- "border-right",
- "border-right-color",
- "border-right-style",
- "border-right-width",
- "border-bottom",
- "border-bottom-color",
- "border-bottom-style",
- "border-bottom-width",
- "border-left",
- "border-left-color",
- "border-left-style",
- "border-left-width",
- "border-radius",
- "border-top-left-radius",
- "border-top-right-radius",
- "border-bottom-right-radius",
- "border-bottom-left-radius",
- "-webkit-border-image",
- "-moz-border-image",
- "-o-border-image",
- "border-image",
- "-webkit-border-image-source",
- "-moz-border-image-source",
- "-o-border-image-source",
- "border-image-source",
- "-webkit-border-image-slice",
- "-moz-border-image-slice",
- "-o-border-image-slice",
- "border-image-slice",
- "-webkit-border-image-width",
- "-moz-border-image-width",
- "-o-border-image-width",
- "border-image-width",
- "-webkit-border-image-outset",
- "-moz-border-image-outset",
- "-o-border-image-outset",
- "border-image-outset",
- "-webkit-border-image-repeat",
- "-moz-border-image-repeat",
- "-o-border-image-repeat",
- "border-image-repeat",
- "outline",
- "outline-width",
- "outline-style",
- "outline-color",
- "outline-offset",
- "-webkit-box-shadow",
- "-moz-box-shadow",
- "box-shadow",
- "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
- "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
- "opacity",
- "-ms-interpolation-mode",
- "-webkit-transition",
- "-moz-transition",
- "-ms-transition",
- "-o-transition",
- "transition",
- "-webkit-transition-delay",
- "-moz-transition-delay",
- "-ms-transition-delay",
- "-o-transition-delay",
- "transition-delay",
- "-webkit-transition-timing-function",
- "-moz-transition-timing-function",
- "-ms-transition-timing-function",
- "-o-transition-timing-function",
- "transition-timing-function",
- "-webkit-transition-duration",
- "-moz-transition-duration",
- "-ms-transition-duration",
- "-o-transition-duration",
- "transition-duration",
- "-webkit-transition-property",
- "-moz-transition-property",
- "-ms-transition-property",
- "-o-transition-property",
- "transition-property",
- "-webkit-transform",
- "-moz-transform",
- "-ms-transform",
- "-o-transform",
- "transform",
- "-webkit-transform-origin",
- "-moz-transform-origin",
- "-ms-transform-origin",
- "-o-transform-origin",
- "transform-origin",
- "-webkit-animation",
- "-moz-animation",
- "-ms-animation",
- "-o-animation",
- "animation",
- "-webkit-animation-name",
- "-moz-animation-name",
- "-ms-animation-name",
- "-o-animation-name",
- "animation-name",
- "-webkit-animation-duration",
- "-moz-animation-duration",
- "-ms-animation-duration",
- "-o-animation-duration",
- "animation-duration",
- "-webkit-animation-play-state",
- "-moz-animation-play-state",
- "-ms-animation-play-state",
- "-o-animation-play-state",
- "animation-play-state",
- "-webkit-animation-timing-function",
- "-moz-animation-timing-function",
- "-ms-animation-timing-function",
- "-o-animation-timing-function",
- "animation-timing-function",
- "-webkit-animation-delay",
- "-moz-animation-delay",
- "-ms-animation-delay",
- "-o-animation-delay",
- "animation-delay",
- "-webkit-animation-iteration-count",
- "-moz-animation-iteration-count",
- "-ms-animation-iteration-count",
- "-o-animation-iteration-count",
- "animation-iteration-count",
- "-webkit-animation-direction",
- "-moz-animation-direction",
- "-ms-animation-direction",
- "-o-animation-direction",
- "animation-direction"
- ]
- ]
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/.csslintrc b/library/font_awesome/src/assets/less/bootstrap-3.3.5/.csslintrc
deleted file mode 100644
index 005b86236..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/.csslintrc
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "adjoining-classes": false,
- "box-sizing": false,
- "box-model": false,
- "compatible-vendor-prefixes": false,
- "floats": false,
- "font-sizes": false,
- "gradients": false,
- "important": false,
- "known-properties": false,
- "outline-none": false,
- "qualified-headings": false,
- "regex-selectors": false,
- "shorthand": false,
- "text-indent": false,
- "unique-headings": false,
- "universal-selector": false,
- "unqualified-attributes": false
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/alerts.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/alerts.less
deleted file mode 100644
index c4199db92..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/alerts.less
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// Alerts
-// --------------------------------------------------
-
-
-// Base styles
-// -------------------------
-
-.alert {
- padding: @alert-padding;
- margin-bottom: @line-height-computed;
- border: 1px solid transparent;
- border-radius: @alert-border-radius;
-
- // Headings for larger alerts
- h4 {
- margin-top: 0;
- // Specified for the h4 to prevent conflicts of changing @headings-color
- color: inherit;
- }
-
- // Provide class for links that match alerts
- .alert-link {
- font-weight: @alert-link-font-weight;
- }
-
- // Improve alignment and spacing of inner content
- > p,
- > ul {
- margin-bottom: 0;
- }
-
- > p + p {
- margin-top: 5px;
- }
-}
-
-// Dismissible alerts
-//
-// Expand the right padding and account for the close button's positioning.
-
-.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
-.alert-dismissible {
- padding-right: (@alert-padding + 20);
-
- // Adjust close link position
- .close {
- position: relative;
- top: -2px;
- right: -21px;
- color: inherit;
- }
-}
-
-// Alternate styles
-//
-// Generate contextual modifier classes for colorizing the alert.
-
-.alert-success {
- .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
-}
-
-.alert-info {
- .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
-}
-
-.alert-warning {
- .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
-}
-
-.alert-danger {
- .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/badges.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/badges.less
deleted file mode 100644
index 6ee16dca4..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/badges.less
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// Badges
-// --------------------------------------------------
-
-
-// Base class
-.badge {
- display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: @font-size-small;
- font-weight: @badge-font-weight;
- color: @badge-color;
- line-height: @badge-line-height;
- vertical-align: middle;
- white-space: nowrap;
- text-align: center;
- background-color: @badge-bg;
- border-radius: @badge-border-radius;
-
- // Empty badges collapse automatically (not available in IE8)
- &:empty {
- display: none;
- }
-
- // Quick fix for badges in buttons
- .btn & {
- position: relative;
- top: -1px;
- }
-
- .btn-xs &,
- .btn-group-xs > .btn & {
- top: 0;
- padding: 1px 5px;
- }
-
- // Hover state, but only for links
- a& {
- &:hover,
- &:focus {
- color: @badge-link-hover-color;
- text-decoration: none;
- cursor: pointer;
- }
- }
-
- // Account for badges in navs
- .list-group-item.active > &,
- .nav-pills > .active > a > & {
- color: @badge-active-color;
- background-color: @badge-active-bg;
- }
-
- .list-group-item > & {
- float: right;
- }
-
- .list-group-item > & + & {
- margin-right: 5px;
- }
-
- .nav-pills > li > a > & {
- margin-left: 3px;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/bootstrap.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/bootstrap.less
deleted file mode 100644
index 4b9916e6c..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/bootstrap.less
+++ /dev/null
@@ -1,56 +0,0 @@
-/*!
- * Bootstrap v3.3.5 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-// Core variables and mixins
-@import "variables.less";
-@import "mixins.less";
-
-// Reset and dependencies
-@import "normalize.less";
-@import "print.less";
-@import "glyphicons.less";
-
-// Core CSS
-@import "scaffolding.less";
-@import "type.less";
-@import "code.less";
-@import "grid.less";
-@import "tables.less";
-@import "forms.less";
-@import "buttons.less";
-
-// Components
-@import "component-animations.less";
-@import "dropdowns.less";
-@import "button-groups.less";
-@import "input-groups.less";
-@import "navs.less";
-@import "navbar.less";
-@import "breadcrumbs.less";
-@import "pagination.less";
-@import "pager.less";
-@import "labels.less";
-@import "badges.less";
-@import "jumbotron.less";
-@import "thumbnails.less";
-@import "alerts.less";
-@import "progress-bars.less";
-@import "media.less";
-@import "list-group.less";
-@import "panels.less";
-@import "responsive-embed.less";
-@import "wells.less";
-@import "close.less";
-
-// Components w/ JavaScript
-@import "modals.less";
-@import "tooltip.less";
-@import "popovers.less";
-@import "carousel.less";
-
-// Utility classes
-@import "utilities.less";
-@import "responsive-utilities.less";
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/breadcrumbs.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/breadcrumbs.less
deleted file mode 100644
index cb01d503f..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/breadcrumbs.less
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Breadcrumbs
-// --------------------------------------------------
-
-
-.breadcrumb {
- padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;
- margin-bottom: @line-height-computed;
- list-style: none;
- background-color: @breadcrumb-bg;
- border-radius: @border-radius-base;
-
- > li {
- display: inline-block;
-
- + li:before {
- content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
- padding: 0 5px;
- color: @breadcrumb-color;
- }
- }
-
- > .active {
- color: @breadcrumb-active-color;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/button-groups.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/button-groups.less
deleted file mode 100644
index 6a0c5a865..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/button-groups.less
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// Button groups
-// --------------------------------------------------
-
-// Make the div behave like a button
-.btn-group,
-.btn-group-vertical {
- position: relative;
- display: inline-block;
- vertical-align: middle; // match .btn alignment given font-size hack above
- > .btn {
- position: relative;
- float: left;
- // Bring the "active" button to the front
- &:hover,
- &:focus,
- &:active,
- &.active {
- z-index: 2;
- }
- }
-}
-
-// Prevent double borders when buttons are next to each other
-.btn-group {
- .btn + .btn,
- .btn + .btn-group,
- .btn-group + .btn,
- .btn-group + .btn-group {
- margin-left: -1px;
- }
-}
-
-// Optional: Group multiple button groups together for a toolbar
-.btn-toolbar {
- margin-left: -5px; // Offset the first child's margin
- &:extend(.clearfix all);
-
- .btn,
- .btn-group,
- .input-group {
- float: left;
- }
- > .btn,
- > .btn-group,
- > .input-group {
- margin-left: 5px;
- }
-}
-
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius: 0;
-}
-
-// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
-.btn-group > .btn:first-child {
- margin-left: 0;
- &:not(:last-child):not(.dropdown-toggle) {
- .border-right-radius(0);
- }
-}
-// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
- .border-left-radius(0);
-}
-
-// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
-.btn-group > .btn-group {
- float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group > .btn-group:first-child:not(:last-child) {
- > .btn:last-child,
- > .dropdown-toggle {
- .border-right-radius(0);
- }
-}
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
- .border-left-radius(0);
-}
-
-// On active and open, don't show outline
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
- outline: 0;
-}
-
-
-// Sizing
-//
-// Remix the default button sizing classes into new ones for easier manipulation.
-
-.btn-group-xs > .btn { &:extend(.btn-xs); }
-.btn-group-sm > .btn { &:extend(.btn-sm); }
-.btn-group-lg > .btn { &:extend(.btn-lg); }
-
-
-// Split button dropdowns
-// ----------------------
-
-// Give the line between buttons some depth
-.btn-group > .btn + .dropdown-toggle {
- padding-left: 8px;
- padding-right: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
- padding-left: 12px;
- padding-right: 12px;
-}
-
-// The clickable button for toggling the menu
-// Remove the gradient and set the same inset shadow as the :active state
-.btn-group.open .dropdown-toggle {
- .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
-
- // Show no shadow for `.btn-link` since it has no other button styles.
- &.btn-link {
- .box-shadow(none);
- }
-}
-
-
-// Reposition the caret
-.btn .caret {
- margin-left: 0;
-}
-// Carets in other button sizes
-.btn-lg .caret {
- border-width: @caret-width-large @caret-width-large 0;
- border-bottom-width: 0;
-}
-// Upside down carets for .dropup
-.dropup .btn-lg .caret {
- border-width: 0 @caret-width-large @caret-width-large;
-}
-
-
-// Vertical button groups
-// ----------------------
-
-.btn-group-vertical {
- > .btn,
- > .btn-group,
- > .btn-group > .btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%;
- }
-
- // Clear floats so dropdown menus can be properly placed
- > .btn-group {
- &:extend(.clearfix all);
- > .btn {
- float: none;
- }
- }
-
- > .btn + .btn,
- > .btn + .btn-group,
- > .btn-group + .btn,
- > .btn-group + .btn-group {
- margin-top: -1px;
- margin-left: 0;
- }
-}
-
-.btn-group-vertical > .btn {
- &:not(:first-child):not(:last-child) {
- border-radius: 0;
- }
- &:first-child:not(:last-child) {
- border-top-right-radius: @btn-border-radius-base;
- .border-bottom-radius(0);
- }
- &:last-child:not(:first-child) {
- border-bottom-left-radius: @btn-border-radius-base;
- .border-top-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,
- > .dropdown-toggle {
- .border-bottom-radius(0);
- }
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
- .border-top-radius(0);
-}
-
-
-// Justified button groups
-// ----------------------
-
-.btn-group-justified {
- display: table;
- width: 100%;
- table-layout: fixed;
- border-collapse: separate;
- > .btn,
- > .btn-group {
- float: none;
- display: table-cell;
- width: 1%;
- }
- > .btn-group .btn {
- width: 100%;
- }
-
- > .btn-group .dropdown-menu {
- left: auto;
- }
-}
-
-
-// Checkbox and radio options
-//
-// In order to support the browser's form validation feedback, powered by the
-// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
-// `display: none;` or `visibility: hidden;` as that also hides the popover.
-// Simply visually hiding the inputs via `opacity` would leave them clickable in
-// certain cases which is prevented by using `clip` and `pointer-events`.
-// This way, we ensure a DOM element is visible to position the popover from.
-//
-// See https://github.com/twbs/bootstrap/pull/12794 and
-// https://github.com/twbs/bootstrap/pull/14559 for more information.
-
-[data-toggle="buttons"] {
- > .btn,
- > .btn-group > .btn {
- input[type="radio"],
- input[type="checkbox"] {
- position: absolute;
- clip: rect(0,0,0,0);
- pointer-events: none;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/buttons.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/buttons.less
deleted file mode 100644
index 9cbb8f416..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/buttons.less
+++ /dev/null
@@ -1,166 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-.btn {
- display: inline-block;
- margin-bottom: 0; // For input.btn
- font-weight: @btn-font-weight;
- text-align: center;
- vertical-align: middle;
- touch-action: manipulation;
- cursor: pointer;
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
- border: 1px solid transparent;
- white-space: nowrap;
- .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
- .user-select(none);
-
- &,
- &:active,
- &.active {
- &:focus,
- &.focus {
- .tab-focus();
- }
- }
-
- &:hover,
- &:focus,
- &.focus {
- color: @btn-default-color;
- text-decoration: none;
- }
-
- &:active,
- &.active {
- outline: 0;
- background-image: none;
- .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
- }
-
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- cursor: @cursor-disabled;
- .opacity(.65);
- .box-shadow(none);
- }
-
- a& {
- &.disabled,
- fieldset[disabled] & {
- pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
- }
- }
-}
-
-
-// Alternate buttons
-// --------------------------------------------------
-
-.btn-default {
- .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);
-}
-.btn-primary {
- .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);
-}
-// Success appears as green
-.btn-success {
- .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);
-}
-// Info appears as blue-green
-.btn-info {
- .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);
-}
-// Warning appears as orange
-.btn-warning {
- .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);
-}
-// Danger and error appear as red
-.btn-danger {
- .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);
-}
-
-
-// Link buttons
-// -------------------------
-
-// Make a button look and behave like a link
-.btn-link {
- color: @link-color;
- font-weight: normal;
- border-radius: 0;
-
- &,
- &:active,
- &.active,
- &[disabled],
- fieldset[disabled] & {
- background-color: transparent;
- .box-shadow(none);
- }
- &,
- &:hover,
- &:focus,
- &:active {
- border-color: transparent;
- }
- &:hover,
- &:focus {
- color: @link-hover-color;
- text-decoration: @link-hover-decoration;
- background-color: transparent;
- }
- &[disabled],
- fieldset[disabled] & {
- &:hover,
- &:focus {
- color: @btn-link-disabled-color;
- text-decoration: none;
- }
- }
-}
-
-
-// Button Sizes
-// --------------------------------------------------
-
-.btn-lg {
- // line-height: ensure even-numbered height of button next to large input
- .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);
-}
-.btn-sm {
- // line-height: ensure proper height of button next to small input
- .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
-}
-.btn-xs {
- .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
-}
-
-
-// Block button
-// --------------------------------------------------
-
-.btn-block {
- display: block;
- width: 100%;
-}
-
-// Vertically space out multiple block buttons
-.btn-block + .btn-block {
- margin-top: 5px;
-}
-
-// Specificity overrides
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
- &.btn-block {
- width: 100%;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/carousel.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/carousel.less
deleted file mode 100644
index 87ed6961d..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/carousel.less
+++ /dev/null
@@ -1,269 +0,0 @@
-//
-// Carousel
-// --------------------------------------------------
-
-
-// Wrapper for the slide container and indicators
-.carousel {
- position: relative;
-}
-
-.carousel-inner {
- position: relative;
- overflow: hidden;
- width: 100%;
-
- > .item {
- display: none;
- position: relative;
- .transition(.6s ease-in-out left);
-
- // Account for jankitude on images
- > img,
- > a > img {
- &:extend(.img-responsive);
- line-height: 1;
- }
-
- // WebKit CSS3 transforms for supported devices
- @media all and (transform-3d), (-webkit-transform-3d) {
- .transition-transform(~'0.6s ease-in-out');
- .backface-visibility(~'hidden');
- .perspective(1000px);
-
- &.next,
- &.active.right {
- .translate3d(100%, 0, 0);
- left: 0;
- }
- &.prev,
- &.active.left {
- .translate3d(-100%, 0, 0);
- left: 0;
- }
- &.next.left,
- &.prev.right,
- &.active {
- .translate3d(0, 0, 0);
- left: 0;
- }
- }
- }
-
- > .active,
- > .next,
- > .prev {
- display: block;
- }
-
- > .active {
- left: 0;
- }
-
- > .next,
- > .prev {
- position: absolute;
- top: 0;
- width: 100%;
- }
-
- > .next {
- left: 100%;
- }
- > .prev {
- left: -100%;
- }
- > .next.left,
- > .prev.right {
- left: 0;
- }
-
- > .active.left {
- left: -100%;
- }
- > .active.right {
- left: 100%;
- }
-
-}
-
-// Left/right controls for nav
-// ---------------------------
-
-.carousel-control {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- width: @carousel-control-width;
- .opacity(@carousel-control-opacity);
- font-size: @carousel-control-font-size;
- color: @carousel-control-color;
- text-align: center;
- text-shadow: @carousel-text-shadow;
- // We can't have this transition here because WebKit cancels the carousel
- // animation if you trip this while in the middle of another animation.
-
- // Set gradients for backgrounds
- &.left {
- #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
- }
- &.right {
- left: auto;
- right: 0;
- #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
- }
-
- // Hover/focus state
- &:hover,
- &:focus {
- outline: 0;
- color: @carousel-control-color;
- text-decoration: none;
- .opacity(.9);
- }
-
- // Toggles
- .icon-prev,
- .icon-next,
- .glyphicon-chevron-left,
- .glyphicon-chevron-right {
- position: absolute;
- top: 50%;
- margin-top: -10px;
- z-index: 5;
- display: inline-block;
- }
- .icon-prev,
- .glyphicon-chevron-left {
- left: 50%;
- margin-left: -10px;
- }
- .icon-next,
- .glyphicon-chevron-right {
- right: 50%;
- margin-right: -10px;
- }
- .icon-prev,
- .icon-next {
- width: 20px;
- height: 20px;
- line-height: 1;
- font-family: serif;
- }
-
-
- .icon-prev {
- &:before {
- content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
- }
- }
- .icon-next {
- &:before {
- content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
- }
- }
-}
-
-// Optional indicator pips
-//
-// Add an unordered list with the following class and add a list item for each
-// slide your carousel holds.
-
-.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;
-
- li {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 1px;
- text-indent: -999px;
- border: 1px solid @carousel-indicator-border-color;
- border-radius: 10px;
- cursor: pointer;
-
- // IE8-9 hack for event handling
- //
- // Internet Explorer 8-9 does not support clicks on elements without a set
- // `background-color`. We cannot use `filter` since that's not viewed as a
- // background color by the browser. Thus, a hack is needed.
- // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
- //
- // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
- // set alpha transparency for the best results possible.
- background-color: #000 \9; // IE8
- background-color: rgba(0,0,0,0); // IE9
- }
- .active {
- margin: 0;
- width: 12px;
- height: 12px;
- background-color: @carousel-indicator-active-bg;
- }
-}
-
-// Optional captions
-// -----------------------------
-// Hidden by default for smaller viewports
-.carousel-caption {
- position: absolute;
- left: 15%;
- right: 15%;
- bottom: 20px;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
- color: @carousel-caption-color;
- text-align: center;
- text-shadow: @carousel-text-shadow;
- & .btn {
- text-shadow: none; // No shadow for button elements in carousel-caption
- }
-}
-
-
-// Scale up controls for tablets and up
-@media screen and (min-width: @screen-sm-min) {
-
- // Scale up the controls a smidge
- .carousel-control {
- .glyphicon-chevron-left,
- .glyphicon-chevron-right,
- .icon-prev,
- .icon-next {
- width: 30px;
- height: 30px;
- margin-top: -15px;
- font-size: 30px;
- }
- .glyphicon-chevron-left,
- .icon-prev {
- margin-left: -15px;
- }
- .glyphicon-chevron-right,
- .icon-next {
- margin-right: -15px;
- }
- }
-
- // Show and left align the captions
- .carousel-caption {
- left: 20%;
- right: 20%;
- padding-bottom: 30px;
- }
-
- // Move up the indicators
- .carousel-indicators {
- bottom: 20px;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/close.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/close.less
deleted file mode 100644
index 6d5bfe087..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/close.less
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Close icons
-// --------------------------------------------------
-
-
-.close {
- float: right;
- font-size: (@font-size-base * 1.5);
- font-weight: @close-font-weight;
- line-height: 1;
- color: @close-color;
- text-shadow: @close-text-shadow;
- .opacity(.2);
-
- &:hover,
- &:focus {
- color: @close-color;
- text-decoration: none;
- cursor: pointer;
- .opacity(.5);
- }
-
- // Additional properties for button version
- // iOS requires the button element instead of an anchor tag.
- // If you want the anchor version, it requires `href="#"`.
- // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
- button& {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/code.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/code.less
deleted file mode 100644
index a08b4d48c..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/code.less
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// Code (inline and block)
-// --------------------------------------------------
-
-
-// Inline and block code styles
-code,
-kbd,
-pre,
-samp {
- font-family: @font-family-monospace;
-}
-
-// Inline code
-code {
- padding: 2px 4px;
- font-size: 90%;
- color: @code-color;
- background-color: @code-bg;
- border-radius: @border-radius-base;
-}
-
-// User input typically entered via keyboard
-kbd {
- padding: 2px 4px;
- font-size: 90%;
- color: @kbd-color;
- background-color: @kbd-bg;
- border-radius: @border-radius-small;
- box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
-
- kbd {
- padding: 0;
- font-size: 100%;
- font-weight: bold;
- box-shadow: none;
- }
-}
-
-// Blocks of code
-pre {
- display: block;
- padding: ((@line-height-computed - 1) / 2);
- margin: 0 0 (@line-height-computed / 2);
- font-size: (@font-size-base - 1); // 14px to 13px
- line-height: @line-height-base;
- word-break: break-all;
- word-wrap: break-word;
- color: @pre-color;
- background-color: @pre-bg;
- border: 1px solid @pre-border-color;
- border-radius: @border-radius-base;
-
- // Account for some code outputs that place code tags in pre tags
- code {
- padding: 0;
- font-size: inherit;
- color: inherit;
- white-space: pre-wrap;
- background-color: transparent;
- border-radius: 0;
- }
-}
-
-// Enable scrollable blocks of code
-.pre-scrollable {
- max-height: @pre-scrollable-max-height;
- overflow-y: scroll;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/component-animations.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/component-animations.less
deleted file mode 100644
index 0bcee910a..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/component-animations.less
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Component animations
-// --------------------------------------------------
-
-// Heads up!
-//
-// We don't use the `.opacity()` mixin here since it causes a bug with text
-// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
-
-.fade {
- opacity: 0;
- .transition(opacity .15s linear);
- &.in {
- opacity: 1;
- }
-}
-
-.collapse {
- display: none;
-
- &.in { display: block; }
- tr&.in { display: table-row; }
- tbody&.in { display: table-row-group; }
-}
-
-.collapsing {
- position: relative;
- height: 0;
- overflow: hidden;
- .transition-property(~"height, visibility");
- .transition-duration(.35s);
- .transition-timing-function(ease);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/dropdowns.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/dropdowns.less
deleted file mode 100644
index f6876c1a9..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/dropdowns.less
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Dropdown menus
-// --------------------------------------------------
-
-
-// Dropdown arrow/caret
-.caret {
- display: inline-block;
- width: 0;
- height: 0;
- margin-left: 2px;
- vertical-align: middle;
- border-top: @caret-width-base dashed;
- border-top: @caret-width-base solid ~"\9"; // IE8
- border-right: @caret-width-base solid transparent;
- border-left: @caret-width-base solid transparent;
-}
-
-// The dropdown wrapper (div)
-.dropup,
-.dropdown {
- position: relative;
-}
-
-// Prevent the focus on the dropdown toggle when closing dropdowns
-.dropdown-toggle:focus {
- outline: 0;
-}
-
-// The dropdown menu (ul)
-.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: @zindex-dropdown;
- display: none; // none by default, but block on "open" of the menu
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0; // override default ul
- list-style: none;
- font-size: @font-size-base;
- text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
- background-color: @dropdown-bg;
- border: 1px solid @dropdown-fallback-border; // IE8 fallback
- border: 1px solid @dropdown-border;
- border-radius: @border-radius-base;
- .box-shadow(0 6px 12px rgba(0,0,0,.175));
- background-clip: padding-box;
-
- // Aligns the dropdown menu to right
- //
- // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
- &.pull-right {
- right: 0;
- left: auto;
- }
-
- // Dividers (basically an hr) within the dropdown
- .divider {
- .nav-divider(@dropdown-divider-bg);
- }
-
- // Links within the dropdown menu
- > li > a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: normal;
- line-height: @line-height-base;
- color: @dropdown-link-color;
- white-space: nowrap; // prevent links from randomly breaking onto new lines
- }
-}
-
-// Hover/Focus state
-.dropdown-menu > li > a {
- &:hover,
- &:focus {
- text-decoration: none;
- color: @dropdown-link-hover-color;
- background-color: @dropdown-link-hover-bg;
- }
-}
-
-// Active state
-.dropdown-menu > .active > a {
- &,
- &:hover,
- &:focus {
- color: @dropdown-link-active-color;
- text-decoration: none;
- outline: 0;
- background-color: @dropdown-link-active-bg;
- }
-}
-
-// Disabled state
-//
-// Gray out text and ensure the hover/focus state remains gray
-
-.dropdown-menu > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @dropdown-link-disabled-color;
- }
-
- // Nuke hover/focus effects
- &:hover,
- &:focus {
- text-decoration: none;
- background-color: transparent;
- background-image: none; // Remove CSS gradient
- .reset-filter();
- cursor: @cursor-disabled;
- }
-}
-
-// Open state for the dropdown
-.open {
- // Show the menu
- > .dropdown-menu {
- display: block;
- }
-
- // Remove the outline when :focus is triggered
- > a {
- outline: 0;
- }
-}
-
-// Menu positioning
-//
-// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
-// menu with the parent.
-.dropdown-menu-right {
- left: auto; // Reset the default from `.dropdown-menu`
- right: 0;
-}
-// With v3, we enabled auto-flipping if you have a dropdown within a right
-// aligned nav component. To enable the undoing of that, we provide an override
-// to restore the default dropdown menu alignment.
-//
-// This is only for left-aligning a dropdown menu within a `.navbar-right` or
-// `.pull-right` nav component.
-.dropdown-menu-left {
- left: 0;
- right: auto;
-}
-
-// Dropdown section headers
-.dropdown-header {
- display: block;
- padding: 3px 20px;
- font-size: @font-size-small;
- line-height: @line-height-base;
- color: @dropdown-header-color;
- white-space: nowrap; // as with > li > a
-}
-
-// Backdrop to catch body clicks on mobile, etc.
-.dropdown-backdrop {
- position: fixed;
- left: 0;
- right: 0;
- bottom: 0;
- top: 0;
- z-index: (@zindex-dropdown - 10);
-}
-
-// Right aligned dropdowns
-.pull-right > .dropdown-menu {
- right: 0;
- left: auto;
-}
-
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-//
-// Just add .dropup after the standard .dropdown class and you're set, bro.
-// TODO: abstract this so that the navbar fixed styles are not placed here?
-
-.dropup,
-.navbar-fixed-bottom .dropdown {
- // Reverse the caret
- .caret {
- border-top: 0;
- border-bottom: @caret-width-base dashed;
- border-bottom: @caret-width-base solid ~"\9"; // IE8
- content: "";
- }
- // Different positioning for bottom up menu
- .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 2px;
- }
-}
-
-
-// Component alignment
-//
-// Reiterate per navbar.less and the modified component alignment there.
-
-@media (min-width: @grid-float-breakpoint) {
- .navbar-right {
- .dropdown-menu {
- .dropdown-menu-right();
- }
- // Necessary for overrides of the default right aligned menu.
- // Will remove come v4 in all likelihood.
- .dropdown-menu-left {
- .dropdown-menu-left();
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/forms.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/forms.less
deleted file mode 100644
index 910c1e13b..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/forms.less
+++ /dev/null
@@ -1,613 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-
-// Normalize non-controls
-//
-// Restyle and baseline non-control form elements.
-
-fieldset {
- padding: 0;
- margin: 0;
- border: 0;
- // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
- // so we reset that to ensure it behaves more like a standard block element.
- // See https://github.com/twbs/bootstrap/issues/12359.
- min-width: 0;
-}
-
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: @line-height-computed;
- font-size: (@font-size-base * 1.5);
- line-height: inherit;
- color: @legend-color;
- border: 0;
- border-bottom: 1px solid @legend-border-color;
-}
-
-label {
- display: inline-block;
- max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
- margin-bottom: 5px;
- font-weight: bold;
-}
-
-
-// Normalize form controls
-//
-// While most of our form styles require extra classes, some basic normalization
-// is required to ensure optimum display with or without those classes to better
-// address browser inconsistencies.
-
-// Override content-box in Normalize (* isn't specific enough)
-input[type="search"] {
- .box-sizing(border-box);
-}
-
-// Position radios and checkboxes better
-input[type="radio"],
-input[type="checkbox"] {
- margin: 4px 0 0;
- margin-top: 1px \9; // IE8-9
- line-height: normal;
-}
-
-input[type="file"] {
- display: block;
-}
-
-// Make range inputs behave like textual form controls
-input[type="range"] {
- display: block;
- width: 100%;
-}
-
-// Make multiple select elements height not fixed
-select[multiple],
-select[size] {
- height: auto;
-}
-
-// Focus for file, radio, and checkbox
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
- .tab-focus();
-}
-
-// Adjust output element
-output {
- display: block;
- padding-top: (@padding-base-vertical + 1);
- font-size: @font-size-base;
- line-height: @line-height-base;
- color: @input-color;
-}
-
-
-// Common form controls
-//
-// Shared size and type resets for form controls. Apply `.form-control` to any
-// of the following form controls:
-//
-// select
-// textarea
-// input[type="text"]
-// input[type="password"]
-// input[type="datetime"]
-// input[type="datetime-local"]
-// input[type="date"]
-// input[type="month"]
-// input[type="time"]
-// input[type="week"]
-// input[type="number"]
-// input[type="email"]
-// input[type="url"]
-// input[type="search"]
-// input[type="tel"]
-// input[type="color"]
-
-.form-control {
- display: block;
- width: 100%;
- height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
- padding: @padding-base-vertical @padding-base-horizontal;
- font-size: @font-size-base;
- line-height: @line-height-base;
- color: @input-color;
- background-color: @input-bg;
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
- border: 1px solid @input-border;
- border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
- .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
- .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
-
- // Customize the `:focus` state to imitate native WebKit styles.
- .form-control-focus();
-
- // Placeholder
- .placeholder();
-
- // Unstyle the caret on `<select>`s in IE10+.
- &::-ms-expand {
- border: 0;
- background-color: transparent;
- }
-
- // Disabled and read-only inputs
- //
- // HTML5 says that controls under a fieldset > legend:first-child won't be
- // disabled if the fieldset is disabled. Due to implementation difficulty, we
- // don't honor that edge case; we style them as disabled anyway.
- &[disabled],
- &[readonly],
- fieldset[disabled] & {
- background-color: @input-bg-disabled;
- opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
- }
-
- &[disabled],
- fieldset[disabled] & {
- cursor: @cursor-disabled;
- }
-
- // Reset height for `textarea`s
- textarea& {
- height: auto;
- }
-}
-
-
-// Search inputs in iOS
-//
-// This overrides the extra rounded corners on search inputs in iOS so that our
-// `.form-control` class can properly style them. Note that this cannot simply
-// be added to `.form-control` as it's not specific enough. For details, see
-// https://github.com/twbs/bootstrap/issues/11586.
-
-input[type="search"] {
- -webkit-appearance: none;
-}
-
-
-// Special styles for iOS temporal inputs
-//
-// In Mobile Safari, setting `display: block` on temporal inputs causes the
-// text within the input to become vertically misaligned. As a workaround, we
-// set a pixel line-height that matches the given height of the input, but only
-// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
-//
-// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
-
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
- input[type="date"],
- input[type="time"],
- input[type="datetime-local"],
- input[type="month"] {
- &.form-control {
- line-height: @input-height-base;
- }
-
- &.input-sm,
- .input-group-sm & {
- line-height: @input-height-small;
- }
-
- &.input-lg,
- .input-group-lg & {
- line-height: @input-height-large;
- }
- }
-}
-
-
-// Form groups
-//
-// Designed to help with the organization and spacing of vertical forms. For
-// horizontal forms, use the predefined grid classes.
-
-.form-group {
- margin-bottom: @form-group-margin-bottom;
-}
-
-
-// Checkboxes and radios
-//
-// Indent the labels to position radios/checkboxes as hanging controls.
-
-.radio,
-.checkbox {
- position: relative;
- display: block;
- margin-top: 10px;
- margin-bottom: 10px;
-
- label {
- min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text
- padding-left: 20px;
- margin-bottom: 0;
- font-weight: normal;
- cursor: pointer;
- }
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
- position: absolute;
- margin-left: -20px;
- margin-top: 4px \9;
-}
-
-.radio + .radio,
-.checkbox + .checkbox {
- margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
-}
-
-// Radios and checkboxes on same line
-.radio-inline,
-.checkbox-inline {
- position: relative;
- display: inline-block;
- padding-left: 20px;
- margin-bottom: 0;
- vertical-align: middle;
- font-weight: normal;
- cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
- margin-top: 0;
- margin-left: 10px; // space out consecutive inline controls
-}
-
-// Apply same disabled cursor tweak as for inputs
-// Some special care is needed because <label>s don't inherit their parent's `cursor`.
-//
-// Note: Neither radios nor checkboxes can be readonly.
-input[type="radio"],
-input[type="checkbox"] {
- &[disabled],
- &.disabled,
- fieldset[disabled] & {
- cursor: @cursor-disabled;
- }
-}
-// These classes are used directly on <label>s
-.radio-inline,
-.checkbox-inline {
- &.disabled,
- fieldset[disabled] & {
- cursor: @cursor-disabled;
- }
-}
-// These classes are used on elements with <label> descendants
-.radio,
-.checkbox {
- &.disabled,
- fieldset[disabled] & {
- label {
- cursor: @cursor-disabled;
- }
- }
-}
-
-
-// Static form control text
-//
-// Apply class to a `p` element to make any string of text align with labels in
-// a horizontal form layout.
-
-.form-control-static {
- // Size it appropriately next to real form controls
- padding-top: (@padding-base-vertical + 1);
- padding-bottom: (@padding-base-vertical + 1);
- // Remove default margin from `p`
- margin-bottom: 0;
- min-height: (@line-height-computed + @font-size-base);
-
- &.input-lg,
- &.input-sm {
- padding-left: 0;
- padding-right: 0;
- }
-}
-
-
-// Form control sizing
-//
-// Build on `.form-control` with modifier classes to decrease or increase the
-// height and font-size of form controls.
-//
-// The `.form-group-* form-control` variations are sadly duplicated to avoid the
-// issue documented in https://github.com/twbs/bootstrap/issues/15074.
-
-.input-sm {
- .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
-}
-.form-group-sm {
- .form-control {
- height: @input-height-small;
- padding: @padding-small-vertical @padding-small-horizontal;
- font-size: @font-size-small;
- line-height: @line-height-small;
- border-radius: @input-border-radius-small;
- }
- select.form-control {
- height: @input-height-small;
- line-height: @input-height-small;
- }
- textarea.form-control,
- select[multiple].form-control {
- height: auto;
- }
- .form-control-static {
- height: @input-height-small;
- min-height: (@line-height-computed + @font-size-small);
- padding: (@padding-small-vertical + 1) @padding-small-horizontal;
- font-size: @font-size-small;
- line-height: @line-height-small;
- }
-}
-
-.input-lg {
- .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
-}
-.form-group-lg {
- .form-control {
- height: @input-height-large;
- padding: @padding-large-vertical @padding-large-horizontal;
- font-size: @font-size-large;
- line-height: @line-height-large;
- border-radius: @input-border-radius-large;
- }
- select.form-control {
- height: @input-height-large;
- line-height: @input-height-large;
- }
- textarea.form-control,
- select[multiple].form-control {
- height: auto;
- }
- .form-control-static {
- height: @input-height-large;
- min-height: (@line-height-computed + @font-size-large);
- padding: (@padding-large-vertical + 1) @padding-large-horizontal;
- font-size: @font-size-large;
- line-height: @line-height-large;
- }
-}
-
-
-// Form control feedback states
-//
-// Apply contextual and semantic states to individual form controls.
-
-.has-feedback {
- // Enable absolute positioning
- position: relative;
-
- // Ensure icons don't overlap text
- .form-control {
- padding-right: (@input-height-base * 1.25);
- }
-}
-// Feedback icon (requires .glyphicon classes)
-.form-control-feedback {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 2; // Ensure icon is above input groups
- display: block;
- width: @input-height-base;
- height: @input-height-base;
- line-height: @input-height-base;
- text-align: center;
- pointer-events: none;
-}
-.input-lg + .form-control-feedback,
-.input-group-lg + .form-control-feedback,
-.form-group-lg .form-control + .form-control-feedback {
- width: @input-height-large;
- height: @input-height-large;
- line-height: @input-height-large;
-}
-.input-sm + .form-control-feedback,
-.input-group-sm + .form-control-feedback,
-.form-group-sm .form-control + .form-control-feedback {
- width: @input-height-small;
- height: @input-height-small;
- line-height: @input-height-small;
-}
-
-// Feedback states
-.has-success {
- .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
-}
-.has-warning {
- .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
-}
-.has-error {
- .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
-}
-
-// Reposition feedback icon if input has visible label above
-.has-feedback label {
-
- & ~ .form-control-feedback {
- top: (@line-height-computed + 5); // Height of the `label` and its margin
- }
- &.sr-only ~ .form-control-feedback {
- top: 0;
- }
-}
-
-
-// Help text
-//
-// Apply to any element you wish to create light text for placement immediately
-// below a form control. Use for general help, formatting, or instructional text.
-
-.help-block {
- display: block; // account for any element using help-block
- margin-top: 5px;
- margin-bottom: 10px;
- color: lighten(@text-color, 25%); // lighten the text some for contrast
-}
-
-
-// Inline forms
-//
-// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
-// forms begin stacked on extra small (mobile) devices and then go inline when
-// viewports reach <768px.
-//
-// Requires wrapping inputs and labels with `.form-group` for proper display of
-// default HTML form controls and our custom form controls (e.g., input groups).
-//
-// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
-
-.form-inline {
-
- // Kick in the inline
- @media (min-width: @screen-sm-min) {
- // Inline-block all the things for "inline"
- .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
-
- // In navbar-form, allow folks to *not* use `.form-group`
- .form-control {
- display: inline-block;
- width: auto; // Prevent labels from stacking above inputs in `.form-group`
- vertical-align: middle;
- }
-
- // Make static controls behave like regular ones
- .form-control-static {
- display: inline-block;
- }
-
- .input-group {
- display: inline-table;
- vertical-align: middle;
-
- .input-group-addon,
- .input-group-btn,
- .form-control {
- width: auto;
- }
- }
-
- // Input groups need that 100% width though
- .input-group > .form-control {
- width: 100%;
- }
-
- .control-label {
- margin-bottom: 0;
- vertical-align: middle;
- }
-
- // Remove default margin on radios/checkboxes that were used for stacking, and
- // then undo the floating of radios and checkboxes to match.
- .radio,
- .checkbox {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle;
-
- label {
- padding-left: 0;
- }
- }
- .radio input[type="radio"],
- .checkbox input[type="checkbox"] {
- position: relative;
- margin-left: 0;
- }
-
- // Re-override the feedback icon.
- .has-feedback .form-control-feedback {
- top: 0;
- }
- }
-}
-
-
-// Horizontal forms
-//
-// Horizontal forms are built on grid classes and allow you to create forms with
-// labels on the left and inputs on the right.
-
-.form-horizontal {
-
- // Consistent vertical alignment of radios and checkboxes
- //
- // Labels also get some reset styles, but that is scoped to a media query below.
- .radio,
- .checkbox,
- .radio-inline,
- .checkbox-inline {
- margin-top: 0;
- margin-bottom: 0;
- padding-top: (@padding-base-vertical + 1); // Default padding plus a border
- }
- // Account for padding we're adding to ensure the alignment and of help text
- // and other content below items
- .radio,
- .checkbox {
- min-height: (@line-height-computed + (@padding-base-vertical + 1));
- }
-
- // Make form groups behave like rows
- .form-group {
- .make-row();
- }
-
- // Reset spacing and right align labels, but scope to media queries so that
- // labels on narrow viewports stack the same as a default form example.
- @media (min-width: @screen-sm-min) {
- .control-label {
- text-align: right;
- margin-bottom: 0;
- padding-top: (@padding-base-vertical + 1); // Default padding plus a border
- }
- }
-
- // Validation states
- //
- // Reposition the icon because it's now within a grid column and columns have
- // `position: relative;` on them. Also accounts for the grid gutter padding.
- .has-feedback .form-control-feedback {
- right: floor((@grid-gutter-width / 2));
- }
-
- // Form group sizes
- //
- // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
- // inputs and labels within a `.form-group`.
- .form-group-lg {
- @media (min-width: @screen-sm-min) {
- .control-label {
- padding-top: ((@padding-large-vertical * @line-height-large) + 1);
- font-size: @font-size-large;
- }
- }
- }
- .form-group-sm {
- @media (min-width: @screen-sm-min) {
- .control-label {
- padding-top: (@padding-small-vertical + 1);
- font-size: @font-size-small;
- }
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/glyphicons.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/glyphicons.less
deleted file mode 100644
index 335d80aa6..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/glyphicons.less
+++ /dev/null
@@ -1,305 +0,0 @@
-//
-// Glyphicons for Bootstrap
-//
-// Since icons are fonts, they can be placed anywhere text is placed and are
-// thus automatically sized to match the surrounding child. To use, create an
-// inline element with the appropriate classes, like so:
-//
-// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
-
-// Import the fonts
-@font-face {
- font-family: 'Glyphicons Halflings';
- src: url('@{icon-font-path}@{icon-font-name}.eot');
- src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),
- url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),
- url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),
- url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),
- url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');
-}
-
-// Catchall baseclass
-.glyphicon {
- position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- font-style: normal;
- font-weight: normal;
- line-height: 1;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-// Individual icons
-.glyphicon-asterisk { &:before { content: "\2a"; } }
-.glyphicon-plus { &:before { content: "\2b"; } }
-.glyphicon-euro,
-.glyphicon-eur { &:before { content: "\20ac"; } }
-.glyphicon-minus { &:before { content: "\2212"; } }
-.glyphicon-cloud { &:before { content: "\2601"; } }
-.glyphicon-envelope { &:before { content: "\2709"; } }
-.glyphicon-pencil { &:before { content: "\270f"; } }
-.glyphicon-glass { &:before { content: "\e001"; } }
-.glyphicon-music { &:before { content: "\e002"; } }
-.glyphicon-search { &:before { content: "\e003"; } }
-.glyphicon-heart { &:before { content: "\e005"; } }
-.glyphicon-star { &:before { content: "\e006"; } }
-.glyphicon-star-empty { &:before { content: "\e007"; } }
-.glyphicon-user { &:before { content: "\e008"; } }
-.glyphicon-film { &:before { content: "\e009"; } }
-.glyphicon-th-large { &:before { content: "\e010"; } }
-.glyphicon-th { &:before { content: "\e011"; } }
-.glyphicon-th-list { &:before { content: "\e012"; } }
-.glyphicon-ok { &:before { content: "\e013"; } }
-.glyphicon-remove { &:before { content: "\e014"; } }
-.glyphicon-zoom-in { &:before { content: "\e015"; } }
-.glyphicon-zoom-out { &:before { content: "\e016"; } }
-.glyphicon-off { &:before { content: "\e017"; } }
-.glyphicon-signal { &:before { content: "\e018"; } }
-.glyphicon-cog { &:before { content: "\e019"; } }
-.glyphicon-trash { &:before { content: "\e020"; } }
-.glyphicon-home { &:before { content: "\e021"; } }
-.glyphicon-file { &:before { content: "\e022"; } }
-.glyphicon-time { &:before { content: "\e023"; } }
-.glyphicon-road { &:before { content: "\e024"; } }
-.glyphicon-download-alt { &:before { content: "\e025"; } }
-.glyphicon-download { &:before { content: "\e026"; } }
-.glyphicon-upload { &:before { content: "\e027"; } }
-.glyphicon-inbox { &:before { content: "\e028"; } }
-.glyphicon-play-circle { &:before { content: "\e029"; } }
-.glyphicon-repeat { &:before { content: "\e030"; } }
-.glyphicon-refresh { &:before { content: "\e031"; } }
-.glyphicon-list-alt { &:before { content: "\e032"; } }
-.glyphicon-lock { &:before { content: "\e033"; } }
-.glyphicon-flag { &:before { content: "\e034"; } }
-.glyphicon-headphones { &:before { content: "\e035"; } }
-.glyphicon-volume-off { &:before { content: "\e036"; } }
-.glyphicon-volume-down { &:before { content: "\e037"; } }
-.glyphicon-volume-up { &:before { content: "\e038"; } }
-.glyphicon-qrcode { &:before { content: "\e039"; } }
-.glyphicon-barcode { &:before { content: "\e040"; } }
-.glyphicon-tag { &:before { content: "\e041"; } }
-.glyphicon-tags { &:before { content: "\e042"; } }
-.glyphicon-book { &:before { content: "\e043"; } }
-.glyphicon-bookmark { &:before { content: "\e044"; } }
-.glyphicon-print { &:before { content: "\e045"; } }
-.glyphicon-camera { &:before { content: "\e046"; } }
-.glyphicon-font { &:before { content: "\e047"; } }
-.glyphicon-bold { &:before { content: "\e048"; } }
-.glyphicon-italic { &:before { content: "\e049"; } }
-.glyphicon-text-height { &:before { content: "\e050"; } }
-.glyphicon-text-width { &:before { content: "\e051"; } }
-.glyphicon-align-left { &:before { content: "\e052"; } }
-.glyphicon-align-center { &:before { content: "\e053"; } }
-.glyphicon-align-right { &:before { content: "\e054"; } }
-.glyphicon-align-justify { &:before { content: "\e055"; } }
-.glyphicon-list { &:before { content: "\e056"; } }
-.glyphicon-indent-left { &:before { content: "\e057"; } }
-.glyphicon-indent-right { &:before { content: "\e058"; } }
-.glyphicon-facetime-video { &:before { content: "\e059"; } }
-.glyphicon-picture { &:before { content: "\e060"; } }
-.glyphicon-map-marker { &:before { content: "\e062"; } }
-.glyphicon-adjust { &:before { content: "\e063"; } }
-.glyphicon-tint { &:before { content: "\e064"; } }
-.glyphicon-edit { &:before { content: "\e065"; } }
-.glyphicon-share { &:before { content: "\e066"; } }
-.glyphicon-check { &:before { content: "\e067"; } }
-.glyphicon-move { &:before { content: "\e068"; } }
-.glyphicon-step-backward { &:before { content: "\e069"; } }
-.glyphicon-fast-backward { &:before { content: "\e070"; } }
-.glyphicon-backward { &:before { content: "\e071"; } }
-.glyphicon-play { &:before { content: "\e072"; } }
-.glyphicon-pause { &:before { content: "\e073"; } }
-.glyphicon-stop { &:before { content: "\e074"; } }
-.glyphicon-forward { &:before { content: "\e075"; } }
-.glyphicon-fast-forward { &:before { content: "\e076"; } }
-.glyphicon-step-forward { &:before { content: "\e077"; } }
-.glyphicon-eject { &:before { content: "\e078"; } }
-.glyphicon-chevron-left { &:before { content: "\e079"; } }
-.glyphicon-chevron-right { &:before { content: "\e080"; } }
-.glyphicon-plus-sign { &:before { content: "\e081"; } }
-.glyphicon-minus-sign { &:before { content: "\e082"; } }
-.glyphicon-remove-sign { &:before { content: "\e083"; } }
-.glyphicon-ok-sign { &:before { content: "\e084"; } }
-.glyphicon-question-sign { &:before { content: "\e085"; } }
-.glyphicon-info-sign { &:before { content: "\e086"; } }
-.glyphicon-screenshot { &:before { content: "\e087"; } }
-.glyphicon-remove-circle { &:before { content: "\e088"; } }
-.glyphicon-ok-circle { &:before { content: "\e089"; } }
-.glyphicon-ban-circle { &:before { content: "\e090"; } }
-.glyphicon-arrow-left { &:before { content: "\e091"; } }
-.glyphicon-arrow-right { &:before { content: "\e092"; } }
-.glyphicon-arrow-up { &:before { content: "\e093"; } }
-.glyphicon-arrow-down { &:before { content: "\e094"; } }
-.glyphicon-share-alt { &:before { content: "\e095"; } }
-.glyphicon-resize-full { &:before { content: "\e096"; } }
-.glyphicon-resize-small { &:before { content: "\e097"; } }
-.glyphicon-exclamation-sign { &:before { content: "\e101"; } }
-.glyphicon-gift { &:before { content: "\e102"; } }
-.glyphicon-leaf { &:before { content: "\e103"; } }
-.glyphicon-fire { &:before { content: "\e104"; } }
-.glyphicon-eye-open { &:before { content: "\e105"; } }
-.glyphicon-eye-close { &:before { content: "\e106"; } }
-.glyphicon-warning-sign { &:before { content: "\e107"; } }
-.glyphicon-plane { &:before { content: "\e108"; } }
-.glyphicon-calendar { &:before { content: "\e109"; } }
-.glyphicon-random { &:before { content: "\e110"; } }
-.glyphicon-comment { &:before { content: "\e111"; } }
-.glyphicon-magnet { &:before { content: "\e112"; } }
-.glyphicon-chevron-up { &:before { content: "\e113"; } }
-.glyphicon-chevron-down { &:before { content: "\e114"; } }
-.glyphicon-retweet { &:before { content: "\e115"; } }
-.glyphicon-shopping-cart { &:before { content: "\e116"; } }
-.glyphicon-folder-close { &:before { content: "\e117"; } }
-.glyphicon-folder-open { &:before { content: "\e118"; } }
-.glyphicon-resize-vertical { &:before { content: "\e119"; } }
-.glyphicon-resize-horizontal { &:before { content: "\e120"; } }
-.glyphicon-hdd { &:before { content: "\e121"; } }
-.glyphicon-bullhorn { &:before { content: "\e122"; } }
-.glyphicon-bell { &:before { content: "\e123"; } }
-.glyphicon-certificate { &:before { content: "\e124"; } }
-.glyphicon-thumbs-up { &:before { content: "\e125"; } }
-.glyphicon-thumbs-down { &:before { content: "\e126"; } }
-.glyphicon-hand-right { &:before { content: "\e127"; } }
-.glyphicon-hand-left { &:before { content: "\e128"; } }
-.glyphicon-hand-up { &:before { content: "\e129"; } }
-.glyphicon-hand-down { &:before { content: "\e130"; } }
-.glyphicon-circle-arrow-right { &:before { content: "\e131"; } }
-.glyphicon-circle-arrow-left { &:before { content: "\e132"; } }
-.glyphicon-circle-arrow-up { &:before { content: "\e133"; } }
-.glyphicon-circle-arrow-down { &:before { content: "\e134"; } }
-.glyphicon-globe { &:before { content: "\e135"; } }
-.glyphicon-wrench { &:before { content: "\e136"; } }
-.glyphicon-tasks { &:before { content: "\e137"; } }
-.glyphicon-filter { &:before { content: "\e138"; } }
-.glyphicon-briefcase { &:before { content: "\e139"; } }
-.glyphicon-fullscreen { &:before { content: "\e140"; } }
-.glyphicon-dashboard { &:before { content: "\e141"; } }
-.glyphicon-paperclip { &:before { content: "\e142"; } }
-.glyphicon-heart-empty { &:before { content: "\e143"; } }
-.glyphicon-link { &:before { content: "\e144"; } }
-.glyphicon-phone { &:before { content: "\e145"; } }
-.glyphicon-pushpin { &:before { content: "\e146"; } }
-.glyphicon-usd { &:before { content: "\e148"; } }
-.glyphicon-gbp { &:before { content: "\e149"; } }
-.glyphicon-sort { &:before { content: "\e150"; } }
-.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } }
-.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } }
-.glyphicon-sort-by-order { &:before { content: "\e153"; } }
-.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } }
-.glyphicon-sort-by-attributes { &:before { content: "\e155"; } }
-.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
-.glyphicon-unchecked { &:before { content: "\e157"; } }
-.glyphicon-expand { &:before { content: "\e158"; } }
-.glyphicon-collapse-down { &:before { content: "\e159"; } }
-.glyphicon-collapse-up { &:before { content: "\e160"; } }
-.glyphicon-log-in { &:before { content: "\e161"; } }
-.glyphicon-flash { &:before { content: "\e162"; } }
-.glyphicon-log-out { &:before { content: "\e163"; } }
-.glyphicon-new-window { &:before { content: "\e164"; } }
-.glyphicon-record { &:before { content: "\e165"; } }
-.glyphicon-save { &:before { content: "\e166"; } }
-.glyphicon-open { &:before { content: "\e167"; } }
-.glyphicon-saved { &:before { content: "\e168"; } }
-.glyphicon-import { &:before { content: "\e169"; } }
-.glyphicon-export { &:before { content: "\e170"; } }
-.glyphicon-send { &:before { content: "\e171"; } }
-.glyphicon-floppy-disk { &:before { content: "\e172"; } }
-.glyphicon-floppy-saved { &:before { content: "\e173"; } }
-.glyphicon-floppy-remove { &:before { content: "\e174"; } }
-.glyphicon-floppy-save { &:before { content: "\e175"; } }
-.glyphicon-floppy-open { &:before { content: "\e176"; } }
-.glyphicon-credit-card { &:before { content: "\e177"; } }
-.glyphicon-transfer { &:before { content: "\e178"; } }
-.glyphicon-cutlery { &:before { content: "\e179"; } }
-.glyphicon-header { &:before { content: "\e180"; } }
-.glyphicon-compressed { &:before { content: "\e181"; } }
-.glyphicon-earphone { &:before { content: "\e182"; } }
-.glyphicon-phone-alt { &:before { content: "\e183"; } }
-.glyphicon-tower { &:before { content: "\e184"; } }
-.glyphicon-stats { &:before { content: "\e185"; } }
-.glyphicon-sd-video { &:before { content: "\e186"; } }
-.glyphicon-hd-video { &:before { content: "\e187"; } }
-.glyphicon-subtitles { &:before { content: "\e188"; } }
-.glyphicon-sound-stereo { &:before { content: "\e189"; } }
-.glyphicon-sound-dolby { &:before { content: "\e190"; } }
-.glyphicon-sound-5-1 { &:before { content: "\e191"; } }
-.glyphicon-sound-6-1 { &:before { content: "\e192"; } }
-.glyphicon-sound-7-1 { &:before { content: "\e193"; } }
-.glyphicon-copyright-mark { &:before { content: "\e194"; } }
-.glyphicon-registration-mark { &:before { content: "\e195"; } }
-.glyphicon-cloud-download { &:before { content: "\e197"; } }
-.glyphicon-cloud-upload { &:before { content: "\e198"; } }
-.glyphicon-tree-conifer { &:before { content: "\e199"; } }
-.glyphicon-tree-deciduous { &:before { content: "\e200"; } }
-.glyphicon-cd { &:before { content: "\e201"; } }
-.glyphicon-save-file { &:before { content: "\e202"; } }
-.glyphicon-open-file { &:before { content: "\e203"; } }
-.glyphicon-level-up { &:before { content: "\e204"; } }
-.glyphicon-copy { &:before { content: "\e205"; } }
-.glyphicon-paste { &:before { content: "\e206"; } }
-// The following 2 Glyphicons are omitted for the time being because
-// they currently use Unicode codepoints that are outside the
-// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
-// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
-// Notably, the bug affects some older versions of the Android Browser.
-// More info: https://github.com/twbs/bootstrap/issues/10106
-// .glyphicon-door { &:before { content: "\1f6aa"; } }
-// .glyphicon-key { &:before { content: "\1f511"; } }
-.glyphicon-alert { &:before { content: "\e209"; } }
-.glyphicon-equalizer { &:before { content: "\e210"; } }
-.glyphicon-king { &:before { content: "\e211"; } }
-.glyphicon-queen { &:before { content: "\e212"; } }
-.glyphicon-pawn { &:before { content: "\e213"; } }
-.glyphicon-bishop { &:before { content: "\e214"; } }
-.glyphicon-knight { &:before { content: "\e215"; } }
-.glyphicon-baby-formula { &:before { content: "\e216"; } }
-.glyphicon-tent { &:before { content: "\26fa"; } }
-.glyphicon-blackboard { &:before { content: "\e218"; } }
-.glyphicon-bed { &:before { content: "\e219"; } }
-.glyphicon-apple { &:before { content: "\f8ff"; } }
-.glyphicon-erase { &:before { content: "\e221"; } }
-.glyphicon-hourglass { &:before { content: "\231b"; } }
-.glyphicon-lamp { &:before { content: "\e223"; } }
-.glyphicon-duplicate { &:before { content: "\e224"; } }
-.glyphicon-piggy-bank { &:before { content: "\e225"; } }
-.glyphicon-scissors { &:before { content: "\e226"; } }
-.glyphicon-bitcoin { &:before { content: "\e227"; } }
-.glyphicon-btc { &:before { content: "\e227"; } }
-.glyphicon-xbt { &:before { content: "\e227"; } }
-.glyphicon-yen { &:before { content: "\00a5"; } }
-.glyphicon-jpy { &:before { content: "\00a5"; } }
-.glyphicon-ruble { &:before { content: "\20bd"; } }
-.glyphicon-rub { &:before { content: "\20bd"; } }
-.glyphicon-scale { &:before { content: "\e230"; } }
-.glyphicon-ice-lolly { &:before { content: "\e231"; } }
-.glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } }
-.glyphicon-education { &:before { content: "\e233"; } }
-.glyphicon-option-horizontal { &:before { content: "\e234"; } }
-.glyphicon-option-vertical { &:before { content: "\e235"; } }
-.glyphicon-menu-hamburger { &:before { content: "\e236"; } }
-.glyphicon-modal-window { &:before { content: "\e237"; } }
-.glyphicon-oil { &:before { content: "\e238"; } }
-.glyphicon-grain { &:before { content: "\e239"; } }
-.glyphicon-sunglasses { &:before { content: "\e240"; } }
-.glyphicon-text-size { &:before { content: "\e241"; } }
-.glyphicon-text-color { &:before { content: "\e242"; } }
-.glyphicon-text-background { &:before { content: "\e243"; } }
-.glyphicon-object-align-top { &:before { content: "\e244"; } }
-.glyphicon-object-align-bottom { &:before { content: "\e245"; } }
-.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
-.glyphicon-object-align-left { &:before { content: "\e247"; } }
-.glyphicon-object-align-vertical { &:before { content: "\e248"; } }
-.glyphicon-object-align-right { &:before { content: "\e249"; } }
-.glyphicon-triangle-right { &:before { content: "\e250"; } }
-.glyphicon-triangle-left { &:before { content: "\e251"; } }
-.glyphicon-triangle-bottom { &:before { content: "\e252"; } }
-.glyphicon-triangle-top { &:before { content: "\e253"; } }
-.glyphicon-console { &:before { content: "\e254"; } }
-.glyphicon-superscript { &:before { content: "\e255"; } }
-.glyphicon-subscript { &:before { content: "\e256"; } }
-.glyphicon-menu-left { &:before { content: "\e257"; } }
-.glyphicon-menu-right { &:before { content: "\e258"; } }
-.glyphicon-menu-down { &:before { content: "\e259"; } }
-.glyphicon-menu-up { &:before { content: "\e260"; } }
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/grid.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/grid.less
deleted file mode 100644
index e100655b7..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/grid.less
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// Grid system
-// --------------------------------------------------
-
-
-// Container widths
-//
-// Set the container width, and override it for fixed navbars in media queries.
-
-.container {
- .container-fixed();
-
- @media (min-width: @screen-sm-min) {
- width: @container-sm;
- }
- @media (min-width: @screen-md-min) {
- width: @container-md;
- }
- @media (min-width: @screen-lg-min) {
- width: @container-lg;
- }
-}
-
-
-// Fluid container
-//
-// Utilizes the mixin meant for fixed width containers, but without any defined
-// width for fluid, full width layouts.
-
-.container-fluid {
- .container-fixed();
-}
-
-
-// Row
-//
-// Rows contain and clear the floats of your columns.
-
-.row {
- .make-row();
-}
-
-
-// Columns
-//
-// Common styles for small and large grid columns
-
-.make-grid-columns();
-
-
-// Extra small grid
-//
-// Columns, offsets, pushes, and pulls for extra small devices like
-// smartphones.
-
-.make-grid(xs);
-
-
-// Small grid
-//
-// Columns, offsets, pushes, and pulls for the small device range, from phones
-// to tablets.
-
-@media (min-width: @screen-sm-min) {
- .make-grid(sm);
-}
-
-
-// Medium grid
-//
-// Columns, offsets, pushes, and pulls for the desktop device range.
-
-@media (min-width: @screen-md-min) {
- .make-grid(md);
-}
-
-
-// Large grid
-//
-// Columns, offsets, pushes, and pulls for the large desktop device range.
-
-@media (min-width: @screen-lg-min) {
- .make-grid(lg);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/input-groups.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/input-groups.less
deleted file mode 100644
index 4a711fff0..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/input-groups.less
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// Input groups
-// --------------------------------------------------
-
-// Base styles
-// -------------------------
-.input-group {
- position: relative; // For dropdowns
- display: table;
- border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
-
- // Undo padding and float of grid classes
- &[class*="col-"] {
- float: none;
- padding-left: 0;
- padding-right: 0;
- }
-
- .form-control {
- // Ensure that the input is always above the *appended* addon button for
- // proper border colors.
- position: relative;
- z-index: 2;
-
- // IE9 fubars the placeholder attribute in text inputs and the arrows on
- // select elements in input groups. To fix it, we float the input. Details:
- // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
- float: left;
-
- width: 100%;
- margin-bottom: 0;
- }
-}
-
-// Sizing options
-//
-// Remix the default form control sizing classes into new ones for easier
-// manipulation.
-
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
- .input-lg();
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
- .input-sm();
-}
-
-
-// Display as table-cell
-// -------------------------
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
- display: table-cell;
-
- &:not(:first-child):not(:last-child) {
- border-radius: 0;
- }
-}
-// Addon and addon wrapper for buttons
-.input-group-addon,
-.input-group-btn {
- width: 1%;
- white-space: nowrap;
- vertical-align: middle; // Match the inputs
-}
-
-// Text input groups
-// -------------------------
-.input-group-addon {
- padding: @padding-base-vertical @padding-base-horizontal;
- font-size: @font-size-base;
- font-weight: normal;
- line-height: 1;
- color: @input-color;
- text-align: center;
- background-color: @input-group-addon-bg;
- border: 1px solid @input-group-addon-border-color;
- border-radius: @input-border-radius;
-
- // Sizing
- &.input-sm {
- padding: @padding-small-vertical @padding-small-horizontal;
- font-size: @font-size-small;
- border-radius: @input-border-radius-small;
- }
- &.input-lg {
- padding: @padding-large-vertical @padding-large-horizontal;
- font-size: @font-size-large;
- border-radius: @input-border-radius-large;
- }
-
- // Nuke default margins from checkboxes and radios to vertically center within.
- input[type="radio"],
- input[type="checkbox"] {
- margin-top: 0;
- }
-}
-
-// Reset rounded corners
-.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-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-left-radius(0);
-}
-.input-group-addon:last-child {
- border-left: 0;
-}
-
-// Button input groups
-// -------------------------
-.input-group-btn {
- position: relative;
- // Jankily prevent input button groups from wrapping with `white-space` and
- // `font-size` in combination with `inline-block` on buttons.
- font-size: 0;
- white-space: nowrap;
-
- // Negative margin for spacing, position for bringing hovered/focused/actived
- // element above the siblings.
- > .btn {
- position: relative;
- + .btn {
- margin-left: -1px;
- }
- // Bring the "active" button to the front
- &:hover,
- &:focus,
- &:active {
- z-index: 2;
- }
- }
-
- // Negative margin to only have a 1px border between the two
- &:first-child {
- > .btn,
- > .btn-group {
- margin-right: -1px;
- }
- }
- &:last-child {
- > .btn,
- > .btn-group {
- z-index: 2;
- margin-left: -1px;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/jumbotron.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/jumbotron.less
deleted file mode 100644
index fa80a38c6..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/jumbotron.less
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// Jumbotron
-// --------------------------------------------------
-
-
-.jumbotron {
- padding-top: @jumbotron-padding;
- padding-bottom: @jumbotron-padding;
- margin-bottom: @jumbotron-padding;
- color: @jumbotron-color;
- background-color: @jumbotron-bg;
-
- h1,
- .h1 {
- color: @jumbotron-heading-color;
- }
-
- p {
- margin-bottom: (@jumbotron-padding / 2);
- font-size: @jumbotron-font-size;
- font-weight: 200;
- }
-
- > hr {
- border-top-color: darken(@jumbotron-bg, 10%);
- }
-
- .container &,
- .container-fluid & {
- border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
- }
-
- .container {
- max-width: 100%;
- }
-
- @media screen and (min-width: @screen-sm-min) {
- padding-top: (@jumbotron-padding * 1.6);
- padding-bottom: (@jumbotron-padding * 1.6);
-
- .container &,
- .container-fluid & {
- padding-left: (@jumbotron-padding * 2);
- padding-right: (@jumbotron-padding * 2);
- }
-
- h1,
- .h1 {
- font-size: @jumbotron-heading-font-size;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/labels.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/labels.less
deleted file mode 100644
index 9a5a27006..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/labels.less
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// Labels
-// --------------------------------------------------
-
-.label {
- display: inline;
- padding: .2em .6em .3em;
- font-size: 75%;
- font-weight: bold;
- line-height: 1;
- color: @label-color;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- border-radius: .25em;
-
- // Add hover effects, but only for links
- a& {
- &:hover,
- &:focus {
- color: @label-link-hover-color;
- text-decoration: none;
- cursor: pointer;
- }
- }
-
- // Empty labels collapse automatically (not available in IE8)
- &:empty {
- display: none;
- }
-
- // Quick fix for labels in buttons
- .btn & {
- position: relative;
- top: -1px;
- }
-}
-
-// Colors
-// Contextual variations (linked labels get darker on :hover)
-
-.label-default {
- .label-variant(@label-default-bg);
-}
-
-.label-primary {
- .label-variant(@label-primary-bg);
-}
-
-.label-success {
- .label-variant(@label-success-bg);
-}
-
-.label-info {
- .label-variant(@label-info-bg);
-}
-
-.label-warning {
- .label-variant(@label-warning-bg);
-}
-
-.label-danger {
- .label-variant(@label-danger-bg);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/list-group.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/list-group.less
deleted file mode 100644
index 216b91230..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/list-group.less
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// List groups
-// --------------------------------------------------
-
-
-// Base class
-//
-// Easily usable on <ul>, <ol>, or <div>.
-
-.list-group {
- // No need to set list-style: none; since .list-group-item is block level
- margin-bottom: 20px;
- padding-left: 0; // reset padding because ul and ol
-}
-
-
-// Individual list items
-//
-// Use on `li`s or `div`s within the `.list-group` parent.
-
-.list-group-item {
- position: relative;
- display: block;
- padding: 10px 15px;
- // Place the border on the list items and negative margin up for better styling
- margin-bottom: -1px;
- background-color: @list-group-bg;
- border: 1px solid @list-group-border;
-
- // Round the first and last items
- &:first-child {
- .border-top-radius(@list-group-border-radius);
- }
- &:last-child {
- margin-bottom: 0;
- .border-bottom-radius(@list-group-border-radius);
- }
-}
-
-
-// Interactive list items
-//
-// Use anchor or button elements instead of `li`s or `div`s to create interactive items.
-// Includes an extra `.active` modifier class for showing selected items.
-
-a.list-group-item,
-button.list-group-item {
- color: @list-group-link-color;
-
- .list-group-item-heading {
- color: @list-group-link-heading-color;
- }
-
- // Hover state
- &:hover,
- &:focus {
- text-decoration: none;
- color: @list-group-link-hover-color;
- background-color: @list-group-hover-bg;
- }
-}
-
-button.list-group-item {
- width: 100%;
- text-align: left;
-}
-
-.list-group-item {
- // Disabled state
- &.disabled,
- &.disabled:hover,
- &.disabled:focus {
- background-color: @list-group-disabled-bg;
- color: @list-group-disabled-color;
- cursor: @cursor-disabled;
-
- // Force color to inherit for custom content
- .list-group-item-heading {
- color: inherit;
- }
- .list-group-item-text {
- color: @list-group-disabled-text-color;
- }
- }
-
- // Active class on item itself, not parent
- &.active,
- &.active:hover,
- &.active:focus {
- z-index: 2; // Place active items above their siblings for proper border styling
- color: @list-group-active-color;
- background-color: @list-group-active-bg;
- border-color: @list-group-active-border;
-
- // Force color to inherit for custom content
- .list-group-item-heading,
- .list-group-item-heading > small,
- .list-group-item-heading > .small {
- color: inherit;
- }
- .list-group-item-text {
- color: @list-group-active-text-color;
- }
- }
-}
-
-
-// Contextual variants
-//
-// Add modifier classes to change text and background color on individual items.
-// Organizationally, this must come after the `:hover` states.
-
-.list-group-item-variant(success; @state-success-bg; @state-success-text);
-.list-group-item-variant(info; @state-info-bg; @state-info-text);
-.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);
-.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);
-
-
-// Custom content options
-//
-// Extra classes for creating well-formatted content within `.list-group-item`s.
-
-.list-group-item-heading {
- margin-top: 0;
- margin-bottom: 5px;
-}
-.list-group-item-text {
- margin-bottom: 0;
- line-height: 1.3;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/media.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/media.less
deleted file mode 100644
index 8c835e861..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/media.less
+++ /dev/null
@@ -1,66 +0,0 @@
-.media {
- // Proper spacing between instances of .media
- margin-top: 15px;
-
- &:first-child {
- margin-top: 0;
- }
-}
-
-.media,
-.media-body {
- zoom: 1;
- overflow: hidden;
-}
-
-.media-body {
- width: 10000px;
-}
-
-.media-object {
- display: block;
-
- // Fix collapse in webkit from max-width: 100% and display: table-cell.
- &.img-thumbnail {
- max-width: none;
- }
-}
-
-.media-right,
-.media > .pull-right {
- padding-left: 10px;
-}
-
-.media-left,
-.media > .pull-left {
- padding-right: 10px;
-}
-
-.media-left,
-.media-right,
-.media-body {
- display: table-cell;
- vertical-align: top;
-}
-
-.media-middle {
- vertical-align: middle;
-}
-
-.media-bottom {
- vertical-align: bottom;
-}
-
-// Reset margins on headings for tighter default spacing
-.media-heading {
- margin-top: 0;
- margin-bottom: 5px;
-}
-
-// Media list variation
-//
-// Undo default ul/ol styles
-.media-list {
- padding-left: 0;
- list-style: none;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins.less
deleted file mode 100644
index e6f9fe684..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins.less
+++ /dev/null
@@ -1,40 +0,0 @@
-// Mixins
-// --------------------------------------------------
-
-// Utilities
-@import "mixins/hide-text.less";
-@import "mixins/opacity.less";
-@import "mixins/image.less";
-@import "mixins/labels.less";
-@import "mixins/reset-filter.less";
-@import "mixins/resize.less";
-@import "mixins/responsive-visibility.less";
-@import "mixins/size.less";
-@import "mixins/tab-focus.less";
-@import "mixins/reset-text.less";
-@import "mixins/text-emphasis.less";
-@import "mixins/text-overflow.less";
-@import "mixins/vendor-prefixes.less";
-
-// Components
-@import "mixins/alerts.less";
-@import "mixins/buttons.less";
-@import "mixins/panels.less";
-@import "mixins/pagination.less";
-@import "mixins/list-group.less";
-@import "mixins/nav-divider.less";
-@import "mixins/forms.less";
-@import "mixins/progress-bar.less";
-@import "mixins/table-row.less";
-
-// Skins
-@import "mixins/background-variant.less";
-@import "mixins/border-radius.less";
-@import "mixins/gradients.less";
-
-// Layout
-@import "mixins/clearfix.less";
-@import "mixins/center-block.less";
-@import "mixins/nav-vertical-align.less";
-@import "mixins/grid-framework.less";
-@import "mixins/grid.less";
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/alerts.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/alerts.less
deleted file mode 100644
index 396196f43..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/alerts.less
+++ /dev/null
@@ -1,14 +0,0 @@
-// Alerts
-
-.alert-variant(@background; @border; @text-color) {
- background-color: @background;
- border-color: @border;
- color: @text-color;
-
- hr {
- border-top-color: darken(@border, 5%);
- }
- .alert-link {
- color: darken(@text-color, 10%);
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/background-variant.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/background-variant.less
deleted file mode 100644
index a85c22b74..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/background-variant.less
+++ /dev/null
@@ -1,9 +0,0 @@
-// Contextual backgrounds
-
-.bg-variant(@color) {
- background-color: @color;
- a&:hover,
- a&:focus {
- background-color: darken(@color, 10%);
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/border-radius.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/border-radius.less
deleted file mode 100644
index ca05dbf45..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/border-radius.less
+++ /dev/null
@@ -1,18 +0,0 @@
-// Single side border-radius
-
-.border-top-radius(@radius) {
- border-top-right-radius: @radius;
- border-top-left-radius: @radius;
-}
-.border-right-radius(@radius) {
- border-bottom-right-radius: @radius;
- border-top-right-radius: @radius;
-}
-.border-bottom-radius(@radius) {
- border-bottom-right-radius: @radius;
- border-bottom-left-radius: @radius;
-}
-.border-left-radius(@radius) {
- border-bottom-left-radius: @radius;
- border-top-left-radius: @radius;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/buttons.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/buttons.less
deleted file mode 100644
index 6875a97c8..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/buttons.less
+++ /dev/null
@@ -1,68 +0,0 @@
-// Button variants
-//
-// Easily pump out default styles, as well as :hover, :focus, :active,
-// and disabled options for all buttons
-
-.button-variant(@color; @background; @border) {
- color: @color;
- background-color: @background;
- border-color: @border;
-
- &:focus,
- &.focus {
- color: @color;
- background-color: darken(@background, 10%);
- border-color: darken(@border, 25%);
- }
- &:hover {
- color: @color;
- background-color: darken(@background, 10%);
- border-color: darken(@border, 12%);
- }
- &:active,
- &.active,
- .open > .dropdown-toggle& {
- color: @color;
- background-color: darken(@background, 10%);
- border-color: darken(@border, 12%);
-
- &:hover,
- &:focus,
- &.focus {
- color: @color;
- background-color: darken(@background, 17%);
- border-color: darken(@border, 25%);
- }
- }
- &:active,
- &.active,
- .open > .dropdown-toggle& {
- background-image: none;
- }
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &.focus,
- &:active,
- &.active {
- background-color: @background;
- border-color: @border;
- }
- }
-
- .badge {
- color: @background;
- background-color: @color;
- }
-}
-
-// Button sizes
-.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
- padding: @padding-vertical @padding-horizontal;
- font-size: @font-size;
- line-height: @line-height;
- border-radius: @border-radius;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/center-block.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/center-block.less
deleted file mode 100644
index d18d6de9e..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/center-block.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Center-align a block level element
-
-.center-block() {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/clearfix.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/clearfix.less
deleted file mode 100644
index 3f7a3820c..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/clearfix.less
+++ /dev/null
@@ -1,22 +0,0 @@
-// Clearfix
-//
-// For modern browsers
-// 1. The space content is one way to avoid an Opera bug when the
-// contenteditable attribute is included anywhere else in the document.
-// Otherwise it causes space to appear at the top and bottom of elements
-// that are clearfixed.
-// 2. The use of `table` rather than `block` is only necessary if using
-// `:before` to contain the top-margins of child elements.
-//
-// Source: http://nicolasgallagher.com/micro-clearfix-hack/
-
-.clearfix() {
- &:before,
- &:after {
- content: " "; // 1
- display: table; // 2
- }
- &:after {
- clear: both;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/forms.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/forms.less
deleted file mode 100644
index 6f55ed967..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/forms.less
+++ /dev/null
@@ -1,85 +0,0 @@
-// Form validation states
-//
-// Used in forms.less to generate the form validation CSS for warnings, errors,
-// and successes.
-
-.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {
- // Color the label and help text
- .help-block,
- .control-label,
- .radio,
- .checkbox,
- .radio-inline,
- .checkbox-inline,
- &.radio label,
- &.checkbox label,
- &.radio-inline label,
- &.checkbox-inline label {
- color: @text-color;
- }
- // Set the border and box shadow on specific inputs to match
- .form-control {
- border-color: @border-color;
- .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
- &:focus {
- border-color: darken(@border-color, 10%);
- @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
- .box-shadow(@shadow);
- }
- }
- // Set validation states also for addons
- .input-group-addon {
- color: @text-color;
- border-color: @border-color;
- background-color: @background-color;
- }
- // Optional feedback icon
- .form-control-feedback {
- color: @text-color;
- }
-}
-
-
-// Form control focus state
-//
-// Generate a customized focus state and for any input with the specified color,
-// which defaults to the `@input-border-focus` variable.
-//
-// We highly encourage you to not customize the default value, but instead use
-// this to tweak colors on an as-needed basis. This aesthetic change is based on
-// WebKit's default styles, but applicable to a wider range of browsers. Its
-// usability and accessibility should be taken into account with any change.
-//
-// Example usage: change the default blue border and shadow to white for better
-// contrast against a dark gray background.
-.form-control-focus(@color: @input-border-focus) {
- @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
- &:focus {
- border-color: @color;
- outline: 0;
- .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}");
- }
-}
-
-// Form control sizing
-//
-// Relative text size, padding, and border-radii changes for form controls. For
-// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
-// element gets special love because it's special, and that's a fact!
-.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
- height: @input-height;
- padding: @padding-vertical @padding-horizontal;
- font-size: @font-size;
- line-height: @line-height;
- border-radius: @border-radius;
-
- select& {
- height: @input-height;
- line-height: @input-height;
- }
-
- textarea&,
- select[multiple]& {
- height: auto;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/gradients.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/gradients.less
deleted file mode 100644
index 0b88a89cc..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/gradients.less
+++ /dev/null
@@ -1,59 +0,0 @@
-// Gradients
-
-#gradient {
-
- // Horizontal gradient, from left to right
- //
- // Creates two color stops, start and end, by specifying a color and position for each color stop.
- // Color stops are not available in IE9 and below.
- .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
- background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
- background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12
- background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
- background-repeat: repeat-x;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down
- }
-
- // Vertical gradient, from top to bottom
- //
- // Creates two color stops, start and end, by specifying a color and position for each color stop.
- // Color stops are not available in IE9 and below.
- .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
- background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
- background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12
- background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
- background-repeat: repeat-x;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down
- }
-
- .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
- background-repeat: repeat-x;
- background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+
- background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12
- background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
- }
- .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
- background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
- background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
- background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
- background-repeat: no-repeat;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
- }
- .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
- background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
- background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
- background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
- background-repeat: no-repeat;
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
- }
- .radial(@inner-color: #555; @outer-color: #333) {
- background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
- background-image: radial-gradient(circle, @inner-color, @outer-color);
- background-repeat: no-repeat;
- }
- .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {
- background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
- background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid-framework.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid-framework.less
deleted file mode 100644
index 8c23eed24..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid-framework.less
+++ /dev/null
@@ -1,91 +0,0 @@
-// Framework grid generation
-//
-// Used only by Bootstrap to generate the correct number of grid classes given
-// any value of `@grid-columns`.
-
-.make-grid-columns() {
- // Common styles for all sizes of grid columns, widths 1-12
- .col(@index) { // initial
- @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
- .col((@index + 1), @item);
- }
- .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo
- @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
- .col((@index + 1), ~"@{list}, @{item}");
- }
- .col(@index, @list) when (@index > @grid-columns) { // terminal
- @{list} {
- position: relative;
- // Prevent columns from collapsing when empty
- min-height: 1px;
- // Inner gutter via padding
- padding-left: ceil((@grid-gutter-width / 2));
- padding-right: floor((@grid-gutter-width / 2));
- }
- }
- .col(1); // kickstart it
-}
-
-.float-grid-columns(@class) {
- .col(@index) { // initial
- @item: ~".col-@{class}-@{index}";
- .col((@index + 1), @item);
- }
- .col(@index, @list) when (@index =< @grid-columns) { // general
- @item: ~".col-@{class}-@{index}";
- .col((@index + 1), ~"@{list}, @{item}");
- }
- .col(@index, @list) when (@index > @grid-columns) { // terminal
- @{list} {
- float: left;
- }
- }
- .col(1); // kickstart it
-}
-
-.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
- .col-@{class}-@{index} {
- width: percentage((@index / @grid-columns));
- }
-}
-.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
- .col-@{class}-push-@{index} {
- left: percentage((@index / @grid-columns));
- }
-}
-.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
- .col-@{class}-push-0 {
- left: auto;
- }
-}
-.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
- .col-@{class}-pull-@{index} {
- right: percentage((@index / @grid-columns));
- }
-}
-.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
- .col-@{class}-pull-0 {
- right: auto;
- }
-}
-.calc-grid-column(@index, @class, @type) when (@type = offset) {
- .col-@{class}-offset-@{index} {
- margin-left: percentage((@index / @grid-columns));
- }
-}
-
-// Basic looping in LESS
-.loop-grid-columns(@index, @class, @type) when (@index >= 0) {
- .calc-grid-column(@index, @class, @type);
- // next iteration
- .loop-grid-columns((@index - 1), @class, @type);
-}
-
-// Create grid for specific class
-.make-grid(@class) {
- .float-grid-columns(@class);
- .loop-grid-columns(@grid-columns, @class, width);
- .loop-grid-columns(@grid-columns, @class, pull);
- .loop-grid-columns(@grid-columns, @class, push);
- .loop-grid-columns(@grid-columns, @class, offset);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid.less
deleted file mode 100644
index f144c15f4..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/grid.less
+++ /dev/null
@@ -1,122 +0,0 @@
-// Grid system
-//
-// Generate semantic grid columns with these mixins.
-
-// Centered container element
-.container-fixed(@gutter: @grid-gutter-width) {
- margin-right: auto;
- margin-left: auto;
- padding-left: (@gutter / 2);
- padding-right: (@gutter / 2);
- &:extend(.clearfix all);
-}
-
-// Creates a wrapper for a series of columns
-.make-row(@gutter: @grid-gutter-width) {
- margin-left: ceil((@gutter / -2));
- margin-right: floor((@gutter / -2));
- &:extend(.clearfix all);
-}
-
-// Generate the extra small columns
-.make-xs-column(@columns; @gutter: @grid-gutter-width) {
- position: relative;
- float: left;
- width: percentage((@columns / @grid-columns));
- min-height: 1px;
- padding-left: (@gutter / 2);
- padding-right: (@gutter / 2);
-}
-.make-xs-column-offset(@columns) {
- margin-left: percentage((@columns / @grid-columns));
-}
-.make-xs-column-push(@columns) {
- left: percentage((@columns / @grid-columns));
-}
-.make-xs-column-pull(@columns) {
- right: percentage((@columns / @grid-columns));
-}
-
-// Generate the small columns
-.make-sm-column(@columns; @gutter: @grid-gutter-width) {
- position: relative;
- min-height: 1px;
- padding-left: (@gutter / 2);
- padding-right: (@gutter / 2);
-
- @media (min-width: @screen-sm-min) {
- float: left;
- width: percentage((@columns / @grid-columns));
- }
-}
-.make-sm-column-offset(@columns) {
- @media (min-width: @screen-sm-min) {
- margin-left: percentage((@columns / @grid-columns));
- }
-}
-.make-sm-column-push(@columns) {
- @media (min-width: @screen-sm-min) {
- left: percentage((@columns / @grid-columns));
- }
-}
-.make-sm-column-pull(@columns) {
- @media (min-width: @screen-sm-min) {
- right: percentage((@columns / @grid-columns));
- }
-}
-
-// Generate the medium columns
-.make-md-column(@columns; @gutter: @grid-gutter-width) {
- position: relative;
- min-height: 1px;
- padding-left: (@gutter / 2);
- padding-right: (@gutter / 2);
-
- @media (min-width: @screen-md-min) {
- float: left;
- width: percentage((@columns / @grid-columns));
- }
-}
-.make-md-column-offset(@columns) {
- @media (min-width: @screen-md-min) {
- margin-left: percentage((@columns / @grid-columns));
- }
-}
-.make-md-column-push(@columns) {
- @media (min-width: @screen-md-min) {
- left: percentage((@columns / @grid-columns));
- }
-}
-.make-md-column-pull(@columns) {
- @media (min-width: @screen-md-min) {
- right: percentage((@columns / @grid-columns));
- }
-}
-
-// Generate the large columns
-.make-lg-column(@columns; @gutter: @grid-gutter-width) {
- position: relative;
- min-height: 1px;
- padding-left: (@gutter / 2);
- padding-right: (@gutter / 2);
-
- @media (min-width: @screen-lg-min) {
- float: left;
- width: percentage((@columns / @grid-columns));
- }
-}
-.make-lg-column-offset(@columns) {
- @media (min-width: @screen-lg-min) {
- margin-left: percentage((@columns / @grid-columns));
- }
-}
-.make-lg-column-push(@columns) {
- @media (min-width: @screen-lg-min) {
- left: percentage((@columns / @grid-columns));
- }
-}
-.make-lg-column-pull(@columns) {
- @media (min-width: @screen-lg-min) {
- right: percentage((@columns / @grid-columns));
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/hide-text.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/hide-text.less
deleted file mode 100644
index bc7011850..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/hide-text.less
+++ /dev/null
@@ -1,21 +0,0 @@
-// CSS image replacement
-//
-// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
-// mixins being reused as classes with the same name, this doesn't hold up. As
-// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
-//
-// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
-
-// Deprecated as of v3.0.1 (will be removed in v4)
-.hide-text() {
- font: ~"0/0" a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
-}
-
-// New mixin to use as of v3.0.1
-.text-hide() {
- .hide-text();
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/image.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/image.less
deleted file mode 100644
index f233cb3e1..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/image.less
+++ /dev/null
@@ -1,33 +0,0 @@
-// Image Mixins
-// - Responsive image
-// - Retina image
-
-
-// Responsive image
-//
-// Keep images from scaling beyond the width of their parents.
-.img-responsive(@display: block) {
- display: @display;
- max-width: 100%; // Part 1: Set a maximum relative to the parent
- height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
-}
-
-
-// Retina image
-//
-// Short retina mixin for setting background-image and -size. Note that the
-// spelling of `min--moz-device-pixel-ratio` is intentional.
-.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
- background-image: url("@{file-1x}");
-
- @media
- only screen and (-webkit-min-device-pixel-ratio: 2),
- only screen and ( min--moz-device-pixel-ratio: 2),
- only screen and ( -o-min-device-pixel-ratio: 2/1),
- only screen and ( min-device-pixel-ratio: 2),
- only screen and ( min-resolution: 192dpi),
- only screen and ( min-resolution: 2dppx) {
- background-image: url("@{file-2x}");
- background-size: @width-1x @height-1x;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/labels.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/labels.less
deleted file mode 100644
index 9f7a67ee3..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/labels.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Labels
-
-.label-variant(@color) {
- background-color: @color;
-
- &[href] {
- &:hover,
- &:focus {
- background-color: darken(@color, 10%);
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/list-group.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/list-group.less
deleted file mode 100644
index 03aa19069..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/list-group.less
+++ /dev/null
@@ -1,30 +0,0 @@
-// List Groups
-
-.list-group-item-variant(@state; @background; @color) {
- .list-group-item-@{state} {
- color: @color;
- background-color: @background;
-
- a&,
- button& {
- color: @color;
-
- .list-group-item-heading {
- color: inherit;
- }
-
- &:hover,
- &:focus {
- color: @color;
- background-color: darken(@background, 5%);
- }
- &.active,
- &.active:hover,
- &.active:focus {
- color: #fff;
- background-color: @color;
- border-color: @color;
- }
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-divider.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-divider.less
deleted file mode 100644
index feb1e9ed0..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-divider.less
+++ /dev/null
@@ -1,10 +0,0 @@
-// Horizontal dividers
-//
-// Dividers (basically an hr) within dropdowns and nav lists
-
-.nav-divider(@color: #e5e5e5) {
- height: 1px;
- margin: ((@line-height-computed / 2) - 1) 0;
- overflow: hidden;
- background-color: @color;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-vertical-align.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-vertical-align.less
deleted file mode 100644
index d458c7861..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/nav-vertical-align.less
+++ /dev/null
@@ -1,9 +0,0 @@
-// Navbar vertical align
-//
-// Vertically center elements in the navbar.
-// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
-
-.navbar-vertical-align(@element-height) {
- margin-top: ((@navbar-height - @element-height) / 2);
- margin-bottom: ((@navbar-height - @element-height) / 2);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/opacity.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/opacity.less
deleted file mode 100644
index 33ed25ce6..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/opacity.less
+++ /dev/null
@@ -1,8 +0,0 @@
-// Opacity
-
-.opacity(@opacity) {
- opacity: @opacity;
- // IE8 filter
- @opacity-ie: (@opacity * 100);
- filter: ~"alpha(opacity=@{opacity-ie})";
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/pagination.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/pagination.less
deleted file mode 100644
index 618804f2d..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/pagination.less
+++ /dev/null
@@ -1,24 +0,0 @@
-// Pagination
-
-.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
- > li {
- > a,
- > span {
- padding: @padding-vertical @padding-horizontal;
- font-size: @font-size;
- line-height: @line-height;
- }
- &:first-child {
- > a,
- > span {
- .border-left-radius(@border-radius);
- }
- }
- &:last-child {
- > a,
- > span {
- .border-right-radius(@border-radius);
- }
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/panels.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/panels.less
deleted file mode 100644
index 49ee10d4a..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/panels.less
+++ /dev/null
@@ -1,24 +0,0 @@
-// Panels
-
-.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
- border-color: @border;
-
- & > .panel-heading {
- color: @heading-text-color;
- background-color: @heading-bg-color;
- border-color: @heading-border;
-
- + .panel-collapse > .panel-body {
- border-top-color: @border;
- }
- .badge {
- color: @heading-bg-color;
- background-color: @heading-text-color;
- }
- }
- & > .panel-footer {
- + .panel-collapse > .panel-body {
- border-bottom-color: @border;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/progress-bar.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/progress-bar.less
deleted file mode 100644
index f07996a34..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/progress-bar.less
+++ /dev/null
@@ -1,10 +0,0 @@
-// Progress bars
-
-.progress-bar-variant(@color) {
- background-color: @color;
-
- // Deprecated parent class requirement as of v3.2.0
- .progress-striped & {
- #gradient > .striped();
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-filter.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-filter.less
deleted file mode 100644
index 68cdb5e18..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-filter.less
+++ /dev/null
@@ -1,8 +0,0 @@
-// Reset filters for IE
-//
-// When you need to remove a gradient background, do not forget to use this to reset
-// the IE filter for IE9 and below.
-
-.reset-filter() {
- filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-text.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-text.less
deleted file mode 100644
index 58dd4d19b..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/reset-text.less
+++ /dev/null
@@ -1,18 +0,0 @@
-.reset-text() {
- font-family: @font-family-base;
- // We deliberately do NOT reset font-size.
- font-style: normal;
- font-weight: normal;
- letter-spacing: normal;
- line-break: auto;
- line-height: @line-height-base;
- text-align: left; // Fallback for where `start` is not supported
- text-align: start;
- text-decoration: none;
- text-shadow: none;
- text-transform: none;
- white-space: normal;
- word-break: normal;
- word-spacing: normal;
- word-wrap: normal;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/resize.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/resize.less
deleted file mode 100644
index 3acd3afdb..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/resize.less
+++ /dev/null
@@ -1,6 +0,0 @@
-// Resize anything
-
-.resizable(@direction) {
- resize: @direction; // Options: horizontal, vertical, both
- overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/responsive-visibility.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/responsive-visibility.less
deleted file mode 100644
index ecf1e979f..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/responsive-visibility.less
+++ /dev/null
@@ -1,15 +0,0 @@
-// Responsive utilities
-
-//
-// More easily include all the states for responsive-utilities.less.
-.responsive-visibility() {
- display: block !important;
- table& { display: table !important; }
- tr& { display: table-row !important; }
- th&,
- td& { display: table-cell !important; }
-}
-
-.responsive-invisibility() {
- display: none !important;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/size.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/size.less
deleted file mode 100644
index a8be65089..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/size.less
+++ /dev/null
@@ -1,10 +0,0 @@
-// Sizing shortcuts
-
-.size(@width; @height) {
- width: @width;
- height: @height;
-}
-
-.square(@size) {
- .size(@size; @size);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/tab-focus.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/tab-focus.less
deleted file mode 100644
index 1f1f05ab0..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/tab-focus.less
+++ /dev/null
@@ -1,9 +0,0 @@
-// WebKit-style focus
-
-.tab-focus() {
- // Default
- outline: thin dotted;
- // WebKit
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/table-row.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/table-row.less
deleted file mode 100644
index 0f287f1a8..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/table-row.less
+++ /dev/null
@@ -1,28 +0,0 @@
-// Tables
-
-.table-row-variant(@state; @background) {
- // Exact selectors below required to override `.table-striped` and prevent
- // inheritance to nested tables.
- .table > thead > tr,
- .table > tbody > tr,
- .table > tfoot > tr {
- > td.@{state},
- > th.@{state},
- &.@{state} > td,
- &.@{state} > th {
- background-color: @background;
- }
- }
-
- // Hover states for `.table-hover`
- // Note: this is not available for cells or rows within `thead` or `tfoot`.
- .table-hover > tbody > tr {
- > td.@{state}:hover,
- > th.@{state}:hover,
- &.@{state}:hover > td,
- &:hover > .@{state},
- &.@{state}:hover > th {
- background-color: darken(@background, 5%);
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-emphasis.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-emphasis.less
deleted file mode 100644
index 9e8a77a69..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-emphasis.less
+++ /dev/null
@@ -1,9 +0,0 @@
-// Typography
-
-.text-emphasis-variant(@color) {
- color: @color;
- a&:hover,
- a&:focus {
- color: darken(@color, 10%);
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-overflow.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-overflow.less
deleted file mode 100644
index c11ad2fb7..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/text-overflow.less
+++ /dev/null
@@ -1,8 +0,0 @@
-// Text overflow
-// Requires inline-block or block for proper styling
-
-.text-overflow() {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/vendor-prefixes.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/vendor-prefixes.less
deleted file mode 100644
index afd3331c3..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/mixins/vendor-prefixes.less
+++ /dev/null
@@ -1,227 +0,0 @@
-// Vendor Prefixes
-//
-// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
-// Autoprefixer in our Gruntfile. They will be removed in v4.
-
-// - Animations
-// - Backface visibility
-// - Box shadow
-// - Box sizing
-// - Content columns
-// - Hyphens
-// - Placeholder text
-// - Transformations
-// - Transitions
-// - User Select
-
-
-// Animations
-.animation(@animation) {
- -webkit-animation: @animation;
- -o-animation: @animation;
- animation: @animation;
-}
-.animation-name(@name) {
- -webkit-animation-name: @name;
- animation-name: @name;
-}
-.animation-duration(@duration) {
- -webkit-animation-duration: @duration;
- animation-duration: @duration;
-}
-.animation-timing-function(@timing-function) {
- -webkit-animation-timing-function: @timing-function;
- animation-timing-function: @timing-function;
-}
-.animation-delay(@delay) {
- -webkit-animation-delay: @delay;
- animation-delay: @delay;
-}
-.animation-iteration-count(@iteration-count) {
- -webkit-animation-iteration-count: @iteration-count;
- animation-iteration-count: @iteration-count;
-}
-.animation-direction(@direction) {
- -webkit-animation-direction: @direction;
- animation-direction: @direction;
-}
-.animation-fill-mode(@fill-mode) {
- -webkit-animation-fill-mode: @fill-mode;
- animation-fill-mode: @fill-mode;
-}
-
-// Backface visibility
-// Prevent browsers from flickering when using CSS 3D transforms.
-// Default value is `visible`, but can be changed to `hidden`
-
-.backface-visibility(@visibility){
- -webkit-backface-visibility: @visibility;
- -moz-backface-visibility: @visibility;
- backface-visibility: @visibility;
-}
-
-// Drop shadows
-//
-// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
-// supported browsers that have box shadow capabilities now support it.
-
-.box-shadow(@shadow) {
- -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
- box-shadow: @shadow;
-}
-
-// Box sizing
-.box-sizing(@boxmodel) {
- -webkit-box-sizing: @boxmodel;
- -moz-box-sizing: @boxmodel;
- box-sizing: @boxmodel;
-}
-
-// CSS3 Content Columns
-.content-columns(@column-count; @column-gap: @grid-gutter-width) {
- -webkit-column-count: @column-count;
- -moz-column-count: @column-count;
- column-count: @column-count;
- -webkit-column-gap: @column-gap;
- -moz-column-gap: @column-gap;
- column-gap: @column-gap;
-}
-
-// Optional hyphenation
-.hyphens(@mode: auto) {
- word-wrap: break-word;
- -webkit-hyphens: @mode;
- -moz-hyphens: @mode;
- -ms-hyphens: @mode; // IE10+
- -o-hyphens: @mode;
- hyphens: @mode;
-}
-
-// Placeholder text
-.placeholder(@color: @input-color-placeholder) {
- // Firefox
- &::-moz-placeholder {
- color: @color;
- opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
- }
- &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
- &::-webkit-input-placeholder { color: @color; } // Safari and Chrome
-}
-
-// Transformations
-.scale(@ratio) {
- -webkit-transform: scale(@ratio);
- -ms-transform: scale(@ratio); // IE9 only
- -o-transform: scale(@ratio);
- transform: scale(@ratio);
-}
-.scale(@ratioX; @ratioY) {
- -webkit-transform: scale(@ratioX, @ratioY);
- -ms-transform: scale(@ratioX, @ratioY); // IE9 only
- -o-transform: scale(@ratioX, @ratioY);
- transform: scale(@ratioX, @ratioY);
-}
-.scaleX(@ratio) {
- -webkit-transform: scaleX(@ratio);
- -ms-transform: scaleX(@ratio); // IE9 only
- -o-transform: scaleX(@ratio);
- transform: scaleX(@ratio);
-}
-.scaleY(@ratio) {
- -webkit-transform: scaleY(@ratio);
- -ms-transform: scaleY(@ratio); // IE9 only
- -o-transform: scaleY(@ratio);
- transform: scaleY(@ratio);
-}
-.skew(@x; @y) {
- -webkit-transform: skewX(@x) skewY(@y);
- -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
- -o-transform: skewX(@x) skewY(@y);
- transform: skewX(@x) skewY(@y);
-}
-.translate(@x; @y) {
- -webkit-transform: translate(@x, @y);
- -ms-transform: translate(@x, @y); // IE9 only
- -o-transform: translate(@x, @y);
- transform: translate(@x, @y);
-}
-.translate3d(@x; @y; @z) {
- -webkit-transform: translate3d(@x, @y, @z);
- transform: translate3d(@x, @y, @z);
-}
-.rotate(@degrees) {
- -webkit-transform: rotate(@degrees);
- -ms-transform: rotate(@degrees); // IE9 only
- -o-transform: rotate(@degrees);
- transform: rotate(@degrees);
-}
-.rotateX(@degrees) {
- -webkit-transform: rotateX(@degrees);
- -ms-transform: rotateX(@degrees); // IE9 only
- -o-transform: rotateX(@degrees);
- transform: rotateX(@degrees);
-}
-.rotateY(@degrees) {
- -webkit-transform: rotateY(@degrees);
- -ms-transform: rotateY(@degrees); // IE9 only
- -o-transform: rotateY(@degrees);
- transform: rotateY(@degrees);
-}
-.perspective(@perspective) {
- -webkit-perspective: @perspective;
- -moz-perspective: @perspective;
- perspective: @perspective;
-}
-.perspective-origin(@perspective) {
- -webkit-perspective-origin: @perspective;
- -moz-perspective-origin: @perspective;
- perspective-origin: @perspective;
-}
-.transform-origin(@origin) {
- -webkit-transform-origin: @origin;
- -moz-transform-origin: @origin;
- -ms-transform-origin: @origin; // IE9 only
- transform-origin: @origin;
-}
-
-
-// Transitions
-
-.transition(@transition) {
- -webkit-transition: @transition;
- -o-transition: @transition;
- transition: @transition;
-}
-.transition-property(@transition-property) {
- -webkit-transition-property: @transition-property;
- transition-property: @transition-property;
-}
-.transition-delay(@transition-delay) {
- -webkit-transition-delay: @transition-delay;
- transition-delay: @transition-delay;
-}
-.transition-duration(@transition-duration) {
- -webkit-transition-duration: @transition-duration;
- transition-duration: @transition-duration;
-}
-.transition-timing-function(@timing-function) {
- -webkit-transition-timing-function: @timing-function;
- transition-timing-function: @timing-function;
-}
-.transition-transform(@transition) {
- -webkit-transition: -webkit-transform @transition;
- -moz-transition: -moz-transform @transition;
- -o-transition: -o-transform @transition;
- transition: transform @transition;
-}
-
-
-// User select
-// For selecting text on the page
-
-.user-select(@select) {
- -webkit-user-select: @select;
- -moz-user-select: @select;
- -ms-user-select: @select; // IE10+
- user-select: @select;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/modals.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/modals.less
deleted file mode 100644
index 1de622050..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/modals.less
+++ /dev/null
@@ -1,150 +0,0 @@
-//
-// Modals
-// --------------------------------------------------
-
-// .modal-open - body class for killing the scroll
-// .modal - container to scroll within
-// .modal-dialog - positioning shell for the actual modal
-// .modal-content - actual modal w/ bg and corners and shit
-
-// Kill the scroll on the body
-.modal-open {
- overflow: hidden;
-}
-
-// Container that the modal scrolls within
-.modal {
- display: none;
- overflow: hidden;
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: @zindex-modal;
- -webkit-overflow-scrolling: touch;
-
- // Prevent Chrome on Windows from adding a focus outline. For details, see
- // https://github.com/twbs/bootstrap/pull/10951.
- outline: 0;
-
- // When fading in the modal, animate it to slide down
- &.fade .modal-dialog {
- .translate(0, -25%);
- .transition-transform(~"0.3s ease-out");
- }
- &.in .modal-dialog { .translate(0, 0) }
-}
-.modal-open .modal {
- overflow-x: hidden;
- overflow-y: auto;
-}
-
-// Shell div to position the modal with bottom padding
-.modal-dialog {
- position: relative;
- width: auto;
- margin: 10px;
-}
-
-// Actual modal
-.modal-content {
- position: relative;
- background-color: @modal-content-bg;
- border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
- border: 1px solid @modal-content-border-color;
- border-radius: @border-radius-large;
- .box-shadow(0 3px 9px rgba(0,0,0,.5));
- background-clip: padding-box;
- // Remove focus outline from opened modal
- outline: 0;
-}
-
-// Modal background
-.modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: @zindex-modal-background;
- background-color: @modal-backdrop-bg;
- // Fade for backdrop
- &.fade { .opacity(0); }
- &.in { .opacity(@modal-backdrop-opacity); }
-}
-
-// Modal header
-// Top section of the modal w/ title and dismiss
-.modal-header {
- padding: @modal-title-padding;
- border-bottom: 1px solid @modal-header-border-color;
- min-height: (@modal-title-padding + @modal-title-line-height);
-}
-// Close icon
-.modal-header .close {
- margin-top: -2px;
-}
-
-// Title text within header
-.modal-title {
- margin: 0;
- line-height: @modal-title-line-height;
-}
-
-// Modal body
-// Where all modal content resides (sibling of .modal-header and .modal-footer)
-.modal-body {
- position: relative;
- padding: @modal-inner-padding;
-}
-
-// Footer (for actions)
-.modal-footer {
- padding: @modal-inner-padding;
- text-align: right; // right align buttons
- border-top: 1px solid @modal-footer-border-color;
- &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
-
- // Properly space out buttons
- .btn + .btn {
- margin-left: 5px;
- margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
- }
- // but override that for button groups
- .btn-group .btn + .btn {
- margin-left: -1px;
- }
- // and override it for block buttons as well
- .btn-block + .btn-block {
- margin-left: 0;
- }
-}
-
-// Measure scrollbar width for padding body during modal show/hide
-.modal-scrollbar-measure {
- position: absolute;
- top: -9999px;
- width: 50px;
- height: 50px;
- overflow: scroll;
-}
-
-// Scale up the modal
-@media (min-width: @screen-sm-min) {
- // Automatically set modal's width for larger viewports
- .modal-dialog {
- width: @modal-md;
- margin: 30px auto;
- }
- .modal-content {
- .box-shadow(0 5px 15px rgba(0,0,0,.5));
- }
-
- // Modal sizes
- .modal-sm { width: @modal-sm; }
-}
-
-@media (min-width: @screen-md-min) {
- .modal-lg { width: @modal-lg; }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/navbar.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/navbar.less
deleted file mode 100644
index 6d751bb9c..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/navbar.less
+++ /dev/null
@@ -1,660 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
- position: relative;
- min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
- margin-bottom: @navbar-margin-bottom;
- border: 1px solid transparent;
-
- // Prevent floats from breaking the navbar
- &:extend(.clearfix all);
-
- @media (min-width: @grid-float-breakpoint) {
- border-radius: @navbar-border-radius;
- }
-}
-
-
-// Navbar heading
-//
-// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
-// styling of responsive aspects.
-
-.navbar-header {
- &:extend(.clearfix all);
-
- @media (min-width: @grid-float-breakpoint) {
- float: left;
- }
-}
-
-
-// Navbar collapse (body)
-//
-// Group your navbar content into this for easy collapsing and expanding across
-// various device sizes. By default, this content is collapsed when <768px, but
-// will expand past that for a horizontal display.
-//
-// To start (on mobile devices) the navbar links, forms, and buttons are stacked
-// vertically and include a `max-height` to overflow in case you have too much
-// content for the user's viewport.
-
-.navbar-collapse {
- overflow-x: visible;
- padding-right: @navbar-padding-horizontal;
- padding-left: @navbar-padding-horizontal;
- border-top: 1px solid transparent;
- box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
- &:extend(.clearfix all);
- -webkit-overflow-scrolling: touch;
-
- &.in {
- overflow-y: auto;
- }
-
- @media (min-width: @grid-float-breakpoint) {
- width: auto;
- border-top: 0;
- box-shadow: none;
-
- &.collapse {
- display: block !important;
- height: auto !important;
- padding-bottom: 0; // Override default setting
- overflow: visible !important;
- }
-
- &.in {
- overflow-y: visible;
- }
-
- // Undo the collapse side padding for navbars with containers to ensure
- // alignment of right-aligned contents.
- .navbar-fixed-top &,
- .navbar-static-top &,
- .navbar-fixed-bottom & {
- padding-left: 0;
- padding-right: 0;
- }
- }
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- .navbar-collapse {
- max-height: @navbar-collapse-max-height;
-
- @media (max-device-width: @screen-xs-min) and (orientation: landscape) {
- max-height: 200px;
- }
- }
-}
-
-
-// Both navbar header and collapse
-//
-// When a container is present, change the behavior of the header and collapse.
-
-.container,
-.container-fluid {
- > .navbar-header,
- > .navbar-collapse {
- margin-right: -@navbar-padding-horizontal;
- margin-left: -@navbar-padding-horizontal;
-
- @media (min-width: @grid-float-breakpoint) {
- margin-right: 0;
- margin-left: 0;
- }
- }
-}
-
-
-//
-// Navbar alignment options
-//
-// Display the navbar across the entirety of the page or fixed it to the top or
-// bottom of the page.
-
-// Static top (unfixed, but 100% wide) navbar
-.navbar-static-top {
- z-index: @zindex-navbar;
- border-width: 0 0 1px;
-
- @media (min-width: @grid-float-breakpoint) {
- border-radius: 0;
- }
-}
-
-// Fix the top/bottom navbars when screen real estate supports it
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- position: fixed;
- right: 0;
- left: 0;
- z-index: @zindex-navbar-fixed;
-
- // Undo the rounded corners
- @media (min-width: @grid-float-breakpoint) {
- border-radius: 0;
- }
-}
-.navbar-fixed-top {
- top: 0;
- border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
- bottom: 0;
- margin-bottom: 0; // override .navbar defaults
- border-width: 1px 0 0;
-}
-
-
-// Brand/project name
-
-.navbar-brand {
- float: left;
- padding: @navbar-padding-vertical @navbar-padding-horizontal;
- font-size: @font-size-large;
- line-height: @line-height-computed;
- height: @navbar-height;
-
- &:hover,
- &:focus {
- text-decoration: none;
- }
-
- > img {
- display: block;
- }
-
- @media (min-width: @grid-float-breakpoint) {
- .navbar > .container &,
- .navbar > .container-fluid & {
- margin-left: -@navbar-padding-horizontal;
- }
- }
-}
-
-
-// Navbar toggle
-//
-// Custom button for toggling the `.navbar-collapse`, powered by the collapse
-// JavaScript plugin.
-
-.navbar-toggle {
- position: relative;
- float: right;
- margin-right: @navbar-padding-horizontal;
- padding: 9px 10px;
- .navbar-vertical-align(34px);
- background-color: transparent;
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
- border: 1px solid transparent;
- border-radius: @border-radius-base;
-
- // We remove the `outline` here, but later compensate by attaching `:hover`
- // styles to `:focus`.
- &:focus {
- outline: 0;
- }
-
- // Bars
- .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- border-radius: 1px;
- }
- .icon-bar + .icon-bar {
- margin-top: 4px;
- }
-
- @media (min-width: @grid-float-breakpoint) {
- display: none;
- }
-}
-
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with its own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
- margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;
-
- > li > a {
- padding-top: 10px;
- padding-bottom: 10px;
- line-height: @line-height-computed;
- }
-
- @media (max-width: @grid-float-breakpoint-max) {
- // Dropdowns get custom display when collapsed
- .open .dropdown-menu {
- position: static;
- float: none;
- width: auto;
- margin-top: 0;
- background-color: transparent;
- border: 0;
- box-shadow: none;
- > li > a,
- .dropdown-header {
- padding: 5px 15px 5px 25px;
- }
- > li > a {
- line-height: @line-height-computed;
- &:hover,
- &:focus {
- background-image: none;
- }
- }
- }
- }
-
- // Uncollapse the nav
- @media (min-width: @grid-float-breakpoint) {
- float: left;
- margin: 0;
-
- > li {
- float: left;
- > a {
- padding-top: @navbar-padding-vertical;
- padding-bottom: @navbar-padding-vertical;
- }
- }
- }
-}
-
-
-// Navbar form
-//
-// Extension of the `.form-inline` with some extra flavor for optimum display in
-// our navbars.
-
-.navbar-form {
- margin-left: -@navbar-padding-horizontal;
- margin-right: -@navbar-padding-horizontal;
- padding: 10px @navbar-padding-horizontal;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
- @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
- .box-shadow(@shadow);
-
- // Mixin behavior for optimum display
- .form-inline();
-
- .form-group {
- @media (max-width: @grid-float-breakpoint-max) {
- margin-bottom: 5px;
-
- &:last-child {
- margin-bottom: 0;
- }
- }
- }
-
- // Vertically center in expanded, horizontal navbar
- .navbar-vertical-align(@input-height-base);
-
- // Undo 100% width for pull classes
- @media (min-width: @grid-float-breakpoint) {
- width: auto;
- border: 0;
- margin-left: 0;
- margin-right: 0;
- padding-top: 0;
- padding-bottom: 0;
- .box-shadow(none);
- }
-}
-
-
-// Dropdown menus
-
-// Menu position and menu carets
-.navbar-nav > li > .dropdown-menu {
- margin-top: 0;
- .border-top-radius(0);
-}
-// Menu position and menu caret support for dropups via extra dropup class
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
- margin-bottom: 0;
- .border-top-radius(@navbar-border-radius);
- .border-bottom-radius(0);
-}
-
-
-// Buttons in navbars
-//
-// Vertically center a button within a navbar (when *not* in a form).
-
-.navbar-btn {
- .navbar-vertical-align(@input-height-base);
-
- &.btn-sm {
- .navbar-vertical-align(@input-height-small);
- }
- &.btn-xs {
- .navbar-vertical-align(22);
- }
-}
-
-
-// Text in navbars
-//
-// Add a class to make any element properly align itself vertically within the navbars.
-
-.navbar-text {
- .navbar-vertical-align(@line-height-computed);
-
- @media (min-width: @grid-float-breakpoint) {
- float: left;
- margin-left: @navbar-padding-horizontal;
- margin-right: @navbar-padding-horizontal;
- }
-}
-
-
-// Component alignment
-//
-// Repurpose the pull utilities as their own navbar utilities to avoid specificity
-// issues with parents and chaining. Only do this when the navbar is uncollapsed
-// though so that navbar contents properly stack and align in mobile.
-//
-// Declared after the navbar components to ensure more specificity on the margins.
-
-@media (min-width: @grid-float-breakpoint) {
- .navbar-left { .pull-left(); }
- .navbar-right {
- .pull-right();
- margin-right: -@navbar-padding-horizontal;
-
- ~ .navbar-right {
- margin-right: 0;
- }
- }
-}
-
-
-// Alternate navbars
-// --------------------------------------------------
-
-// Default navbar
-.navbar-default {
- background-color: @navbar-default-bg;
- border-color: @navbar-default-border;
-
- .navbar-brand {
- color: @navbar-default-brand-color;
- &:hover,
- &:focus {
- color: @navbar-default-brand-hover-color;
- background-color: @navbar-default-brand-hover-bg;
- }
- }
-
- .navbar-text {
- color: @navbar-default-color;
- }
-
- .navbar-nav {
- > li > a {
- color: @navbar-default-link-color;
-
- &:hover,
- &:focus {
- color: @navbar-default-link-hover-color;
- background-color: @navbar-default-link-hover-bg;
- }
- }
- > .active > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-default-link-active-color;
- background-color: @navbar-default-link-active-bg;
- }
- }
- > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-default-link-disabled-color;
- background-color: @navbar-default-link-disabled-bg;
- }
- }
- }
-
- .navbar-toggle {
- border-color: @navbar-default-toggle-border-color;
- &:hover,
- &:focus {
- background-color: @navbar-default-toggle-hover-bg;
- }
- .icon-bar {
- background-color: @navbar-default-toggle-icon-bar-bg;
- }
- }
-
- .navbar-collapse,
- .navbar-form {
- border-color: @navbar-default-border;
- }
-
- // Dropdown menu items
- .navbar-nav {
- // Remove background color from open dropdown
- > .open > a {
- &,
- &:hover,
- &:focus {
- background-color: @navbar-default-link-active-bg;
- color: @navbar-default-link-active-color;
- }
- }
-
- @media (max-width: @grid-float-breakpoint-max) {
- // Dropdowns get custom display when collapsed
- .open .dropdown-menu {
- > li > a {
- color: @navbar-default-link-color;
- &:hover,
- &:focus {
- color: @navbar-default-link-hover-color;
- background-color: @navbar-default-link-hover-bg;
- }
- }
- > .active > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-default-link-active-color;
- background-color: @navbar-default-link-active-bg;
- }
- }
- > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-default-link-disabled-color;
- background-color: @navbar-default-link-disabled-bg;
- }
- }
- }
- }
- }
-
-
- // Links in navbars
- //
- // Add a class to ensure links outside the navbar nav are colored correctly.
-
- .navbar-link {
- color: @navbar-default-link-color;
- &:hover {
- color: @navbar-default-link-hover-color;
- }
- }
-
- .btn-link {
- color: @navbar-default-link-color;
- &:hover,
- &:focus {
- color: @navbar-default-link-hover-color;
- }
- &[disabled],
- fieldset[disabled] & {
- &:hover,
- &:focus {
- color: @navbar-default-link-disabled-color;
- }
- }
- }
-}
-
-// Inverse navbar
-
-.navbar-inverse {
- background-color: @navbar-inverse-bg;
- border-color: @navbar-inverse-border;
-
- .navbar-brand {
- color: @navbar-inverse-brand-color;
- &:hover,
- &:focus {
- color: @navbar-inverse-brand-hover-color;
- background-color: @navbar-inverse-brand-hover-bg;
- }
- }
-
- .navbar-text {
- color: @navbar-inverse-color;
- }
-
- .navbar-nav {
- > li > a {
- color: @navbar-inverse-link-color;
-
- &:hover,
- &:focus {
- color: @navbar-inverse-link-hover-color;
- background-color: @navbar-inverse-link-hover-bg;
- }
- }
- > .active > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-active-color;
- background-color: @navbar-inverse-link-active-bg;
- }
- }
- > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-disabled-color;
- background-color: @navbar-inverse-link-disabled-bg;
- }
- }
- }
-
- // Darken the responsive nav toggle
- .navbar-toggle {
- border-color: @navbar-inverse-toggle-border-color;
- &:hover,
- &:focus {
- background-color: @navbar-inverse-toggle-hover-bg;
- }
- .icon-bar {
- background-color: @navbar-inverse-toggle-icon-bar-bg;
- }
- }
-
- .navbar-collapse,
- .navbar-form {
- border-color: darken(@navbar-inverse-bg, 7%);
- }
-
- // Dropdowns
- .navbar-nav {
- > .open > a {
- &,
- &:hover,
- &:focus {
- background-color: @navbar-inverse-link-active-bg;
- color: @navbar-inverse-link-active-color;
- }
- }
-
- @media (max-width: @grid-float-breakpoint-max) {
- // Dropdowns get custom display
- .open .dropdown-menu {
- > .dropdown-header {
- border-color: @navbar-inverse-border;
- }
- .divider {
- background-color: @navbar-inverse-border;
- }
- > li > a {
- color: @navbar-inverse-link-color;
- &:hover,
- &:focus {
- color: @navbar-inverse-link-hover-color;
- background-color: @navbar-inverse-link-hover-bg;
- }
- }
- > .active > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-active-color;
- background-color: @navbar-inverse-link-active-bg;
- }
- }
- > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-disabled-color;
- background-color: @navbar-inverse-link-disabled-bg;
- }
- }
- }
- }
- }
-
- .navbar-link {
- color: @navbar-inverse-link-color;
- &:hover {
- color: @navbar-inverse-link-hover-color;
- }
- }
-
- .btn-link {
- color: @navbar-inverse-link-color;
- &:hover,
- &:focus {
- color: @navbar-inverse-link-hover-color;
- }
- &[disabled],
- fieldset[disabled] & {
- &:hover,
- &:focus {
- color: @navbar-inverse-link-disabled-color;
- }
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/navs.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/navs.less
deleted file mode 100644
index a3d11b136..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/navs.less
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-// Navs
-// --------------------------------------------------
-
-
-// Base class
-// --------------------------------------------------
-
-.nav {
- margin-bottom: 0;
- padding-left: 0; // Override default ul/ol
- list-style: none;
- &:extend(.clearfix all);
-
- > li {
- position: relative;
- display: block;
-
- > a {
- position: relative;
- display: block;
- padding: @nav-link-padding;
- &:hover,
- &:focus {
- text-decoration: none;
- background-color: @nav-link-hover-bg;
- }
- }
-
- // Disabled state sets text to gray and nukes hover/tab effects
- &.disabled > a {
- color: @nav-disabled-link-color;
-
- &:hover,
- &:focus {
- color: @nav-disabled-link-hover-color;
- text-decoration: none;
- background-color: transparent;
- cursor: @cursor-disabled;
- }
- }
- }
-
- // Open dropdowns
- .open > a {
- &,
- &:hover,
- &:focus {
- background-color: @nav-link-hover-bg;
- border-color: @link-color;
- }
- }
-
- // Nav dividers (deprecated with v3.0.1)
- //
- // This should have been removed in v3 with the dropping of `.nav-list`, but
- // we missed it. We don't currently support this anywhere, but in the interest
- // of maintaining backward compatibility in case you use it, it's deprecated.
- .nav-divider {
- .nav-divider();
- }
-
- // Prevent IE8 from misplacing imgs
- //
- // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
- > li > a > img {
- max-width: none;
- }
-}
-
-
-// Tabs
-// -------------------------
-
-// Give the tabs something to sit on
-.nav-tabs {
- border-bottom: 1px solid @nav-tabs-border-color;
- > li {
- float: left;
- // Make the list-items overlay the bottom border
- margin-bottom: -1px;
-
- // Actual tabs (as links)
- > a {
- margin-right: 2px;
- line-height: @line-height-base;
- border: 1px solid transparent;
- border-radius: @border-radius-base @border-radius-base 0 0;
- &:hover {
- border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;
- }
- }
-
- // Active state, and its :hover to override normal :hover
- &.active > a {
- &,
- &:hover,
- &:focus {
- color: @nav-tabs-active-link-hover-color;
- background-color: @nav-tabs-active-link-hover-bg;
- border: 1px solid @nav-tabs-active-link-hover-border-color;
- border-bottom-color: transparent;
- cursor: default;
- }
- }
- }
- // pulling this in mainly for less shorthand
- &.nav-justified {
- .nav-justified();
- .nav-tabs-justified();
- }
-}
-
-
-// Pills
-// -------------------------
-.nav-pills {
- > li {
- float: left;
-
- // Links rendered as pills
- > a {
- border-radius: @nav-pills-border-radius;
- }
- + li {
- margin-left: 2px;
- }
-
- // Active state
- &.active > a {
- &,
- &:hover,
- &:focus {
- color: @nav-pills-active-link-hover-color;
- background-color: @nav-pills-active-link-hover-bg;
- }
- }
- }
-}
-
-
-// Stacked pills
-.nav-stacked {
- > li {
- float: none;
- + li {
- margin-top: 2px;
- margin-left: 0; // no need for this gap between nav items
- }
- }
-}
-
-
-// Nav variations
-// --------------------------------------------------
-
-// Justified nav links
-// -------------------------
-
-.nav-justified {
- width: 100%;
-
- > li {
- float: none;
- > a {
- text-align: center;
- margin-bottom: 5px;
- }
- }
-
- > .dropdown .dropdown-menu {
- top: auto;
- left: auto;
- }
-
- @media (min-width: @screen-sm-min) {
- > li {
- display: table-cell;
- width: 1%;
- > a {
- margin-bottom: 0;
- }
- }
- }
-}
-
-// Move borders to anchors instead of bottom of list
-//
-// Mixin for adding on top the shared `.nav-justified` styles for our tabs
-.nav-tabs-justified {
- border-bottom: 0;
-
- > li > a {
- // Override margin from .nav-tabs
- margin-right: 0;
- border-radius: @border-radius-base;
- }
-
- > .active > a,
- > .active > a:hover,
- > .active > a:focus {
- border: 1px solid @nav-tabs-justified-link-border-color;
- }
-
- @media (min-width: @screen-sm-min) {
- > li > a {
- border-bottom: 1px solid @nav-tabs-justified-link-border-color;
- border-radius: @border-radius-base @border-radius-base 0 0;
- }
- > .active > a,
- > .active > a:hover,
- > .active > a:focus {
- border-bottom-color: @nav-tabs-justified-active-link-border-color;
- }
- }
-}
-
-
-// Tabbable tabs
-// -------------------------
-
-// Hide tabbable panes to start, show them when `.active`
-.tab-content {
- > .tab-pane {
- display: none;
- }
- > .active {
- display: block;
- }
-}
-
-
-// Dropdowns
-// -------------------------
-
-// Specific dropdowns
-.nav-tabs .dropdown-menu {
- // make dropdown border overlap tab border
- margin-top: -1px;
- // Remove the top rounded corners here since there is a hard edge above the menu
- .border-top-radius(0);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/normalize.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/normalize.less
deleted file mode 100644
index 9dddf73ad..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/normalize.less
+++ /dev/null
@@ -1,424 +0,0 @@
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-
-//
-// 1. Set default font family to sans-serif.
-// 2. Prevent iOS and IE text size adjust after device orientation change,
-// without disabling user zoom.
-//
-
-html {
- font-family: sans-serif; // 1
- -ms-text-size-adjust: 100%; // 2
- -webkit-text-size-adjust: 100%; // 2
-}
-
-//
-// Remove default margin.
-//
-
-body {
- margin: 0;
-}
-
-// HTML5 display definitions
-// ==========================================================================
-
-//
-// Correct `block` display not defined for any HTML5 element in IE 8/9.
-// Correct `block` display not defined for `details` or `summary` in IE 10/11
-// and Firefox.
-// Correct `block` display not defined for `main` in IE 11.
-//
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-
-//
-// 1. Correct `inline-block` display not defined in IE 8/9.
-// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
-//
-
-audio,
-canvas,
-progress,
-video {
- display: inline-block; // 1
- vertical-align: baseline; // 2
-}
-
-//
-// Prevent modern browsers from displaying `audio` without controls.
-// Remove excess height in iOS 5 devices.
-//
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-//
-// Address `[hidden]` styling not present in IE 8/9/10.
-// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
-//
-
-[hidden],
-template {
- display: none;
-}
-
-// Links
-// ==========================================================================
-
-//
-// Remove the gray background color from active links in IE 10.
-//
-
-a {
- background-color: transparent;
-}
-
-//
-// Improve readability of focused elements when they are also in an
-// active/hover state.
-//
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-// Text-level semantics
-// ==========================================================================
-
-//
-// Address styling not present in IE 8/9/10/11, Safari, and Chrome.
-//
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-//
-// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
-//
-
-b,
-strong {
- font-weight: bold;
-}
-
-//
-// Address styling not present in Safari and Chrome.
-//
-
-dfn {
- font-style: italic;
-}
-
-//
-// Address variable `h1` font-size and margin within `section` and `article`
-// contexts in Firefox 4+, Safari, and Chrome.
-//
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-//
-// Address styling not present in IE 8/9.
-//
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-//
-// Address inconsistent and variable font size in all browsers.
-//
-
-small {
- font-size: 80%;
-}
-
-//
-// Prevent `sub` and `sup` affecting `line-height` in all browsers.
-//
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-// Embedded content
-// ==========================================================================
-
-//
-// Remove border when inside `a` element in IE 8/9/10.
-//
-
-img {
- border: 0;
-}
-
-//
-// Correct overflow not hidden in IE 9/10/11.
-//
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-// Grouping content
-// ==========================================================================
-
-//
-// Address margin not present in IE 8/9 and Safari.
-//
-
-figure {
- margin: 1em 40px;
-}
-
-//
-// Address differences between Firefox and other browsers.
-//
-
-hr {
- box-sizing: content-box;
- height: 0;
-}
-
-//
-// Contain overflow in all browsers.
-//
-
-pre {
- overflow: auto;
-}
-
-//
-// Address odd `em`-unit font size rendering in all browsers.
-//
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-
-// Forms
-// ==========================================================================
-
-//
-// Known limitation: by default, Chrome and Safari on OS X allow very limited
-// styling of `select`, unless a `border` property is set.
-//
-
-//
-// 1. Correct color not being inherited.
-// Known issue: affects color of disabled elements.
-// 2. Correct font properties not being inherited.
-// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
-//
-
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit; // 1
- font: inherit; // 2
- margin: 0; // 3
-}
-
-//
-// Address `overflow` set to `hidden` in IE 8/9/10/11.
-//
-
-button {
- overflow: visible;
-}
-
-//
-// Address inconsistent `text-transform` inheritance for `button` and `select`.
-// All other form control elements do not inherit `text-transform` values.
-// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
-// Correct `select` style inheritance in Firefox.
-//
-
-button,
-select {
- text-transform: none;
-}
-
-//
-// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
-// and `video` controls.
-// 2. Correct inability to style clickable `input` types in iOS.
-// 3. Improve usability and consistency of cursor style between image-type
-// `input` and others.
-//
-
-button,
-html input[type="button"], // 1
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; // 2
- cursor: pointer; // 3
-}
-
-//
-// Re-set default cursor for disabled elements.
-//
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-//
-// Remove inner padding and border in Firefox 4+.
-//
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-//
-// Address Firefox 4+ setting `line-height` on `input` using `!important` in
-// the UA stylesheet.
-//
-
-input {
- line-height: normal;
-}
-
-//
-// It's recommended that you don't attempt to style these elements.
-// Firefox's implementation doesn't respect box-sizing, padding, or width.
-//
-// 1. Address box sizing set to `content-box` in IE 8/9/10.
-// 2. Remove excess padding in IE 8/9/10.
-//
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; // 1
- padding: 0; // 2
-}
-
-//
-// Fix the cursor style for Chrome's increment/decrement buttons. For certain
-// `font-size` values of the `input`, it causes the cursor style of the
-// decrement button to change from `default` to `text`.
-//
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-//
-// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
-// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
-//
-
-input[type="search"] {
- -webkit-appearance: textfield; // 1
- box-sizing: content-box; //2
-}
-
-//
-// Remove inner padding and search cancel button in Safari and Chrome on OS X.
-// Safari (but not Chrome) clips the cancel button when the search input has
-// padding (and `textfield` appearance).
-//
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-//
-// Define consistent border, margin, and padding.
-//
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-//
-// 1. Correct `color` not being inherited in IE 8/9/10/11.
-// 2. Remove padding so people aren't caught out if they zero out fieldsets.
-//
-
-legend {
- border: 0; // 1
- padding: 0; // 2
-}
-
-//
-// Remove default vertical scrollbar in IE 8/9/10/11.
-//
-
-textarea {
- overflow: auto;
-}
-
-//
-// Don't inherit the `font-weight` (applied by a rule above).
-// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
-//
-
-optgroup {
- font-weight: bold;
-}
-
-// Tables
-// ==========================================================================
-
-//
-// Remove most spacing between table cells.
-//
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-td,
-th {
- padding: 0;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/pager.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/pager.less
deleted file mode 100644
index 41abaaadc..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/pager.less
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// Pager pagination
-// --------------------------------------------------
-
-
-.pager {
- padding-left: 0;
- margin: @line-height-computed 0;
- list-style: none;
- text-align: center;
- &:extend(.clearfix all);
- li {
- display: inline;
- > a,
- > span {
- display: inline-block;
- padding: 5px 14px;
- background-color: @pager-bg;
- border: 1px solid @pager-border;
- border-radius: @pager-border-radius;
- }
-
- > a:hover,
- > a:focus {
- text-decoration: none;
- background-color: @pager-hover-bg;
- }
- }
-
- .next {
- > a,
- > span {
- float: right;
- }
- }
-
- .previous {
- > a,
- > span {
- float: left;
- }
- }
-
- .disabled {
- > a,
- > a:hover,
- > a:focus,
- > span {
- color: @pager-disabled-color;
- background-color: @pager-bg;
- cursor: @cursor-disabled;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/pagination.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/pagination.less
deleted file mode 100644
index 31f77aae4..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/pagination.less
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// Pagination (multiple pages)
-// --------------------------------------------------
-.pagination {
- display: inline-block;
- padding-left: 0;
- margin: @line-height-computed 0;
- border-radius: @border-radius-base;
-
- > li {
- display: inline; // Remove list-style and block-level defaults
- > a,
- > span {
- position: relative;
- float: left; // Collapse white-space
- padding: @padding-base-vertical @padding-base-horizontal;
- line-height: @line-height-base;
- text-decoration: none;
- color: @pagination-color;
- background-color: @pagination-bg;
- border: 1px solid @pagination-border;
- margin-left: -1px;
- }
- &:first-child {
- > a,
- > span {
- margin-left: 0;
- .border-left-radius(@border-radius-base);
- }
- }
- &:last-child {
- > a,
- > span {
- .border-right-radius(@border-radius-base);
- }
- }
- }
-
- > li > a,
- > li > span {
- &:hover,
- &:focus {
- z-index: 2;
- color: @pagination-hover-color;
- background-color: @pagination-hover-bg;
- border-color: @pagination-hover-border;
- }
- }
-
- > .active > a,
- > .active > span {
- &,
- &:hover,
- &:focus {
- z-index: 3;
- color: @pagination-active-color;
- background-color: @pagination-active-bg;
- border-color: @pagination-active-border;
- cursor: default;
- }
- }
-
- > .disabled {
- > span,
- > span:hover,
- > span:focus,
- > a,
- > a:hover,
- > a:focus {
- color: @pagination-disabled-color;
- background-color: @pagination-disabled-bg;
- border-color: @pagination-disabled-border;
- cursor: @cursor-disabled;
- }
- }
-}
-
-// Sizing
-// --------------------------------------------------
-
-// Large
-.pagination-lg {
- .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
-}
-
-// Small
-.pagination-sm {
- .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/panels.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/panels.less
deleted file mode 100644
index 425eb5e64..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/panels.less
+++ /dev/null
@@ -1,271 +0,0 @@
-//
-// Panels
-// --------------------------------------------------
-
-
-// Base class
-.panel {
- margin-bottom: @line-height-computed;
- background-color: @panel-bg;
- border: 1px solid transparent;
- border-radius: @panel-border-radius;
- .box-shadow(0 1px 1px rgba(0,0,0,.05));
-}
-
-// Panel contents
-.panel-body {
- padding: @panel-body-padding;
- &:extend(.clearfix all);
-}
-
-// Optional heading
-.panel-heading {
- padding: @panel-heading-padding;
- border-bottom: 1px solid transparent;
- .border-top-radius((@panel-border-radius - 1));
-
- > .dropdown .dropdown-toggle {
- color: inherit;
- }
-}
-
-// Within heading, strip any `h*` tag of its default margins for spacing.
-.panel-title {
- margin-top: 0;
- margin-bottom: 0;
- font-size: ceil((@font-size-base * 1.125));
- color: inherit;
-
- > a,
- > small,
- > .small,
- > small > a,
- > .small > a {
- color: inherit;
- }
-}
-
-// Optional footer (stays gray in every modifier class)
-.panel-footer {
- padding: @panel-footer-padding;
- background-color: @panel-footer-bg;
- border-top: 1px solid @panel-inner-border;
- .border-bottom-radius((@panel-border-radius - 1));
-}
-
-
-// List groups in panels
-//
-// By default, space out list group content from panel headings to account for
-// any kind of custom content between the two.
-
-.panel {
- > .list-group,
- > .panel-collapse > .list-group {
- margin-bottom: 0;
-
- .list-group-item {
- border-width: 1px 0;
- border-radius: 0;
- }
-
- // Add border top radius for first one
- &:first-child {
- .list-group-item:first-child {
- border-top: 0;
- .border-top-radius((@panel-border-radius - 1));
- }
- }
-
- // Add border bottom radius for last one
- &:last-child {
- .list-group-item:last-child {
- border-bottom: 0;
- .border-bottom-radius((@panel-border-radius - 1));
- }
- }
- }
- > .panel-heading + .panel-collapse > .list-group {
- .list-group-item:first-child {
- .border-top-radius(0);
- }
- }
-}
-// Collapse space between when there's no additional content.
-.panel-heading + .list-group {
- .list-group-item:first-child {
- border-top-width: 0;
- }
-}
-.list-group + .panel-footer {
- border-top-width: 0;
-}
-
-// Tables in panels
-//
-// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
-// watch it go full width.
-
-.panel {
- > .table,
- > .table-responsive > .table,
- > .panel-collapse > .table {
- margin-bottom: 0;
-
- caption {
- padding-left: @panel-body-padding;
- padding-right: @panel-body-padding;
- }
- }
- // Add border top radius for first one
- > .table:first-child,
- > .table-responsive:first-child > .table:first-child {
- .border-top-radius((@panel-border-radius - 1));
-
- > thead:first-child,
- > tbody:first-child {
- > tr:first-child {
- border-top-left-radius: (@panel-border-radius - 1);
- border-top-right-radius: (@panel-border-radius - 1);
-
- td:first-child,
- th:first-child {
- border-top-left-radius: (@panel-border-radius - 1);
- }
- td:last-child,
- th:last-child {
- border-top-right-radius: (@panel-border-radius - 1);
- }
- }
- }
- }
- // Add border bottom radius for last one
- > .table:last-child,
- > .table-responsive:last-child > .table:last-child {
- .border-bottom-radius((@panel-border-radius - 1));
-
- > tbody:last-child,
- > tfoot:last-child {
- > tr:last-child {
- border-bottom-left-radius: (@panel-border-radius - 1);
- border-bottom-right-radius: (@panel-border-radius - 1);
-
- td:first-child,
- th:first-child {
- border-bottom-left-radius: (@panel-border-radius - 1);
- }
- td:last-child,
- th:last-child {
- border-bottom-right-radius: (@panel-border-radius - 1);
- }
- }
- }
- }
- > .panel-body + .table,
- > .panel-body + .table-responsive,
- > .table + .panel-body,
- > .table-responsive + .panel-body {
- border-top: 1px solid @table-border-color;
- }
- > .table > tbody:first-child > tr:first-child th,
- > .table > tbody:first-child > tr:first-child td {
- border-top: 0;
- }
- > .table-bordered,
- > .table-responsive > .table-bordered {
- border: 0;
- > thead,
- > tbody,
- > tfoot {
- > tr {
- > th:first-child,
- > td:first-child {
- border-left: 0;
- }
- > th:last-child,
- > td:last-child {
- border-right: 0;
- }
- }
- }
- > thead,
- > tbody {
- > tr:first-child {
- > td,
- > th {
- border-bottom: 0;
- }
- }
- }
- > tbody,
- > tfoot {
- > tr:last-child {
- > td,
- > th {
- border-bottom: 0;
- }
- }
- }
- }
- > .table-responsive {
- border: 0;
- margin-bottom: 0;
- }
-}
-
-
-// Collapsable panels (aka, accordion)
-//
-// Wrap a series of panels in `.panel-group` to turn them into an accordion with
-// the help of our collapse JavaScript plugin.
-
-.panel-group {
- margin-bottom: @line-height-computed;
-
- // Tighten up margin so it's only between panels
- .panel {
- margin-bottom: 0;
- border-radius: @panel-border-radius;
-
- + .panel {
- margin-top: 5px;
- }
- }
-
- .panel-heading {
- border-bottom: 0;
-
- + .panel-collapse > .panel-body,
- + .panel-collapse > .list-group {
- border-top: 1px solid @panel-inner-border;
- }
- }
-
- .panel-footer {
- border-top: 0;
- + .panel-collapse .panel-body {
- border-bottom: 1px solid @panel-inner-border;
- }
- }
-}
-
-
-// Contextual variations
-.panel-default {
- .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);
-}
-.panel-primary {
- .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);
-}
-.panel-success {
- .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);
-}
-.panel-info {
- .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);
-}
-.panel-warning {
- .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);
-}
-.panel-danger {
- .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/popovers.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/popovers.less
deleted file mode 100644
index 3a62a6455..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/popovers.less
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// Popovers
-// --------------------------------------------------
-
-
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: @zindex-popover;
- display: none;
- max-width: @popover-max-width;
- padding: 1px;
- // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
- // So reset our font and text properties to avoid inheriting weird values.
- .reset-text();
- font-size: @font-size-base;
-
- background-color: @popover-bg;
- background-clip: padding-box;
- border: 1px solid @popover-fallback-border-color;
- border: 1px solid @popover-border-color;
- border-radius: @border-radius-large;
- .box-shadow(0 5px 10px rgba(0,0,0,.2));
-
- // Offset the popover to account for the popover arrow
- &.top { margin-top: -@popover-arrow-width; }
- &.right { margin-left: @popover-arrow-width; }
- &.bottom { margin-top: @popover-arrow-width; }
- &.left { margin-left: -@popover-arrow-width; }
-}
-
-.popover-title {
- margin: 0; // reset heading margin
- padding: 8px 14px;
- font-size: @font-size-base;
- background-color: @popover-title-bg;
- border-bottom: 1px solid darken(@popover-title-bg, 5%);
- border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;
-}
-
-.popover-content {
- padding: 9px 14px;
-}
-
-// Arrows
-//
-// .arrow is outer, .arrow:after is inner
-
-.popover > .arrow {
- &,
- &:after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
- }
-}
-.popover > .arrow {
- border-width: @popover-arrow-outer-width;
-}
-.popover > .arrow:after {
- border-width: @popover-arrow-width;
- content: "";
-}
-
-.popover {
- &.top > .arrow {
- left: 50%;
- margin-left: -@popover-arrow-outer-width;
- border-bottom-width: 0;
- border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
- border-top-color: @popover-arrow-outer-color;
- bottom: -@popover-arrow-outer-width;
- &:after {
- content: " ";
- bottom: 1px;
- margin-left: -@popover-arrow-width;
- border-bottom-width: 0;
- border-top-color: @popover-arrow-color;
- }
- }
- &.right > .arrow {
- top: 50%;
- left: -@popover-arrow-outer-width;
- margin-top: -@popover-arrow-outer-width;
- border-left-width: 0;
- border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
- border-right-color: @popover-arrow-outer-color;
- &:after {
- content: " ";
- left: 1px;
- bottom: -@popover-arrow-width;
- border-left-width: 0;
- border-right-color: @popover-arrow-color;
- }
- }
- &.bottom > .arrow {
- left: 50%;
- margin-left: -@popover-arrow-outer-width;
- border-top-width: 0;
- border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
- border-bottom-color: @popover-arrow-outer-color;
- top: -@popover-arrow-outer-width;
- &:after {
- content: " ";
- top: 1px;
- margin-left: -@popover-arrow-width;
- border-top-width: 0;
- border-bottom-color: @popover-arrow-color;
- }
- }
-
- &.left > .arrow {
- top: 50%;
- right: -@popover-arrow-outer-width;
- margin-top: -@popover-arrow-outer-width;
- border-right-width: 0;
- border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
- border-left-color: @popover-arrow-outer-color;
- &:after {
- content: " ";
- right: 1px;
- border-right-width: 0;
- border-left-color: @popover-arrow-color;
- bottom: -@popover-arrow-width;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/print.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/print.less
deleted file mode 100644
index 66e54ab48..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/print.less
+++ /dev/null
@@ -1,101 +0,0 @@
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-
-// ==========================================================================
-// Print styles.
-// Inlined to avoid the additional HTTP request: h5bp.com/r
-// ==========================================================================
-
-@media print {
- *,
- *:before,
- *:after {
- background: transparent !important;
- color: #000 !important; // Black prints faster: h5bp.com/s
- box-shadow: none !important;
- text-shadow: none !important;
- }
-
- a,
- a:visited {
- text-decoration: underline;
- }
-
- a[href]:after {
- content: " (" attr(href) ")";
- }
-
- abbr[title]:after {
- content: " (" attr(title) ")";
- }
-
- // Don't show links that are fragment identifiers,
- // or use the `javascript:` pseudo protocol
- a[href^="#"]:after,
- a[href^="javascript:"]:after {
- content: "";
- }
-
- pre,
- blockquote {
- border: 1px solid #999;
- page-break-inside: avoid;
- }
-
- thead {
- display: table-header-group; // h5bp.com/t
- }
-
- tr,
- img {
- page-break-inside: avoid;
- }
-
- img {
- max-width: 100% !important;
- }
-
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
-
- h2,
- h3 {
- page-break-after: avoid;
- }
-
- // Bootstrap specific changes start
-
- // Bootstrap components
- .navbar {
- display: none;
- }
- .btn,
- .dropup > .btn {
- > .caret {
- border-top-color: #000 !important;
- }
- }
- .label {
- border: 1px solid #000;
- }
-
- .table {
- border-collapse: collapse !important;
-
- td,
- th {
- background-color: #fff !important;
- }
- }
- .table-bordered {
- th,
- td {
- border: 1px solid #ddd !important;
- }
- }
-
- // Bootstrap specific changes end
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/progress-bars.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/progress-bars.less
deleted file mode 100644
index 8868a1fee..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/progress-bars.less
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// Progress bars
-// --------------------------------------------------
-
-
-// Bar animations
-// -------------------------
-
-// WebKit
-@-webkit-keyframes progress-bar-stripes {
- from { background-position: 40px 0; }
- to { background-position: 0 0; }
-}
-
-// Spec and IE10+
-@keyframes progress-bar-stripes {
- from { background-position: 40px 0; }
- to { background-position: 0 0; }
-}
-
-
-// Bar itself
-// -------------------------
-
-// Outer container
-.progress {
- overflow: hidden;
- height: @line-height-computed;
- margin-bottom: @line-height-computed;
- background-color: @progress-bg;
- border-radius: @progress-border-radius;
- .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
-}
-
-// Bar of progress
-.progress-bar {
- float: left;
- width: 0%;
- height: 100%;
- font-size: @font-size-small;
- line-height: @line-height-computed;
- color: @progress-bar-color;
- text-align: center;
- background-color: @progress-bar-bg;
- .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
- .transition(width .6s ease);
-}
-
-// Striped bars
-//
-// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
-// `.progress-bar-striped` class, which you just add to an existing
-// `.progress-bar`.
-.progress-striped .progress-bar,
-.progress-bar-striped {
- #gradient > .striped();
- background-size: 40px 40px;
-}
-
-// Call animation for the active one
-//
-// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
-// `.progress-bar.active` approach.
-.progress.active .progress-bar,
-.progress-bar.active {
- .animation(progress-bar-stripes 2s linear infinite);
-}
-
-
-// Variations
-// -------------------------
-
-.progress-bar-success {
- .progress-bar-variant(@progress-bar-success-bg);
-}
-
-.progress-bar-info {
- .progress-bar-variant(@progress-bar-info-bg);
-}
-
-.progress-bar-warning {
- .progress-bar-variant(@progress-bar-warning-bg);
-}
-
-.progress-bar-danger {
- .progress-bar-variant(@progress-bar-danger-bg);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-embed.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-embed.less
deleted file mode 100644
index 080a5118f..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-embed.less
+++ /dev/null
@@ -1,35 +0,0 @@
-// Embeds responsive
-//
-// Credit: Nicolas Gallagher and SUIT CSS.
-
-.embed-responsive {
- position: relative;
- display: block;
- height: 0;
- padding: 0;
- overflow: hidden;
-
- .embed-responsive-item,
- iframe,
- embed,
- object,
- video {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- height: 100%;
- width: 100%;
- border: 0;
- }
-}
-
-// Modifier class for 16:9 aspect ratio
-.embed-responsive-16by9 {
- padding-bottom: 56.25%;
-}
-
-// Modifier class for 4:3 aspect ratio
-.embed-responsive-4by3 {
- padding-bottom: 75%;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-utilities.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-utilities.less
deleted file mode 100644
index b1db31d7b..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/responsive-utilities.less
+++ /dev/null
@@ -1,194 +0,0 @@
-//
-// Responsive: Utility classes
-// --------------------------------------------------
-
-
-// IE10 in Windows (Phone) 8
-//
-// Support for responsive views via media queries is kind of borked in IE10, for
-// Surface/desktop in split view and for Windows Phone 8. This particular fix
-// must be accompanied by a snippet of JavaScript to sniff the user agent and
-// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
-// our Getting Started page for more information on this bug.
-//
-// For more information, see the following:
-//
-// Issue: https://github.com/twbs/bootstrap/issues/10497
-// Docs: http://getbootstrap.com/getting-started/#support-ie10-width
-// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
-// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
-
-@-ms-viewport {
- width: device-width;
-}
-
-
-// Visibility utilities
-// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
- .responsive-invisibility();
-}
-
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
- display: none !important;
-}
-
-.visible-xs {
- @media (max-width: @screen-xs-max) {
- .responsive-visibility();
- }
-}
-.visible-xs-block {
- @media (max-width: @screen-xs-max) {
- display: block !important;
- }
-}
-.visible-xs-inline {
- @media (max-width: @screen-xs-max) {
- display: inline !important;
- }
-}
-.visible-xs-inline-block {
- @media (max-width: @screen-xs-max) {
- display: inline-block !important;
- }
-}
-
-.visible-sm {
- @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
- .responsive-visibility();
- }
-}
-.visible-sm-block {
- @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
- display: block !important;
- }
-}
-.visible-sm-inline {
- @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
- display: inline !important;
- }
-}
-.visible-sm-inline-block {
- @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
- display: inline-block !important;
- }
-}
-
-.visible-md {
- @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
- .responsive-visibility();
- }
-}
-.visible-md-block {
- @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
- display: block !important;
- }
-}
-.visible-md-inline {
- @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
- display: inline !important;
- }
-}
-.visible-md-inline-block {
- @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
- display: inline-block !important;
- }
-}
-
-.visible-lg {
- @media (min-width: @screen-lg-min) {
- .responsive-visibility();
- }
-}
-.visible-lg-block {
- @media (min-width: @screen-lg-min) {
- display: block !important;
- }
-}
-.visible-lg-inline {
- @media (min-width: @screen-lg-min) {
- display: inline !important;
- }
-}
-.visible-lg-inline-block {
- @media (min-width: @screen-lg-min) {
- display: inline-block !important;
- }
-}
-
-.hidden-xs {
- @media (max-width: @screen-xs-max) {
- .responsive-invisibility();
- }
-}
-.hidden-sm {
- @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
- .responsive-invisibility();
- }
-}
-.hidden-md {
- @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
- .responsive-invisibility();
- }
-}
-.hidden-lg {
- @media (min-width: @screen-lg-min) {
- .responsive-invisibility();
- }
-}
-
-
-// Print utilities
-//
-// Media queries are placed on the inside to be mixin-friendly.
-
-// Note: Deprecated .visible-print as of v3.2.0
-.visible-print {
- .responsive-invisibility();
-
- @media print {
- .responsive-visibility();
- }
-}
-.visible-print-block {
- display: none !important;
-
- @media print {
- display: block !important;
- }
-}
-.visible-print-inline {
- display: none !important;
-
- @media print {
- display: inline !important;
- }
-}
-.visible-print-inline-block {
- display: none !important;
-
- @media print {
- display: inline-block !important;
- }
-}
-
-.hidden-print {
- @media print {
- .responsive-invisibility();
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/scaffolding.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/scaffolding.less
deleted file mode 100644
index 1929bfc5c..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/scaffolding.less
+++ /dev/null
@@ -1,161 +0,0 @@
-//
-// Scaffolding
-// --------------------------------------------------
-
-
-// Reset the box-sizing
-//
-// Heads up! This reset may cause conflicts with some third-party widgets.
-// For recommendations on resolving such conflicts, see
-// http://getbootstrap.com/getting-started/#third-box-sizing
-* {
- .box-sizing(border-box);
-}
-*:before,
-*:after {
- .box-sizing(border-box);
-}
-
-
-// Body reset
-
-html {
- font-size: 10px;
- -webkit-tap-highlight-color: rgba(0,0,0,0);
-}
-
-body {
- font-family: @font-family-base;
- font-size: @font-size-base;
- line-height: @line-height-base;
- color: @text-color;
- background-color: @body-bg;
-}
-
-// Reset fonts for relevant elements
-input,
-button,
-select,
-textarea {
- font-family: inherit;
- font-size: inherit;
- line-height: inherit;
-}
-
-
-// Links
-
-a {
- color: @link-color;
- text-decoration: none;
-
- &:hover,
- &:focus {
- color: @link-hover-color;
- text-decoration: @link-hover-decoration;
- }
-
- &:focus {
- .tab-focus();
- }
-}
-
-
-// Figures
-//
-// We reset this here because previously Normalize had no `figure` margins. This
-// ensures we don't break anyone's use of the element.
-
-figure {
- margin: 0;
-}
-
-
-// Images
-
-img {
- vertical-align: middle;
-}
-
-// Responsive images (ensure images don't scale beyond their parents)
-.img-responsive {
- .img-responsive();
-}
-
-// Rounded corners
-.img-rounded {
- border-radius: @border-radius-large;
-}
-
-// Image thumbnails
-//
-// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
-.img-thumbnail {
- padding: @thumbnail-padding;
- line-height: @line-height-base;
- background-color: @thumbnail-bg;
- border: 1px solid @thumbnail-border;
- border-radius: @thumbnail-border-radius;
- .transition(all .2s ease-in-out);
-
- // Keep them at most 100% wide
- .img-responsive(inline-block);
-}
-
-// Perfect circle
-.img-circle {
- border-radius: 50%; // set radius in percents
-}
-
-
-// Horizontal rules
-
-hr {
- margin-top: @line-height-computed;
- margin-bottom: @line-height-computed;
- border: 0;
- border-top: 1px solid @hr-border;
-}
-
-
-// Only display content to screen readers
-//
-// See: http://a11yproject.com/posts/how-to-hide-content/
-
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- margin: -1px;
- padding: 0;
- overflow: hidden;
- clip: rect(0,0,0,0);
- border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-// Credit: HTML5 Boilerplate
-
-.sr-only-focusable {
- &:active,
- &:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
- }
-}
-
-
-// iOS "clickable elements" fix for role="button"
-//
-// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
-// for traditionally non-focusable elements with role="button"
-// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
-
-[role="button"] {
- cursor: pointer;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/tables.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/tables.less
deleted file mode 100644
index 2242c0368..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/tables.less
+++ /dev/null
@@ -1,234 +0,0 @@
-//
-// Tables
-// --------------------------------------------------
-
-
-table {
- background-color: @table-bg;
-}
-caption {
- padding-top: @table-cell-padding;
- padding-bottom: @table-cell-padding;
- color: @text-muted;
- text-align: left;
-}
-th {
- text-align: left;
-}
-
-
-// Baseline styles
-
-.table {
- width: 100%;
- max-width: 100%;
- margin-bottom: @line-height-computed;
- // Cells
- > thead,
- > tbody,
- > tfoot {
- > tr {
- > th,
- > td {
- padding: @table-cell-padding;
- line-height: @line-height-base;
- vertical-align: top;
- border-top: 1px solid @table-border-color;
- }
- }
- }
- // Bottom align for column headings
- > thead > tr > th {
- vertical-align: bottom;
- border-bottom: 2px solid @table-border-color;
- }
- // Remove top border from thead by default
- > caption + thead,
- > colgroup + thead,
- > thead:first-child {
- > tr:first-child {
- > th,
- > td {
- border-top: 0;
- }
- }
- }
- // Account for multiple tbody instances
- > tbody + tbody {
- border-top: 2px solid @table-border-color;
- }
-
- // Nesting
- .table {
- background-color: @body-bg;
- }
-}
-
-
-// Condensed table w/ half padding
-
-.table-condensed {
- > thead,
- > tbody,
- > tfoot {
- > tr {
- > th,
- > td {
- padding: @table-condensed-cell-padding;
- }
- }
- }
-}
-
-
-// Bordered version
-//
-// Add borders all around the table and between all the columns.
-
-.table-bordered {
- border: 1px solid @table-border-color;
- > thead,
- > tbody,
- > tfoot {
- > tr {
- > th,
- > td {
- border: 1px solid @table-border-color;
- }
- }
- }
- > thead > tr {
- > th,
- > td {
- border-bottom-width: 2px;
- }
- }
-}
-
-
-// Zebra-striping
-//
-// Default zebra-stripe styles (alternating gray and transparent backgrounds)
-
-.table-striped {
- > tbody > tr:nth-of-type(odd) {
- background-color: @table-bg-accent;
- }
-}
-
-
-// Hover effect
-//
-// Placed here since it has to come after the potential zebra striping
-
-.table-hover {
- > tbody > tr:hover {
- background-color: @table-bg-hover;
- }
-}
-
-
-// Table cell sizing
-//
-// Reset default table behavior
-
-table col[class*="col-"] {
- position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
- float: none;
- display: table-column;
-}
-table {
- td,
- th {
- &[class*="col-"] {
- position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
- float: none;
- display: table-cell;
- }
- }
-}
-
-
-// Table backgrounds
-//
-// Exact selectors below required to override `.table-striped` and prevent
-// inheritance to nested tables.
-
-// Generate the contextual variants
-.table-row-variant(active; @table-bg-active);
-.table-row-variant(success; @state-success-bg);
-.table-row-variant(info; @state-info-bg);
-.table-row-variant(warning; @state-warning-bg);
-.table-row-variant(danger; @state-danger-bg);
-
-
-// Responsive tables
-//
-// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
-// by enabling horizontal scrolling. Only applies <768px. Everything above that
-// will display normally.
-
-.table-responsive {
- overflow-x: auto;
- min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
-
- @media screen and (max-width: @screen-xs-max) {
- width: 100%;
- margin-bottom: (@line-height-computed * 0.75);
- overflow-y: hidden;
- -ms-overflow-style: -ms-autohiding-scrollbar;
- border: 1px solid @table-border-color;
-
- // Tighten up spacing
- > .table {
- margin-bottom: 0;
-
- // Ensure the content doesn't wrap
- > thead,
- > tbody,
- > tfoot {
- > tr {
- > th,
- > td {
- white-space: nowrap;
- }
- }
- }
- }
-
- // Special overrides for the bordered tables
- > .table-bordered {
- border: 0;
-
- // Nuke the appropriate borders so that the parent can handle them
- > thead,
- > tbody,
- > tfoot {
- > tr {
- > th:first-child,
- > td:first-child {
- border-left: 0;
- }
- > th:last-child,
- > td:last-child {
- border-right: 0;
- }
- }
- }
-
- // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
- // chances are there will be only one `tr` in a `thead` and that would
- // remove the border altogether.
- > tbody,
- > tfoot {
- > tr:last-child {
- > th,
- > td {
- border-bottom: 0;
- }
- }
- }
-
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/theme.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/theme.less
deleted file mode 100644
index 8371872b0..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/theme.less
+++ /dev/null
@@ -1,291 +0,0 @@
-/*!
- * Bootstrap v3.3.5 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-//
-// Load core variables and mixins
-// --------------------------------------------------
-
-@import "variables.less";
-@import "mixins.less";
-
-
-//
-// Buttons
-// --------------------------------------------------
-
-// Common styles
-.btn-default,
-.btn-primary,
-.btn-success,
-.btn-info,
-.btn-warning,
-.btn-danger {
- text-shadow: 0 -1px 0 rgba(0,0,0,.2);
- @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
- .box-shadow(@shadow);
-
- // Reset the shadow
- &:active,
- &.active {
- .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
- }
-
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- .box-shadow(none);
- }
-
- .badge {
- text-shadow: none;
- }
-}
-
-// Mixin for generating new styles
-.btn-styles(@btn-color: #555) {
- #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));
- .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
- background-repeat: repeat-x;
- border-color: darken(@btn-color, 14%);
-
- &:hover,
- &:focus {
- background-color: darken(@btn-color, 12%);
- background-position: 0 -15px;
- }
-
- &:active,
- &.active {
- background-color: darken(@btn-color, 12%);
- border-color: darken(@btn-color, 14%);
- }
-
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &.focus,
- &:active,
- &.active {
- background-color: darken(@btn-color, 12%);
- background-image: none;
- }
- }
-}
-
-// Common styles
-.btn {
- // Remove the gradient for the pressed/active state
- &:active,
- &.active {
- background-image: none;
- }
-}
-
-// Apply the mixin to the buttons
-.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
-.btn-primary { .btn-styles(@btn-primary-bg); }
-.btn-success { .btn-styles(@btn-success-bg); }
-.btn-info { .btn-styles(@btn-info-bg); }
-.btn-warning { .btn-styles(@btn-warning-bg); }
-.btn-danger { .btn-styles(@btn-danger-bg); }
-
-
-//
-// Images
-// --------------------------------------------------
-
-.thumbnail,
-.img-thumbnail {
- .box-shadow(0 1px 2px rgba(0,0,0,.075));
-}
-
-
-//
-// Dropdowns
-// --------------------------------------------------
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
- #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
- background-color: darken(@dropdown-link-hover-bg, 5%);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
- #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
- background-color: darken(@dropdown-link-active-bg, 5%);
-}
-
-
-//
-// Navbar
-// --------------------------------------------------
-
-// Default navbar
-.navbar-default {
- #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);
- .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
- border-radius: @navbar-border-radius;
- @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
- .box-shadow(@shadow);
-
- .navbar-nav > .open > a,
- .navbar-nav > .active > a {
- #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));
- .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));
- }
-}
-.navbar-brand,
-.navbar-nav > li > a {
- text-shadow: 0 1px 0 rgba(255,255,255,.25);
-}
-
-// Inverted navbar
-.navbar-inverse {
- #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);
- .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
- border-radius: @navbar-border-radius;
- .navbar-nav > .open > a,
- .navbar-nav > .active > a {
- #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));
- .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));
- }
-
- .navbar-brand,
- .navbar-nav > li > a {
- text-shadow: 0 -1px 0 rgba(0,0,0,.25);
- }
-}
-
-// Undo rounded corners in static and fixed navbars
-.navbar-static-top,
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- border-radius: 0;
-}
-
-// Fix active state of dropdown items in collapsed mode
-@media (max-width: @grid-float-breakpoint-max) {
- .navbar .navbar-nav .open .dropdown-menu > .active > a {
- &,
- &:hover,
- &:focus {
- color: #fff;
- #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
- }
- }
-}
-
-
-//
-// Alerts
-// --------------------------------------------------
-
-// Common styles
-.alert {
- text-shadow: 0 1px 0 rgba(255,255,255,.2);
- @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
- .box-shadow(@shadow);
-}
-
-// Mixin for generating new styles
-.alert-styles(@color) {
- #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));
- border-color: darken(@color, 15%);
-}
-
-// Apply the mixin to the alerts
-.alert-success { .alert-styles(@alert-success-bg); }
-.alert-info { .alert-styles(@alert-info-bg); }
-.alert-warning { .alert-styles(@alert-warning-bg); }
-.alert-danger { .alert-styles(@alert-danger-bg); }
-
-
-//
-// Progress bars
-// --------------------------------------------------
-
-// Give the progress background some depth
-.progress {
- #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)
-}
-
-// Mixin for generating new styles
-.progress-bar-styles(@color) {
- #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));
-}
-
-// Apply the mixin to the progress bars
-.progress-bar { .progress-bar-styles(@progress-bar-bg); }
-.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }
-.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }
-.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }
-.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }
-
-// Reset the striped class because our mixins don't do multiple gradients and
-// the above custom styles override the new `.progress-bar-striped` in v3.2.0.
-.progress-bar-striped {
- #gradient > .striped();
-}
-
-
-//
-// List groups
-// --------------------------------------------------
-
-.list-group {
- border-radius: @border-radius-base;
- .box-shadow(0 1px 2px rgba(0,0,0,.075));
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
- text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);
- #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));
- border-color: darken(@list-group-active-border, 7.5%);
-
- .badge {
- text-shadow: none;
- }
-}
-
-
-//
-// Panels
-// --------------------------------------------------
-
-// Common styles
-.panel {
- .box-shadow(0 1px 2px rgba(0,0,0,.05));
-}
-
-// Mixin for generating new styles
-.panel-heading-styles(@color) {
- #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));
-}
-
-// Apply the mixin to the panel headings only
-.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }
-.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }
-.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }
-.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }
-.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }
-.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }
-
-
-//
-// Wells
-// --------------------------------------------------
-
-.well {
- #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);
- border-color: darken(@well-bg, 10%);
- @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
- .box-shadow(@shadow);
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/thumbnails.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/thumbnails.less
deleted file mode 100644
index 0713e67d0..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/thumbnails.less
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// Thumbnails
-// --------------------------------------------------
-
-
-// Mixin and adjust the regular image class
-.thumbnail {
- display: block;
- padding: @thumbnail-padding;
- margin-bottom: @line-height-computed;
- line-height: @line-height-base;
- background-color: @thumbnail-bg;
- border: 1px solid @thumbnail-border;
- border-radius: @thumbnail-border-radius;
- .transition(border .2s ease-in-out);
-
- > img,
- a > img {
- &:extend(.img-responsive);
- margin-left: auto;
- margin-right: auto;
- }
-
- // Add a hover state for linked versions only
- a&:hover,
- a&:focus,
- a&.active {
- border-color: @link-color;
- }
-
- // Image captions
- .caption {
- padding: @thumbnail-caption-padding;
- color: @thumbnail-caption-color;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/tooltip.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/tooltip.less
deleted file mode 100644
index b48d63e07..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/tooltip.less
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// Tooltips
-// --------------------------------------------------
-
-
-// Base class
-.tooltip {
- position: absolute;
- z-index: @zindex-tooltip;
- display: block;
- // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
- // So reset our font and text properties to avoid inheriting weird values.
- .reset-text();
- font-size: @font-size-small;
-
- .opacity(0);
-
- &.in { .opacity(@tooltip-opacity); }
- &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }
- &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }
- &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }
- &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
- max-width: @tooltip-max-width;
- padding: 3px 8px;
- color: @tooltip-color;
- text-align: center;
- background-color: @tooltip-bg;
- border-radius: @border-radius-base;
-}
-
-// Arrows
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1
-.tooltip {
- &.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -@tooltip-arrow-width;
- border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
- border-top-color: @tooltip-arrow-color;
- }
- &.top-left .tooltip-arrow {
- bottom: 0;
- right: @tooltip-arrow-width;
- margin-bottom: -@tooltip-arrow-width;
- border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
- border-top-color: @tooltip-arrow-color;
- }
- &.top-right .tooltip-arrow {
- bottom: 0;
- left: @tooltip-arrow-width;
- margin-bottom: -@tooltip-arrow-width;
- border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
- border-top-color: @tooltip-arrow-color;
- }
- &.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -@tooltip-arrow-width;
- border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
- border-right-color: @tooltip-arrow-color;
- }
- &.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -@tooltip-arrow-width;
- border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
- border-left-color: @tooltip-arrow-color;
- }
- &.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -@tooltip-arrow-width;
- border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
- border-bottom-color: @tooltip-arrow-color;
- }
- &.bottom-left .tooltip-arrow {
- top: 0;
- right: @tooltip-arrow-width;
- margin-top: -@tooltip-arrow-width;
- border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
- border-bottom-color: @tooltip-arrow-color;
- }
- &.bottom-right .tooltip-arrow {
- top: 0;
- left: @tooltip-arrow-width;
- margin-top: -@tooltip-arrow-width;
- border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
- border-bottom-color: @tooltip-arrow-color;
- }
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/type.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/type.less
deleted file mode 100644
index 0d4fee484..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/type.less
+++ /dev/null
@@ -1,302 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-
-// Headings
-// -------------------------
-
-h1, h2, h3, h4, h5, h6,
-.h1, .h2, .h3, .h4, .h5, .h6 {
- font-family: @headings-font-family;
- font-weight: @headings-font-weight;
- line-height: @headings-line-height;
- color: @headings-color;
-
- small,
- .small {
- font-weight: normal;
- line-height: 1;
- color: @headings-small-color;
- }
-}
-
-h1, .h1,
-h2, .h2,
-h3, .h3 {
- margin-top: @line-height-computed;
- margin-bottom: (@line-height-computed / 2);
-
- small,
- .small {
- font-size: 65%;
- }
-}
-h4, .h4,
-h5, .h5,
-h6, .h6 {
- margin-top: (@line-height-computed / 2);
- margin-bottom: (@line-height-computed / 2);
-
- small,
- .small {
- font-size: 75%;
- }
-}
-
-h1, .h1 { font-size: @font-size-h1; }
-h2, .h2 { font-size: @font-size-h2; }
-h3, .h3 { font-size: @font-size-h3; }
-h4, .h4 { font-size: @font-size-h4; }
-h5, .h5 { font-size: @font-size-h5; }
-h6, .h6 { font-size: @font-size-h6; }
-
-
-// Body text
-// -------------------------
-
-p {
- margin: 0 0 (@line-height-computed / 2);
-}
-
-.lead {
- margin-bottom: @line-height-computed;
- font-size: floor((@font-size-base * 1.15));
- font-weight: 300;
- line-height: 1.4;
-
- @media (min-width: @screen-sm-min) {
- font-size: (@font-size-base * 1.5);
- }
-}
-
-
-// Emphasis & misc
-// -------------------------
-
-// Ex: (12px small font / 14px base font) * 100% = about 85%
-small,
-.small {
- font-size: floor((100% * @font-size-small / @font-size-base));
-}
-
-mark,
-.mark {
- background-color: @state-warning-bg;
- padding: .2em;
-}
-
-// Alignment
-.text-left { text-align: left; }
-.text-right { text-align: right; }
-.text-center { text-align: center; }
-.text-justify { text-align: justify; }
-.text-nowrap { white-space: nowrap; }
-
-// Transformation
-.text-lowercase { text-transform: lowercase; }
-.text-uppercase { text-transform: uppercase; }
-.text-capitalize { text-transform: capitalize; }
-
-// Contextual colors
-.text-muted {
- color: @text-muted;
-}
-.text-primary {
- .text-emphasis-variant(@brand-primary);
-}
-.text-success {
- .text-emphasis-variant(@state-success-text);
-}
-.text-info {
- .text-emphasis-variant(@state-info-text);
-}
-.text-warning {
- .text-emphasis-variant(@state-warning-text);
-}
-.text-danger {
- .text-emphasis-variant(@state-danger-text);
-}
-
-// Contextual backgrounds
-// For now we'll leave these alongside the text classes until v4 when we can
-// safely shift things around (per SemVer rules).
-.bg-primary {
- // Given the contrast here, this is the only class to have its color inverted
- // automatically.
- color: #fff;
- .bg-variant(@brand-primary);
-}
-.bg-success {
- .bg-variant(@state-success-bg);
-}
-.bg-info {
- .bg-variant(@state-info-bg);
-}
-.bg-warning {
- .bg-variant(@state-warning-bg);
-}
-.bg-danger {
- .bg-variant(@state-danger-bg);
-}
-
-
-// Page header
-// -------------------------
-
-.page-header {
- padding-bottom: ((@line-height-computed / 2) - 1);
- margin: (@line-height-computed * 2) 0 @line-height-computed;
- border-bottom: 1px solid @page-header-border-color;
-}
-
-
-// Lists
-// -------------------------
-
-// Unordered and Ordered lists
-ul,
-ol {
- margin-top: 0;
- margin-bottom: (@line-height-computed / 2);
- ul,
- ol {
- margin-bottom: 0;
- }
-}
-
-// List options
-
-// Unstyled keeps list items block level, just removes default browser padding and list-style
-.list-unstyled {
- padding-left: 0;
- list-style: none;
-}
-
-// Inline turns list items into inline-block
-.list-inline {
- .list-unstyled();
- margin-left: -5px;
-
- > li {
- display: inline-block;
- padding-left: 5px;
- padding-right: 5px;
- }
-}
-
-// Description Lists
-dl {
- margin-top: 0; // Remove browser default
- margin-bottom: @line-height-computed;
-}
-dt,
-dd {
- line-height: @line-height-base;
-}
-dt {
- font-weight: bold;
-}
-dd {
- margin-left: 0; // Undo browser default
-}
-
-// Horizontal description lists
-//
-// Defaults to being stacked without any of the below styles applied, until the
-// grid breakpoint is reached (default of ~768px).
-
-.dl-horizontal {
- dd {
- &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
- }
-
- @media (min-width: @dl-horizontal-breakpoint) {
- dt {
- float: left;
- width: (@dl-horizontal-offset - 20);
- clear: left;
- text-align: right;
- .text-overflow();
- }
- dd {
- margin-left: @dl-horizontal-offset;
- }
- }
-}
-
-
-// Misc
-// -------------------------
-
-// Abbreviations and acronyms
-abbr[title],
-// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
-abbr[data-original-title] {
- cursor: help;
- border-bottom: 1px dotted @abbr-border-color;
-}
-.initialism {
- font-size: 90%;
- .text-uppercase();
-}
-
-// Blockquotes
-blockquote {
- padding: (@line-height-computed / 2) @line-height-computed;
- margin: 0 0 @line-height-computed;
- font-size: @blockquote-font-size;
- border-left: 5px solid @blockquote-border-color;
-
- p,
- ul,
- ol {
- &:last-child {
- margin-bottom: 0;
- }
- }
-
- // Note: Deprecated small and .small as of v3.1.0
- // Context: https://github.com/twbs/bootstrap/issues/11660
- footer,
- small,
- .small {
- display: block;
- font-size: 80%; // back to default font-size
- line-height: @line-height-base;
- color: @blockquote-small-color;
-
- &:before {
- content: '\2014 \00A0'; // em dash, nbsp
- }
- }
-}
-
-// Opposite alignment of blockquote
-//
-// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
-.blockquote-reverse,
-blockquote.pull-right {
- padding-right: 15px;
- padding-left: 0;
- border-right: 5px solid @blockquote-border-color;
- border-left: 0;
- text-align: right;
-
- // Account for citation
- footer,
- small,
- .small {
- &:before { content: ''; }
- &:after {
- content: '\00A0 \2014'; // nbsp, em dash
- }
- }
-}
-
-// Addresses
-address {
- margin-bottom: @line-height-computed;
- font-style: normal;
- line-height: @line-height-base;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/utilities.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/utilities.less
deleted file mode 100644
index 7a8ca27a8..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/utilities.less
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// Utility classes
-// --------------------------------------------------
-
-
-// Floats
-// -------------------------
-
-.clearfix {
- .clearfix();
-}
-.center-block {
- .center-block();
-}
-.pull-right {
- float: right !important;
-}
-.pull-left {
- float: left !important;
-}
-
-
-// Toggling content
-// -------------------------
-
-// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
-.hide {
- display: none !important;
-}
-.show {
- display: block !important;
-}
-.invisible {
- visibility: hidden;
-}
-.text-hide {
- .text-hide();
-}
-
-
-// Hide from screenreaders and browsers
-//
-// Credit: HTML5 Boilerplate
-
-.hidden {
- display: none !important;
-}
-
-
-// For Affix plugin
-// -------------------------
-
-.affix {
- position: fixed;
-}
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/variables.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/variables.less
deleted file mode 100644
index b057ef5bf..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/variables.less
+++ /dev/null
@@ -1,869 +0,0 @@
-//
-// Variables
-// --------------------------------------------------
-
-
-//== Colors
-//
-//## Gray and brand colors for use across Bootstrap.
-
-@gray-base: #000;
-@gray-darker: lighten(@gray-base, 13.5%); // #222
-@gray-dark: lighten(@gray-base, 20%); // #333
-@gray: lighten(@gray-base, 33.5%); // #555
-@gray-light: lighten(@gray-base, 46.7%); // #777
-@gray-lighter: lighten(@gray-base, 93.5%); // #eee
-
-@brand-primary: darken(#428bca, 6.5%); // #337ab7
-@brand-success: #5cb85c;
-@brand-info: #5bc0de;
-@brand-warning: #f0ad4e;
-@brand-danger: #d9534f;
-
-
-//== Scaffolding
-//
-//## Settings for some of the most global styles.
-
-//** Background color for `<body>`.
-@body-bg: #fff;
-//** Global text color on `<body>`.
-@text-color: @gray-dark;
-
-//** Global textual link color.
-@link-color: @brand-primary;
-//** Link hover color set via `darken()` function.
-@link-hover-color: darken(@link-color, 15%);
-//** Link hover decoration.
-@link-hover-decoration: underline;
-
-
-//== Typography
-//
-//## Font, line-height, and color for body text, headings, and more.
-
-@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
-@font-family-serif: Georgia, "Times New Roman", Times, serif;
-//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
-@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
-@font-family-base: @font-family-sans-serif;
-
-@font-size-base: 14px;
-@font-size-large: ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small: ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1: floor((@font-size-base * 2.6)); // ~36px
-@font-size-h2: floor((@font-size-base * 2.15)); // ~30px
-@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
-@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
-@font-size-h5: @font-size-base;
-@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base: 1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the `<body>`.
-@headings-font-family: inherit;
-@headings-font-weight: 500;
-@headings-line-height: 1.1;
-@headings-color: inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path: "../fonts/";
-//** File name for all font files.
-@icon-font-name: "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id: "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical: 6px;
-@padding-base-horizontal: 12px;
-
-@padding-large-vertical: 10px;
-@padding-large-horizontal: 16px;
-
-@padding-small-vertical: 5px;
-@padding-small-horizontal: 10px;
-
-@padding-xs-vertical: 1px;
-@padding-xs-horizontal: 5px;
-
-@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
-@line-height-small: 1.5;
-
-@border-radius-base: 4px;
-@border-radius-large: 6px;
-@border-radius-small: 3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color: #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg: @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base: 4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large: 5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for `<th>`s and `<td>`s.
-@table-cell-padding: 8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding: 5px;
-
-//** Default background color used for all tables.
-@table-bg: transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent: #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover: #f5f5f5;
-@table-bg-active: @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color: #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight: normal;
-
-@btn-default-color: #333;
-@btn-default-bg: #fff;
-@btn-default-border: #ccc;
-
-@btn-primary-color: #fff;
-@btn-primary-bg: @brand-primary;
-@btn-primary-border: darken(@btn-primary-bg, 5%);
-
-@btn-success-color: #fff;
-@btn-success-bg: @brand-success;
-@btn-success-border: darken(@btn-success-bg, 5%);
-
-@btn-info-color: #fff;
-@btn-info-bg: @brand-info;
-@btn-info-border: darken(@btn-info-bg, 5%);
-
-@btn-warning-color: #fff;
-@btn-warning-bg: @brand-warning;
-@btn-warning-border: darken(@btn-warning-bg, 5%);
-
-@btn-danger-color: #fff;
-@btn-danger-bg: @brand-danger;
-@btn-danger-border: darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color: @gray-light;
-
-// Allows for customizing button radius independently from global border radius
-@btn-border-radius-base: @border-radius-base;
-@btn-border-radius-large: @border-radius-large;
-@btn-border-radius-small: @border-radius-small;
-
-
-//== Forms
-//
-//##
-
-//** `<input>` background color
-@input-bg: #fff;
-//** `<input disabled>` background color
-@input-bg-disabled: @gray-lighter;
-
-//** Text color for `<input>`s
-@input-color: @gray;
-//** `<input>` border color
-@input-border: #ccc;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
-@input-border-radius: @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large: @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small: @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus: #66afe9;
-
-//** Placeholder text color
-@input-color-placeholder: #999;
-
-//** Default `.form-control` height
-@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-//** `.form-group` margin
-@form-group-margin-bottom: 15px;
-
-@legend-color: @gray-dark;
-@legend-border-color: #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg: @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled: not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg: #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border: rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border: #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg: #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color: @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color: darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg: #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color: @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg: @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color: @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color: @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color: #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar: 1000;
-@zindex-dropdown: 1000;
-@zindex-popover: 1060;
-@zindex-tooltip: 1070;
-@zindex-navbar-fixed: 1030;
-@zindex-modal-background: 1040;
-@zindex-modal: 1050;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs: 480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min: @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone: @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm: 768px;
-@screen-sm-min: @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet: @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md: 992px;
-@screen-md-min: @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop: @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg: 1200px;
-@screen-lg-min: @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop: @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max: (@screen-sm-min - 1);
-@screen-sm-max: (@screen-md-min - 1);
-@screen-md-max: (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns: 12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width: 30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint: @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet: (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm: @container-tablet;
-
-// Medium screen / desktop
-@container-desktop: (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md: @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop: (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg: @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height: 50px;
-@navbar-margin-bottom: @line-height-computed;
-@navbar-border-radius: @border-radius-base;
-@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
-@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height: 340px;
-
-@navbar-default-color: #777;
-@navbar-default-bg: #f8f8f8;
-@navbar-default-border: darken(@navbar-default-bg, 6.5%);
-
-// Navbar links
-@navbar-default-link-color: #777;
-@navbar-default-link-hover-color: #333;
-@navbar-default-link-hover-bg: transparent;
-@navbar-default-link-active-color: #555;
-@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
-@navbar-default-link-disabled-color: #ccc;
-@navbar-default-link-disabled-bg: transparent;
-
-// Navbar brand label
-@navbar-default-brand-color: @navbar-default-link-color;
-@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg: transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg: #ddd;
-@navbar-default-toggle-icon-bar-bg: #888;
-@navbar-default-toggle-border-color: #ddd;
-
-
-//=== Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color: lighten(@gray-light, 15%);
-@navbar-inverse-bg: #222;
-@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color: lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color: #fff;
-@navbar-inverse-link-hover-bg: transparent;
-@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color: #444;
-@navbar-inverse-link-disabled-bg: transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color: @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color: #fff;
-@navbar-inverse-brand-hover-bg: transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg: #333;
-@navbar-inverse-toggle-icon-bar-bg: #fff;
-@navbar-inverse-toggle-border-color: #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding: 10px 15px;
-@nav-link-hover-bg: @gray-lighter;
-
-@nav-disabled-link-color: @gray-light;
-@nav-disabled-link-hover-color: @gray-light;
-
-//== Tabs
-@nav-tabs-border-color: #ddd;
-
-@nav-tabs-link-hover-border-color: @gray-lighter;
-
-@nav-tabs-active-link-hover-bg: @body-bg;
-@nav-tabs-active-link-hover-color: @gray;
-@nav-tabs-active-link-hover-border-color: #ddd;
-
-@nav-tabs-justified-link-border-color: #ddd;
-@nav-tabs-justified-active-link-border-color: @body-bg;
-
-//== Pills
-@nav-pills-border-radius: @border-radius-base;
-@nav-pills-active-link-hover-bg: @component-active-bg;
-@nav-pills-active-link-hover-color: @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color: @link-color;
-@pagination-bg: #fff;
-@pagination-border: #ddd;
-
-@pagination-hover-color: @link-hover-color;
-@pagination-hover-bg: @gray-lighter;
-@pagination-hover-border: #ddd;
-
-@pagination-active-color: #fff;
-@pagination-active-bg: @brand-primary;
-@pagination-active-border: @brand-primary;
-
-@pagination-disabled-color: @gray-light;
-@pagination-disabled-bg: #fff;
-@pagination-disabled-border: #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg: @pagination-bg;
-@pager-border: @pagination-border;
-@pager-border-radius: 15px;
-
-@pager-hover-bg: @pagination-hover-bg;
-
-@pager-active-bg: @pagination-active-bg;
-@pager-active-color: @pagination-active-color;
-
-@pager-disabled-color: @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding: 30px;
-@jumbotron-color: inherit;
-@jumbotron-bg: @gray-lighter;
-@jumbotron-heading-color: inherit;
-@jumbotron-font-size: ceil((@font-size-base * 1.5));
-@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text: #3c763d;
-@state-success-bg: #dff0d8;
-@state-success-border: darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text: #31708f;
-@state-info-bg: #d9edf7;
-@state-info-border: darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text: #8a6d3b;
-@state-warning-bg: #fcf8e3;
-@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text: #a94442;
-@state-danger-bg: #f2dede;
-@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width: 200px;
-//** Tooltip text color
-@tooltip-color: #fff;
-//** Tooltip background color
-@tooltip-bg: #000;
-@tooltip-opacity: .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width: 5px;
-//** Tooltip arrow color
-@tooltip-arrow-color: @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg: #fff;
-//** Popover maximum width
-@popover-max-width: 276px;
-//** Popover border color
-@popover-border-color: rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color: #ccc;
-
-//** Popover title background color
-@popover-title-bg: darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width: 10px;
-//** Popover arrow color
-@popover-arrow-color: @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width: (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color: fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg: @gray-light;
-//** Primary label background color
-@label-primary-bg: @brand-primary;
-//** Success label background color
-@label-success-bg: @brand-success;
-//** Info label background color
-@label-info-bg: @brand-info;
-//** Warning label background color
-@label-warning-bg: @brand-warning;
-//** Danger label background color
-@label-danger-bg: @brand-danger;
-
-//** Default label text color
-@label-color: #fff;
-//** Default text color of a linked label
-@label-link-hover-color: #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding: 15px;
-
-//** Padding applied to the modal title
-@modal-title-padding: 15px;
-//** Modal title line-height
-@modal-title-line-height: @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg: #fff;
-//** Modal content border color
-@modal-content-border-color: rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color: #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg: #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity: .5;
-//** Modal header border color
-@modal-header-border-color: #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color: @modal-header-border-color;
-
-@modal-lg: 900px;
-@modal-md: 600px;
-@modal-sm: 300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding: 15px;
-@alert-border-radius: @border-radius-base;
-@alert-link-font-weight: bold;
-
-@alert-success-bg: @state-success-bg;
-@alert-success-text: @state-success-text;
-@alert-success-border: @state-success-border;
-
-@alert-info-bg: @state-info-bg;
-@alert-info-text: @state-info-text;
-@alert-info-border: @state-info-border;
-
-@alert-warning-bg: @state-warning-bg;
-@alert-warning-text: @state-warning-text;
-@alert-warning-border: @state-warning-border;
-
-@alert-danger-bg: @state-danger-bg;
-@alert-danger-text: @state-danger-text;
-@alert-danger-border: @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg: #f5f5f5;
-//** Progress bar text color
-@progress-bar-color: #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius: @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg: @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg: @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg: @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg: @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg: @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg: #fff;
-//** `.list-group-item` border color
-@list-group-border: #ddd;
-//** List group border radius
-@list-group-border-radius: @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg: #f5f5f5;
-//** Text color of active list items
-@list-group-active-color: @component-active-color;
-//** Background color of active list items
-@list-group-active-bg: @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border: @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color: lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color: @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg: @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color: #555;
-@list-group-link-hover-color: @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg: #fff;
-@panel-body-padding: 15px;
-@panel-heading-padding: 10px 15px;
-@panel-footer-padding: @panel-heading-padding;
-@panel-border-radius: @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border: #ddd;
-@panel-footer-bg: #f5f5f5;
-
-@panel-default-text: @gray-dark;
-@panel-default-border: #ddd;
-@panel-default-heading-bg: #f5f5f5;
-
-@panel-primary-text: #fff;
-@panel-primary-border: @brand-primary;
-@panel-primary-heading-bg: @brand-primary;
-
-@panel-success-text: @state-success-text;
-@panel-success-border: @state-success-border;
-@panel-success-heading-bg: @state-success-bg;
-
-@panel-info-text: @state-info-text;
-@panel-info-border: @state-info-border;
-@panel-info-heading-bg: @state-info-bg;
-
-@panel-warning-text: @state-warning-text;
-@panel-warning-border: @state-warning-border;
-@panel-warning-heading-bg: @state-warning-bg;
-
-@panel-danger-text: @state-danger-text;
-@panel-danger-border: @state-danger-border;
-@panel-danger-heading-bg: @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding: 4px;
-//** Thumbnail background color
-@thumbnail-bg: @body-bg;
-//** Thumbnail border color
-@thumbnail-border: #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius: @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color: @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding: 9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg: #f5f5f5;
-@well-border: darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color: #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color: #fff;
-@badge-bg: @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color: @link-color;
-//** Badge background color in active nav link
-@badge-active-bg: #fff;
-
-@badge-font-weight: bold;
-@badge-line-height: 1;
-@badge-border-radius: 10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical: 8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg: #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color: #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color: @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator: "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color: #fff;
-@carousel-control-width: 15%;
-@carousel-control-opacity: .5;
-@carousel-control-font-size: 20px;
-
-@carousel-indicator-active-bg: #fff;
-@carousel-indicator-border-color: #fff;
-
-@carousel-caption-color: #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight: bold;
-@close-color: #000;
-@close-text-shadow: 0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color: #c7254e;
-@code-bg: #f9f2f4;
-
-@kbd-color: #fff;
-@kbd-bg: #333;
-
-@pre-bg: #f5f5f5;
-@pre-color: @gray-dark;
-@pre-border-color: #ccc;
-@pre-scrollable-max-height: 340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted: @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color: @gray-light;
-//** Headings small color
-@headings-small-color: @gray-light;
-//** Blockquote small color
-@blockquote-small-color: @gray-light;
-//** Blockquote font size
-@blockquote-font-size: (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color: @gray-lighter;
-//** Page header border color
-@page-header-border-color: @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset: @component-offset-horizontal;
-//** Point at which .dl-horizontal becomes horizontal
-@dl-horizontal-breakpoint: @grid-float-breakpoint;
-//** Horizontal line color.
-@hr-border: @gray-lighter;
diff --git a/library/font_awesome/src/assets/less/bootstrap-3.3.5/wells.less b/library/font_awesome/src/assets/less/bootstrap-3.3.5/wells.less
deleted file mode 100644
index 15d072b0c..000000000
--- a/library/font_awesome/src/assets/less/bootstrap-3.3.5/wells.less
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Wells
-// --------------------------------------------------
-
-
-// Base class
-.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: @well-bg;
- border: 1px solid @well-border;
- border-radius: @border-radius-base;
- .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
- blockquote {
- border-color: #ddd;
- border-color: rgba(0,0,0,.15);
- }
-}
-
-// Sizes
-.well-lg {
- padding: 24px;
- border-radius: @border-radius-large;
-}
-.well-sm {
- padding: 9px;
- border-radius: @border-radius-small;
-}
diff --git a/library/font_awesome/src/assets/less/gandy-grid/grid.less b/library/font_awesome/src/assets/less/gandy-grid/grid.less
deleted file mode 100644
index 7aca7dbb7..000000000
--- a/library/font_awesome/src/assets/less/gandy-grid/grid.less
+++ /dev/null
@@ -1,43 +0,0 @@
-.gg { .gg(); }
-.gg-fixed { table-layout: fixed; }
-.gg-col { .gg-col(); }
-.gg-row { display: table-row; }
-.gg-min-width { width: 1%; }
-
-.gg-top { vertical-align: top; }
-.gg-middle { vertical-align: middle; }
-.gg-bottom { vertical-align: bottom; }
-
-.gg-padded {
- margin-left: -1rem;
- margin-right: -1rem;
- .gg { border-spacing: 1rem 0; }
-}
-
-.gg-col-1,
-.gg-col-2,
-.gg-col-3,
-.gg-col-4,
-.gg-col-5,
-.gg-col-6,
-.gg-col-7,
-.gg-col-8,
-.gg-col-9,
-.gg-col-10,
-.gg-col-11,
-.gg-col-12 {
- .gg-col();
-}
-
-.gg-col-1 { .gg-make-col(1,12); }
-.gg-col-2 { .gg-make-col(2,12); }
-.gg-col-3 { .gg-make-col(3,12); }
-.gg-col-4 { .gg-make-col(4,12); }
-.gg-col-5 { .gg-make-col(5,12); }
-.gg-col-6 { .gg-make-col(6,12); }
-.gg-col-7 { .gg-make-col(7,12); }
-.gg-col-8 { .gg-make-col(8,12); }
-.gg-col-9 { .gg-make-col(9,12); }
-.gg-col-10 { .gg-make-col(10,12); }
-.gg-col-11 { .gg-make-col(11,12); }
-.gg-col-12 { .gg-make-col(12,12); }
diff --git a/library/font_awesome/src/assets/less/gandy-grid/mixins.less b/library/font_awesome/src/assets/less/gandy-grid/mixins.less
deleted file mode 100644
index 49c774998..000000000
--- a/library/font_awesome/src/assets/less/gandy-grid/mixins.less
+++ /dev/null
@@ -1,18 +0,0 @@
-.gg {
- display: table;
- width: 100%;
- vertical-align: middle;
-}
-
-.gg-col {
- display: table-cell;
- vertical-align: inherit;
-}
-
-.gg-vertical-align(@align) {
- vertical-align: @align;
-}
-
-.gg-make-col(@column-width, @total-columns) {
- width: (100% / @total-columns * @column-width);
-}
diff --git a/library/font_awesome/src/assets/less/site.less b/library/font_awesome/src/assets/less/site.less
deleted file mode 100644
index a9e13f6ee..000000000
--- a/library/font_awesome/src/assets/less/site.less
+++ /dev/null
@@ -1,45 +0,0 @@
----
----
-@import "bootstrap-{{ site.bootstrap.version }}/bootstrap";
-
-@import "gandy-grid/mixins";
-@import "gandy-grid/grid";
-
-@import "site/bootstrap/variables";
-@import "site/bootstrap/navbar";
-@import "site/bootstrap/buttons";
-@import "site/bootstrap/jumbotron";
-@import "site/bootstrap/wells";
-@import "site/bootstrap/labels";
-@import "site/bootstrap/type";
-@import "site/bootstrap/alerts";
-@import "site/bootstrap/tooltip";
-@import "site/bootstrap/panels";
-@import "site/bootstrap/modals";
-
-@import "site/layout";
-@import "site/social-buttons";
-@import "site/jumbotron-carousel";
-@import "site/stripe-ad";
-@import "site/search";
-@import "site/fontawesome-icon-list";
-@import "site/feature-list";
-@import "site/example-rating";
-@import "site/footer";
-@import "site/lazy";
-@import "site/textured-bg";
-@import "site/banner-ad";
-@import "site/fusion-ad";
-@import "site/bsap-ad";
-@import "site/sumome";
-@import "site/algolia";
-@import "site/kickstarter";
-
-@import "site/views";
-@import "site/store";
-
-@import "site/responsive/screen-lg";
-@import "site/responsive/screen-md";
-@import "site/responsive/screen-sm";
-@import "site/responsive/screen-sm-up";
-@import "site/responsive/screen-xs";
diff --git a/library/font_awesome/src/assets/less/site/algolia.less b/library/font_awesome/src/assets/less/site/algolia.less
deleted file mode 100644
index d97fe5950..000000000
--- a/library/font_awesome/src/assets/less/site/algolia.less
+++ /dev/null
@@ -1,12 +0,0 @@
-.algolia {
- margin-top: -20px;
- padding-top: 49px;
- a {
- color: @text-color;
- &:hover { color: @link-hover-color; }
- }
- .fas-algolia {
- font-size: 32px;
- vertical-align: middle;
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/banner-ad.less b/library/font_awesome/src/assets/less/site/banner-ad.less
deleted file mode 100644
index e544ed0be..000000000
--- a/library/font_awesome/src/assets/less/site/banner-ad.less
+++ /dev/null
@@ -1,270 +0,0 @@
-#banner {
- color: #fff;
- .message-container {
- display: table;
- width: auto;
- margin: 0 auto;
- padding: 15px 0;
- }
- .tagline, .action {
- display: table-cell;
- vertical-align: middle;
- }
- .tagline {
- font-weight: 200;
- font-size: 16px;
- padding-right: 30px;
- }
-
- &.font-awesome-survey {
- @survey-bg: #8E8F94;
- background-color: @survey-bg;
- border-bottom: solid 1px mix(@survey-bg, #fff, 95%);
-
- .btn-primary {
- @color: mix(#fff,@survey-bg,80%);
- @background: darken(@survey-bg, 15%);
- @border: darken(@background, 15%);
- font-weight: bold;
- color: @color;
- background-color: @background;
- border-color: @border;
- border-bottom-width: 2px;
- text-shadow: none;
- border-radius: 4px;
-
- &:hover,
- &:focus,
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- color: #fff;
- background-color: darken(@border, 10%);
- border-color: darken(@border, 20%);
- border-bottom-color: darken(@border, 30%);
- }
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- background-image: none;
- }
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &:active,
- &.active {
- background-color: @background;
- border-color: @border;
- }
- }
- }
-
-
- }
-
- &.black-tie {
- @black-tie-bg: #2E2E2E;
- background-color: @black-tie-bg;
- border-bottom: solid 1px mix(@black-tie-bg, #fff, 95%);
-
- .btn-primary {
- @color: mix(#fff, @black-tie-bg, 85%);
- @background: darken(@black-tie-bg, 5%);
- @border: darken(@black-tie-bg, 10%);
- font-weight: bold;
- color: @color;
- background-color: @background;
- border-color: @border;
- border-bottom-width: 2px;
- text-shadow: none;
- border-radius: 4px;
-
- &:hover,
- &:focus,
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- color: #fff;
- background-color: darken(@background, 5%);
- border-color: darken(@border, 12%);
- border-bottom-color: darken(@border, 18%);
- }
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- background-image: none;
- }
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &:active,
- &.active {
- background-color: @background;
- border-color: @border;
- }
- }
- }
- }
-
- &.fort-awesome {
- @fort-awesome-color: #1C1E29;
- @fort-awesome-color-accent: #525879;
- @fort-awesome-bg: #2d2f39;
- background-color: @fort-awesome-bg;
- border-bottom: solid 1px mix(@fort-awesome-bg, #000, 15%);
- .btn-primary {
- @color: #fff;
- @background: #ff8c52;
- @border: rgba(0,0,0,0.2);
- font-weight: bold;
- color: @color;
- background-color: @background;
- border-color: @border;
- border-bottom-width: 2px;
- text-shadow: none;
- border-radius: 4px;
-
- &:hover,
- &:focus,
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- color: #fff;
- background-color: #e67e4a;
- border-color: rgba(0,0,0,0.296);
- border-bottom-color: rgba(0,0,0,0.296);
- }
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- background-image: none;
- }
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &:active,
- &.active {
- background-color: @background;
- border-color: @border;
- }
- }
- }
- }
-
- &.symbolset {
- @symbolset-bg: desaturate(#866cba,5%);
- background-color: @symbolset-bg;
- border-bottom: rgba(0,0,0,0.2);
- a:not(.btn) {
- text-decoration: underline;
- color: #fff;
- &:hover { color: rgba(255,255,255,.8); }
- }
- .btn-primary {
- @color: @symbolset-bg;
- @background: #fff;
- @border: mix(#000,@symbolset-bg,10%);
- font-weight: bold;
- color: @color;
- background-color: @background;
- border-color: @border;
- border-bottom-width: 2px;
- text-shadow: none;
- border-radius: 4px;
-
- &:hover,
- &:focus,
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- color: #fff;
- background-color: rgba(0,0,0,0.2);
- border-color: rgba(0,0,0,0.2);
- border-bottom-color: rgba(0,0,0,0.2);
- }
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- background-image: none;
- }
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &:active,
- &.active {
- background-color: @background;
- border-color: @border;
- }
- }
- }
- }
-
- &.kickstarter {
- @kickstarter-bg: #489fdf;
- background-color: @kickstarter-bg;
- border-bottom: rgba(0,0,0,0.2);
- .message-container { padding: 40px 0; }
- .tagline { font-size: 24px; }
- a:not(.btn) {
- text-decoration: underline;
- color: #fff;
- &:hover { color: rgba(255,255,255,.8); }
- }
- .btn-primary {
- @color: @kickstarter-bg;
- @background: #fff;
- @border: mix(#000,@kickstarter-bg,10%);
- font-weight: 600;
- font-size: 22px;
- padding: 14px 28px;
- border-radius: 30px;
-
- color: @color;
- background-color: @background;
- border-color: @border;
- border-bottom-width: 2px;
- text-shadow: none;
-
- &:hover,
- &:focus,
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- color: #fff;
- background-color: rgba(0,0,0,0.2);
- border-color: rgba(0,0,0,0.2);
- border-bottom-color: rgba(0,0,0,0.2);
- }
- &:active,
- &.active,
- .open > &.dropdown-toggle {
- background-image: none;
- }
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- &,
- &:hover,
- &:focus,
- &:active,
- &.active {
- background-color: @background;
- border-color: @border;
- }
- }
- }
- }
-
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/alerts.less b/library/font_awesome/src/assets/less/site/bootstrap/alerts.less
deleted file mode 100644
index db79469e1..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/alerts.less
+++ /dev/null
@@ -1,5 +0,0 @@
-.alert-link { text-decoration: underline; }
-
-.alert-default { .alert-variant(@alert-default-bg, @alert-default-border, @alert-default-text); }
-.alert-well { .alert-variant(@alert-well-bg, @alert-well-border, @alert-well-text); }
-.alert-well-alt { .alert-variant(@well-bg, @table-border-color, mix(@text-muted,@text-color,50%)); }
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/buttons.less b/library/font_awesome/src/assets/less/site/bootstrap/buttons.less
deleted file mode 100644
index b61fea70d..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/buttons.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.btn { box-shadow: inset 0 1px 0 rgba(255,255,255,0.2); }
-.btn-default { text-shadow: 0 1px 0 #fff; }
-.btn-primary, .btn-success, .btn-warning, .btn-danger, .btn-info { text-shadow: 0 1px 0 rgba(0,0,0,0.2); } \ No newline at end of file
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/jumbotron.less b/library/font_awesome/src/assets/less/site/bootstrap/jumbotron.less
deleted file mode 100644
index a04420b72..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/jumbotron.less
+++ /dev/null
@@ -1,87 +0,0 @@
-.jumbotron {
- background-color: lighten(@jumbotron-bg, 2%);
- border-top: 1px solid mix(@jumbotron-bg, @jumbotron-color, 90%);
- border-bottom: 1px solid @jumbotron-border;
- margin-bottom: 0;
- &, h1 { color: @jumbotron-color; }
- padding: 50px 0 40px;
-
- h1 {
- font-size: 80px;
- letter-spacing: -2px;
- line-height: 1;
- margin: 0 0 15px;
- }
- p {
- font-family: @font-family-alt;
- margin-top: 15px;
- margin-bottom: 15px;
- font-size: 24px;
- line-height: 1.3;
- font-weight: lighter;
- }
-
- .list-group-item {
- border-color: mix(@jumbotron-color, @fa-green, 15%);
- background: transparent;
- }
-
- .text-muted {
- color: mix(@jumbotron-color, @fa-green, 45%);
- }
-}
-
-.jumbotron-ad, .jumbotron-carousel {
- h1 {
- text-shadow: 4px 3px 0px @jumbotron-bg, 9px 8px 0px rgba(0,0,0,0.15); // double text shadow
- }
- p {
- color: mix(@jumbotron-color, @jumbotron-bg, 75%);
- text-shadow: 0 1px 0 rgba(0,0,0,0.15);
- }
-}
-
-.jumbotron-icon {
- padding: 30px 0 25px;
- background-color: @gray-lighter;
- color: @gray-darker;
- &, h1 { text-shadow: 0 1px 0 #fff; }
- border-bottom-color: mix(@gray-light, @gray-lighter, 25%);
- border-top-color: mix(#fff, @gray-lighter, 50%);
- h1 {
- color: @gray-darker;
- margin-top: @buffer-lg;
- small {
- letter-spacing: normal;
- font-family: @font-family-sans-serif;
- font-size: @font-size-base;
- margin-left: 20px;
- }
- }
-
- .info-icons {
- font-size: @font-size-base;
- }
- .info-details {
- float: left;
- p {
- margin: 25px 0;
- font-weight: bold;
- }
- .dl-horizontal {
- dt { width: @component-offset-horizontal - 100; }
- dd { margin-left: @component-offset-horizontal - 85; }
- }
- }
- .fa-2 { font-size: 2em; }
- .fa-3 { font-size: 4em; }
- .fa-4 { font-size: 7em; }
- .fa-5 { font-size: 12em; }
- .fa-6 { font-size: 20em; }
-
- .fa-1, .fa-2, .fa-3, .fa-4, .fa-5, .fa-6 { margin-right: 1/14em; }
-}
-
-h1.info-class {
- font-size: 30px;
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/labels.less b/library/font_awesome/src/assets/less/site/bootstrap/labels.less
deleted file mode 100644
index d0d12dcf8..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/labels.less
+++ /dev/null
@@ -1,21 +0,0 @@
-// reset
-.label {
- padding: .3em .6em;
-}
-
-// new types of labels
-.label-brand {
- .label-variant(@label-brand-bg);
-}
-
-.label-dark {
- .label-variant(@label-dark-bg);
-}
-
-// labels inside of headings
-h1, h2, h3, h4, h5, h6 {
-
- .label {
- font-family: @font-family-sans-serif;
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/modals.less b/library/font_awesome/src/assets/less/site/bootstrap/modals.less
deleted file mode 100644
index 275e40c8a..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/modals.less
+++ /dev/null
@@ -1,6 +0,0 @@
-
-// Scale up the modal
-@media (min-width: @screen-sm-min) {
- // Modal sizes
- .modal-md { width: ((@modal-md + @modal-sm) / 2); }
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/navbar.less b/library/font_awesome/src/assets/less/site/bootstrap/navbar.less
deleted file mode 100644
index 32167270f..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/navbar.less
+++ /dev/null
@@ -1,179 +0,0 @@
-// SITE SPECIFIC NAVBAR STYLES
-
-.navbar { margin-bottom: 0; }
-.navbar-inverse { background-color: lighten(@fa-green, 2%); }
-.navbar-brand {
- font-family: @font-family-serif;
- font-weight: 300;
- font-size: 20px;
- i {
- font-size: 23px;
- padding-right: 3px;
- line-height: .75;
- }
-}
-.navbar-nav > li > a { padding: 11px 10px 9px; }
-
-// makes dropdowns closer for split dropdown
-.navbar-nav > li {
- &.dropdown-split-right > a { padding-left: 7px; }
- &.dropdown-split-left > a { padding-right: 0; }
-}
-
-.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { border-color: @jumbotron-border; }
-
-.navbar-inverse .navbar-toggle {
- color: @jumbotron-color;
- text-shadow: 0 1px 0 rgba(0,0,0,0.15);
- padding: 4px 10px;
- margin-top: 5px;
- margin-bottom: 5px;
- &:hover {
- background-color: mix(@jumbotron-color, @jumbotron-bg, 95%);
- border-color: mix(@jumbotron-color, @jumbotron-bg, 95%);
- color: @jumbotron-bg;
- text-shadow: 0 -1px 0 @jumbotron-color;
- }
-}
-
-.navbar-nav.navbar-right:last-child { margin-right: -10px; }
-
-
-//
-// FORT AWESOME ORG NAVBAR
-// --------------------
-//
-.navbar-org {
- background-color: @navbar-inverse-link-active-bg;
- border-color: mix(#000, @fa-green, 20%);
- padding: 0;
-
- .ficon-logo-flag, .ficon-log-fort { vertical-align: baseline; }
-
- .navbar-text {
- color: mix(#fff, @fa-green, 60%);
- margin-top: 12px;
- margin-right: 30px;
- }
-
- .navbar-nav {
- margin-right: -10px;
-
- > li + li { margin-left: 15px; }
- > li > a {
- color: mix(#fff, @navbar-inverse-bg, 75%);
-
- &:hover,
- &:focus {
- color: mix(#fff, @fa-green, 100%);
- background-color: transparent;
- border-bottom: solid 2px mix(#fff, @fa-green, 90%);
- }
- }
- > .active > a {
- &,
- &:hover,
- &:focus {
- color: mix(#fff, @navbar-inverse-bg, 75%);
- background-color: transparent;
- border-radius: 0;
- border-bottom: solid 2px mix(#fff, @navbar-inverse-bg, 65%);
- }
- }
- > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-disabled-color;
- background-color: @navbar-inverse-link-disabled-bg;
- }
- }
- }
-
- // Darken the responsive nav toggle
- .navbar-toggle {
- border-color: @navbar-inverse-toggle-border-color;
- &:hover,
- &:focus {
- background-color: @navbar-inverse-toggle-hover-bg;
- }
- .icon-bar {
- background-color: @navbar-inverse-toggle-icon-bar-bg;
- }
- }
-
- .navbar-collapse,
- .navbar-form {
- border-color: darken(@navbar-inverse-bg, 7%);
- }
-
- // Dropdowns
- .navbar-nav {
- > .open > a {
- &,
- &:hover,
- &:focus {
- background-color: @navbar-inverse-link-active-bg;
- color: @navbar-inverse-link-active-color;
- }
- }
-
- @media (max-width: @grid-float-breakpoint-max) {
- // Dropdowns get custom display
- .open .dropdown-menu {
- > .dropdown-header {
- border-color: @navbar-inverse-border;
- }
- .divider {
- background-color: @navbar-inverse-border;
- }
- > li > a {
- color: @navbar-inverse-link-color;
- &:hover,
- &:focus {
- color: @navbar-inverse-link-hover-color;
- background-color: @navbar-inverse-link-hover-bg;
- }
- }
- > .active > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-active-color;
- background-color: @navbar-inverse-link-active-bg;
- }
- }
- > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: @navbar-inverse-link-disabled-color;
- background-color: @navbar-inverse-link-disabled-bg;
- }
- }
- }
- }
- }
-
- .navbar-link {
- color: @navbar-inverse-link-color;
- &:hover {
- color: @navbar-inverse-link-hover-color;
- }
- }
-
- .btn-link {
- color: @navbar-inverse-link-color;
- &:hover,
- &:focus {
- color: @navbar-inverse-link-hover-color;
- }
- &[disabled],
- fieldset[disabled] & {
- &:hover,
- &:focus {
- color: @navbar-inverse-link-disabled-color;
- }
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/panels.less b/library/font_awesome/src/assets/less/site/bootstrap/panels.less
deleted file mode 100644
index f2dc21009..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/panels.less
+++ /dev/null
@@ -1,15 +0,0 @@
-.panel {
- .box-shadow(none);
-}
-
-.panel-heading {
- margin: -1px;
- border-bottom-width: 0;
- padding: 11px 15px;
-}
-
-.panel-default .panel-heading {
- margin: 0;
- border-bottom-width: 1px;
- padding: 10px 15px;
-} \ No newline at end of file
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/tooltip.less b/library/font_awesome/src/assets/less/site/bootstrap/tooltip.less
deleted file mode 100644
index 5a7087141..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/tooltip.less
+++ /dev/null
@@ -1,8 +0,0 @@
-.tooltip {
- font-size: @font-size-base;
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
- padding: 5px 10px;
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/type.less b/library/font_awesome/src/assets/less/site/bootstrap/type.less
deleted file mode 100644
index b7d5f9b03..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/type.less
+++ /dev/null
@@ -1,26 +0,0 @@
-.small-caps {
- font-family: @font-family-alt;
-}
-
-.hr {
- position: relative;
- text-align: center;
- font-size: @font-size-base;
- z-index: 1;
- min-height: 20px;
-
- &:after {
- content: " ";
- position: absolute;
- top: 50%;
- left: 0;
- right: 0;
- border-top: 2px solid @hr-border;
- z-index: -1;
- }
- .hr-text {
- display: inline-block;
- background-color: #fff;
- padding: 0 .5em;
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/variables.less b/library/font_awesome/src/assets/less/site/bootstrap/variables.less
deleted file mode 100644
index 0cb005b4b..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/variables.less
+++ /dev/null
@@ -1,171 +0,0 @@
----
----
-// SITE VARIABLES
-// --------------
-
-// Blues
-@blue-darker: #003366;
-@blue-dark: #005f9b; // Pantone 3015 C
-@blue: #009add; // Pantone 2925 C
-@blue-light: #b8dcf2;
-@blue-lighter: #f0f9ff;
-
-// Greens
-@green-darker: #41683b;
-@green-dark: #678943;
-@green: #95bf52;
-@green-light: #ddefbd;
-@green-lighter: #f3f9e8;
-
-// Reds
-@red-darker: #702222;
-@red-dark: #ba4a4a;
-@red: #dd7373;
-@red-light: #f2adb1;
-@red-lighter: #fff0f0;
-
-// Yellows
-@yellow-darker: #6f4215;
-@yellow-dark: #db8400;
-@yellow: #f9e27d;
-@yellow-light: #fff5bd;
-@yellow-lighter: #fffcee;
-
-// Oranges
-@orange-darker: #8c3900;
-@orange-dark: #cc5d11;
-@orange: #f4914e;
-@orange-light: #ffd0a6;
-@orange-lighter: #fff4e6;
-
-// Purples
-@purple-darker: #4a226d;
-@purple-dark: #7457ad;
-@purple: #9780d6;
-@purple-light: #c3b8f4;
-@purple-lighter: #fbf5ff;
-
-@fa-green: #1d9d74;
-@fa-green-dark: darken(@fa-green, 10%);
-
-@jumbotron-border: mix(@fa-green, @fa-green-dark, 75%);
-@font-family-alt: proxima-nova-sc, "Helvetica Neue", Helvetica, Arial, sans-serif;
-
-
-// BOOTSTRAP OVERRIDES
-// -------------------
-
-// Brand colors
-@brand-success: @fa-green;
-
-
-// Links
-@link-color: lighten(@fa-green, 5%);
-@link-hover-color: darken(@fa-green, 5%);
-
-
-// Typography
-@font-family-sans-serif: proxima-nova, "Helvetica Neue", Helvetica, Arial, sans-serif;
-@font-family-serif: museo-slab, Georgia, "Times New Roman", Times, serif;
-@headings-font-family: @font-family-serif;
-
-
-// Components
-@component-active-bg: @fa-green;
-
-
-// Labels
-@label-brand-bg: @fa-green;
-@label-dark-bg: @gray-dark;
-
-// Navbar
-@navbar-height: 40px;
-@navbar-inverse-brand-color: #fff;
-
-// Reset inverted navbar basics
-@navbar-inverse-color: mix(@fa-green, #fff, 50%);
-@navbar-inverse-bg: @fa-green;
-@navbar-inverse-border: @jumbotron-border;
-
-// Inverted navbar links
-@navbar-inverse-link-color: mix(@fa-green, #fff, 35%);
-@navbar-inverse-link-hover-color: #fff;
-@navbar-inverse-link-active-bg: @navbar-inverse-border;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg: @jumbotron-color;
-@navbar-inverse-toggle-border-color: mix(@jumbotron-color, @fa-green, 75%);
-
-
-// Jumbotron
-@jumbotron-color: #fff;
-@jumbotron-bg: @fa-green;
-
-
-// Form states and alerts
-@state-success-text: @fa-green;
-@state-success-bg: mix(@fa-green, #fff, 6%);
-@state-success-border: darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text: mix(@blue-dark, @blue, 50%);
-@state-info-bg: @blue-lighter;
-@state-info-border: darken(spin(@state-info-bg, -10), 7%);
-
- @state-danger-text: @brand-danger;
-@state-danger-bg: mix(@state-danger-text,#fff,10%);
-@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
-
-
-// Carousel
-@carousel-text-shadow: 0 1px 0 rgba(255,255,255,0.25);
-
-@carousel-control-color: @fa-green-dark;
-@carousel-control-font-size: 30px;
-
-
-// Code
-@pre-border-color: #eee;
-
-
-// Sections
-@section-emphasized-bg: #fff;
-
-//== Type
-//** Text muted color
-@text-muted: mix(@gray-light,@gray-lighter,50%);
-
-
-@alert-well-bg: @panel-default-heading-bg;
-@alert-well-text: @text-color;
-@alert-well-border: @panel-default-border;
-
-@alert-default-bg: transparent;
-@alert-default-text: @text-color;
-@alert-default-border: mix(#fff,@panel-default-border,40%);
-
-
-
-
-//@panel-default-text: @gray-dark;
-//@panel-default-border: @panel-default-heading-bg;
-//@panel-default-heading-bg: #f5f5f5;
-
-@panel-primary-text: #fff;
-@panel-primary-border: mix(#fff,@brand-primary,50%);
-@panel-primary-heading-bg: @brand-primary;
-
-@panel-success-text: #fff;
-@panel-success-border: mix(#fff,@brand-success,50%);
-@panel-success-heading-bg: @brand-success;
-
-@panel-info-text: #fff;
-@panel-info-border: mix(#fff,@brand-info,50%);
-@panel-info-heading-bg: @brand-info;
-
-@panel-warning-text: #fff;
-@panel-warning-border: mix(#fff,@brand-warning,50%);
-@panel-warning-heading-bg: @brand-warning;
-
-@panel-danger-text: #fff;
-@panel-danger-border: mix(#fff,@brand-danger,50%);
-@panel-danger-heading-bg: @brand-danger;
diff --git a/library/font_awesome/src/assets/less/site/bootstrap/wells.less b/library/font_awesome/src/assets/less/site/bootstrap/wells.less
deleted file mode 100644
index cd2b24ebd..000000000
--- a/library/font_awesome/src/assets/less/site/bootstrap/wells.less
+++ /dev/null
@@ -1,10 +0,0 @@
-.well-transparent { background-color: transparent; }
-
-.well-lg {
- padding: @buffer-xl;
- font-size: @font-size-large + 3;
- h1 { font-size: 3em; }
- h2 { font-size: 2em; }
- h1, h2 { margin-top: 0; }
- p { margin-bottom: 30px; }
-}
diff --git a/library/font_awesome/src/assets/less/site/bsap-ad.less b/library/font_awesome/src/assets/less/site/bsap-ad.less
deleted file mode 100644
index 387f98e04..000000000
--- a/library/font_awesome/src/assets/less/site/bsap-ad.less
+++ /dev/null
@@ -1,15 +0,0 @@
-div.bsap {
- margin-bottom: 20px;
- a {
- display: inline-block !important;
- border-bottom: inherit !important;
- margin: 0 15px 20px !important;
- }
- a.adhere {
- background: inherit !important;
- border: 1px solid #ccc !important;
- &:hover {
- background: mix(#000,@jumbotron-bg,15%) !important;
- }
- }
-} \ No newline at end of file
diff --git a/library/font_awesome/src/assets/less/site/example-rating.less b/library/font_awesome/src/assets/less/site/example-rating.less
deleted file mode 100644
index 92fd968d0..000000000
--- a/library/font_awesome/src/assets/less/site/example-rating.less
+++ /dev/null
@@ -1,25 +0,0 @@
-.rating {
- unicode-bidi: bidi-override;
- direction: rtl;
-
- font-size: 30px;
- span.star {
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- &:hover {
- cursor: pointer;
- }
- }
- span.star:before {
- content: "\f006"; // empty star
- padding-right: 5px;
- color: @gray-light;
- }
-
- span.star:hover:before, span.star:hover ~ span.star:before {
- content: "\f005"; // solid star
- color: #e3cf7a;
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/feature-list.less b/library/font_awesome/src/assets/less/site/feature-list.less
deleted file mode 100644
index e8d4fefc7..000000000
--- a/library/font_awesome/src/assets/less/site/feature-list.less
+++ /dev/null
@@ -1,19 +0,0 @@
-.feature-list {
- .col-md-4 { margin-bottom: 22px; }
- h4 {
- .fa:before {
- vertical-align: -10%;
- font-size: 28px;
- display: inline-block;
- width: 30/28em;
- text-align: center;
- margin-right: 5px;
- // color: mix(@grayLight, @grayLighter, 70%);
-
- // Gradient on the icons
- // background: -webkit-linear-gradient(mix(@grayLight, @grayLighter, 50%), mix(@gray, @grayLight, 50%));
- // -webkit-background-clip: text;
- // -webkit-text-fill-color: transparent;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/fontawesome-icon-list.less b/library/font_awesome/src/assets/less/site/fontawesome-icon-list.less
deleted file mode 100644
index 49dc1b003..000000000
--- a/library/font_awesome/src/assets/less/site/fontawesome-icon-list.less
+++ /dev/null
@@ -1,33 +0,0 @@
-.fontawesome-icon-list {
- margin-top: 22px;
- .fa-hover {
- a {
- .text-ellipsis;
- display: block;
- color: @gray-darker;
- line-height: 32px;
- height: 32px;
- padding-left: 10px;
- border-radius: @border-radius-base;
-
- .fa {
- width: 32px;
- font-size: 14px;
- display: inline-block;
- text-align: right;
- margin-right: 10px;
- }
-
- &:hover {
- background-color: @fa-green;
- color: @jumbotron-color;
- text-decoration: none;
- .fa {
- font-size: 28px;
- vertical-align: -6px;
- }
- .text-muted { color: mix(@jumbotron-color, @fa-green, 70%); }
- }
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/footer.less b/library/font_awesome/src/assets/less/site/footer.less
deleted file mode 100644
index bf895b338..000000000
--- a/library/font_awesome/src/assets/less/site/footer.less
+++ /dev/null
@@ -1,55 +0,0 @@
-#footer {
- background-color: lighten(@fa-green, 2%);
- border-top: 1px solid @jumbotron-border;
- color: mix(@jumbotron-color, @fa-green, 60%);
- text-shadow: 0 1px 0 rgba(0,0,0,0.15);
- margin-top: 60px;
- a {
- color: mix(@jumbotron-color, @fa-green, 80%);
- border-bottom: dotted 1px mix(@jumbotron-color, @fa-green, 60%);
- &:hover {
- color: @jumbotron-color;
- text-decoration: none;
- border-bottom: solid 1px @jumbotron-color;
- }
- }
- .container {
- padding-top: 50px;
- padding-bottom: 55px;
- }
- .project { margin-top: 10px; }
-
- #inventory {
- a {
- width: 220px;
- overflow: hidden;
- display: inline-block;
- border-bottom: inherit;
- margin: 0 15px 20px;
-
- }
- #CVADP2Y { display: inline; }
- }
-}
-
-
-// Sticky Footer Styles
-// --------------------
-
-//html, body { height: 100%; }
-//
-//#wrap {
-// min-height: 100%;
-// height: auto !important;
-// height: 100%;
-//}
-//
-//.sticky-footer();
-//
-//.sticky-footer(@footer-height: 356px, @footer-margin: 60px) {
-// #wrap {
-// margin: 0 auto -(@footer-height);
-// padding: 0 0 (@footer-height + @footer-margin);
-// }
-// #footer { height: @footer-height; }
-//}
diff --git a/library/font_awesome/src/assets/less/site/fusion-ad.less b/library/font_awesome/src/assets/less/site/fusion-ad.less
deleted file mode 100644
index 41e446ad5..000000000
--- a/library/font_awesome/src/assets/less/site/fusion-ad.less
+++ /dev/null
@@ -1,27 +0,0 @@
-#fusionads {
- float: right;
- width: 300px;
- margin-left: 30px;
- .fusion-img {
- float: left;
- padding-right: 10px;
- }
- .fusion-poweredby {
- color: @gray-light;
- margin-top: 2px;
- font-size: 12px;
- display: block;
- }
-}
-
-.vertical-ad #fusionads {
- float: none;
- width: 130px;
- margin-left: 0;
- .fusion-img {
- float: none;
- display: block;
- padding-right: 0;
- padding-bottom: 10px;
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/jumbotron-carousel.less b/library/font_awesome/src/assets/less/site/jumbotron-carousel.less
deleted file mode 100644
index 880f4c5a6..000000000
--- a/library/font_awesome/src/assets/less/site/jumbotron-carousel.less
+++ /dev/null
@@ -1,71 +0,0 @@
-@size: 220px;
-#icon-carousel {
- margin-top: @buffer-sm;
- font-size: @size;
- text-align: center;
- line-height: @size + 30;
- text-shadow: 0 2px 0 rgba(0,0,0,0.15);
-}
-.carousel-control {
- top: @size + 10px;
- .square(30px);
- border-width: 0;
- font-size: 30px;
- line-height: 25px;
- left: 300/2 - 36px;
- &.right {
- left: auto;
- right: 300/2 - 36px;
- }
- &.right, &.left {
- background-image: none;
- filter: none;
- }
-}
-
-
-.jumbotron-carousel {
- padding-top: 40px;
- .btn {
- margin-top: @buffer-lg;
- font-family: @font-family-serif;
- font-size: 24px;
- padding: 17px 30px;
- color: @jumbotron-color;
- border-color: mix(@jumbotron-color, @jumbotron-bg, 75%);
- background-color: transparent;
- text-shadow: 0 1px 0 rgba(0,0,0,0.15);
- &:hover {
- background-color: mix(@jumbotron-color, @jumbotron-bg, 95%);
- border-color: mix(@jumbotron-color, @jumbotron-bg, 95%);
- color: @jumbotron-bg;
- text-shadow: 0 -1px 0 @jumbotron-color;
- }
- }
- .shameless-self-promotion {
- margin-top: @buffer-lg;
- font-size: @font-size-base;
- line-height: @line-height-base;
- color: mix(@jumbotron-color, @jumbotron-bg, 60%);
- text-shadow: 0 1px 0 rgba(0,0,0,0.15);
- a {
- color: mix(@jumbotron-color, @jumbotron-bg, 80%);
- border-bottom: dotted 1px mix(@jumbotron-color, @jumbotron-bg, 50%);
- &:hover {
- color: @jumbotron-color;
- text-decoration: none;
- border-bottom: solid 1px @jumbotron-color;
- }
- }
- }
- a {
- color: mix(@jumbotron-color, @fa-green, 70%);
-
- // STATE: hover, focus, active
- &:hover, &:focus, &:active {
- border-color: @fa-green-dark;
- background: @fa-green-dark;
- color: @jumbotron-color;
- }
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/kickstarter.less b/library/font_awesome/src/assets/less/site/kickstarter.less
deleted file mode 100644
index 689a8c04a..000000000
--- a/library/font_awesome/src/assets/less/site/kickstarter.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.btn-kickstarter {
- .button-variant(#fff, #489fdf, mix(#000,#489fdf,10%));
-}
diff --git a/library/font_awesome/src/assets/less/site/layout.less b/library/font_awesome/src/assets/less/site/layout.less
deleted file mode 100644
index 69cc0b4d4..000000000
--- a/library/font_awesome/src/assets/less/site/layout.less
+++ /dev/null
@@ -1 +0,0 @@
-section { margin-top: 40px; }
diff --git a/library/font_awesome/src/assets/less/site/lazy.less b/library/font_awesome/src/assets/less/site/lazy.less
deleted file mode 100644
index 5f6461d8f..000000000
--- a/library/font_awesome/src/assets/less/site/lazy.less
+++ /dev/null
@@ -1,113 +0,0 @@
-@buffer-none: 0px;
-@buffer-sm: 5px;
-@buffer-md: 10px;
-@buffer-lg: 22px;
-@buffer-xl: 40px;
-
-.padding-none { padding: @buffer-none !important; }
-.padding { padding: @buffer-md !important; }
-.padding-sm { padding: @buffer-sm !important; }
-.padding-lg { padding: @buffer-lg !important; }
-.padding-xl { padding: @buffer-xl !important; }
-
-.padding-top-none { padding-top: @buffer-none !important; }
-.padding-top { padding-top: @buffer-md !important; }
-.padding-top-sm { padding-top: @buffer-sm !important; }
-.padding-top-lg { padding-top: @buffer-lg !important; }
-.padding-top-xl { padding-top: @buffer-xl !important; }
-
-.padding-right-none { padding-right: @buffer-none !important; }
-.padding-right { padding-right: @buffer-md !important; }
-.padding-right-sm { padding-right: @buffer-sm !important; }
-.padding-right-lg { padding-right: @buffer-lg !important; }
-.padding-right-xl { padding-right: @buffer-xl !important; }
-
-.padding-bottom-none { padding-bottom: @buffer-none !important; }
-.padding-bottom { padding-bottom: @buffer-md !important; }
-.padding-bottom-sm { padding-bottom: @buffer-sm !important; }
-.padding-bottom-lg { padding-bottom: @buffer-lg !important; }
-.padding-bottom-xl { padding-bottom: @buffer-xl !important; }
-
-.padding-left-none { padding-left: @buffer-none !important; }
-.padding-left { padding-left: @buffer-md !important; }
-.padding-left-sm { padding-left: @buffer-sm !important; }
-.padding-left-lg { padding-left: @buffer-lg !important; }
-.padding-left-xl { padding-left: @buffer-xl !important; }
-
-.margin-none { margin: @buffer-none !important; }
-.margin { margin: @buffer-md !important; }
-.margin-sm { margin: @buffer-sm !important; }
-.margin-lg { margin: @buffer-lg !important; }
-.margin-xl { margin: @buffer-xl !important; }
-
-.margin-top-none { margin-top: @buffer-none !important; }
-.margin-top { margin-top: @buffer-md !important; }
-.margin-top-sm { margin-top: @buffer-sm !important; }
-.margin-top-lg { margin-top: @buffer-lg !important; }
-.margin-top-xl { margin-top: @buffer-xl !important; }
-
-.margin-right-none { margin-right: @buffer-none !important; }
-.margin-right { margin-right: @buffer-md !important; }
-.margin-right-sm { margin-right: @buffer-sm !important; }
-.margin-right-lg { margin-right: @buffer-lg !important; }
-.margin-right-xl { margin-right: @buffer-xl !important; }
-
-.margin-bottom-none { margin-bottom: @buffer-none !important; }
-.margin-bottom { margin-bottom: @buffer-md !important; }
-.margin-bottom-sm { margin-bottom: @buffer-sm !important; }
-.margin-bottom-lg { margin-bottom: @buffer-lg !important; }
-.margin-bottom-xl { margin-bottom: @buffer-xl !important; }
-
-.margin-left-none { margin-left: @buffer-none !important; }
-.margin-left { margin-left: @buffer-md !important; }
-.margin-left-sm { margin-left: @buffer-sm !important; }
-.margin-left-lg { margin-left: @buffer-lg !important; }
-.margin-left-xl { margin-left: @buffer-xl !important; }
-
-.border-left-none { border-left: none !important; }
-.border-right-none { border-right: none !important; }
-.border-bottom-none { border-bottom: none !important; }
-.border-top-none { border-top: none !important; }
-
-.text-sm { font-size: @font-size-small !important; }
-.text-base { font-size: @font-size-base !important; }
-.text-md { font-size: @font-size-base + 2 !important; }
-.text-lg { font-size: @font-size-large !important; }
-
-
-.display-block { display: block; } // use to swap an anchor tag to span a whole row to make click target larger
-.no-underline { text-decoration: none !important; }
-.clickable { cursor: pointer; }
-.strong { font-weight: bold; }
-.em { font-style: italic; }
-.small { font-size: 85%; } // Ex: 14px base font * 85% = about 12px
-.no-link { color: @gray-dark; }
-
-.text-sans-serif { font-family: @font-family-sans-serif; }
-.text-ellipsis { .text-overflow(); } // truncates text to a single line with an ellipsis at the end
-.text-default {
- font-family: @font-family-base;
- font-size: @font-size-base;
- line-height: @line-height-base;
- font-weight: normal;
-}
-.text-color-default {
- color: @text-color;
-}
-.text-hilite {
- color: @link-color;
- &:hover {
- color: @link-hover-color;
- text-decoration: underline;
- }
-}
-.text-strike { text-decoration: line-through; }
-.text-upper { text-transform: uppercase; }
-.text-lower { text-transform: lowercase; }
-
-#no-search-results {
- display: none;
-}
-
-.valign-baseline { vertical-align: baseline !important; }
-.valign-middle { vertical-align: middle !important; }
diff --git a/library/font_awesome/src/assets/less/site/responsive/screen-lg.less b/library/font_awesome/src/assets/less/site/responsive/screen-lg.less
deleted file mode 100644
index ae404bb8e..000000000
--- a/library/font_awesome/src/assets/less/site/responsive/screen-lg.less
+++ /dev/null
@@ -1,58 +0,0 @@
-@media (min-width: @screen-lg) {
- #icon-carousel {
- @size: 240px;
- font-size: @size;
- line-height: @size + 35;
- margin-top: @buffer-lg;
- }
-
- .carousel-control {
- top: @size + 35px;
- .square(40px);
- font-size: 40px;
- line-height: 40px;
- left: 370/2 - 52px;
- &.right {
- right: 370/2 - 52px;
- }
- }
-
- .jumbotron-ad {
- padding: 50px 0;
- h1 {
- margin-top: 25px;
- font-size: 90px;
- }
- p {
- font-size: 28px;
- margin: 35px 0 20px;
- }
- }
-
- .jumbotron-carousel {
- padding: 50px 0;
- h1 { font-size: 100px; }
- p {
- font-size: 32px;
- margin: 20px 0;
- }
- .btn-large {
- font-size: 30px;
- padding: 21px 35px;
- }
- }
-
- .stripe-ad .lead { padding-top: 0; }
-
- .lead {
- font-size: 26px;
- line-height: 36px;
- }
-
- .fort-awesome {
- .tagline { }
- .action { width: 18%; }
- }
-
- .hide-lg { display: none; }
-}
diff --git a/library/font_awesome/src/assets/less/site/responsive/screen-md.less b/library/font_awesome/src/assets/less/site/responsive/screen-md.less
deleted file mode 100644
index bc46917fb..000000000
--- a/library/font_awesome/src/assets/less/site/responsive/screen-md.less
+++ /dev/null
@@ -1,3 +0,0 @@
-@media (min-width: @screen-md) and (max-width: @screen-md-max) {
- .hide-md { display: none; }
-}
diff --git a/library/font_awesome/src/assets/less/site/responsive/screen-sm-up.less b/library/font_awesome/src/assets/less/site/responsive/screen-sm-up.less
deleted file mode 100644
index b7037e54d..000000000
--- a/library/font_awesome/src/assets/less/site/responsive/screen-sm-up.less
+++ /dev/null
@@ -1,18 +0,0 @@
-@media (min-width: @screen-sm) {
- .signup-input {
- padding-right: 0;
- input {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- border-right-width: 0;
- }
- }
- .signup-button {
- padding-left: 0;
- .btn {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
- }
- }
-
-}
diff --git a/library/font_awesome/src/assets/less/site/responsive/screen-sm.less b/library/font_awesome/src/assets/less/site/responsive/screen-sm.less
deleted file mode 100644
index 4c782ca22..000000000
--- a/library/font_awesome/src/assets/less/site/responsive/screen-sm.less
+++ /dev/null
@@ -1,49 +0,0 @@
-@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
- #icon-carousel {
- @size: 200px;
- font-size: @size;
- line-height: @size + 30;
- }
- .carousel-control {
- top: @size - 10px;
- .square(30px);
- left: 228/2 - 36px;
- &.right {
- right: 228/2 - 36px;
- }
- }
-
- .jumbotron-carousel {
- padding: 50px 0;
- h1 { font-size: 65px; }
- p { font-size: 23px; }
- .shameless-self-promotion { font-size: 12px; }
- }
-
- .jumbotron-ad {
- p { font-size: 24px; }
- }
-
- .jumbotron-icon {
- h1 small {
- display: block;
- margin-top: 15px;
- margin-left: 0;
- line-height: 20px;
- }
- }
-
- .stripe-ad .lead {
- margin: 0;
- padding-top: 0;
- font-size: 19px;
- }
-
- .fort-awesome {
- .action { width: 33%; }
- }
-
- .hide-sm { display: none; }
- .v-get-started .get-started-cdn { padding: 5px 22px 22px 22px; }
-
-}
diff --git a/library/font_awesome/src/assets/less/site/responsive/screen-xs.less b/library/font_awesome/src/assets/less/site/responsive/screen-xs.less
deleted file mode 100644
index 156e5bc38..000000000
--- a/library/font_awesome/src/assets/less/site/responsive/screen-xs.less
+++ /dev/null
@@ -1,95 +0,0 @@
-@media (max-width: @screen-xs-max) {
- #icon-carousel {
- @size: 180px;
- font-size: @size;
- line-height: @size + 30;
- width: 280px;
- margin: 30px auto 0;
- }
- .carousel-control {
- top: 40%;
- .square(44px);
- font-size: 44px;
- line-height: 44px;
- left: -7px;
- &.right { right: -7px; }
- }
-
- .jumbotron-carousel {
- h1 { font-size: 58px; }
- p { font-size: 24px; }
- .btn-large {
- font-size: 20px;
- padding: 14px 26px;
- }
- .shameless-self-promotion { font-size: 12px; }
- }
-
- .jumbotron-ad {
- h1 { font-size: 39px; }
- p {
- font-size: 20px;
- margin-bottom: 20px;
- }
- }
-
- .jumbotron-icon {
- .fa-1, .fa-2, .fa-3, .fa-4, .fa-5, .fa-6 { margin-right: 0; }
- .fa-6 { font-size: 16em; }
- h1 small {
- display: block;
- margin-top: 15px;
- margin-left: 0;
- line-height: 20px;
- }
- }
-
- .stripe-ad .lead {
- margin-top: @buffer-lg;
- padding: 0;
- }
-
- #fusionads {
- float: none;
- display: block;
- margin-left: 0;
- .clearfix();
- }
-
- .vertical-ad #fusionads {
- width: 300px;
- .fusion-img {
- float: left;
- padding-right: 10px;
- }
- }
-
-
- .fonticons {
- padding: 15px 0;
- .tagline, .action { display: block; }
- .tagline { margin-bottom: 10px; }
- }
-
- .hide-xs { display: none; }
-
- .block-xs { display: block; }
-
- .modal-footer .block-xs + .block-xs {
- margin-left: 0;
- margin-top: 10px;
- }
-
-
- .navbar-org { display: none; }
- #banner {
- text-align: center;
- .message-container, .tagline, .action { display: block; }
- .tagline { padding-right: 0; }
- .btn-primary { margin-top: 10px; }
- }
-
- .signup-button .btn { white-space: normal; }
- .v-get-started .get-started-cdn { padding: 5px 22px 22px 22px; }
-
-}
diff --git a/library/font_awesome/src/assets/less/site/search.less b/library/font_awesome/src/assets/less/site/search.less
deleted file mode 100644
index a9c8bb686..000000000
--- a/library/font_awesome/src/assets/less/site/search.less
+++ /dev/null
@@ -1,40 +0,0 @@
-#search {
- position: relative;
- font-size: 18px;
- padding-top: 40px;
- margin: -20px auto 0px;
-
- label {
- position: absolute;
- left: 17px;
- top: 51px;
- }
-
- #search-input, .hint {
- padding-left: 43px;
- padding-right: 43px;
- border-radius: 23px;
- }
-
- .hint {
- color: #aaa;
- }
-
- #search-clear {
- text-decoration: none;
- position: absolute;
- right: 18px;
- top: 54px;
- color: @text-muted;
- &:hover {
- color: mix(#000, @text-muted, 20%);
- }
- }
-}
-
-#search-results {
- em {
- font-style: normal;
- text-decoration: underline;
- }
-}
diff --git a/library/font_awesome/src/assets/less/site/social-buttons.less b/library/font_awesome/src/assets/less/site/social-buttons.less
deleted file mode 100644
index 5b84d60d0..000000000
--- a/library/font_awesome/src/assets/less/site/social-buttons.less
+++ /dev/null
@@ -1,19 +0,0 @@
-#social-buttons {
- ul.list-inline { margin-bottom: 0; }
-
- padding: 22px 0 17px;
- text-align: center;
- background-color: #f5f5f5;
- border-top: 1px solid #fff;
- border-bottom: 1px solid #eee;
-}
-
-#subscribe {
- padding: 22px 0 17px;
- text-align: center;
-}
-
-label.error {
- color: @state-danger-text;
- margin-top: 5px;
-}
diff --git a/library/font_awesome/src/assets/less/site/store.less b/library/font_awesome/src/assets/less/site/store.less
deleted file mode 100644
index 25daecc12..000000000
--- a/library/font_awesome/src/assets/less/site/store.less
+++ /dev/null
@@ -1,115 +0,0 @@
-// product vars
-@shirt-kellygreen: #249265;
-@shirt-black: #151010;
-@shirt-royalblue: #2A4DB3;
-@shirt-navy: #2E2737;
-@shirt-silver: #D4D2D3;
-@shirt-asphalt: #535059;
-
-.content-underlay {
- margin-bottom: -180px;
- border-bottom: 1px solid @jumbotron-border;
- padding-bottom: 100px;
- background-color: lighten(@jumbotron-bg, 2%);
-}
-
-
-.product {
- transition: box-shadow 0.25s ease-in-out, transform 0.25s ease-in-out;
- transform: scale(0.99);
- z-index: 2;
- position: relative;
- display: block;
- margin-top: @buffer-xl;
- color: @text-color;
- text-decoration: none;
- background-color: #fff;
- border-radius: @border-radius-small;
- padding: @buffer-lg;
- .box-shadow(0 4px 2px 0 rgba(127,127,127,.2));
-
- &:hover, &:focus {
- transform: scale(1.0);
- .box-shadow(0 4px 2px 0 rgba(127,127,127,.4));
- text-decoration: none;
- color: @text-color;
-
- .product-sizes {
- opacity: 0.75;
- }
- }
- img { max-width: 100%; }
- li {
- padding: @buffer-sm;
- }
- li.active {
- cursor: default;
- text-decoration: none;
- }
-
- .swatch {
- display: inline-block;
- width: 30px;
- height: 30px;
-
- &.swatch-kellygreen {
- background-color: @shirt-kellygreen;
- }
-
- &.swatch-black {
- background-color: @shirt-black;
- }
-
- &.swatch-navy {
- background-color: @shirt-navy;
- }
-
- &.swatch-silver {
- background-color: @shirt-silver;
- }
-
- &.swatch-asphalt {
- background-color: @shirt-asphalt;
- }
-
- &.swatch-royalblue {
- background-color: @shirt-royalblue;
- }
- }
-}
-
-.product-sizes {
- transition: opacity 0.25s ease-in-out;
- position: absolute;
- top: 6px;
- right: 6px;
- border-radius: @border-radius-base;
- background-color: #fff;
- font-size: 21px;
- line-height: 21px;
- padding: @buffer-sm @buffer-md;
- color: @text-muted;
- opacity: 0.25;
-}
-
-.product-title {
- height: 52px;
-}
-
-// calls-to-action
-.product-cta {
- display: block;
- margin-top: @buffer-xl;
- color: @text-color;
- text-decoration: none;
- border-radius: @border-radius-base;
- padding: @buffer-lg;
-}
-
-.cta-content {
- margin-bottom: @buffer-lg;
-}
-
-.cta-fine-print {
- margin-top: @buffer-lg;
-}
diff --git a/library/font_awesome/src/assets/less/site/stripe-ad.less b/library/font_awesome/src/assets/less/site/stripe-ad.less
deleted file mode 100644
index cef0aa04e..000000000
--- a/library/font_awesome/src/assets/less/site/stripe-ad.less
+++ /dev/null
@@ -1,4 +0,0 @@
-.stripe-ad {
- margin-bottom: 22px;
- .lead { padding-top: 5px; }
-}
diff --git a/library/font_awesome/src/assets/less/site/sumome.less b/library/font_awesome/src/assets/less/site/sumome.less
deleted file mode 100644
index 135f5ff26..000000000
--- a/library/font_awesome/src/assets/less/site/sumome.less
+++ /dev/null
@@ -1,4 +0,0 @@
-.sumome-popup .sumome-popup-content .sumome-popup-form h2.sumome-popup-heading {
- font-family: @font-family-base;
- text-align: left !important;
-}
diff --git a/library/font_awesome/src/assets/less/site/textured-bg.less b/library/font_awesome/src/assets/less/site/textured-bg.less
deleted file mode 100644
index 046b2db95..000000000
--- a/library/font_awesome/src/assets/less/site/textured-bg.less
+++ /dev/null
@@ -1,20 +0,0 @@
-.jumbotron, .navbar-inverse, .navbar-inverse .navbar-nav > li.active > a, .navbar-org, #footer, .content-underlay {
- position: relative;
- &:after {
- content: '';
- display: block;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- opacity: .15;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAABGdBTUEAALGPC/xhBQAAAaRQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMalYaAAAAIx0Uk5TlhaTG6WwoBqyCx6sopscnacgq5cfmR2UkZwhlY4li5IjIiYpjYmQJ4iPJIyHhooog4WBfoSCKyx9gCotf3wuMjEwezN6L3l4NnI1dXd0djc4NHNwOXFvO2o8bjptPWw+aD9mQGtEZWlnQUJDRmNiZEVfYWBLXVxIV0lHTk9KXlJWWFlVVFtNTFpTUVCkyaWwAAAfsklEQVQYGQXBg6JsWYIg0Bh7WlVdVjrz5bN17Ygbto5t2977p3utXhseb5cOkcQlMSvlwcK1KN+kXuZFtaw8UKWGHiFOjR+F43DFHF/nyis8PMwvzc7QdS2qjnykhpWRQjtpLDpQTFUQhrP972J3uIwc3/WaHJF73IT3EHONyQqnTVQIxOGvt7JaF3K5XOM7dyDI1VQv1c0xv3T0lzAQ86iJX3cdkg41x1QCweVIKUGI1bm1XhO1cR+L/oaFys6joNLUSBbURm9bwK9yySmu+6MqCJ24VqSu5NofdmOlOGCp1ci5Ob8EObh89le18MLgAWbH/9ZUCR47kyJmcIUArlxGN2Ugzj/bN6fR9qJeC61niRtk516BTEF7QdOmB60uSSfTQ0TwrYLTiq/CFPBE+2AKf2eiGYkrWyQy44z/1CRs35oHxM4U8tBPNVTAGu4X0dq/5tcZs2TlDO7VVRolsSLyzO9t/aNh2FVvlJJQfLpVr0/qY6o37q0Yo3PxdGKWsibL6V8HxMcYGUev9C5qlrp/cDR1Llr8F8r4oToXReV3Rt8KA32bZwZ/4+38bTq5nqTPOmBjNJ8QK8KWQK8uxdyoNFxrle3Snen1ioqasN3qh+JNVdbGiid0Sbl2/TKfJQ+/cQuOMKw4mtKRN9TBhR1RtF67xTGJGQ8DnuKCq9mhpJgLJWqg9VfSb49kr3W0+DWjGaSSw0vQaapjdCyJoHEQykmbfVGDR90u41jAHpbuNfywT+mt6XpgJFeH4i4U0xRxm6Zu/rHSQv/+9+sG4rSnLJ2zrm75c33ohrzas+eJeBA8D2DBSWPsVGOIq5AsfEzUuNWD52wCbXh2XQyZENdvxrWzzCQk04N7slLfLyj+QZfCsixMS05gcNQwxfJZlkBiPZgC7zhVCjMOtV4weO994s/mVikag3ZnelFcdKVUb2kWMoJ1075OTiv4Wq/wlvvAnMFCN6Ic7MIujcr8b/NDQpaGbX78QR/GUFaTeQIK3OGkm9yxClW8FZvGsXs1Tpcz5WtNSdlDZbV6nglu6YZIfXoucMX99Me+/mYqMBEm4X2YhzRrhMbdL2i7YhttHXwOqWSb55ITmIXscoZzj76Kfa8rrZ0Ay/vhUKErGPfKlBRSyJfcWIidwlfoKnAevyxpUGpikcWZqnz6nDvZIxjGULjGmV+E5QscXHwX4I6MYHYsbEJgxPY6I3Y865Wwfl00a6TQHNPNF2d3k1Ztql4EciNK8/SVIf1+7sxkj5RM23h3nipnfF4U3X62c7VIVQk/twKoDTVwWB+nvlfLCa1bj3J+V3gn6SRqj4EqWOtwjYebhAph8NjHX+Db9mq75Hofkv9fsnrmLc+Cxthn1njneZNPdgfO4hnRGppVsqT/tAn2le397e3fN9E9ovzlL9e5DhdsFPACnKb5gYEZ7zDbrH5EufdFxxs/yxqX+DlXmmMq1HrLKs/z5H/pKj3NLfzhuHCCqg8liB0+vNGn7Sf+tChHoxPOP4cu/362qAtC0kNra8dVyzLP4Mgpf/Y3yAOeb5IyqSMRCXy3+mN2v9Flta4Yn1vBXimEZV/V1I3fRlU8Ed0q0/LQaNn2DOJlB45M5X0aajILyO0k9FJZA2o5ie+V1VwDGdgFebF1vrlT4ry4zQcedHIKBXkeVhsvkxsT8jW97S073GTf22Wm2yBN2TRDVaEldhl15MfHpDOllhIavGPJ+OB5Yje71SlEkGVz/6VEBT+fV9lFh9Od2xxK+a5ry0lU3yjQtcRPiCDSF0smi6c9ZDqbZso6afHA8L3Apl0LJJ7whAq3tY6+ZwkxYArATbCsYfe8U+9KNLtlW98Mbacuu7NR6NhOFzOcQKsA55FD15JuR7xsCCmuI7IO7qlDjxlLRmy02bpLxfoBncftvmGHUu6SYDOK+srqYwklx5dIjqUroTweFRrmQZZGiE5Z2eK2iXy/rD8d/+l5kcylD0Yht2mrdNmqDdgKURofrZWefrnJsVQsWnL48VGOY+AhZTf3qJpc6qhxYWyCNHrLCMnqPBgMulqj5CjaGH4/VajHzFIOK18eaVcu0XC/Cp148YVasVmi4zO9rTMjKhSAZmVvZ3l7bBVVvuQI0rP6XTudT24ZBVosD5PrR8nFMVEKPIJ/3K0qvq3TlG7ZFqkfWccRrGr7t5nGZleYH69t+yLaBKwEj7LtTHZRJkiDN9Kdt0J6BlOZeZh71maSHj4FikgDqcRmsUOsy3ZJhqFehZjNYgrd8utMC3KjYCOTICBQ7MQUILu3aDdxeVFOCNpVUcIX76jEKN9nSWYQ2PNTN3vdC8Qydo/dEWRi6OqW1ZxTNcYrgpeb09MHTZ3njxofDbBQtb6SDnL99QtwslhXy8jqLD8STMoTsbYdTxWwqSXJVmTAp0rZComyl7i6QY6a0iOaVIeBh0Zga4TzYmHN4hYY3Yw2jrNMdLya+rhdUHXkyJnXVfW+qQqbKCq7P8jbs82yX+OrVvKc31RBNPv6WNUiq32h13InyQrUcnlty4rTA3Z6N2nkK6NR+E91Q9tCtg19amUtZFPlF+GzJHj3Ew5TnswP6sFQNo0NK9aPNB1nBpGGRALr1PiN10oUIWfvVgXc1Mgd9ehTEh2MqiwtF1rvq9WMhZAeGx9okMJrWfPEkGkbpAuM6zRXEjcr/DY111+hvsdjXEawhkkcy6n0/z3urraN3gBE1+q2epXs+WTbTVMz44yqw/YZKBq8C2uT74W6H5MlaNZN6ibfZ8W+UCpSoaVl51TVo414nslTf5d3RC23QXov+keW33UzjztU0XFwjWAPrjZOQ1JrePpttq2T2AA89Yh+sVGtqmvPzoOm9+Adb2M1qAP0WHIcSPwkVkM+/pIqwZcWoI69l0UOo8LB2g7t9Tv3Vi3fMNdkZOWthWeVAe17/l9qUvWn60ZQm62fZtZLuVx+hCVRthL+Muadnt9VW91Zog+XeQXDQvNayj+JWgMDO1FMA104HNr7p4YZTs65g+PmYTMPSOMgWw44DVJF2qYv5WXfMCjj3WDXPSTC4rFsuyYfT3Y7Sl2YZaNoveCawhtnnR9MrfXS7GgTxLHrQvfndBk8GyTdKDDRZcYQiv1iL0nQ1tXtbUFxQdDySZRaEXYN+BtDeFt48raTnC6v7lrJqqyqTCuptqGjxv1el2eOOi/XUl6HVeXfyDZfJYVzWUbBIgpC6g1gaxgSIwqLpsJoYfnCGOyVg+ElTZfY98e7Tqq+P/DVpOqcZcIpbR5vfDLd3d5slkyodpDL7nuWrYcvdCOVeeXLg8n73rhuW+NaKOS4UjXHaaiSoW9e2RcL9fMnGvJck56aF3WAWOs8XWFVh3VQKBbG9PisEjmoWyy+ydXEtkmvwFu1nSFzuicrZbJT/1HCg5w3+MwWFFwyjbH26I0Tc6NJ20OXqEZKkeWjb2ceG7s0HTZ8Z0mLpEZhM9tZV5kEsM1macd4p47U9p1ppbLDpX57NPLlo5D0Bls7cNTPNpOgaxuD3cd/M0Mh0qrBFyPyqZd9o4FpHjQZpzhq0NXN3MtayO1duT3th/CC3ZY5cXnH7JWsKY15pFX4i8DeLuJ7PeJ3VhXtvKnS88Lvihto5BF0I2Dw2QF05HazFyxddvOH95draC9Ykfxr7uYyLKO62Yq//rYbCFYJjwJ3F7GHQiuOjAtJjbvk9ZQ1oiOKQCplBUtFjgodM07PqXd2/i6uujasmXTUNkE2NoESofFpdQxYC1Cla/hR0KjrrPqldoN8RJnjYvcQ3nmFATeVQ8c3L10K3u9RoVb2RbBCuIpLOe4Kb/xFdsSbtidaxfTO1O/L3Sqgp1HSiTHIVpKZZUX6hvnMXVSBV7hamutlu/VMikQ//HUi9+FWkpfJ8p6uxmJV1Cr/cJ5btknmghJbOTG35fUVXlgpzeyEpleuvU4/3iED30sCQ94PfrhPHSflunakZn2HKhh6HizLefn3ksOyCze6BfSwav6BgHi7AQtekhN2VGL+b09tw8jI+oqMcNDZTTxdPSd/qOafWHjS+9rmka+VpmC1rKOyCZwI9R/exB3NpeX/2XdjwY2ZQ7NuvrhXthcFxmfKlB+d6PiFVTcLfCmFo/jYDgKnDvYGaCYl49g1vCOHEPslDZJ4S30oux6cYQgox+mbtaaQsK2SomOSjYu0cGl2d1hQDmvNMy35ofp5SAQlS1Jd3XjWY+S/TKg2dD652JYjItaMg3m35fMdsSu7u01d123Z/kmxGTJlesmqCFxXn6n8bpcFEsE8EhwV2Yf7yjRqjC3moDUzr7yJVjnkE/vLgjJsKTPh1rltI75F72/xirBylLxyJS573DJZ6ThJQSuTokUK33+ItnXPCkoBVaJb3+FDw8OurIrjm5qbXq21n3zfRP3IOJJ3asbzU9/FVElp2KRUY4mCA5894qXzDj4qmXPgknUbcQcHzZmbom2ybBmqNZfav7Yw7RWGjFoRy4V1EYK2pXmE1pKUpokwPVCspoACXvIHRbtHNe2mbrCFvIOB437CUsaxk/ejf/2/mN9WtqfGfEWWgzQimpaDGsZXQl03cXTg6rL3zIy8K7FQaMOg0BjcA1H039QE5dJSLFV27t0XaDn9YX9QixC4puw9PEUTtpMf28y6DA3ol/xVQborN+2YnKxgg+Pawk+n/7ZOG7SCkyba5D0n5/Jnnk/HkV2wRWwfwYt3YTuxkn1pzvJMBGxM04w/3taOPYu9ff2DJZ7fBZXuHoO8DUCXJjtdeuDW8kqoxduypFa7MXAm1yPiUkrD1WB4HPaeJ7kp1Y5naGEgOKioLDM/IA19kxzSPPWkue8f9MYb8zfKzFKrKHSMhcQGAoQFMUyk9WvyYG6sBtzvw4EUnmPr2ze3bDztQONFUg0lO1LL3g80L0KtpPP4nK+xIo7q4NMozilxiwQGY1zc5T50ilRjMju+A1/r7N0wofxC2H1uMD11+L4hZyeP5/9u6nIjX20amyz05d2B2ueHcW757vJ3xHlv/D4z0AW4w99+VSop2VnZUtFAURmUMn0r4ofoHg+3bKoaKQlOK7rBfRavPwf17Gem8/ysQynXTvuQ2JdobPfnokPR/l1z/2Wf5PdiIMRJoMDeJfKNwMiU6JoKdHGzs9Qm1U34BbEx5GwUuXvmj5/CWu4gPB0xFyko4BhGVFtbfF12WKx+Bv/9mPhc48MA5Ll6jE72OVON6vFlxoXr268rtmB6MtprC39GGm6UdYcMCK6P4j/9mBKuY+60Yrs/0W/dztduFSdN932r3ej6dqG+uao23pd4kbIEGjsQfjPzn39k/VI2D/cL46Gv49v/mb8CuwwKftmT7rIQrXhXDmusMzvYlHGqz1wDg3/+aP0r5/kAWAvXPm4O0TJ4FcLZYkXYtrkOHXFDxSklG01Mj+rV0nqdQs7rAptbGcUg3Vd32tfQfp0Bmu9V7Gs8aUUxT8FwUeTV/kPu/dLJVVOzlO+Rqc18lknhD4NFHjasnIOpVobONhqTVRHV6p4efQDB9jYBlXZ9XBxfaYStOVhYFKoZFoeJ5yU8/rRXSQEGbQYWwgTGKvy4v072XqWo2ryFSudx8Of3J4sBmo8gP3fDhoClaNnATI9erIzx6h0H0gbbBxOc1fQs2DpwmPgF0RTxW4WKC5KzpVLrSedYV6rQvmqYWXIdMhH0z/LM9GOTAi0wvbKJLQJ7p4b3gUuzh3dpwG0s2GKH89Rso4NXRMmkfMRZbuRQQK0gDAt9G6TfZ+3Bp0lylA3Vspcw8syxSV+3qwSh6RUNbjxNkbiv/wyU1Y/JC/aPOv/4OL8gjarztqbD3dNTO0E5GUuCGiRSbl810vV1qt2I/FIUjxn2UTqdp0RNw1YH4mGeSGUvva6ZLsuiKm/2m4Of2nkHUSjM89JYXpEAOM/XElkoJIZFWHPVCfwTJPIgiremFnfDDp+YXfd4EO+PpbNZPhnV07oypat/Iiu7L9uauJoksdSrwq7RynZ9VhjA8qvaOR+X0n5d/+XsfNyyxy/7/xxfIlXjiPxV0t1IFLzcK12n4iu21d+JGX0kR+heWRNCVY2hQ1ZyYR4OyNmpXXzatE1zb4gF0fvVfoNVF9Z3lPOPT5KcVEFhbLTs5KEdoORurGYcYp+9O0Sv4peGU6MQT3lGk38+LDqyKeLSfD/5x2b/LxvWLnbQMk0sLHkGgtdh5we1knMAr1tJ7Xmry7uVyvWfLHA9hZ0WTwSf3aINPZp7TrN8y5tMUmxNxhRCPHDfJmI+H4fJDtRwWKAtKZNGE3pyEjNZ61NmmcqWhQtYsmKZutGyrXAJQ7uXFrv8A8Na47oObg0/216aUz0AwZ3i5vnj9nOOfTuXedNP9FVUrpsH82+2mIq/GiFU4jH4qaFxyTaVTACM2fongb/ErQE1tyNvtKtDO9U+h4nZw0JOrTdysbvDiLnHacLBrC+FV3mYvf1nGNYqBDjJJOaZZdWwZZUX2jVWKp05ttKzRs6Q/wJpsitdOTGsGrdvSQ3e1cqt081eSdeVjVLN4wUV9KQqEbISaTopru4VW8qlRhPPp/R0qtGqPsDl/gYkYodqgicd1Y2IG/jXx1hyvZuSX2htu1KtZkDe1XVDgQjuRPebUB/IqJUWTXcq8KHvAKtn+G3DtgilAZfNJl+tHDE1uXSeTPmohUluVGFf5FWnTty8+GnrRi7X5S7qLgrow2x+ZN8WMr2GlJh5XrKQbtYomRw/Y+a9+fGWd8QkeFr4jz1C3dsO0mqO7lnZgo04WGVpcXY3HPApZXmfrC8qt8iT5g128NLAjfXQgMKvbcMbfTQax0Q0WtUV75+Wvu5ELodhF2+7SyjyoRjFj2gfJCmm9KokrA4J08dqVLeEUdiVIzEczC8tRDzbe27Wr67tB0zRuwokD6n+lo0vjhpo9nYFuKX5QuILNjFor7zZ5lGHzhp42l/Y3b+7UDSjZBuUTZpJPcxS8qs1P1eZo0ZMAa8tj/IXvBPkxzpZa7Lg/oN5NFkt5j2zwaIms84KiohaPnKE49NWzLTTvXi3szrbiY3EPHn4c6ciJsqnljA4xldB39K9sBcFzyBC5BKIVxFE6/rRaWrWi4ykIjZuEajL68gw85TWyFZ9ilbvzuNCJ5QaIZ6nCfstuZ8d97umloSvnJFffD8zk1mq3afkh4GkjzwYfE3BEuvR3oUmX1S4HyStriBxrobRijsIJvMBeJau9P1a3YWaVQI0hg6o10CTO+TRl28syU/dkYd81f7chuBI3aJNSpTfyaNTUu7mqwVMim5yJ4B91os3hndehiP2C1HMwJufLt+a3ut8CoUZ9W350oljULvbX1SyYPg2FSDHsF5+ld8buR1ceDmHLfRdZBgdQLzXE/E+iZsTK5GCT1xXiIpINMXmp5jvpTdoOcxVrzCizDkX9aJTlgAhHXEoU0h5oTedbdEWb3nVh9IeP/0AC616ro5MZjDBPgNmWaM//qe0Fmv0kloLPk28i3+7XO36Yp1kGdPm+denVt7D6RHxBmlUU36IabbxluBRFktte0s7lvWV2pk3Z2GYelWbIsGfvL9zhEM0zt7lM9lcyEb4Y5zqUdRtPrdboKeub9KhECkje3rrnXN1wVCFdi71VnuwqaNcuLEsR5cwsYtosVHauaXUSaCYzr7grb9p4cv3wXP4Ak/q/Z8v/dQlrpXiO1oNJ9e8zrQfcDIXM81pXQdHMkPSBZCpnSq1yb1+ZeylXsPw/cPD6xvHWsNgCXERB0rafOt6bt7t7IHU1g5Lf5fk8QXNrXio6/9vGq9oHxQeEF2qXVbSt10EPKi82YYRY9LXYw2QqV+oyUI6dSFUKZj1DnbzRXG3hkSYHPQjKaOorUsdBw8tW+XMbg7uG8zxd3cW4NQsF3Ug7uNGL5jc+gN6HpqWeRy6WSdsVnt65uWAiwNlWDL7JPgZjcPkhf+r4B57qpmc3gnOzozM5k/TVTwL2tIS418X5eUmciP66sabjF6EPJp+b4kejrZVkp+0cYVIhE96dcJX0GNdTZbtJI8goUVh67KZ39WB1lVZBD9uHL/Xucfio79U7DDi5BPvF0SK40gvEG4+d4vB82CnWk08ccuYr6V2ls8RQ4Ac7hzfFSpa5daMZG8let59pIBSPNHuRkyp2sTZewClY9f9jym9AU/QXpW4dZqU2e1cR8LwEYndfWM2hV5P1tlcbn8+mQRFUpDZ96CV/6hK9J90Z6ElMzdfEnzV5LUTWEXWrUsAiOumitThkuAxC+77LOlkhkJpM9/rcRJi7GMOCeOBU4cdBp4FuSxbKZ6DzNaz+YPanyUuY8yDsu0sNoh16K44T0j7dHZxCysOds1J8M3qwNJ6mB0AJRBz5lUgji8b5/NBEym7aHpw2prPunQRckfDRvSY8VerSzZllUEXrA4BUk6DTG85VVAJvK22afONWEBlMFtBjHsO1DHFDYb+291tslhzU1IQxbasB8vIAI9MzCAX9Wo5vOipHaHWRtcQR/lAWsoafPINiFNEIhyTG5toHS3i0rY1FC9P61VnR9bV0G3dbplbV65cxSwC+bZtkyA3y5dv6PxtuymlhAlsd6vdcTVsi9TrVXI28pG9nZwsQXcs/WIa750ilhUxMkNm2XXs2Y8O2v+o51qiXQ8Vv+zjD3XmZfrdRs4kwuVXSCXTbver95vmOschGSrUhBnvAB/VuF6Rxa7ptXi5OBx00hflKonHi5RaPdDpJSzF7StHdcpnrDbtt9J4lww5VeECPhLsMBGq9+m95ASpFaMLNkTcxxQwqfq8VYLjeg3jwnY16YZORWRfN1bPK7SnsEmGESNQCrr7yJDEko7el9cgSMIgTUqhxFt3o95UWZiaWg1btxpFKEvqLQBoiIKcFnC3zczCbIagrlzX7fLURO2v6X4GA587rPDetvOLyCqHc6Yww2YcbG8X1aRYVCfVMdzTzM2aRqSZtnI4Lv6zdUKusbp9gf7h19TUZD/AC6JpJCaqSwF0H2roiTO0P/mWtiH/4L/rbj58rYnl9Gsv9H1vXia6XCd7sY0jzjtrKBCrH2aRSnDDsGMMfYcY7UN78avbBbqwS1IYgbij4IPq450Ud02hBFAeYVIFf/Q1Bc72B2LXn16OdipfhaXc9mItqdhEK0WxXZOVXzK+wYRPSMb1jLU10wVa10gPbIc6Owau5zKkr1e2GzZdB/+2VjJWV0PTYMIR7eL7YXuu1CEWsrFsDECmWYZbCshJ1JP0jmqobSRAcgDMHfJkOzZD95dq7ZQpS30XAImJ6qzslN1f/o7aHOrsWCaBSPjBnndHrK7f8hIfdHVk47rpfezvqrfOIyQ4HoXG0/tMrcVcjHsZOvHXnZ/V5XPQgDgMHoS0MKBbeC+MyVguwzkjy1XeDkT23uwOoTSrqpdKs2Nf/whUpvNKXrZnt5v3//UA6dPJCgtxOyrtD50ZfGfOoaEcpxTWO0lvX0zEzV2+n1i+GESda1iAZRuLgKCFVfckTh+9xi3T5g46wshk+iKR1Tre9pOFuQ8w72Q8qdj4L9ul5ePuljWHFw8qz8YM80cOorQlBLLWg8UBcMnP7Ndq9/Ug4kYWr2JzlO7atGkwbyGhSZU4QdMxydoa00Ze1MaVE2JadrtSJwGsfbrl7F0Y2YT3GdwMi3anTMMtD10ldys0b8Oovu1Fqi+Qj2yAOJaPRZrVepMVCBGVimkM8x6KArsu/Pd+ReLvS9df2OoJPffNwNaUB7Mfq7Etv9h3eZWiPjlAOSpaOBzn5KbuRZ3ZzqLQE42wZz6S3dr53KAOZtD5Cd/eLvpktUmePrphRxe2WuUL+62ySxKiWNQxAJHT5xXOU0eVDl2fHyoj0dV1nQn0l1EEKDH9cOs8z2bCA4w/n7EcleleT7aJTcV6jCmO8CO57r7fU/NJ6c8NM9WwMI8zstNVEuThtf0UcFVHiLKslx6uBcnkOHy2zLC4i+XyXOA/ez91G/M+W6f01br6VRU+/qWTIr1b7HsuXNnq2sBkpmnsA6EjYtGV6zrI6yxKyk3Ddqpbu447FTtDN0zrTE3B8L54PhXyB9aqTr3C52OtchdowMax3Uo2Q5370vt0vtCzojBTRwM9/eO0UGQRO5YHq1Nb2s9BlEHNRQ/oRtPKu/CiYBecIle1FAvZ8NUYkDy28ZHoEi/R9ZOGgvmju1FqX/M5P49uDWoPfJP6Js3uDX06qdeqZPaqzYPv73ztSe1eScFg9kCE4cMd+4WoYgTDQqPgExPNYqmSPLiKPn+LlnDT2V16zFKVDCBpzx+htzmWVhSXNTDJB9UHcmbYVqE8UFXwObMJvifnjDL9WOGaWeRsW4UEh0hHNvbvJm3/IKzF1WmWwsJMxer4kvnzWxBGmzkfzjIb/NDxCbcLuC6bujbJ41O0dVqhlY73zQoEjqHnsEQekqKzejcmAHEiEkHz7zsgatb0kH3pmoPgEk0St2AmKYip3MFk9V5Nm7q47sj8T8mIOTjTRt2LLBDp9UVFdI7Pa+p1ozeChH3WIQcar05/j8d2FhZqz1Q3kYMGQiHbLV2i1HEfw6qprmjfyGk+MI9Z3sjM2H+lg2a+q6V79RBx4qZeQi8xXOWnMsfu2tqxyqUuecL3+5ijd0F3Ff+14xx3RJSreZz2JOvYVjeyWLyCdnAp5AKRPLu/FWi9PgLhsQ9ja3bphs0nCimW6GkXEz6XFfbeFMTZxczcBwg4aQz7qDTLsv1s0VzZV+089PVDpMBF7LutaT32frEKnZSzEG40dq62Huqh8NyDBIXJv8tOa31DuRLhk7Byn+j9MByMC7Jd5EtzvXCksA0etm6TbcaQX2RzojFLZpiFebI8qMVyxaddkrvkzv4Pt7iFz9PXmP4AAAAASUVORK5CYII=);
- background-image: none\9;
- }
- .container {
- position: relative;
- z-index: 2;
- }
-}
-.jumbotron-icon:after { opacity: .1; }
diff --git a/library/font_awesome/src/assets/less/site/views.less b/library/font_awesome/src/assets/less/site/views.less
deleted file mode 100644
index f0cd3c993..000000000
--- a/library/font_awesome/src/assets/less/site/views.less
+++ /dev/null
@@ -1,50 +0,0 @@
-// view-specific
-
-// reset background
-.v-get-started,
-.v-store,
-.v-accessibility {
- background: @alert-well-bg; // resetting for depth
-}
-
-// get started
-.v-get-started {
-
- .get-started-cdn {
- background: @section-emphasized-bg;
- }
-
- .jumbotron {
- border-bottom: none;
- }
-
- // sections
- .get-started-cdn {
- z-index: 2;
- position: relative;
- border-radius: @border-radius-base;
- padding: @buffer-sm @buffer-xl @buffer-lg @buffer-xl;
- }
-
- .hr .hr-text {
- background: @alert-well-bg;
- font-family: @font-family-serif;
- font-size: (@font-size-large*1.5);
- }
-}
-
-// accessibility
-.v-accessibility {
-
- .accessibility-cdn {
- background: @section-emphasized-bg;
- border-radius: @border-radius-base;
- padding: @buffer-lg;
- }
-
- .hr .hr-text {
- background: @alert-well-bg;
- font-family: @font-family-serif;
- font-size: (@font-size-large*1.5);
- }
-}
diff --git a/library/font_awesome/src/cdn/error.html b/library/font_awesome/src/cdn/error.html
deleted file mode 100644
index c1c577b01..000000000
--- a/library/font_awesome/src/cdn/error.html
+++ /dev/null
@@ -1,64 +0,0 @@
----
-layout: base
-title: Oh noes!
-relative_path: ../../
----
-
-<div class="container">
- <div class="row margin-top-xl">
-
- <div class="col-lg-7">
- <div class="well well-lg margin-bottom-xl">
- <h1 class="page-header text-danger">
- <i class="fa fa-exclamation-triangle"></i>
- Oh Noes!
- </h1>
-
- <p class="lead">
- <strong>Something bad happened on our end when sending your embed code.</strong>
- </p>
-
- <p>
- We've already been notified and are looking into it. Hang tight for just a bit and we should have things fixed up shortly.
- </p>
- </div>
- </div>
-
- <div class="col-lg-4 col-lg-offset-1">
-
- <ol class="list-unstyled gg gg-top">
- <li class="gg-row">
- <div class="gg-col">
- <i class="fa fa-refresh fa-2x margin-right-lg text-muted"></i>
- </div>
- <div class="gg-col">
- <h3 class="text-lg text-muted">If at first you don't succeed&hellip;</h3>
-
- <p>
- We'll be taking a look into things. But in the meantime, it may not hurt to <a href="{{ page.relative_path }}get-started/#get-started-cdn">try to request an embed code again</a>.
- </p>
-
- <hr class="hr-lg m-xs-y-lg">
- </div>
- </li>
-
- <li class="gg-row">
- <div class="gg-col">
- <i class="fa fa-hourglass-end fa-2x margin-right-lg text-muted"></i>
- </div>
- <div class="gg-col">
- <h3 class="text-lg text-muted">Been a while?</h3>
-
- <p>
- Still stuck and haven't heard from us? Let us know something is up.
- </p>
-
- <a href="mailto:cdn@fontawesome.com" class="btn btn-success btn-lg">
- Contact us!
- </a>
- </div>
- </li>
- </ol>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/cdn/success.html b/library/font_awesome/src/cdn/success.html
deleted file mode 100644
index 585729248..000000000
--- a/library/font_awesome/src/cdn/success.html
+++ /dev/null
@@ -1,65 +0,0 @@
----
-layout: base
-title: Your Embed Code is on the way!
-relative_path: ../../
----
-
-<div class="container">
- <div class="row margin-top-xl">
- <div class="col-lg-7">
- <div class="well well-lg margin-bottom-xl">
- <h1 class="page-header text-success">
- <i class="fa fa-check"></i>
- Great Success!
- </h1>
-
- <p class="lead">
- <strong>Your embed code is on its way.</strong>
- </p>
-
- <p>
- We just sent you an email with your new Font Awesome CDN embed code and instructions for what to do next!
- </p>
-
- <p>
- If you don't see the email (sent by "Font Awesome") in your inbox, maybe check your spam folder first. Also, make sure you haven't previously unsubscribed. Still nothing? <a href="{{ page.relative_path }}get-started/#get-started-cdn">Try again</a> or <a href="https://cdn.fontawesome.com/help">get some help</a>.
- </p>
- </div>
- </div>
-
- <div class="col-lg-4 col-lg-offset-1">
-
- <h2 class="sr-only">Next Steps</h2>
-
- <ol class="list-unstyled gg gg-top">
- <li class="gg-row">
- <div class="gg-col p-xs-r-md">
- <i class="fa fa-envelope fa-2x margin-right-lg text-muted"></i>
- </div>
- <div class="gg-col">
- <h3 class="text-lg text-muted">Check your email</h3>
-
- <p>
- Your embed code should be waiting there for you. From there you can also register a Font Awesome CDN account to help you manage your icons even more easily.
- </p>
-
- <hr class="hr-lg m-xs-y-lg">
- </div>
- </li>
-
- <li class="gg-row">
- <div class="gg-col p-xs-r-md">
- <i class="fa fa-flag-checkered fa-2x margin-right-lg text-muted"></i>
- </div>
- <div class="gg-col">
- <h3 class="text-lg text-muted">Get ready to use Font Awesome</h3>
-
- <p>
- While you're waiting, dive into how to use Font Awesome. You'll want to add your embed code within the <code>&lt;head&gt;</code> of each template or page that you want to use Font Awesome on. Then, check out the <a href="{{ page.relative_path }}icons/">Font Awesome icons</a> and <a href="{{ page.relative_path }}examples/">examples</a> to learn how drop icons right into your UI.
- </p>
- </div>
- </li>
- </ol>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/cheatsheet.html b/library/font_awesome/src/cheatsheet.html
deleted file mode 100644
index d33e22ca4..000000000
--- a/library/font_awesome/src/cheatsheet.html
+++ /dev/null
@@ -1,35 +0,0 @@
----
-layout: base
-title: Font Awesome Cheatsheet
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-list-ul" aria-hidden="true"></i>&nbsp; Cheatsheet{% endcapture %}
-{% capture jumbotron_p %}The complete Font Awesome {{ site.fontawesome.version }} icon reference{% endcapture %}
-
-{% include jumbotron.html %}
-{% include stripe-social.html %}
-
-<div class="container">
- {% capture stripe_ad_content %}
- <p class="lead">
- Print this page to PDF for the complete set of vectors. Or to use on the desktop, install FontAwesome.otf, set it as the font in your application, and copy and paste the icons (not the unicode) directly from this page into your designs.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- <h2 class="page-header">Every Font Awesome {{ site.fontawesome.version }} Icon, CSS Class, &amp; Unicode</h2>
-
- <div class="row">
- {% assign sorted_icons = icons | expand_aliases | sort_by:'class' %}
-
- {% for icon in sorted_icons %}
- <div class="col-md-4 col-sm-6 col-lg-3">
- {% if icon.created >= site.fontawesome.major_version %}<small class="text-muted pull-right">{{ icon.created }}</small>{% endif %}
- <i class="fa fa-fw" aria-hidden="true" title="Copy to use {{ icon.class }}">&#x{{ icon.unicode }}</i>
- fa-{{ icon.class }}
- {% if icon.alias_of %} <span class="text-muted">(alias)</span>{% endif %}
- <span class="text-muted">[&amp;#x{{ icon.unicode }};]</span>
- </div>
- {% endfor %}
- </div>
-</div>
diff --git a/library/font_awesome/src/community.html b/library/font_awesome/src/community.html
deleted file mode 100644
index be6877b97..000000000
--- a/library/font_awesome/src/community.html
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: base
-title: The Font Awesome Community
-navbar_active: community
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-thumbs-o-up" aria-hidden="true"></i>&nbsp; Community{% endcapture %}
-{% capture jumbotron_p %}Lots of ways to get involved with Font Awesome{% endcapture %}
-
-{% include jumbotron.html %}
-{% include stripe-social.html %}
-
-<div class="container">
- {% capture stripe_ad_content %}
- <p class="lead">
- Font Awesome has a vibrant community of folks helping each other out. You can
- <a href="#getting-support">get support</a>,
- <a href="#reporting-bugs">report bugs</a>,
- <a href="#requesting-new-icons">request new icons</a>,
- <a href="#submitting-pull-requests">submit pull requests</a>, and
- <a href="#project-milestones">check upcoming milestones</a>.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- {% include community/getting-support.html %}
- {% include community/requesting-new-icons.html %}
- {% include community/reporting-bugs.html %}
- {% include community/submitting-pull-requests.html %}
- {% include community/project-milestones.html %}
-
- {% include thanks-to.html %}
- {% include tell-me-thanks.html %}
-</div>
diff --git a/library/font_awesome/src/design.html b/library/font_awesome/src/design.html
deleted file mode 100644
index 9c5830d74..000000000
--- a/library/font_awesome/src/design.html
+++ /dev/null
@@ -1 +0,0 @@
-<META HTTP-EQUIV=REFRESH CONTENT="0; URL=cheatsheet/">
diff --git a/library/font_awesome/src/examples.html b/library/font_awesome/src/examples.html
deleted file mode 100644
index 9f14ef11b..000000000
--- a/library/font_awesome/src/examples.html
+++ /dev/null
@@ -1,43 +0,0 @@
----
-layout: base
-title: Font Awesome Examples
-navbar_active: examples
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-magic" aria-hidden="true"></i>&nbsp; Examples{% endcapture %}
-{% capture jumbotron_p %}Lots of easy ways to use Font Awesome{% endcapture %}
-
-{% include jumbotron.html %}
-{% include stripe-social.html %}
-
-<div class="container">
- {% capture stripe_ad_content %}
- <p class="lead">
- After you <a href="{{ page.relative_path }}get-started/">get up and running</a>, you can place Font Awesome icons just about
- anywhere with the <code>&lt;i&gt;</code> tag.
- Some examples appreciatively re-used from the <a href="{{ site.bootstrap.url }}">Bootstrap documentation</a>.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- <div class="alert alert-success gg">
- <div class="gg-col min-width">
- <i class="fa fa-universal-access fa-2x" aria-hidden"true"></i>
- </div>
- <div class="gg-col padding-left">
- <p class="margin-bottom-none">The following examples are kept simple and assume use of <a href="{{ page.relative_path }}get-started/get-started-cdn">Font Awesome CDN</a>, which provides auto-accessibility support. If you are not using the Font Awesome CDN, please see the <a href="{{ page.relative_path }}examples/#accessible">manual accessibility examples</a> and read more about <a href="{{ page.relative_path }}accessibility">making your icons more awesome for all users</a></p>
- </div>
- </div>
-
- {% include examples/basic.html %}
- {% include examples/larger.html %}
- {% include examples/fixed-width.html %}
- {% include examples/list.html %}
- {% include examples/bordered-pulled.html %}
- {% include examples/animated.html %}
- {% include examples/rotated-flipped.html %}
- {% include examples/stacked.html %}
- {% include examples/bootstrap.html %}
- {% include examples/custom.html %}
- {% include examples/accessible.html %}
-</div>
diff --git a/library/font_awesome/src/get-started.html b/library/font_awesome/src/get-started.html
deleted file mode 100644
index e8fb70650..000000000
--- a/library/font_awesome/src/get-started.html
+++ /dev/null
@@ -1,263 +0,0 @@
----
-layout: base
-title: Get Started with Font Awesome
-navbar_active: get-started
-view_class: v-get-started
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-cogs" aria-hidden="true"></i>&nbsp; Get Started{% endcapture %}
-{% capture jumbotron_p %}Easy ways to get Font Awesome {{ site.fontawesome.version }} onto your website{% endcapture %}
-
-{% include jumbotron.html %}
-
-<div class="content-underlay"></div>
-
-<div class="container">
- <section class="get-started-cdn" id="get-started-cdn">
- <h2 class="page-header margin-top-lg clearfix">
- Font Awesome CDN
- <span class="label label-brand text-base pull-right">Easiest</span>
- </h2>
-
- <p class="lead">Font Awesome CDN is the easiest way to get Font Awesome on your website or app, all with just a single line of code. No downloading or installing!</p>
-
- <form class="row" action="https://cdn.fontawesome.com/register" method="post">
- <div class="col-sm-6 signup-input">
- <label for="email" class="sr-only">Email address</label>
- <input type="email" class="form-control input-lg margin-bottom" id="email" name="email" placeholder="Your email address">
- </div>
-
- <div class="col-sm-6 signup-button">
- <button type="submit" class="btn btn-success btn-lg btn-block margin-bottom">Send my Font Awesome embed code!</button>
- </div>
- </form>
-
- <!-- CASE: error -->
- <!-- <form class="row" action="http://fontawesome-cdn.dev:4000/register" method="post">
- <div class="col-sm-6 signup-input has-error">
- <label for="cdn-email" class="sr-only">Email address</label>
- <input type="email" class="form-control input-lg margin-bottom" id="email" name="email" placeholder="Your email address">
- <p id="cdn-email-error" class="help-block">Email address must be valid.</p>
- </div>
-
- <div class="col-sm-6 signup-button">
- <button type="submit" class="btn btn-success btn-lg btn-block margin-bottom">Send my Font Awesome embed code!</button>
- </div>
- </form> -->
-
- <p class="help-block margin-top-none margin-bottom-sm"><a role="button" data-toggle="collapse" href="#cdn-why-email" aria-expanded="false" aria-controls="collapseExample">Why do we need your email address?</a></p>
-
- <div class="collapse" id="cdn-why-email">
- <div class="well">
- We create new embed codes for each website so you can quickly upgrade and change your preferences all without ever pushing code. To do this, we need an email
- address so we know which embed codes are yours and so you can come back and manage them.
- </div>
- </div>
-
- <div class="row margin-bottom-none">
- <div class="col-sm-6 col-md-3">
- <h4>Icons on your site. Fast.</h4>
- <p>Don't mess with files locally or in production. You'll get all of Font Awesome's {{ icons| size }} icons plus CSS toolkit - all optimized for speed and no hassle.</p>
- </div>
-
- <div class="col-sm-6 col-md-3">
- <h4>Super-simple upgrades</h4>
- <p>Since each site gets a unique embed code, you can easily upgrade to the latest version of Font Awesome, all without pushing any code. Easy peasy.</p>
- </div>
-
- <div class="col-sm-6 col-md-3">
- <h4>Auto accessibility support</h4>
- <p>Font Awesome CDN helps you automate accessibility support more easily so your icons work for the most people possible. Read up on our <a href="{{ page.relative_path}}accessibility">accessibility best practices</a>.</p>
- </div>
-
- <div class="col-sm-6 col-md-3">
- <h4>Async your icons</h4>
- <p>Want to speed up your page loads? So do we. Have your icons load in the background so your site loads faster.</p>
- </div>
- </div>
- </section>
-
- <div class="hr margin-top-xl">
- <span class="hr-text text-xl text-muted">or</span>
- </div>
-
- <section class="get-started-download" id="get-started-download">
- <h2 class="page-header clearfix">
- Download &amp; Customize
- <span class="label label-default text-base pull-right">Easy</span>
- </h2>
-
- <div class="row">
- <div class="col-md-9">
- <p class="text-lg">
- Want to manage and host Font Awesome assets yourself? You can
- <a href="#modal-download" data-toggle="modal" onClick="_gaq.push(['_trackEvent', 'Launch Modal', 'Launch Download Modal']);">download</a>,
- customize, and use the icons and default styling manually. Both CSS and CSS Preprocessor (Sass and Less) formats are included.</p>
- </div>
-
- <div class="col-md-3">
- <a class="btn btn-default btn-lg btn-block" href="#modal-download" data-toggle="modal"
- onClick="_gaq.push(['_trackEvent', 'Launch Modal', 'Launch Download Modal']);">
- <i class="fa fa-download fa-lg margin-right-sm"></i>
- Download
- </a>
- </div>
- </div>
-
- <div class="download-css margin-bottom-xl" id="download-css">
- <h3>Using CSS</h3>
-
- <ol>
- <li>Copy the entire <code>font-awesome</code> directory into your project.</li>
- <li>
- In the <code>&lt;head&gt;</code> of your html, reference the location to your font-awesome.min.css.
-{% highlight html %}
-<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">
-{% endhighlight %}
- </li>
- <li>Check out the <a href="{{ page.relative_path }}examples/">examples</a> to start using Font Awesome!</li>
- </ol>
- </div>
-
- <div class="download-preprocessors" id="download-preprocessors">
- <h3>Using Sass or Less</h3>
-
- <p>Use this method to customize Font Awesome {{ site.fontawesome.version }} using LESS or SASS.</p>
- <ol>
- <li>Copy the <code>font-awesome/</code> directory into your project.</li>
- <li>
- Open your project's <code>font-awesome/less/variables.less</code> or <code>font-awesome/scss/_variables.scss</code> and edit the <code>@fa-font-path</code> or <code>$fa-font-path</code>
- variable to point to your font directory.
-{% highlight scss %}
-@fa-font-path: "../font";
-{% endhighlight %}
- <p class="alert alert-success"><i class="fa fa-info-circle"></i> The font path is relative from your compiled CSS directory.</p>
- </li>
- <li>Re-compile your LESS or SASS if using a static compiler. Otherwise, you should be good to go.</li>
- <li>Check out the <a href="{{ page.relative_path }}examples/">examples</a> to start using Font Awesome!</li>
- </ol>
- </div>
- </section>
-
- <div class="hr margin-top-lg">
- <span class="hr-text text-xl text-muted">or</span>
- </div>
-
- <section class="get-started-advanced" id="get-started-advanced">
- <h2 class="page-header clearfix">
- Advanced &amp; Packages
- <span class="label label-default text-base pull-right">Pro</span>
- </h2>
-
- <div class="ruby-gem-less margin-bottom-xl" id="ruby-gem-less">
- <h3><a href="https://github.com/FortAwesome/font-awesome-less">LESS Ruby Gem</a></h3>
- <p>
- Use the <a href="https://github.com/FortAwesome/font-awesome-less">Official Font Awesome LESS Ruby Gem</a> to easily get Font
- Awesome LESS into a Rails project. Generously maintained by <a href="https://twitter.com/supercodepoet/">@supercodepoet</a>.
- </p>
- <ol>
- <li>
- Add this line to your application's Gemfile:
-{% highlight bash %}
-gem 'font-awesome-less'
-{% endhighlight %}
- </li>
- <li>
- And then execute:
-{% highlight bash %}
-$ bundle
-{% endhighlight %}
- </li>
- <li>Or install it yourself as:
-{% highlight bash %}
-$ gem install font-awesome-less
-{% endhighlight %}
- </li>
- </ol>
- <p>
- If you use Rails, add this to your e.g. <code>application.less</code>:
- </p>
-{% highlight css %}
-@import "font-awesome-sprockets";
-@import "font-awesome";
-{% endhighlight %}
- </div>
-
- <div class="ruby-gem-sass" id="ruby-gem-sass">
- <h3><a href="https://github.com/FortAwesome/font-awesome-sass">SASS Ruby Gem</a></h3>
- <p>
- Use the <a href="https://github.com/FortAwesome/font-awesome-sass">Official Font Awesome SASS Ruby Gem</a> to easily get Font
- Awesome SASS into a Rails or Compass project. Generously maintained by <a href="https://twitter.com/supercodepoet/">@supercodepoet</a>.
- </p>
- <ol>
- <li>
- Add this line to your application's Gemfile:
-{% highlight bash %}
-gem 'font-awesome-sass'
-{% endhighlight %}
- </li>
- <li>
- And then execute:
-{% highlight bash %}
-$ bundle
-{% endhighlight %}
- </li>
- <li>Or install it yourself as:
-{% highlight bash %}
-$ gem install font-awesome-sass
-{% endhighlight %}
- </li>
- </ol>
- <p>
- If you use Rails, add this to your e.g. <code>application.scss</code>:
- </p>
-{% highlight css %}
-@import "font-awesome-sprockets";
-@import "font-awesome";
-{% endhighlight %}
- </div>
- </section>
-
- <section class="get-started-more margin-top-lg" id="get-started-more">
- <h2 class="page-header">More Information</h2>
- </section>
-
- <div class="row">
- <div class="col-md-6" id="support-validators">
- <h4>Validators</h4>
- <p>In order to provide the best possible experience to old and buggy browsers, Font Awesome uses <a href="http://browserhacks.com">CSS browser hacks</a> in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.</p>
- <p>These validation warnings don't matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don't interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.</p>
- <p><a href="http://getbootstrap.com/getting-started/#support-validators">Getting started - Validators</a> by <a href="http://getbootstrap.com/about/#team">Bootstrap Team</a> is licensed under <a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a></p>
- </div>
-
- <div class="col-md-6" id="ie8-font-face">
- <h4>Internet Explorer 8 and @font-face</h4>
- <p>IE8 has some issues with <code>@font-face</code> when combined with <code>:before</code>.
- Font Awesome uses that combination. If a page is cached, and loaded without the mouse over the window
- (i.e. hit the refresh button or load something in an iframe) then the page gets rendered before the font loads.
- Hovering over the page (body) will show some of the icons and hovering over the remaining icons will show those as well.
- <a href="https://github.com/FortAwesome/Font-Awesome/issues/954">See issue #954</a> for details.</p>
- <p><a href="http://getbootstrap.com/getting-started/#support-ie8-font-face">Getting started - Internet Explorer 8 and @font-face</a> by <a href="http://getbootstrap.com/about/#team">Bootstrap Team</a> is licensed under <a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a></p>
- </div>
- </div>
-
- <div class="row">
- <div class="col-md-6" id="need-ie7">
- <h4>Need IE7 Support?</h4>
- <p>
- If you need IE7 support, you have my condolences. Really. Font Awesome {{ site.fontawesome.version }}
- doesn't support IE7, but an older version does. You'll need to check out the
- <a href="{{ page.relative_path }}3.2.1/get-started/#need-ie7">3.2.1 instructions for using IE7</a>. Then go complain to
- whomever decided your project needs IE7 support.
- </p>
- </div>
-
- <div class="col-md-6" id="troubleshooting">
- <h4>Troubleshooting</h4>
- <p>If you're having trouble with Font Awesome, make sure to check out the
- <a href="{{ site.fontawesome.github.url }}/wiki/Troubleshooting">troubleshooting wiki page</a>.
- Generously maintained by <a href="https://twitter.com/gtagliala">@gtagliala</a>.</p>
- </div>
- </div>
-
-{% include modals/download.html %}
diff --git a/library/font_awesome/src/icons.html b/library/font_awesome/src/icons.html
deleted file mode 100644
index 00ad17e74..000000000
--- a/library/font_awesome/src/icons.html
+++ /dev/null
@@ -1,98 +0,0 @@
----
-layout: base
-title: Font Awesome Icons
-navbar_active: icons
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-flag" aria-hidden="true"></i>&nbsp; The Icons{% endcapture %}
-{% capture jumbotron_p %}The complete set of {{ icons | size }} icons in Font Awesome {{ site.fontawesome.version }}{% endcapture %}
-
-{% include jumbotron.html %}
-{% include stripe-social.html %}
-
-<div class="container" data-view="search">
- {% capture stripe_ad_content %}
- <p class="lead">
- You asked, Font Awesome delivers with {{ icons | version:site.fontawesome.minor_version | size }} shiny new icons in version {{ site.fontawesome.minor_version }}.
- Want to request new icons? <a href="{{ page.relative_path }}community/#requesting-new-icons">Here's how</a>.
- <!--The ever-expanding list of Font Awesome {{ site.fontawesome.version }} icons.-->
- Need vectors or want to use on the desktop? Check the <a href="{{ page.relative_path }}cheatsheet/">cheatsheet</a>.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- <div class="row">
- <div class="col-md-10 col-sm-9">
- <section id="search">
- <label for="search-input"><i class="fa fa-search" aria-hidden="true"></i><span class="sr-only">Search icons</span></label>
- <input id="search-input" class="form-control input-lg" placeholder="Search icons" autocomplete="off" spellcheck="false" autocorrect="off" tabindex="1">
- <a id="search-clear" href="#" class="fa fa-times-circle hide" aria-hidden="true"><span class="sr-only">Clear search</span></a>
- </section>
- </div>
- <div class="col-md-2 col-sm-3 padding-left-none hidden-xs">
- <div class="algolia">
- by <a href="https://algolia.com"><i class="fas fas-algolia" aria-hidden="true"></i><span class="sr-only">Algolia</span></a>
- </div>
- </div>
- </div>
-
- <div id="search-results" class="hide"></div>
- <div id="icons">
- {% include icons/new.html %}
- {% include icons/web-application.html %}
- {% include icons/accessibility.html %}
- {% include icons/hand.html %}
- {% include icons/transportation.html %}
- {% include icons/gender.html %}
- {% include icons/file-type.html %}
- {% include icons/spinner.html %}
- {% include icons/form-control.html %}
- {% include icons/payment.html %}
- {% include icons/chart.html %}
- {% include icons/currency.html %}
- {% include icons/text-editor.html %}
- {% include icons/directional.html %}
- {% include icons/video-player.html %}
- {% include icons/brand.html %}
- {% include icons/medical.html %}
- </div>
- <script type="text/template" id="results-template">
- <h2 class="page-header">Search for '<span class="text-color-default"><%= content.query %></span>'</h2>
- <% if (content.nbHits > 0) { %>
- <div class="row fontawesome-icon-list">
- <%= results %>
- </div>
- <% } else { %>
- <div class="alert alert-danger text-lg" role="alert">
- <h3 class="margin-top margin-bottom-lg"><i class="fa fa-meh-o" aria-hidden="true"></i> Oops! No icons matched your query.</h3>
- A few things that might help:
- <ol>
- <li>
- Use <a class="alert-link" href="https://fortawesome.com">Fort Awesome</a> (our latest project) to add your
- own icons and take your icon game to the next level!
- </li>
- <li>
- Really, really want to see an icon in Font Awesome?
- <a class="alert-link" href="mailto:dave@fortawesome.com">Drop me an email</a> to commission the icons you need!
- </li>
- <li>
- Are we missing something in our search results?
- <a class="alert-link" href="https://github.com/FortAwesome/Font-Awesome/issues/new">Open an issue on GitHub!</a>
- (Make sure to <a class="alert-link" href="https://github.com/FortAwesome/Font-Awesome/issues">search existing
- issues first</a>.)
- </li>
- </ol>
- </div>
- <% } %>
- </script>
- <script type="text/template" id="result-template">
- <div class="fa-hover col-md-3 col-sm-4">
- <a href="{{ page.relative_path }}icon/<%= result.name %>">
- <i class="fa <%= result.css_class %>" aria-hidden="true"></i> <%= result._highlightResult.name.value %>
- <% if (matches.length > 0) { %>
- <span class="text-muted">(<%= matches.join(", ") %>)</span>
- <% } %>
- </a>
- </div>
- </script>
-</div>
diff --git a/library/font_awesome/src/icons.yml b/library/font_awesome/src/icons.yml
deleted file mode 100644
index bd1b5506f..000000000
--- a/library/font_awesome/src/icons.yml
+++ /dev/null
@@ -1,6540 +0,0 @@
-icons:
- - name: Glass
- id: glass
- unicode: f000
- created: 1.0
- filter:
- - martini
- - drink
- - bar
- - alcohol
- - liquor
- categories:
- - Web Application Icons
-
- - name: Music
- id: music
- unicode: f001
- created: 1.0
- filter:
- - note
- - sound
- categories:
- - Web Application Icons
-
- - name: Search
- id: search
- unicode: f002
- created: 1.0
- filter:
- - magnify
- - zoom
- - enlarge
- - bigger
- categories:
- - Web Application Icons
-
- - name: Envelope Outlined
- id: envelope-o
- unicode: f003
- created: 1.0
- filter:
- - email
- - support
- - e-mail
- - letter
- - mail
- - notification
- categories:
- - Web Application Icons
-
- - name: Heart
- id: heart
- unicode: f004
- created: 1.0
- filter:
- - love
- - like
- - favorite
- categories:
- - Web Application Icons
- - Medical Icons
-
- - name: Star
- id: star
- unicode: f005
- created: 1.0
- filter:
- - award
- - achievement
- - night
- - rating
- - score
- - favorite
- categories:
- - Web Application Icons
-
- - name: Star Outlined
- id: star-o
- unicode: f006
- created: 1.0
- filter:
- - award
- - achievement
- - night
- - rating
- - score
- - favorite
- categories:
- - Web Application Icons
-
- - name: User
- id: user
- unicode: f007
- created: 1.0
- filter:
- - person
- - man
- - head
- - profile
- categories:
- - Web Application Icons
-
- - name: Film
- id: film
- unicode: f008
- created: 1.0
- filter:
- - movie
- categories:
- - Web Application Icons
-
- - name: th-large
- id: th-large
- unicode: f009
- created: 1.0
- filter:
- - blocks
- - squares
- - boxes
- - grid
- categories:
- - Text Editor Icons
-
- - name: th
- id: th
- unicode: f00a
- created: 1.0
- filter:
- - blocks
- - squares
- - boxes
- - grid
- categories:
- - Text Editor Icons
-
- - name: th-list
- id: th-list
- unicode: f00b
- created: 1.0
- filter:
- - ul
- - ol
- - checklist
- - finished
- - completed
- - done
- - todo
- categories:
- - Text Editor Icons
-
- - name: Check
- id: check
- unicode: f00c
- created: 1.0
- filter:
- - checkmark
- - done
- - todo
- - agree
- - accept
- - confirm
- - tick
- - ok
- categories:
- - Web Application Icons
-
- - name: Times
- id: times
- unicode: f00d
- created: 1.0
- aliases:
- - remove
- - close
- filter:
- - close
- - exit
- - x
- - cross
- categories:
- - Web Application Icons
-
- - name: Search Plus
- id: search-plus
- unicode: f00e
- created: 1.0
- filter:
- - magnify
- - zoom
- - enlarge
- - bigger
- categories:
- - Web Application Icons
-
-
- - name: Search Minus
- id: search-minus
- unicode: f010
- created: 1.0
- filter:
- - magnify
- - minify
- - zoom
- - smaller
- categories:
- - Web Application Icons
-
- - name: Power Off
- id: power-off
- unicode: f011
- created: 1.0
- filter:
- - "on"
- categories:
- - Web Application Icons
-
- - name: signal
- id: signal
- unicode: f012
- created: 1.0
- filter:
- - graph
- - bars
- categories:
- - Web Application Icons
-
- - name: cog
- id: cog
- unicode: f013
- created: 1.0
- filter:
- - settings
- aliases:
- - gear
- categories:
- - Web Application Icons
- - Spinner Icons
-
- - name: Trash Outlined
- id: trash-o
- unicode: f014
- created: 1.0
- filter:
- - garbage
- - delete
- - remove
- - trash
- - hide
- categories:
- - Web Application Icons
-
- - name: home
- id: home
- unicode: f015
- created: 1.0
- filter:
- - main
- - house
- categories:
- - Web Application Icons
-
- - name: File Outlined
- id: file-o
- unicode: f016
- created: 1.0
- filter:
- - new
- - page
- - pdf
- - document
- categories:
- - Text Editor Icons
- - File Type Icons
-
- - name: Clock Outlined
- id: clock-o
- unicode: f017
- created: 1.0
- filter:
- - watch
- - timer
- - late
- - timestamp
- categories:
- - Web Application Icons
-
- - name: road
- id: road
- unicode: f018
- created: 1.0
- filter:
- - street
- categories:
- - Web Application Icons
-
- - name: Download
- id: download
- unicode: f019
- created: 1.0
- filter:
- - import
- categories:
- - Web Application Icons
-
- - name: Arrow Circle Outlined Down
- id: arrow-circle-o-down
- unicode: f01a
- created: 1.0
- filter:
- - download
- categories:
- - Directional Icons
-
- - name: Arrow Circle Outlined Up
- id: arrow-circle-o-up
- unicode: f01b
- created: 1.0
- categories:
- - Directional Icons
-
- - name: inbox
- id: inbox
- unicode: f01c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Play Circle Outlined
- id: play-circle-o
- unicode: f01d
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: Repeat
- id: repeat
- unicode: f01e
- created: 1.0
- filter:
- - redo
- - forward
- aliases:
- - rotate-right
- categories:
- - Text Editor Icons
-
-
- - name: refresh
- id: refresh
- unicode: f021
- created: 1.0
- filter:
- - reload
- - sync
- categories:
- - Web Application Icons
- - Spinner Icons
-
- - name: list-alt
- id: list-alt
- unicode: f022
- created: 1.0
- filter:
- - ul
- - ol
- - checklist
- - finished
- - completed
- - done
- - todo
- categories:
- - Text Editor Icons
-
- - name: lock
- id: lock
- unicode: f023
- created: 1.0
- filter:
- - protect
- - admin
- - security
- categories:
- - Web Application Icons
-
- - name: flag
- id: flag
- unicode: f024
- created: 1.0
- filter:
- - report
- - notification
- - notify
- categories:
- - Web Application Icons
-
- - name: headphones
- id: headphones
- unicode: f025
- created: 1.0
- filter:
- - sound
- - listen
- - music
- - audio
- categories:
- - Web Application Icons
-
- - name: volume-off
- id: volume-off
- unicode: f026
- created: 1.0
- filter:
- - audio
- - mute
- - sound
- - music
- categories:
- - Web Application Icons
-
- - name: volume-down
- id: volume-down
- unicode: f027
- created: 1.0
- filter:
- - audio
- - lower
- - quieter
- - sound
- - music
- categories:
- - Web Application Icons
-
- - name: volume-up
- id: volume-up
- unicode: f028
- created: 1.0
- filter:
- - audio
- - higher
- - louder
- - sound
- - music
- categories:
- - Web Application Icons
-
- - name: qrcode
- id: qrcode
- unicode: f029
- created: 1.0
- filter:
- - scan
- categories:
- - Web Application Icons
-
- - name: barcode
- id: barcode
- unicode: f02a
- created: 1.0
- filter:
- - scan
- categories:
- - Web Application Icons
-
- - name: tag
- id: tag
- unicode: f02b
- created: 1.0
- filter:
- - label
- categories:
- - Web Application Icons
-
- - name: tags
- id: tags
- unicode: f02c
- created: 1.0
- filter:
- - labels
- categories:
- - Web Application Icons
-
- - name: book
- id: book
- unicode: f02d
- created: 1.0
- filter:
- - read
- - documentation
- categories:
- - Web Application Icons
-
- - name: bookmark
- id: bookmark
- unicode: f02e
- created: 1.0
- filter:
- - save
- categories:
- - Web Application Icons
-
- - name: print
- id: print
- unicode: f02f
- created: 1.0
- categories:
- - Web Application Icons
-
-
- - name: camera
- id: camera
- unicode: f030
- created: 1.0
- filter:
- - photo
- - picture
- - record
- categories:
- - Web Application Icons
-
- - name: font
- id: font
- unicode: f031
- created: 1.0
- filter:
- - text
- categories:
- - Text Editor Icons
-
- - name: bold
- id: bold
- unicode: f032
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: italic
- id: italic
- unicode: f033
- created: 1.0
- filter:
- - italics
- categories:
- - Text Editor Icons
-
- - name: text-height
- id: text-height
- unicode: f034
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: text-width
- id: text-width
- unicode: f035
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: align-left
- id: align-left
- unicode: f036
- created: 1.0
- filter:
- - text
- categories:
- - Text Editor Icons
-
- - name: align-center
- id: align-center
- unicode: f037
- created: 1.0
- filter:
- - middle
- - text
- categories:
- - Text Editor Icons
-
- - name: align-right
- id: align-right
- unicode: f038
- created: 1.0
- filter:
- - text
- categories:
- - Text Editor Icons
-
- - name: align-justify
- id: align-justify
- unicode: f039
- created: 1.0
- filter:
- - text
- categories:
- - Text Editor Icons
-
- - name: list
- id: list
- unicode: f03a
- created: 1.0
- filter:
- - ul
- - ol
- - checklist
- - finished
- - completed
- - done
- - todo
- categories:
- - Text Editor Icons
-
- - name: Outdent
- id: outdent
- unicode: f03b
- created: 1.0
- aliases:
- - dedent
- categories:
- - Text Editor Icons
-
- - name: Indent
- id: indent
- unicode: f03c
- created: 1.0
- categories:
- - Text Editor Icons
-
- - name: Video Camera
- id: video-camera
- unicode: f03d
- created: 1.0
- filter:
- - film
- - movie
- - record
- categories:
- - Web Application Icons
-
- - name: Picture Outlined
- id: picture-o
- unicode: f03e
- created: 1.0
- aliases:
- - photo
- - image
- categories:
- - Web Application Icons
-
-
- - name: pencil
- id: pencil
- unicode: f040
- created: 1.0
- filter:
- - write
- - edit
- - update
- categories:
- - Web Application Icons
-
- - name: map-marker
- id: map-marker
- unicode: f041
- created: 1.0
- filter:
- - map
- - pin
- - location
- - coordinates
- - localize
- - address
- - travel
- - where
- - place
- categories:
- - Web Application Icons
-
- - name: adjust
- id: adjust
- unicode: f042
- created: 1.0
- filter:
- - contrast
- categories:
- - Web Application Icons
-
- - name: tint
- id: tint
- unicode: f043
- created: 1.0
- filter:
- - raindrop
- - waterdrop
- - drop
- - droplet
- categories:
- - Web Application Icons
-
- - name: Pencil Square Outlined
- id: pencil-square-o
- unicode: f044
- created: 1.0
- filter:
- - write
- - edit
- - update
- aliases:
- - edit
- categories:
- - Web Application Icons
-
- - name: Share Square Outlined
- id: share-square-o
- unicode: f045
- created: 1.0
- filter:
- - social
- - send
- - arrow
- categories:
- - Web Application Icons
-
- - name: Check Square Outlined
- id: check-square-o
- unicode: f046
- created: 1.0
- filter:
- - todo
- - done
- - agree
- - accept
- - confirm
- - ok
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Arrows
- id: arrows
- unicode: f047
- created: 1.0
- filter:
- - move
- - reorder
- - resize
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: step-backward
- id: step-backward
- unicode: f048
- created: 1.0
- filter:
- - rewind
- - previous
- - beginning
- - start
- - first
- categories:
- - Video Player Icons
-
- - name: fast-backward
- id: fast-backward
- unicode: f049
- created: 1.0
- filter:
- - rewind
- - previous
- - beginning
- - start
- - first
- categories:
- - Video Player Icons
-
- - name: backward
- id: backward
- unicode: f04a
- created: 1.0
- filter:
- - rewind
- - previous
- categories:
- - Video Player Icons
-
- - name: play
- id: play
- unicode: f04b
- created: 1.0
- filter:
- - start
- - playing
- - music
- - sound
- categories:
- - Video Player Icons
-
- - name: pause
- id: pause
- unicode: f04c
- created: 1.0
- filter:
- - wait
- categories:
- - Video Player Icons
-
- - name: stop
- id: stop
- unicode: f04d
- created: 1.0
- filter:
- - block
- - box
- - square
- categories:
- - Video Player Icons
-
- - name: forward
- id: forward
- unicode: f04e
- created: 1.0
- filter:
- - forward
- - next
- categories:
- - Video Player Icons
-
-
- - name: fast-forward
- id: fast-forward
- unicode: f050
- created: 1.0
- filter:
- - next
- - end
- - last
- categories:
- - Video Player Icons
-
- - name: step-forward
- id: step-forward
- unicode: f051
- created: 1.0
- filter:
- - next
- - end
- - last
- categories:
- - Video Player Icons
-
- - name: eject
- id: eject
- unicode: f052
- created: 1.0
- categories:
- - Video Player Icons
-
- - name: chevron-left
- id: chevron-left
- unicode: f053
- created: 1.0
- filter:
- - bracket
- - previous
- - back
- categories:
- - Directional Icons
-
- - name: chevron-right
- id: chevron-right
- unicode: f054
- created: 1.0
- filter:
- - bracket
- - next
- - forward
- categories:
- - Directional Icons
-
- - name: Plus Circle
- id: plus-circle
- unicode: f055
- created: 1.0
- filter:
- - add
- - new
- - create
- - expand
- categories:
- - Web Application Icons
-
- - name: Minus Circle
- id: minus-circle
- unicode: f056
- created: 1.0
- filter:
- - delete
- - remove
- - trash
- - hide
- categories:
- - Web Application Icons
-
- - name: Times Circle
- id: times-circle
- unicode: f057
- created: 1.0
- filter:
- - close
- - exit
- - x
- categories:
- - Web Application Icons
-
- - name: Check Circle
- id: check-circle
- unicode: f058
- created: 1.0
- filter:
- - todo
- - done
- - agree
- - accept
- - confirm
- - ok
- categories:
- - Web Application Icons
-
- - name: Question Circle
- id: question-circle
- unicode: f059
- filter:
- - help
- - information
- - unknown
- - support
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Info Circle
- id: info-circle
- unicode: f05a
- created: 1.0
- filter:
- - help
- - information
- - more
- - details
- categories:
- - Web Application Icons
-
- - name: Crosshairs
- id: crosshairs
- unicode: f05b
- created: 1.0
- filter:
- - picker
- categories:
- - Web Application Icons
-
- - name: Times Circle Outlined
- id: times-circle-o
- unicode: f05c
- created: 1.0
- filter:
- - close
- - exit
- - x
- categories:
- - Web Application Icons
-
- - name: Check Circle Outlined
- id: check-circle-o
- unicode: f05d
- created: 1.0
- filter:
- - todo
- - done
- - agree
- - accept
- - confirm
- - ok
- categories:
- - Web Application Icons
-
- - name: ban
- id: ban
- unicode: f05e
- created: 1.0
- filter:
- - delete
- - remove
- - trash
- - hide
- - block
- - stop
- - abort
- - cancel
- categories:
- - Web Application Icons
-
-
- - name: arrow-left
- id: arrow-left
- unicode: f060
- created: 1.0
- filter:
- - previous
- - back
- categories:
- - Directional Icons
-
- - name: arrow-right
- id: arrow-right
- unicode: f061
- created: 1.0
- filter:
- - next
- - forward
- categories:
- - Directional Icons
-
- - name: arrow-up
- id: arrow-up
- unicode: f062
- created: 1.0
- categories:
- - Directional Icons
-
- - name: arrow-down
- id: arrow-down
- unicode: f063
- created: 1.0
- filter:
- - download
- categories:
- - Directional Icons
-
- - name: Share
- id: share
- unicode: f064
- created: 1.0
- aliases:
- - mail-forward
- categories:
- - Web Application Icons
-
- - name: Expand
- id: expand
- unicode: f065
- created: 1.0
- filter:
- - enlarge
- - bigger
- - resize
- categories:
- - Video Player Icons
-
- - name: Compress
- id: compress
- unicode: f066
- created: 1.0
- filter:
- - collapse
- - combine
- - contract
- - merge
- - smaller
- categories:
- - Video Player Icons
-
- - name: plus
- id: plus
- unicode: f067
- created: 1.0
- filter:
- - add
- - new
- - create
- - expand
- categories:
- - Web Application Icons
-
- - name: minus
- id: minus
- unicode: f068
- created: 1.0
- filter:
- - hide
- - minify
- - delete
- - remove
- - trash
- - hide
- - collapse
- categories:
- - Web Application Icons
-
- - name: asterisk
- id: asterisk
- unicode: f069
- created: 1.0
- filter:
- - details
- categories:
- - Web Application Icons
-
- - name: Exclamation Circle
- id: exclamation-circle
- unicode: f06a
- created: 1.0
- filter:
- - warning
- - error
- - problem
- - notification
- - alert
- categories:
- - Web Application Icons
-
- - name: gift
- id: gift
- unicode: f06b
- created: 1.0
- filter:
- - present
- categories:
- - Web Application Icons
-
- - name: leaf
- id: leaf
- unicode: f06c
- created: 1.0
- filter:
- - eco
- - nature
- - plant
- categories:
- - Web Application Icons
-
- - name: fire
- id: fire
- unicode: f06d
- created: 1.0
- filter:
- - flame
- - hot
- - popular
- categories:
- - Web Application Icons
-
- - name: Eye
- id: eye
- unicode: f06e
- created: 1.0
- filter:
- - show
- - visible
- - views
- categories:
- - Web Application Icons
-
-
- - name: Eye Slash
- id: eye-slash
- unicode: f070
- created: 1.0
- filter:
- - toggle
- - show
- - hide
- - visible
- - visiblity
- - views
- categories:
- - Web Application Icons
-
- - name: Exclamation Triangle
- id: exclamation-triangle
- unicode: f071
- created: 1.0
- filter:
- - warning
- - error
- - problem
- - notification
- - alert
- aliases:
- - warning
- categories:
- - Web Application Icons
-
- - name: plane
- id: plane
- unicode: f072
- created: 1.0
- filter:
- - travel
- - trip
- - location
- - destination
- - airplane
- - fly
- - mode
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: calendar
- id: calendar
- unicode: f073
- created: 1.0
- filter:
- - date
- - time
- - when
- - event
- categories:
- - Web Application Icons
-
- - name: random
- id: random
- unicode: f074
- created: 1.0
- filter:
- - sort
- - shuffle
- categories:
- - Web Application Icons
- - Video Player Icons
-
- - name: comment
- id: comment
- unicode: f075
- created: 1.0
- filter:
- - speech
- - notification
- - note
- - chat
- - bubble
- - feedback
- - message
- - texting
- - sms
- - conversation
- categories:
- - Web Application Icons
-
- - name: magnet
- id: magnet
- unicode: f076
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: chevron-up
- id: chevron-up
- unicode: f077
- created: 1.0
- categories:
- - Directional Icons
-
- - name: chevron-down
- id: chevron-down
- unicode: f078
- created: 1.0
- categories:
- - Directional Icons
-
- - name: retweet
- id: retweet
- unicode: f079
- created: 1.0
- filter:
- - refresh
- - reload
- - share
- categories:
- - Web Application Icons
-
- - name: shopping-cart
- id: shopping-cart
- unicode: f07a
- created: 1.0
- filter:
- - checkout
- - buy
- - purchase
- - payment
- categories:
- - Web Application Icons
-
- - name: Folder
- id: folder
- unicode: f07b
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Folder Open
- id: folder-open
- unicode: f07c
- created: 1.0
- categories:
- - Web Application Icons
-
- - name: Arrows Vertical
- id: arrows-v
- unicode: f07d
- created: 1.0
- filter:
- - resize
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: Arrows Horizontal
- id: arrows-h
- unicode: f07e
- created: 1.0
- filter:
- - resize
- categories:
- - Web Application Icons
- - Directional Icons
-
-
- - name: Bar Chart
- id: bar-chart
- unicode: f080
- created: 1.0
- aliases:
- - bar-chart-o
- filter:
- - graph
- - analytics
- categories:
- - Web Application Icons
- - Chart Icons
-
- - name: Twitter Square
- id: twitter-square
- unicode: f081
- created: 1.0
- filter:
- - tweet
- - social network
- categories:
- - Brand Icons
-
- - name: Facebook Square
- id: facebook-square
- unicode: f082
- created: 1.0
- filter:
- - social network
- categories:
- - Brand Icons
-
- - name: camera-retro
- id: camera-retro
- unicode: f083
- created: 1.0
- filter:
- - photo
- - picture
- - record
- categories:
- - Web Application Icons
-
- - name: key
- id: key
- unicode: f084
- created: 1.0
- filter:
- - unlock
- - password
- categories:
- - Web Application Icons
-
- - name: cogs
- id: cogs
- unicode: f085
- created: 1.0
- aliases:
- - gears
- filter:
- - settings
- categories:
- - Web Application Icons
-
- - name: comments
- id: comments
- unicode: f086
- created: 1.0
- filter:
- - speech
- - notification
- - note
- - chat
- - bubble
- - feedback
- - message
- - texting
- - sms
- - conversation
- categories:
- - Web Application Icons
-
- - name: Thumbs Up Outlined
- id: thumbs-o-up
- unicode: f087
- created: 1.0
- filter:
- - like
- - approve
- - favorite
- - agree
- - hand
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Thumbs Down Outlined
- id: thumbs-o-down
- unicode: f088
- created: 1.0
- filter:
- - dislike
- - disapprove
- - disagree
- - hand
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: star-half
- id: star-half
- unicode: f089
- created: 1.0
- filter:
- - award
- - achievement
- - rating
- - score
- categories:
- - Web Application Icons
-
- - name: Heart Outlined
- id: heart-o
- unicode: f08a
- created: 1.0
- filter:
- - love
- - like
- - favorite
- categories:
- - Web Application Icons
- - Medical Icons
-
- - name: Sign Out
- id: sign-out
- unicode: f08b
- created: 1.0
- filter:
- - log out
- - logout
- - leave
- - exit
- - arrow
- categories:
- - Web Application Icons
-
- - name: LinkedIn Square
- id: linkedin-square
- unicode: f08c
- created: 1.0
- categories:
- - Brand Icons
-
- - name: Thumb Tack
- id: thumb-tack
- unicode: f08d
- created: 1.0
- filter:
- - marker
- - pin
- - location
- - coordinates
- categories:
- - Web Application Icons
-
- - name: External Link
- id: external-link
- unicode: f08e
- created: 1.0
- filter:
- - open
- - new
- categories:
- - Web Application Icons
-
-
- - name: Sign In
- id: sign-in
- unicode: f090
- created: 1.0
- filter:
- - enter
- - join
- - log in
- - login
- - sign up
- - sign in
- - signin
- - signup
- - arrow
- categories:
- - Web Application Icons
-
- - name: trophy
- id: trophy
- unicode: f091
- created: 1.0
- filter:
- - award
- - achievement
- - cup
- - winner
- - game
- categories:
- - Web Application Icons
-
- - name: GitHub Square
- id: github-square
- unicode: f092
- created: 1.0
- url: github.com/logos
- filter:
- - octocat
- categories:
- - Brand Icons
-
- - name: Upload
- id: upload
- unicode: f093
- created: 1.0
- filter:
- - import
- categories:
- - Web Application Icons
-
- - name: Lemon Outlined
- id: lemon-o
- unicode: f094
- created: 1.0
- filter:
- - food
- categories:
- - Web Application Icons
-
- - name: Phone
- id: phone
- unicode: f095
- created: 2.0
- filter:
- - call
- - voice
- - number
- - support
- - earphone
- - telephone
- categories:
- - Web Application Icons
-
- - name: Square Outlined
- id: square-o
- unicode: f096
- created: 2.0
- filter:
- - block
- - square
- - box
- categories:
- - Web Application Icons
- - Form Control Icons
-
-
- - name: Bookmark Outlined
- id: bookmark-o
- unicode: f097
- created: 2.0
- filter:
- - save
- categories:
- - Web Application Icons
-
- - name: Phone Square
- id: phone-square
- unicode: f098
- created: 2.0
- filter:
- - call
- - voice
- - number
- - support
- - telephone
- categories:
- - Web Application Icons
-
- - name: Twitter
- id: twitter
- unicode: f099
- created: 2.0
- filter:
- - tweet
- - social network
- categories:
- - Brand Icons
-
- - name: Facebook
- id: facebook
- unicode: f09a
- created: 2.0
- aliases:
- - facebook-f
- filter:
- - social network
- categories:
- - Brand Icons
-
- - name: GitHub
- id: github
- unicode: f09b
- created: 2.0
- url: github.com/logos
- filter:
- - octocat
- categories:
- - Brand Icons
-
- - name: unlock
- id: unlock
- unicode: f09c
- created: 2.0
- filter:
- - protect
- - admin
- - password
- - lock
- categories:
- - Web Application Icons
-
- - name: credit-card
- id: credit-card
- unicode: f09d
- created: 2.0
- filter:
- - money
- - buy
- - debit
- - checkout
- - purchase
- - payment
- categories:
- - Web Application Icons
- - Payment Icons
-
- - name: rss
- id: rss
- unicode: f09e
- created: 2.0
- filter:
- - blog
- aliases:
- - feed
- categories:
- - Web Application Icons
-
-
- - name: HDD
- id: hdd-o
- unicode: f0a0
- created: 2.0
- filter:
- - harddrive
- - hard drive
- - storage
- - save
- categories:
- - Web Application Icons
-
- - name: bullhorn
- id: bullhorn
- unicode: f0a1
- created: 2.0
- filter:
- - announcement
- - share
- - broadcast
- - louder
- - megaphone
- categories:
- - Web Application Icons
-
- - name: bell
- id: bell
- unicode: f0f3
- created: 2.0
- filter:
- - alert
- - reminder
- - notification
- categories:
- - Web Application Icons
-
- - name: certificate
- id: certificate
- unicode: f0a3
- created: 2.0
- filter:
- - badge
- - star
- categories:
- - Web Application Icons
-
- - name: Hand Outlined Right
- id: hand-o-right
- unicode: f0a4
- created: 2.0
- filter:
- - point
- - right
- - next
- - forward
- - finger
- categories:
- - Directional Icons
- - Hand Icons
-
- - name: Hand Outlined Left
- id: hand-o-left
- unicode: f0a5
- created: 2.0
- filter:
- - point
- - left
- - previous
- - back
- - finger
- categories:
- - Directional Icons
- - Hand Icons
-
- - name: Hand Outlined Up
- id: hand-o-up
- unicode: f0a6
- created: 2.0
- filter:
- - point
- - finger
- categories:
- - Directional Icons
- - Hand Icons
-
- - name: Hand Outlined Down
- id: hand-o-down
- unicode: f0a7
- created: 2.0
- filter:
- - point
- - finger
- categories:
- - Directional Icons
- - Hand Icons
-
- - name: Arrow Circle Left
- id: arrow-circle-left
- unicode: f0a8
- created: 2.0
- filter:
- - previous
- - back
- categories:
- - Directional Icons
-
- - name: Arrow Circle Right
- id: arrow-circle-right
- unicode: f0a9
- created: 2.0
- filter:
- - next
- - forward
- categories:
- - Directional Icons
-
- - name: Arrow Circle Up
- id: arrow-circle-up
- unicode: f0aa
- created: 2.0
- categories:
- - Directional Icons
-
- - name: Arrow Circle Down
- id: arrow-circle-down
- unicode: f0ab
- created: 2.0
- filter:
- - download
- categories:
- - Directional Icons
-
- - name: Globe
- id: globe
- unicode: f0ac
- created: 2.0
- filter:
- - world
- - planet
- - map
- - place
- - travel
- - earth
- - global
- - translate
- - all
- - language
- - localize
- - location
- - coordinates
- - country
- categories:
- - Web Application Icons
-
- - name: Wrench
- id: wrench
- unicode: f0ad
- created: 2.0
- filter:
- - settings
- - fix
- - update
- - spanner
- categories:
- - Web Application Icons
-
- - name: Tasks
- id: tasks
- unicode: f0ae
- created: 2.0
- filter:
- - progress
- - loading
- - downloading
- - downloads
- - settings
- categories:
- - Web Application Icons
-
-
- - name: Filter
- id: filter
- unicode: f0b0
- created: 2.0
- filter:
- - funnel
- - options
- categories:
- - Web Application Icons
-
- - name: Briefcase
- id: briefcase
- unicode: f0b1
- created: 2.0
- filter:
- - work
- - business
- - office
- - luggage
- - bag
- categories:
- - Web Application Icons
-
- - name: Arrows Alt
- id: arrows-alt
- unicode: f0b2
- created: 2.0
- filter:
- - expand
- - enlarge
- - fullscreen
- - bigger
- - move
- - reorder
- - resize
- - arrow
- categories:
- - Video Player Icons
- - Directional Icons
-
-
- - name: Users
- id: users
- unicode: f0c0
- created: 2.0
- filter:
- - people
- - profiles
- - persons
- aliases:
- - group
- categories:
- - Web Application Icons
-
- - name: Link
- id: link
- unicode: f0c1
- created: 2.0
- filter:
- - chain
- aliases:
- - chain
- categories:
- - Text Editor Icons
-
- - name: Cloud
- id: cloud
- filter:
- - save
- unicode: f0c2
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: Flask
- id: flask
- unicode: f0c3
- created: 2.0
- filter:
- - science
- - beaker
- - experimental
- - labs
- categories:
- - Web Application Icons
-
- - name: Scissors
- id: scissors
- unicode: f0c4
- created: 2.0
- aliases:
- - cut
- categories:
- - Text Editor Icons
-
- - name: Files Outlined
- id: files-o
- unicode: f0c5
- created: 2.0
- filter:
- - duplicate
- - clone
- - copy
- aliases:
- - copy
- categories:
- - Text Editor Icons
-
- - name: Paperclip
- id: paperclip
- unicode: f0c6
- created: 2.0
- filter:
- - attachment
- categories:
- - Text Editor Icons
-
- - name: Floppy Outlined
- id: floppy-o
- unicode: f0c7
- created: 2.0
- aliases:
- - save
- categories:
- - Text Editor Icons
-
- - name: Square
- id: square
- unicode: f0c8
- created: 2.0
- filter:
- - block
- - box
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Bars
- id: bars
- unicode: f0c9
- created: 2.0
- aliases:
- - navicon
- - reorder
- filter:
- - menu
- - drag
- - reorder
- - settings
- - list
- - ul
- - ol
- - checklist
- - todo
- - list
- - hamburger
- categories:
- - Web Application Icons
-
- - name: list-ul
- id: list-ul
- unicode: f0ca
- created: 2.0
- filter:
- - ul
- - ol
- - checklist
- - todo
- - list
- categories:
- - Text Editor Icons
-
- - name: list-ol
- id: list-ol
- unicode: f0cb
- created: 2.0
- filter:
- - ul
- - ol
- - checklist
- - list
- - todo
- - list
- - numbers
- categories:
- - Text Editor Icons
-
- - name: Strikethrough
- id: strikethrough
- unicode: f0cc
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: Underline
- id: underline
- unicode: f0cd
- created: 2.0
- categories:
- - Text Editor Icons
-
- - name: table
- id: table
- unicode: f0ce
- created: 2.0
- filter:
- - data
- - excel
- - spreadsheet
- categories:
- - Text Editor Icons
-
-
- - name: magic
- id: magic
- unicode: f0d0
- created: 2.0
- filter:
- - wizard
- - automatic
- - autocomplete
- categories:
- - Web Application Icons
-
- - name: truck
- id: truck
- unicode: f0d1
- created: 2.0
- filter:
- - shipping
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: Pinterest
- id: pinterest
- unicode: f0d2
- created: 2.0
- categories:
- - Brand Icons
-
- - name: Pinterest Square
- id: pinterest-square
- unicode: f0d3
- created: 2.0
- categories:
- - Brand Icons
-
- - name: Google Plus Square
- id: google-plus-square
- unicode: f0d4
- created: 2.0
- filter:
- - social network
- categories:
- - Brand Icons
-
- - name: Google Plus
- id: google-plus
- unicode: f0d5
- created: 2.0
- filter:
- - social network
- categories:
- - Brand Icons
-
- - name: Money
- id: money
- unicode: f0d6
- created: 2.0
- filter:
- - cash
- - money
- - buy
- - checkout
- - purchase
- - payment
- categories:
- - Web Application Icons
- - Currency Icons
-
- - name: Caret Down
- id: caret-down
- unicode: f0d7
- created: 2.0
- filter:
- - more
- - dropdown
- - menu
- - triangle down
- - arrow
- categories:
- - Directional Icons
-
- - name: Caret Up
- id: caret-up
- unicode: f0d8
- created: 2.0
- filter:
- - triangle up
- - arrow
- categories:
- - Directional Icons
-
- - name: Caret Left
- id: caret-left
- unicode: f0d9
- created: 2.0
- filter:
- - previous
- - back
- - triangle left
- - arrow
- categories:
- - Directional Icons
-
- - name: Caret Right
- id: caret-right
- unicode: f0da
- created: 2.0
- filter:
- - next
- - forward
- - triangle right
- - arrow
- categories:
- - Directional Icons
-
- - name: Columns
- id: columns
- unicode: f0db
- created: 2.0
- filter:
- - split
- - panes
- categories:
- - Text Editor Icons
-
- - name: Sort
- id: sort
- unicode: f0dc
- created: 2.0
- filter:
- - order
- aliases:
- - unsorted
- categories:
- - Web Application Icons
-
- - name: Sort Descending
- id: sort-desc
- unicode: f0dd
- created: 2.0
- filter:
- - dropdown
- - more
- - menu
- - arrow
- aliases:
- - sort-down
- categories:
- - Web Application Icons
-
- - name: Sort Ascending
- id: sort-asc
- unicode: f0de
- created: 2.0
- aliases:
- - sort-up
- filter:
- - arrow
- categories:
- - Web Application Icons
-
-
- - name: Envelope
- id: envelope
- unicode: f0e0
- created: 2.0
- filter:
- - email
- - e-mail
- - letter
- - support
- - mail
- - notification
- categories:
- - Web Application Icons
-
- - name: LinkedIn
- id: linkedin
- unicode: f0e1
- created: 2.0
- categories:
- - Brand Icons
-
-
- - name: Undo
- id: undo
- unicode: f0e2
- created: 2.0
- filter:
- - back
- aliases:
- - rotate-left
- categories:
- - Text Editor Icons
-
- - name: Gavel
- id: gavel
- unicode: f0e3
- created: 2.0
- label:
- - judge
- - lawyer
- - opinion
- aliases:
- - legal
- categories:
- - Web Application Icons
-
- - name: Tachometer
- id: tachometer
- unicode: f0e4
- created: 2.0
- label:
- - speedometer
- - fast
- aliases:
- - dashboard
- categories:
- - Web Application Icons
-
- - name: comment-o
- id: comment-o
- unicode: f0e5
- created: 2.0
- filter:
- - speech
- - notification
- - note
- - chat
- - bubble
- - feedback
- - message
- - texting
- - sms
- - conversation
- categories:
- - Web Application Icons
-
- - name: comments-o
- id: comments-o
- unicode: f0e6
- created: 2.0
- filter:
- - speech
- - notification
- - note
- - chat
- - bubble
- - feedback
- - message
- - texting
- - sms
- - conversation
- categories:
- - Web Application Icons
-
- - name: Lightning Bolt
- id: bolt
- unicode: f0e7
- created: 2.0
- filter:
- - lightning
- - weather
- aliases:
- - flash
- categories:
- - Web Application Icons
-
- - name: Sitemap
- id: sitemap
- unicode: f0e8
- created: 2.0
- filter:
- - directory
- - hierarchy
- - organization
- categories:
- - Web Application Icons
-
- - name: Umbrella
- id: umbrella
- unicode: f0e9
- created: 2.0
- categories:
- - Web Application Icons
-
- - name: Clipboard
- id: clipboard
- unicode: f0ea
- created: 2.0
- filter:
- - copy
- aliases:
- - paste
- categories:
- - Text Editor Icons
-
- - name: Lightbulb Outlined
- id: lightbulb-o
- unicode: f0eb
- created: 3.0
- filter:
- - idea
- - inspiration
- categories:
- - Web Application Icons
-
- - name: Exchange
- id: exchange
- unicode: f0ec
- created: 3.0
- filter:
- - transfer
- - arrows
- - arrow
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: Cloud Download
- id: cloud-download
- unicode: f0ed
- created: 3.0
- filter:
- - import
- categories:
- - Web Application Icons
-
- - name: Cloud Upload
- id: cloud-upload
- unicode: f0ee
- created: 3.0
- filter:
- - import
- categories:
- - Web Application Icons
-
-
- - name: user-md
- id: user-md
- unicode: f0f0
- created: 2.0
- filter:
- - doctor
- - profile
- - medical
- - nurse
- categories:
- - Medical Icons
-
- - name: Stethoscope
- id: stethoscope
- unicode: f0f1
- created: 3.0
- categories:
- - Medical Icons
-
- - name: Suitcase
- id: suitcase
- unicode: f0f2
- created: 3.0
- filter:
- - trip
- - luggage
- - travel
- - move
- - baggage
- categories:
- - Web Application Icons
-
- - name: Bell Outlined
- id: bell-o
- unicode: f0a2
- created: 3.0
- filter:
- - alert
- - reminder
- - notification
- categories:
- - Web Application Icons
-
- - name: Coffee
- id: coffee
- unicode: f0f4
- created: 3.0
- filter:
- - morning
- - mug
- - breakfast
- - tea
- - drink
- - cafe
- categories:
- - Web Application Icons
-
- - name: Cutlery
- id: cutlery
- unicode: f0f5
- created: 3.0
- filter:
- - food
- - restaurant
- - spoon
- - knife
- - dinner
- - eat
- categories:
- - Web Application Icons
-
- - name: File Text Outlined
- id: file-text-o
- unicode: f0f6
- created: 3.0
- filter:
- - new
- - page
- - pdf
- - document
- categories:
- - Text Editor Icons
- - File Type Icons
-
- - name: Building Outlined
- id: building-o
- unicode: f0f7
- created: 3.0
- filter:
- - work
- - business
- - apartment
- - office
- - company
- categories:
- - Web Application Icons
-
- - name: hospital Outlined
- id: hospital-o
- unicode: f0f8
- created: 3.0
- filter:
- - building
- categories:
- - Medical Icons
-
- - name: ambulance
- id: ambulance
- unicode: f0f9
- created: 3.0
- filter:
- - vehicle
- - support
- - help
- categories:
- - Medical Icons
- - Transportation Icons
-
- - name: medkit
- id: medkit
- unicode: f0fa
- created: 3.0
- filter:
- - first aid
- - firstaid
- - help
- - support
- - health
- categories:
- - Medical Icons
-
- - name: fighter-jet
- id: fighter-jet
- unicode: f0fb
- created: 3.0
- filter:
- - fly
- - plane
- - airplane
- - quick
- - fast
- - travel
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: beer
- id: beer
- unicode: f0fc
- created: 3.0
- filter:
- - alcohol
- - stein
- - drink
- - mug
- - bar
- - liquor
- categories:
- - Web Application Icons
-
- - name: H Square
- id: h-square
- unicode: f0fd
- created: 3.0
- filter:
- - hospital
- - hotel
- categories:
- - Medical Icons
-
- - name: Plus Square
- id: plus-square
- unicode: f0fe
- created: 3.0
- filter:
- - add
- - new
- - create
- - expand
- categories:
- - Medical Icons
- - Web Application Icons
- - Form Control Icons
-
-
- - name: Angle Double Left
- id: angle-double-left
- unicode: f100
- created: 3.0
- filter:
- - laquo
- - quote
- - previous
- - back
- - arrows
- categories:
- - Directional Icons
-
- - name: Angle Double Right
- id: angle-double-right
- unicode: f101
- created: 3.0
- filter:
- - raquo
- - quote
- - next
- - forward
- - arrows
- categories:
- - Directional Icons
-
- - name: Angle Double Up
- id: angle-double-up
- unicode: f102
- created: 3.0
- filter:
- - arrows
- categories:
- - Directional Icons
-
- - name: Angle Double Down
- id: angle-double-down
- unicode: f103
- created: 3.0
- filter:
- - arrows
- categories:
- - Directional Icons
-
- - name: angle-left
- id: angle-left
- unicode: f104
- created: 3.0
- filter:
- - previous
- - back
- - arrow
- categories:
- - Directional Icons
-
- - name: angle-right
- id: angle-right
- unicode: f105
- created: 3.0
- filter:
- - next
- - forward
- - arrow
- categories:
- - Directional Icons
-
- - name: angle-up
- id: angle-up
- unicode: f106
- created: 3.0
- filter:
- - arrow
- categories:
- - Directional Icons
-
- - name: angle-down
- id: angle-down
- unicode: f107
- created: 3.0
- filter:
- - arrow
- categories:
- - Directional Icons
-
- - name: Desktop
- id: desktop
- unicode: f108
- created: 3.0
- filter:
- - monitor
- - screen
- - desktop
- - computer
- - demo
- - device
- categories:
- - Web Application Icons
-
- - name: Laptop
- id: laptop
- unicode: f109
- created: 3.0
- filter:
- - demo
- - computer
- - device
- categories:
- - Web Application Icons
-
- - name: tablet
- id: tablet
- unicode: f10a
- created: 3.0
- filter:
- - ipad
- - device
- categories:
- - Web Application Icons
-
- - name: Mobile Phone
- id: mobile
- unicode: f10b
- created: 3.0
- filter:
- - cell phone
- - cellphone
- - text
- - call
- - iphone
- - number
- - telephone
- aliases:
- - mobile-phone
- categories:
- - Web Application Icons
-
- - name: Circle Outlined
- id: circle-o
- unicode: f10c
- created: 3.0
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: quote-left
- id: quote-left
- unicode: f10d
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: quote-right
- id: quote-right
- unicode: f10e
- created: 3.0
- categories:
- - Web Application Icons
-
-
- - name: Spinner
- id: spinner
- unicode: f110
- created: 3.0
- filter:
- - loading
- - progress
- categories:
- - Web Application Icons
- - Spinner Icons
-
- - name: Circle
- id: circle
- unicode: f111
- created: 3.0
- filter:
- - dot
- - notification
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Reply
- id: reply
- unicode: f112
- created: 3.0
- aliases:
- - mail-reply
- categories:
- - Web Application Icons
-
- - name: GitHub Alt
- id: github-alt
- unicode: f113
- created: 3.0
- url: github.com/logos
- filter:
- - octocat
- categories:
- - Brand Icons
-
- - name: Folder Outlined
- id: folder-o
- unicode: f114
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: Folder Open Outlined
- id: folder-open-o
- unicode: f115
- created: 3.0
- categories:
- - Web Application Icons
-
- - name: Smile Outlined
- id: smile-o
- unicode: f118
- created: 3.1
- filter:
- - face
- - emoticon
- - happy
- - approve
- - satisfied
- - rating
- categories:
- - Web Application Icons
-
- - name: Frown Outlined
- id: frown-o
- unicode: f119
- created: 3.1
- filter:
- - face
- - emoticon
- - sad
- - disapprove
- - rating
- categories:
- - Web Application Icons
-
- - name: Meh Outlined
- id: meh-o
- unicode: f11a
- created: 3.1
- filter:
- - face
- - emoticon
- - rating
- - neutral
- categories:
- - Web Application Icons
-
- - name: Gamepad
- id: gamepad
- unicode: f11b
- created: 3.1
- filter:
- - controller
- categories:
- - Web Application Icons
-
- - name: Keyboard Outlined
- id: keyboard-o
- unicode: f11c
- created: 3.1
- filter:
- - type
- - input
- categories:
- - Web Application Icons
-
- - name: Flag Outlined
- id: flag-o
- unicode: f11d
- created: 3.1
- filter:
- - report
- - notification
- categories:
- - Web Application Icons
-
- - name: flag-checkered
- id: flag-checkered
- unicode: f11e
- created: 3.1
- filter:
- - report
- - notification
- - notify
- categories:
- - Web Application Icons
-
-
- - name: Terminal
- id: terminal
- unicode: f120
- created: 3.1
- filter:
- - command
- - prompt
- - code
- categories:
- - Web Application Icons
-
- - name: Code
- id: code
- unicode: f121
- created: 3.1
- filter:
- - html
- - brackets
- categories:
- - Web Application Icons
-
- - name: reply-all
- id: reply-all
- unicode: f122
- created: 3.1
- aliases:
- - mail-reply-all
- categories:
- - Web Application Icons
-
- - name: Star Half Outlined
- id: star-half-o
- unicode: f123
- created: 3.1
- filter:
- - award
- - achievement
- - rating
- - score
- aliases:
- - star-half-empty
- - star-half-full
- categories:
- - Web Application Icons
-
- - name: location-arrow
- id: location-arrow
- unicode: f124
- created: 3.1
- filter:
- - map
- - coordinates
- - location
- - address
- - place
- - where
- categories:
- - Web Application Icons
-
- - name: crop
- id: crop
- unicode: f125
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: code-fork
- id: code-fork
- unicode: f126
- created: 3.1
- filter:
- - git
- - fork
- - vcs
- - svn
- - github
- - rebase
- - version
- - merge
- categories:
- - Web Application Icons
-
- - name: Chain Broken
- id: chain-broken
- unicode: f127
- created: 3.1
- filter:
- - remove
- aliases:
- - unlink
- categories:
- - Text Editor Icons
-
- - name: Question
- id: question
- unicode: f128
- created: 3.1
- filter:
- - help
- - information
- - unknown
- - support
- categories:
- - Web Application Icons
-
- - name: Info
- id: info
- unicode: f129
- created: 3.1
- filter:
- - help
- - information
- - more
- - details
- categories:
- - Web Application Icons
-
- - name: exclamation
- id: exclamation
- unicode: f12a
- created: 3.1
- filter:
- - warning
- - error
- - problem
- - notification
- - notify
- - alert
- categories:
- - Web Application Icons
-
- - name: superscript
- id: superscript
- unicode: f12b
- created: 3.1
- filter:
- - exponential
- categories:
- - Text Editor Icons
-
- - name: subscript
- id: subscript
- unicode: f12c
- created: 3.1
- categories:
- - Text Editor Icons
-
- - name: eraser
- id: eraser
- unicode: f12d
- created: 3.1
- filter:
- - remove
- - delete
- categories:
- - Text Editor Icons
- - Web Application Icons
-
- - name: Puzzle Piece
- id: puzzle-piece
- unicode: f12e
- created: 3.1
- filter:
- - addon
- - add-on
- - section
- categories:
- - Web Application Icons
-
-
- - name: microphone
- id: microphone
- unicode: f130
- created: 3.1
- filter:
- - record
- - voice
- - sound
- categories:
- - Web Application Icons
-
- - name: Microphone Slash
- id: microphone-slash
- unicode: f131
- created: 3.1
- filter:
- - record
- - voice
- - sound
- - mute
- categories:
- - Web Application Icons
-
- - name: shield
- id: shield
- unicode: f132
- created: 3.1
- filter:
- - award
- - achievement
- - security
- - winner
- categories:
- - Web Application Icons
-
- - name: calendar-o
- id: calendar-o
- unicode: f133
- created: 3.1
- filter:
- - date
- - time
- - when
- - event
- categories:
- - Web Application Icons
-
- - name: fire-extinguisher
- id: fire-extinguisher
- unicode: f134
- created: 3.1
- categories:
- - Web Application Icons
-
- - name: rocket
- id: rocket
- unicode: f135
- created: 3.1
- filter:
- - app
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: MaxCDN
- id: maxcdn
- unicode: f136
- created: 3.1
- categories:
- - Brand Icons
-
- - name: Chevron Circle Left
- id: chevron-circle-left
- unicode: f137
- created: 3.1
- filter:
- - previous
- - back
- - arrow
- categories:
- - Directional Icons
-
- - name: Chevron Circle Right
- id: chevron-circle-right
- unicode: f138
- created: 3.1
- filter:
- - next
- - forward
- - arrow
- categories:
- - Directional Icons
-
- - name: Chevron Circle Up
- id: chevron-circle-up
- unicode: f139
- created: 3.1
- filter:
- - arrow
- categories:
- - Directional Icons
-
- - name: Chevron Circle Down
- id: chevron-circle-down
- unicode: f13a
- created: 3.1
- filter:
- - more
- - dropdown
- - menu
- - arrow
- categories:
- - Directional Icons
-
- - name: HTML 5 Logo
- id: html5
- unicode: f13b
- created: 3.1
- code:
- - code
- - html5
- categories:
- - Brand Icons
-
- - name: CSS 3 Logo
- id: css3
- unicode: f13c
- created: 3.1
- filter:
- - code
- categories:
- - Brand Icons
-
- - name: Anchor
- id: anchor
- unicode: f13d
- created: 3.1
- filter:
- - link
- categories:
- - Web Application Icons
-
- - name: Unlock Alt
- id: unlock-alt
- unicode: f13e
- created: 3.1
- filter:
- - protect
- - admin
- - password
- - lock
- categories:
- - Web Application Icons
-
-
- - name: Bullseye
- id: bullseye
- unicode: f140
- created: 3.1
- filter:
- - target
- categories:
- - Web Application Icons
-
- - name: Ellipsis Horizontal
- id: ellipsis-h
- unicode: f141
- created: 3.1
- filter:
- - dots
- categories:
- - Web Application Icons
-
- - name: Ellipsis Vertical
- id: ellipsis-v
- unicode: f142
- created: 3.1
- filter:
- - dots
- categories:
- - Web Application Icons
-
- - name: RSS Square
- id: rss-square
- unicode: f143
- created: 3.1
- filter:
- - feed
- - blog
- categories:
- - Web Application Icons
-
- - name: Play Circle
- id: play-circle
- unicode: f144
- created: 3.1
- filter:
- - start
- - playing
- categories:
- - Video Player Icons
-
- - name: Ticket
- id: ticket
- unicode: f145
- created: 3.1
- filter:
- - movie
- - pass
- - support
- categories:
- - Web Application Icons
-
- - name: Minus Square
- id: minus-square
- unicode: f146
- created: 3.1
- filter:
- - hide
- - minify
- - delete
- - remove
- - trash
- - hide
- - collapse
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Minus Square Outlined
- id: minus-square-o
- unicode: f147
- created: 3.1
- filter:
- - hide
- - minify
- - delete
- - remove
- - trash
- - hide
- - collapse
- categories:
- - Web Application Icons
- - Form Control Icons
-
-
- - name: Level Up
- id: level-up
- unicode: f148
- created: 3.1
- filter:
- - arrow
- categories:
- - Web Application Icons
-
- - name: Level Down
- id: level-down
- unicode: f149
- created: 3.1
- filter:
- - arrow
- categories:
- - Web Application Icons
-
- - name: Check Square
- id: check-square
- unicode: f14a
- created: 3.1
- filter:
- - checkmark
- - done
- - todo
- - agree
- - accept
- - confirm
- - ok
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Pencil Square
- id: pencil-square
- unicode: f14b
- created: 3.1
- filter:
- - write
- - edit
- - update
- categories:
- - Web Application Icons
-
- - name: External Link Square
- id: external-link-square
- unicode: f14c
- created: 3.1
- filter:
- - open
- - new
- categories:
- - Web Application Icons
-
- - name: Share Square
- id: share-square
- unicode: f14d
- created: 3.1
- filter:
- - social
- - send
- categories:
- - Web Application Icons
-
- - name: Compass
- id: compass
- unicode: f14e
- created: 3.2
- filter:
- - safari
- - directory
- - menu
- - location
- categories:
- - Web Application Icons
-
-
- - name: Caret Square Outlined Down
- id: caret-square-o-down
- unicode: f150
- created: 3.2
- aliases:
- - toggle-down
- filter:
- - more
- - dropdown
- - menu
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: Caret Square Outlined Up
- id: caret-square-o-up
- unicode: f151
- created: 3.2
- aliases:
- - toggle-up
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: Caret Square Outlined Right
- id: caret-square-o-right
- unicode: f152
- created: 3.2
- filter:
- - next
- - forward
- aliases:
- - toggle-right
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: Euro (EUR)
- id: eur
- unicode: f153
- created: 3.2
- aliases:
- - euro
- categories:
- - Currency Icons
-
- - name: GBP
- id: gbp
- unicode: f154
- created: 3.2
- categories:
- - Currency Icons
-
- - name: US Dollar
- id: usd
- unicode: f155
- created: 3.2
- aliases:
- - dollar
- categories:
- - Currency Icons
-
- - name: Indian Rupee (INR)
- id: inr
- unicode: f156
- created: 3.2
- aliases:
- - rupee
- categories:
- - Currency Icons
-
- - name: Japanese Yen (JPY)
- id: jpy
- unicode: f157
- created: 3.2
- aliases:
- - cny
- - rmb
- - yen
- categories:
- - Currency Icons
-
- - name: Russian Ruble (RUB)
- id: rub
- unicode: f158
- created: 4.0
- aliases:
- - ruble
- - rouble
- categories:
- - Currency Icons
-
- - name: Korean Won (KRW)
- id: krw
- unicode: f159
- created: 3.2
- aliases:
- - won
- categories:
- - Currency Icons
-
- - name: Bitcoin (BTC)
- id: btc
- unicode: f15a
- created: 3.2
- aliases:
- - bitcoin
- categories:
- - Currency Icons
- - Brand Icons
-
- - name: File
- id: file
- unicode: f15b
- created: 3.2
- filter:
- - new
- - page
- - pdf
- - document
- categories:
- - Text Editor Icons
- - File Type Icons
-
- - name: File Text
- id: file-text
- unicode: f15c
- created: 3.2
- filter:
- - new
- - page
- - pdf
- - document
- categories:
- - Text Editor Icons
- - File Type Icons
-
- - name: Sort Alpha Ascending
- id: sort-alpha-asc
- unicode: f15d
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort Alpha Descending
- id: sort-alpha-desc
- unicode: f15e
- created: 3.2
- categories:
- - Web Application Icons
-
-
- - name: Sort Amount Ascending
- id: sort-amount-asc
- unicode: f160
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort Amount Descending
- id: sort-amount-desc
- unicode: f161
- created: 3.2
- categories:
- - Web Application Icons
-
- - name: Sort Numeric Ascending
- id: sort-numeric-asc
- unicode: f162
- created: 3.2
- filter:
- - numbers
- categories:
- - Web Application Icons
-
- - name: Sort Numeric Descending
- id: sort-numeric-desc
- unicode: f163
- created: 3.2
- filter:
- - numbers
- categories:
- - Web Application Icons
-
-
- - name: thumbs-up
- id: thumbs-up
- unicode: f164
- created: 3.2
- filter:
- - like
- - favorite
- - approve
- - agree
- - hand
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: thumbs-down
- id: thumbs-down
- unicode: f165
- created: 3.2
- filter:
- - dislike
- - disapprove
- - disagree
- - hand
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: YouTube Square
- id: youtube-square
- unicode: f166
- created: 3.2
- filter:
- - video
- - film
- categories:
- - Brand Icons
-
- - name: YouTube
- id: youtube
- unicode: f167
- created: 3.2
- filter:
- - video
- - film
- categories:
- - Brand Icons
-
- - name: Xing
- id: xing
- unicode: f168
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Xing Square
- id: xing-square
- unicode: f169
- created: 3.2
- categories:
- - Brand Icons
-
- - name: YouTube Play
- id: youtube-play
- unicode: f16a
- created: 3.2
- filter:
- - start
- - playing
- categories:
- - Brand Icons
- - Video Player Icons
-
- - name: Dropbox
- id: dropbox
- unicode: f16b
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Stack Overflow
- id: stack-overflow
- unicode: f16c
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Instagram
- id: instagram
- unicode: f16d
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Flickr
- id: flickr
- unicode: f16e
- created: 3.2
- categories:
- - Brand Icons
-
- - name: App.net
- id: adn
- unicode: f170
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Bitbucket
- id: bitbucket
- unicode: f171
- created: 3.2
- filter:
- - git
- categories:
- - Brand Icons
-
- - name: Bitbucket Square
- id: bitbucket-square
- unicode: f172
- created: 3.2
- filter:
- - git
- categories:
- - Brand Icons
-
- - name: Tumblr
- id: tumblr
- unicode: f173
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Tumblr Square
- id: tumblr-square
- unicode: f174
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Long Arrow Down
- id: long-arrow-down
- unicode: f175
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Long Arrow Up
- id: long-arrow-up
- unicode: f176
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Long Arrow Left
- id: long-arrow-left
- unicode: f177
- created: 3.2
- filter:
- - previous
- - back
- categories:
- - Directional Icons
-
- - name: Long Arrow Right
- id: long-arrow-right
- unicode: f178
- created: 3.2
- categories:
- - Directional Icons
-
- - name: Apple
- id: apple
- unicode: f179
- created: 3.2
- filter:
- - osx
- - food
- categories:
- - Brand Icons
-
- - name: Windows
- id: windows
- unicode: f17a
- created: 3.2
- filter:
- - microsoft
- categories:
- - Brand Icons
-
- - name: Android
- id: android
- unicode: f17b
- created: 3.2
- filter:
- - robot
- categories:
- - Brand Icons
-
- - name: Linux
- id: linux
- unicode: f17c
- created: 3.2
- filter:
- - tux
- categories:
- - Brand Icons
-
- - name: Dribbble
- id: dribbble
- unicode: f17d
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Skype
- id: skype
- unicode: f17e
- created: 3.2
- categories:
- - Brand Icons
-
-
- - name: Foursquare
- id: foursquare
- unicode: f180
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Trello
- id: trello
- unicode: f181
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Female
- id: female
- unicode: f182
- created: 3.2
- filter:
- - woman
- - user
- - person
- - profile
- categories:
- - Web Application Icons
-
- - name: Male
- id: male
- unicode: f183
- created: 3.2
- filter:
- - man
- - user
- - person
- - profile
- categories:
- - Web Application Icons
-
- - name: Gratipay (Gittip)
- id: gratipay
- unicode: f184
- created: 3.2
- aliases:
- - gittip
- filter:
- - heart
- - like
- - favorite
- - love
- categories:
- - Brand Icons
-
- - name: Sun Outlined
- id: sun-o
- unicode: f185
- created: 3.2
- filter:
- - weather
- - contrast
- - lighter
- - brighten
- - day
- categories:
- - Web Application Icons
-
- - name: Moon Outlined
- id: moon-o
- unicode: f186
- created: 3.2
- filter:
- - night
- - darker
- - contrast
- categories:
- - Web Application Icons
-
- - name: Archive
- id: archive
- unicode: f187
- created: 3.2
- filter:
- - box
- - storage
- categories:
- - Web Application Icons
-
- - name: Bug
- id: bug
- unicode: f188
- created: 3.2
- filter:
- - report
- - insect
- categories:
- - Web Application Icons
-
- - name: VK
- id: vk
- unicode: f189
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Weibo
- id: weibo
- unicode: f18a
- created: 3.2
- categories:
- - Brand Icons
-
- - name: Renren
- id: renren
- unicode: f18b
- created: 3.2
- categories:
- - Brand Icons
-
-
- - name: Pagelines
- id: pagelines
- unicode: f18c
- created: 4.0
- filter:
- - leaf
- - leaves
- - tree
- - plant
- - eco
- - nature
- categories:
- - Brand Icons
-
- - name: Stack Exchange
- id: stack-exchange
- unicode: f18d
- created: 4.0
- categories:
- - Brand Icons
-
- - name: Arrow Circle Outlined Right
- id: arrow-circle-o-right
- unicode: f18e
- created: 4.0
- filter:
- - next
- - forward
- categories:
- - Directional Icons
-
-
- - name: Arrow Circle Outlined Left
- id: arrow-circle-o-left
- unicode: f190
- created: 4.0
- filter:
- - previous
- - back
- categories:
- - Directional Icons
-
- - name: Caret Square Outlined Left
- id: caret-square-o-left
- unicode: f191
- created: 4.0
- filter:
- - previous
- - back
- aliases:
- - toggle-left
- categories:
- - Web Application Icons
- - Directional Icons
-
- - name: Dot Circle Outlined
- id: dot-circle-o
- unicode: f192
- created: 4.0
- filter:
- - target
- - bullseye
- - notification
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Wheelchair
- id: wheelchair
- unicode: f193
- created: 4.0
- filter:
- - handicap
- - person
- categories:
- - Web Application Icons
- - Medical Icons
- - Transportation Icons
- - Accessibility Icons
-
- - name: Vimeo Square
- id: vimeo-square
- unicode: f194
- created: 4.0
- categories:
- - Brand Icons
-
- - name: Turkish Lira (TRY)
- id: try
- unicode: f195
- created: 4.0
- aliases:
- - turkish-lira
- categories:
- - Currency Icons
-
- - name: Plus Square Outlined
- id: plus-square-o
- unicode: f196
- created: 4.0
- filter:
- - add
- - new
- - create
- - expand
- categories:
- - Web Application Icons
- - Form Control Icons
-
- - name: Space Shuttle
- id: space-shuttle
- unicode: f197
- created: 4.1
- filter:
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: Slack Logo
- id: slack
- unicode: f198
- created: 4.1
- filter:
- - hashtag
- - anchor
- - hash
- categories:
- - Brand Icons
-
- - name: Envelope Square
- id: envelope-square
- unicode: f199
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: WordPress Logo
- id: wordpress
- unicode: f19a
- created: 4.1
- categories:
- - Brand Icons
-
- - name: OpenID
- id: openid
- unicode: f19b
- created: 4.1
- categories:
- - Brand Icons
-
- - name: University
- id: university
- unicode: f19c
- created: 4.1
- aliases:
- - institution
- - bank
- categories:
- - Web Application Icons
-
- - name: Graduation Cap
- id: graduation-cap
- unicode: f19d
- created: 4.1
- aliases:
- - mortar-board
- filter:
- - learning
- - school
- - student
- categories:
- - Web Application Icons
-
- - name: Yahoo Logo
- id: yahoo
- unicode: f19e
- created: 4.1
- categories:
- - Brand Icons
-
-
- - name: Google Logo
- id: google
- unicode: f1a0
- created: 4.1
- categories:
- - Brand Icons
-
- - name: reddit Logo
- id: reddit
- unicode: f1a1
- created: 4.1
- categories:
- - Brand Icons
-
- - name: reddit Square
- id: reddit-square
- unicode: f1a2
- created: 4.1
- categories:
- - Brand Icons
-
- - name: StumbleUpon Circle
- id: stumbleupon-circle
- unicode: f1a3
- created: 4.1
- categories:
- - Brand Icons
-
- - name: StumbleUpon Logo
- id: stumbleupon
- unicode: f1a4
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Delicious Logo
- id: delicious
- unicode: f1a5
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Digg Logo
- id: digg
- unicode: f1a6
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Pied Piper PP Logo (Old)
- id: pied-piper-pp
- unicode: f1a7
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Pied Piper Alternate Logo
- id: pied-piper-alt
- unicode: f1a8
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Drupal Logo
- id: drupal
- unicode: f1a9
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Joomla Logo
- id: joomla
- unicode: f1aa
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Language
- id: language
- unicode: f1ab
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Fax
- id: fax
- unicode: f1ac
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Building
- id: building
- unicode: f1ad
- created: 4.1
- filter:
- - work
- - business
- - apartment
- - office
- - company
- categories:
- - Web Application Icons
-
- - name: Child
- id: child
- unicode: f1ae
- created: 4.1
- categories:
- - Web Application Icons
-
-
- - name: Paw
- id: paw
- unicode: f1b0
- created: 4.1
- filter:
- - pet
- categories:
- - Web Application Icons
-
- - name: spoon
- id: spoon
- unicode: f1b1
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Cube
- id: cube
- unicode: f1b2
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Cubes
- id: cubes
- unicode: f1b3
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Behance
- id: behance
- unicode: f1b4
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Behance Square
- id: behance-square
- unicode: f1b5
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Steam
- id: steam
- unicode: f1b6
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Steam Square
- id: steam-square
- unicode: f1b7
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Recycle
- id: recycle
- unicode: f1b8
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Car
- id: car
- unicode: f1b9
- created: 4.1
- aliases:
- - automobile
- filter:
- - vehicle
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: Taxi
- id: taxi
- unicode: f1ba
- created: 4.1
- aliases:
- - cab
- filter:
- - vehicle
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: Tree
- id: tree
- unicode: f1bb
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Spotify
- id: spotify
- unicode: f1bc
- created: 4.1
- categories:
- - Brand Icons
-
- - name: deviantART
- id: deviantart
- unicode: f1bd
- created: 4.1
- categories:
- - Brand Icons
-
- - name: SoundCloud
- id: soundcloud
- unicode: f1be
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Database
- id: database
- unicode: f1c0
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: PDF File Outlined
- id: file-pdf-o
- unicode: f1c1
- created: 4.1
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Word File Outlined
- id: file-word-o
- unicode: f1c2
- created: 4.1
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Excel File Outlined
- id: file-excel-o
- unicode: f1c3
- created: 4.1
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Powerpoint File Outlined
- id: file-powerpoint-o
- unicode: f1c4
- created: 4.1
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Image File Outlined
- id: file-image-o
- unicode: f1c5
- created: 4.1
- aliases:
- - file-photo-o
- - file-picture-o
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Archive File Outlined
- id: file-archive-o
- unicode: f1c6
- created: 4.1
- aliases:
- - file-zip-o
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Audio File Outlined
- id: file-audio-o
- unicode: f1c7
- created: 4.1
- aliases:
- - file-sound-o
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Video File Outlined
- id: file-video-o
- unicode: f1c8
- created: 4.1
- aliases:
- - file-movie-o
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Code File Outlined
- id: file-code-o
- unicode: f1c9
- created: 4.1
- categories:
- - Web Application Icons
- - File Type Icons
-
- - name: Vine
- id: vine
- unicode: f1ca
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Codepen
- id: codepen
- unicode: f1cb
- created: 4.1
- categories:
- - Brand Icons
-
- - name: jsFiddle
- id: jsfiddle
- unicode: f1cc
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Life Ring
- id: life-ring
- unicode: f1cd
- created: 4.1
- aliases:
- - life-bouy # TODO: Deprecated - remove in 5.0.0
- - life-buoy
- - life-saver
- - support
- categories:
- - Web Application Icons
-
- - name: Circle Outlined Notched
- id: circle-o-notch
- unicode: f1ce
- created: 4.1
- categories:
- - Web Application Icons
- - Spinner Icons
-
-
- - name: Rebel Alliance
- id: rebel
- unicode: f1d0
- created: 4.1
- aliases:
- - ra
- - resistance
- categories:
- - Brand Icons
-
- - name: Galactic Empire
- id: empire
- unicode: f1d1
- created: 4.1
- aliases:
- - ge
- categories:
- - Brand Icons
-
- - name: Git Square
- id: git-square
- unicode: f1d2
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Git
- id: git
- unicode: f1d3
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Hacker News
- id: hacker-news
- unicode: f1d4
- created: 4.1
- aliases:
- - y-combinator-square
- - yc-square
- categories:
- - Brand Icons
-
- - name: Tencent Weibo
- id: tencent-weibo
- unicode: f1d5
- created: 4.1
- categories:
- - Brand Icons
-
- - name: QQ
- id: qq
- unicode: f1d6
- created: 4.1
- categories:
- - Brand Icons
-
- - name: Weixin (WeChat)
- id: weixin
- unicode: f1d7
- created: 4.1
- aliases:
- - wechat
- categories:
- - Brand Icons
-
- - name: Paper Plane
- id: paper-plane
- unicode: f1d8
- created: 4.1
- aliases:
- - send
- categories:
- - Web Application Icons
-
- - name: Paper Plane Outlined
- id: paper-plane-o
- unicode: f1d9
- created: 4.1
- aliases:
- - send-o
- categories:
- - Web Application Icons
-
- - name: History
- id: history
- unicode: f1da
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Circle Outlined Thin
- id: circle-thin
- unicode: f1db
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: header
- id: header
- unicode: f1dc
- created: 4.1
- filter:
- - heading
- categories:
- - Text Editor Icons
-
- - name: paragraph
- id: paragraph
- unicode: f1dd
- created: 4.1
- categories:
- - Text Editor Icons
-
- - name: Sliders
- id: sliders
- unicode: f1de
- created: 4.1
- filter:
- - settings
- categories:
- - Web Application Icons
-
-
- - name: Share Alt
- id: share-alt
- unicode: f1e0
- created: 4.1
- categories:
- - Web Application Icons
- - Brand Icons
-
- - name: Share Alt Square
- id: share-alt-square
- unicode: f1e1
- created: 4.1
- categories:
- - Web Application Icons
- - Brand Icons
-
- - name: Bomb
- id: bomb
- unicode: f1e2
- created: 4.1
- categories:
- - Web Application Icons
-
- - name: Futbol Outlined
- id: futbol-o
- unicode: f1e3
- created: 4.2
- aliases:
- - soccer-ball-o
- categories:
- - Web Application Icons
-
- - name: TTY
- id: tty
- unicode: f1e4
- created: 4.2
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Binoculars
- id: binoculars
- unicode: f1e5
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Plug
- id: plug
- unicode: f1e6
- created: 4.2
- filter:
- - power
- - connect
- categories:
- - Web Application Icons
-
- - name: Slideshare
- id: slideshare
- unicode: f1e7
- created: 4.2
- categories:
- - Brand Icons
-
- - name: Twitch
- id: twitch
- unicode: f1e8
- created: 4.2
- categories:
- - Brand Icons
-
- - name: Yelp
- id: yelp
- unicode: f1e9
- created: 4.2
- categories:
- - Brand Icons
-
- - name: Newspaper Outlined
- id: newspaper-o
- unicode: f1ea
- created: 4.2
- filter:
- - press
- categories:
- - Web Application Icons
-
- - name: WiFi
- id: wifi
- unicode: f1eb
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Calculator
- id: calculator
- unicode: f1ec
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Paypal
- id: paypal
- unicode: f1ed
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Google Wallet
- id: google-wallet
- unicode: f1ee
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
-
- - name: Visa Credit Card
- id: cc-visa
- unicode: f1f0
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: MasterCard Credit Card
- id: cc-mastercard
- unicode: f1f1
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Discover Credit Card
- id: cc-discover
- unicode: f1f2
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: American Express Credit Card
- id: cc-amex
- unicode: f1f3
- created: 4.2
- filter:
- - amex
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Paypal Credit Card
- id: cc-paypal
- unicode: f1f4
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Stripe Credit Card
- id: cc-stripe
- unicode: f1f5
- created: 4.2
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Bell Slash
- id: bell-slash
- unicode: f1f6
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Bell Slash Outlined
- id: bell-slash-o
- unicode: f1f7
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Trash
- id: trash
- unicode: f1f8
- created: 4.2
- filter:
- - garbage
- - delete
- - remove
- - hide
- categories:
- - Web Application Icons
-
- - name: Copyright
- id: copyright
- unicode: f1f9
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: At
- id: at
- unicode: f1fa
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Eyedropper
- id: eyedropper
- unicode: f1fb
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Paint Brush
- id: paint-brush
- unicode: f1fc
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Birthday Cake
- id: birthday-cake
- unicode: f1fd
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Area Chart
- id: area-chart
- unicode: f1fe
- created: 4.2
- filter:
- - graph
- - analytics
- categories:
- - Web Application Icons
- - Chart Icons
-
- - name: Pie Chart
- id: pie-chart
- unicode: f200
- created: 4.2
- filter:
- - graph
- - analytics
- categories:
- - Web Application Icons
- - Chart Icons
-
- - name: Line Chart
- id: line-chart
- unicode: f201
- created: 4.2
- filter:
- - graph
- - analytics
- categories:
- - Web Application Icons
- - Chart Icons
-
- - name: last.fm
- id: lastfm
- unicode: f202
- created: 4.2
- categories:
- - Brand Icons
-
- - name: last.fm Square
- id: lastfm-square
- unicode: f203
- created: 4.2
- categories:
- - Brand Icons
-
- - name: Toggle Off
- id: toggle-off
- unicode: f204
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Toggle On
- id: toggle-on
- unicode: f205
- created: 4.2
- categories:
- - Web Application Icons
-
- - name: Bicycle
- id: bicycle
- unicode: f206
- created: 4.2
- filter:
- - vehicle
- - bike
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: Bus
- id: bus
- unicode: f207
- created: 4.2
- filter:
- - vehicle
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: ioxhost
- id: ioxhost
- unicode: f208
- created: 4.2
- url: ioxhost.co.uk
- categories:
- - Brand Icons
-
- - name: AngelList
- id: angellist
- unicode: f209
- created: 4.2
- categories:
- - Brand Icons
-
- - name: Closed Captions
- id: cc
- unicode: f20a
- created: 4.2
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Shekel (ILS)
- id: ils
- unicode: f20b
- created: 4.2
- aliases:
- - shekel
- - sheqel
- categories:
- - Currency Icons
-
- - name: meanpath
- id: meanpath
- unicode: f20c
- created: 4.2
- url: meanpath.com
- categories:
- - Brand Icons
-
- - name: BuySellAds
- id: buysellads
- unicode: f20d
- created: 4.3
- url: buysellads.com
- categories:
- - Brand Icons
-
- - name: Connect Develop
- id: connectdevelop
- unicode: f20e
- created: 4.3
- url: connectdevelop.com
- categories:
- - Brand Icons
-
-
- - name: DashCube
- id: dashcube
- unicode: f210
- created: 4.3
- url: dashcube.com
- categories:
- - Brand Icons
-
- - name: Forumbee
- id: forumbee
- unicode: f211
- created: 4.3
- url: forumbee.com
- categories:
- - Brand Icons
-
- - name: Leanpub
- id: leanpub
- unicode: f212
- created: 4.3
- url: leanpub.com
- categories:
- - Brand Icons
-
- - name: Sellsy
- id: sellsy
- unicode: f213
- created: 4.3
- url: sellsy.com
- categories:
- - Brand Icons
-
- - name: Shirts in Bulk
- id: shirtsinbulk
- unicode: f214
- created: 4.3
- url: shirtsinbulk.com
- categories:
- - Brand Icons
-
- - name: SimplyBuilt
- id: simplybuilt
- unicode: f215
- created: 4.3
- url: simplybuilt.com
- categories:
- - Brand Icons
-
- - name: skyatlas
- id: skyatlas
- unicode: f216
- created: 4.3
- url: skyatlas.com
- categories:
- - Brand Icons
-
- - name: Add to Shopping Cart
- id: cart-plus
- unicode: f217
- created: 4.3
- filter:
- - add
- - shopping
- categories:
- - Web Application Icons
-
- - name: Shopping Cart Arrow Down
- id: cart-arrow-down
- unicode: f218
- created: 4.3
- filter:
- - shopping
- categories:
- - Web Application Icons
-
- - name: Diamond
- id: diamond
- unicode: f219
- created: 4.3
- filter:
- - gem
- - gemstone
- categories:
- - Web Application Icons
-
- - name: Ship
- id: ship
- unicode: f21a
- created: 4.3
- filter:
- - boat
- - sea
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: User Secret
- id: user-secret
- unicode: f21b
- created: 4.3
- filter:
- - whisper
- - spy
- - incognito
- - privacy
- categories:
- - Web Application Icons
-
- - name: Motorcycle
- id: motorcycle
- unicode: f21c
- created: 4.3
- filter:
- - vehicle
- - bike
- categories:
- - Web Application Icons
- - Transportation Icons
-
- - name: Street View
- id: street-view
- unicode: f21d
- created: 4.3
- filter:
- - map
- categories:
- - Web Application Icons
-
- - name: Heartbeat
- id: heartbeat
- unicode: f21e
- created: 4.3
- filter:
- - ekg
- categories:
- - Web Application Icons
- - Medical Icons
-
-
- - name: Venus
- id: venus
- unicode: f221
- created: 4.3
- filter:
- - female
- categories:
- - Gender Icons
-
- - name: Mars
- id: mars
- unicode: f222
- created: 4.3
- filter:
- - male
- categories:
- - Gender Icons
-
- - name: Mercury
- id: mercury
- unicode: f223
- created: 4.3
- filter:
- - transgender
- categories:
- - Gender Icons
-
- - name: Transgender
- id: transgender
- unicode: f224
- created: 4.3
- aliases:
- - intersex
- categories:
- - Gender Icons
-
- - name: Transgender Alt
- id: transgender-alt
- unicode: f225
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Venus Double
- id: venus-double
- unicode: f226
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Mars Double
- id: mars-double
- unicode: f227
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Venus Mars
- id: venus-mars
- unicode: f228
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Mars Stroke
- id: mars-stroke
- unicode: f229
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Mars Stroke Vertical
- id: mars-stroke-v
- unicode: f22a
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Mars Stroke Horizontal
- id: mars-stroke-h
- unicode: f22b
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Neuter
- id: neuter
- unicode: f22c
- created: 4.3
- categories:
- - Gender Icons
-
- - name: Genderless
- id: genderless
- unicode: f22d
- created: 4.4
- categories:
- - Gender Icons
-
-
- - name: Facebook Official
- id: facebook-official
- unicode: f230
- created: 4.3
- categories:
- - Brand Icons
-
- - name: Pinterest P
- id: pinterest-p
- unicode: f231
- created: 4.3
- categories:
- - Brand Icons
-
- - name: What's App
- id: whatsapp
- unicode: f232
- created: 4.3
- categories:
- - Brand Icons
-
- - name: Server
- id: server
- unicode: f233
- created: 4.3
- categories:
- - Web Application Icons
-
- - name: Add User
- id: user-plus
- unicode: f234
- created: 4.3
- filter:
- - sign up
- - signup
- categories:
- - Web Application Icons
-
- - name: Remove User
- id: user-times
- unicode: f235
- created: 4.3
- categories:
- - Web Application Icons
-
- - name: Bed
- id: bed
- unicode: f236
- created: 4.3
- filter:
- - travel
- aliases:
- - hotel
- categories:
- - Web Application Icons
-
- - name: Viacoin
- id: viacoin
- unicode: f237
- created: 4.3
- url: viacoin.org
- categories:
- - Brand Icons
-
- - name: Train
- id: train
- unicode: f238
- created: 4.3
- categories:
- - Transportation Icons
-
- - name: Subway
- id: subway
- unicode: f239
- created: 4.3
- categories:
- - Transportation Icons
-
- - name: Medium
- id: medium
- unicode: f23a
- created: 4.3
- categories:
- - Brand Icons
-
- - name: Y Combinator
- id: y-combinator
- unicode: f23b
- created: 4.4
- aliases:
- - yc
- categories:
- - Brand Icons
-
- - name: Optin Monster
- id: optin-monster
- unicode: f23c
- created: 4.4
- url: optinmonster.com
- categories:
- - Brand Icons
-
- - name: OpenCart
- id: opencart
- unicode: f23d
- created: 4.4
- url: opencart.com
- categories:
- - Brand Icons
-
- - name: ExpeditedSSL
- id: expeditedssl
- unicode: f23e
- created: 4.4
- categories:
- - Brand Icons
-
-
- - name: Battery Full
- id: battery-full
- unicode: f240
- created: 4.4
- aliases:
- - battery-4
- - battery
- filter:
- - power
- categories:
- - Web Application Icons
-
- - name: Battery 3/4 Full
- id: battery-three-quarters
- unicode: f241
- created: 4.4
- aliases:
- - battery-3
- filter:
- - power
- categories:
- - Web Application Icons
-
- - name: Battery 1/2 Full
- id: battery-half
- unicode: f242
- created: 4.4
- aliases:
- - battery-2
- filter:
- - power
- categories:
- - Web Application Icons
-
- - name: Battery 1/4 Full
- id: battery-quarter
- unicode: f243
- created: 4.4
- aliases:
- - battery-1
- filter:
- - power
- categories:
- - Web Application Icons
-
- - name: Battery Empty
- id: battery-empty
- unicode: f244
- created: 4.4
- aliases:
- - battery-0
- filter:
- - power
- categories:
- - Web Application Icons
-
- - name: Mouse Pointer
- id: mouse-pointer
- unicode: f245
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: I Beam Cursor
- id: i-cursor
- unicode: f246
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Object Group
- id: object-group
- unicode: f247
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Object Ungroup
- id: object-ungroup
- unicode: f248
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Sticky Note
- id: sticky-note
- unicode: f249
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Sticky Note Outlined
- id: sticky-note-o
- unicode: f24a
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: JCB Credit Card
- id: cc-jcb
- unicode: f24b
- created: 4.4
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Diner's Club Credit Card
- id: cc-diners-club
- unicode: f24c
- created: 4.4
- categories:
- - Brand Icons
- - Payment Icons
-
- - name: Clone
- id: clone
- unicode: f24d
- created: 4.4
- filter:
- - copy
- categories:
- - Web Application Icons
-
- - name: Balance Scale
- id: balance-scale
- unicode: f24e
- created: 4.4
- categories:
- - Web Application Icons
-
-
- - name: Hourglass Outlined
- id: hourglass-o
- unicode: f250
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Hourglass Start
- id: hourglass-start
- unicode: f251
- created: 4.4
- aliases:
- - hourglass-1
- categories:
- - Web Application Icons
-
- - name: Hourglass Half
- id: hourglass-half
- unicode: f252
- created: 4.4
- aliases:
- - hourglass-2
- categories:
- - Web Application Icons
-
- - name: Hourglass End
- id: hourglass-end
- unicode: f253
- created: 4.4
- aliases:
- - hourglass-3
- categories:
- - Web Application Icons
-
- - name: Hourglass
- id: hourglass
- unicode: f254
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Rock (Hand)
- id: hand-rock-o
- unicode: f255
- created: 4.4
- aliases:
- - hand-grab-o
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Paper (Hand)
- id: hand-paper-o
- unicode: f256
- created: 4.4
- aliases:
- - hand-stop-o
- filter:
- - stop
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Scissors (Hand)
- id: hand-scissors-o
- unicode: f257
- created: 4.4
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Lizard (Hand)
- id: hand-lizard-o
- unicode: f258
- created: 4.4
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Spock (Hand)
- id: hand-spock-o
- unicode: f259
- created: 4.4
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Hand Pointer
- id: hand-pointer-o
- unicode: f25a
- created: 4.4
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Hand Peace
- id: hand-peace-o
- unicode: f25b
- created: 4.4
- categories:
- - Web Application Icons
- - Hand Icons
-
- - name: Trademark
- id: trademark
- unicode: f25c
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Registered Trademark
- id: registered
- unicode: f25d
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Creative Commons
- id: creative-commons
- unicode: f25e
- created: 4.4
- categories:
- - Web Application Icons
-
-
- - name: GG Currency
- id: gg
- unicode: f260
- created: 4.4
- categories:
- - Currency Icons
- - Brand Icons
-
- - name: GG Currency Circle
- id: gg-circle
- unicode: f261
- created: 4.4
- categories:
- - Currency Icons
- - Brand Icons
-
- - name: TripAdvisor
- id: tripadvisor
- unicode: f262
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Odnoklassniki
- id: odnoklassniki
- unicode: f263
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Odnoklassniki Square
- id: odnoklassniki-square
- unicode: f264
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Get Pocket
- id: get-pocket
- unicode: f265
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Wikipedia W
- id: wikipedia-w
- unicode: f266
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Safari
- id: safari
- unicode: f267
- created: 4.4
- filter:
- - browser
- categories:
- - Brand Icons
-
- - name: Chrome
- id: chrome
- unicode: f268
- created: 4.4
- filter:
- - browser
- categories:
- - Brand Icons
-
- - name: Firefox
- id: firefox
- unicode: f269
- created: 4.4
- filter:
- - browser
- categories:
- - Brand Icons
-
- - name: Opera
- id: opera
- unicode: f26a
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Internet-explorer
- id: internet-explorer
- unicode: f26b
- created: 4.4
- filter:
- - browser
- - ie
- categories:
- - Brand Icons
-
- - name: Television
- id: television
- unicode: f26c
- created: 4.4
- aliases:
- - tv
- filter:
- - display
- - computer
- - monitor
- categories:
- - Web Application Icons
-
- - name: Contao
- id: contao
- unicode: f26d
- created: 4.4
- categories:
- - Brand Icons
-
- - name: 500px
- id: 500px
- unicode: f26e
- created: 4.4
- categories:
- - Brand Icons
-
-
- - name: Amazon
- id: amazon
- unicode: f270
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Calendar Plus Outlined
- id: calendar-plus-o
- unicode: f271
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Calendar Minus Outlined
- id: calendar-minus-o
- unicode: f272
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Calendar Times Outlined
- id: calendar-times-o
- unicode: f273
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Calendar Check Outlined
- id: calendar-check-o
- unicode: f274
- created: 4.4
- filter:
- - ok
- categories:
- - Web Application Icons
-
- - name: Industry
- id: industry
- unicode: f275
- created: 4.4
- filter:
- - factory
- categories:
- - Web Application Icons
-
- - name: Map Pin
- id: map-pin
- unicode: f276
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Map Signs
- id: map-signs
- unicode: f277
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Map Outlined
- id: map-o
- unicode: f278
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Map
- id: map
- unicode: f279
- created: 4.4
- categories:
- - Web Application Icons
-
- - name: Commenting
- id: commenting
- unicode: f27a
- created: 4.4
- filter:
- - speech
- - notification
- - note
- - chat
- - bubble
- - feedback
- - message
- - texting
- - sms
- - conversation
- categories:
- - Web Application Icons
-
- - name: Commenting Outlined
- id: commenting-o
- unicode: f27b
- created: 4.4
- filter:
- - speech
- - notification
- - note
- - chat
- - bubble
- - feedback
- - message
- - texting
- - sms
- - conversation
- categories:
- - Web Application Icons
-
- - name: Houzz
- id: houzz
- unicode: f27c
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Vimeo
- id: vimeo
- unicode: f27d
- created: 4.4
- categories:
- - Brand Icons
-
- - name: Font Awesome Black Tie
- id: black-tie
- unicode: f27e
- created: 4.4
- url: blacktie.io
- categories:
- - Brand Icons
-
-
- - name: Fonticons
- id: fonticons
- unicode: f280
- created: 4.4
- url: fonticons.com
- categories:
- - Brand Icons
-
- - name: reddit Alien
- id: reddit-alien
- unicode: f281
- created: 4.5
- categories:
- - Brand Icons
-
- - name: Edge Browser
- id: edge
- unicode: f282
- created: 4.5
- filter:
- - browser
- - ie
- categories:
- - Brand Icons
-
- - name: Credit Card
- id: credit-card-alt
- unicode: f283
- created: 4.5
- filter:
- - money
- - buy
- - debit
- - checkout
- - purchase
- - payment
- - credit card
- categories:
- - Payment Icons
- - Web Application Icons
-
- - name: Codie Pie
- id: codiepie
- unicode: f284
- created: 4.5
- url: codiepie.com
- categories:
- - Brand Icons
-
- - name: MODX
- id: modx
- unicode: f285
- created: 4.5
- categories:
- - Brand Icons
-
- - name: Fort Awesome
- id: fort-awesome
- unicode: f286
- created: 4.5
- url: fortawesome.com
- categories:
- - Brand Icons
-
- - name: USB
- id: usb
- unicode: f287
- created: 4.5
- categories:
- - Brand Icons
-
- - name: Product Hunt
- id: product-hunt
- unicode: f288
- created: 4.5
- categories:
- - Brand Icons
-
- - name: Mixcloud
- id: mixcloud
- unicode: f289
- created: 4.5
- categories:
- - Brand Icons
-
- - name: Scribd
- id: scribd
- unicode: f28a
- created: 4.5
- categories:
- - Brand Icons
-
- - name: Pause Circle
- id: pause-circle
- unicode: f28b
- created: 4.5
- categories:
- - Video Player Icons
-
- - name: Pause Circle Outlined
- id: pause-circle-o
- unicode: f28c
- created: 4.5
- categories:
- - Video Player Icons
-
- - name: Stop Circle
- id: stop-circle
- unicode: f28d
- created: 4.5
- categories:
- - Video Player Icons
-
- - name: Stop Circle Outlined
- id: stop-circle-o
- unicode: f28e
- created: 4.5
- categories:
- - Video Player Icons
-
-
- - name: Shopping Bag
- id: shopping-bag
- unicode: f290
- created: 4.5
- categories:
- - Web Application Icons
-
- - name: Shopping Basket
- id: shopping-basket
- unicode: f291
- created: 4.5
- categories:
- - Web Application Icons
-
- - name: Hashtag
- id: hashtag
- unicode: f292
- created: 4.5
- categories:
- - Web Application Icons
-
- - name: Bluetooth
- id: bluetooth
- unicode: f293
- created: 4.5
- categories:
- - Web Application Icons
- - Brand Icons
-
- - name: Bluetooth
- id: bluetooth-b
- unicode: f294
- created: 4.5
- categories:
- - Web Application Icons
- - Brand Icons
-
- - name: Percent
- id: percent
- unicode: f295
- created: 4.5
- categories:
- - Web Application Icons
-
-
- - name: GitLab
- id: gitlab
- unicode: f296
- created: 4.6
- url: gitlab.com
- categories:
- - Brand Icons
-
- - name: WPBeginner
- id: wpbeginner
- unicode: f297
- created: 4.6
- url: wpbeginner.com
- categories:
- - Brand Icons
-
- - name: WPForms
- id: wpforms
- unicode: f298
- created: 4.6
- url: wpforms.com
- categories:
- - Brand Icons
-
- - name: Envira Gallery
- id: envira
- unicode: f299
- created: 4.6
- url: enviragallery.com
- filter:
- - leaf
- categories:
- - Brand Icons
-
- - name: Universal Access
- id: universal-access
- unicode: f29a
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Wheelchair Alt
- id: wheelchair-alt
- unicode: f29b
- created: 4.6
- filter:
- - handicap
- - person
- categories:
- - Web Application Icons
- - Medical Icons
- - Transportation Icons
- - Accessibility Icons
-
- - name: Question Circle Outlined
- id: question-circle-o
- unicode: f29c
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Blind
- id: blind
- unicode: f29d
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Audio Description
- id: audio-description
- unicode: f29e
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
-
- - name: Volume Control Phone
- id: volume-control-phone
- unicode: f2a0
- created: 4.6
- filter:
- - telephone
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Braille
- id: braille
- unicode: f2a1
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Assistive Listening Systems
- id: assistive-listening-systems
- unicode: f2a2
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: American Sign Language Interpreting
- id: american-sign-language-interpreting
- unicode: f2a3
- created: 4.6
- aliases:
- - asl-interpreting
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Deaf
- id: deaf
- unicode: f2a4
- created: 4.6
- aliases:
- - deafness
- - hard-of-hearing
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Glide
- id: glide
- unicode: f2a5
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Glide G
- id: glide-g
- unicode: f2a6
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Sign Language
- id: sign-language
- unicode: f2a7
- created: 4.6
- aliases:
- - signing
- categories:
- - Web Application Icons
- - Accessibility Icons
-
-
- - name: Low Vision
- id: low-vision
- unicode: f2a8
- created: 4.6
- categories:
- - Web Application Icons
- - Accessibility Icons
-
- - name: Viadeo
- id: viadeo
- unicode: f2a9
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Viadeo Square
- id: viadeo-square
- unicode: f2aa
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Snapchat
- id: snapchat
- unicode: f2ab
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Snapchat Ghost
- id: snapchat-ghost
- unicode: f2ac
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Snapchat Square
- id: snapchat-square
- unicode: f2ad
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Pied Piper Logo
- id: pied-piper
- unicode: f2ae
- created: 4.6
- categories:
- - Brand Icons
-
-
- - name: First Order
- id: first-order
- unicode: f2b0
- created: 4.6
- categories:
- - Brand Icons
-
- - name: Yoast
- id: yoast
- unicode: f2b1
- created: 4.6
- url: yoast.com
- categories:
- - Brand Icons
-
- - name: ThemeIsle
- id: themeisle
- unicode: f2b2
- created: 4.6
- url: themeisle.com
- categories:
- - Brand Icons
-
- - name: Google Plus Official
- id: google-plus-official
- unicode: f2b3
- created: 4.6
- aliases:
- - google-plus-circle
- categories:
- - Brand Icons
-
- - name: Font Awesome
- id: font-awesome
- unicode: f2b4
- created: 4.6
- aliases:
- - fa
- categories:
- - Brand Icons
-
- - name: Handshake Outlined
- id: handshake-o
- unicode: f2b5
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Envelope Open
- id: envelope-open
- unicode: f2b6
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Envelope Open Outlined
- id: envelope-open-o
- unicode: f2b7
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Linode
- id: linode
- unicode: f2b8
- created: 4.7
- url: linode.com
- categories:
- - Brand Icons
-
- - name: Address Book
- id: address-book
- unicode: f2b9
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Address Book Outlined
- id: address-book-o
- unicode: f2ba
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Address Card
- id: address-card
- unicode: f2bb
- created: 4.7
- aliases:
- - vcard
- categories:
- - Web Application Icons
-
- - name: Address Card Outlined
- id: address-card-o
- unicode: f2bc
- created: 4.7
- aliases:
- - vcard-o
- categories:
- - Web Application Icons
-
- - name: User Circle
- id: user-circle
- unicode: f2bd
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: User Circle Outlined
- id: user-circle-o
- unicode: f2be
- created: 4.7
- categories:
- - Web Application Icons
-
-
- - name: User Outlined
- id: user-o
- unicode: f2c0
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Identification Badge
- id: id-badge
- unicode: f2c1
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Identification Card
- id: id-card
- unicode: f2c2
- created: 4.7
- aliases:
- - drivers-license
- categories:
- - Web Application Icons
-
- - name: Identification Card Outlined
- id: id-card-o
- unicode: f2c3
- created: 4.7
- aliases:
- - drivers-license-o
- categories:
- - Web Application Icons
-
- - name: Quora
- id: quora
- unicode: f2c4
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Free Code Camp
- id: free-code-camp
- unicode: f2c5
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Telegram
- id: telegram
- unicode: f2c6
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Thermometer Full
- id: thermometer-full
- unicode: f2c7
- created: 4.7
- aliases:
- - thermometer-4
- - thermometer
- categories:
- - Web Application Icons
-
- - name: Thermometer 3/4 Full
- id: thermometer-three-quarters
- unicode: f2c8
- created: 4.7
- aliases:
- - thermometer-3
- categories:
- - Web Application Icons
-
- - name: Thermometer 1/2 Full
- id: thermometer-half
- unicode: f2c9
- created: 4.7
- aliases:
- - thermometer-2
- categories:
- - Web Application Icons
-
- - name: Thermometer 1/4 Full
- id: thermometer-quarter
- unicode: f2ca
- created: 4.7
- aliases:
- - thermometer-1
- categories:
- - Web Application Icons
-
- - name: Thermometer Empty
- id: thermometer-empty
- unicode: f2cb
- created: 4.7
- aliases:
- - thermometer-0
- categories:
- - Web Application Icons
-
- - name: Shower
- id: shower
- unicode: f2cc
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Bath
- id: bath
- unicode: f2cd
- created: 4.7
- aliases:
- - bathtub
- - s15
- categories:
- - Web Application Icons
-
- - name: Podcast
- id: podcast
- unicode: f2ce
- created: 4.7
- categories:
- - Web Application Icons
-
-
- - name: Window Maximize
- id: window-maximize
- unicode: f2d0
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Window Minimize
- id: window-minimize
- unicode: f2d1
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Window Restore
- id: window-restore
- unicode: f2d2
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Window Close
- id: window-close
- unicode: f2d3
- created: 4.7
- aliases:
- - times-rectangle
- categories:
- - Web Application Icons
-
- - name: Window Close Outline
- id: window-close-o
- unicode: f2d4
- created: 4.7
- aliases:
- - times-rectangle-o
- categories:
- - Web Application Icons
-
- - name: Bandcamp
- id: bandcamp
- unicode: f2d5
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Grav
- id: grav
- unicode: f2d6
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Etsy
- id: etsy
- unicode: f2d7
- created: 4.7
- categories:
- - Brand Icons
-
- - name: IMDB
- id: imdb
- unicode: f2d8
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Ravelry
- id: ravelry
- unicode: f2d9
- created: 4.7
- categories:
- - Brand Icons
-
- - name: Eercast
- id: eercast
- unicode: f2da
- created: 4.7
- url: eercast.com
- categories:
- - Brand Icons
-
- - name: Microchip
- id: microchip
- unicode: f2db
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Snowflake Outlined
- id: snowflake-o
- unicode: f2dc
- created: 4.7
- categories:
- - Web Application Icons
-
- - name: Superpowers
- id: superpowers
- unicode: f2dd
- created: 4.7
- url: superpowers.io
- categories:
- - Brand Icons
-
- - name: WPExplorer
- id: wpexplorer
- unicode: f2de
- created: 4.7
- url: wpexplorer.com
- categories:
- - Brand Icons
-
-
- - name: Meetup
- id: meetup
- unicode: f2e0
- created: 4.7
- categories:
- - Brand Icons
diff --git a/library/font_awesome/src/index.html b/library/font_awesome/src/index.html
deleted file mode 100644
index af1f6297d..000000000
--- a/library/font_awesome/src/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: base
-title: Font Awesome, the iconic font and CSS toolkit
-navbar_active: home
-relative_path: ./
----
-
-{% include jumbotron-carousel.html %}
-{% include stripe-social.html %}
-
-<div class="container">
- {% capture stripe_ad_content %}
- <p class="lead">
- Font Awesome gives you scalable vector icons that can instantly be customized &mdash; size, color, drop shadow,
- and anything that can be done with the power of CSS.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- {% include why.html %}
- {% include thanks-to.html %}
-</div>
-
-{% include modals/download.html %}
diff --git a/library/font_awesome/src/license.html b/library/font_awesome/src/license.html
deleted file mode 100644
index 1cceb0493..000000000
--- a/library/font_awesome/src/license.html
+++ /dev/null
@@ -1,72 +0,0 @@
----
-layout: base
-title: Font Awesome License
-navbar_active: license
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-gavel" aria-hidden="true"></i>&nbsp; License{% endcapture %}
-{% capture jumbotron_p %}The full details of how Font Awesome is licensed{% endcapture %}
-
-{% include jumbotron.html %}
-{% include stripe-social.html %}
-
-<div class="container">
- {% capture stripe_ad_content %}
- <p class="lead">
- Font Awesome is fully open source and is GPL friendly. You can use it for commercial projects, open source
- projects, or really just about whatever you want.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- <section>
- <div class="alert alert-success">
- <ul class="fa-ul margin-bottom-none">
- <li>
- <i class="fa-li fa fa-info-circle fa-lg" aria-hidden="true"></i>Attribution is no longer required as of Font Awesome 3.0 but is much appreciated:
- "Font Awesome by Dave Gandy - http://fontawesome.io".
- </li>
- </ul>
- </div>
- </section>
-
- <section>
- <h2 class="page-header">Font License</h2>
- <ul>
- <li>
- Applies to all desktop and webfont files in the following directory:
- <code>font-awesome/fonts/</code>.
- </li>
- <li>License: {{ site.fontawesome.license.font.version }}</li>
- <li>URL: <a href="{{ site.fontawesome.license.font.url }}">{{ site.fontawesome.license.font.url }}</a></li>
- </ul>
- </section>
-
- <section>
- <h2 class="page-header">Code License</h2>
- <ul>
- <li>
- Applies to all CSS and LESS files in the following directories:
- <code>font-awesome/css/</code>,
- <code>font-awesome/less/</code>, and
- <code>font-awesome/scss/</code>.
- </li>
- <li>License: {{ site.fontawesome.license.code.version }}</li>
- <li>URL: <a href="{{ site.fontawesome.license.code.url }}">{{ site.fontawesome.license.code.url }}</a></li>
- </ul>
- </section>
-
- <section>
- <h2 class="page-header">Documentation License</h2>
- <ul>
- <li>Applies to all Font Awesome project files that are not a part of the Font or Code licenses.</li>
- <li>License: {{ site.fontawesome.license.documentation.version }}</li>
- <li>URL: <a href="{{ site.fontawesome.license.documentation.url }}">{{ site.fontawesome.license.documentation.url }}</a></li>
- </ul>
- </section>
-
- <section>
- <h2 class="page-header">Brand Icons</h2>
- {% include brand-license.html %}
- </section>
-</div>
diff --git a/library/font_awesome/src/store.html b/library/font_awesome/src/store.html
deleted file mode 100644
index 325b3c2c8..000000000
--- a/library/font_awesome/src/store.html
+++ /dev/null
@@ -1,63 +0,0 @@
----
-layout: base
-title: Official Merchandise
-navbar_active: store
-view_class: v-store
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-shopping-cart fa-lg valign-baseline" aria-hidden="true"></i>&nbsp; Awesome Swag{% endcapture %}
-{% capture jumbotron_p %}Show your love &amp; support of Font Awesome with official merchandise!{% endcapture %}
-
-{% include jumbotron.html %}
-
-<div class="content-underlay"></div>
-
-<div class="container">
- <div class="row">
- <div class="col-sm-6 col-lg-4">
- {% include products/fa-ther-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/space-shuttle-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/rock-paper-scissors-lizard-spock-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/white-logo-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/camera-retro-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/old-skool-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/classics-tee.html %}
- </div>
- <div class="col-sm-6 col-lg-4">
- {% include products/green-logo-tee.html %}
- </div>
- <div class="col-sm-12 col-lg-4">
- {% include products/cta-suggestions.html %}
- </div>
- </div>
-
- <hr>
-
- <div class="row">
- <div class="col-sm-12 col-md-6">
- <h4>About Font Awesome Products</h4>
- <p>
- There might be times where you want to insert a bit of Font Awesome in the real world. That's why we're trying out some schwag. We hope you enjoy our icons and their fun spirit out in the wild and appreciate the support you're showing and giving by doing so. <strong>You're putting the Awesome in Font Awesome!</strong>
- </p>
- </div>
-
- <div class="col-sm-12 col-md-6">
- <h4>Shipping, Tracking, &amp; Refunding Orders</h4>
- <p>
- All of our products are managed through <a href="http://www.amazon.com/s/ref=w_bl_sl_s_ap_web_7141123011?ie=UTF8&node=7141123011&field-brandtextbin=Font+Awesome"><i class="fas fas-amazon"></i> Amazon</a>. Shipping rates and schedules are managed through their storefront. You'll be able to track your placed orders and contact Amazon's responsive support about refunds, issues, or questions. Ratings and feedback are always welcome either on the product page or <a href="mailto:suggestions@fortawesome.com">directly to us</a>.
- </p>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/survey.html b/library/font_awesome/src/survey.html
deleted file mode 100644
index b134b78c3..000000000
--- a/library/font_awesome/src/survey.html
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: survey
-title: Font Awesome + You
----
-
-<iframe id="typeform-full" width="100%" height="100%" frameborder="0" src="https://fortawesome.typeform.com/to/Ty174C"></iframe>
-<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js"></script>
diff --git a/library/font_awesome/src/test/2.3.2.html b/library/font_awesome/src/test/2.3.2.html
deleted file mode 100644
index ea75a5d0b..000000000
--- a/library/font_awesome/src/test/2.3.2.html
+++ /dev/null
@@ -1,824 +0,0 @@
----
-title: Font Awesome + Bootstrap 2.3.2 Test Cases
-relative_path: ../
----
-
-
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>{% if page.title %}{{ page.title }}{% endif %}</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/2.3.2/css/bootstrap.min.css">
- <link rel="stylesheet" href="{{ page.relative_path }}assets/font-awesome/css/font-awesome.css">
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="{{ page.relative_path }}assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
-
-<section class="container">
-<h1 class="page-header">Visual Test Cases</h1>
-
-<h3>Icons <small>Icons should have proper alignment and not be clipped</small></h3>
-<div class="row-fluid">
- <div class="span3">
- <div class="well">
- <i class="fa fa-building-o"></i> Building
- </div>
- </div>
- <div class="span3">
- <div class="well">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
- </div>
- <div class="span3">
- <i class="fa fa-building-o"></i> Building
- </div>
- <div class="span3">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
-</div>
-<div class="row-fluid" style="font-size: 24px; line-height: 1.5em;">
- <div class="span4">
- <div class="well">
- <i class="fa fa-building-o"></i> Building
- </div>
- </div>
- <div class="span4">
- <div class="well">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
- </div>
- <div class="span4">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
-</div>
-<div class="row-fluid">
- <div class="span3">
- <div class="well">
- <i class="fa fa-circle"></i> Circle
- </div>
- </div>
- <div class="span3">
- <div class="well">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
- </div>
- <div class="span3">
- <i class="fa fa-circle"></i> Circle
- </div>
- <div class="span3">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
-</div>
-<div class="row-fluid" style="font-size: 24px; line-height: 1.5em;">
- <div class="span4">
- <div class="well">
- <i class="fa fa-circle"></i> Circle
- </div>
- </div>
- <div class="span4">
- <div class="well">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
- </div>
- <div class="span4">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
-</div>
-
-
-<h3>Links with Icons <small>icon should activate link & NOT underline</small></h3>
-<div class="row-fluid lead">
- <div class="span2">
- <a href="#"><i class="fa fa-building-o padding-right"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="fa fa-building-o fa-lg padding-right"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="fa fa-caret-down padding-right"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="fa fa-angle-double-right padding-left"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="fa fa-angle-double-right fa-lg padding-left"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="fa fa-caret-down padding-left"></i></a>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span2">
- <a href="#"><i class="fa fa-building-o padding-right-sm"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="fa fa-building-o fa-lg padding-right-sm"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#"><i class="fa fa-caret-down padding-right-sm"></i> Link Here</a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="fa fa-angle-double-right padding-left-sm"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="fa fa-angle-double-right fa-lg padding-left-sm"></i></a>
- </div>
- <div class="span2">
- <a href="#">Link Here <i class="fa fa-caret-down padding-left-sm"></i></a>
- </div>
-</div>
-
-
-<h3>Navbar <small>should stay same height </small></h3>
-<div class="navbar navbar-inverse navbar-static-top">
- <div class="navbar-inner">
- <div class="container">
- <a class="brand" href="#"><i class="fa fa-flag"></i> Font Awesome</a>
- <ul class="nav">
- <li style="border: solid 1px white;"><a href="#">Nav Item 1</a></li>
- <li class="dropdown" style="border: solid 1px white;">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-building-o fa fa-lg"></i> Nav Item 3</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-envelope-o"></i> Nav Item 4</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-circle fa fa-lg"></i> Nav Item 5</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-circle"></i> Nav Item 6</a></li>
- </ul>
- </div>
- </div>
-</div>
-
-
-<h3>Plain buttons next to buttons w/icons <small>should be same height, icons not clipped</small></h3>
-<h4>Buttons</h4>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-mini">Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-building-o"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-small">Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-building-o"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-large">Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-building-o"></i></button>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-mini">Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-small">Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-large">Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- </div>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-mini">Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-small">Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-large">Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-circle"></i></button>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-mini">Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default btn-mini"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-small">Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default btn-small"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-large">Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default btn-large"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- </div>
- </div>
-</div>
-
-
-<h4>Anchors</h4>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-mini">Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-building-o"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-small">Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-building-o"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-large">Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-building-o"></i></a>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-mini">Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-small">Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-large">Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- </div>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-mini">Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-small">Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-large">Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-circle"></i></a>
- </div>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-mini">Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default btn-mini"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-small">Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default btn-small"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-large">Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default btn-large"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- </div>
- </div>
-</div>
-
-<h3>Button groups <small>should be same height</small></h3>
-<div class="row-fluid">
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default btn-large">
- <i class="fa fa-adjust"></i>
- </button>
- <button class="btn btn-default btn-large">
- Text
- </button>
- </div>
- </div>
- </div>
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default">
- <i class="fa fa-adjust"></i>
- </button>
- <button class="btn btn-default">
- Text
- </button>
- </div>
- </div>
- </div>
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default btn-small">
- <i class="fa fa-adjust"></i>
- </button>
- <button class="btn btn-default btn-small">
- Text
- </button>
- </div>
- </div>
- </div>
-</div>
-
-<h3>Buttons with pulled 2x, 3x, 4x <small>should be same height, have correct line height</small></h3>
-<div class="row-fluid">
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default btn-large" href="#">
- <i class="fa fa-github fa-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default btn-large" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default" href="#">
- <i class="fa fa-github fa-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="span4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default btn-small" href="#">
- <i class="fa fa-github fa-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default btn-small" href="#">
- Longer<br>Button</a>
- </div>
- </div>
-</div>
-
-
-<h3>Nav pills & nav tabs <small>should be same height and properly vertically aligned</small></h3>
-<div class="row-fluid">
- <div class="span9">
- <ul class="nav nav-pills" style="border: solid 1px #d3d3d3;">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="fa fa-building-o fa-lg"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-spinner fa-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle fa-lg"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle"></i> Nav Item 7</a></li>
- </ul>
- <ul class="nav nav-tabs">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="fa fa-building-o fa-lg"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-spinner fa-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle fa-lg"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle"></i> Nav Item 7</a></li>
- </ul>
- </div>
- <div class="span3">
- <ul class="nav nav-list">
- <li>
- <a href="#c1">
- <i class="fa fa-chevron-right fa fa-fw pull-right"></i> Overview
- </a>
- </li>
- <li>
- <a href="#c1">
- Overview
- <i class="fa fa-chevron-right fa fa-fw pull-right"></i>
- </a>
- </li>
- </ul>
- </div>
-</div>
-
-<h3>Hide class directly on icons</h3>
-<div class="row-fluid">
- <div class="span6">
- <div class="well">
- <i class="hide fa fa-circle"></i> Icon should be hidden
- </div>
- </div>
- <div class="span6">
- <i class="hide fa fa-circle"></i> Icon should be hidden
- </div>
-</div>
-
-
-<h3>2x, 3x, 4x icons in text <small>should have margins next to and below text</small></h3>
-<div class="row-fluid">
- <div class="span6">
- <p class="lead">
- <i class="fa fa-stethoscope fa-3x pull-left fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
- <div class="span6">
- <p class="lead">
- <i class="fa fa-ambulance fa-4x pull-right fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span4">
- <i class="fa fa-building-o fa-2x pull-left fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="span4">
- <i class="fa fa-stethoscope fa-3x pull-right fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="span4">
- <i class="fa fa-ambulance fa-4x pull-left"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
-</div>
-
-
-<h3>Bullets <small>should wrap appropriately, have proper spacing</small></h3>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-angle-double-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-mini">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-angle-double-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-mini">foo</a>
- </li>
- </ul>
- </div>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul lead">
- <li><i class="fa-li fa fa-angle-double-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul lead">
- <li><i class="fa-li fa fa-angle-double-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><a href="#"><i class="fa-li fa fa-angle-double-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="fa-li fa fa-arrow-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="fa-li fa fa-building-o"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><a href="#"><i class="fa-li fa fa-angle-double-right fa-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="fa-li fa fa-arrow-right fa-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="fa-li fa fa-building-o fa-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-refresh fa-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-spinner fa-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-spinner fa-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-mini">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-refresh fa-spin fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-spinner fa-spin fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-spinner fa-spin fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-mini">foo</a>
- </li>
- </ul>
- </div>
- </div>
-</div>
-
-
-<div class="row-fluid">
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="span6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-
-
-<h3>Spinning icons <small>icons should be aligned well and on center, buttons should be same height, won't work in ie7</small></h3>
-<div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-spin"></i> Loading...
- <button class="btn btn-default btn-small"><i class="fa fa-refresh fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-small">Loading...</button>
- <i class="fa fa-circle-o fa-spin"></i> Loading...
- <button class="btn btn-default btn-small"><i class="fa fa-circle-o fa-spin"></i> Loading...</button>
- <a href="#"><i class="fa fa-refresh fa-spin"></i> Loading...</a>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-refresh fa-spin"></i> Loading...</button>
- <button class="btn btn-default">Loading...</button>
- <i class="fa fa-circle-o fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-circle-o fa-spin"></i> Loading...</button>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-spinner fa-spin"></i> Loading...
- <button class="btn btn-default btn-large"><i class="fa fa-spinner fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-large">Loading...</button>
- <i class="fa fa-circle-o fa-spin"></i> Loading...
- <button class="btn btn-default btn-large"><i class="fa fa-circle-o fa-spin"></i> Loading...</button>
-</div>
-<h4>fa-lg</h4>
-<div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-small"><i class="fa fa-refresh fa-lg fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-small">Loading...</button>
- <i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-small"><i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...</button>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-refresh fa-lg fa-spin"></i> Loading...</button>
- <button class="btn btn-default">Loading...</button>
- <i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...</button>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-spinner fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-large"><i class="fa fa-spinner fa-lg fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-large">Loading...</button>
- <i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-large"><i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...</button>
-</div>
-<h4>Bootstrap Prepend and Append</h4>
-<div class="row">
- <div class="span6">
- <div class="input-prepend">
- <span class="add-on"><i class="fa fa-spinner fa fa-spin"></i></span>
- <input class="span2" id="prependedInput" type="text" placeholder="Username">
- </div>
- </div>
- <div class="span6">
- <div class="input-append">
- <input class="span2" id="appendedInput" type="text">
- <span class="add-on"><i class="fa fa-spinner fa fa-spin"></i></span>
- </div>
- </div>
-</div>
-<h3>Stacked icons</h3>
-<div class="well">
- {% include tests/stacked.html %}
-</div>
-<div class="well lead">
- {% include tests/stacked.html %}
-</div>
-<h4>Stacked icons inside anchor</h4>
-<div class="well">
- {% include tests/stacked-inside-anchor.html %}
-</div>
-
-
-<h3>Mirrored and rotated icons</h3>
-<div class="row-fluid">
- <div class="span6">
- <div class="well">
- {% include tests/rotated-flipped.html %}
- </div>
- </div>
- <div class="span6">
- <div class="well lead">
- {% include tests/rotated-flipped.html %}
- </div>
- </div>
-</div>
-<h4>Mirrored and rotated icons inside anchors and buttons</h4>
-<div class="row-fluid">
- <div class="span6">
- <div class="well">
- {% include tests/rotated-flipped-inside-anchor.html %}
- </div>
- </div>
- <div class="span6">
- <div class="well">
- {% include tests/rotated-flipped-inside-btn.html %}
- </div>
- </div>
-</div>
-
-</section>
-
-<div class="push"><!-- necessary for sticky footer --></div>
-</div>
-
-<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
-<script src="//netdna.bootstrapcdn.com/bootstrap/2.3.2/js/bootstrap.min.js"></script>
-
-</body>
-</html>
-
-
diff --git a/library/font_awesome/src/test/all.html b/library/font_awesome/src/test/all.html
deleted file mode 100644
index 076d19698..000000000
--- a/library/font_awesome/src/test/all.html
+++ /dev/null
@@ -1,55 +0,0 @@
----
-relative_path: ../../
----
-
-<!DOCTYPE html>
-<html>
- <head>
- <link rel="stylesheet" href="{{ page.relative_path }}assets/css/site.css">
- <link rel="stylesheet" href="{{ page.relative_path }}assets/font-awesome/css/font-awesome.css">
- <script src="https://use.fonticons.com/ffe176a3.js"></script>
- </head>
-
- <body>
- <div class="container">
- <div>
- <h1>All</h1>
- <div>
- {% for icon in icons %}
- <i class="fa fa-{{ icon.id }}"></i>{% endfor %}
- </div>
- </div>
-
-
- <div>
- <h1>All (Unicode)</h1>
- {% for icon in icons %}
- <i class="fa">&#x{{ icon.unicode }}</i>
- {% endfor %}
- </div>
-
- <div>
- <h1>Non-Brand (Unicode)</h1>
-
- {% for icon in icons %}
- {% unless icon.categories contains "Brand Icons" %}
- <i class="fa">&#x{{ icon.unicode }}</i>
- {% endunless %}
- {% endfor %}
- </div>
-
- <div>
- <h1>Brand (Unicode)</h1>
-
- {% for icon in icons %}
- {% if icon.categories contains "Brand Icons" %}
- <i class="fa">&#x{{ icon.unicode }}</i>
- {% endif %}
- {% endfor %}
- </div>
-
-
- </div>
- </body>
-
-</html>
diff --git a/library/font_awesome/src/test/glyphicons.html b/library/font_awesome/src/test/glyphicons.html
deleted file mode 100644
index fefb8ba55..000000000
--- a/library/font_awesome/src/test/glyphicons.html
+++ /dev/null
@@ -1,795 +0,0 @@
----
-title: Glyphicons Visual Test Cases
-relative_path: ../
----
-
-
-<!DOCTYPE html>
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!-->
-<html lang="en" xmlns="http://www.w3.org/1999/html"> <!--<![endif]-->
-<head>
- <!-- Basic Page Needs
- ================================================== -->
- <meta charset="utf-8" />
- <title>{% if page.title %}{{ page.title }}{% endif %}</title>
- <meta name="description" content="Font Awesome, the iconic font designed for Bootstrap">
- <meta name="author" content="Dave Gandy">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <!--<meta name="viewport" content="initial-scale=1; maximum-scale=1">-->
-
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
- <!-- CSS
- ================================================== -->
-
- <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
- <!-- Le fav and touch icons -->
- <link rel="shortcut icon" href="{{ page.relative_path }}assets/ico/favicon.ico">
-
- <script type="text/javascript" src="//use.typekit.net/wnc7ioh.js"></script>
- <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-30136587-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
- })();
- </script>
-</head>
-<body data-spy="scroll" data-target=".navbar">
-<div class="wrapper"> <!-- necessary for sticky footer. wrap all content except footer -->
-
-<section class="container">
-<h1 class="page-header">Visual Test Cases</h1>
-
-<h3>Icons <small>Icons should have proper alignment and not be clipped</small></h3>
-<div class="row">
- <div class="col-md-3">
- <div class="well">
- <i class="glyphicon glyphicon-calendar"></i> Calendar
- </div>
- </div>
- <div class="col-md-3">
- <div class="well">
- <i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Calendar Large
- </div>
- </div>
- <div class="col-md-3">
- <i class="glyphicon glyphicon-calendar"></i> Calendar
- </div>
- <div class="col-md-3">
- <i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Calendar Large
- </div>
-</div>
-<div class="row" style="font-size: 24px; line-height: 1.5em;">
- <div class="col-md-4">
- <div class="well">
- <i class="glyphicon glyphicon-calendar"></i> Calendar
- </div>
- </div>
- <div class="col-md-4">
- <div class="well">
- <i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Calendar Large
- </div>
- </div>
- <div class="col-md-4">
- <i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Calendar Large
- </div>
-</div>
-<div class="row">
- <div class="col-md-3">
- <div class="well">
- <i class="glyphicon glyphicon-minus-sign"></i> Circle
- </div>
- </div>
- <div class="col-md-3">
- <div class="well">
- <i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Circle Large
- </div>
- </div>
- <div class="col-md-3">
- <i class="glyphicon glyphicon-minus-sign"></i> Circle
- </div>
- <div class="col-md-3">
- <i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Circle Large
- </div>
-</div>
-<div class="row" style="font-size: 24px; line-height: 1.5em;">
- <div class="col-md-4">
- <div class="well">
- <i class="glyphicon glyphicon-minus-sign"></i> Circle
- </div>
- </div>
- <div class="col-md-4">
- <div class="well">
- <i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Circle Large
- </div>
- </div>
- <div class="col-md-4">
- <i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Circle Large
- </div>
-</div>
-
-
-<h3>Links with Icons <small>icon should activate link & underline</small></h3>
-<div class="row lead">
- <div class="col-md-3">
- <a href="#"><i class="glyphicon glyphicon-calendar"></i> Link Here</a>
- </div>
- <div class="col-md-3">
- <a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Link Here</a>
- </div>
- <div class="col-md-3">
- <a href="#">Link Here <i class="glyphicon glyphicon-chevron-right"></i></a>
- </div>
- <div class="col-md-3">
- <a href="#">Link Here <i class="glyphicon glyphicon-chevron-right glyphicon-lg"></i></a>
- </div>
-</div>
-<div class="row">
- <div class="col-md-3">
- <a href="#"><i class="glyphicon glyphicon-calendar"></i> Link Here</a>
- </div>
- <div class="col-md-3">
- <a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Link Here</a>
- </div>
- <div class="col-md-3">
- <a href="#">Link Here <i class="glyphicon glyphicon-chevron-right"></i></a>
- </div>
- <div class="col-md-3">
- <a href="#">Link Here <i class="glyphicon glyphicon-chevron-right glyphicon-lg"></i></a>
- </div>
-</div>
-
-
-<h3>Navbar <small>should stay same height </small></h3>
-<nav class="navbar navbar-inverse" role="navigation">
- <a class="navbar-brand" href="#"><i class="glyphicon glyphicon-flag"></i> Font Awesome</a>
- <ul class="nav navbar-nav">
- <li style="border: solid 1px white;"><a href="#">Nav Item 1</a></li>
- <li class="dropdown" style="border: solid 1px white;">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <b class="caret"></b>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="glyphicon glyphicon-calendar"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Nav Item 3</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="glyphicon glyphicon-envelope"></i> Nav Item 4</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Nav Item 5</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="glyphicon glyphicon-minus-sign"></i> Nav Item 6</a></li>
- </ul>
-</nav>
-
-
-<h3>Plain buttons next to buttons w/icons <small>should be same height, icons not clipped</small></h3>
-<h4>Buttons</h4>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-calendar"></i> Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-calendar"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar"></i></button>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></button>
- </div>
- </div>
- </div>
-</div>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-minus-sign"></i> Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-minus-sign"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign"></i></button>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</button>
- <button class="btn btn-default"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></button>
- </div>
- </div>
- </div>
-</div>
-
-
-<h4>Anchors</h4>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-calendar"></i> Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-calendar"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar"></i></a>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i></a>
- </div>
- </div>
- </div>
-</div>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-minus-sign"></i> Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-minus-sign"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign"></i></a>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</a>
- <a class="btn btn-default"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i></a>
- </div>
- </div>
- </div>
-</div>
-
-<h3>Button groups <small>should be same height</small></h3>
-<div class="row">
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default btn-lg">
- <i class="icon-adjust"></i>
- </button>
- <button class="btn btn-default btn-lg">
- Text
- </button>
- </div>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default">
- <i class="icon-adjust"></i>
- </button>
- <button class="btn btn-default">
- Text
- </button>
- </div>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default btn-sm">
- <i class="icon-adjust"></i>
- </button>
- <button class="btn btn-default btn-sm">
- Text
- </button>
- </div>
- </div>
- </div>
-</div>
-
-<h3>Buttons with pulled 2x, 3x, 4x <small>should be same height, have correct line height</small></h3>
-<div class="row">
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default btn-lg" href="#">
- <i class="icon-github icon-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default btn-lg" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default" href="#">
- <i class="icon-github icon-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default btn-sm" href="#">
- <i class="icon-github icon-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default btn-sm" href="#">
- Longer<br>Button</a>
- </div>
- </div>
-</div>
-
-
-<h3>Nav pills & nav tabs <small>should be same height and properly vertically aligned</small></h3>
-<div class="row">
- <div class="col-md-9">
- <ul class="nav nav-pills" style="border: solid 1px #d3d3d3;">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <col-md- class="caret"></col-md->
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="glyphicon glyphicon-calendar"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="glyphicon glyphicon-calendar"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="icon-spinner icon-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="glyphicon glyphicon-minus-sign"></i> Nav Item 7</a></li>
- </ul>
- <ul class="nav nav-tabs">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <col-md- class="caret"></col-md->
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="glyphicon glyphicon-calendar"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="icon-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="glyphicon glyphicon-calendar"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="glyphicon glyphicon-calendar glyphicon-lg"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="icon-spinner icon-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="glyphicon glyphicon-minus-sign glyphicon-lg"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="glyphicon glyphicon-minus-sign"></i> Nav Item 7</a></li>
- </ul>
- </div>
- <div class="col-md-3">
- <ul class="nav nav-list">
- <li>
- <a href="#c1">
- <i class="icon-chevron-right icon-fixed-width pull-right"></i> Overview
- </a>
- </li>
- <li>
- <a href="#c1">
- Overview
- <i class="icon-chevron-right icon-fixed-width pull-right"></i>
- </a>
- </li>
- </ul>
- </div>
-</div>
-
-
-
-<h3>2x, 3x, 4x icons in text <small>should have margins next to and below text</small></h3>
-<div class="row">
- <div class="col-md-6">
- <p class="lead">
- <i class="icon-stethoscope icon-3x pull-left icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
- <div class="col-md-6">
- <p class="lead">
- <i class="icon-ambulance icon-4x pull-right icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
-</div>
-<div class="row">
- <div class="col-md-4">
- <i class="glyphicon glyphicon-calendar icon-2x pull-left icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="col-md-4">
- <i class="icon-stethoscope icon-3x pull-right icon-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="col-md-4">
- <i class="icon-ambulance icon-4x pull-left"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
-</div>
-
-
-<h3>Bullets <small>should wrap appropriately, have proper spacing</small></h3>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li glyphicon glyphicon-chevron-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li glyphicon glyphicon-calendar"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="glyphicon glyphicon-calendar"></i>
- <col-md- class="label">foo</col-md->
- <a class="btn btn-default">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li glyphicon glyphicon-chevron-right glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li glyphicon glyphicon-calendar glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul lead">
- <li><i class="icon-li glyphicon glyphicon-chevron-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li glyphicon glyphicon-calendar"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul lead">
- <li><i class="icon-li glyphicon glyphicon-chevron-right glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-arrow-right glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li glyphicon glyphicon-calendar glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><a href="#"><i class="icon-li glyphicon glyphicon-chevron-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="icon-li icon-arrow-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="icon-li glyphicon glyphicon-calendar"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><a href="#"><i class="icon-li glyphicon glyphicon-chevron-right glyphicon-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="icon-li icon-arrow-right glyphicon-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="icon-li glyphicon glyphicon-calendar glyphicon-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li icon-refresh icon-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-spinner icon-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-spinner icon-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="glyphicon glyphicon-calendar"></i>
- <col-md- class="label">foo</col-md->
- <a class="btn btn-default">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="icons-ul">
- <li><i class="icon-li icon-refresh icon-spin glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="icon-li icon-spinner icon-spin glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="icon-li icon-spinner icon-spin glyphicon-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="glyphicon glyphicon-calendar"></i>
- <col-md- class="label">foo</col-md->
- <a class="btn btn-default">foo</a>
- </li>
- </ul>
- </div>
- </div>
-</div>
-
-
-<div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
-</div>
-
-
-<h3>Spinning icons <small>icons should be aligned well and on center, buttons should be same height, won't work in ie7</small></h3>
-<div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh icon-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="icon-refresh icon-spin"></i> Loading...</button>
- <button class="btn btn-default btn-sm">Loading...</button>
- <i class="glyphicon glyphicon-minus-sign-blank icon-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign-blank icon-spin"></i> Loading...</button>
- <a href="#"><i class="icon-refresh icon-spin"></i> Loading...</a>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh icon-spin"></i> Loading...
- <button class="btn btn-default"><i class="icon-refresh icon-spin"></i> Loading...</button>
- <button class="btn btn-default">Loading...</button>
- <i class="glyphicon glyphicon-minus-sign-blank icon-spin"></i> Loading...
- <button class="btn btn-default"><i class="glyphicon glyphicon-minus-sign-blank icon-spin"></i> Loading...</button>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="icon-spinner icon-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="icon-spinner icon-spin"></i> Loading...</button>
- <button class="btn btn-default btn-lg">Loading...</button>
- <i class="glyphicon glyphicon-minus-sign-blank icon-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign-blank icon-spin"></i> Loading...</button>
-</div>
-<h4>glyphicon-lg</h4>
-<div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh glyphicon-lg icon-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="icon-refresh glyphicon-lg icon-spin"></i> Loading...</button>
- <button class="btn btn-default btn-sm">Loading...</button>
- <i class="glyphicon glyphicon-minus-sign-blank glyphicon-lg icon-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="glyphicon glyphicon-minus-sign-blank glyphicon-lg icon-spin"></i> Loading...</button>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="icon-refresh glyphicon-lg icon-spin"></i> Loading...
- <button class="btn btn-default"><i class="icon-refresh glyphicon-lg icon-spin"></i> Loading...</button>
- <button class="btn btn-default">Loading...</button>
- <i class="glyphicon glyphicon-minus-sign-blank glyphicon-lg icon-spin"></i> Loading...
- <button class="btn btn-default"><i class="glyphicon glyphicon-minus-sign-blank glyphicon-lg icon-spin"></i> Loading...</button>
-</div>
-<div style="border: solid 1px #d3d3d3;">
- <i class="icon-spinner glyphicon-lg icon-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="icon-spinner glyphicon-lg icon-spin"></i> Loading...</button>
- <button class="btn btn-default btn-lg">Loading...</button>
- <i class="glyphicon glyphicon-minus-sign-blank glyphicon-lg icon-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="glyphicon glyphicon-minus-sign-blank glyphicon-lg icon-spin"></i> Loading...</button>
-</div>
-<h4>Bootstrap Prepend and Append</h4>
-<div class="row">
- <div class="col-md-6">
- <div class="input-prepend">
- <col-md- class="add-on"><i class="icon-spinner icon-spin"></i></col-md->
- <input class="col-md-2" id="prependedInput" type="text" placeholder="Username">
- </div>
- </div>
- <div class="col-md-6">
- <div class="input-append">
- <input class="col-md-2" id="appendedInput" type="text">
- <col-md- class="add-on"><i class="icon-spinner icon-spin"></i></col-md->
- </div>
- </div>
-</div>
-
-<h3>Stacked icons</h3>
-<div class="well">
- {% include tests/stacked.html %}
-</div>
-<div class="well lead">
- {% include tests/stacked.html %}
-</div>
-<h4>Stacked icons inside anchor</h4>
-<div class="well">
- {% include tests/stacked-inside-anchor.html %}
-</div>
-
-
-<h3>Mirrored and rotated icons</h3>
-<div class="row">
- <div class="col-md-6">
- <div class="well">
- {% include tests/rotated-flipped.html %}
- </div>
- </div>
- <div class="col-md-6">
- <div class="well lead">
- {% include tests/rotated-flipped.html %}
- </div>
- </div>
-</div>
-<h4>Mirrored and rotated icons inside anchors and buttons</h4>
-<div class="row">
- <div class="col-md-6">
- <div class="well">
- {% include tests/rotated-flipped-inside-anchor.html %}
- </div>
- </div>
- <div class="col-md-6">
- <div class="well">
- {% include tests/rotated-flipped-inside-btn.html %}
- </div>
- </div>
-</div>
-
-</section>
-
- <div class="push"><!-- necessary for sticky footer --></div>
-</div>
-
-<script src="http://platform.twitter.com/widgets.js"></script>
-<script src="{{ page.relative_path }}assets/js/jquery-1.7.1.min.js"></script>
-<script src="{{ page.relative_path }}assets/js/ZeroClipboard-1.1.7.min.js"></script>
-<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
-
-</body>
-</html>
-
-
diff --git a/library/font_awesome/src/test/height/4.4.0.html b/library/font_awesome/src/test/height/4.4.0.html
deleted file mode 100644
index 59636950d..000000000
--- a/library/font_awesome/src/test/height/4.4.0.html
+++ /dev/null
@@ -1,62 +0,0 @@
----
-relative_path: ../../../
----
-
-<!DOCTYPE html>
-<html>
- <head>
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.css" />
- </head>
-
- <body>
- <h1>4.4.0</h1>
- <table>
- <tr>
- <td><i class="fa fa-1x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-1x fa-cog"></i></td>
- <td><i class="fa fa-1x fa-shield"></i></td>
- <td><i class="fa fa-1x fa-ship"></i></td>
- <td><i class="fa fa-1x fa-angle-double-up"></i></td>
- <td><i class="fa fa-1x fa-angle-double-down"></i></td>
- <td><i class="fa fa-1x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-2x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-2x fa-cog"></i></td>
- <td><i class="fa fa-2x fa-shield"></i></td>
- <td><i class="fa fa-2x fa-ship"></i></td>
- <td><i class="fa fa-2x fa-angle-double-up"></i></td>
- <td><i class="fa fa-2x fa-angle-double-down"></i></td>
- <td><i class="fa fa-2x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-3x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-3x fa-cog"></i></td>
- <td><i class="fa fa-3x fa-shield"></i></td>
- <td><i class="fa fa-3x fa-ship"></i></td>
- <td><i class="fa fa-3x fa-angle-double-up"></i></td>
- <td><i class="fa fa-3x fa-angle-double-down"></i></td>
- <td><i class="fa fa-3x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-4x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-4x fa-cog"></i></td>
- <td><i class="fa fa-4x fa-shield"></i></td>
- <td><i class="fa fa-4x fa-ship"></i></td>
- <td><i class="fa fa-4x fa-angle-double-up"></i></td>
- <td><i class="fa fa-4x fa-angle-double-down"></i></td>
- <td><i class="fa fa-4x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-5x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-5x fa-cog"></i></td>
- <td><i class="fa fa-5x fa-shield"></i></td>
- <td><i class="fa fa-5x fa-ship"></i></td>
- <td><i class="fa fa-5x fa-angle-double-up"></i></td>
- <td><i class="fa fa-5x fa-angle-double-down"></i></td>
- <td><i class="fa fa-5x fa-file-o"></i></td>
- </tr>
- </table>
- </body>
-
-</html>
diff --git a/library/font_awesome/src/test/height/4.5.0.html b/library/font_awesome/src/test/height/4.5.0.html
deleted file mode 100644
index ed7e18add..000000000
--- a/library/font_awesome/src/test/height/4.5.0.html
+++ /dev/null
@@ -1,62 +0,0 @@
----
-relative_path: ../../../
----
-
-<!DOCTYPE html>
-<html>
- <head>
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css" />
- </head>
-
- <body>
- <h1>4.5.0</h1>
- <table>
- <tr>
- <td><i class="fa fa-1x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-1x fa-cog"></i></td>
- <td><i class="fa fa-1x fa-shield"></i></td>
- <td><i class="fa fa-1x fa-ship"></i></td>
- <td><i class="fa fa-1x fa-angle-double-up"></i></td>
- <td><i class="fa fa-1x fa-angle-double-down"></i></td>
- <td><i class="fa fa-1x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-2x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-2x fa-cog"></i></td>
- <td><i class="fa fa-2x fa-shield"></i></td>
- <td><i class="fa fa-2x fa-ship"></i></td>
- <td><i class="fa fa-2x fa-angle-double-up"></i></td>
- <td><i class="fa fa-2x fa-angle-double-down"></i></td>
- <td><i class="fa fa-2x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-3x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-3x fa-cog"></i></td>
- <td><i class="fa fa-3x fa-shield"></i></td>
- <td><i class="fa fa-3x fa-ship"></i></td>
- <td><i class="fa fa-3x fa-angle-double-up"></i></td>
- <td><i class="fa fa-3x fa-angle-double-down"></i></td>
- <td><i class="fa fa-3x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-4x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-4x fa-cog"></i></td>
- <td><i class="fa fa-4x fa-shield"></i></td>
- <td><i class="fa fa-4x fa-ship"></i></td>
- <td><i class="fa fa-4x fa-angle-double-up"></i></td>
- <td><i class="fa fa-4x fa-angle-double-down"></i></td>
- <td><i class="fa fa-4x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-5x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-5x fa-cog"></i></td>
- <td><i class="fa fa-5x fa-shield"></i></td>
- <td><i class="fa fa-5x fa-ship"></i></td>
- <td><i class="fa fa-5x fa-angle-double-up"></i></td>
- <td><i class="fa fa-5x fa-angle-double-down"></i></td>
- <td><i class="fa fa-5x fa-file-o"></i></td>
- </tr>
- </table>
- </body>
-
-</html>
diff --git a/library/font_awesome/src/test/height/current.html b/library/font_awesome/src/test/height/current.html
deleted file mode 100644
index 02b05e078..000000000
--- a/library/font_awesome/src/test/height/current.html
+++ /dev/null
@@ -1,62 +0,0 @@
----
-relative_path: ../../../
----
-
-<!DOCTYPE html>
-<html>
- <head>
- <link rel="stylesheet" href="{{ page.relative_path }}assets/font-awesome/css/font-awesome.css">
- </head>
-
- <body>
- <h1>Current</h1>
- <table>
- <tr>
- <td><i class="fa fa-1x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-1x fa-cog"></i></td>
- <td><i class="fa fa-1x fa-shield"></i></td>
- <td><i class="fa fa-1x fa-ship"></i></td>
- <td><i class="fa fa-1x fa-angle-double-up"></i></td>
- <td><i class="fa fa-1x fa-angle-double-down"></i></td>
- <td><i class="fa fa-1x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-2x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-2x fa-cog"></i></td>
- <td><i class="fa fa-2x fa-shield"></i></td>
- <td><i class="fa fa-2x fa-ship"></i></td>
- <td><i class="fa fa-2x fa-angle-double-up"></i></td>
- <td><i class="fa fa-2x fa-angle-double-down"></i></td>
- <td><i class="fa fa-2x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-3x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-3x fa-cog"></i></td>
- <td><i class="fa fa-3x fa-shield"></i></td>
- <td><i class="fa fa-3x fa-ship"></i></td>
- <td><i class="fa fa-3x fa-angle-double-up"></i></td>
- <td><i class="fa fa-3x fa-angle-double-down"></i></td>
- <td><i class="fa fa-3x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-4x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-4x fa-cog"></i></td>
- <td><i class="fa fa-4x fa-shield"></i></td>
- <td><i class="fa fa-4x fa-ship"></i></td>
- <td><i class="fa fa-4x fa-angle-double-up"></i></td>
- <td><i class="fa fa-4x fa-angle-double-down"></i></td>
- <td><i class="fa fa-4x fa-file-o"></i></td>
- </tr>
- <tr>
- <td><i class="fa fa-5x fa-file-pdf-o"></i></td>
- <td><i class="fa fa-5x fa-cog"></i></td>
- <td><i class="fa fa-5x fa-shield"></i></td>
- <td><i class="fa fa-5x fa-ship"></i></td>
- <td><i class="fa fa-5x fa-angle-double-up"></i></td>
- <td><i class="fa fa-5x fa-angle-double-down"></i></td>
- <td><i class="fa fa-5x fa-file-o"></i></td>
- </tr>
- </table>
- </body>
-
-</html>
diff --git a/library/font_awesome/src/test/index.html b/library/font_awesome/src/test/index.html
deleted file mode 100644
index 09a9536e7..000000000
--- a/library/font_awesome/src/test/index.html
+++ /dev/null
@@ -1,800 +0,0 @@
----
-layout: base
-title: Font Awesome Visual Test Cases
-relative_path: ../
----
-
-<section class="container">
- <h1 class="page-header">Visual Test Cases</h1>
-
- <h3>Icons <small>Icons should have proper alignment and not be clipped</small></h3>
- <div class="row">
- <div class="col-md-3">
- <div class="well">
- <i class="fa fa-building-o"></i> Building
- </div>
- </div>
- <div class="col-md-3">
- <div class="well">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
- </div>
- <div class="col-md-3">
- <i class="fa fa-building-o"></i> Building
- </div>
- <div class="col-md-3">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
- </div>
- <div class="row" style="font-size: 24px; line-height: 1.5em;">
- <div class="col-md-4">
- <div class="well">
- <i class="fa fa-building-o"></i> Building
- </div>
- </div>
- <div class="col-md-4">
- <div class="well">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
- </div>
- <div class="col-md-4">
- <i class="fa fa-building-o fa-lg"></i> Building Large
- </div>
- </div>
- <div class="row">
- <div class="col-md-3">
- <div class="well">
- <i class="fa fa-circle"></i> Circle
- </div>
- </div>
- <div class="col-md-3">
- <div class="well">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
- </div>
- <div class="col-md-3">
- <i class="fa fa-circle"></i> Circle
- </div>
- <div class="col-md-3">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
- </div>
- <div class="row" style="font-size: 24px; line-height: 1.5em;">
- <div class="col-md-4">
- <div class="well">
- <i class="fa fa-circle"></i> Circle
- </div>
- </div>
- <div class="col-md-4">
- <div class="well">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
- </div>
- <div class="col-md-4">
- <i class="fa fa-circle fa-lg"></i> Circle Large
- </div>
- </div>
-
-
- <h3>Links with Icons <small>icon should activate link & NOT underline</small></h3>
- <div class="row lead">
- <div class="col-md-2">
- <a href="#"><i class="fa fa-building-o padding-right"></i>Link Here</a>
- </div>
- <div class="col-md-2">
- <a href="#"><i class="fa fa-building-o fa-lg padding-right"></i>Link Here</a>
- </div>
- <div class="col-md-2">
- <a href="#"><i class="fa fa-caret-down padding-right"></i>Link Here</a>
- </div>
- <div class="col-md-2">
- <a href="#">Link Here<i class="fa fa-angle-double-right padding-left"></i></a>
- </div>
- <div class="col-md-2">
- <a href="#">Link Here<i class="fa fa-angle-double-right fa-lg padding-left"></i></a>
- </div>
- <div class="col-md-2">
- <a href="#">Link Here<i class="fa fa-caret-down padding-left"></i></a>
- </div>
- </div>
- <div class="row">
- <div class="col-md-2">
- <a href="#"><i class="fa fa-building-o padding-right-sm"></i>Link Here</a>
- </div>
- <div class="col-md-2">
- <a href="#"><i class="fa fa-building-o fa-lg padding-right-sm"></i>Link Here</a>
- </div>
- <div class="col-md-2">
- <a href="#"><i class="fa fa-caret-down padding-right-sm"></i>Link Here</a>
- </div>
- <div class="col-md-2">
- <a href="#">Link Here<i class="fa fa-angle-double-right padding-left-sm"></i></a>
- </div>
- <div class="col-md-2">
- <a href="#">Link Here<i class="fa fa-angle-double-right fa-lg padding-left-sm"></i></a>
- </div>
- <div class="col-md-2">
- <a href="#">Link Here<i class="fa fa-caret-down padding-left-sm"></i></a>
- </div>
- </div>
-
-
- <h3>Navbar <small>should stay same height </small></h3>
- <div class="navbar navbar-inverse navbar-static-top">
- <div class="container">
- <a class="navbar-brand" href="#"><i class="fa fa-flag"></i> Font Awesome</a>
- <ul class="nav navbar-nav">
- <li style="border: solid 1px white;"><a href="#">Nav Item 1</a></li>
- <li class="dropdown" style="border: solid 1px white;">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-building-o fa-lg"></i> Nav Item 3</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-envelope"></i> Nav Item 4</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-circle fa-lg"></i> Nav Item 5</a></li>
- <li style="border: solid 1px white;"><a href="#examples"><i class="fa fa-circle"></i> Nav Item 6</a></li>
- </ul>
- </div>
- </div>
-
-
- <h3>Plain buttons next to buttons w/icons <small>should be same height, icons not clipped</small></h3>
- <h4>Buttons</h4>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-building-o"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-building-o"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-building-o"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-building-o"></i></button>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-building-o fa-lg"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-building-o fa-lg"></i></button>
- </div>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-circle"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-circle"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-circle"></i></button>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <button class="btn btn-default btn-xs">Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default btn-xs"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-sm">Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default btn-sm"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default">Button</button>
- <button class="btn btn-default"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg">Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-circle fa-lg"></i> Button</button>
- <button class="btn btn-default btn-lg"><i class="fa fa-circle fa-lg"></i></button>
- </div>
- </div>
- </div>
- </div>
-
-
- <h4>Anchors</h4>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-building-o"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-building-o"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-building-o"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-building-o"></i></a>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-building-o fa-lg"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-building-o fa-lg"></i></a>
- </div>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-circle"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-circle"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-circle"></i></a>
- </div>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3; text-align: center;">
- <div>
- <a class="btn btn-default btn-xs">Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default btn-xs"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-sm">Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default btn-sm"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default">Button</a>
- <a class="btn btn-default"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- <div>
- <a class="btn btn-default btn-lg">Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-circle fa-lg"></i> Button</a>
- <a class="btn btn-default btn-lg"><i class="fa fa-circle fa-lg"></i></a>
- </div>
- </div>
- </div>
- </div>
-
- <h3>Button groups <small>should be same height</small></h3>
- <div class="row">
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default btn-lg">
- <i class="fa fa-adjust"></i>
- </button>
- <button class="btn btn-default btn-lg">
- Text
- </button>
- </div>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default">
- <i class="fa fa-adjust"></i>
- </button>
- <button class="btn btn-default">
- Text
- </button>
- </div>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <div class="btn-group">
- <button class="btn btn-default btn-sm">
- <i class="fa fa-adjust"></i>
- </button>
- <button class="btn btn-default btn-sm">
- Text
- </button>
- </div>
- </div>
- </div>
- </div>
-
- <h3>Buttons with pulled 2x, 3x, 4x <small>should be same height, have correct line height</small></h3>
- <div class="row">
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default btn-lg" href="#">
- <i class="fa fa-github fa-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default btn-lg" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default" href="#">
- <i class="fa fa-github fa-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- <div class="col-md-4">
- <div style="border: solid 1px #d3d3d3;">
- <a class="btn btn-default btn-sm" href="#">
- <i class="fa fa-github fa-2x pull-left"></i>
- Longer<br>Button</a>
- <a class="btn btn-default btn-sm" href="#">
- Longer<br>Button</a>
- </div>
- </div>
- </div>
-
-
- <h3>Nav pills & nav tabs <small>should be same height and properly vertically aligned</small></h3>
- <div class="row">
- <div class="col-md-9">
- <ul class="nav nav-pills" style="border: solid 1px #d3d3d3;">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="fa fa-building-o fa-lg"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-spinner fa-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle fa-lg"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle"></i> Nav Item 7</a></li>
- </ul>
- <ul class="nav nav-tabs">
- <li class="active"><a href="#">Nav Item 1</a></li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 2
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="dropdown active">
- <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
- Nav Item 3
- <i class="fa fa-caret-down"></i>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="#"><i class="fa fa-building-o"></i> Menu Item 1</a></li>
- <li><a href="#"><i class="fa fa-building-o fa-lg"></i> Menu Item 2</a></li>
- </ul>
- </li>
- <li class="active"><a href="#examples"><i class="fa fa-building-o fa-lg"></i> Nav Item 4</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-spinner fa-spin"></i> Nav Item 5</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle fa-lg"></i> Nav Item 6</a></li>
- <li class="active"><a href="#examples"><i class="fa fa-circle"></i> Nav Item 7</a></li>
- </ul>
- </div>
- <div class="col-md-3">
- <div class="list-group">
- <a href="#" class="list-group-item active">
- Overview<i class="fa fa-chevron-right fa-fw pull-right"></i>
- </a>
- <a href="#" class="list-group-item">
- Overview<i class="fa fa-chevron-right fa-fw pull-right"></i>
- </a>
- </div>
- </div>
- </div>
-
- <h3>Hide class directly on icons</h3>
- <div class="row">
- <div class="col-md-6">
- <div class="well">
- <i class="hide fa fa-circle"></i> Icon should be hidden
- </div>
- </div>
- <div class="col-md-6">
- <i class="hide fa fa-circle"></i> Icon should be hidden
- </div>
- </div>
-
-
- <h3>2x, 3x, 4x icons in text <small>should have margins next to and below text</small></h3>
- <div class="row">
- <div class="col-md-6">
- <p class="lead">
- <i class="fa fa-stethoscope fa-3x fa-pull-left fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
- <div class="col-md-6">
- <p class="lead">
- <i class="fa fa-ambulance fa-4x fa-pull-right fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </p>
- </div>
- </div>
- <div class="row">
- <div class="col-md-4">
- <i class="fa fa-building-o fa-2x fa-pull-left fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="col-md-4">
- <i class="fa fa-stethoscope fa-3x fa-pull-right fa-border"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- <div class="col-md-4">
- <i class="fa fa-ambulance fa-4x fa-pull-left"></i>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
- </div>
- </div>
-
-
- <h3>Bullets <small>should wrap appropriately, have proper spacing</small></h3>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-angle-double-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-xs">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-angle-double-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-xs">foo</a>
- </li>
- </ul>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul lead">
- <li><i class="fa-li fa fa-angle-double-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul lead">
- <li><i class="fa-li fa fa-angle-double-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-arrow-right fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-building-o fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><a href="#"><i class="fa-li fa fa-angle-double-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="fa-li fa fa-arrow-right"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="fa-li fa fa-building-o"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><a href="#"><i class="fa-li fa fa-angle-double-right fa-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><a href="#"><i class="fa-li fa fa-arrow-right fa-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><a href="#"><i class="fa-li fa fa-building-o fa-lg"></i></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-refresh fa-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-spinner fa-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-spinner fa-spin"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-xs">foo</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul class="fa-ul">
- <li><i class="fa-li fa fa-refresh fa-spin fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li><i class="fa-li fa fa-spinner fa-spin fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li><i class="fa-li fa fa-spinner fa-spin fa-lg"></i>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- <i class="fa fa-building-o"></i>
- <span class="label label-default">foo</span>
- <a class="btn btn-default btn-xs">foo</a>
- </li>
- </ul>
- </div>
- </div>
- </div>
-
-
- <div class="row">
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- <div class="col-md-6">
- <div style="border: solid 1px #d3d3d3;">
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.</li>
- <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
- </ul>
- </div>
- </div>
- </div>
-
-
- <h3>Spinning icons <small>icons should be aligned well and on center, buttons should be same height, won't work in ie7</small></h3>
- <div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="fa fa-refresh fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-sm">Loading...</button>
- <i class="fa fa-circle-o fa-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="fa fa-circle-o fa-spin"></i> Loading...</button>
- <a href="#"><i class="fa fa-refresh fa-spin"></i> Loading...</a>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-refresh fa-spin"></i> Loading...</button>
- <button class="btn btn-default">Loading...</button>
- <i class="fa fa-circle-o fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-circle-o fa-spin"></i> Loading...</button>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-spinner fa-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="fa fa-spinner fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-lg">Loading...</button>
- <i class="fa fa-circle-o fa-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="fa fa-circle-o fa-spin"></i> Loading...</button>
- </div>
- <h4>fa-lg</h4>
- <div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="fa fa-refresh fa-lg fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-sm">Loading...</button>
- <i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-sm"><i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...</button>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-refresh fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-refresh fa-lg fa-spin"></i> Loading...</button>
- <button class="btn btn-default">Loading...</button>
- <i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default"><i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...</button>
- </div>
- <div style="border: solid 1px #d3d3d3;">
- <i class="fa fa-spinner fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="fa fa-spinner fa-lg fa-spin"></i> Loading...</button>
- <button class="btn btn-default btn-lg">Loading...</button>
- <i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...
- <button class="btn btn-default btn-lg"><i class="fa fa-circle-o fa-lg fa-spin"></i> Loading...</button>
- </div>
- <h4>Bootstrap Prepend and Append</h4>
- <div class="row">
- <div class="col-md-4">
- <div class="input-group">
- <span class="input-group-addon"><i class="fa fa-spinner fa-spin"></i></span>
- <input type="text" class="form-control" placeholder="Username">
- </div>
- </div>
- <div class="col-md-4">
- <div class="input-group">
- <input type="text" class="form-control">
- <span class="input-group-addon"><i class="fa fa-spinner fa-spin"></i></span>
- </div>
- </div>
- </div>
-
- <h3>Stacked icons</h3>
- <div class="well">
- {% include tests/stacked.html %}
- </div>
- <div class="well lead">
- {% include tests/stacked.html %}
- </div>
- <h4>Stacked icons inside anchor</h4>
- <div class="well">
- {% include tests/stacked-inside-anchor.html %}
- </div>
- <h4>Stacked icon background with text foreground</h4>
- <div class="well">
- {% include tests/stacked-with-text.html %}
- </div>
-
-
- <h3>Mirrored and rotated icons</h3>
- <div class="row">
- <div class="col-md-6">
- <div class="well">
- {% include tests/rotated-flipped.html %}
- </div>
- </div>
- <div class="col-md-6">
- <div class="well lead">
- {% include tests/rotated-flipped.html %}
- </div>
- </div>
- </div>
- <h4>Mirrored and rotated icons inside anchors and buttons</h4>
- <div class="row">
- <div class="col-md-6">
- <div class="well">
- {% include tests/rotated-flipped-inside-anchor.html %}
- </div>
- </div>
- <div class="col-md-6">
- <div class="well">
- {% include tests/rotated-flipped-inside-btn.html %}
- </div>
- </div>
- </div>
-
- <h3>Animation Wobble <a href="https://github.com/FortAwesome/Font-Awesome/issues/671">#671</a></h3>
- <div>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-spinner fa-spin"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-cog fa-spin"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-circle-o-notch fa-spin"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-spinner fa-pulse"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-cog fa-pulse"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-circle-o-notch fa-pulse"></i></span>
- </div>
- <div>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-spinner fa-spin fa-5x"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-cog fa-spin fa-5x"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-circle-o-notch fa-spin fa-5x"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-spinner fa-pulse fa-5x"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-cog fa-pulse fa-5x"></i></span>
- <span style="border: solid 1px #d3d3d3; display:inline-block;"><i class="fa fa-circle-o-notch fa-pulse fa-5x"></i></span>
- </div>
- <div>
- <button class="btn btn-default"><i class="fa fa-spinner fa-spin"></i></button>
- <button class="btn btn-default"><i class="fa fa-cog fa-spin"></i></button>
- <button class="btn btn-default"><i class="fa fa-circle-o-notch fa-spin"></i></button>
- <button class="btn btn-default"><i class="fa fa-spinner fa-pulse"></i></button>
- <button class="btn btn-default"><i class="fa fa-cog fa-pulse"></i></button>
- <button class="btn btn-default"><i class="fa fa-circle-o-notch fa-pulse"></i></button>
- </div>
- <div>
- <button class="btn btn-default btn-lg"><i class="fa fa-spinner fa-spin"></i></button>
- <button class="btn btn-default btn-lg"><i class="fa fa-cog fa-spin"></i></button>
- <button class="btn btn-default btn-lg"><i class="fa fa-circle-o-notch fa-spin"></i></button>
- <button class="btn btn-default btn-lg"><i class="fa fa-spinner fa-pulse"></i></button>
- <button class="btn btn-default btn-lg"><i class="fa fa-cog fa-pulse"></i></button>
- <button class="btn btn-default btn-lg"><i class="fa fa-circle-o-notch fa-pulse"></i></button>
- </div>
-
-
-</section>
diff --git a/library/font_awesome/src/thanks.html b/library/font_awesome/src/thanks.html
deleted file mode 100644
index b22a4eec5..000000000
--- a/library/font_awesome/src/thanks.html
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: base
-title: Thanks for subscribing!
-relative_path: ../
----
-
-<div class="container">
- <div class="row">
- <div class="col-md-8 col-md-offset-2 margin-top-lg">
- <div class="well well-lg margin-top-xl margin-bottom-none">
- <h1>You're all set!</h1>
- <p>
- Thanks for signing up!
- We'll send you email updates on new Font Awesome releases, icons, and other stuff that we're working on.
- We won't spam you. Scout's honor!
- </p>
-
- <h2>What's next?</h2>
- <p>
- Want to see what we're working on next? Check out Fort Awesome! We're making it easy to put the perfect icons
- on your website. Pick from gorgeous, comprehensive icon sets or copy and paste your own vector icons.
- </p>
-
- <a href="https://fortawesome.com/?utm_source=font_awesome_homepage&utm_medium=display&utm_content=subscribe_thanks&utm_campaign=promo_{{ site.fontawesome.minor_version }}_update" class="btn btn-lg btn-success">Check out Fort Awesome!</a>
-
- </div>
- </div>
- </div>
-</div>
diff --git a/library/font_awesome/src/whats-new.html b/library/font_awesome/src/whats-new.html
deleted file mode 100644
index fd3a3cf63..000000000
--- a/library/font_awesome/src/whats-new.html
+++ /dev/null
@@ -1,43 +0,0 @@
----
-layout: base
-title: What's New
-navbar_active: whats-new
-relative_path: ../
----
-{% capture jumbotron_h1 %}<i class="fa fa-lightbulb-o" aria-hidden="true"></i>&nbsp; What's New{% endcapture %}
-{% capture jumbotron_p %}What's New in the latest version &mdash; Font Awesome {{ site.fontawesome.minor_version }}{% endcapture %}
-
-{% include jumbotron.html %}
-{% include stripe-social.html %}
-
-<div class="container">
- {% capture stripe_ad_content %}
- <p class="lead">
- Font Awesome is always getting a little awesome-er. So here's what's new in the latest version, Font Awesome
- {{ site.fontawesome.minor_version }}. Have some ideas for new features?
- <a href="{{ page.relative_path }}community/">Help contribute</a>.
- </p>
- {% endcapture %}
- {% include stripe-ad.html %}
-
- <div class="row feature-list">
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-universal-access" aria-hidden="true"></i> <a href="{{ page.relative_path }}accessibility">Accessibility Docs</a></h4>
- Details on how to mark up your icons depending on how you're using them.
- Make your site icons usable by the most people, and start here.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-code" aria-hidden="true"></i> Better Examples</h4>
- Every FA icon example page now has a better, more accessibility-minded
- default block of code that users can copy and paste.
- </div>
- <div class="col-md-4 col-sm-6">
- <h4><i class="fa fa-wheelchair-alt" aria-hidden="true"></i> <a href="{{ page.relative_path }}icons/#accessibility">Accessibility Category</a></h4>
- We've added a new icon category specifically for accessibility and seeded
- it with 15 icons to start. Make sure to <a href="{{ page.relative_path }}community/#requesting-new-icons">request more</a> if you need them!
- </div>
- </div>
-
- {% include icons/new.html %}
- {% include new-upgrading.html %}
-</div>
diff --git a/library/fork-awesome/css/fork-awesome.css b/library/fork-awesome/css/fork-awesome.css
new file mode 100644
index 000000000..5670fbe13
--- /dev/null
+++ b/library/fork-awesome/css/fork-awesome.css
@@ -0,0 +1,2410 @@
+/*!
+ * Fork Awesome 1.0.9, originaly by Dave Gandy - http://forkawesome.github.com/Fork-Awesome/
+ * License - http://forkawesome.github.com/Fork-Awesome//license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'ForkAwesome';
+ src: url('../fonts/forkawesome-webfont.eot?v=1.0.9');
+ src: url('../fonts/forkawesome-webfont.eot?#iefix&v=1.0.9') format('embedded-opentype'), url('../fonts/forkawesome-webfont.woff2?v=1.0.9') format('woff2'), url('../fonts/forkawesome-webfont.woff?v=1.0.9') format('woff'), url('../fonts/forkawesome-webfont.ttf?v=1.0.9') format('truetype'), url('../fonts/forkawesome-webfont.svg?v=1.0.9#forkawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font: normal normal normal 14px/1 ForkAwesome;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.28571429em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.14285714em;
+ width: 2.14285714em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.85714286em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eee;
+ border-radius: .1em;
+}
+.fa-pull-left {
+ float: left;
+}
+.fa-pull-right {
+ float: right;
+}
+.fa.fa-pull-left {
+ margin-right: .3em;
+}
+.fa.fa-pull-right {
+ margin-left: .3em;
+}
+/* Deprecated as of 4.4.0 */
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+.fa-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+ filter: none;
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #fff;
+}
+/* Fork Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook-f:before,
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-feed:before,
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-community:before,
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before,
+.fa-gratipay:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+.fa-space-shuttle:before {
+ content: "\f197";
+}
+.fa-slack:before {
+ content: "\f198";
+}
+.fa-envelope-square:before {
+ content: "\f199";
+}
+.fa-wordpress:before {
+ content: "\f19a";
+}
+.fa-openid:before {
+ content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+ content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+ content: "\f19d";
+}
+.fa-yahoo:before {
+ content: "\f19e";
+}
+.fa-google:before {
+ content: "\f1a0";
+}
+.fa-reddit:before {
+ content: "\f1a1";
+}
+.fa-reddit-square:before {
+ content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+ content: "\f1a3";
+}
+.fa-stumbleupon:before {
+ content: "\f1a4";
+}
+.fa-delicious:before {
+ content: "\f1a5";
+}
+.fa-digg:before {
+ content: "\f1a6";
+}
+.fa-drupal:before {
+ content: "\f1a9";
+}
+.fa-joomla:before {
+ content: "\f1aa";
+}
+.fa-language:before {
+ content: "\f1ab";
+}
+.fa-fax:before {
+ content: "\f1ac";
+}
+.fa-building:before {
+ content: "\f1ad";
+}
+.fa-child:before {
+ content: "\f1ae";
+}
+.fa-paw:before {
+ content: "\f1b0";
+}
+.fa-spoon:before {
+ content: "\f1b1";
+}
+.fa-cube:before {
+ content: "\f1b2";
+}
+.fa-cubes:before {
+ content: "\f1b3";
+}
+.fa-behance:before {
+ content: "\f1b4";
+}
+.fa-behance-square:before {
+ content: "\f1b5";
+}
+.fa-steam:before {
+ content: "\f1b6";
+}
+.fa-steam-square:before {
+ content: "\f1b7";
+}
+.fa-recycle:before {
+ content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+ content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+ content: "\f1ba";
+}
+.fa-tree:before {
+ content: "\f1bb";
+}
+.fa-spotify:before {
+ content: "\f1bc";
+}
+.fa-deviantart:before {
+ content: "\f1bd";
+}
+.fa-soundcloud:before {
+ content: "\f1be";
+}
+.fa-database:before {
+ content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+ content: "\f1c1";
+}
+.fa-file-word-o:before {
+ content: "\f1c2";
+}
+.fa-file-excel-o:before {
+ content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+ content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+ content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+ content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+ content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+ content: "\f1c8";
+}
+.fa-file-code-o:before {
+ content: "\f1c9";
+}
+.fa-vine:before {
+ content: "\f1ca";
+}
+.fa-codepen:before {
+ content: "\f1cb";
+}
+.fa-jsfiddle:before {
+ content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+ content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+ content: "\f1ce";
+}
+.fa-ra:before,
+.fa-resistance:before,
+.fa-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
+.fa-hacker-news:before {
+ content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+ content: "\f1d5";
+}
+.fa-qq:before {
+ content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+ content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+ content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+ content: "\f1d9";
+}
+.fa-history:before {
+ content: "\f1da";
+}
+.fa-circle-thin:before {
+ content: "\f1db";
+}
+.fa-header:before {
+ content: "\f1dc";
+}
+.fa-paragraph:before {
+ content: "\f1dd";
+}
+.fa-sliders:before {
+ content: "\f1de";
+}
+.fa-share-alt:before {
+ content: "\f1e0";
+}
+.fa-share-alt-square:before {
+ content: "\f1e1";
+}
+.fa-bomb:before {
+ content: "\f1e2";
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+ content: "\f1e3";
+}
+.fa-tty:before {
+ content: "\f1e4";
+}
+.fa-binoculars:before {
+ content: "\f1e5";
+}
+.fa-plug:before {
+ content: "\f1e6";
+}
+.fa-slideshare:before {
+ content: "\f1e7";
+}
+.fa-twitch:before {
+ content: "\f1e8";
+}
+.fa-yelp:before {
+ content: "\f1e9";
+}
+.fa-newspaper-o:before {
+ content: "\f1ea";
+}
+.fa-wifi:before {
+ content: "\f1eb";
+}
+.fa-calculator:before {
+ content: "\f1ec";
+}
+.fa-paypal:before {
+ content: "\f1ed";
+}
+.fa-google-wallet:before {
+ content: "\f1ee";
+}
+.fa-cc-visa:before {
+ content: "\f1f0";
+}
+.fa-cc-mastercard:before {
+ content: "\f1f1";
+}
+.fa-cc-discover:before {
+ content: "\f1f2";
+}
+.fa-cc-amex:before {
+ content: "\f1f3";
+}
+.fa-cc-paypal:before {
+ content: "\f1f4";
+}
+.fa-cc-stripe:before {
+ content: "\f1f5";
+}
+.fa-bell-slash:before {
+ content: "\f1f6";
+}
+.fa-bell-slash-o:before {
+ content: "\f1f7";
+}
+.fa-trash:before {
+ content: "\f1f8";
+}
+.fa-copyright:before {
+ content: "\f1f9";
+}
+.fa-at:before {
+ content: "\f1fa";
+}
+.fa-eyedropper:before {
+ content: "\f1fb";
+}
+.fa-paint-brush:before {
+ content: "\f1fc";
+}
+.fa-birthday-cake:before {
+ content: "\f1fd";
+}
+.fa-area-chart:before {
+ content: "\f1fe";
+}
+.fa-pie-chart:before {
+ content: "\f200";
+}
+.fa-line-chart:before {
+ content: "\f201";
+}
+.fa-lastfm:before {
+ content: "\f202";
+}
+.fa-lastfm-square:before {
+ content: "\f203";
+}
+.fa-toggle-off:before {
+ content: "\f204";
+}
+.fa-toggle-on:before {
+ content: "\f205";
+}
+.fa-bicycle:before {
+ content: "\f206";
+}
+.fa-bus:before {
+ content: "\f207";
+}
+.fa-ioxhost:before {
+ content: "\f208";
+}
+.fa-angellist:before {
+ content: "\f209";
+}
+.fa-cc:before {
+ content: "\f20a";
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+ content: "\f20b";
+}
+.fa-meanpath:before {
+ content: "\f20c";
+}
+.fa-buysellads:before {
+ content: "\f20d";
+}
+.fa-connectdevelop:before {
+ content: "\f20e";
+}
+.fa-dashcube:before {
+ content: "\f210";
+}
+.fa-forumbee:before {
+ content: "\f211";
+}
+.fa-leanpub:before {
+ content: "\f212";
+}
+.fa-sellsy:before {
+ content: "\f213";
+}
+.fa-shirtsinbulk:before {
+ content: "\f214";
+}
+.fa-simplybuilt:before {
+ content: "\f215";
+}
+.fa-skyatlas:before {
+ content: "\f216";
+}
+.fa-cart-plus:before {
+ content: "\f217";
+}
+.fa-cart-arrow-down:before {
+ content: "\f218";
+}
+.fa-diamond:before {
+ content: "\f219";
+}
+.fa-ship:before {
+ content: "\f21a";
+}
+.fa-user-secret:before {
+ content: "\f21b";
+}
+.fa-motorcycle:before {
+ content: "\f21c";
+}
+.fa-street-view:before {
+ content: "\f21d";
+}
+.fa-heartbeat:before {
+ content: "\f21e";
+}
+.fa-venus:before {
+ content: "\f221";
+}
+.fa-mars:before {
+ content: "\f222";
+}
+.fa-mercury:before {
+ content: "\f223";
+}
+.fa-intersex:before,
+.fa-transgender:before {
+ content: "\f224";
+}
+.fa-transgender-alt:before {
+ content: "\f225";
+}
+.fa-venus-double:before {
+ content: "\f226";
+}
+.fa-mars-double:before {
+ content: "\f227";
+}
+.fa-venus-mars:before {
+ content: "\f228";
+}
+.fa-mars-stroke:before {
+ content: "\f229";
+}
+.fa-mars-stroke-v:before {
+ content: "\f22a";
+}
+.fa-mars-stroke-h:before {
+ content: "\f22b";
+}
+.fa-neuter:before {
+ content: "\f22c";
+}
+.fa-genderless:before {
+ content: "\f22d";
+}
+.fa-facebook-official:before {
+ content: "\f230";
+}
+.fa-pinterest-p:before {
+ content: "\f231";
+}
+.fa-whatsapp:before {
+ content: "\f232";
+}
+.fa-server:before {
+ content: "\f233";
+}
+.fa-user-plus:before {
+ content: "\f234";
+}
+.fa-user-times:before {
+ content: "\f235";
+}
+.fa-hotel:before,
+.fa-bed:before {
+ content: "\f236";
+}
+.fa-viacoin:before {
+ content: "\f237";
+}
+.fa-train:before {
+ content: "\f238";
+}
+.fa-subway:before {
+ content: "\f239";
+}
+.fa-medium:before {
+ content: "\f23a";
+}
+.fa-medium-square:before {
+ content: "\f2f8";
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+ content: "\f23b";
+}
+.fa-optin-monster:before {
+ content: "\f23c";
+}
+.fa-opencart:before {
+ content: "\f23d";
+}
+.fa-expeditedssl:before {
+ content: "\f23e";
+}
+.fa-battery-4:before,
+.fa-battery:before,
+.fa-battery-full:before {
+ content: "\f240";
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+ content: "\f241";
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+ content: "\f242";
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+ content: "\f243";
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+ content: "\f244";
+}
+.fa-mouse-pointer:before {
+ content: "\f245";
+}
+.fa-i-cursor:before {
+ content: "\f246";
+}
+.fa-object-group:before {
+ content: "\f247";
+}
+.fa-object-ungroup:before {
+ content: "\f248";
+}
+.fa-sticky-note:before {
+ content: "\f249";
+}
+.fa-sticky-note-o:before {
+ content: "\f24a";
+}
+.fa-cc-jcb:before {
+ content: "\f24b";
+}
+.fa-cc-diners-club:before {
+ content: "\f24c";
+}
+.fa-clone:before {
+ content: "\f24d";
+}
+.fa-balance-scale:before {
+ content: "\f24e";
+}
+.fa-hourglass-o:before {
+ content: "\f250";
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+ content: "\f251";
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+ content: "\f252";
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+ content: "\f253";
+}
+.fa-hourglass:before {
+ content: "\f254";
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+ content: "\f255";
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+ content: "\f256";
+}
+.fa-hand-scissors-o:before {
+ content: "\f257";
+}
+.fa-hand-lizard-o:before {
+ content: "\f258";
+}
+.fa-hand-spock-o:before {
+ content: "\f259";
+}
+.fa-hand-pointer-o:before {
+ content: "\f25a";
+}
+.fa-hand-peace-o:before {
+ content: "\f25b";
+}
+.fa-trademark:before {
+ content: "\f25c";
+}
+.fa-registered:before {
+ content: "\f25d";
+}
+.fa-creative-commons:before {
+ content: "\f25e";
+}
+.fa-gg:before {
+ content: "\f260";
+}
+.fa-gg-circle:before {
+ content: "\f261";
+}
+.fa-tripadvisor:before {
+ content: "\f262";
+}
+.fa-odnoklassniki:before {
+ content: "\f263";
+}
+.fa-odnoklassniki-square:before {
+ content: "\f264";
+}
+.fa-get-pocket:before {
+ content: "\f265";
+}
+.fa-wikipedia-w:before {
+ content: "\f266";
+}
+.fa-safari:before {
+ content: "\f267";
+}
+.fa-chrome:before {
+ content: "\f268";
+}
+.fa-firefox:before {
+ content: "\f269";
+}
+.fa-opera:before {
+ content: "\f26a";
+}
+.fa-internet-explorer:before {
+ content: "\f26b";
+}
+.fa-tv:before,
+.fa-television:before {
+ content: "\f26c";
+}
+.fa-contao:before {
+ content: "\f26d";
+}
+.fa-500px:before {
+ content: "\f26e";
+}
+.fa-amazon:before {
+ content: "\f270";
+}
+.fa-calendar-plus-o:before {
+ content: "\f271";
+}
+.fa-calendar-minus-o:before {
+ content: "\f272";
+}
+.fa-calendar-times-o:before {
+ content: "\f273";
+}
+.fa-calendar-check-o:before {
+ content: "\f274";
+}
+.fa-industry:before {
+ content: "\f275";
+}
+.fa-map-pin:before {
+ content: "\f276";
+}
+.fa-map-signs:before {
+ content: "\f277";
+}
+.fa-map-o:before {
+ content: "\f278";
+}
+.fa-map:before {
+ content: "\f279";
+}
+.fa-commenting:before {
+ content: "\f27a";
+}
+.fa-commenting-o:before {
+ content: "\f27b";
+}
+.fa-houzz:before {
+ content: "\f27c";
+}
+.fa-vimeo:before {
+ content: "\f27d";
+}
+.fa-black-tie:before {
+ content: "\f27e";
+}
+.fa-fonticons:before {
+ content: "\f280";
+}
+.fa-reddit-alien:before {
+ content: "\f281";
+}
+.fa-edge:before {
+ content: "\f282";
+}
+.fa-credit-card-alt:before {
+ content: "\f283";
+}
+.fa-codiepie:before {
+ content: "\f284";
+}
+.fa-modx:before {
+ content: "\f285";
+}
+.fa-fort-awesome:before {
+ content: "\f286";
+}
+.fa-usb:before {
+ content: "\f287";
+}
+.fa-product-hunt:before {
+ content: "\f288";
+}
+.fa-mixcloud:before {
+ content: "\f289";
+}
+.fa-scribd:before {
+ content: "\f28a";
+}
+.fa-pause-circle:before {
+ content: "\f28b";
+}
+.fa-pause-circle-o:before {
+ content: "\f28c";
+}
+.fa-stop-circle:before {
+ content: "\f28d";
+}
+.fa-stop-circle-o:before {
+ content: "\f28e";
+}
+.fa-shopping-bag:before {
+ content: "\f290";
+}
+.fa-shopping-basket:before {
+ content: "\f291";
+}
+.fa-hashtag:before {
+ content: "\f292";
+}
+.fa-bluetooth:before {
+ content: "\f293";
+}
+.fa-bluetooth-b:before {
+ content: "\f294";
+}
+.fa-percent:before {
+ content: "\f295";
+}
+.fa-gitlab:before {
+ content: "\f296";
+}
+.fa-wpbeginner:before {
+ content: "\f297";
+}
+.fa-wpforms:before {
+ content: "\f298";
+}
+.fa-envira:before {
+ content: "\f299";
+}
+.fa-universal-access:before {
+ content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+ content: "\f29b";
+}
+.fa-question-circle-o:before {
+ content: "\f29c";
+}
+.fa-blind:before {
+ content: "\f29d";
+}
+.fa-audio-description:before {
+ content: "\f29e";
+}
+.fa-volume-control-phone:before {
+ content: "\f2a0";
+}
+.fa-braille:before {
+ content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+ content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+ content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+ content: "\f2a4";
+}
+.fa-glide:before {
+ content: "\f2a5";
+}
+.fa-glide-g:before {
+ content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+ content: "\f2a7";
+}
+.fa-low-vision:before {
+ content: "\f2a8";
+}
+.fa-viadeo:before {
+ content: "\f2a9";
+}
+.fa-viadeo-square:before {
+ content: "\f2aa";
+}
+.fa-snapchat:before {
+ content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+ content: "\f2ac";
+}
+.fa-snapchat-square:before {
+ content: "\f2ad";
+}
+.fa-first-order:before {
+ content: "\f2b0";
+}
+.fa-yoast:before {
+ content: "\f2b1";
+}
+.fa-themeisle:before {
+ content: "\f2b2";
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+ content: "\f2b3";
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+ content: "\f2b4";
+}
+.fa-handshake-o:before {
+ content: "\f2b5";
+}
+.fa-envelope-open:before {
+ content: "\f2b6";
+}
+.fa-envelope-open-o:before {
+ content: "\f2b7";
+}
+.fa-linode:before {
+ content: "\f2b8";
+}
+.fa-address-book:before {
+ content: "\f2b9";
+}
+.fa-address-book-o:before {
+ content: "\f2ba";
+}
+.fa-vcard:before,
+.fa-address-card:before {
+ content: "\f2bb";
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+ content: "\f2bc";
+}
+.fa-user-circle:before {
+ content: "\f2bd";
+}
+.fa-user-circle-o:before {
+ content: "\f2be";
+}
+.fa-user-o:before {
+ content: "\f2c0";
+}
+.fa-id-badge:before {
+ content: "\f2c1";
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+ content: "\f2c2";
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+ content: "\f2c3";
+}
+.fa-quora:before {
+ content: "\f2c4";
+}
+.fa-free-code-camp:before {
+ content: "\f2c5";
+}
+.fa-telegram:before {
+ content: "\f2c6";
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+ content: "\f2c7";
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+ content: "\f2c8";
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+ content: "\f2c9";
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+ content: "\f2ca";
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+ content: "\f2cb";
+}
+.fa-shower:before {
+ content: "\f2cc";
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+ content: "\f2cd";
+}
+.fa-podcast:before {
+ content: "\f2ce";
+}
+.fa-window-maximize:before {
+ content: "\f2d0";
+}
+.fa-window-minimize:before {
+ content: "\f2d1";
+}
+.fa-window-restore:before {
+ content: "\f2d2";
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+ content: "\f2d3";
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+ content: "\f2d4";
+}
+.fa-bandcamp:before {
+ content: "\f2d5";
+}
+.fa-grav:before {
+ content: "\f2d6";
+}
+.fa-etsy:before {
+ content: "\f2d7";
+}
+.fa-imdb:before {
+ content: "\f2d8";
+}
+.fa-ravelry:before {
+ content: "\f2d9";
+}
+.fa-eercast:before {
+ content: "\f2da";
+}
+.fa-microchip:before {
+ content: "\f2db";
+}
+.fa-snowflake-o:before {
+ content: "\f2dc";
+}
+.fa-superpowers:before {
+ content: "\f2dd";
+}
+.fa-wpexplorer:before {
+ content: "\f2de";
+}
+.fa-meetup:before {
+ content: "\f2e0";
+}
+.fa-mastodon:before {
+ content: "\f2e1";
+}
+.fa-mastodon-alt:before {
+ content: "\f2e2";
+}
+.fa-fork-circle:before,
+.fa-fork-awesome:before {
+ content: "\f2e3";
+}
+.fa-peertube:before {
+ content: "\f2e4";
+}
+.fa-diaspora:before {
+ content: "\f2e5";
+}
+.fa-friendica:before {
+ content: "\f2e6";
+}
+.fa-gnu-social:before {
+ content: "\f2e7";
+}
+.fa-liberapay-square:before {
+ content: "\f2e8";
+}
+.fa-liberapay:before {
+ content: "\f2e9";
+}
+.fa-ssb:before,
+.fa-scuttlebutt:before {
+ content: "\f2ea";
+}
+.fa-hubzilla:before {
+ content: "\f2eb";
+}
+.fa-social-home:before {
+ content: "\f2ec";
+}
+.fa-artstation:before {
+ content: "\f2ed";
+}
+.fa-discord:before {
+ content: "\f2ee";
+}
+.fa-discord-alt:before {
+ content: "\f2ef";
+}
+.fa-patreon:before {
+ content: "\f2f0";
+}
+.fa-snowdrift:before {
+ content: "\f2f1";
+}
+.fa-activitypub:before {
+ content: "\f2f2";
+}
+.fa-ethereum:before {
+ content: "\f2f3";
+}
+.fa-keybase:before {
+ content: "\f2f4";
+}
+.fa-shaarli:before {
+ content: "\f2f5";
+}
+.fa-shaarli-o:before {
+ content: "\f2f6";
+}
+.fa-cut-key:before,
+.fa-key-modern:before {
+ content: "\f2f7";
+}
+.fa-xmpp:before {
+ content: "\f2f9";
+}
+.fa-archive-org:before {
+ content: "\f2fc";
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
diff --git a/library/fork-awesome/css/fork-awesome.min.css b/library/fork-awesome/css/fork-awesome.min.css
new file mode 100644
index 000000000..f01cbc7d8
--- /dev/null
+++ b/library/fork-awesome/css/fork-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Fork Awesome 1.0.9, originaly by Dave Gandy - http://forkawesome.github.com/Fork-Awesome/
+ * License - http://forkawesome.github.com/Fork-Awesome//license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:ForkAwesome;src:url(../fonts/forkawesome-webfont.eot?v=1.0.9);src:url(../fonts/forkawesome-webfont.eot?#iefix&v=1.0.9) format('embedded-opentype'),url(../fonts/forkawesome-webfont.woff2?v=1.0.9) format('woff2'),url(../fonts/forkawesome-webfont.woff?v=1.0.9) format('woff'),url(../fonts/forkawesome-webfont.ttf?v=1.0.9) format('truetype'),url(../fonts/forkawesome-webfont.svg?v=1.0.9#forkawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-community:before,.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-medium-square:before{content:"\f2f8"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.fa-mastodon:before{content:"\f2e1"}.fa-mastodon-alt:before{content:"\f2e2"}.fa-fork-awesome:before,.fa-fork-circle:before{content:"\f2e3"}.fa-peertube:before{content:"\f2e4"}.fa-diaspora:before{content:"\f2e5"}.fa-friendica:before{content:"\f2e6"}.fa-gnu-social:before{content:"\f2e7"}.fa-liberapay-square:before{content:"\f2e8"}.fa-liberapay:before{content:"\f2e9"}.fa-scuttlebutt:before,.fa-ssb:before{content:"\f2ea"}.fa-hubzilla:before{content:"\f2eb"}.fa-social-home:before{content:"\f2ec"}.fa-artstation:before{content:"\f2ed"}.fa-discord:before{content:"\f2ee"}.fa-discord-alt:before{content:"\f2ef"}.fa-patreon:before{content:"\f2f0"}.fa-snowdrift:before{content:"\f2f1"}.fa-activitypub:before{content:"\f2f2"}.fa-ethereum:before{content:"\f2f3"}.fa-keybase:before{content:"\f2f4"}.fa-shaarli:before{content:"\f2f5"}.fa-shaarli-o:before{content:"\f2f6"}.fa-cut-key:before,.fa-key-modern:before{content:"\f2f7"}.fa-xmpp:before{content:"\f2f9"}.fa-archive-org:before{content:"\f2fc"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}/*# sourceMappingURL=fork-awesome.min.css.map */ \ No newline at end of file
diff --git a/library/fork-awesome/css/fork-awesome.min.css.map b/library/fork-awesome/css/fork-awesome.min.css.map
new file mode 100644
index 000000000..e3e919849
--- /dev/null
+++ b/library/fork-awesome/css/fork-awesome.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["fork-awesome.css"],"names":[],"mappings":";;;AAMA,WACE,YAAA,YACA,IAAS,8CACT,IAAS,qDAAoF,4BAAA,gDAAmE,gBAAA,+CAAiE,eAAA,8CAAoE,mBAAA,iEAArS,cACA,YAAA,IACA,WAAA,OAEF,IACE,QAAA,aACA,KAAA,OAAA,OAAA,OAAA,KAAA,EAAA,YACA,UAAA,QACA,eAAA,KACA,uBAAA,YACA,wBAAA,UAGF,OACE,UAAA,aACA,YAAA,MACA,eAAA,KAEF,OACE,UAAA,IAEF,OACE,UAAA,IAEF,OACE,UAAA,IAEF,OACE,UAAA,IAEF,OACE,MAAA,aACA,WAAA,OAEF,OACE,aAAA,EACA,YAAA,aACA,gBAAA,KAEK,UACL,SAAA,SAEF,OACE,SAAA,SACA,KAAA,cACA,MAAA,aACA,IAAA,YACA,WAAA,OAEI,aACJ,KAAA,cAEF,WACE,QAAA,KAAA,MAAA,MACA,OAAA,MAAA,MAAA,KACA,cAAA,KAEF,cACE,MAAA,KAEF,eACE,MAAA,MAEC,iBACD,aAAA,KAEC,kBACD,YAAA,KAGF,YACE,MAAA,MAEF,WACE,MAAA,KAEC,cACD,aAAA,KAEC,eACD,YAAA,KAEF,SACE,kBAAA,QAAA,GAAA,SAAA,OACA,UAAA,QAAA,GAAA,SAAA,OAEF,UACE,kBAAA,QAAA,GAAA,SAAuC,SACvC,UAAA,QAAA,GAAA,SAA+B,SAEjC,2BACE,GACE,kBAAmB,UACnB,UAAW,UAEb,KACE,kBAAmB,eACnB,UAAW,gBAGf,mBACE,GACE,kBAAmB,UACnB,UAAW,UAEb,KACE,kBAAmB,eACnB,UAAW,gBAGf,cACE,WAAY,2DACZ,kBAAmB,cACnB,cAAe,cACf,UAAW,cAEb,eACE,WAAY,2DACZ,kBAAmB,eACnB,cAAe,eACf,UAAW,eAEb,eACE,WAAY,2DACZ,kBAAmB,eACnB,cAAe,eACf,UAAW,eAEb,oBACE,WAAY,qEACZ,kBAAmB,YACnB,cAAe,YACf,UAAW,YAEb,kBACE,WAAY,qEACZ,kBAAmB,YACnB,cAAe,YACf,UAAW,YAKP,0BACA,wBAHA,qBACA,qBAFA,oBAKJ,OAAA,KAEF,UACE,SAAA,SACA,QAAA,aACA,MAAA,IACA,OAAA,IACA,YAAA,IACA,eAAA,OAEF,aACA,aACE,SAAA,SACA,KAAA,EACA,MAAA,KACA,WAAA,OAEF,aACE,YAAA,QAEF,aACE,UAAA,IAEF,YACE,MAAA,KAIO,iBACP,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAEO,iBACP,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACR,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEU,oBACV,QAAA,QAEI,cACJ,QAAA,QAES,mBACT,QAAA,QAEO,iBACP,QAAA,QAGO,iBADC,kBAED,iBACP,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAEW,qBACX,QAAA,QAEQ,kBACR,QAAA,QAGK,eADC,gBAEN,QAAA,QAES,mBACT,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEM,gBACN,QAAA,QAEU,oBACV,QAAA,QAEqB,+BACrB,QAAA,QAEmB,6BACnB,QAAA,QAEO,iBACP,QAAA,QAEe,yBACf,QAAA,QAGQ,kBADM,wBAEd,QAAA,QAES,mBACT,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEY,sBACZ,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEW,qBACX,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEK,eACL,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEU,oBACV,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACR,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACC,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACd,QAAA,QAGO,iBADA,iBAEI,qBACX,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEM,gBACN,QAAA,QAEM,gBACW,2BACjB,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAEe,yBACf,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEO,iBACP,QAAA,QAEM,gBACN,QAAA,QAES,mBACT,QAAA,QAEc,wBACd,QAAA,QAEc,wBACd,QAAA,QAEO,iBACP,QAAA,QAEc,wBACd,QAAA,QAEe,yBACf,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAEc,wBACd,QAAA,QAEc,wBACd,QAAA,QAEiB,2BACjB,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEK,eACL,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACP,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEO,iBACP,QAAA,QAEU,oBACV,QAAA,QAEoB,8BACpB,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEK,eACL,QAAA,QAEW,qBACX,QAAA,QAGsB,gCADb,mBAET,QAAA,QAEO,iBACP,QAAA,QAEU,oBACV,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAES,mBACT,QAAA,QAEe,yBACf,QAAA,QAEQ,kBACR,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEU,oBACV,QAAA,QAEa,uBACF,qBACX,QAAA,QAEgB,0BAChB,QAAA,QAEiB,2BACjB,QAAA,QAEc,wBACd,QAAA,QAEK,eACL,QAAA,QAGM,gBADC,iBAEP,QAAA,QAEU,oBACV,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEW,qBACX,QAAA,QAES,mBACT,QAAA,QAEU,oBACV,QAAA,QAEiB,2BACjB,QAAA,QAEY,sBACZ,QAAA,QAEe,yBACf,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEO,iBACP,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAES,mBACT,QAAA,QAEY,sBACF,oBACV,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEa,uBACb,QAAA,QAEM,gBACD,eACL,QAAA,QAEO,iBACP,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAEa,uBACb,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAEmB,6BACnB,QAAA,QAEoB,8BACpB,QAAA,QAEiB,2BACjB,QAAA,QAEmB,6BACnB,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAEW,qBACJ,iBACA,iBACP,QAAA,QAEO,iBACD,gBACN,QAAA,QAEO,iBACP,QAAA,QAEO,iBACP,QAAA,QAEK,eACK,oBACV,QAAA,QAEM,gBACG,mBACT,QAAA,QAEW,qBACX,QAAA,QAGU,oBADJ,gBAEN,QAAA,QAEQ,kBACR,QAAA,QAIM,gBAFG,mBACA,mBAET,QAAA,QAES,mBACT,QAAA,QAES,mBACT,QAAA,QAEe,yBACf,QAAA,QAEW,qBACX,QAAA,QAEO,iBACP,QAAA,QAEO,iBACP,QAAA,QAEO,iBACP,QAAA,QAEW,qBACX,QAAA,QAEkB,4BAClB,QAAA,QAEoB,8BACpB,QAAA,QAEa,uBACb,QAAA,QAEO,iBACP,QAAA,QAEY,sBACZ,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAES,mBACT,QAAA,QAGM,gBADI,oBAEV,QAAA,QAGW,qBADA,qBAEX,QAAA,QAGU,oBADD,mBAET,QAAA,QAEU,oBACV,QAAA,QAEU,oBACV,QAAA,QAEa,uBACP,gBACN,QAAA,QAGO,iBADA,iBAEP,QAAA,QAEW,qBACC,sBACZ,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAGM,gBADC,iBAEP,QAAA,QAES,mBACT,QAAA,QAEU,oBACV,QAAA,QAGW,qBADJ,iBAEP,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEgB,0BAChB,QAAA,QAEc,wBACd,QAAA,QAES,mBACT,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAEY,sBACZ,QAAA,QAEW,qBACX,QAAA,QAEQ,kBACR,QAAA,QAEa,uBACb,QAAA,QAEM,gBACN,QAAA,QAEU,oBACV,QAAA,QAEa,uBACb,QAAA,QAEmB,6BACnB,QAAA,QAEoB,8BACpB,QAAA,QAEiB,2BACjB,QAAA,QAEmB,6BACnB,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACN,kBACR,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACL,iBACP,QAAA,QAEY,sBACZ,QAAA,QAEU,oBACV,QAAA,QAEe,yBACf,QAAA,QAES,mBACT,QAAA,QAES,mBACT,QAAA,QAEO,iBACP,QAAA,QAES,mBACT,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEgB,0BAChB,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEgB,0BACL,qBACX,QAAA,QAEiB,2BACD,0BACH,uBACb,QAAA,QAEgB,0BAChB,QAAA,QAEM,gBACN,QAAA,QAEW,qBACX,QAAA,QAGc,wBADN,kBAER,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEa,uBACb,QAAA,QAEa,uBACb,QAAA,QAEW,qBACX,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACd,QAAA,QAEY,sBACZ,QAAA,QAEkB,4BAClB,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAEmB,6BACnB,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEqB,+BACrB,QAAA,QAEsB,gCACtB,QAAA,QAEmB,6BACnB,QAAA,QAEqB,+BACrB,QAAA,QAEO,iBACP,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEY,sBACZ,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAEe,yBACf,QAAA,QAEsB,gCACtB,QAAA,QAEc,wBACd,QAAA,QAES,mBACT,QAAA,QAGqB,+BADR,uBAEb,QAAA,QAGmB,6BADR,qBAEX,QAAA,QAGsB,gCADR,wBAEd,QAAA,QAGK,eADC,gBAEN,QAAA,QAEK,eACL,QAAA,QAEQ,kBACH,eACL,QAAA,QAGK,eADE,iBAEP,QAAA,QAEK,eAGA,eAFA,eACA,eAEL,QAAA,QAGQ,kBACH,eAFE,iBAGP,QAAA,QAGK,eADA,eAEL,QAAA,QAES,mBACJ,eACL,QAAA,QAEM,gBACN,QAAA,QAEW,qBACX,QAAA,QAEgB,0BAChB,QAAA,QAEiB,2BACjB,QAAA,QAEiB,2BACjB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEmB,6BACnB,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAEgB,0BAChB,QAAA,QAES,mBACT,QAAA,QAEM,gBACN,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAES,mBACT,QAAA,QAEgB,0BAChB,QAAA,QAEW,qBACX,QAAA,QAEQ,kBACR,QAAA,QAEK,eACL,QAAA,QAEW,qBACX,QAAA,QAEkB,4BAClB,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEkB,4BAClB,QAAA,QAEO,iBACP,QAAA,QAES,mBACT,QAAA,QAES,mBACT,QAAA,QAEO,iBACP,QAAA,QAEU,oBACV,QAAA,QAEO,iBACP,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACE,oBACV,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEK,eACL,QAAA,QAEI,cACJ,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEW,qBACX,QAAA,QAEgB,0BAChB,QAAA,QAEsB,gCACtB,QAAA,QAEqB,+BACrB,QAAA,QAGqB,+BADR,uBAEb,QAAA,QAEc,wBACd,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAGK,eADS,wBAEd,QAAA,QAEe,yBACf,QAAA,QAEe,yBACf,QAAA,QAEO,iBACP,QAAA,QAEiB,2BACjB,QAAA,QAEW,qBACX,QAAA,QAEQ,kBACR,QAAA,QAGM,gBADO,uBAED,sBACZ,QAAA,QAGgB,0BADF,wBAEd,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAEoB,8BACpB,QAAA,QAEa,uBACb,QAAA,QAEW,qBACX,QAAA,QAEM,gBACN,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEU,oBACV,QAAA,QAEK,eACL,QAAA,QAEU,oBACV,QAAA,QAEO,iBACP,QAAA,QAEK,eACL,QAAA,QAEO,iBACP,QAAA,QAEM,gBACN,QAAA,QAEO,iBACP,QAAA,QAES,mBACT,QAAA,QAEgB,0BAChB,QAAA,QAEO,iBACP,QAAA,QAEc,wBACd,QAAA,QAES,mBACT,QAAA,QAEY,sBACP,eACL,QAAA,QAEK,eACC,gBACN,QAAA,QAEM,gBACN,QAAA,QAES,mBACT,QAAA,QAEY,sBACZ,QAAA,QAEY,sBACZ,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAEmB,6BACnB,QAAA,QAIc,wBAFA,wBACE,0BAEhB,QAAA,QAGgB,0BADJ,sBAEZ,QAAA,QAGc,wBADA,wBAEd,QAAA,QAEc,wBACA,wBACd,QAAA,QAEa,uBACb,QAAA,QAEM,gBACN,QAAA,QAES,mBACT,QAAA,QAEU,oBACV,QAAA,QAEW,qBACA,qBAGA,qBAFC,sBACH,mBAET,QAAA,QAEgB,0BAChB,QAAA,QAEI,cAEG,iBADK,sBAEZ,QAAA,QAGQ,kBADJ,cAEJ,QAAA,QAEY,sBACZ,QAAA,QAEK,eACL,QAAA,QAIa,uBAFQ,+BACV,qBAEX,QAAA,QAEe,yBACf,QAAA,QAEI,cACJ,QAAA,QAEQ,kBACA,kBACR,QAAA,QAGa,uBADP,gBAEN,QAAA,QAGe,yBADP,kBAER,QAAA,QAES,mBACT,QAAA,QAEa,uBACb,QAAA,QAEQ,kBACR,QAAA,QAEW,qBACX,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEkB,4BAClB,QAAA,QAEM,gBACN,QAAA,QAGU,oBADK,yBAEf,QAAA,QAEK,eACL,QAAA,QAEY,sBACZ,QAAA,QAEM,gBACN,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEM,gBACN,QAAA,QAEa,uBACb,QAAA,QAEM,gBACN,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAES,mBACT,QAAA,QAEe,yBACf,QAAA,QAEa,uBACb,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAEO,iBACP,QAAA,QAEW,qBACX,QAAA,QAEI,cACJ,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEY,sBACZ,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAEY,sBACZ,QAAA,QAEW,qBACX,QAAA,QAES,mBACT,QAAA,QAEK,eACL,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEI,cACJ,QAAA,QAIK,eAFG,kBACA,kBAER,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEgB,0BAChB,QAAA,QAEU,oBACV,QAAA,QAEU,oBACV,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACd,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEW,qBACX,QAAA,QAEiB,2BACjB,QAAA,QAES,mBACT,QAAA,QAEM,gBACN,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEW,qBACX,QAAA,QAEO,iBACP,QAAA,QAEM,gBACN,QAAA,QAES,mBACT,QAAA,QAEU,oBACG,uBACb,QAAA,QAEiB,2BACjB,QAAA,QAEc,wBACd,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEe,yBACf,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAEmB,6BACnB,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAEQ,kBACR,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAGK,eADE,iBAEP,QAAA,QAES,mBACT,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAGc,wBADV,cAEJ,QAAA,QAEe,yBACf,QAAA,QAEU,oBACV,QAAA,QAEc,wBACd,QAAA,QAEW,qBAEG,wBADL,mBAET,QAAA,QAEW,qBACa,kCACxB,QAAA,QAEW,qBACG,wBACd,QAAA,QAEW,qBACM,2BACjB,QAAA,QAEW,qBACI,yBACf,QAAA,QAEe,yBACf,QAAA,QAEU,oBACV,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEQ,kBACR,QAAA,QAEgB,0BAChB,QAAA,QAEO,iBACP,QAAA,QAEe,yBACf,QAAA,QAEa,uBACb,QAAA,QAEa,uBACI,2BACjB,QAAA,QAEa,uBACG,0BAChB,QAAA,QAEa,uBACE,yBACf,QAAA,QAEW,qBACX,QAAA,QAEa,uBACA,uBACb,QAAA,QAGc,wBADD,uBAEb,QAAA,QAEiB,2BACjB,QAAA,QAEe,yBACf,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAEc,wBACd,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAEkB,4BAClB,QAAA,QAEI,cACJ,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEsB,gCACtB,QAAA,QAEY,sBACZ,QAAA,QAEa,uBACb,QAAA,QAEQ,kBACR,QAAA,QAEQ,kBACR,QAAA,QAES,mBACT,QAAA,QAEO,iBACP,QAAA,QAEmB,6BACnB,QAAA,QAGY,sBADR,cAEJ,QAAA,QAEQ,kBACR,QAAA,QAEO,iBACP,QAAA,QAEQ,kBACR,QAAA,QAEiB,2BACjB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEU,oBACV,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEO,iBACP,QAAA,QAEK,eACL,QAAA,QAEY,sBACZ,QAAA,QAEc,wBACd,QAAA,QAEO,iBACP,QAAA,QAEO,iBACP,QAAA,QAEW,qBACX,QAAA,QAEW,qBACX,QAAA,QAEc,wBACd,QAAA,QAEM,gBACN,QAAA,QAEiB,2BACjB,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEc,wBACd,QAAA,QAEK,eACL,QAAA,QAEc,wBACd,QAAA,QAEU,oBACV,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEc,wBACd,QAAA,QAEiB,2BACjB,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEY,sBACZ,QAAA,QAES,mBACT,QAAA,QAEQ,kBACR,QAAA,QAEkB,4BAClB,QAAA,QAEgB,0BAChB,QAAA,QAEmB,6BACnB,QAAA,QAEO,iBACP,QAAA,QAEmB,6BACnB,QAAA,QAEsB,gCACtB,QAAA,QAES,mBACT,QAAA,QAE6B,uCAC7B,QAAA,QAGqC,+CADnB,4BAElB,QAAA,QAIM,gBAFI,oBACO,2BAEjB,QAAA,QAEO,iBACP,QAAA,QAES,mBACT,QAAA,QAGe,yBADN,mBAET,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEe,yBACf,QAAA,QAEU,oBACV,QAAA,QAEgB,0BAChB,QAAA,QAEiB,2BACjB,QAAA,QAEa,uBACb,QAAA,QAEO,iBACP,QAAA,QAEW,qBACX,QAAA,QAEoB,8BACE,gCACtB,QAAA,QAEI,cACU,wBACd,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEQ,kBACR,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAGc,wBADP,iBAEP,QAAA,QAGgB,0BADP,mBAET,QAAA,QAEa,uBACb,QAAA,QAEe,yBACf,QAAA,QAEQ,kBACR,QAAA,QAEU,oBACV,QAAA,QAEiB,2BACR,mBACT,QAAA,QAEmB,6BACR,qBACX,QAAA,QAEO,iBACP,QAAA,QAEgB,0BAChB,QAAA,QAEU,oBACV,QAAA,QAEe,yBAEG,4BADL,uBAEb,QAAA,QAEe,yBACa,sCAC5B,QAAA,QAEe,yBACG,4BAClB,QAAA,QAEe,yBACM,+BACrB,QAAA,QAEe,yBACI,6BACnB,QAAA,QAEQ,kBACR,QAAA,QAIM,gBAFG,mBACJ,eAEL,QAAA,QAES,mBACT,QAAA,QAEiB,2BACjB,QAAA,QAEiB,2BACjB,QAAA,QAEgB,0BAChB,QAAA,QAEiB,2BACH,wBACd,QAAA,QAEmB,6BACH,0BAChB,QAAA,QAEU,oBACV,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAEM,gBACN,QAAA,QAES,mBACT,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAEQ,kBACR,QAAA,QAEU,oBACV,QAAA,QAEc,wBACd,QAAA,QAGc,wBADD,uBAEb,QAAA,QAEU,oBACV,QAAA,QAEU,oBACV,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAEkB,4BAClB,QAAA,QAEW,qBACX,QAAA,QAGa,uBADR,eAEL,QAAA,QAEU,oBACV,QAAA,QAEa,uBACb,QAAA,QAEY,sBACZ,QAAA,QAES,mBACT,QAAA,QAEa,uBACb,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAEU,oBACV,QAAA,QAES,mBACT,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAES,mBACG,sBACZ,QAAA,QAEM,gBACN,QAAA,QAEa,uBACb,QAAA,QAEF,SACE,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EACA,OAAA,KACA,SAAA,OACA,KAAM,cACN,OAAA,EAEgB,0BACA,yBAChB,SAAA,OACA,MAAA,KACA,OAAA,KACA,OAAA,EACA,SAAA,QACA,KAAA"} \ No newline at end of file
diff --git a/library/fork-awesome/fonts/forkawesome-webfont.eot b/library/fork-awesome/fonts/forkawesome-webfont.eot
new file mode 100644
index 000000000..1c76c9895
--- /dev/null
+++ b/library/fork-awesome/fonts/forkawesome-webfont.eot
Binary files differ
diff --git a/library/fork-awesome/fonts/forkawesome-webfont.svg b/library/fork-awesome/fonts/forkawesome-webfont.svg
new file mode 100644
index 000000000..5fbcf00ae
--- /dev/null
+++ b/library/fork-awesome/fonts/forkawesome-webfont.svg
@@ -0,0 +1,2644 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2018-2-26: Created with FontForge (http://fontforge.org)
+-->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata>
+Created by FontForge 20170925 at Mon Feb 26 00:19:18 2018
+ By Julien Deswaef
+The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io
+</metadata>
+<defs>
+<font id="forkawesome" horiz-adv-x="1536" >
+ <font-face
+ font-family="forkawesome"
+ font-weight="400"
+ font-stretch="normal"
+ units-per-em="1792"
+ panose-1="2 0 5 3 0 0 0 0 0 0"
+ ascent="1536"
+ descent="-256"
+ bbox="-0.653061 -264 2304.01 1536.25"
+ underline-thickness="89.6"
+ underline-position="-179.2"
+ unicode-range="U+0020-F2FC"
+ />
+ <missing-glyph />
+ <glyph glyph-name="space" unicode=" " horiz-adv-x="200"
+ />
+ <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1830"
+d="M572 137l-50 -50c-13 -13 -33 -13 -46 0l-466 466c-13 13 -13 33 0 46l466 466c13 13 33 13 46 0l50 -50c13 -13 13 -33 0 -46l-393 -393l393 -393c13 -13 13 -33 0 -46zM1163 1204l-373 -1291c-5 -17 -23 -27 -39 -22l-62 17c-17 5 -27 23 -22 40l373 1291
+c5 17 23 27 39 22l62 -17c17 -5 27 -23 22 -40zM1820 553l-466 -466c-13 -13 -33 -13 -46 0l-50 50c-13 13 -13 33 0 46l393 393l-393 393c-13 13 -13 33 0 46l50 50c13 13 33 13 46 0l466 -466c13 -13 13 -33 0 -46z" />
+ <glyph glyph-name="chevron-circle-right" unicode="&#xf138;"
+d="M717 141l454 454c25 25 25 65 0 90l-454 454c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l307 -307l-307 -307c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
+s768 -344 768 -768z" />
+ <glyph glyph-name="crosshairs" unicode="&#xf05b;"
+d="M1197 512h-109c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h109c-43 144 -157 258 -301 301v-109c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v109c-144 -43 -258 -157 -301 -301h109c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-109c43 -144 157 -258 301 -301
+v109c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-109c144 43 258 157 301 301zM1536 704v-128c0 -35 -29 -64 -64 -64h-143c-49 -215 -218 -384 -433 -433v-143c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v143c-215 49 -384 218 -433 433h-143c-35 0 -64 29 -64 64v128
+c0 35 29 64 64 64h143c49 215 218 384 433 433v143c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-143c215 -49 384 -218 433 -433h143c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="gg" unicode="&#xf260;" horiz-adv-x="1920"
+d="M672 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1248 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
+ <glyph glyph-name="wpforms" unicode="&#xf298;"
+d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240c0 11 -9 20 -20 20h-32l-378 -256l-210 171l-210 -171l-378 256h-32c-11 0 -20 -9 -20 -20v-1240
+c0 -11 9 -20 20 -20h1240c11 0 20 9 20 20zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240c0 -82 -66 -148 -148 -148h-1240c-82 0 -148 66 -148 148v1240c0 82 66 148 148 148h1240c82 0 148 -66 148 -148z" />
+ <glyph glyph-name="angle-double-left" unicode="&#xf100;" horiz-adv-x="966"
+d="M582 160c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23s-4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23zM966 160
+c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23s-4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792"
+d="M256 224v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM256 608v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM256 992v-192c0 -17 -15 -32 -32 -32h-192
+c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM1792 224v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM256 1376v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192
+c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM1792 608v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344
+c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32z" />
+ <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1192"
+d="M956 1102l37 194c7 32 -17 57 -44 57h-712c-32 0 -54 -29 -54 -54v-1101c0 -3 3 -4 6 -1c262 315 291 352 291 352c30 35 42 41 86 41h239c33 0 52 28 55 44s31 162 37 191s-21 59 -48 59h-294c-39 0 -67 28 -67 67v42c0 39 28 66 67 66h346c24 0 51 22 55 43zM1183 1324
+c-37 -180 -148 -749 -158 -790c-12 -47 -30 -129 -144 -129h-271c-11 0 -12 1 -22 -10c0 0 -7 -8 -426 -494c-33 -38 -87 -31 -107 -23s-55 32 -55 98v1410c0 58 36 150 158 150h888c130 0 165 -74 137 -212zM1183 1324l-158 -790c10 41 121 610 158 790z" />
+ <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792"
+d="M512 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 288v-192c0 -53 -43 -96 -96 -96h-320
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96
+h320c53 0 96 -43 96 -96zM1792 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 800v-192
+c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="angle-left" unicode="&#xf104;" horiz-adv-x="582"
+d="M582 992c0 -8 -4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23s-4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -14 10 -23z" />
+ <glyph glyph-name="recycle" unicode="&#xf1b8;" horiz-adv-x="1760"
+d="M820 367l-15 -368l-2 -22l-420 29c-52 4 -95 53 -114 97c-40 93 12 203 42 292c0 0 77 -12 509 -28zM433 953l180 -379l-147 92c-225 -257 -246 -448 -246 -448l-190 357c-39 58 -4 121 -4 121s35 63 114 188l-140 86zM1664 436l-188 -359c-26 -65 -98 -71 -98 -71
+s-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173c339 -41 509 50 509 50zM879 1360c0 0 -47 -62 -265 -435l-317 187l-19 12l225 356c28 44 91 60 140 55c100 -9 172 -106 236 -175zM1534 1053l212 -363c27 -45 11 -108 -15 -150c-54 -84 -174 -104 -264 -129
+c0 0 -34 71 -265 436l313 195zM1391 1279l142 83l-220 -373l-419 20l151 86c-120 319 -279 429 -279 429l405 -1c70 6 108 -54 108 -54s39 -61 112 -190z" />
+ <glyph glyph-name="file-code-o" unicode="&#xf1c9;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM480 768c11 14 31 17 45 6l51 -38c14 -11 17 -31 6 -45l-182 -243l182 -243c11 -14 8 -34 -6 -45l-51 -38c-14 -11 -34 -8 -45 6l-226 301c-8 11 -8 27 0 38zM1282 467c8 -11 8 -27 0 -38l-226 -301c-11 -14 -31 -17 -45 -6l-51 38c-14 11 -17 31 -6 45
+l182 243l-182 243c-11 14 -8 34 6 45l51 38c14 11 34 8 45 -6zM662 6c-18 3 -29 20 -26 37l138 831c3 18 20 29 37 26l63 -10c18 -3 29 -20 26 -37l-138 -831c-3 -18 -20 -29 -37 -26z" />
+ <glyph glyph-name="thumb-tack" unicode="&#xf08d;" horiz-adv-x="1152"
+d="M480 672v448c0 18 -14 32 -32 32s-32 -14 -32 -32v-448c0 -18 14 -32 32 -32s32 14 32 32zM1152 320c0 -35 -29 -64 -64 -64h-429l-51 -483c-2 -16 -15 -29 -31 -29h-1c-16 0 -29 11 -32 27l-76 485h-404c-35 0 -64 29 -64 64c0 164 124 320 256 320v512
+c-70 0 -128 58 -128 128s58 128 128 128h640c70 0 128 -58 128 -128s-58 -128 -128 -128v-512c132 0 256 -156 256 -320z" />
+ <glyph glyph-name="fax" unicode="&#xf1ac;" horiz-adv-x="1792"
+d="M288 1152c88 0 160 -72 160 -160v-1088c0 -88 -72 -160 -160 -160h-128c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h128zM1664 989c76 -44 128 -127 128 -221v-768c0 -141 -115 -256 -256 -256h-864c-88 0 -160 72 -160 160v1536c0 53 43 96 96 96h672
+c53 0 127 -31 164 -68l152 -152c37 -37 68 -111 68 -164v-163zM928 0v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM928 256v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128
+c18 0 32 14 32 32zM928 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 0v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 256v128
+c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 0v128c0 18 -14 32 -32 32h-128
+c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 256v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128
+c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1536 896v256h-160c-53 0 -96 43 -96 96v160h-640v-512h896z" />
+ <glyph glyph-name="xing-square" unicode="&#xf169;"
+d="M685 771c0 0 0 1 -126 222c-10 16 -24 34 -52 34h-184c-12 0 -21 -4 -26 -11c-5 -8 -4 -19 1 -29l125 -216v-1l-196 -346c-6 -10 -5 -20 0 -28s13 -13 24 -13h185c27 0 41 19 50 36c192 339 199 352 199 352zM1309 1268c-5 8 -13 12 -24 12h-187c-27 0 -39 -17 -49 -35
+c-398 -706 -411 -729 -411 -729s0 -1 262 -481c9 -16 23 -35 52 -35h184c11 0 20 4 25 12s5 18 -1 28l-260 476v1l409 723c5 10 5 20 0 28zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
+c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="google-plus-official" unicode="&#xf2b3;"
+d="M917 631c0 22 -2 43 -6 64h-362v-132h217c-16 -106 -116 -165 -217 -165c-133 0 -239 110 -239 242s106 242 239 242c56 0 112 -19 153 -59l104 101c-71 66 -160 100 -257 100c-213 0 -384 -172 -384 -384s171 -384 384 -384c221 0 368 156 368 375zM1262 585h109v110
+h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="quora" unicode="&#xf2c4;" horiz-adv-x="1734"
+d="M1226 749c0 417 -130 631 -435 631c-300 0 -430 -214 -430 -631c0 -415 130 -627 430 -627c48 0 91 5 131 17c-62 122 -135 245 -277 245c-27 0 -54 -4 -79 -16l-49 97c59 51 154 91 276 91c191 0 288 -92 366 -209c45 100 67 235 67 402zM1616 117h117
+c7 -72 -29 -373 -356 -373c-198 0 -302 115 -381 249c-65 -18 -135 -27 -205 -27c-400 0 -791 319 -791 783c0 468 392 787 791 787c407 0 794 -317 794 -787c0 -262 -122 -475 -299 -612c57 -86 116 -143 198 -143c90 0 126 69 132 123z" />
+ <glyph glyph-name="archive-org" unicode="&#xf2fc;" horiz-adv-x="1506"
+d="M1459 1344l-27 -53h-1385l-24 53l717 189zM1430 1237v-140h-1380v140h1380zM1257 442c-3 65 -4 124 -3 178c0 25 1 61 3 108s3 77 3 91c1 22 3 57 5 104s4 82 5 107c0 1 1 3 1 7v10c47 10 93 10 138 0c21 -325 21 -630 0 -916c-41 -11 -82 -12 -123 -1c-6 1 -10 2 -11 2
+s-3 2 -3 3s-1 4 -1 9c-3 34 -6 90 -10 165zM80 369v0c-1 9 -1 22 -1 38c0 5 -1 11 -1 21s-1 17 -1 22c0 26 0 45 -1 57v219c2 38 3 68 3 88c2 32 3 56 3 71c1 7 1 15 1 26c0 3 1 9 1 17s1 14 1 18c0 7 0 10 1 12c0 12 0 22 1 28c0 11 1 20 2 27c0 11 0 19 1 24c0 4 2 6 7 7
+c29 10 61 13 96 8c11 -2 22 -5 32 -9c2 0 3 -2 3 -6c2 -42 4 -74 6 -97c1 -20 2 -50 3 -90s2 -69 2 -88s1 -47 1 -85s1 -66 2 -84c-3 -131 -4 -199 -4 -206c-1 -47 -3 -112 -7 -194c-2 -27 -3 -47 -3 -60c0 -3 -2 -5 -6 -6c-28 -9 -59 -11 -94 -8c-4 1 -10 3 -18 5
+s-12 4 -14 5c-4 0 -6 1 -6 4c0 12 0 21 -1 26c0 4 -1 8 -1 14s-1 10 -1 13c0 9 0 15 -1 20c0 6 -1 13 -1 24v25c-1 6 -2 14 -2 25s0 19 -1 25c0 17 -1 30 -2 40v24zM464 255v0v25s-1 19 -1 25c-1 10 -1 23 -1 40c-1 5 -2 13 -2 24c0 16 0 29 -1 38v43c-1 13 -2 32 -2 57v29
+s-1 21 -1 27v102c0 27 0 47 1 61c0 18 1 48 3 88c0 17 1 40 3 71c0 11 0 20 1 26c0 15 1 27 2 35v12c0 4 1 9 1 15v13s1 7 2 13s1 10 1 14l2 24c0 4 1 6 5 7c30 10 62 13 96 8c11 -2 22 -5 32 -9c4 0 6 -2 6 -6l4 -97l4 -178c2 -78 3 -135 3 -169c0 -24 -1 -59 -1 -104
+s-1 -79 -2 -102c-1 -47 -3 -112 -7 -194c0 -13 -1 -33 -3 -60c0 -3 -2 -5 -7 -6c-26 -10 -57 -12 -92 -8c-4 0 -7 1 -11 2s-8 3 -13 4s-8 3 -10 4c-2 0 -3 1 -3 4c-1 7 -1 15 -1 26c-1 7 -2 16 -2 27c-2 4 -3 10 -3 20zM1046 961v0c1 -26 3 -63 4 -114s2 -89 2 -114
+c2 -67 3 -113 3 -140c0 -22 -1 -53 -1 -95s-1 -73 -2 -94c-1 -45 -3 -111 -7 -199c-1 -8 -2 -20 -2 -36s0 -28 -1 -36c0 -3 -2 -5 -7 -6c-27 -9 -58 -11 -93 -8c-5 1 -12 2 -20 5s-12 5 -13 5c-3 0 -5 1 -5 5c0 12 0 31 -2 56s-4 45 -5 58c0 15 -1 40 -2 73s-2 59 -3 77
+c0 13 -1 33 -2 60s-1 47 -1 60v68c-1 46 -1 69 0 70c1 55 3 136 7 242c2 48 4 94 8 139c0 4 2 6 6 7c29 10 61 13 95 8c12 -2 23 -5 33 -9c3 0 4 -2 4 -6zM60 -18v98h1390v-98h-1390zM0 -128v73h1506v-73h-1506z" />
+ <glyph glyph-name="volume-up" unicode="&#xf028;" horiz-adv-x="1664"
+d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64zM1152 640c0 -100 -61 -197 -155 -235c-8 -4 -17 -5 -25 -5c-35 0 -64 28 -64 64
+c0 76 116 55 116 176s-116 100 -116 176c0 36 29 64 64 64c8 0 17 -1 25 -5c94 -37 155 -135 155 -235zM1408 640c0 -203 -122 -392 -310 -471c-8 -3 -17 -5 -25 -5c-36 0 -65 29 -65 64c0 28 16 47 39 59c27 14 52 26 76 44c99 72 157 187 157 309s-58 237 -157 309
+c-24 18 -49 30 -76 44c-23 12 -39 31 -39 59c0 35 29 64 64 64c9 0 18 -2 26 -5c188 -79 310 -268 310 -471zM1664 640c0 -307 -183 -585 -465 -706c-8 -3 -17 -5 -26 -5c-35 0 -64 29 -64 64c0 29 15 45 39 59c14 8 30 13 45 21c28 15 56 32 82 51c164 121 261 312 261 516
+s-97 395 -261 516c-26 19 -54 36 -82 51c-15 8 -31 13 -45 21c-24 14 -39 30 -39 59c0 35 29 64 64 64c9 0 18 -2 26 -5c282 -121 465 -399 465 -706z" />
+ <glyph glyph-name="spoon" unicode="&#xf1b1;" horiz-adv-x="640"
+d="M640 1008c0 -200 -87 -331 -209 -379l45 -821c2 -35 -25 -64 -60 -64h-192c-35 0 -62 29 -60 64l45 821c-122 48 -209 179 -209 379c0 256 143 528 320 528s320 -272 320 -528z" />
+ <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="864"
+d="M864 1524v-264h-157c-123 0 -146 -59 -146 -144v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218c0 253 155 391 381 391c108 0 201 -8 228 -12z" />
+ <glyph glyph-name="universal-access" unicode="&#xf29a;" horiz-adv-x="1792"
+d="M1374 879c-8 34 -42 55 -77 47c-143 -34 -273 -62 -401 -62s-258 28 -401 62c-35 8 -69 -13 -77 -47c-8 -35 13 -69 47 -77c106 -25 205 -47 303 -58c-4 -338 -41 -432 -83 -540l-9 -21c-13 -33 4 -70 37 -83c7 -3 15 -4 23 -4c26 0 50 15 60 41l8 20
+c28 72 54 139 71 259h42c17 -120 43 -187 71 -259l8 -20c10 -26 34 -41 60 -41c8 0 16 1 23 4c33 13 50 50 37 83l-9 21c-42 108 -79 202 -83 540c98 11 197 33 303 58c34 8 55 42 47 77zM1024 1024c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128
+s128 57 128 128zM1600 640c0 -389 -315 -704 -704 -704s-704 315 -704 704s315 704 704 704s704 -315 704 -704zM896 1408c-423 0 -768 -345 -768 -768s345 -768 768 -768s768 345 768 768s-345 768 -768 768zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896
+s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="cloud-download" unicode="&#xf0ed;" horiz-adv-x="1920"
+d="M1280 608c0 18 -14 32 -32 32h-224v352c0 17 -15 32 -32 32h-192c-17 0 -32 -15 -32 -32v-352h-224c-18 0 -32 -15 -32 -32c0 -8 3 -17 9 -23l352 -352c6 -6 14 -9 23 -9c8 0 17 3 23 9l351 351c6 7 10 15 10 24zM1920 384c0 -212 -172 -384 -384 -384h-1088
+c-247 0 -448 201 -448 448c0 174 101 332 258 405c-1 15 -2 29 -2 43c0 283 229 512 512 512c208 0 395 -126 474 -318c46 40 105 62 166 62c141 0 256 -115 256 -256c0 -49 -14 -97 -41 -138c174 -41 297 -196 297 -374z" />
+ <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664"
+d="M458 653c-42 92 -74 214 -74 371h-256v-96c0 -98 133 -234 330 -275zM1536 928v96h-256c0 -157 -32 -279 -74 -371c197 41 330 177 330 275zM1664 1056v-128c0 -190 -230 -400 -542 -415c-40 -51 -77 -81 -95 -95c-53 -48 -67 -98 -67 -162s32 -128 128 -128
+s192 -64 192 -160v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64c0 96 96 160 192 160s128 64 128 128s-14 114 -67 162c-18 14 -55 44 -95 95c-312 15 -542 225 -542 415v128c0 53 43 96 96 96h288v96c0 88 72 160 160 160h576c88 0 160 -72 160 -160v-96h288
+c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="caret-up" unicode="&#xf0d8;" horiz-adv-x="1024"
+d="M1024 320c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1637"
+d="M1163 955l293 293l-107 107l-293 -293zM1610 1248c0 -17 -6 -33 -18 -45l-1286 -1286c-12 -12 -28 -18 -45 -18s-33 6 -45 18l-198 198c-12 12 -18 28 -18 45s6 33 18 45l1286 1286c12 12 28 18 45 18s33 -6 45 -18l198 -198c12 -12 18 -28 18 -45zM259 1438l98 -30
+l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM609 1276l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1539 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM899 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+ <glyph glyph-name="hourglass-o" unicode="&#xf250;"
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM874 700c202 76 406 343 406 708h-1024c0 -365 204 -632 406 -708c25 -9 42 -33 42 -60s-17 -51 -42 -60c-202 -76 -406 -343 -406 -708h1024c0 365 -204 632 -406 708c-25 9 -42 33 -42 60
+s17 51 42 60z" />
+ <glyph glyph-name="balance-scale" unicode="&#xf24e;" horiz-adv-x="2176"
+d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280c-19 -54 -63 -98 -117 -117v-1291h608c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1344c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h608v1291c-54 19 -98 63 -117 117h-491c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h491c27 75 97 128 181 128s154 -53 181 -128h491c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-491zM1088 1264c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM2176 384c0 -206 -285 -288 -448 -288s-448 82 -448 288
+c0 39 349 657 392 735c11 20 33 33 56 33s45 -13 56 -33c43 -78 392 -696 392 -735zM896 384c0 -206 -285 -288 -448 -288s-448 82 -448 288c0 39 349 657 392 735c11 20 33 33 56 33s45 -13 56 -33c43 -78 392 -696 392 -735z" />
+ <glyph glyph-name="upload" unicode="&#xf093;" horiz-adv-x="1664"
+d="M1280 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 288v-320c0 -53 -43 -96 -96 -96h-1472c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h427c27 -74 98 -128 181 -128
+h256c83 0 154 54 181 128h427c53 0 96 -43 96 -96zM1339 936c-10 -24 -33 -40 -59 -40h-256v-448c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v448h-256c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l448 448c12 13 29 19 45 19s33 -6 45 -19l448 -448
+c19 -18 24 -46 14 -69z" />
+ <glyph glyph-name="magnet" unicode="&#xf076;"
+d="M1536 704v-128c0 -408 -323 -704 -768 -704s-768 296 -768 704v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64v-128c0 -183 213 -192 256 -192s256 9 256 192v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64zM512 1344v-384c0 -35 -29 -64 -64 -64h-384
+c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h384c35 0 64 -29 64 -64zM1536 1344v-384c0 -35 -29 -64 -64 -64h-384c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h384c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="adjust" unicode="&#xf042;"
+d="M768 96v1088c-300 0 -544 -244 -544 -544s244 -544 544 -544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="subway" unicode="&#xf239;"
+d="M1088 1536c247 0 448 -143 448 -320v-896c0 -173 -191 -313 -431 -319l213 -202c21 -20 7 -55 -22 -55h-1056c-29 0 -43 35 -22 55l213 202c-240 6 -431 146 -431 319v896c0 177 201 320 448 320h640zM288 224c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160
+s72 -160 160 -160zM704 768v512h-544v-512h544zM1248 224c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM1408 768v512h-576v-512h576z" />
+ <glyph glyph-name="chevron-down" unicode="&#xf078;" horiz-adv-x="1612"
+d="M1593 728l-742 -741c-25 -25 -65 -25 -90 0l-742 741c-25 25 -25 66 0 91l166 165c25 25 65 25 90 0l531 -531l531 531c25 25 65 25 90 0l166 -165c25 -25 25 -66 0 -91z" />
+ <glyph glyph-name="location-arrow" unicode="&#xf124;" horiz-adv-x="1408"
+d="M1401 1187l-640 -1280c-11 -22 -33 -35 -57 -35c-5 0 -10 1 -15 2c-29 7 -49 32 -49 62v576h-576c-30 0 -55 20 -62 49s7 59 33 72l1280 640c9 5 19 7 29 7c17 0 33 -6 45 -19c20 -19 25 -49 12 -74z" />
+ <glyph glyph-name="check-circle" unicode="&#xf058;"
+d="M1284 802c0 17 -6 34 -18 46l-91 90c-12 12 -28 19 -45 19s-33 -7 -45 -19l-408 -407l-226 226c-12 12 -28 19 -45 19s-33 -7 -45 -19l-91 -90c-12 -12 -18 -29 -18 -46s6 -33 18 -45l362 -362c12 -12 29 -19 45 -19c17 0 34 7 46 19l543 543c12 12 18 28 18 45z
+M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="arrow-down" unicode="&#xf063;" horiz-adv-x="1558"
+d="M1558 704c0 -34 -14 -67 -37 -90l-651 -652c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-651 652c-24 23 -38 56 -38 90s14 67 38 91l74 75c24 23 57 37 91 37s67 -14 90 -37l294 -294v704c0 70 58 128 128 128h128c70 0 128 -58 128 -128v-704l294 294c23 23 56 37 90 37
+s67 -14 91 -37l75 -75c23 -24 37 -57 37 -91z" />
+ <glyph glyph-name="bicycle" unicode="&#xf206;" horiz-adv-x="2304"
+d="M762 384h-314c-53 0 -83 60 -51 102l188 251c-42 20 -88 31 -137 31c-176 0 -320 -144 -320 -320s144 -320 320 -320c155 0 284 110 314 256zM576 512h186c-12 56 -38 107 -75 148zM1056 512l288 384h-480l-99 -132c67 -66 112 -154 126 -252h165zM2176 448
+c0 176 -144 320 -320 320c-43 0 -83 -9 -121 -24l174 -260c20 -30 12 -70 -17 -89c-11 -8 -24 -11 -36 -11c-21 0 -41 10 -53 29l-174 260c-57 -58 -93 -137 -93 -225c0 -176 144 -320 320 -320s320 144 320 320zM2304 448c0 -247 -201 -448 -448 -448s-448 201 -448 448
+c0 132 58 251 149 333l-65 98l-353 -469c-12 -17 -31 -26 -51 -26h-197c-31 -217 -217 -384 -443 -384c-247 0 -448 201 -448 448s201 448 448 448c78 0 151 -20 215 -55l137 183h-224c-35 0 -64 29 -64 64s29 64 64 64h384v-128h435l-85 128h-222c-35 0 -64 29 -64 64
+s29 64 64 64h256c21 0 41 -11 53 -28l267 -400c58 28 123 44 192 44c247 0 448 -201 448 -448z" />
+ <glyph glyph-name="instagram" unicode="&#xf16d;"
+d="M1024 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1162 640c0 -218 -176 -394 -394 -394s-394 176 -394 394s176 394 394 394s394 -176 394 -394zM1270 1050c0 -51 -41 -92 -92 -92s-92 41 -92 92s41 92 92 92s92 -41 92 -92z
+M768 1270c-112 0 -352 9 -453 -31c-35 -14 -61 -31 -88 -58s-44 -53 -58 -88c-40 -101 -31 -341 -31 -453s-9 -352 31 -453c14 -35 31 -61 58 -88s53 -44 88 -58c101 -40 341 -31 453 -31s352 -9 453 31c35 14 61 31 88 58s44 53 58 88c40 101 31 341 31 453s9 352 -31 453
+c-14 35 -31 61 -58 88s-53 44 -88 58c-101 40 -341 31 -453 31zM1536 640c0 -106 1 -211 -5 -317c-6 -123 -34 -232 -124 -322s-199 -118 -322 -124c-106 -6 -211 -5 -317 -5s-211 -1 -317 5c-123 6 -232 34 -322 124s-118 199 -124 322c-6 106 -5 211 -5 317s-1 211 5 317
+c6 123 34 232 124 322s199 118 322 124c106 6 211 5 317 5s211 1 317 -5c123 -6 232 -34 322 -124s118 -199 124 -322c6 -106 5 -211 5 -317z" />
+ <glyph glyph-name="caret-square-o-up" unicode="&#xf151;"
+d="M1145 419c-11 -22 -33 -35 -57 -35h-640c-24 0 -46 13 -57 35c-11 21 -9 47 5 66l320 448c12 17 31 27 52 27s40 -10 52 -27l320 -448c14 -19 16 -45 5 -66zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960c17 0 32 15 32 32
+zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664"
+d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v224h-864c-18 0 -32 14 -32 32v864h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224v224c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-224h851l246 247c13 12 33 12 46 0c12 -13 12 -33 0 -46l-247 -246v-851h224c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="external-link" unicode="&#xf08e;" horiz-adv-x="1792"
+d="M1408 608v-320c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h704c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v320c0 18 14 32 32 32
+h64c18 0 32 -14 32 -32zM1792 1472v-512c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-176 176l-652 -652c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l652 652l-176 176c-12 12 -19 28 -19 45c0 35 29 64 64 64h512c35 0 64 -29 64 -64z
+" />
+ <glyph glyph-name="arrow-circle-down" unicode="&#xf0ab;"
+d="M1284 639c0 17 -6 33 -18 45l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-189 -189v502c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-502l-189 189c-12 12 -28 19 -45 19s-33 -7 -45 -19l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l362 -362l91 -91
+c12 -12 28 -18 45 -18s33 6 45 18l91 91l362 362c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="font-awesome" unicode="&#xf2b4;" horiz-adv-x="1499"
+d="M1499 1024v-839c0 -31 -20 -54 -49 -62c-107 -32 -227 -52 -338 -52c-150 0 -277 59 -443 59c-123 0 -250 -20 -370 -48v-338h-160v1368c-84 33 -139 115 -139 205c0 121 98 219 219 219s219 -98 219 -219c0 -90 -55 -172 -139 -205v-68c112 26 228 44 343 44
+c66 0 132 -5 198 -15c86 -13 173 -43 261 -43c55 0 111 7 165 18c41 8 135 40 169 40c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="paper-plane" unicode="&#xf1d8;" horiz-adv-x="1792"
+d="M1764 1525c21 -15 31 -39 27 -64l-256 -1536c-3 -19 -15 -35 -32 -45c-9 -5 -20 -8 -31 -8c-8 0 -16 2 -24 5l-453 185l-242 -295c-12 -15 -30 -23 -49 -23c-7 0 -15 1 -22 4c-25 9 -42 33 -42 60v349l864 1059l-1069 -925l-395 162c-23 9 -38 30 -40 55
+c-1 24 11 47 32 59l1664 960c10 6 21 9 32 9c13 0 26 -4 36 -11z" />
+ <glyph glyph-name="meanpath" unicode="&#xf20c;"
+d="M1311 694v-114c0 -32 -19 -52 -51 -52h-202c-32 0 -52 20 -52 52v114c0 32 20 52 52 52h202c32 0 51 -20 51 -52zM821 464v250c0 71 -47 118 -118 118h-133c-45 0 -78 -19 -96 -52c-18 33 -51 52 -96 52h-130c-70 0 -118 -47 -118 -118v-250c0 -15 7 -22 21 -22h55
+c15 0 22 7 22 22v230c0 32 19 52 52 52h94c32 0 52 -20 52 -52v-230c0 -15 6 -22 21 -22h54c15 0 22 7 22 22v230c0 32 20 52 52 52h97c32 0 51 -20 51 -52v-230c0 -15 7 -22 22 -22h55c14 0 21 7 21 22zM1410 560v154c0 71 -48 118 -119 118h-264c-71 0 -119 -47 -119 -118
+v-410c0 -15 8 -21 22 -21h55c15 0 21 6 21 21v180c19 -26 49 -42 94 -42h191c71 0 119 48 119 118zM1536 1176v-1072c0 -128 -104 -232 -232 -232h-1072c-128 0 -232 104 -232 232v1072c0 128 104 232 232 232h1072c128 0 232 -104 232 -232z" />
+ <glyph glyph-name="long-arrow-left" unicode="&#xf177;" horiz-adv-x="1728"
+d="M1728 736v-192c0 -18 -14 -32 -32 -32h-1248v-224c0 -13 -7 -24 -19 -29s-25 -3 -35 5l-384 350c-6 6 -10 14 -10 23s4 18 10 24l384 354c10 9 23 11 35 6c11 -5 19 -16 19 -29v-224h1248c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="download" unicode="&#xf019;" horiz-adv-x="1664"
+d="M1280 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 416v-320c0 -53 -43 -96 -96 -96h-1472c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h465l135 -136
+c37 -36 85 -56 136 -56s99 20 136 56l136 136h464c53 0 96 -43 96 -96zM1339 985c10 -24 5 -52 -14 -70l-448 -448c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-448 448c-19 18 -24 46 -14 70c10 23 33 39 59 39h256v448c0 35 29 64 64 64h256c35 0 64 -29 64 -64v-448h256
+c26 0 49 -16 59 -39z" />
+ <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408"
+d="M555 15c44 -19 92 -32 140 -32c228 0 376 91 376 335c0 62 -8 127 -41 180c-93 150 -227 158 -388 158c-30 0 -73 0 -101 -10c0 -106 -1 -212 -1 -317c0 -69 -9 -256 15 -314zM541 761c36 -6 73 -7 109 -7c206 0 353 58 353 289c0 195 -173 262 -340 262
+c-44 0 -87 -6 -130 -13c0 -101 8 -202 8 -303c0 -53 -1 -106 -1 -159c0 -23 0 -46 1 -69zM0 -128l2 94c64 16 129 17 191 43c35 59 30 163 30 230c0 22 2 978 -22 1025c-15 29 -162 36 -195 40l-4 83c238 4 476 21 713 21c45 0 91 -1 136 -1c226 0 475 -108 475 -368
+c0 -179 -136 -246 -277 -310c190 -43 359 -172 359 -382c0 -344 -313 -458 -606 -458c-88 0 -176 6 -264 6c-179 0 -360 -16 -538 -23z" />
+ <glyph glyph-name="caret-down" unicode="&#xf0d7;" horiz-adv-x="1024"
+d="M1024 832c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="chevron-left" unicode="&#xf053;" horiz-adv-x="1036"
+d="M1017 1235l-531 -531l531 -531c25 -25 25 -65 0 -90l-166 -166c-25 -25 -65 -25 -90 0l-742 742c-25 25 -25 65 0 90l742 742c25 25 65 25 90 0l166 -166c25 -25 25 -65 0 -90z" />
+ <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1152"
+d="M1152 960c0 -296 -224 -540 -512 -572v-260h224c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v260c-303 33 -535 302 -510 619
+c22 272 238 495 508 525c348 39 642 -232 642 -572zM128 960c0 -247 201 -448 448 -448s448 201 448 448s-201 448 -448 448s-448 -201 -448 -448z" />
+ <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664"
+d="M725 977l-170 -450c99 -1 198 -4 297 -4c19 0 38 1 57 2c-52 152 -113 307 -184 452zM0 -128l2 79c94 29 196 9 238 117l237 616l280 724h128c4 -7 8 -14 11 -21l205 -480c75 -177 144 -356 220 -532c45 -104 80 -211 130 -313c7 -16 21 -46 35 -57
+c33 -26 125 -32 172 -50c3 -19 6 -38 6 -57c0 -9 -1 -17 -1 -26c-127 0 -254 16 -381 16c-131 0 -262 -11 -393 -15c0 26 1 52 4 78l131 28c27 6 80 13 80 50c0 36 -129 333 -145 374l-450 2c-26 -58 -127 -320 -127 -358c0 -77 147 -80 204 -88c1 -19 1 -38 1 -58
+c0 -9 -1 -18 -2 -27c-116 0 -233 20 -349 20c-14 0 -34 -6 -48 -8c-63 -11 -125 -14 -188 -14z" />
+ <glyph glyph-name="pinterest" unicode="&#xf0d2;"
+d="M1536 640c0 -424 -344 -768 -768 -768c-76 0 -148 11 -218 32c29 46 62 105 78 164c0 0 9 34 54 211c26 -51 104 -96 187 -96c247 0 415 225 415 527c0 227 -193 440 -487 440c-364 0 -548 -262 -548 -480c0 -132 50 -250 157 -294c17 -7 33 0 38 20c4 13 12 47 16 61
+c5 20 3 26 -11 43c-31 37 -51 84 -51 151c0 194 145 368 378 368c206 0 320 -126 320 -295c0 -221 -98 -408 -244 -408c-80 0 -140 66 -121 148c23 97 68 202 68 272c0 63 -34 116 -104 116c-82 0 -148 -85 -148 -199c0 0 0 -73 25 -122c-84 -356 -99 -418 -99 -418
+c-14 -58 -15 -123 -13 -177c-271 119 -460 389 -460 704c0 424 344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="cart-plus" unicode="&#xf217;" horiz-adv-x="1664"
+d="M1216 832c0 35 -29 64 -64 64h-128v128c0 35 -29 64 -64 64s-64 -29 -64 -64v-128h-128c-35 0 -64 -29 -64 -64s29 -64 64 -64h128v-128c0 -35 29 -64 64 -64s64 29 64 64v128h128c35 0 64 29 64 64zM640 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1536 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1664 1088v-512c0 -32 -24 -60 -57 -64l-1044 -122c4 -22 13 -47 13 -70s-14 -44 -24 -64h920c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64
+c0 31 47 108 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c68 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="folder-open-o" unicode="&#xf115;" horiz-adv-x="1909"
+d="M1781 605c0 28 -31 35 -53 35h-1088c-53 0 -123 -33 -157 -74l-294 -363c-9 -12 -18 -25 -18 -40c0 -28 31 -35 53 -35h1088c53 0 123 33 157 75l294 363c9 11 18 24 18 39zM640 768h768v160c0 53 -43 96 -96 96h-576c-53 0 -96 43 -96 96v64c0 53 -43 96 -96 96h-320
+c-53 0 -96 -43 -96 -96v-853l256 315c58 71 165 122 256 122zM1909 605c0 -44 -19 -86 -46 -120l-295 -363c-57 -70 -166 -122 -256 -122h-1088c-123 0 -224 101 -224 224v960c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h544c123 0 224 -101 224 -224v-160h192
+c68 0 136 -31 166 -95c10 -21 15 -44 15 -68z" />
+ <glyph glyph-name="tachometer" unicode="&#xf0e4;" horiz-adv-x="1792"
+d="M384 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM576 832c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1004 351l101 382c8 34 -12 69 -46 78s-69 -12 -78 -46l-101 -382
+c-79 -6 -148 -61 -170 -142c-27 -103 35 -208 137 -235c103 -27 208 35 235 137c21 81 -13 163 -78 208zM1664 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1024 1024c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128
+s128 57 128 128zM1472 832c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1792 384c0 -172 -49 -338 -141 -483c-12 -18 -32 -29 -54 -29h-1402c-22 0 -42 11 -54 29c-92 144 -141 311 -141 483c0 494 402 896 896 896s896 -402 896 -896z
+" />
+ <glyph glyph-name="creative-commons" unicode="&#xf25e;" horiz-adv-x="1792"
+d="M605 303c-200 0 -344 142 -344 337c0 192 147 337 344 337c159 0 240 -92 243 -96c9 -11 10 -27 2 -39l-53 -78c-5 -8 -14 -13 -24 -14s-19 3 -26 10c0 0 -55 56 -138 56c-99 0 -170 -73 -170 -175c0 -103 73 -177 174 -177c92 0 155 67 156 67c7 8 17 12 27 11
+c10 -2 20 -8 24 -17l45 -82c7 -11 5 -26 -3 -36c-4 -4 -93 -104 -257 -104zM1235 303c-200 0 -344 142 -344 337c0 192 148 337 344 337c159 0 240 -92 243 -96c9 -11 10 -27 2 -39l-53 -78c-5 -8 -14 -13 -24 -14s-19 3 -26 10c0 0 -54 56 -138 56
+c-99 0 -170 -73 -170 -175c0 -103 73 -177 174 -177c92 0 155 67 156 67c7 8 17 12 27 11c11 -2 20 -8 25 -17l45 -82c6 -11 4 -26 -4 -36c-4 -4 -92 -104 -257 -104zM896 1376c-406 0 -736 -330 -736 -736s330 -736 736 -736s736 330 736 736s-330 736 -736 736zM896 1536
+c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896z" />
+ <glyph glyph-name="clipboard" unicode="&#xf0ea;" horiz-adv-x="1792"
+d="M768 -128h896v640h-416c-53 0 -96 43 -96 96v416h-384v-1152zM1024 1312v64c0 17 -15 32 -32 32h-704c-17 0 -32 -15 -32 -32v-64c0 -17 15 -32 32 -32h704c17 0 32 15 32 32zM1280 640h299l-299 299v-299zM1792 512v-672c0 -53 -43 -96 -96 -96h-960
+c-53 0 -96 43 -96 96v160h-544c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1088c53 0 96 -43 96 -96v-328c13 -8 25 -17 36 -28l408 -408c38 -38 68 -111 68 -164z" />
+ <glyph glyph-name="eercast" unicode="&#xf2da;" horiz-adv-x="1719"
+d="M1304 752c35 54 -6 191 -128 272c-121 81 -276 75 -312 21c-35 -53 40 -19 177 -70c226 -84 228 -277 263 -223zM1667 178c-283 -696 -1558 -520 -1531 383c3 115 35 192 68 302c-211 -864 966 -1367 1449 -685c18 25 23 23 14 0zM1428 627c0 -283 -228 -513 -509 -513
+s-509 230 -509 513s228 513 509 513s509 -230 509 -513zM1715 915c-356 808 -1826 510 -1663 -589c-338 1101 1055 1606 1570 822c42 -64 90 -176 93 -233zM1653 573c17 338 -217 569 -533 656c-5 0 -27 9 14 13c772 -26 800 -1260 -41 -1274c274 76 543 266 560 605z" />
+ <glyph glyph-name="bar-chart" unicode="&#xf080;" horiz-adv-x="2048"
+d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+ <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792"
+d="M1792 416c0 -140 -70 -323 -127 -451c-11 -23 -22 -55 -37 -76c-7 -10 -14 -17 -28 -17c-20 0 -32 16 -32 35c0 16 4 34 5 50c3 41 5 82 5 123c0 477 -283 560 -714 560h-224v-256c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-512 512c-12 12 -19 28 -19 45s7 33 19 45
+l512 512c12 12 28 19 45 19c35 0 64 -29 64 -64v-256h224c328 0 736 -58 875 -403c42 -106 53 -221 53 -333z" />
+ <glyph glyph-name="hourglass-half" unicode="&#xf252;"
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM1280 1408h-1024c0 -146 33 -275 85 -384h854c52 109 85 238 85 384zM1223 192c-74 193 -207 330 -340 384h-230c-133 -54 -266 -191 -340 -384h910z" />
+ <glyph glyph-name="microchip" unicode="&#xf2db;"
+d="M192 256v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 512v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 768v-128h-112c-9 0 -16 7 -16 16v16
+h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 1024v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 1280v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16
+h48v16c0 9 7 16 16 16h112zM1280 1440v-1472c0 -53 -43 -96 -96 -96h-832c-53 0 -96 43 -96 96v1472c0 53 43 96 96 96h832c53 0 96 -43 96 -96zM1536 208v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16z
+M1536 464v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 720v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 976v-32
+c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 1232v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16z" />
+ <glyph glyph-name="graduation-cap" unicode="&#xf19d;" horiz-adv-x="2304"
+d="M1774 700l18 -316c8 -141 -287 -256 -640 -256s-648 115 -640 256l18 316l574 -181c16 -5 32 -7 48 -7s32 2 48 7zM2304 1024c0 -14 -9 -26 -22 -31l-1120 -352c-4 -1 -7 -1 -10 -1s-6 0 -10 1l-652 206c-57 -45 -97 -155 -105 -290c38 -22 63 -62 63 -109
+c0 -45 -23 -84 -58 -107l58 -433c1 -9 -2 -18 -8 -25s-15 -11 -24 -11h-192c-9 0 -18 4 -24 11s-9 16 -8 25l58 433c-35 23 -58 62 -58 107c0 48 27 89 65 111c6 117 36 243 98 330l-333 104c-13 5 -22 17 -22 31s9 26 22 31l1120 352c4 1 7 1 10 1s6 0 10 -1l1120 -352
+c13 -5 22 -17 22 -31z" />
+ <glyph glyph-name="info-circle" unicode="&#xf05a;"
+d="M1024 160v160c0 18 -14 32 -32 32h-96v512c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-160c0 -18 14 -32 32 -32h96v-320h-96c-18 0 -32 -14 -32 -32v-160c0 -18 14 -32 32 -32h448c18 0 32 14 32 32zM896 1056v160c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32
+v-160c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="2176"
+d="M0 1404h128v-1532h-128v1532zM2048 1408h128v-1536h-128v1536zM256 1408h128v-1280h-128v1280zM512 1408h256v-1280h-256v1280zM1280 1408h256v-1280h-256v1280zM1792 1408h128v-1280h-128v1280zM1024 1408h128v-1280h-128v1280zM256 0h128v-128h-128v128zM512 0h128
+v-128h-128v128zM768 0h128v-128h-128v128zM1024 0h128v-128h-128v128zM1280 0h128v-128h-128v128zM1536 0h128v-128h-128v128zM1792 0h128v-128h-128v128z" />
+ <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792"
+d="M1792 352v-192c0 -17 -15 -32 -32 -32h-1376v-192c0 -17 -14 -32 -32 -32c-9 0 -17 4 -24 10l-319 320c-6 6 -9 14 -9 22c0 9 3 17 9 23l320 320c6 6 15 9 23 9c17 0 32 -14 32 -32v-192h1376c17 0 32 -14 32 -32zM1792 896c0 -8 -3 -17 -9 -23l-320 -320
+c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192h-1376c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1376v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23z" />
+ <glyph glyph-name="hand-o-up" unicode="&#xf0a6;"
+d="M1280 -64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 700c0 113 -46 189 -167 189c-19 0 -38 -2 -56 -5c-23 42 -80 65 -126 65c-24 0 -48 -6 -69 -18c-32 34 -72 53 -119 53c-32 0 -79 -14 -103 -35v331c0 69 -59 128 -128 128
+c-68 0 -128 -61 -128 -128v-576c-63 0 -128 96 -256 96c-96 0 -128 -75 -128 -160c0 -28 116 -79 139 -90c22 -12 44 -24 65 -37c53 -33 99 -71 145 -112c73 -64 163 -135 163 -241v-32h640v32c0 175 128 346 128 540zM1536 705c0 -112 -31 -218 -69 -322
+c-22 -61 -59 -160 -59 -223v-288c0 -71 -57 -128 -128 -128h-640c-71 0 -128 57 -128 128v288c0 48 -86 116 -119 145c-41 36 -82 70 -129 100c-93 58 -264 101 -264 235c0 159 87 288 256 288c44 0 87 -7 128 -22v374c0 138 117 256 255 256c140 0 257 -116 257 -256v-169
+c42 -3 82 -16 119 -37c14 2 29 3 43 3c64 0 128 -21 178 -60c189 2 300 -127 300 -312z" />
+ <glyph glyph-name="pause" unicode="&#xf04c;"
+d="M1536 1344v-1408c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h512c35 0 64 -29 64 -64zM640 1344v-1408c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h512c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="github-square" unicode="&#xf092;"
+d="M519 336c2 3 1 9 -3 13c-5 4 -11 5 -14 2c-2 -3 -1 -9 3 -13c5 -4 11 -5 14 -2zM491 377c-3 4 -8 6 -12 4c-3 -2 -3 -8 0 -12c4 -5 9 -7 12 -5s3 8 0 13zM450 417c1 2 -1 6 -5 8c-3 1 -7 1 -8 -2c-2 -3 0 -6 4 -8c4 -1 8 -1 9 2zM471 394c2 2 2 7 -2 10c-3 4 -8 5 -10 3
+c-3 -3 -2 -7 1 -11c3 -3 8 -5 11 -2zM557 319c1 4 -3 9 -9 11s-11 0 -13 -4c-1 -4 3 -9 9 -11s11 0 13 4zM599 316c0 4 -5 8 -12 8c-6 0 -10 -4 -10 -8s5 -8 11 -8s11 4 11 8zM638 323c-1 4 -7 6 -13 5s-10 -5 -9 -9s6 -7 12 -6s10 6 10 10zM1280 640
+c0 283 -229 512 -512 512s-512 -229 -512 -512c0 -226 147 -418 350 -486c26 -5 35 11 35 25c0 12 0 52 -1 95c0 0 -142 -31 -172 61c0 0 -23 59 -57 74c0 0 -46 32 4 32c0 0 50 -4 78 -53c45 -79 120 -56 149 -43c5 33 18 56 33 69c-114 13 -234 57 -234 253
+c0 56 20 101 53 137c-5 13 -23 65 5 136c43 13 141 -53 141 -53c41 12 84 17 128 17s87 -5 128 -17c0 0 98 66 141 53c28 -71 10 -123 5 -136c33 -36 53 -81 53 -137c0 -197 -120 -240 -234 -253c18 -16 35 -47 35 -95c0 -68 -1 -123 -1 -140c0 -14 9 -30 35 -25
+c203 68 350 260 350 486zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664"
+d="M1152 704c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -70 -58 -128 -128 -128c-34 0 -67 14 -90 38l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704
+c0 -142 -43 -282 -124 -399l343 -343c23 -23 37 -56 37 -90z" />
+ <glyph glyph-name="mixcloud" unicode="&#xf289;" horiz-adv-x="2304"
+d="M1645 438c0 80 -51 148 -121 175c-5 -31 -13 -62 -23 -92c-10 -32 -40 -52 -72 -52c-8 0 -16 1 -24 3c-41 14 -62 57 -49 97c15 46 23 94 23 143c0 250 -204 454 -455 454c-180 0 -342 -107 -414 -267c70 -18 135 -54 188 -106c30 -30 30 -79 0 -109s-79 -30 -109 0
+c-48 48 -112 75 -180 75c-141 0 -256 -114 -256 -255s115 -255 256 -255h1046c105 0 190 85 190 189zM1798 438c0 -189 -154 -342 -343 -342h-1046c-226 0 -409 183 -409 408c0 205 152 374 349 403c83 244 314 412 575 412c315 0 575 -241 605 -548
+c153 -33 269 -170 269 -333zM2048 438c0 -114 -33 -224 -97 -319c-15 -22 -39 -33 -64 -33c-15 0 -30 4 -43 13c-35 23 -44 71 -20 106c47 69 71 149 71 233c0 83 -24 164 -71 233c-24 35 -15 82 20 106s83 14 107 -21c64 -94 97 -204 97 -318zM2304 438
+c0 -159 -46 -312 -134 -443c-15 -22 -39 -34 -64 -34c-14 0 -29 4 -42 13c-35 24 -45 71 -21 106c70 106 108 230 108 358s-38 252 -108 357c-24 35 -14 83 21 106c35 24 82 15 106 -21c88 -130 134 -283 134 -442z" />
+ <glyph glyph-name="snowflake-o" unicode="&#xf2dc;" horiz-adv-x="1570"
+d="M1519 419l-167 -33l186 -107c30 -17 41 -57 23 -87s-57 -41 -87 -23l-186 106l55 -160c28 -80 -94 -121 -121 -42l-102 300l-271 156v-313l208 -238c56 -63 -41 -148 -96 -84l-112 128v-214c0 -35 -29 -64 -64 -64s-64 29 -64 64v214l-112 -128c-55 -64 -152 21 -96 84
+l208 238v313l-271 -156l-102 -300c-27 -79 -149 -38 -121 42l55 160l-186 -106c-30 -18 -69 -7 -87 23s-7 70 23 87l186 107l-167 33c-83 17 -58 142 25 126l310 -62l271 157l-271 157l-310 -62c-4 -1 -9 -1 -13 -1c-76 0 -87 112 -12 127l167 33l-186 107
+c-30 17 -41 57 -23 87c18 31 57 41 87 23l186 -106l-55 160c-28 80 94 121 121 42l102 -300l271 -156v313l-208 238c-56 63 41 148 96 84l112 -128v214c0 35 29 64 64 64s64 -29 64 -64v-214l112 128c55 64 152 -21 96 -84l-208 -238v-313l271 156l102 300
+c27 79 149 38 121 -42l-55 -160l186 106c30 18 69 7 87 -23s7 -70 -23 -87l-186 -107l167 -33c75 -15 64 -127 -12 -127c-4 0 -9 0 -13 1l-310 62l-271 -157l271 -157l310 62c83 16 108 -109 25 -126z" />
+ <glyph glyph-name="flask" unicode="&#xf0c3;" horiz-adv-x="1458"
+d="M1424 88c75 -119 22 -216 -119 -216h-1152c-141 0 -194 97 -119 216l503 793v399h-64c-35 0 -64 29 -64 64s29 64 64 64h512c35 0 64 -29 64 -64s-29 -64 -64 -64h-64v-399zM645 813l-272 -429h712l-272 429l-20 31v436h-128v-436z" />
+ <glyph glyph-name="pinterest-square" unicode="&#xf0d3;"
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-725c33 47 87 128 108 210c0 0 9 34 53 209c27 -51 104 -95 186 -95c244 0 410 223 410 521c0 225 -191 435 -481 435c-361 0 -543 -259 -543 -475c0 -130 50 -246 156 -290c17 -7 33 0 38 19
+c3 13 11 47 15 61c5 19 3 26 -11 42c-30 37 -50 83 -50 150c0 192 144 363 374 363c204 0 316 -124 316 -291c0 -219 -97 -404 -241 -404c-79 0 -139 66 -120 147c23 96 67 200 67 269c0 62 -33 114 -102 114c-81 0 -146 -84 -146 -196c0 0 0 -72 24 -121
+c-83 -352 -98 -414 -98 -414c-22 -92 -13 -199 -7 -254h-183c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960z" />
+ <glyph glyph-name="fast-backward" unicode="&#xf049;" horiz-adv-x="1792"
+d="M1747 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-710c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-678c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-678
+c3 7 7 13 13 19l710 710c25 25 45 16 45 -19v-710c3 7 7 13 13 19z" />
+ <glyph glyph-name="volume-control-phone" unicode="&#xf2a0;" horiz-adv-x="1408"
+d="M617 -153c0 -34 -90 -84 -119 -95c-15 -6 -30 -8 -45 -8c-33 0 -66 9 -98 18c-164 49 -203 149 -268 290c-70 151 -87 295 -87 460s17 309 87 460c65 141 104 241 268 290c32 9 65 18 98 18c15 0 30 -2 45 -8c29 -11 119 -61 119 -95c0 -24 -53 -194 -64 -234
+c-6 -25 -8 -66 -27 -84c-13 -12 -34 -14 -51 -14c-47 0 -94 11 -141 11c-14 0 -35 -1 -47 -11c-16 -13 -24 -58 -30 -78c-24 -83 -37 -168 -37 -255s13 -172 37 -255c6 -20 14 -65 30 -78c12 -10 33 -11 47 -11c47 0 94 11 141 11c17 0 38 -2 51 -14c19 -18 21 -59 27 -84
+c11 -40 64 -210 64 -234zM776 760c-17 0 -33 7 -45 19c-25 25 -26 66 0 91c24 24 37 56 37 90s-13 66 -37 91c-26 25 -25 65 0 90s65 25 90 0c48 -48 75 -113 75 -181s-27 -133 -75 -181c-13 -12 -29 -19 -45 -19zM957 579c-17 0 -33 6 -45 19c-25 25 -25 65 0 90
+c72 73 112 169 112 272s-40 199 -112 272c-25 25 -25 65 0 90s65 25 90 0c97 -97 150 -225 150 -362s-53 -265 -150 -362c-12 -13 -29 -19 -45 -19zM1138 398c-17 0 -33 6 -45 19c-25 25 -25 65 0 90c120 121 187 282 187 453s-67 332 -187 453c-25 25 -25 65 0 90
+s65 25 90 0c145 -145 225 -338 225 -543s-80 -398 -225 -543c-12 -13 -29 -19 -45 -19z" />
+ <glyph glyph-name="code-fork" unicode="&#xf126;" horiz-adv-x="1024"
+d="M288 64c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM288 1216c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM928 1088c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1024 1088c0 -71 -39 -133 -96 -166
+c-3 -361 -259 -441 -429 -495c-159 -50 -211 -74 -211 -171v-26c57 -33 96 -95 96 -166c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 71 39 133 96 166v820c-57 33 -96 95 -96 166c0 106 86 192 192 192s192 -86 192 -192c0 -71 -39 -133 -96 -166v-497
+c51 25 105 42 154 57c186 59 292 103 294 312c-57 33 -96 95 -96 166c0 106 86 192 192 192s192 -86 192 -192z" />
+ <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792"
+d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 832v-256c0 -35 -29 -64 -64 -64h-1664
+c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 1344v-256c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="firefox" unicode="&#xf269;" horiz-adv-x="1792"
+d="M903 -256c-386 0 -693 226 -834 549c-158 359 -32 934 249 1188l-11 -281c14 18 121 23 138 0c58 111 245 194 395 197c-57 -48 -189 -223 -178 -312c73 -23 185 -24 244 -28c18 -10 15 -71 -21 -121c0 0 -47 -65 -174 -88l15 -189l-139 67c-45 -114 63 -215 175 -196
+c124 21 168 102 255 97c86 -5 120 -53 109 -98c0 0 -14 -54 -107 -45c-79 -125 -184 -180 -354 -165c258 -214 606 -20 694 155c88 174 11 433 -77 506c104 -45 176 -91 214 -192c20 224 -83 478 -267 627c346 -101 557 -369 563 -797s-379 -874 -889 -874z" />
+ <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1393"
+d="M1393 321c-25 -79 -65 -163 -123 -250c-86 -131 -172 -196 -257 -196c-34 0 -80 11 -140 32c-59 22 -110 32 -151 32c-40 0 -88 -11 -142 -33c-55 -23 -99 -34 -132 -34c-103 0 -202 87 -301 259c-97 172 -147 339 -147 503c0 153 38 277 113 374c75 96 169 144 284 144
+c49 0 107 -10 177 -30c69 -20 115 -30 138 -30c29 0 77 11 143 34c66 22 124 34 173 34c80 0 151 -22 213 -65c35 -24 70 -58 104 -100c-52 -44 -90 -83 -114 -118c-43 -62 -65 -131 -65 -207c0 -82 23 -157 69 -223s99 -108 158 -126zM1017 1494c0 -41 -10 -87 -29 -136
+c-20 -50 -51 -96 -93 -138c-36 -36 -72 -60 -108 -72c-23 -7 -57 -13 -104 -17c2 99 28 185 78 257s134 121 250 148c2 -9 4 -16 5 -22c0 -7 1 -13 1 -20z" />
+ <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920"
+d="M832 448v128c0 18 -14 32 -32 32h-192v192c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-192h-192c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h192v-192c0 -18 14 -32 32 -32h128c18 0 32 14 32 32v192h192c18 0 32 14 32 32zM1408 384c0 71 -57 128 -128 128
+s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1664 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1920 512c0 -283 -229 -512 -512 -512c-130 0 -248 49 -338 128h-220c-90 -79 -208 -128 -338 -128c-283 0 -512 229 -512 512
+s229 512 512 512h896c283 0 512 -229 512 -512z" />
+ <glyph glyph-name="cc-stripe" unicode="&#xf1f5;" horiz-adv-x="2304"
+d="M1597 633c0 -46 -7 -81 -21 -106c-12 -22 -31 -35 -52 -35c-15 0 -29 3 -41 9v224c26 27 49 30 57 30c38 0 57 -42 57 -122zM2035 669h-110c4 67 22 98 56 98s52 -32 54 -98zM476 534c0 84 -51 119 -134 149c-44 16 -68 29 -68 49c0 17 14 26 38 26c46 0 92 -17 124 -33
+l18 112c-25 12 -77 32 -149 32c-51 0 -93 -13 -123 -38c-32 -26 -48 -64 -48 -109c0 -82 50 -118 132 -147c52 -19 70 -32 70 -53c0 -20 -17 -31 -48 -31c-38 0 -101 19 -142 43l-18 -113c35 -20 100 -41 168 -41c54 0 98 13 129 37c34 27 51 66 51 117zM771 749l19 111h-96
+v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219c0 -57 15 -96 44 -120c25 -20 61 -30 111 -30c39 0 62 7 79 11v118c-9 -2 -30 -7 -44 -7c-29 0 -42 16 -42 50v197h77zM1087 724v139c-10 2 -19 3 -28 3c-42 0 -76 -22 -89 -62l-10 56h-131v-471h150v306c19 23 46 31 82 31
+c8 0 16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638c0 80 -15 141 -45 179c-27 35 -64 52 -111 52c-43 0 -81 -18 -117 -56l-8 47h-132v-645l150 25v151c23 -7 47 -11 68 -11c37 0 92 10 134 56c41 44 61 112 61 202zM1278 986c0 44 -35 79 -79 79s-79 -35 -79 -79
+s35 -80 79 -80s79 36 79 80zM2176 629c0 75 -16 134 -48 176c-33 42 -82 64 -144 64c-128 0 -207 -94 -207 -246c0 -84 21 -148 63 -188c37 -37 91 -55 161 -55c64 0 123 15 160 40l-16 103c-37 -20 -80 -31 -128 -31c-29 0 -49 6 -63 19c-16 13 -25 35 -28 66h248
+c1 7 2 41 2 52zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="quote-left" unicode="&#xf10d;" horiz-adv-x="1664"
+d="M768 576v-384c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v704c0 282 230 512 512 512h64c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-64c-141 0 -256 -115 -256 -256v-32c0 -53 43 -96 96 -96h224c106 0 192 -86 192 -192zM1664 576v-384
+c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v704c0 282 230 512 512 512h64c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-64c-141 0 -256 -115 -256 -256v-32c0 -53 43 -96 96 -96h224c106 0 192 -86 192 -192z" />
+ <glyph glyph-name="user-times" unicode="&#xf235;" horiz-adv-x="2039"
+d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1781 320l249 -249c6 -6 9 -14 9 -23c0 -8 -3 -16 -9 -22l-136 -136c-6 -6 -14 -9 -22 -9c-9 0 -17 3 -23 9l-249 249l-249 -249c-6 -6 -14 -9 -23 -9c-8 0 -16 3 -22 9
+l-136 136c-6 6 -9 14 -9 22c0 9 3 17 9 23l249 249l-249 249c-6 6 -9 14 -9 23c0 8 3 16 9 22l136 136c6 6 14 9 22 9c9 0 17 -3 23 -9l249 -249l249 249c6 6 14 9 23 9c8 0 16 -3 22 -9l136 -136c6 -6 9 -14 9 -22c0 -9 -3 -17 -9 -23zM1283 320l-181 -181
+c-24 -24 -37 -57 -37 -91c0 -33 13 -66 37 -90l83 -83c-14 -2 -29 -3 -44 -3h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c96 -76 194 -122 319 -122s223 46 319 122c12 10 23 17 39 17c19 0 38 -2 57 -6c-33 -32 -54 -58 -54 -106
+c0 -34 13 -67 37 -91z" />
+ <glyph glyph-name="plus-square-o" unicode="&#xf196;" horiz-adv-x="1408"
+d="M1152 736v-64c0 -18 -14 -32 -32 -32h-352v-352c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v352h-352c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h352v352c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-352h352c18 0 32 -14 32 -32zM1280 288v832c0 88 -72 160 -160 160
+h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160zM1408 1120v-832c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="eye-slash" unicode="&#xf070;" horiz-adv-x="1792"
+d="M555 201l78 141c-116 84 -185 219 -185 362c0 79 21 157 61 225c-156 -80 -286 -206 -381 -353c104 -161 251 -296 427 -375zM944 960c0 26 -22 48 -48 48c-167 0 -304 -137 -304 -304c0 -26 22 -48 48 -48s48 22 48 48c0 115 94 208 208 208c26 0 48 22 48 48z
+M1307 1151c0 -2 0 -7 -1 -9c-211 -377 -420 -756 -631 -1133l-49 -89c-6 -10 -17 -16 -28 -16c-18 0 -113 58 -134 70c-10 6 -16 16 -16 28c0 16 34 70 44 87c-194 88 -357 238 -472 418c-13 20 -20 44 -20 69c0 24 7 49 20 69c198 304 507 507 876 507c60 0 121 -6 180 -17
+l54 97c6 10 16 16 28 16c18 0 112 -58 133 -70c10 -6 16 -16 16 -27zM1344 704c0 -186 -115 -352 -288 -418l280 502c5 -28 8 -56 8 -84zM1792 576c0 -26 -7 -47 -20 -69c-31 -51 -70 -100 -109 -145c-196 -225 -466 -362 -767 -362l74 132c291 25 538 202 694 444
+c-74 115 -169 216 -282 294l63 112c124 -83 249 -208 327 -337c13 -22 20 -43 20 -69z" />
+ <glyph glyph-name="trello" unicode="&#xf181;"
+d="M704 192v1024c0 18 -14 32 -32 32h-480c-18 0 -32 -14 -32 -32v-1024c0 -18 14 -32 32 -32h480c18 0 32 14 32 32zM1376 576v640c0 18 -14 32 -32 32h-480c-18 0 -32 -14 -32 -32v-640c0 -18 14 -32 32 -32h480c18 0 32 14 32 32zM1536 1344v-1408c0 -35 -29 -64 -64 -64
+h-1408c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="dribbble" unicode="&#xf17d;"
+d="M1024 36c-10 58 -48 258 -140 498c-1 0 -3 -1 -4 -1c0 0 -389 -136 -515 -410c-6 5 -15 11 -15 11c114 -93 259 -150 418 -150c91 0 177 19 256 52zM839 643c-16 37 -34 74 -53 111c-338 -101 -662 -93 -673 -93c-1 -7 -1 -14 -1 -21c0 -168 64 -322 168 -438
+c179 319 533 433 533 433c9 3 18 5 26 8zM732 855c-114 202 -235 366 -244 378c-183 -86 -319 -255 -362 -458c17 0 291 -3 606 80zM1416 536c-14 4 -197 62 -409 29c86 -237 121 -430 128 -469c147 99 251 257 281 440zM611 1277c-1 0 -1 0 -2 -1c0 0 1 1 2 1zM1201 1132
+c-115 102 -267 164 -433 164c-53 0 -105 -7 -155 -19c10 -13 134 -176 246 -382c247 92 340 234 342 237zM1424 647c-2 155 -57 298 -149 410c-2 -2 -107 -154 -366 -260c15 -31 30 -63 44 -95c5 -11 9 -23 14 -34c226 29 449 -20 457 -21zM1536 640
+c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="user-secret" unicode="&#xf21b;" horiz-adv-x="1408"
+d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010c-1 2 -2 4 -4 6c-9 7 -81 8 -96 8c-57 0 -111 -8 -167 -19c-7 -2 -14 -2 -21 -2s-14 0 -21 2c-56 11 -110 19 -167 19c-15 0 -87 -1 -96 -8c-2 -2 -3 -4 -4 -6c1 -9 2 -18 4 -27
+c6 -8 11 -5 15 -17c26 -71 38 -126 128 -126c129 0 93 119 135 119h12c42 0 6 -119 135 -119c90 0 102 55 128 126c4 12 9 9 15 17c2 9 3 18 4 27zM1408 131c0 -163 -107 -259 -267 -259h-874c-160 0 -267 96 -267 259c0 181 32 455 218 545l-90 220h214
+c-14 41 -22 84 -22 128c0 11 1 22 2 32c-39 8 -194 40 -194 96c0 59 170 91 210 99c21 75 71 189 122 248c20 23 45 37 76 37c60 0 108 -62 168 -62s108 62 168 62c31 0 56 -14 76 -37c51 -59 101 -173 122 -248c40 -8 210 -40 210 -99c0 -56 -155 -88 -194 -96
+c5 -54 -2 -108 -20 -160h214l-82 -225c179 -93 210 -362 210 -540z" />
+ <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920"
+d="M1920 384c0 -212 -172 -384 -384 -384h-1088c-247 0 -448 201 -448 448c0 179 106 334 258 405c-1 14 -2 29 -2 43c0 283 229 512 512 512c214 0 397 -131 474 -318c44 39 102 62 166 62c141 0 256 -115 256 -256c0 -51 -15 -98 -41 -138c170 -40 297 -192 297 -374z" />
+ <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="932"
+d="M932 351c0 -204 -146 -365 -358 -400v-175c0 -18 -14 -32 -32 -32h-135c-17 0 -32 14 -32 32v175c-234 33 -362 173 -367 179c-10 12 -11 29 -2 41l103 135c5 7 14 11 23 12s18 -2 24 -9c2 -1 142 -135 319 -135c98 0 204 52 204 165c0 96 -118 143 -253 197
+c-180 71 -404 161 -404 412c0 184 144 336 353 376v180c0 18 15 32 32 32h135c18 0 32 -14 32 -32v-176c203 -23 311 -133 315 -137c10 -11 12 -26 5 -38l-81 -146c-5 -9 -13 -15 -23 -16c-10 -2 -19 1 -27 7c-1 1 -122 108 -272 108c-127 0 -215 -63 -215 -154
+c0 -106 122 -153 264 -208c184 -71 392 -152 392 -393z" />
+ <glyph glyph-name="eye" unicode="&#xf06e;" horiz-adv-x="1792"
+d="M1664 576c-95 147 -225 273 -381 353c40 -68 61 -146 61 -225c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 79 21 157 61 225c-156 -80 -286 -206 -381 -353c171 -264 447 -448 768 -448s597 184 768 448zM944 960c0 26 -22 48 -48 48c-167 0 -304 -137 -304 -304
+c0 -26 22 -48 48 -48s48 22 48 48c0 114 94 208 208 208c26 0 48 22 48 48zM1792 576c0 -25 -8 -48 -20 -69c-184 -303 -521 -507 -876 -507s-692 205 -876 507c-12 21 -20 44 -20 69s8 48 20 69c184 302 521 507 876 507s692 -205 876 -507c12 -21 20 -44 20 -69z" />
+ <glyph glyph-name="usb" unicode="&#xf287;" horiz-adv-x="2304"
+d="M2288 731c10 -5 16 -16 16 -27s-6 -22 -16 -27l-320 -192c-5 -3 -10 -5 -16 -5c-5 0 -11 1 -16 4c-10 6 -16 16 -16 28v128h-858c32 -50 59 -109 83 -165c48 -108 97 -219 167 -219h96v96c0 18 14 32 32 32h320c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-320
+c-18 0 -32 14 -32 32v96h-96c-153 0 -222 157 -284 295c-47 107 -96 217 -164 217h-360c-29 -110 -129 -192 -248 -192c-141 0 -256 115 -256 256s115 256 256 256c119 0 219 -82 248 -192h104c68 0 117 110 164 217c62 138 131 295 284 295h107c27 75 97 128 181 128
+c106 0 192 -86 192 -192s-86 -192 -192 -192c-84 0 -154 53 -181 128h-107c-70 0 -119 -111 -167 -219c-24 -56 -51 -115 -83 -165h1114v128c0 12 6 22 16 28s23 5 32 -1z" />
+ <glyph glyph-name="certificate" unicode="&#xf0a3;"
+d="M1376 640l138 -135c19 -18 26 -45 20 -70c-7 -25 -27 -45 -52 -51l-188 -48l53 -186c7 -25 0 -52 -19 -70c-18 -19 -45 -26 -70 -19l-186 53l-48 -188c-6 -25 -26 -45 -51 -52c-6 -1 -13 -2 -19 -2c-19 0 -38 8 -51 22l-135 138l-135 -138c-18 -19 -45 -26 -70 -20
+c-26 7 -45 27 -51 52l-48 188l-186 -53c-25 -7 -52 0 -70 19c-19 18 -26 45 -19 70l53 186l-188 48c-25 6 -45 26 -52 51c-6 25 1 52 20 70l138 135l-138 135c-19 18 -26 45 -20 70c7 25 27 45 52 51l188 48l-53 186c-7 25 0 52 19 70c18 19 45 26 70 19l186 -53l48 188
+c6 25 26 45 51 51c25 7 52 0 70 -19l135 -139l135 139c18 19 44 26 70 19c25 -6 45 -26 51 -51l48 -188l186 53c25 7 52 0 70 -19c19 -18 26 -45 19 -70l-53 -186l188 -48c25 -6 45 -26 52 -51c6 -25 -1 -52 -20 -70z" />
+ <glyph glyph-name="500px" unicode="&#xf26e;" horiz-adv-x="1394"
+d="M1387 -11l-6 -6c-75 -75 -162 -134 -259 -175c-101 -42 -207 -64 -317 -64s-217 22 -317 64c-97 41 -185 100 -259 175c-75 74 -134 161 -175 258c-25 61 -45 124 -54 189c-4 28 35 34 48 36c31 5 52 3 56 -20c1 -1 1 -2 1 -4c4 -20 14 -80 46 -159
+c33 -82 84 -158 152 -226c65 -65 141 -116 226 -152c87 -37 180 -56 276 -56c95 0 188 19 276 56c84 36 160 87 225 152l6 6c7 7 15 9 25 6c9 -2 20 -10 33 -22c32 -33 25 -49 17 -58zM915 604l-66 -66l63 -63c7 -7 20 -22 -7 -49c-11 -11 -22 -17 -32 -17
+c-7 0 -13 3 -19 10l-62 61l-66 -66c-2 -2 -7 -5 -15 -5c-9 0 -20 5 -31 16l-2 2c-7 6 -18 17 -18 29c0 6 3 11 8 17l66 65l-66 66c-11 11 -6 25 14 45c12 12 22 18 31 18c5 0 9 -2 13 -5l65 -66l65 65c11 11 29 6 48 -13c12 -12 25 -29 11 -44zM1386 547
+c0 -79 -16 -156 -46 -228c-30 -70 -72 -132 -126 -186s-117 -96 -187 -126c-72 -31 -149 -46 -228 -46s-156 15 -228 46c-70 30 -133 72 -187 126s-96 116 -125 186c-6 13 -15 38 -15 40h-1c-9 28 31 40 43 44c29 9 51 13 60 -12c24 -64 61 -126 97 -167h1v341
+c2 84 37 169 102 232c67 66 157 103 253 103c196 0 355 -158 355 -352c0 -196 -160 -355 -355 -355c-39 0 -68 3 -112 16c-5 2 -28 12 -13 61c4 13 16 51 44 43c2 0 51 -12 77 -12c139 0 248 108 248 246c0 65 -26 126 -72 171c-46 46 -108 71 -175 71
+c-69 0 -132 -28 -178 -80c-40 -45 -64 -105 -64 -160v-413c72 -44 155 -67 242 -67c128 0 252 51 341 140c90 90 140 211 140 338c0 128 -50 248 -141 339c-90 90 -210 140 -339 140s-250 -50 -340 -140c-1 -1 -58 -60 -77 -87l-2 -2c-12 -17 -23 -33 -73 -22
+c-25 6 -52 21 -52 43v680c0 18 14 38 38 38h877c30 0 30 -42 30 -55c0 -14 0 -55 -30 -55h-811v-483h1c56 59 153 121 210 145c71 30 151 46 231 46c79 0 156 -15 228 -46c70 -30 133 -72 187 -126s96 -116 126 -186c30 -73 46 -149 46 -229zM1355 1128
+c19 -17 6 -35 -13 -57c-12 -12 -25 -26 -39 -26c-6 0 -11 2 -16 7c-72 62 -137 104 -207 133c-87 38 -180 56 -276 56c-85 0 -178 -17 -262 -49c-26 -10 -40 24 -45 37c-6 16 -9 29 -8 38c2 10 7 17 16 20c82 36 194 57 299 57c109 0 216 -22 316 -64
+c92 -39 167 -87 235 -152z" />
+ <glyph glyph-name="liberapay-square" unicode="&#xf2e8;" horiz-adv-x="1533"
+d="M148 1404h1236c82 0 149 -66 149 -148v-1236c0 -82 -67 -148 -149 -148h-1236c-82 0 -148 66 -148 148v1236c0 82 66 148 148 148zM736 1150v0l-161 -25l-133 -553c-8 -33 -12 -64 -12 -93s6 -54 18 -76s32 -40 60 -53s68 -19 117 -19l31 128c-18 1 -32 4 -42 9
+s-18 12 -22 20s-5 17 -5 27s1 23 4 35zM985 902v0c-42 0 -80 -3 -116 -10s-67 -14 -95 -22l-174 -722h155l47 189c24 -4 47 -6 71 -6c49 0 94 8 135 25s76 41 106 72s52 67 69 109s25 88 25 139c0 31 -4 61 -13 88s-22 51 -40 72c-18 20 -41 36 -69 48s-62 18 -101 18z
+M965 772v0c33 0 56 -11 69 -32s20 -46 20 -76c0 -31 -4 -59 -13 -84s-21 -47 -37 -65s-34 -32 -56 -42s-47 -15 -74 -15c-17 0 -32 1 -44 4l73 303c19 4 40 7 62 7z" />
+ <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920"
+d="M960 864c159 0 288 -129 288 -288s-129 -288 -288 -288s-288 129 -288 288s129 288 288 288zM1664 1280c141 0 256 -115 256 -256v-896c0 -141 -115 -256 -256 -256h-1408c-141 0 -256 115 -256 256v896c0 141 115 256 256 256h224l51 136c25 66 103 120 173 120h512
+c70 0 148 -54 173 -120l51 -136h224zM960 128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="music" unicode="&#xf001;"
+d="M1536 1312v-1120c0 -141 -211 -192 -320 -192s-320 51 -320 192s211 192 320 192c66 0 132 -12 192 -39v537l-768 -237v-709c0 -141 -211 -192 -320 -192s-320 51 -320 192s211 192 320 192c66 0 132 -12 192 -39v967c0 42 28 79 68 92l832 256c9 3 18 4 28 4
+c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="wpexplorer" unicode="&#xf2de;" horiz-adv-x="1792"
+d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640c0 432 -352 784 -784 784s-784 -352 -784 -784
+s352 -784 784 -784s784 352 784 784zM1792 640c0 -494 -402 -896 -896 -896s-896 402 -896 896s402 896 896 896s896 -402 896 -896z" />
+ <glyph glyph-name="gg-circle" unicode="&#xf261;" horiz-adv-x="1792"
+d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640c0 -495 -401 -896 -896 -896
+s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024"
+d="M1024 448c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64zM1024 832c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19
+s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="pencil" unicode="&#xf040;" horiz-adv-x="1515"
+d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928c0 13 -9 22 -22 22c-6 0 -12 -2 -17 -7l-542 -542c-5 -5 -7 -11 -7 -17c0 -13 9 -22 22 -22c6 0 12 2 17 7l542 542c5 5 7 11 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024c0 -34 -14 -67 -37 -90
+l-166 -166l-416 416l166 165c23 24 56 38 90 38s67 -14 91 -38l235 -234c23 -24 37 -57 37 -91z" />
+ <glyph glyph-name="bookmark-o" unicode="&#xf097;" horiz-adv-x="1280"
+d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408c15 0 30 -3 44 -9c44 -17 72 -58 72 -103v-1289c0 -45 -28 -86 -72 -103c-14 -6 -29 -8 -44 -8c-31 0 -60 11 -83 32l-441 424l-441 -424c-23 -21 -52 -33 -83 -33c-15 0 -30 3 -44 9
+c-44 17 -72 58 -72 103v1289c0 45 28 86 72 103c14 6 29 9 44 9h1048z" />
+ <glyph glyph-name="diamond" unicode="&#xf219;" horiz-adv-x="2048"
+d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512c19 -24 17 -59 -4 -82l-960 -1024c-12 -13 -29 -20 -47 -20
+s-35 7 -47 20l-960 1024c-21 23 -23 58 -4 82l384 512c12 17 31 26 51 26h1152c20 0 39 -9 51 -26z" />
+ <glyph glyph-name="share" unicode="&#xf064;" horiz-adv-x="1792"
+d="M1792 896c0 -17 -7 -33 -19 -45l-512 -512c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v256h-224c-431 0 -714 -83 -714 -560c0 -41 2 -82 5 -123c1 -16 5 -34 5 -50c0 -19 -12 -35 -32 -35c-14 0 -21 7 -28 17c-15 21 -26 53 -37 76c-57 128 -127 311 -127 451
+c0 112 11 227 53 333c139 345 547 403 875 403h224v256c0 35 29 64 64 64c17 0 33 -7 45 -19l512 -512c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="envelope" unicode="&#xf0e0;" horiz-adv-x="1792"
+d="M1792 826v-794c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v794c30 -33 64 -62 101 -87c166 -113 334 -226 497 -345c84 -62 188 -138 297 -138h2c109 0 213 76 297 138c163 118 331 232 498 345c36 25 70 54 100 87zM1792 1120c0 -112 -83 -213 -171 -274
+c-156 -108 -313 -216 -468 -325c-65 -45 -175 -137 -256 -137h-2c-81 0 -191 92 -256 137c-155 109 -312 217 -467 325c-71 48 -172 161 -172 252c0 98 53 182 160 182h1472c87 0 160 -72 160 -160z" />
+ <glyph glyph-name="yahoo" unicode="&#xf19e;" horiz-adv-x="1318"
+d="M750 579l13 -707c-34 6 -69 11 -105 11c-35 0 -70 -5 -105 -11l13 707c-186 321 -361 648 -566 957c35 -9 71 -15 108 -15s75 7 111 15c140 -248 292 -489 439 -733c148 242 305 483 439 733c35 -9 71 -14 107 -14c38 0 77 5 114 14c-80 -110 -146 -230 -215 -347
+c-119 -203 -236 -406 -353 -610z" />
+ <glyph glyph-name="window-restore" unicode="&#xf2d2;" horiz-adv-x="2048"
+d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96c88 0 160 -72 160 -160v-352zM2048 1376v-960c0 -88 -72 -160 -160 -160h-608v-352c0 -88 -72 -160 -160 -160h-960c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h608v352c0 88 72 160 160 160h960
+c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1606"
+d="M1606 1350c0 -29 -23 -58 -43 -78l-632 -632v-768h320c35 0 64 -29 64 -64s-29 -64 -64 -64h-896c-35 0 -64 29 -64 64s29 64 64 64h320v768l-632 632c-20 20 -43 49 -43 78c0 49 62 58 99 58h1408c37 0 99 -9 99 -58z" />
+ <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1728"
+d="M256 1280c0 -46 -25 -87 -64 -110v-1266c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v1266c-39 23 -64 64 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -37 -23 -51 -52 -66c-113 -61 -238 -116 -369 -116c-184 0 -272 140 -490 140
+c-159 0 -326 -72 -464 -146c-11 -6 -21 -9 -33 -9c-35 0 -64 29 -64 64v742c0 24 12 41 31 55c24 16 53 30 79 43c126 64 279 120 421 120c157 0 280 -52 419 -117c28 -14 57 -19 88 -19c157 0 326 136 370 136c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="train" unicode="&#xf238;"
+d="M1088 1536c247 0 448 -143 448 -320v-896c0 -173 -191 -313 -431 -319l213 -202c21 -20 7 -55 -22 -55h-1056c-29 0 -43 35 -22 55l213 202c-240 6 -431 146 -431 319v896c0 177 201 320 448 320h640zM768 192c106 0 192 86 192 192s-86 192 -192 192s-192 -86 -192 -192
+s86 -192 192 -192zM1344 768v512h-1152v-512h1152z" />
+ <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792"
+d="M1664 896c71 0 128 -57 128 -128s-57 -128 -128 -128v-384c0 -70 -58 -128 -128 -128c-178 148 -465 351 -812 380c-119 -40 -160 -179 -82 -259c-70 -115 20 -196 126 -279c-62 -122 -320 -124 -412 -39c-58 178 -144 356 -74 581h-122c-88 0 -160 72 -160 160v192
+c0 88 72 160 160 160h480c384 0 704 224 896 384c70 0 128 -58 128 -128v-384zM1536 292v954c-261 -200 -514 -315 -768 -343v-270c254 -28 507 -141 768 -341z" />
+ <glyph glyph-name="pause-circle-o" unicode="&#xf28c;"
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM768 96c300 0 544 244 544 544s-244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544zM864 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-576
+c0 -18 -14 -32 -32 -32h-192zM480 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-576c0 -18 -14 -32 -32 -32h-192z" />
+ <glyph glyph-name="snapchat-ghost" unicode="&#xf2ac;" horiz-adv-x="1634"
+d="M833 1408c180 2 329 -99 404 -261c23 -49 27 -125 27 -179c0 -64 -5 -127 -9 -191c8 -4 19 -7 28 -7c36 0 66 27 102 27c34 0 83 -24 83 -64c0 -96 -201 -78 -201 -162c0 -15 6 -29 12 -43c48 -105 139 -206 247 -251c26 -11 52 -17 80 -23c18 -4 28 -17 28 -35
+c0 -68 -173 -96 -219 -103c-20 -31 -5 -104 -58 -104c-41 0 -82 13 -126 13c-21 0 -42 -1 -62 -5c-119 -20 -159 -148 -354 -148c-188 0 -233 128 -349 148c-21 4 -42 5 -63 5c-45 0 -88 -15 -124 -15c-56 0 -39 74 -60 106c-46 7 -219 35 -219 103c0 18 10 31 28 35
+c28 6 54 12 80 23c107 44 200 146 247 251c6 14 12 28 12 43c0 84 -202 68 -202 161c0 39 46 64 81 64c31 0 62 -26 101 -26c11 0 22 2 32 7c-4 63 -9 126 -9 190c0 54 4 131 27 180c88 190 237 259 436 261z" />
+ <glyph glyph-name="folder" unicode="&#xf07b;" horiz-adv-x="1664"
+d="M1664 928v-704c0 -123 -101 -224 -224 -224h-1216c-123 0 -224 101 -224 224v960c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h672c123 0 224 -101 224 -224z" />
+ <glyph glyph-name="outdent" unicode="&#xf03b;" horiz-adv-x="1792"
+d="M384 992v-576c0 -17 -15 -32 -32 -32c-8 0 -17 3 -23 9l-288 288c-6 6 -9 15 -9 23s3 17 9 23l288 288c6 6 15 9 23 9c17 0 32 -15 32 -32zM1792 224v-192c0 -17 -15 -32 -32 -32h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32zM1792 608
+v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32h-1728
+c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z" />
+ <glyph glyph-name="stumbleupon" unicode="&#xf1a4;" horiz-adv-x="1920"
+d="M1062 824v118c0 56 -46 102 -102 102s-102 -46 -102 -102v-612c0 -234 -194 -423 -429 -423c-237 0 -429 192 -429 429v266h328v-262c0 -57 46 -102 102 -102s102 45 102 102v620c0 229 196 413 428 413c233 0 428 -185 428 -416v-136l-195 -58zM1592 602h328v-266
+c0 -237 -192 -429 -429 -429c-236 0 -429 190 -429 425v268l131 -61l195 58v-270c0 -56 46 -101 102 -101s102 45 102 101v275z" />
+ <glyph glyph-name="address-card" unicode="&#xf2bb;" horiz-adv-x="2048"
+d="M1024 405c0 155 -38 327 -196 327c-49 -28 -115 -76 -188 -76s-139 48 -188 76c-158 0 -196 -172 -196 -327c0 -87 57 -149 128 -149h512c71 0 128 62 128 149zM867 925c0 125 -102 227 -227 227s-227 -102 -227 -227c0 -126 102 -227 227 -227s227 101 227 227z
+M1792 416v64c0 18 -14 32 -32 32h-576c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM1792 676v56c0 20 -16 36 -36 36h-568c-20 0 -36 -16 -36 -36v-56c0 -20 16 -36 36 -36h568c20 0 36 16 36 36zM1792 928v64c0 18 -14 32 -32 32h-576
+c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM2048 1248v-1216c0 -88 -72 -160 -160 -160h-352v96c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-96h-768v96c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-96h-352c-88 0 -160 72 -160 160
+v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="i-cursor" unicode="&#xf246;" horiz-adv-x="896"
+d="M832 1408c-212 0 -320 -75 -320 -224v-416h128v-128h-128v-544c0 -149 108 -224 320 -224h64v-128h-64c-180 0 -312 52 -384 146c-72 -94 -204 -146 -384 -146h-64v128h64c212 0 320 75 320 224v544h-128v128h128v416c0 149 -108 224 -320 224h-64v128h64
+c180 0 312 -52 384 -146c72 94 204 146 384 146h64v-128h-64z" />
+ <glyph glyph-name="car" unicode="&#xf1b9;" horiz-adv-x="2048"
+d="M480 448c0 88 -72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160s160 72 160 160zM516 768h1016l-89 357c-3 11 -23 27 -35 27h-768c-12 0 -32 -16 -35 -27zM1888 448c0 88 -72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160s160 72 160 160zM2048 544v-384
+c0 -18 -14 -32 -32 -32h-96v-128c0 -106 -86 -192 -192 -192s-192 86 -192 192v128h-1024v-128c0 -106 -86 -192 -192 -192s-192 86 -192 192v128h-96c-18 0 -32 14 -32 32v384c0 124 100 224 224 224h28l105 419c31 126 153 221 283 221h768c130 0 252 -95 283 -221
+l105 -419h28c124 0 224 -100 224 -224z" />
+ <glyph glyph-name="file-excel-o" unicode="&#xf1c3;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM429 106h68l194 283l-189 272h-68v107h290v-107h-76l106 -159c8 -9 13 -16 17 -23c2 -3 4 -6 5 -10h2c0 -1 9 14 21 33l103 159h-74v107h279v-107h-67l-195 -282l192 -273h68v-106h-291v106h76l-107 161c-7 10 -13 16 -17 24c-2 3 -4 6 -5 10h-2
+c-3 0 -9 -15 -21 -34l-103 -161h75v-106h-281v106z" />
+ <glyph glyph-name="arrow-circle-o-left" unicode="&#xf190;"
+d="M1152 736v-192c0 -17 -15 -32 -32 -32h-352v-192c0 -18 -14 -32 -32 -32c-9 0 -17 4 -24 10l-319 319c-6 6 -9 15 -9 23s3 17 9 23l320 320c6 6 15 9 23 9c17 0 32 -15 32 -32v-192h352c17 0 32 -15 32 -32zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544
+s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="paragraph" unicode="&#xf1dd;" horiz-adv-x="1254"
+d="M1254 1347v-73c0 -34 -27 -93 -61 -93c-17 0 -37 3 -54 -1c-16 -4 -28 -15 -32 -31c-5 -19 -3 -43 -3 -64v-1152c0 -34 -27 -61 -61 -61h-108c-34 0 -61 27 -61 61v1218h-143v-1218c0 -34 -27 -61 -61 -61h-108c-34 0 -61 27 -61 61v496c-97 8 -180 28 -245 59
+c-84 39 -148 99 -192 179c-42 77 -64 164 -64 259c0 111 30 207 88 286c59 79 129 132 209 159c75 25 233 37 417 37h479c34 0 61 -27 61 -61z" />
+ <glyph glyph-name="y-combinator" unicode="&#xf23b;"
+d="M809 532l266 499h-112l-157 -312s-24 -48 -44 -92c-19 46 -42 92 -42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
+ <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024"
+d="M1024 832v-416c0 -53 -43 -96 -96 -96s-96 43 -96 96v352h-64v-912c0 -62 -50 -112 -112 -112s-112 50 -112 112v464h-64v-464c0 -62 -50 -112 -112 -112s-112 50 -112 112v912h-64v-352c0 -53 -43 -96 -96 -96s-96 43 -96 96v416c0 106 86 192 192 192h640
+c106 0 192 -86 192 -192zM736 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
+ <glyph glyph-name="history" unicode="&#xf1da;"
+d="M1536 640c0 -423 -345 -768 -768 -768c-229 0 -445 101 -591 277c-10 13 -9 32 2 43l137 138c7 6 16 9 25 9c9 -1 18 -5 23 -12c98 -127 245 -199 404 -199c282 0 512 230 512 512s-230 512 -512 512c-131 0 -255 -50 -348 -137l137 -138c19 -18 24 -46 14 -69
+c-10 -24 -33 -40 -59 -40h-448c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l130 -129c141 133 332 212 529 212c423 0 768 -345 768 -768zM896 928v-448c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v352c0 18 14 32 32 32h64
+c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="h-square" unicode="&#xf0fd;"
+d="M1280 192v896c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-320h-512v320c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-896c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v320h512v-320c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792"
+d="M896 -128c-16 0 -32 6 -44 18l-624 602c-8 7 -228 208 -228 448c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216c299 0 478 -175 478 -468c0 -240 -220 -441 -229 -450l-623 -600c-12 -12 -28 -18 -44 -18z" />
+ <glyph glyph-name="sort-amount-desc" unicode="&#xf161;" horiz-adv-x="1760"
+d="M1184 -32v-192c0 -18 -14 -32 -32 -32h-256c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h256c18 0 32 -14 32 -32zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1376 480v-192c0 -18 -14 -32 -32 -32h-448c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h448c18 0 32 -14 32 -32zM1568 992v-192c0 -18 -14 -32 -32 -32h-640c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h640
+c18 0 32 -14 32 -32zM1760 1504v-192c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h832c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="search-plus" unicode="&#xf00e;" horiz-adv-x="1664"
+d="M1024 736v-64c0 -17 -15 -32 -32 -32h-224v-224c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v224h-224c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h224v224c0 17 15 32 32 32h64c17 0 32 -15 32 -32v-224h224c17 0 32 -15 32 -32zM1152 704c0 247 -201 448 -448 448
+s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -71 -57 -128 -128 -128c-34 0 -67 14 -90 38l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704c0 -142 -43 -282 -124 -399l343 -343
+c23 -23 37 -56 37 -90z" />
+ <glyph glyph-name="life-ring" unicode="&#xf1cd;" horiz-adv-x="1792"
+d="M896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM896 1408c-130 0 -253 -33 -361 -90l194 -194c53 18 109 28 167 28c59 0 114 -10 167 -28l194 194c-108 57 -231 90 -361 90zM218 279l194 194c-18 53 -28 109 -28 167
+c0 59 10 114 28 167l-194 194c-57 -108 -90 -231 -90 -361s33 -253 90 -361zM896 -128c130 0 253 33 361 90l-194 194c-53 -18 -108 -28 -167 -28c-58 0 -114 10 -167 28l-194 -194c108 -57 231 -90 361 -90zM896 256c212 0 384 172 384 384s-172 384 -384 384
+s-384 -172 -384 -384s172 -384 384 -384zM1380 473l194 -194c57 108 90 231 90 361s-33 253 -90 361l-194 -194c18 -53 28 -109 28 -167s-10 -114 -28 -167z" />
+ <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152"
+d="M320 768h512v192c0 141 -115 256 -256 256s-256 -115 -256 -256v-192zM1152 672v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h32v192c0 246 202 448 448 448s448 -202 448 -448v-192h32c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="git-square" unicode="&#xf1d2;"
+d="M582 228c0 -54 -49 -66 -93 -66c-43 0 -107 7 -107 63c0 55 54 64 98 64c42 0 102 -7 102 -61zM546 694c0 -50 -20 -85 -74 -85c-55 0 -77 32 -77 84s20 90 77 90c51 0 74 -42 74 -89zM712 769v125c-43 -16 -89 -29 -135 -29c-33 19 -71 29 -110 29
+c-114 0 -204 -84 -204 -200c0 -62 41 -148 103 -169v-3c-32 -14 -38 -53 -38 -85c0 -33 12 -60 41 -77v-3c-68 -22 -113 -65 -113 -139c0 -127 121 -163 227 -163c128 0 224 47 224 188c0 100 -91 130 -174 145c-28 5 -76 25 -76 60c0 33 18 47 49 52c102 20 167 99 167 204
+c0 18 -4 35 -10 52c16 4 33 8 49 13zM771 350h137c-2 27 -2 55 -2 82v387c0 23 0 46 2 69h-137c3 -23 3 -48 3 -71v-392c0 -25 0 -50 -3 -75zM1280 366v121c-20 -14 -44 -21 -68 -21c-45 0 -53 45 -53 82v225h52c18 0 35 -2 53 -2v117h-105c0 34 -2 68 3 102h-140
+c3 -18 4 -36 4 -55v-47h-60v-117c12 1 24 3 37 3c7 0 15 -1 23 -1v-2h-2v-217c0 -108 16 -212 148 -212c37 0 75 6 108 24zM924 1072c0 47 -35 91 -84 91s-85 -43 -85 -91c0 -47 37 -89 85 -89s84 43 84 89zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
+c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="mouse-pointer" unicode="&#xf245;" horiz-adv-x="1152"
+d="M1133 493c19 -18 24 -46 14 -69c-10 -24 -33 -40 -59 -40h-382l201 -476c14 -33 -2 -70 -34 -84l-177 -75c-33 -14 -70 2 -84 34l-191 452l-312 -312c-12 -12 -28 -19 -45 -19c-8 0 -17 2 -24 5c-24 10 -40 33 -40 59v1504c0 26 16 49 40 59c7 3 16 5 24 5
+c17 0 33 -6 45 -19z" />
+ <glyph glyph-name="sign-in" unicode="&#xf090;"
+d="M1184 640c0 -17 -7 -33 -19 -45l-544 -544c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45zM1536 992v-704c0 -159 -129 -288 -288 -288
+h-320c-17 0 -32 15 -32 32c0 28 -13 96 32 96h320c88 0 160 72 160 160v704c0 88 -72 160 -160 160h-288c-25 0 -64 -5 -64 32c0 28 -13 96 32 96h320c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="odnoklassniki-square" unicode="&#xf264;"
+d="M927 956c0 -88 -71 -159 -159 -159s-159 71 -159 159s71 159 159 159s159 -71 159 -159zM1141 593c-18 36 -69 67 -136 14c0 0 -91 -72 -237 -72s-237 72 -237 72c-67 53 -118 22 -136 -14c-32 -64 4 -95 85 -148c69 -44 165 -61 226 -67l-51 -52
+c-72 -72 -142 -142 -191 -190c-29 -29 -29 -76 0 -105l9 -9c29 -29 76 -29 105 0l191 191c72 -73 142 -143 191 -191c29 -29 76 -29 105 0l9 9c29 29 29 76 0 105l-191 190l-52 52c62 6 156 23 225 67c81 53 117 84 85 148zM1092 956c0 179 -145 324 -324 324
+s-324 -145 -324 -324s145 -324 324 -324s324 145 324 324zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="tag" unicode="&#xf02b;" horiz-adv-x="1515"
+d="M448 1088c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1515 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-715 716c-51 50 -91 147 -91 218v416c0 70 58 128 128 128h416c71 0 168 -40 219 -91
+l715 -714c23 -24 37 -57 37 -91z" />
+ <glyph glyph-name="align-justify" unicode="&#xf039;" horiz-adv-x="1792"
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 576v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 960v-128
+c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 1344v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="hospital-o" unicode="&#xf0f8;" horiz-adv-x="1408"
+d="M384 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 480v-64c0 -17 -15 -32 -32 -32h-64
+c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64
+c17 0 32 -15 32 -32zM896 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 480v-64
+c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64
+c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 -128h384v1152h-256v-32c0 -53 -43 -96 -96 -96h-448c-53 0 -96 43 -96 96v32h-256v-1152h384v224c0 17 15 32 32 32h320c17 0 32 -15 32 -32v-224zM896 1056v320c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-96h-128v96
+c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h64c17 0 32 15 32 32v96h128v-96c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1408 1088v-1280c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v1280c0 35 29 64 64 64h320v288c0 53 43 96 96 96
+h448c53 0 96 -43 96 -96v-288h320c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="chevron-circle-down" unicode="&#xf13a;"
+d="M813 237l454 454c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-307 -307l-307 307c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l454 -454c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
+" />
+ <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408"
+d="M1403 1241c10 -24 5 -52 -14 -70l-493 -493v-742c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-256 256c-12 12 -19 28 -19 45v486l-493 493c-19 18 -24 46 -14 70c10 23 33 39 59 39h1280c26 0 49 -16 59 -39z" />
+ <glyph glyph-name="google-plus" unicode="&#xf0d5;" horiz-adv-x="2304"
+d="M1437 623c0 -419 -281 -716 -704 -716c-405 0 -733 328 -733 733s328 733 733 733c198 0 363 -72 491 -192l-199 -191c-54 52 -149 113 -292 113c-250 0 -454 -207 -454 -463s204 -463 454 -463c290 0 399 209 416 316h-416v252h692c7 -37 12 -74 12 -122zM2304 745v-210
+h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
+ <glyph glyph-name="sticky-note-o" unicode="&#xf24a;"
+d="M1400 256h-248v-248c17 6 34 15 41 22l185 185c7 7 16 24 22 41zM1120 384h288v896h-1280v-1280h896v288c0 53 43 96 96 96zM1536 1312v-1024c0 -53 -31 -127 -68 -164l-184 -184c-37 -37 -111 -68 -164 -68h-1024c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1344
+c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="moon-o" unicode="&#xf186;" horiz-adv-x="1471"
+d="M1262 233c-36 -6 -73 -9 -110 -9c-371 0 -672 301 -672 672c0 127 37 251 104 357c-266 -79 -456 -323 -456 -613c0 -353 287 -640 640 -640c193 0 374 88 494 233zM1465 318c-125 -271 -399 -446 -697 -446c-423 0 -768 345 -768 768c0 415 325 752 739 767
+c28 1 51 -15 61 -39c11 -25 4 -54 -15 -72c-114 -104 -177 -246 -177 -400c0 -300 244 -544 544 -544c79 0 155 17 228 51c25 11 53 6 72 -13s24 -48 13 -72z" />
+ <glyph glyph-name="comments-o" unicode="&#xf0e6;" horiz-adv-x="1792"
+d="M704 1152c-312 0 -576 -176 -576 -384c0 -110 74 -216 202 -290l97 -56l-35 -84c21 12 42 25 62 39l44 31l53 -10c50 -9 101 -14 153 -14c312 0 576 176 576 384s-264 384 -576 384zM704 1280c389 0 704 -229 704 -512s-315 -512 -704 -512c-61 0 -120 6 -176 16
+c-83 -59 -177 -102 -278 -128c-27 -7 -56 -12 -86 -16h-3c-15 0 -29 12 -32 29c-4 19 9 31 20 44c39 44 83 83 117 166c-162 94 -266 239 -266 401c0 283 315 512 704 512zM1526 111c34 -83 78 -122 117 -166c11 -13 24 -25 20 -44c-4 -18 -19 -31 -35 -29
+c-30 4 -59 9 -86 16c-101 26 -195 69 -278 128c-56 -10 -115 -16 -176 -16c-181 0 -347 50 -472 132c29 -2 59 -4 88 -4c215 0 418 62 573 174c167 122 259 287 259 466c0 52 -8 103 -23 152c169 -93 279 -241 279 -408c0 -163 -104 -307 -266 -401z" />
+ <glyph glyph-name="lastfm" unicode="&#xf202;" horiz-adv-x="1792"
+d="M1292 832c0 -6 8 -34 10 -41c27 -82 90 -99 165 -120c167 -47 325 -136 325 -332c0 -199 -166 -339 -360 -339c-322 0 -422 394 -515 634c-77 198 -158 314 -381 314c-198 0 -372 -190 -372 -385c0 -207 155 -399 370 -399c95 0 194 20 258 95c31 35 61 73 83 116
+l84 -152c-11 -25 -27 -49 -44 -70l1 -1c-101 -117 -239 -152 -388 -152c-302 0 -528 267 -528 561c0 285 248 550 536 550c478 0 502 -414 664 -747c44 -92 119 -200 233 -200c104 0 196 67 196 177c0 238 -437 76 -499 467c-2 11 -3 22 -3 33c0 148 139 275 286 270
+c88 -3 141 -6 211 -68h-1c27 -25 47 -59 68 -88l-129 -99c-15 28 -29 51 -54 70v1c-24 22 -67 21 -97 21c-65 0 -119 -49 -119 -116z" />
+ <glyph glyph-name="peertube" unicode="&#xf2e4;" horiz-adv-x="1350"
+d="M0 1536l675 -450l-675 -450v900zM675 1086l675 -450l-675 -450v900zM0 636l675 -450l-675 -450v900z" />
+ <glyph glyph-name="pagelines" unicode="&#xf18c;" horiz-adv-x="1402"
+d="M1402 433c-201 -499 -683 -197 -683 -197c-148 -299 -392 -491 -674 -492c-25 0 -45 20 -45 45s20 44 45 44c235 1 440 156 574 402c-150 -58 -433 -102 -590 300c398 164 581 -41 651 -166c36 89 62 186 79 291c0 0 -510 -80 -546 358c435 175 557 -280 557 -280
+c6 61 12 192 12 195c0 0 -388 269 -139 603c455 -157 224 -593 224 -593c2 -6 2 -87 0 -122c0 0 165 325 498 210c-15 -489 -518 -388 -518 -388c-16 -100 -41 -195 -73 -283c0 0 303 335 628 73z" />
+ <glyph glyph-name="credit-card-alt" unicode="&#xf283;" horiz-adv-x="2304"
+d="M0 32v608h2304v-608c0 -88 -72 -160 -160 -160h-1984c-88 0 -160 72 -160 160zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408c88 0 160 -72 160 -160v-224h-2304v224c0 88 72 160 160 160h1984z" />
+ <glyph glyph-name="file-word-o" unicode="&#xf1c2;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM233 768h300v-107h-90l99 -438c4 -16 6 -33 7 -46l2 -21h4l4 21c3 13 4 30 8 46l144 545h114l144 -545c4 -16 6 -33 9 -46c1 -7 3 -15 3 -21h4l2 21c1 13 3 30 7 46l99 438h-90v107h300v-107h-70l-164 -661h-159l-128 485c-5 16 -6 32 -9 46l-3 24h-4
+c0 -8 -1 -16 -2 -24c-2 -16 -5 -31 -10 -46l-128 -485h-159l-164 661h-70v107z" />
+ <glyph glyph-name="map" unicode="&#xf279;" horiz-adv-x="1792"
+d="M512 1536c17 0 32 -15 32 -32v-1472c0 -12 -7 -23 -17 -28l-480 -256c-5 -3 -10 -4 -15 -4c-17 0 -32 15 -32 32v1472c0 12 7 23 17 28l480 256c5 3 10 4 15 4zM1760 1536c17 0 32 -15 32 -32v-1472c0 -12 -7 -23 -17 -28l-480 -256c-5 -3 -10 -4 -15 -4
+c-17 0 -32 15 -32 32v1472c0 12 7 23 17 28l480 256c5 3 10 4 15 4zM640 1536c5 0 10 -1 14 -3l512 -256c11 -6 18 -17 18 -29v-1472c0 -17 -15 -32 -32 -32c-5 0 -10 1 -14 3l-512 256c-11 6 -18 17 -18 29v1472c0 17 15 32 32 32z" />
+ <glyph glyph-name="object-ungroup" unicode="&#xf248;" horiz-adv-x="2304"
+d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
+v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
+ <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792"
+d="M640 1280h512v128h-512v-128zM1792 640v-480c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v480h672v-160c0 -35 29 -64 64 -64h320c35 0 64 29 64 64v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384c0 88 72 160 160 160h352v160
+c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h352c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="stop" unicode="&#xf04d;"
+d="M1536 1344v-1408c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="clone" unicode="&#xf24d;" horiz-adv-x="1792"
+d="M1664 -96v1088c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32v-1088c0 -17 15 -32 32 -32h1088c17 0 32 15 32 32zM1792 992v-1088c0 -88 -72 -160 -160 -160h-1088c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1088c88 0 160 -72 160 -160zM1408 1376v-160
+h-128v160c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32v-1088c0 -17 15 -32 32 -32h160v-128h-160c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1088c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="thermometer-full" unicode="&#xf2c7;" horiz-adv-x="1024"
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v907h128v-907c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+ <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1402"
+d="M1376 1376c64 -64 0 -224 -96 -320l-161 -161l160 -696c3 -12 -2 -25 -12 -33l-128 -96c-5 -4 -12 -6 -19 -6c-2 0 -4 0 -7 1c-9 2 -17 7 -21 16l-279 508l-259 -259l53 -194c3 -11 0 -22 -8 -31l-96 -96c-6 -6 -15 -9 -23 -9h-2c-10 1 -18 5 -24 13l-189 252l-252 189
+c-8 5 -12 14 -13 23s3 18 9 25l96 97c6 6 15 9 23 9c3 0 6 0 8 -1l194 -53l259 259l-508 279c-9 5 -15 14 -17 24c-1 9 2 20 9 27l128 128c8 7 20 11 30 8l665 -159l160 160c96 96 256 160 320 96z" />
+ <glyph glyph-name="check-square" unicode="&#xf14a;"
+d="M685 237l614 614c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-467 -467l-211 211c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l358 -358c25 -25 65 -25 90 0zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
+c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="window-maximize" unicode="&#xf2d0;" horiz-adv-x="1792"
+d="M256 128h1280v768h-1280v-768zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="github" unicode="&#xf09b;"
+d="M768 1408c424 0 768 -344 768 -768c0 -339 -220 -627 -525 -729c-39 -7 -53 17 -53 37c0 25 1 108 1 211c0 72 -24 118 -52 142c171 19 351 84 351 379c0 84 -30 152 -79 206c8 20 34 98 -8 204c-64 20 -211 -79 -211 -79c-61 17 -127 26 -192 26s-131 -9 -192 -26
+c0 0 -147 99 -211 79c-42 -106 -16 -184 -8 -204c-49 -54 -79 -122 -79 -206c0 -294 179 -360 350 -379c-22 -20 -42 -54 -49 -103c-44 -20 -156 -54 -223 64c-42 73 -118 79 -118 79c-75 1 -5 -47 -5 -47c50 -23 85 -112 85 -112c45 -137 259 -91 259 -91
+c0 -64 1 -124 1 -143c0 -20 -14 -44 -53 -37c-305 102 -525 390 -525 729c0 424 344 768 768 768zM291 305c-2 -4 -8 -5 -13 -2c-6 3 -9 8 -7 12c2 3 7 4 13 2c6 -3 9 -8 7 -12zM322 271c-4 -4 -11 -2 -16 3c-5 6 -6 13 -2 16c4 4 11 2 16 -3c5 -6 6 -13 2 -16zM352 226
+c-4 -3 -12 0 -17 7s-5 15 0 18c5 4 13 1 17 -6c5 -7 5 -15 0 -19zM394 184c-4 -5 -13 -4 -20 3c-7 6 -9 15 -4 19c4 5 13 4 20 -3c6 -6 8 -15 4 -19zM451 159c-2 -6 -11 -9 -19 -6c-9 2 -15 9 -13 15s11 9 19 7c9 -3 15 -10 13 -16zM514 154c0 -6 -7 -11 -16 -11
+c-10 -1 -17 4 -17 11c0 6 7 11 16 11c9 1 17 -4 17 -11zM572 164c1 -6 -5 -12 -14 -14s-17 2 -18 8c-1 7 5 13 14 15c9 1 17 -3 18 -9z" />
+ <glyph glyph-name="mastodon" unicode="&#xf2e1;"
+d="M1503 425c-23 -116 -202 -243 -408 -268c-108 -13 -214 -25 -327 -20c-185 8 -330 44 -330 44c0 -18 1 -35 3 -51c24 -182 181 -193 329 -198c150 -5 284 37 284 37l6 -136s-105 -56 -292 -66c-103 -6 -230 3 -379 42c-323 85 -379 430 -388 779c-3 104 -1 201 -1 283
+c0 357 235 462 235 462c118 54 320 77 531 79h5c211 -2 413 -25 531 -79c0 0 234 -105 234 -462c0 0 3 -263 -33 -446zM1260 843c0 88 -22 160 -68 211c-47 52 -107 79 -183 79c-88 0 -154 -34 -198 -101l-43 -72l-43 72c-44 67 -110 101 -198 101c-76 0 -136 -27 -183 -79
+c-45 -52 -68 -123 -68 -211v-432h171v420c0 88 38 133 112 133c82 0 124 -54 124 -159v-229h170v229c0 105 42 159 124 159c74 0 112 -45 112 -133v-420h171v432v0z" />
+ <glyph glyph-name="envelope-open" unicode="&#xf2b6;" horiz-adv-x="1792"
+d="M1792 882v-978c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v978c0 9 4 18 11 24c105 92 106 103 628 484c63 46 174 146 257 146s195 -101 257 -146c522 -381 523 -392 628 -484c7 -6 11 -15 11 -24zM1228 297c156 113 265 192 345 252c14 10 17 30 6 44
+l-38 52c-11 14 -31 17 -45 6c-79 -58 -187 -138 -343 -250c-62 -45 -174 -145 -257 -145s-195 100 -257 145c-156 113 -264 192 -343 250c-14 11 -34 8 -45 -6l-38 -52c-11 -14 -8 -34 6 -44c80 -60 189 -139 345 -252c78 -56 201 -169 332 -169c132 0 258 115 332 169z" />
+ <glyph glyph-name="step-backward" unicode="&#xf048;" horiz-adv-x="1024"
+d="M979 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-678c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-678c3 7 7 13 13 19z" />
+ <glyph glyph-name="wheelchair" unicode="&#xf193;" horiz-adv-x="1629"
+d="M1023 349l102 -204c-77 -238 -299 -401 -549 -401c-317 0 -576 259 -576 576c0 242 152 458 379 541l17 -131c-163 -72 -268 -232 -268 -410c0 -247 201 -448 448 -448c257 0 465 220 447 477zM1571 249l58 -114l-256 -128c-9 -5 -19 -7 -29 -7c-24 0 -47 14 -57 35
+l-239 477h-472c-32 0 -60 25 -64 57l-96 779c-1 10 3 32 6 42c19 69 83 114 154 114c88 0 160 -72 160 -160c0 -91 -80 -169 -172 -159l37 -289h423v-128h-407l16 -128h455c24 0 47 -14 57 -35l228 -455z" />
+ <glyph glyph-name="cutlery" unicode="&#xf0f5;" horiz-adv-x="1408"
+d="M640 1472v-640c0 -81 -52 -154 -128 -181v-779c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v779c-76 27 -128 100 -128 181v640c0 35 29 64 64 64s64 -29 64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64v416c0 35 29 64 64 64s64 -29 64 -64v-416
+c0 -35 29 -64 64 -64s64 29 64 64v416c0 35 29 64 64 64s64 -29 64 -64zM1408 1472v-1600c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v512h-224c-17 0 -32 15 -32 32v800c0 176 144 320 320 320h256c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="microphone-slash" unicode="&#xf131;" horiz-adv-x="1382"
+d="M258 591l-101 -101c-27 66 -42 138 -42 214v128c0 35 29 64 64 64s64 -29 64 -64v-128c0 -39 6 -77 15 -113zM1372 1193l-361 -361v-128c0 -176 -144 -320 -320 -320c-38 0 -75 7 -109 19l-96 -96c61 -32 131 -51 205 -51c247 0 448 201 448 448v128c0 35 29 64 64 64
+s64 -29 64 -64v-128c0 -296 -224 -540 -512 -572v-132h256c35 0 64 -29 64 -64s-29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h256v132c-85 9 -165 38 -235 81l-254 -254c-13 -13 -33 -13 -46 0l-82 82c-13 13 -13 33 0 46l1234 1234c13 13 33 13 46 0l82 -82
+c13 -13 13 -33 0 -46zM992 1325l-621 -621v512c0 176 144 320 320 320c138 0 256 -89 301 -211z" />
+ <glyph glyph-name="user-plus" unicode="&#xf234;" horiz-adv-x="2048"
+d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1664 512h352c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-352v-352c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v352h-352c-17 0 -32 15 -32 32v192
+c0 17 15 32 32 32h352v352c0 17 15 32 32 32h192c17 0 32 -15 32 -32v-352zM928 288c0 -70 58 -128 128 -128h256v-238c-49 -36 -111 -50 -171 -50h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c98 -75 193 -122 319 -122s221 47 319 122
+c12 10 23 17 39 17c85 0 160 -32 217 -96h-223c-70 0 -128 -58 -128 -128v-192z" />
+ <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1728"
+d="M576 128c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM192 640h384v256h-158c-4 0 -19 -6 -22 -9l-195 -195c-3 -3 -9 -18 -9 -22v-30zM1472 128c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM1728 1216
+v-1024c0 -74 -78 -64 -128 -64c0 -141 -115 -256 -256 -256s-256 115 -256 256h-384c0 -141 -115 -256 -256 -256s-256 115 -256 256h-64c-50 0 -128 -10 -128 64c0 35 29 64 64 64v320c0 71 -10 150 45 205l198 198c25 25 73 45 109 45h160v192c0 35 29 64 64 64h1024
+c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1641"
+d="M363 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1007 484l-682 -682c-23 -23 -56 -37 -90 -37s-67 14 -91 37l-106 108c-24 23 -38 56 -38 90s14 67 38 91l681 681c52 -131 157 -236 288 -288zM1641 919c0 -33 -12 -74 -23 -106
+c-63 -178 -234 -301 -423 -301c-247 0 -448 201 -448 448s201 448 448 448c73 0 168 -22 229 -63c10 -7 16 -16 16 -28c0 -11 -7 -22 -16 -28l-293 -169v-224l193 -107c33 19 265 165 285 165s32 -15 32 -35z" />
+ <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1856"
+d="M576 128c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM192 640h384v256h-158c-6 -1 -17 -5 -22 -9l-195 -195c-3 -5 -8 -16 -9 -22v-30zM1472 128c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1600 800
+v192c0 18 -14 32 -32 32h-224v224c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-224h-224c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h224v-224c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v224h224c18 0 32 14 32 32zM1856 1344v-1152c0 -35 -29 -64 -64 -64h-192
+c0 -141 -114 -256 -256 -256c-141 0 -256 115 -256 256h-384c0 -141 -114 -256 -256 -256s-256 115 -256 256h-128c-35 0 -64 29 -64 64s29 64 64 64v416c0 35 20 84 45 109l198 198c25 25 74 45 109 45h160v320c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="cc-visa" unicode="&#xf1f0;" horiz-adv-x="2304"
+d="M1975 546h-138s14 37 66 179c-1 -1 14 37 22 61l12 -55c31 -153 38 -185 38 -185zM531 611l-58 295c-8 41 -39 54 -75 54h-268l-2 -13c184 -47 335 -147 403 -336zM710 960l-162 -438l-17 89c-35 93 -120 179 -216 218l135 -510h175l261 641h-176zM849 318h166l104 642
+h-166zM1617 944c-33 13 -85 27 -149 27c-164 0 -279 -87 -280 -212c-1 -92 82 -143 145 -174c65 -31 86 -52 86 -80c0 -43 -52 -62 -99 -62c-67 0 -103 8 -156 33l-22 11l-23 -144c39 -18 110 -34 185 -34c174 -1 287 86 289 219c0 73 -45 128 -140 174
+c-58 29 -93 50 -93 80c0 27 30 55 95 55c54 1 94 -10 124 -24l15 -8zM2042 960h-128c-40 0 -70 -12 -87 -54l-246 -588h174c28 79 35 96 35 96h212s5 -22 20 -96h154zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128
+h2048c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="superscript" unicode="&#xf12b;" horiz-adv-x="1529"
+d="M892 167v-167h-248l-159 252l-24 42c-6 7 -9 14 -11 21h-3c-2 -7 -6 -14 -9 -21c-6 -12 -15 -28 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228c9 -14 16 -29 23 -42c6 -7 9 -14 11 -21h3c2 7 6 14 11 21l25 42l140 228h257v-168h-125
+l-184 -267l204 -296h109zM1529 846v-206h-514l-3 27c-2 14 -4 33 -4 46c0 273 350 296 350 441c0 52 -47 87 -100 87c-38 0 -72 -18 -97 -39c-13 -11 -25 -25 -36 -38l-105 92c18 25 38 46 63 66c42 33 103 65 188 65c145 0 246 -85 246 -218c0 -240 -332 -260 -346 -403
+h232v80h126z" />
+ <glyph glyph-name="tty" unicode="&#xf1e4;" horiz-adv-x="1792"
+d="M448 224v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM256 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM832 224v-192c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM640 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM66 768c-37 0 -66 29 -66 65v129h514v-129c0 -36 -29 -65 -65 -65h-383zM1216 224v-192
+c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1024 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1600 224v-192c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1408 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 1016v-13h-514v10c0 37 -32 104 -382 102c-350 -1 -382 -65 -382 -102v-10h-514v13
+c0 67 120 392 896 392c775 0 896 -325 896 -392zM1792 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 962v-129c0 -36 -29 -65 -65 -65h-384c-36 0 -65 29 -65 65v129h514z" />
+ <glyph glyph-name="linode" unicode="&#xf2b8;" horiz-adv-x="1494"
+d="M309 1l202 -214l-34 236l-216 213zM535 -225l274 218l-11 245l-300 -215zM224 413l227 -213l-48 327l-245 204zM474 189l317 214l-14 324l-352 -200zM822 178l95 -80l-2 239l-103 79c0 -8 4 -22 -4 -28l-78 -52l85 -70c10 -8 7 -76 7 -88zM117 930l256 -200l-68 465
+l-279 173zM1152 267l15 234l-230 -164l2 -240zM396 722l373 194l-19 441l-423 -163zM1249 357l20 233l-226 142l-2 -105l144 -95c3 -2 5 -6 4 -9l-7 -119zM1440 496l30 222l-179 -128l-20 -228zM1252 329l-71 49l-8 -117c0 -3 -1 -6 -4 -8l-234 -187c-4 -3 -10 -3 -14 0
+l-98 83l7 -161c0 -3 -1 -6 -4 -8l-293 -234c-2 -1 -4 -2 -6 -2c-3 1 -6 1 -8 3l-228 242c-5 5 -54 252 -59 277c-1 4 2 9 5 11l61 37c-12 11 -93 82 -95 92l-72 351c-1 4 1 9 6 12l94 45c-16 12 -132 96 -135 108l-96 466c-1 6 2 11 7 13l433 135c2 0 5 0 8 -1l317 -153
+c3 -2 6 -6 6 -9l20 -463c0 -4 -2 -8 -6 -10l-118 -61l126 -85c3 -1 5 -5 5 -8l5 -123l121 74c3 2 8 2 11 0l84 -56l3 110c0 3 2 7 5 9l206 126c4 2 8 2 11 0l245 -135c2 -2 4 -4 5 -7c2 -7 -31 -232 -34 -255c0 -3 -2 -6 -4 -7l-191 -153c-4 -3 -9 -3 -13 0z" />
+ <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280"
+d="M1088 576v640h-448v-1137c51 27 133 74 213 137c107 84 235 215 235 360zM1280 1344v-768c0 -421 -589 -687 -614 -698c-8 -4 -17 -6 -26 -6s-18 2 -26 6c-25 11 -614 277 -614 698v768c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="user-md" unicode="&#xf0f0;" horiz-adv-x="1408"
+d="M384 192c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM1408 131c0 -163 -107 -259 -267 -259h-874c-160 0 -267 96 -267 259c0 199 40 513 278 565c-16 -38 -22 -79 -22 -120v-203c-77 -27 -128 -100 -128 -181c0 -106 86 -192 192 -192
+s192 86 192 192c0 81 -52 154 -128 181v203c0 33 3 66 25 93c84 -66 188 -104 295 -104s211 38 295 104c22 -27 25 -60 25 -93v-64c-141 0 -256 -115 -256 -256v-89c-20 -18 -32 -44 -32 -71c0 -53 43 -96 96 -96s96 43 96 96c0 27 -12 53 -32 71v89c0 70 58 128 128 128
+s128 -58 128 -128v-89c-20 -18 -32 -44 -32 -71c0 -53 43 -96 96 -96s96 43 96 96c0 27 -12 53 -32 71v89c0 91 -49 176 -128 221c0 73 7 151 -22 219c238 -52 278 -366 278 -565zM1088 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
+s384 -172 384 -384z" />
+ <glyph glyph-name="xmpp" unicode="&#xf2f9;" horiz-adv-x="1542"
+d="M1536 1314c47 -398 -206 -904 -657 -1199c122 -101 261 -177 414 -216v-27c-165 14 -320 59 -461 128l-30 15l-1 1l-6 3c-11 6 -30 16 -41 22c-94 -51 -193 -90 -297 -116c-68 -19 -139 -33 -211 -42v28c145 37 279 107 396 201c-426 296 -682 805 -637 1192l93 -33v0
+l273 -81c-1 -16 -1 -32 -1 -49c0 -296 147 -656 394 -917c254 262 406 628 406 929c0 17 0 33 -1 49l274 81z" />
+ <glyph glyph-name="pie-chart" unicode="&#xf200;" horiz-adv-x="1728"
+d="M768 646l546 -546c-139 -141 -333 -228 -546 -228c-424 0 -768 344 -768 768s344 768 768 768v-762zM955 640h773c0 -213 -87 -407 -228 -546zM1664 768h-768v768c424 0 768 -344 768 -768z" />
+ <glyph glyph-name="align-left" unicode="&#xf036;" horiz-adv-x="1792"
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1408 576v-128c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1280c35 0 64 -29 64 -64zM1664 960v-128
+c0 -35 -29 -64 -64 -64h-1536c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1536c35 0 64 -29 64 -64zM1280 1344v-128c0 -35 -29 -64 -64 -64h-1152c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="motorcycle" unicode="&#xf21c;" horiz-adv-x="2304"
+d="M2301 500c32 -281 -197 -517 -476 -499c-214 14 -392 185 -414 399c-16 152 44 289 146 381l-71 107c-126 -105 -206 -262 -206 -438c0 -36 -28 -66 -64 -66h-325c-31 -217 -217 -384 -443 -384c-247 0 -448 201 -448 448s201 448 448 448c53 0 104 -10 152 -27l24 45
+c-77 69 -178 110 -304 110h-64c-35 0 -64 29 -64 64s29 64 64 64h128c224 0 338 -92 384 -128h627l-85 128h-222c-39 0 -70 35 -63 75c5 31 35 53 66 53h253c21 0 41 -11 53 -28l70 -105l114 114c12 12 29 19 46 19h101c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-179
+l115 -172c81 39 175 55 275 36c191 -35 340 -195 362 -388zM448 128c155 0 284 110 314 256h-314c-22 0 -43 12 -55 31c-11 19 -12 43 -1 63l147 277c-29 8 -59 13 -91 13c-176 0 -320 -144 -320 -320s144 -320 320 -320zM1856 128c176 0 320 144 320 320s-144 320 -320 320
+c-43 0 -83 -9 -121 -24l174 -260c20 -30 12 -70 -17 -89c-11 -8 -24 -11 -36 -11c-21 0 -41 10 -53 29l-174 260c-57 -58 -93 -137 -93 -225c0 -176 144 -320 320 -320z" />
+ <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1685"
+d="M970 1084l316 -316l-572 -572l-316 316zM760 105l618 618c25 25 25 65 0 90l-362 362c-24 24 -66 24 -90 0l-618 -618c-25 -25 -25 -65 0 -90l362 -362c12 -12 27 -18 44 -18s34 6 46 18zM1648 742l-906 -908c-50 -49 -133 -49 -182 0l-126 126c75 75 75 197 0 272
+s-197 75 -272 0l-124 126c-50 49 -50 131 0 181l906 906c49 50 132 50 182 0l124 -125c-75 -75 -75 -197 0 -272s197 -75 272 0l126 -125c49 -50 49 -132 0 -181z" />
+ <glyph glyph-name="battery-half" unicode="&#xf242;" horiz-adv-x="2304"
+d="M256 256v768h896v-768h-896zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856
+c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+ <glyph glyph-name="spotify" unicode="&#xf1bc;"
+d="M1127 326c0 28 -11 39 -30 51c-129 77 -279 115 -447 115c-98 0 -192 -13 -287 -34c-23 -5 -42 -20 -42 -52c0 -25 19 -49 49 -49c9 0 25 5 37 8c78 16 160 27 243 27c147 0 286 -36 397 -103c12 -7 20 -11 33 -11c25 0 47 20 47 48zM1223 541c0 27 -10 46 -35 61
+c-153 91 -347 141 -548 141c-129 0 -217 -18 -303 -42c-32 -9 -48 -31 -48 -64s27 -60 60 -60c14 0 22 4 37 8c70 19 154 33 251 33c190 0 363 -50 488 -124c11 -6 22 -13 38 -13c34 0 60 27 60 60zM1331 789c0 37 -16 56 -40 70c-173 101 -410 148 -636 148
+c-133 0 -255 -15 -364 -47c-28 -8 -54 -32 -54 -74c0 -41 31 -73 72 -73c15 0 29 5 40 8c97 27 202 37 307 37c208 0 424 -46 563 -129c14 -8 24 -12 40 -12c38 0 72 30 72 72zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
+" />
+ <glyph glyph-name="dot-circle-o" unicode="&#xf192;"
+d="M1024 640c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
+s768 -344 768 -768z" />
+ <glyph glyph-name="facebook-square" unicode="&#xf082;"
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-188v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-532c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
+h960z" />
+ <glyph glyph-name="angle-up" unicode="&#xf106;" horiz-adv-x="998"
+d="M998 352c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="glide" unicode="&#xf2a5;"
+d="M866 1021c0 -32 -7 -63 -13 -94c-21 -100 -41 -200 -62 -300c-3 -14 -3 -14 -18 -15c-10 -1 -21 -2 -31 -2c-86 0 -110 93 -110 163c0 104 41 243 138 298c16 8 33 14 51 14c41 0 45 -30 45 -64zM1352 597c0 18 -74 135 -91 142c-8 3 -25 8 -34 8
+c-82 0 -156 -37 -226 -77l-2 2c16 107 52 202 52 313c0 159 -85 233 -242 233c-23 0 -46 -3 -68 -6c-197 -35 -317 -260 -317 -445c0 -196 113 -304 308 -304c4 0 25 2 25 -3c0 -2 0 -3 -1 -5c-4 -38 -16 -80 -26 -117c-15 -55 -67 -150 -134 -150c-29 0 -42 20 -42 47
+c0 87 100 139 102 144c0 4 -5 8 -7 10c-31 28 -82 51 -124 51c-76 0 -117 -122 -117 -184c0 -116 73 -196 190 -196c173 0 299 182 338 332c11 44 19 89 30 133c2 9 5 13 14 18c71 36 146 60 227 60c44 0 83 -8 127 -18c1 -1 3 -1 4 -1c6 0 14 7 14 13zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="shopping-basket" unicode="&#xf291;" horiz-adv-x="2048"
+d="M1920 768c71 0 128 -57 128 -128s-57 -128 -128 -128h-15l-115 -662c-11 -61 -64 -106 -126 -106h-1280c-62 0 -115 45 -126 106l-115 662h-15c-71 0 -128 57 -128 128s57 128 128 128h1792zM485 -32c35 3 62 34 59 69l-32 416c-3 35 -34 62 -69 59s-62 -34 -59 -69
+l32 -416c3 -33 31 -59 64 -59h5zM896 32v416c0 35 -29 64 -64 64s-64 -29 -64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64zM1280 32v416c0 35 -29 64 -64 64s-64 -29 -64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64zM1632 27l32 416c3 35 -24 66 -59 69s-66 -24 -69 -59
+l-32 -416c-3 -35 24 -66 59 -69h5c33 0 61 26 64 59zM476 1244l-93 -412h-132l101 441c26 117 129 199 249 199h167c0 35 29 64 64 64h384c35 0 64 -29 64 -64h167c120 0 223 -82 249 -199l101 -441h-132l-93 412c-14 59 -65 100 -125 100h-167c0 -35 -29 -64 -64 -64h-384
+c-35 0 -64 29 -64 64h-167c-60 0 -111 -41 -125 -100z" />
+ <glyph glyph-name="user-o" unicode="&#xf2c0;"
+d="M1201 752c141 -41 335 -180 335 -635c0 -206 -153 -373 -341 -373h-854c-188 0 -341 167 -341 373c0 455 194 594 335 635c-50 79 -79 172 -79 272c0 282 230 512 512 512s512 -230 512 -512c0 -100 -29 -193 -79 -272zM768 1408c-212 0 -384 -172 -384 -384
+s172 -384 384 -384s384 172 384 384s-172 384 -384 384zM1195 -128c117 0 213 109 213 245c0 315 -106 512 -304 522c-90 -79 -207 -127 -336 -127s-246 48 -336 127c-198 -10 -304 -207 -304 -522c0 -136 96 -245 213 -245h854z" />
+ <glyph glyph-name="paperclip" unicode="&#xf0c6;" horiz-adv-x="1400"
+d="M1400 151c0 -156 -119 -275 -275 -275c-88 0 -173 38 -235 100l-777 776c-71 72 -113 170 -113 271c0 212 167 381 379 381c102 0 200 -41 273 -113l605 -606c6 -6 10 -14 10 -22c0 -21 -56 -77 -77 -77c-9 0 -17 4 -23 10l-606 607c-48 47 -113 77 -181 77
+c-142 0 -252 -115 -252 -256c0 -68 28 -133 76 -181l776 -777c38 -38 91 -63 145 -63c85 0 148 63 148 148c0 55 -25 107 -63 145l-581 581c-16 15 -38 24 -60 24c-38 0 -67 -28 -67 -67c0 -22 10 -43 25 -59l410 -410c6 -6 10 -14 10 -22c0 -21 -57 -78 -78 -78
+c-8 0 -16 4 -22 10l-410 410c-40 39 -63 94 -63 149c0 110 86 196 196 196c56 0 110 -23 149 -63l581 -581c63 -62 100 -147 100 -235z" />
+ <glyph glyph-name="deviantart" unicode="&#xf1bd;" horiz-adv-x="1024"
+d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273c-1 0 -28 -28 -30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273c1 0 28 28 30 30h301v-303z" />
+ <glyph glyph-name="file-audio-o" unicode="&#xf1c7;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM620 686c12 -5 20 -17 20 -30v-544c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -16 3 -23 9l-166 167h-131c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h131l166 167c10 9 23 12 35 7zM1037 -3c-14 0 -28 5 -40 15c-28 22 -32 62 -9 90
+c65 80 100 178 100 282s-35 202 -100 282c-23 28 -19 68 9 91c27 22 68 18 90 -10c83 -102 129 -231 129 -363s-46 -261 -129 -363c-13 -16 -31 -24 -50 -24zM826 145c-15 0 -31 6 -44 17c-25 24 -27 65 -2 91c33 36 52 82 52 131s-19 95 -52 131c-25 26 -23 67 2 91
+c26 24 67 23 91 -3c56 -60 87 -137 87 -219s-31 -159 -87 -219c-13 -13 -30 -20 -47 -20z" />
+ <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1012"
+d="M976 229l35 -159c4 -16 -5 -32 -20 -37c-4 -1 -97 -33 -217 -33c-312 0 -563 188 -647 482h-95c-18 0 -32 15 -32 32v113c0 17 14 32 32 32h66c-1 32 -1 70 1 105h-67c-18 0 -32 14 -32 32v114c0 18 14 32 32 32h98c89 280 345 466 644 466c104 0 190 -22 194 -23
+c8 -2 15 -8 20 -15c4 -7 5 -16 3 -24l-43 -159c-4 -17 -21 -27 -38 -22c-1 0 -69 17 -140 17c-168 0 -309 -91 -376 -240h468c10 0 19 -4 25 -12c6 -7 9 -17 7 -26l-24 -114c-3 -15 -16 -26 -32 -26h-488c-3 -32 -2 -66 0 -105h459c10 0 19 -5 25 -12c6 -8 8 -18 6 -27
+l-24 -112c-3 -15 -16 -26 -31 -26h-387c64 -156 208 -254 378 -254c87 0 158 24 159 24c8 3 18 2 26 -2c8 -5 13 -13 15 -21z" />
+ <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1856"
+d="M1664 896c0 106 -86 192 -192 192h-64v-384h64c106 0 192 86 192 192zM0 128h1792c0 -141 -115 -256 -256 -256h-1280c-141 0 -256 115 -256 256zM1856 896c0 -212 -172 -384 -384 -384h-64v-32c0 -123 -101 -224 -224 -224h-704c-123 0 -224 101 -224 224v736
+c0 35 29 64 64 64h1152c212 0 384 -172 384 -384z" />
+ <glyph glyph-name="times-circle-o" unicode="&#xf05c;"
+d="M1097 457l-146 -146c-13 -13 -33 -13 -46 0l-137 137l-137 -137c-13 -13 -33 -13 -46 0l-146 146c-13 13 -13 33 0 46l137 137l-137 137c-13 13 -13 33 0 46l146 146c13 13 33 13 46 0l137 -137l137 137c13 13 33 13 46 0l146 -146c13 -13 13 -33 0 -46l-137 -137
+l137 -137c13 -13 13 -33 0 -46zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="weixin" unicode="&#xf1d7;" horiz-adv-x="2048"
+d="M580 1075c0 55 -36 91 -91 91c-54 0 -109 -36 -109 -91c0 -54 55 -90 109 -90c55 0 91 36 91 90zM1323 568c0 36 -36 72 -91 72c-36 0 -72 -36 -72 -72c0 -37 36 -73 72 -73c55 0 91 36 91 73zM1087 1075c0 55 -36 91 -90 91c-55 0 -109 -36 -109 -91
+c0 -54 54 -90 109 -90c54 0 90 36 90 90zM1722 568c0 36 -37 72 -91 72c-36 0 -72 -36 -72 -72c0 -37 36 -73 72 -73c54 0 91 36 91 73zM1456 965c-23 3 -46 4 -70 4c-344 0 -616 -257 -616 -573c0 -53 8 -104 23 -152c-23 -2 -45 -3 -68 -3c-91 0 -163 18 -254 36
+l-253 -127l72 218c-181 127 -290 291 -290 490c0 345 326 616 725 616c356 0 669 -217 731 -509zM2048 404c0 -163 -108 -308 -254 -417l55 -181l-199 109c-73 -18 -146 -37 -218 -37c-345 0 -616 236 -616 526s271 526 616 526c326 0 616 -236 616 -526z" />
+ <glyph glyph-name="internet-explorer" unicode="&#xf26b;" horiz-adv-x="1792"
+d="M1792 599c0 -35 -2 -70 -7 -104h-1151c0 -199 175 -343 367 -343c130 0 255 64 322 177h423c-114 -321 -419 -536 -759 -536c-123 0 -246 29 -356 83c-112 -57 -269 -116 -394 -116c-168 0 -237 103 -237 263c0 93 20 186 45 275c16 58 80 176 109 229
+c123 223 285 437 475 606c-153 -66 -319 -232 -427 -354c84 366 410 625 785 625c15 0 30 0 45 -1c124 57 297 117 433 117c162 0 301 -62 301 -245c0 -96 -37 -200 -75 -286c66 -119 101 -254 101 -390zM1722 1239c0 112 -80 181 -190 181c-84 0 -179 -34 -254 -70
+c162 -63 301 -179 393 -327c25 66 51 146 51 216zM128 2c0 -116 69 -179 183 -179c89 0 188 40 266 83c-163 96 -289 249 -351 428c-46 -96 -98 -224 -98 -332zM632 715h728c-7 193 -177 332 -364 332c-188 0 -357 -139 -364 -332z" />
+ <glyph glyph-name="file-video-o" unicode="&#xf1c8;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM768 768c70 0 128 -58 128 -128v-384c0 -70 -58 -128 -128 -128h-384c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h384zM1260 766c12 -5 20 -17 20 -30v-576c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -17 3 -23 9l-265 266v90l265 266
+c6 6 15 9 23 9c4 0 8 -1 12 -2z" />
+ <glyph glyph-name="angle-double-right" unicode="&#xf101;" horiz-adv-x="966"
+d="M582 576c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23zM966 576c0 -8 -4 -17 -10 -23
+l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="safari" unicode="&#xf267;" horiz-adv-x="1792"
+d="M949 643c0 -33 -23 -64 -58 -64c-33 0 -64 24 -64 58c0 33 24 64 59 64c32 0 63 -23 63 -58zM964 585l350 581c-47 -44 -485 -447 -497 -468l-349 -580c46 43 485 448 496 467zM1611 640c0 -131 -36 -260 -104 -371c-10 5 -52 35 -60 35c-7 0 -13 -6 -13 -13
+c0 -13 47 -37 59 -44c-99 -150 -252 -258 -426 -301l-16 67c-1 9 -7 10 -15 10c-7 0 -11 -10 -10 -15l16 -68c-48 -10 -97 -15 -146 -15c-131 0 -260 37 -372 105c6 10 44 65 44 73c0 7 -6 13 -13 13c-14 0 -44 -60 -53 -72c-151 100 -260 255 -302 432l69 15
+c8 2 10 8 10 15s-10 11 -16 10l-68 -15c-9 46 -14 92 -14 139c0 134 38 266 109 379c10 -6 58 -39 66 -39c7 0 13 5 13 12c0 14 -53 41 -65 49c102 149 257 256 433 296l15 -67c2 -8 8 -10 15 -10s11 10 10 16l-15 66c44 8 89 13 134 13c134 0 265 -38 379 -109
+c-7 -10 -39 -57 -39 -65c0 -7 5 -13 12 -13c14 0 41 52 48 64c148 -100 254 -253 295 -427l-56 -12c-9 -2 -10 -8 -10 -16c0 -7 10 -11 15 -10l57 13c9 -46 14 -93 14 -140zM1696 640c0 442 -358 800 -800 800s-800 -358 -800 -800s358 -800 800 -800s800 358 800 800z
+M1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="commenting-o" unicode="&#xf27b;" horiz-adv-x="1792"
+d="M640 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1024 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128z
+M896 1152c-416 0 -768 -234 -768 -512c0 -149 100 -291 273 -389l87 -50l-27 -96c-19 -71 -44 -126 -70 -172c101 42 193 99 275 171l43 38l57 -6c43 -5 87 -8 130 -8c416 0 768 234 768 512s-352 512 -768 512zM1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8
+c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22h-5c-20 0 -38 16 -43 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 353 401 640 896 640s896 -287 896 -640z" />
+ <glyph glyph-name="snowdrift" unicode="&#xf2f1;" horiz-adv-x="1448"
+d="M1007 384c104 116 30 287 -165 383c7 -6 44 24 83 67s65 84 58 90c-195 96 -438 80 -542 -36s-30 -287 165 -383c-7 6 -44 -24 -83 -67s-65 -84 -58 -90c195 -96 438 -80 542 36zM103 1188v0c228 253 760 288 1188 78c15 -14 -42 -101 -127 -196s-167 -161 -182 -147
+c428 -210 591 -585 363 -839c-228 -253 -760 -288 -1188 -78c-15 14 42 101 127 196s167 161 182 147c-428 210 -591 585 -363 839z" />
+ <glyph glyph-name="black-tie" unicode="&#xf27e;"
+d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
+ <glyph glyph-name="youtube-play" unicode="&#xf16a;" horiz-adv-x="1792"
+d="M711 408l484 250l-484 253v-503zM896 1270c377 0 627 -18 627 -18c35 -4 112 -4 180 -76c0 0 55 -54 71 -178c19 -145 18 -290 18 -290v-136s1 -145 -18 -290c-16 -123 -71 -178 -71 -178c-68 -71 -145 -71 -180 -75c0 0 -250 -19 -627 -19c-466 4 -609 18 -609 18
+c-40 7 -130 5 -198 76c0 0 -55 55 -71 178c-19 145 -18 290 -18 290v136s-1 145 18 290c16 124 71 178 71 178c68 72 145 72 180 76c0 0 250 18 627 18z" />
+ <glyph glyph-name="modx" unicode="&#xf285;" horiz-adv-x="1728"
+d="M1395 827l-614 386l92 151h855zM373 562l-184 116v858l1183 -743zM1392 697l147 -95v-858l-532 335zM1355 718l-500 -802h-855l356 571z" />
+ <glyph glyph-name="caret-square-o-right" unicode="&#xf152;"
+d="M1088 640c0 -21 -10 -40 -27 -52l-448 -320c-19 -14 -45 -16 -66 -5c-22 11 -35 33 -35 57v640c0 24 13 46 35 57c21 11 47 9 66 -5l448 -320c17 -12 27 -31 27 -52zM1280 160v960c0 18 -14 32 -32 32h-960c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h960
+c18 0 32 14 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="gitlab" unicode="&#xf296;" horiz-adv-x="1793"
+d="M104 830l792 -1015l-868 630c-24 18 -34 49 -25 77zM566 830h660l-330 -1015zM368 1442l198 -612h-462l198 612c11 31 55 31 66 0zM1688 830l101 -308c9 -28 -1 -59 -25 -77l-868 -630zM1688 830h-462l198 612c11 31 55 31 66 0z" />
+ <glyph glyph-name="arrows" unicode="&#xf047;" horiz-adv-x="1792"
+d="M1792 640c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v128h-384v-384h128c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-256 256c-12 12 -19 28 -19 45c0 35 29 64 64 64h128v384h-384
+v-128c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-256 256c-12 12 -19 28 -19 45s7 33 19 45l256 256c12 12 28 19 45 19c35 0 64 -29 64 -64v-128h384v384h-128c-35 0 -64 29 -64 64c0 17 7 33 19 45l256 256c12 12 28 19 45 19s33 -7 45 -19l256 -256
+c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-128v-384h384v128c0 35 29 64 64 64c17 0 33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="refresh" unicode="&#xf021;"
+d="M1511 480c0 -2 0 -5 -1 -7c-85 -354 -377 -601 -746 -601c-195 0 -384 77 -526 212l-129 -129c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v448c0 35 29 64 64 64h448c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-137 -137c94 -88 219 -138 348 -138
+c178 0 343 92 436 244c24 39 36 77 53 117c5 14 15 23 30 23h192c18 0 32 -15 32 -32zM1536 1280v-448c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64c0 17 7 33 19 45l138 138c-95 88 -220 137 -349 137c-178 0 -343 -92 -436 -244c-24 -39 -36 -77 -53 -117
+c-5 -14 -15 -23 -30 -23h-199c-18 0 -32 15 -32 32v7c86 355 381 601 750 601c196 0 387 -78 529 -212l130 129c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="file-o" unicode="&#xf016;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280z" />
+ <glyph glyph-name="battery-three-quarters" unicode="&#xf241;" horiz-adv-x="2304"
+d="M256 256v768h1280v-768h-1280zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32
+h-1856c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+ <glyph glyph-name="reddit-alien" unicode="&#xf281;" horiz-adv-x="1792"
+d="M1792 690c0 -78 -44 -145 -109 -178c8 -31 12 -63 12 -96c0 -316 -357 -572 -797 -572c-439 0 -796 256 -796 572c0 32 4 64 11 94c-67 33 -113 101 -113 180c0 110 89 199 199 199c57 0 108 -24 145 -63c135 94 315 155 515 162l116 521c4 18 23 30 41 26l369 -81
+c24 48 75 82 133 82c83 0 150 -67 150 -149c0 -83 -67 -150 -150 -150c-82 0 -149 67 -149 149l-334 74l-104 -472c201 -6 383 -66 519 -160c36 38 87 61 143 61c110 0 199 -89 199 -199zM418 491c0 -83 67 -150 149 -150c83 0 150 67 150 150c0 82 -67 149 -150 149
+c-82 0 -149 -67 -149 -149zM1228 136c15 15 15 37 0 52c-14 14 -37 14 -51 0c-60 -61 -189 -82 -281 -82s-221 21 -281 82c-14 14 -37 14 -51 0c-15 -14 -15 -37 0 -52c95 -95 278 -102 332 -102s237 7 332 102zM1225 341c82 0 149 67 149 150c0 82 -67 149 -149 149
+c-83 0 -150 -67 -150 -149c0 -83 67 -150 150 -150z" />
+ <glyph glyph-name="square" unicode="&#xf0c8;"
+d="M1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="ellipsis-v" unicode="&#xf142;" horiz-adv-x="384"
+d="M384 288v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM384 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM384 1312v-192c0 -53 -43 -96 -96 -96h-192
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="glide-g" unicode="&#xf2a6;" horiz-adv-x="1461"
+d="M707 1231c0 53 -5 99 -69 99c-27 0 -54 -9 -78 -23c-151 -83 -213 -298 -213 -460c0 -108 37 -252 169 -252c30 0 68 -8 76 27c32 154 64 309 96 463c10 48 19 97 19 146zM1461 575c0 -10 -13 -20 -23 -20l-6 1c-68 10 -128 28 -197 28c-125 0 -240 -37 -351 -93
+c-14 -7 -17 -13 -21 -27c-18 -68 -30 -138 -47 -206c-60 -233 -255 -514 -522 -514c-182 0 -294 124 -294 303c0 97 63 286 180 286c41 0 202 -53 203 -95c-2 -8 -157 -88 -157 -223c0 -41 20 -73 65 -73c159 0 232 290 248 412v9c0 8 -32 4 -38 4c-301 0 -477 168 -477 471
+c0 286 186 635 491 688c35 6 70 9 106 9c242 0 374 -113 374 -360c0 -167 -57 -321 -81 -484l3 -3c108 61 222 119 350 119c13 0 41 -8 53 -13c26 -10 141 -191 141 -219z" />
+ <glyph glyph-name="globe" unicode="&#xf0ac;"
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM1042 887c-8 -6 -13 -17 -23 -19c5 1 10 19 13 23c6 7 14 11 22 15c17 7 34 9 52 12c17 4 38 4 51 -11c-3 3 21 24 24 25c9 5 24 3 30 12c2 3 2 22 2 22c-17 -2 -23 14 -24 28
+c0 -1 -2 -4 -6 -8c1 15 -18 4 -25 6c-23 6 -20 22 -27 39c-4 9 -15 12 -19 21c-4 6 -6 19 -15 20c-6 1 -17 -21 -19 -20c-9 5 -13 -2 -20 -6c-6 -4 -11 -2 -17 -5c18 6 -8 16 -17 14c14 4 7 19 -1 26h5c-2 9 -30 17 -39 23s-57 16 -67 10c-12 -7 3 -27 3 -37
+c1 -12 -12 -15 -12 -25c0 -17 32 -14 24 -37c-5 -14 -24 -17 -32 -28c-8 -10 1 -28 9 -35c8 -6 -14 -16 -17 -18c-17 -8 -30 17 -34 32c-3 11 -4 24 -16 30c-6 2 -25 5 -29 -1c-6 15 -27 21 -41 26c-20 7 -37 7 -58 4c7 1 -2 32 -19 27c5 10 3 21 5 31c2 8 6 16 12 23
+c2 4 24 27 17 28c17 -2 36 -3 50 11c9 9 13 24 22 34c13 15 29 -4 43 -5c20 -1 19 21 8 31c13 -1 2 23 -5 26c-9 3 -43 -6 -25 -13c-4 2 -28 -48 -42 -23c-4 5 -6 26 -15 27c-8 0 -13 -9 -16 -15c5 13 -28 22 -35 23c15 10 3 21 -8 27c-8 5 -33 9 -40 1
+c-19 -23 20 -26 30 -32c3 -2 15 -9 8 -14c-6 -3 -24 -8 -26 -12c-6 -9 7 -19 -2 -28c-9 9 -9 24 -16 34c9 -11 -36 -5 -35 -5c-15 0 -39 -10 -50 5c-2 4 -2 27 4 22c-9 7 -15 14 -21 18c-33 -11 -64 -25 -94 -41c4 -1 7 -1 12 1c8 3 15 8 23 12c10 4 31 16 42 7c1 2 4 4 5 5
+c7 -8 14 -16 20 -25c-8 4 -21 2 -30 1c-7 -2 -19 -4 -22 -12c3 -5 7 -13 5 -18c-13 9 -23 24 -41 26c-8 0 -16 0 -22 -1c-96 -53 -177 -130 -235 -222c4 -4 8 -7 12 -8c10 -3 0 -32 19 -17c6 -5 7 -12 3 -19c1 1 41 -25 44 -27c7 -6 18 -13 21 -21c2 -7 -4 -15 -10 -18
+c-1 2 -16 17 -18 13c-3 -5 0 -32 11 -31c-16 -1 -9 -63 -13 -75c0 -1 2 -1 2 -1c-3 -12 7 -59 27 -54c-13 -3 23 -49 28 -52c13 -9 28 -15 37 -28c10 -14 10 -35 24 -46c-4 -12 21 -26 20 -43c-2 -1 -3 -1 -5 -2c5 -14 24 -14 31 -27c4 -8 0 -27 13 -23c2 22 -13 44 -24 62
+c-6 10 -12 19 -17 29c-5 9 -6 20 -10 30c4 -1 26 -9 24 -12c-8 -20 32 -55 43 -68c3 -3 26 -33 14 -33c13 0 31 -20 37 -30c9 -15 7 -34 13 -50c6 -20 34 -29 50 -38c14 -7 26 -17 40 -22c21 -8 26 -1 44 2c26 4 29 -25 50 -36c13 -7 41 -17 55 -11c-6 -2 21 -43 23 -46
+c9 -12 26 -18 36 -30c3 2 6 5 7 9c-4 -11 15 -32 25 -30c11 2 14 24 14 32c-20 -10 -38 -2 -49 18c-2 5 -18 33 -4 33c19 0 6 15 4 29s-16 23 -23 35c-6 -12 -26 -9 -32 1c0 -3 -3 -8 -3 -12c-5 0 -10 -1 -15 1c2 12 3 27 6 40c5 18 38 53 -5 51c-15 -1 -21 -7 -26 -20
+c-5 -12 -3 -23 -17 -29c-9 -4 -39 -2 -48 3c-19 11 -32 46 -32 66c-1 27 13 51 0 76c6 5 12 15 19 20c6 4 13 -3 16 9c-3 2 -7 6 -8 6c15 -7 43 10 56 0c8 -6 17 -8 22 2c1 3 -7 15 -3 23c3 -17 14 -20 29 -9c6 -6 22 -4 33 -10c11 -7 13 -18 26 -3c8 -12 9 -12 12 -24
+c3 -11 9 -39 19 -44c21 -13 16 22 14 34c-1 1 -1 34 -2 34c-32 7 -20 32 -2 49c3 2 26 10 36 18c9 8 20 22 15 35c5 0 9 4 11 9c-3 1 -15 11 -17 10c7 4 6 10 2 16c10 6 5 17 15 21c11 -15 33 2 22 14c10 14 33 7 39 20c15 -4 4 15 12 26c7 9 19 9 28 14c0 -1 25 14 17 15
+c17 -2 51 16 25 31c4 9 -9 13 -18 15c7 2 16 -2 22 2c13 9 4 13 -7 16c-14 4 -32 -5 -43 -12zM879 10c137 24 259 92 351 189c-6 6 -17 4 -25 8c-8 3 -14 6 -24 8c2 20 -20 27 -34 37c-13 10 -21 21 -40 17c-2 -1 -22 -8 -18 -12c-13 11 -19 17 -36 22c-16 5 -27 25 -43 7
+c-8 -8 -4 -20 -8 -28c-13 11 12 24 2 36c-12 14 -33 -9 -43 -15c-6 -5 -13 -7 -17 -13c-5 -7 -7 -16 -11 -23c-3 8 -20 6 -21 12c4 -24 4 -49 9 -73c3 -14 0 -37 -12 -48s-27 -23 -29 -40c-2 -12 1 -23 12 -26c1 -15 -16 -26 -15 -42c0 -1 1 -11 2 -16z" />
+ <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792"
+d="M1760 640c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1728c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h1728zM483 704c-19 24 -36 51 -51 80c-32 65 -48 128 -48 188c0 122 45 224 134 309s220 127 393 127c38 0 93 -7 167 -19c44 -8 103 -24 177 -48
+c7 -26 14 -66 21 -118c9 -79 14 -140 14 -183c0 -14 -2 -29 -5 -45l-12 -3l-84 6l-14 2c-34 101 -69 169 -103 205c-59 61 -130 91 -210 91c-76 0 -137 -20 -182 -59s-67 -88 -67 -146c0 -49 22 -95 66 -140s137 -88 279 -129c48 -14 105 -36 173 -66c36 -17 68 -34 95 -52
+h-743zM990 448h411c5 -28 7 -59 7 -92c0 -72 -13 -143 -41 -212c-15 -37 -38 -71 -71 -104c-24 -23 -60 -50 -109 -81c-50 -30 -100 -53 -153 -66c-53 -14 -120 -21 -203 -21c-55 0 -121 2 -195 23l-140 40c-39 11 -62 20 -72 28c-4 4 -8 11 -8 22v13c0 8 2 60 -2 156
+c-2 50 2 85 2 105v44l102 2c37 -85 54 -136 65 -154c24 -39 51 -70 80 -94s64 -43 105 -57c40 -15 85 -22 132 -22c42 0 89 9 139 27c51 17 92 46 122 86c31 40 47 83 47 129c0 56 -27 108 -81 157c-22 19 -68 43 -137 71z" />
+ <glyph glyph-name="comment-o" unicode="&#xf0e5;" horiz-adv-x="1792"
+d="M896 1152c-416 0 -768 -234 -768 -512c0 -149 100 -291 273 -389l87 -50l-27 -96c-19 -71 -44 -126 -70 -172c101 42 193 99 275 171l43 38l57 -6c43 -5 87 -8 130 -8c416 0 768 234 768 512s-352 512 -768 512zM1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8
+c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22h-5c-20 0 -38 16 -43 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 354 401 640 896 640s896 -286 896 -640z" />
+ <glyph glyph-name="bluetooth" unicode="&#xf293;" horiz-adv-x="1322"
+d="M734 483l148 -148l-149 -149zM733 1094l149 -149l-148 -148zM603 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1322 640c0 -710 -270 -896 -661 -896s-661 186 -661 896s270 896 661 896s661 -186 661 -896z
+" />
+ <glyph glyph-name="hand-pointer-o" unicode="&#xf25a;" horiz-adv-x="1664"
+d="M640 1408c-71 0 -128 -57 -128 -128v-896l-151 202c-25 33 -65 54 -107 54c-70 0 -126 -59 -126 -128c0 -28 9 -55 26 -77l384 -512c24 -32 62 -51 102 -51h718c29 0 55 20 62 48l92 368c16 64 24 129 24 194v217c0 53 -41 101 -96 101c-53 0 -96 -43 -96 -96h-32v61
+c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-64h-32v90c0 72 -55 134 -128 134c-71 0 -128 -57 -128 -128v-96h-32v570c0 72 -55 134 -128 134zM640 1536c143 0 256 -120 256 -262v-220c11 1 21 2 32 2c65 0 126 -25 173 -69c31 14 65 21 99 21c72 0 139 -32 184 -87
+c19 5 37 7 56 7c126 0 224 -105 224 -229v-217c0 -75 -9 -151 -28 -225l-92 -368c-21 -85 -98 -145 -186 -145h-718c-80 0 -157 39 -205 102l-384 512c-33 44 -51 99 -51 154c0 140 114 256 254 256c46 0 91 -12 130 -35v547c0 141 115 256 256 256zM768 128h-32v384h32
+v-384zM1024 128h-32v384h32v-384zM1280 128h-32v384h32v-384z" />
+ <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664"
+d="M1664 960v-256c0 -35 -29 -64 -64 -64h-64c-35 0 -64 29 -64 64v256c0 141 -115 256 -256 256s-256 -115 -256 -256v-192h96c53 0 96 -43 96 -96v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h672v192c0 247 201 448 448 448
+s448 -201 448 -448z" />
+ <glyph glyph-name="quote-right" unicode="&#xf10e;" horiz-adv-x="1664"
+d="M768 1216v-704c0 -282 -230 -512 -512 -512h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64c141 0 256 115 256 256v32c0 53 -43 96 -96 96h-224c-106 0 -192 86 -192 192v384c0 106 86 192 192 192h384c106 0 192 -86 192 -192zM1664 1216v-704
+c0 -282 -230 -512 -512 -512h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64c141 0 256 115 256 256v32c0 53 -43 96 -96 96h-224c-106 0 -192 86 -192 192v384c0 106 86 192 192 192h384c106 0 192 -86 192 -192z" />
+ <glyph glyph-name="arrow-left" unicode="&#xf060;" horiz-adv-x="1472"
+d="M1472 640v-128c0 -68 -45 -128 -117 -128h-704l293 -294c24 -23 38 -56 38 -90s-14 -67 -38 -90l-75 -76c-23 -23 -56 -37 -90 -37s-67 14 -91 37l-651 652c-23 23 -37 56 -37 90s14 67 37 91l651 650c24 24 57 38 91 38s66 -14 90 -38l75 -74c24 -24 38 -57 38 -91
+s-14 -67 -38 -91l-293 -293h704c72 0 117 -60 117 -128z" />
+ <glyph glyph-name="scissors" unicode="&#xf0c4;" horiz-adv-x="1792"
+d="M960 640c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1260 576l507 -398c18 -13 27 -35 25 -56c-3 -22 -16 -41 -35 -51l-128 -64c-9 -5 -19 -7 -29 -7c-11 0 -22 3 -31 8l-690 387l-110 -66c-4 -2 -8 -4 -12 -5c9 -31 13 -64 10 -97
+c-9 -103 -78 -201 -188 -271c-85 -54 -183 -84 -277 -84c-90 0 -166 27 -222 78c-57 53 -86 129 -79 207c9 102 78 201 187 271c85 54 184 84 278 84c56 0 107 -11 151 -31c6 9 13 16 22 22l122 73l-122 73c-9 6 -16 13 -22 22c-44 -20 -95 -31 -151 -31
+c-94 0 -193 30 -278 84c-109 70 -178 169 -187 271c-7 78 22 154 79 206c56 52 132 79 222 79c94 0 192 -30 277 -84c110 -69 179 -168 188 -271c3 -33 -1 -66 -10 -97c4 -1 8 -3 12 -5l110 -66l690 387c9 5 20 8 31 8c10 0 20 -2 29 -7l128 -64c19 -10 32 -29 35 -51
+c2 -21 -7 -43 -25 -56zM579 836c61 56 23 157 -85 225c-61 39 -132 59 -192 59c-46 0 -87 -12 -113 -36c-61 -56 -23 -157 85 -225c61 -39 131 -59 192 -59c46 0 87 12 113 36zM494 91c108 68 146 169 85 225c-26 24 -67 36 -113 36c-61 0 -131 -20 -192 -59
+c-108 -68 -146 -169 -85 -225c26 -24 67 -36 113 -36c60 0 131 20 192 59zM672 704l96 -58v11c0 23 13 44 33 56l14 8l-79 47l-26 -26c-8 -8 -14 -16 -22 -23c-3 -3 -5 -4 -7 -6zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8c2 -3 4 -4 7 -6
+c8 -8 14 -16 22 -24l26 -26zM1600 64l128 64l-520 408l-177 -138c-3 -4 -8 -5 -13 -7z" />
+ <glyph glyph-name="ellipsis-h" unicode="&#xf141;" horiz-adv-x="1408"
+d="M384 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM896 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM1408 800v-192c0 -53 -43 -96 -96 -96h-192
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="scribd" unicode="&#xf28a;" horiz-adv-x="1464"
+d="M1464 -13c0 -119 -96 -216 -216 -216s-217 97 -217 216c0 120 97 217 217 217s216 -97 216 -217zM1231 268c-152 -20 -270 -150 -270 -308c0 -49 12 -97 33 -138c-90 -48 -212 -78 -379 -78c-532 0 -615 376 -615 426c0 51 30 218 218 218s214 -161 214 -194
+c0 0 0 -34 -23 -81c64 -60 215 -60 215 -60c151 0 265 74 265 184c0 111 -128 165 -420 302c-292 138 -402 239 -402 490c0 252 168 507 587 507s577 -235 577 -396s-137 -201 -188 -201c-50 0 -235 -17 -235 261c-33 37 -177 37 -177 37c-145 0 -209 -110 -209 -177
+c0 -68 27 -152 329 -252c463 -154 480 -355 480 -540z" />
+ <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="444"
+d="M414 288v-224c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v224c0 35 29 64 64 64h256c35 0 64 -29 64 -64zM444 1344l-28 -768c-1 -35 -31 -64 -66 -64h-256c-35 0 -65 29 -66 64l-28 768c-1 35 27 64 62 64h320c35 0 63 -29 62 -64z" />
+ <glyph glyph-name="try" unicode="&#xf195;" horiz-adv-x="1152"
+d="M1152 704c0 -388 -316 -704 -704 -704h-160c-18 0 -32 14 -32 32v611l-215 -66c-3 -1 -6 -1 -9 -1c-7 0 -13 2 -19 6c-8 6 -13 16 -13 26v128c0 14 9 26 23 31l233 71v93l-215 -66c-3 -1 -6 -1 -9 -1c-7 0 -13 2 -19 6c-8 6 -13 16 -13 26v128c0 14 9 26 23 31l233 71
+v250c0 18 14 32 32 32h160c18 0 32 -14 32 -32v-181l375 116c9 3 20 1 28 -5s13 -16 13 -26v-128c0 -14 -9 -26 -23 -31l-393 -121v-93l375 116c9 3 20 1 28 -5s13 -16 13 -26v-128c0 -14 -9 -26 -23 -31l-393 -121v-487c250 17 448 225 448 479c0 18 14 32 32 32h160
+c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="assistive-listening-systems" unicode="&#xf2a2;" horiz-adv-x="1792"
+d="M128 -192c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM320 0c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM365 365l256 -256l-90 -90l-256 256zM704 384c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64z
+M1411 704c0 -166 -78 -255 -146 -334c-63 -72 -113 -129 -113 -242c0 -212 -172 -384 -384 -384c-35 0 -64 29 -64 64s29 64 64 64c141 0 256 115 256 256c0 161 77 249 144 326c62 71 115 132 115 250c0 247 -201 448 -448 448s-448 -201 -448 -448c0 -35 -29 -64 -64 -64
+s-64 29 -64 64c0 318 258 576 576 576s576 -258 576 -576zM896 576c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM1184 704c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 124 -100 224 -224 224c-123 0 -224 -100 -224 -224c0 -35 -29 -64 -64 -64
+s-64 29 -64 64c0 194 158 352 352 352s352 -158 352 -352zM1578 993c13 -33 -4 -70 -37 -83c-7 -3 -15 -4 -23 -4c-25 0 -50 15 -59 41c-45 117 -123 219 -224 295c-28 21 -34 61 -13 89c22 28 62 34 90 13c120 -90 212 -212 266 -351zM1788 1074c12 -33 -4 -70 -37 -83
+c-8 -3 -15 -4 -23 -4c-26 0 -50 15 -60 41c-60 156 -163 292 -297 393c-29 21 -34 61 -13 89c21 29 61 34 89 13c154 -115 272 -271 341 -449z" />
+ <glyph glyph-name="flag-o" unicode="&#xf11d;" horiz-adv-x="1728"
+d="M1600 491v616c-80 -43 -192 -91 -306 -91c-53 0 -102 10 -145 32c-107 53 -223 104 -362 104c-129 0 -287 -63 -403 -127v-599c132 61 300 113 433 113c154 0 254 -51 361 -104l28 -14c28 -14 62 -22 101 -22c111 0 231 59 293 92zM256 1280c0 -47 -26 -88 -64 -110
+v-1266c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v1266c-38 22 -64 63 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -24 -14 -46 -35 -57c-4 -2 -10 -5 -17 -9c-64 -34 -215 -116 -369 -116c-59 0 -112 12 -158 35l-28 14
+c-101 51 -181 91 -304 91c-144 0 -347 -75 -464 -146c-10 -6 -22 -9 -33 -9s-22 3 -32 8c-20 12 -32 33 -32 56v742c0 22 12 43 31 55c64 38 290 163 500 163c167 0 303 -61 418 -117c26 -13 56 -19 89 -19c118 0 248 75 310 112c13 7 24 13 31 17c20 10 43 9 62 -2
+c19 -12 31 -33 31 -55z" />
+ <glyph glyph-name="battery-quarter" unicode="&#xf243;" horiz-adv-x="2304"
+d="M256 256v768h512v-768h-512zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856
+c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+ <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664"
+d="M384 0h896v256h-896v-256zM384 640h896v384h-160c-53 0 -96 43 -96 96v160h-640v-640zM1536 576c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 576v-416c0 -17 -15 -32 -32 -32h-224v-160c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v160
+h-224c-17 0 -32 15 -32 32v416c0 105 87 192 192 192h64v544c0 53 43 96 96 96h672c53 0 126 -30 164 -68l152 -152c38 -38 68 -111 68 -164v-256h64c105 0 192 -87 192 -192z" />
+ <glyph glyph-name="check-circle-o" unicode="&#xf05d;"
+d="M1171 723l-422 -422c-25 -25 -65 -25 -90 0l-294 294c-25 25 -25 65 0 90l102 102c25 25 65 25 90 0l147 -147l275 275c25 25 65 25 90 0l102 -102c25 -25 25 -65 0 -90zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544z
+M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="level-up" unicode="&#xf148;" horiz-adv-x="1024"
+d="M1018 933c-11 -23 -33 -37 -58 -37h-192v-864c0 -18 -14 -32 -32 -32h-704c-12 0 -24 7 -29 18c-5 12 -4 25 4 35l160 192c6 7 16 11 25 11h320v640h-192c-25 0 -47 14 -58 37c-10 22 -7 49 9 68l320 384c24 29 74 29 98 0l320 -384c16 -19 20 -46 9 -68z" />
+ <glyph glyph-name="houzz" unicode="&#xf27c;" horiz-adv-x="1024"
+d="M512 345l512 295v-591l-512 -296v592zM0 640l512 -295l-512 -296v591zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
+ <glyph glyph-name="lemon-o" unicode="&#xf094;" horiz-adv-x="1535"
+d="M1407 710c0 47 -9 170 -25 210c-19 48 -30 75 -30 129c0 46 10 91 10 136c0 19 -1 39 -10 55c-4 1 -9 1 -13 1c-39 0 -78 -9 -117 -9c-119 0 -232 48 -351 48c-93 0 -183 -35 -269 -69c-68 -27 -143 -59 -202 -103c-202 -153 -272 -433 -272 -674c0 -81 25 -160 25 -241
+c0 -46 -22 -88 -22 -132c0 -28 16 -51 46 -51c49 0 96 22 146 22c114 0 225 -31 339 -31c89 0 201 7 284 36c263 93 461 397 461 673zM1535 712c0 -333 -231 -684 -547 -796c-99 -35 -222 -44 -326 -44c-114 0 -226 29 -339 29c-48 0 -96 -29 -146 -29
+c-99 0 -174 89 -174 184c0 47 22 89 22 135c0 81 -25 160 -25 242c0 284 87 598 323 777c68 52 153 89 232 120c102 41 205 78 316 78c119 0 232 -48 349 -48c38 0 76 10 115 10c114 0 155 -81 155 -185c0 -45 -10 -91 -10 -136c0 -36 9 -50 21 -82c23 -58 34 -191 34 -255z
+" />
+ <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664"
+d="M896 708v-580c0 -139 -117 -256 -256 -256s-256 117 -256 256c0 35 29 64 64 64s64 -29 64 -64c0 -67 61 -128 128 -128s128 61 128 128v580c21 7 42 11 64 11s43 -4 64 -11zM1664 681c0 -17 -15 -32 -32 -32c-9 0 -16 4 -23 10c-58 54 -112 92 -195 92
+c-95 0 -177 -59 -231 -134c-12 -17 -21 -35 -32 -52c-7 -11 -15 -17 -28 -17c-14 0 -22 6 -29 17c-11 17 -20 35 -32 52c-54 75 -135 134 -230 134s-176 -59 -230 -134c-12 -17 -21 -35 -32 -52c-7 -11 -15 -17 -29 -17c-13 0 -21 6 -28 17c-11 17 -20 35 -32 52
+c-54 75 -136 134 -231 134c-83 0 -137 -38 -195 -92c-7 -6 -14 -10 -23 -10c-17 0 -32 15 -32 32c0 3 0 5 1 7c92 378 457 592 831 592c372 0 741 -214 831 -592c1 -2 1 -4 1 -7zM896 1408v-98c-21 1 -43 2 -64 2s-43 -1 -64 -2v98c0 35 29 64 64 64s64 -29 64 -64z" />
+ <glyph glyph-name="bell-o" unicode="&#xf0a2;" horiz-adv-x="1664"
+d="M848 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM1664 128c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-256 115 -256 256h-448c-70 0 -128 58 -128 128
+c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c265 -39 424 -249 424 -441c0 -483 172 -707 320 -832z" />
+ <glyph glyph-name="shaarli" unicode="&#xf2f5;" horiz-adv-x="1651"
+d="M878 1408c161 0 254 -160 278 -479h66c287 -44 429 -135 426 -273c24 -163 -80 -238 -312 -226c178 -156 241 -302 191 -437c-39 -108 -133 -143 -282 -107c-164 82 -281 176 -349 282h-43c-64 -188 -188 -282 -372 -282h-64c-153 47 -209 140 -166 278l80 221h-23
+c-225 32 -326 131 -305 298c6 153 160 231 462 233c84 9 119 36 105 80c0 275 103 412 308 412zM830 1182c-56 4 -83 -72 -82 -227l-5 -128c-5 -64 -25 -96 -61 -96l-360 -20c-56 -2 -85 -25 -85 -69c0 -43 31 -65 92 -68c211 11 310 -4 296 -43l-64 -137
+c-108 -163 -135 -258 -80 -287c73 -44 176 70 310 342c32 29 59 29 80 0c94 -100 171 -182 232 -246c62 -64 113 -83 151 -57c46 49 33 101 -37 157c-68 58 -146 137 -234 237c-9 33 -8 50 6 50c298 -20 441 -1 429 57c9 64 -121 96 -388 96c-41 -8 -74 2 -100 29v224
+c0 125 -30 186 -89 184c-3 1 -8 2 -11 2v0z" />
+ <glyph glyph-name="cc-diners-club" unicode="&#xf24c;" horiz-adv-x="2304"
+d="M858 295v693c-139 -54 -238 -189 -238 -347s99 -293 238 -346zM1362 641c0 158 -99 293 -238 347v-694c139 54 238 189 238 347zM1577 641c0 -323 -262 -586 -586 -586c-323 0 -586 263 -586 586c0 324 263 586 586 586c324 0 586 -262 586 -586zM1960 634
+c0 382 -319 646 -669 646h-301c-354 0 -646 -264 -646 -646c0 -349 292 -634 646 -634h301c350 0 669 285 669 634zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="undo" unicode="&#xf0e2;"
+d="M1536 640c0 -423 -345 -768 -768 -768c-229 0 -445 101 -591 277c-10 13 -9 32 2 43l137 138c7 6 16 9 25 9c9 -1 18 -5 23 -12c98 -127 245 -199 404 -199c282 0 512 230 512 512s-230 512 -512 512c-131 0 -255 -50 -348 -137l137 -138c19 -18 24 -46 14 -69
+c-10 -24 -33 -40 -59 -40h-448c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l130 -129c141 133 332 212 529 212c423 0 768 -345 768 -768z" />
+ <glyph glyph-name="rebel" unicode="&#xf1d0;" horiz-adv-x="1756"
+d="M0 662c10 286 156 550 421 724c1 0 7 2 4 -3c-21 -20 -402 -469 -51 -818c180 -179 325 -9 325 -9c139 181 -2 455 -2 455c-36 90 -165 145 -165 145l104 115c88 -38 156 -140 156 -140c3 107 -79 222 -79 222l161 183l160 -181c-74 -104 -79 -226 -79 -226
+c50 83 157 142 157 142l103 -115c-99 -32 -164 -144 -164 -144c-57 -103 -98 -323 2 -460c117 -161 317 10 317 10c371 332 -38 813 -38 813c-22 20 3 10 3 10c181 -132 414 -305 420 -740c7 -526 -361 -901 -876 -901c-503 0 -894 420 -879 918z" />
+ <glyph glyph-name="codiepie" unicode="&#xf284;" horiz-adv-x="1723"
+d="M1584 246l-218 111c-98 -160 -272 -258 -460 -258c-298 0 -539 241 -539 538c0 298 241 539 539 539c175 0 339 -85 440 -229l215 125c-147 226 -396 361 -665 361c-438 0 -793 -355 -793 -793s355 -793 793 -793c284 0 547 152 688 399zM1030 643l693 -352
+c-152 -332 -457 -547 -827 -547c-495 0 -896 401 -896 896s401 896 896 896c352 0 642 -194 806 -500zM1543 640h-39v-160h-96v352h136c111 0 121 -192 -1 -192z" />
+ <glyph glyph-name="soundcloud" unicode="&#xf1be;" horiz-adv-x="2304"
+d="M784 164c-1 -13 -11 -23 -24 -23c-12 0 -22 10 -23 23l-14 241l14 523c0 13 11 24 23 24c13 0 23 -11 24 -24l16 -523zM1080 193l-1 -24c0 -8 -3 -15 -9 -20c-5 -5 -12 -9 -20 -9c-9 0 -17 4 -23 11c-4 5 -6 11 -6 17v1c-11 235 -11 236 -11 236l10 579l1 6
+c0 10 5 19 13 24c5 3 10 5 16 5s11 -2 16 -5c8 -5 13 -14 13 -24l12 -586zM35 533l20 -128l-20 -126c-1 -5 -4 -9 -9 -9s-8 4 -9 9l-17 126l17 128c1 5 4 9 9 9s8 -4 9 -9zM121 612l26 -207l-26 -203c-1 -5 -5 -9 -10 -9s-9 4 -9 10l-23 202l23 207c0 5 4 9 9 9s9 -4 10 -9z
+M401 159zM213 650l25 -245l-25 -237c0 -6 -5 -11 -11 -11s-11 5 -12 11l-21 237l21 245c1 7 6 12 12 12s11 -5 11 -12zM307 657l23 -252l-23 -244c-1 -8 -7 -13 -14 -13s-13 5 -13 13l-21 244l21 252c0 8 6 13 13 13s13 -5 14 -13zM401 639l21 -234l-21 -246
+c-1 -9 -8 -16 -16 -16s-15 7 -15 16l-20 246l20 234c0 8 7 15 15 15s15 -7 16 -15zM784 164zM495 785l21 -380l-21 -246c0 -10 -8 -18 -17 -18c-10 0 -17 8 -18 18l-18 246l18 380c1 10 8 18 18 18c9 0 17 -8 17 -18zM589 871l19 -468l-19 -244c0 -11 -9 -19 -19 -19
+c-11 0 -19 8 -20 19l-16 244l16 468c1 11 9 19 20 19c10 0 19 -8 19 -19zM687 911l18 -506l-18 -242c-1 -12 -10 -21 -22 -21c-11 0 -20 9 -21 21l-16 242l16 506c0 12 10 22 21 22c12 0 21 -10 22 -22zM1079 169zM881 915l15 -510l-15 -239c0 -14 -11 -25 -25 -25
+s-24 11 -25 25l-14 239l14 510c0 14 11 25 25 25s25 -11 25 -25zM980 896l14 -492l-14 -236c0 -15 -12 -27 -27 -27s-27 12 -28 27l-12 236l12 492c1 16 13 28 28 28s26 -12 27 -28zM1192 404l-14 -231c0 -17 -14 -31 -31 -31s-31 14 -32 31l-6 114l-6 117l12 636v3
+c1 9 5 18 12 24c5 4 12 7 20 7c5 0 11 -2 15 -5c9 -5 15 -15 16 -26zM2304 423c0 -156 -127 -282 -283 -282h-786c-17 2 -31 15 -31 33v899c0 17 6 25 28 33c55 22 117 34 181 34c261 0 475 -200 498 -455c34 14 71 22 110 22c156 0 283 -127 283 -284z" />
+ <glyph glyph-name="thumbs-o-down" unicode="&#xf088;"
+d="M256 1088c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 512c0 37 -28 127 -75 128c21 24 35 71 35 103c0 47 -19 87 -53 119c12 21 18 45 18 69c0 46 -23 103 -65 126c3 18 5 37 5 56c0 117 -74 167 -185 167h-128c-118 0 -232 -35 -342 -73
+c-54 -19 -146 -55 -202 -55h-32v-640h32c79 0 198 -171 243 -229c25 -31 49 -62 77 -91c97 -102 64 -255 128 -320c137 0 160 75 160 192c0 118 -96 203 -96 320h352c67 0 128 60 128 128zM1536 511c0 -138 -118 -255 -256 -255h-176c30 -62 48 -122 48 -192
+c0 -66 -4 -126 -35 -186c-49 -97 -149 -134 -253 -134c-34 0 -66 14 -90 37c-100 98 -69 256 -128 321c-38 40 -73 83 -107 127c-30 39 -98 129 -137 155h-274c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h288c28 0 109 30 138 40c144 50 269 88 423 88h112
+c182 0 313 -108 312 -295v-5c39 -50 60 -114 60 -178c0 -14 -1 -29 -3 -43c25 -44 38 -94 38 -144c0 -23 -3 -47 -9 -69c32 -48 49 -105 49 -163z" />
+ <glyph glyph-name="indent" unicode="&#xf03c;" horiz-adv-x="1792"
+d="M352 704c0 -8 -3 -17 -9 -23l-288 -288c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v576c0 17 15 32 32 32c8 0 17 -3 23 -9l288 -288c6 -6 9 -15 9 -23zM1792 224v-192c0 -17 -15 -32 -32 -32h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z
+M1792 608v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32
+h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z" />
+ <glyph glyph-name="address-card-o" unicode="&#xf2bc;" horiz-adv-x="2048"
+d="M1024 405c0 -87 -57 -149 -128 -149h-512c-71 0 -128 62 -128 149c0 155 38 327 196 327c49 -28 115 -76 188 -76s139 48 188 76c158 0 196 -172 196 -327zM867 925c0 -126 -102 -227 -227 -227s-227 101 -227 227c0 125 102 227 227 227s227 -102 227 -227zM1792 480
+v-64c0 -18 -14 -32 -32 -32h-576c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM1792 732v-56c0 -20 -16 -36 -36 -36h-568c-20 0 -36 16 -36 36v56c0 20 16 36 36 36h568c20 0 36 -16 36 -36zM1792 992v-64c0 -18 -14 -32 -32 -32h-576
+c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM1920 32v1216c0 17 -15 32 -32 32h-1728c-17 0 -32 -15 -32 -32v-1216c0 -17 15 -32 32 -32h352v96c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-96h768v96c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-96h352
+c17 0 32 15 32 32zM2048 1248v-1216c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="language" unicode="&#xf1ab;"
+d="M654 458c-2 -7 -51 16 -64 21c-13 6 -72 39 -87 49s-72 57 -79 60c-36 -55 -82 -120 -134 -181c-18 -21 -72 -89 -105 -110c-5 -3 -34 -6 -38 -4c16 12 62 69 82 92c25 29 144 195 164 233c21 38 84 164 87 176c-10 1 -89 -26 -110 -33c-20 -6 -75 -19 -79 -22
+c-4 -4 -1 -16 -3 -20s-20 -13 -31 -15c-10 -3 -33 -4 -47 0c-13 3 -25 16 -28 21c0 0 -4 6 -5 23c12 4 32 5 54 11s76 22 105 32s85 31 102 35c18 3 63 33 87 41s41 18 42 13s0 -27 -1 -33c-1 -5 -49 -99 -56 -114c-4 -8 -32 -61 -77 -131c16 -7 50 -21 64 -28
+c17 -8 136 -58 142 -60s17 -48 15 -56zM449 944c3 -17 -2 -24 -4 -28c-10 -19 -35 -32 -50 -38s-40 -12 -60 -12c-9 1 -27 4 -49 26c-12 13 -21 48 -17 44s33 -8 46 -5s44 12 58 16c15 5 45 13 55 14c10 0 18 -4 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032
+l-694 -233v-1031zM1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66c-81 -52 -181 -92 -276 -108c-29 -6 -62 -12 -91 -12h-84c-106 0 -299 63 -383 124c-6 5 -8 9 -8 16c0 11 8 19 18 19
+c9 0 56 -29 69 -35c90 -45 216 -86 317 -86c125 0 210 16 324 65c33 15 62 34 93 51zM1536 1050v-1079c-773 246 -774 246 -774 246c-16 -7 -733 -249 -743 -249c-8 0 -15 5 -18 13c0 1 -1 2 -1 3v1078c1 3 2 8 4 10c6 7 14 9 20 11c3 1 64 21 149 50v384l558 -198
+c7 2 629 217 638 217c11 0 20 -8 20 -21v-418z" />
+ <glyph glyph-name="circle-thin" unicode="&#xf1db;"
+d="M768 1280c-353 0 -640 -287 -640 -640s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="drupal" unicode="&#xf1a9;"
+d="M1167 -50c-2 7 -8 17 -24 5c-34 -25 -110 -56 -218 -56s-159 23 -193 49c-5 4 -3 4 -13 4c-11 0 -17 -5 -26 -12c-8 -7 -12 -24 0 -36c74 -68 198 -62 289 -54c92 9 170 63 178 71c12 12 9 22 7 29zM1128 65c-7 17 -19 47 -39 61c-20 13 -49 15 -76 15s-42 2 -71 -10
+s-59 -39 -78 -56s-22 -30 -12 -44c10 -13 21 -5 49 19c29 23 48 44 107 44s69 -22 81 -44s13 -25 25 -19c14 7 21 17 14 34zM1483 346c0 52 -23 140 -108 140c-80 0 -242 -166 -327 -167c-99 -2 -236 196 -434 194c-156 -1 -279 -125 -281 -257c-1 -74 23 -129 74 -164
+c34 -23 65 -37 166 -37c168 0 381 208 479 205c78 -3 199 -194 260 -198c48 -4 73 18 114 77c40 60 57 154 57 207zM1536 506c0 -448 -354 -744 -761 -744c-408 0 -775 321 -775 758c0 436 340 638 403 671c75 40 129 61 214 129c42 33 77 81 88 198
+c61 -73 134 -158 186 -193c85 -56 170 -78 259 -134c54 -33 386 -236 386 -685z" />
+ <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664"
+d="M1664 650c0 -109 -20 -215 -60 -314l-20 -49l-185 -33c-29 -109 -128 -190 -247 -190v-32c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-32c96 0 179 -53 223 -131l68 12c19 62 29 126 29 193c0 302 -299 566 -640 566
+s-640 -264 -640 -566c0 -67 10 -131 29 -193l68 -12c44 78 127 131 223 131v32c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v32c-119 0 -218 81 -247 190l-185 33l-20 49c-40 99 -60 205 -60 314c0 411 381 758 832 758
+s832 -347 832 -758z" />
+ <glyph glyph-name="cc-mastercard" unicode="&#xf1f1;" horiz-adv-x="2304"
+d="M1119 1195c-83 55 -181 85 -281 85c-281 0 -509 -228 -509 -508c0 -281 228 -509 509 -509c100 0 198 30 281 85c-268 218 -266 629 0 847zM1152 1171c-258 -203 -259 -597 0 -799c259 202 258 596 0 799zM1185 1195c265 -218 269 -630 0 -847c83 -55 182 -85 281 -85
+c281 0 509 228 509 509c0 280 -228 508 -509 508c-100 0 -198 -30 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17zM1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-5v3h5v-1zM1947 7h3l-4 5c2 0 2 1 3 1c1 1 1 2 1 3s0 2 -1 3c-1 0 -2 1 -4 1h-6
+v-13h3v5h1zM685 75c0 24 15 43 41 43c24 0 40 -19 40 -43c0 -25 -16 -43 -40 -43c-26 0 -41 19 -41 43zM1158 119c19 0 32 -11 35 -32h-70c3 19 15 32 35 32zM1514 75c0 24 15 43 40 43s41 -19 41 -43c0 -25 -16 -43 -41 -43s-40 19 -40 43zM1786 75c0 24 16 43 41 43
+c24 0 41 -19 41 -43c0 -25 -17 -43 -41 -43c-25 0 -41 19 -41 43zM1944 3c-1 0 -2 0 -4 1c-1 0 -2 1 -3 2s-2 2 -2 3c-1 2 -1 3 -1 4c0 2 0 3 1 4c0 2 1 3 2 4s2 1 3 2c2 1 3 1 4 1c2 0 3 0 4 -1c2 -1 3 -1 4 -2s1 -2 2 -4c0 -1 1 -2 1 -4c0 -1 -1 -2 -1 -4
+c-1 -1 -1 -2 -2 -3s-2 -2 -4 -2c-1 -1 -2 -1 -4 -1zM599 7h30v85c0 32 -21 53 -54 54c-17 0 -35 -5 -47 -24c-9 15 -24 24 -45 24c-14 0 -28 -5 -39 -20v16h-30v-135h30v75c0 24 13 36 33 36s30 -13 30 -36v-75h29v75c0 24 14 36 33 36c20 0 30 -13 30 -36v-75zM765 7h29
+v135h-29v-16c-10 12 -24 20 -43 20c-38 0 -67 -30 -67 -71s29 -71 67 -71c19 0 33 7 43 20v-17zM943 48c0 24 -18 36 -47 40l-14 2c-13 2 -23 5 -23 14s9 15 25 15c18 0 34 -6 43 -11l12 24c-14 9 -33 14 -55 14c-34 0 -56 -17 -56 -44c0 -22 16 -35 47 -39l13 -2
+c17 -3 24 -7 24 -14c0 -11 -11 -17 -31 -17s-35 7 -45 14l-13 -23c16 -11 36 -17 58 -17c39 0 62 18 62 44zM1073 14l-8 25c-9 -5 -18 -7 -26 -7c-15 0 -19 9 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61c0 -31 12 -50 47 -50c12 0 27 4 36 10zM1159 146
+c-39 0 -67 -29 -67 -71c0 -43 29 -71 69 -71c20 0 39 5 55 19l-14 22c-11 -9 -26 -15 -39 -15c-19 0 -36 9 -41 33h101v12c0 42 -26 71 -64 71zM1318 146c-17 0 -28 -8 -35 -20v16h-30v-135h30v76c0 22 9 35 29 35c6 0 12 -1 18 -4l9 28c-7 3 -15 4 -21 4zM1348 75
+c0 -41 28 -71 72 -71c20 0 34 4 48 16l-14 24c-11 -8 -22 -13 -35 -12c-24 0 -41 17 -41 43s17 43 41 43c13 0 24 -4 35 -12l14 24c-14 11 -28 16 -48 16c-44 0 -72 -30 -72 -71zM1593 7h30v135h-30v-16c-9 12 -23 20 -42 20c-38 0 -68 -30 -68 -71s30 -71 68 -71
+c19 0 33 7 42 20v-17zM1726 146c-17 0 -28 -8 -35 -20v16h-29v-135h29v76c0 22 10 35 29 35c6 0 12 -1 18 -4l9 28c-6 3 -15 4 -21 4zM1866 7h29v190h-29v-71c-9 12 -23 20 -43 20c-37 0 -67 -30 -67 -71s30 -71 67 -71c20 0 34 7 43 20v-17zM1944 27c-1 0 -3 -1 -5 -1
+c-2 -1 -3 -2 -4 -3c-2 -1 -3 -3 -3 -4c-1 -2 -1 -4 -1 -6c0 -1 0 -3 1 -5c0 -1 1 -3 3 -4c1 -1 2 -2 4 -3s4 -1 5 -1c2 0 4 0 6 1c1 1 3 2 4 3s2 3 3 4c1 2 1 4 1 5c0 2 0 4 -1 6c-1 1 -2 3 -3 4s-3 2 -4 3c-2 0 -4 1 -6 1zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048
+c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="times" unicode="&#xf00d;" horiz-adv-x="1188"
+d="M1188 214c0 -25 -10 -50 -28 -68l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-294 294l-294 -294c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136c-18 18 -28 43 -28 68s10 50 28 68l294 294l-294 294c-18 18 -28 43 -28 68s10 50 28 68l136 136
+c18 18 43 28 68 28s50 -10 68 -28l294 -294l294 294c18 18 43 28 68 28s50 -10 68 -28l136 -136c18 -18 28 -43 28 -68s-10 -50 -28 -68l-294 -294l294 -294c18 -18 28 -43 28 -68z" />
+ <glyph glyph-name="buysellads" unicode="&#xf20d;"
+d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960c0 -158 -130 -288 -288 -288h-960c-158 0 -288 130 -288 288v960c0 158 130 288 288 288h960c158 0 288 -130 288 -288z" />
+ <glyph glyph-name="diaspora" unicode="&#xf2e5;" horiz-adv-x="1581"
+d="M1005 -16c-42 59 -111 155 -153 214c-41 57 -75 102 -77 102s-66 -87 -152 -205c-82 -113 -150 -205 -151 -205c-2 0 -296 207 -297 209c0 1 65 99 147 217s149 217 149 219c0 4 -27 14 -234 83c-129 43 -235 78 -237 79s10 41 52 174c30 95 56 174 57 175
+s112 -35 248 -80s249 -81 250 -81s2 2 3 5s2 118 3 257s2 254 3 255c1 2 40 2 180 2c98 0 179 0 180 -1c2 -1 4 -78 8 -249c7 -281 9 -285 13 -285c2 0 109 36 239 80s236 79 237 78c3 -3 109 -350 108 -351s-109 -37 -241 -82c-181 -61 -240 -82 -240 -85
+c0 -2 62 -95 141 -211c78 -114 141 -208 141 -209c-1 -2 -293 -217 -295 -217c-1 0 -38 50 -82 112z" />
+ <glyph glyph-name="fonticons" unicode="&#xf280;"
+d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925c41 0 57 -15 56 -79l174 21c0 153 -105 181 -222 181c-174 0 -265 -70 -265 -240v-72h-96v-128h76
+c10 0 20 0 20 -8v-382c0 -19 -5 -25 -23 -27l-73 -7v-88h448v86l-149 14c-18 2 -11 5 -11 25v387h191l38 128h-231c-10 0 2 7 2 15v80c0 60 2 94 65 94zM1248 96v86l-54 9c-19 3 -10 5 -10 25v520h-275l-23 -101l83 -22c13 -4 23 -13 23 -27v-370c0 -19 -8 -23 -26 -25
+l-70 -9v-86h352z" />
+ <glyph glyph-name="sort-asc" unicode="&#xf0de;" horiz-adv-x="1024"
+d="M1024 832c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="1879"
+d="M1879 584c0 -24 -15 -48 -31 -66l-336 -396c-58 -68 -176 -122 -264 -122h-1088c-36 0 -87 11 -87 56c0 24 15 48 31 66l336 396c58 68 176 122 264 122h1088c36 0 87 -11 87 -56zM1536 928v-160h-832c-125 0 -280 -71 -361 -167l-337 -396l-5 -6c0 8 -1 17 -1 25v960
+c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h544c123 0 224 -101 224 -224z" />
+ <glyph glyph-name="heartbeat" unicode="&#xf21e;" horiz-adv-x="1792"
+d="M1280 512h305c-12 -13 -20 -20 -22 -22l-623 -600c-12 -12 -28 -18 -44 -18s-32 6 -44 18l-624 602c-2 1 -10 8 -21 20h369c29 0 55 20 62 48l70 281l190 -667c8 -27 33 -46 62 -46c28 0 53 19 61 46l146 485l56 -112c11 -21 33 -35 57 -35zM1792 940
+c0 -115 -50 -220 -103 -300h-369l-111 221c-11 23 -37 37 -62 35c-27 -3 -49 -20 -56 -46l-129 -430l-196 686c-8 27 -33 46 -63 46c-29 0 -54 -20 -61 -48l-116 -464h-423c-53 80 -103 185 -103 300c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216
+c299 0 478 -175 478 -468z" />
+ <glyph glyph-name="blind" unicode="&#xf29d;" horiz-adv-x="1330"
+d="M327 1225c-86 0 -156 70 -156 156c0 85 70 155 156 155s155 -70 155 -155c0 -86 -69 -156 -155 -156zM878 583c0 -108 -115 -84 -141 -40l-367 438c-16 26 -28 14 -28 14s-7 -8 4 -21l122 -139l1 -354c-86 -250 -161 -457 -161 -457c-47 -134 -86 -250 -120 -266
+c-41 -21 -71 -16 -103 -1c-42 19 -54 70 -51 100c0 0 2 16 197 618l5 416l-85 -164l35 -222c13 -84 -58 -95 -58 -95c-68 -11 -82 68 -82 70l-46 299c210 379 211 381 211 381c16 24 52 34 113 34c54 0 88 -16 107 -40l424 -521c6 -4 10 -10 14 -17l3 -3l-1 -1
+c5 -9 7 -19 7 -29zM475 433c96 -255 182 -448 182 -448c29 -74 79 -180 6 -222c-72 -42 -130 7 -146 41h-1c-3 8 -6 16 -8 25l-124 351zM1299 -159c21 -33 39 -57 28 -64c-19 -12 -25 23 -46 57c0 0 -113 171 -423 661c6 -2 17 7 17 7s11 9 11 17
+c308 -503 413 -678 413 -678z" />
+ <glyph glyph-name="arrows-v" unicode="&#xf07d;" horiz-adv-x="640"
+d="M640 1216c0 -35 -29 -64 -64 -64h-128v-1024h128c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-256 256c-12 12 -19 28 -19 45c0 35 29 64 64 64h128v1024h-128c-35 0 -64 29 -64 64c0 17 7 33 19 45l256 256
+c12 12 28 19 45 19s33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="phone-square" unicode="&#xf098;"
+d="M1280 343c0 5 0 11 -2 16c-6 18 -152 92 -180 108c-19 11 -42 33 -65 33c-44 0 -109 -131 -148 -131c-20 0 -45 18 -63 28c-132 74 -223 165 -297 297c-10 18 -28 43 -28 63c0 39 131 104 131 148c0 23 -22 46 -33 65c-16 28 -90 174 -108 180c-5 2 -11 2 -16 2
+c-26 0 -77 -12 -101 -22c-66 -30 -114 -156 -114 -225c0 -67 27 -128 50 -190c80 -219 318 -457 537 -537c62 -23 123 -50 190 -50c69 0 195 48 225 114c10 24 22 75 22 101zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
+c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="text-height" unicode="&#xf034;" horiz-adv-x="1789"
+d="M1744 128c44 0 58 -28 31 -63l-126 -162c-27 -35 -71 -35 -98 0l-126 162c-27 35 -13 63 31 63h80v1024h-80c-44 0 -58 28 -31 63l126 162c27 35 71 35 98 0l126 -162c27 -35 13 -63 -31 -63h-80v-1024h80zM81 1407l54 -27c7 -3 190 -5 211 -5c88 0 176 4 264 4
+c72 0 143 -1 215 -1h293c40 0 63 -9 90 29l42 1c9 0 19 -1 28 -1c2 -112 2 -224 2 -336c0 -35 1 -74 -5 -109c-22 -8 -45 -15 -68 -18c-23 40 -39 84 -54 128c-7 20 -31 155 -33 157c-21 26 -44 21 -75 21c-91 0 -186 4 -276 -7c-5 -44 -9 -91 -8 -136c1 -281 4 -562 4 -843
+c0 -77 -12 -158 10 -232c76 -39 166 -45 244 -80c2 -16 5 -33 5 -50c0 -9 -1 -19 -3 -29l-34 -1c-142 -4 -282 18 -425 18c-101 0 -202 -18 -303 -18c-1 17 -3 35 -3 52v9c38 61 175 62 238 99c22 49 19 320 19 383c0 202 -6 404 -6 606v117c0 18 4 90 -8 104
+c-14 15 -145 12 -162 12c-37 0 -144 -17 -173 -38c-48 -33 -48 -233 -108 -237c-18 11 -43 27 -56 44v383z" />
+ <glyph glyph-name="linkedin-square" unicode="&#xf08c;"
+d="M237 122h231v694h-231v-694zM483 1030c-1 68 -50 120 -129 120s-131 -52 -131 -120c0 -66 50 -120 128 -120h1c81 0 131 54 131 120zM1068 122h231v398c0 213 -114 312 -266 312c-124 0 -179 -69 -209 -117h2v101h-231s3 -65 0 -694h231v388c0 20 1 41 7 56
+c17 41 55 84 119 84c83 0 116 -63 116 -157v-371zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="delicious" unicode="&#xf1a5;"
+d="M1472 160v480h-704v704h-480c-124 0 -224 -100 -224 -224v-480h704v-704h480c124 0 224 100 224 224zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="qrcode" unicode="&#xf029;"
+d="M0 1408h768v-704h-128v576h-512v-512h640v-128h-768v768zM0 -128v640h640v-640h-576v128h448v384h-384v-512h-128zM896 768v640h640v-640h-576v128h448v384h-384v-512h-128zM256 1152h256v-256h-256v256zM1152 1152h128v-128h-128v128zM256 256h128v-128h-128v128z
+M768 512h128v-128h-128v128zM1152 384h128v-128h-128v128zM1152 128h128v-128h-128v128zM1024 640h384v-256h-128v128h-256v128zM1536 256v-384h-256v128h128v256h128zM1024 384v-256h-256v128h128v128h128zM768 0h384v-128h-384v128z" />
+ <glyph glyph-name="arrows-h" unicode="&#xf07e;" horiz-adv-x="1792"
+d="M1792 640c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v128h-1024v-128c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-256 256c-12 12 -19 28 -19 45s7 33 19 45l256 256c12 12 28 19 45 19c35 0 64 -29 64 -64v-128h1024v128
+c0 35 29 64 64 64c17 0 33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="mercury" unicode="&#xf223;" horiz-adv-x="1152"
+d="M830 1220c190 -94 322 -290 322 -516c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-288 32 -512 276 -512 572
+c0 226 132 422 322 516c-105 61 -187 157 -228 273c-8 21 8 43 30 43h69c13 0 24 -8 29 -20c58 -139 195 -236 354 -236s296 97 354 236c5 12 16 20 37 20h61c22 0 38 -22 30 -43c-41 -116 -123 -212 -228 -273zM576 256c247 0 448 201 448 448s-201 448 -448 448
+s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="text-width" unicode="&#xf035;"
+d="M81 1407l54 -27c7 -3 190 -5 211 -5c88 0 176 4 264 4c265 0 533 6 798 -3c22 -1 43 13 56 31l42 1c9 0 19 -1 28 -1c2 -112 2 -224 2 -336c0 -36 1 -74 -5 -109c-22 -8 -45 -15 -68 -18c-23 40 -39 84 -54 128c-7 20 -32 155 -33 157c-7 9 -16 15 -27 19
+c-8 3 -56 2 -66 2c-123 0 -265 7 -386 -7c-5 -44 -9 -91 -8 -136l1 -152v52c1 -163 3 -325 3 -487c0 -77 -12 -158 10 -232c76 -39 166 -45 244 -80c2 -16 5 -33 5 -50c0 -9 -1 -19 -3 -29l-34 -1c-142 -4 -282 18 -425 18c-101 0 -202 -18 -303 -18c-1 17 -3 35 -3 52v9
+c38 61 175 62 238 99c25 56 18 529 18 617c0 14 -5 29 -5 44c0 41 7 276 -8 293c-14 15 -145 12 -162 12c-42 0 -277 -22 -301 -38c-47 -31 -48 -232 -108 -237c-18 11 -43 27 -56 44v383zM1310 125c35 0 168 -119 195 -140c15 -12 26 -29 26 -49s-11 -37 -26 -49
+c-27 -21 -160 -140 -195 -140c-46 0 -30 107 -30 125h-1024c0 -18 16 -125 -30 -125c-35 0 -168 119 -195 140c-15 12 -26 29 -26 49s11 37 26 49c27 21 160 140 195 140c46 0 30 -107 30 -125h1024c0 18 -16 125 30 125z" />
+ <glyph glyph-name="envelope-o" unicode="&#xf003;" horiz-adv-x="1792"
+d="M1664 32v768c-21 -24 -44 -46 -69 -66c-143 -110 -287 -222 -426 -338c-75 -63 -168 -140 -272 -140h-2c-104 0 -197 77 -272 140c-139 116 -283 228 -426 338c-25 20 -48 42 -69 66v-768c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1664 1083c0 25 6 69 -32 69h-1472
+c-17 0 -32 -15 -32 -32c0 -114 57 -213 147 -284c134 -105 268 -211 401 -317c53 -43 149 -135 219 -135h2c70 0 166 92 219 135c133 106 267 212 401 317c65 51 147 162 147 247zM1792 1120v-1088c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1088
+c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="rss-square" unicode="&#xf143;"
+d="M512 256c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM863 162c-17 310 -263 556 -573 573c-9 1 -18 -3 -24 -9s-10 -14 -10 -23v-128c0 -17 13 -31 30 -32c205 -15 370 -180 385 -385c1 -17 15 -30 32 -30h128c9 0 17 4 23 10
+s10 15 9 24zM1247 161c-17 520 -438 941 -958 958c-10 1 -17 -2 -23 -9c-6 -6 -10 -14 -10 -23v-128c0 -17 14 -31 31 -32c415 -15 753 -353 768 -768c1 -17 15 -31 32 -31h128c9 0 17 4 23 10c7 6 10 14 9 23zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
+c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280"
+d="M1164 1408c15 0 30 -3 44 -9c44 -17 72 -58 72 -103v-1289c0 -45 -28 -86 -72 -103c-14 -6 -29 -8 -44 -8c-31 0 -60 11 -83 32l-441 424l-441 -424c-23 -21 -52 -33 -83 -33c-15 0 -30 3 -44 9c-44 17 -72 58 -72 103v1289c0 45 28 86 72 103c14 6 29 9 44 9h1048z" />
+ <glyph glyph-name="behance" unicode="&#xf1b4;" horiz-adv-x="2048"
+d="M1848 1197v-124h-511v124h511zM1596 771c-120 0 -200 -75 -208 -195h408c-11 121 -74 195 -200 195zM1612 186c76 0 174 41 198 119h221c-68 -209 -209 -307 -427 -307c-288 0 -467 195 -467 479c0 274 189 483 467 483c286 0 444 -225 444 -495c0 -16 -1 -32 -2 -47
+h-658c0 -146 77 -232 224 -232zM277 236h296c113 0 205 40 205 167c0 129 -77 180 -199 180h-302v-347zM277 773h281c99 0 169 43 169 150c0 116 -90 144 -190 144h-260v-294zM0 1282h594c216 0 403 -61 403 -312c0 -127 -59 -209 -172 -263c155 -44 230 -161 230 -319
+c0 -256 -215 -366 -444 -366h-611v1260z" />
+ <glyph glyph-name="wpbeginner" unicode="&#xf297;" horiz-adv-x="1792"
+d="M384 704h160v224h-160v-224zM1221 372v92c-86 -30 -157 -37 -243 -38c-193 -1 -364 79 -480 169l1 -96c109 -99 276 -177 484 -176c87 0 169 18 238 49zM640 704h640v224h-640v-224zM1792 736c0 -127 -36 -247 -99 -352c56 -64 89 -143 89 -229
+c0 -209 -198 -379 -443 -379c-166 0 -310 78 -386 193c-19 -1 -38 -1 -57 -1s-38 0 -57 1c-76 -115 -220 -193 -386 -193c-245 0 -443 170 -443 379c0 86 33 165 89 229c-63 105 -99 225 -99 352c0 424 401 768 896 768s896 -344 896 -768z" />
+ <glyph glyph-name="star-half-o" unicode="&#xf123;" horiz-adv-x="1664"
+d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500c7 -44 -9 -70 -40 -70c-11 0 -25 4 -40 12l-449 236l-449 -236c-15 -8 -29 -12 -40 -12c-31 0 -47 26 -40 70l86 500l-364 354c-43 43 -29 85 31 94
+l502 73l225 455c13 27 31 41 49 41s35 -14 49 -41l225 -455l502 -73c60 -9 74 -51 30 -94z" />
+ <glyph glyph-name="keyboard-o" unicode="&#xf11c;" horiz-adv-x="1920"
+d="M384 368v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM512 624v-96c0 -9 -7 -16 -16 -16h-224c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h224c9 0 16 -7 16 -16zM384 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96
+c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1408 368v-96c0 -9 -7 -16 -16 -16h-864c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h864c9 0 16 -7 16 -16zM768 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM640 880v-96
+c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1024 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM896 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96
+c9 0 16 -7 16 -16zM1280 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1664 368v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1152 880v-96c0 -9 -7 -16 -16 -16h-96
+c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1408 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1664 880v-352c0 -9 -7 -16 -16 -16h-224c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h112v240c0 9 7 16 16 16h96
+c9 0 16 -7 16 -16zM1792 128v896h-1664v-896h1664zM1920 1024v-896c0 -71 -57 -128 -128 -128h-1664c-71 0 -128 57 -128 128v896c0 71 57 128 128 128h1664c71 0 128 -57 128 -128z" />
+ <glyph glyph-name="minus-circle" unicode="&#xf056;"
+d="M1216 576v128c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h768c35 0 64 29 64 64zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="hand-o-down" unicode="&#xf0a7;"
+d="M1408 576c0 199 -128 369 -128 544v32h-640v-32c0 -106 -90 -177 -163 -241c-46 -41 -92 -79 -145 -112c-22 -14 -45 -26 -68 -38s-136 -62 -136 -89c0 -85 32 -160 128 -160c128 0 193 96 256 96v-576c0 -67 60 -128 128 -128c69 0 128 59 128 128v331
+c26 -20 70 -35 103 -35c47 0 87 19 119 53c21 -12 45 -18 69 -18c46 0 103 23 126 65c18 -3 37 -4 56 -4c118 0 167 73 167 184zM1280 1344c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 580c0 -184 -104 -318 -295 -317l-5 1
+c-50 -40 -114 -61 -178 -61c-14 0 -29 1 -43 3c-34 -19 -80 -33 -119 -37v-169c0 -140 -117 -256 -257 -256c-138 0 -255 118 -255 256v374c-39 -16 -86 -22 -128 -22c-168 0 -256 129 -256 288c0 134 171 177 264 235c47 30 88 64 129 100c33 29 119 97 119 145v288
+c0 71 57 128 128 128h640c71 0 128 -57 128 -128v-288c0 -63 37 -162 59 -223c37 -102 69 -207 69 -317z" />
+ <glyph glyph-name="sort-numeric-asc" unicode="&#xf162;" horiz-adv-x="1454"
+d="M1314 223c0 82 -67 169 -147 169c-70 0 -114 -57 -114 -131c0 -72 46 -133 141 -133c65 0 120 39 120 95zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1454 165c0 -202 -110 -421 -348 -421c-45 0 -82 7 -108 16c-16 5 -30 10 -42 15l39 113c9 -4 20 -8 31 -11c20 -7 46 -13 75 -13c120 0 182 100 201 204h-2c-28 -30 -87 -51 -146 -51c-145 0 -240 114 -240 244
+c0 138 106 251 253 251c159 0 287 -130 287 -347zM1424 882v-114h-469v114h167v432c0 13 1 26 1 36v16h-2l-7 -12c-5 -8 -13 -18 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+ <glyph glyph-name="share-alt" unicode="&#xf1e0;"
+d="M1216 512c177 0 320 -143 320 -320s-143 -320 -320 -320s-320 143 -320 320c0 11 1 23 2 34l-360 180c-57 -53 -134 -86 -218 -86c-177 0 -320 143 -320 320s143 320 320 320c84 0 161 -33 218 -86l360 180c-1 11 -2 23 -2 34c0 177 143 320 320 320s320 -143 320 -320
+s-143 -320 -320 -320c-84 0 -161 33 -218 86l-360 -180c1 -11 2 -23 2 -34s-1 -23 -2 -34l360 -180c57 53 134 86 218 86z" />
+ <glyph glyph-name="shirtsinbulk" unicode="&#xf214;"
+d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
+l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
+v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
+M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
+v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265c-172 0 -313 140 -313 313c0 172 141 313 313 313c173 0 313 -141 313 -313c0 -173 -140 -313 -313 -313zM595 646c0 -152 266 -41 266 -130c0 -45 -82 -49 -112 -49c-42 0 -102 9 -123 51h-3l-31 -63
+c51 -32 100 -42 162 -42c67 0 175 20 175 107c0 165 -269 56 -269 130c0 45 71 51 102 51c37 0 100 -11 122 -45h3l30 58c-52 21 -94 41 -152 41c-69 0 -170 -22 -170 -109z" />
+ <glyph glyph-name="viacoin" unicode="&#xf237;"
+d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
+ <glyph glyph-name="digg" unicode="&#xf1a6;" horiz-adv-x="2048"
+d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968h205v-697h-205v697zM614 1254h205v-204h-205v204zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
+v-369h123z" />
+ <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408"
+d="M384 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 69c1 -18 -5 -35 -17 -48c-12 -14 -29 -21 -47 -21h-135c-33 0 -60 25 -63 58c-29 305 -271 547 -576 576c-33 3 -58 30 -58 63v135c0 18 7 35 21 47c11 11 27 17 43 17h5
+c213 -17 414 -110 565 -262c152 -151 245 -352 262 -565zM1408 67c1 -17 -5 -34 -18 -47c-12 -13 -28 -20 -46 -20h-143c-34 0 -62 26 -64 60c-33 581 -496 1044 -1077 1078c-34 2 -60 30 -60 63v143c0 18 7 34 20 46c12 12 28 18 44 18h3c350 -18 679 -165 927 -414
+c249 -248 396 -577 414 -927z" />
+ <glyph glyph-name="television" unicode="&#xf26c;" horiz-adv-x="1920"
+d="M1792 288v960c0 17 -15 32 -32 32h-1600c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32zM1920 1248v-960c0 -88 -72 -160 -160 -160h-736v-128h352c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h352v128h-736c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="slack" unicode="&#xf198;"
+d="M837 508l-205 69l66 197l205 -68zM979 1344c528 -158 651 -387 493 -915s-387 -651 -915 -493s-651 387 -493 915s387 651 915 493zM1256 671v0c13 41 -9 87 -51 101l-99 34l34 103c13 42 -8 88 -50 101c-47 13 -88 -14 -101 -51l-34 -103l-206 69l35 103
+c13 42 -9 88 -51 101c-47 13 -87 -13 -100 -50l-35 -104c-100 33 -111 39 -126 37c-32 -1 -63 -22 -74 -54c-13 -42 8 -88 50 -101l100 -33l-66 -198c-100 33 -112 39 -127 37c-32 -1 -63 -23 -74 -55c-13 -42 9 -87 51 -100l99 -34l-34 -103c-13 -42 8 -88 50 -101
+s88 9 101 51l34 103l206 -69l-35 -103c-13 -42 9 -88 51 -101s87 8 100 50l35 104l99 -34c42 -13 88 9 101 51s-8 88 -50 101l-100 33l66 198l100 -34c42 -13 88 9 101 51z" />
+ <glyph glyph-name="folder-o" unicode="&#xf114;" horiz-adv-x="1664"
+d="M1536 224v704c0 53 -43 96 -96 96h-704c-53 0 -96 43 -96 96v64c0 53 -43 96 -96 96h-320c-53 0 -96 -43 -96 -96v-960c0 -53 43 -96 96 -96h1216c53 0 96 43 96 96zM1664 928v-704c0 -123 -101 -224 -224 -224h-1216c-123 0 -224 101 -224 224v960
+c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h672c123 0 224 -101 224 -224z" />
+ <glyph glyph-name="bed" unicode="&#xf236;" horiz-adv-x="2048"
+d="M256 512h1728c35 0 64 -29 64 -64v-448h-256v256h-1536v-256h-256v1216c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-704zM832 832c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM2048 576h-1152v384c0 35 29 64 64 64h704
+c212 0 384 -172 384 -384v-64z" />
+ <glyph glyph-name="caret-square-o-down" unicode="&#xf150;"
+d="M1145 861c11 -21 9 -47 -5 -66l-320 -448c-12 -17 -31 -27 -52 -27s-40 10 -52 27l-320 448c-14 19 -16 45 -5 66c11 22 33 35 57 35h640c24 0 46 -13 57 -35zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960
+c17 0 32 15 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="shower" unicode="&#xf2cc;" horiz-adv-x="1920"
+d="M1433 1287c13 -13 13 -33 0 -46l-626 -626c-13 -13 -33 -13 -46 0l-82 82c-13 13 -13 33 0 46l44 44c-97 122 -109 289 -35 422c-46 44 -108 71 -176 71c-141 0 -256 -115 -256 -256v-1280h-256v1280c0 282 230 512 512 512c144 0 274 -60 367 -156
+c126 51 272 32 382 -55l44 44c13 13 33 13 46 0zM1344 1024c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1600 896c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64s-29 -64 -64 -64zM1856 1024c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64
+s29 64 64 64zM1216 896c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1408 832c0 35 29 64 64 64s64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64zM1728 896c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 768c35 0 64 -29 64 -64
+s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1344 640c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64s-29 -64 -64 -64zM1600 768c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1216 512c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64
+s-29 -64 -64 -64zM1472 640c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 512c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1344 512c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1216 384
+c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 256c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" />
+ <glyph glyph-name="paper-plane-o" unicode="&#xf1d9;" horiz-adv-x="1792"
+d="M1764 1525c21 -15 31 -39 27 -64l-256 -1536c-3 -19 -15 -35 -32 -45c-9 -5 -20 -8 -31 -8c-8 0 -16 2 -24 5l-527 215l-298 -327c-12 -14 -29 -21 -47 -21c-8 0 -16 1 -23 4c-25 10 -41 34 -41 60v452l-472 193c-23 9 -38 30 -40 55c-2 24 11 47 32 59l1664 960
+c21 13 48 12 68 -2zM1422 26l221 1323l-1434 -827l336 -137l863 639l-478 -797z" />
+ <glyph glyph-name="circle-o-notch" unicode="&#xf1ce;" horiz-adv-x="1728"
+d="M1728 640c0 -477 -387 -864 -864 -864s-864 387 -864 864c0 434 320 793 736 855v-228c-292 -59 -512 -318 -512 -627c0 -353 287 -640 640 -640s640 287 640 640c0 309 -220 568 -512 627v228c416 -62 736 -421 736 -855z" />
+ <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792"
+d="M1280 416v192c0 18 -14 32 -32 32h-224v224c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-224h-224c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h224v-224c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v224h224c18 0 32 14 32 32zM640 1152h512v128h-512v-128z
+M256 1152v-1280h-32c-123 0 -224 101 -224 224v832c0 123 101 224 224 224h32zM1440 1152v-1280h-1088v1280h160v160c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h160zM1792 928v-832c0 -123 -101 -224 -224 -224h-32v1280h32c123 0 224 -101 224 -224z" />
+ <glyph glyph-name="toggle-off" unicode="&#xf204;" horiz-adv-x="2048"
+d="M1152 640c0 282 -230 512 -512 512s-512 -230 -512 -512s230 -512 512 -512s512 230 512 512zM1920 640c0 282 -230 512 -512 512h-386c156 -117 258 -303 258 -512s-102 -395 -258 -512h386c282 0 512 230 512 512zM2048 640c0 -353 -287 -640 -640 -640h-768
+c-353 0 -640 287 -640 640s287 640 640 640h768c353 0 640 -287 640 -640z" />
+ <glyph glyph-name="calendar-minus-o" unicode="&#xf272;" horiz-adv-x="1664"
+d="M1152 416v-64c0 -18 -14 -32 -32 -32h-576c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088
+v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96
+c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="id-badge" unicode="&#xf2c1;" horiz-adv-x="1280"
+d="M1024 278c0 -86 -57 -150 -128 -150h-512c-71 0 -128 64 -128 150c0 156 39 329 196 329c49 -46 115 -75 188 -75s139 29 188 75c157 0 196 -173 196 -329zM870 797c0 -126 -103 -227 -230 -227s-230 101 -230 227c0 125 103 227 230 227s230 -102 230 -227zM1152 -96
+v1376h-1024v-1376c0 -17 15 -32 32 -32h960c17 0 32 15 32 32zM1280 1376v-1472c0 -88 -72 -160 -160 -160h-960c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h352v-96c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v96h352c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="tencent-weibo" unicode="&#xf1d5;" horiz-adv-x="1166"
+d="M785 964c0 -106 -87 -193 -193 -193c-41 0 -79 13 -111 35c-36 -39 -76 -88 -115 -146c-163 -245 -232 -534 -202 -859c2 -29 -19 -54 -47 -57h-5c-26 0 -49 20 -52 47c-39 438 100 748 223 931c45 67 90 121 132 165c-11 24 -16 50 -16 77c0 107 86 193 193 193
+c106 0 193 -86 193 -193zM1166 953c0 -321 -261 -582 -583 -582c-44 0 -88 5 -131 14c-28 7 -45 35 -39 63c7 27 34 45 62 39c35 -9 72 -13 108 -13c264 0 479 215 479 479s-215 479 -479 479s-479 -215 -479 -479c0 -77 18 -150 52 -218c13 -26 3 -57 -22 -70
+c-26 -13 -57 -3 -70 23c-42 81 -64 173 -64 265c0 322 262 583 583 583c322 0 583 -261 583 -583z" />
+ <glyph glyph-name="file-archive-o" unicode="&#xf1c6;"
+d="M640 1152h-128v128h128v-128zM768 1024h-128v128h128v-128zM640 896h-128v128h128v-128zM768 768h-128v128h128v-128zM1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68z
+M1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416h-128v-128h-128v128h-512v-1536h1280zM781 593c85 -287 107 -349 107 -349c5 -17 8 -34 8 -52c0 -111 -108 -192 -256 -192s-256 81 -256 192
+c0 18 3 35 8 52c0 0 21 62 120 396v128h128v-128h79c29 0 54 -19 62 -47zM640 128c71 0 128 29 128 64s-57 64 -128 64s-128 -29 -128 -64s57 -64 128 -64z" />
+ <glyph glyph-name="yoast" unicode="&#xf2b1;" horiz-adv-x="1664"
+d="M339 1318h691l-26 -72h-665c-147 0 -267 -121 -267 -268v-771c0 -126 90 -237 214 -263c32 -7 65 -5 98 -5v-72h-45c-187 0 -339 153 -339 340v771c0 187 152 340 339 340zM1190 1536h247l-482 -1294c-90 -240 -199 -490 -495 -498v195c111 18 182 79 220 182
+c13 34 20 69 20 105s-7 72 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795c16 24 33 47 45 73h678v1038c0 114 -72 216 -179 254l25 67c136 -46 226 -178 226 -321z" />
+ <glyph glyph-name="share-alt-square" unicode="&#xf1e1;"
+d="M1280 341c0 118 -96 214 -213 214c-56 0 -107 -22 -145 -58l-241 120c1 8 2 15 2 23s-1 15 -2 23l241 120c38 -36 89 -58 145 -58c117 0 213 96 213 214c0 117 -96 213 -213 213c-118 0 -214 -96 -214 -213c0 -8 1 -15 2 -23l-241 -120c-38 35 -89 57 -145 57
+c-117 0 -213 -95 -213 -213s96 -213 213 -213c56 0 107 22 145 57l241 -120c-1 -8 -2 -15 -2 -23c0 -117 96 -213 214 -213c117 0 213 96 213 213zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
+c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="imdb" unicode="&#xf2d8;"
+d="M922 739v-182c0 -36 7 -69 -38 -68v309c44 0 38 -23 38 -59zM1238 643v-121c0 -20 6 -53 -23 -53c-6 0 -11 3 -14 9c-8 19 -4 163 -4 165c0 14 -4 47 18 47c27 0 23 -27 23 -47zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221c-10 74 -20 148 -32 221h-158
+v-472h107v312l45 -312h76l43 319v-319zM1039 712c0 30 1 62 -5 90c-16 83 -116 77 -181 77h-91v-472c318 0 277 -22 277 305zM1356 515v133c0 64 -3 111 -82 111c-33 0 -55 -10 -77 -34v154h-117v-472h110l7 30c21 -25 44 -36 77 -36c73 0 82 56 82 114zM1536 1248v-1216
+c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1216c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="snapchat-square" unicode="&#xf2ad;"
+d="M1280 388c0 14 -8 24 -22 27c-91 19 -160 83 -198 167c-4 8 -7 16 -7 25c0 45 124 36 124 100c0 27 -33 44 -57 44c-22 0 -40 -16 -63 -16c-4 0 -8 1 -12 2c3 38 5 77 5 115c0 34 -2 82 -17 114c-48 104 -140 165 -255 165c-125 0 -220 -47 -275 -165
+c-15 -32 -18 -80 -18 -115c0 -38 3 -76 6 -114c-5 -1 -10 -2 -15 -2c-22 0 -41 16 -62 16c-25 0 -55 -17 -55 -45c0 -62 124 -54 124 -99c0 -9 -3 -17 -7 -25c-39 -84 -106 -147 -198 -167c-14 -3 -22 -13 -22 -27c0 -47 106 -64 138 -69c9 -24 5 -66 40 -66
+c26 0 51 10 77 10c106 0 134 -95 256 -95c127 0 151 95 258 95c26 0 52 -9 78 -9c34 0 31 42 39 65c32 5 138 22 138 69zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="building-o" unicode="&#xf0f7;" horiz-adv-x="1408"
+d="M384 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 480v-64c0 -17 -15 -32 -32 -32h-64
+c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64
+c17 0 32 -15 32 -32zM896 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 992v-64
+c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64
+c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 736
+v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32
+v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32z
+M1152 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 -128h384v1536h-1152v-1536h384v224c0 17 15 32 32 32h320c17 0 32 -15 32 -32v-224zM1408 1472v-1664c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64
+v1664c0 35 29 64 64 64h1280c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="sort-alpha-desc" unicode="&#xf15e;" horiz-adv-x="1629"
+d="M1159 104h177l-72 218l-12 47c-1 8 -2 14 -2 20h-4l-3 -20c-3 -12 -4 -27 -11 -47zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192
+c18 0 32 -14 32 -32zM1629 -150v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1540 1001v-233h-584v90l369 529c8 12 16 22 21 27l11 9v3c-4 0 -8 -1 -14 -1c-8 -2 -18 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530
+c-6 -9 -14 -18 -21 -26l-11 -10v-3l14 3c9 1 18 1 30 1h248v119h121z" />
+ <glyph glyph-name="map-signs" unicode="&#xf277;" horiz-adv-x="1718"
+d="M1708 1239c13 -13 13 -33 0 -46l-141 -141c-18 -18 -43 -28 -68 -28h-1344c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h576v64c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-64h512c25 0 50 -10 68 -28zM731 320h256v-512c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64
+v512zM1563 768c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-1344c-25 0 -50 10 -68 28l-141 141c-13 13 -13 33 0 46l141 141c18 18 43 28 68 28h512v192h256v-192h576z" />
+ <glyph glyph-name="long-arrow-right" unicode="&#xf178;" horiz-adv-x="1728"
+d="M1728 643c0 -9 -4 -18 -10 -24l-384 -354c-10 -9 -23 -11 -35 -6c-11 5 -19 16 -19 29v224h-1248c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h1248v224c0 13 7 24 19 29s25 3 35 -5l384 -350c6 -6 10 -14 10 -23z" />
+ <glyph glyph-name="first-order" unicode="&#xf2b0;"
+d="M1322 640c0 -26 -1 -51 -5 -76l-236 14l224 -78c-13 -51 -33 -98 -58 -141l-214 103l177 -158c-30 -41 -66 -77 -107 -108l-157 178l103 -215c-43 -26 -90 -45 -140 -59l-79 228l14 -240c-25 -4 -50 -6 -76 -6c-25 0 -51 2 -76 6l14 238l-78 -226c-50 13 -97 33 -140 59
+l103 215l-157 -178c-41 30 -77 67 -108 108l178 158l-214 -104c-25 44 -45 91 -58 141l224 79l-237 -14c-3 25 -5 50 -5 76s2 52 5 77l238 -14l-225 79c13 50 33 97 58 140l214 -104l-177 159c31 41 67 77 107 108l158 -178l-103 215c43 25 90 45 140 58l77 -224l-13 236
+c24 4 50 6 75 6c26 0 51 -2 76 -6l-14 -237l78 225c50 -13 97 -33 140 -59l-103 -214l158 178c40 -31 76 -67 107 -108l-177 -159l213 104c26 -43 45 -91 58 -141l-224 -78l237 14c4 -25 5 -51 5 -77zM1352 640c0 325 -262 588 -584 588c-323 0 -584 -263 -584 -588
+c0 -324 261 -587 584 -587c322 0 584 263 584 587zM1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
+ <glyph glyph-name="calendar-check-o" unicode="&#xf274;" horiz-adv-x="1664"
+d="M1303 572l-512 -512c-13 -12 -33 -12 -46 0l-288 288c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l220 -220l444 444c13 12 33 12 45 0l46 -46c12 -12 12 -32 0 -45zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288
+c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96
+c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="id-card" unicode="&#xf2c2;" horiz-adv-x="2048"
+d="M896 324c0 132 -32 284 -164 284c-40 -40 -95 -64 -156 -64s-116 24 -156 64c-132 0 -164 -152 -164 -284c0 -73 48 -132 107 -132h426c59 0 107 59 107 132zM768 768c0 106 -86 192 -192 192s-192 -86 -192 -192s86 -192 192 -192s192 86 192 192zM1792 288v64
+c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1408 544v64c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1792 544v64c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32
+v-64c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1792 800v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM128 1152h1792v96c0 18 -14 32 -32 32h-1728c-18 0 -32 -14 -32 -32v-96zM2048 1248v-1216
+c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="play-circle" unicode="&#xf144;"
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM1152 585c20 11 32 32 32 55s-12 44 -32 55l-544 320c-19 12 -44 12 -64 1c-20 -12 -32 -33 -32 -56v-640c0 -23 12 -44 32 -56c10 -5 21 -8 32 -8s22 3 32 9z" />
+ <glyph glyph-name="github-alt" unicode="&#xf113;" horiz-adv-x="1664"
+d="M640 320c0 -73 -38 -192 -128 -192s-128 119 -128 192s38 192 128 192s128 -119 128 -192zM1280 320c0 -73 -38 -192 -128 -192s-128 119 -128 192s38 192 128 192s128 -119 128 -192zM1440 320c0 153 -93 288 -256 288c-66 0 -129 -12 -195 -21
+c-52 -8 -104 -11 -157 -11s-105 3 -157 11c-65 9 -129 21 -195 21c-163 0 -256 -135 -256 -288c0 -306 280 -353 524 -353h168c244 0 524 47 524 353zM1664 496c0 -111 -11 -229 -61 -331c-132 -267 -495 -293 -755 -293c-264 0 -649 23 -786 293c-51 101 -62 220 -62 331
+c0 146 40 284 136 396c-18 55 -27 113 -27 170c0 75 17 150 51 218c158 0 259 -69 379 -163c101 24 205 35 309 35c94 0 189 -10 280 -32c119 93 220 160 376 160c34 -68 51 -143 51 -218c0 -57 -9 -114 -27 -168c96 -113 136 -252 136 -398z" />
+ <glyph glyph-name="sign-language" unicode="&#xf2a7;" horiz-adv-x="1664"
+d="M831 863c21 0 41 -6 59 -18l222 -148c41 -27 78 -60 110 -97l146 -170c25 -29 36 -68 29 -106l-72 -413c-8 -42 -42 -74 -85 -79l-527 -56l-352 -32h-9c-52 0 -96 42 -96 96c0 50 42 90 92 96l260 32h-448c-55 0 -99 46 -96 101c3 52 49 91 101 91l442 1l-521 64
+c-54 6 -93 55 -85 110c8 48 52 80 100 80h10l481 -60l-351 94c-50 13 -88 59 -80 110c8 48 49 81 95 81c7 0 13 -1 20 -2l448 -96l217 -37c2 0 4 -1 6 -1c30 0 45 41 18 59l-186 125c-46 31 -57 93 -24 137c18 25 47 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
+l-238 262c-2 2 -3 5 -5 7c-31 41 -24 101 19 134c40 31 97 21 132 -16l142 -147c-3 -3 -6 -5 -9 -8c-21 -29 -29 -64 -23 -99c6 -34 26 -65 55 -85zM1648 1115l15 -266c3 -49 -1 -99 -11 -147l-48 -219c-8 -38 -32 -69 -67 -87l-106 -54c1 40 -12 78 -39 109l-146 170
+c-34 39 -73 74 -117 103l-222 148c-22 15 -48 23 -76 23c-34 0 -65 -14 -88 -37l-235 312c-33 44 -23 106 23 137c43 30 102 16 134 -26l266 -352l-262 455c-28 47 -12 108 37 134c46 24 104 5 130 -40l241 -420l-136 337c-19 48 -6 106 40 130c49 26 109 5 132 -45
+l193 -415l101 -196c16 -31 63 -18 61 16l-12 224c-3 55 40 101 95 102c52 0 94 -44 97 -96z" />
+ <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1407"
+d="M1384 609l-1328 -738c-31 -17 -56 -2 -56 33v1472c0 35 25 50 56 33l1328 -738c31 -17 31 -45 0 -62z" />
+ <glyph glyph-name="heart-o" unicode="&#xf08a;" horiz-adv-x="1792"
+d="M1664 940c0 281 -190 340 -350 340c-149 0 -317 -161 -369 -223c-24 -29 -74 -29 -98 0c-52 62 -220 223 -369 223c-160 0 -350 -59 -350 -340c0 -183 185 -353 187 -355l581 -560l580 559c3 3 188 173 188 356zM1792 940c0 -240 -220 -441 -229 -450l-623 -600
+c-12 -12 -28 -18 -44 -18s-32 6 -44 18l-624 602c-8 7 -228 208 -228 448c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216c299 0 478 -175 478 -468z" />
+ <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792"
+d="M675 252c28 46 13 99 -34 119c-45 19 -105 -1 -133 -45c-29 -45 -15 -98 30 -119c46 -21 108 -1 137 45zM769 373c10 18 4 38 -14 45c-18 6 -40 -2 -50 -19c-10 -18 -5 -37 13 -45c18 -7 41 1 51 19zM943 266c-60 -136 -234 -210 -382 -162c-143 46 -203 187 -141 314
+c62 124 221 194 362 158c147 -38 221 -176 161 -310zM1255 426c-19 195 -275 329 -572 300c-297 -30 -521 -211 -502 -406s275 -329 572 -300c297 30 521 211 502 406zM1563 422c0 -225 -324 -508 -811 -508c-372 0 -752 180 -752 477c0 155 98 334 267 503
+c226 226 489 328 588 229c44 -43 48 -119 20 -209c-14 -46 43 -20 43 -21c182 77 341 81 399 -2c31 -44 28 -106 0 -178c-13 -33 4 -38 29 -46c103 -32 217 -109 217 -245zM1489 1046c57 -63 73 -150 48 -226c-10 -31 -43 -48 -74 -38s-48 43 -38 74c12 38 4 80 -24 111
+s-69 43 -107 35c-32 -7 -64 13 -70 45c-7 32 13 63 45 70c78 17 163 -7 220 -71zM1670 1209c118 -130 149 -308 99 -464c-12 -36 -50 -56 -86 -44s-56 50 -45 86c36 111 14 238 -70 330c-84 93 -207 128 -321 104c-37 -8 -74 16 -82 53s16 73 53 81c161 34 334 -15 452 -146
+z" />
+ <glyph glyph-name="angle-down" unicode="&#xf107;" horiz-adv-x="998"
+d="M998 800c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="cc-jcb" unicode="&#xf24b;" horiz-adv-x="2304"
+d="M1951 538c0 -36 -24 -62 -54 -68c-4 -1 -13 -2 -18 -2h-153v140h153c5 0 14 -1 18 -2c30 -6 54 -33 54 -68zM1933 751c0 -35 -24 -58 -53 -63c-3 -1 -10 -1 -15 -1h-139v129h139c5 0 12 -1 15 -1c29 -5 53 -29 53 -64zM728 587v308h-228v-308c0 -75 -51 -131 -143 -131
+c-78 0 -155 23 -229 59v-112c120 -33 272 -33 272 -33c254 0 328 97 328 217zM1442 403v113c-52 -27 -118 -53 -200 -59c-144 -11 -230 59 -230 183s86 194 230 183c82 -6 147 -31 200 -58v112c-107 27 -208 31 -208 31c-352 16 -452 -123 -452 -268s100 -284 452 -268
+c0 0 101 4 208 31zM2176 518c0 74 -66 122 -152 128v3c78 11 121 62 121 121c0 76 -63 120 -148 124c-6 0 -17 1 -26 1h-455v-510h491c97 0 169 52 169 133zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048
+c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="compress" unicode="&#xf066;" horiz-adv-x="1510"
+d="M755 576v-448c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-144 144l-332 -332c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l332 332l-144 144c-12 12 -19 28 -19 45c0 35 29 64 64 64h448c35 0 64 -29 64 -64zM1510 1248
+c0 -8 -4 -17 -10 -23l-332 -332l144 -144c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64v448c0 35 29 64 64 64c17 0 33 -7 45 -19l144 -144l332 332c6 6 15 10 23 10s17 -4 23 -10l114 -114c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="pencil-square-o" unicode="&#xf044;" horiz-adv-x="1784"
+d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072c-9 9 -24 8 -33 -1l-350 -350c-9 -9 -10 -24 -1 -33s24 -8 33 1l350 350c9 9 10 24 1 33zM1408 478v-190c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832
+c40 0 80 -8 117 -25c9 -4 16 -13 18 -23c2 -11 -1 -21 -9 -29l-49 -49c-9 -9 -21 -12 -32 -8c-15 4 -30 6 -45 6h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v126c0 8 3 16 9 22l64 64c10 10 23 12 35 7s20 -16 20 -29zM1312 1216
+l288 -288l-672 -672h-288v288zM1756 1084l-92 -92l-288 288l92 92c37 37 99 37 136 0l152 -152c37 -37 37 -99 0 -136z" />
+ <glyph glyph-name="google-plus-square" unicode="&#xf0d4;"
+d="M917 631c0 25 -3 45 -6 64h-362v-132h217c-8 -56 -65 -165 -217 -165c-132 0 -239 108 -239 242s107 242 239 242c74 0 124 -31 153 -59l104 101c-67 62 -154 100 -257 100c-213 0 -384 -172 -384 -384s171 -384 384 -384c221 0 368 156 368 375zM1262 585h109v110h-109
+v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="keybase" unicode="&#xf2f4;" horiz-adv-x="1547"
+d="M146 -80c-13 28 -30 67 -39 87l-13 38l-44 -49l-44 -48l-4 92c-7 131 4 267 26 363c50 214 208 408 411 511l45 21l-10 33c-7 17 -14 55 -16 79l-4 46l-46 4c-70 7 -107 27 -131 77c-13 26 -13 30 -9 100c4 92 12 111 40 142c35 39 59 45 146 41c63 -4 77 -6 105 -19
+c17 -9 33 -18 35 -18s22 24 46 57l41 59l26 -15c15 -9 33 -20 42 -24l15 -9l-13 -33c-7 -17 -16 -48 -18 -63l-4 -31l37 -4c133 -13 234 -94 271 -216c11 -39 11 -116 0 -153c-11 -35 -11 -37 -2 -37c15 0 118 -51 159 -77c81 -52 175 -143 227 -222
+c98 -146 140 -306 123 -481c-9 -105 -29 -187 -64 -268l-13 -31h-109l26 52c28 57 50 136 61 206c7 48 10 179 3 203l-5 15l-28 -31c-70 -76 -172 -98 -310 -61c-118 31 -167 37 -278 37c-85 0 -113 -2 -159 -13c-127 -28 -217 -69 -341 -159c-46 -33 -83 -59 -85 -59
+s4 22 13 50s24 74 33 105l17 55l-19 -20c-11 -11 -42 -42 -68 -70l-46 -50l11 -42c13 -55 44 -122 77 -172c13 -22 24 -40 24 -42s-26 -2 -57 -2h-57zM338 449c105 111 190 200 192 200c2 -2 -8 -35 -19 -72c-72 -227 -87 -271 -85 -273c0 0 26 9 54 20
+c186 81 402 92 631 31c103 -26 142 -26 192 0c28 15 40 23 53 45c24 37 26 90 11 138c-37 105 -182 240 -317 299c-70 31 -74 30 -89 15l-14 -13l57 -69c31 -37 64 -79 68 -90c13 -26 15 -68 2 -94c-17 -37 -70 -64 -111 -55c-17 4 -25 3 -42 -10c-48 -35 -100 -26 -144 26
+c-35 39 -44 59 -46 98c0 20 -7 43 -11 52c-7 13 -8 28 -8 48l2 31l-29 7c-39 11 -85 32 -111 52c-13 9 -24 17 -28 17s-33 -13 -64 -28c-212 -109 -349 -312 -371 -541c-2 -22 -4 -51 -6 -62l-3 -19l24 24c11 11 107 112 212 223zM904 610c20 15 37 28 41 28
+c2 0 9 -6 16 -15c11 -17 30 -17 39 -2c7 11 7 13 -122 170c-76 94 -92 110 -103 110c-26 -2 -19 -23 22 -73l39 -48l-22 -17c-24 -22 -26 -26 -11 -39c11 -11 13 -9 35 6l24 15l16 -13c9 -7 13 -17 13 -19c0 -4 -17 -20 -37 -37c-20 -15 -35 -34 -35 -38c0 -7 10 -24 30 -48
+c7 -13 18 -8 55 20zM679 920c13 39 56 70 100 70c24 0 59 -20 83 -46l22 -26l20 24c55 61 61 147 17 221c-33 55 -94 87 -179 96c-46 4 -57 8 -81 32l-17 18l-9 -13c-17 -26 -54 -111 -65 -144c-15 -50 -9 -129 11 -168c20 -37 72 -88 87 -81c2 -2 7 6 11 17zM484 1217
+c4 11 16 39 27 61s19 44 19 51c0 20 -21 28 -80 32c-52 4 -57 3 -68 -8c-9 -9 -13 -20 -13 -35c0 -13 -3 -37 -5 -57c-4 -46 2 -54 48 -61c68 -4 65 -5 72 17zM417 1270c0 37 4 41 35 41h28v-61h-61v20h-2zM554 -4c-13 13 -17 22 -17 44c0 41 24 66 63 66
+c37 0 64 -27 64 -64c0 -39 -25 -61 -66 -63c-22 0 -31 4 -44 17zM976 -10c-50 39 -24 116 39 116c39 0 61 -25 63 -66c0 -24 -2 -31 -17 -44s-22 -17 -44 -17c-20 0 -32 4 -41 11z" />
+ <glyph glyph-name="angle-right" unicode="&#xf105;" horiz-adv-x="582"
+d="M582 576c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 14 -10 23c0 8 4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="forumbee" unicode="&#xf211;"
+d="M934 1386c-423 -161 -756 -499 -914 -923c-13 58 -20 117 -20 176c0 423 342 766 765 766c57 0 114 -7 169 -19zM1203 1267c62 -43 117 -95 164 -155c-518 -151 -923 -558 -1071 -1077c-59 46 -112 100 -155 162c149 514 549 918 1062 1070zM470 -67
+c154 475 526 849 999 1006c27 -62 45 -128 54 -195c-390 -160 -700 -472 -859 -863c-67 9 -132 26 -194 52zM1536 -125c-124 32 -247 70 -367 115c-88 -55 -187 -92 -290 -107c146 273 371 499 643 646c-14 -100 -49 -198 -101 -284c45 -121 83 -245 115 -370z" />
+ <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538"
+d="M14 557l710 710c25 25 65 25 90 0l710 -710c25 -25 16 -45 -19 -45h-1472c-35 0 -44 20 -19 45zM1473 0h-1408c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1408c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64z" />
+ <glyph glyph-name="mobile" unicode="&#xf10b;" horiz-adv-x="768"
+d="M464 128c0 44 -36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80s80 36 80 80zM672 288v704c0 17 -15 32 -32 32h-512c-17 0 -32 -15 -32 -32v-704c0 -17 15 -32 32 -32h512c17 0 32 15 32 32zM480 1136c0 9 -7 16 -16 16h-160c-9 0 -16 -7 -16 -16s7 -16 16 -16h160
+c9 0 16 7 16 16zM768 1152v-1024c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v1024c0 70 58 128 128 128h512c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="hourglass-end" unicode="&#xf253;"
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM874 700c202 76 406 343 406 708h-1024c0 -365 204 -632 406 -708c25 -9 42 -33 42 -60s-17 -51 -42 -60c-86 -32 -173 -100 -244 -196h700c-71 96 -158 164 -244 196c-25 9 -42 33 -42 60
+s17 51 42 60z" />
+ <glyph glyph-name="trash-o" unicode="&#xf014;" horiz-adv-x="1408"
+d="M512 800v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM768 800v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1024 800v-576c0 -18 -14 -32 -32 -32h-64
+c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1152 76v948h-896v-948c0 -48 27 -76 32 -76h832c5 0 32 28 32 76zM480 1152h448l-48 117c-3 4 -12 10 -17 11h-317c-6 -1 -14 -7 -17 -11zM1408 1120v-64c0 -18 -14 -32 -32 -32h-96v-948
+c0 -110 -72 -204 -160 -204h-832c-88 0 -160 90 -160 200v952h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h309l70 167c20 49 80 89 133 89h320c53 0 113 -40 133 -89l70 -167h309c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="star-o" unicode="&#xf006;" horiz-adv-x="1664"
+d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889c0 -18 -13 -35 -26 -48l-363 -354l86 -500c1 -7 1 -13 1 -20c0 -27 -12 -50 -41 -50c-14 0 -28 5 -40 12l-449 236l-449 -236c-13 -7 -26 -12 -40 -12
+c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73l225 455c9 19 26 41 49 41s40 -22 49 -41l225 -455l502 -73c24 -4 56 -16 56 -46z" />
+ <glyph glyph-name="floppy-o" unicode="&#xf0c7;"
+d="M384 0h768v384h-768v-384zM1280 0h128v896c0 19 -17 60 -30 73l-281 281c-14 14 -53 30 -73 30v-416c0 -53 -43 -96 -96 -96h-576c-53 0 -96 43 -96 96v416h-128v-1280h128v416c0 53 43 96 96 96h832c53 0 96 -43 96 -96v-416zM896 928v320c0 17 -15 32 -32 32h-192
+c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h192c17 0 32 15 32 32zM1536 896v-928c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h928c53 0 126 -30 164 -68l280 -280c38 -38 68 -111 68 -164z" />
+ <glyph glyph-name="file-powerpoint-o" unicode="&#xf1c4;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM416 106h92v555h-92v107h368c46 0 92 -4 130 -19c83 -35 137 -119 137 -228s-56 -202 -146 -233c-36 -13 -75 -15 -118 -15h-137v-167h93v-106h-327v106zM769 386c31 0 57 5 78 15c42 21 62 64 62 120c0 53 -20 94 -56 115c-21 12 -48 18 -83 18h-120v-268
+h119z" />
+ <glyph glyph-name="cc-discover" unicode="&#xf1f2;" horiz-adv-x="2304"
+d="M313 759c0 -32 -13 -63 -36 -84c-20 -18 -47 -26 -89 -26h-17v220h17c42 0 68 -7 89 -27c23 -20 36 -51 36 -83zM2089 824c0 -34 -22 -52 -64 -52h-19v101h20c41 0 63 -17 63 -49zM380 759c0 98 -73 167 -179 167h-95v-333h95c50 0 87 11 119 38c38 32 60 79 60 128z
+M410 593h65v333h-65v-333zM730 694c0 53 -22 77 -96 104c-39 14 -50 24 -50 42c0 21 20 37 48 37c20 0 36 -8 53 -27l34 44c-28 25 -62 37 -98 37c-59 0 -104 -41 -104 -95c0 -46 21 -70 82 -92c25 -9 38 -14 45 -19c13 -8 19 -20 19 -34c0 -27 -21 -47 -50 -47
+c-31 0 -56 15 -71 44l-42 -40c30 -44 66 -64 115 -64c68 0 115 45 115 110zM1008 604v77c-26 -26 -49 -37 -78 -37c-66 0 -112 48 -112 115c0 64 48 115 109 115c31 0 54 -11 81 -38v77c-28 14 -52 20 -80 20c-98 0 -177 -77 -177 -174c0 -98 77 -174 176 -174
+c28 0 52 5 81 19zM2240 0v527c-160 -100 -723 -420 -1633 -591h1569c35 0 64 29 64 64zM1389 757c0 100 -81 181 -181 181s-181 -81 -181 -181s81 -181 181 -181s181 81 181 181zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56
+h-115v74h119v57h-184v-333zM2105 593h80l-105 140c49 10 76 43 76 94c0 63 -43 99 -118 99h-97v-333h65v133h9zM2304 1274v-1268c0 -74 -59 -134 -132 -134h-2040c-73 0 -132 60 -132 134v1268c0 74 59 134 132 134h2040c73 0 132 -60 132 -134z" />
+ <glyph glyph-name="bomb" unicode="&#xf1e2;" horiz-adv-x="1792"
+d="M571 947c-13 33 -50 48 -83 35c-144 -58 -260 -174 -318 -318c-13 -33 2 -70 35 -83c8 -3 16 -5 24 -5c26 0 49 15 60 40c45 112 135 202 247 247c33 14 49 51 35 84zM1513 1303l46 -46l-244 -243l68 -68c25 -25 25 -66 0 -91l-64 -64c56 -101 89 -218 89 -343
+c0 -389 -315 -704 -704 -704s-704 315 -704 704s315 704 704 704c125 0 242 -33 343 -89l64 64c25 25 66 25 91 0l68 -68zM1521 1359c-6 -6 -14 -10 -22 -10c-9 0 -17 4 -23 10l-91 90c-12 13 -12 33 0 46c13 12 33 12 46 0l90 -91c13 -12 13 -33 0 -45zM1751 1129
+c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-90 91c-13 12 -13 33 0 45c12 13 33 13 45 0l91 -90c12 -13 12 -33 0 -46zM1792 1312c0 -18 -14 -32 -32 -32h-96c-18 0 -32 14 -32 32s14 32 32 32h96c18 0 32 -14 32 -32zM1600 1504v-96c0 -18 -14 -32 -32 -32s-32 14 -32 32v96
+c0 18 14 32 32 32s32 -14 32 -32zM1751 1449l-91 -90c-6 -6 -14 -10 -22 -10c-9 0 -17 4 -23 10c-13 12 -13 33 0 45l90 91c13 12 33 12 46 0c12 -13 12 -33 0 -46z" />
+ <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792"
+d="M666 1055c-56 -86 -97 -179 -137 -273c-58 121 -122 242 -273 242h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224c178 0 309 -83 410 -225zM1792 256c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192c-297 0 -480 -35 -665 225
+c55 86 96 179 136 273c58 -121 122 -242 273 -242h256v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23zM1792 1152c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 14 -32 32v192h-256c-133 0 -196 -91 -252 -199
+c-29 -56 -54 -114 -78 -171c-111 -258 -241 -526 -566 -526h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224c133 0 196 91 252 199c29 56 54 114 78 171c111 258 241 526 566 526h256v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23z" />
+ <glyph glyph-name="fire-extinguisher" unicode="&#xf134;" horiz-adv-x="1408"
+d="M512 1344c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 1376v-320c0 -10 -4 -19 -12 -25c-6 -5 -13 -7 -20 -7c-2 0 -4 0 -7 1l-448 96c-14 3 -25 16 -25 31h-256v-102c146 -30 256 -159 256 -314v-800c0 -35 -29 -64 -64 -64h-512
+c-35 0 -64 29 -64 64v800c0 143 94 265 224 305v111h-32c-212 0 -326 -219 -327 -221c-11 -22 -34 -35 -57 -35c-10 0 -20 2 -29 7c-31 16 -44 54 -28 86c5 10 105 204 306 269c-15 25 -25 54 -25 86c0 88 72 160 160 160s160 -72 160 -160c0 -23 -5 -44 -14 -64h302
+c0 15 11 28 25 31l448 96c3 1 5 1 7 1c7 0 14 -2 20 -7c8 -6 12 -15 12 -25z" />
+ <glyph glyph-name="gnu-social" unicode="&#xf2e7;" horiz-adv-x="1513"
+d="M218 1404v0h1077c121 0 218 -97 218 -218v-873c0 -121 -97 -218 -218 -218h-118c-80 -349 -645 -351 -645 -351s334 104 335 351h-649c-121 0 -218 97 -218 218v873c0 121 97 218 218 218zM532 1229c-35 -5 -114 -89 -114 -150c0 -49 -3 -127 70 -167
+c-69 -67 -82 -163 -81 -247c2 -154 67 -382 357 -397s352 214 352 360h-305l50 -134l89 5s17 -107 -174 -100c-122 5 -200 68 -200 249s22 211 193 218s203 -139 203 -139l142 -3s-11 107 -93 188c73 40 72 118 69 167c-2 47 -102 169 -125 148s39 -41 34 -143
+c-2 -45 11 -79 -75 -79c-57 0 -33 51 -105 51c-43 0 -59 -28 -65 -50c-6 22 -21 50 -64 50c-72 0 -49 -51 -106 -51c-86 0 -72 34 -74 79c-5 102 56 122 33 143c-1 1 -3 2 -5 2h-6z" />
+ <glyph glyph-name="pencil-square" unicode="&#xf14b;"
+d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818c8 -7 6 -21 -3 -30l-291 -291c-9 -9 -23 -11 -30 -3c-8 7 -6 21 3 30l291 291c9 9 23 11 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92c37 37 37 99 0 136l-152 152c-37 37 -99 37 -136 0
+l-92 -92zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="reddit-square" unicode="&#xf1a2;"
+d="M939 407c7 -7 7 -19 0 -26c-49 -49 -143 -53 -171 -53s-122 4 -171 53c-7 7 -7 19 0 26c7 8 19 8 26 0c31 -31 98 -42 145 -42s114 11 145 42c7 8 19 8 26 0zM676 563c0 -42 -35 -77 -77 -77s-77 35 -77 77c0 43 35 77 77 77s77 -34 77 -77zM1014 563
+c0 -42 -35 -77 -77 -77s-77 35 -77 77c0 43 35 77 77 77s77 -34 77 -77zM1229 666c0 56 -46 102 -103 102c-28 0 -54 -12 -73 -31c-70 48 -164 79 -267 82l54 243l171 -39c1 -42 35 -76 77 -76s77 35 77 77s-35 77 -77 77c-30 0 -56 -17 -69 -43l-189 42
+c-10 3 -19 -4 -21 -13l-60 -268c-103 -4 -196 -35 -265 -83c-19 20 -45 32 -74 32c-57 0 -103 -46 -103 -102c0 -41 24 -76 58 -93c-3 -15 -5 -32 -5 -48c0 -163 183 -295 409 -295s410 132 410 295c0 17 -2 33 -6 49c33 17 56 52 56 92zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="arrow-circle-o-down" unicode="&#xf01a;"
+d="M1120 608c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v352c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-352h192c18 0 32 -14 32 -32zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544
+s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="caret-left" unicode="&#xf0d9;" horiz-adv-x="576"
+d="M576 1088v-896c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-448 448c-12 12 -19 28 -19 45s7 33 19 45l448 448c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="camera-retro" unicode="&#xf083;" horiz-adv-x="1792"
+d="M928 704c0 18 -14 32 -32 32c-88 0 -160 -72 -160 -160c0 -18 14 -32 32 -32s32 14 32 32c0 53 43 96 96 96c18 0 32 14 32 32zM1152 574c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM128 0h1536v128h-1536v-128zM1280 574
+c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM256 1216h384v128h-384v-128zM128 1024h1536v256h-828l-64 -128h-644v-128zM1792 1280v-1280c0 -71 -57 -128 -128 -128h-1536c-71 0 -128 57 -128 128v1280c0 71 57 128 128 128h1536
+c71 0 128 -57 128 -128z" />
+ <glyph glyph-name="thumbs-o-up" unicode="&#xf087;"
+d="M256 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 768c0 68 -61 128 -128 128h-352c0 117 96 202 96 320c0 117 -23 192 -160 192c-64 -65 -31 -218 -128 -320c-28 -29 -52 -60 -77 -91c-45 -58 -164 -229 -243 -229h-32v-640h32
+c56 0 148 -36 202 -55c110 -38 224 -73 342 -73h121c113 0 192 45 192 167c0 19 -2 38 -5 56c42 23 65 80 65 126c0 24 -6 48 -18 69c34 32 53 72 53 119c0 32 -14 79 -35 103c47 1 75 91 75 128zM1536 769c0 -58 -17 -115 -49 -163c6 -22 9 -46 9 -69
+c0 -50 -13 -100 -38 -144c2 -14 3 -29 3 -43c0 -64 -21 -128 -60 -178c2 -189 -127 -300 -312 -300h-129c-142 0 -274 42 -406 88c-29 10 -110 40 -138 40h-288c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h274c39 26 107 116 137 155c34 44 69 87 107 128
+c60 64 28 222 128 320c24 23 56 37 90 37c104 0 204 -37 253 -134c31 -61 35 -119 35 -186c0 -70 -18 -130 -48 -192h176c138 0 256 -117 256 -255z" />
+ <glyph glyph-name="product-hunt" unicode="&#xf288;" horiz-adv-x="1792"
+d="M1150 774c0 -74 -60 -134 -135 -134h-253v269h253c75 0 135 -60 135 -135zM1329 774c0 174 -140 314 -314 314h-433v-896h180v269h253c174 0 314 140 314 313zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="etsy" unicode="&#xf2d7;"
+d="M518 1353v-655c232 -2 354 10 354 10c94 3 108 27 130 119l33 142h103l-14 -322l7 -319h-103l-29 127c-21 95 -62 118 -129 119c0 0 -86 8 -352 8v-556c0 -104 57 -153 177 -153h357c120 0 228 12 302 183l93 216h89c-7 -43 -55 -440 -62 -528c-329 12 -470 12 -470 12
+h-628l-376 -12v102l127 25c89 17 116 43 117 116c6 242 8 643 8 643s3 402 -8 645c-3 83 -28 103 -117 120l-127 24v102l376 -12h702s139 0 374 27c-14 -153 -31 -506 -31 -506h-93l-32 124c-39 155 -91 238 -187 238h-548c-41 0 -43 -14 -43 -39z" />
+ <glyph glyph-name="copyright" unicode="&#xf1f9;"
+d="M1150 462v-109c0 -141 -225 -193 -366 -193c-274 0 -480 209 -480 485c0 271 204 475 475 475c99 0 358 -35 358 -194v-109c0 -9 -7 -16 -16 -16h-118c-9 0 -16 7 -16 16v70c0 63 -121 92 -203 92c-187 0 -317 -135 -317 -329c0 -201 136 -348 325 -348
+c72 0 208 27 208 90v70c0 9 7 16 15 16h119c8 0 16 -7 16 -16zM768 1280c-353 0 -640 -287 -640 -640s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1651"
+d="M572 553l-466 -466c-13 -13 -33 -13 -46 0l-50 50c-13 13 -13 33 0 46l393 393l-393 393c-13 13 -13 33 0 46l50 50c13 13 33 13 46 0l466 -466c13 -13 13 -33 0 -46zM1651 96v-64c0 -18 -14 -32 -32 -32h-960c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h960
+c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="twitter-square" unicode="&#xf081;"
+d="M1280 926c-38 -17 -78 -28 -121 -34c44 26 77 68 93 117c-41 -24 -86 -42 -134 -51c-38 41 -93 66 -153 66c-116 0 -210 -94 -210 -210c0 -16 1 -33 5 -48c-175 9 -330 92 -434 220c-18 -31 -29 -68 -29 -106c0 -73 34 -137 91 -175c-35 1 -68 11 -100 26v-2
+c0 -102 77 -187 173 -206c-18 -5 -32 -8 -51 -8c-13 0 -26 2 -39 4c27 -83 104 -144 196 -146c-72 -56 -162 -90 -261 -90c-17 0 -34 1 -50 3c93 -59 203 -94 322 -94c386 0 598 320 598 598c0 9 0 18 -1 27c41 29 77 66 105 109zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="shopping-bag" unicode="&#xf290;" horiz-adv-x="1793"
+d="M1757 128l35 -313c2 -18 -4 -36 -16 -50c-12 -13 -30 -21 -48 -21h-1664c-18 0 -36 8 -48 21c-12 14 -18 32 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775c4 32 31 57 64 57h256v-128c0 -71 57 -128 128 -128s128 57 128 128v128h384v-128c0 -71 57 -128 128 -128
+s128 57 128 128v128h256c33 0 60 -25 64 -57zM1280 1152v-256c0 -35 -29 -64 -64 -64s-64 29 -64 64v256c0 141 -115 256 -256 256s-256 -115 -256 -256v-256c0 -35 -29 -64 -64 -64s-64 29 -64 64v256c0 212 172 384 384 384s384 -172 384 -384z" />
+ <glyph glyph-name="stop-circle" unicode="&#xf28d;"
+d="M1088 352v576c0 18 -14 32 -32 32h-576c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="telegram" unicode="&#xf2c6;" horiz-adv-x="1792"
+d="M1189 229l147 693c13 61 -22 85 -62 70l-864 -333c-59 -23 -58 -56 -10 -71l221 -69l513 323c24 16 46 7 28 -9l-415 -375l-16 -228c23 0 33 10 45 22l108 104l224 -165c41 -23 70 -11 81 38zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896
+s896 -401 896 -896z" />
+ <glyph glyph-name="circle" unicode="&#xf111;"
+d="M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664"
+d="M160 0h608v1152h-640v-1120c0 -17 15 -32 32 -32zM1536 32v1120h-640v-1152h608c17 0 32 15 32 32zM1664 1248v-1216c0 -88 -72 -160 -160 -160h-1344c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1344c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="sign-out" unicode="&#xf08b;" horiz-adv-x="1568"
+d="M640 96c0 -28 13 -96 -32 -96h-320c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h320c17 0 32 -15 32 -32c0 -28 13 -96 -32 -96h-320c-88 0 -160 -72 -160 -160v-704c0 -88 72 -160 160 -160h288c25 0 64 5 64 -32zM1568 640c0 -17 -7 -33 -19 -45l-544 -544
+c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="cube" unicode="&#xf1b2;" horiz-adv-x="1664"
+d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768c0 -47 -26 -90 -67 -112l-704 -384c-19 -11 -40 -16 -61 -16s-42 5 -61 16l-704 384c-41 22 -67 65 -67 112v768c0 54 34 102 84 120l704 256c14 5 29 8 44 8s30 -3 44 -8
+l704 -256c50 -18 84 -66 84 -120z" />
+ <glyph glyph-name="mars-stroke-v" unicode="&#xf22a;" horiz-adv-x="1152"
+d="M640 892c288 -32 512 -276 512 -572c0 -340 -294 -611 -642 -572c-270 30 -486 253 -508 525c-25 317 207 586 510 619v132h-160c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h160v165l-92 -92c-13 -12 -33 -12 -45 0l-46 46c-12 12 -12 32 0 45l202 201c25 25 65 25 90 0
+l202 -201c12 -13 12 -33 0 -45l-46 -46c-12 -12 -32 -12 -45 0l-92 92v-165h160c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-160v-132zM576 -128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="file-text" unicode="&#xf15c;"
+d="M1468 1060c10 -10 19 -22 28 -36h-472v472c14 -9 26 -18 36 -28zM992 896h544v-1056c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h800v-544c0 -53 43 -96 96 -96zM1152 160v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64
+c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1152 416v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1152 672v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32z" />
+ <glyph glyph-name="amazon" unicode="&#xf270;" horiz-adv-x="1736"
+d="M1523 60c30 15 53 -8 22 -48s-280 -268 -698 -268s-738 286 -836 404c-27 31 4 45 22 33c293 -178 751 -471 1490 -121zM1730 175c15 -20 0 -108 -26 -172c-26 -63 -64 -107 -85 -124c-22 -18 -38 -11 -26 15s77 186 51 220c-26 33 -148 17 -192 13c-43 -4 -52 -8 -56 1
+c-9 23 87 62 150 70c63 7 164 3 184 -23zM1336 618c0 -110 129 -211 129 -211l-227 -224c-89 84 -156 154 -156 154c-10 10 -18 22 -25 33c-181 -283 -734 -265 -734 173c0 408 483 463 678 470v127c0 27 10 150 -142 150c0 0 -152 0 -217 -198l-294 27
+c0 197 187 417 539 417c351 0 449 -228 449 -329v-589zM664 597c0 -203 337 -251 337 69v162c-135 -4 -337 -42 -337 -231z" />
+ <glyph glyph-name="smile-o" unicode="&#xf118;"
+d="M1134 461c-50 -161 -197 -269 -366 -269s-316 108 -366 269c-11 34 8 69 42 80c33 11 69 -8 80 -42c33 -107 132 -179 244 -179s211 72 244 179c11 34 47 53 81 42c33 -11 52 -46 41 -80zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768
+s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="compass" unicode="&#xf14e;"
+d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="address-book" unicode="&#xf2b9;" horiz-adv-x="1664"
+d="M1201 298c0 177 -43 374 -221 374c-55 -32 -130 -87 -212 -87s-157 55 -212 87c-178 0 -221 -197 -221 -374c0 -99 65 -170 145 -170h576c80 0 145 71 145 170zM1028 892c0 144 -117 260 -260 260s-260 -116 -260 -260c0 -143 117 -259 260 -259s260 116 260 259z
+M1664 352v-192c0 -18 -14 -32 -32 -32h-96v-224c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h1216c88 0 160 -72 160 -160v-224h96c18 0 32 -14 32 -32v-192c0 -18 -14 -32 -32 -32h-96v-128h96c18 0 32 -14 32 -32v-192
+c0 -18 -14 -32 -32 -32h-96v-128h96c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="list-ol" unicode="&#xf0cb;" horiz-adv-x="1777"
+d="M366 -84c0 -110 -86 -172 -190 -172c-63 0 -127 21 -172 66l57 88c27 -25 68 -45 106 -45c35 0 72 17 72 57c0 56 -64 59 -105 56l-26 56c36 46 69 97 112 136v1c-32 0 -65 -2 -97 -2v-53h-106v152h333v-88l-95 -115c67 -16 111 -68 111 -137zM368 543v-159h-362
+c-3 18 -6 36 -6 54c0 185 226 213 226 297c0 34 -21 52 -54 52c-35 0 -64 -30 -81 -58l-85 59c33 69 101 108 177 108c93 0 173 -55 173 -154c0 -148 -217 -181 -220 -259h127v60h105zM1777 224v-192c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 18 14 32 32 32
+h1216c17 0 32 -14 32 -32zM369 1123v-99h-335v99h107c0 81 1 162 1 243v12h-2c-11 -22 -31 -37 -50 -54l-71 76l136 127h106v-404h108zM1777 736v-192c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 18 14 32 32 32h1216c17 0 32 -14 32 -32zM1777 1248v-192
+c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 17 14 32 32 32h1216c17 0 32 -15 32 -32z" />
+ <glyph glyph-name="stumbleupon-circle" unicode="&#xf1a3;"
+d="M866 697l90 27v62c0 106 -90 191 -196 191s-196 -84 -196 -190v-283c0 -26 -21 -47 -47 -47s-46 21 -46 47v120h-151v-122c0 -109 88 -196 197 -196c107 0 196 86 196 193v280c0 26 21 47 47 47c25 0 46 -21 46 -47v-54zM1199 502v122h-150v-126c0 -26 -21 -47 -47 -47
+c-25 0 -46 21 -46 47v123l-90 -26l-60 28v-123c0 -107 89 -194 197 -194s196 87 196 196zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="qq" unicode="&#xf1d6;" horiz-adv-x="1756"
+d="M252 730c-7 17 -8 34 -8 52c0 28 18 73 35 94c-1 26 10 79 30 96c0 185 143 418 310 498c103 49 211 66 324 66c88 0 184 -21 266 -55c235 -99 288 -283 338 -518l1 -5c29 -44 55 -96 55 -150c0 -27 -18 -54 -18 -78c0 -2 6 -10 7 -12c86 -127 164 -265 164 -423
+c0 -35 -19 -157 -75 -157c-39 0 -82 95 -96 121c-1 1 -2 1 -3 1l-5 -4c-32 -83 -67 -161 -132 -223c57 -55 149 -50 166 -145c-5 -11 -3 -23 -11 -34c-57 -86 -210 -97 -302 -97c-122 0 -221 32 -336 66c-24 7 -60 3 -86 6c-61 -67 -210 -85 -296 -85c-76 0 -370 5 -370 135
+c0 56 12 72 51 108c31 6 54 23 90 25c5 0 9 1 14 2c1 1 2 1 2 4l-2 3c-69 16 -166 190 -181 262l-5 3c-7 0 -10 -15 -12 -20c-22 -51 -74 -106 -132 -112h-1c-8 0 -5 8 -11 10c-14 33 -23 63 -23 100c0 200 96 348 252 466z" />
+ <glyph glyph-name="audio-description" unicode="&#xf29e;" horiz-adv-x="2304"
+d="M504 542h171l-1 265zM1530 641c0 111 -64 193 -197 193h-54v-388h52c125 0 199 91 199 195zM956 1018l1 -756c0 -19 -15 -34 -33 -34h-216c-18 0 -33 15 -33 34v62h-291l-55 -81c-6 -9 -17 -15 -28 -15h-267c-28 0 -44 31 -27 53l556 757c6 9 16 14 27 14h332
+c19 0 34 -15 34 -34zM1783 641c0 -263 -192 -413 -450 -413h-270c-19 0 -34 15 -34 34v756c0 19 15 34 34 34h268c260 0 452 -148 452 -411zM1939 640c0 0 4 -260 -148 -413h-51c136 162 139 414 139 414s2 198 -135 410h43c148 -169 152 -411 152 -411zM2123 640
+c0 0 4 -260 -149 -413h-51c136 162 139 414 139 414s2 198 -134 410h43c148 -169 152 -411 152 -411zM2304 640c0 0 4 -260 -148 -413h-51c135 162 138 414 138 414s2 198 -134 410h43c148 -169 152 -411 152 -411z" />
+ <glyph glyph-name="stop-circle-o" unicode="&#xf28e;"
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM768 96c300 0 544 244 544 544s-244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544zM480 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h576c18 0 32 -14 32 -32v-576
+c0 -18 -14 -32 -32 -32h-576z" />
+ <glyph glyph-name="grav" unicode="&#xf2d6;" horiz-adv-x="1794"
+d="M1291 1060c-32 36 -84 -25 -56 -58c27 -33 116 -9 56 58zM895 814c-11 -11 -28 -11 -38 0c-11 10 -11 27 0 37c10 11 27 11 38 0c10 -10 10 -27 0 -37zM1060 740l-35 -35c-16 -17 -43 -17 -60 0l-38 38c-16 17 -16 43 0 60l35 35c16 16 43 16 60 0l38 -39
+c16 -16 16 -43 0 -59zM951 870c-10 -10 -27 -10 -38 0c-10 11 -10 28 0 38c11 11 28 11 38 0c11 -10 11 -27 0 -38zM1354 968c-45 -85 -163 -120 -235 -69c-72 52 -122 156 -43 246c78 90 147 62 216 -3c43 -41 106 -90 62 -174zM1555 486c9 58 -74 60 -92 93
+c-49 87 -100 133 -197 110c42 29 85 22 85 22c1 23 0 47 -34 90c14 45 1 81 1 81c56 31 97 88 105 156c13 112 -68 214 -180 227c-80 9 -158 -28 -196 -93c-84 -145 5 -256 81 -294c-52 5 -124 43 -145 124c-24 93 10 180 32 222c0 0 -16 21 -29 32c0 0 -50 0 -89 -19
+c43 55 91 52 91 52c0 23 -2 54 -13 78c-20 41 -90 47 -117 -15c1 3 2 5 4 7c-18 -43 -4 -202 61 -315c-9 -5 -33 -22 -47 -36c-78 -35 -203 -218 -203 -218c-102 -39 -280 -184 -256 -288c1 -11 5 -20 11 -27c-10 -8 -20 -18 -30 -30c-43 -50 -19 -127 64 -88
+c57 26 108 73 132 110c0 0 -21 18 -60 16c100 24 125 34 168 33c29 -14 29 124 29 124c0 53 -8 112 -40 150c45 -44 105 -118 101 -219c-3 -66 -55 -83 -55 -83c-33 -60 -156 -238 -110 -383c0 0 -35 54 -37 80c-63 -70 -169 -189 -90 -233c96 -53 394 320 457 514
+c125 75 200 171 231 235c80 -159 346 -343 367 -215zM1794 640c0 -495 -402 -896 -897 -896s-897 401 -897 896s402 896 897 896s897 -401 897 -896z" />
+ <glyph glyph-name="mars-stroke-h" unicode="&#xf22b;" horiz-adv-x="1919"
+d="M1901 621c25 -25 25 -65 0 -90l-294 -294c-12 -13 -33 -13 -45 0l-45 45c-13 12 -13 33 0 45l185 185h-294v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-132c-32 -288 -276 -512 -572 -512c-340 0 -611 294 -572 642c30 270 253 486 525 508
+c317 25 586 -207 619 -510h132v224c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-224h294l-185 185c-13 12 -13 33 0 45l45 45c12 13 33 13 45 0zM576 128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1020"
+d="M1020 399v-367c0 -18 -14 -32 -32 -32h-956c-18 0 -32 14 -32 32v150c0 17 14 32 32 32h97v383h-95c-18 0 -32 14 -32 32v131c0 18 14 32 32 32h95v223c0 228 184 393 438 393c200 0 329 -120 335 -125c12 -11 13 -30 3 -43l-103 -127c-6 -7 -13 -11 -22 -12
+c-8 -1 -17 2 -23 7c-1 1 -87 69 -188 69c-113 0 -189 -68 -189 -170v-215h305c18 0 32 -14 32 -32v-131c0 -18 -14 -32 -32 -32h-305v-379h414v181c0 18 14 32 32 32h162c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="shaarli-o" unicode="&#xf2f6;" horiz-adv-x="1630"
+d="M859 1408v0c107 0 210 -67 264 -160c40 -69 61 -156 75 -252c115 -20 212 -47 288 -96c78 -50 134 -137 140 -229l3 -20c7 -91 -25 -191 -100 -245c-18 -13 -36 -22 -55 -30c11 -19 25 -36 34 -56c37 -84 43 -181 12 -267v-1h-1c-26 -70 -82 -133 -154 -160
+s-147 -24 -224 -5c-9 3 -17 5 -25 10c-94 47 -174 101 -239 162c-25 -34 -53 -66 -86 -91c-75 -57 -168 -84 -266 -84c-31 0 -62 -4 -90 5c-82 25 -155 68 -199 141s-44 164 -20 243l1 3l1 3l21 58c-57 19 -109 45 -151 86c-67 66 -95 165 -86 259h-1c0 1 1 2 1 3v7h1
+c8 100 75 193 165 238c87 43 192 57 317 60c6 109 27 206 84 283c66 89 177 135 290 135zM859 1288c-173 0 -260 -116 -260 -348c12 -37 -17 -59 -88 -67c-255 -1 -386 -66 -391 -196c-18 -141 68 -226 258 -253h19l-67 -186c-36 -117 11 -195 141 -235h53
+c155 0 260 80 314 239h37c58 -90 155 -170 294 -239c126 -31 206 -1 239 90c42 114 -12 238 -162 370c196 -10 285 53 264 190c3 117 -118 194 -360 231h-56c-21 269 -99 404 -235 404zM819 1097v0c3 0 6 0 9 -1c50 1 76 -51 76 -156v-188c22 -23 49 -31 84 -25
+c226 0 335 -27 327 -81c10 -49 -110 -65 -361 -48c-12 0 -14 -15 -6 -43c74 -85 140 -151 198 -200c59 -47 69 -92 31 -133c-32 -22 -74 -5 -127 49c-51 54 -117 122 -197 207c-18 24 -40 24 -67 0c-113 -230 -200 -325 -262 -288c-46 24 -23 105 68 242l54 116
+c12 33 -72 45 -250 36c-51 3 -77 22 -77 58c0 37 24 57 71 58l304 17c31 0 48 27 52 81l4 107c-1 131 22 195 69 192z" />
+ <glyph glyph-name="ban" unicode="&#xf05e;"
+d="M1312 643c0 109 -32 210 -87 295l-754 -753c86 -56 188 -89 297 -89c300 0 544 245 544 547zM313 344l755 754c-86 58 -189 91 -300 91c-300 0 -544 -245 -544 -546c0 -111 33 -213 89 -299zM1536 643c0 -426 -344 -771 -768 -771s-768 345 -768 771
+c0 425 344 770 768 770s768 -345 768 -770z" />
+ <glyph glyph-name="fighter-jet" unicode="&#xf0fb;" horiz-adv-x="1920"
+d="M1920 576c0 0 0 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69c35 0 64 -7 64 -16s-29 -16 -64 -16h-320v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h320c35 0 64 -7 64 -16
+s-29 -16 -64 -16h-69l293 -352h64l224 -64l352 -32c288 -64 288 -96 288 -96z" />
+ <glyph glyph-name="space-shuttle" unicode="&#xf197;" horiz-adv-x="2176"
+d="M620 416c-69 -40 -163 -64 -268 -64h-128v64h-64c-18 0 -32 36 -32 80c0 18 3 35 7 49c-77 2 -135 15 -135 31s58 29 135 31c-4 14 -7 31 -7 49c0 44 14 80 32 80h64v64h128c105 0 199 -24 268 -64h1113c74 -13 141 -24 187 -32c192 -32 256 -96 256 -128
+s-64 -96 -256 -128c-46 -8 -113 -19 -187 -32h-1113zM1739 668c32 -22 53 -55 53 -92s-21 -70 -53 -92l81 -30c41 29 68 73 68 122s-27 93 -68 122zM625 400h1015s-217 -38 -456 -80c-128 0 -224 -96 -224 -96l-288 -288s-97 -64 -160 -64h-96l-93 464h29
+c102 0 199 23 273 64zM352 816h-29l93 464h96c65 0 128 -32 160 -64l288 -288s96 -96 224 -96c239 -42 456 -80 456 -80h-1015c-74 41 -171 64 -273 64z" />
+ <glyph glyph-name="steam" unicode="&#xf1b6;" horiz-adv-x="1792"
+d="M1582 954c0 -135 -110 -244 -244 -244c-135 0 -244 109 -244 244s109 244 244 244c134 0 244 -109 244 -244zM812 212c0 139 -111 250 -250 250c-18 0 -36 -2 -54 -6l104 -42c102 -41 152 -156 111 -258s-157 -152 -259 -110c-41 16 -82 33 -123 49
+c42 -79 125 -133 221 -133c139 0 250 111 250 250zM1642 953c0 168 -137 305 -305 305c-169 0 -306 -137 -306 -305c0 -169 137 -305 306 -305c168 0 305 136 305 305zM1792 953c0 -252 -204 -455 -455 -455l-437 -319c-16 -172 -162 -307 -338 -307
+c-162 0 -299 115 -332 268l-230 92v429l389 -157c51 31 110 48 173 48c12 0 24 -1 35 -2l284 407c2 249 206 451 456 451c251 0 455 -204 455 -455z" />
+ <glyph glyph-name="bars" unicode="&#xf0c9;"
+d="M1536 192v-128c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1536 704v-128c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1536 1216v-128
+c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="lightbulb-o" unicode="&#xf0eb;" horiz-adv-x="1024"
+d="M736 960c0 -17 -15 -32 -32 -32s-32 15 -32 32c0 69 -107 96 -160 96c-17 0 -32 15 -32 32s15 32 32 32c93 0 224 -49 224 -160zM896 960c0 200 -203 320 -384 320s-384 -120 -384 -320c0 -64 26 -131 68 -180c19 -22 41 -43 61 -66c71 -85 131 -185 141 -298h228
+c10 113 70 213 141 298c20 23 42 44 61 66c42 49 68 116 68 180zM1024 960c0 -103 -34 -192 -103 -268s-160 -183 -168 -290c29 -17 47 -49 47 -82c0 -24 -9 -47 -25 -64c16 -17 25 -40 25 -64c0 -33 -17 -63 -45 -81c8 -14 13 -31 13 -47c0 -65 -51 -96 -109 -96
+c-26 -58 -84 -96 -147 -96s-121 38 -147 96c-58 0 -109 31 -109 96c0 16 5 33 13 47c-28 18 -45 48 -45 81c0 24 9 47 25 64c-16 17 -25 40 -25 64c0 33 18 65 47 82c-8 107 -99 214 -168 290s-103 165 -103 268c0 272 259 448 512 448s512 -176 512 -448z" />
+ <glyph glyph-name="map-pin" unicode="&#xf276;" horiz-adv-x="1024"
+d="M512 448c44 0 87 5 128 15v-655c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v655c41 -10 84 -15 128 -15zM512 1536c283 0 512 -229 512 -512s-229 -512 -512 -512s-512 229 -512 512s229 512 512 512zM512 1312c18 0 32 14 32 32s-14 32 -32 32
+c-194 0 -352 -158 -352 -352c0 -18 14 -32 32 -32s32 14 32 32c0 159 129 288 288 288z" />
+ <glyph glyph-name="circle-o" unicode="&#xf10c;"
+d="M768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="contao" unicode="&#xf26d;" horiz-adv-x="1748"
+d="M116 1408h197c-47 -43 -89 -93 -126 -149c-155 -239 -92 -501 -32 -783c49 -229 90 -447 233 -604h-272c-64 0 -116 52 -116 116v1304c0 64 52 116 116 116zM1324 1408h308c64 0 116 -52 116 -116v-1304c0 -64 -52 -116 -116 -116h-178c132 131 207 321 196 565
+l-469 -101c-6 -111 -44 -218 -196 -250c-85 -18 -155 2 -199 40c-54 46 -97 106 -169 448c-73 343 -58 415 -28 479c25 52 81 100 165 118c153 32 231 -51 282 -150l468 100c-46 118 -107 214 -180 287z" />
+ <glyph glyph-name="vine" unicode="&#xf1ca;" horiz-adv-x="1458"
+d="M1458 709v-198c-70 -16 -140 -23 -198 -23c-140 -294 -391 -546 -475 -593c-53 -30 -103 -32 -162 3c-103 62 -493 382 -623 1388h283c71 -604 245 -914 436 -1146c106 106 208 247 287 406c-189 96 -304 307 -304 553c0 249 143 437 388 437c238 0 368 -148 368 -403
+c0 -95 -20 -203 -58 -286c0 0 -176 -35 -241 78c13 43 31 117 31 184c0 119 -43 177 -108 177c-69 0 -117 -65 -117 -190c0 -255 162 -401 372 -401c37 0 79 4 121 14z" />
+ <glyph glyph-name="align-center" unicode="&#xf037;" horiz-adv-x="1792"
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1408 576v-128c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h896c35 0 64 -29 64 -64zM1664 960v-128c0 -35 -29 -64 -64 -64
+h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1280 1344v-128c0 -35 -29 -64 -64 -64h-640c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h640c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1202"
+d="M1111 896c13 -133 -43 -213 -131 -258c146 -35 238 -122 220 -317c-23 -243 -203 -308 -461 -322v-255h-154v251c-39 0 -80 0 -122 1v-252h-154v255c-36 0 -72 1 -109 1h-200l31 183c113 -2 111 0 111 0c43 0 55 31 58 51v402h16c-6 1 -12 1 -16 1v287
+c-6 32 -26 68 -89 68c0 0 2 2 -111 0v164l212 -1c31 0 64 0 97 1v252h154v-247c41 1 82 2 122 2v245h154v-252c198 -17 355 -78 372 -260zM896 351c0 198 -326 169 -430 169v-338c104 0 430 -22 430 169zM825 827c0 181 -272 154 -359 154v-307c87 0 359 -20 359 153z" />
+ <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664"
+d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
+M512 1088v288c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-288c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-288
+c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128
+c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920"
+d="M1280 32c0 -17 -15 -32 -32 -32h-960c-37 0 -32 39 -32 64v576h-192c-35 0 -64 29 -64 64c0 15 5 30 15 41l320 384c12 14 30 22 49 22s37 -8 49 -22l320 -384c10 -11 15 -26 15 -41c0 -35 -29 -64 -64 -64h-192v-384h576c9 0 19 -4 25 -11l160 -192c4 -6 7 -14 7 -21z
+M1920 448c0 -15 -5 -30 -15 -41l-320 -384c-12 -14 -30 -23 -49 -23s-37 9 -49 23l-320 384c-10 11 -15 26 -15 41c0 35 29 64 64 64h192v384h-576c-9 0 -19 4 -25 12l-160 192c-4 5 -7 13 -7 20c0 17 15 32 32 32h960c37 0 32 -39 32 -64v-576h192c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="hourglass" unicode="&#xf254;"
+d="M1504 -64c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v128c0 18 14 32 32 32h1472zM130 0c19 337 294 518 478 640c-184 122 -459 303 -478 640h1276c-19 -337 -294 -518 -478 -640c184 -122 459 -303 478 -640h-1276zM1504 1536
+c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v128c0 18 14 32 32 32h1472z" />
+ <glyph glyph-name="paint-brush" unicode="&#xf1fc;" horiz-adv-x="1790"
+d="M1615 1536c91 0 175 -68 175 -163c0 -53 -21 -104 -45 -151c-78 -148 -340 -637 -465 -752c-61 -57 -133 -91 -218 -91c-169 0 -307 144 -307 312c0 80 33 158 92 212l638 579c35 32 81 54 130 54zM706 502c52 -101 147 -177 257 -206l1 -71c6 -285 -192 -481 -478 -481
+c-339 0 -486 270 -486 577c37 -25 166 -128 208 -128c25 0 46 14 55 37c85 222 218 262 443 272z" />
+ <glyph glyph-name="viadeo-square" unicode="&#xf2aa;"
+d="M1050 495c0 50 -9 100 -28 147c-26 -16 -55 -28 -85 -34c16 -36 22 -75 22 -114c0 -154 -114 -280 -270 -280c-157 0 -271 126 -271 280c0 151 115 284 271 284c34 0 67 -6 98 -19c3 30 13 60 27 87c-40 14 -82 21 -125 21c-207 0 -361 -167 -361 -372s155 -367 361 -367
+s361 163 361 367zM872 850c25 -72 38 -148 38 -225c0 -173 -71 -317 -219 -411h-10c-14 0 -28 1 -42 3c199 76 235 377 235 562c0 23 0 47 -2 71zM872 850c-5 97 -60 247 -142 302c56 -95 106 -197 142 -302zM1207 955c0 61 -15 123 -51 174c-24 -51 -69 -94 -124 -109
+c-79 -22 -149 -59 -149 -153c0 -27 9 -54 24 -77c95 22 196 92 236 182c-6 -80 -155 -177 -213 -209c29 -29 67 -52 110 -52c73 0 125 65 150 127c12 30 17 86 17 117zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
+h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1899"
+d="M448 1088c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1515 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-715 716c-51 50 -91 147 -91 218v416c0 70 58 128 128 128h416c71 0 168 -40 219 -91
+l715 -714c23 -24 37 -57 37 -91zM1899 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37c-52 0 -78 24 -112 59l470 470c23 23 37 56 37 90s-14 67 -37 91l-715 714c-51 51 -148 91 -219 91h224c71 0 168 -40 219 -91l715 -714c23 -24 37 -57 37 -91z" />
+ <glyph glyph-name="minus-square-o" unicode="&#xf147;" horiz-adv-x="1408"
+d="M1152 736v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h832c18 0 32 -14 32 -32zM1280 288v832c0 88 -72 160 -160 160h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160zM1408 1120v-832
+c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="user-circle" unicode="&#xf2bd;" horiz-adv-x="1792"
+d="M1523 197c-26 187 -102 353 -272 376c-88 -96 -215 -157 -355 -157s-267 61 -355 157c-170 -23 -246 -189 -272 -376c139 -196 368 -325 627 -325s488 129 627 325zM1280 896c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM1792 640
+c0 -493 -400 -896 -896 -896c-495 0 -896 402 -896 896c0 495 401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="subscript" unicode="&#xf12c;" horiz-adv-x="1531"
+d="M892 167v-167h-248l-159 252l-24 42c-6 7 -9 14 -11 21h-3c-2 -7 -6 -14 -9 -21c-6 -12 -15 -28 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228c9 -14 16 -29 23 -42c6 -7 9 -14 11 -21h3c2 7 6 14 11 21l25 42l140 228h257v-168h-125
+l-184 -267l204 -296h109zM1531 -50v-206h-514l-4 27c-1 15 -3 33 -3 46c0 273 350 296 350 441c0 52 -47 87 -100 87c-39 0 -72 -18 -97 -39c-13 -11 -25 -25 -36 -38l-105 92c18 25 38 46 63 66c42 34 103 65 188 65c145 0 246 -85 246 -218c0 -239 -332 -259 -346 -403
+h232v80h126z" />
+ <glyph glyph-name="flickr" unicode="&#xf16e;"
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM698 640c0 117 -95 212 -212 212s-212 -95 -212 -212s95 -212 212 -212s212 95 212 212zM1262 640c0 117 -95 212 -212 212
+s-212 -95 -212 -212s95 -212 212 -212s212 95 212 212z" />
+ <glyph glyph-name="cc-amex" unicode="&#xf1f3;" horiz-adv-x="2304"
+d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453c0 24 -18 33 -40 33h-84v-69h83c23 0 41 11 41 36zM1475 457c0 25 -22 29 -42 29h-82v-61h81c22 0 43 5 43 32zM1197 923c0 25 -22 29 -42 29h-82v-60h81
+c22 0 43 5 43 31zM1656 854h89l-44 108zM699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453c0 -109 -119 -91 -193 -91v-91h-126l-80 90l-83 -90h-256v271h260l80 -89l82 89h207
+c61 0 109 -21 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229c0 -73 -59 -134 -132 -134h-2040c-73 0 -132 61 -132 134v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1c9 0 10 -7 10 -14v-86h279v23
+c65 -34 154 -23 222 -23l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249c-37 0 -76 -4 -109 -22v22h-172v-22c-20 18 -47 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391c0 73 59 134 132 134h2040c73 0 132 -61 132 -134
+v-678h-120c-28 0 -58 -5 -81 -22v22h-177c-25 0 -59 -4 -78 -22v22h-316v-22c-24 17 -59 22 -87 22h-209v-22c-21 20 -64 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21c30 0 61 1 90 13v-102h174v99h8c10 0 12 -1 12 -12v-87h529c29 0 65 6 88 24
+v-24h168c32 0 66 3 95 17zM1546 469c0 -30 -16 -60 -46 -72c36 -13 43 -37 43 -72v-54h-65v45c0 46 -15 54 -58 54h-69v-99h-65v271h154c51 0 106 -9 106 -73zM1269 936c0 -31 -17 -61 -46 -73c37 -13 43 -36 43 -72v-53h-65c-1 58 14 98 -58 98h-70v-98h-64v271l153 -1
+c52 0 107 -8 107 -72zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357c0 -64 -44 -86 -102 -86h-126v58h126c16 0 34 4 34 25c0 58 -167 -22 -167 107c0 55 42 81 92 81h130v-57h-119c-17 0 -36 -3 -36 -25
+c0 -59 168 27 168 -103zM2304 407v-101c-19 -28 -56 -35 -88 -35h-125v58h125c16 0 33 5 33 25c0 57 -167 -22 -167 107c0 55 43 81 93 81h129v-57h-118c-18 0 -36 -3 -36 -25c0 -48 113 1 154 -53zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75
+c-89 0 -129 46 -129 133c0 91 41 138 133 138h63v-59c-68 1 -130 16 -130 -77c0 -46 11 -78 63 -78h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+ <glyph glyph-name="reddit" unicode="&#xf1a1;" horiz-adv-x="1792"
+d="M1095 369c9 -9 9 -23 0 -31c-57 -57 -167 -62 -199 -62s-142 5 -199 62c-9 8 -9 22 0 31c8 8 22 8 30 0c36 -37 114 -49 169 -49s132 12 169 49c8 8 22 8 30 0zM788 550c0 -49 -40 -89 -89 -89c-50 0 -90 40 -90 89c0 50 40 90 90 90c49 0 89 -40 89 -90zM1183 550
+c0 -49 -40 -89 -90 -89c-49 0 -89 40 -89 89c0 50 40 90 89 90c50 0 90 -40 90 -90zM1434 670c0 66 -54 119 -120 119c-34 0 -64 -14 -86 -36c-81 56 -190 92 -311 96l63 283l200 -45c0 -49 40 -89 89 -89c50 0 90 41 90 90s-40 90 -90 90c-35 0 -65 -21 -80 -50l-221 49
+c-11 3 -22 -5 -25 -16l-69 -312c-120 -5 -228 -41 -309 -97c-22 23 -53 37 -87 37c-66 0 -120 -53 -120 -119c0 -48 28 -88 68 -108c-4 -18 -6 -37 -6 -56c0 -190 214 -344 477 -344c264 0 478 154 478 344c0 19 -2 39 -7 57c39 20 66 60 66 107zM1792 640
+c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="times-circle" unicode="&#xf057;"
+d="M1149 414c0 17 -7 33 -19 45l-181 181l181 181c12 12 19 28 19 45s-7 34 -19 46l-90 90c-12 12 -29 19 -46 19s-33 -7 -45 -19l-181 -181l-181 181c-12 12 -28 19 -45 19s-34 -7 -46 -19l-90 -90c-12 -12 -19 -29 -19 -46s7 -33 19 -45l181 -181l-181 -181
+c-12 -12 -19 -28 -19 -45s7 -34 19 -46l90 -90c12 -12 29 -19 46 -19s33 7 45 19l181 181l181 -181c12 -12 28 -19 45 -19s34 7 46 19l90 90c12 12 19 29 19 46zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="tripadvisor" unicode="&#xf262;" horiz-adv-x="2304"
+d="M651 539c0 -52 -42 -94 -93 -94c-52 0 -94 42 -94 94c0 51 42 93 94 93c51 0 93 -42 93 -93zM1805 540c0 -52 -42 -94 -94 -94s-94 42 -94 94s42 93 94 93s94 -41 94 -93zM765 539c0 106 -87 193 -193 193c-107 0 -193 -87 -193 -193c0 -107 86 -193 193 -193
+c106 0 193 86 193 193zM1918 540c0 106 -86 193 -193 193c-106 0 -193 -87 -193 -193c0 -107 87 -193 193 -193c107 0 193 86 193 193zM850 539c0 -154 -124 -279 -278 -279s-279 125 -279 279c0 153 125 278 279 278s278 -125 278 -278zM2004 540
+c0 -154 -125 -278 -279 -278c-153 0 -278 124 -278 278s125 278 278 278c154 0 279 -124 279 -278zM1040 537c0 255 -207 462 -462 462c-254 0 -461 -207 -461 -462s207 -462 461 -462c255 0 462 207 462 462zM1708 1110c-165 72 -351 111 -556 111s-409 -39 -573 -110
+c317 -1 573 -257 573 -574c0 311 247 564 556 573zM2187 537c0 255 -206 462 -461 462s-462 -207 -462 -462s207 -462 462 -462s461 207 461 462zM1921 1103h383c-60 -70 -104 -164 -115 -229c69 -95 110 -211 110 -337c0 -317 -257 -573 -573 -573c-180 0 -340 82 -445 211
+c0 0 -47 -56 -129 -179c-14 29 -85 130 -128 180c-105 -130 -266 -212 -446 -212c-316 0 -573 256 -573 573c0 126 41 242 110 337c-11 65 -55 159 -115 229h365c196 131 481 213 787 213s573 -82 769 -213z" />
+ <glyph glyph-name="sort-amount-asc" unicode="&#xf160;" horiz-adv-x="1760"
+d="M704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1760 -32v-192c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32
+v192c0 18 14 32 32 32h832c18 0 32 -14 32 -32zM1568 480v-192c0 -18 -14 -32 -32 -32h-640c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h640c18 0 32 -14 32 -32zM1376 992v-192c0 -18 -14 -32 -32 -32h-448c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h448
+c18 0 32 -14 32 -32zM1184 1504v-192c0 -18 -14 -32 -32 -32h-256c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h256c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="renren" unicode="&#xf18b;"
+d="M1133 -34c-109 -60 -234 -94 -368 -94c-133 0 -258 34 -367 94c177 112 320 281 367 479c48 -198 191 -367 368 -479zM638 1394v-485c0 -342 -189 -636 -457 -766c-113 134 -181 306 -181 495c0 380 276 695 638 756zM1536 638c0 -189 -68 -361 -181 -495
+c-268 130 -457 424 -457 766v485c362 -61 638 -376 638 -756z" />
+ <glyph glyph-name="key-modern" unicode="&#xf2f7;" horiz-adv-x="1792"
+d="M546 1536v0c139 1 278 -52 383 -158c142 -141 187 -343 137 -525l726 -726v-319c0 -35 -29 -64 -64 -64h-300l-45 45l135 226l-46 45l-225 -135l-45 46l134 225l-45 45l-225 -134l-46 45l135 225l-45 46l-243 -139l-186 186c-182 -50 -382 -5 -524 136
+c-211 212 -209 556 4 770c107 106 246 159 385 160zM405 1290v0c-41 0 -82 -16 -113 -47c-63 -63 -63 -163 0 -226s164 -63 227 0s63 163 0 226c-31 31 -73 47 -114 47z" />
+ <glyph glyph-name="arrow-circle-o-right" unicode="&#xf18e;"
+d="M1152 640c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192h-352c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h352v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544
+s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="pinterest-p" unicode="&#xf231;" horiz-adv-x="1280"
+d="M0 939c0 369 338 597 680 597c314 0 600 -216 600 -547c0 -311 -159 -656 -513 -656c-84 0 -190 42 -231 120c-76 -301 -70 -346 -238 -576l-14 -5l-9 10c-6 63 -15 125 -15 188c0 204 94 499 140 697c-25 51 -32 113 -32 169c0 101 70 229 184 229
+c84 0 129 -64 129 -143c0 -130 -88 -252 -88 -378c0 -86 71 -146 154 -146c230 0 301 332 301 509c0 237 -168 366 -395 366c-264 0 -468 -190 -468 -458c0 -129 79 -195 79 -226c0 -26 -19 -118 -52 -118c-5 0 -12 2 -17 3c-143 43 -195 234 -195 365z" />
+ <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408"
+d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+ <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1683"
+d="M832 1024c0 106 -86 192 -192 192s-192 -86 -192 -192c0 -29 7 -57 19 -83c-26 12 -54 19 -83 19c-106 0 -192 -86 -192 -192s86 -192 192 -192s192 86 192 192c0 29 -7 57 -19 83c26 -12 54 -19 83 -19c106 0 192 86 192 192zM1683 320c0 -23 -92 -115 -115 -115
+c-26 0 -107 94 -128 115l-96 -96l220 -220c18 -18 28 -43 28 -68c0 -56 -64 -120 -120 -120c-25 0 -50 10 -68 28l-671 671c-105 -78 -233 -131 -365 -131c-218 0 -368 151 -368 368c0 328 328 656 656 656c217 0 368 -150 368 -368c0 -132 -53 -260 -131 -365l355 -355
+l96 96c-21 21 -115 102 -115 128c0 23 92 115 115 115c8 0 17 -4 23 -10c37 -37 316 -300 316 -329z" />
+ <glyph glyph-name="picture-o" unicode="&#xf03e;" horiz-adv-x="1920"
+d="M640 960c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600c-17 0 -32 -15 -32 -32v-1216c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32v1216c0 17 -15 32 -32 32z
+M1920 1248v-1216c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="list-alt" unicode="&#xf022;" horiz-adv-x="1792"
+d="M384 352v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 608v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 864v-64c0 -17 -15 -32 -32 -32h-64
+c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1536 352v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960c17 0 32 -15 32 -32zM1536 608v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960
+c17 0 32 -15 32 -32zM1536 864v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960c17 0 32 -15 32 -32zM1664 160v832c0 17 -15 32 -32 32h-1472c-17 0 -32 -15 -32 -32v-832c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1792 1248v-1088
+c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="fort-awesome" unicode="&#xf286;" horiz-adv-x="1664"
+d="M640 528v224c0 9 -7 16 -16 16h-96c-9 0 -16 -7 -16 -16v-224c0 -9 7 -16 16 -16h96c9 0 16 7 16 16zM1152 528v224c0 9 -7 16 -16 16h-96c-9 0 -16 -7 -16 -16v-224c0 -9 7 -16 16 -16h96c9 0 16 7 16 16zM1664 496v-752h-640v320c0 106 -86 192 -192 192
+s-192 -86 -192 -192v-320h-640v752c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v624c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112c0 21 28 16 41 16v391c-19 9 -32 29 -32 50c0 30 25 55 55 55s55 -25 55 -55
+c0 -21 -13 -41 -32 -50v-17c27 6 55 10 83 10c41 0 80 -15 114 -15c31 0 66 15 84 15c9 0 16 -7 16 -16v-210c0 -24 -81 -28 -97 -28c-37 0 -72 15 -110 15c-30 0 -61 -5 -90 -12v-133c13 0 41 5 41 -16v-112h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112
+c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-624h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16z" />
+ <glyph glyph-name="commenting" unicode="&#xf27a;" horiz-adv-x="1792"
+d="M640 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1024 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1408 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128z
+M1792 640c0 -354 -401 -640 -896 -640c-73 0 -144 6 -211 18c-114 -114 -263 -192 -435 -229c-27 -5 -56 -10 -86 -13c-16 -2 -31 9 -35 24c-4 16 8 26 20 37c63 59 138 106 164 317c-191 117 -313 291 -313 486c0 354 401 640 896 640s896 -286 896 -640z" />
+ <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152"
+d="M640 128c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1024 288v960c0 17 -15 32 -32 32h-832c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h832c17 0 32 15 32 32zM1152 1248v-1088c0 -88 -72 -160 -160 -160h-832c-88 0 -160 72 -160 160v1088
+c0 88 72 160 160 160h832c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="credit-card" unicode="&#xf09d;" horiz-adv-x="1920"
+d="M1760 1408c88 0 160 -72 160 -160v-1216c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1600zM160 1280c-17 0 -32 -15 -32 -32v-224h1664v224c0 17 -15 32 -32 32h-1600zM1760 0c17 0 32 15 32 32v608h-1664v-608
+c0 -17 15 -32 32 -32h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+ <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408"
+d="M1408 800v-192c0 -53 -43 -96 -96 -96h-1216c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h1216c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="unlock-alt" unicode="&#xf13e;" horiz-adv-x="1152"
+d="M1056 768c53 0 96 -43 96 -96v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h32v320c0 247 201 448 448 448s448 -201 448 -448c0 -35 -29 -64 -64 -64h-64c-35 0 -64 29 -64 64c0 141 -115 256 -256 256s-256 -115 -256 -256v-320h736z
+" />
+ <glyph glyph-name="ils" unicode="&#xf20b;" horiz-adv-x="1376"
+d="M992 912v-496c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v496c0 150 -122 272 -272 272h-272v-1152c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v1344c0 18 14 32 32 32h464c274 0 496 -222 496 -496zM1376 1376v-880c0 -274 -222 -496 -496 -496h-464
+c-18 0 -32 14 -32 32v960c0 18 14 32 32 32h160c18 0 32 -14 32 -32v-768h272c150 0 272 122 272 272v880c0 18 14 32 32 32h160c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="cog" unicode="&#xf013;"
+d="M1024 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1536 749v-222c0 -15 -12 -33 -28 -36l-185 -28c-11 -32 -23 -62 -39 -91c34 -49 70 -93 107 -138c6 -7 10 -16 10 -25s-3 -16 -9 -23c-24 -32 -159 -179 -193 -179
+c-9 0 -18 4 -26 9l-138 108c-29 -15 -60 -28 -91 -38c-7 -61 -13 -126 -29 -186c-4 -16 -18 -28 -36 -28h-222c-18 0 -34 13 -36 30l-28 184c-31 10 -61 22 -90 37l-141 -107c-7 -6 -16 -9 -25 -9s-18 4 -25 11c-53 48 -123 110 -165 168c-5 7 -7 15 -7 23c0 9 3 16 8 23
+c34 46 71 90 105 137c-17 32 -31 65 -41 99l-183 27c-17 3 -29 19 -29 36v222c0 15 12 33 27 36l186 28c10 32 23 62 39 92c-34 48 -70 93 -107 138c-6 7 -10 15 -10 24s4 16 9 23c24 33 159 179 193 179c9 0 18 -4 26 -10l138 -107c29 15 60 28 91 38c7 61 13 126 29 186
+c4 16 18 28 36 28h222c18 0 34 -13 36 -30l28 -184c31 -10 61 -22 90 -37l142 107c6 6 15 9 24 9s18 -4 25 -10c53 -49 123 -111 165 -170c5 -6 7 -14 7 -22c0 -9 -3 -16 -8 -23c-34 -46 -71 -90 -105 -137c17 -32 31 -65 41 -98l183 -28c17 -3 29 -19 29 -36z" />
+ <glyph glyph-name="arrow-right" unicode="&#xf061;" horiz-adv-x="1472"
+d="M1472 576c0 -34 -13 -67 -37 -91l-651 -651c-24 -23 -57 -37 -91 -37s-66 14 -90 37l-75 75c-24 24 -38 57 -38 91s14 67 38 91l293 293h-704c-72 0 -117 60 -117 128v128c0 68 45 128 117 128h704l-293 294c-24 23 -38 56 -38 90s14 67 38 90l75 75c24 24 56 38 90 38
+s67 -14 91 -38l651 -651c24 -23 37 -56 37 -90z" />
+ <glyph glyph-name="cc-paypal" unicode="&#xf1f4;" horiz-adv-x="2304"
+d="M745 630c0 -49 -39 -86 -88 -86c-37 0 -64 21 -64 60c0 49 38 88 87 88c37 0 65 -23 65 -62zM1530 779c0 -60 -36 -72 -88 -72l-32 -1l17 107c1 7 6 11 13 11h18c34 0 72 -2 72 -45zM1881 630c0 -49 -39 -86 -87 -86c-37 0 -65 21 -65 60c0 49 38 88 87 88
+c37 0 65 -23 65 -62zM513 801c0 84 -65 112 -139 112h-160c-10 0 -20 -8 -21 -19l-65 -408c-1 -8 5 -16 13 -16h76c11 0 21 8 22 19l18 110c4 29 53 19 72 19c114 0 184 68 184 183zM822 489l41 261c1 8 -5 16 -13 16h-76c-15 0 -16 -22 -17 -33c-23 34 -57 40 -95 40
+c-98 0 -173 -86 -173 -181c0 -78 49 -129 127 -129c36 0 81 16 106 44c-2 -6 -4 -15 -4 -21c0 -9 4 -16 13 -16h69c11 0 20 8 22 19zM1269 752c0 7 -6 14 -13 14h-77c-7 0 -14 -4 -18 -10l-106 -156l-44 150c-3 9 -12 16 -22 16h-75c-7 0 -13 -7 -13 -14
+c0 -5 78 -231 85 -252c-11 -15 -82 -108 -82 -120c0 -7 6 -13 13 -13h77c7 0 14 4 18 10l255 368c2 2 2 4 2 7zM1649 801c0 84 -65 112 -139 112h-159c-11 0 -21 -8 -22 -19l-65 -408c-1 -8 5 -16 13 -16h82c8 0 14 6 16 13l18 116c4 29 53 19 72 19c114 0 184 68 184 183z
+M1958 489l41 261c1 8 -5 16 -13 16h-76c-15 0 -16 -22 -17 -33c-22 34 -56 40 -95 40c-98 0 -173 -86 -173 -181c0 -78 49 -129 127 -129c37 0 82 16 106 44c-1 -6 -4 -15 -4 -21c0 -9 4 -16 13 -16h69c11 0 20 8 22 19zM2176 898v1c0 8 -6 14 -13 14h-74
+c-6 0 -12 -5 -13 -11l-65 -416l-1 -2c0 -7 6 -14 14 -14h66c10 0 20 8 21 19zM392 764c-8 -51 -42 -57 -86 -57l-33 -1l17 107c1 7 7 11 13 11h19c45 0 79 -6 70 -60zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128
+h2048c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="birthday-cake" unicode="&#xf1fd;" horiz-adv-x="1792"
+d="M1792 128v-384h-1792v384c98 0 150 44 191 79c34 30 57 49 108 49s73 -19 108 -49c41 -35 92 -79 191 -79c98 0 149 44 191 79c34 30 56 49 107 49s74 -19 108 -49c41 -35 93 -79 191 -79s150 44 191 79c34 30 57 49 108 49c50 0 73 -19 107 -49c41 -35 93 -79 191 -79z
+M1792 448v-192c-51 0 -73 19 -108 49c-41 35 -92 79 -190 79c-99 0 -150 -44 -191 -79c-35 -30 -57 -49 -108 -49s-74 19 -108 49c-41 35 -92 79 -191 79c-98 0 -149 -44 -191 -79c-34 -30 -56 -49 -107 -49s-74 19 -108 49c-41 35 -93 79 -191 79c-99 0 -150 -44 -191 -79
+c-34 -30 -57 -49 -108 -49v192c0 106 86 192 192 192h64v448h256v-448h256v448h256v-448h256v448h256v-448h64c106 0 192 -86 192 -192zM512 1312c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224zM1024 1312
+c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224zM1536 1312c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224z" />
+ <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792"
+d="M1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22c-22 -2 -43 14 -48 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 353 401 640 896 640s896 -286 896 -640z" />
+ <glyph glyph-name="bell" unicode="&#xf0f3;" horiz-adv-x="1664"
+d="M848 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM182 128h1300c-179 202 -266 476 -266 832c0 129 -122 320 -384 320s-384 -191 -384 -320c0 -356 -87 -630 -266 -832zM1664 128
+c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-256 115 -256 256h-448c-70 0 -128 58 -128 128c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c265 -39 424 -249 424 -441
+c0 -483 172 -707 320 -832z" />
+ <glyph glyph-name="cc" unicode="&#xf20a;" horiz-adv-x="2048"
+d="M785 528h207c-19 -211 -140 -339 -313 -339c-216 0 -347 166 -347 432c0 264 144 429 326 429c200 0 312 -124 329 -334h-203c-7 85 -49 134 -117 134c-75 0 -120 -80 -120 -238c0 -115 20 -223 129 -223c69 0 101 60 109 139zM1497 528h206
+c-19 -211 -139 -339 -312 -339c-216 0 -347 166 -347 432c0 264 144 429 326 429c200 0 312 -124 329 -334h-204c-6 85 -49 134 -116 134c-75 0 -120 -80 -120 -238c0 -115 19 -223 128 -223c69 0 102 60 110 139zM1856 647c0 268 -14 384 -76 468c-13 17 -34 28 -51 40
+c-63 46 -356 63 -697 63s-648 -17 -710 -63c-18 -13 -40 -23 -53 -40c-62 -83 -75 -200 -75 -468c0 -269 14 -385 75 -468c14 -19 35 -27 53 -41c62 -46 369 -65 710 -65s634 18 697 65c17 13 39 21 51 41c63 82 76 199 76 468zM2048 1408v-1536h-2048v1536h2048z" />
+ <glyph glyph-name="get-pocket" unicode="&#xf265;" horiz-adv-x="1720"
+d="M1565 1408c87 0 155 -70 155 -156v-519c0 -479 -383 -861 -859 -861c-478 0 -861 382 -861 861v519c0 85 71 156 156 156h1409zM861 344c30 0 60 12 82 33l404 388c23 22 37 53 37 85c0 65 -53 118 -118 118c-31 0 -60 -12 -82 -33l-323 -310l-323 310
+c-22 21 -51 33 -81 33c-65 0 -118 -53 -118 -118c0 -32 13 -63 36 -85l405 -388c21 -21 51 -33 81 -33z" />
+ <glyph glyph-name="bell-slash-o" unicode="&#xf1f7;" horiz-adv-x="2019"
+d="M1026 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM489 315l877 760c-50 105 -166 205 -356 205c-262 0 -384 -191 -384 -320c0 -256 -45 -470 -137 -645zM1842 128c0 -70 -58 -128 -128 -128
+h-448c0 -141 -115 -256 -256 -256s-255 114 -256 255l149 129h757c-111 125 -186 277 -227 459l111 97c51 -298 182 -458 298 -556zM1928 1520l84 -96c11 -14 10 -34 -3 -46l-1872 -1622c-13 -11 -34 -10 -45 4l-84 96c-11 14 -10 34 3 45l186 161c-12 20 -19 42 -19 66
+c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c172 -25 299 -122 367 -240l418 363c13 11 34 10 45 -4z" />
+ <glyph glyph-name="header" unicode="&#xf1dc;" horiz-adv-x="1668"
+d="M1620 -128c-88 0 -177 7 -266 7c-88 0 -176 -7 -264 -7c-34 0 -50 37 -50 66c0 89 100 51 152 85c33 21 33 105 33 140l-1 391c0 11 0 21 -1 31c-16 5 -34 4 -50 4h-675c-17 0 -35 1 -51 -4c-1 -10 -1 -20 -1 -31l-1 -371c0 -38 0 -142 37 -164c52 -32 170 13 170 -77
+c0 -30 -14 -70 -49 -70c-93 0 -186 7 -278 7c-85 0 -170 -7 -255 -7c-33 0 -48 38 -48 66c0 87 92 51 141 85c32 22 33 108 33 143l-1 57v813c0 48 7 202 -38 229c-50 31 -157 -17 -157 73c0 29 13 70 48 70c92 0 185 -7 277 -7c84 0 169 7 253 7c36 0 50 -40 50 -70
+c0 -86 -99 -44 -148 -75c-35 -21 -35 -124 -35 -160l1 -320c0 -11 0 -21 1 -32c13 -3 26 -3 39 -3h699c12 0 25 0 38 3c1 11 1 21 1 32l1 320c0 37 0 139 -35 160c-50 30 -150 -10 -150 75c0 30 14 70 50 70c88 0 176 -7 264 -7c86 0 172 7 258 7c36 0 50 -40 50 -70
+c0 -87 -103 -43 -153 -74c-34 -22 -35 -125 -35 -161l1 -943c0 -33 2 -120 34 -140c51 -32 159 9 159 -78c0 -29 -13 -70 -48 -70z" />
+ <glyph glyph-name="bluetooth-b" unicode="&#xf294;" horiz-adv-x="944"
+d="M556 113l173 172l-173 172v-344zM556 823l173 172l-173 172v-344zM588 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
+ <glyph glyph-name="linux" unicode="&#xf17c;" horiz-adv-x="1523"
+d="M657 1125c-20 -2 -13 -20 -24 -20c-10 -1 -8 22 24 20zM744 1111c-10 -3 -11 16 -29 11c29 13 39 -7 29 -11zM393 684c-9 3 -7 -15 -16 -29c-7 -13 -25 -23 -11 -25c5 -1 19 11 25 25c5 17 10 26 2 29zM1248 325c0 18 -39 35 -55 42c27 90 15 126 -3 211
+c-14 64 -73 151 -119 178c12 -10 34 -39 57 -83c40 -75 80 -186 54 -278c-10 -36 -34 -41 -50 -42c-70 -8 -29 84 -58 209c-33 140 -67 150 -75 161c-41 182 -86 164 -99 232c-11 61 53 111 -34 128c-27 5 -65 32 -80 34s-23 101 33 104c55 4 65 -62 55 -88
+c-16 -26 1 -36 28 -27c22 7 8 65 13 73c-14 84 -49 96 -85 103c-138 -11 -76 -163 -90 -149c-20 21 -78 2 -78 15c1 78 -25 123 -61 124c-40 1 -56 -55 -58 -87c-3 -30 17 -93 32 -88c10 3 27 23 9 22c-9 0 -23 22 -25 48c-1 26 9 52 43 51c39 -1 39 -79 35 -82
+c-13 -9 -29 -26 -31 -29c-13 -21 -38 -27 -48 -36c-17 -18 -21 -38 -8 -45c46 -26 31 -56 95 -58c42 -2 73 6 102 15c22 7 93 22 108 48c7 11 15 11 20 8c10 -5 12 -24 -13 -30c-35 -10 -70 -29 -102 -41c-31 -13 -41 -18 -70 -23c-66 -12 -115 24 -71 -19
+c15 -14 29 -23 67 -22c84 3 177 104 186 59c2 -10 -26 -22 -48 -33c-78 -38 -133 -114 -183 -88c-45 24 -90 135 -89 85c1 -77 -101 -145 -54 -233c-31 -8 -100 -155 -110 -231c-6 -44 4 -98 -7 -128c-15 -44 -83 42 -61 147c4 18 0 22 -5 13c-27 -49 -12 -118 10 -166
+c9 -21 32 -30 49 -48c35 -40 173 -142 197 -167c31 -29 22 -97 -42 -104c33 -62 65 -68 64 -169c38 20 23 64 7 92c-11 20 -25 29 -22 34c2 3 22 20 33 7c34 -38 98 -45 166 -36c69 8 143 32 177 87c16 26 27 35 34 30c8 -4 11 -22 10 -52c-1 -32 -14 -65 -23 -92
+c-9 -31 -12 -52 18 -53c8 56 24 111 28 167c5 64 -41 182 9 241c13 16 29 18 51 18c3 80 126 74 167 41zM620 1152c4 25 -8 43 -14 45c-12 3 -10 -15 -4 -13c4 0 9 -6 7 -15c-2 -12 -1 -20 8 -20c1 0 3 0 3 3zM1039 955c-4 19 -18 12 -34 22c-19 12 -23 32 -30 25
+c-21 -23 26 -71 46 -75c12 -2 21 14 18 28zM861 1168c1 24 -20 36 -25 35c-13 -1 -9 -7 -3 -9c8 -2 16 -16 18 -31c0 -2 10 2 10 5zM915 1401c1 5 -12 11 -21 18c-8 8 -16 15 -24 15c-20 -2 -10 -23 -13 -33c-4 -11 -19 -20 -9 -28c9 -7 15 11 34 18c5 2 28 -1 33 10z
+M1480 60c123 -76 -46 -139 -119 -176c-57 -29 -133 -93 -161 -120c-21 -20 -108 -30 -157 -5c-57 29 -27 75 -115 78c-44 1 -87 1 -130 1c-38 -1 -76 -3 -115 -4c-132 -3 -145 -88 -230 -85c-58 2 -131 48 -257 74c-88 18 -173 23 -191 62s22 83 25 121c3 51 -38 120 -8 146
+c26 23 81 6 117 26c38 22 54 39 54 86c14 -48 -1 -87 -32 -106c-19 -12 -54 -18 -83 -15c-23 2 -37 -1 -43 -10c-9 -11 -6 -31 5 -57s24 -43 22 -75c-1 -32 -37 -70 -31 -97c2 -10 12 -19 37 -26c40 -11 113 -22 184 -39c79 -20 161 -56 212 -49c152 21 65 184 41 223
+c-129 202 -214 334 -282 282c-17 -14 -18 34 -17 53c3 66 36 90 56 141c38 97 67 208 125 265c43 56 111 147 124 195c-11 104 -14 214 -16 310c-2 103 14 193 130 256c28 15 65 21 104 21c69 1 146 -19 195 -55c78 -58 127 -181 121 -269c-4 -69 8 -140 30 -214
+c26 -87 67 -148 133 -218c79 -84 141 -249 159 -354c16 -98 -6 -159 -27 -162c-32 -5 -52 -106 -152 -102c-64 3 -70 41 -88 74c-29 51 -58 35 -69 -19c-6 -27 -2 -67 7 -97c18 -63 12 -122 1 -195c-21 -138 97 -164 176 -98c78 65 95 75 193 109c149 51 99 96 19 123
+c-72 24 -75 145 -49 168c6 -130 74 -149 102 -167z" />
+ <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664"
+d="M512 160v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM512 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 160v192c0 18 -14 32 -32 32h-320
+c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM512 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192
+c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1536 160v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32z
+M1536 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1536 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1664 1248v-1088c0 -88 -72 -160 -160 -160
+h-1344c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1344c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="caret-square-o-left" unicode="&#xf191;"
+d="M1024 960v-640c0 -35 -29 -64 -64 -64c-13 0 -26 4 -37 12l-448 320c-17 12 -27 31 -27 52c0 20 10 40 27 52l448 320c11 8 24 12 37 12c35 0 64 -29 64 -64zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960
+c17 0 32 15 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1664"
+d="M462 142c0 -70 -57 -128 -128 -128c-70 0 -128 58 -128 128c0 71 58 128 128 128c71 0 128 -57 128 -128zM960 -64c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM256 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1458 142c0 -70 -58 -128 -128 -128c-71 0 -128 58 -128 128c0 71 57 128 128 128c70 0 128 -57 128 -128zM494 1138c0 -88 -72 -160 -160 -160s-160 72 -160 160s72 160 160 160s160 -72 160 -160zM1664 640c0 -71 -57 -128 -128 -128s-128 57 -128 128
+s57 128 128 128s128 -57 128 -128zM1024 1344c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1554 1138c0 -124 -101 -224 -224 -224c-124 0 -224 100 -224 224c0 123 100 224 224 224c123 0 224 -101 224 -224z" />
+ <glyph glyph-name="snapchat" unicode="&#xf2ab;"
+d="M1279 388c0 14 -8 24 -22 27c-91 20 -160 83 -198 167c-3 8 -7 16 -7 25c0 45 125 36 125 100c0 27 -33 44 -57 44c-23 0 -41 -16 -63 -16c-4 0 -8 1 -12 2c2 38 5 76 5 114c0 35 -2 83 -17 114c-48 104 -141 165 -255 165c-125 0 -220 -46 -275 -165
+c-15 -31 -17 -79 -17 -114c0 -38 3 -76 5 -114c-4 -2 -9 -2 -14 -2c-23 0 -41 15 -62 15c-25 0 -56 -16 -56 -44c0 -62 125 -54 125 -99c0 -9 -4 -17 -7 -25c-39 -84 -106 -147 -198 -167c-14 -3 -22 -13 -22 -27c0 -46 106 -63 137 -68c9 -24 5 -66 41 -66c25 0 50 9 77 9
+c105 0 133 -95 255 -95c127 0 151 95 257 95c27 0 52 -8 78 -8c35 0 31 42 40 65c31 5 137 22 137 68zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024"
+d="M512 384c0 25 -8 49 -20 69c-13 20 -66 88 -87 155c-3 11 -13 16 -21 16s-18 -5 -21 -16c-21 -67 -74 -135 -87 -155c-12 -20 -20 -44 -20 -69c0 -71 57 -128 128 -128s128 57 128 128zM1024 512c0 -283 -229 -512 -512 -512s-512 229 -512 512c0 101 31 195 81 275
+c51 80 265 351 346 621c13 43 53 64 85 64s73 -21 85 -64c81 -270 295 -541 346 -621s81 -174 81 -275z" />
+ <glyph glyph-name="connectdevelop" unicode="&#xf20e;" horiz-adv-x="2048"
+d="M2048 641c0 -28 -20 -51 -46 -56l-205 -356c2 -6 3 -12 3 -18c0 -27 -19 -50 -45 -55l-193 -337c2 -5 3 -10 3 -16c0 -31 -25 -57 -57 -57c-16 0 -31 7 -41 18h-400c-10 -12 -26 -20 -43 -20s-33 8 -43 20h-399c-10 -12 -25 -20 -43 -20c-31 0 -57 25 -57 57
+c0 7 2 14 4 20l-193 335c-26 5 -45 28 -45 55c0 7 1 12 3 18l-206 356c-26 6 -45 29 -45 56c0 28 20 51 47 56l199 344c0 2 -1 4 -1 6c0 23 14 42 34 51l209 363c-2 5 -4 12 -4 18c0 32 26 57 57 57c18 0 33 -8 44 -21h396c10 13 25 21 43 21s33 -8 43 -21h398
+c11 13 26 21 44 21c31 0 57 -25 57 -57c0 -6 -2 -12 -4 -18l207 -358c30 -1 55 -26 55 -56c0 -10 -3 -19 -7 -27l187 -324c25 -5 44 -28 44 -55zM1063 -158h389l-342 354h-143l-342 -354h360c10 9 24 16 39 16s29 -7 39 -16zM112 654c1 -4 1 -8 1 -13s0 -10 -2 -15l208 -360
+c5 -1 10 -4 15 -6l188 199v347l-187 194c-9 -6 -19 -9 -29 -10zM986 1438h-388l190 -200l554 200h-280c-10 -10 -23 -16 -38 -16s-28 6 -38 16zM1689 226c1 4 3 8 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427
+l333 -343c4 2 8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6c9 -3 16 -7 22 -13zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177c2 -4 4 -8 5 -12zM358 1051c0 -1 1 -3 1 -4c0 -11 -3 -21 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314
+l-223 236zM556 1425l-4 -8v-264l205 74l-191 201c-3 -1 -6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018c-5 8 -8 18 -8 29v2
+l-216 376c-5 1 -9 3 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82zM1729 266l207 361c-1 5 -2 9 -2 14c0 6 2 11 3 16l-171 296l-129 -612l77 -82c5 3 10 5 15 7z" />
+ <glyph glyph-name="chrome" unicode="&#xf268;" horiz-adv-x="1792"
+d="M893 1536c153 1 309 -38 451 -120c157 -91 276 -222 352 -372l-742 39c-210 12 -410 -106 -479 -304l-276 424c172 214 430 332 694 333zM146 1131l337 -663c95 -187 296 -301 504 -262l-230 -451c-429 66 -757 437 -757 885c0 181 54 350 146 491zM1732 962
+c157 -404 0 -874 -388 -1098c-157 -91 -330 -128 -498 -119l405 623c115 177 113 408 -24 568zM896 942c167 0 302 -135 302 -302s-135 -302 -302 -302s-302 135 -302 302s135 302 302 302z" />
+ <glyph glyph-name="trademark" unicode="&#xf25c;" horiz-adv-x="1972"
+d="M857 992v-117c0 -17 -15 -31 -32 -31h-298v-812c0 -18 -14 -32 -31 -32h-135c-18 0 -32 14 -32 32v812h-297c-18 0 -32 14 -32 31v117c0 18 14 32 32 32h793c17 0 32 -14 32 -32zM1895 995l77 -961c1 -9 -2 -17 -8 -24c-6 -6 -14 -10 -23 -10h-134c-16 0 -30 13 -31 29
+l-46 588l-189 -425c-5 -12 -16 -19 -29 -19h-120c-12 0 -23 7 -29 19l-188 427l-45 -590c-1 -16 -15 -29 -31 -29h-135c-9 0 -17 4 -23 10c-6 7 -9 15 -9 24l78 961c1 16 15 29 31 29h142c13 0 24 -8 29 -19l220 -520c7 -16 14 -34 20 -51c7 17 13 35 20 51l221 520
+c5 11 16 19 29 19h141c17 0 31 -13 32 -29z" />
+ <glyph glyph-name="align-right" unicode="&#xf038;" horiz-adv-x="1792"
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 576v-128c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1280c35 0 64 -29 64 -64zM1792 960v-128
+c0 -35 -29 -64 -64 -64h-1536c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1536c35 0 64 -29 64 -64zM1792 1344v-128c0 -35 -29 -64 -64 -64h-1152c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="bandcamp" unicode="&#xf2d5;" horiz-adv-x="1792"
+d="M1070 358l306 564h-654l-306 -564h654zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="long-arrow-down" unicode="&#xf175;" horiz-adv-x="767"
+d="M765 237c5 -12 3 -25 -5 -35l-350 -384c-6 -6 -14 -10 -23 -10s-18 4 -24 10l-355 384c-8 10 -10 23 -5 35c5 11 16 19 29 19h224v1248c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1248h224c13 0 24 -7 29 -19z" />
+ <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1600"
+d="M576 640v384h-256v-256c0 -71 57 -128 128 -128h128zM1600 192v-192h-1152v192l128 192h-128c-212 0 -384 172 -384 384v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+ <glyph glyph-name="th-list" unicode="&#xf00b;" horiz-adv-x="1792"
+d="M512 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 288v-192c0 -53 -43 -96 -96 -96h-960
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h960c53 0 96 -43 96 -96zM512 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 800v-192c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v192c0 53 43 96 96 96
+h960c53 0 96 -43 96 -96zM1792 1312v-192c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h960c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="eraser" unicode="&#xf12d;" horiz-adv-x="1920"
+d="M896 128l336 384h-768l-336 -384h768zM1909 1205c20 -46 12 -99 -21 -137l-896 -1024c-24 -28 -59 -44 -96 -44h-768c-50 0 -96 29 -117 75c-20 46 -12 99 21 137l896 1024c24 28 59 44 96 44h768c50 0 96 -29 117 -75z" />
+ <glyph glyph-name="codepen" unicode="&#xf1cb;" horiz-adv-x="1792"
+d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
+c0 -25 -13 -50 -34 -64l-819 -546c-13 -8 -28 -13 -43 -13s-30 5 -43 13l-819 546c-21 14 -34 39 -34 64v546c0 25 13 50 34 64l819 546c13 8 28 13 43 13s30 -5 43 -13l819 -546c21 -14 34 -39 34 -64z" />
+ <glyph glyph-name="slideshare" unicode="&#xf1e7;" horiz-adv-x="1758"
+d="M856 796c0 -111 -97 -202 -216 -202s-216 91 -216 202c0 112 97 202 216 202s216 -90 216 -202zM1358 796c0 -111 -96 -202 -216 -202c-119 0 -216 91 -216 202c0 112 97 202 216 202c120 0 216 -90 216 -202zM1583 616v667c0 115 -37 160 -143 160h-1112
+c-111 0 -142 -38 -142 -160v-673c237 -124 440 -102 551 -98c47 1 77 -8 95 -27c3 -3 6 -6 10 -9c21 -20 41 -36 61 -51c4 55 35 90 118 87c113 -5 321 -27 562 104zM1746 621c-64 -79 -186 -176 -372 -252c197 -671 -481 -778 -470 -434c0 -6 -1 185 -1 327
+c-15 3 -30 7 -48 11c0 -143 -1 -344 -1 -338c11 -344 -667 -237 -470 434c-186 76 -308 173 -372 252c-32 48 3 99 56 62c7 -5 15 -10 22 -15v694c0 96 72 174 161 174h1257c89 0 161 -78 161 -174v-694l21 15c53 37 88 -14 56 -62z" />
+ <glyph glyph-name="square-o" unicode="&#xf096;" horiz-adv-x="1408"
+d="M1120 1280h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v832c0 88 -72 160 -160 160zM1408 1120v-832c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="hourglass-start" unicode="&#xf251;"
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM1280 1408h-1024c0 -44 3 -87 9 -128h1006c6 41 9 84 9 128zM1280 -128c0 359 -198 624 -397 704h-230c-199 -80 -397 -345 -397 -704h1024z" />
+ <glyph glyph-name="superpowers" unicode="&#xf2dd;" horiz-adv-x="1792"
+d="M1473 607c18 320 -227 585 -544 604c-315 19 -594 -221 -612 -538c-18 -320 227 -585 545 -604c315 -19 594 220 611 538zM1792 1536l-349 -348c159 -155 245 -371 231 -593c-22 -372 -308 -669 -675 -719l-999 -132l347 347c-159 155 -244 371 -231 593
+c23 373 308 670 676 720c333 44 667 88 1000 132z" />
+ <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408"
+d="M1408 -160v-64c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM1152 896c0 -383 -448 -417 -448 -672c0 -70 35 -163 67 -224l-4 1l1 -1c-276 127 -512 302 -512 640c0 383 448 417 448 672c0 70 -35 163 -66 224l3 -1
+l-1 1c276 -127 512 -302 512 -640z" />
+ <glyph glyph-name="sellsy" unicode="&#xf213;" horiz-adv-x="2048"
+d="M1500 165v733c0 28 -23 51 -50 51h-93c-27 0 -50 -23 -50 -51v-733c0 -27 23 -50 50 -50h93c27 0 50 23 50 50zM1216 165v531c0 27 -23 50 -50 50h-101c-27 0 -50 -23 -50 -50v-531c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM924 165v429c0 27 -23 50 -50 50h-101
+c-27 0 -50 -23 -50 -50v-429c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM632 165v362c0 27 -23 50 -50 50h-101c-27 0 -50 -23 -50 -50v-362c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM2048 311c0 -222 -181 -402 -402 -402h-1244c-221 0 -402 180 -402 402
+c0 155 91 297 231 363c-7 24 -10 49 -10 73c0 151 123 274 274 274c66 0 130 -24 180 -67c60 244 280 417 532 417c302 0 548 -246 548 -548c0 -41 -4 -82 -14 -122c180 -44 307 -206 307 -390z" />
+ <glyph glyph-name="fast-forward" unicode="&#xf050;" horiz-adv-x="1792"
+d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v710c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v678c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-1408c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v678
+c-3 -7 -7 -13 -13 -19l-710 -710c-25 -25 -45 -16 -45 19v710c-3 -7 -7 -13 -13 -19z" />
+ <glyph glyph-name="bell-slash" unicode="&#xf1f6;" horiz-adv-x="2019"
+d="M1544 684c51 -298 182 -458 298 -556c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-255 114 -256 255zM1010 -176c9 0 16 7 16 16s-7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176zM2012 1424
+c11 -14 10 -34 -3 -46l-1872 -1622c-13 -11 -34 -10 -45 4l-84 96c-11 14 -10 34 3 45l186 161c-12 20 -19 42 -19 66c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c172 -25 299 -122 367 -240
+l418 363c13 11 34 10 45 -4z" />
+ <glyph glyph-name="cubes" unicode="&#xf1b3;" horiz-adv-x="2176"
+d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416
+c0 -48 -27 -93 -71 -114l-448 -224c-18 -10 -37 -14 -57 -14s-39 4 -57 14l-448 224c-3 1 -5 2 -7 4c-2 -2 -4 -3 -7 -4l-448 -224c-18 -10 -37 -14 -57 -14s-39 4 -57 14l-448 224c-44 21 -71 66 -71 114v416c0 51 31 97 78 118l434 186v400c0 51 31 97 78 118l448 192
+c16 7 33 10 50 10s34 -3 50 -10l448 -192c47 -21 78 -67 78 -118v-400l434 -186c48 -21 78 -67 78 -118z" />
+ <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898"
+d="M898 1066v-102c0 -18 -14 -32 -32 -32h-168c-31 -192 -178 -317 -405 -344c149 -159 308 -351 459 -536c8 -9 10 -23 4 -34c-5 -11 -16 -18 -29 -18h-195c-10 0 -19 4 -25 12c-161 193 -309 370 -498 571c-6 6 -9 14 -9 22v127c0 17 14 32 32 32h112
+c176 0 286 59 315 168h-427c-18 0 -32 14 -32 32v102c0 18 14 32 32 32h413c-38 75 -128 113 -268 113h-145c-18 0 -32 15 -32 32v133c0 18 14 32 32 32h832c18 0 32 -14 32 -32v-102c0 -18 -14 -32 -32 -32h-233c32 -41 53 -89 64 -144h171c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="hashtag" unicode="&#xf292;" horiz-adv-x="1728"
+d="M959 512l64 256h-254l-64 -256h254zM1727 1016l-56 -224c-4 -14 -16 -24 -31 -24h-327l-64 -256h311c10 0 19 -5 25 -12c6 -8 9 -18 6 -28l-56 -224c-3 -14 -16 -24 -31 -24h-327l-81 -328c-4 -14 -17 -24 -31 -24h-224c-10 0 -20 5 -26 12c-6 8 -8 18 -6 28l78 312h-254
+l-81 -328c-4 -14 -17 -24 -31 -24h-225c-9 0 -19 5 -25 12c-6 8 -8 18 -6 28l78 312h-311c-10 0 -19 5 -25 12c-6 8 -8 18 -6 28l56 224c4 14 16 24 31 24h327l64 256h-311c-10 0 -19 5 -25 12c-6 8 -9 18 -6 28l56 224c3 14 16 24 31 24h327l81 328c4 14 17 24 32 24h224
+c9 0 19 -5 25 -12c6 -8 8 -18 6 -28l-78 -312h254l81 328c4 14 17 24 32 24h224c9 0 19 -5 25 -12c6 -8 8 -18 6 -28l-78 -312h311c10 0 19 -5 25 -12c6 -8 8 -18 6 -28z" />
+ <glyph glyph-name="file-text-o" unicode="&#xf0f6;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM384 736c0 18 14 32 32 32h704c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64zM1120 512c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704zM1120 256c18 0 32 -14 32 -32
+v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704z" />
+ <glyph glyph-name="hand-o-left" unicode="&#xf0a5;" horiz-adv-x="1792"
+d="M1376 128h32v640h-32c-106 0 -177 90 -241 163c-41 46 -79 92 -112 145c-14 22 -26 45 -38 68s-62 136 -89 136c-85 0 -160 -32 -160 -128c0 -128 96 -193 96 -256h-576c-67 0 -128 -60 -128 -128c0 -69 59 -128 128 -128h331c-21 -24 -35 -71 -35 -103
+c0 -47 19 -87 53 -119c-12 -21 -18 -45 -18 -69c0 -46 23 -103 65 -126c-3 -18 -4 -37 -4 -56c0 -118 73 -167 184 -167c199 0 369 128 544 128zM1664 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1792 768v-640c0 -71 -57 -128 -128 -128h-288
+c-63 0 -162 -37 -223 -59c-102 -37 -207 -69 -317 -69c-184 0 -318 104 -317 295l1 5c-40 50 -61 114 -61 178c0 14 1 29 3 43c-21 37 -34 77 -37 119h-169c-140 0 -256 117 -256 257c0 138 118 255 256 255h374c-15 41 -22 84 -22 128c0 169 129 256 288 256
+c134 0 177 -171 235 -264c30 -47 64 -88 100 -129c29 -33 97 -119 145 -119h288c71 0 128 -57 128 -128z" />
+ <glyph glyph-name="vimeo" unicode="&#xf27d;" horiz-adv-x="1628"
+d="M1627 1018c-7 -158 -118 -375 -332 -651c-222 -287 -408 -431 -562 -431c-95 0 -175 88 -240 263c-44 160 -88 321 -132 482c-48 175 -101 262 -157 262c-12 0 -54 -25 -127 -76l-77 98c80 71 159 143 238 212c106 94 187 141 241 146c127 12 204 -74 234 -259
+c31 -200 54 -325 66 -373c37 -166 76 -249 120 -249c34 0 85 53 154 161c68 108 104 190 109 246c9 93 -27 139 -109 139c-39 0 -79 -9 -121 -26c80 262 233 389 459 382c167 -5 246 -114 236 -326z" />
+ <glyph glyph-name="mastodon-alt" unicode="&#xf2e2;"
+d="M766 1408h5c211 -2 413 -25 531 -79c0 0 234 -105 234 -462c0 0 3 -263 -33 -446c-23 -116 -202 -243 -408 -268c-108 -13 -214 -25 -327 -20c-185 8 -330 45 -330 45c0 -18 1 -36 3 -52c24 -182 181 -193 329 -198c150 -5 284 37 284 37l6 -135s-105 -57 -292 -67
+c-103 -6 -230 3 -379 42c-323 85 -380 430 -388 779c-3 104 -1 201 -1 283c0 357 235 462 235 462c118 54 320 77 531 79v0zM350 839c-64 0 -115 -52 -115 -116s51 -115 115 -115s116 51 116 115s-52 116 -116 116v0zM768 839c-64 0 -116 -52 -116 -116s52 -115 116 -115
+s116 51 116 115s-52 116 -116 116v0zM1186 839c-64 0 -116 -52 -116 -116s52 -115 116 -115s115 51 115 115s-51 116 -115 116v0z" />
+ <glyph glyph-name="ravelry" unicode="&#xf2d9;" horiz-adv-x="2080"
+d="M1095 -197c-4 1 -7 2 -11 4c0 0 -329 193 -440 505c-37 6 -115 24 -175 37c87 -283 329 -499 626 -546zM454 409l168 -28c-57 171 -64 366 -64 366c-67 -65 -103 -154 -121 -224c3 -39 8 -77 17 -114zM564 1018c-31 -46 -56 -96 -77 -148c33 35 60 58 74 68
+c-2 30 3 80 3 80zM2001 584c0 436 -352 790 -784 790c-200 0 -382 -76 -521 -201c-21 -41 -35 -93 -45 -160c213 181 593 136 593 136c95 -4 84 -88 83 -114c-346 29 -516 -70 -684 -213c0 0 33 -320 109 -450c438 -20 771 218 771 218c42 30 79 33 87 -19
+c6 -42 9 -99 -39 -121c-146 -68 -307 -111 -467 -134c-104 -15 -162 -19 -317 -16c148 -344 518 -438 518 -438c116 -19 204 -4 263 15c256 130 433 398 433 707zM2075 621c-7 -68 -18 -147 -40 -212c-90 -267 -215 -441 -500 -600c-26 -18 -54 -35 -82 -44
+c-51 -18 -106 -22 -163 -16c-24 -2 -48 -3 -73 -3c-381 0 -703 260 -800 615c-3 0 -6 1 -9 1c-23 -180 110 -423 110 -423s8 -12 54 -82c-255 135 -262 533 -262 533c-61 23 -273 95 -310 154c0 0 166 -91 309 -109c-1 1 2 32 2 32c9 122 51 217 94 290
+c28 137 90 261 176 365c15 62 39 136 81 214c18 34 35 56 81 77c304 142 604 178 912 18c295 -154 455 -476 420 -810z" />
+ <glyph glyph-name="hand-o-right" unicode="&#xf0a4;" horiz-adv-x="1792"
+d="M256 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 768c0 68 -61 128 -128 128h-576c0 63 96 128 96 256c0 96 -75 128 -160 128c-28 0 -79 -116 -90 -139c-12 -22 -24 -44 -37 -65c-33 -53 -71 -99 -112 -145c-64 -73 -135 -163 -241 -163
+h-32v-640h32c175 0 346 -128 540 -128c112 0 189 47 189 167c0 19 -2 38 -5 56c42 23 65 80 65 126c0 24 -6 48 -18 69c34 32 53 72 53 119c0 32 -14 79 -35 103h331c69 0 128 59 128 128zM1792 769c0 -140 -116 -257 -256 -257h-169c-3 -42 -16 -82 -37 -119
+c2 -14 3 -29 3 -43c0 -64 -21 -128 -60 -178c2 -189 -127 -300 -312 -300c-112 0 -218 31 -322 69c-61 22 -160 59 -223 59h-288c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h288c48 0 116 86 145 119c36 41 70 82 100 129c58 93 101 264 235 264
+c159 0 288 -87 288 -256c0 -44 -7 -87 -22 -128h374c138 0 256 -117 256 -255z" />
+ <glyph glyph-name="object-group" unicode="&#xf247;" horiz-adv-x="2048"
+d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
+h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
+ <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792"
+d="M960 1280c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1792 352v-352c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -16 3 -23 9l-93 93c-157 -189 -439 -310 -748 -310s-591 121 -748 310l-93 -93c-6 -6 -15 -9 -23 -9c-4 0 -8 1 -12 2
+c-12 5 -20 17 -20 30v352c0 18 14 32 32 32h352c13 0 25 -8 30 -20s2 -25 -7 -35l-100 -100c90 -121 263 -209 461 -236v647h-192c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h192v163c-76 44 -128 126 -128 221c0 141 115 256 256 256s256 -115 256 -256
+c0 -95 -52 -177 -128 -221v-163h192c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-192v-647c198 27 371 115 461 236l-100 100c-9 10 -12 23 -7 35s17 20 30 20h352c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="meh-o" unicode="&#xf11a;"
+d="M1152 448c0 -35 -29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h640c35 0 64 -29 64 -64zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="file-image-o" unicode="&#xf1c5;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512c-106 0 -192 86 -192 192s86 192 192 192s192 -86 192 -192s-86 -192 -192 -192z" />
+ <glyph glyph-name="liberapay" unicode="&#xf2e9;" horiz-adv-x="1191"
+d="M468 1404v0l-222 -918c-4 -19 -6 -37 -7 -53s3 -30 9 -42s18 -23 33 -30s36 -12 64 -14l-48 -196c-75 0 -134 9 -177 29s-74 47 -93 81s-28 73 -27 117s6 91 18 141l203 847zM849 1025v0c60 0 111 -9 154 -27s78 -44 106 -75s49 -68 62 -110s20 -86 20 -134h-1
+c0 -78 -12 -149 -38 -213s-61 -120 -106 -167s-99 -83 -162 -109s-133 -39 -207 -39c-36 0 -72 3 -108 9l-72 -288h-236l265 1103c42 13 91 24 146 34s113 16 177 16zM819 825v0c-34 0 -66 -3 -96 -9l-111 -464c18 -4 40 -7 67 -7c41 0 79 8 113 23s63 37 87 65
+s43 61 56 100s20 81 20 128c0 46 -11 84 -31 116s-55 48 -105 48z" />
+ <glyph glyph-name="calculator" unicode="&#xf1ec;" horiz-adv-x="1664"
+d="M384 0c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 0c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM384 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1152 0
+c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM384 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1152 384
+c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1536 0v384c0 70 -58 128 -128 128s-128 -58 -128 -128v-384c0 -70 58 -128 128 -128s128 58 128 128z
+M1152 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1536 1088v256c0 35 -29 64 -64 64h-1280c-35 0 -64 -29 -64 -64v-256c0 -35 29 -64 64 -64h1280c35 0 64 29 64 64zM1536 768c0 71 -57 128 -128 128s-128 -57 -128 -128
+s57 -128 128 -128s128 57 128 128zM1664 1408v-1536c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1536c0 70 58 128 128 128h1408c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1921"
+d="M1918 1016c15 -41 -32 -137 -150 -294c-194 -258 -215 -234 -55 -383c154 -143 186 -212 191 -221c0 0 64 -112 -71 -113l-256 -4c-55 -11 -128 39 -128 39c-96 66 -186 237 -256 215c0 0 -72 -23 -70 -177c1 -33 -15 -51 -15 -51s-18 -19 -53 -22h-115
+c-253 -16 -476 217 -476 217s-244 252 -458 755c-14 33 1 49 1 49s15 19 57 19l274 2c26 -4 44 -18 44 -18s16 -11 24 -32c45 -112 103 -214 103 -214c100 -206 168 -241 207 -220c0 0 51 31 40 280c-4 90 -29 131 -29 131c-23 31 -66 40 -85 43c-15 2 10 38 43 54
+c49 24 136 25 239 24c81 -1 104 -6 135 -13c95 -23 63 -111 63 -323c0 -68 -13 -163 36 -194c21 -14 73 -2 201 216c0 0 60 104 107 225c8 22 25 31 25 31s16 9 38 6l288 2c87 11 101 -29 101 -29z" />
+ <glyph glyph-name="odnoklassniki" unicode="&#xf263;" horiz-adv-x="1078"
+d="M539 629c-250 0 -454 203 -454 453c0 251 204 454 454 454s454 -203 454 -454c0 -250 -204 -453 -454 -453zM539 1306c-123 0 -223 -100 -223 -224c0 -123 100 -223 223 -223s223 100 223 223c0 124 -100 224 -223 224zM1062 574c44 -90 -6 -133 -120 -207
+c-96 -61 -228 -85 -315 -94l73 -72l267 -267c40 -41 40 -107 0 -147l-12 -13c-41 -40 -107 -40 -148 0c-67 68 -165 166 -267 268l-267 -268c-41 -40 -107 -40 -147 0l-12 13c-41 40 -41 106 0 147c68 68 165 166 267 267l72 72c-86 9 -220 32 -317 94
+c-114 74 -164 117 -120 207c26 51 97 94 191 20c0 0 127 -101 332 -101s332 101 332 101c94 74 165 31 191 -20z" />
+ <glyph glyph-name="linkedin" unicode="&#xf0e1;"
+d="M349 911v-991h-330v991h330zM370 1217c1 -95 -71 -171 -186 -171h-2c-111 0 -182 76 -182 171c0 97 74 171 186 171c113 0 183 -74 184 -171zM1536 488v-568h-329v530c0 133 -48 224 -167 224c-91 0 -145 -61 -169 -120c-8 -22 -11 -51 -11 -81v-553h-329
+c4 898 0 991 0 991h329v-144h-2c43 68 121 167 299 167c217 0 379 -142 379 -446z" />
+ <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1026"
+d="M603 0h-172c-18 0 -32 14 -32 32v330h-288c-18 0 -32 14 -32 32v103c0 18 14 32 32 32h288v85h-288c-18 0 -32 14 -32 32v104c0 17 14 32 32 32h214l-321 578c-5 10 -5 22 0 32c6 10 17 16 28 16h194c12 0 23 -7 29 -18l215 -425c24 -47 40 -87 56 -125
+c17 43 39 85 58 129l191 420c5 12 17 19 29 19h191c11 0 21 -6 27 -16c6 -9 6 -21 1 -31l-313 -579h215c18 0 32 -15 32 -32v-104c0 -18 -14 -32 -32 -32h-290v-85h290c18 0 32 -14 32 -32v-103c0 -18 -14 -32 -32 -32h-290v-330c0 -18 -15 -32 -32 -32z" />
+ <glyph glyph-name="skype" unicode="&#xf17e;"
+d="M1173 473c0 174 -169 234 -311 266l-104 24c-76 18 -133 31 -133 89c0 53 56 77 144 77c157 0 160 -115 257 -115c65 0 104 51 104 109c0 115 -191 190 -380 190c-173 0 -374 -75 -374 -278c0 -168 112 -228 258 -263l146 -36c89 -22 144 -32 144 -96
+c0 -51 -57 -90 -145 -90c-185 0 -195 154 -302 154c-70 0 -101 -50 -101 -105c0 -123 188 -223 413 -223c188 0 384 94 384 297zM1536 256c0 -212 -172 -384 -384 -384c-88 0 -169 30 -234 80c-48 -10 -99 -16 -150 -16c-389 0 -704 315 -704 704c0 51 6 102 16 150
+c-50 65 -80 146 -80 234c0 212 172 384 384 384c88 0 169 -30 234 -80c48 10 99 16 150 16c389 0 704 -315 704 -704c0 -51 -6 -102 -16 -150c50 -65 80 -146 80 -234z" />
+ <glyph glyph-name="envelope-square" unicode="&#xf199;"
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM1280 352v436c-19 -21 -40 -40 -64 -55c-94 -62 -191 -120 -284 -184c-47 -33 -105 -69 -164 -69s-117 36 -164 69
+c-93 64 -191 121 -284 185c-23 15 -41 37 -64 54v-436c0 -53 43 -96 96 -96h832c53 0 96 43 96 96zM1280 925c0 54 -40 99 -96 99h-832c-53 0 -96 -43 -96 -96c0 -54 56 -113 98 -141c88 -59 179 -114 267 -172c38 -25 101 -71 147 -71s109 46 147 71c89 58 178 115 267 174
+c39 26 98 86 98 136z" />
+ <glyph glyph-name="question-circle-o" unicode="&#xf29c;"
+d="M880 336v-160c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v160c0 18 14 32 32 32h160c18 0 32 -14 32 -32zM1136 832c0 -142 -99 -198 -172 -239c-52 -30 -84 -49 -84 -81v-32c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v68c0 123 88 162 159 194
+c60 28 97 47 97 92c0 58 -73 101 -139 101c-35 0 -72 -11 -95 -27c-22 -15 -43 -37 -80 -83c-6 -8 -15 -12 -25 -12c-7 0 -14 2 -19 6l-108 82c-13 10 -16 29 -7 43c82 129 197 192 349 192c164 0 348 -130 348 -304zM768 1280c-353 0 -640 -287 -640 -640
+s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="ship" unicode="&#xf21a;" horiz-adv-x="2010"
+d="M1792 -19c25 25 65 25 90 0l128 -128l-90 -90l-83 83l-83 -83c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83
+l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-128 128l90 90l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83
+c25 25 65 25 90 0l83 -83zM218 19c-25 -25 -65 -25 -90 0l-128 128l90 90l83 -82l83 82c25 25 65 25 90 0l83 -82l64 64v293l-210 314c-23 35 -7 83 33 97l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58c40 -14 56 -62 33 -97l-210 -314v-293l19 18
+c25 25 65 25 90 0l83 -82l83 82c25 25 65 25 90 0l128 -128l-90 -90l-83 83l-83 -83c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83
+c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83zM621 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
+ <glyph glyph-name="dashcube" unicode="&#xf210;" horiz-adv-x="1408"
+d="M0 856c0 173 138 322 314 322h742l352 358v-1470c0 -174 -138 -322 -314 -322h-780c-176 0 -314 148 -314 322v790zM1232 102l-176 180v425c0 61 -49 112 -110 112h-484c-61 0 -110 -51 -110 -112v-492c0 -61 49 -113 110 -113h770z" />
+ <glyph glyph-name="optin-monster" unicode="&#xf23c;" horiz-adv-x="2132"
+d="M396 -139c-10 -21 -39 -50 -64 -60c-35 -12 -78 11 -80 35c-2 31 75 87 108 93c32 6 47 -42 36 -68zM1737 -139c-11 26 4 74 35 68c33 -6 111 -62 108 -93c-1 -24 -45 -47 -79 -35c-26 10 -55 39 -64 60zM1785 -30c-21 43 15 121 70 114c58 -6 183 -94 183 -160
+c0 -43 -58 -72 -119 -55c-45 12 -116 65 -134 101zM346 -30c-18 -36 -88 -89 -133 -101c-61 -17 -119 12 -119 55c0 66 125 154 183 160c55 7 91 -71 69 -114zM1076 1094c106 0 192 -80 192 -179s-86 -179 -192 -179s-191 80 -191 179c0 15 2 28 5 42c16 -25 46 -43 80 -43
+c51 0 92 38 92 85c0 37 -26 69 -61 80c23 10 49 15 76 15h-1zM1380 1312c-132 145 -301 177 -466 87c93 208 452 180 466 -87zM2130 73c5 -7 -1 -25 -11 -42c4 -13 7 -26 7 -40c3 -117 -164 -237 -272 -241c-64 -3 -128 31 -158 87c-420 -15 -840 -18 -1259 0
+c-31 -56 -95 -89 -159 -87c-107 4 -274 124 -272 241c1 14 3 27 7 40c-10 17 -16 35 -11 42c4 6 17 6 31 1c12 19 26 35 41 51c-4 17 -4 32 2 38c7 6 23 4 39 -4c17 12 37 24 59 34c0 18 5 32 13 37c12 6 33 2 51 -16c21 3 42 3 61 -2c13 -3 26 -10 38 -19v73
+c-6 0 -11 0 -18 2c-65 12 -136 57 -152 132c-6 25 -6 52 0 81c12 50 55 79 93 95c3 22 30 52 55 59c28 7 46 -17 52 -38h13c18 -2 47 -6 60 -23c2 -2 4 -5 5 -7c20 2 41 5 61 7c-9 7 -19 13 -30 17c-19 33 -51 41 -91 43c0 3 0 6 1 10c-73 2 -163 21 -203 66
+c-46 51 -54 138 -45 204c8 65 35 140 90 179c31 21 80 3 84 -36c2 -17 5 -75 21 -84c18 -9 47 -13 76 -12c30 29 62 54 98 74c-55 5 -107 -6 -162 -14l47 46c46 44 107 82 163 111c87 44 185 77 282 86c-69 29 -148 44 -221 61c283 60 646 82 904 -139
+c67 -57 120 -134 158 -222c41 -5 93 -6 121 9h1c16 9 19 66 21 84c4 38 53 57 84 35c55 -39 82 -114 91 -178c8 -66 1 -153 -46 -204c-40 -45 -127 -65 -199 -67v-10c-41 -1 -75 -9 -95 -43c-11 -4 -21 -10 -31 -17c21 -2 42 -5 62 -7c1 3 3 6 5 8c14 16 43 21 60 23h13
+c6 20 25 44 52 38s52 -37 55 -59c40 -16 82 -45 93 -95c7 -30 6 -56 1 -81c-17 -75 -88 -121 -153 -132c-5 -1 -12 -2 -17 -2c0 -25 0 -49 -1 -73c12 9 24 16 38 19c19 5 40 5 61 2c18 18 40 22 51 16c8 -5 14 -19 14 -37c21 -10 42 -22 59 -34c16 8 31 10 38 4
+c6 -6 7 -21 2 -38c15 -16 30 -33 41 -51c14 5 26 5 31 -1zM1855 1025c0 -23 -5 -43 -9 -54c64 -25 97 -82 112 -132c4 39 -10 146 -51 189c-27 27 -52 19 -52 -3zM1777 925c48 -58 63 -154 47 -233c40 8 76 23 97 45c7 8 14 18 18 28c-4 79 -38 158 -110 181
+c-12 -12 -34 -18 -52 -21zM1740 921c-14 0 -30 0 -44 1c28 -76 46 -158 53 -239c13 0 28 1 43 3c22 90 -1 191 -52 235zM176 839c15 50 48 107 112 132c-4 11 -9 31 -9 54c0 22 -26 30 -52 3c-42 -43 -55 -150 -51 -189zM212 737c21 -23 57 -37 97 -45c-16 79 -1 175 47 233
+c-18 3 -40 9 -52 21c-72 -23 -105 -102 -110 -181c5 -10 11 -20 18 -28zM389 683c9 82 34 162 73 235c-19 -4 -37 -11 -55 -18l-45 -19v1c-27 -52 -37 -127 -20 -196c17 -2 32 -3 47 -3zM1352 644c13 -66 18 -132 28 -198c4 -23 11 -28 33 -17c59 30 84 145 85 211
+c-48 3 -97 3 -146 4zM1070 1285c-155 0 -282 -126 -282 -281c0 -156 127 -282 282 -282s282 126 282 282c0 155 -127 281 -282 281zM1298 646c-70 1 -141 1 -211 0v1c-1 -19 1 -141 16 -152c41 -20 146 -17 189 -4c20 6 9 137 6 155zM1030 447c17 9 9 168 5 199v1
+c-72 -1 -143 -1 -214 -3c-7 -34 -17 -181 7 -191c48 -21 154 -19 202 -6zM636 636c-20 -73 1 -167 82 -203c20 -9 32 -9 36 16c7 32 9 136 18 193c-45 -1 -91 -3 -136 -6zM509 510c2 -18 -14 -29 -34 -36c162 -174 343 -317 577 -394c250 71 428 222 604 396
+c-18 7 -32 19 -30 34c1 4 2 6 3 9v1v-1c-33 3 -66 7 -98 10c-35 -122 -133 -196 -173 -117c-10 19 -13 43 -17 62c-14 -31 -49 -30 -91 -33c-49 -4 -117 -5 -163 11c-11 -48 -41 -48 -99 -53c-52 -5 -180 -15 -203 40c-4 -106 -130 -37 -167 26c-12 21 -20 42 -26 65
+c-29 -3 -58 -6 -87 -10c2 -3 3 -7 4 -10zM425 -118c2 9 3 19 3 30c-21 86 -69 184 -124 200c-83 25 -255 -87 -245 -202c47 -72 148 -132 219 -135c66 -3 133 41 147 107zM428 53c12 -33 24 -77 27 -119c124 72 256 132 392 174c-143 76 -252 177 -360 285
+c-8 -5 -19 -9 -29 -13c-1 -3 -1 -6 -2 -9c17 -10 29 -22 22 -37c-8 -15 -32 -28 -56 -34c-8 -10 -19 -18 -29 -24h-1c-1 -50 -1 -100 1 -150c14 -25 26 -51 35 -73zM497 -113c382 -15 764 -13 1145 0c-136 79 -274 153 -428 196c-51 -23 -103 -42 -156 -57
+c-8 -3 -8 -3 -16 0c-44 14 -86 30 -129 49c-149 -43 -286 -108 -416 -188h-1v-1c1 0 1 0 1 1zM1681 -67c3 42 16 87 28 120c8 22 19 47 33 71l-1 -1c2 51 3 102 3 153c-11 6 -21 15 -30 25c-24 5 -48 19 -56 33c-7 15 5 28 22 38c-1 2 -2 6 -2 9c-11 3 -20 7 -28 12
+c-117 -109 -242 -210 -383 -284c144 -43 281 -104 414 -176zM2073 -90c11 115 -161 227 -245 202c-54 -16 -103 -114 -124 -200c0 -11 1 -21 3 -30c14 -66 81 -110 147 -107c71 3 172 63 219 135z" />
+ <glyph glyph-name="paw" unicode="&#xf1b0;" horiz-adv-x="1664"
+d="M780 1064c0 -112 -58 -245 -187 -245c-162 0 -260 204 -260 344c0 112 58 245 187 245c163 0 260 -204 260 -344zM438 581c0 -97 -51 -198 -161 -198c-160 0 -277 196 -277 341c0 97 52 199 161 199c160 0 277 -197 277 -342zM832 608c245 0 576 -353 576 -589
+c0 -127 -104 -147 -206 -147c-134 0 -242 90 -370 90c-134 0 -248 -89 -393 -89c-97 0 -183 33 -183 146c0 237 331 589 576 589zM1071 819c-129 0 -187 133 -187 245c0 140 97 344 260 344c129 0 187 -133 187 -245c0 -140 -98 -344 -260 -344zM1503 923
+c109 0 161 -102 161 -199c0 -145 -117 -341 -277 -341c-110 0 -161 101 -161 198c0 145 117 342 277 342z" />
+ <glyph glyph-name="venus-double" unicode="&#xf226;" horiz-adv-x="1792"
+d="M1790 1007c25 -317 -207 -586 -510 -619v-260h224c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-512v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h224v260c-303 33 -535 302 -510 619c22 275 243 500 517 526c140 14 271 -23 377 -94c106 71 237 108 377 94c274 -26 495 -251 517 -526zM896 647c79 81 128 191 128 313s-49 232 -128 313c-79 -81 -128 -191 -128 -313s49 -232 128 -313zM576 512
+c79 0 153 21 218 57c-96 103 -154 240 -154 391s59 288 154 391c-65 36 -139 57 -218 57c-247 0 -448 -201 -448 -448s201 -448 448 -448zM1152 128v260c-94 10 -181 44 -256 94c-75 -50 -162 -84 -256 -94v-260h512zM1216 512c247 0 448 201 448 448s-201 448 -448 448
+c-79 0 -153 -21 -218 -57c95 -103 154 -240 154 -391s-58 -288 -154 -391c65 -36 139 -57 218 -57z" />
+ <glyph glyph-name="calendar-times-o" unicode="&#xf273;" horiz-adv-x="1664"
+d="M1111 151l-46 -46c-12 -12 -32 -12 -45 0l-188 189l-188 -189c-13 -12 -33 -12 -45 0l-46 46c-12 12 -12 32 0 45l189 188l-189 188c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l188 -188l188 188c13 12 33 12 45 0l46 -46c12 -12 12 -32 0 -45l-188 -188l188 -188
+c12 -13 12 -33 0 -45zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64
+c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z
+" />
+ <glyph glyph-name="address-book-o" unicode="&#xf2ba;" horiz-adv-x="1664"
+d="M1028 892c0 -143 -117 -259 -260 -259s-260 116 -260 259c0 144 117 260 260 260s260 -116 260 -260zM980 672c191 0 221 -227 221 -374c0 -84 -53 -170 -145 -170h-576c-92 0 -145 86 -145 170c0 141 30 374 216 374h5c66 -39 133 -87 212 -87s146 48 212 87zM1664 928
+c0 -17 -15 -32 -32 -32h-96v-128h96c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-96v-128h96c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-96v-224c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h1216c88 0 160 -72 160 -160
+v-224h96c17 0 32 -15 32 -32v-192zM1408 -96v1472c0 17 -15 32 -32 32h-1216c-17 0 -32 -15 -32 -32v-1472c0 -17 15 -32 32 -32h1216c17 0 32 15 32 32z" />
+ <glyph glyph-name="check" unicode="&#xf00c;" horiz-adv-x="1550"
+d="M1550 970c0 -25 -10 -50 -28 -68l-724 -724l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136l-362 362c-18 18 -28 43 -28 68s10 50 28 68l136 136c18 18 43 28 68 28s50 -10 68 -28l294 -295l656 657c18 18 43 28 68 28s50 -10 68 -28l136 -136
+c18 -18 28 -43 28 -68z" />
+ <glyph glyph-name="meetup" unicode="&#xf2e0;" horiz-adv-x="1847"
+d="M1297 302c-11 72 -143 16 -151 95c-11 112 153 354 140 448c-12 84 -68 102 -117 103c-47 1 -59 -7 -75 -16c-10 -6 -23 -17 -41 1c-22 21 -39 41 -68 45c-43 7 -62 -7 -93 -34c-12 -10 -42 -45 -70 -32c-12 6 -54 27 -84 40c-57 25 -140 -16 -170 -70
+c-45 -80 -133 -396 -146 -438c-30 -93 38 -170 129 -165c39 2 64 16 89 61c14 26 146 377 156 394c7 12 31 28 51 18c20 -11 24 -33 21 -53c-4 -34 -98 -248 -101 -272c-12 -80 94 -93 135 -14c13 25 160 324 173 344c15 22 26 29 41 28c11 0 29 -3 25 -38
+c-5 -33 -123 -253 -136 -307c-16 -72 23 -145 87 -177c40 -20 219 -55 205 39zM346 86c4 -20 -8 -39 -28 -43c-19 -4 -38 8 -42 28c-4 19 8 39 27 43s39 -8 43 -28zM916 -177c16 -23 10 -54 -12 -70c-23 -16 -54 -10 -70 13c-15 23 -9 54 13 70c23 16 54 10 69 -13zM140 635
+c-24 -36 -72 -45 -107 -20c-35 24 -44 73 -20 108c24 36 72 45 107 21c35 -25 44 -73 20 -109zM1430 -42c25 -37 16 -88 -21 -114c-37 -25 -87 -16 -112 21s-16 88 20 114c37 26 87 16 113 -21zM1542 562c92 -151 53 -350 -92 -452c-61 -43 -130 -62 -199 -60
+c-42 -165 -243 -226 -368 -114c-4 -3 -9 -6 -13 -10c-137 -95 -323 -61 -418 78c-34 50 -51 107 -53 164c-229 38 -315 329 -144 489c-99 164 2 376 187 402c88 232 377 342 573 190c236 78 477 -103 458 -354c144 -44 185 -234 69 -333zM418 1222c18 -27 12 -64 -15 -83
+c-26 -18 -63 -12 -81 15s-12 64 15 83c26 18 63 12 81 -15zM577 1503c5 -22 -9 -44 -31 -49s-44 9 -49 32c-4 22 10 44 32 49s44 -9 48 -32zM1763 555c6 -27 -11 -53 -37 -58c-26 -6 -52 11 -57 37c-6 27 11 53 37 59c26 5 52 -12 57 -38zM1099 1448c21 -36 10 -84 -27 -106
+c-36 -22 -83 -10 -104 26c-22 37 -10 85 26 107s83 10 105 -27zM1845 792c5 -20 -8 -39 -27 -44c-20 -4 -39 9 -43 28c-4 20 8 40 28 44c19 4 38 -8 42 -28zM1654 1033c20 -30 13 -71 -16 -92c-30 -20 -71 -13 -91 17s-13 71 17 92c29 21 70 13 90 -17z" />
+ <glyph glyph-name="sliders" unicode="&#xf1de;"
+d="M352 128v-128h-352v128h352zM704 256c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280c35 0 64 -29 64 -64v-256
+c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM1216 768c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+ <glyph glyph-name="file-pdf-o" unicode="&#xf1c1;"
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM894 465c25 -20 53 -38 84 -56c42 5 81 7 117 7c67 0 152 -8 177 -49c7 -10 13 -28 2 -52c-1 -1 -2 -3 -3 -4v-1c-3 -18 -18 -38 -71 -38c-64 0 -161 29 -245 73c-139 -15 -285 -46 -392 -83c-103 -176 -182 -262 -242 -262c-10 0 -19 2 -28 7l-24 12
+c-3 1 -4 3 -6 5c-5 5 -9 16 -6 36c10 46 64 123 188 188c8 5 18 2 23 -6c1 -1 2 -3 2 -4c31 51 67 116 107 197c45 90 80 178 104 262c-32 109 -42 221 -24 287c7 25 22 40 42 40h22c15 0 27 -5 35 -15c12 -14 15 -36 9 -68c-1 -3 -2 -6 -4 -8c1 -3 1 -5 1 -8v-30
+c-1 -63 -2 -123 -14 -192c35 -105 87 -190 146 -238zM318 54c30 14 73 57 137 158c-75 -58 -122 -124 -137 -158zM716 974c-10 -28 -10 -76 -2 -132c3 16 5 31 7 44c2 17 5 31 7 43c1 3 2 5 4 8c-1 1 -1 3 -2 5c-1 18 -7 29 -13 36c0 -2 -1 -3 -1 -4zM592 313
+c88 35 186 63 284 81c-10 8 -20 15 -29 23c-49 43 -93 103 -127 176c-19 -61 -47 -126 -83 -197c-15 -28 -30 -56 -45 -83zM1238 329c-5 5 -31 24 -140 24c49 -18 94 -28 124 -28c9 0 14 0 18 1c0 1 -1 2 -2 3z" />
+ <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408"
+d="M493 1053c22 0 39 18 39 39s-17 39 -39 39c-21 0 -38 -18 -38 -39s17 -39 38 -39zM915 1053c21 0 38 18 38 39s-17 39 -38 39c-22 0 -39 -18 -39 -39s17 -39 39 -39zM103 869c56 0 102 -46 102 -102v-430c0 -57 -45 -103 -102 -103s-103 46 -103 103v430
+c0 56 46 102 103 102zM1163 850v-666c0 -61 -49 -110 -109 -110h-75v-227c0 -57 -46 -103 -103 -103s-103 46 -103 103v227h-138v-227c0 -57 -46 -103 -103 -103c-56 0 -102 46 -102 103l-1 227h-74c-61 0 -110 49 -110 110v666h918zM931 1255c140 -72 235 -210 235 -369
+h-925c0 159 95 297 236 369l-71 131c-4 7 -2 16 5 20c7 3 16 1 20 -6l72 -132c61 27 129 42 201 42s140 -15 201 -42l72 132c4 7 13 9 20 6c7 -4 9 -13 5 -20zM1408 767v-430c0 -57 -46 -103 -103 -103c-56 0 -102 46 -102 103v430c0 57 46 102 102 102
+c57 0 103 -45 103 -102z" />
+ <glyph glyph-name="hubzilla" unicode="&#xf2eb;" horiz-adv-x="1587"
+d="M1349 1363c86 -43 165 -125 207 -213c16 -40 34 -78 30 -170c-3 -83 -8 -115 -34 -170c-68 -146 -203 -243 -356 -253l-83 -6l-29 -115c-24 -96 -27 -129 -27 -129c28 -29 91 -47 117 -115c36 -69 32 -168 -14 -225c-75 -93 -187 -121 -286 -70c-90 47 -136 164 -108 266
+c7 26 -2 34 -109 104l-116 77l-43 -35c-203 -162 -499 -19 -498 242c0 168 133 299 304 298c86 0 138 -20 202 -78l47 -42l104 53l105 51l-11 37c-16 55 -12 176 7 238c21 74 87 166 150 212c128 94 302 111 441 43v0zM580 413l233 -160s71 60 167 68l60 254
+s-185 59 -237 189l-217 -102s52 -128 -6 -248v-1z" />
+ <glyph glyph-name="stack-exchange" unicode="&#xf18d;" horiz-adv-x="1238"
+d="M1238 283v-66c0 -113 -88 -204 -196 -204h-57l-260 -269v269h-529c-108 0 -196 91 -196 204v66h1238zM1238 609v-255h-1238v255h1238zM1238 937v-255h-1238v255h1238zM1238 1077v-67h-1238v67c0 112 88 203 196 203h846c108 0 196 -91 196 -203z" />
+ <glyph glyph-name="twitch" unicode="&#xf1e8;" horiz-adv-x="1592"
+d="M796 1102v-434h-145v434h145zM1194 1102v-434h-145v434h145zM1194 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1592 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+ <glyph glyph-name="caret-right" unicode="&#xf0da;" horiz-adv-x="576"
+d="M576 640c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v896c0 35 29 64 64 64c17 0 33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="tree" unicode="&#xf1bb;" horiz-adv-x="1472"
+d="M1472 64c0 -35 -29 -64 -64 -64h-462c3 -64 11 -131 11 -196c0 -33 -27 -60 -61 -60h-320c-34 0 -61 27 -61 60c0 65 8 132 11 196h-462c-35 0 -64 29 -64 64c0 17 7 33 19 45l402 403h-229c-35 0 -64 29 -64 64c0 17 7 33 19 45l402 403h-197c-35 0 -64 29 -64 64
+c0 17 7 33 19 45l384 384c12 12 28 19 45 19s33 -7 45 -19l384 -384c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-197l402 -403c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-229l402 -403c12 -12 19 -28 19 -45z" />
+ <glyph glyph-name="friendica" unicode="&#xf2e6;" horiz-adv-x="1520"
+d="M0 1128c0 152 123 276 274 276h973c151 0 273 -124 273 -276v-980c0 -152 -122 -276 -273 -276h-973c-151 0 -274 124 -274 276v980zM1247 1343h-244v-368h-486v-310l485 3l1 -367h-486v-368h730c118 0 212 95 212 215v980c0 120 -94 215 -212 215z" />
+ <glyph glyph-name="gratipay" unicode="&#xf184;"
+d="M773 234l350 473c27 37 59 156 -43 223c-86 56 -168 13 -211 -37c-16 -18 -44 -40 -96 -40s-79 22 -95 40c-43 50 -125 93 -212 37c-101 -67 -69 -186 -42 -223zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="map-marker" unicode="&#xf041;" horiz-adv-x="1024"
+d="M768 896c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1024 896c0 -61 -7 -124 -33 -179l-364 -774c-21 -44 -67 -71 -115 -71s-94 27 -114 71l-365 774c-26 55 -33 118 -33 179c0 283 229 512 512 512s512 -229 512 -512z" />
+ <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152"
+d="M1152 832v-128c0 -296 -224 -540 -512 -572v-132h256c35 0 64 -29 64 -64s-29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h256v132c-288 32 -512 276 -512 572v128c0 35 29 64 64 64s64 -29 64 -64v-128c0 -247 201 -448 448 -448s448 201 448 448v128
+c0 35 29 64 64 64s64 -29 64 -64zM896 1216v-512c0 -176 -144 -320 -320 -320s-320 144 -320 320v512c0 176 144 320 320 320s320 -144 320 -320z" />
+ <glyph glyph-name="american-sign-language-interpreting" unicode="&#xf2a3;" horiz-adv-x="2303"
+d="M1032 576c-35 1 -68 21 -84 55c-22 45 -66 73 -116 73c-71 0 -128 -57 -128 -128c0 -34 12 -67 36 -89l10 -8c22 -20 51 -31 82 -31c50 0 94 28 116 73c16 34 49 54 84 55zM1600 704c0 34 -12 67 -36 89l-10 8c-22 20 -51 31 -82 31c-50 0 -94 -28 -116 -73
+c-16 -34 -49 -54 -84 -55c35 -1 68 -21 84 -55c22 -45 66 -73 116 -73c71 0 128 57 128 128zM1174 925c-23 -47 -81 -67 -128 -44c-42 21 -87 31 -134 31c-35 0 -68 -6 -99 -17c6 0 13 1 19 1c123 0 236 -72 289 -183c23 -48 2 -105 -46 -128c-12 -6 -25 -9 -39 -9
+c14 0 27 -3 39 -9c48 -23 69 -80 46 -128c-53 -111 -166 -183 -289 -183h-6c-15 2 -29 3 -44 4l-290 27l-239 -120c-10 -5 -19 -7 -29 -7c-23 0 -46 13 -57 35l-160 320c-15 31 -4 68 25 85l209 119l148 267c23 206 125 395 287 528c41 34 102 28 135 -13
+c34 -41 28 -101 -13 -135c-45 -38 -85 -81 -117 -128c78 53 168 89 267 101c53 7 101 -30 107 -83c7 -53 -30 -101 -83 -107c-58 -7 -112 -27 -159 -55c32 7 65 10 99 10c76 0 150 -17 218 -50c48 -24 68 -81 44 -129zM2137 1085l160 -320c15 -31 4 -68 -25 -85l-209 -119
+l-148 -267c-23 -206 -125 -395 -287 -528c-18 -15 -40 -22 -61 -22c-28 0 -55 12 -74 35c-34 41 -28 101 13 135c45 38 85 81 117 128c-78 -53 -168 -89 -267 -101c-4 -1 -8 -1 -12 -1c-48 0 -89 36 -95 84c-7 53 30 101 83 107c58 7 112 27 159 55c-32 -7 -65 -10 -99 -10
+c-76 0 -150 17 -218 50c-48 24 -68 81 -44 129c23 47 81 67 128 44c42 -21 87 -31 134 -31c35 0 68 6 99 17c-6 0 -13 -1 -19 -1c-123 0 -236 72 -289 183c-23 48 -2 105 46 128c12 6 25 9 39 9c-14 0 -27 3 -39 9c-48 23 -69 80 -46 128c53 111 166 183 289 183h7
+c14 -2 28 -3 42 -4l291 -27l239 120c10 5 19 7 29 7c23 0 46 -13 57 -35z" />
+ <glyph glyph-name="binoculars" unicode="&#xf1e5;" horiz-adv-x="1792"
+d="M704 1216v-768c0 -35 -29 -64 -64 -64v-576c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v512l249 873c4 14 17 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v576c-35 0 -64 29 -64 64v768h424
+c14 0 27 -9 31 -23zM736 1504v-224h-352v224c0 18 14 32 32 32h288c18 0 32 -14 32 -32zM1408 1504v-224h-352v224c0 18 14 32 32 32h288c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="sticky-note" unicode="&#xf249;"
+d="M1024 288v-416h-928c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1344c53 0 96 -43 96 -96v-928h-416c-53 0 -96 -43 -96 -96zM1152 256h381c-9 -48 -35 -102 -65 -132l-184 -184c-30 -30 -84 -56 -132 -65v381z" />
+ <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280"
+d="M1280 137c0 -146 -96 -265 -213 -265h-854c-117 0 -213 119 -213 265c0 263 65 567 327 567c81 -79 191 -128 313 -128s232 49 313 128c262 0 327 -304 327 -567zM1024 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
+ <glyph glyph-name="ioxhost" unicode="&#xf208;" horiz-adv-x="2048"
+d="M1463 704c0 -47 -38 -86 -86 -86h-702c-48 0 -86 39 -86 86s38 86 86 86h702c48 0 86 -39 86 -86zM1677 704c0 59 -8 115 -23 170h-982c-48 0 -86 38 -86 85c0 48 38 86 86 86h908c-115 187 -321 311 -555 311c-360 0 -653 -292 -653 -652c0 -59 8 -115 23 -170h982
+c48 0 86 -38 86 -85c0 -48 -38 -86 -86 -86h-908c115 -187 321 -311 556 -311c359 0 652 292 652 652zM2048 959c0 -47 -38 -85 -86 -85h-131c11 -55 17 -112 17 -170c0 -454 -369 -824 -823 -824c-333 0 -620 198 -750 483h-189c-48 0 -86 38 -86 86c0 47 38 85 86 85h132
+c-11 55 -17 112 -17 170c0 454 369 824 824 824c332 0 619 -198 749 -483h188c48 0 86 -38 86 -86z" />
+ <glyph glyph-name="expand" unicode="&#xf065;"
+d="M755 480c0 -8 -4 -17 -10 -23l-332 -332l144 -144c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64v448c0 35 29 64 64 64c17 0 33 -7 45 -19l144 -144l332 332c6 6 15 10 23 10s17 -4 23 -10l114 -114c6 -6 10 -15 10 -23zM1536 1344v-448
+c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-144 144l-332 -332c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l332 332l-144 144c-12 12 -19 28 -19 45c0 35 29 64 64 64h448c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="discord-alt" unicode="&#xf2ef;"
+d="M559 1212v0l13 -16c-237 -68 -346 -172 -346 -172s29 16 78 38c141 62 252 79 298 83c8 1 15 3 23 3c80 11 170 13 265 2c125 -14 259 -51 396 -126c0 0 -103 99 -327 167l18 21s181 4 370 -138c0 0 189 -343 189 -766c0 0 -111 -191 -402 -200c0 0 -48 56 -87 106
+c172 49 238 157 238 157c-54 -35 -105 -61 -151 -78c-66 -28 -129 -45 -191 -56c-126 -24 -242 -17 -341 1c-75 14 -139 36 -193 57c-30 12 -63 26 -96 44c-4 3 -8 4 -12 7c-3 1 -4 3 -5 4c-24 13 -37 22 -37 22s63 -105 230 -155c-39 -50 -88 -109 -88 -109
+c-291 9 -401 200 -401 200c0 423 189 766 189 766c189 142 370 138 370 138zM522 722v0c-75 0 -134 -66 -134 -146s60 -146 134 -146c75 0 134 66 134 146c1 80 -59 146 -134 146zM1002 722v0c-75 0 -134 -66 -134 -146s60 -146 134 -146c75 0 134 66 134 146
+s-59 146 -134 146z" />
+ <glyph glyph-name="bitbucket-square" unicode="&#xf172;"
+d="M848 666c0 57 -70 96 -118 67c-57 -27 -57 -119 1 -143c52 -31 125 16 117 76zM928 682c11 -88 -58 -174 -146 -182s-171 64 -175 153c-3 66 38 130 98 157c94 42 210 -26 223 -128zM1100 1073c-44 -45 -111 -51 -170 -58c-107 -14 -216 -13 -324 0
+c-59 8 -124 15 -170 58c28 40 78 48 123 55c135 24 273 23 408 1c48 -7 102 -15 133 -56zM1142 327c0 24 25 65 -9 75c-215 -142 -515 -142 -731 0l-12 -6l-5 -12c12 -70 23 -141 41 -210c41 -71 129 -95 204 -108c142 -26 299 -18 428 53c75 42 63 137 84 208zM1272 1020
+c4 24 9 53 -8 75c-38 48 -98 71 -155 88c-158 46 -325 52 -487 36c-77 -7 -154 -20 -226 -46c-54 -21 -127 -49 -136 -113c18 -150 47 -297 72 -446c8 -42 8 -92 46 -122c81 -62 184 -89 284 -100c148 -16 305 -5 440 63c38 20 82 46 90 92c28 157 55 314 80 473zM1536 1120
+v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="hand-paper-o" unicode="&#xf256;" horiz-adv-x="1632"
+d="M880 1408c-62 0 -112 -50 -112 -112v-656h-32v528c0 62 -50 112 -112 112s-112 -50 -112 -112v-784l-154 205c-24 32 -62 51 -102 51c-71 0 -128 -58 -128 -128c0 -28 9 -55 26 -77l384 -512c24 -32 62 -51 102 -51h688c46 0 86 33 95 78l76 405c3 19 5 39 5 59v498
+c0 62 -50 112 -112 112s-112 -50 -112 -112v-272h-32v528c0 62 -50 112 -112 112s-112 -50 -112 -112v-528h-32v656c0 62 -50 112 -112 112zM880 1536c90 0 173 -51 214 -132c14 3 28 4 42 4c132 0 240 -108 240 -240v-17c139 8 256 -99 256 -239v-498c0 -28 -3 -56 -8 -83
+l-76 -404c-19 -106 -112 -183 -220 -183h-688c-80 0 -157 39 -205 102l-384 512c-33 44 -51 99 -51 154c0 141 114 256 256 256c42 0 93 -10 128 -34v434c0 132 108 240 240 240c14 0 28 -1 42 -4c41 81 124 132 214 132z" />
+ <glyph glyph-name="database" unicode="&#xf1c0;"
+d="M768 768c301 0 603 54 768 170v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 0c301 0 603 54 768 170v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 384c301 0 603 54 768 170
+v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 1536c424 0 768 -115 768 -256v-128c0 -141 -344 -256 -768 -256s-768 115 -768 256v128c0 141 344 256 768 256z" />
+ <glyph glyph-name="user-circle-o" unicode="&#xf2be;" horiz-adv-x="1792"
+d="M896 1536c495 0 896 -401 896 -896c0 -492 -399 -896 -896 -896c-496 0 -896 403 -896 896c0 495 401 896 896 896zM1515 185c93 128 149 285 149 455c0 423 -345 768 -768 768s-768 -345 -768 -768c0 -170 56 -327 149 -455c36 179 123 327 306 327
+c81 -79 191 -128 313 -128s232 49 313 128c183 0 270 -148 306 -327zM1280 832c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
+ <glyph glyph-name="hacker-news" unicode="&#xf1d4;"
+d="M809 532l266 499h-112l-157 -312s-24 -48 -44 -92c-19 46 -42 92 -42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="edge" unicode="&#xf282;" horiz-adv-x="1654"
+d="M0 741h1c52 414 335 796 841 795c307 0 560 -144 708 -409c76 -137 104 -283 104 -442v-188h-1125c5 -464 682 -448 974 -244v-377c-171 -103 -557 -192 -858 -77c-255 98 -433 363 -436 621c-4 333 165 554 436 680c-57 -72 -101 -150 -124 -285h635
+c37 379 -359 379 -359 379c-374 -13 -644 -231 -797 -453z" />
+ <glyph glyph-name="calendar-plus-o" unicode="&#xf271;" horiz-adv-x="1664"
+d="M1536 1280c70 0 128 -58 128 -128v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128zM1152 1376v-288
+c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM384 1376v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM1536 -128v1024h-1408v-1024h1408zM896 448h224
+c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v224c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-224z" />
+ <glyph glyph-name="hand-lizard-o" unicode="&#xf258;" horiz-adv-x="2048"
+d="M1151 1536c81 0 159 -39 207 -105l572 -781c77 -104 118 -229 118 -359v-355c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v177l-286 143h-546c-106 0 -192 86 -192 192v32c0 159 129 288 288 288h420l42 128h-686c-133 0 -244 102 -255 234
+c-42 51 -65 116 -65 182v32c0 106 86 192 192 192h959zM1920 -64v355c0 101 -33 202 -93 284l-573 781c-24 32 -62 52 -103 52h-959c-35 0 -64 -29 -64 -64c0 -53 1 -90 36 -133c13 41 50 69 92 69h832v-32h-832c-35 0 -64 -29 -64 -64c0 -19 -1 -39 3 -58
+c11 -59 65 -102 125 -102h731c53 0 96 -43 96 -96c0 -10 -2 -21 -5 -30l-64 -192c-13 -39 -50 -66 -91 -66h-443c-88 0 -160 -72 -160 -160v-32c0 -35 29 -64 64 -64h561c10 0 20 -2 29 -7l317 -158c32 -17 53 -50 53 -86v-197c0 -35 29 -64 64 -64h384c35 0 64 29 64 64z
+" />
+ <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408"
+d="M597 869c0 0 -10 -17 -257 -456c-13 -22 -30 -46 -65 -46h-239c-14 0 -25 7 -31 17s-7 23 0 36l253 448c1 0 1 0 0 1l-161 279c-7 13 -8 27 -1 37c6 10 18 15 32 15h239c36 0 54 -24 66 -45c163 -285 164 -286 164 -286zM1403 1511c7 -10 7 -24 0 -37l-528 -934
+c-1 0 -1 -1 0 -1l336 -615c7 -13 7 -27 1 -37c-7 -10 -18 -15 -32 -15h-239c-36 0 -55 24 -66 45c-339 621 -339 622 -339 622s17 30 531 942c13 23 28 45 64 45h241c14 0 25 -5 31 -15z" />
+ <glyph glyph-name="youtube-square" unicode="&#xf166;"
+d="M919 233v157c0 33 -10 50 -29 50c-11 0 -22 -5 -33 -16v-224c11 -11 22 -16 33 -16c19 0 29 16 29 49zM1103 355h66v34c0 34 -11 51 -33 51s-33 -17 -33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40c-26 -30 -51 -45 -76 -45
+c-21 0 -36 9 -42 28c-4 11 -6 28 -6 54v290h66v-270c0 -15 0 -24 1 -26c1 -10 6 -15 15 -15c14 0 27 10 42 31v280h67zM985 384v-146c0 -33 -2 -58 -7 -73c-8 -28 -26 -42 -53 -42c-23 0 -46 14 -68 41v-36h-67v493h67v-161c21 26 44 40 68 40c27 0 45 -14 53 -42
+c5 -15 7 -39 7 -74zM1236 255v-9c0 -22 -1 -36 -2 -43c-2 -15 -7 -28 -15 -40c-18 -27 -46 -40 -80 -40c-35 0 -62 13 -81 38c-14 18 -21 47 -21 86v129c0 39 6 67 20 86c19 25 46 38 80 38c33 0 60 -13 78 -38c14 -19 21 -47 21 -86v-76h-133v-65c0 -34 11 -51 34 -51
+c16 0 26 9 30 26c0 4 1 19 1 45h68zM785 1079v-156c0 -34 -11 -51 -32 -51c-22 0 -32 17 -32 51v156c0 34 10 52 32 52c21 0 32 -18 32 -52zM1318 366c0 86 0 177 -19 260c-14 59 -62 102 -119 108c-136 15 -274 15 -412 15c-137 0 -275 0 -411 -15
+c-58 -6 -106 -49 -119 -108c-19 -83 -20 -174 -20 -260c0 -85 0 -176 20 -260c13 -58 61 -101 118 -108c137 -15 275 -15 412 -15s275 0 412 15c57 7 105 50 118 108c20 84 20 175 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78c15 -46 32 -92 47 -138
+c24 -70 39 -122 46 -158v-201h74v201zM852 936v130c0 39 -7 68 -21 87c-19 25 -45 38 -78 38c-34 0 -60 -13 -78 -38c-14 -19 -21 -48 -21 -87v-130c0 -39 7 -68 21 -87c18 -25 44 -38 78 -38c33 0 59 13 78 38c14 18 21 48 21 87zM1033 816h67v370h-67v-283
+c-15 -21 -29 -31 -42 -31c-9 0 -15 5 -16 16c-1 2 -1 10 -1 26v272h-67v-293c0 -26 2 -43 6 -55c7 -18 22 -27 43 -27c25 0 50 15 77 45v-40zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
+c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="taxi" unicode="&#xf1ba;" horiz-adv-x="2048"
+d="M1824 640c124 0 224 -100 224 -224v-384c0 -18 -14 -32 -32 -32h-96v-64c0 -106 -86 -192 -192 -192s-192 86 -192 192v64h-1024v-64c0 -106 -86 -192 -192 -192s-192 86 -192 192v64h-96c-18 0 -32 14 -32 32v384c0 124 100 224 224 224h28l105 419
+c31 126 153 221 283 221h128v224c0 18 14 32 32 32h448c18 0 32 -14 32 -32v-224h128c130 0 252 -95 283 -221l105 -419h28zM320 160c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM516 640h1016l-89 357c-3 11 -23 27 -35 27h-768
+c-12 0 -32 -16 -35 -27zM1728 160c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160z" />
+ <glyph glyph-name="sort-desc" unicode="&#xf0dd;" horiz-adv-x="1024"
+d="M1024 448c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1632"
+d="M1408 1088c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1632 1376c0 -332 -92 -553 -329 -791c-58 -57 -124 -116 -195 -176l-20 -379c-1 -10 -7 -20 -16 -26l-384 -224c-5 -3 -10 -4 -16 -4c-8 0 -16 3 -23 9l-64 64c-8 9 -11 21 -8 32l85 276
+l-281 281l-276 -85c-3 -1 -6 -1 -9 -1c-8 0 -17 3 -23 9l-64 64c-10 11 -12 27 -5 39l224 384c6 9 16 15 26 16l379 20c60 71 119 137 176 195c250 249 441 329 789 329c18 0 34 -14 34 -32z" />
+ <glyph glyph-name="discord" unicode="&#xf2ee;"
+d="M180 1516v0h1176c99 0 180 -81 180 -181v-1575l-189 167l-106 98l-112 105l46 -163h-995c-99 0 -180 81 -180 181v1187c0 100 81 181 180 181zM634 1107c0 0 -121 3 -247 -92c0 0 -126 -229 -126 -512c0 0 73 -128 267 -134c0 0 33 40 59 73c-111 33 -153 104 -153 104
+s8 -6 24 -15c1 -1 2 -2 4 -3c3 -2 5 -2 8 -4c22 -12 44 -22 64 -30c36 -14 79 -28 129 -38c66 -12 143 -17 227 -1c41 7 83 20 127 38c31 11 65 28 101 52c0 0 -44 -73 -159 -105c26 -33 58 -71 58 -71c194 6 269 134 269 134c0 283 -127 512 -127 512
+c-126 95 -246 92 -246 92l-12 -14c149 -46 218 -112 218 -112c-91 50 -181 75 -264 85c-63 7 -123 5 -177 -2c-5 0 -10 -1 -15 -2c-31 -3 -106 -14 -200 -55c-32 -15 -51 -26 -51 -26s72 69 230 115zM609 779c50 0 91 -43 90 -97c0 -54 -40 -98 -90 -98c-49 0 -89 44 -89 98
+s39 97 89 97zM930 779c50 0 89 -43 89 -97s-39 -98 -89 -98c-49 0 -90 44 -90 98s40 97 90 97z" />
+ <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920"
+d="M768 384h384v96h-128v448h-114l-148 -137l77 -80c24 21 39 32 55 57h2v-288h-128v-96zM1280 640c0 -182 -110 -416 -320 -416s-320 234 -320 416s110 416 320 416s320 -234 320 -416zM1792 384v512c-141 0 -256 115 -256 256h-1152c0 -141 -115 -256 -256 -256v-512
+c141 0 256 -115 256 -256h1152c0 141 115 256 256 256zM1920 1216v-1152c0 -35 -29 -64 -64 -64h-1792c-35 0 -64 29 -64 64v1152c0 35 29 64 64 64h1792c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920"
+d="M416 256c-88 0 -160 72 -160 160v704c0 88 72 160 160 160h1088c88 0 160 -72 160 -160v-704c0 -88 -72 -160 -160 -160h-1088zM384 1120v-704c0 -17 15 -32 32 -32h1088c17 0 32 15 32 32v704c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32zM1760 192h160v-96
+c0 -53 -72 -96 -160 -96h-1600c-88 0 -160 43 -160 96v96h1760zM1040 96c9 0 16 7 16 16s-7 16 -16 16h-160c-9 0 -16 -7 -16 -16s7 -16 16 -16h160z" />
+ <glyph glyph-name="arrows-alt" unicode="&#xf0b2;"
+d="M1283 995l-355 -355l355 -355l144 144c18 19 46 24 70 14c23 -10 39 -33 39 -59v-448c0 -35 -29 -64 -64 -64h-448c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l144 144l-355 355l-355 -355l144 -144c19 -18 24 -46 14 -69c-10 -24 -33 -40 -59 -40h-448
+c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l144 -144l355 355l-355 355l-144 -144c-12 -12 -28 -19 -45 -19c-8 0 -17 2 -24 5c-24 10 -40 33 -40 59v448c0 35 29 64 64 64h448c26 0 49 -16 59 -40c10 -23 5 -51 -14 -69l-144 -144l355 -355l355 355
+l-144 144c-19 18 -24 46 -14 69c10 24 33 40 59 40h448c35 0 64 -29 64 -64v-448c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 7 -45 19z" />
+ <glyph glyph-name="thermometer-empty" unicode="&#xf2cb;" horiz-adv-x="1024"
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 105 85 192 192 192s192 -88 192 -192zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320s320 143 320 320zM896 192
+c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
+ <glyph glyph-name="underline" unicode="&#xf0cd;"
+d="M48 1313c-18 1 -33 1 -45 4l-3 88c13 1 26 1 40 1c35 0 73 -1 112 -4c94 -5 150 -7 166 -7c57 0 113 1 168 3c54 2 103 4 146 5c42 0 71 1 86 2l-1 -14l2 -64v-9c-40 -6 -81 -9 -124 -9c-40 0 -66 -8 -79 -25c-9 -10 -13 -54 -13 -132c0 -24 1 -43 1 -58l1 -229l14 -280
+c4 -81 20 -148 51 -202c23 -39 55 -70 96 -92c60 -32 119 -47 177 -47c68 0 132 9 191 28c35 11 68 27 99 51c31 23 53 44 65 64c26 40 43 79 53 114c14 49 21 125 21 229c0 179 -13 184 -28 410l-4 59c-3 43 -10 73 -24 88c-22 23 -48 35 -77 34l-100 -2l-14 3l2 86h84
+l205 -10c68 -3 133 3 196 10l18 -2c4 -25 6 -42 6 -51s-2 -19 -4 -31c-27 -7 -55 -12 -84 -13c-47 -7 -74 -12 -79 -17c-9 -9 -15 -22 -15 -41c0 -13 2 -33 3 -58c0 0 8 -18 22 -396c5 -151 -5 -253 -15 -304s-24 -92 -41 -122c-26 -44 -64 -85 -112 -123
+c-49 -37 -109 -67 -182 -89s-158 -33 -255 -33c-110 0 -205 15 -284 46s-139 72 -179 122s-68 115 -83 195c-11 55 -16 134 -16 237v333c0 126 -6 197 -17 213c-16 23 -65 37 -147 39zM1536 -96c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h1472
+c18 0 32 -14 32 -32v-64z" />
+ <glyph glyph-name="sun-o" unicode="&#xf185;" horiz-adv-x="1707"
+d="M1430 640c0 318 -258 576 -576 576s-576 -258 -576 -576s258 -576 576 -576s576 258 576 576zM1706 363c-3 -10 -11 -17 -20 -20l-292 -96v-306c0 -10 -5 -20 -13 -26c-9 -6 -19 -8 -29 -4l-292 94l-180 -248c-6 -8 -16 -13 -26 -13s-20 5 -26 13l-180 248l-292 -94
+c-10 -4 -20 -2 -29 4c-8 6 -13 16 -13 26v306l-292 96c-9 3 -17 10 -20 20s-2 21 4 29l180 248l-180 248c-6 9 -7 19 -4 29s11 17 20 20l292 96v306c0 10 5 20 13 26c9 6 19 8 29 4l292 -94l180 248c12 16 40 16 52 0l180 -248l292 94c10 4 20 2 29 -4c8 -6 13 -16 13 -26
+v-306l292 -96c9 -3 17 -10 20 -20s2 -20 -4 -29l-180 -248l180 -248c6 -8 7 -19 4 -29z" />
+ <glyph glyph-name="activitypub" unicode="&#xf2f2;" horiz-adv-x="2032"
+d="M924 1280v-1280l-185 107v853l-739 -427v214zM1109 1280l923 -533v-214l-923 -533v213l739 427l-739 427v213zM1109 853l369 -213l-369 -213v426zM554 640v-427l-369 214z" />
+ <glyph glyph-name="share-square-o" unicode="&#xf045;" horiz-adv-x="1664"
+d="M1408 547v-259c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h255c17 0 32 -14 32 -32c0 -16 -11 -29 -26 -32c-50 -17 -95 -37 -133 -60c-5 -2 -10 -4 -16 -4h-112c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832
+c88 0 160 72 160 160v214c0 12 7 23 18 29c20 9 38 22 54 37c9 9 23 13 35 8s21 -16 21 -29zM1645 1043l-384 -384c-12 -13 -28 -19 -45 -19c-8 0 -17 2 -25 5c-23 10 -39 33 -39 59v192h-160c-220 0 -360 -42 -438 -131c-81 -93 -105 -243 -74 -473c2 -14 -7 -28 -20 -34
+c-4 -1 -8 -2 -12 -2c-10 0 -20 5 -26 13c-7 10 -166 235 -166 435c0 268 84 576 736 576h160v192c0 26 16 49 39 59c8 3 17 5 25 5c17 0 33 -7 45 -19l384 -384c25 -25 25 -65 0 -90z" />
+ <glyph glyph-name="street-view" unicode="&#xf21d;" horiz-adv-x="1408"
+d="M1408 0c0 -176 -365 -256 -704 -256s-704 80 -704 256c0 136 203 200 373 229c35 6 68 -17 74 -52s-17 -68 -52 -74c-206 -36 -264 -92 -267 -104c10 -34 202 -127 576 -127s566 93 576 129c-3 10 -61 66 -267 102c-35 6 -58 39 -52 74s39 58 74 52
+c170 -29 373 -93 373 -229zM1024 896v-384c0 -35 -29 -64 -64 -64h-64v-384c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v384h-64c-35 0 -64 29 -64 64v384c0 71 57 128 128 128h384c71 0 128 -57 128 -128zM928 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224
+s100 224 224 224s224 -100 224 -224z" />
+ <glyph glyph-name="arrow-circle-up" unicode="&#xf0aa;"
+d="M1284 641c0 17 -6 33 -18 45l-362 362l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-91 -91l-362 -362c-12 -12 -18 -28 -18 -45s6 -33 18 -45l91 -91c12 -12 28 -18 45 -18s33 6 45 18l189 189v-502c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v502l189 -189
+c12 -12 28 -19 45 -19s33 7 45 19l91 91c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="podcast" unicode="&#xf2ce;"
+d="M994 344c0 -66 -7 -132 -17 -197c-15 -104 -30 -211 -55 -313c-18 -73 -86 -90 -152 -90s-134 17 -152 90c-25 102 -40 209 -55 313c-10 65 -17 131 -17 197c0 135 109 168 224 168s224 -33 224 -168zM1536 768c0 -324 -200 -601 -484 -714c-11 -4 -23 6 -21 18
+c3 21 6 43 10 66c2 16 4 32 6 47c1 6 4 10 9 12c208 106 352 322 352 571c0 365 -306 659 -675 639c-338 -18 -607 -306 -605 -644c2 -249 147 -464 356 -568c5 -2 8 -7 9 -12c2 -14 4 -29 6 -45c4 -24 7 -46 11 -68c2 -12 -11 -22 -22 -17c-297 116 -504 412 -487 753
+c19 387 331 704 718 728c446 28 817 -326 817 -766zM994 800c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224zM1282 768c0 -165 -79 -313 -200 -406c-10 -8 -24 -1 -26 12c-3 28 -11 61 -29 92c-4 6 -3 14 3 20c76 70 124 170 124 282
+c0 226 -197 407 -428 382c-177 -20 -321 -166 -338 -344c-13 -126 37 -242 122 -320c6 -6 7 -14 3 -20c-18 -31 -26 -64 -29 -93c-2 -12 -16 -19 -26 -11c-124 96 -203 247 -200 417c6 266 222 488 487 500c294 14 537 -220 537 -511z" />
+ <glyph glyph-name="plus-square" unicode="&#xf0fe;"
+d="M1280 576v128c0 35 -29 64 -64 64h-320v320c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-320h-320c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h320v-320c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v320h320c35 0 64 29 64 64zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920"
+d="M1792 544v832c0 17 -15 32 -32 32h-1600c-17 0 -32 -15 -32 -32v-832c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32zM1920 1376v-1088c0 -88 -72 -160 -160 -160h-544c0 -85 64 -157 64 -192s-29 -64 -64 -64h-512c-35 0 -64 29 -64 64c0 37 64 105 64 192h-544
+c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="expeditedssl" unicode="&#xf23e;" horiz-adv-x="1792"
+d="M896 1472c-459 0 -832 -373 -832 -832s373 -832 832 -832s832 373 832 832s-373 832 -832 832zM896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM496 704c9 0 16 -7 16 -16v-480c0 -9 -7 -16 -16 -16h-32c-9 0 -16 7 -16 16
+v480c0 9 7 16 16 16h32zM896 640c71 0 128 -57 128 -128c0 -47 -26 -88 -64 -110v-114c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v114c-38 22 -64 63 -64 110c0 71 57 128 128 128zM896 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768
+s344 768 768 768zM544 928v-96c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v96c0 124 100 224 224 224s224 -100 224 -224v-96c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v96c0 194 -158 352 -352 352s-352 -158 -352 -352zM1408 192v512c0 35 -29 64 -64 64h-896
+c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h896c35 0 64 29 64 64z" />
+ <glyph glyph-name="toggle-on" unicode="&#xf205;" horiz-adv-x="2048"
+d="M0 640c0 353 287 640 640 640h768c353 0 640 -287 640 -640s-287 -640 -640 -640h-768c-353 0 -640 287 -640 640zM1408 128c282 0 512 230 512 512s-230 512 -512 512s-512 -230 -512 -512s230 -512 512 -512z" />
+ <glyph glyph-name="minus-square" unicode="&#xf146;"
+d="M1280 576v128c0 35 -29 64 -64 64h-896c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h896c35 0 64 29 64 64zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="adn" unicode="&#xf170;"
+d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="whatsapp" unicode="&#xf232;"
+d="M985 562c17 0 180 -85 187 -97c2 -5 2 -11 2 -15c0 -25 -8 -53 -17 -76c-23 -56 -116 -92 -173 -92c-48 0 -147 42 -190 62c-143 65 -232 176 -318 303c-38 56 -72 125 -71 194v8c2 66 26 113 74 158c15 14 31 22 52 22c12 0 24 -3 37 -3c27 0 32 -8 42 -34
+c7 -17 58 -153 58 -163c0 -38 -69 -81 -69 -104c0 -5 2 -10 5 -15c22 -47 64 -101 102 -137c46 -44 95 -73 151 -101c7 -4 14 -7 22 -7c30 0 80 97 106 97zM782 32c346 0 628 282 628 628s-282 628 -628 628s-628 -282 -628 -628c0 -132 42 -261 120 -368l-79 -233l242 77
+c102 -67 223 -104 345 -104zM782 1414c416 0 754 -338 754 -754s-338 -754 -754 -754c-127 0 -253 32 -365 94l-417 -134l136 405c-71 117 -108 252 -108 389c0 416 338 754 754 754z" />
+ <glyph glyph-name="puzzle-piece" unicode="&#xf12e;" horiz-adv-x="1664"
+d="M1664 438c0 -103 -59 -189 -168 -189c-122 0 -154 111 -264 111c-80 0 -110 -50 -110 -124c0 -78 32 -153 31 -230v-5c-11 0 -22 0 -33 -1c-103 -10 -207 -30 -311 -30c-71 0 -145 28 -145 110c0 110 111 142 111 264c0 109 -86 168 -189 168c-105 0 -202 -58 -202 -173
+c0 -127 97 -182 97 -251c0 -35 -22 -66 -46 -89c-31 -29 -75 -35 -117 -35c-82 0 -164 11 -245 24c-18 3 -37 5 -55 8l-13 2c-2 1 -5 1 -5 2v1024c4 -3 63 -10 73 -12c81 -13 163 -24 245 -24c42 0 86 6 117 35c24 23 46 54 46 89c0 69 -97 124 -97 251
+c0 115 97 173 203 173c102 0 188 -59 188 -168c0 -122 -111 -154 -111 -264c0 -82 74 -110 145 -110c115 0 229 26 343 32v-2c-3 -4 -10 -63 -12 -73c-13 -81 -24 -163 -24 -245c0 -42 6 -86 35 -117c23 -24 54 -46 89 -46c69 0 124 97 251 97c115 0 173 -97 173 -202z" />
+ <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1768"
+d="M263 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+ <glyph glyph-name="skyatlas" unicode="&#xf216;" horiz-adv-x="2048"
+d="M1430 953c0 0 -1 1 0 0zM1690 749c194 0 358 -145 358 -343c0 -211 -168 -366 -376 -366c-531 0 -629 799 -1151 799c-202 0 -349 -129 -349 -336c0 -214 160 -343 367 -343c136 0 291 57 401 136c18 13 54 52 73 52s35 -16 35 -35c0 -25 -42 -61 -60 -77
+c-131 -114 -321 -196 -495 -196c-267 0 -493 189 -493 464s216 477 489 477c593 0 712 -787 1158 -787c134 0 235 87 235 224c0 127 -98 223 -224 223c-56 0 -112 -37 -150 -37c-27 0 -51 23 -51 50c0 37 17 76 17 116c0 213 -163 367 -374 367c-170 0 -256 -118 -284 -118
+c-20 0 -36 16 -36 36c0 18 13 33 25 46c81 92 207 140 329 140c254 0 445 -187 445 -441c0 -22 -1 -44 -4 -66c38 10 77 15 115 15z" />
+ <glyph glyph-name="level-down" unicode="&#xf149;" horiz-adv-x="1024"
+d="M32 1280h704c18 0 32 -15 32 -33v-863h192c25 0 47 -15 58 -37c11 -23 7 -50 -9 -69l-320 -384c-24 -29 -74 -29 -98 0l-320 384c-16 19 -19 46 -9 69c11 22 33 37 58 37h192v640h-320c-9 0 -18 4 -25 11l-160 192c-8 9 -9 23 -4 34s17 19 29 19z" />
+ <glyph glyph-name="stack-overflow" unicode="&#xf16c;" horiz-adv-x="1514"
+d="M1278 -96v480h160v-640h-1438v640h160v-480h1118zM336 428l33 157l783 -165l-33 -156zM439 802l67 146l725 -339l-67 -145zM640 1158l102 123l614 -513l-102 -123zM1037 1536l477 -641l-128 -96l-477 641zM319 65v159h800v-159h-800z" />
+ <glyph glyph-name="check-square-o" unicode="&#xf046;" horiz-adv-x="1663"
+d="M1408 606v-318c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c40 0 80 -8 117 -25c9 -4 16 -13 18 -23c2 -11 -1 -21 -9 -29l-49 -49c-6 -6 -15 -10 -23 -10c-3 0 -6 1 -9 2c-15 4 -30 6 -45 6h-832
+c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v254c0 8 3 16 9 22l64 64c7 7 15 10 23 10c4 0 8 -1 12 -3c12 -5 20 -16 20 -29zM1639 1095l-814 -814c-32 -32 -82 -32 -114 0l-430 430c-32 32 -32 82 0 114l110 110c32 32 82 32 114 0
+l263 -263l647 647c32 32 82 32 114 0l110 -110c32 -32 32 -82 0 -114z" />
+ <glyph glyph-name="hand-spock-o" unicode="&#xf259;" horiz-adv-x="1920"
+d="M459 -256c-103 0 -192 70 -217 170l-101 401c-8 35 -13 72 -13 108c0 23 0 45 -5 67l-116 477c-5 19 -7 38 -7 57c0 124 94 226 217 239c22 113 119 193 235 193c111 0 207 -76 233 -184l83 -348l103 428c26 108 122 184 233 184c119 0 217 -86 236 -202
+c123 -14 212 -118 212 -241c0 -19 -3 -39 -7 -59l-123 -512c80 60 138 118 243 118c139 0 255 -113 255 -253c0 -84 -41 -162 -107 -212l-507 -380c-44 -33 -98 -51 -153 -51h-694zM1104 1408c-51 0 -96 -36 -108 -86l-164 -682h-127l-145 602c-12 50 -57 86 -108 86
+c-64 0 -112 -51 -112 -113c0 -10 1 -19 3 -28l132 -547h-26l-99 408c-12 49 -57 88 -109 88c-62 0 -113 -50 -113 -112c0 -9 1 -18 3 -26l116 -478c14 -58 4 -116 19 -174l100 -401c11 -43 49 -73 93 -73h694c27 0 54 9 76 26l507 379c34 26 56 67 56 110
+c0 70 -58 125 -127 125c-28 0 -55 -9 -77 -26l-307 -230v227c0 8 129 538 139 581c2 9 4 19 4 29c0 62 -47 115 -111 115c-52 0 -97 -36 -109 -86l-116 -482h-26l150 624c2 9 3 19 3 28c0 63 -46 116 -111 116z" />
+ <glyph glyph-name="scuttlebutt" unicode="&#xf2ea;" horiz-adv-x="1709"
+d="M760 -126c-31 4 -114 28 -131 38c-5 3 -12 10 -16 16l-8 10l-7 -5c-14 -9 -14 -9 -151 60c-70 36 -134 68 -141 71c-21 10 -30 25 -45 74c-5 17 -6 19 -12 21c-18 7 -84 50 -121 78c-27 21 -66 60 -70 70c-10 25 -31 91 -37 112c-18 60 -21 88 -21 178c0 60 0 68 4 76
+c5 11 24 29 46 43c29 19 128 68 192 96l8 4l-4 8c-3 5 -16 24 -29 42l-24 33h-10c-21 1 -28 3 -48 16s-21 13 -39 41c-56 87 -91 163 -95 205c-4 46 23 129 52 160c9 9 17 16 28 22c16 8 17 8 40 8c19 0 25 -1 35 -5c27 -11 44 -29 49 -50c2 -11 2 -17 -1 -43
+c-9 -68 -1 -127 21 -163c4 -6 16 -19 28 -29c19 -17 38 -37 38 -43c0 -7 4 -1 11 15c9 23 70 138 78 148l5 8l-2 25c-8 86 -8 113 0 139c5 18 16 33 31 39c26 12 96 16 121 8c15 -5 28 -14 35 -26c5 -7 6 -12 7 -27l1 -18l52 8c71 11 95 16 116 24c26 10 38 13 57 13
+c29 0 45 -6 104 -37c137 -72 176 -97 219 -139c24 -23 28 -31 49 -73c17 -34 19 -37 38 -57l20 -21l23 6c28 8 37 8 49 2c10 -5 22 -21 22 -29c0 -2 4 -9 9 -16c7 -10 24 -34 39 -58c0 0 6 1 12 3c13 5 27 6 38 1c4 -2 17 -10 28 -19c11 -8 20 -15 21 -15s12 -7 25 -15
+c13 -9 27 -17 32 -18s14 -6 20 -9c13 -8 27 -10 64 -13c15 -1 31 -4 35 -5c18 -5 46 -31 55 -51c8 -18 5 -43 -9 -65c-4 -6 -18 -21 -30 -33s-23 -23 -24 -26s1 -24 4 -47c8 -67 4 -101 -13 -127c-8 -12 -29 -26 -59 -40c-13 -6 -24 -13 -27 -15s-8 -14 -12 -26
+c-9 -26 -17 -44 -26 -54c-8 -10 -10 -18 -13 -57c-4 -53 -10 -71 -37 -99c-20 -21 -37 -29 -70 -39c-11 -3 -49 -16 -85 -28c-35 -12 -66 -22 -68 -22s-6 -5 -9 -11c-14 -25 -33 -48 -63 -75c-48 -43 -116 -83 -163 -97c-9 -3 -16 -7 -24 -14c-43 -38 -88 -56 -154 -62
+c-28 -2 -42 -3 -63 0zM820 -67c13 1 31 5 41 7c18 4 49 17 49 20c0 1 -9 6 -20 12s-37 22 -56 36c-70 48 -117 94 -124 121c-9 35 -9 157 1 321c2 29 3 52 2 53c-3 3 -131 99 -131 99c-2 -2 -20 -148 -25 -210c-5 -54 -7 -145 -4 -170c3 -21 10 -46 32 -105
+c24 -66 44 -109 63 -139l9 -14l26 -8c44 -15 83 -25 104 -25c5 0 20 1 33 2zM559 26c-15 35 -29 69 -47 122c-14 40 -15 45 -17 70c-6 75 4 212 26 365c4 29 7 55 7 57c0 3 -11 12 -33 28c-30 22 -50 32 -58 32c-5 0 -83 -100 -120 -153c-34 -49 -63 -103 -68 -122
+c-2 -10 42 -188 64 -258c16 -52 -1 -38 137 -108l120 -60s-5 12 -11 27zM988 8c27 8 80 38 113 63c21 16 45 38 44 39c-1 0 -24 -2 -51 -6c-28 -4 -58 -7 -68 -7c-45 0 -82 18 -99 48c-8 14 -22 51 -31 82c-7 24 -8 30 -9 64c-1 30 -3 43 -7 59c-6 22 -18 48 -26 55
+c-9 8 -48 36 -57 40c-5 2 -13 7 -18 10l-9 6l-1 -10c-4 -31 -7 -124 -7 -206c0 -107 -2 -99 22 -123c49 -49 155 -116 185 -117c4 0 13 1 19 3zM1086 191c27 4 59 9 71 11c31 6 92 24 138 41c22 8 49 17 61 20c39 11 51 21 55 44c1 8 2 8 -3 7c-48 -15 -87 -22 -143 -24
+c-94 -4 -148 8 -226 46c-23 12 -57 33 -74 47c-5 4 -9 7 -9 7s3 -13 6 -27c5 -20 7 -33 8 -62c2 -39 6 -57 22 -97c6 -14 7 -16 13 -18c12 -4 31 -2 81 5zM232 241c-1 2 -10 37 -20 78s-19 77 -20 79c-4 8 -3 30 3 48c18 54 75 143 164 253c11 13 19 25 19 26
+c0 3 -40 24 -53 27c-7 2 -20 6 -27 9c-13 5 -14 5 -22 1c-4 -2 -28 -13 -53 -24c-76 -34 -138 -68 -159 -84l-7 -5l1 -71c1 -78 3 -88 17 -138c6 -20 26 -79 36 -106c3 -8 33 -36 58 -55c20 -15 62 -42 64 -42c0 0 0 2 -1 4v0zM1306 380c32 4 65 11 87 20c16 7 40 20 47 27
+c5 5 12 18 11 20l-24 -2c-44 -4 -92 -5 -118 -2c-32 3 -55 10 -86 26c-59 29 -105 72 -127 117c-11 23 -13 31 -13 52c0 63 43 117 183 229c22 17 40 32 41 33c0 1 -7 14 -17 29l-18 28l-11 2c-11 2 -13 2 -44 -8c-41 -14 -52 -16 -104 -22c-23 -2 -48 -7 -55 -9
+c-17 -5 -40 -21 -57 -39c-19 -20 -75 -92 -90 -116c-19 -29 -19 -33 -11 -52c4 -9 13 -27 20 -41s16 -33 20 -43c6 -16 9 -25 23 -88c7 -34 14 -49 32 -69c31 -33 75 -60 131 -80c49 -17 105 -20 180 -12zM889 488c0 0 -1 6 -3 12s-6 26 -10 44c-8 41 -14 58 -29 86
+c-16 31 -34 71 -37 83c-3 14 1 37 9 58c10 24 35 62 74 111c54 68 87 98 126 115c19 8 40 13 80 17c18 2 35 4 38 5c5 1 5 1 -2 9c-11 13 -23 33 -36 62c-10 22 -16 31 -26 42c-29 31 -63 54 -150 100c-35 18 -68 36 -73 39c-14 9 -36 17 -46 17c-5 0 -19 -4 -31 -9
+c-25 -10 -61 -17 -144 -30c-29 -5 -53 -9 -54 -9c-3 -3 -2 -38 1 -62c7 -50 24 -108 42 -142c9 -18 10 -29 4 -39c-5 -8 -27 -28 -34 -31c-9 -4 -12 -25 -11 -72c0 -33 0 -38 6 -57c9 -29 14 -67 13 -106l-1 -32l86 -65c112 -84 134 -100 153 -111c9 -5 24 -15 34 -22
+c16 -12 21 -15 21 -13zM1392 530c61 4 104 12 148 30l26 11v13c1 12 -2 47 -4 49c0 1 -6 -1 -10 -3c-22 -12 -53 -16 -74 -9c-34 12 -72 52 -86 90c-5 13 -5 18 -4 34s1 21 7 34c8 18 25 39 39 51c6 5 11 9 11 10s-3 3 -7 4c-4 2 -14 8 -22 14l-14 11l-19 -16
+c-10 -9 -37 -32 -61 -51c-70 -55 -85 -67 -114 -98c-24 -24 -29 -32 -36 -46c-7 -13 -6 -18 -4 -28c10 -26 42 -57 80 -77c44 -24 66 -28 144 -23zM1533 717c27 16 74 54 62 49c-2 -1 -9 -2 -16 -3c-15 -1 -28 5 -38 17c-6 8 -8 8 -15 6c-18 -5 -43 -23 -51 -36
+c-4 -7 -5 -9 -2 -15c1 -4 8 -12 14 -19c11 -11 12 -12 20 -11c5 1 17 6 26 12zM525 805c-4 36 -5 39 -38 113c-9 21 -11 22 -17 22c-8 0 -16 4 -23 11c-3 3 -13 28 -23 55c-13 36 -18 48 -19 46c-4 -5 -29 -57 -35 -72c-10 -27 -13 -43 -19 -90c-4 -25 -7 -48 -7 -50
+c0 -3 5 -4 15 -7c8 -2 18 -7 23 -10s14 -7 20 -11s16 -10 21 -13s24 -10 41 -16c23 -8 35 -14 47 -22l16 -11v11c0 6 0 26 -2 44zM210 969c12 6 27 21 27 26c0 1 -11 11 -24 23c-40 34 -56 64 -67 125c-5 27 -5 80 0 114c4 24 4 25 0 27c-14 9 -30 11 -43 4
+c-9 -4 -10 -7 -21 -30c-22 -47 -28 -86 -19 -114c10 -32 40 -90 75 -146c26 -41 40 -47 72 -29zM519 1007c20 5 27 8 36 14c2 2 2 6 -4 22c-12 30 -23 69 -29 103c-7 36 -7 79 -3 124c3 27 2 70 -1 73c-5 5 -72 -1 -79 -7c-4 -4 -6 -29 -3 -62c-2 -41 16 -99 14 -134
+c-2 -25 0 -32 22 -93c14 -39 16 -45 20 -45c2 0 15 2 27 5z" />
+ <glyph glyph-name="social-home" unicode="&#xf2ec;" horiz-adv-x="1486"
+d="M491 894h482v-621h-482v621v0zM1050 538h341v-666h-341v666zM91 273v0v620h318v-620h-318zM975 -128h-882v326h882v-326v0zM1053 894h340v-279h-340v279zM1452 1109v0c20 -5 34 -22 34 -44c0 -26 -93 -93 -93 -93h-1300s-87 62 -92 83s5 42 25 51l624 292
+c16 9 99 9 112 0z" />
+ <glyph glyph-name="leanpub" unicode="&#xf212;" horiz-adv-x="2048"
+d="M1893 1144l155 -1272c-93 0 -173 19 -257 57c-125 57 -255 91 -393 91c-142 0 -273 -47 -374 -148c-101 101 -232 148 -374 148c-138 0 -268 -34 -393 -91c-81 -36 -163 -57 -252 -57h-5l155 1272c143 81 317 127 482 127c135 0 274 -28 387 -106c113 78 252 106 387 106
+c165 0 339 -46 482 -127zM1398 157c190 0 320 -51 492 -122l-124 1021c-112 51 -245 78 -368 78c-140 0 -271 -44 -374 -141c-103 97 -234 141 -374 141c-123 0 -256 -27 -368 -78l-124 -1021c172 71 302 122 492 122c137 0 258 -35 374 -108c116 73 237 108 374 108z
+M1438 191l-40 1c-132 3 -261 -32 -374 -102c-113 70 -242 102 -374 102c-166 0 -299 -39 -450 -101l114 941c104 43 224 66 336 66c150 0 269 -48 374 -155c101 103 215 152 359 155z" />
+ <glyph glyph-name="arrow-circle-left" unicode="&#xf0a8;"
+d="M1280 576v128c0 35 -29 64 -64 64h-502l189 189c12 12 19 28 19 45s-7 33 -19 45l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-362 -362l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l91 -91l362 -362c12 -12 28 -18 45 -18s33 6 45 18l91 91c12 12 18 28 18 45
+s-6 33 -18 45l-189 189h502c35 0 64 29 64 64zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="exclamation-triangle" unicode="&#xf071;" horiz-adv-x="1792"
+d="M1024 161v190c0 18 -14 33 -32 33h-192c-18 0 -32 -15 -32 -33v-190c0 -18 14 -33 32 -33h192c18 0 32 15 32 33zM1022 535l18 459c0 6 -3 14 -10 19c-6 5 -15 11 -24 11h-220c-9 0 -18 -6 -24 -11c-7 -5 -10 -15 -10 -21l17 -457c0 -13 15 -23 34 -23h185
+c18 0 33 10 34 23zM1008 1469l768 -1408c22 -39 21 -87 -2 -126s-65 -63 -110 -63h-1536c-45 0 -87 24 -110 63s-24 87 -2 126l768 1408c22 41 65 67 112 67s90 -26 112 -67z" />
+ <glyph glyph-name="gift" unicode="&#xf06b;"
+d="M928 180v716h-320v-716c0 -35 29 -52 64 -52h192c35 0 64 17 64 52zM472 1024h195l-126 161c-11 13 -35 31 -69 31c-53 0 -96 -43 -96 -96s43 -96 96 -96zM1160 1120c0 53 -43 96 -96 96c-34 0 -58 -18 -69 -31l-125 -161h194c53 0 96 43 96 96zM1536 864v-320
+c0 -18 -14 -32 -32 -32h-96v-416c0 -53 -43 -96 -96 -96h-1088c-53 0 -96 43 -96 96v416h-96c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h440c-124 0 -224 100 -224 224s100 224 224 224c67 0 129 -28 168 -77l128 -165l128 165c39 49 101 77 168 77
+c124 0 224 -100 224 -224s-100 -224 -224 -224h440c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920"
+d="M896 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1664 128c0 70 -58 128 -128 128s-128 -58 -128 -128c0 -71 58 -128 128 -128c71 0 128 58 128 128zM1664 1152c0 70 -58 128 -128 128s-128 -58 -128 -128
+c0 -71 58 -128 128 -128c71 0 128 58 128 128zM1280 731v-185c0 -13 -10 -28 -23 -30l-155 -24c-8 -26 -19 -51 -32 -76c28 -40 58 -77 90 -115c4 -6 7 -12 7 -20c0 -7 -2 -14 -7 -19c-20 -27 -132 -149 -161 -149c-8 0 -15 3 -21 7l-115 90c-25 -13 -50 -23 -77 -31
+c-5 -51 -10 -106 -23 -155c-4 -14 -16 -24 -30 -24h-186c-14 0 -28 11 -30 25l-23 153c-26 8 -51 19 -75 31l-118 -89c-5 -5 -13 -7 -20 -7c-8 0 -15 3 -21 8c-26 24 -144 131 -144 160c0 7 3 13 7 19c29 38 59 75 88 114c-14 27 -26 54 -35 82l-152 24c-14 2 -24 15 -24 29
+v185c0 13 10 28 23 30l155 24c8 26 19 51 32 76c-28 40 -58 77 -90 115c-4 6 -7 13 -7 20s2 14 7 20c20 27 132 148 161 148c8 0 15 -3 21 -7l115 -90c25 13 50 23 77 32c5 50 10 105 23 154c4 14 16 24 30 24h186c14 0 28 -11 30 -25l23 -153c26 -8 51 -19 75 -31l118 89
+c6 5 13 7 20 7c8 0 15 -3 21 -8c26 -24 144 -132 144 -160c0 -7 -3 -13 -7 -19c-29 -39 -59 -75 -87 -114c13 -27 25 -54 34 -82l152 -23c14 -3 24 -16 24 -30zM1920 198v-140c0 -15 -129 -29 -149 -31c-8 -19 -18 -36 -30 -52c9 -20 51 -120 51 -138c0 -3 -1 -5 -4 -7
+c-12 -7 -119 -71 -124 -71c-13 0 -88 100 -98 115c-10 -1 -20 -2 -30 -2s-20 1 -30 2c-10 -15 -85 -115 -98 -115c-5 0 -112 64 -124 71c-3 2 -4 5 -4 7c0 17 42 118 51 138c-12 16 -22 33 -30 52c-20 2 -149 16 -149 31v140c0 15 129 29 149 31c8 18 18 36 30 52
+c-9 20 -51 121 -51 138c0 2 1 5 4 7c12 6 119 70 124 70c13 0 88 -99 98 -114c10 1 20 2 30 2s20 -1 30 -2c28 39 58 78 92 112l6 2c5 0 112 -63 124 -70c3 -2 4 -5 4 -7c0 -18 -42 -118 -51 -138c12 -16 22 -34 30 -52c20 -2 149 -16 149 -31zM1920 1222v-140
+c0 -15 -129 -29 -149 -31c-8 -19 -18 -36 -30 -52c9 -20 51 -120 51 -138c0 -3 -1 -5 -4 -7c-12 -7 -119 -71 -124 -71c-13 0 -88 100 -98 115c-10 -1 -20 -2 -30 -2s-20 1 -30 2c-10 -15 -85 -115 -98 -115c-5 0 -112 64 -124 71c-3 2 -4 5 -4 7c0 17 42 118 51 138
+c-12 16 -22 33 -30 52c-20 2 -149 16 -149 31v140c0 15 129 29 149 31c8 18 18 36 30 52c-9 20 -51 121 -51 138c0 2 1 5 4 7c12 6 119 70 124 70c13 0 88 -99 98 -114c10 1 20 2 30 2s20 -1 30 -2c28 39 58 78 92 112l6 2c5 0 112 -63 124 -70c3 -2 4 -5 4 -7
+c0 -18 -42 -118 -51 -138c12 -16 22 -34 30 -52c20 -2 149 -16 149 -31z" />
+ <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792"
+d="M256 96v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM640 224v-320c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1024 480v-576c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1408 864v-960c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v960c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 1376v-1472c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v1472
+c0 18 14 32 32 32h192c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="frown-o" unicode="&#xf119;"
+d="M1134 307c11 -34 -8 -69 -41 -80c-34 -11 -70 8 -81 42c-33 107 -132 179 -244 179s-211 -72 -244 -179c-11 -34 -47 -53 -80 -42c-34 11 -53 46 -42 80c50 161 197 269 366 269s316 -108 366 -269zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768
+s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="opera" unicode="&#xf26a;" horiz-adv-x="1792"
+d="M1493 1308c-105 70 -228 110 -359 110c-213 0 -401 -109 -533 -273c-96 -120 -163 -290 -168 -484v-42c5 -194 72 -364 168 -484c132 -164 320 -273 533 -273c131 0 254 40 359 110c-158 -142 -368 -228 -597 -228c-14 0 -29 0 -43 1c-475 22 -853 414 -853 895
+c0 495 401 896 896 896h3c228 -1 436 -87 594 -228zM1792 640c0 -261 -112 -495 -290 -659c-68 -41 -143 -63 -222 -63c-92 0 -179 30 -255 84c203 74 353 331 353 638c0 306 -149 563 -352 638c76 53 162 83 254 83c81 0 157 -23 226 -65c176 -164 286 -397 286 -656z" />
+ <glyph glyph-name="viadeo" unicode="&#xf2a9;" horiz-adv-x="1278"
+d="M1050 430c0 -143 -50 -269 -147 -374c-101 -110 -229 -161 -378 -161c-148 0 -277 50 -378 161c-97 105 -147 231 -147 374c0 297 224 540 525 540c62 0 124 -10 182 -31c-20 -39 -34 -82 -39 -126c-45 19 -94 28 -143 28c-227 0 -394 -194 -394 -414
+c0 -224 166 -407 394 -407s393 183 393 407c0 57 -10 113 -32 166c44 9 86 26 123 49c28 -67 41 -140 41 -212zM846 619c0 111 -19 221 -55 326c3 -34 3 -69 3 -103c0 -268 -53 -707 -342 -817c20 -3 41 -5 62 -5l14 1c216 136 318 346 318 598zM791 947v-2
+c-52 153 -124 301 -206 440c126 -85 195 -291 206 -438zM1035 744c-62 0 -117 33 -160 75c102 56 231 143 290 247c7 14 19 40 21 56c-58 -130 -206 -232 -344 -264c-22 34 -35 72 -35 113c0 48 24 112 60 147c41 39 102 59 157 74c80 22 145 84 180 159
+c52 -74 74 -164 74 -253c0 -45 -7 -127 -24 -170c-37 -90 -112 -184 -219 -184z" />
+ <glyph glyph-name="battery-empty" unicode="&#xf244;" horiz-adv-x="2304"
+d="M2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856c-18 0 -32 -14 -32 -32v-960
+c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+ <glyph glyph-name="chevron-circle-left" unicode="&#xf137;"
+d="M909 141l102 102c25 25 25 65 0 90l-307 307l307 307c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-454 -454c-25 -25 -25 -65 0 -90l454 -454c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="university" unicode="&#xf19c;" horiz-adv-x="1920"
+d="M960 1536l960 -384v-128h-128c0 -35 -31 -64 -69 -64h-1526c-38 0 -69 29 -69 64h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59c38 0 69 -29 69 -64v-64h-1664v64c0 35 31 64 69 64h59v768zM1851 -64c38 0 69 -29 69 -64v-128
+h-1920v128c0 35 31 64 69 64h1782z" />
+ <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792"
+d="M1792 288v-320c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192h-512v-192h96c53 0 96 -43 96 -96v-320c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192h-512v-192h96c53 0 96 -43 96 -96v-320
+c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192c0 70 58 128 128 128h512v192h-96c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h320c53 0 96 -43 96 -96v-320c0 -53 -43 -96 -96 -96h-96v-192h512c70 0 128 -58 128 -128v-192h96
+c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="wheelchair-alt" unicode="&#xf29b;" horiz-adv-x="1399"
+d="M1370 723c21 -22 32 -52 29 -82l-44 -551c-5 -56 -51 -98 -106 -98c-3 0 -6 0 -9 1c-59 4 -102 56 -98 114l35 429l-143 -8c35 -72 55 -154 55 -240c0 -144 -56 -275 -148 -372l-137 137c56 62 91 145 91 235c0 194 -157 351 -350 351c-91 0 -173 -35 -236 -92l-137 138
+c77 73 175 123 284 141l264 300l-149 87l-181 -161c-44 -40 -111 -36 -150 8s-35 111 8 150l239 213c34 31 84 36 124 12c487 -283 488 -283 488 -283c26 -15 41 -41 48 -68c10 -39 3 -83 -26 -117l-205 -232l371 20c31 2 61 -9 83 -32zM1172 1180c-98 0 -178 79 -178 178
+c0 98 80 178 178 178c99 0 179 -80 179 -178c0 -99 -80 -178 -179 -178zM545 -62c72 0 140 23 196 61l139 -139c-92 -73 -209 -116 -335 -116c-301 0 -545 244 -545 544c0 127 43 243 116 336l139 -139c-38 -56 -60 -124 -60 -197c0 -193 157 -350 350 -350z" />
+ <glyph glyph-name="external-link-square" unicode="&#xf14c;"
+d="M1280 608v480c0 35 -29 64 -64 64h-480c-26 0 -49 -16 -59 -39c-10 -24 -5 -52 14 -70l144 -144l-534 -534c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0l534 534l144 -144c12 -13 28 -19 45 -19c8 0 17 2 25 5c23 10 39 33 39 59zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="google" unicode="&#xf1a0;" horiz-adv-x="1505"
+d="M768 750h725c7 -39 12 -77 12 -128c0 -438 -294 -750 -737 -750c-425 0 -768 343 -768 768s343 768 768 768c207 0 381 -76 515 -201l-209 -201c-57 55 -157 119 -306 119c-262 0 -476 -217 -476 -485s214 -485 476 -485c304 0 418 218 436 331h-436v264z" />
+ <glyph glyph-name="volume-off" unicode="&#xf026;" horiz-adv-x="768"
+d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1576"
+d="M1576 1128c-44 -64 -99 -121 -162 -167c1 -14 1 -28 1 -42c0 -427 -325 -919 -919 -919c-183 0 -353 53 -496 145c26 -3 51 -4 78 -4c151 0 290 51 401 138c-142 3 -261 96 -302 224c20 -3 40 -5 61 -5c29 0 58 4 85 11c-148 30 -259 160 -259 317v4
+c43 -24 93 -39 146 -41c-87 58 -144 157 -144 269c0 60 16 115 44 163c159 -196 398 -324 666 -338c-5 24 -8 49 -8 74c0 178 144 323 323 323c93 0 177 -39 236 -102c73 14 143 41 205 78c-24 -75 -75 -138 -142 -178c65 7 128 25 186 50z" />
+ <glyph glyph-name="battery-full" unicode="&#xf240;" horiz-adv-x="2304"
+d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288c0 18 -14 32 -32 32h-1856c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288zM2304 832v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856
+c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160c71 0 128 -57 128 -128z" />
+ <glyph glyph-name="deaf" unicode="&#xf2a4;" horiz-adv-x="1792"
+d="M1056 704c0 124 -101 224 -224 224s-224 -100 -224 -224c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 194 158 352 352 352s352 -158 352 -352c0 -35 -29 -64 -64 -64s-64 29 -64 64zM835 1280c318 0 576 -258 576 -576c0 -166 -78 -255 -146 -334
+c-63 -72 -113 -129 -113 -242c0 -212 -172 -384 -384 -384c-35 0 -64 29 -64 64s29 64 64 64c141 0 256 115 256 256c0 161 77 249 144 326c62 71 115 132 115 250c0 247 -201 448 -448 448s-448 -201 -448 -448c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 318 258 576 576 576
+zM591 561l226 -226l-579 -579c-16 -16 -42 -16 -58 0l-168 168c-16 16 -16 42 0 58zM1612 1524l168 -168c16 -16 16 -42 0 -59l-233 -233l-26 -25l-71 -71c-43 100 -109 188 -195 258l91 91l207 207c17 16 43 16 59 0z" />
+ <glyph glyph-name="window-close-o" unicode="&#xf2d4;" horiz-adv-x="1792"
+d="M1257 425l-146 -146c-13 -13 -33 -13 -46 0l-169 169l-169 -169c-13 -13 -33 -13 -46 0l-146 146c-13 13 -13 33 0 46l169 169l-169 169c-13 13 -13 33 0 46l146 146c13 13 33 13 46 0l169 -169l169 169c13 13 33 13 46 0l146 -146c13 -13 13 -33 0 -46l-169 -169
+l169 -169c13 -13 13 -33 0 -46zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408"
+d="M1408 296c0 -36 -16 -106 -31 -139c-21 -49 -77 -81 -122 -106c-59 -32 -119 -51 -186 -51c-93 0 -177 38 -262 69c-61 22 -120 49 -175 83c-170 105 -375 310 -480 480c-34 55 -61 114 -83 175c-31 85 -69 169 -69 262c0 67 19 127 51 186c25 45 57 101 106 122
+c33 15 103 31 139 31c7 0 14 0 21 -3c21 -7 43 -56 53 -76c32 -57 63 -115 96 -171c16 -26 46 -58 46 -89c0 -61 -181 -150 -181 -204c0 -27 25 -62 39 -86c101 -182 227 -308 409 -409c24 -14 59 -39 86 -39c54 0 143 181 204 181c31 0 63 -30 89 -46
+c56 -33 114 -64 171 -96c20 -10 69 -32 76 -53c3 -7 3 -14 3 -21z" />
+ <glyph glyph-name="mars-double" unicode="&#xf227;" horiz-adv-x="1920"
+d="M1536 1120c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c98 -123 147 -286 117 -461c-42 -243 -240 -434 -484 -468c-286 -40 -539 131 -626 380c-316 16 -565 288 -544 613c18 274 235 502 508 533
+c161 19 311 -31 426 -122l255 254h-134c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c40 -50 71 -107 93 -169c124 -6 237 -52 328 -124l255 254h-134c-18 0 -32 14 -32 32v64z
+M1024 704c0 20 -2 39 -4 58c-215 -33 -380 -218 -380 -442c0 -20 2 -39 4 -58c215 33 380 218 380 442zM128 704c0 -226 169 -413 387 -443c-2 19 -3 39 -3 59c0 282 204 517 473 566c-70 157 -227 266 -409 266c-247 0 -448 -201 -448 -448zM1088 -128
+c247 0 448 201 448 448c0 226 -169 413 -387 443c2 -19 3 -39 3 -59c0 -282 -204 -517 -473 -566c70 -157 227 -266 409 -266z" />
+ <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1755"
+d="M1745 763l-164 -763h-334l178 832c8 35 3 67 -15 88c-17 21 -47 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276c135 0 258 -56 337 -154c80 -98 109 -231 81 -363z" />
+ <glyph glyph-name="hand-peace-o" unicode="&#xf25b;"
+d="M1288 889c37 0 74 -7 107 -23c96 -43 141 -122 141 -226v-177c0 -63 -8 -126 -23 -186l-85 -339c-28 -114 -130 -194 -248 -194h-668c-141 0 -256 115 -256 256v401l-239 628c-11 29 -17 60 -17 91c0 141 115 256 256 256c106 0 202 -66 239 -165l17 -44v113
+c0 141 115 256 256 256s256 -115 256 -256v-261c16 3 32 5 48 5c92 0 176 -53 216 -135zM1072 896c-44 0 -84 -26 -102 -66l-74 -163l-71 -155h55c67 0 126 -47 140 -112l154 338c7 14 10 30 10 46c0 62 -50 112 -112 112zM1293 761c-76 0 -100 -61 -127 -121l-132 -290
+c-7 -14 -10 -30 -10 -46c0 -62 50 -112 112 -112c44 0 84 26 102 66l160 352c5 10 9 26 9 38c0 67 -48 113 -114 113zM128 1120c0 -16 3 -31 8 -46l248 -650v-69l102 111c27 29 66 46 106 46h198l106 233v535c0 71 -57 128 -128 128s-128 -57 -128 -128v-640h-64l-200 526
+c-19 49 -67 82 -120 82c-71 0 -128 -58 -128 -128zM1180 -128c59 0 110 40 124 97l85 339c13 50 19 103 19 155v91l-141 -310c-23 -51 -75 -84 -131 -84c-70 0 -131 51 -142 121c-27 -35 -69 -57 -114 -57h-208v32h208c61 0 116 50 116 112c0 61 -46 112 -108 112h-296
+c-31 0 -61 -13 -82 -36l-126 -136v-308c0 -71 57 -128 128 -128h668z" />
+ <glyph glyph-name="envira" unicode="&#xf299;" horiz-adv-x="1792"
+d="M896 720c-127 240 -244 474 -577 632c-199 94 -21 -37 -21 -37c181 -125 264 -294 361 -479c126 -241 316 -559 577 -671c260 -112 137 -50 24 34c-113 85 -273 348 -364 521zM549 177c-361 286 -341 628 -549 1359c1911 0 1467 -1269 1469 -1465l323 -327h-104l-281 285
+c-156 -17 -498 -138 -858 148z" />
+ <glyph glyph-name="lastfm-square" unicode="&#xf203;"
+d="M1432 484c0 141 -114 205 -234 239c-55 15 -100 28 -120 88c-1 5 -6 24 -6 28c0 48 38 83 85 83c22 0 53 1 71 -15h-1c19 -14 28 -30 39 -51l93 71c-15 21 -30 46 -49 64c-47 42 -91 49 -153 49c-105 0 -204 -86 -204 -195c0 -8 1 -15 2 -23c22 -136 91 -178 213 -213
+c60 -17 145 -44 146 -118v-5c1 -80 -66 -128 -141 -128c-82 0 -135 78 -167 144c-116 239 -134 538 -478 538c-207 0 -393 -191 -386 -396v-1c7 -214 154 -403 380 -403c107 0 207 25 279 110c12 16 23 33 31 51l-60 109c-56 -106 -125 -152 -245 -152
+c-158 0 -267 140 -267 291c0 139 128 273 268 273c160 0 218 -83 274 -226c67 -172 139 -456 371 -456c139 0 259 101 259 244zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1612"
+d="M1382 544v-480c0 -35 -29 -64 -64 -64h-384v384h-256v-384h-384c-35 0 -64 29 -64 64v480c0 2 1 4 1 6l575 474l575 -474c1 -2 1 -4 1 -6zM1605 613l-62 -74c-5 -6 -13 -10 -21 -11h-3c-8 0 -15 2 -21 7l-692 577l-692 -577c-7 -5 -15 -8 -24 -7c-8 1 -16 5 -21 11
+l-62 74c-11 13 -9 34 4 45l719 599c42 35 110 35 152 0l244 -204v195c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-408l219 -182c13 -11 15 -32 4 -45z" />
+ <glyph glyph-name="empire" unicode="&#xf1d1;" horiz-adv-x="1792"
+d="M874 -102v-66c-282 8 -529 160 -668 385l58 34c21 -35 46 -68 73 -99l65 57c94 -107 222 -183 368 -212l-17 -86c39 -7 80 -12 121 -13zM276 428l-83 -28c14 -39 30 -76 49 -112l-57 -33c-62 114 -98 246 -98 385s36 271 98 385l57 -33c-19 -35 -36 -73 -49 -112l82 -28
+c-23 -66 -35 -138 -35 -212s13 -146 36 -212zM1528 251l58 -34c-139 -225 -386 -377 -668 -385v66c41 1 82 6 121 13l-17 86c146 29 274 105 368 212l65 -57c27 31 52 64 73 99zM1377 805l-233 -80c9 -27 14 -55 14 -85s-5 -58 -14 -85l232 -80c-21 -63 -55 -120 -98 -169
+l-185 162c-37 -43 -88 -73 -147 -85l48 -241c-31 -6 -64 -10 -98 -10s-67 4 -98 10l48 241c-59 12 -110 42 -147 85l-185 -162c-43 49 -77 106 -98 169l232 80c-9 27 -14 55 -14 85s5 58 14 85l-233 80c22 63 56 120 99 169l185 -162c37 43 88 74 147 86l-48 240
+c31 7 64 10 98 10s67 -3 98 -10l-48 -240c59 -12 110 -43 147 -86l185 162c43 -49 77 -106 99 -169zM874 1448v-66c-41 -1 -82 -5 -121 -13l17 -86c-146 -28 -274 -104 -368 -211l-65 56c-27 -30 -51 -63 -73 -98l-57 33c139 226 385 377 667 385zM1705 640
+c0 -139 -36 -271 -98 -385l-57 33c19 36 35 73 49 112l-83 28c23 66 36 138 36 212s-12 146 -35 212l82 28c-13 39 -30 77 -49 112l57 33c62 -114 98 -246 98 -385zM1585 1063l-57 -33c-22 35 -46 68 -73 98l-65 -56c-94 107 -222 183 -368 211l17 86c-39 8 -80 12 -121 13
+v66c282 -8 528 -159 667 -385zM1748 640c0 470 -382 852 -852 852s-852 -382 -852 -852s382 -852 852 -852s852 382 852 852zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="server" unicode="&#xf233;" horiz-adv-x="1792"
+d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM128 1152h1024v128h-1024v-128zM1696 704c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1696 1216
+c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
+ <glyph glyph-name="search-minus" unicode="&#xf010;" horiz-adv-x="1664"
+d="M1024 736v-64c0 -17 -15 -32 -32 -32h-576c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h576c17 0 32 -15 32 -32zM1152 704c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -71 -57 -128 -128 -128c-34 0 -67 14 -90 38
+l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704c0 -142 -43 -282 -124 -399l343 -343c23 -23 37 -56 37 -90z" />
+ <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792"
+d="M1280 832c0 35 -29 64 -64 64c-354 0 -582 -148 -813 -403c-12 -13 -19 -27 -19 -45c0 -35 29 -64 64 -64c18 0 32 7 45 19c49 44 93 92 141 137c181 163 336 228 582 228c35 0 64 29 64 64zM1792 1030c0 -64 -7 -129 -20 -193c-64 -311 -264 -513 -542 -651
+c-135 -68 -286 -108 -438 -108c-96 0 -195 16 -286 47c-48 16 -144 79 -184 79c-50 0 -110 -204 -197 -204c-63 0 -82 31 -109 77c-9 17 -16 23 -16 44c0 104 198 185 198 243c0 9 -26 62 -30 82c-6 34 -9 69 -9 104c0 318 253 545 537 639c205 68 641 -11 780 121
+c55 51 82 98 166 98c113 0 150 -293 150 -378z" />
+ <glyph glyph-name="envelope-open-o" unicode="&#xf2b7;" horiz-adv-x="1792"
+d="M1474 623l39 -51c11 -14 8 -33 -5 -44c-100 -78 -330 -255 -340 -263c-71 -58 -167 -138 -271 -137h-2c-104 0 -200 79 -271 137c-11 9 -233 180 -331 256c-14 11 -17 30 -6 44l37 52c11 15 32 18 46 6c68 -53 164 -127 306 -236c50 -38 149 -131 219 -131h2
+c70 0 169 93 219 131c147 113 245 188 313 242c14 11 34 8 45 -6zM1664 -96v928c-100 93 -85 85 -548 443c-50 39 -149 133 -219 133h-2c-70 0 -169 -94 -219 -133c-463 -358 -448 -350 -548 -443v-928c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1792 832v-928
+c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v928c0 36 15 70 41 94c205 190 441 355 583 472c70 58 167 138 271 138h2c104 0 201 -80 271 -138c132 -109 383 -286 583 -472c26 -24 41 -58 41 -94z" />
+ <glyph glyph-name="exclamation-circle" unicode="&#xf06a;"
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM896 161v190c0 18 -14 33 -31 33h-192c-18 0 -33 -15 -33 -33v-190c0 -18 15 -33 33 -33h192c17 0 31 15 31 33zM894 505l18 621c0 7 -3 14 -10 18c-6 5 -15 8 -24 8h-220
+c-9 0 -18 -3 -24 -8c-7 -4 -10 -11 -10 -18l17 -621c0 -14 15 -25 34 -25h185c18 0 33 11 34 25z" />
+ <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792"
+d="M1408 768c0 -283 -315 -512 -704 -512c-61 0 -120 6 -176 16c-83 -59 -177 -102 -278 -128c-27 -7 -56 -12 -86 -16h-3c-15 0 -29 12 -32 29c-4 19 9 31 20 44c39 44 83 83 117 166c-162 94 -266 239 -266 401c0 283 315 512 704 512s704 -229 704 -512zM1792 512
+c0 -163 -104 -307 -266 -401c34 -83 78 -122 117 -166c11 -13 24 -25 20 -44c-4 -18 -19 -31 -35 -29c-30 4 -59 9 -86 16c-101 26 -195 69 -278 128c-56 -10 -115 -16 -176 -16c-181 0 -347 50 -472 132c29 -2 59 -4 88 -4c215 0 418 62 573 174c167 122 259 287 259 466
+c0 52 -8 103 -23 152c169 -93 279 -241 279 -408z" />
+ <glyph glyph-name="facebook-official" unicode="&#xf230;"
+d="M1451 1408c47 0 85 -38 85 -85v-1366c0 -47 -38 -85 -85 -85h-391v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-735c-47 0 -85 38 -85 85v1366c0 47 38 85 85 85h1366z" />
+ <glyph glyph-name="clock-o" unicode="&#xf017;"
+d="M896 992v-448c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v352c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640
+c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="handshake-o" unicode="&#xf2b5;" horiz-adv-x="2304"
+d="M192 384c84 0 84 128 0 128s-84 -128 0 -128zM1665 442c-79 103 -156 208 -246 302l-125 -140c-110 -125 -307 -122 -414 6c-76 92 -76 224 2 315l177 206c-62 32 -137 21 -204 21c-59 0 -116 -24 -158 -66l-158 -158h-155v-544c44 0 84 6 119 -28l297 -292
+c61 -59 140 -111 227 -111c45 0 93 15 125 47c75 -26 162 16 185 93c48 -4 92 11 127 44c23 21 53 63 50 96c9 -9 31 -10 43 -10c119 0 181 125 108 219zM1824 384h96v512h-93l-157 180c-42 48 -105 76 -169 76h-167c-56 0 -110 -25 -146 -67l-209 -243
+c-37 -44 -37 -106 -1 -150c57 -68 162 -69 221 -3l193 218c46 51 130 3 109 -62c38 -44 79 -87 116 -131c50 -62 98 -127 147 -190c31 -40 54 -88 60 -140zM2112 384c84 0 84 128 0 128s-84 -128 0 -128zM2304 960v-640c0 -35 -29 -64 -64 -64h-434
+c-36 -87 -115 -145 -207 -158c-43 -63 -109 -111 -183 -127c-55 -70 -144 -112 -233 -106c-165 -93 -351 -12 -474 109l-287 282h-358c-35 0 -64 29 -64 64v672c0 35 29 64 64 64h421c116 116 196 224 370 224h117c65 0 128 -20 181 -56c53 36 116 56 181 56h167
+c190 0 269 -124 384 -256h355c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="hand-scissors-o" unicode="&#xf257;" horiz-adv-x="1792"
+d="M1073 -128h-177c-104 0 -183 45 -226 141c-15 32 -23 67 -23 102v5c-82 40 -135 124 -135 216c0 11 0 38 5 48h-261c-141 0 -256 115 -256 256s115 256 256 256h113l-44 17c-99 37 -165 133 -165 239c0 141 115 256 256 256c31 0 62 -6 91 -17l628 -239h401
+c141 0 256 -115 256 -256v-668c0 -118 -80 -220 -194 -248l-339 -85c-60 -15 -123 -23 -186 -23zM1024 583l-155 -71l-163 -74c-40 -18 -66 -58 -66 -102c0 -62 50 -112 112 -112c16 0 32 3 46 10l338 154c-65 14 -112 73 -112 140v55zM1344 272c0 62 -50 112 -112 112
+c-16 0 -32 -3 -46 -10l-290 -132c-60 -27 -121 -51 -121 -127c0 -66 46 -114 113 -114c12 0 28 4 38 9l352 160c40 18 66 58 66 102zM1112 1024l-650 248c-15 5 -30 8 -46 8c-70 0 -128 -57 -128 -128c0 -53 33 -101 82 -120l526 -200v-64h-640c-71 0 -128 -57 -128 -128
+s57 -128 128 -128h535l233 106v198c0 40 17 79 46 106l111 102h-69zM1073 0c52 0 105 6 155 19l339 85c57 14 97 65 97 124v668c0 71 -57 128 -128 128h-308l-136 -126c-23 -21 -36 -51 -36 -82v-296c0 -62 51 -108 112 -108c62 0 112 55 112 116v208h32v-208
+c0 -45 -22 -87 -57 -114c70 -11 121 -72 121 -142c0 -56 -33 -108 -84 -131l-310 -141h91z" />
+ <glyph glyph-name="tumblr-square" unicode="&#xf174;"
+d="M1136 75l-62 183c-24 -12 -69 -22 -103 -22c-102 -3 -123 71 -123 126v398h257v194h-256v326h-188c-3 0 -8 -3 -9 -10c-11 -99 -58 -275 -252 -345v-165h130v-418c0 -143 105 -347 384 -342c94 2 199 41 222 75zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
+c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280"
+d="M1043 971c0 134 -95 224 -236 224h-320v-448h320c141 0 236 90 236 224zM1280 971c0 -257 -186 -437 -453 -437h-340v-118h505c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-505v-192c0 -18 -14 -32 -32 -32h-167c-18 0 -32 14 -32 32v192h-224c-18 0 -32 14 -32 32
+v128c0 18 14 32 32 32h224v118h-224c-18 0 -32 14 -32 32v149c0 18 14 32 32 32h224v629c0 18 14 32 32 32h539c267 0 453 -180 453 -437z" />
+ <glyph glyph-name="chevron-circle-up" unicode="&#xf139;"
+d="M1165 397l102 102c25 25 25 65 0 90l-454 454c-25 25 -65 25 -90 0l-454 -454c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0l307 307l307 -307c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
+" />
+ <glyph glyph-name="opencart" unicode="&#xf23d;" horiz-adv-x="2304"
+d="M1524 -25c0 -91 -73 -164 -164 -164s-165 73 -165 164s74 165 165 165s164 -74 164 -165zM775 -25c0 -91 -74 -164 -165 -164s-164 73 -164 164s73 165 164 165s165 -74 165 -165zM0 1469c295 -311 572 -357 1660 -357s610 -242 -62 -842c213 370 945 698 -255 680
+c-1151 -17 -1219 333 -1343 519z" />
+ <glyph glyph-name="artstation" unicode="&#xf2ed;" horiz-adv-x="1533"
+d="M601 1277v0h267c51 0 112 -37 136 -83l504 -878c16 -24 25 -53 25 -84c0 -35 -7 -53 -31 -94l-123 -213zM474 1058l348 -604h-695zM0 233v0h949l178 -309h-859c-53 0 -114 38 -138 85h-1z" />
+ <glyph glyph-name="thumbs-up" unicode="&#xf164;" horiz-adv-x="1600"
+d="M256 192c0 35 -29 64 -64 64c-36 0 -64 -29 -64 -64c0 -36 28 -64 64 -64c35 0 64 28 64 64zM416 704v-640c0 -35 -29 -64 -64 -64h-288c-35 0 -64 29 -64 64v640c0 35 29 64 64 64h288c35 0 64 -29 64 -64zM1600 704c0 -53 -21 -110 -55 -149c11 -32 15 -62 15 -76
+c2 -50 -13 -97 -43 -137c11 -37 11 -77 0 -117c-10 -37 -29 -70 -54 -94c6 -75 -11 -136 -49 -181c-43 -51 -109 -77 -197 -78h-129c-143 0 -278 47 -386 84c-63 22 -123 43 -158 44c-34 1 -64 29 -64 64v641c0 33 28 61 61 64c37 3 133 122 177 180c36 46 70 89 101 120
+c39 39 50 99 62 157c11 59 23 121 66 163c12 12 28 19 45 19c224 0 224 -179 224 -256c0 -82 -29 -140 -56 -192c-11 -22 -21 -32 -29 -64h277c104 0 192 -88 192 -192z" />
+ <glyph glyph-name="vimeo-square" unicode="&#xf194;"
+d="M1292 898c7 145 -47 218 -161 222c-154 5 -258 -82 -312 -261c28 12 55 19 82 19c56 0 81 -32 74 -96c-3 -38 -28 -94 -74 -167c-47 -74 -82 -110 -105 -110c-30 0 -56 56 -82 169c-8 34 -23 118 -45 255c-20 126 -73 185 -160 177c-36 -4 -92 -36 -164 -100
+c-54 -47 -107 -96 -162 -144l52 -67c50 34 79 52 87 52c38 0 74 -60 107 -179c30 -110 60 -219 90 -329c45 -119 99 -179 164 -179c104 0 232 98 383 294c146 188 222 336 226 444zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
+c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="arrow-circle-right" unicode="&#xf0a9;"
+d="M1285 640c0 17 -6 33 -18 45l-91 91l-362 362c-12 12 -28 18 -45 18s-33 -6 -45 -18l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l189 -189h-502c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h502l-189 -189c-12 -12 -19 -28 -19 -45s7 -33 19 -45l91 -91
+c12 -12 28 -18 45 -18s33 6 45 18l362 362l91 91c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896"
+d="M885 970c11 -12 14 -29 7 -44l-540 -1157c-8 -15 -24 -25 -42 -25c-4 0 -9 1 -14 2c-22 7 -35 28 -30 49l197 808l-406 -101c-4 -1 -8 -1 -12 -1c-11 0 -23 4 -31 11c-12 10 -16 25 -13 39l201 825c5 19 23 32 44 32h328c25 0 45 -19 45 -42c0 -6 -2 -12 -5 -18
+l-171 -463l396 98c4 1 8 2 12 2c13 0 25 -6 34 -15z" />
+ <glyph glyph-name="thermometer-quarter" unicode="&#xf2ca;" horiz-adv-x="1024"
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v139h128v-139c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+ <glyph glyph-name="hdd-o" unicode="&#xf0a0;"
+d="M1040 320c0 -44 -36 -80 -80 -80s-80 36 -80 80s36 80 80 80s80 -36 80 -80zM1296 320c0 -44 -36 -80 -80 -80s-80 36 -80 80s36 80 80 80s80 -36 80 -80zM1408 160v320c0 17 -15 32 -32 32h-1216c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h1216c17 0 32 15 32 32
+zM178 640h1180l-157 482c-5 17 -24 30 -42 30h-782c-18 0 -37 -13 -42 -30zM1536 480v-320c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v320c0 27 8 50 16 75l197 606c23 70 90 119 164 119h782c74 0 141 -49 164 -119l197 -606c8 -25 16 -48 16 -75z" />
+ <glyph glyph-name="id-card-o" unicode="&#xf2c3;" horiz-adv-x="2048"
+d="M896 324c0 -73 -48 -132 -107 -132h-426c-59 0 -107 59 -107 132c0 132 32 284 164 284c40 -40 95 -64 156 -64s116 24 156 64c132 0 164 -152 164 -284zM768 768c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 352v-64
+c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704c18 0 32 -14 32 -32zM1408 608v-64c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h320c18 0 32 -14 32 -32zM1792 608v-64c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 864v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704c18 0 32 -14 32 -32zM1920 32v1120h-1792v-1120c0 -17 15 -32 32 -32h1728c17 0 32 15 32 32zM2048 1248v-1216
+c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="plug" unicode="&#xf1e6;" horiz-adv-x="1792"
+d="M1755 1083c49 -50 49 -131 0 -181l-401 -400l150 -150l-160 -160c-219 -219 -553 -250 -801 -86l-362 -362h-181v181l362 362c-164 248 -133 582 86 801l160 160l150 -150l400 401c50 49 131 49 181 0c50 -50 50 -132 0 -181l-400 -401l234 -234l401 400
+c50 50 131 50 181 0z" />
+ <glyph glyph-name="themeisle" unicode="&#xf2b2;" horiz-adv-x="1792"
+d="M852 1227c0 -36 -23 -76 -62 -76c-40 0 -62 40 -62 76c0 35 22 76 62 76c39 0 62 -41 62 -76zM688 -149v114c0 39 -31 73 -71 73s-70 -34 -70 -73v-114c0 -39 30 -74 70 -74s71 34 71 74zM860 -149v114c0 39 -30 73 -70 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74
+s70 35 70 74zM1034 -149v114c0 39 -31 73 -71 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74s71 34 71 74zM1208 -149v114c0 39 -31 73 -71 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74s71 35 71 74zM1476 535c-108 -207 -316 -359 -555 -359c-338 0 -562 296 -562 618
+c0 59 7 117 21 174c-70 -118 -104 -254 -104 -390c0 -211 87 -426 250 -563c18 34 52 57 91 57c35 0 68 -20 86 -50c19 30 51 50 87 50c35 0 68 -20 86 -50c19 30 52 50 87 50s68 -20 87 -50c18 30 51 50 86 50c38 0 73 -23 90 -56c152 127 240 322 250 519zM1326 564
+c0 50 -22 75 -72 75c-16 0 -32 -3 -47 -6c-50 -10 -99 -19 -149 -19c-158 0 -226 92 -226 243c0 69 13 137 30 204c-53 -81 -83 -178 -83 -275c0 -189 120 -371 324 -371c75 0 149 27 210 70c7 26 13 52 13 79zM884 1223c0 63 -44 129 -113 129s-113 -66 -113 -129
+c0 -64 44 -130 113 -130s113 66 113 130zM1513 884c0 188 -121 370 -324 370c-106 0 -205 -53 -276 -129c-25 -83 -48 -180 -48 -268c0 -133 53 -210 193 -210c48 0 95 9 142 19c18 3 35 6 53 6c69 0 104 -40 104 -108c0 -15 -1 -31 -4 -46c101 91 160 230 160 366z
+M1792 667c0 -126 -40 -358 -127 -454c-80 -87 -306 -214 -423 -247l-4 -1v-114c0 -57 -44 -107 -102 -107c-35 0 -68 20 -86 50c-19 -30 -52 -50 -87 -50s-68 20 -87 50c-18 -30 -51 -50 -86 -50c-36 0 -68 20 -87 50c-18 -30 -51 -50 -86 -50c-66 0 -103 55 -103 115
+c-57 -43 -125 -68 -198 -68c-77 0 -152 29 -211 80c36 1 72 8 106 20c-73 20 -138 66 -182 127c23 -5 47 -7 71 -7c58 0 115 16 164 46c-77 77 -198 206 -240 306c-20 47 -24 110 -24 160c0 174 71 560 302 560c37 0 66 -17 81 -52c13 19 27 37 42 54c7 9 20 19 25 29
+c28 44 41 74 76 119c113 144 286 243 472 243c21 0 42 -1 62 -4c38 41 91 64 146 64c51 0 104 -21 140 -57c3 -3 5 -8 5 -12c0 -13 -36 -47 -45 -57c15 -5 55 -24 55 -42c0 -10 -10 -18 -16 -25c110 -97 173 -235 197 -378c15 18 36 30 60 30c37 0 73 -25 100 -49
+c73 -65 90 -186 90 -279z" />
+ <glyph glyph-name="braille" unicode="&#xf2a1;" horiz-adv-x="2176"
+d="M192 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM704 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM704 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160z
+M1472 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1984 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1472 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160z
+M1984 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1984 1376c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM384 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z
+M896 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM384 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z
+M384 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192
+zM2176 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM2176 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192
+s192 -86 192 -192zM1664 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM2176 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z" />
+ <glyph glyph-name="industry" unicode="&#xf275;" horiz-adv-x="1792"
+d="M448 1536c35 0 64 -29 64 -64v-891l536 429c11 9 26 14 40 14c35 0 64 -29 64 -64v-379l536 429c11 9 26 14 40 14c35 0 64 -29 64 -64v-1152c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v1664c0 35 29 64 64 64h384z" />
+ <glyph glyph-name="map-o" unicode="&#xf278;" horiz-adv-x="2048"
+d="M2020 1525c17 -12 28 -32 28 -53v-1408c0 -26 -16 -50 -40 -59l-640 -256c-16 -7 -32 -7 -48 0l-616 246l-616 -246c-8 -4 -16 -5 -24 -5c-13 0 -25 4 -36 11c-17 12 -28 32 -28 53v1408c0 26 16 50 40 59l640 256c16 7 32 7 48 0l616 -246l616 246c20 8 42 6 60 -6z
+M736 1390v-1270l576 -230v1270zM128 1173v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
+ <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792"
+d="M514 341l81 299h-159l75 -300c1 -2 1 -4 2 -6c0 2 1 5 1 7zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299c1 -3 1 -5 2 -7c0 2 1 4 1 6zM1382 768l33 128h-297l34 -128h230zM1792 736v-64c0 -18 -14 -32 -32 -32h-213
+l-164 -616c-4 -14 -17 -24 -31 -24h-159c-14 0 -27 10 -31 24l-166 616h-209l-167 -616c-4 -14 -16 -24 -31 -24h-159c-14 0 -27 10 -30 24l-160 616h-208c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h175l-33 128h-142c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h109l-89 344
+c-3 10 -1 20 5 28c6 7 16 12 26 12h137c15 0 28 -10 31 -24l90 -360h359l97 360c4 14 17 24 31 24h126c15 0 27 -10 31 -24l98 -360h365l93 360c3 14 16 24 31 24h137c10 0 20 -5 26 -12c6 -8 8 -19 5 -28l-91 -344h111c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-145
+l-34 -128h179c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="joomla" unicode="&#xf1aa;"
+d="M1070 463l-160 -160l-151 -152l-30 -30c-88 -87 -211 -117 -323 -89c-21 -92 -103 -160 -201 -160c-113 0 -205 92 -205 206c0 97 67 179 158 200c-29 113 1 237 89 325l12 12l151 -152l-11 -11c-50 -49 -49 -129 0 -179c49 -49 129 -49 178 0l30 30l151 152l161 160z
+M729 1145l12 -12l-152 -152l-12 12c-49 49 -129 49 -178 0s-49 -130 0 -179l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30c-92 91 -120 222 -85 339c-92 20 -160 102 -160 200c0 114 92 206 205 206c103 0 187 -75 203 -172c111 26 232 -5 319 -91z
+M1536 78c0 -114 -92 -206 -205 -206c-100 0 -183 71 -202 165c-116 -36 -249 -8 -341 84l-11 12l151 152l12 -12c49 -49 129 -49 178 0s49 129 0 178l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30c87 -87 118 -210 90 -322c100 -14 177 -99 177 -203z
+M1534 1202c0 -104 -78 -190 -178 -204c33 -115 4 -244 -87 -335l-12 -12l-151 152l12 12c49 49 49 129 0 178s-129 49 -178 0l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30c91 91 221 120 337 86c14 100 100 177 204 177c113 0 205 -92 205 -206z" />
+ <glyph glyph-name="ethereum" unicode="&#xf2f3;" horiz-adv-x="1064"
+d="M1064 623l-532 -325l-532 325l532 913zM532 194l532 325l-532 -775l-532 775z" />
+ <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408"
+d="M1408 800v-192c0 -53 -43 -96 -96 -96h-416v-416c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v416h-416c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h416v416c0 53 43 96 96 96h192c53 0 96 -43 96 -96v-416h416c53 0 96 -43 96 -96z" />
+ <glyph glyph-name="list-ul" unicode="&#xf0ca;" horiz-adv-x="1792"
+d="M384 128c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM384 640c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 224v-192c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32
+h1216c17 0 32 -15 32 -32zM384 1152c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 736v-192c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1216c17 0 32 -15 32 -32zM1792 1248v-192
+c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1216c17 0 32 -15 32 -32z" />
+ <glyph glyph-name="play-circle-o" unicode="&#xf01d;"
+d="M1184 640c0 -23 -12 -44 -32 -55l-544 -320c-10 -6 -21 -9 -32 -9s-22 3 -32 8c-20 12 -32 33 -32 56v640c0 23 12 44 32 56c20 11 45 11 64 -1l544 -320c20 -11 32 -32 32 -55zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544
+s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="mars-stroke" unicode="&#xf229;"
+d="M1472 1408c35 0 64 -29 64 -64v-416c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v262l-213 -214l140 -140c12 -13 12 -33 0 -45l-46 -46c-12 -12 -32 -12 -45 0l-140 141l-78 -79c79 -98 126 -223 126 -359c0 -318 -258 -576 -576 -576s-576 258 -576 576
+s258 576 576 576c136 0 261 -47 359 -126l78 78l-172 172c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l172 -172l213 213h-261c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h416zM576 0c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1820"
+d="M1061 540v4l-24 320c-1 18 -17 32 -34 32h-186c-17 0 -33 -14 -34 -32l-24 -320v-4c-1 -16 14 -28 29 -28h244c15 0 30 12 29 28zM1820 73c0 -29 -8 -73 -46 -73h-704c17 0 31 14 30 32l-20 256c-1 18 -17 32 -34 32h-272c-17 0 -33 -14 -34 -32l-20 -256
+c-1 -18 13 -32 30 -32h-704c-38 0 -46 44 -46 73c0 40 11 80 26 116l417 1044c10 25 37 47 64 47h339c-17 0 -33 -14 -34 -32l-15 -192c-1 -18 12 -32 30 -32h166c18 0 31 14 30 32l-15 192c-1 18 -17 32 -34 32h339c27 0 54 -22 64 -47l417 -1044c15 -36 26 -76 26 -116z
+" />
+ <glyph glyph-name="volume-down" unicode="&#xf027;" horiz-adv-x="1152"
+d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64zM1152 640c0 -100 -61 -197 -155 -235c-8 -4 -17 -5 -25 -5c-35 0 -64 28 -64 64
+c0 76 116 55 116 176s-116 100 -116 176c0 36 29 64 64 64c8 0 17 -1 25 -5c94 -37 155 -135 155 -235z" />
+ <glyph glyph-name="question-circle" unicode="&#xf059;"
+d="M896 160v192c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1152 832c0 183 -192 320 -364 320c-163 0 -285 -70 -371 -213c-9 -14 -5 -32 8 -42l132 -100c5 -4 12 -6 19 -6c9 0 19 4 25 12c47 60 67 78 86 92
+c17 12 50 24 86 24c64 0 123 -41 123 -85c0 -52 -27 -78 -88 -106c-71 -32 -168 -115 -168 -212v-36c0 -18 14 -32 32 -32h192c18 0 32 14 32 32c0 23 29 72 76 99c76 43 180 101 180 253zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
+s768 -344 768 -768z" />
+ <glyph glyph-name="paypal" unicode="&#xf1ed;" horiz-adv-x="1519"
+d="M1510 890c13 -60 10 -129 -4 -204c-65 -330 -284 -444 -565 -444h-44c-34 0 -62 -25 -68 -59l-4 -19l-55 -346l-2 -15c-7 -34 -35 -59 -69 -59h-251c-28 0 -46 23 -42 51c18 112 35 224 53 336s36 223 54 335c3 24 19 37 43 37c40 0 80 1 131 0c72 -1 155 3 236 21
+c108 24 206 68 287 144c73 68 122 152 155 246c15 44 27 88 35 133c2 12 5 10 12 5c55 -41 86 -96 98 -162zM1338 1172c0 -82 -19 -160 -46 -236c-52 -151 -150 -259 -302 -315c-81 -29 -166 -41 -252 -42c-60 -1 -120 0 -180 0c-65 0 -106 -32 -118 -96
+c-14 -76 -69 -430 -85 -530c-1 -7 -4 -10 -12 -10h-295c-30 0 -52 26 -48 55l232 1471c6 38 40 67 79 67h598c43 0 142 -19 209 -45c142 -55 220 -167 220 -319z" />
+ <glyph glyph-name="child" unicode="&#xf1ae;" horiz-adv-x="1152"
+d="M1124 988l-292 -292v-824c0 -62 -50 -112 -112 -112s-112 50 -112 112v384h-64v-384c0 -62 -50 -112 -112 -112s-112 50 -112 112v824l-292 292c-37 38 -37 98 0 136c38 37 98 37 136 0l228 -228h368l228 228c38 37 98 37 136 0c37 -38 37 -98 0 -136zM800 1152
+c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
+ <glyph glyph-name="fork-awesome" unicode="&#xf2e3;" horiz-adv-x="1533"
+d="M766 1404v0c423 0 767 -343 767 -766v-1v-2c0 -8 -1 -17 -1 -25v-2c-14 -388 -318 -703 -701 -735v1c-18 -2 -47 -2 -65 -2s-47 1 -65 3v-2c-383 32 -685 347 -700 735v2c0 8 -1 17 -1 25v2v1c0 423 343 766 766 766zM594 1085h-66c-35 -251 -54 -525 -29 -712
+s145 -157 181 -351c5 -29 10 -59 14 -89c20 -2 52 -4 72 -4s52 2 72 4c4 30 9 60 14 89c36 194 156 164 181 351s6 456 -28 712h-65c3 -190 12 -430 -8 -640c-8 -89 -103 -87 -108 0c-13 208 -15 428 -26 639h-64c-11 -211 -18 -431 -26 -643c-3 -82 -100 -81 -108 0
+c-19 208 -10 453 -6 644z" />
+ <glyph glyph-name="angle-double-up" unicode="&#xf102;" horiz-adv-x="998"
+d="M998 224c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23zM998 608
+c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="bath" unicode="&#xf2cd;" horiz-adv-x="1792"
+d="M1664 448v-192c0 -114 -50 -215 -128 -286v-194c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v118c-40 -14 -83 -22 -128 -22h-768c-45 0 -88 8 -128 22v-110c0 -22 -14 -40 -32 -40h-64c-18 0 -32 18 -32 40v186c-78 71 -128 172 -128 286v192h1536zM704 864
+c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM768 928c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM704 992c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 992c0 -18 -14 -32 -32 -32s-32 14 -32 32
+s14 32 32 32s32 -14 32 -32zM768 1056c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM704 1120c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1792 608v-64c0 -18 -14 -32 -32 -32h-1728c-18 0 -32 14 -32 32v64c0 18 14 32 32 32
+h96v640c0 141 115 256 256 256c72 0 137 -30 184 -78c62 25 136 16 191 -27l22 22c6 6 16 6 22 0l42 -42c6 -6 6 -16 0 -22l-314 -314c-6 -6 -16 -6 -22 0l-42 42c-6 6 -6 16 0 22l22 22c-48 61 -54 145 -17 212c-23 22 -54 35 -88 35c-71 0 -128 -57 -128 -128v-640h1504
+c18 0 32 -14 32 -32zM896 1056c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 1120c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM768 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM960 1120
+c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM896 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1024 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32
+s14 32 32 32s32 -14 32 -32zM960 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1088 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32z" />
+ <glyph glyph-name="reply-all" unicode="&#xf122;" horiz-adv-x="1792"
+d="M640 454v-70c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-512 512c-25 25 -25 65 0 90l512 512c18 19 46 24 70 14c23 -10 39 -33 39 -59v-69l-397 -398c-25 -25 -25 -65 0 -90zM1792 416c0 -208 -157 -514 -164 -527c-5 -11 -16 -17 -28 -17
+c-3 0 -6 0 -9 1c-15 5 -24 19 -23 34c29 273 -5 453 -106 565c-85 95 -223 146 -438 163v-251c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-512 512c-25 25 -25 65 0 90l512 512c18 19 46 24 70 14c23 -10 39 -33 39 -59v-262c276 -19 473 -92 599 -221
+c151 -155 169 -365 169 -509z" />
+ <glyph glyph-name="patreon" unicode="&#xf2f0;"
+d="M985 1341c-305 0 -553 -248 -553 -553c0 -304 248 -551 553 -551c304 0 551 247 551 551c0 305 -247 553 -551 553zM270 -132h-270v1473h270v-1473z" />
+ <glyph glyph-name="inbox" unicode="&#xf01c;"
+d="M1023 576h316c-2 5 -3 11 -5 16l-212 496h-708l-212 -496c-2 -5 -3 -11 -5 -16h316l95 -192h320zM1536 546v-482c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v482c0 36 11 89 25 123l238 552c14 33 54 59 89 59h832c35 0 75 -26 89 -59l238 -552
+c14 -34 25 -87 25 -123z" />
+ <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280"
+d="M1280 480c0 -53 -43 -96 -96 -96c-32 0 -62 16 -80 43l-227 341h-45v-132l247 -411c6 -10 9 -21 9 -33c0 -35 -29 -64 -64 -64h-192v-272c0 -62 -50 -112 -112 -112h-160c-61 0 -112 50 -112 112v272h-192c-35 0 -64 29 -64 64c0 12 3 23 9 33l247 411v132h-45l-227 -341
+c-18 -27 -48 -43 -80 -43c-53 0 -96 43 -96 96c0 19 6 38 16 53l256 384c40 59 102 107 176 107h384c74 0 136 -48 176 -107l256 -384c10 -15 16 -34 16 -53zM864 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
+ <glyph glyph-name="gavel" unicode="&#xf0e3;" horiz-adv-x="1731"
+d="M1731 0c0 -34 -14 -67 -37 -90l-107 -108c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-363 364c-24 23 -38 56 -38 90c0 38 16 69 43 96l-256 256l-126 -126c-9 -9 -21 -14 -34 -14s-25 5 -34 14c30 -30 58 -52 58 -98c0 -26 -10 -49 -28 -68c-34 -36 -70 -84 -124 -84
+c-25 0 -50 10 -68 28l-408 408c-18 18 -28 43 -28 68c0 54 48 90 84 124c19 18 42 28 68 28c46 0 68 -28 98 -58c-9 9 -14 21 -14 34s5 25 14 34l348 348c9 9 21 14 34 14s25 -5 34 -14c-30 30 -58 52 -58 98c0 26 10 49 28 68c34 36 70 84 124 84c25 0 50 -10 68 -28
+l408 -408c18 -18 28 -43 28 -68c0 -54 -48 -90 -84 -124c-19 -18 -42 -28 -68 -28c-46 0 -68 28 -98 58c9 -9 14 -21 14 -34s-5 -25 -14 -34l-126 -126l256 -256c27 27 58 43 96 43c34 0 67 -14 91 -37l363 -363c23 -24 37 -57 37 -91z" />
+ <glyph glyph-name="jsfiddle" unicode="&#xf1cc;" horiz-adv-x="2048"
+d="M1800 764c145 -60 248 -202 248 -367c0 -219 -181 -397 -403 -397c-8 0 -15 1 -22 1h-1217c-224 13 -406 184 -406 406c0 149 81 279 202 350c-8 26 -12 53 -12 82c0 153 125 277 281 277c64 0 124 -22 172 -58c98 202 306 342 549 342c337 0 609 -269 609 -600
+c0 -12 -1 -24 -1 -36zM468 498c0 -169 133 -264 292 -264c98 0 169 31 240 99c-29 36 -61 71 -91 107c-41 -40 -86 -65 -144 -65c-71 0 -132 47 -132 121c0 73 61 121 130 121c220 0 267 -384 587 -384c156 0 288 98 288 262c0 166 -133 263 -291 263
+c-98 0 -171 -28 -241 -97c32 -35 62 -72 93 -108c40 39 85 64 142 64c66 0 132 -47 132 -117c0 -77 -56 -126 -131 -126c-213 0 -270 384 -582 384c-155 0 -292 -95 -292 -260z" />
+ <glyph glyph-name="git" unicode="&#xf1d3;" horiz-adv-x="1656"
+d="M527 22c0 88 -97 100 -165 100c-71 0 -158 -15 -158 -104c0 -90 103 -101 172 -101c73 0 151 18 151 105zM468 777c0 75 -36 143 -119 143c-92 0 -124 -61 -124 -145c0 -83 36 -135 124 -135c87 0 119 56 119 137zM737 1101v-202c-26 -9 -52 -16 -79 -22
+c10 -27 16 -55 16 -84c0 -169 -104 -298 -270 -329c-50 -10 -79 -31 -79 -85c0 -153 404 -49 404 -331c0 -229 -155 -304 -363 -304c-171 0 -366 57 -366 263c0 120 73 189 182 225v4c-46 28 -67 72 -67 126c0 51 11 114 63 137v4c-101 34 -167 173 -167 274
+c0 187 145 324 330 324c62 0 124 -16 178 -47c75 0 149 20 218 47zM1055 220h-222c4 45 4 89 4 134v609c0 43 1 86 -4 128h222c-5 -41 -4 -83 -4 -124v-613c0 -45 0 -89 4 -134zM1656 442v-196c-53 -29 -114 -39 -174 -39c-214 0 -239 169 -239 343v351h2v4
+c-13 0 -25 2 -37 2c-20 0 -40 -3 -59 -6v190h96v76c0 30 -1 60 -6 89h227c-8 -55 -6 -110 -6 -165h171v-190c-29 0 -58 4 -86 4h-85v-365c0 -59 13 -131 87 -131c39 0 77 11 109 33zM1080 1389c0 -75 -58 -145 -135 -145c-79 0 -138 69 -138 145c0 77 58 147 138 147
+c79 0 135 -72 135 -147z" />
+ <glyph glyph-name="share-square" unicode="&#xf14d;"
+d="M1005 435l352 352c25 25 25 65 0 90l-352 352c-18 19 -46 24 -69 14c-24 -10 -40 -33 -40 -59v-160c-574 0 -640 -329 -640 -576c0 -201 161 -396 167 -404c7 -8 16 -12 25 -12c4 0 9 1 13 3c13 5 21 19 19 33c-30 241 -11 391 62 473c61 69 167 99 354 99v-160
+c0 -26 16 -49 40 -59c7 -3 16 -5 24 -5c17 0 33 7 45 19zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+ <glyph glyph-name="thermometer-half" unicode="&#xf2c9;" horiz-adv-x="1024"
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v395h128v-395c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+ <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="924"
+d="M608 280v-240c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v240c0 22 18 40 40 40h240c22 0 40 -18 40 -40zM924 880c0 -190 -129 -263 -224 -316c-59 -34 -96 -103 -96 -132c0 -22 -17 -48 -40 -48h-240c-22 0 -36 34 -36 56v45c0 121 120 225 208 265
+c77 35 109 68 109 132c0 56 -73 106 -154 106c-45 0 -86 -14 -108 -29c-24 -17 -48 -41 -107 -115c-8 -10 -20 -16 -31 -16c-9 0 -17 3 -25 8l-164 125c-17 13 -21 35 -10 53c108 179 260 266 464 266c214 0 454 -171 454 -400z" />
+ <glyph glyph-name="low-vision" unicode="&#xf2a8;" horiz-adv-x="1792"
+d="M335 180c-2 0 -4 1 -6 2c-117 78 -234 206 -308 325c-14 20 -21 44 -21 69c0 52 36 94 65 133c116 158 271 288 452 365c-15 27 -110 193 -110 211c0 12 7 23 17 29c20 11 110 64 128 64c11 0 22 -6 28 -16l124 -229c63 13 128 19 192 19c362 0 684 -205 876 -507
+c13 -20 20 -44 20 -69s-7 -49 -20 -69c-119 -187 -293 -342 -497 -429c15 -27 110 -193 110 -211c0 -12 -6 -23 -17 -29c-20 -11 -110 -64 -127 -64c-12 0 -23 6 -29 16l-124 229l-64 119l-444 820l7 7c-34 -14 -67 -29 -99 -47c12 -23 489 -899 489 -906c0 -5 -4 -8 -9 -9
+c-22 -5 -50 -3 -72 -3c-11 0 -56 -2 -60 7l-456 841c-29 -21 -56 -44 -82 -68c22 -39 404 -742 404 -748c0 -8 -5 -10 -11 -10c-17 0 -150 41 -155 50l-106 197l-224 413c-28 -34 -54 -69 -78 -106c13 -19 30 -39 41 -59c14 -26 176 -321 176 -327c0 -5 -5 -10 -10 -10z
+M1165 282l49 -91c187 76 341 216 450 385c-111 171 -269 313 -459 389c89 -85 139 -202 139 -325c0 -141 -66 -274 -179 -358zM848 896c0 -26 22 -48 48 -48c55 0 108 -22 147 -61s61 -92 61 -147c0 -26 22 -48 48 -48s48 22 48 48c0 168 -136 304 -304 304
+c-26 0 -48 -22 -48 -48zM1214 961l-9 4l7 -7z" />
+ <glyph glyph-name="wordpress" unicode="&#xf19a;" horiz-adv-x="1792"
+d="M127 640c0 111 24 217 67 313l367 -1005c-257 125 -434 388 -434 692zM1415 679c0 -66 -27 -142 -59 -249l-76 -256l-278 826s46 3 88 8c41 5 36 66 -5 63c-125 -9 -205 -10 -205 -10s-75 1 -202 10c-42 3 -47 -60 -5 -63c39 -4 80 -8 80 -8l120 -328l-168 -504l-280 832
+s46 3 88 8c41 5 36 66 -5 63c-124 -9 -205 -10 -205 -10c-14 0 -31 1 -49 1c137 209 373 347 642 347c200 0 382 -77 519 -202h-10c-75 0 -129 -65 -129 -136c0 -63 37 -116 76 -180c30 -51 63 -117 63 -212zM909 573l237 -647c1 -4 3 -8 5 -11c-80 -28 -165 -44 -255 -44
+c-75 0 -148 11 -217 32zM1570 1009c60 -110 95 -235 95 -369c0 -284 -154 -531 -383 -664l235 678c39 112 59 198 59 276c0 28 -2 54 -6 79zM896 1536c494 0 896 -402 896 -896s-402 -896 -896 -896s-896 402 -896 896s402 896 896 896zM896 -215c471 0 855 384 855 855
+s-384 855 -855 855s-855 -384 -855 -855s384 -855 855 -855z" />
+ <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024"
+d="M0 -126l17 85c64 20 133 28 193 59c23 29 34 66 41 101c13 68 231 1049 228 1129v25c-55 30 -122 22 -182 32l19 103c129 -6 260 -16 390 -16c106 0 212 10 318 16c-4 -30 -11 -60 -19 -89c-69 -24 -142 -35 -210 -62c-22 -54 -27 -113 -37 -170
+c-48 -259 -112 -518 -165 -775c-10 -48 -59 -247 -55 -289l1 -18c61 -14 123 -21 185 -31c-2 -33 -8 -66 -16 -99c-22 0 -43 -3 -65 -3c-57 0 -116 19 -173 20c-69 1 -138 2 -206 2c-89 0 -176 -15 -264 -20z" />
+ <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1542"
+d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v710c0 35 20 44 45 19l710 -710c25 -25 25 -65 0 -90l-710 -710c-25 -25 -45 -16 -45 19v710c-3 -7 -7 -13 -13 -19z" />
+ <glyph glyph-name="steam-square" unicode="&#xf1b7;"
+d="M1242 889c0 106 -87 193 -194 193c-106 0 -193 -87 -193 -193c0 -107 87 -193 193 -193c107 0 194 86 194 193zM632 301c0 -110 -88 -198 -198 -198c-76 0 -142 43 -175 106c33 -13 65 -26 98 -40c80 -32 172 7 205 88c32 80 -7 172 -88 204l-82 33c13 3 28 5 42 5
+c110 0 198 -88 198 -198zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v153l172 -69c26 -121 134 -212 262 -212c140 0 255 107 268 243l345 252c200 0 361 162 361 360c0 200 -161 361 -361 361c-197 0 -358 -160 -360 -357l-225 -322
+c-9 1 -18 1 -28 1c-50 0 -97 -13 -137 -37l-297 119v468c0 159 129 288 288 288h960c159 0 288 -129 288 -288zM1289 887c0 -133 -108 -241 -242 -241c-133 0 -241 108 -241 241c0 134 108 242 241 242c134 0 242 -108 242 -242z" />
+ <glyph glyph-name="medium-square" unicode="&#xf2f8;"
+d="M0 1404h1536v-1536h-1536v1536zM257 1057v-17l97 -116c7 -7 13 -20 13 -30v-4v-456v-9c0 -12 -6 -28 -14 -36l-109 -132v-17h308v17l-109 132c-9 9 -15 26 -15 38v7v395l270 -589h31l232 589v-469c0 -13 0 -16 -8 -24l-84 -80v-18h405v18l-80 79c-5 4 -10 12 -10 19
+c0 1 1 3 1 4v580c0 1 -1 3 -1 4c0 7 5 15 10 19l82 79v17h-285l-203 -507l-232 507h-299z" />
+ <glyph glyph-name="sort-numeric-desc" unicode="&#xf163;" horiz-adv-x="1454"
+d="M1314 1247c0 82 -67 169 -147 169c-70 0 -114 -57 -114 -131c0 -72 46 -133 141 -133c65 0 120 39 120 95zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1424 -142v-114h-469v114h167v432c0 13 1 26 1 36v16h-2l-7 -12c-5 -8 -13 -18 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1454 1189c0 -202 -110 -421 -348 -421c-45 0 -82 7 -108 16c-16 5 -30 10 -42 15l39 113
+c9 -4 20 -8 31 -11c20 -7 46 -13 75 -13c120 0 182 100 201 204h-2c-28 -30 -87 -51 -146 -51c-145 0 -240 114 -240 244c0 138 106 251 253 251c159 0 287 -130 287 -347z" />
+ <glyph glyph-name="video-camera" unicode="&#xf03d;" horiz-adv-x="1792"
+d="M1792 1184v-1088c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-403 403v-166c0 -159 -129 -288 -288 -288h-704c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h704c159 0 288 -129 288 -288v-165l403 402c12 13 28 19 45 19c8 0 17 -2 25 -5
+c23 -10 39 -33 39 -59z" />
+ <glyph glyph-name="thumbs-down" unicode="&#xf165;" horiz-adv-x="1600"
+d="M256 960c0 36 -29 64 -64 64c-36 0 -64 -28 -64 -64c0 -35 28 -64 64 -64c35 0 64 29 64 64zM416 448c0 -35 -29 -64 -64 -64h-288c-35 0 -64 29 -64 64v640c0 35 29 64 64 64h288c35 0 64 -29 64 -64v-640zM1545 597c34 -38 55 -96 55 -149c-1 -104 -88 -192 -192 -192
+h-277c8 -32 18 -42 29 -64c26 -52 56 -110 56 -192c0 -77 0 -256 -224 -256c-17 0 -33 7 -45 19c-43 42 -55 104 -66 163c-12 58 -23 118 -62 157c-31 31 -65 74 -101 120c-44 58 -140 177 -177 180c-33 3 -61 31 -61 64v641c0 35 30 63 64 64c35 1 95 22 158 44
+c108 37 243 84 386 84h129c88 -1 154 -27 197 -78c38 -45 55 -106 49 -181c25 -24 44 -57 54 -94c11 -40 11 -80 0 -117c30 -40 45 -87 43 -137c0 -14 -4 -44 -15 -76z" />
+ <glyph glyph-name="medium" unicode="&#xf23a;"
+d="M182 999v6c0 15 -8 34 -19 44l-144 173v26h446l344 -755l302 755h425v-26l-123 -117c-8 -6 -14 -19 -14 -29c0 -2 1 -4 1 -6v-864c0 -2 -1 -4 -1 -6c0 -10 6 -23 14 -29l120 -117v-26h-602v26l124 120c12 12 12 16 12 35v698l-345 -876h-47l-401 876v-587
+c0 -3 -1 -8 -1 -11c0 -18 10 -44 23 -57l162 -195v-26h-458v26l161 195c12 13 22 38 22 55c0 4 0 9 -1 13v679z" />
+ <glyph glyph-name="chevron-right" unicode="&#xf054;" horiz-adv-x="1036"
+d="M1017 659l-742 -742c-25 -25 -65 -25 -90 0l-166 166c-25 25 -25 65 0 90l531 531l-531 531c-25 25 -25 65 0 90l166 166c25 25 65 25 90 0l742 -742c25 -25 25 -65 0 -90z" />
+ <glyph glyph-name="bus" unicode="&#xf207;"
+d="M384 320c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1408 320c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1362 716l-72 384c-6 30 -32 52 -63 52h-918c-31 0 -57 -22 -63 -52l-72 -384
+c-7 -40 23 -76 63 -76h1062c40 0 70 36 63 76zM1136 1328c0 27 -21 48 -48 48h-640c-26 0 -48 -21 -48 -48s22 -48 48 -48h640c27 0 48 21 48 48zM1536 603v-603h-128v-128c0 -71 -57 -128 -128 -128s-128 57 -128 128v128h-768v-128c0 -71 -57 -128 -128 -128
+s-128 57 -128 128v128h-128v603c0 82 7 143 25 223l103 454c19 160 299 256 640 256s621 -96 640 -256l105 -454c18 -80 23 -141 23 -223z" />
+ <glyph glyph-name="registered" unicode="&#xf25d;" horiz-adv-x="1792"
+d="M1042 833c0 58 -20 99 -60 121c-20 11 -48 18 -117 18h-123v-281h162c88 0 138 52 138 142zM1094 548l205 -373c5 -10 5 -22 -1 -31c-5 -10 -16 -16 -27 -16h-152c-12 0 -23 6 -28 17l-194 365h-155v-350c0 -18 -14 -32 -32 -32h-134c-18 0 -32 14 -32 32v960
+c0 18 14 32 32 32h294c105 0 151 -9 190 -24c113 -42 183 -153 183 -289c0 -123 -61 -227 -158 -275c3 -5 6 -10 9 -16zM896 1376c-406 0 -736 -330 -736 -736s330 -736 736 -736s736 330 736 736s-330 736 -736 736zM1792 640c0 -495 -401 -896 -896 -896
+s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+ <glyph glyph-name="mars" unicode="&#xf222;"
+d="M1472 1408c35 0 64 -29 64 -64v-416c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v262l-382 -383c79 -98 126 -223 126 -359c0 -318 -258 -576 -576 -576s-576 258 -576 576s258 576 576 576c136 0 261 -47 359 -126l382 382h-261c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h416zM576 0c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="hand-rock-o" unicode="&#xf255;"
+d="M768 1152c-71 0 -128 -57 -128 -128v-128h-32v93c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-429l-32 30v172c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-224c0 -31 13 -60 35 -82l310 -296c29 -29 39 -62 39 -102c0 -35 29 -64 64 -64h640
+c35 0 64 29 64 64v25c0 26 3 52 10 77l108 436c7 25 10 51 10 77v246c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-32h-32v125c0 53 -36 102 -89 113c-7 1 -15 2 -23 2c-62 0 -112 -50 -112 -112v-128h-32v122c0 67 -48 126 -115 133c-5 1 -9 1 -13 1zM768 1280
+c54 0 106 -17 149 -50c37 22 80 34 123 34c79 0 152 -38 197 -103c19 5 39 7 59 7c134 0 240 -110 240 -243v-246c0 -36 -5 -73 -13 -108l-109 -436c-6 -24 -6 -47 -6 -71c0 -106 -86 -192 -192 -192h-640c-114 0 -192 91 -192 201l-308 296c-47 45 -76 109 -76 175v224
+c0 132 108 240 240 240c6 0 11 0 16 -1c8 127 114 225 240 225c34 0 67 -7 98 -21c47 45 109 69 174 69z" />
+ <glyph glyph-name="window-close" unicode="&#xf2d3;" horiz-adv-x="1792"
+d="M1175 215l146 146c13 13 13 33 0 46l-233 233l233 233c13 13 13 33 0 46l-146 146c-13 13 -33 13 -46 0l-233 -233l-233 233c-13 13 -33 13 -46 0l-146 -146c-13 -13 -13 -33 0 -46l233 -233l-233 -233c-13 -13 -13 -33 0 -46l146 -146c13 -13 33 -13 46 0l233 233
+l233 -233c13 -13 33 -13 46 0zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1632"
+d="M1440 320c0 26 -10 50 -28 68l-208 208c-18 18 -43 28 -68 28c-29 0 -52 -11 -72 -32c33 -33 72 -61 72 -112c0 -53 -43 -96 -96 -96c-51 0 -79 39 -112 72c-21 -20 -33 -43 -33 -73c0 -25 10 -50 28 -68l206 -207c18 -18 43 -27 68 -27s50 9 68 26l147 146
+c18 18 28 42 28 67zM737 1025c0 25 -10 50 -28 68l-206 207c-18 18 -43 28 -68 28s-50 -10 -68 -27l-147 -146c-18 -18 -28 -42 -28 -67c0 -26 10 -50 28 -68l208 -208c18 -18 43 -27 68 -27c29 0 52 10 72 31c-33 33 -72 61 -72 112c0 53 43 96 96 96c51 0 79 -39 112 -72
+c21 20 33 43 33 73zM1632 320c0 -76 -31 -150 -85 -203l-147 -146c-54 -54 -127 -83 -203 -83c-77 0 -150 30 -204 85l-206 207c-54 54 -83 127 -83 203c0 79 32 154 88 209l-88 88c-55 -56 -129 -88 -208 -88c-76 0 -150 30 -204 84l-208 208c-55 55 -84 127 -84 204
+c0 76 31 150 85 203l147 146c54 54 127 83 203 83c77 0 150 -30 204 -85l206 -207c54 -54 83 -127 83 -203c0 -79 -32 -154 -88 -209l88 -88c55 56 129 88 208 88c76 0 150 -30 204 -84l208 -208c55 -55 84 -127 84 -204z" />
+ <glyph glyph-name="window-minimize" unicode="&#xf2d1;" horiz-adv-x="1792"
+d="M1792 224v-192c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v192c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="eyedropper" unicode="&#xf1fb;" horiz-adv-x="1792"
+d="M1698 1442c125 -125 126 -328 0 -452l-225 -223l104 -104c13 -13 13 -33 0 -46l-210 -210c-13 -13 -33 -13 -46 0l-105 105l-603 -603c-24 -24 -56 -37 -90 -37h-203l-256 -128l-64 64l128 256v203c0 34 13 66 37 90l603 603l-105 105c-13 13 -13 33 0 46l210 210
+c13 13 33 13 46 0l104 -104l223 225c124 126 327 125 452 0zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+ <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1600"
+d="M1600 576c0 -35 -29 -64 -64 -64h-224c0 -125 -27 -219 -67 -290l208 -209c25 -25 25 -65 0 -90c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-198 197s-131 -120 -301 -120v896h-128v-896c-181 0 -313 132 -313 132l-183 -207c-13 -14 -30 -21 -48 -21c-15 0 -30 5 -43 16
+c-26 24 -28 64 -5 91l202 227c-35 69 -58 158 -58 274h-224c-35 0 -64 29 -64 64s29 64 64 64h224v294l-173 173c-25 25 -25 65 0 90s65 25 90 0l173 -173h844l173 173c25 25 65 25 90 0s25 -65 0 -90l-173 -173v-294h224c35 0 64 -29 64 -64zM1120 1152h-640
+c0 177 143 320 320 320s320 -143 320 -320z" />
+ <glyph glyph-name="angellist" unicode="&#xf209;" horiz-adv-x="1258"
+d="M942 1158l-114 -328l117 -21c30 82 165 451 165 518c0 25 -8 56 -38 56c-56 0 -116 -182 -130 -225zM643 471c11 -29 23 -58 33 -88c22 25 45 48 71 67c-35 7 -70 10 -104 21zM351 1367c0 -102 121 -420 159 -521c14 8 32 10 49 10c24 0 51 -3 75 -5l-121 351
+c-13 38 -71 220 -123 220c-27 0 -39 -32 -39 -55zM272 608c0 -73 196 -342 269 -342c20 0 37 22 37 40c0 23 -23 80 -32 102c-26 67 -121 274 -203 274c-27 0 -71 -47 -71 -74zM114 273c0 -36 12 -71 25 -104c79 -195 257 -309 465 -309c152 0 280 58 382 170
+c108 120 152 268 152 427c0 56 1 145 -43 185c-84 74 -369 102 -482 102c-14 0 -38 -1 -49 -11c-12 -5 -12 -24 -12 -35c0 -153 323 -139 420 -139c19 0 28 -5 40 -19c13 -16 17 -35 19 -55c-26 -26 -62 -41 -96 -54c-33 -12 -65 -25 -93 -46c-77 -56 -153 -152 -153 -251
+c0 -62 37 -115 37 -176c0 -1 -7 -23 -7 -26c-114 8 -142 121 -146 216c-12 -3 -28 -2 -41 -2c2 -7 2 -14 2 -21c0 -73 -65 -126 -135 -126c-108 0 -251 127 -251 237c0 30 13 47 33 67c20 -25 41 -50 60 -76c29 -39 79 -104 133 -104c14 0 41 12 41 29
+c0 45 -164 256 -204 256c-63 0 -97 -83 -97 -135zM0 264c0 130 50 216 179 251c-11 29 -28 73 -28 104c0 82 101 184 183 184c24 0 48 -7 70 -15c-42 119 -163 454 -163 567c0 101 51 181 160 181c140 0 299 -504 333 -604c44 110 182 571 338 571c98 0 153 -78 153 -171
+c0 -106 -118 -436 -159 -550c168 -41 192 -177 192 -328c0 -400 -255 -710 -668 -710c-76 0 -151 15 -223 42c-190 72 -367 267 -367 478z" />
+ <glyph glyph-name="chain-broken" unicode="&#xf127;" horiz-adv-x="1664"
+d="M439 265l-256 -256c-7 -6 -15 -9 -23 -9s-16 3 -23 9c-12 13 -12 33 0 46l256 256c13 12 33 12 46 0c12 -13 12 -33 0 -46zM608 224v-320c0 -18 -14 -32 -32 -32s-32 14 -32 32v320c0 18 14 32 32 32s32 -14 32 -32zM384 448c0 -18 -14 -32 -32 -32h-320
+c-18 0 -32 14 -32 32s14 32 32 32h320c18 0 32 -14 32 -32zM1648 320c0 -77 -30 -149 -85 -203l-147 -146c-54 -54 -126 -83 -203 -83s-150 30 -204 85l-334 335c-17 17 -30 36 -42 56l239 18l273 -274c36 -36 100 -37 136 -1l147 146c18 18 28 42 28 67c0 26 -10 50 -28 68
+l-274 275l18 239c20 -12 39 -25 56 -42l336 -336c54 -55 84 -127 84 -204zM1031 1044l-239 -18l-273 274c-18 18 -42 28 -68 28s-50 -10 -68 -27l-147 -146c-18 -18 -28 -42 -28 -67c0 -26 10 -50 28 -68l274 -274l-18 -240c-20 12 -39 25 -56 42l-336 336
+c-54 55 -84 127 -84 204s30 149 85 203l147 146c54 54 126 83 203 83s150 -30 204 -85l334 -335c17 -17 30 -36 42 -56zM1664 960c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32s14 32 32 32h320c18 0 32 -14 32 -32zM1120 1504v-320c0 -18 -14 -32 -32 -32
+s-32 14 -32 32v320c0 18 14 32 32 32s32 -14 32 -32zM1527 1353l-256 -256c-7 -6 -15 -9 -23 -9s-16 3 -23 9c-12 13 -12 33 0 46l256 256c13 12 33 12 46 0c12 -13 12 -33 0 -46z" />
+ <glyph glyph-name="info" unicode="&#xf129;" horiz-adv-x="640"
+d="M640 192v-128c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64v384h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64v-576h64c35 0 64 -29 64 -64zM512 1344v-192c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v192
+c0 35 29 64 64 64h256c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="956"
+d="M876 207l80 -237c-30 -45 -166 -96 -288 -98c-363 -6 -500 258 -500 444v544h-168v215c252 91 313 319 327 449c1 8 8 12 12 12h244v-424h333v-252h-334v-518c0 -70 26 -167 160 -164c44 1 103 14 134 29z" />
+ <glyph glyph-name="line-chart" unicode="&#xf201;" horiz-adv-x="2048"
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435c0 -28 -34 -43 -55 -22l-121 121l-633 -633c-13 -13 -33 -13 -46 0l-233 233l-416 -416l-192 192l585 585c13 13 33 13 46 0l233 -233l464 464l-121 121c-21 21 -6 55 22 55h435c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="long-arrow-up" unicode="&#xf176;" horiz-adv-x="767"
+d="M765 1043c-5 -11 -16 -19 -29 -19h-224v-1248c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v1248h-224c-13 0 -24 7 -29 19s-3 25 5 35l350 384c6 6 14 10 23 10s18 -4 24 -10l355 -384c8 -10 10 -23 5 -35z" />
+ <glyph glyph-name="simplybuilt" unicode="&#xf215;" horiz-adv-x="2048"
+d="M863 504c0 150 -121 271 -271 271c-149 0 -270 -121 -270 -271c0 -149 121 -270 270 -270c150 0 271 121 271 270zM1726 505c0 149 -121 270 -270 270c-150 0 -271 -121 -271 -270c0 -150 121 -271 271 -271c149 0 270 121 270 271zM2048 1314v-1348
+c0 -59 -48 -107 -108 -107h-1832c-60 0 -108 48 -108 107v1348c0 59 48 107 108 107h431c59 0 108 -48 108 -107v-161h754v161c0 59 49 107 108 107h431c60 0 108 -48 108 -107z" />
+ <glyph glyph-name="trash" unicode="&#xf1f8;" horiz-adv-x="1408"
+d="M512 160v704c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM768 160v704c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1024 160v704c0 18 -14 32 -32 32h-64
+c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM480 1152h448l-48 117c-3 4 -12 10 -17 11h-317c-6 -1 -14 -7 -17 -11zM1408 1120v-64c0 -18 -14 -32 -32 -32h-96v-948c0 -110 -72 -204 -160 -204h-832c-88 0 -160 90 -160 200v952h-96
+c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h309l70 167c20 49 80 89 133 89h320c53 0 113 -40 133 -89l70 -167h309c18 0 32 -14 32 -32z" />
+ <glyph glyph-name="free-code-camp" unicode="&#xf2c5;" horiz-adv-x="2304"
+d="M453 -101c0 -28 -25 -54 -53 -54c-4 0 -9 2 -13 3c-56 13 -128 97 -162 140c-156 197 -225 427 -225 676c0 232 70 431 213 614c33 43 131 156 189 156c25 0 51 -20 51 -46c0 -30 -44 -71 -63 -90c-55 -57 -106 -115 -147 -184c-85 -142 -119 -284 -119 -449
+c0 -177 33 -337 123 -491c38 -65 83 -119 136 -173c21 -23 70 -68 70 -102zM1796 33c0 -37 -25 -68 -64 -68h-1081c-35 0 -64 29 -64 64c0 37 25 68 64 68h1081c35 0 64 -29 64 -64zM1581 644c0 -84 -19 -162 -67 -233c-33 -49 -100 -112 -153 -139c-8 -5 -18 -10 -27 -10
+c-8 0 -23 9 -23 18c0 29 122 98 122 232c0 44 -11 93 -35 130c-7 10 -32 42 -46 42c-3 0 -3 -2 -3 -5c0 -24 15 -47 15 -72c0 -32 -39 -48 -66 -48c-47 0 -66 33 -66 76c0 29 3 59 3 88c0 21 -1 27 -10 46c-14 27 -60 82 -93 82c-9 0 -12 0 -12 -9c0 -14 32 -29 32 -80
+c0 -133 -183 -157 -183 -290c0 -60 8 -110 42 -160c21 -31 44 -49 79 -63c9 -3 18 -4 18 -15s-9 -16 -18 -16c-5 0 -28 9 -33 11c-154 56 -271 190 -271 358c0 199 239 373 239 564c0 37 -6 63 -25 94c-11 18 -38 53 -56 64c-8 4 -19 11 -19 21c0 17 29 20 41 20
+c36 0 77 -13 110 -29c139 -66 168 -167 192 -307c6 -33 18 -138 66 -138c31 0 51 21 51 51c0 45 -40 94 -40 119c0 7 4 10 10 10c25 0 77 -53 93 -70c97 -103 133 -203 133 -342zM2304 615c0 -176 -47 -352 -138 -503c-42 -70 -180 -266 -271 -266c-21 0 -46 26 -46 47
+c0 34 117 143 146 180c124 156 183 332 183 531c0 164 -20 297 -93 446c-45 92 -92 154 -163 228c-23 24 -73 69 -73 105c0 25 26 52 51 52c66 0 161 -122 196 -169c134 -180 191 -365 206 -587c1 -21 2 -43 2 -64z" />
+ <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664"
+d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+ <glyph glyph-name="calendar-o" unicode="&#xf133;" horiz-adv-x="1664"
+d="M128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152
+v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792"
+d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64c-123 0 -224 101 -224 224v832c0 123 101 224 224 224h64zM1408 1152v-1280h-1024v1280h128v160c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h128zM1792 928v-832c0 -123 -101 -224 -224 -224h-64v1280h64
+c123 0 224 -101 224 -224z" />
+ <glyph glyph-name="arrow-circle-o-up" unicode="&#xf01b;"
+d="M1118 660c-5 -12 -17 -20 -30 -20h-192v-352c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v352h-192c-18 0 -32 14 -32 32c0 9 4 17 10 24l319 319c7 6 15 9 23 9s16 -3 23 -9l320 -320c9 -10 12 -23 7 -35zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544
+s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="arrow-up" unicode="&#xf062;" horiz-adv-x="1558"
+d="M1558 565c0 -34 -14 -66 -37 -90l-75 -75c-24 -24 -57 -38 -91 -38s-67 14 -90 38l-294 293v-704c0 -72 -60 -117 -128 -117h-128c-68 0 -128 45 -128 117v704l-294 -293c-23 -24 -56 -38 -90 -38s-67 14 -90 38l-75 75c-24 24 -38 56 -38 90s14 67 38 91l651 651
+c23 24 56 37 90 37s67 -13 91 -37l651 -651c23 -24 37 -57 37 -91z" />
+ <glyph glyph-name="venus-mars" unicode="&#xf228;" horiz-adv-x="2048"
+d="M1664 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c98 -123 147 -286 117 -461c-42 -240 -237 -431 -478 -467c-152 -23 -295 14 -409 90c-75 -50 -162 -83 -256 -93v-132h96c18 0 32 -14 32 -32
+v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-314 35 -553 323 -506 654c34 249 232 449 480 487c153 23 296 -14 410 -90c92 61 202 97 320 97c136 0 261 -48 359 -126
+l255 254h-134c-18 0 -32 14 -32 32v64zM896 391c79 81 128 191 128 313s-49 232 -128 313c-79 -81 -128 -191 -128 -313s49 -232 128 -313zM128 704c0 -247 201 -448 448 -448c79 0 154 21 218 57c-95 103 -154 240 -154 391s59 288 154 391c-64 36 -139 57 -218 57
+c-247 0 -448 -201 -448 -448zM1216 256c247 0 448 201 448 448s-201 448 -448 448c-79 0 -154 -21 -218 -57c95 -103 154 -240 154 -391s-59 -288 -154 -391c64 -36 139 -57 218 -57z" />
+ <glyph glyph-name="pause-circle" unicode="&#xf28b;"
+d="M704 352v576c0 18 -14 32 -32 32h-256c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h256c18 0 32 14 32 32zM1152 352v576c0 18 -14 32 -32 32h-256c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h256c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768
+s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="shopping-cart" unicode="&#xf07a;" horiz-adv-x="1664"
+d="M640 0c0 -70 -58 -128 -128 -128s-128 58 -128 128s58 128 128 128s128 -58 128 -128zM1536 0c0 -70 -58 -128 -128 -128s-128 58 -128 128s58 128 128 128s128 -58 128 -128zM1664 1088v-512c0 -32 -25 -60 -57 -64l-1044 -122c5 -23 13 -46 13 -70
+c0 -23 -14 -44 -24 -64h920c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64c0 31 45 106 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c67 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="files-o" unicode="&#xf0c5;" horiz-adv-x="1792"
+d="M1696 1152c53 0 96 -43 96 -96v-1216c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v288h-544c-53 0 -96 43 -96 96v672c0 53 31 127 68 164l408 408c37 37 111 68 164 68h416c53 0 96 -43 96 -96v-328c39 23 89 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323
+l-299 -299h299v299zM708 676l316 316v416h-384v-416c0 -53 -43 -96 -96 -96h-416v-640h512v256c0 53 31 127 68 164zM1664 -128v1152h-384v-416c0 -53 -43 -96 -96 -96h-416v-640h896z" />
+ <glyph glyph-name="th-large" unicode="&#xf009;" horiz-adv-x="1664"
+d="M768 512v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM768 1280v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM1664 512v-384
+c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM1664 1280v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128z" />
+ <glyph glyph-name="at" unicode="&#xf1fa;"
+d="M972 761c0 144 -75 230 -201 230c-166 0 -344 -165 -344 -432c0 -149 74 -234 204 -234c201 0 341 230 341 436zM1536 640c0 -311 -222 -428 -412 -434c-13 0 -18 -1 -32 -1c-62 0 -111 18 -142 53c-19 22 -30 50 -33 83c-62 -78 -170 -154 -305 -154
+c-215 0 -338 133 -338 365c0 319 221 578 491 578c117 0 211 -50 261 -135l2 19l11 56c1 8 8 18 15 18h118c5 0 10 -7 13 -11c3 -3 4 -11 3 -16l-120 -614c-4 -19 -5 -34 -5 -48c0 -54 16 -65 57 -65c68 2 288 30 288 306c0 389 -251 640 -640 640
+c-353 0 -640 -287 -640 -640s287 -640 640 -640c147 0 291 51 405 144c14 12 34 10 45 -4l41 -49c5 -7 8 -15 7 -24c-1 -8 -5 -16 -12 -22c-136 -111 -309 -173 -486 -173c-423 0 -768 345 -768 768s345 768 768 768c459 0 768 -309 768 -768z" />
+ <glyph glyph-name="file" unicode="&#xf15b;"
+d="M1024 1024v472c14 -9 26 -18 36 -28l408 -408c10 -10 19 -22 28 -36h-472zM896 992c0 -53 43 -96 96 -96h544v-1056c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h800v-544z" />
+ <glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="832"
+d="M832 1504v-1339l-449 -236c-13 -7 -26 -12 -40 -12c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73l225 455c9 19 26 41 49 41z" />
+ <glyph glyph-name="futbol-o" unicode="&#xf1e3;" horiz-adv-x="1792"
+d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM1515 186c94 128 149 284 149 454v3l-102 -89l-240 224l63 323l134 -12c-95 131 -231 232 -389 282l53 -124l-287 -159l-287 159
+l53 124c-158 -50 -294 -151 -389 -282l135 12l62 -323l-240 -224l-102 89v-3c0 -170 55 -326 149 -454l30 132l326 -40l139 -298l-116 -69c75 -25 156 -39 240 -39s165 14 240 39l-116 69l139 298l326 40z" />
+ <glyph glyph-name="flag-checkered" unicode="&#xf11e;" horiz-adv-x="1728"
+d="M768 536v192c-122 -11 -269 -60 -384 -117v-185c116 54 260 100 384 110zM768 954v197c-126 -6 -274 -65 -384 -126v-189c118 61 260 113 384 118zM1600 491v184c-91 -45 -250 -112 -384 -71v224c-13 4 -26 9 -39 15c-115 58 -209 112 -360 112c-16 0 -32 -1 -49 -3v-222
+h19c151 0 275 -54 390 -111c13 -6 26 -11 39 -15v-188c27 -11 57 -17 91 -17c111 0 231 59 293 92zM1600 918v189c-80 -43 -192 -91 -306 -91c-27 0 -53 2 -78 8v-196c134 -38 293 39 384 90zM256 1280c0 -47 -26 -88 -64 -110v-1266c0 -18 -14 -32 -32 -32h-64
+c-18 0 -32 14 -32 32v1266c-38 22 -64 63 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -24 -14 -46 -35 -57c-4 -2 -10 -5 -17 -9c-64 -34 -215 -116 -369 -116c-59 0 -112 12 -158 35l-28 14c-101 51 -181 91 -304 91c-144 0 -347 -75 -464 -146
+c-10 -6 -22 -9 -33 -9s-22 3 -32 8c-20 12 -32 33 -32 56v742c0 22 12 43 31 55c64 38 290 163 500 163c167 0 303 -61 418 -117c26 -13 56 -19 89 -19c118 0 248 75 310 112c13 7 24 13 31 17c20 10 43 9 62 -2c19 -12 31 -33 31 -55z" />
+ <glyph glyph-name="genderless" unicode="&#xf22d;" horiz-adv-x="1152"
+d="M1024 576c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1152 576c0 -318 -258 -576 -576 -576s-576 258 -576 576s258 576 576 576s576 -258 576 -576z" />
+ <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1664"
+d="M1024 704c0 35 -29 64 -64 64h-256c-35 0 -64 -29 -64 -64s29 -64 64 -64h256c35 0 64 29 64 64zM1600 896v-960c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v960c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1664 1344v-256c0 -35 -29 -64 -64 -64h-1536
+c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1536c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920"
+d="M384 -64v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM384 320v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM384 704v128c0 35 -29 64 -64 64h-128
+c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1408 -64v512c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h768c35 0 64 29 64 64zM384 1088v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128
+c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 -64v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1408 704v512c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h768c35 0 64 29 64 64z
+M1792 320v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 704v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 1088v128c0 35 -29 64 -64 64h-128
+c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1920 1248v-1344c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1344c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+ <glyph glyph-name="power-off" unicode="&#xf011;"
+d="M1536 640c0 -423 -345 -768 -768 -768s-768 345 -768 768c0 243 112 467 307 613c57 43 137 32 179 -25c43 -56 31 -137 -25 -179c-130 -98 -205 -247 -205 -409c0 -282 230 -512 512 -512s512 230 512 512c0 162 -75 311 -205 409c-56 42 -68 123 -25 179
+c42 57 123 68 179 25c195 -146 307 -370 307 -613zM896 1408v-640c0 -70 -58 -128 -128 -128s-128 58 -128 128v640c0 70 58 128 128 128s128 -58 128 -128z" />
+ <glyph glyph-name="percent" unicode="&#xf295;"
+d="M1280 256c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM512 1024c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM1536 256c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
+s384 -172 384 -384zM1440 1344c0 -14 -5 -27 -13 -38l-1056 -1408c-12 -16 -31 -26 -51 -26h-160c-35 0 -64 29 -64 64c0 14 5 27 13 38l1056 1408c12 16 31 26 51 26h160c35 0 64 -29 64 -64zM768 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
+s384 -172 384 -384z" />
+ <glyph glyph-name="google-wallet" unicode="&#xf1ee;" horiz-adv-x="1756"
+d="M405 864c20 0 40 -10 52 -26c175 -239 297 -495 362 -774h-446c-80 278 -198 532 -367 749c-16 21 0 51 26 51h373zM964 507c-33 -135 -75 -266 -125 -393c-53 209 -138 405 -256 594c26 145 41 294 44 449c141 -227 253 -443 337 -650zM1063 1216
+c299 -412 521 -920 569 -1472h-451c-33 534 -279 1040 -553 1472h435zM1756 640c0 -278 -38 -570 -101 -812c-44 370 -166 738 -359 1083c-17 202 -53 398 -106 584c-5 21 10 41 31 41h359c28 0 54 -19 61 -46c76 -270 115 -556 115 -850z" />
+ <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664"
+d="M1639 1058c25 -36 32 -83 18 -129l-275 -906c-25 -85 -113 -151 -199 -151h-923c-102 0 -211 81 -248 185c-16 45 -16 89 -2 127c2 20 6 40 7 64c1 16 -8 29 -6 41c4 24 25 41 41 68c30 50 64 131 75 183c5 19 -5 41 0 58c5 19 24 33 34 51c27 46 62 135 67 182
+c2 21 -8 44 -2 60c7 23 29 33 44 53c24 33 64 128 70 181c2 17 -8 34 -5 52c4 19 28 39 44 62c42 62 50 199 177 163l-1 -3c17 4 34 9 51 9h761c47 0 89 -21 114 -56c26 -36 32 -83 18 -130l-274 -906c-47 -154 -73 -188 -200 -188h-869c-13 0 -29 -3 -38 -15
+c-8 -12 -9 -21 -1 -43c20 -58 89 -70 144 -70h923c37 0 80 21 91 57l300 987c6 19 6 39 5 57c23 -9 44 -23 59 -43zM575 1056c-6 -18 4 -32 22 -32h608c17 0 36 14 42 32l21 64c6 18 -4 32 -22 32h-608c-17 0 -36 -14 -42 -32zM492 800c-6 -18 4 -32 22 -32h608
+c17 0 36 14 42 32l21 64c6 18 -4 32 -22 32h-608c-17 0 -36 -14 -42 -32z" />
+ <glyph glyph-name="thermometer-three-quarters" unicode="&#xf2c8;" horiz-adv-x="1024"
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v651h128v-651c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+ <glyph glyph-name="transgender" unicode="&#xf224;" horiz-adv-x="1408"
+d="M1024 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c78 -98 126 -223 126 -359c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32
+h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-302 33 -535 302 -510 618c21 272 237 495 507 526c162 19 312 -31 426 -122l255 254h-134c-18 0 -32 14 -32 32v64zM576 256c247 0 448 201 448 448s-201 448 -448 448
+s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="cloud-upload" unicode="&#xf0ee;" horiz-adv-x="1920"
+d="M1280 672c0 8 -3 17 -9 23l-352 352c-6 6 -14 9 -23 9c-8 0 -17 -3 -23 -9l-351 -351c-6 -7 -10 -15 -10 -24c0 -18 14 -32 32 -32h224v-352c0 -17 15 -32 32 -32h192c17 0 32 15 32 32v352h224c18 0 32 15 32 32zM1920 384c0 -212 -172 -384 -384 -384h-1088
+c-247 0 -448 201 -448 448c0 174 101 332 258 405c-1 15 -2 29 -2 43c0 283 229 512 512 512c208 0 395 -126 474 -318c46 40 105 62 166 62c141 0 256 -115 256 -256c0 -49 -14 -97 -41 -138c174 -41 297 -196 297 -374z" />
+ <glyph glyph-name="bullseye" unicode="&#xf140;"
+d="M1024 640c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM1152 640c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM1280 640c0 -283 -229 -512 -512 -512s-512 229 -512 512s229 512 512 512
+s512 -229 512 -512zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="openid" unicode="&#xf19b;" horiz-adv-x="1792"
+d="M1086 1536v-1536l-272 -128c-460 41 -814 286 -814 583c0 286 330 524 767 577v-172c-286 -50 -496 -212 -496 -405c0 -204 234 -373 543 -412v1360zM1755 954l37 -390l-525 114l147 83c-78 46 -174 80 -280 99v172c185 -22 351 -78 481 -157z" />
+ <glyph glyph-name="repeat" unicode="&#xf01e;"
+d="M1536 1280v-448c0 -35 -29 -64 -64 -64h-448c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l138 138c-94 87 -218 137 -349 137c-282 0 -512 -230 -512 -512s230 -512 512 -512c159 0 306 72 404 199c5 7 14 11 23 12c9 0 18 -3 25 -9l137 -138c12 -11 12 -30 2 -43
+c-146 -176 -362 -277 -591 -277c-423 0 -768 345 -768 768s345 768 768 768c197 0 388 -79 529 -212l130 129c18 19 46 24 70 14c23 -10 39 -33 39 -59z" />
+ <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664"
+d="M1664 889c0 -18 -13 -35 -26 -48l-363 -354l86 -500c1 -7 1 -13 1 -20c0 -26 -12 -50 -41 -50c-14 0 -28 5 -40 12l-449 236l-449 -236c-13 -7 -26 -12 -40 -12c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73
+l225 455c9 19 26 41 49 41s40 -22 49 -41l225 -455l502 -73c24 -4 56 -16 56 -46z" />
+ <glyph glyph-name="users" unicode="&#xf0c0;" horiz-adv-x="1920"
+d="M593 640c-104 -3 -198 -48 -265 -128h-134c-100 0 -194 48 -194 159c0 81 -3 353 124 353c21 0 125 -85 260 -85c46 0 90 8 133 23c-3 -22 -5 -44 -5 -66c0 -91 29 -181 81 -256zM1664 3c0 -162 -107 -259 -267 -259h-874c-160 0 -267 97 -267 259c0 226 53 573 346 573
+c34 0 158 -139 358 -139s324 139 358 139c293 0 346 -347 346 -573zM640 1280c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM1344 896c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384zM1920 671
+c0 -111 -94 -159 -194 -159h-134c-67 80 -161 125 -265 128c52 75 81 165 81 256c0 22 -2 44 -5 66c43 -15 87 -23 133 -23c135 0 239 85 260 85c127 0 124 -272 124 -353zM1792 1280c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256z" />
+ <glyph glyph-name="transgender-alt" unicode="&#xf225;" horiz-adv-x="1664"
+d="M1280 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c78 -98 126 -223 126 -359c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32
+h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-288 32 -512 276 -512 572c0 136 48 261 126 359l-52 53l-101 -111c-12 -13 -32 -14 -45 -3l-48 44c-13 11 -14 32 -2 45l105 115l-111 112v-134c0 -18 -14 -32 -32 -32h-64
+c-18 0 -32 14 -32 32v288c0 35 29 64 64 64h288c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-133l106 -107l86 94c12 13 32 14 45 3l48 -44c13 -11 14 -32 2 -45l-90 -99l57 -56c98 78 223 126 359 126s261 -48 359 -126l255 254h-134c-18 0 -32 14 -32 32v64zM832 256
+c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1428"
+d="M1364 486c61 -35 82 -114 47 -175l-64 -110c-35 -61 -114 -82 -175 -47l-266 153v-307c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v307l-266 -153c-61 -35 -140 -14 -175 47l-64 110c-35 61 -14 140 47 175l266 154l-266 154c-61 35 -82 114 -47 175l64 110
+c35 61 114 82 175 47l266 -153v307c0 70 58 128 128 128h128c70 0 128 -58 128 -128v-307l266 153c61 35 140 14 175 -47l64 -110c35 -61 14 -140 -47 -175l-266 -154z" />
+ <glyph glyph-name="plus-circle" unicode="&#xf055;"
+d="M1216 576v128c0 35 -29 64 -64 64h-256v256c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-256h-256c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h256v-256c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v256h256c35 0 64 29 64 64zM1536 640
+c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+ <glyph glyph-name="cart-arrow-down" unicode="&#xf218;" horiz-adv-x="1664"
+d="M1280 832c0 35 -29 64 -64 64c-17 0 -33 -7 -45 -19l-147 -146v293c0 35 -29 64 -64 64s-64 -29 -64 -64v-293l-147 146c-12 12 -28 19 -45 19c-35 0 -64 -29 -64 -64c0 -17 7 -33 19 -45l256 -256c12 -12 28 -19 45 -19s33 7 45 19l256 256c12 12 19 28 19 45zM640 0
+c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1536 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1664 1088v-512c0 -32 -24 -60 -57 -64l-1044 -122c4 -22 13 -47 13 -70s-14 -44 -24 -64h920
+c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64c0 31 47 108 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c68 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
+ <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1664"
+d="M338 829l494 -305l-342 -285l-490 319zM1324 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM490 1418l342 -285l-494 -304l-338 270zM1326 829l338 -271l-489 -319l-343 285zM1175 1418l489 -319l-338 -270l-494 304z" />
+ <glyph glyph-name="wikipedia-w" unicode="&#xf266;" horiz-adv-x="2304"
+d="M1494 -103l-295 695c-117 -229 -246 -468 -357 -695c-1 -1 -54 0 -54 1c-169 395 -346 787 -515 1183c-41 96 -178 252 -272 251c0 11 -1 36 -1 51h583v-50c-69 -4 -190 -48 -156 -123c79 -179 373 -865 452 -1039c54 107 208 393 271 514c-50 102 -211 482 -262 576
+c-35 64 -130 70 -201 71v50l513 -1v-47c-70 -2 -137 -28 -106 -94c68 -144 110 -245 173 -377c20 39 125 250 173 363c32 74 -14 103 -139 106c1 13 0 37 1 49c160 1 400 1 443 2v-49c-81 -3 -165 -46 -209 -114l-213 -442c23 -58 228 -514 249 -564l441 1017
+c-31 83 -131 101 -170 102v50l460 -4l1 -2l-1 -44c-101 -3 -162 -57 -201 -145c-90 -208 -372 -864 -559 -1291h-49z" />
+ <glyph glyph-name="newspaper-o" unicode="&#xf1ea;" horiz-adv-x="2048"
+d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960c0 -35 29 -64 64 -64
+s64 29 64 64zM1920 192v1088h-1536v-1088c0 -22 -4 -44 -11 -64h1483c35 0 64 29 64 64zM2048 1408v-1216c0 -106 -86 -192 -192 -192h-1664c-106 0 -192 86 -192 192v1088h256v128h1792z" />
+ <glyph glyph-name="building" unicode="&#xf1ad;" horiz-adv-x="1408"
+d="M1344 1536c35 0 64 -29 64 -64v-1664c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v1664c0 35 29 64 64 64h1280zM512 1248v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 992v-64c0 -18 14 -32 32 -32h64
+c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 736v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 480v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64
+c-18 0 -32 -14 -32 -32zM384 160v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 672v64
+c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 1184v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64
+c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 -96v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM896 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32z
+M896 672v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 1184v64c0 18 -14 32 -32 32h-64
+c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 160v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64
+c18 0 32 14 32 32zM1152 672v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 1184v64c0 18 -14 32 -32 32
+h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32z" />
+ <glyph glyph-name="bitbucket" unicode="&#xf171;" horiz-adv-x="1408"
+d="M815 677c11 -84 -91 -150 -162 -107c-80 35 -80 162 -2 198c67 41 164 -13 164 -91zM926 698c-18 142 -179 236 -310 177c-83 -37 -139 -125 -135 -218c5 -122 121 -222 243 -211s217 130 202 252zM1165 1240c-44 58 -119 68 -185 79c-187 30 -379 31 -566 -2
+c-62 -10 -132 -21 -171 -77c64 -60 155 -69 237 -79c148 -19 300 -20 448 -1c83 10 175 18 237 80zM1222 205c-28 -98 -12 -230 -116 -287c-179 -99 -396 -110 -593 -75c-104 19 -226 52 -283 150c-25 96 -41 194 -57 292l6 16l18 9c298 -197 715 -197 1014 0
+c47 -14 12 -71 11 -105zM1403 1166c-34 -219 -73 -437 -111 -655c-11 -64 -73 -100 -125 -127c-187 -94 -405 -110 -610 -88c-139 15 -281 52 -394 139c-53 41 -53 111 -63 170c-35 205 -75 410 -100 617c12 90 113 129 188 157c100 37 207 54 313 64c226 22 457 14 676 -50
+c78 -23 162 -55 215 -122c24 -31 16 -70 11 -105z" />
+ <glyph glyph-name="yelp" unicode="&#xf1e9;" horiz-adv-x="1366"
+d="M688 217v-127c-1 -282 -1 -292 -6 -305c-8 -21 -26 -35 -51 -40c-72 -12 -297 71 -344 127c-10 11 -15 24 -17 36c-1 9 1 18 4 26c5 14 14 25 215 263c0 0 1 0 60 70c20 25 56 33 89 21c33 -13 51 -41 50 -71zM539 468c-2 -35 -22 -61 -52 -70l-120 -39
+c-269 -86 -278 -88 -292 -88c-22 1 -42 14 -54 36c-8 16 -14 43 -17 75c-11 98 2 245 31 291c14 22 34 33 56 32c15 0 27 -6 317 -124c0 0 -1 -1 84 -34c30 -12 49 -43 47 -79zM1365 171c-10 -72 -159 -261 -227 -288c-23 -9 -46 -7 -63 7c-12 9 -24 27 -184 287l-47 77
+c-18 28 -15 64 8 92c22 27 54 36 83 26c0 0 1 -1 119 -40c269 -88 278 -91 289 -100c18 -14 26 -35 22 -61zM693 803c5 -104 -39 -117 -54 -122c-14 -4 -58 -17 -114 71c-368 581 -378 598 -378 598c-5 21 1 44 19 62c55 57 354 141 432 121c25 -6 43 -22 49 -45
+c4 -25 40 -564 46 -685zM1355 695c2 -25 -7 -46 -26 -59c-12 -8 -24 -12 -329 -86c-49 -11 -76 -18 -91 -23l1 2c-30 -8 -64 6 -83 36s-18 63 0 87c0 0 1 1 75 102c164 224 172 235 184 243c19 13 42 13 65 2c65 -31 196 -226 204 -301v-3z" />
+ <glyph glyph-name="neuter" unicode="&#xf22c;" horiz-adv-x="1152"
+d="M1152 960c0 -296 -224 -540 -512 -572v-612c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v612c-288 32 -512 276 -512 572c0 318 258 576 576 576s576 -258 576 -576zM576 512c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+ <glyph glyph-name="behance-square" unicode="&#xf1b5;"
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM499 1041h-371v-787h382c143 0 277 68 277 228c0 99 -47 172 -143 200c70 34 107 85 107 164c0 157 -117 195 -252 195zM477 723
+h-176v184h163c62 0 119 -17 119 -90c0 -67 -44 -94 -106 -94zM486 388h-185v217h189c76 0 124 -33 124 -113s-57 -104 -128 -104zM1136 356c-92 0 -140 54 -140 145h411c1 10 1 20 1 30c0 168 -99 309 -278 309c-173 0 -292 -131 -292 -302c0 -178 112 -299 292 -299
+c137 0 225 61 267 191h-138c-15 -48 -76 -74 -123 -74zM1126 722c78 0 117 -47 124 -122h-254c5 75 55 122 130 122zM964 988v-77h319v77h-319z" />
+ <glyph glyph-name="wifi" unicode="&#xf1eb;" horiz-adv-x="1964"
+d="M982 13c-26 0 -166 140 -166 167c0 49 128 76 166 76s166 -27 166 -76c0 -27 -140 -167 -166 -167zM1252 284c-14 0 -123 100 -270 100c-148 0 -255 -100 -270 -100c-24 0 -169 144 -169 168c0 9 4 17 10 23c107 106 281 165 429 165s322 -59 429 -165
+c6 -6 10 -14 10 -23c0 -24 -145 -168 -169 -168zM1525 556c-8 0 -17 4 -23 8c-165 128 -304 204 -520 204c-302 0 -532 -212 -543 -212c-23 0 -167 144 -167 168c0 8 4 16 10 22c179 179 449 278 700 278s521 -99 700 -278c6 -6 10 -14 10 -22c0 -24 -144 -168 -167 -168z
+M1796 827c-8 0 -16 4 -22 9c-231 203 -480 316 -792 316s-561 -113 -792 -316c-6 -5 -14 -9 -22 -9c-23 0 -168 144 -168 168c0 9 4 17 10 23c253 251 618 390 972 390s719 -139 972 -390c6 -6 10 -14 10 -23c0 -24 -145 -168 -168 -168z" />
+ <glyph glyph-name="youtube" unicode="&#xf167;" horiz-adv-x="1482"
+d="M944 292v-211c0 -45 -13 -67 -39 -67c-15 0 -30 7 -45 22v301c15 15 30 22 45 22c26 0 39 -23 39 -67zM1282 291v-46h-90v46c0 45 15 68 45 68s45 -23 45 -68zM316 509h107v94h-312v-94h105v-569h100v569zM604 -60h89v494h-89v-378c-20 -28 -39 -42 -57 -42
+c-12 0 -19 7 -21 21c-1 3 -1 14 -1 35v364h-89v-391c0 -35 3 -58 8 -73c8 -25 29 -37 58 -37c32 0 66 20 102 61v-54zM1033 88v197c0 46 -2 79 -9 99c-11 37 -36 56 -71 56c-33 0 -64 -18 -93 -54v217h-89v-663h89v48c30 -37 61 -55 93 -55c35 0 60 19 71 55
+c7 21 9 54 9 100zM1371 98v13h-91c0 -36 -1 -56 -2 -61c-5 -24 -18 -36 -40 -36c-31 0 -46 23 -46 69v87h179v103c0 53 -9 91 -27 116c-26 34 -61 51 -106 51c-46 0 -81 -17 -107 -51c-19 -25 -28 -63 -28 -116v-173c0 -53 10 -92 29 -116c26 -34 61 -51 108 -51
+s84 18 108 53c11 16 19 34 21 54c2 9 2 29 2 58zM763 1011v210c0 46 -13 69 -43 69c-29 0 -43 -23 -43 -69v-210c0 -46 14 -70 43 -70c30 0 43 24 43 70zM1482 260c0 -115 -1 -238 -26 -350c-19 -79 -83 -137 -160 -145c-184 -21 -370 -21 -555 -21s-371 0 -555 21
+c-77 8 -142 66 -160 145c-26 112 -26 235 -26 350c0 116 1 238 26 350c19 79 83 137 161 146c183 20 369 20 554 20s371 0 555 -20c77 -9 142 -67 160 -146c26 -112 26 -234 26 -350zM484 1536h102l-121 -399v-271h-100v271c-9 49 -29 119 -61 212c-22 62 -44 125 -65 187
+h106l71 -263zM854 1203v-175c0 -53 -9 -93 -28 -118c-25 -34 -60 -51 -106 -51c-45 0 -80 17 -105 51c-19 26 -28 65 -28 118v175c0 53 9 92 28 117c25 34 60 51 105 51c46 0 81 -17 106 -51c19 -25 28 -64 28 -117zM1189 1365v-499h-91v55c-36 -42 -70 -62 -103 -62
+c-29 0 -50 12 -59 37c-5 15 -8 39 -8 75v394h91v-367c0 -21 0 -33 1 -35c2 -14 9 -22 21 -22c18 0 37 14 57 43v381h91z" />
+ <glyph glyph-name="angle-double-down" unicode="&#xf103;" horiz-adv-x="998"
+d="M998 672c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23zM998 1056
+c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23z" />
+ <glyph glyph-name="sort-alpha-asc" unicode="&#xf15d;" horiz-adv-x="1629"
+d="M1159 1128h177l-72 218l-12 47c-1 8 -2 14 -2 20h-4l-3 -20c-3 -12 -4 -27 -11 -47zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192
+c18 0 32 -14 32 -32zM1540 -23v-233h-584v90l369 529c8 12 16 22 21 27l11 9v3c-4 0 -8 -1 -14 -1c-8 -2 -18 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530c-6 -9 -14 -18 -21 -26l-11 -11v-2l14 2c9 2 18 2 30 2h248v119h121zM1629 874v-106h-288v106h75l-47 144h-243
+l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70z" />
+ <glyph glyph-name="area-chart" unicode="&#xf1fe;" horiz-adv-x="2048"
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+ <glyph glyph-name="chevron-up" unicode="&#xf077;" horiz-adv-x="1612"
+d="M1593 205l-166 -165c-25 -25 -65 -25 -90 0l-531 531l-531 -531c-25 -25 -65 -25 -90 0l-166 165c-25 25 -25 66 0 91l742 741c25 25 65 25 90 0l742 -741c25 -25 25 -66 0 -91z" />
+ <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408"
+d="M1280 832c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 832c0 -84 -53 -154 -128 -181v-395c0 -212 -201 -384 -448 -384s-448 172 -448 384v132c-217 27 -384 187 -384 380v512c0 35 29 64 64 64c6 0 11 -1 16 -2c22 39 64 66 112 66
+c71 0 128 -57 128 -128s-57 -128 -128 -128c-23 0 -45 7 -64 18v-402c0 -141 144 -256 320 -256s320 115 320 256v402c-19 -11 -41 -18 -64 -18c-71 0 -128 57 -128 128s57 128 128 128c48 0 90 -27 112 -66c5 1 10 2 16 2c35 0 64 -29 64 -64v-512
+c0 -193 -167 -353 -384 -380v-132c0 -141 144 -256 320 -256s320 115 320 256v395c-75 27 -128 97 -128 181c0 106 86 192 192 192s192 -86 192 -192z" />
+ <glyph glyph-name="step-forward" unicode="&#xf051;" horiz-adv-x="1024"
+d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v678c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-1408c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v678c-3 -7 -7 -13 -13 -19z" />
+ <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1542"
+d="M1497 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-710c0 -35 -20 -44 -45 -19l-710 710c-25 25 -25 65 0 90l710 710c25 25 45 16 45 -19v-710c3 7 7 13 13 19z" />
+ </font>
+</defs></svg>
diff --git a/library/fork-awesome/fonts/forkawesome-webfont.ttf b/library/fork-awesome/fonts/forkawesome-webfont.ttf
new file mode 100644
index 000000000..0c06f96cb
--- /dev/null
+++ b/library/fork-awesome/fonts/forkawesome-webfont.ttf
Binary files differ
diff --git a/library/fork-awesome/fonts/forkawesome-webfont.woff b/library/fork-awesome/fonts/forkawesome-webfont.woff
new file mode 100644
index 000000000..ee6a89acb
--- /dev/null
+++ b/library/fork-awesome/fonts/forkawesome-webfont.woff
Binary files differ
diff --git a/library/fork-awesome/fonts/forkawesome-webfont.woff2 b/library/fork-awesome/fonts/forkawesome-webfont.woff2
new file mode 100644
index 000000000..de312f8f2
--- /dev/null
+++ b/library/fork-awesome/fonts/forkawesome-webfont.woff2
Binary files differ
diff --git a/library/popper/popper.min.js b/library/popper/popper.min.js
deleted file mode 100644
index ce33a863d..000000000
--- a/library/popper/popper.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*
- Copyright (C) Federico Zivolo 2017
- Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
- */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=window.getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e||-1!==['HTML','BODY','#document'].indexOf(e.nodeName))return window.document.body;var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:window.document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return window.document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var f=a.commonAncestorContainer;if(e!==f&&t!==f||i.contains(n))return p(f)?f:r(f);var l=s(e);return l.host?d(l.host,t):d(e,s(t).host)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',i=e.nodeName;if('BODY'===i||'HTML'===i){var n=window.document.documentElement,r=window.document.scrollingElement||n;return r[o]}return e[o]}function f(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=a(t,'top'),n=a(t,'left'),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function l(e,t){var o='x'===t?'Left':'Top',i='Left'==o?'Right':'Bottom';return+e['border'+o+'Width'].split('px')[0]+ +e['border'+i+'Width'].split('px')[0]}function m(e,t,o,i){return _(t['offset'+e],o['client'+e],o['offset'+e],ie()?o['offset'+e]+i['margin'+('Height'===e?'Top':'Left')]+i['margin'+('Height'===e?'Bottom':'Right')]:0)}function h(){var e=window.document.body,t=window.document.documentElement,o=ie()&&window.getComputedStyle(t);return{height:m('Height',e,t,o),width:m('Width',e,t,o)}}function c(e){return se({},e,{right:e.left+e.width,bottom:e.top+e.height})}function g(e){var o={};if(ie())try{o=e.getBoundingClientRect();var i=a(e,'top'),n=a(e,'left');o.top+=i,o.left+=n,o.bottom+=i,o.right+=n}catch(e){}else o=e.getBoundingClientRect();var r={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},p='HTML'===e.nodeName?h():{},s=p.width||e.clientWidth||r.right-r.left,d=p.height||e.clientHeight||r.bottom-r.top,f=e.offsetWidth-s,m=e.offsetHeight-d;if(f||m){var g=t(e);f-=l(g,'x'),m-=l(g,'y'),r.width-=f,r.height-=m}return c(r)}function u(e,o){var i=ie(),r='HTML'===o.nodeName,p=g(e),s=g(o),d=n(e),a=t(o),l=+a.borderTopWidth.split('px')[0],m=+a.borderLeftWidth.split('px')[0],h=c({top:p.top-s.top-l,left:p.left-s.left-m,width:p.width,height:p.height});if(h.marginTop=0,h.marginLeft=0,!i&&r){var u=+a.marginTop.split('px')[0],b=+a.marginLeft.split('px')[0];h.top-=l-u,h.bottom-=l-u,h.left-=m-b,h.right-=m-b,h.marginTop=u,h.marginLeft=b}return(i?o.contains(d):o===d&&'BODY'!==d.nodeName)&&(h=f(h,o)),h}function b(e){var t=window.document.documentElement,o=u(e,t),i=_(t.clientWidth,window.innerWidth||0),n=_(t.clientHeight,window.innerHeight||0),r=a(t),p=a(t,'left'),s={top:r-o.top+o.marginTop,left:p-o.left+o.marginLeft,width:i,height:n};return c(s)}function y(e){var i=e.nodeName;return'BODY'===i||'HTML'===i?!1:'fixed'===t(e,'position')||y(o(e))}function w(e,t,i,r){var p={top:0,left:0},s=d(e,t);if('viewport'===r)p=b(s);else{var a;'scrollParent'===r?(a=n(o(e)),'BODY'===a.nodeName&&(a=window.document.documentElement)):'window'===r?a=window.document.documentElement:a=r;var f=u(a,s);if('HTML'===a.nodeName&&!y(s)){var l=h(),m=l.height,c=l.width;p.top+=f.top-f.marginTop,p.bottom=m+f.top,p.left+=f.left-f.marginLeft,p.right=c+f.left}else p=f}return p.left+=i,p.top+=i,p.right-=i,p.bottom-=i,p}function v(e){var t=e.width,o=e.height;return t*o}function E(e,t,o,i,n){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=w(o,i,r,n),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return se({key:e},s[e],{area:v(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),f=0<a.length?a[0].key:d[0].key,l=e.split('-')[1];return f+(l?'-'+l:'')}function x(e,t,o){var i=d(t,o);return u(o,i)}function O(e){var t=window.getComputedStyle(e),o=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),n={width:e.offsetWidth+i,height:e.offsetHeight+o};return n}function L(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function S(e,t,o){o=o.split('-')[0];var i=O(e),n={width:i.width,height:i.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return n[p]=t[p]+t[d]/2-i[d]/2,n[s]=o===s?t[s]-i[a]:t[L(s)],n}function T(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function C(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var i=T(e,function(e){return e[t]===o});return e.indexOf(i)}function N(t,o,i){var n=void 0===i?t:t.slice(0,C(t,'name',i));return n.forEach(function(t){t.function&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var i=t.function||t.fn;t.enabled&&e(i)&&(o.offsets.popper=c(o.offsets.popper),o.offsets.reference=c(o.offsets.reference),o=i(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=x(this.state,this.popper,this.reference),e.placement=E(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=S(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position='absolute',e=N(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,i=e.enabled;return i&&o===t})}function B(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length-1;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof window.document.body.style[r])return r}return null}function D(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.left='',this.popper.style.position='',this.popper.style.top='',this.popper.style[B('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function H(e,t,o,i){var r='BODY'===e.nodeName,p=r?window:e;p.addEventListener(t,o,{passive:!0}),r||H(n(p.parentNode),t,o,i),i.push(p)}function P(e,t,o,i){o.updateBound=i,window.addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return H(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function A(){this.state.eventsEnabled||(this.state=P(this.reference,this.options,this.state,this.scheduleUpdate))}function M(e,t){return window.removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function I(){this.state.eventsEnabled&&(window.cancelAnimationFrame(this.scheduleUpdate),this.state=M(this.reference,this.state))}function R(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function U(e,t){Object.keys(t).forEach(function(o){var i='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&R(t[o])&&(i='px'),e.style[o]=t[o]+i})}function Y(e,t){Object.keys(t).forEach(function(o){var i=t[o];!1===i?e.removeAttribute(o):e.setAttribute(o,t[o])})}function F(e,t,o){var i=T(e,function(e){var o=e.name;return o===t}),n=!!i&&e.some(function(e){return e.name===o&&e.enabled&&e.order<i.order});if(!n){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return n}function j(e){return'end'===e?'start':'start'===e?'end':e}function K(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=ae.indexOf(e),i=ae.slice(o+1).concat(ae.slice(0,o));return t?i.reverse():i}function q(e,t,o,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],p=n[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=i;}var d=c(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?_(document.documentElement.clientHeight,window.innerHeight||0):_(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function G(e,t,o,i){var n=[0,0],r=-1!==['right','left'].indexOf(i),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(T(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,i){var n=(1===i?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return q(e,n,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,i){R(o)&&(n[t]+=o*('-'===e[i-1]?-1:1))})}),n}for(var z=Math.min,V=Math.floor,_=Math.max,X=['native code','[object MutationObserverConstructor]'],Q=function(e){return X.some(function(t){return-1<(e||'').toString().indexOf(t)})},J='undefined'!=typeof window,Z=['Edge','Trident','Firefox'],$=0,ee=0;ee<Z.length;ee+=1)if(J&&0<=navigator.userAgent.indexOf(Z[ee])){$=1;break}var i,te=J&&Q(window.MutationObserver),oe=te?function(e){var t=!1,o=0,i=document.createElement('span'),n=new MutationObserver(function(){e(),t=!1});return n.observe(i,{attributes:!0}),function(){t||(t=!0,i.setAttribute('x-index',o),++o)}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},$))}},ie=function(){return void 0==i&&(i=-1!==navigator.appVersion.indexOf('MSIE 10')),i},ne=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},re=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,i){return o&&e(t.prototype,o),i&&e(t,i),t}}(),pe=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},se=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var i in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},de=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],ae=de.slice(3),fe={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},le=function(){function t(o,i){var n=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};ne(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=oe(this.update.bind(this)),this.options=se({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o.jquery?o[0]:o,this.popper=i.jquery?i[0]:i,this.options.modifiers={},Object.keys(se({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){n.options.modifiers[e]=se({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return se({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return re(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return D.call(this)}},{key:'enableEventListeners',value:function(){return A.call(this)}},{key:'disableEventListeners',value:function(){return I.call(this)}}]),t}();return le.Utils=('undefined'==typeof window?global:window).PopperUtils,le.placements=de,le.Defaults={placement:'bottom',eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],i=t.split('-')[1];if(i){var n=e.offsets,r=n.reference,p=n.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',f={start:pe({},d,r[d]),end:pe({},d,r[d]+r[a]-p[a])};e.offsets.popper=se({},p,f[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=n.split('-')[0];return o=R(+i)?[+i,0]:G(i,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||r(e.instance.popper);e.instance.reference===o&&(o=r(o));var i=w(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=i;var n=t.priority,p=e.offsets.popper,s={primary:function(e){var o=p[e];return p[e]<i[e]&&!t.escapeWithReference&&(o=_(p[e],i[e])),pe({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=p[o];return p[e]>i[e]&&!t.escapeWithReference&&(n=z(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=V,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(i[d])&&(e.offsets.popper[d]=r(i[d])-o[a]),o[d]>r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var o=t.element;if('string'==typeof o){if(o=e.instance.popper.querySelector(o),!o)return e;}else if(!e.instance.popper.contains(o))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var i=e.placement.split('-')[0],n=e.offsets,r=n.popper,p=n.reference,s=-1!==['left','right'].indexOf(i),d=s?'height':'width',a=s?'top':'left',f=s?'left':'top',l=s?'bottom':'right',m=O(o)[d];p[l]-m<r[a]&&(e.offsets.popper[a]-=r[a]-(p[l]-m)),p[a]+m>r[l]&&(e.offsets.popper[a]+=p[a]+m-r[l]);var h=p[a]+p[d]/2-m/2,g=h-c(e.offsets.popper)[a];return g=_(z(r[d]-m,g),0),e.arrowElement=o,e.offsets.arrow={},e.offsets.arrow[a]=Math.round(g),e.offsets.arrow[f]='',e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=w(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=L(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case fe.FLIP:p=[i,n];break;case fe.CLOCKWISE:p=K(i);break;case fe.COUNTERCLOCKWISE:p=K(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=L(i);var a=e.offsets.popper,f=e.offsets.reference,l=V,m='left'===i&&l(a.right)>l(f.left)||'right'===i&&l(a.left)<l(f.right)||'top'===i&&l(a.bottom)>l(f.top)||'bottom'===i&&l(a.top)<l(f.bottom),h=l(a.left)<l(o.left),c=l(a.right)>l(o.right),g=l(a.top)<l(o.top),u=l(a.bottom)>l(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,y=-1!==['top','bottom'].indexOf(i),w=!!t.flipVariations&&(y&&'start'===r&&h||y&&'end'===r&&c||!y&&'start'===r&&g||!y&&'end'===r&&u);(m||b||w)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),w&&(r=j(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=N(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[t]-(s?n[p?'width':'height']:0),e.placement=L(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,i=t.y,n=e.offsets.popper,p=T(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==p&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===p?t.gpuAcceleration:p,f=r(e.instance.popper),l=g(f),m={position:n.position},h={left:V(n.left),top:V(n.top),bottom:V(n.bottom),right:V(n.right)},c='bottom'===o?'top':'bottom',u='right'===i?'left':'right',b=B('transform');if(d='bottom'==c?-l.height+h.bottom:h.top,s='right'==u?-l.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[u]=0,m.willChange='transform';else{var y='bottom'==c?-1:1,w='right'==u?-1:1;m[c]=d*y,m[u]=s*w,m.willChange=c+', '+u}var v={"x-placement":e.placement};return e.attributes=se({},v,e.attributes),e.styles=se({},m,e.styles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return U(e.instance.popper,e.styles),Y(e.instance.popper,e.attributes),e.offsets.arrow&&U(e.arrowElement,e.offsets.arrow),e},onLoad:function(e,t,o,i,n){var r=x(n,t,e),p=E(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),U(t,{position:'absolute'}),o},gpuAcceleration:void 0}}},le});
diff --git a/tests/phpunit-pgsql.xml b/tests/phpunit-pgsql.xml
index ec4a6fc2d..078056d56 100644
--- a/tests/phpunit-pgsql.xml
+++ b/tests/phpunit-pgsql.xml
@@ -32,4 +32,15 @@
highLowerBound="70"/>
<log type="testdox-text" target="./results/testdox.txt"/>
</logging>
+ <php>
+ <!-- Default test database config, only used if no environment variables
+ with same names are set.
+ !!! Never run against a real database, it will truncate all tables -->
+ <env name="hz_db_server" value="127.0.0.1"/>
+ <env name="hz_db_scheme" value="pgsql"/>
+ <env name="hz_db_port" value="5432"/>
+ <env name="hz_db_user" value="travis_hz"/>
+ <env name="hz_db_pass" value="hubzilla"/>
+ <env name="hz_db_database" value="travis_hubzilla"/>
+ </php>
</phpunit>
diff --git a/tests/phpunit.xml.dist b/tests/phpunit.xml.dist
index a22317b08..97c84fb81 100644
--- a/tests/phpunit.xml.dist
+++ b/tests/phpunit.xml.dist
@@ -35,4 +35,15 @@
highLowerBound="70"/>
<log type="testdox-text" target="./results/testdox.txt"/>
</logging>
+ <php>
+ <!-- Default test database config, only used if no environment variables
+ with same names are set.
+ !!! Never run against a real database, it will truncate all tables -->
+ <env name="hz_db_server" value="127.0.0.1"/>
+ <env name="hz_db_scheme" value="mysql"/>
+ <env name="hz_db_port" value="3306"/>
+ <env name="hz_db_user" value="travis_hz"/>
+ <env name="hz_db_pass" value="hubzilla"/>
+ <env name="hz_db_database" value="travis_hubzilla"/>
+ </php>
</phpunit>
diff --git a/tests/travis/prepare_mysql.sh b/tests/travis/prepare_mysql.sh
index 095ad7e25..5b1c96d78 100755
--- a/tests/travis/prepare_mysql.sh
+++ b/tests/travis/prepare_mysql.sh
@@ -25,7 +25,7 @@
# Exit if anything fails
set -e
-echo "Preparing for MySQL ..."
+echo "Preparing for MySQL/MariaDB ..."
if [[ "$MYSQL_VERSION" == "5.7" ]]; then
echo "Using MySQL 5.7 in Docker container, need to use TCP"
@@ -41,13 +41,13 @@ mysql $PROTO -e "SHOW VARIABLES LIKE 'character_set%';"
mysql $PROTO -e "SELECT @@sql_mode;"
# Create Hubzilla database
-mysql $PROTO -u root -e "CREATE DATABASE IF NOT EXISTS hubzilla;";
-mysql $PROTO -u root -e "CREATE USER 'hubzilla'@'localhost' IDENTIFIED BY 'hubzilla';"
-mysql $PROTO -u root -e "GRANT ALL ON hubzilla.* TO 'hubzilla'@'localhost';"
+mysql $PROTO -u root -e "CREATE DATABASE IF NOT EXISTS travis_hubzilla;";
+mysql $PROTO -u root -e "CREATE USER 'travis_hz'@'%' IDENTIFIED BY 'hubzilla';"
+mysql $PROTO -u root -e "GRANT ALL ON travis_hubzilla.* TO 'travis_hz'@'%';"
# Import table structure
-mysql $PROTO -u root hubzilla < ./install/schema_mysql.sql
+mysql $PROTO -u root travis_hubzilla < ./install/schema_mysql.sql
# Show databases and tables
mysql $PROTO -u root -e "SHOW DATABASES;"
-mysql $PROTO -u root -e "USE hubzilla; SHOW TABLES;"
+mysql $PROTO -u root -e "USE travis_hubzilla; SHOW TABLES;"
diff --git a/tests/travis/prepare_pgsql.sh b/tests/travis/prepare_pgsql.sh
index 63c7388cb..0175b9858 100755
--- a/tests/travis/prepare_pgsql.sh
+++ b/tests/travis/prepare_pgsql.sh
@@ -33,12 +33,17 @@ psql --version
psql -U postgres -c "SELECT VERSION();"
# Create Hubzilla database
-psql -U postgres -c "DROP DATABASE IF EXISTS hubzilla;"
-psql -U postgres -c "CREATE DATABASE hubzilla;"
+psql -U postgres -c "DROP DATABASE IF EXISTS travis_hubzilla;"
+psql -U postgres -v ON_ERROR_STOP=1 <<-EOSQL
+ CREATE USER travis_hz WITH PASSWORD 'hubzilla';
+ CREATE DATABASE travis_hubzilla;
+ ALTER DATABASE travis_hubzilla OWNER TO travis_hz;
+ GRANT ALL PRIVILEGES ON DATABASE travis_hubzilla TO travis_hz;
+EOSQL
# Import table structure
-psql -U postgres -v ON_ERROR_STOP=1 hubzilla < ./install/schema_postgres.sql
+psql -U travis_hz -v ON_ERROR_STOP=1 travis_hubzilla < ./install/schema_postgres.sql
# Show databases and tables
psql -U postgres -l
-psql -U postgres -d hubzilla -c "\dt;"
+psql -U postgres -d travis_hubzilla -c "\dt;"
diff --git a/tests/unit/AutonameTest.php b/tests/unit/AutonameTest.php
index 33e237bb9..566fe6149 100644
--- a/tests/unit/AutonameTest.php
+++ b/tests/unit/AutonameTest.php
@@ -62,13 +62,16 @@ class AutonameTest extends TestCase {
/**
* test with a length, that may be too short
+ * length is maximum - autoname can return something shorter.
*/
public function testAutonameLength1() {
$autoname1=autoname(1);
- $this->assertEquals(1, strlen($autoname1));
+ $test = ((strlen($autoname1) < 2) ? 1 : 0);
+ $this->assertEquals(1, $test);
$autoname2=autoname(1);
- $this->assertEquals(1, strlen($autoname2));
+ $test = ((strlen($autoname2) < 2) ? 1 : 0);
+ $this->assertEquals(1, $test);
// The following test is problematic, with only 26 possibilities
// generating the same thing twice happens often aka
diff --git a/tests/unit/DatabaseTestCase.php b/tests/unit/DatabaseTestCase.php
new file mode 100644
index 000000000..18c1cfb17
--- /dev/null
+++ b/tests/unit/DatabaseTestCase.php
@@ -0,0 +1,68 @@
+<?php
+/* Copyright (c) 2017 Hubzilla
+ *
+ * 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.
+ */
+
+namespace Zotlabs\Tests\Unit;
+
+use PHPUnit\DbUnit\TestCaseTrait;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @brief Base class for our Database Unit Tests.
+ *
+ * @warning Never run these tests against a production database, because all
+ * tables will get truncated and there is no way to recover without a backup.
+ *
+ * @author Klaus Weidenbach
+ */
+abstract class DatabaseTestCase extends TestCase {
+
+ use TestCaseTrait;
+
+ /**
+ * Only instantiate PDO once for test clean-up/fixture load.
+ *
+ * @var \PDO
+ */
+ static private $pdo = null;
+
+ /**
+ * Only instantiate \PHPUnit\DbUnit\Database\Connection once per test.
+ *
+ * @var \PHPUnit\DbUnit\Database\Connection
+ */
+ private $conn = null;
+
+
+ final public function getConnection() {
+ if ($this->conn === null) {
+ if (self::$pdo === null) {
+ $dsn = \getenv('hz_db_scheme') . ':host=' . \getenv('hz_db_server')
+ . ';port=' . \getenv('hz_db_port') . ';dbname=' . \getenv('hz_db_database');
+
+ self::$pdo = new \PDO($dsn, \getenv('hz_db_user'), \getenv('hz_db_pass'));
+ }
+ $this->conn = $this->createDefaultDBConnection(self::$pdo, \getenv('hz_db_database'));
+ }
+
+ return $this->conn;
+ }
+}
diff --git a/tests/unit/includes/dba/DBATest.php b/tests/unit/includes/dba/DBATest.php
new file mode 100644
index 000000000..900d13083
--- /dev/null
+++ b/tests/unit/includes/dba/DBATest.php
@@ -0,0 +1,67 @@
+<?php
+/*
+ * Copyright (c) 2017 Hubzilla
+ *
+ * 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.
+ */
+
+namespace Zotlabs\Tests\Unit\includes;
+
+use Zotlabs\Tests\Unit\UnitTestCase;
+
+// required because of process isolation and no autoloading
+require_once 'include/dba/dba_driver.php';
+
+/**
+ * @brief Unit Test case for include/dba/DBA.php file.
+ *
+ * This test needs process isolation because of static \DBA.
+ * @runTestsInSeparateProcesses
+ */
+class DBATest extends UnitTestCase {
+
+ public function testDbaFactoryMysql() {
+ $this->assertNull(\DBA::$dba);
+
+ $ret = \DBA::dba_factory('server', 'port', 'user', 'pass', 'db', '0');
+ $this->assertInstanceOf('dba_pdo', $ret);
+ $this->assertFalse($ret->connected);
+
+ $this->assertSame('mysql', \DBA::$scheme);
+ $this->assertSame('schema_mysql.sql', \DBA::$install_script);
+ $this->assertSame('0001-01-01 00:00:00', \DBA::$null_date);
+ $this->assertSame('UTC_TIMESTAMP()', \DBA::$utc_now);
+ $this->assertSame('`', \DBA::$tquot);
+ }
+
+ public function testDbaFactoryPostgresql() {
+ $this->assertNull(\DBA::$dba);
+
+ $ret = \DBA::dba_factory('server', 'port', 'user', 'pass', 'db', '1');
+ $this->assertInstanceOf('dba_pdo', $ret);
+ $this->assertFalse($ret->connected);
+
+ $this->assertSame('pgsql', \DBA::$scheme);
+ $this->assertSame('schema_postgres.sql', \DBA::$install_script);
+ $this->assertSame('0001-01-01 00:00:00', \DBA::$null_date);
+ $this->assertSame("now() at time zone 'UTC'", \DBA::$utc_now);
+ $this->assertSame('"', \DBA::$tquot);
+ }
+
+}
diff --git a/tests/unit/includes/dba/_files/account.yml b/tests/unit/includes/dba/_files/account.yml
new file mode 100644
index 000000000..344bdb799
--- /dev/null
+++ b/tests/unit/includes/dba/_files/account.yml
@@ -0,0 +1,9 @@
+account:
+ -
+ account_id: 42
+ account_email: "hubzilla@example.com"
+ account_language: "no"
+ -
+ account_id: 43
+ account_email: "hubzilla@example.org"
+ account_language: "de"
diff --git a/tests/unit/includes/dba/dba_pdoTest.php b/tests/unit/includes/dba/dba_pdoTest.php
new file mode 100644
index 000000000..12e574d42
--- /dev/null
+++ b/tests/unit/includes/dba/dba_pdoTest.php
@@ -0,0 +1,189 @@
+<?php
+/*
+ * Copyright (c) 2017 Hubzilla
+ *
+ * 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.
+ */
+
+namespace Zotlabs\Tests\Unit\includes;
+
+use Zotlabs\Tests\Unit\DatabaseTestCase;
+use PHPUnit\DbUnit\TestCaseTrait;
+use PHPUnit\DbUnit\DataSet\YamlDataSet;
+
+require_once 'include/dba/dba_pdo.php';
+
+/**
+ * @brief Unit Test case for include/dba/dba_pdo.php file.
+ *
+ * Some very basic tests to see if our database layer can connect to a real
+ * database.
+ */
+class dba_pdoTest extends DatabaseTestCase {
+
+ use TestCaseTrait;
+
+ /**
+ * @var \dba_driver
+ */
+ protected $dba;
+
+
+ /**
+ * Set initial state of the database before each test is executed.
+ * Load database fixtures.
+ *
+ * @return \PHPUnit\DbUnit\DataSet\IDataSet
+ */
+ public function getDataSet() {
+ return new YamlDataSet(dirname(__FILE__) . '/_files/account.yml');
+ }
+
+ protected function setUp() {
+ // Will invoke getDataSet() to load fixtures into DB
+ parent::setUp();
+
+ $this->dba = new \dba_pdo(
+ \getenv('hz_db_server'),
+ \getenv('hz_db_scheme'),
+ \getenv('hz_db_port'),
+ \getenv('hz_db_user'),
+ \getenv('hz_db_pass'),
+ \getenv('hz_db_database')
+ );
+ }
+ protected function assertPreConditions() {
+ $this->assertSame('pdo', $this->dba->getdriver(), "Driver is expected to be 'pdo'.");
+ $this->assertInstanceOf('dba_driver', $this->dba);
+ $this->assertTrue($this->dba->connected, 'Pre condition failed, DB is not connected.');
+ $this->assertInstanceOf('PDO', $this->dba->db);
+ }
+ protected function tearDown() {
+ $this->dba = null;
+ }
+
+
+ /**
+ * @group mysql
+ */
+ public function testQuoteintervalOnMysql() {
+ $this->assertSame('value', $this->dba->quote_interval('value'));
+ }
+ /**
+ * @group postgresql
+ */
+ public function testQuoteintervalOnPostgresql() {
+ $this->assertSame("'value'", $this->dba->quote_interval('value'));
+ }
+
+ /**
+ * @group mysql
+ */
+ public function testGenerateMysqlConcatSql() {
+ $this->assertSame('GROUP_CONCAT(DISTINCT field SEPARATOR \';\')', $this->dba->concat('field', ';'));
+ $this->assertSame('GROUP_CONCAT(DISTINCT field2 SEPARATOR \' \')', $this->dba->concat('field2', ' '));
+ }
+ /**
+ * @group postgresql
+ */
+ public function testGeneratePostgresqlConcatSql() {
+ $this->assertSame('string_agg(field,\';\')', $this->dba->concat('field', ';'));
+ $this->assertSame('string_agg(field2,\' \')', $this->dba->concat('field2', ' '));
+ }
+
+
+ public function testConnectToSqlServer() {
+ // connect() is done in dba_pdo constructor which is called in setUp()
+ $this->assertTrue($this->dba->connected);
+ }
+
+ /**
+ * @depends testConnectToSqlServer
+ */
+ public function testCloseSqlServerConnection() {
+ $this->dba->close();
+
+ $this->assertNull($this->dba->db);
+ $this->assertFalse($this->dba->connected);
+ }
+
+ /**
+ * @depends testConnectToSqlServer
+ */
+ public function testSelectQueryShouldReturnArray() {
+ $ret = $this->dba->q('SELECT * FROM account');
+
+ $this->assertTrue(is_array($ret));
+ }
+
+ /**
+ * @depends testConnectToSqlServer
+ */
+ public function testInsertQueryShouldReturnPdostatement() {
+ // Fixture account.yml adds two entries to account table
+ $this->assertEquals(2, $this->getConnection()->getRowCount('account'), 'Pre-Condition');
+
+ $ret = $this->dba->q('INSERT INTO account
+ (account_id, account_email, account_language)
+ VALUES (100, \'insert@example.com\', \'de\')
+ ');
+ $this->assertInstanceOf('PDOStatement', $ret);
+
+ $this->assertEquals(3, $this->getConnection()->getRowCount('account'), 'Inserting failed');
+ }
+
+
+ public function testConnectToWrongSqlServer() {
+ $nodba = new \dba_pdo('wrongserver',
+ \getenv('hz_db_scheme'), \getenv('hz_db_port'),
+ \getenv('hz_db_user'), \getenv('hz_db_pass'),
+ \getenv('hz_db_database')
+ );
+
+ $this->assertSame('pdo', $nodba->getdriver());
+ $this->assertInstanceOf('dba_pdo', $nodba);
+ $this->assertFalse($nodba->connected);
+ $this->assertNull($nodba->db);
+
+ $this->assertFalse($nodba->q('SELECT * FROM account'));
+ }
+
+ /**
+ * @depends testConnectToSqlServer
+ */
+ public function testSelectQueryToNonExistentTableShouldReturnFalse() {
+ $ret = $this->dba->q('SELECT * FROM non_existent_table');
+
+ $this->assertFalse($ret);
+ }
+
+ /**
+ * @depends testConnectToSqlServer
+ */
+ public function testInsertQueryToNonExistentTableShouldReturnEmptyArray() {
+ $ret = $this->dba->q('INSERT INTO non_existent_table
+ (account_email, account_language)
+ VALUES (\'email@example.com\', \'en\')
+ ');
+
+ $this->assertNotInstanceOf('PDOStatement', $ret);
+ $this->isEmpty($ret);
+ }
+
+}
diff --git a/util/hmessages.po b/util/hmessages.po
index 067768907..b3f7ba431 100644
--- a/util/hmessages.po
+++ b/util/hmessages.po
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 3.0RC\n"
+"Project-Id-Version: 3.3.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-13 12:54+0100\n"
+"POT-Creation-Date: 2018-03-01 08:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -146,13 +146,13 @@ msgid "Special - Group Repository"
msgstr ""
#: ../../Zotlabs/Access/PermissionRoles.php:287
-#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:132
-#: ../../Zotlabs/Module/Settings/Channel.php:474
-#: ../../Zotlabs/Module/Connedit.php:936 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Register.php:221 ../../include/selectors.php:49
+#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Settings/Channel.php:473
+#: ../../Zotlabs/Module/Connedit.php:918 ../../Zotlabs/Module/Profiles.php:798
+#: ../../Zotlabs/Module/Register.php:224 ../../include/selectors.php:49
#: ../../include/selectors.php:66 ../../include/selectors.php:104
-#: ../../include/selectors.php:140 ../../include/event.php:1308
-#: ../../include/event.php:1315 ../../include/connections.php:689
+#: ../../include/selectors.php:140 ../../include/event.php:1315
+#: ../../include/event.php:1322 ../../include/connections.php:689
#: ../../include/connections.php:696
msgid "Other"
msgstr ""
@@ -166,7 +166,7 @@ msgstr ""
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Cards.php:29 ../../Zotlabs/Module/Webpages.php:33
+#: ../../Zotlabs/Module/Cards.php:33 ../../Zotlabs/Module/Webpages.php:33
#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1198
msgid "Requested profile is not available."
msgstr ""
@@ -181,7 +181,7 @@ msgstr ""
#: ../../Zotlabs/Module/Appman.php:86 ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Article_edit.php:51
#: ../../Zotlabs/Module/New_channel.php:77
-#: ../../Zotlabs/Module/New_channel.php:104
+#: ../../Zotlabs/Module/New_channel.php:102
#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
#: ../../Zotlabs/Module/Moderate.php:13
#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:275
@@ -193,11 +193,11 @@ msgstr ""
#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50
#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:400
#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:149
-#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../Zotlabs/Module/Profile_photo.php:307
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:228
-#: ../../Zotlabs/Module/Item.php:245 ../../Zotlabs/Module/Item.php:255
-#: ../../Zotlabs/Module/Item.php:1085 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Profile_photo.php:302
+#: ../../Zotlabs/Module/Profile_photo.php:315
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:229
+#: ../../Zotlabs/Module/Item.php:246 ../../Zotlabs/Module/Item.php:256
+#: ../../Zotlabs/Module/Item.php:1099 ../../Zotlabs/Module/Page.php:34
#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:389
#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Layouts.php:71
@@ -208,15 +208,15 @@ msgstr ""
#: ../../Zotlabs/Module/Editwebpage.php:89
#: ../../Zotlabs/Module/Editwebpage.php:107
#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Cards.php:68 ../../Zotlabs/Module/Webpages.php:118
+#: ../../Zotlabs/Module/Cards.php:72 ../../Zotlabs/Module/Webpages.php:118
#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:74
-#: ../../Zotlabs/Module/Like.php:184 ../../Zotlabs/Module/Suggest.php:28
+#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Suggest.php:28
#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Cover_photo.php:281
#: ../../Zotlabs/Module/Cover_photo.php:294
-#: ../../Zotlabs/Module/Display.php:404 ../../Zotlabs/Module/Network.php:15
+#: ../../Zotlabs/Module/Display.php:406 ../../Zotlabs/Module/Network.php:15
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:85
@@ -226,16 +226,16 @@ msgstr ""
#: ../../Zotlabs/Module/Service_limits.php:11 ../../Zotlabs/Module/Rate.php:113
#: ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Lib/Chatroom.php:133
-#: ../../Zotlabs/Web/WebServer.php:169 ../../addon/keepout/keepout.php:36
+#: ../../Zotlabs/Web/WebServer.php:123 ../../addon/keepout/keepout.php:36
#: ../../addon/openid/Mod_Id.php:53 ../../addon/gitwiki/Mod_Gitwiki.php:196
#: ../../addon/gitwiki/Mod_Gitwiki.php:292 ../../addon/pumpio/pumpio.php:40
#: ../../include/attach.php:150 ../../include/attach.php:197
#: ../../include/attach.php:270 ../../include/attach.php:284
#: ../../include/attach.php:293 ../../include/attach.php:366
#: ../../include/attach.php:380 ../../include/attach.php:387
-#: ../../include/attach.php:469 ../../include/attach.php:1008
-#: ../../include/attach.php:1082 ../../include/attach.php:1247
-#: ../../include/items.php:3633 ../../include/photos.php:27
+#: ../../include/attach.php:469 ../../include/attach.php:1019
+#: ../../include/attach.php:1093 ../../include/attach.php:1258
+#: ../../include/items.php:3656 ../../include/photos.php:27
msgid "Permission denied."
msgstr ""
@@ -244,7 +244,7 @@ msgstr ""
msgid "Block Name"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2288
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2402
msgid "Blocks"
msgstr ""
@@ -263,11 +263,11 @@ msgid "Edited"
msgstr ""
#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:96
-#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:147
-#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Menu.php:118
+#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:146
+#: ../../Zotlabs/Module/Connedit.php:921 ../../Zotlabs/Module/Menu.php:118
#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801
-#: ../../Zotlabs/Module/Cards.php:96 ../../Zotlabs/Module/Webpages.php:239
-#: ../../Zotlabs/Storage/Browser.php:273 ../../Zotlabs/Storage/Browser.php:379
+#: ../../Zotlabs/Module/Cards.php:100 ../../Zotlabs/Module/Webpages.php:239
+#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:382
#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
msgstr ""
@@ -277,15 +277,15 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Profs.php:154
#: ../../Zotlabs/Module/Settings/Oauth.php:149
#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:114
-#: ../../Zotlabs/Module/Connections.php:260
-#: ../../Zotlabs/Module/Connections.php:297
-#: ../../Zotlabs/Module/Connections.php:317 ../../Zotlabs/Module/Wiki.php:202
+#: ../../Zotlabs/Module/Connections.php:265
+#: ../../Zotlabs/Module/Connections.php:303
+#: ../../Zotlabs/Module/Connections.php:323 ../../Zotlabs/Module/Wiki.php:202
#: ../../Zotlabs/Module/Wiki.php:358 ../../Zotlabs/Module/Menu.php:112
#: ../../Zotlabs/Module/Layouts.php:193
#: ../../Zotlabs/Module/Editwebpage.php:142
#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:399
-#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:285
+#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:409
+#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:288
#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
#: ../../addon/gitwiki/Mod_Gitwiki.php:151
#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1297
@@ -302,19 +302,19 @@ msgstr ""
#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
#: ../../Zotlabs/Module/Cdav.php:897 ../../Zotlabs/Module/Cdav.php:1187
#: ../../Zotlabs/Module/Article_edit.php:129
-#: ../../Zotlabs/Module/Admin/Accounts.php:173
+#: ../../Zotlabs/Module/Admin/Accounts.php:174
#: ../../Zotlabs/Module/Admin/Channels.php:149
#: ../../Zotlabs/Module/Admin/Profs.php:155
#: ../../Zotlabs/Module/Settings/Oauth.php:150
#: ../../Zotlabs/Module/Thing.php:262 ../../Zotlabs/Module/Editblock.php:139
-#: ../../Zotlabs/Module/Connections.php:268
+#: ../../Zotlabs/Module/Connections.php:273
#: ../../Zotlabs/Module/Photos.php:1203 ../../Zotlabs/Module/Connedit.php:654
-#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Group.php:179
+#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Group.php:179
#: ../../Zotlabs/Module/Profiles.php:803
#: ../../Zotlabs/Module/Editwebpage.php:167
#: ../../Zotlabs/Module/Webpages.php:242 ../../Zotlabs/Module/Card_edit.php:129
-#: ../../Zotlabs/Lib/Apps.php:400 ../../Zotlabs/Lib/ThreadItem.php:141
-#: ../../Zotlabs/Storage/Browser.php:286 ../../include/conversation.php:690
+#: ../../Zotlabs/Lib/Apps.php:410 ../../Zotlabs/Lib/ThreadItem.php:141
+#: ../../Zotlabs/Storage/Browser.php:289 ../../include/conversation.php:690
#: ../../include/conversation.php:733
msgid "Delete"
msgstr ""
@@ -344,6 +344,7 @@ msgid "Invitation limit exceeded. Please contact your site administrator."
msgstr ""
#: ../../Zotlabs/Module/Invite.php:82
+#: ../../addon/notifyadmin/notifyadmin.php:40
#, php-format
msgid "%s : Message delivery failed."
msgstr ""
@@ -402,35 +403,36 @@ msgstr ""
#: ../../Zotlabs/Module/Setup.php:349 ../../Zotlabs/Module/Connect.php:98
#: ../../Zotlabs/Module/Admin/Features.php:66
#: ../../Zotlabs/Module/Admin/Plugins.php:438
-#: ../../Zotlabs/Module/Admin/Accounts.php:166
+#: ../../Zotlabs/Module/Admin/Accounts.php:167
#: ../../Zotlabs/Module/Admin/Logs.php:84
#: ../../Zotlabs/Module/Admin/Channels.php:147
#: ../../Zotlabs/Module/Admin/Themes.php:158
-#: ../../Zotlabs/Module/Admin/Site.php:277
+#: ../../Zotlabs/Module/Admin/Site.php:289
#: ../../Zotlabs/Module/Admin/Profs.php:157
#: ../../Zotlabs/Module/Admin/Account_edit.php:74
#: ../../Zotlabs/Module/Admin/Security.php:104
#: ../../Zotlabs/Module/Settings/Permcats.php:110
-#: ../../Zotlabs/Module/Settings/Channel.php:489
+#: ../../Zotlabs/Module/Settings/Channel.php:488
#: ../../Zotlabs/Module/Settings/Features.php:47
#: ../../Zotlabs/Module/Settings/Tokens.php:168
#: ../../Zotlabs/Module/Settings/Account.php:118
-#: ../../Zotlabs/Module/Settings/Featured.php:52
-#: ../../Zotlabs/Module/Settings/Display.php:209
+#: ../../Zotlabs/Module/Settings/Featured.php:54
+#: ../../Zotlabs/Module/Settings/Display.php:192
#: ../../Zotlabs/Module/Settings/Oauth.php:87
#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374
#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:345
#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:1082
#: ../../Zotlabs/Module/Photos.php:1122 ../../Zotlabs/Module/Photos.php:1240
#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Module/Pdledit.php:98
-#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:904
+#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:887
#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:242
+#: ../../Zotlabs/Module/Email_validation.php:40
#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Defperms.php:249
#: ../../Zotlabs/Module/Group.php:87 ../../Zotlabs/Module/Profiles.php:726
#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Lib/ThreadItem.php:754 ../../Zotlabs/Widget/Eventstools.php:16
+#: ../../Zotlabs/Lib/ThreadItem.php:750 ../../Zotlabs/Widget/Eventstools.php:16
#: ../../Zotlabs/Widget/Wiki_pages.php:40
#: ../../Zotlabs/Widget/Wiki_pages.php:97
#: ../../view/theme/redbasic_c/php/config.php:95
@@ -443,7 +445,7 @@ msgstr ""
#: ../../addon/likebanner/likebanner.php:57
#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113
-#: ../../addon/diaspora/diaspora.php:816
+#: ../../addon/diaspora/diaspora.php:822
#: ../../addon/gitwiki/Mod_Gitwiki.php:155
#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/hzfiles/hzfiles.php:84
#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
@@ -458,8 +460,8 @@ msgstr ""
#: ../../addon/statusnet/statusnet.php:322
#: ../../addon/statusnet/statusnet.php:380
#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:217
-#: ../../addon/twitter/twitter.php:259
+#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:218
+#: ../../addon/twitter/twitter.php:265
#: ../../addon/smileybutton/smileybutton.php:219 ../../addon/piwik/piwik.php:95
#: ../../addon/pageheader/pageheader.php:48
#: ../../addon/authchoose/authchoose.php:71 ../../addon/xmpp/xmpp.php:69
@@ -468,21 +470,16 @@ msgstr ""
msgid "Submit"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Cards.php:38
-#: ../../Zotlabs/Module/Cards.php:178 ../../Zotlabs/Lib/Apps.php:224
-#: ../../include/conversation.php:1890 ../../include/features.php:122
-#: ../../include/nav.php:490
-msgid "Cards"
+#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Articles.php:179
+#: ../../Zotlabs/Lib/Apps.php:229 ../../include/features.php:124
+#: ../../include/nav.php:469
+msgid "Articles"
msgstr ""
#: ../../Zotlabs/Module/Articles.php:95
msgid "Add Article"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:178 ../../include/nav.php:501
-msgid "Articles"
-msgstr ""
-
#: ../../Zotlabs/Module/Editlayout.php:79
#: ../../Zotlabs/Module/Article_edit.php:17
#: ../../Zotlabs/Module/Article_edit.php:33
@@ -508,8 +505,8 @@ msgstr ""
#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Cloud.php:111
#: ../../Zotlabs/Module/Group.php:74 ../../Zotlabs/Module/Dreport.php:10
-#: ../../Zotlabs/Module/Dreport.php:68 ../../Zotlabs/Module/Like.php:295
-#: ../../Zotlabs/Web/WebServer.php:168 ../../addon/redphotos/redphotos.php:119
+#: ../../Zotlabs/Module/Dreport.php:68 ../../Zotlabs/Module/Like.php:296
+#: ../../Zotlabs/Web/WebServer.php:122 ../../addon/redphotos/redphotos.php:119
#: ../../addon/hzfiles/hzfiles.php:73 ../../addon/frphotos/frphotos.php:81
#: ../../addon/redfiles/redfiles.php:109 ../../include/items.php:358
msgid "Permission denied"
@@ -523,7 +520,7 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1633
+#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1634
msgid "Profile"
msgstr ""
@@ -551,9 +548,9 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:786 ../../Zotlabs/Module/Cdav.php:787
#: ../../Zotlabs/Module/Cdav.php:794 ../../Zotlabs/Module/Embedphotos.php:146
#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1273
-#: ../../Zotlabs/Lib/Apps.php:744 ../../Zotlabs/Lib/Apps.php:822
+#: ../../Zotlabs/Lib/Apps.php:754 ../../Zotlabs/Lib/Apps.php:832
#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:95
-#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:842
+#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:853
#: ../../include/conversation.php:1160
msgid "Unknown"
msgstr ""
@@ -666,10 +663,12 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Oauth.php:88
#: ../../Zotlabs/Module/Settings/Oauth.php:114
#: ../../Zotlabs/Module/Wiki.php:345 ../../Zotlabs/Module/Wiki.php:375
-#: ../../Zotlabs/Module/Connedit.php:942 ../../Zotlabs/Module/Fbrowser.php:66
+#: ../../Zotlabs/Module/Profile_photo.php:464
+#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Fbrowser.php:66
#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804
-#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/gitwiki/Mod_Gitwiki.php:244
+#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138
+#: ../../addon/gitwiki/Mod_Gitwiki.php:244
#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1386
#: ../../include/conversation.php:1435
msgid "Cancel"
@@ -683,85 +682,85 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Channels.php:159
#: ../../Zotlabs/Module/Settings/Oauth.php:89
#: ../../Zotlabs/Module/Settings/Oauth.php:115
-#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:924
+#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:906
#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:558
-#: ../../Zotlabs/Storage/Browser.php:280
+#: ../../Zotlabs/Storage/Browser.php:283
#: ../../Zotlabs/Widget/Wiki_page_history.php:22
#: ../../addon/rendezvous/rendezvous.php:172
#: ../../addon/gitwiki/Mod_Gitwiki.php:158
msgid "Name"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1171 ../../Zotlabs/Module/Connedit.php:925
+#: ../../Zotlabs/Module/Cdav.php:1171 ../../Zotlabs/Module/Connedit.php:907
msgid "Organisation"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1172 ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Cdav.php:1172 ../../Zotlabs/Module/Connedit.php:908
msgid "Title"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1173 ../../Zotlabs/Module/Connedit.php:927
+#: ../../Zotlabs/Module/Cdav.php:1173 ../../Zotlabs/Module/Connedit.php:909
#: ../../Zotlabs/Module/Profiles.php:789
msgid "Phone"
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1174
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
-#: ../../Zotlabs/Module/Admin/Accounts.php:181
-#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Module/Profiles.php:790
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
+#: ../../Zotlabs/Module/Admin/Accounts.php:182
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Profiles.php:790
#: ../../addon/openid/MysqlProvider.php:56
#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1769
+#: ../../addon/redred/redred.php:107 ../../include/network.php:1775
msgid "Email"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1175 ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Cdav.php:1175 ../../Zotlabs/Module/Connedit.php:911
#: ../../Zotlabs/Module/Profiles.php:791
msgid "Instant messenger"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1176 ../../Zotlabs/Module/Connedit.php:930
+#: ../../Zotlabs/Module/Cdav.php:1176 ../../Zotlabs/Module/Connedit.php:912
#: ../../Zotlabs/Module/Profiles.php:792
msgid "Website"
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1177 ../../Zotlabs/Module/Locs.php:118
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:931 ../../Zotlabs/Module/Profiles.php:502
+#: ../../Zotlabs/Module/Connedit.php:913 ../../Zotlabs/Module/Profiles.php:502
#: ../../Zotlabs/Module/Profiles.php:793
msgid "Address"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1178 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Cdav.php:1178 ../../Zotlabs/Module/Connedit.php:914
#: ../../Zotlabs/Module/Profiles.php:794
msgid "Note"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:933
-#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1301
+#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1308
#: ../../include/connections.php:682
msgid "Mobile"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:934
-#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1302
+#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:916
+#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1309
#: ../../include/connections.php:683
msgid "Home"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:935
-#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1305
+#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:917
+#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1312
#: ../../include/connections.php:686
msgid "Work"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1183 ../../Zotlabs/Module/Connedit.php:937
+#: ../../Zotlabs/Module/Cdav.php:1183 ../../Zotlabs/Module/Connedit.php:919
#: ../../Zotlabs/Module/Profiles.php:799
#: ../../addon/jappixmini/jappixmini.php:368
msgid "Add Contact"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1184 ../../Zotlabs/Module/Connedit.php:938
+#: ../../Zotlabs/Module/Cdav.php:1184 ../../Zotlabs/Module/Connedit.php:920
#: ../../Zotlabs/Module/Profiles.php:800
msgid "Add Field"
msgstr ""
@@ -770,36 +769,36 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Plugins.php:453
#: ../../Zotlabs/Module/Settings/Oauth.php:42
#: ../../Zotlabs/Module/Settings/Oauth.php:113
-#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:802
-#: ../../Zotlabs/Lib/Apps.php:383
+#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Profiles.php:802
+#: ../../Zotlabs/Lib/Apps.php:393
msgid "Update"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1189 ../../Zotlabs/Module/Connedit.php:943
+#: ../../Zotlabs/Module/Cdav.php:1189 ../../Zotlabs/Module/Connedit.php:925
msgid "P.O. Box"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1190 ../../Zotlabs/Module/Connedit.php:944
+#: ../../Zotlabs/Module/Cdav.php:1190 ../../Zotlabs/Module/Connedit.php:926
msgid "Additional"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1191 ../../Zotlabs/Module/Connedit.php:945
+#: ../../Zotlabs/Module/Cdav.php:1191 ../../Zotlabs/Module/Connedit.php:927
msgid "Street"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1192 ../../Zotlabs/Module/Connedit.php:946
+#: ../../Zotlabs/Module/Cdav.php:1192 ../../Zotlabs/Module/Connedit.php:928
msgid "Locality"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1193 ../../Zotlabs/Module/Connedit.php:947
+#: ../../Zotlabs/Module/Cdav.php:1193 ../../Zotlabs/Module/Connedit.php:929
msgid "Region"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1194 ../../Zotlabs/Module/Connedit.php:948
+#: ../../Zotlabs/Module/Cdav.php:1194 ../../Zotlabs/Module/Connedit.php:930
msgid "ZIP Code"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1195 ../../Zotlabs/Module/Connedit.php:949
+#: ../../Zotlabs/Module/Cdav.php:1195 ../../Zotlabs/Module/Connedit.php:931
#: ../../Zotlabs/Module/Profiles.php:760
msgid "Country"
msgstr ""
@@ -817,7 +816,7 @@ msgid "This site is not a directory server"
msgstr ""
#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Chat.php:25
-#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:431
+#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:508
msgid "You must be logged in to see this page."
msgstr ""
@@ -893,8 +892,12 @@ msgid ""
"or restore these in date order (oldest first)."
msgstr ""
-#: ../../Zotlabs/Module/Hq.php:136
-msgid "Welcome to hubzilla!"
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "Welcome to Hubzilla!"
+msgstr ""
+
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "You have got no unseen posts..."
msgstr ""
#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:540
@@ -904,25 +907,25 @@ msgstr ""
msgid "Public access denied."
msgstr ""
-#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:313
-#: ../../Zotlabs/Lib/Apps.php:250 ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../include/text.php:1029 ../../include/text.php:1041
-#: ../../include/acl_selectors.php:213 ../../include/nav.php:211
+#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:319
+#: ../../Zotlabs/Lib/Apps.php:256 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../include/text.php:1051 ../../include/text.php:1063
+#: ../../include/acl_selectors.php:118 ../../include/nav.php:179
msgid "Search"
msgstr ""
-#: ../../Zotlabs/Module/Search.php:225
+#: ../../Zotlabs/Module/Search.php:226
#, php-format
msgid "Items tagged with: %s"
msgstr ""
-#: ../../Zotlabs/Module/Search.php:227
+#: ../../Zotlabs/Module/Search.php:228
#, php-format
msgid "Search results for: %s"
msgstr ""
-#: ../../Zotlabs/Module/Pubstream.php:81
-#: ../../Zotlabs/Widget/Notifications.php:129
+#: ../../Zotlabs/Module/Pubstream.php:93
+#: ../../Zotlabs/Widget/Notifications.php:131
msgid "Public Stream"
msgstr ""
@@ -1022,7 +1025,7 @@ msgid "Menu Item Permissions"
msgstr ""
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231
-#: ../../Zotlabs/Module/Settings/Channel.php:522
+#: ../../Zotlabs/Module/Settings/Channel.php:521
msgid "(click to open/close)"
msgstr ""
@@ -1045,17 +1048,17 @@ msgstr ""
#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
-#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:240
+#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:252
#: ../../Zotlabs/Module/Settings/Channel.php:305
-#: ../../Zotlabs/Module/Settings/Display.php:105
-#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Settings/Display.php:100
+#: ../../Zotlabs/Module/Api.php:99 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Connedit.php:779
#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
#: ../../Zotlabs/Module/Defperms.php:180 ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Filestorage.php:155
#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
+#: ../../Zotlabs/Storage/Browser.php:397 ../../boot.php:1587
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1080,8 +1083,8 @@ msgstr ""
#: ../../addon/statusnet/statusnet.php:389
#: ../../addon/statusnet/statusnet.php:411
#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242
-#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:243
+#: ../../addon/twitter/twitter.php:252 ../../addon/twitter/twitter.php:261
#: ../../addon/smileybutton/smileybutton.php:211
#: ../../addon/smileybutton/smileybutton.php:215
#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
@@ -1095,17 +1098,17 @@ msgstr ""
#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
-#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:242
+#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:254
#: ../../Zotlabs/Module/Settings/Channel.php:305
-#: ../../Zotlabs/Module/Settings/Display.php:105
-#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Settings/Display.php:100
+#: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Menu.php:100
#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Defperms.php:180
#: ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Filestorage.php:155
#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
+#: ../../Zotlabs/Storage/Browser.php:397 ../../boot.php:1587
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1130,8 +1133,8 @@ msgstr ""
#: ../../addon/statusnet/statusnet.php:389
#: ../../addon/statusnet/statusnet.php:411
#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242
-#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:243
+#: ../../addon/twitter/twitter.php:252 ../../addon/twitter/twitter.php:261
#: ../../addon/smileybutton/smileybutton.php:211
#: ../../addon/smileybutton/smileybutton.php:215
#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
@@ -1248,8 +1251,8 @@ msgid "Event not found."
msgstr ""
#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Like.php:384 ../../include/conversation.php:119
-#: ../../include/text.php:1941 ../../include/event.php:1153
+#: ../../Zotlabs/Module/Like.php:385 ../../include/conversation.php:119
+#: ../../include/text.php:2007 ../../include/event.php:1153
msgid "event"
msgstr ""
@@ -1260,7 +1263,7 @@ msgstr ""
#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465
#: ../../Zotlabs/Module/Appman.php:140 ../../Zotlabs/Module/Appman.php:141
#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752
-#: ../../include/datetime.php:265
+#: ../../include/datetime.php:205
msgid "Required"
msgstr ""
@@ -1311,7 +1314,7 @@ msgid "Edit Location"
msgstr ""
#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1123
-#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:760
#: ../../include/conversation.php:1330
msgid "Preview"
msgstr ""
@@ -1341,7 +1344,7 @@ msgid "Delete event"
msgstr ""
#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:315
-#: ../../include/text.php:1760
+#: ../../include/text.php:1826
msgid "Link to Source"
msgstr ""
@@ -1358,7 +1361,7 @@ msgid "Create Event"
msgstr ""
#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341
-#: ../../include/channel.php:1636
+#: ../../include/channel.php:1637
msgid "Export"
msgstr ""
@@ -1431,16 +1434,16 @@ msgid "Hub not found."
msgstr ""
#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
-#: ../../Zotlabs/Module/Like.php:382
+#: ../../Zotlabs/Module/Like.php:383
#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
-#: ../../include/conversation.php:116 ../../include/text.php:1938
+#: ../../addon/diaspora/Receiver.php:1518 ../../addon/pubcrawl/as.php:1359
+#: ../../include/conversation.php:116 ../../include/text.php:2004
msgid "photo"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:382
-#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
-#: ../../include/conversation.php:144 ../../include/text.php:1944
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:383
+#: ../../addon/diaspora/Receiver.php:1518 ../../addon/pubcrawl/as.php:1359
+#: ../../include/conversation.php:144 ../../include/text.php:2010
msgid "status"
msgstr ""
@@ -1514,67 +1517,71 @@ msgstr ""
msgid "File to Upload"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:121 ../../Zotlabs/Module/Manage.php:138
+#: ../../Zotlabs/Module/New_channel.php:119 ../../Zotlabs/Module/Manage.php:138
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:249
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:254
msgid "Name or caption"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:249
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:254
msgid ""
"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation "
"Group\""
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:251
+#: ../../Zotlabs/Module/New_channel.php:134
+#: ../../Zotlabs/Module/Register.php:256
msgid "Choose a short nickname"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:251
+#: ../../Zotlabs/Module/New_channel.php:134
+#: ../../Zotlabs/Module/Register.php:256
#, php-format
msgid ""
"Your nickname will be used to create an easy to remember channel address e."
"g. nickname%s"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
msgid "Channel role and privacy"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
msgid "Select a channel role with your privacy requirements."
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
msgid "Read more about roles"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:140
+#: ../../Zotlabs/Module/New_channel.php:138
msgid "Create Channel"
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:141
+#: ../../Zotlabs/Module/New_channel.php:139
msgid ""
"A channel is your identity on this network. It can represent a person, a "
"blog, or a forum to name a few. Channels can make connections with other "
"channels to share information with highly detailed permissions."
msgstr ""
-#: ../../Zotlabs/Module/New_channel.php:142
+#: ../../Zotlabs/Module/New_channel.php:140
msgid ""
"or <a href=\"import\">import an existing channel</a> from another location."
msgstr ""
+#: ../../Zotlabs/Module/New_channel.php:145
+msgid "Validate"
+msgstr ""
+
#: ../../Zotlabs/Module/Removeme.php:35
msgid ""
"Channel removals are not allowed within 48 hours of changing the account "
@@ -1617,7 +1624,7 @@ msgid ""
msgstr ""
#: ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings/Channel.php:593
+#: ../../Zotlabs/Module/Settings/Channel.php:592
msgid "Remove Channel"
msgstr ""
@@ -1630,12 +1637,12 @@ msgid "NEW"
msgstr ""
#: ../../Zotlabs/Module/Sharedwithme.php:107
-#: ../../Zotlabs/Storage/Browser.php:282 ../../include/text.php:1394
+#: ../../Zotlabs/Storage/Browser.php:285 ../../include/text.php:1434
msgid "Size"
msgstr ""
#: ../../Zotlabs/Module/Sharedwithme.php:108
-#: ../../Zotlabs/Storage/Browser.php:283
+#: ../../Zotlabs/Storage/Browser.php:286
msgid "Last Modified"
msgstr ""
@@ -2182,30 +2189,26 @@ msgstr ""
msgid "Update has been marked successful"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Dbsync.php:29
+#: ../../Zotlabs/Module/Admin/Dbsync.php:31
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Dbsync.php:32
+#: ../../Zotlabs/Module/Admin/Dbsync.php:34
#, php-format
msgid "Update %s was successfully applied."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Dbsync.php:36
+#: ../../Zotlabs/Module/Admin/Dbsync.php:38
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Dbsync.php:39
+#: ../../Zotlabs/Module/Admin/Dbsync.php:41
#, php-format
msgid "Update function %s could not be found."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Dbsync.php:55
-msgid "No failed updates."
-msgstr ""
-
#: ../../Zotlabs/Module/Admin/Dbsync.php:59
msgid "Failed Updates"
msgstr ""
@@ -2218,11 +2221,15 @@ msgstr ""
msgid "Attempt to execute this update step automatically"
msgstr ""
+#: ../../Zotlabs/Module/Admin/Dbsync.php:67
+msgid "No failed updates."
+msgstr ""
+
#: ../../Zotlabs/Module/Admin/Plugins.php:259
#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89
#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:46
-#: ../../Zotlabs/Module/Display.php:408 ../../Zotlabs/Module/Filestorage.php:24
-#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3546
+#: ../../Zotlabs/Module/Display.php:410 ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3569
msgid "Item not found."
msgstr ""
@@ -2248,12 +2255,12 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Plugins.php:341
#: ../../Zotlabs/Module/Admin/Plugins.php:436
-#: ../../Zotlabs/Module/Admin/Accounts.php:164
+#: ../../Zotlabs/Module/Admin/Accounts.php:165
#: ../../Zotlabs/Module/Admin/Logs.php:82
#: ../../Zotlabs/Module/Admin/Channels.php:145
#: ../../Zotlabs/Module/Admin/Themes.php:122
#: ../../Zotlabs/Module/Admin/Themes.php:156
-#: ../../Zotlabs/Module/Admin/Site.php:275
+#: ../../Zotlabs/Module/Admin/Site.php:287
#: ../../Zotlabs/Module/Admin/Security.php:86
#: ../../Zotlabs/Module/Admin.php:136
msgid "Administration"
@@ -2270,9 +2277,10 @@ msgid "Toggle"
msgstr ""
#: ../../Zotlabs/Module/Admin/Plugins.php:344
-#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:236
-#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:139
-#: ../../include/nav.php:224
+#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:242
+#: ../../Zotlabs/Widget/Newmember.php:55
+#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:105
+#: ../../include/nav.php:192
msgid "Settings"
msgstr ""
@@ -2335,7 +2343,7 @@ msgstr ""
msgid "Install new repo"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:383
+#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:393
msgid "Install"
msgstr ""
@@ -2361,112 +2369,112 @@ msgstr ""
msgid "Remove"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:36
+#: ../../Zotlabs/Module/Admin/Accounts.php:37
#, php-format
msgid "%s account blocked/unblocked"
msgid_plural "%s account blocked/unblocked"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:43
+#: ../../Zotlabs/Module/Admin/Accounts.php:44
#, php-format
msgid "%s account deleted"
msgid_plural "%s accounts deleted"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:79
+#: ../../Zotlabs/Module/Admin/Accounts.php:80
msgid "Account not found"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2456
+#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2462
#, php-format
msgid "Account '%s' deleted"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:98
+#: ../../Zotlabs/Module/Admin/Accounts.php:99
#, php-format
msgid "Account '%s' blocked"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:106
+#: ../../Zotlabs/Module/Admin/Accounts.php:107
#, php-format
msgid "Account '%s' unblocked"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:165
-#: ../../Zotlabs/Module/Admin/Accounts.php:178
+#: ../../Zotlabs/Module/Admin/Accounts.php:166
+#: ../../Zotlabs/Module/Admin/Accounts.php:179
#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23
msgid "Accounts"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:167
+#: ../../Zotlabs/Module/Admin/Accounts.php:168
#: ../../Zotlabs/Module/Admin/Channels.php:148
msgid "select all"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:168
+#: ../../Zotlabs/Module/Admin/Accounts.php:169
msgid "Registrations waiting for confirm"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
msgid "Request date"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:170
+#: ../../Zotlabs/Module/Admin/Accounts.php:171
msgid "No registrations."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:171
-#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:732
+#: ../../Zotlabs/Module/Admin/Accounts.php:172
+#: ../../Zotlabs/Module/Connections.php:287 ../../include/conversation.php:732
msgid "Approve"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:172
+#: ../../Zotlabs/Module/Admin/Accounts.php:173
msgid "Deny"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:174
+#: ../../Zotlabs/Module/Admin/Accounts.php:175
#: ../../Zotlabs/Module/Connedit.php:622
msgid "Block"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:175
+#: ../../Zotlabs/Module/Admin/Accounts.php:176
#: ../../Zotlabs/Module/Connedit.php:622
msgid "Unblock"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:180
+#: ../../Zotlabs/Module/Admin/Accounts.php:181
msgid "ID"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:284
+#: ../../Zotlabs/Module/Admin/Accounts.php:183 ../../include/group.php:284
msgid "All Channels"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:183
+#: ../../Zotlabs/Module/Admin/Accounts.php:184
msgid "Register date"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:184
+#: ../../Zotlabs/Module/Admin/Accounts.php:185
msgid "Last login"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:185
+#: ../../Zotlabs/Module/Admin/Accounts.php:186
msgid "Expires"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:186
+#: ../../Zotlabs/Module/Admin/Accounts.php:187
msgid "Service Class"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:188
+#: ../../Zotlabs/Module/Admin/Accounts.php:189
msgid ""
"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
"on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:189
+#: ../../Zotlabs/Module/Admin/Accounts.php:190
msgid ""
"The account {0} will be deleted!\\n\\nEverything this account has posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
@@ -2575,7 +2583,7 @@ msgid "Disallow Code"
msgstr ""
#: ../../Zotlabs/Module/Admin/Channels.php:154
-#: ../../include/conversation.php:1808 ../../include/nav.php:410
+#: ../../include/conversation.php:1808 ../../include/nav.php:378
msgid "Channel"
msgstr ""
@@ -2620,412 +2628,469 @@ msgstr ""
msgid "[Unsupported]"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:147
+#: ../../Zotlabs/Module/Admin/Site.php:158
msgid "Site settings updated."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:173
+#: ../../Zotlabs/Module/Admin/Site.php:184
#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2968
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3082
msgid "Default"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:184
-#: ../../Zotlabs/Module/Settings/Display.php:139
+#: ../../Zotlabs/Module/Admin/Site.php:195
+#: ../../Zotlabs/Module/Settings/Display.php:130
#, php-format
msgid "%s - (Incompatible)"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:191
-#: ../../Zotlabs/Module/Settings/Display.php:153
+#: ../../Zotlabs/Module/Admin/Site.php:202
msgid "mobile"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:193
+#: ../../Zotlabs/Module/Admin/Site.php:204
msgid "experimental"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:195
+#: ../../Zotlabs/Module/Admin/Site.php:206
msgid "unsupported"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:241
+#: ../../Zotlabs/Module/Admin/Site.php:253
msgid "Yes - with approval"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:247
+#: ../../Zotlabs/Module/Admin/Site.php:259
msgid "My site is not a public server"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:248
+#: ../../Zotlabs/Module/Admin/Site.php:260
msgid "My site has paid access only"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:249
+#: ../../Zotlabs/Module/Admin/Site.php:261
msgid "My site has free access only"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:250
+#: ../../Zotlabs/Module/Admin/Site.php:262
msgid "My site offers free accounts with optional paid upgrades"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:262
+#: ../../Zotlabs/Module/Admin/Site.php:274
msgid "Beginner/Basic"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:263
+#: ../../Zotlabs/Module/Admin/Site.php:275
msgid "Novice - not skilled but willing to learn"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:264
+#: ../../Zotlabs/Module/Admin/Site.php:276
msgid "Intermediate - somewhat comfortable"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:265
+#: ../../Zotlabs/Module/Admin/Site.php:277
msgid "Advanced - very comfortable"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:266
+#: ../../Zotlabs/Module/Admin/Site.php:278
msgid "Expert - I can write computer code"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:267
+#: ../../Zotlabs/Module/Admin/Site.php:279
msgid "Wizard - I probably know more than you do"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:276 ../../Zotlabs/Widget/Admin.php:22
+#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22
msgid "Site"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:278
-#: ../../Zotlabs/Module/Register.php:263
+#: ../../Zotlabs/Module/Admin/Site.php:290
+#: ../../Zotlabs/Module/Register.php:269
msgid "Registration"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:279
+#: ../../Zotlabs/Module/Admin/Site.php:291
msgid "File upload"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:280
+#: ../../Zotlabs/Module/Admin/Site.php:292
msgid "Policies"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:281 ../../include/contact_widgets.php:16
+#: ../../Zotlabs/Module/Admin/Site.php:293 ../../include/contact_widgets.php:16
msgid "Advanced"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../Zotlabs/Module/Admin/Site.php:297
#: ../../addon/statusnet/statusnet.php:891
msgid "Site name"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid "Site default technical skill level"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid "Used to provide a member experience matched to technical comfort level"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid "Lock the technical skill level setting"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid "Members can set their own technical comfort level by default"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:291
+#: ../../Zotlabs/Module/Admin/Site.php:303
msgid "Banner/Logo"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:303
+msgid "Unfiltered HTML/CSS/JS is allowed"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid "Administrator Information"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:293 ../../Zotlabs/Module/Siteinfo.php:22
+#: ../../Zotlabs/Module/Admin/Site.php:305 ../../Zotlabs/Module/Siteinfo.php:21
msgid "Site Information"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:293
+#: ../../Zotlabs/Module/Admin/Site.php:305
msgid ""
"Publicly visible description of this site. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:294
+#: ../../Zotlabs/Module/Admin/Site.php:306
msgid "System language"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid "System theme"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:296
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid "Mobile system theme"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:296
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid "Theme for mobile devices"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:298
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid "Allow Feeds as Connections"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:298
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid "(Heavy system resource usage)"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid "Maximum image size"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:300
+#: ../../Zotlabs/Module/Admin/Site.php:312
msgid "Does this site allow new member registration?"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:313
msgid "Invitation only"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:313
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:302
+#: ../../Zotlabs/Module/Admin/Site.php:314
+msgid "Minimum age"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:314
+msgid "Minimum age (in years) for who may register on this site."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:315
msgid "Which best describes the types of account offered by this hub?"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:316
msgid "Register text"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:316
msgid "Will be displayed prominently on the registration page."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:317
msgid "Site homepage to show visitors (default: login box)"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:317
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid "Preserve site homepage URL"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:319
msgid "Accounts abandoned after x days"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:319
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:320
msgid "Allowed friend domains"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:320
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:321
msgid "Verify Email Addresses"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:321
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:309
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid "Force publish"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:309
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:310
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid "Import Public Streams"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:310
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:311
+#: ../../Zotlabs/Module/Admin/Site.php:324
+msgid "Site only Public Streams"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:324
+msgid ""
+"Allow access to public content originating only from this site if Imported "
+"Public Streams are disabled."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid "Allow anybody on the internet to access the Public streams"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid ""
+"Disable to require authentication before viewing. Warning: this content is "
+"unmoderated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid "Login on Homepage"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:311
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:312
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid "Enable context help"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:312
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid ""
"Display contextual help for the current page when the help button is pressed."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:314
+#: ../../Zotlabs/Module/Admin/Site.php:329
msgid "Reply-to email address for system generated email."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:315
+#: ../../Zotlabs/Module/Admin/Site.php:330
msgid "Sender (From) email address for system generated email."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:316
+#: ../../Zotlabs/Module/Admin/Site.php:331
msgid "Name of email sender for system generated email."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:333
msgid "Directory Server URL"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:333
msgid "Default directory server"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:320
+#: ../../Zotlabs/Module/Admin/Site.php:335
msgid "Proxy user"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:321
+#: ../../Zotlabs/Module/Admin/Site.php:336
msgid "Proxy URL"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:337
msgid "Network timeout"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:337
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:338
msgid "Delivery interval"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:338
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:339
msgid "Deliveries per process"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:339
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust "
"if necessary to tune system performance. Recommend: 1-5."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:325
+#: ../../Zotlabs/Module/Admin/Site.php:340
msgid "Queue Threshold"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:325
+#: ../../Zotlabs/Module/Admin/Site.php:340
msgid ""
"Always defer immediate delivery if queue contains more than this number of "
"entries."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:326
+#: ../../Zotlabs/Module/Admin/Site.php:341
msgid "Poll interval"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:326
+#: ../../Zotlabs/Module/Admin/Site.php:341
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:327
+#: ../../Zotlabs/Module/Admin/Site.php:342
msgid "Path to ImageMagick convert program"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:327
+#: ../../Zotlabs/Module/Admin/Site.php:342
msgid ""
"If set, use this program to generate photo thumbnails for huge images ( > "
"4000 pixels in either dimension), otherwise memory exhaustion may occur. "
"Example: /usr/bin/convert"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:328
+#: ../../Zotlabs/Module/Admin/Site.php:343
msgid "Allow SVG thumbnails in file browser"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:328
+#: ../../Zotlabs/Module/Admin/Site.php:343
msgid "WARNING: SVG images may contain malicious code."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:329
+#: ../../Zotlabs/Module/Admin/Site.php:344
msgid "Maximum Load Average"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:329
+#: ../../Zotlabs/Module/Admin/Site.php:344
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:330
+#: ../../Zotlabs/Module/Admin/Site.php:345
msgid "Expiration period in days for imported (grid/network) content"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Site.php:330
+#: ../../Zotlabs/Module/Admin/Site.php:345
msgid "0 for no expiration of imported content"
msgstr ""
+#: ../../Zotlabs/Module/Admin/Site.php:347
+msgid ""
+"Public servers: Optional landing (marketing) webpage for new registrants"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:347
+#, php-format
+msgid "Create this page first. Default is %s/register"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:348
+msgid "Page to display after creating a new channel"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:348
+msgid "Recommend: profiles, go, or settings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:350
+msgid "Optional: site location"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Site.php:350
+msgid "Region or country"
+msgstr ""
+
#: ../../Zotlabs/Module/Admin/Profs.php:69
msgid "New Profile Field"
msgstr ""
@@ -3068,8 +3133,8 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Profs.php:74
#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
-#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1030
-#: ../../include/text.php:1042
+#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1052
+#: ../../include/text.php:1064
msgid "Save"
msgstr ""
@@ -3266,7 +3331,7 @@ msgid "Visible to:"
msgstr ""
#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
-#: ../../Zotlabs/Module/Acl.php:118 ../../include/acl_selectors.php:183
+#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88
msgctxt "acl"
msgid "Profile"
msgstr ""
@@ -3299,25 +3364,25 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Permcats.php:103
#: ../../Zotlabs/Module/Settings/Tokens.php:161
-#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:250
+#: ../../Zotlabs/Module/Connedit.php:891 ../../Zotlabs/Module/Defperms.php:250
msgid "My Settings"
msgstr ""
#: ../../Zotlabs/Module/Settings/Permcats.php:105
#: ../../Zotlabs/Module/Settings/Tokens.php:163
-#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:248
+#: ../../Zotlabs/Module/Connedit.php:886 ../../Zotlabs/Module/Defperms.php:248
msgid "inherited"
msgstr ""
#: ../../Zotlabs/Module/Settings/Permcats.php:108
#: ../../Zotlabs/Module/Settings/Tokens.php:166
-#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:253
+#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Defperms.php:253
msgid "Individual Permissions"
msgstr ""
#: ../../Zotlabs/Module/Settings/Permcats.php:109
#: ../../Zotlabs/Module/Settings/Tokens.php:167
-#: ../../Zotlabs/Module/Connedit.php:911
+#: ../../Zotlabs/Module/Connedit.php:894
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -3329,7 +3394,7 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:69
#: ../../Zotlabs/Module/Settings/Channel.php:72
#: ../../Zotlabs/Module/Settings/Channel.php:83
-#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:28
+#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:24
#: ../../include/selectors.php:123 ../../include/channel.php:437
#: ../../include/channel.php:438 ../../include/channel.php:445
msgid "Friends"
@@ -3340,7 +3405,7 @@ msgstr ""
#: ../../addon/rendezvous/rendezvous.php:82
#: ../../addon/openstreetmap/openstreetmap.php:184
#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
-#: ../../addon/twitter/twitter.php:766 ../../addon/piwik/piwik.php:116
+#: ../../addon/twitter/twitter.php:772 ../../addon/piwik/piwik.php:116
#: ../../addon/xmpp/xmpp.php:102
msgid "Settings updated."
msgstr ""
@@ -3377,370 +3442,369 @@ msgstr ""
msgid "Anybody on the internet"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:406
+#: ../../Zotlabs/Module/Settings/Channel.php:405
msgid "Publish your default profile in the network directory"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:411
+#: ../../Zotlabs/Module/Settings/Channel.php:410
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:415
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Settings/Channel.php:414
msgid "or"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:420
+#: ../../Zotlabs/Module/Settings/Channel.php:419
msgid "Your channel address is"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:423
+#: ../../Zotlabs/Module/Settings/Channel.php:422
msgid "Your files/photos are accessible via WebDAV at"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:487
+#: ../../Zotlabs/Module/Settings/Channel.php:486
msgid "Channel Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:494
+#: ../../Zotlabs/Module/Settings/Channel.php:493
msgid "Basic Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:495 ../../include/channel.php:1521
+#: ../../Zotlabs/Module/Settings/Channel.php:494 ../../include/channel.php:1522
msgid "Full Name:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:496
+#: ../../Zotlabs/Module/Settings/Channel.php:495
#: ../../Zotlabs/Module/Settings/Account.php:119
msgid "Email Address:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:497
+#: ../../Zotlabs/Module/Settings/Channel.php:496
msgid "Your Timezone:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:497
msgid "Default Post Location:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:497
msgid "Geographical location to display on your posts"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:499
+#: ../../Zotlabs/Module/Settings/Channel.php:498
msgid "Use Browser Location:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:501
+#: ../../Zotlabs/Module/Settings/Channel.php:500
msgid "Adult Content"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:501
+#: ../../Zotlabs/Module/Settings/Channel.php:500
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:503
+#: ../../Zotlabs/Module/Settings/Channel.php:502
msgid "Security and Privacy Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:505
+#: ../../Zotlabs/Module/Settings/Channel.php:504
msgid "Your permissions are already configured. Click to view/adjust"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:507
+#: ../../Zotlabs/Module/Settings/Channel.php:506
msgid "Hide my online presence"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:507
+#: ../../Zotlabs/Module/Settings/Channel.php:506
msgid "Prevents displaying in your profile that you are online"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:509
+#: ../../Zotlabs/Module/Settings/Channel.php:508
msgid "Simple Privacy Settings:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:509
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:511
+#: ../../Zotlabs/Module/Settings/Channel.php:510
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:512
+#: ../../Zotlabs/Module/Settings/Channel.php:511
msgid "Private - <em>default private, never open or public</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:513
+#: ../../Zotlabs/Module/Settings/Channel.php:512
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:515
+#: ../../Zotlabs/Module/Settings/Channel.php:514
msgid "Allow others to tag your posts"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:515
+#: ../../Zotlabs/Module/Settings/Channel.php:514
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:517
+#: ../../Zotlabs/Module/Settings/Channel.php:516
msgid "Channel Permission Limits"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "Expire other channel content after this many days"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "0 or blank to use the website limit."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
#, php-format
msgid "This website expires after %d days."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "This website does not expire imported content."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "The website limit takes precedence if lower than your limit."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:520
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "Maximum Friend Requests/Day:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:520
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "May reduce spam activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:521
+#: ../../Zotlabs/Module/Settings/Channel.php:520
msgid "Default Privacy Group"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:523
+#: ../../Zotlabs/Module/Settings/Channel.php:522
msgid "Use my default audience setting for the type of object published"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:524
+#: ../../Zotlabs/Module/Settings/Channel.php:523
msgid "Profile to assign new connections"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:533
+#: ../../Zotlabs/Module/Settings/Channel.php:532
msgid "Channel permissions category:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:534
+#: ../../Zotlabs/Module/Settings/Channel.php:533
msgid "Default Permissions Group"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:540
+#: ../../Zotlabs/Module/Settings/Channel.php:539
msgid "Maximum private messages per day from unknown people:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:540
+#: ../../Zotlabs/Module/Settings/Channel.php:539
msgid "Useful to reduce spamming"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:543
+#: ../../Zotlabs/Module/Settings/Channel.php:542
+#: ../../Zotlabs/Lib/Enotify.php:68
msgid "Notification Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:544
+#: ../../Zotlabs/Module/Settings/Channel.php:543
msgid "By default post a status message when:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:545
+#: ../../Zotlabs/Module/Settings/Channel.php:544
msgid "accepting a friend request"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:546
+#: ../../Zotlabs/Module/Settings/Channel.php:545
msgid "joining a forum/community"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:547
+#: ../../Zotlabs/Module/Settings/Channel.php:546
msgid "making an <em>interesting</em> profile change"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:548
+#: ../../Zotlabs/Module/Settings/Channel.php:547
msgid "Send a notification email when:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:549
+#: ../../Zotlabs/Module/Settings/Channel.php:548
msgid "You receive a connection request"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:550
+#: ../../Zotlabs/Module/Settings/Channel.php:549
msgid "Your connections are confirmed"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:551
+#: ../../Zotlabs/Module/Settings/Channel.php:550
msgid "Someone writes on your profile wall"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:552
+#: ../../Zotlabs/Module/Settings/Channel.php:551
msgid "Someone writes a followup comment"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:553
+#: ../../Zotlabs/Module/Settings/Channel.php:552
msgid "You receive a private message"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:554
+#: ../../Zotlabs/Module/Settings/Channel.php:553
msgid "You receive a friend suggestion"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:555
+#: ../../Zotlabs/Module/Settings/Channel.php:554
msgid "You are tagged in a post"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:556
+#: ../../Zotlabs/Module/Settings/Channel.php:555
msgid "You are poked/prodded/etc. in a post"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:558
+#: ../../Zotlabs/Module/Settings/Channel.php:557
msgid "Someone likes your post/comment"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:561
+#: ../../Zotlabs/Module/Settings/Channel.php:560
msgid "Show visual notifications including:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:563
+#: ../../Zotlabs/Module/Settings/Channel.php:562
msgid "Unseen grid activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:563
msgid "Unseen channel activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:565
+#: ../../Zotlabs/Module/Settings/Channel.php:564
msgid "Unseen private messages"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:565
+#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:569
#: ../../Zotlabs/Module/Settings/Channel.php:570
#: ../../Zotlabs/Module/Settings/Channel.php:571
-#: ../../Zotlabs/Module/Settings/Channel.php:572
#: ../../addon/jappixmini/jappixmini.php:343
msgid "Recommended"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:566
+#: ../../Zotlabs/Module/Settings/Channel.php:565
msgid "Upcoming events"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:567
+#: ../../Zotlabs/Module/Settings/Channel.php:566
msgid "Events today"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:568
+#: ../../Zotlabs/Module/Settings/Channel.php:567
msgid "Upcoming birthdays"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:568
+#: ../../Zotlabs/Module/Settings/Channel.php:567
msgid "Not available in all themes"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:569
+#: ../../Zotlabs/Module/Settings/Channel.php:568
msgid "System (personal) notifications"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:570
+#: ../../Zotlabs/Module/Settings/Channel.php:569
msgid "System info messages"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:571
+#: ../../Zotlabs/Module/Settings/Channel.php:570
msgid "System critical alerts"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:572
+#: ../../Zotlabs/Module/Settings/Channel.php:571
msgid "New connections"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:573
+#: ../../Zotlabs/Module/Settings/Channel.php:572
msgid "System Registrations"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:574
+#: ../../Zotlabs/Module/Settings/Channel.php:573
msgid "Unseen shared files"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:575
+#: ../../Zotlabs/Module/Settings/Channel.php:574
msgid "Unseen public activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:576
+#: ../../Zotlabs/Module/Settings/Channel.php:575
msgid "Email notification hub (hostname)"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:576
+#: ../../Zotlabs/Module/Settings/Channel.php:575
#, php-format
msgid ""
"If your channel is mirrored to multiple hubs, set this to your preferred "
"location. This will prevent duplicate email notifications. Example: %s"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:577
+#: ../../Zotlabs/Module/Settings/Channel.php:576
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:579
+#: ../../Zotlabs/Module/Settings/Channel.php:578
msgid "Notify me of events this many days in advance"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:579
+#: ../../Zotlabs/Module/Settings/Channel.php:578
msgid "Must be greater than 0"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:585
+#: ../../Zotlabs/Module/Settings/Channel.php:584
msgid "Advanced Account/Page Type Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:586
+#: ../../Zotlabs/Module/Settings/Channel.php:585
msgid "Change the behaviour of this account for special situations"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:588
+#: ../../Zotlabs/Module/Settings/Channel.php:587
msgid "Miscellaneous Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:589
+#: ../../Zotlabs/Module/Settings/Channel.php:588
msgid "Default photo upload folder"
msgstr ""
+#: ../../Zotlabs/Module/Settings/Channel.php:588
#: ../../Zotlabs/Module/Settings/Channel.php:589
-#: ../../Zotlabs/Module/Settings/Channel.php:590
msgid "%Y - current year, %m - current month"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:590
+#: ../../Zotlabs/Module/Settings/Channel.php:589
msgid "Default file upload folder"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:592
+#: ../../Zotlabs/Module/Settings/Channel.php:591
msgid "Personal menu to display in your channel pages"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:594
+#: ../../Zotlabs/Module/Settings/Channel.php:593
msgid "Remove this channel."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:595
+#: ../../Zotlabs/Module/Settings/Channel.php:594
msgid "Firefox Share $Projectname provider"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:596
+#: ../../Zotlabs/Module/Settings/Channel.php:595
msgid "Start calendar week on Monday"
msgstr ""
@@ -3793,7 +3857,7 @@ msgid "Expires (yyyy-mm-dd)"
msgstr ""
#: ../../Zotlabs/Module/Settings/Tokens.php:160
-#: ../../Zotlabs/Module/Connedit.php:907
+#: ../../Zotlabs/Module/Connedit.php:890
msgid "Their Settings"
msgstr ""
@@ -3858,7 +3922,9 @@ msgid "Your technical skill level"
msgstr ""
#: ../../Zotlabs/Module/Settings/Account.php:116
-msgid "Used to provide a member experience matched to your comfort level"
+msgid ""
+"Used to provide a member experience and additional features consistent with "
+"your comfort level"
msgstr ""
#: ../../Zotlabs/Module/Settings/Account.php:120
@@ -3870,148 +3936,152 @@ msgstr ""
msgid "Remove this account including all its channels"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:21
+#: ../../Zotlabs/Module/Settings/Featured.php:23
msgid "Affinity Slider settings updated."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:36
+#: ../../Zotlabs/Module/Settings/Featured.php:38
msgid "No feature settings configured"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:43
+#: ../../Zotlabs/Module/Settings/Featured.php:45
msgid "Default maximum affinity level"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:48
+#: ../../Zotlabs/Module/Settings/Featured.php:45
+msgid "0-99 default 99"
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings/Featured.php:50
msgid "Default minimum affinity level"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:52
+#: ../../Zotlabs/Module/Settings/Featured.php:50
+msgid "0-99 - default 0"
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings/Featured.php:54
msgid "Affinity Slider Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:62
-msgid "Feature/Addon Settings"
+#: ../../Zotlabs/Module/Settings/Featured.php:64
+msgid "Addon Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:147
-msgid "No special theme for mobile devices"
+#: ../../Zotlabs/Module/Settings/Featured.php:65
+msgid "Please save/submit changes to any panel before opening another."
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:150
+#: ../../Zotlabs/Module/Settings/Display.php:139
#, php-format
msgid "%s - (Experimental)"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:204
+#: ../../Zotlabs/Module/Settings/Display.php:187
msgid "Display Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:205
+#: ../../Zotlabs/Module/Settings/Display.php:188
msgid "Theme Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:206
+#: ../../Zotlabs/Module/Settings/Display.php:189
msgid "Custom Theme Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:207
+#: ../../Zotlabs/Module/Settings/Display.php:190
msgid "Content Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:213
+#: ../../Zotlabs/Module/Settings/Display.php:196
msgid "Display Theme:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:214
+#: ../../Zotlabs/Module/Settings/Display.php:197
msgid "Select scheme"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:216
-msgid "Mobile Theme:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:199
msgid "Preload images before rendering the page"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:199
msgid ""
"The subjective page load time will be longer but the page will be ready when "
"displayed"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:218
+#: ../../Zotlabs/Module/Settings/Display.php:200
msgid "Enable user zoom on mobile devices"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:219
+#: ../../Zotlabs/Module/Settings/Display.php:201
msgid "Update browser every xx seconds"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:219
+#: ../../Zotlabs/Module/Settings/Display.php:201
msgid "Minimum of 10 seconds, no maximum"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:202
msgid "Maximum number of conversations to load at any time:"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:202
msgid "Maximum of 100 items"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:221
+#: ../../Zotlabs/Module/Settings/Display.php:203
msgid "Show emoticons (smilies) as images"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:222
+#: ../../Zotlabs/Module/Settings/Display.php:204
msgid "Provide channel menu in navigation bar"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:222
+#: ../../Zotlabs/Module/Settings/Display.php:204
msgid "Default: channel menu located in app menu"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:223
+#: ../../Zotlabs/Module/Settings/Display.php:205
msgid "Manual conversation updates"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:223
+#: ../../Zotlabs/Module/Settings/Display.php:205
msgid "Default is on, turning this off may increase screen jumping"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:224
+#: ../../Zotlabs/Module/Settings/Display.php:206
msgid "Link post titles to source"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:225
+#: ../../Zotlabs/Module/Settings/Display.php:207
msgid "System Page Layout Editor - (advanced)"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:210
msgid "Use blog/list mode on channel page"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:228
-#: ../../Zotlabs/Module/Settings/Display.php:229
+#: ../../Zotlabs/Module/Settings/Display.php:210
+#: ../../Zotlabs/Module/Settings/Display.php:211
msgid "(comments displayed separately)"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:229
+#: ../../Zotlabs/Module/Settings/Display.php:211
msgid "Use blog/list mode on grid page"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:230
+#: ../../Zotlabs/Module/Settings/Display.php:212
msgid "Channel page max height of content (in pixels)"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:230
-#: ../../Zotlabs/Module/Settings/Display.php:231
+#: ../../Zotlabs/Module/Settings/Display.php:212
+#: ../../Zotlabs/Module/Settings/Display.php:213
msgid "click to expand content exceeding this height"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Display.php:231
+#: ../../Zotlabs/Module/Settings/Display.php:213
msgid "Grid page max height of content (in pixels)"
msgstr ""
@@ -4035,7 +4105,7 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Oauth.php:90
#: ../../Zotlabs/Module/Settings/Oauth.php:116
-#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:775
+#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:781
msgid "Consumer Key"
msgstr ""
@@ -4046,7 +4116,7 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Oauth.php:91
#: ../../Zotlabs/Module/Settings/Oauth.php:117
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:776
+#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:782
msgid "Consumer Secret"
msgstr ""
@@ -4103,9 +4173,9 @@ msgstr ""
#: ../../Zotlabs/Module/Embedphotos.php:158 ../../Zotlabs/Module/Photos.php:712
#: ../../Zotlabs/Module/Photos.php:844 ../../Zotlabs/Module/Photos.php:1381
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Profile_photo.php:458
#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Storage/Browser.php:274 ../../Zotlabs/Storage/Browser.php:381
+#: ../../Zotlabs/Storage/Browser.php:277 ../../Zotlabs/Storage/Browser.php:384
#: ../../Zotlabs/Widget/Cdav.php:133 ../../Zotlabs/Widget/Cdav.php:169
#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Album.php:97
msgid "Upload"
@@ -4171,7 +4241,7 @@ msgstr ""
#: ../../Zotlabs/Module/Thing.php:314 ../../Zotlabs/Module/Thing.php:367
#: ../../Zotlabs/Module/Photos.php:702 ../../Zotlabs/Module/Photos.php:1071
#: ../../Zotlabs/Module/Connedit.php:676 ../../Zotlabs/Module/Chat.php:235
-#: ../../Zotlabs/Module/Filestorage.php:147 ../../include/acl_selectors.php:218
+#: ../../Zotlabs/Module/Filestorage.php:147 ../../include/acl_selectors.php:123
msgid "Permissions"
msgstr ""
@@ -4266,16 +4336,16 @@ msgstr ""
msgid "Authentication failed."
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1665
-#: ../../include/channel.php:2301
+#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1583
+#: ../../include/channel.php:2307
msgid "Remote Authentication"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2302
+#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2308
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2303
+#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2309
msgid "Authenticate"
msgstr ""
@@ -4283,23 +4353,23 @@ msgstr ""
msgid "Permissions denied."
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2312
+#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2426
msgid "Import"
msgstr ""
-#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93
+#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95
msgid "Authorize application connection"
msgstr ""
-#: ../../Zotlabs/Module/Api.php:73
+#: ../../Zotlabs/Module/Api.php:75
msgid "Return to your app and insert this Security Code:"
msgstr ""
-#: ../../Zotlabs/Module/Api.php:83
+#: ../../Zotlabs/Module/Api.php:85
msgid "Please login to continue."
msgstr ""
-#: ../../Zotlabs/Module/Api.php:95
+#: ../../Zotlabs/Module/Api.php:97
msgid ""
"Do you want to authorize this application to access your posts and contacts, "
"and/or create new posts for you?"
@@ -4317,15 +4387,15 @@ msgstr ""
msgid "vcard"
msgstr ""
-#: ../../Zotlabs/Module/Apps.php:47 ../../Zotlabs/Lib/Apps.php:223
+#: ../../Zotlabs/Module/Apps.php:48 ../../Zotlabs/Lib/Apps.php:228
msgid "Apps"
msgstr ""
-#: ../../Zotlabs/Module/Apps.php:50
+#: ../../Zotlabs/Module/Apps.php:51
msgid "Manage apps"
msgstr ""
-#: ../../Zotlabs/Module/Apps.php:51
+#: ../../Zotlabs/Module/Apps.php:52
msgid "Create new app"
msgstr ""
@@ -4335,7 +4405,7 @@ msgctxt "mood"
msgid "%1$s is %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:247
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:253
msgid "Mood"
msgstr ""
@@ -4375,12 +4445,12 @@ msgstr ""
#: ../../Zotlabs/Module/Connections.php:88
#: ../../Zotlabs/Module/Connections.php:102
-#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:30
+#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:26
msgid "All"
msgstr ""
#: ../../Zotlabs/Module/Connections.php:133
-#: ../../Zotlabs/Widget/Notifications.php:82
+#: ../../Zotlabs/Widget/Notifications.php:84
msgid "New Connections"
msgstr ""
@@ -4420,70 +4490,70 @@ msgstr ""
msgid "Not connected at this location"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:258
+#: ../../Zotlabs/Module/Connections.php:263
#, php-format
msgid "%1$s [%2$s]"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:259
+#: ../../Zotlabs/Module/Connections.php:264
msgid "Edit connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:261
+#: ../../Zotlabs/Module/Connections.php:266
msgid "Delete connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:270
+#: ../../Zotlabs/Module/Connections.php:275
msgid "Channel address"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:272
+#: ../../Zotlabs/Module/Connections.php:277
msgid "Network"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Connections.php:280
msgid "Call"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Connections.php:282
msgid "Status"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:279
+#: ../../Zotlabs/Module/Connections.php:284
msgid "Connected"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:281
+#: ../../Zotlabs/Module/Connections.php:286
msgid "Approve connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:283
+#: ../../Zotlabs/Module/Connections.php:288
msgid "Ignore connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:284
+#: ../../Zotlabs/Module/Connections.php:289
#: ../../Zotlabs/Module/Connedit.php:630
msgid "Ignore"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:285
+#: ../../Zotlabs/Module/Connections.php:290
msgid "Recent activity"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:309 ../../Zotlabs/Lib/Apps.php:229
-#: ../../include/text.php:959 ../../include/nav.php:114
+#: ../../Zotlabs/Module/Connections.php:315 ../../Zotlabs/Lib/Apps.php:235
+#: ../../include/text.php:973
msgid "Connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:314
+#: ../../Zotlabs/Module/Connections.php:320
msgid "Search your connections"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:315
+#: ../../Zotlabs/Module/Connections.php:321
msgid "Connections search"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:316
+#: ../../Zotlabs/Module/Connections.php:322
#: ../../Zotlabs/Module/Directory.php:396
#: ../../Zotlabs/Module/Directory.php:401 ../../include/contact_widgets.php:23
msgid "Find"
@@ -4681,12 +4751,12 @@ msgid "Please wait"
msgstr ""
#: ../../Zotlabs/Module/Photos.php:1119 ../../Zotlabs/Module/Photos.php:1237
-#: ../../Zotlabs/Lib/ThreadItem.php:751
+#: ../../Zotlabs/Lib/ThreadItem.php:747
msgid "This is you"
msgstr ""
#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
-#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/js_strings.php:6
+#: ../../Zotlabs/Lib/ThreadItem.php:749 ../../include/js_strings.php:6
msgid "Comment"
msgstr ""
@@ -4736,8 +4806,8 @@ msgid "View all"
msgstr ""
#: ../../Zotlabs/Module/Photos.php:1160 ../../Zotlabs/Lib/ThreadItem.php:205
-#: ../../include/conversation.php:1978 ../../include/channel.php:1539
-#: ../../include/taxonomy.php:593
+#: ../../include/conversation.php:1978 ../../include/channel.php:1540
+#: ../../include/taxonomy.php:597
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
@@ -4775,7 +4845,7 @@ msgid "Dislikes"
msgstr ""
#: ../../Zotlabs/Module/Photos.php:1293 ../../Zotlabs/Lib/ThreadItem.php:421
-#: ../../include/acl_selectors.php:220
+#: ../../include/acl_selectors.php:125
msgid "Close"
msgstr ""
@@ -4810,7 +4880,7 @@ msgid "Error downloading wiki: "
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:197 ../../addon/gitwiki/Mod_Gitwiki.php:146
-#: ../../include/conversation.php:1925 ../../include/nav.php:526
+#: ../../include/conversation.php:1925 ../../include/nav.php:494
msgid "Wikis"
msgstr ""
@@ -4834,23 +4904,23 @@ msgstr ""
#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
#: ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1802
-#: ../../include/features.php:378
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../addon/mdpost/mdpost.php:40
+#: ../../include/text.php:1868
msgid "Markdown"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
#: ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1800
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1866
msgid "BBcode"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1803
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1869
msgid "Text"
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:281
+#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:284
#: ../../addon/gitwiki/Mod_Gitwiki.php:159
msgid "Type"
msgstr ""
@@ -4917,8 +4987,10 @@ msgstr ""
msgid "Embed an image from your albums"
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:376 ../../addon/gitwiki/Mod_Gitwiki.php:268
-#: ../../include/conversation.php:1387 ../../include/conversation.php:1434
+#: ../../Zotlabs/Module/Wiki.php:376 ../../Zotlabs/Module/Profile_photo.php:465
+#: ../../Zotlabs/Module/Cover_photo.php:366
+#: ../../addon/gitwiki/Mod_Gitwiki.php:268 ../../include/conversation.php:1387
+#: ../../include/conversation.php:1434
msgid "OK"
msgstr ""
@@ -5047,7 +5119,7 @@ msgstr ""
msgid "System layout"
msgstr ""
-#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:248
+#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:254
#: ../../include/conversation.php:1092
msgid "Poke"
msgstr ""
@@ -5076,97 +5148,97 @@ msgstr ""
msgid "Make this post private"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:61
+#: ../../Zotlabs/Module/Profile_photo.php:66
#: ../../Zotlabs/Module/Cover_photo.php:56
msgid "Image uploaded but image cropping failed."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:115
-#: ../../Zotlabs/Module/Profile_photo.php:240
+#: ../../Zotlabs/Module/Profile_photo.php:120
+#: ../../Zotlabs/Module/Profile_photo.php:248
#: ../../include/photo/photo_driver.php:740
msgid "Profile Photos"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:137
+#: ../../Zotlabs/Module/Profile_photo.php:142
#: ../../Zotlabs/Module/Cover_photo.php:159
msgid "Image resize failed."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:218
#: ../../addon/openclipatar/openclipatar.php:298
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:217
+#: ../../Zotlabs/Module/Profile_photo.php:225
#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:195
msgid "Unable to process image"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:252
+#: ../../Zotlabs/Module/Profile_photo.php:260
#: ../../Zotlabs/Module/Cover_photo.php:197
msgid "Image upload failed."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:271
+#: ../../Zotlabs/Module/Profile_photo.php:279
#: ../../Zotlabs/Module/Cover_photo.php:214
msgid "Unable to process image."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:332
-#: ../../Zotlabs/Module/Profile_photo.php:379
+#: ../../Zotlabs/Module/Profile_photo.php:343
+#: ../../Zotlabs/Module/Profile_photo.php:390
#: ../../Zotlabs/Module/Cover_photo.php:307
#: ../../Zotlabs/Module/Cover_photo.php:322
msgid "Photo not available."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:434
+#: ../../Zotlabs/Module/Profile_photo.php:455
#: ../../Zotlabs/Module/Cover_photo.php:358
msgid "Upload File:"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:435
+#: ../../Zotlabs/Module/Profile_photo.php:456
#: ../../Zotlabs/Module/Cover_photo.php:359
msgid "Select a profile:"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:436
+#: ../../Zotlabs/Module/Profile_photo.php:457
msgid "Use Photo for Profile"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:436
-msgid "Upload Profile Photo"
+#: ../../Zotlabs/Module/Profile_photo.php:457
+msgid "Change Profile Photo"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:437
-#: ../../addon/openclipatar/openclipatar.php:182
-#: ../../addon/openclipatar/openclipatar.php:194
+#: ../../Zotlabs/Module/Profile_photo.php:458
msgid "Use"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "skip this step"
+#: ../../Zotlabs/Module/Profile_photo.php:462
+#: ../../Zotlabs/Module/Profile_photo.php:463
+#: ../../Zotlabs/Module/Cover_photo.php:363
+#: ../../Zotlabs/Module/Cover_photo.php:364
+msgid "Use a photo from your albums"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "select a photo from your photo albums"
+#: ../../Zotlabs/Module/Profile_photo.php:467
+#: ../../Zotlabs/Module/Cover_photo.php:369
+msgid "Select existing photo"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:462
-#: ../../Zotlabs/Module/Cover_photo.php:381
+#: ../../Zotlabs/Module/Profile_photo.php:486
+#: ../../Zotlabs/Module/Cover_photo.php:386
msgid "Crop Image"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:463
-#: ../../Zotlabs/Module/Cover_photo.php:382
+#: ../../Zotlabs/Module/Profile_photo.php:487
+#: ../../Zotlabs/Module/Cover_photo.php:387
msgid "Please adjust the image cropping for optimum viewing."
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Cover_photo.php:384
+#: ../../Zotlabs/Module/Profile_photo.php:489
+#: ../../Zotlabs/Module/Cover_photo.php:389
msgid "Done Editing"
msgstr ""
@@ -5178,65 +5250,65 @@ msgstr ""
msgid "Online"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:193
+#: ../../Zotlabs/Module/Item.php:194
msgid "Unable to locate original post."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:475
+#: ../../Zotlabs/Module/Item.php:476
msgid "Empty post discarded."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:853
+#: ../../Zotlabs/Module/Item.php:867
msgid "Duplicate post suppressed."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:998
+#: ../../Zotlabs/Module/Item.php:1012
msgid "System error. Post not saved."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1034
+#: ../../Zotlabs/Module/Item.php:1048
msgid "Your comment is awaiting approval."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1139
+#: ../../Zotlabs/Module/Item.php:1153
msgid "Unable to obtain post information from database."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1168
+#: ../../Zotlabs/Module/Item.php:1182
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1175
+#: ../../Zotlabs/Module/Item.php:1189
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:311
+#: ../../Zotlabs/Module/Ping.php:320
msgid "sent you a private message"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:360
+#: ../../Zotlabs/Module/Ping.php:372
msgid "added your channel"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:384
+#: ../../Zotlabs/Module/Ping.php:396
msgid "requires approval"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:394
+#: ../../Zotlabs/Module/Ping.php:406
msgid "g A l F d"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:412
+#: ../../Zotlabs/Module/Ping.php:424
msgid "[today]"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:421
+#: ../../Zotlabs/Module/Ping.php:433
msgid "posted an event"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:454
+#: ../../Zotlabs/Module/Ping.php:466
msgid "shared a file with you"
msgstr ""
@@ -5246,7 +5318,7 @@ msgstr ""
#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
#: ../../Zotlabs/Module/Display.php:133
-#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:168
+#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:167
#: ../../include/help.php:81
msgid "Page not found."
msgstr ""
@@ -5299,9 +5371,9 @@ msgstr ""
msgid "Connection has been removed."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:241
+#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:247
#: ../../addon/openclipatar/openclipatar.php:57
-#: ../../include/conversation.php:1032 ../../include/nav.php:148
+#: ../../include/conversation.php:1032 ../../include/nav.php:114
msgid "View Profile"
msgstr ""
@@ -5411,15 +5483,15 @@ msgstr ""
msgid "Open Set Affinity section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:709 ../../Zotlabs/Widget/Affinity.php:26
+#: ../../Zotlabs/Module/Connedit.php:709 ../../Zotlabs/Widget/Affinity.php:22
msgid "Me"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:27
+#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:23
msgid "Family"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:29
+#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:25
msgid "Acquaintances"
msgstr ""
@@ -5451,119 +5523,124 @@ msgstr ""
msgid "Set Affinity & Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:855
+#: ../../Zotlabs/Module/Connedit.php:838
msgid "This connection is unreachable from this location."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:856
+#: ../../Zotlabs/Module/Connedit.php:839
msgid "This connection may be unreachable from other channel locations."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:858
+#: ../../Zotlabs/Module/Connedit.php:841
msgid "Location independence is not supported by their network."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:864
+#: ../../Zotlabs/Module/Connedit.php:847
msgid ""
"This connection is unreachable from this location. Location independence is "
"not supported by their network."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:238
+#: ../../Zotlabs/Module/Connedit.php:850 ../../Zotlabs/Module/Defperms.php:238
#: ../../Zotlabs/Widget/Settings_menu.php:109
msgid "Connection Default Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4134
+#: ../../Zotlabs/Module/Connedit.php:850 ../../include/items.php:4164
#, php-format
msgid "Connection: %s"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:239
+#: ../../Zotlabs/Module/Connedit.php:851 ../../Zotlabs/Module/Defperms.php:239
msgid "Apply these permissions automatically"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:851
msgid "Connection requests will be approved without your interaction"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:240
+#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:240
msgid "Permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:241
+#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:240
+#: ../../Zotlabs/Widget/Notifications.php:151 ../../include/nav.php:284
+msgid "Loading"
+msgstr ""
+
+#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:241
msgid "Add permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:860
msgid "This connection's primary address is"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:878
+#: ../../Zotlabs/Module/Connedit.php:861
msgid "Available locations:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:245
+#: ../../Zotlabs/Module/Connedit.php:866 ../../Zotlabs/Module/Defperms.php:245
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:884
+#: ../../Zotlabs/Module/Connedit.php:867
msgid "Connection Tools"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:886
+#: ../../Zotlabs/Module/Connedit.php:869
msgid "Slide to adjust your degree of friendship"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Rate.php:155
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:888
+#: ../../Zotlabs/Module/Connedit.php:871
msgid "Slide to adjust your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
+#: ../../Zotlabs/Module/Connedit.php:872 ../../Zotlabs/Module/Connedit.php:877
msgid "Optionally explain your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:891
+#: ../../Zotlabs/Module/Connedit.php:874
msgid "Custom Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:892
+#: ../../Zotlabs/Module/Connedit.php:875
msgid "Only import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
+#: ../../Zotlabs/Module/Connedit.php:875 ../../Zotlabs/Module/Connedit.php:876
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:893
+#: ../../Zotlabs/Module/Connedit.php:876
msgid "Do not import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:895
+#: ../../Zotlabs/Module/Connedit.php:878
msgid "This information is public!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:900
+#: ../../Zotlabs/Module/Connedit.php:883
msgid "Connection Pending Approval"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:905
+#: ../../Zotlabs/Module/Connedit.php:888
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:912
+#: ../../Zotlabs/Module/Connedit.php:895
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -5571,11 +5648,11 @@ msgid ""
"any impact unless the inherited setting changes."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:913
+#: ../../Zotlabs/Module/Connedit.php:896
msgid "Last update:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:922
+#: ../../Zotlabs/Module/Connedit.php:904
msgid "Details"
msgstr ""
@@ -5609,7 +5686,7 @@ msgid "Please enter a link URL:"
msgstr ""
#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:768
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:764
#: ../../include/conversation.php:1432
msgid "Encrypt text"
msgstr ""
@@ -5643,14 +5720,14 @@ msgstr ""
msgid "min"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:242
-#: ../../include/conversation.php:1831 ../../include/nav.php:433
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:248
+#: ../../include/conversation.php:1831 ../../include/nav.php:401
msgid "Photos"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:237
-#: ../../Zotlabs/Storage/Browser.php:269 ../../include/conversation.php:1839
-#: ../../include/nav.php:441
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:243
+#: ../../Zotlabs/Storage/Browser.php:272 ../../include/conversation.php:1839
+#: ../../include/nav.php:409
msgid "Files"
msgstr ""
@@ -5690,7 +5767,7 @@ msgstr ""
msgid "Submit and proceed"
msgstr ""
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2289
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2403
msgid "Menus"
msgstr ""
@@ -5742,12 +5819,12 @@ msgstr ""
msgid "Allow bookmarks"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2290
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2404
msgid "Layouts"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:245
-#: ../../include/nav.php:208 ../../include/nav.php:312
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:251
+#: ../../include/nav.php:176 ../../include/nav.php:280
#: ../../include/help.php:68 ../../include/help.php:74
msgid "Help"
msgstr ""
@@ -5765,20 +5842,49 @@ msgid "Download PDL file"
msgstr ""
#: ../../Zotlabs/Module/Cloud.php:114
+msgid "Please refresh page"
+msgstr ""
+
+#: ../../Zotlabs/Module/Cloud.php:117
msgid "Unknown error"
msgstr ""
+#: ../../Zotlabs/Module/Email_validation.php:24
+#: ../../Zotlabs/Module/Email_resend.php:12
+msgid "Token verification failed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Email_validation.php:36
+msgid "Email Verification Required"
+msgstr ""
+
+#: ../../Zotlabs/Module/Email_validation.php:37
+#, php-format
+msgid ""
+"A verification token was sent to your email address [%s]. Enter that token "
+"here to complete the account verification step. Please allow a few minutes "
+"for delivery, and check your spam folder if you do not see the message."
+msgstr ""
+
+#: ../../Zotlabs/Module/Email_validation.php:38
+msgid "Resend Email"
+msgstr ""
+
+#: ../../Zotlabs/Module/Email_validation.php:41
+msgid "Validation token"
+msgstr ""
+
#: ../../Zotlabs/Module/Tagger.php:48
msgid "Post not found."
msgstr ""
#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:160
-#: ../../include/bbcode.php:335
+#: ../../include/bbcode.php:339
msgid "post"
msgstr ""
#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
-#: ../../include/text.php:1946
+#: ../../include/text.php:2012
msgid "comment"
msgstr ""
@@ -5826,7 +5932,7 @@ msgid "Could not create privacy group."
msgstr ""
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:143
-#: ../../include/items.php:4101
+#: ../../include/items.php:4131
msgid "Privacy group not found."
msgstr ""
@@ -6001,7 +6107,8 @@ msgstr ""
msgid "Relation"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:58
+#: ../../Zotlabs/Module/Profiles.php:739 ../../Zotlabs/Widget/Newmember.php:53
+#: ../../include/datetime.php:58
msgid "Miscellaneous"
msgstr ""
@@ -6143,10 +6250,73 @@ msgid "Profile Image"
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1297
-#: ../../include/nav.php:151
+#: ../../include/nav.php:117
msgid "Edit Profiles"
msgstr ""
+#: ../../Zotlabs/Module/Go.php:21
+msgid "This page is available only to site members"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:27
+msgid "Welcome"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:29
+msgid "What would you like to do?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:31
+msgid ""
+"Please bookmark this page if you would like to return to it in the future"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:35
+msgid "Upload a profile photo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:36
+msgid "Upload a cover photo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:37
+msgid "Edit your default profile"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:43
+msgid "View friend suggestions"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:39 ../../Zotlabs/Widget/Newmember.php:42
+msgid "View the channel directory"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:40
+msgid "View/edit your channel settings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:41
+msgid "View the site or project documentation"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:42
+msgid "Visit your channel homepage"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:43
+msgid ""
+"View your connections and/or add somebody whose address you already know"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:44
+msgid ""
+"View your personal stream (this may be empty until you add some connections)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Go.php:52
+msgid "View the public stream. Warning: this content is not moderated"
+msgstr ""
+
#: ../../Zotlabs/Module/Editwebpage.php:139
msgid "Page link"
msgstr ""
@@ -6159,8 +6329,8 @@ msgstr ""
msgid "Create a new channel"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:234
-#: ../../include/nav.php:136 ../../include/nav.php:222
+#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:240
+#: ../../include/nav.php:102 ../../include/nav.php:190
msgid "Channel Manager"
msgstr ""
@@ -6194,7 +6364,13 @@ msgstr ""
msgid "Delegated Channel"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:95
+#: ../../Zotlabs/Module/Cards.php:42 ../../Zotlabs/Module/Cards.php:181
+#: ../../Zotlabs/Lib/Apps.php:230 ../../include/conversation.php:1890
+#: ../../include/features.php:114 ../../include/nav.php:458
+msgid "Cards"
+msgstr ""
+
+#: ../../Zotlabs/Module/Cards.php:99
msgid "Add Card"
msgstr ""
@@ -6202,45 +6378,45 @@ msgstr ""
msgid "This directory server requires an access token"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:19
+#: ../../Zotlabs/Module/Siteinfo.php:18
msgid "About this site"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:20
+#: ../../Zotlabs/Module/Siteinfo.php:19
msgid "Site Name"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:24
+#: ../../Zotlabs/Module/Siteinfo.php:23
msgid "Administrator"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:229
+#: ../../Zotlabs/Module/Siteinfo.php:25 ../../Zotlabs/Module/Register.php:232
msgid "Terms of Service"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:27
+#: ../../Zotlabs/Module/Siteinfo.php:26
msgid "Software and Project information"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:28
+#: ../../Zotlabs/Module/Siteinfo.php:27
msgid "This site is powered by $Projectname"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:29
+#: ../../Zotlabs/Module/Siteinfo.php:28
msgid ""
"Federated and decentralised networking and identity services provided by Zot"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:31
+#: ../../Zotlabs/Module/Siteinfo.php:30
#, php-format
msgid "Version %s"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:32
+#: ../../Zotlabs/Module/Siteinfo.php:31
msgid "Project homepage"
msgstr ""
-#: ../../Zotlabs/Module/Siteinfo.php:33
+#: ../../Zotlabs/Module/Siteinfo.php:32
msgid "Developer homepage"
msgstr ""
@@ -6281,8 +6457,8 @@ msgstr ""
msgid "Export selected"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:238
-#: ../../include/conversation.php:1912 ../../include/nav.php:513
+#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:244
+#: ../../include/conversation.php:1912 ../../include/nav.php:481
msgid "Webpages"
msgstr ""
@@ -6443,7 +6619,7 @@ msgid "Change profile photo"
msgstr ""
#: ../../Zotlabs/Module/Sources.php:96
-#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:228
+#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:274
msgid "Channel Sources"
msgstr ""
@@ -6491,88 +6667,88 @@ msgstr ""
msgid "Profile name"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:22
+#: ../../Zotlabs/Module/Like.php:54
msgid "Like/Dislike"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:27
+#: ../../Zotlabs/Module/Like.php:59
msgid "This action is restricted to members."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:28
+#: ../../Zotlabs/Module/Like.php:60
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
"\"register\">register as a new $Projectname member</a> to continue."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:108 ../../Zotlabs/Module/Like.php:134
-#: ../../Zotlabs/Module/Like.php:172
+#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
+#: ../../Zotlabs/Module/Like.php:173
msgid "Invalid request."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:120 ../../include/conversation.php:122
+#: ../../Zotlabs/Module/Like.php:121 ../../include/conversation.php:122
msgid "channel"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:149
+#: ../../Zotlabs/Module/Like.php:150
msgid "thing"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:195
+#: ../../Zotlabs/Module/Like.php:196
msgid "Channel unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:243
+#: ../../Zotlabs/Module/Like.php:244
msgid "Previous action reversed."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:435 ../../addon/diaspora/Receiver.php:1462
-#: ../../addon/pubcrawl/as.php:1330 ../../include/conversation.php:160
+#: ../../Zotlabs/Module/Like.php:436 ../../addon/diaspora/Receiver.php:1547
+#: ../../addon/pubcrawl/as.php:1394 ../../include/conversation.php:160
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:437 ../../addon/pubcrawl/as.php:1332
+#: ../../Zotlabs/Module/Like.php:438 ../../addon/pubcrawl/as.php:1396
#: ../../include/conversation.php:163
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:439
+#: ../../Zotlabs/Module/Like.php:440
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:441
+#: ../../Zotlabs/Module/Like.php:442
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:443
+#: ../../Zotlabs/Module/Like.php:444
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:445
+#: ../../Zotlabs/Module/Like.php:446 ../../addon/diaspora/Receiver.php:2031
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:447
+#: ../../Zotlabs/Module/Like.php:448 ../../addon/diaspora/Receiver.php:2033
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:449
+#: ../../Zotlabs/Module/Like.php:450 ../../addon/diaspora/Receiver.php:2035
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:561
+#: ../../Zotlabs/Module/Like.php:562
msgid "Action completed."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:562
+#: ../../Zotlabs/Module/Like.php:563
msgid "Thank you."
msgstr ""
@@ -6595,12 +6771,12 @@ msgstr ""
msgid "Homepage: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1564
+#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1565
msgid "Age:"
msgstr ""
#: ../../Zotlabs/Module/Directory.php:319 ../../include/channel.php:1392
-#: ../../include/event.php:53 ../../include/event.php:85
+#: ../../include/event.php:54 ../../include/event.php:86
msgid "Location:"
msgstr ""
@@ -6608,11 +6784,11 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1580
+#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1581
msgid "Hometown:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1588
+#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1589
msgid "About:"
msgstr ""
@@ -6852,19 +7028,19 @@ msgstr ""
msgid "Rate"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:263
+#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:267
msgid "webpage"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:269
+#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:273
msgid "block"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:266
+#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:270
msgid "layout"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:272
+#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:276
msgid "menu"
msgstr ""
@@ -6924,20 +7100,20 @@ msgstr ""
msgid "Passwords do not match."
msgstr ""
-#: ../../Zotlabs/Module/Register.php:127 ../../Zotlabs/Module/Register.php:137
-msgid ""
-"Registration successful. Please check your email for validation instructions."
+#: ../../Zotlabs/Module/Register.php:132
+msgid "Registration successful. Continue to create your first channel..."
msgstr ""
#: ../../Zotlabs/Module/Register.php:135
-msgid "Registration successful. Continue to create your first channel..."
+msgid ""
+"Registration successful. Please check your email for validation instructions."
msgstr ""
-#: ../../Zotlabs/Module/Register.php:144
+#: ../../Zotlabs/Module/Register.php:142
msgid "Your registration is pending approval by the site owner."
msgstr ""
-#: ../../Zotlabs/Module/Register.php:147
+#: ../../Zotlabs/Module/Register.php:145
msgid "Your registration can not be processed."
msgstr ""
@@ -6959,53 +7135,53 @@ msgid ""
"Please try again tomorrow."
msgstr ""
-#: ../../Zotlabs/Module/Register.php:235
+#: ../../Zotlabs/Module/Register.php:238
#, php-format
msgid "I accept the %s for this website"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:241
+#: ../../Zotlabs/Module/Register.php:245
#, php-format
msgid "I am over %s years of age and accept the %s for this website"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:245
+#: ../../Zotlabs/Module/Register.php:250
msgid "Your email address"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:246
+#: ../../Zotlabs/Module/Register.php:251
msgid "Choose a password"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:247
+#: ../../Zotlabs/Module/Register.php:252
msgid "Please re-enter your password"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:248
+#: ../../Zotlabs/Module/Register.php:253
msgid "Please enter your invitation code"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:253
+#: ../../Zotlabs/Module/Register.php:258
msgid "no"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:253
+#: ../../Zotlabs/Module/Register.php:258
msgid "yes"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:268
+#: ../../Zotlabs/Module/Register.php:274
msgid "Membership on this site is by invitation only."
msgstr ""
-#: ../../Zotlabs/Module/Register.php:280 ../../boot.php:1645
-#: ../../include/nav.php:196
+#: ../../Zotlabs/Module/Register.php:286 ../../boot.php:1563
+#: ../../include/nav.php:164
msgid "Register"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:281
+#: ../../Zotlabs/Module/Register.php:287
msgid ""
-"This site may require email verification after submitting this form. If you "
-"are returned to a login page, please check your email for instructions."
+"This site requires email verification. After completing this form, please "
+"check your email for further instructions."
msgstr ""
#: ../../Zotlabs/Module/Cover_photo.php:136
@@ -7013,35 +7189,35 @@ msgstr ""
msgid "Cover Photos"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4478
+#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4508
msgid "female"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4479
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4509
#, php-format
msgid "%1$s updated her %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4480
+#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4510
msgid "male"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4481
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4511
#, php-format
msgid "%1$s updated his %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4483
+#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4513
#, php-format
msgid "%1$s updated their %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2053
+#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2059
msgid "cover photo"
msgstr ""
#: ../../Zotlabs/Module/Cover_photo.php:360
-msgid "Upload Cover Photo"
+msgid "Change Cover Photo"
msgstr ""
#: ../../Zotlabs/Module/Help.php:23
@@ -7049,7 +7225,7 @@ msgid "Documentation Search"
msgstr ""
#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1821
-#: ../../include/nav.php:423
+#: ../../include/nav.php:391
msgid "About"
msgstr ""
@@ -7073,11 +7249,11 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: ../../Zotlabs/Module/Display.php:349
+#: ../../Zotlabs/Module/Display.php:351
msgid "Article"
msgstr ""
-#: ../../Zotlabs/Module/Display.php:401
+#: ../../Zotlabs/Module/Display.php:403
msgid "Item has been removed."
msgstr ""
@@ -7093,44 +7269,44 @@ msgstr ""
msgid "Select a tag to remove: "
msgstr ""
-#: ../../Zotlabs/Module/Network.php:97
+#: ../../Zotlabs/Module/Network.php:100
msgid "No such group"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:137
+#: ../../Zotlabs/Module/Network.php:142
msgid "No such channel"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:142
+#: ../../Zotlabs/Module/Network.php:147
msgid "forum"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:154
+#: ../../Zotlabs/Module/Network.php:159
msgid "Search Results For:"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:222
+#: ../../Zotlabs/Module/Network.php:230
msgid "Privacy group is empty"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:231
+#: ../../Zotlabs/Module/Network.php:240
msgid "Privacy group: "
msgstr ""
-#: ../../Zotlabs/Module/Network.php:257
+#: ../../Zotlabs/Module/Network.php:268
msgid "Invalid connection."
msgstr ""
-#: ../../Zotlabs/Module/Network.php:276 ../../addon/redred/redred.php:65
+#: ../../Zotlabs/Module/Network.php:289 ../../addon/redred/redred.php:65
msgid "Invalid channel."
msgstr ""
-#: ../../Zotlabs/Module/Acl.php:358
+#: ../../Zotlabs/Module/Acl.php:361
msgid "network"
msgstr ""
#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82
-#: ../../addon/opensearch/opensearch.php:42
+#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42
msgid "$Projectname"
msgstr ""
@@ -7180,7 +7356,7 @@ msgid "Show URL to this file"
msgstr ""
#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394
+#: ../../Zotlabs/Storage/Browser.php:397
msgid "Show in your contacts shared folder"
msgstr ""
@@ -7196,16 +7372,24 @@ msgstr ""
msgid "View Common Connections"
msgstr ""
+#: ../../Zotlabs/Module/Email_resend.php:30
+msgid "Email verification resent"
+msgstr ""
+
+#: ../../Zotlabs/Module/Email_resend.php:33
+msgid "Unable to resend email verification message."
+msgstr ""
+
#: ../../Zotlabs/Module/Viewconnections.php:65
msgid "No connections."
msgstr ""
-#: ../../Zotlabs/Module/Viewconnections.php:78
+#: ../../Zotlabs/Module/Viewconnections.php:83
#, php-format
msgid "Visit %s's profile [%s]"
msgstr ""
-#: ../../Zotlabs/Module/Viewconnections.php:107
+#: ../../Zotlabs/Module/Viewconnections.php:113
msgid "View Connections"
msgstr ""
@@ -7314,7 +7498,7 @@ msgid ""
"Password reset failed."
msgstr ""
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1673
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1591
msgid "Password Reset"
msgstr ""
@@ -7388,143 +7572,143 @@ msgstr ""
msgid "5. Wizard - I probably know more than you do"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:225
+#: ../../Zotlabs/Lib/Apps.php:231
msgid "Site Admin"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:226 ../../addon/buglink/buglink.php:16
+#: ../../Zotlabs/Lib/Apps.php:232 ../../addon/buglink/buglink.php:16
msgid "Report Bug"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:227
+#: ../../Zotlabs/Lib/Apps.php:233
msgid "View Bookmarks"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:228
+#: ../../Zotlabs/Lib/Apps.php:234
msgid "My Chatrooms"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:230
+#: ../../Zotlabs/Lib/Apps.php:236
msgid "Firefox Share"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:231
+#: ../../Zotlabs/Lib/Apps.php:237
msgid "Remote Diagnostics"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:352
+#: ../../Zotlabs/Lib/Apps.php:238 ../../include/features.php:390
msgid "Suggest Channels"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1664 ../../include/nav.php:160
-#: ../../include/nav.php:164
+#: ../../Zotlabs/Lib/Apps.php:239 ../../boot.php:1582 ../../include/nav.php:126
+#: ../../include/nav.php:130
msgid "Login"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:105
+#: ../../Zotlabs/Lib/Apps.php:241
msgid "Activity"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1928
-#: ../../include/features.php:95 ../../include/nav.php:529
+#: ../../Zotlabs/Lib/Apps.php:245 ../../include/conversation.php:1928
+#: ../../include/features.php:87 ../../include/nav.php:497
msgid "Wiki"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:109
+#: ../../Zotlabs/Lib/Apps.php:246
msgid "Channel Home"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1850
-#: ../../include/conversation.php:1853 ../../include/nav.php:131
+#: ../../Zotlabs/Lib/Apps.php:249 ../../include/conversation.php:1850
+#: ../../include/conversation.php:1853
msgid "Events"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:244
+#: ../../Zotlabs/Lib/Apps.php:250
msgid "Directory"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:123
+#: ../../Zotlabs/Lib/Apps.php:252
msgid "Mail"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:249
+#: ../../Zotlabs/Lib/Apps.php:255
msgid "Chat"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:251
+#: ../../Zotlabs/Lib/Apps.php:257
msgid "Probe"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:252
+#: ../../Zotlabs/Lib/Apps.php:258
msgid "Suggest"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:253
+#: ../../Zotlabs/Lib/Apps.php:259
msgid "Random Channel"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:254
+#: ../../Zotlabs/Lib/Apps.php:260
msgid "Invite"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:255 ../../Zotlabs/Widget/Admin.php:26
+#: ../../Zotlabs/Lib/Apps.php:261 ../../Zotlabs/Widget/Admin.php:26
msgid "Features"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:256 ../../addon/openid/MysqlProvider.php:69
+#: ../../Zotlabs/Lib/Apps.php:262 ../../addon/openid/MysqlProvider.php:69
msgid "Language"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:257
+#: ../../Zotlabs/Lib/Apps.php:263
msgid "Post"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:258 ../../addon/openid/MysqlProvider.php:58
+#: ../../Zotlabs/Lib/Apps.php:264 ../../addon/openid/MysqlProvider.php:58
#: ../../addon/openid/MysqlProvider.php:59
#: ../../addon/openid/MysqlProvider.php:60
msgid "Profile Photo"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:397
+#: ../../Zotlabs/Lib/Apps.php:407
msgid "Purchase"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:401
+#: ../../Zotlabs/Lib/Apps.php:411
msgid "Undelete"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:409
+#: ../../Zotlabs/Lib/Apps.php:419
msgid "Add to app-tray"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:410
+#: ../../Zotlabs/Lib/Apps.php:420
msgid "Remove from app-tray"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:411
+#: ../../Zotlabs/Lib/Apps.php:421
msgid "Pin to navbar"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:412
+#: ../../Zotlabs/Lib/Apps.php:422
msgid "Unpin from navbar"
msgstr ""
-#: ../../Zotlabs/Lib/Permcat.php:58
+#: ../../Zotlabs/Lib/Permcat.php:82
msgctxt "permcat"
msgid "default"
msgstr ""
-#: ../../Zotlabs/Lib/Permcat.php:96
+#: ../../Zotlabs/Lib/Permcat.php:133
msgctxt "permcat"
msgid "follower"
msgstr ""
-#: ../../Zotlabs/Lib/Permcat.php:100
+#: ../../Zotlabs/Lib/Permcat.php:137
msgctxt "permcat"
msgid "contributor"
msgstr ""
-#: ../../Zotlabs/Lib/Permcat.php:104
+#: ../../Zotlabs/Lib/Permcat.php:141
msgctxt "permcat"
msgid "publisher"
msgstr ""
@@ -7593,18 +7777,18 @@ msgid "Message"
msgstr ""
#: ../../Zotlabs/Lib/NativeWikiPage.php:597
-#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:674
-#: ../../include/bbcode.php:822
+#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:706
+#: ../../include/bbcode.php:865
msgid "Different viewers will see this text differently"
msgstr ""
#: ../../Zotlabs/Lib/PermissionDescription.php:34
-#: ../../include/acl_selectors.php:128
+#: ../../include/acl_selectors.php:33
msgid "Visible to your default audience"
msgstr ""
#: ../../Zotlabs/Lib/PermissionDescription.php:107
-#: ../../include/acl_selectors.php:201
+#: ../../include/acl_selectors.php:106
msgid "Only me"
msgstr ""
@@ -7685,8 +7869,8 @@ msgstr ""
msgid "$Projectname Notification"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:283
-#: ../../addon/diaspora/util.php:296 ../../addon/diaspora/p.php:48
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:308
+#: ../../addon/diaspora/util.php:321 ../../addon/diaspora/p.php:48
msgid "$projectname"
msgstr ""
@@ -7699,218 +7883,257 @@ msgstr ""
msgid "%s Administrator"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:116
+#: ../../Zotlabs/Lib/Enotify.php:66
#, php-format
-msgid "%s <!item_type!>"
+msgid "This email was sent by %1$s at %2$s."
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:67
+#, php-format
+msgid ""
+"To stop receiving these messages, please adjust your Notification Settings "
+"at %s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:68
+#, php-format
+msgid "To stop receiving these messages, please adjust your %s."
msgstr ""
#: ../../Zotlabs/Lib/Enotify.php:120
#, php-format
+msgid "%s <!item_type!>"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:124
+#, php-format
msgid "[$Projectname:Notify] New mail received at %s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:122
+#: ../../Zotlabs/Lib/Enotify.php:126
#, php-format
msgid "%1$s, %2$s sent you a new private message at %3$s."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:123
+#: ../../Zotlabs/Lib/Enotify.php:127
#, php-format
msgid "%1$s sent you %2$s."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:123
+#: ../../Zotlabs/Lib/Enotify.php:127
msgid "a private message"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:124
+#: ../../Zotlabs/Lib/Enotify.php:128
#, php-format
msgid "Please visit %s to view and/or reply to your private messages."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:184
+#: ../../Zotlabs/Lib/Enotify.php:141
+msgid "commented on"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:152
+msgid "liked"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:155
+msgid "disliked"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:198
#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgid "%1$s, %2$s %3$s [zrl=%4$s]a %5$s[/zrl]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:192
+#: ../../Zotlabs/Lib/Enotify.php:207
#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgid "%1$s, %2$s %3$s [zrl=%4$s]%5$s's %6$s[/zrl]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:201
+#: ../../Zotlabs/Lib/Enotify.php:217
#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgid "%1$s, %2$s %3$s [zrl=%4$s]your %5$s[/zrl]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:213
+#: ../../Zotlabs/Lib/Enotify.php:230
#, php-format
msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:215
+#: ../../Zotlabs/Lib/Enotify.php:232
#, php-format
msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:216
+#: ../../Zotlabs/Lib/Enotify.php:233
#, php-format
msgid "%1$s, %2$s commented on an item/conversation you have been following."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:219 ../../Zotlabs/Lib/Enotify.php:301
-#: ../../Zotlabs/Lib/Enotify.php:318 ../../Zotlabs/Lib/Enotify.php:344
-#: ../../Zotlabs/Lib/Enotify.php:362 ../../Zotlabs/Lib/Enotify.php:376
+#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:318
+#: ../../Zotlabs/Lib/Enotify.php:335 ../../Zotlabs/Lib/Enotify.php:361
+#: ../../Zotlabs/Lib/Enotify.php:379 ../../Zotlabs/Lib/Enotify.php:393
#, php-format
msgid "Please visit %s to view and/or reply to the conversation."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:223 ../../Zotlabs/Lib/Enotify.php:224
+#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241
#, php-format
msgid "Please visit %s to approve or reject this comment."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:282
+#: ../../Zotlabs/Lib/Enotify.php:299
#, php-format
msgid "%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:297
+#: ../../Zotlabs/Lib/Enotify.php:314
#, php-format
msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:298
+#: ../../Zotlabs/Lib/Enotify.php:315
#, php-format
msgid "%1$s, %2$s liked an item/conversation you created."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:309
+#: ../../Zotlabs/Lib/Enotify.php:326
#, php-format
msgid "[$Projectname:Notify] %s posted to your profile wall"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:311
+#: ../../Zotlabs/Lib/Enotify.php:328
#, php-format
msgid "%1$s, %2$s posted to your profile wall at %3$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:313
+#: ../../Zotlabs/Lib/Enotify.php:330
#, php-format
msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:337
+#: ../../Zotlabs/Lib/Enotify.php:354
#, php-format
msgid "[$Projectname:Notify] %s tagged you"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:338
+#: ../../Zotlabs/Lib/Enotify.php:355
#, php-format
msgid "%1$s, %2$s tagged you at %3$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:339
+#: ../../Zotlabs/Lib/Enotify.php:356
#, php-format
msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:351
+#: ../../Zotlabs/Lib/Enotify.php:368
#, php-format
msgid "[$Projectname:Notify] %1$s poked you"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:352
+#: ../../Zotlabs/Lib/Enotify.php:369
#, php-format
msgid "%1$s, %2$s poked you at %3$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:353
+#: ../../Zotlabs/Lib/Enotify.php:370
#, php-format
msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:369
+#: ../../Zotlabs/Lib/Enotify.php:386
#, php-format
msgid "[$Projectname:Notify] %s tagged your post"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:370
+#: ../../Zotlabs/Lib/Enotify.php:387
#, php-format
msgid "%1$s, %2$s tagged your post at %3$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:371
+#: ../../Zotlabs/Lib/Enotify.php:388
#, php-format
msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:383
+#: ../../Zotlabs/Lib/Enotify.php:400
msgid "[$Projectname:Notify] Introduction received"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:384
+#: ../../Zotlabs/Lib/Enotify.php:401
#, php-format
msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:385
+#: ../../Zotlabs/Lib/Enotify.php:402
#, php-format
msgid ""
"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:389 ../../Zotlabs/Lib/Enotify.php:408
+#: ../../Zotlabs/Lib/Enotify.php:406 ../../Zotlabs/Lib/Enotify.php:425
#, php-format
msgid "You may visit their profile at %s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:391
+#: ../../Zotlabs/Lib/Enotify.php:408
#, php-format
msgid "Please visit %s to approve or reject the connection request."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:398
+#: ../../Zotlabs/Lib/Enotify.php:415
msgid "[$Projectname:Notify] Friend suggestion received"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:399
+#: ../../Zotlabs/Lib/Enotify.php:416
#, php-format
msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:400
+#: ../../Zotlabs/Lib/Enotify.php:417
#, php-format
msgid ""
"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:406
+#: ../../Zotlabs/Lib/Enotify.php:423
msgid "Name:"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:407
+#: ../../Zotlabs/Lib/Enotify.php:424
msgid "Photo:"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:410
+#: ../../Zotlabs/Lib/Enotify.php:427
#, php-format
msgid "Please visit %s to approve or reject the suggestion."
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:629
+#: ../../Zotlabs/Lib/Enotify.php:647
msgid "[$Projectname:Notify]"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:793
+#: ../../Zotlabs/Lib/Enotify.php:815
msgid "created a new post"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:794
+#: ../../Zotlabs/Lib/Enotify.php:816
#, php-format
msgid "commented on %s's post"
msgstr ""
+#: ../../Zotlabs/Lib/Enotify.php:823
+#, php-format
+msgid "edited a post dated %s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:827
+#, php-format
+msgid "edited a comment dated %s"
+msgstr ""
+
#: ../../Zotlabs/Lib/NativeWiki.php:151
msgid "Wiki updated successfully"
msgstr ""
@@ -7919,12 +8142,12 @@ msgstr ""
msgid "Wiki files deleted successfully"
msgstr ""
-#: ../../Zotlabs/Lib/DB_Upgrade.php:95
+#: ../../Zotlabs/Lib/DB_Upgrade.php:83
#, php-format
msgid "Update Error at %s"
msgstr ""
-#: ../../Zotlabs/Lib/DB_Upgrade.php:101
+#: ../../Zotlabs/Lib/DB_Upgrade.php:89
#, php-format
msgid "Update %s failed. See error logs."
msgstr ""
@@ -7989,11 +8212,11 @@ msgstr ""
msgid "Add Tag"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:506
+#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:510
msgid "like"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:507
+#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:511
msgid "dislike"
msgstr ""
@@ -8086,51 +8309,51 @@ msgstr ""
msgid "%s show all"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1377
+#: ../../Zotlabs/Lib/ThreadItem.php:751 ../../include/conversation.php:1377
msgid "Bold"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:756 ../../include/conversation.php:1378
+#: ../../Zotlabs/Lib/ThreadItem.php:752 ../../include/conversation.php:1378
msgid "Italic"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:757 ../../include/conversation.php:1379
+#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/conversation.php:1379
msgid "Underline"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:758 ../../include/conversation.php:1380
+#: ../../Zotlabs/Lib/ThreadItem.php:754 ../../include/conversation.php:1380
msgid "Quote"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:759 ../../include/conversation.php:1381
+#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1381
msgid "Code"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:760
+#: ../../Zotlabs/Lib/ThreadItem.php:756
msgid "Image"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:761
+#: ../../Zotlabs/Lib/ThreadItem.php:757
msgid "Attach File"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:762
+#: ../../Zotlabs/Lib/ThreadItem.php:758
msgid "Insert Link"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:763
+#: ../../Zotlabs/Lib/ThreadItem.php:759
msgid "Video"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:773
+#: ../../Zotlabs/Lib/ThreadItem.php:769
msgid "Your full name (required)"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:774
+#: ../../Zotlabs/Lib/ThreadItem.php:770
msgid "Your email address (required)"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:775
+#: ../../Zotlabs/Lib/ThreadItem.php:771
msgid "Your website URL (optional)"
msgstr ""
@@ -8146,11 +8369,11 @@ msgstr ""
msgid "Welcome %s. Remote authentication successful."
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:284
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:287
msgid "parent"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2707
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2821
msgid "Collection"
msgstr ""
@@ -8162,8 +8385,8 @@ msgstr ""
msgid "Addressbook"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:452
-#: ../../include/nav.php:455
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:420
+#: ../../include/nav.php:423
msgid "Calendar"
msgstr ""
@@ -8175,41 +8398,41 @@ msgstr ""
msgid "Schedule Outbox"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:270
+#: ../../Zotlabs/Storage/Browser.php:273
msgid "Total"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:272
+#: ../../Zotlabs/Storage/Browser.php:275
msgid "Shared"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:350
+#: ../../Zotlabs/Storage/Browser.php:353
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:355
+#: ../../Zotlabs/Storage/Browser.php:358
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:366
+#: ../../Zotlabs/Storage/Browser.php:369
msgid "WARNING:"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:378
+#: ../../Zotlabs/Storage/Browser.php:381
msgid "Create new folder"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:380
+#: ../../Zotlabs/Storage/Browser.php:383
msgid "Upload file"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:393
+#: ../../Zotlabs/Storage/Browser.php:396
msgid "Drop files here to immediately upload"
msgstr ""
-#: ../../Zotlabs/Widget/Forums.php:99
+#: ../../Zotlabs/Widget/Forums.php:100
msgid "Forums"
msgstr ""
@@ -8292,8 +8515,8 @@ msgstr ""
#: ../../Zotlabs/Widget/Appcategories.php:40
#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:97
#: ../../include/contact_widgets.php:141 ../../include/contact_widgets.php:186
-#: ../../include/taxonomy.php:337 ../../include/taxonomy.php:419
-#: ../../include/taxonomy.php:439 ../../include/taxonomy.php:460
+#: ../../include/taxonomy.php:344 ../../include/taxonomy.php:426
+#: ../../include/taxonomy.php:446 ../../include/taxonomy.php:467
msgid "Categories"
msgstr ""
@@ -8335,21 +8558,21 @@ msgstr ""
msgid "Combined View"
msgstr ""
-#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:126
+#: ../../Zotlabs/Widget/Mailmenu.php:20
msgid "Inbox"
msgstr ""
-#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:127
+#: ../../Zotlabs/Widget/Mailmenu.php:25
msgid "Outbox"
msgstr ""
-#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:128
+#: ../../Zotlabs/Widget/Mailmenu.php:30
msgid "New Message"
msgstr ""
#: ../../Zotlabs/Widget/Chatroom_list.php:16
#: ../../include/conversation.php:1864 ../../include/conversation.php:1867
-#: ../../include/nav.php:466 ../../include/nav.php:469
+#: ../../include/nav.php:434 ../../include/nav.php:437
msgid "Chatrooms"
msgstr ""
@@ -8431,7 +8654,7 @@ msgstr ""
msgid "Remove term"
msgstr ""
-#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:316
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:354
msgid "Saved Searches"
msgstr ""
@@ -8456,7 +8679,7 @@ msgstr ""
msgid "Page name"
msgstr ""
-#: ../../Zotlabs/Widget/Affinity.php:49
+#: ../../Zotlabs/Widget/Affinity.php:45
msgid "Refresh"
msgstr ""
@@ -8473,7 +8696,7 @@ msgid "See more..."
msgstr ""
#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
-#: ../../include/features.php:414
+#: ../../include/features.php:443
msgid "Saved Folders"
msgstr ""
@@ -8481,6 +8704,54 @@ msgstr ""
msgid "Click to show more"
msgstr ""
+#: ../../Zotlabs/Widget/Newmember.php:33
+msgid "Profile Creation"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:35
+msgid "Upload profile photo"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:36
+msgid "Upload cover photo"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:37 ../../include/nav.php:119
+msgid "Edit your profile"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:40
+msgid "Find and Connect with others"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:44
+msgid "Manage your connections"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:47
+msgid "Communicate"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:49
+msgid "View your channel homepage"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:50
+msgid "View your network stream"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:56
+msgid "Documentation"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:67
+msgid "View public stream. Warning: not moderated"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Newmember.php:71
+msgid "New Member Links"
+msgstr ""
+
#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
msgid "Member registrations waiting for confirmation"
msgstr ""
@@ -8493,7 +8764,7 @@ msgstr ""
msgid "DB updates"
msgstr ""
-#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:231
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:199
msgid "Admin"
msgstr ""
@@ -8514,7 +8785,7 @@ msgid "Additional features"
msgstr ""
#: ../../Zotlabs/Widget/Settings_menu.php:57
-msgid "Feature/Addon settings"
+msgid "Addon settings"
msgstr ""
#: ../../Zotlabs/Widget/Settings_menu.php:63
@@ -8533,7 +8804,7 @@ msgstr ""
msgid "Connected apps"
msgstr ""
-#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:168
+#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:231
msgid "Permission Groups"
msgstr ""
@@ -8553,7 +8824,7 @@ msgstr ""
msgid "New Network Activity Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:106
+#: ../../Zotlabs/Widget/Notifications.php:20
msgid "View your network activity"
msgstr ""
@@ -8562,161 +8833,163 @@ msgid "Mark all notifications read"
msgstr ""
#: ../../Zotlabs/Widget/Notifications.php:26
-#: ../../Zotlabs/Widget/Notifications.php:44
-#: ../../Zotlabs/Widget/Notifications.php:139
+#: ../../Zotlabs/Widget/Notifications.php:45
+#: ../../Zotlabs/Widget/Notifications.php:141
msgid "Show new posts only"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:34
-msgid "New Home Activity"
+#: ../../Zotlabs/Widget/Notifications.php:27
+#: ../../Zotlabs/Widget/Notifications.php:46
+#: ../../Zotlabs/Widget/Notifications.php:142
+msgid "Filter by name"
msgstr ""
#: ../../Zotlabs/Widget/Notifications.php:35
+msgid "New Home Activity"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Notifications.php:36
msgid "New Home Activity Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:38
+#: ../../Zotlabs/Widget/Notifications.php:39
msgid "View your home activity"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:41
-#: ../../Zotlabs/Widget/Notifications.php:136
+#: ../../Zotlabs/Widget/Notifications.php:42
+#: ../../Zotlabs/Widget/Notifications.php:138
msgid "Mark all notifications seen"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:52
+#: ../../Zotlabs/Widget/Notifications.php:54
msgid "New Mails"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:53
+#: ../../Zotlabs/Widget/Notifications.php:55
msgid "New Mails Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:56
+#: ../../Zotlabs/Widget/Notifications.php:58
msgid "View your private mails"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:59
+#: ../../Zotlabs/Widget/Notifications.php:61
msgid "Mark all messages seen"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:67
+#: ../../Zotlabs/Widget/Notifications.php:69
msgid "New Events"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:68
+#: ../../Zotlabs/Widget/Notifications.php:70
msgid "New Events Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:71 ../../include/nav.php:132
+#: ../../Zotlabs/Widget/Notifications.php:73
msgid "View events"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:74 ../../include/nav.php:133
+#: ../../Zotlabs/Widget/Notifications.php:76
msgid "Mark all events seen"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:83
+#: ../../Zotlabs/Widget/Notifications.php:85
msgid "New Connections Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:86
+#: ../../Zotlabs/Widget/Notifications.php:88
msgid "View all connections"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:94
+#: ../../Zotlabs/Widget/Notifications.php:96
msgid "New Files"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:95
+#: ../../Zotlabs/Widget/Notifications.php:97
msgid "New Files Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:102
-#: ../../Zotlabs/Widget/Notifications.php:103 ../../include/nav.php:119
+#: ../../Zotlabs/Widget/Notifications.php:104
+#: ../../Zotlabs/Widget/Notifications.php:105
msgid "Notices"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:106
+#: ../../Zotlabs/Widget/Notifications.php:108
msgid "View all notices"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:109
+#: ../../Zotlabs/Widget/Notifications.php:111
msgid "Mark all notices seen"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:119
+#: ../../Zotlabs/Widget/Notifications.php:121
msgid "New Registrations"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:120
+#: ../../Zotlabs/Widget/Notifications.php:122
msgid "New Registrations Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:130
+#: ../../Zotlabs/Widget/Notifications.php:132
msgid "Public Stream Notifications"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:133
+#: ../../Zotlabs/Widget/Notifications.php:135
msgid "View the public stream"
msgstr ""
-#: ../../Zotlabs/Widget/Notifications.php:147 ../../include/nav.php:316
-msgid "Loading"
+#: ../../Zotlabs/Widget/Notifications.php:150
+msgid "Sorry, you have got no notifications at the moment"
msgstr ""
#: ../../util/nconfig.php:34
msgid "Source channel not found."
msgstr ""
-#: ../../boot.php:1644
+#: ../../boot.php:1562
msgid "Create an account to access services and applications"
msgstr ""
-#: ../../boot.php:1663 ../../include/nav.php:145 ../../include/nav.php:174
-#: ../../include/nav.php:191
+#: ../../boot.php:1581 ../../include/nav.php:111 ../../include/nav.php:140
+#: ../../include/nav.php:159
msgid "Logout"
msgstr ""
-#: ../../boot.php:1667
+#: ../../boot.php:1585
msgid "Login/Email"
msgstr ""
-#: ../../boot.php:1668
+#: ../../boot.php:1586
msgid "Password"
msgstr ""
-#: ../../boot.php:1669
+#: ../../boot.php:1587
msgid "Remember me"
msgstr ""
-#: ../../boot.php:1672
+#: ../../boot.php:1590
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:2257
-msgid "toggle mobile"
-msgstr ""
-
-#: ../../boot.php:2419
+#: ../../boot.php:2347
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr ""
-#: ../../boot.php:2424
+#: ../../boot.php:2352
msgid "Website SSL certificate is not valid. Please correct."
msgstr ""
-#: ../../boot.php:2540
+#: ../../boot.php:2468
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr ""
-#: ../../boot.php:2545
+#: ../../boot.php:2473
msgid "Cron/Scheduled tasks not running."
msgstr ""
-#: ../../boot.php:2546 ../../include/datetime.php:292
+#: ../../boot.php:2474 ../../include/datetime.php:232
msgid "never"
msgstr ""
@@ -8840,7 +9113,7 @@ msgstr ""
msgid "Errors encountered deleting database table "
msgstr ""
-#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:773
+#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:779
msgid "Submit Settings"
msgstr ""
@@ -9043,7 +9316,7 @@ msgid "Page to load after image selection."
msgstr ""
#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1301
-#: ../../include/nav.php:153
+#: ../../include/nav.php:119
msgid "Edit Profile"
msgstr ""
@@ -9100,6 +9373,11 @@ msgstr ""
msgid "Drawn by: "
msgstr ""
+#: ../../addon/openclipatar/openclipatar.php:182
+#: ../../addon/openclipatar/openclipatar.php:194
+msgid "Use this image"
+msgstr ""
+
#: ../../addon/openclipatar/openclipatar.php:192
msgid "Or select from a free OpenClipart.org image:"
msgstr ""
@@ -9116,10 +9394,6 @@ msgstr ""
msgid "Profile photo updated successfully."
msgstr ""
-#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:4051
-msgid "invalid target signature"
-msgstr ""
-
#: ../../addon/adultphotoflag/adultphotoflag.php:24
msgid "Flag Adult Photos"
msgstr ""
@@ -9216,7 +9490,7 @@ msgstr ""
msgid "Possible adult content"
msgstr ""
-#: ../../addon/nsfw/nsfw.php:211
+#: ../../addon/nsfw/nsfw.php:222
#, php-format
msgid "%s - view"
msgstr ""
@@ -9273,6 +9547,15 @@ msgstr ""
msgid "Dreamwidth Post Settings"
msgstr ""
+#: ../../addon/notifyadmin/notifyadmin.php:34
+msgid "New registration"
+msgstr ""
+
+#: ../../addon/notifyadmin/notifyadmin.php:42
+#, php-format
+msgid "Message sent to %s. New account registration: %s"
+msgstr ""
+
#: ../../addon/dirstats/dirstats.php:94
msgid "Hubzilla Directory Stats"
msgstr ""
@@ -9521,17 +9804,17 @@ msgstr ""
msgid "OpenID protocol error. No ID returned."
msgstr ""
-#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:289
+#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:290
msgid "Login failed."
msgstr ""
#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1480
+#: ../../include/selectors.php:66 ../../include/channel.php:1481
msgid "Male"
msgstr ""
#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1478
+#: ../../include/selectors.php:66 ../../include/channel.php:1479
msgid "Female"
msgstr ""
@@ -9718,38 +10001,38 @@ msgstr ""
msgid "declared undying love for"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:772
+#: ../../addon/diaspora/diaspora.php:778
msgid "Diaspora Protocol Settings updated."
msgstr ""
-#: ../../addon/diaspora/diaspora.php:791
+#: ../../addon/diaspora/diaspora.php:797
msgid ""
"The Diaspora protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr ""
-#: ../../addon/diaspora/diaspora.php:794
+#: ../../addon/diaspora/diaspora.php:800
msgid "Enable the Diaspora protocol for this channel"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:798
+#: ../../addon/diaspora/diaspora.php:804
msgid "Allow any Diaspora member to comment on your public posts"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:802
+#: ../../addon/diaspora/diaspora.php:808
msgid "Prevent your hashtags from being redirected to other sites"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:806
+#: ../../addon/diaspora/diaspora.php:812
msgid "Sign and forward posts and comments with no existing Diaspora signature"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:811
+#: ../../addon/diaspora/diaspora.php:817
msgid "Followed hashtags (comma separated, do not include the #)"
msgstr ""
-#: ../../addon/diaspora/diaspora.php:816
+#: ../../addon/diaspora/diaspora.php:822
msgid "Diaspora Protocol Settings"
msgstr ""
@@ -10003,6 +10286,10 @@ msgstr ""
msgid "Message subject"
msgstr ""
+#: ../../addon/mdpost/mdpost.php:41
+msgid "Use markdown for editing posts"
+msgstr ""
+
#: ../../addon/openstreetmap/openstreetmap.php:146
msgid "View Larger"
msgstr ""
@@ -10085,7 +10372,7 @@ msgid "Hubzilla to Friendica Post Settings"
msgstr ""
#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1397
-#: ../../include/channel.php:1567
+#: ../../include/channel.php:1568
msgid "Status:"
msgstr ""
@@ -10250,31 +10537,31 @@ msgstr ""
msgid "Friendica Login Password"
msgstr ""
-#: ../../addon/pubcrawl/as.php:1077 ../../addon/pubcrawl/as.php:1164
-#: ../../addon/pubcrawl/as.php:1339 ../../include/network.php:1768
+#: ../../addon/pubcrawl/as.php:1101 ../../addon/pubcrawl/as.php:1228
+#: ../../addon/pubcrawl/as.php:1403 ../../include/network.php:1774
msgid "ActivityPub"
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1033
+#: ../../addon/pubcrawl/pubcrawl.php:1034
msgid "ActivityPub Protocol Settings updated."
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1042
+#: ../../addon/pubcrawl/pubcrawl.php:1043
msgid ""
"The ActivityPub protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1045
+#: ../../addon/pubcrawl/pubcrawl.php:1046
msgid "Enable the ActivityPub protocol for this channel"
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1048
+#: ../../addon/pubcrawl/pubcrawl.php:1049
msgid "Send multi-media HTML articles"
msgstr ""
-#: ../../addon/pubcrawl/pubcrawl.php:1048
+#: ../../addon/pubcrawl/pubcrawl.php:1049
msgid "Not supported by some microblog services such as Mastodon"
msgstr ""
@@ -10583,7 +10870,7 @@ msgstr ""
msgid "Cancel GNU social Connection"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:232
+#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:233
msgid "Currently connected to: "
msgstr ""
@@ -10615,7 +10902,7 @@ msgid ""
"account by default"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:255
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:261
msgid "Clear OAuth configuration"
msgstr ""
@@ -10643,39 +10930,39 @@ msgstr ""
msgid "Enter some text"
msgstr ""
-#: ../../addon/chess/chess.php:278 ../../addon/chess/chess.php:465
+#: ../../addon/chess/chess.php:353 ../../addon/chess/chess.php:542
msgid "Invalid game."
msgstr ""
-#: ../../addon/chess/chess.php:284 ../../addon/chess/chess.php:471
+#: ../../addon/chess/chess.php:359 ../../addon/chess/chess.php:582
msgid "You are not a player in this game."
msgstr ""
-#: ../../addon/chess/chess.php:340
+#: ../../addon/chess/chess.php:415
msgid "You must be a local channel to create a game."
msgstr ""
-#: ../../addon/chess/chess.php:358
+#: ../../addon/chess/chess.php:433
msgid "You must select one opponent that is not yourself."
msgstr ""
-#: ../../addon/chess/chess.php:367
-msgid "You must select white or black."
+#: ../../addon/chess/chess.php:444
+msgid "Random color chosen."
msgstr ""
-#: ../../addon/chess/chess.php:375
+#: ../../addon/chess/chess.php:452
msgid "Error creating new game."
msgstr ""
-#: ../../addon/chess/chess.php:409 ../../include/channel.php:1152
+#: ../../addon/chess/chess.php:486 ../../include/channel.php:1152
msgid "Requested channel is not available."
msgstr ""
-#: ../../addon/chess/chess.php:423
+#: ../../addon/chess/chess.php:500
msgid "You must select a local channel /chess/channelname"
msgstr ""
-#: ../../addon/chess/chess.php:969
+#: ../../addon/chess/chess.php:1066
msgid "Enable notifications"
msgstr ""
@@ -10683,30 +10970,30 @@ msgstr ""
msgid "Post to Twitter"
msgstr ""
-#: ../../addon/twitter/twitter.php:154
+#: ../../addon/twitter/twitter.php:155
msgid "Twitter settings updated."
msgstr ""
-#: ../../addon/twitter/twitter.php:183
+#: ../../addon/twitter/twitter.php:184
msgid ""
"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"
msgstr ""
-#: ../../addon/twitter/twitter.php:205
+#: ../../addon/twitter/twitter.php:206
msgid ""
"Please indicate if you would like your first name or full name (or nothing) "
"to appear in our sponsor listing"
msgstr ""
-#: ../../addon/twitter/twitter.php:207
+#: ../../addon/twitter/twitter.php:208
msgid "Log in with Twitter"
msgstr ""
-#: ../../addon/twitter/twitter.php:210
+#: ../../addon/twitter/twitter.php:211
msgid "Copy the PIN from Twitter here"
msgstr ""
-#: ../../addon/twitter/twitter.php:237
+#: ../../addon/twitter/twitter.php:238
msgid ""
"This is a fairly comprehensive and complete guitar chord dictionary which "
"will list most of the available ways to play a certain chord, starting from "
@@ -10715,27 +11002,35 @@ msgid ""
"provided for the benefit of slide players, etc."
msgstr ""
-#: ../../addon/twitter/twitter.php:242
+#: ../../addon/twitter/twitter.php:243
msgid "Allow posting to Twitter"
msgstr ""
-#: ../../addon/twitter/twitter.php:242
+#: ../../addon/twitter/twitter.php:243
msgid ""
"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, "
"E7b13b11 ..."
msgstr ""
-#: ../../addon/twitter/twitter.php:246
+#: ../../addon/twitter/twitter.php:247
+msgid "Twitter post length"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:247
+msgid "Maximum tweet length"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:252
msgid "Send public postings to Twitter by default"
msgstr ""
-#: ../../addon/twitter/twitter.php:246
+#: ../../addon/twitter/twitter.php:252
msgid ""
"If enabled your public postings will be posted to the associated Twitter "
"account by default"
msgstr ""
-#: ../../addon/twitter/twitter.php:264
+#: ../../addon/twitter/twitter.php:270
msgid "Twitter Post Settings"
msgstr ""
@@ -10960,7 +11255,7 @@ msgstr ""
#: ../../addon/sendzid/sendzid.php:26
msgid ""
"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
+"identity is only shared with $Projectname sites."
msgstr ""
#: ../../addon/tictac/tictac.php:21
@@ -11344,11 +11639,11 @@ msgstr ""
msgid "Hermaphrodite"
msgstr ""
-#: ../../include/selectors.php:49 ../../include/channel.php:1484
+#: ../../include/selectors.php:49 ../../include/channel.php:1485
msgid "Neuter"
msgstr ""
-#: ../../include/selectors.php:49 ../../include/channel.php:1486
+#: ../../include/selectors.php:49 ../../include/channel.php:1487
msgid "Non-specific"
msgstr ""
@@ -11548,8 +11843,8 @@ msgstr ""
msgid "%1$s poked %2$s"
msgstr ""
-#: ../../include/conversation.php:251 ../../include/text.php:1104
-#: ../../include/text.php:1109
+#: ../../include/conversation.php:251 ../../include/text.php:1129
+#: ../../include/text.php:1133
msgid "poked"
msgstr ""
@@ -11751,32 +12046,32 @@ msgstr ""
msgid "Posts flagged as SPAM"
msgstr ""
-#: ../../include/conversation.php:1811 ../../include/nav.php:413
+#: ../../include/conversation.php:1811 ../../include/nav.php:381
msgid "Status Messages and Posts"
msgstr ""
-#: ../../include/conversation.php:1824 ../../include/nav.php:426
+#: ../../include/conversation.php:1824 ../../include/nav.php:394
msgid "Profile Details"
msgstr ""
-#: ../../include/conversation.php:1834 ../../include/nav.php:436
+#: ../../include/conversation.php:1834 ../../include/nav.php:404
#: ../../include/photos.php:655
msgid "Photo Albums"
msgstr ""
-#: ../../include/conversation.php:1842 ../../include/nav.php:444
+#: ../../include/conversation.php:1842 ../../include/nav.php:412
msgid "Files and Storage"
msgstr ""
-#: ../../include/conversation.php:1879 ../../include/nav.php:479
+#: ../../include/conversation.php:1879 ../../include/nav.php:447
msgid "Bookmarks"
msgstr ""
-#: ../../include/conversation.php:1882 ../../include/nav.php:482
+#: ../../include/conversation.php:1882 ../../include/nav.php:450
msgid "Saved Bookmarks"
msgstr ""
-#: ../../include/conversation.php:1893 ../../include/nav.php:493
+#: ../../include/conversation.php:1893 ../../include/nav.php:461
msgid "View Cards"
msgstr ""
@@ -11784,11 +12079,11 @@ msgstr ""
msgid "articles"
msgstr ""
-#: ../../include/conversation.php:1904 ../../include/nav.php:504
+#: ../../include/conversation.php:1904 ../../include/nav.php:472
msgid "View Articles"
msgstr ""
-#: ../../include/conversation.php:1915 ../../include/nav.php:516
+#: ../../include/conversation.php:1915 ../../include/nav.php:484
msgid "View Webpages"
msgstr ""
@@ -11860,368 +12155,368 @@ msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr ""
-#: ../../include/import.php:105
+#: ../../include/import.php:106
msgid "Cloned channel not found. Import failed."
msgstr ""
-#: ../../include/text.php:478
+#: ../../include/text.php:492
msgid "prev"
msgstr ""
-#: ../../include/text.php:480
+#: ../../include/text.php:494
msgid "first"
msgstr ""
-#: ../../include/text.php:509
+#: ../../include/text.php:523
msgid "last"
msgstr ""
-#: ../../include/text.php:512
+#: ../../include/text.php:526
msgid "next"
msgstr ""
-#: ../../include/text.php:523
+#: ../../include/text.php:537
msgid "older"
msgstr ""
-#: ../../include/text.php:525
+#: ../../include/text.php:539
msgid "newer"
msgstr ""
-#: ../../include/text.php:947
+#: ../../include/text.php:961
msgid "No connections"
msgstr ""
-#: ../../include/text.php:972
+#: ../../include/text.php:993
#, php-format
msgid "View all %s connections"
msgstr ""
-#: ../../include/text.php:1104 ../../include/text.php:1109
+#: ../../include/text.php:1129 ../../include/text.php:1133
msgid "poke"
msgstr ""
-#: ../../include/text.php:1110
+#: ../../include/text.php:1134
msgid "ping"
msgstr ""
-#: ../../include/text.php:1110
+#: ../../include/text.php:1134
msgid "pinged"
msgstr ""
-#: ../../include/text.php:1111
+#: ../../include/text.php:1135
msgid "prod"
msgstr ""
-#: ../../include/text.php:1111
+#: ../../include/text.php:1135
msgid "prodded"
msgstr ""
-#: ../../include/text.php:1112
+#: ../../include/text.php:1136
msgid "slap"
msgstr ""
-#: ../../include/text.php:1112
+#: ../../include/text.php:1136
msgid "slapped"
msgstr ""
-#: ../../include/text.php:1113
+#: ../../include/text.php:1137
msgid "finger"
msgstr ""
-#: ../../include/text.php:1113
+#: ../../include/text.php:1137
msgid "fingered"
msgstr ""
-#: ../../include/text.php:1114
+#: ../../include/text.php:1138
msgid "rebuff"
msgstr ""
-#: ../../include/text.php:1114
+#: ../../include/text.php:1138
msgid "rebuffed"
msgstr ""
-#: ../../include/text.php:1126
+#: ../../include/text.php:1161
msgid "happy"
msgstr ""
-#: ../../include/text.php:1127
+#: ../../include/text.php:1162
msgid "sad"
msgstr ""
-#: ../../include/text.php:1128
+#: ../../include/text.php:1163
msgid "mellow"
msgstr ""
-#: ../../include/text.php:1129
+#: ../../include/text.php:1164
msgid "tired"
msgstr ""
-#: ../../include/text.php:1130
+#: ../../include/text.php:1165
msgid "perky"
msgstr ""
-#: ../../include/text.php:1131
+#: ../../include/text.php:1166
msgid "angry"
msgstr ""
-#: ../../include/text.php:1132
+#: ../../include/text.php:1167
msgid "stupefied"
msgstr ""
-#: ../../include/text.php:1133
+#: ../../include/text.php:1168
msgid "puzzled"
msgstr ""
-#: ../../include/text.php:1134
+#: ../../include/text.php:1169
msgid "interested"
msgstr ""
-#: ../../include/text.php:1135
+#: ../../include/text.php:1170
msgid "bitter"
msgstr ""
-#: ../../include/text.php:1136
+#: ../../include/text.php:1171
msgid "cheerful"
msgstr ""
-#: ../../include/text.php:1137
+#: ../../include/text.php:1172
msgid "alive"
msgstr ""
-#: ../../include/text.php:1138
+#: ../../include/text.php:1173
msgid "annoyed"
msgstr ""
-#: ../../include/text.php:1139
+#: ../../include/text.php:1174
msgid "anxious"
msgstr ""
-#: ../../include/text.php:1140
+#: ../../include/text.php:1175
msgid "cranky"
msgstr ""
-#: ../../include/text.php:1141
+#: ../../include/text.php:1176
msgid "disturbed"
msgstr ""
-#: ../../include/text.php:1142
+#: ../../include/text.php:1177
msgid "frustrated"
msgstr ""
-#: ../../include/text.php:1143
+#: ../../include/text.php:1178
msgid "depressed"
msgstr ""
-#: ../../include/text.php:1144
+#: ../../include/text.php:1179
msgid "motivated"
msgstr ""
-#: ../../include/text.php:1145
+#: ../../include/text.php:1180
msgid "relaxed"
msgstr ""
-#: ../../include/text.php:1146
+#: ../../include/text.php:1181
msgid "surprised"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:70
+#: ../../include/text.php:1360 ../../include/js_strings.php:76
msgid "Monday"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:71
+#: ../../include/text.php:1360 ../../include/js_strings.php:77
msgid "Tuesday"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:72
+#: ../../include/text.php:1360 ../../include/js_strings.php:78
msgid "Wednesday"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:73
+#: ../../include/text.php:1360 ../../include/js_strings.php:79
msgid "Thursday"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:74
+#: ../../include/text.php:1360 ../../include/js_strings.php:80
msgid "Friday"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:75
+#: ../../include/text.php:1360 ../../include/js_strings.php:81
msgid "Saturday"
msgstr ""
-#: ../../include/text.php:1320 ../../include/js_strings.php:69
+#: ../../include/text.php:1360 ../../include/js_strings.php:75
msgid "Sunday"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:45
+#: ../../include/text.php:1364 ../../include/js_strings.php:51
msgid "January"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:46
+#: ../../include/text.php:1364 ../../include/js_strings.php:52
msgid "February"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:47
+#: ../../include/text.php:1364 ../../include/js_strings.php:53
msgid "March"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:48
+#: ../../include/text.php:1364 ../../include/js_strings.php:54
msgid "April"
msgstr ""
-#: ../../include/text.php:1324
+#: ../../include/text.php:1364
msgid "May"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:50
+#: ../../include/text.php:1364 ../../include/js_strings.php:56
msgid "June"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:51
+#: ../../include/text.php:1364 ../../include/js_strings.php:57
msgid "July"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:52
+#: ../../include/text.php:1364 ../../include/js_strings.php:58
msgid "August"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:53
+#: ../../include/text.php:1364 ../../include/js_strings.php:59
msgid "September"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:54
+#: ../../include/text.php:1364 ../../include/js_strings.php:60
msgid "October"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:55
+#: ../../include/text.php:1364 ../../include/js_strings.php:61
msgid "November"
msgstr ""
-#: ../../include/text.php:1324 ../../include/js_strings.php:56
+#: ../../include/text.php:1364 ../../include/js_strings.php:62
msgid "December"
msgstr ""
-#: ../../include/text.php:1388 ../../include/text.php:1392
+#: ../../include/text.php:1428 ../../include/text.php:1432
msgid "Unknown Attachment"
msgstr ""
-#: ../../include/text.php:1394 ../../include/feedutils.php:825
+#: ../../include/text.php:1434 ../../include/feedutils.php:852
msgid "unknown"
msgstr ""
-#: ../../include/text.php:1430
+#: ../../include/text.php:1470
msgid "remove category"
msgstr ""
-#: ../../include/text.php:1504
+#: ../../include/text.php:1544
msgid "remove from file"
msgstr ""
-#: ../../include/text.php:1623 ../../include/message.php:12
+#: ../../include/text.php:1686 ../../include/message.php:12
msgid "Download binary/encrypted content"
msgstr ""
-#: ../../include/text.php:1782 ../../include/language.php:364
+#: ../../include/text.php:1848 ../../include/language.php:397
msgid "default"
msgstr ""
-#: ../../include/text.php:1790
+#: ../../include/text.php:1856
msgid "Page layout"
msgstr ""
-#: ../../include/text.php:1790
+#: ../../include/text.php:1856
msgid "You can create your own with the layouts tool"
msgstr ""
-#: ../../include/text.php:1801
+#: ../../include/text.php:1867
msgid "HTML"
msgstr ""
-#: ../../include/text.php:1804
+#: ../../include/text.php:1870
msgid "Comanche Layout"
msgstr ""
-#: ../../include/text.php:1809
+#: ../../include/text.php:1875
msgid "PHP"
msgstr ""
-#: ../../include/text.php:1818
+#: ../../include/text.php:1884
msgid "Page content type"
msgstr ""
-#: ../../include/text.php:1951
+#: ../../include/text.php:2017
msgid "activity"
msgstr ""
-#: ../../include/text.php:2014
+#: ../../include/text.php:2099
msgid "a-z, 0-9, -, and _ only"
msgstr ""
-#: ../../include/text.php:2285
+#: ../../include/text.php:2399
msgid "Design Tools"
msgstr ""
-#: ../../include/text.php:2291
+#: ../../include/text.php:2405
msgid "Pages"
msgstr ""
-#: ../../include/text.php:2313
+#: ../../include/text.php:2427
msgid "Import website..."
msgstr ""
-#: ../../include/text.php:2314
+#: ../../include/text.php:2428
msgid "Select folder to import"
msgstr ""
-#: ../../include/text.php:2315
+#: ../../include/text.php:2429
msgid "Import from a zipped folder:"
msgstr ""
-#: ../../include/text.php:2316
+#: ../../include/text.php:2430
msgid "Import from cloud files:"
msgstr ""
-#: ../../include/text.php:2317
+#: ../../include/text.php:2431
msgid "/cloud/channel/path/to/folder"
msgstr ""
-#: ../../include/text.php:2318
+#: ../../include/text.php:2432
msgid "Enter path to website files"
msgstr ""
-#: ../../include/text.php:2319
+#: ../../include/text.php:2433
msgid "Select folder"
msgstr ""
-#: ../../include/text.php:2320
+#: ../../include/text.php:2434
msgid "Export website..."
msgstr ""
-#: ../../include/text.php:2321
+#: ../../include/text.php:2435
msgid "Export to a zip file"
msgstr ""
-#: ../../include/text.php:2322
+#: ../../include/text.php:2436
msgid "website.zip"
msgstr ""
-#: ../../include/text.php:2323
+#: ../../include/text.php:2437
msgid "Enter a name for the zip file."
msgstr ""
-#: ../../include/text.php:2324
+#: ../../include/text.php:2438
msgid "Export to cloud files"
msgstr ""
-#: ../../include/text.php:2325
+#: ../../include/text.php:2439
msgid "/path/to/export/folder"
msgstr ""
-#: ../../include/text.php:2326
+#: ../../include/text.php:2440
msgid "Enter a path to a cloud files destination."
msgstr ""
-#: ../../include/text.php:2327
+#: ../../include/text.php:2441
msgid "Specify folder"
msgstr ""
@@ -12269,7 +12564,7 @@ msgstr ""
msgid "View all %d common connections"
msgstr ""
-#: ../../include/markdown.php:158 ../../include/bbcode.php:339
+#: ../../include/markdown.php:158 ../../include/bbcode.php:343
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr ""
@@ -12373,182 +12668,182 @@ msgstr ""
msgid "Unsaved changes. Are you sure you wish to leave this page?"
msgstr ""
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:31
msgid "timeago.prefixAgo"
msgstr ""
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:32
msgid "timeago.prefixFromNow"
msgstr ""
-#: ../../include/js_strings.php:29
-msgid "ago"
+#: ../../include/js_strings.php:33
+msgid "timeago.suffixAgo"
msgstr ""
-#: ../../include/js_strings.php:30
-msgid "from now"
+#: ../../include/js_strings.php:34
+msgid "timeago.suffixFromNow"
msgstr ""
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:37
msgid "less than a minute"
msgstr ""
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:38
msgid "about a minute"
msgstr ""
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:39
#, php-format
msgid "%d minutes"
msgstr ""
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:40
msgid "about an hour"
msgstr ""
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:41
#, php-format
msgid "about %d hours"
msgstr ""
-#: ../../include/js_strings.php:36
+#: ../../include/js_strings.php:42
msgid "a day"
msgstr ""
-#: ../../include/js_strings.php:37
+#: ../../include/js_strings.php:43
#, php-format
msgid "%d days"
msgstr ""
-#: ../../include/js_strings.php:38
+#: ../../include/js_strings.php:44
msgid "about a month"
msgstr ""
-#: ../../include/js_strings.php:39
+#: ../../include/js_strings.php:45
#, php-format
msgid "%d months"
msgstr ""
-#: ../../include/js_strings.php:40
+#: ../../include/js_strings.php:46
msgid "about a year"
msgstr ""
-#: ../../include/js_strings.php:41
+#: ../../include/js_strings.php:47
#, php-format
msgid "%d years"
msgstr ""
-#: ../../include/js_strings.php:42
+#: ../../include/js_strings.php:48
msgid " "
msgstr ""
-#: ../../include/js_strings.php:43
+#: ../../include/js_strings.php:49
msgid "timeago.numbers"
msgstr ""
-#: ../../include/js_strings.php:49
+#: ../../include/js_strings.php:55
msgctxt "long"
msgid "May"
msgstr ""
-#: ../../include/js_strings.php:57
+#: ../../include/js_strings.php:63
msgid "Jan"
msgstr ""
-#: ../../include/js_strings.php:58
+#: ../../include/js_strings.php:64
msgid "Feb"
msgstr ""
-#: ../../include/js_strings.php:59
+#: ../../include/js_strings.php:65
msgid "Mar"
msgstr ""
-#: ../../include/js_strings.php:60
+#: ../../include/js_strings.php:66
msgid "Apr"
msgstr ""
-#: ../../include/js_strings.php:61
+#: ../../include/js_strings.php:67
msgctxt "short"
msgid "May"
msgstr ""
-#: ../../include/js_strings.php:62
+#: ../../include/js_strings.php:68
msgid "Jun"
msgstr ""
-#: ../../include/js_strings.php:63
+#: ../../include/js_strings.php:69
msgid "Jul"
msgstr ""
-#: ../../include/js_strings.php:64
+#: ../../include/js_strings.php:70
msgid "Aug"
msgstr ""
-#: ../../include/js_strings.php:65
+#: ../../include/js_strings.php:71
msgid "Sep"
msgstr ""
-#: ../../include/js_strings.php:66
+#: ../../include/js_strings.php:72
msgid "Oct"
msgstr ""
-#: ../../include/js_strings.php:67
+#: ../../include/js_strings.php:73
msgid "Nov"
msgstr ""
-#: ../../include/js_strings.php:68
+#: ../../include/js_strings.php:74
msgid "Dec"
msgstr ""
-#: ../../include/js_strings.php:76
+#: ../../include/js_strings.php:82
msgid "Sun"
msgstr ""
-#: ../../include/js_strings.php:77
+#: ../../include/js_strings.php:83
msgid "Mon"
msgstr ""
-#: ../../include/js_strings.php:78
+#: ../../include/js_strings.php:84
msgid "Tue"
msgstr ""
-#: ../../include/js_strings.php:79
+#: ../../include/js_strings.php:85
msgid "Wed"
msgstr ""
-#: ../../include/js_strings.php:80
+#: ../../include/js_strings.php:86
msgid "Thu"
msgstr ""
-#: ../../include/js_strings.php:81
+#: ../../include/js_strings.php:87
msgid "Fri"
msgstr ""
-#: ../../include/js_strings.php:82
+#: ../../include/js_strings.php:88
msgid "Sat"
msgstr ""
-#: ../../include/js_strings.php:83
+#: ../../include/js_strings.php:89
msgctxt "calendar"
msgid "today"
msgstr ""
-#: ../../include/js_strings.php:84
+#: ../../include/js_strings.php:90
msgctxt "calendar"
msgid "month"
msgstr ""
-#: ../../include/js_strings.php:85
+#: ../../include/js_strings.php:91
msgctxt "calendar"
msgid "week"
msgstr ""
-#: ../../include/js_strings.php:86
+#: ../../include/js_strings.php:92
msgctxt "calendar"
msgid "day"
msgstr ""
-#: ../../include/js_strings.php:87
+#: ../../include/js_strings.php:93
msgctxt "calendar"
msgid "All day"
msgstr ""
@@ -12596,61 +12891,61 @@ msgstr ""
msgid "Item was not found."
msgstr ""
-#: ../../include/attach.php:553
+#: ../../include/attach.php:554
msgid "No source file."
msgstr ""
-#: ../../include/attach.php:575
+#: ../../include/attach.php:576
msgid "Cannot locate file to replace"
msgstr ""
-#: ../../include/attach.php:593
+#: ../../include/attach.php:595
msgid "Cannot locate file to revise/update"
msgstr ""
-#: ../../include/attach.php:734
+#: ../../include/attach.php:737
#, php-format
msgid "File exceeds size limit of %d"
msgstr ""
-#: ../../include/attach.php:754
+#: ../../include/attach.php:758
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr ""
-#: ../../include/attach.php:929
+#: ../../include/attach.php:940
msgid "File upload failed. Possible system limit or action terminated."
msgstr ""
-#: ../../include/attach.php:948
+#: ../../include/attach.php:959
msgid "Stored file could not be verified. Upload failed."
msgstr ""
-#: ../../include/attach.php:1022 ../../include/attach.php:1038
+#: ../../include/attach.php:1033 ../../include/attach.php:1049
msgid "Path not available."
msgstr ""
-#: ../../include/attach.php:1087 ../../include/attach.php:1252
+#: ../../include/attach.php:1098 ../../include/attach.php:1263
msgid "Empty pathname"
msgstr ""
-#: ../../include/attach.php:1113
+#: ../../include/attach.php:1124
msgid "duplicate filename or path"
msgstr ""
-#: ../../include/attach.php:1138
+#: ../../include/attach.php:1149
msgid "Path not found."
msgstr ""
-#: ../../include/attach.php:1206
+#: ../../include/attach.php:1217
msgid "mkdir failed."
msgstr ""
-#: ../../include/attach.php:1210
+#: ../../include/attach.php:1221
msgid "database storage failed."
msgstr ""
-#: ../../include/attach.php:1258
+#: ../../include/attach.php:1269
msgid "Empty path"
msgstr ""
@@ -12697,34 +12992,34 @@ msgstr ""
msgid "Visible to specific connections."
msgstr ""
-#: ../../include/items.php:4117
+#: ../../include/items.php:4147
msgid "Privacy group is empty."
msgstr ""
-#: ../../include/items.php:4124
+#: ../../include/items.php:4154
#, php-format
msgid "Privacy group: %s"
msgstr ""
-#: ../../include/items.php:4136
+#: ../../include/items.php:4166
msgid "Connection not found."
msgstr ""
-#: ../../include/items.php:4485
+#: ../../include/items.php:4515
msgid "profile photo"
msgstr ""
-#: ../../include/items.php:4676
+#: ../../include/items.php:4706
#, php-format
msgid "[Edited %s]"
msgstr ""
-#: ../../include/items.php:4676
+#: ../../include/items.php:4706
msgctxt "edit_activity"
msgid "Post"
msgstr ""
-#: ../../include/items.php:4676
+#: ../../include/items.php:4706
msgctxt "edit_activity"
msgid "Comment"
msgstr ""
@@ -12769,11 +13064,11 @@ msgstr ""
msgid "Visible to everybody"
msgstr ""
-#: ../../include/channel.php:1396 ../../include/channel.php:1523
+#: ../../include/channel.php:1396 ../../include/channel.php:1524
msgid "Gender:"
msgstr ""
-#: ../../include/channel.php:1398 ../../include/channel.php:1578
+#: ../../include/channel.php:1398 ../../include/channel.php:1579
msgid "Homepage:"
msgstr ""
@@ -12781,108 +13076,112 @@ msgstr ""
msgid "Online Now"
msgstr ""
-#: ../../include/channel.php:1482
+#: ../../include/channel.php:1452
+msgid "Change your profile photo"
+msgstr ""
+
+#: ../../include/channel.php:1483
msgid "Trans"
msgstr ""
-#: ../../include/channel.php:1528
+#: ../../include/channel.php:1529
msgid "Like this channel"
msgstr ""
-#: ../../include/channel.php:1552
+#: ../../include/channel.php:1553
msgid "j F, Y"
msgstr ""
-#: ../../include/channel.php:1553
+#: ../../include/channel.php:1554
msgid "j F"
msgstr ""
-#: ../../include/channel.php:1560
+#: ../../include/channel.php:1561
msgid "Birthday:"
msgstr ""
-#: ../../include/channel.php:1573
+#: ../../include/channel.php:1574
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/channel.php:1576
+#: ../../include/channel.php:1577
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/channel.php:1582
+#: ../../include/channel.php:1583
msgid "Tags:"
msgstr ""
-#: ../../include/channel.php:1584
+#: ../../include/channel.php:1585
msgid "Political Views:"
msgstr ""
-#: ../../include/channel.php:1586
+#: ../../include/channel.php:1587
msgid "Religion:"
msgstr ""
-#: ../../include/channel.php:1590
+#: ../../include/channel.php:1591
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/channel.php:1592
+#: ../../include/channel.php:1593
msgid "Likes:"
msgstr ""
-#: ../../include/channel.php:1594
+#: ../../include/channel.php:1595
msgid "Dislikes:"
msgstr ""
-#: ../../include/channel.php:1596
+#: ../../include/channel.php:1597
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/channel.php:1598
+#: ../../include/channel.php:1599
msgid "My other channels:"
msgstr ""
-#: ../../include/channel.php:1600
+#: ../../include/channel.php:1601
msgid "Musical interests:"
msgstr ""
-#: ../../include/channel.php:1602
+#: ../../include/channel.php:1603
msgid "Books, literature:"
msgstr ""
-#: ../../include/channel.php:1604
+#: ../../include/channel.php:1605
msgid "Television:"
msgstr ""
-#: ../../include/channel.php:1606
+#: ../../include/channel.php:1607
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/channel.php:1608
+#: ../../include/channel.php:1609
msgid "Love/Romance:"
msgstr ""
-#: ../../include/channel.php:1610
+#: ../../include/channel.php:1611
msgid "Work/employment:"
msgstr ""
-#: ../../include/channel.php:1612
+#: ../../include/channel.php:1613
msgid "School/education:"
msgstr ""
-#: ../../include/channel.php:1635
+#: ../../include/channel.php:1636
msgid "Like this thing"
msgstr ""
-#: ../../include/event.php:23 ../../include/event.php:70
+#: ../../include/event.php:24 ../../include/event.php:71
msgid "l F d, Y \\@ g:i A"
msgstr ""
-#: ../../include/event.php:31 ../../include/event.php:74
+#: ../../include/event.php:32 ../../include/event.php:75
msgid "Starts:"
msgstr ""
-#: ../../include/event.php:41 ../../include/event.php:78
+#: ../../include/event.php:42 ../../include/event.php:79
msgid "Finishes:"
msgstr ""
@@ -12890,144 +13189,144 @@ msgstr ""
msgid "This event has been added to your calendar."
msgstr ""
-#: ../../include/event.php:1220
+#: ../../include/event.php:1227
msgid "Not specified"
msgstr ""
-#: ../../include/event.php:1221
+#: ../../include/event.php:1228
msgid "Needs Action"
msgstr ""
-#: ../../include/event.php:1222
+#: ../../include/event.php:1229
msgid "Completed"
msgstr ""
-#: ../../include/event.php:1223
+#: ../../include/event.php:1230
msgid "In Process"
msgstr ""
-#: ../../include/event.php:1224
+#: ../../include/event.php:1231
msgid "Cancelled"
msgstr ""
-#: ../../include/event.php:1303 ../../include/connections.php:684
+#: ../../include/event.php:1310 ../../include/connections.php:684
msgid "Home, Voice"
msgstr ""
-#: ../../include/event.php:1304 ../../include/connections.php:685
+#: ../../include/event.php:1311 ../../include/connections.php:685
msgid "Home, Fax"
msgstr ""
-#: ../../include/event.php:1306 ../../include/connections.php:687
+#: ../../include/event.php:1313 ../../include/connections.php:687
msgid "Work, Voice"
msgstr ""
-#: ../../include/event.php:1307 ../../include/connections.php:688
+#: ../../include/event.php:1314 ../../include/connections.php:688
msgid "Work, Fax"
msgstr ""
-#: ../../include/network.php:761
+#: ../../include/network.php:762
msgid "view full size"
msgstr ""
-#: ../../include/network.php:1763 ../../include/network.php:1764
+#: ../../include/network.php:1769 ../../include/network.php:1770
msgid "Friendica"
msgstr ""
-#: ../../include/network.php:1765
+#: ../../include/network.php:1771
msgid "OStatus"
msgstr ""
-#: ../../include/network.php:1766
+#: ../../include/network.php:1772
msgid "GNU-Social"
msgstr ""
-#: ../../include/network.php:1767
+#: ../../include/network.php:1773
msgid "RSS/Atom"
msgstr ""
-#: ../../include/network.php:1770
+#: ../../include/network.php:1776
msgid "Diaspora"
msgstr ""
-#: ../../include/network.php:1771
+#: ../../include/network.php:1777
msgid "Facebook"
msgstr ""
-#: ../../include/network.php:1772
+#: ../../include/network.php:1778
msgid "Zot"
msgstr ""
-#: ../../include/network.php:1773
+#: ../../include/network.php:1779
msgid "LinkedIn"
msgstr ""
-#: ../../include/network.php:1774
+#: ../../include/network.php:1780
msgid "XMPP/IM"
msgstr ""
-#: ../../include/network.php:1775
+#: ../../include/network.php:1781
msgid "MySpace"
msgstr ""
-#: ../../include/language.php:377
+#: ../../include/language.php:410
msgid "Select an alternate language"
msgstr ""
-#: ../../include/acl_selectors.php:208
+#: ../../include/acl_selectors.php:113
msgid "Who can see this?"
msgstr ""
-#: ../../include/acl_selectors.php:209
+#: ../../include/acl_selectors.php:114
msgid "Custom selection"
msgstr ""
-#: ../../include/acl_selectors.php:210
+#: ../../include/acl_selectors.php:115
msgid ""
"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit "
"the scope of \"Show\"."
msgstr ""
-#: ../../include/acl_selectors.php:211
+#: ../../include/acl_selectors.php:116
msgid "Show"
msgstr ""
-#: ../../include/acl_selectors.php:212
+#: ../../include/acl_selectors.php:117
msgid "Don't show"
msgstr ""
-#: ../../include/acl_selectors.php:245
+#: ../../include/acl_selectors.php:150
#, php-format
msgid ""
"Post permissions %s cannot be changed %s after a post is shared.</br />These "
"permissions set who is allowed to view the post."
msgstr ""
-#: ../../include/dba/dba_driver.php:190
+#: ../../include/dba/dba_driver.php:178
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr ""
-#: ../../include/bbcode.php:194 ../../include/bbcode.php:1106
-#: ../../include/bbcode.php:1109 ../../include/bbcode.php:1114
-#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1120
-#: ../../include/bbcode.php:1123 ../../include/bbcode.php:1128
-#: ../../include/bbcode.php:1131 ../../include/bbcode.php:1136
-#: ../../include/bbcode.php:1139 ../../include/bbcode.php:1142
-#: ../../include/bbcode.php:1145
+#: ../../include/bbcode.php:198 ../../include/bbcode.php:1151
+#: ../../include/bbcode.php:1154 ../../include/bbcode.php:1159
+#: ../../include/bbcode.php:1162 ../../include/bbcode.php:1165
+#: ../../include/bbcode.php:1168 ../../include/bbcode.php:1173
+#: ../../include/bbcode.php:1176 ../../include/bbcode.php:1181
+#: ../../include/bbcode.php:1184 ../../include/bbcode.php:1187
+#: ../../include/bbcode.php:1190
msgid "Image/photo"
msgstr ""
-#: ../../include/bbcode.php:233 ../../include/bbcode.php:1156
+#: ../../include/bbcode.php:237 ../../include/bbcode.php:1201
msgid "Encrypted content"
msgstr ""
-#: ../../include/attach.php:673
+#: ../../include/bbcode.php:253
#, php-format
msgid "Install %1$s element %2$s"
msgstr ""
-#: ../../include/attach.php:687
+#: ../../include/bbcode.php:257
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr ""
@@ -13036,23 +13335,31 @@ msgstr ""
msgid "card"
msgstr ""
-#: ../../include/bbcode.php:331
+#: ../../include/bbcode.php:335
msgid "card"
msgstr ""
-#: ../../include/bbcode.php:333
+#: ../../include/bbcode.php:337
msgid "article"
msgstr ""
-#: ../../include/bbcode.php:416 ../../include/bbcode.php:424
+#: ../../include/bbcode.php:420 ../../include/bbcode.php:428
msgid "Click to open/close"
msgstr ""
-#: ../../include/bbcode.php:424
+#: ../../include/bbcode.php:428
msgid "spoiler"
msgstr ""
-#: ../../include/bbcode.php:1094
+#: ../../include/bbcode.php:441
+msgid "View article"
+msgstr ""
+
+#: ../../include/bbcode.php:441
+msgid "View summary"
+msgstr ""
+
+#: ../../include/bbcode.php:1139
msgid "$1 wrote:"
msgstr ""
@@ -13072,7 +13379,7 @@ msgstr ""
msgid "Embedding disabled"
msgstr ""
-#: ../../include/zid.php:340
+#: ../../include/zid.php:346
#, php-format
msgid "OpenWebAuth: %1$s welcomes %2$s"
msgstr ""
@@ -13081,344 +13388,364 @@ msgstr ""
msgid "General Features"
msgstr ""
-#: ../../include/features.php:59
-msgid "Multiple Profiles"
-msgstr ""
-
#: ../../include/features.php:60
-msgid "Ability to create multiple profiles"
-msgstr ""
-
-#: ../../include/features.php:68
msgid "Advanced Profiles"
msgstr ""
-#: ../../include/features.php:69
+#: ../../include/features.php:61
msgid "Additional profile sections and selections"
msgstr ""
-#: ../../include/features.php:77
+#: ../../include/features.php:69
msgid "Profile Import/Export"
msgstr ""
-#: ../../include/features.php:78
+#: ../../include/features.php:70
msgid "Save and load profile details across sites/channels"
msgstr ""
-#: ../../include/features.php:86
+#: ../../include/features.php:78
msgid "Web Pages"
msgstr ""
-#: ../../include/features.php:87
+#: ../../include/features.php:79
msgid "Provide managed web pages on your channel"
msgstr ""
-#: ../../include/features.php:96
+#: ../../include/features.php:88
msgid "Provide a wiki for your channel"
msgstr ""
-#: ../../include/features.php:113
+#: ../../include/features.php:105
msgid "Private Notes"
msgstr ""
-#: ../../include/features.php:114
+#: ../../include/features.php:106
msgid "Enables a tool to store notes and reminders (note: not encrypted)"
msgstr ""
-#: ../../include/features.php:123
+#: ../../include/features.php:115
msgid "Create personal planning cards"
msgstr ""
-#: ../../include/features.php:141
+#: ../../include/features.php:125
+msgid "Create interactive articles"
+msgstr ""
+
+#: ../../include/features.php:133
msgid "Navigation Channel Select"
msgstr ""
-#: ../../include/features.php:142
+#: ../../include/features.php:134
msgid "Change channels directly from within the navigation dropdown menu"
msgstr ""
-#: ../../include/features.php:150
+#: ../../include/features.php:142
msgid "Photo Location"
msgstr ""
-#: ../../include/features.php:151
+#: ../../include/features.php:143
msgid "If location data is available on uploaded photos, link this to a map."
msgstr ""
-#: ../../include/features.php:159
+#: ../../include/features.php:151
msgid "Access Controlled Chatrooms"
msgstr ""
-#: ../../include/features.php:160
+#: ../../include/features.php:152
msgid "Provide chatrooms and chat services with access control."
msgstr ""
-#: ../../include/features.php:169
-msgid "Provide alternate connection permission roles."
-msgstr ""
-
-#: ../../include/features.php:177
+#: ../../include/features.php:161
msgid "Smart Birthdays"
msgstr ""
-#: ../../include/features.php:178
+#: ../../include/features.php:162
msgid ""
"Make birthday events timezone aware in case your friends are scattered "
"across the planet."
msgstr ""
-#: ../../include/features.php:186
+#: ../../include/features.php:170
msgid "Event Timezone Selection"
msgstr ""
-#: ../../include/features.php:187
+#: ../../include/features.php:171
msgid "Allow event creation in timezones other than your own."
msgstr ""
-#: ../../include/features.php:195
+#: ../../include/features.php:180
+msgid "Premium Channel"
+msgstr ""
+
+#: ../../include/features.php:181
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr ""
+
+#: ../../include/features.php:189
msgid "Advanced Directory Search"
msgstr ""
-#: ../../include/features.php:196
+#: ../../include/features.php:190
msgid "Allows creation of complex directory search queries"
msgstr ""
-#: ../../include/features.php:204
+#: ../../include/features.php:198
msgid "Advanced Theme and Layout Settings"
msgstr ""
-#: ../../include/features.php:205
+#: ../../include/features.php:199
msgid "Allows fine tuning of themes and page layouts"
msgstr ""
-#: ../../include/features.php:215
+#: ../../include/features.php:208
+msgid "Access Control and Permissions"
+msgstr ""
+
+#: ../../include/features.php:212 ../../include/group.php:328
+msgid "Privacy Groups"
+msgstr ""
+
+#: ../../include/features.php:213
+msgid "Enable management and selection of privacy groups"
+msgstr ""
+
+#: ../../include/features.php:221
+msgid "Multiple Profiles"
+msgstr ""
+
+#: ../../include/features.php:222
+msgid "Ability to create multiple profiles"
+msgstr ""
+
+#: ../../include/features.php:232
+msgid "Provide alternate connection permission roles."
+msgstr ""
+
+#: ../../include/features.php:240
+msgid "OAuth Clients"
+msgstr ""
+
+#: ../../include/features.php:241
+msgid "Manage authenticatication tokens for mobile and remote apps."
+msgstr ""
+
+#: ../../include/features.php:249
+msgid "Access Tokens"
+msgstr ""
+
+#: ../../include/features.php:250
+msgid "Create access tokens so that non-members can access private content."
+msgstr ""
+
+#: ../../include/features.php:261
msgid "Post Composition Features"
msgstr ""
-#: ../../include/features.php:219
+#: ../../include/features.php:265
msgid "Large Photos"
msgstr ""
-#: ../../include/features.php:220
+#: ../../include/features.php:266
msgid ""
"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
"(640px) photo thumbnails"
msgstr ""
-#: ../../include/features.php:229
+#: ../../include/features.php:275
msgid "Automatically import channel content from other channels or feeds"
msgstr ""
-#: ../../include/features.php:237
+#: ../../include/features.php:283
msgid "Even More Encryption"
msgstr ""
-#: ../../include/features.php:238
+#: ../../include/features.php:284
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr ""
-#: ../../include/features.php:246
+#: ../../include/features.php:292
msgid "Enable Voting Tools"
msgstr ""
-#: ../../include/features.php:247
+#: ../../include/features.php:293
msgid "Provide a class of post which others can vote on"
msgstr ""
-#: ../../include/features.php:255
+#: ../../include/features.php:301
msgid "Disable Comments"
msgstr ""
-#: ../../include/features.php:256
+#: ../../include/features.php:302
msgid "Provide the option to disable comments for a post"
msgstr ""
-#: ../../include/features.php:264
+#: ../../include/features.php:310
msgid "Delayed Posting"
msgstr ""
-#: ../../include/features.php:265
+#: ../../include/features.php:311
msgid "Allow posts to be published at a later date"
msgstr ""
-#: ../../include/features.php:273
+#: ../../include/features.php:319
msgid "Content Expiration"
msgstr ""
-#: ../../include/features.php:274
+#: ../../include/features.php:320
msgid "Remove posts/comments and/or private messages at a future time"
msgstr ""
-#: ../../include/features.php:282
+#: ../../include/features.php:328
msgid "Suppress Duplicate Posts/Comments"
msgstr ""
-#: ../../include/features.php:283
+#: ../../include/features.php:329
msgid ""
"Prevent posts with identical content to be published with less than two "
"minutes in between submissions."
msgstr ""
-#: ../../include/features.php:294
+#: ../../include/features.php:340
msgid "Network and Stream Filtering"
msgstr ""
-#: ../../include/features.php:298
+#: ../../include/features.php:344
msgid "Search by Date"
msgstr ""
-#: ../../include/features.php:299
+#: ../../include/features.php:345
msgid "Ability to select posts by date ranges"
msgstr ""
-#: ../../include/features.php:307 ../../include/group.php:328
-msgid "Privacy Groups"
-msgstr ""
-
-#: ../../include/features.php:308
-msgid "Enable management and selection of privacy groups"
-msgstr ""
-
-#: ../../include/features.php:317
+#: ../../include/features.php:355
msgid "Save search terms for re-use"
msgstr ""
-#: ../../include/features.php:325
+#: ../../include/features.php:363
msgid "Network Personal Tab"
msgstr ""
-#: ../../include/features.php:326
+#: ../../include/features.php:364
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr ""
-#: ../../include/features.php:334
+#: ../../include/features.php:372
msgid "Network New Tab"
msgstr ""
-#: ../../include/features.php:335
+#: ../../include/features.php:373
msgid "Enable tab to display all new Network activity"
msgstr ""
-#: ../../include/features.php:343
+#: ../../include/features.php:381
msgid "Affinity Tool"
msgstr ""
-#: ../../include/features.php:344
+#: ../../include/features.php:382
msgid "Filter stream activity by depth of relationships"
msgstr ""
-#: ../../include/features.php:353
+#: ../../include/features.php:391
msgid "Show friend and connection suggestions"
msgstr ""
-#: ../../include/features.php:361
+#: ../../include/features.php:399
msgid "Connection Filtering"
msgstr ""
-#: ../../include/features.php:362
+#: ../../include/features.php:400
msgid "Filter incoming posts from connections based on keywords/content"
msgstr ""
-#: ../../include/features.php:374
+#: ../../include/features.php:412
msgid "Post/Comment Tools"
msgstr ""
-#: ../../include/features.php:379
-msgid "Use markdown for editing posts"
-msgstr ""
-
-#: ../../include/features.php:387
+#: ../../include/features.php:416
msgid "Community Tagging"
msgstr ""
-#: ../../include/features.php:388
+#: ../../include/features.php:417
msgid "Ability to tag existing posts"
msgstr ""
-#: ../../include/features.php:396
+#: ../../include/features.php:425
msgid "Post Categories"
msgstr ""
-#: ../../include/features.php:397
+#: ../../include/features.php:426
msgid "Add categories to your posts"
msgstr ""
-#: ../../include/features.php:405
+#: ../../include/features.php:434
msgid "Emoji Reactions"
msgstr ""
-#: ../../include/features.php:406
+#: ../../include/features.php:435
msgid "Add emoji reaction ability to posts"
msgstr ""
-#: ../../include/features.php:415
+#: ../../include/features.php:444
msgid "Ability to file posts under folders"
msgstr ""
-#: ../../include/features.php:423
+#: ../../include/features.php:452
msgid "Dislike Posts"
msgstr ""
-#: ../../include/features.php:424
+#: ../../include/features.php:453
msgid "Ability to dislike posts/comments"
msgstr ""
-#: ../../include/features.php:432
+#: ../../include/features.php:461
msgid "Star Posts"
msgstr ""
-#: ../../include/features.php:433
+#: ../../include/features.php:462
msgid "Ability to mark special posts with a star indicator"
msgstr ""
-#: ../../include/features.php:441
+#: ../../include/features.php:470
msgid "Tag Cloud"
msgstr ""
-#: ../../include/features.php:442
+#: ../../include/features.php:471
msgid "Provide a personal tag cloud on your channel page"
msgstr ""
-#: ../../include/features.php:453
-msgid "Premium Channel"
-msgstr ""
-
-#: ../../include/features.php:454
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr ""
-
-#: ../../include/taxonomy.php:377 ../../include/taxonomy.php:398
+#: ../../include/taxonomy.php:384 ../../include/taxonomy.php:405
msgid "Tags"
msgstr ""
-#: ../../include/taxonomy.php:483
+#: ../../include/taxonomy.php:487
msgid "Keywords"
msgstr ""
-#: ../../include/taxonomy.php:504
+#: ../../include/taxonomy.php:508
msgid "have"
msgstr ""
-#: ../../include/taxonomy.php:504
+#: ../../include/taxonomy.php:508
msgid "has"
msgstr ""
-#: ../../include/taxonomy.php:505
+#: ../../include/taxonomy.php:509
msgid "want"
msgstr ""
-#: ../../include/taxonomy.php:505
+#: ../../include/taxonomy.php:509
msgid "wants"
msgstr ""
-#: ../../include/taxonomy.php:506
+#: ../../include/taxonomy.php:510
msgid "likes"
msgstr ""
-#: ../../include/taxonomy.php:507
+#: ../../include/taxonomy.php:511
msgid "dislikes"
msgstr ""
@@ -13450,256 +13777,200 @@ msgstr ""
msgid "Failed to store account information."
msgstr ""
-#: ../../include/account.php:291
+#: ../../include/account.php:313
#, php-format
msgid "Registration confirmation for %s"
msgstr ""
-#: ../../include/account.php:360
+#: ../../include/account.php:382
#, php-format
msgid "Registration request at %s"
msgstr ""
-#: ../../include/account.php:382
+#: ../../include/account.php:404
msgid "your registration password"
msgstr ""
-#: ../../include/account.php:388 ../../include/account.php:450
+#: ../../include/account.php:410 ../../include/account.php:472
#, php-format
msgid "Registration details for %s"
msgstr ""
-#: ../../include/account.php:461
+#: ../../include/account.php:483
msgid "Account approved."
msgstr ""
-#: ../../include/account.php:501
+#: ../../include/account.php:523
#, php-format
msgid "Registration revoked for %s"
msgstr ""
-#: ../../include/account.php:780 ../../include/account.php:782
+#: ../../include/account.php:802 ../../include/account.php:804
msgid "Click here to upgrade."
msgstr ""
-#: ../../include/account.php:788
+#: ../../include/account.php:810
msgid "This action exceeds the limits set by your subscription plan."
msgstr ""
-#: ../../include/account.php:793
+#: ../../include/account.php:815
msgid "This action is not available under your subscription plan."
msgstr ""
-#: ../../include/datetime.php:150
+#: ../../include/datetime.php:134
msgid "Birthday"
msgstr ""
-#: ../../include/datetime.php:152
+#: ../../include/datetime.php:134
msgid "Age: "
msgstr ""
-#: ../../include/datetime.php:154
+#: ../../include/datetime.php:134
msgid "YYYY-MM-DD or MM-DD"
msgstr ""
-#: ../../include/datetime.php:298
+#: ../../include/datetime.php:238
msgid "less than a second ago"
msgstr ""
-#: ../../include/datetime.php:316
+#: ../../include/datetime.php:256
#, php-format
msgctxt "e.g. 22 hours ago, 1 minute ago"
msgid "%1$d %2$s ago"
msgstr ""
-#: ../../include/datetime.php:327
+#: ../../include/datetime.php:267
msgctxt "relative_date"
msgid "year"
msgid_plural "years"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:330
+#: ../../include/datetime.php:270
msgctxt "relative_date"
msgid "month"
msgid_plural "months"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:333
+#: ../../include/datetime.php:273
msgctxt "relative_date"
msgid "week"
msgid_plural "weeks"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:336
+#: ../../include/datetime.php:276
msgctxt "relative_date"
msgid "day"
msgid_plural "days"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:339
+#: ../../include/datetime.php:279
msgctxt "relative_date"
msgid "hour"
msgid_plural "hours"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:342
+#: ../../include/datetime.php:282
msgctxt "relative_date"
msgid "minute"
msgid_plural "minutes"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:345
+#: ../../include/datetime.php:285
msgctxt "relative_date"
msgid "second"
msgid_plural "seconds"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/datetime.php:579
+#: ../../include/datetime.php:514
#, php-format
msgid "%1$s's birthday"
msgstr ""
-#: ../../include/datetime.php:580
+#: ../../include/datetime.php:515
#, php-format
msgid "Happy Birthday %1$s"
msgstr ""
-#: ../../include/nav.php:98
+#: ../../include/nav.php:96
msgid "Remote authentication"
msgstr ""
-#: ../../include/nav.php:98
+#: ../../include/nav.php:96
msgid "Click to authenticate to your home hub"
msgstr ""
-#: ../../include/nav.php:105
-msgid "Network Activity"
-msgstr ""
-
-#: ../../include/nav.php:107
-msgid "Mark all activity notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:109
-msgid "Channel home"
-msgstr ""
-
-#: ../../include/nav.php:110
-msgid "View your channel home"
-msgstr ""
-
-#: ../../include/nav.php:111
-msgid "Mark all channel notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:116
-msgid "Registrations"
-msgstr ""
-
-#: ../../include/nav.php:119
-msgid "Notifications"
-msgstr ""
-
-#: ../../include/nav.php:120
-msgid "View all notifications"
-msgstr ""
-
-#: ../../include/nav.php:121
-msgid "Mark all system notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:123
-msgid "Private mail"
-msgstr ""
-
-#: ../../include/nav.php:124
-msgid "View your private messages"
-msgstr ""
-
-#: ../../include/nav.php:125
-msgid "Mark all private messages seen"
-msgstr ""
-
-#: ../../include/nav.php:131
-msgid "Event Calendar"
-msgstr ""
-
-#: ../../include/nav.php:136 ../../include/nav.php:222
+#: ../../include/nav.php:102 ../../include/nav.php:190
msgid "Manage Your Channels"
msgstr ""
-#: ../../include/nav.php:139 ../../include/nav.php:224
+#: ../../include/nav.php:105 ../../include/nav.php:192
msgid "Account/Channel Settings"
msgstr ""
-#: ../../include/nav.php:145 ../../include/nav.php:174
+#: ../../include/nav.php:111 ../../include/nav.php:140
msgid "End this session"
msgstr ""
-#: ../../include/nav.php:148
+#: ../../include/nav.php:114
msgid "Your profile page"
msgstr ""
-#: ../../include/nav.php:151
+#: ../../include/nav.php:117
msgid "Manage/Edit profiles"
msgstr ""
-#: ../../include/nav.php:153
-msgid "Edit your profile"
-msgstr ""
-
-#: ../../include/nav.php:160 ../../include/nav.php:164
+#: ../../include/nav.php:126 ../../include/nav.php:130
msgid "Sign in"
msgstr ""
-#: ../../include/nav.php:189
+#: ../../include/nav.php:157
msgid "Take me home"
msgstr ""
-#: ../../include/nav.php:191
+#: ../../include/nav.php:159
msgid "Log me out of this site"
msgstr ""
-#: ../../include/nav.php:196
+#: ../../include/nav.php:164
msgid "Create an account"
msgstr ""
-#: ../../include/nav.php:208
+#: ../../include/nav.php:176
msgid "Help and documentation"
msgstr ""
-#: ../../include/nav.php:211
+#: ../../include/nav.php:179
msgid "Search site @name, #tag, ?docs, content"
msgstr ""
-#: ../../include/nav.php:231
+#: ../../include/nav.php:199
msgid "Site Setup and Configuration"
msgstr ""
-#: ../../include/nav.php:322
+#: ../../include/nav.php:290
msgid "@name, #tag, ?doc, content"
msgstr ""
-#: ../../include/nav.php:323
+#: ../../include/nav.php:291
msgid "Please wait..."
msgstr ""
-#: ../../include/nav.php:329
+#: ../../include/nav.php:297
msgid "Add Apps"
msgstr ""
-#: ../../include/nav.php:330
+#: ../../include/nav.php:298
msgid "Arrange Apps"
msgstr ""
-#: ../../include/nav.php:331
+#: ../../include/nav.php:299
msgid "Toggle System Apps"
msgstr ""
@@ -13730,19 +14001,23 @@ msgstr ""
msgid "Upload New Photos"
msgstr ""
-#: ../../include/zot.php:675
+#: ../../include/zot.php:767
msgid "Invalid data packet"
msgstr ""
-#: ../../include/zot.php:702
+#: ../../include/zot.php:794
msgid "Unable to verify channel signature"
msgstr ""
-#: ../../include/zot.php:2409
+#: ../../include/zot.php:2529
#, php-format
msgid "Unable to verify site signature for %s"
msgstr ""
+#: ../../include/zot.php:4180
+msgid "invalid target signature"
+msgstr ""
+
#: ../../include/group.php:22
msgid ""
"A deleted group with this name was revived. Existing item permissions "
@@ -13786,7 +14061,7 @@ msgstr ""
msgid "Email validation is incomplete. Please check your email."
msgstr ""
-#: ../../include/auth.php:278
+#: ../../include/auth.php:279
msgid "Failed authentication"
msgstr ""
diff --git a/vendor/bshaffer/oauth2-server-php/CHANGELOG.md b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
index 4fddd72c9..7671b2396 100644
--- a/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
+++ b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
@@ -8,6 +8,24 @@ To see the files changed for a given bug, go to https://github.com/bshaffer/oaut
To get the diff between two versions, go to https://github.com/bshaffer/oauth2-server-php/compare/v1.0...v1.1
To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-server-php/commit/XXX where XXX is the change hash
+* 1.10.0 (2017-12-14)
+
+ PR: https://github.com/bshaffer/oauth2-server-php/pull/889
+
+ * #795 - [feature] added protected createPayload method to allow easier customization of JWT payload
+ * #807 - [refactor] simplifies UserInfoController constructor
+ * #814 - [docs] Adds https to README link
+ * #827 - [testing] Explicitly pulls in phpunit 4
+ * #828 - [docs] PHPDoc improvements and type hinting of variables.
+ * #829 - [bug] Fix CORS issue for revoking and requesting an access token
+ * #869 - [testing] Remove php 5.3 from travis and use vendored phpunit
+ * #834 - [feature] use random_bytes if available
+ * #851 - [docs] Fix PHPDoc
+ * #872 - [bug] Fix count() error on PHP 7.2
+ * #873 - [testing] adds php 7.2 to travis
+ * #794 - [docs] Fix typo in composer.json
+ * #885 - [testing] Use PHPUnit\Framework\TestCase instead of PHPUnit_Framework_TestCase
+
* 1.9.0 (2016-01-06)
PR: https://github.com/bshaffer/oauth2-server-php/pull/788
@@ -87,7 +105,7 @@ To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-
* bug #346 Fixes open_basedir warning
* bug #351 Adds OpenID Connect support
* bug #355 Adds php 5.6 and HHVM to travis.ci testing
- * [BC] bug #358 Adds `getQuerystringIdentifier()` to the GrantType interface
+ * [BC] bug #358 Adds `getQueryStringIdentifier()` to the GrantType interface
* bug #363 Encryption\JWT - Allows for subclassing JWT Headers
* bug #349 Bearer Tokens - adds requestHasToken method for when access tokens are optional
* bug #301 Encryption\JWT - fixes urlSafeB64Encode(): ensures newlines are replaced as expected
diff --git a/vendor/bshaffer/oauth2-server-php/README.md b/vendor/bshaffer/oauth2-server-php/README.md
index 4ceda6cf9..f1788e9ce 100644
--- a/vendor/bshaffer/oauth2-server-php/README.md
+++ b/vendor/bshaffer/oauth2-server-php/README.md
@@ -5,4 +5,4 @@ oauth2-server-php
[![Total Downloads](https://poser.pugx.org/bshaffer/oauth2-server-php/downloads.png)](https://packagist.org/packages/bshaffer/oauth2-server-php)
-View the [complete documentation](http://bshaffer.github.io/oauth2-server-php-docs/) \ No newline at end of file
+View the [complete documentation](https://bshaffer.github.io/oauth2-server-php-docs/)
diff --git a/vendor/bshaffer/oauth2-server-php/composer.json b/vendor/bshaffer/oauth2-server-php/composer.json
index 561699f5e..272d20027 100644
--- a/vendor/bshaffer/oauth2-server-php/composer.json
+++ b/vendor/bshaffer/oauth2-server-php/composer.json
@@ -19,6 +19,7 @@
"php":">=5.3.9"
},
"require-dev": {
+ "phpunit/phpunit": "^4.0",
"aws/aws-sdk-php": "~2.8",
"firebase/php-jwt": "~2.2",
"predis/predis": "dev-master",
@@ -29,6 +30,7 @@
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage",
"aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~1.1 is required to use MondoDB storage"
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage"
}
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
index ecfb6ba75..4ec08cbdd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php
@@ -10,8 +10,14 @@ namespace OAuth2;
*/
class Autoloader
{
+ /**
+ * @var string
+ */
private $dir;
+ /**
+ * @param string $dir
+ */
public function __construct($dir = null)
{
if (is_null($dir)) {
@@ -19,6 +25,7 @@ class Autoloader
}
$this->dir = $dir;
}
+
/**
* Registers OAuth2\Autoloader as an SPL autoloader.
*/
@@ -31,9 +38,8 @@ class Autoloader
/**
* Handles autoloading of classes.
*
- * @param string $class A class name.
- *
- * @return boolean Returns true if the class has been loaded
+ * @param string $class - A class name.
+ * @return boolean - Returns true if the class has been loaded
*/
public function autoload($class)
{
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
index 29c7171b5..6a167da90 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php
@@ -10,6 +10,19 @@ use OAuth2\ResponseInterface;
*/
interface ClientAssertionTypeInterface
{
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return mixed
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response);
+
+ /**
+ * Get the client id
+ *
+ * @return mixed
+ */
public function getClientId();
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
index 0ecb7e18d..ef6120300 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php
@@ -5,6 +5,7 @@ namespace OAuth2\ClientAssertionType;
use OAuth2\Storage\ClientCredentialsInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use LogicException;
/**
* Validate a client via Http Basic authentication
@@ -19,14 +20,16 @@ class HttpBasic implements ClientAssertionTypeInterface
protected $config;
/**
- * @param OAuth2\Storage\ClientCredentialsInterface $clientStorage REQUIRED Storage class for retrieving client credentials information
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'allow_credentials_in_request_body' => true, // whether to look for credentials in the POST body in addition to the Authorize HTTP Header
- * 'allow_public_clients' => true // if true, "public clients" (clients without a secret) may be authenticated
- * );
- * </code>
+ * Config array $config should look as follows:
+ * @code
+ * $config = array(
+ * 'allow_credentials_in_request_body' => true, // whether to look for credentials in the POST body in addition to the Authorize HTTP Header
+ * 'allow_public_clients' => true // if true, "public clients" (clients without a secret) may be authenticated
+ * );
+ * @endcode
+ *
+ * @param ClientCredentialsInterface $storage Storage
+ * @param array $config Configuration options for the server
*/
public function __construct(ClientCredentialsInterface $storage, array $config = array())
{
@@ -37,6 +40,14 @@ class HttpBasic implements ClientAssertionTypeInterface
), $config);
}
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed
+ * @throws LogicException
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$clientData = $this->getClientCredentials($request, $response)) {
@@ -44,7 +55,7 @@ class HttpBasic implements ClientAssertionTypeInterface
}
if (!isset($clientData['client_id'])) {
- throw new \LogicException('the clientData array must have "client_id" set');
+ throw new LogicException('the clientData array must have "client_id" set');
}
if (!isset($clientData['client_secret']) || $clientData['client_secret'] == '') {
@@ -70,6 +81,11 @@ class HttpBasic implements ClientAssertionTypeInterface
return true;
}
+ /**
+ * Get the client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->clientData['client_id'];
@@ -82,13 +98,14 @@ class HttpBasic implements ClientAssertionTypeInterface
* According to the spec (draft 20), the client_id can be provided in
* the Basic Authorization header (recommended) or via GET/POST.
*
- * @return
- * A list containing the client identifier and password, for example
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return array|null A list containing the client identifier and password, for example:
* @code
- * return array(
- * "client_id" => CLIENT_ID, // REQUIRED the client id
- * "client_secret" => CLIENT_SECRET, // OPTIONAL the client secret (may be omitted for public clients)
- * );
+ * return array(
+ * "client_id" => CLIENT_ID, // REQUIRED the client id
+ * "client_secret" => CLIENT_SECRET, // OPTIONAL the client secret (may be omitted for public clients)
+ * );
* @endcode
*
* @see http://tools.ietf.org/html/rfc6749#section-2.3.1
@@ -108,7 +125,6 @@ class HttpBasic implements ClientAssertionTypeInterface
* client_secret can be null if the client's password is an empty string
* @see http://tools.ietf.org/html/rfc6749#section-2.3.1
*/
-
return array('client_id' => $request->request('client_id'), 'client_secret' => $request->request('client_secret'));
}
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
index ea7f54a87..4bafb1d24 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeController.php
@@ -7,37 +7,76 @@ use OAuth2\ScopeInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
use OAuth2\Scope;
+use InvalidArgumentException;
/**
- * @see OAuth2\Controller\AuthorizeControllerInterface
+ * @see AuthorizeControllerInterface
*/
class AuthorizeController implements AuthorizeControllerInterface
{
+ /**
+ * @var string
+ */
private $scope;
+
+ /**
+ * @var int
+ */
private $state;
+
+ /**
+ * @var mixed
+ */
private $client_id;
+
+ /**
+ * @var string
+ */
private $redirect_uri;
+
+ /**
+ * The response type
+ *
+ * @var string
+ */
private $response_type;
+ /**
+ * @var ClientInterface
+ */
protected $clientStorage;
+
+ /**
+ * @var array
+ */
protected $responseTypes;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var ScopeInterface
+ */
protected $scopeUtil;
/**
- * @param OAuth2\Storage\ClientInterface $clientStorage REQUIRED Instance of OAuth2\Storage\ClientInterface to retrieve client information
- * @param array $responseTypes OPTIONAL Array of OAuth2\ResponseType\ResponseTypeInterface objects. Valid array
- * keys are "code" and "token"
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'allow_implicit' => false, // if the controller should allow the "implicit" grant type
- * 'enforce_state' => true // if the controller should require the "state" parameter
- * 'require_exact_redirect_uri' => true, // if the controller should require an exact match on the "redirect_uri" parameter
- * 'redirect_status_code' => 302, // HTTP status code to use for redirect responses
- * );
- * </code>
- * @param OAuth2\ScopeInterface $scopeUtil OPTIONAL Instance of OAuth2\ScopeInterface to validate the requested scope
+ * Constructor
+ *
+ * @param ClientInterface $clientStorage REQUIRED Instance of OAuth2\Storage\ClientInterface to retrieve client information
+ * @param array $responseTypes OPTIONAL Array of OAuth2\ResponseType\ResponseTypeInterface objects. Valid array
+ * keys are "code" and "token"
+ * @param array $config OPTIONAL Configuration options for the server:
+ * @param ScopeInterface $scopeUtil OPTIONAL Instance of OAuth2\ScopeInterface to validate the requested scope
+ * @code
+ * $config = array(
+ * 'allow_implicit' => false, // if the controller should allow the "implicit" grant type
+ * 'enforce_state' => true // if the controller should require the "state" parameter
+ * 'require_exact_redirect_uri' => true, // if the controller should require an exact match on the "redirect_uri" parameter
+ * 'redirect_status_code' => 302, // HTTP status code to use for redirect responses
+ * );
+ * @endcode
*/
public function __construct(ClientInterface $clientStorage, array $responseTypes = array(), array $config = array(), ScopeInterface $scopeUtil = null)
{
@@ -56,10 +95,20 @@ class AuthorizeController implements AuthorizeControllerInterface
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * Handle the authorization request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param boolean $is_authorized
+ * @param mixed $user_id
+ * @return mixed|void
+ * @throws InvalidArgumentException
+ */
public function handleAuthorizeRequest(RequestInterface $request, ResponseInterface $response, $is_authorized, $user_id = null)
{
if (!is_bool($is_authorized)) {
- throw new \InvalidArgumentException('Argument "is_authorized" must be a boolean. This method must know if the user has granted access to the client.');
+ throw new InvalidArgumentException('Argument "is_authorized" must be a boolean. This method must know if the user has granted access to the client.');
}
// We repeat this, because we need to re-validate. The request could be POSTed
@@ -101,6 +150,14 @@ class AuthorizeController implements AuthorizeControllerInterface
$response->setRedirect($this->config['redirect_status_code'], $uri);
}
+ /**
+ * Set not authorized response
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param string $redirect_uri
+ * @param mixed $user_id
+ */
protected function setNotAuthorizedResponse(RequestInterface $request, ResponseInterface $response, $redirect_uri, $user_id = null)
{
$error = 'access_denied';
@@ -108,9 +165,16 @@ class AuthorizeController implements AuthorizeControllerInterface
$response->setRedirect($this->config['redirect_status_code'], $redirect_uri, $this->state, $error, $error_message);
}
- /*
+ /**
* We have made this protected so this class can be extended to add/modify
* these parameters
+ *
+ * @TODO: add dependency injection for the parameters in this method
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param mixed $user_id
+ * @return array
*/
protected function buildAuthorizeParameters($request, $response, $user_id)
{
@@ -127,6 +191,8 @@ class AuthorizeController implements AuthorizeControllerInterface
}
/**
+ * Validate the OAuth request
+ *
* @param RequestInterface $request
* @param ResponseInterface $response
* @return bool
@@ -186,7 +252,7 @@ class AuthorizeController implements AuthorizeControllerInterface
$redirect_uri = $registered_redirect_uri;
}
- // Select the redirect URI
+ // Select the response type
$response_type = $request->query('response_type', $request->request('response_type'));
// for multiple-valued response types - make them alphabetical
@@ -281,10 +347,10 @@ class AuthorizeController implements AuthorizeControllerInterface
/**
* Build the absolute URI based on supplied URI and parameters.
*
- * @param $uri An absolute URI.
- * @param $params Parameters to be append as GET.
+ * @param string $uri An absolute URI.
+ * @param array $params Parameters to be append as GET.
*
- * @return
+ * @return string
* An absolute URI with supplied parameters.
*
* @ingroup oauth2_section_4
@@ -302,9 +368,9 @@ class AuthorizeController implements AuthorizeControllerInterface
}
}
- // Put humpty dumpty back together
+ // Put the uri back together
return
- ((isset($parse_url["scheme"])) ? $parse_url["scheme"] . "://" : "")
+ ((isset($parse_url["scheme"])) ? $parse_url["scheme"] . "://" : "")
. ((isset($parse_url["user"])) ? $parse_url["user"]
. ((isset($parse_url["pass"])) ? ":" . $parse_url["pass"] : "") . "@" : "")
. ((isset($parse_url["host"])) ? $parse_url["host"] : "")
@@ -326,10 +392,10 @@ class AuthorizeController implements AuthorizeControllerInterface
/**
* Internal method for validating redirect URI supplied
*
- * @param string $inputUri The submitted URI to be validated
+ * @param string $inputUri The submitted URI to be validated
* @param string $registeredUriString The allowed URI(s) to validate against. Can be a space-delimited string of URIs to
* allow for multiple URIs
- *
+ * @return bool
* @see http://tools.ietf.org/html/rfc6749#section-3.1.2
*/
protected function validateRedirectUri($inputUri, $registeredUriString)
@@ -363,29 +429,50 @@ class AuthorizeController implements AuthorizeControllerInterface
}
/**
- * Convenience methods to access the parameters derived from the validated request
+ * Convenience method to access the scope
+ *
+ * @return string
*/
-
public function getScope()
{
return $this->scope;
}
+ /**
+ * Convenience method to access the state
+ *
+ * @return int
+ */
public function getState()
{
return $this->state;
}
+ /**
+ * Convenience method to access the client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->client_id;
}
+ /**
+ * Convenience method to access the redirect url
+ *
+ * @return string
+ */
public function getRedirectUri()
{
return $this->redirect_uri;
}
+ /**
+ * Convenience method to access the response type
+ *
+ * @return string
+ */
public function getResponseType()
{
return $this->response_type;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
index fa07ae8d2..f758f976a 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/AuthorizeControllerInterface.php
@@ -11,17 +11,18 @@ use OAuth2\ResponseInterface;
* authorization directly, this controller ensures the request is valid, but
* requires the application to determine the value of $is_authorized
*
- * ex:
- * > $user_id = $this->somehowDetermineUserId();
- * > $is_authorized = $this->somehowDetermineUserAuthorization();
- * > $response = new OAuth2\Response();
- * > $authorizeController->handleAuthorizeRequest(
- * > OAuth2\Request::createFromGlobals(),
- * > $response,
- * > $is_authorized,
- * > $user_id);
- * > $response->send();
- *
+ * @code
+ * $user_id = $this->somehowDetermineUserId();
+ * $is_authorized = $this->somehowDetermineUserAuthorization();
+ * $response = new OAuth2\Response();
+ * $authorizeController->handleAuthorizeRequest(
+ * OAuth2\Request::createFromGlobals(),
+ * $response,
+ * $is_authorized,
+ * $user_id
+ * );
+ * $response->send();
+ * @endcode
*/
interface AuthorizeControllerInterface
{
@@ -37,7 +38,21 @@ interface AuthorizeControllerInterface
const RESPONSE_TYPE_AUTHORIZATION_CODE = 'code';
const RESPONSE_TYPE_ACCESS_TOKEN = 'token';
+ /**
+ * Handle the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param $is_authorized
+ * @param null $user_id
+ * @return mixed
+ */
public function handleAuthorizeRequest(RequestInterface $request, ResponseInterface $response, $is_authorized, $user_id = null);
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ */
public function validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
index 3cfaaaf12..926f90fda 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceController.php
@@ -10,17 +10,43 @@ use OAuth2\ResponseInterface;
use OAuth2\Scope;
/**
- * @see OAuth2\Controller\ResourceControllerInterface
+ * @see ResourceControllerInterface
*/
class ResourceController implements ResourceControllerInterface
{
+ /**
+ * @var array
+ */
private $token;
+ /**
+ * @var TokenTypeInterface
+ */
protected $tokenType;
+
+ /**
+ * @var AccessTokenInterface
+ */
protected $tokenStorage;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var ScopeInterface
+ */
protected $scopeUtil;
+ /**
+ * Constructor
+ *
+ * @param TokenTypeInterface $tokenType
+ * @param AccessTokenInterface $tokenStorage
+ * @param array $config
+ * @param ScopeInterface $scopeUtil
+ */
public function __construct(TokenTypeInterface $tokenType, AccessTokenInterface $tokenStorage, $config = array(), ScopeInterface $scopeUtil = null)
{
$this->tokenType = $tokenType;
@@ -36,6 +62,14 @@ class ResourceController implements ResourceControllerInterface
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * Verify the resource request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param null $scope
+ * @return bool
+ */
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response, $scope = null)
{
$token = $this->getAccessTokenData($request, $response);
@@ -71,6 +105,13 @@ class ResourceController implements ResourceControllerInterface
return (bool) $token;
}
+ /**
+ * Get access token data.
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return array|null
+ */
public function getAccessTokenData(RequestInterface $request, ResponseInterface $response)
{
// Get the token parameter
@@ -103,7 +144,11 @@ class ResourceController implements ResourceControllerInterface
return null;
}
- // convenience method to allow retrieval of the token
+ /**
+ * convenience method to allow retrieval of the token.
+ *
+ * @return array
+ */
public function getToken()
{
return $this->token;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
index 611421935..0e847ca61 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/ResourceControllerInterface.php
@@ -10,17 +10,32 @@ use OAuth2\ResponseInterface;
* call verifyResourceRequest in order to determine if the request
* contains a valid token.
*
- * ex:
- * > if (!$resourceController->verifyResourceRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response())) {
- * > $response->send(); // authorization failed
- * > die();
- * > }
- * > return json_encode($resource); // valid token! Send the stuff!
- *
+ * @code
+ * if (!$resourceController->verifyResourceRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response())) {
+ * $response->send(); // authorization failed
+ * die();
+ * }
+ * return json_encode($resource); // valid token! Send the stuff!
+ * @endcode
*/
interface ResourceControllerInterface
{
+ /**
+ * Verify the resource request
+ *
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @param string $scope
+ * @return mixed
+ */
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response, $scope = null);
+ /**
+ * Get access token data.
+ *
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @return mixed
+ */
public function getAccessTokenData(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
index 5d2d731fe..7fdaf85a6 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenController.php
@@ -10,9 +10,12 @@ use OAuth2\Scope;
use OAuth2\Storage\ClientInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use InvalidArgumentException;
+use LogicException;
+use RuntimeException;
/**
- * @see \OAuth2\Controller\TokenControllerInterface
+ * @see TokenControllerInterface
*/
class TokenController implements TokenControllerInterface
{
@@ -22,7 +25,7 @@ class TokenController implements TokenControllerInterface
protected $accessToken;
/**
- * @var array
+ * @var array<GrantTypeInterface>
*/
protected $grantTypes;
@@ -32,7 +35,7 @@ class TokenController implements TokenControllerInterface
protected $clientAssertionType;
/**
- * @var Scope|ScopeInterface
+ * @var ScopeInterface
*/
protected $scopeUtil;
@@ -41,12 +44,22 @@ class TokenController implements TokenControllerInterface
*/
protected $clientStorage;
+ /**
+ * Constructor
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param ClientInterface $clientStorage
+ * @param array $grantTypes
+ * @param ClientAssertionTypeInterface $clientAssertionType
+ * @param ScopeInterface $scopeUtil
+ * @throws InvalidArgumentException
+ */
public function __construct(AccessTokenInterface $accessToken, ClientInterface $clientStorage, array $grantTypes = array(), ClientAssertionTypeInterface $clientAssertionType = null, ScopeInterface $scopeUtil = null)
{
if (is_null($clientAssertionType)) {
foreach ($grantTypes as $grantType) {
if (!$grantType instanceof ClientAssertionTypeInterface) {
- throw new \InvalidArgumentException('You must supply an instance of OAuth2\ClientAssertionType\ClientAssertionTypeInterface or only use grant types which implement OAuth2\ClientAssertionType\ClientAssertionTypeInterface');
+ throw new InvalidArgumentException('You must supply an instance of OAuth2\ClientAssertionType\ClientAssertionTypeInterface or only use grant types which implement OAuth2\ClientAssertionType\ClientAssertionTypeInterface');
}
}
}
@@ -63,6 +76,12 @@ class TokenController implements TokenControllerInterface
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * Handle the token request.
+ *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ */
public function handleTokenRequest(RequestInterface $request, ResponseInterface $response)
{
if ($token = $this->grantAccessToken($request, $response)) {
@@ -83,8 +102,10 @@ class TokenController implements TokenControllerInterface
* This would be called from the "/token" endpoint as defined in the spec.
* You can call your endpoint whatever you want.
*
- * @param RequestInterface $request Request object to grant access token
- * @param ResponseInterface $response
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ *
+ * @return bool|null|array
*
* @throws \InvalidArgumentException
* @throws \LogicException
@@ -97,9 +118,15 @@ class TokenController implements TokenControllerInterface
*/
public function grantAccessToken(RequestInterface $request, ResponseInterface $response)
{
- if (strtolower($request->server('REQUEST_METHOD')) != 'post') {
+ if (strtolower($request->server('REQUEST_METHOD')) === 'options') {
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
+
+ return null;
+ }
+
+ if (strtolower($request->server('REQUEST_METHOD')) !== 'post') {
$response->setError(405, 'invalid_request', 'The request method must be POST when requesting an access token', '#section-3.2');
- $response->addHttpHeaders(array('Allow' => 'POST'));
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
return null;
}
@@ -121,6 +148,7 @@ class TokenController implements TokenControllerInterface
return null;
}
+ /** @var GrantTypeInterface $grantType */
$grantType = $this->grantTypes[$grantTypeIdentifier];
/**
@@ -128,8 +156,8 @@ class TokenController implements TokenControllerInterface
* ClientAssertionTypes allow for grant types which also assert the client data
* in which case ClientAssertion is handled in the validateRequest method
*
- * @see OAuth2\GrantType\JWTBearer
- * @see OAuth2\GrantType\ClientCredentials
+ * @see \OAuth2\GrantType\JWTBearer
+ * @see \OAuth2\GrantType\ClientCredentials
*/
if (!$grantType instanceof ClientAssertionTypeInterface) {
if (!$this->clientAssertionType->validateRequest($request, $response)) {
@@ -178,7 +206,6 @@ class TokenController implements TokenControllerInterface
*
* @see http://tools.ietf.org/html/rfc6749#section-3.3
*/
-
$requestedScope = $this->scopeUtil->getScopeFromRequest($request);
$availableScope = $grantType->getScope();
@@ -225,20 +252,24 @@ class TokenController implements TokenControllerInterface
}
/**
- * addGrantType
+ * Add grant type
*
- * @param GrantTypeInterface $grantType the grant type to add for the specified identifier
- * @param string $identifier a string passed in as "grant_type" in the response that will call this grantType
+ * @param GrantTypeInterface $grantType - the grant type to add for the specified identifier
+ * @param string|null $identifier - a string passed in as "grant_type" in the response that will call this grantType
*/
public function addGrantType(GrantTypeInterface $grantType, $identifier = null)
{
if (is_null($identifier) || is_numeric($identifier)) {
- $identifier = $grantType->getQuerystringIdentifier();
+ $identifier = $grantType->getQueryStringIdentifier();
}
$this->grantTypes[$identifier] = $grantType;
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ */
public function handleRevokeRequest(RequestInterface $request, ResponseInterface $response)
{
if ($this->revokeToken($request, $response)) {
@@ -257,13 +288,20 @@ class TokenController implements TokenControllerInterface
*
* @param RequestInterface $request
* @param ResponseInterface $response
+ * @throws RuntimeException
* @return bool|null
*/
public function revokeToken(RequestInterface $request, ResponseInterface $response)
{
- if (strtolower($request->server('REQUEST_METHOD')) != 'post') {
+ if (strtolower($request->server('REQUEST_METHOD')) === 'options') {
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
+
+ return null;
+ }
+
+ if (strtolower($request->server('REQUEST_METHOD')) !== 'post') {
$response->setError(405, 'invalid_request', 'The request method must be POST when revoking an access token', '#section-3.2');
- $response->addHttpHeaders(array('Allow' => 'POST'));
+ $response->addHttpHeaders(array('Allow' => 'POST, OPTIONS'));
return null;
}
@@ -285,7 +323,7 @@ class TokenController implements TokenControllerInterface
// @todo remove this check for v2.0
if (!method_exists($this->accessToken, 'revokeToken')) {
$class = get_class($this->accessToken);
- throw new \RuntimeException("AccessToken {$class} does not implement required revokeToken method");
+ throw new RuntimeException("AccessToken {$class} does not implement required revokeToken method");
}
$this->accessToken->revokeToken($token, $token_type_hint);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
index 72d72570f..2f83ce4bd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Controller/TokenControllerInterface.php
@@ -10,23 +10,30 @@ use OAuth2\ResponseInterface;
* it is called to handle all grant types the application supports.
* It also validates the client's credentials
*
- * ex:
- * > $tokenController->handleTokenRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response());
- * > $response->send();
- *
+ * @code
+ * $tokenController->handleTokenRequest(OAuth2\Request::createFromGlobals(), $response = new OAuth2\Response());
+ * $response->send();
+ * @endcode
*/
interface TokenControllerInterface
{
/**
- * handleTokenRequest
- *
- * @param $request
- * OAuth2\RequestInterface - The current http request
- * @param $response
- * OAuth2\ResponseInterface - An instance of OAuth2\ResponseInterface to contain the response data
+ * Handle the token request
*
+ * @param RequestInterface $request - The current http request
+ * @param ResponseInterface $response - An instance of OAuth2\ResponseInterface to contain the response data
*/
public function handleTokenRequest(RequestInterface $request, ResponseInterface $response);
+ /**
+ * Grant or deny a requested access token.
+ * This would be called from the "/token" endpoint as defined in the spec.
+ * You can call your endpoint whatever you want.
+ *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ *
+ * @return mixed
+ */
public function grantAccessToken(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
index 2d336c664..8dc720a43 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/EncryptionInterface.php
@@ -4,8 +4,31 @@ namespace OAuth2\Encryption;
interface EncryptionInterface
{
+ /**
+ * @param $payload
+ * @param $key
+ * @param null $algorithm
+ * @return mixed
+ */
public function encode($payload, $key, $algorithm = null);
+
+ /**
+ * @param $payload
+ * @param $key
+ * @param null $algorithm
+ * @return mixed
+ */
public function decode($payload, $key, $algorithm = null);
+
+ /**
+ * @param $data
+ * @return mixed
+ */
public function urlSafeB64Encode($data);
+
+ /**
+ * @param $b64
+ * @return mixed
+ */
public function urlSafeB64Decode($b64);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
index ee576e643..c258b8fc3 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Encryption/Jwt.php
@@ -2,12 +2,21 @@
namespace OAuth2\Encryption;
+use Exception;
+use InvalidArgumentException;
+
/**
* @link https://github.com/F21/jwt
* @author F21
*/
class Jwt implements EncryptionInterface
{
+ /**
+ * @param $payload
+ * @param $key
+ * @param string $algo
+ * @return string
+ */
public function encode($payload, $key, $algo = 'HS256')
{
$header = $this->generateJwtHeader($payload, $algo);
@@ -25,6 +34,12 @@ class Jwt implements EncryptionInterface
return implode('.', $segments);
}
+ /**
+ * @param string $jwt
+ * @param null $key
+ * @param array|bool $allowedAlgorithms
+ * @return bool|mixed
+ */
public function decode($jwt, $key = null, $allowedAlgorithms = true)
{
if (!strpos($jwt, '.')) {
@@ -67,6 +82,14 @@ class Jwt implements EncryptionInterface
return $payload;
}
+ /**
+ * @param $signature
+ * @param $input
+ * @param $key
+ * @param string $algo
+ * @return bool
+ * @throws InvalidArgumentException
+ */
private function verifySignature($signature, $input, $key, $algo = 'HS256')
{
// use constants when possible, for HipHop support
@@ -89,10 +112,17 @@ class Jwt implements EncryptionInterface
return @openssl_verify($input, $signature, $key, defined('OPENSSL_ALGO_SHA512') ? OPENSSL_ALGO_SHA512 : 'sha512') === 1;
default:
- throw new \InvalidArgumentException("Unsupported or invalid signing algorithm.");
+ throw new InvalidArgumentException("Unsupported or invalid signing algorithm.");
}
}
+ /**
+ * @param $input
+ * @param $key
+ * @param string $algo
+ * @return string
+ * @throws Exception
+ */
private function sign($input, $key, $algo = 'HS256')
{
switch ($algo) {
@@ -115,19 +145,30 @@ class Jwt implements EncryptionInterface
return $this->generateRSASignature($input, $key, defined('OPENSSL_ALGO_SHA512') ? OPENSSL_ALGO_SHA512 : 'sha512');
default:
- throw new \Exception("Unsupported or invalid signing algorithm.");
+ throw new Exception("Unsupported or invalid signing algorithm.");
}
}
+ /**
+ * @param $input
+ * @param $key
+ * @param string $algo
+ * @return mixed
+ * @throws Exception
+ */
private function generateRSASignature($input, $key, $algo)
{
if (!openssl_sign($input, $signature, $key, $algo)) {
- throw new \Exception("Unable to sign data.");
+ throw new Exception("Unable to sign data.");
}
return $signature;
}
+ /**
+ * @param string $data
+ * @return string
+ */
public function urlSafeB64Encode($data)
{
$b64 = base64_encode($data);
@@ -138,6 +179,10 @@ class Jwt implements EncryptionInterface
return $b64;
}
+ /**
+ * @param string $b64
+ * @return mixed|string
+ */
public function urlSafeB64Decode($b64)
{
$b64 = str_replace(array('-', '_'),
@@ -158,6 +203,11 @@ class Jwt implements EncryptionInterface
);
}
+ /**
+ * @param string $a
+ * @param string $b
+ * @return bool
+ */
protected function hash_equals($a, $b)
{
if (function_exists('hash_equals')) {
@@ -170,4 +220,4 @@ class Jwt implements EncryptionInterface
return $diff === 0;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
index cae9f787d..784f6b3a3 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/AuthorizationCode.php
@@ -6,29 +6,47 @@ use OAuth2\Storage\AuthorizationCodeInterface;
use OAuth2\ResponseType\AccessTokenInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use Exception;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode implements GrantTypeInterface
{
+ /**
+ * @var AuthorizationCodeInterface
+ */
protected $storage;
+
+ /**
+ * @var array
+ */
protected $authCode;
/**
- * @param \OAuth2\Storage\AuthorizationCodeInterface $storage REQUIRED Storage class for retrieving authorization code information
+ * @param AuthorizationCodeInterface $storage - REQUIRED Storage class for retrieving authorization code information
*/
public function __construct(AuthorizationCodeInterface $storage)
{
$this->storage = $storage;
}
- public function getQuerystringIdentifier()
+ /**
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'authorization_code';
}
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ * @throws Exception
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$request->request('code')) {
@@ -75,21 +93,45 @@ class AuthorizationCode implements GrantTypeInterface
return true;
}
+ /**
+ * Get the client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->authCode['client_id'];
}
+ /**
+ * Get the scope
+ *
+ * @return string
+ */
public function getScope()
{
return isset($this->authCode['scope']) ? $this->authCode['scope'] : null;
}
+ /**
+ * Get the user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
return isset($this->authCode['user_id']) ? $this->authCode['user_id'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
$token = $accessToken->createAccessToken($client_id, $user_id, $scope);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
index f953e4e8d..e135c2dd2 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/ClientCredentials.php
@@ -9,12 +9,19 @@ use OAuth2\Storage\ClientCredentialsInterface;
/**
* @author Brent Shaffer <bshafs at gmail dot com>
*
- * @see OAuth2\ClientAssertionType_HttpBasic
+ * @see HttpBasic
*/
class ClientCredentials extends HttpBasic implements GrantTypeInterface
{
+ /**
+ * @var array
+ */
private $clientData;
+ /**
+ * @param ClientCredentialsInterface $storage
+ * @param array $config
+ */
public function __construct(ClientCredentialsInterface $storage, array $config = array())
{
/**
@@ -27,11 +34,21 @@ class ClientCredentials extends HttpBasic implements GrantTypeInterface
parent::__construct($storage, $config);
}
- public function getQuerystringIdentifier()
+ /**
+ * Get query string identifier
+ *
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'client_credentials';
}
+ /**
+ * Get scope
+ *
+ * @return string|null
+ */
public function getScope()
{
$this->loadClientData();
@@ -39,6 +56,11 @@ class ClientCredentials extends HttpBasic implements GrantTypeInterface
return isset($this->clientData['scope']) ? $this->clientData['scope'] : null;
}
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
$this->loadClientData();
@@ -46,6 +68,15 @@ class ClientCredentials extends HttpBasic implements GrantTypeInterface
return isset($this->clientData['user_id']) ? $this->clientData['user_id'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
/**
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
index 98489e9c1..f45786ff5 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/GrantTypeInterface.php
@@ -11,10 +11,49 @@ use OAuth2\ResponseInterface;
*/
interface GrantTypeInterface
{
- public function getQuerystringIdentifier();
+ /**
+ * Get query string identifier
+ *
+ * @return string
+ */
+ public function getQueryStringIdentifier();
+
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return mixed
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response);
+
+ /**
+ * Get client id
+ *
+ * @return mixed
+ */
public function getClientId();
+
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId();
+
+ /**
+ * Get scope
+ *
+ * @return string|null
+ */
public function getScope();
+
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
index bb11a6954..62c1efabd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/JwtBearer.php
@@ -30,10 +30,12 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
/**
* Creates an instance of the JWT bearer grant type.
*
- * @param OAuth2\Storage\JWTBearerInterface|JwtBearerInterface $storage A valid storage interface that implements storage hooks for the JWT bearer grant type.
- * @param string $audience The audience to validate the token against. This is usually the full URI of the OAuth token requests endpoint.
- * @param EncryptionInterface|OAuth2\Encryption\JWT $jwtUtil OPTONAL The class used to decode, encode and verify JWTs.
- * @param array $config
+ * @param JwtBearerInterface $storage - A valid storage interface that implements storage hooks for the JWT
+ * bearer grant type.
+ * @param string $audience - The audience to validate the token against. This is usually the full
+ * URI of the OAuth token requests endpoint.
+ * @param EncryptionInterface|JWT $jwtUtil - OPTONAL The class used to decode, encode and verify JWTs.
+ * @param array $config
*/
public function __construct(JwtBearerInterface $storage, $audience, EncryptionInterface $jwtUtil = null, array $config = array())
{
@@ -56,12 +58,11 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
/**
* Returns the grant_type get parameter to identify the grant type request as JWT bearer authorization grant.
*
- * @return
- * The string identifier for grant_type.
+ * @return string - The string identifier for grant_type.
*
- * @see OAuth2\GrantType\GrantTypeInterface::getQuerystringIdentifier()
+ * @see GrantTypeInterface::getQueryStringIdentifier()
*/
- public function getQuerystringIdentifier()
+ public function getQueryStringIdentifier()
{
return 'urn:ietf:params:oauth:grant-type:jwt-bearer';
}
@@ -69,10 +70,9 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
/**
* Validates the data from the decoded JWT.
*
- * @return
- * TRUE if the JWT request is valid and can be decoded. Otherwise, FALSE is returned.
- *
- * @see OAuth2\GrantType\GrantTypeInterface::getTokenData()
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed|null TRUE if the JWT request is valid and can be decoded. Otherwise, FALSE is returned.@see GrantTypeInterface::getTokenData()
*/
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
@@ -196,16 +196,31 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
return true;
}
+ /**
+ * Get client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->jwt['iss'];
}
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
return $this->jwt['sub'];
}
+ /**
+ * Get scope
+ *
+ * @return null
+ */
public function getScope()
{
return null;
@@ -215,7 +230,13 @@ class JwtBearer implements GrantTypeInterface, ClientAssertionTypeInterface
* Creates an access token that is NOT associated with a refresh token.
* If a subject (sub) the name of the user/account we are accessing data on behalf of.
*
- * @see OAuth2\GrantType\GrantTypeInterface::createAccessToken()
+ * @see GrantTypeInterface::createAccessToken()
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
*/
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
index e55385222..75c611f1d 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/RefreshToken.php
@@ -8,25 +8,34 @@ use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class RefreshToken implements GrantTypeInterface
{
+ /**
+ * @var array
+ */
private $refreshToken;
+ /**
+ * @var RefreshTokenInterface
+ */
protected $storage;
+
+ /**
+ * @var array
+ */
protected $config;
/**
- * @param OAuth2\Storage\RefreshTokenInterface $storage REQUIRED Storage class for retrieving refresh token information
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'always_issue_new_refresh_token' => true, // whether to issue a new refresh token upon successful token request
- * 'unset_refresh_token_after_use' => true // whether to unset the refresh token after after using
- * );
- * </code>
+ * @param RefreshTokenInterface $storage - REQUIRED Storage class for retrieving refresh token information
+ * @param array $config - OPTIONAL Configuration options for the server
+ * @code
+ * $config = array(
+ * 'always_issue_new_refresh_token' => true, // whether to issue a new refresh token upon successful token request
+ * 'unset_refresh_token_after_use' => true // whether to unset the refresh token after after using
+ * );
+ * @endcode
*/
public function __construct(RefreshTokenInterface $storage, $config = array())
{
@@ -45,11 +54,21 @@ class RefreshToken implements GrantTypeInterface
$this->storage = $storage;
}
- public function getQuerystringIdentifier()
+ /**
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'refresh_token';
}
+ /**
+ * Validate the OAuth request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed|null
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$request->request("refresh_token")) {
@@ -76,21 +95,45 @@ class RefreshToken implements GrantTypeInterface
return true;
}
+ /**
+ * Get client id
+ *
+ * @return mixed
+ */
public function getClientId()
{
return $this->refreshToken['client_id'];
}
+ /**
+ * Get user id
+ *
+ * @return mixed|null
+ */
public function getUserId()
{
return isset($this->refreshToken['user_id']) ? $this->refreshToken['user_id'] : null;
}
+ /**
+ * Get scope
+ *
+ * @return null|string
+ */
public function getScope()
{
return isset($this->refreshToken['scope']) ? $this->refreshToken['scope'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
/*
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
index f165538ba..b10c2dd09 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/GrantType/UserCredentials.php
@@ -6,30 +6,46 @@ use OAuth2\Storage\UserCredentialsInterface;
use OAuth2\ResponseType\AccessTokenInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
+use LogicException;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class UserCredentials implements GrantTypeInterface
{
+ /**
+ * @var array
+ */
private $userInfo;
+ /**
+ * @var UserCredentialsInterface
+ */
protected $storage;
/**
- * @param OAuth2\Storage\UserCredentialsInterface $storage REQUIRED Storage class for retrieving user credentials information
+ * @param UserCredentialsInterface $storage - REQUIRED Storage class for retrieving user credentials information
*/
public function __construct(UserCredentialsInterface $storage)
{
$this->storage = $storage;
}
- public function getQuerystringIdentifier()
+ /**
+ * @return string
+ */
+ public function getQueryStringIdentifier()
{
return 'password';
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool|mixed|null
+ *
+ * @throws LogicException
+ */
public function validateRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$request->request("password") || !$request->request("username")) {
@@ -61,21 +77,45 @@ class UserCredentials implements GrantTypeInterface
return true;
}
+ /**
+ * Get client id
+ *
+ * @return mixed|null
+ */
public function getClientId()
{
return null;
}
+ /**
+ * Get user id
+ *
+ * @return mixed
+ */
public function getUserId()
{
return $this->userInfo['user_id'];
}
+ /**
+ * Get scope
+ *
+ * @return null|string
+ */
public function getScope()
{
return isset($this->userInfo['scope']) ? $this->userInfo['scope'] : null;
}
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
return $accessToken->createAccessToken($client_id, $user_id, $scope);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
index c9b5c6af7..54c5f9a63 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeController.php
@@ -11,8 +11,19 @@ use OAuth2\ResponseInterface;
*/
class AuthorizeController extends BaseAuthorizeController implements AuthorizeControllerInterface
{
+ /**
+ * @var mixed
+ */
private $nonce;
+ /**
+ * Set not authorized response
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param string $redirect_uri
+ * @param null $user_id
+ */
protected function setNotAuthorizedResponse(RequestInterface $request, ResponseInterface $response, $redirect_uri, $user_id = null)
{
$prompt = $request->query('prompt', 'consent');
@@ -32,6 +43,14 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
$response->setRedirect($this->config['redirect_status_code'], $redirect_uri, $this->getState(), $error, $error_message);
}
+ /**
+ * @TODO: add dependency injection for the parameters in this method
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param mixed $user_id
+ * @return array
+ */
protected function buildAuthorizeParameters($request, $response, $user_id)
{
if (!$params = parent::buildAuthorizeParameters($request, $response, $user_id)) {
@@ -49,6 +68,11 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
return $params;
}
+ /**
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return bool
+ */
public function validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response)
{
if (!parent::validateAuthorizeRequest($request, $response)) {
@@ -69,6 +93,11 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
return true;
}
+ /**
+ * Array of valid response types
+ *
+ * @return array
+ */
protected function getValidResponseTypes()
{
return array(
@@ -87,11 +116,8 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
* method checks whether OpenID Connect is enabled in the server settings
* and whether the openid scope was requested.
*
- * @param $request_scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if an id token is needed, FALSE otherwise.
+ * @param string $request_scope - A space-separated string of scopes.
+ * @return boolean - TRUE if an id token is needed, FALSE otherwise.
*/
public function needsIdToken($request_scope)
{
@@ -99,6 +125,9 @@ class AuthorizeController extends BaseAuthorizeController implements AuthorizeCo
return $this->scopeUtil->checkScope('openid', $request_scope);
}
+ /**
+ * @return mixed
+ */
public function getNonce()
{
return $this->nonce;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
index 1e231d844..b4967c317 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/AuthorizeControllerInterface.php
@@ -5,6 +5,8 @@ namespace OAuth2\OpenID\Controller;
interface AuthorizeControllerInterface
{
const RESPONSE_TYPE_ID_TOKEN = 'id_token';
+
const RESPONSE_TYPE_ID_TOKEN_TOKEN = 'id_token token';
+
const RESPONSE_TYPE_CODE_ID_TOKEN = 'code id_token';
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
index 30cb942d0..c489b7af3 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoController.php
@@ -16,30 +16,34 @@ use OAuth2\ResponseInterface;
*/
class UserInfoController extends ResourceController implements UserInfoControllerInterface
{
- private $token;
-
- protected $tokenType;
- protected $tokenStorage;
+ /**
+ * @var UserClaimsInterface
+ */
protected $userClaimsStorage;
- protected $config;
- protected $scopeUtil;
+ /**
+ * Constructor
+ *
+ * @param TokenTypeInterface $tokenType
+ * @param AccessTokenInterface $tokenStorage
+ * @param UserClaimsInterface $userClaimsStorage
+ * @param array $config
+ * @param ScopeInterface $scopeUtil
+ */
public function __construct(TokenTypeInterface $tokenType, AccessTokenInterface $tokenStorage, UserClaimsInterface $userClaimsStorage, $config = array(), ScopeInterface $scopeUtil = null)
{
- $this->tokenType = $tokenType;
- $this->tokenStorage = $tokenStorage;
- $this->userClaimsStorage = $userClaimsStorage;
-
- $this->config = array_merge(array(
- 'www_realm' => 'Service',
- ), $config);
+ parent::__construct($tokenType, $tokenStorage, $config, $scopeUtil);
- if (is_null($scopeUtil)) {
- $scopeUtil = new Scope();
- }
- $this->scopeUtil = $scopeUtil;
+ $this->userClaimsStorage = $userClaimsStorage;
}
+ /**
+ * Handle the user info request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return void
+ */
public function handleUserInfoRequest(RequestInterface $request, ResponseInterface $response)
{
if (!$this->verifyResourceRequest($request, $response, 'openid')) {
@@ -55,4 +59,4 @@ class UserInfoController extends ResourceController implements UserInfoControlle
);
$response->addParameters($claims);
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
index a89049d49..88e9228d0 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Controller/UserInfoControllerInterface.php
@@ -9,15 +9,22 @@ use OAuth2\ResponseInterface;
* This controller is called when the user claims for OpenID Connect's
* UserInfo endpoint should be returned.
*
- * ex:
- * > $response = new OAuth2\Response();
- * > $userInfoController->handleUserInfoRequest(
- * > OAuth2\Request::createFromGlobals(),
- * > $response;
- * > $response->send();
- *
+ * @code
+ * $response = new OAuth2\Response();
+ * $userInfoController->handleUserInfoRequest(
+ * OAuth2\Request::createFromGlobals(),
+ * $response
+ * );
+ * $response->send();
+ * @endcode
*/
interface UserInfoControllerInterface
{
+ /**
+ * Handle user info request
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ */
public function handleUserInfoRequest(RequestInterface $request, ResponseInterface $response);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
index 8ed1edc26..ee113a0e5 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/GrantType/AuthorizationCode.php
@@ -6,11 +6,19 @@ use OAuth2\GrantType\AuthorizationCode as BaseAuthorizationCode;
use OAuth2\ResponseType\AccessTokenInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode extends BaseAuthorizationCode
{
+ /**
+ * Create access token
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user id associated with the access token
+ * @param string $scope - scopes to be stored in space-separated string.
+ * @return array
+ */
public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
{
$includeRefreshToken = true;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
index 8971954c5..b8ad41ffb 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCode.php
@@ -6,16 +6,26 @@ use OAuth2\ResponseType\AuthorizationCode as BaseAuthorizationCode;
use OAuth2\OpenID\Storage\AuthorizationCodeInterface as AuthorizationCodeStorageInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode extends BaseAuthorizationCode implements AuthorizationCodeInterface
{
+ /**
+ * Constructor
+ *
+ * @param AuthorizationCodeStorageInterface $storage
+ * @param array $config
+ */
public function __construct(AuthorizationCodeStorageInterface $storage, array $config = array())
{
parent::__construct($storage, $config);
}
+ /**
+ * @param $params
+ * @param null $user_id
+ * @return array
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
// build the URL to redirect to
@@ -35,18 +45,14 @@ class AuthorizationCode extends BaseAuthorizationCode implements AuthorizationCo
/**
* Handle the creation of the authorization code.
*
- * @param $client_id
- * Client identifier related to the authorization code
- * @param $user_id
- * User ID associated with the authorization code
- * @param $redirect_uri
- * An absolute URI to which the authorization server will redirect the
- * user-agent to when the end-user authorization step is completed.
- * @param $scope
- * (optional) Scopes to be stored in space-separated string.
- * @param $id_token
- * (optional) The OpenID Connect id_token.
+ * @param mixed $client_id - Client identifier related to the authorization code
+ * @param mixed $user_id - User ID associated with the authorization code
+ * @param string $redirect_uri - An absolute URI to which the authorization server will redirect the
+ * user-agent to when the end-user authorization step is completed.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $id_token - OPTIONAL The OpenID Connect id_token.
*
+ * @return string
* @see http://tools.ietf.org/html/rfc6749#section-4
* @ingroup oauth2_section_4
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
index ea4779255..eb94ef077 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/AuthorizationCodeInterface.php
@@ -5,7 +5,6 @@ namespace OAuth2\OpenID\ResponseType;
use OAuth2\ResponseType\AuthorizationCodeInterface as BaseAuthorizationCodeInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
interface AuthorizationCodeInterface extends BaseAuthorizationCodeInterface
@@ -13,12 +12,13 @@ interface AuthorizationCodeInterface extends BaseAuthorizationCodeInterface
/**
* Handle the creation of the authorization code.
*
- * @param $client_id Client identifier related to the authorization code
- * @param $user_id User ID associated with the authorization code
- * @param $redirect_uri An absolute URI to which the authorization server will redirect the
- * user-agent to when the end-user authorization step is completed.
- * @param $scope OPTIONAL Scopes to be stored in space-separated string.
- * @param $id_token OPTIONAL The OpenID Connect id_token.
+ * @param mixed $client_id - Client identifier related to the authorization code
+ * @param mixed $user_id - User ID associated with the authorization code
+ * @param string $redirect_uri - An absolute URI to which the authorization server will redirect the
+ * user-agent to when the end-user authorization step is completed.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $id_token - OPTIONAL The OpenID Connect id_token.
+ * @return string
*
* @see http://tools.ietf.org/html/rfc6749#section-4
* @ingroup oauth2_section_4
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
index ac7764d6c..2696ada37 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/CodeIdToken.php
@@ -4,15 +4,31 @@ namespace OAuth2\OpenID\ResponseType;
class CodeIdToken implements CodeIdTokenInterface
{
+ /**
+ * @var AuthorizationCodeInterface
+ */
protected $authCode;
+
+ /**
+ * @var IdTokenInterface
+ */
protected $idToken;
+ /**
+ * @param AuthorizationCodeInterface $authCode
+ * @param IdTokenInterface $idToken
+ */
public function __construct(AuthorizationCodeInterface $authCode, IdTokenInterface $idToken)
{
$this->authCode = $authCode;
$this->idToken = $idToken;
}
+ /**
+ * @param array $params
+ * @param mixed $user_id
+ * @return mixed
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
$result = $this->authCode->getAuthorizeResponse($params, $user_id);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
index 97777fbf2..55e446074 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdToken.php
@@ -6,14 +6,38 @@ use OAuth2\Encryption\EncryptionInterface;
use OAuth2\Encryption\Jwt;
use OAuth2\Storage\PublicKeyInterface;
use OAuth2\OpenID\Storage\UserClaimsInterface;
+use LogicException;
class IdToken implements IdTokenInterface
{
+ /**
+ * @var UserClaimsInterface
+ */
protected $userClaimsStorage;
+ /**
+ * @var PublicKeyInterface
+ */
protected $publicKeyStorage;
+
+ /**
+ * @var array
+ */
protected $config;
+
+ /**
+ * @var EncryptionInterface
+ */
protected $encryptionUtil;
+ /**
+ * Constructor
+ *
+ * @param UserClaimsInterface $userClaimsStorage
+ * @param PublicKeyInterface $publicKeyStorage
+ * @param array $config
+ * @param EncryptionInterface $encryptionUtil
+ * @throws LogicException
+ */
public function __construct(UserClaimsInterface $userClaimsStorage, PublicKeyInterface $publicKeyStorage, array $config = array(), EncryptionInterface $encryptionUtil = null)
{
$this->userClaimsStorage = $userClaimsStorage;
@@ -24,13 +48,18 @@ class IdToken implements IdTokenInterface
$this->encryptionUtil = $encryptionUtil;
if (!isset($config['issuer'])) {
- throw new \LogicException('config parameter "issuer" must be set');
+ throw new LogicException('config parameter "issuer" must be set');
}
$this->config = array_merge(array(
'id_lifetime' => 3600,
), $config);
}
+ /**
+ * @param array $params
+ * @param null $userInfo
+ * @return array|mixed
+ */
public function getAuthorizeResponse($params, $userInfo = null)
{
// build the URL to redirect to
@@ -50,6 +79,16 @@ class IdToken implements IdTokenInterface
return array($params['redirect_uri'], $result);
}
+ /**
+ * Create id token
+ *
+ * @param string $client_id
+ * @param mixed $userInfo
+ * @param mixed $nonce
+ * @param mixed $userClaims
+ * @param mixed $access_token
+ * @return mixed|string
+ */
public function createIdToken($client_id, $userInfo, $nonce = null, $userClaims = null, $access_token = null)
{
// pull auth_time from user info if supplied
@@ -79,6 +118,11 @@ class IdToken implements IdTokenInterface
return $this->encodeToken($token, $client_id);
}
+ /**
+ * @param $access_token
+ * @param null $client_id
+ * @return mixed|string
+ */
protected function createAtHash($access_token, $client_id = null)
{
// maps HS256 and RS256 to sha256, etc.
@@ -90,6 +134,11 @@ class IdToken implements IdTokenInterface
return $this->encryptionUtil->urlSafeB64Encode($at_hash);
}
+ /**
+ * @param array $token
+ * @param null $client_id
+ * @return mixed|string
+ */
protected function encodeToken(array $token, $client_id = null)
{
$private_key = $this->publicKeyStorage->getPrivateKey($client_id);
@@ -98,6 +147,11 @@ class IdToken implements IdTokenInterface
return $this->encryptionUtil->encode($token, $private_key, $algorithm);
}
+ /**
+ * @param $userInfo
+ * @return array
+ * @throws LogicException
+ */
private function getUserIdAndAuthTime($userInfo)
{
$auth_time = null;
@@ -105,7 +159,7 @@ class IdToken implements IdTokenInterface
// support an array for user_id / auth_time
if (is_array($userInfo)) {
if (!isset($userInfo['user_id'])) {
- throw new \LogicException('if $user_id argument is an array, user_id index must be set');
+ throw new LogicException('if $user_id argument is an array, user_id index must be set');
}
$auth_time = isset($userInfo['auth_time']) ? $userInfo['auth_time'] : null;
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
index 0bd2f8391..226a3bcbb 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenInterface.php
@@ -15,12 +15,13 @@ interface IdTokenInterface extends ResponseTypeInterface
* If the Implicit Flow is used, the token and id_token are generated and
* returned together.
*
- * @param string $client_id The client id.
- * @param string $user_id The user id.
- * @param string $nonce OPTIONAL The nonce.
- * @param string $userClaims OPTIONAL Claims about the user.
- * @param string $access_token OPTIONAL The access token, if known.
- *
+ * @param string $client_id - The client id.
+ * @param mixed $userInfo - User info
+ * @param string $nonce - OPTIONAL The nonce.
+ * @param string $userClaims - OPTIONAL Claims about the user.
+ * @param string $access_token - OPTIONAL The access token, if known.
+
+ * @internal param string $user_id - The user id.
* @return string The ID Token represented as a JSON Web Token (JWT).
*
* @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
index f0c59799b..94c51ae4d 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/ResponseType/IdTokenToken.php
@@ -6,15 +6,33 @@ use OAuth2\ResponseType\AccessTokenInterface;
class IdTokenToken implements IdTokenTokenInterface
{
+ /**
+ * @var AccessTokenInterface
+ */
protected $accessToken;
+
+ /**
+ * @var IdTokenInterface
+ */
protected $idToken;
+ /**
+ * Constructor
+ *
+ * @param AccessTokenInterface $accessToken
+ * @param IdTokenInterface $idToken
+ */
public function __construct(AccessTokenInterface $accessToken, IdTokenInterface $idToken)
{
$this->accessToken = $accessToken;
$this->idToken = $idToken;
}
+ /**
+ * @param array $params
+ * @param mixed $user_id
+ * @return mixed
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
$result = $this->accessToken->getAuthorizeResponse($params, $user_id);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
index 51dd867ec..446cec928 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/AuthorizationCodeInterface.php
@@ -23,13 +23,13 @@ interface AuthorizationCodeInterface extends BaseAuthorizationCodeInterface
*
* Required for OAuth2::GRANT_TYPE_AUTH_CODE.
*
- * @param $code authorization code to be stored.
- * @param $client_id client identifier to be stored.
- * @param $user_id user identifier to be stored.
- * @param string $redirect_uri redirect URI(s) to be stored in a space-separated string.
- * @param int $expires expiration to be stored as a Unix timestamp.
- * @param string $scope OPTIONAL scopes to be stored in space-separated string.
- * @param string $id_token OPTIONAL the OpenID Connect id_token.
+ * @param string $code - authorization code to be stored.
+ * @param mixed $client_id - client identifier to be stored.
+ * @param mixed $user_id - user identifier to be stored.
+ * @param string $redirect_uri - redirect URI(s) to be stored in a space-separated string.
+ * @param int $expires - expiration to be stored as a Unix timestamp.
+ * @param string $scope - OPTIONAL scopes to be stored in space-separated string.
+ * @param string $id_token - OPTIONAL the OpenID Connect id_token.
*
* @ingroup oauth2_section_4
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
index f230bef9e..9c5e7c8c4 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/OpenID/Storage/UserClaimsInterface.php
@@ -23,14 +23,11 @@ interface UserClaimsInterface
* Groups of claims are returned based on the requested scopes. No group
* is required, and no claim is required.
*
- * @param $user_id
- * The id of the user for which claims should be returned.
- * @param $scope
- * The requested scope.
+ * @param mixed $user_id - The id of the user for which claims should be returned.
+ * @param string $scope - The requested scope.
* Scopes with matching claims: profile, email, address, phone.
*
- * @return
- * An array in the claim => value format.
+ * @return array - An array in the claim => value format.
*
* @see http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
index c92cee821..c96cb972f 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
@@ -2,6 +2,8 @@
namespace OAuth2;
+use LogicException;
+
/**
* OAuth2\Request
* This class is taken from the Symfony2 Framework and is part of the Symfony package.
@@ -21,13 +23,14 @@ class Request implements RequestInterface
/**
* Constructor.
*
- * @param array $query The GET parameters
- * @param array $request The POST parameters
- * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
- * @param array $cookies The COOKIE parameters
- * @param array $files The FILES parameters
- * @param array $server The SERVER parameters
- * @param string $content The raw body data
+ * @param array $query - The GET parameters
+ * @param array $request - The POST parameters
+ * @param array $attributes - The request attributes (parameters parsed from the PATH_INFO, ...)
+ * @param array $cookies - The COOKIE parameters
+ * @param array $files - The FILES parameters
+ * @param array $server - The SERVER parameters
+ * @param string $content - The raw body data
+ * @param array $headers - The headers
*
* @api
*/
@@ -41,13 +44,14 @@ class Request implements RequestInterface
*
* This method also re-initializes all properties.
*
- * @param array $query The GET parameters
- * @param array $request The POST parameters
- * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
- * @param array $cookies The COOKIE parameters
- * @param array $files The FILES parameters
- * @param array $server The SERVER parameters
- * @param string $content The raw body data
+ * @param array $query - The GET parameters
+ * @param array $request - The POST parameters
+ * @param array $attributes - The request attributes (parameters parsed from the PATH_INFO, ...)
+ * @param array $cookies - The COOKIE parameters
+ * @param array $files - The FILES parameters
+ * @param array $server - The SERVER parameters
+ * @param string $content - The raw body data
+ * @param array $headers - The headers
*
* @api
*/
@@ -63,21 +67,41 @@ class Request implements RequestInterface
$this->headers = is_null($headers) ? $this->getHeadersFromServer($this->server) : $headers;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function query($name, $default = null)
{
return isset($this->query[$name]) ? $this->query[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function request($name, $default = null)
{
return isset($this->request[$name]) ? $this->request[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function server($name, $default = null)
{
return isset($this->server[$name]) ? $this->server[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function headers($name, $default = null)
{
$headers = array_change_key_case($this->headers);
@@ -86,6 +110,9 @@ class Request implements RequestInterface
return isset($headers[$name]) ? $headers[$name] : $default;
}
+ /**
+ * @return array
+ */
public function getAllQueryParameters()
{
return $this->query;
@@ -94,14 +121,15 @@ class Request implements RequestInterface
/**
* Returns the request body content.
*
- * @param Boolean $asResource If true, a resource will be returned
+ * @param boolean $asResource - If true, a resource will be returned
+ * @return string|resource - The request body content or a resource to read the body stream.
*
- * @return string|resource The request body content or a resource to read the body stream.
+ * @throws LogicException
*/
public function getContent($asResource = false)
{
if (false === $this->content || (true === $asResource && null !== $this->content)) {
- throw new \LogicException('getContent() can only be called once when using the resource return type.');
+ throw new LogicException('getContent() can only be called once when using the resource return type.');
}
if (true === $asResource) {
@@ -117,6 +145,10 @@ class Request implements RequestInterface
return $this->content;
}
+ /**
+ * @param array $server
+ * @return array
+ */
private function getHeadersFromServer($server)
{
$headers = array();
@@ -185,13 +217,15 @@ class Request implements RequestInterface
/**
* Creates a new request with values from PHP's super globals.
*
- * @return Request A new request
+ * @return Request - A new request
*
* @api
*/
public static function createFromGlobals()
{
$class = get_called_class();
+
+ /** @var Request $request */
$request = new $class($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER);
$contentType = $request->server('CONTENT_TYPE', '');
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
index 8a70d5fad..1d036b735 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/RequestInterface.php
@@ -4,13 +4,36 @@ namespace OAuth2;
interface RequestInterface
{
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function query($name, $default = null);
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function request($name, $default = null);
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function server($name, $default = null);
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function headers($name, $default = null);
+ /**
+ * @return mixed
+ */
public function getAllQueryParameters();
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
index fc1e62a98..ccd797ae7 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
@@ -2,6 +2,8 @@
namespace OAuth2;
+use InvalidArgumentException;
+
/**
* Class to handle OAuth2 Responses in a graceful way. Use this interface
* to output the proper OAuth2 responses.
@@ -13,12 +15,34 @@ namespace OAuth2;
*/
class Response implements ResponseInterface
{
+ /**
+ * @var string
+ */
public $version;
+
+ /**
+ * @var int
+ */
protected $statusCode = 200;
+
+ /**
+ * @var string
+ */
protected $statusText;
+
+ /**
+ * @var array
+ */
protected $parameters = array();
+
+ /**
+ * @var array
+ */
protected $httpHeaders = array();
+ /**
+ * @var array
+ */
public static $statusTexts = array(
100 => 'Continue',
101 => 'Switching Protocols',
@@ -63,6 +87,11 @@ class Response implements ResponseInterface
505 => 'HTTP Version Not Supported',
);
+ /**
+ * @param array $parameters
+ * @param int $statusCode
+ * @param array $headers
+ */
public function __construct($parameters = array(), $statusCode = 200, $headers = array())
{
$this->setParameters($parameters);
@@ -102,76 +131,128 @@ class Response implements ResponseInterface
return sprintf("%s: %s\n", $name, $value);
}
+ /**
+ * @return int
+ */
public function getStatusCode()
{
return $this->statusCode;
}
+ /**
+ * @param int $statusCode
+ * @param string $text
+ * @throws InvalidArgumentException
+ */
public function setStatusCode($statusCode, $text = null)
{
$this->statusCode = (int) $statusCode;
if ($this->isInvalid()) {
- throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $statusCode));
+ throw new InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $statusCode));
}
$this->statusText = false === $text ? '' : (null === $text ? self::$statusTexts[$this->statusCode] : $text);
}
+ /**
+ * @return string
+ */
public function getStatusText()
{
return $this->statusText;
}
+ /**
+ * @return array
+ */
public function getParameters()
{
return $this->parameters;
}
+ /**
+ * @param array $parameters
+ */
public function setParameters(array $parameters)
{
$this->parameters = $parameters;
}
+ /**
+ * @param array $parameters
+ */
public function addParameters(array $parameters)
{
$this->parameters = array_merge($this->parameters, $parameters);
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function getParameter($name, $default = null)
{
return isset($this->parameters[$name]) ? $this->parameters[$name] : $default;
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setParameter($name, $value)
{
$this->parameters[$name] = $value;
}
+ /**
+ * @param array $httpHeaders
+ */
public function setHttpHeaders(array $httpHeaders)
{
$this->httpHeaders = $httpHeaders;
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setHttpHeader($name, $value)
{
$this->httpHeaders[$name] = $value;
}
+ /**
+ * @param array $httpHeaders
+ */
public function addHttpHeaders(array $httpHeaders)
{
$this->httpHeaders = array_merge($this->httpHeaders, $httpHeaders);
}
+ /**
+ * @return array
+ */
public function getHttpHeaders()
{
return $this->httpHeaders;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function getHttpHeader($name, $default = null)
{
return isset($this->httpHeaders[$name]) ? $this->httpHeaders[$name] : $default;
}
+ /**
+ * @param string $format
+ * @return mixed
+ * @throws InvalidArgumentException
+ */
public function getResponseBody($format = 'json')
{
switch ($format) {
@@ -187,10 +268,13 @@ class Response implements ResponseInterface
return $xml->asXML();
}
- throw new \InvalidArgumentException(sprintf('The format %s is not supported', $format));
+ throw new InvalidArgumentException(sprintf('The format %s is not supported', $format));
}
+ /**
+ * @param string $format
+ */
public function send($format = 'json')
{
// headers have already been sent by the developer
@@ -215,6 +299,14 @@ class Response implements ResponseInterface
echo $this->getResponseBody($format);
}
+ /**
+ * @param int $statusCode
+ * @param string $error
+ * @param string $errorDescription
+ * @param string $errorUri
+ * @return mixed
+ * @throws InvalidArgumentException
+ */
public function setError($statusCode, $error, $errorDescription = null, $errorUri = null)
{
$parameters = array(
@@ -239,14 +331,24 @@ class Response implements ResponseInterface
$this->addHttpHeaders($httpHeaders);
if (!$this->isClientError() && !$this->isServerError()) {
- throw new \InvalidArgumentException(sprintf('The HTTP status code is not an error ("%s" given).', $statusCode));
+ throw new InvalidArgumentException(sprintf('The HTTP status code is not an error ("%s" given).', $statusCode));
}
}
+ /**
+ * @param int $statusCode
+ * @param string $url
+ * @param string $state
+ * @param string $error
+ * @param string $errorDescription
+ * @param string $errorUri
+ * @return mixed
+ * @throws InvalidArgumentException
+ */
public function setRedirect($statusCode, $url, $state = null, $error = null, $errorDescription = null, $errorUri = null)
{
if (empty($url)) {
- throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
+ throw new InvalidArgumentException('Cannot redirect to an empty URL.');
}
$parameters = array();
@@ -271,15 +373,16 @@ class Response implements ResponseInterface
$this->addHttpHeaders(array('Location' => $url));
if (!$this->isRedirection()) {
- throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $statusCode));
+ throw new InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $statusCode));
}
}
- // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
/**
* @return Boolean
*
* @api
+ *
+ * @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
*/
public function isInvalid()
{
@@ -336,8 +439,11 @@ class Response implements ResponseInterface
return $this->statusCode >= 500 && $this->statusCode < 600;
}
- /*
- * Functions from Symfony2 HttpFoundation - output pretty header
+ /**
+ * Function from Symfony2 HttpFoundation - output pretty header
+ *
+ * @param array $headers
+ * @return string
*/
private function getHttpHeadersAsString($headers)
{
@@ -357,11 +463,23 @@ class Response implements ResponseInterface
return $content;
}
+ /**
+ * Function from Symfony2 HttpFoundation - output pretty header
+ *
+ * @param string $name
+ * @return mixed
+ */
private function beautifyHeaderName($name)
{
return preg_replace_callback('/\-(.)/', array($this, 'beautifyCallback'), ucfirst($name));
}
+ /**
+ * Function from Symfony2 HttpFoundation - output pretty header
+ *
+ * @param array $match
+ * @return string
+ */
private function beautifyCallback($match)
{
return '-'.strtoupper($match[1]);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
index c99b5f7d1..fe920864a 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseInterface.php
@@ -6,19 +6,48 @@ namespace OAuth2;
* Interface which represents an object response. Meant to handle and display the proper OAuth2 Responses
* for errors and successes
*
- * @see OAuth2\Response
+ * @see \OAuth2\Response
*/
interface ResponseInterface
{
+ /**
+ * @param array $parameters
+ */
public function addParameters(array $parameters);
+ /**
+ * @param array $httpHeaders
+ */
public function addHttpHeaders(array $httpHeaders);
+ /**
+ * @param int $statusCode
+ */
public function setStatusCode($statusCode);
+ /**
+ * @param int $statusCode
+ * @param string $name
+ * @param string $description
+ * @param string $uri
+ * @return mixed
+ */
public function setError($statusCode, $name, $description = null, $uri = null);
+ /**
+ * @param int $statusCode
+ * @param string $url
+ * @param string $state
+ * @param string $error
+ * @param string $errorDescription
+ * @param string $errorUri
+ * @return mixed
+ */
public function setRedirect($statusCode, $url, $state = null, $error = null, $errorDescription = null, $errorUri = null);
+ /**
+ * @param string $name
+ * @return mixed
+ */
public function getParameter($name);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
index 98f51218f..e836a3447 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessToken.php
@@ -4,28 +4,39 @@ namespace OAuth2\ResponseType;
use OAuth2\Storage\AccessTokenInterface as AccessTokenStorageInterface;
use OAuth2\Storage\RefreshTokenInterface;
+use RuntimeException;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AccessToken implements AccessTokenInterface
{
+ /**
+ * @var AccessTokenInterface
+ */
protected $tokenStorage;
+
+ /**
+ * @var RefreshTokenInterface
+ */
protected $refreshStorage;
+
+ /**
+ * @var array
+ */
protected $config;
/**
- * @param OAuth2\Storage\AccessTokenInterface $tokenStorage REQUIRED Storage class for saving access token information
- * @param OAuth2\Storage\RefreshTokenInterface $refreshStorage OPTIONAL Storage class for saving refresh token information
- * @param array $config OPTIONAL Configuration options for the server
- * <code>
- * $config = array(
- * 'token_type' => 'bearer', // token type identifier
- * 'access_lifetime' => 3600, // time before access token expires
- * 'refresh_token_lifetime' => 1209600, // time before refresh token expires
- * );
- * </endcode>
+ * @param AccessTokenStorageInterface $tokenStorage - REQUIRED Storage class for saving access token information
+ * @param RefreshTokenInterface $refreshStorage - OPTIONAL Storage class for saving refresh token information
+ * @param array $config - OPTIONAL Configuration options for the server
+ * @code
+ * $config = array(
+ * 'token_type' => 'bearer', // token type identifier
+ * 'access_lifetime' => 3600, // time before access token expires
+ * 'refresh_token_lifetime' => 1209600, // time before refresh token expires
+ * );
+ * @endcode
*/
public function __construct(AccessTokenStorageInterface $tokenStorage, RefreshTokenInterface $refreshStorage = null, array $config = array())
{
@@ -39,6 +50,13 @@ class AccessToken implements AccessTokenInterface
), $config);
}
+ /**
+ * Get authorize response
+ *
+ * @param array $params
+ * @param mixed $user_id
+ * @return array
+ */
public function getAuthorizeResponse($params, $user_id = null)
{
// build the URL to redirect to
@@ -64,10 +82,11 @@ class AccessToken implements AccessTokenInterface
/**
* Handle the creation of access token, also issue refresh token if supported / desirable.
*
- * @param $client_id client identifier related to the access token.
- * @param $user_id user ID associated with the access token
- * @param $scope OPTIONAL scopes to be stored in space-separated string.
- * @param bool $includeRefreshToken if true, a new refresh_token will be added to the response
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user ID associated with the access token
+ * @param string $scope - OPTIONAL scopes to be stored in space-separated string.
+ * @param bool $includeRefreshToken - if true, a new refresh_token will be added to the response
+ * @return array
*
* @see http://tools.ietf.org/html/rfc6749#section-5
* @ingroup oauth2_section_5
@@ -107,13 +126,18 @@ class AccessToken implements AccessTokenInterface
* Implementing classes may want to override this function to implement
* other access token generation schemes.
*
- * @return
- * An unique access token.
+ * @return string - A unique access token.
*
* @ingroup oauth2_section_4
*/
protected function generateAccessToken()
{
+ if (function_exists('random_bytes')) {
+ $randomData = random_bytes(20);
+ if ($randomData !== false && strlen($randomData) === 20) {
+ return bin2hex($randomData);
+ }
+ }
if (function_exists('openssl_random_pseudo_bytes')) {
$randomData = openssl_random_pseudo_bytes(20);
if ($randomData !== false && strlen($randomData) === 20) {
@@ -144,8 +168,7 @@ class AccessToken implements AccessTokenInterface
* Implementing classes may want to override this function to implement
* other refresh token generation schemes.
*
- * @return
- * An unique refresh.
+ * @return string - A unique refresh token.
*
* @ingroup oauth2_section_4
* @see OAuth2::generateAccessToken()
@@ -162,6 +185,7 @@ class AccessToken implements AccessTokenInterface
*
* @param $token
* @param null $tokenTypeHint
+ * @throws RuntimeException
* @return boolean
*/
public function revokeToken($token, $tokenTypeHint = null)
@@ -174,7 +198,7 @@ class AccessToken implements AccessTokenInterface
/** @TODO remove in v2 */
if (!method_exists($this->tokenStorage, 'unsetAccessToken')) {
- throw new \RuntimeException(
+ throw new RuntimeException(
sprintf('Token storage %s must implement unsetAccessToken method', get_class($this->tokenStorage)
));
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
index 4bd3928d8..0e576df52 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AccessTokenInterface.php
@@ -3,7 +3,6 @@
namespace OAuth2\ResponseType;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
interface AccessTokenInterface extends ResponseTypeInterface
@@ -11,10 +10,10 @@ interface AccessTokenInterface extends ResponseTypeInterface
/**
* Handle the creation of access token, also issue refresh token if supported / desirable.
*
- * @param $client_id client identifier related to the access token.
- * @param $user_id user ID associated with the access token
- * @param $scope OPTONAL scopes to be stored in space-separated string.
- * @param bool $includeRefreshToken if true, a new refresh_token will be added to the response
+ * @param mixed $client_id - client identifier related to the access token.
+ * @param mixed $user_id - user ID associated with the access token
+ * @param string $scope - OPTONAL scopes to be stored in space-separated string.
+ * @param bool $includeRefreshToken - if true, a new refresh_token will be added to the response
*
* @see http://tools.ietf.org/html/rfc6749#section-5
* @ingroup oauth2_section_5
@@ -31,4 +30,4 @@ interface AccessTokenInterface extends ResponseTypeInterface
* @todo v2.0 include this method in interface. Omitted to maintain BC in v1.x
*/
//public function revokeToken($token, $tokenTypeHint);
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
index 52aeb4be5..b92c73cda 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCode.php
@@ -5,7 +5,6 @@ namespace OAuth2\ResponseType;
use OAuth2\Storage\AuthorizationCodeInterface as AuthorizationCodeStorageInterface;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class AuthorizationCode implements AuthorizationCodeInterface
@@ -85,7 +84,9 @@ class AuthorizationCode implements AuthorizationCodeInterface
protected function generateAuthorizationCode()
{
$tokenLen = 40;
- if (function_exists('openssl_random_pseudo_bytes')) {
+ if (function_exists('random_bytes')) {
+ $randomData = random_bytes(100);
+ } elseif (function_exists('openssl_random_pseudo_bytes')) {
$randomData = openssl_random_pseudo_bytes(100);
} elseif (function_exists('mcrypt_create_iv')) {
$randomData = mcrypt_create_iv(100, MCRYPT_DEV_URANDOM);
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
index df777e221..4f0a29df4 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/AuthorizationCodeInterface.php
@@ -3,7 +3,6 @@
namespace OAuth2\ResponseType;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
interface AuthorizationCodeInterface extends ResponseTypeInterface
@@ -17,11 +16,12 @@ interface AuthorizationCodeInterface extends ResponseTypeInterface
/**
* Handle the creation of the authorization code.
*
- * @param $client_id client identifier related to the authorization code
- * @param $user_id user id associated with the authorization code
- * @param $redirect_uri an absolute URI to which the authorization server will redirect the
- * user-agent to when the end-user authorization step is completed.
- * @param $scope OPTIONAL scopes to be stored in space-separated string.
+ * @param mixed $client_id - Client identifier related to the authorization code
+ * @param mixed $user_id - User ID associated with the authorization code
+ * @param string $redirect_uri - An absolute URI to which the authorization server will redirect the
+ * user-agent to when the end-user authorization step is completed.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
+ * @return string
*
* @see http://tools.ietf.org/html/rfc6749#section-4
* @ingroup oauth2_section_4
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
index 3942fe41e..0af9705ff 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
@@ -10,7 +10,6 @@ use OAuth2\Storage\PublicKeyInterface;
use OAuth2\Storage\Memory;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class JwtAccessToken extends AccessToken
@@ -19,10 +18,13 @@ class JwtAccessToken extends AccessToken
protected $encryptionUtil;
/**
- * @param $config
- * - store_encrypted_token_string (bool true)
- * whether the entire encrypted string is stored,
- * or just the token ID is stored
+ * @param PublicKeyInterface $publicKeyStorage -
+ * @param AccessTokenStorageInterface $tokenStorage -
+ * @param RefreshTokenInterface $refreshStorage -
+ * @param array $config - array with key store_encrypted_token_string (bool true)
+ * whether the entire encrypted string is stored,
+ * or just the token ID is stored
+ * @param EncryptionInterface $encryptionUtil -
*/
public function __construct(PublicKeyInterface $publicKeyStorage = null, AccessTokenStorageInterface $tokenStorage = null, RefreshTokenInterface $refreshStorage = null, array $config = array(), EncryptionInterface $encryptionUtil = null)
{
@@ -45,46 +47,31 @@ class JwtAccessToken extends AccessToken
/**
* Handle the creation of access token, also issue refresh token if supported / desirable.
*
- * @param $client_id
- * Client identifier related to the access token.
- * @param $user_id
- * User ID associated with the access token
- * @param $scope
- * (optional) Scopes to be stored in space-separated string.
- * @param bool $includeRefreshToken
- * If true, a new refresh_token will be added to the response
+ * @param mixed $client_id - Client identifier related to the access token.
+ * @param mixed $user_id - User ID associated with the access token
+ * @param string $scope - (optional) Scopes to be stored in space-separated string.
+ * @param bool $includeRefreshToken - If true, a new refresh_token will be added to the response
+ * @return array - The access token
*
* @see http://tools.ietf.org/html/rfc6749#section-5
* @ingroup oauth2_section_5
*/
public function createAccessToken($client_id, $user_id, $scope = null, $includeRefreshToken = true)
{
- // token to encrypt
- $expires = time() + $this->config['access_lifetime'];
- $id = $this->generateAccessToken();
- $jwtAccessToken = array(
- 'id' => $id, // for BC (see #591)
- 'jti' => $id,
- 'iss' => $this->config['issuer'],
- 'aud' => $client_id,
- 'sub' => $user_id,
- 'exp' => $expires,
- 'iat' => time(),
- 'token_type' => $this->config['token_type'],
- 'scope' => $scope
- );
+ // payload to encrypt
+ $payload = $this->createPayload($client_id, $user_id, $scope);
/*
- * Encode the token data into a single access_token string
+ * Encode the payload data into a single JWT access_token string
*/
- $access_token = $this->encodeToken($jwtAccessToken, $client_id);
+ $access_token = $this->encodeToken($payload, $client_id);
/*
* Save the token to a secondary storage. This is implemented on the
* OAuth2\Storage\JwtAccessToken side, and will not actually store anything,
* if no secondary storage has been supplied
*/
- $token_to_store = $this->config['store_encrypted_token_string'] ? $access_token : $jwtAccessToken['id'];
+ $token_to_store = $this->config['store_encrypted_token_string'] ? $access_token : $payload['id'];
$this->tokenStorage->setAccessToken($token_to_store, $client_id, $user_id, $this->config['access_lifetime'] ? time() + $this->config['access_lifetime'] : null, $scope);
// token to return to the client
@@ -114,6 +101,11 @@ class JwtAccessToken extends AccessToken
return $token;
}
+ /**
+ * @param array $token
+ * @param mixed $client_id
+ * @return mixed
+ */
protected function encodeToken(array $token, $client_id = null)
{
$private_key = $this->publicKeyStorage->getPrivateKey($client_id);
@@ -121,4 +113,31 @@ class JwtAccessToken extends AccessToken
return $this->encryptionUtil->encode($token, $private_key, $algorithm);
}
+
+ /**
+ * This function can be used to create custom JWT payloads
+ *
+ * @param mixed $client_id - Client identifier related to the access token.
+ * @param mixed $user_id - User ID associated with the access token
+ * @param string $scope - (optional) Scopes to be stored in space-separated string.
+ * @return array - The access token
+ */
+ protected function createPayload($client_id, $user_id, $scope = null)
+ {
+ // token to encrypt
+ $expires = time() + $this->config['access_lifetime'];
+ $id = $this->generateAccessToken();
+
+ return array(
+ 'id' => $id, // for BC (see #591)
+ 'jti' => $id,
+ 'iss' => $this->config['issuer'],
+ 'aud' => $client_id,
+ 'sub' => $user_id,
+ 'exp' => $expires,
+ 'iat' => time(),
+ 'token_type' => $this->config['token_type'],
+ 'scope' => $scope
+ );
+ }
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
index f8e26a5b0..a27156580 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/ResponseTypeInterface.php
@@ -4,5 +4,10 @@ namespace OAuth2\ResponseType;
interface ResponseTypeInterface
{
+ /**
+ * @param array $params
+ * @param mixed $user_id
+ * @return mixed
+ */
public function getAuthorizeResponse($params, $user_id = null);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
index c44350bfd..3ba6e5328 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Scope.php
@@ -2,19 +2,23 @@
namespace OAuth2;
+use InvalidArgumentException;
use OAuth2\Storage\Memory;
use OAuth2\Storage\ScopeInterface as ScopeStorageInterface;
/**
-* @see OAuth2\ScopeInterface
+* @see ScopeInterface
*/
class Scope implements ScopeInterface
{
protected $storage;
/**
- * @param mixed @storage
- * Either an array of supported scopes, or an instance of OAuth2\Storage\ScopeInterface
+ * Constructor
+ *
+ * @param mixed $storage - Either an array of supported scopes, or an instance of OAuth2\Storage\ScopeInterface
+ *
+ * @throws InvalidArgumentException
*/
public function __construct($storage = null)
{
@@ -23,7 +27,7 @@ class Scope implements ScopeInterface
}
if (!$storage instanceof ScopeStorageInterface) {
- throw new \InvalidArgumentException("Argument 1 to OAuth2\Scope must be null, an array, or instance of OAuth2\Storage\ScopeInterface");
+ throw new InvalidArgumentException("Argument 1 to OAuth2\Scope must be null, an array, or instance of OAuth2\Storage\ScopeInterface");
}
$this->storage = $storage;
@@ -32,12 +36,10 @@ class Scope implements ScopeInterface
/**
* Check if everything in required scope is contained in available scope.
*
- * @param $required_scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if everything in required scope is contained in available scope,
- * and FALSE if it isn't.
+ * @param string $required_scope - A space-separated string of scopes.
+ * @param string $available_scope - A space-separated string of scopes.
+ * @return bool - TRUE if everything in required scope is contained in available scope and FALSE
+ * if it isn't.
*
* @see http://tools.ietf.org/html/rfc6749#section-7
*
@@ -54,11 +56,8 @@ class Scope implements ScopeInterface
/**
* Check if the provided scope exists in storage.
*
- * @param $scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if it exists, FALSE otherwise.
+ * @param string $scope - A space-separated string of scopes.
+ * @return bool - TRUE if it exists, FALSE otherwise.
*/
public function scopeExists($scope)
{
@@ -76,12 +75,20 @@ class Scope implements ScopeInterface
}
}
+ /**
+ * @param RequestInterface $request
+ * @return string
+ */
public function getScopeFromRequest(RequestInterface $request)
{
// "scope" is valid if passed in either POST or QUERY
return $request->request('scope', $request->query('scope'));
}
+ /**
+ * @param null $client_id
+ * @return mixed
+ */
public function getDefaultScope($client_id = null)
{
return $this->storage->getDefaultScope($client_id);
@@ -93,8 +100,7 @@ class Scope implements ScopeInterface
* In case OpenID Connect is used, these scopes must include:
* 'openid', offline_access'.
*
- * @return
- * An array of reserved scopes.
+ * @return array - An array of reserved scopes.
*/
public function getReservedScopes()
{
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
index 5b60f9aee..f65cfa7bd 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ScopeInterface.php
@@ -7,19 +7,17 @@ use OAuth2\Storage\ScopeInterface as ScopeStorageInterface;
/**
* Class to handle scope implementation logic
*
- * @see OAuth2\Storage\ScopeInterface
+ * @see \OAuth2\Storage\ScopeInterface
*/
interface ScopeInterface extends ScopeStorageInterface
{
/**
* Check if everything in required scope is contained in available scope.
*
- * @param $required_scope
- * A space-separated string of scopes.
- *
- * @return
- * TRUE if everything in required scope is contained in available scope,
- * and FALSE if it isn't.
+ * @param string $required_scope - A space-separated string of scopes.
+ * @param string $available_scope - A space-separated string of scopes.
+ * @return boolean - TRUE if everything in required scope is contained in available scope and FALSE
+ * if it isn't.
*
* @see http://tools.ietf.org/html/rfc6749#section-7
*
@@ -30,11 +28,8 @@ interface ScopeInterface extends ScopeStorageInterface
/**
* Return scope info from request
*
- * @param OAuth2\RequestInterface
- * Request object to check
- *
- * @return
- * string representation of requested scope
+ * @param RequestInterface $request - Request object to check
+ * @return string - representation of requested scope
*/
public function getScopeFromRequest(RequestInterface $request);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
index 9cfcb83a5..62ae8970d 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
@@ -30,25 +30,28 @@ use OAuth2\GrantType\UserCredentials;
use OAuth2\GrantType\ClientCredentials;
use OAuth2\GrantType\RefreshToken;
use OAuth2\GrantType\AuthorizationCode;
+use OAuth2\Storage\ClientCredentialsInterface;
+use OAuth2\Storage\ClientInterface;
use OAuth2\Storage\JwtAccessToken as JwtAccessTokenStorage;
use OAuth2\Storage\JwtAccessTokenInterface;
+use InvalidArgumentException;
+use LogicException;
/**
* Server class for OAuth2
* This class serves as a convience class which wraps the other Controller classes
*
-* @see OAuth2\Controller\ResourceController
-* @see OAuth2\Controller\AuthorizeController
-* @see OAuth2\Controller\TokenController
+* @see \OAuth2\Controller\ResourceController
+* @see \OAuth2\Controller\AuthorizeController
+* @see \OAuth2\Controller\TokenController
*/
class Server implements ResourceControllerInterface,
AuthorizeControllerInterface,
TokenControllerInterface,
UserInfoControllerInterface
{
- // misc properties
/**
- * @var Response
+ * @var ResponseInterface
*/
protected $response;
@@ -62,7 +65,6 @@ class Server implements ResourceControllerInterface,
*/
protected $storages;
- // servers
/**
* @var AuthorizeControllerInterface
*/
@@ -83,17 +85,34 @@ class Server implements ResourceControllerInterface,
*/
protected $userInfoController;
- // config classes
- protected $grantTypes;
- protected $responseTypes;
+ /**
+ * @var array
+ */
+ protected $grantTypes = [];
+
+ /**
+ * @var array
+ */
+ protected $responseTypes = [];
+
+ /**
+ * @var TokenTypeInterface
+ */
protected $tokenType;
/**
* @var ScopeInterface
*/
protected $scopeUtil;
+
+ /**
+ * @var ClientAssertionTypeInterface
+ */
protected $clientAssertionType;
+ /**
+ * @var array
+ */
protected $storageMap = array(
'access_token' => 'OAuth2\Storage\AccessTokenInterface',
'authorization_code' => 'OAuth2\Storage\AuthorizationCodeInterface',
@@ -107,6 +126,9 @@ class Server implements ResourceControllerInterface,
'scope' => 'OAuth2\Storage\ScopeInterface',
);
+ /**
+ * @var array
+ */
protected $responseTypeMap = array(
'token' => 'OAuth2\ResponseType\AccessTokenInterface',
'code' => 'OAuth2\ResponseType\AuthorizationCodeInterface',
@@ -116,15 +138,15 @@ class Server implements ResourceControllerInterface,
);
/**
- * @param mixed $storage (array or OAuth2\Storage) - single object or array of objects implementing the
- * required storage types (ClientCredentialsInterface and AccessTokenInterface as a minimum)
- * @param array $config specify a different token lifetime, token header name, etc
- * @param array $grantTypes An array of OAuth2\GrantType\GrantTypeInterface to use for granting access tokens
- * @param array $responseTypes Response types to use. array keys should be "code" and and "token" for
- * Access Token and Authorization Code response types
- * @param \OAuth2\TokenType\TokenTypeInterface $tokenType The token type object to use. Valid token types are "bearer" and "mac"
- * @param \OAuth2\ScopeInterface $scopeUtil The scope utility class to use to validate scope
- * @param \OAuth2\ClientAssertionType\ClientAssertionTypeInterface $clientAssertionType The method in which to verify the client identity. Default is HttpBasic
+ * @param mixed $storage (array or OAuth2\Storage) - single object or array of objects implementing the
+ * required storage types (ClientCredentialsInterface and AccessTokenInterface as a minimum)
+ * @param array $config specify a different token lifetime, token header name, etc
+ * @param array $grantTypes An array of OAuth2\GrantType\GrantTypeInterface to use for granting access tokens
+ * @param array $responseTypes Response types to use. array keys should be "code" and "token" for
+ * Access Token and Authorization Code response types
+ * @param TokenTypeInterface $tokenType The token type object to use. Valid token types are "bearer" and "mac"
+ * @param ScopeInterface $scopeUtil The scope utility class to use to validate scope
+ * @param ClientAssertionTypeInterface $clientAssertionType The method in which to verify the client identity. Default is HttpBasic
*
* @ingroup oauth2_section_7
*/
@@ -172,6 +194,9 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @return AuthorizeControllerInterface
+ */
public function getAuthorizeController()
{
if (is_null($this->authorizeController)) {
@@ -181,6 +206,9 @@ class Server implements ResourceControllerInterface,
return $this->authorizeController;
}
+ /**
+ * @return TokenController
+ */
public function getTokenController()
{
if (is_null($this->tokenController)) {
@@ -190,6 +218,9 @@ class Server implements ResourceControllerInterface,
return $this->tokenController;
}
+ /**
+ * @return ResourceControllerInterface
+ */
public function getResourceController()
{
if (is_null($this->resourceController)) {
@@ -199,6 +230,9 @@ class Server implements ResourceControllerInterface,
return $this->resourceController;
}
+ /**
+ * @return UserInfoControllerInterface
+ */
public function getUserInfoController()
{
if (is_null($this->userInfoController)) {
@@ -209,8 +243,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param AuthorizeControllerInterface $authorizeController
*/
public function setAuthorizeController(AuthorizeControllerInterface $authorizeController)
@@ -219,8 +251,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param TokenControllerInterface $tokenController
*/
public function setTokenController(TokenControllerInterface $tokenController)
@@ -229,8 +259,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param ResourceControllerInterface $resourceController
*/
public function setResourceController(ResourceControllerInterface $resourceController)
@@ -239,8 +267,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param UserInfoControllerInterface $userInfoController
*/
public function setUserInfoController(UserInfoControllerInterface $userInfoController)
@@ -252,12 +278,8 @@ class Server implements ResourceControllerInterface,
* Return claims about the authenticated end-user.
* This would be called from the "/UserInfo" endpoint as defined in the spec.
*
- * @param $request - \OAuth2\RequestInterface
- * Request object to grant access token
- *
- * @param $response - \OAuth2\ResponseInterface
- * Response object containing error messages (failure) or user claims (success)
- *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object containing error messages (failure) or user claims (success)
* @return ResponseInterface
*
* @throws \InvalidArgumentException
@@ -278,12 +300,8 @@ class Server implements ResourceControllerInterface,
* This would be called from the "/token" endpoint as defined in the spec.
* Obviously, you can call your endpoint whatever you want.
*
- * @param $request - \OAuth2\RequestInterface
- * Request object to grant access token
- *
- * @param $response - \OAuth2\ResponseInterface
- * Response object containing error messages (failure) or access token (success)
- *
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object containing error messages (failure) or access token (success)
* @return ResponseInterface
*
* @throws \InvalidArgumentException
@@ -303,6 +321,11 @@ class Server implements ResourceControllerInterface,
return $this->response;
}
+ /**
+ * @param RequestInterface $request - Request object to grant access token
+ * @param ResponseInterface $response - Response object
+ * @return mixed
+ */
public function grantAccessToken(RequestInterface $request, ResponseInterface $response = null)
{
$this->response = is_null($response) ? new Response() : $response;
@@ -336,25 +359,18 @@ class Server implements ResourceControllerInterface,
* authorization server should call this function to redirect the user
* appropriately.
*
- * @param $request
- * The request should have the follow parameters set in the querystring:
- * - response_type: The requested response: an access token, an
- * authorization code, or both.
+ * @param RequestInterface $request - The request should have the follow parameters set in the querystring:
+ * - response_type: The requested response: an access token, an authorization code, or both.
* - client_id: The client identifier as described in Section 2.
- * - redirect_uri: An absolute URI to which the authorization server
- * will redirect the user-agent to when the end-user authorization
- * step is completed.
- * - scope: (optional) The scope of the resource request expressed as a
- * list of space-delimited strings.
- * - state: (optional) An opaque value used by the client to maintain
- * state between the request and callback.
- * @param ResponseInterface $response
- * @param $is_authorized
- * TRUE or FALSE depending on whether the user authorized the access.
- * @param $user_id
- * Identifier of user who authorized the client
+ * - redirect_uri: An absolute URI to which the authorization server will redirect the user-agent to when the
+ * end-user authorization step is completed.
+ * - scope: (optional) The scope of the resource request expressed as a list of space-delimited strings.
+ * - state: (optional) An opaque value used by the client to maintain state between the request and callback.
*
- * @return Response
+ * @param ResponseInterface $response - Response object
+ * @param bool $is_authorized - TRUE or FALSE depending on whether the user authorized the access.
+ * @param mixed $user_id - Identifier of user who authorized the client
+ * @return ResponseInterface
*
* @see http://tools.ietf.org/html/rfc6749#section-4
*
@@ -371,14 +387,17 @@ class Server implements ResourceControllerInterface,
/**
* Pull the authorization request data out of the HTTP request.
* - The redirect_uri is OPTIONAL as per draft 20. But your implementation can enforce it
- * by setting $config['enforce_redirect'] to true.
+ * by setting $config['enforce_redirect'] to true.
* - The state is OPTIONAL but recommended to enforce CSRF. Draft 21 states, however, that
- * CSRF protection is MANDATORY. You can enforce this by setting the $config['enforce_state'] to true.
+ * CSRF protection is MANDATORY. You can enforce this by setting the $config['enforce_state'] to true.
*
* The draft specifies that the parameters should be retrieved from GET, override the Response
* object to change this
*
- * @return
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @return bool
+ *
* The authorization parameters so the authorization server can prompt
* the user for approval if valid.
*
@@ -395,6 +414,12 @@ class Server implements ResourceControllerInterface,
return $value;
}
+ /**
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @param string $scope - Scope
+ * @return mixed
+ */
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response = null, $scope = null)
{
$this->response = is_null($response) ? new Response() : $response;
@@ -403,6 +428,11 @@ class Server implements ResourceControllerInterface,
return $value;
}
+ /**
+ * @param RequestInterface $request - Request object
+ * @param ResponseInterface $response - Response object
+ * @return mixed
+ */
public function getAccessTokenData(RequestInterface $request, ResponseInterface $response = null)
{
$this->response = is_null($response) ? new Response() : $response;
@@ -411,10 +441,14 @@ class Server implements ResourceControllerInterface,
return $value;
}
+ /**
+ * @param GrantTypeInterface $grantType
+ * @param mixed $identifier
+ */
public function addGrantType(GrantTypeInterface $grantType, $identifier = null)
{
if (!is_string($identifier)) {
- $identifier = $grantType->getQuerystringIdentifier();
+ $identifier = $grantType->getQueryStringIdentifier();
}
$this->grantTypes[$identifier] = $grantType;
@@ -428,11 +462,10 @@ class Server implements ResourceControllerInterface,
/**
* Set a storage object for the server
*
- * @param $storage
- * An object implementing one of the Storage interfaces
- * @param $key
- * If null, the storage is set to the key of each storage interface it implements
+ * @param object $storage - An object implementing one of the Storage interfaces
+ * @param mixed $key - If null, the storage is set to the key of each storage interface it implements
*
+ * @throws InvalidArgumentException
* @see storageMap
*/
public function addStorage($storage, $key = null)
@@ -446,11 +479,11 @@ class Server implements ResourceControllerInterface,
// special logic to handle "client" and "client_credentials" strangeness
if ($key === 'client' && !isset($this->storages['client_credentials'])) {
- if ($storage instanceof \OAuth2\Storage\ClientCredentialsInterface) {
+ if ($storage instanceof ClientCredentialsInterface) {
$this->storages['client_credentials'] = $storage;
}
} elseif ($key === 'client_credentials' && !isset($this->storages['client'])) {
- if ($storage instanceof \OAuth2\Storage\ClientInterface) {
+ if ($storage instanceof ClientInterface) {
$this->storages['client'] = $storage;
}
}
@@ -471,6 +504,12 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @param ResponseTypeInterface $responseType
+ * @param mixed $key
+ *
+ * @throws InvalidArgumentException
+ */
public function addResponseType(ResponseTypeInterface $responseType, $key = null)
{
$key = $this->normalizeResponseType($key);
@@ -497,6 +536,9 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @return ScopeInterface
+ */
public function getScopeUtil()
{
if (!$this->scopeUtil) {
@@ -508,8 +550,6 @@ class Server implements ResourceControllerInterface,
}
/**
- * every getter deserves a setter
- *
* @param ScopeInterface $scopeUtil
*/
public function setScopeUtil($scopeUtil)
@@ -517,6 +557,10 @@ class Server implements ResourceControllerInterface,
$this->scopeUtil = $scopeUtil;
}
+ /**
+ * @return AuthorizeControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultAuthorizeController()
{
if (!isset($this->storages['client'])) {
@@ -541,6 +585,10 @@ class Server implements ResourceControllerInterface,
return new AuthorizeController($this->storages['client'], $this->responseTypes, $config, $this->getScopeUtil());
}
+ /**
+ * @return TokenControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultTokenController()
{
if (0 == count($this->grantTypes)) {
@@ -562,7 +610,7 @@ class Server implements ResourceControllerInterface,
}
if (!isset($this->storages['client'])) {
- throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the token server');
+ throw new LogicException("You must supply a storage object implementing OAuth2\Storage\ClientInterface to use the token server");
}
$accessTokenResponseType = $this->getAccessTokenResponseType();
@@ -570,6 +618,10 @@ class Server implements ResourceControllerInterface,
return new TokenController($accessTokenResponseType, $this->storages['client'], $this->grantTypes, $this->clientAssertionType, $this->getScopeUtil());
}
+ /**
+ * @return ResourceControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultResourceController()
{
if ($this->config['use_jwt_access_tokens']) {
@@ -590,6 +642,10 @@ class Server implements ResourceControllerInterface,
return new ResourceController($this->tokenType, $this->storages['access_token'], $config, $this->getScopeUtil());
}
+ /**
+ * @return UserInfoControllerInterface
+ * @throws LogicException
+ */
protected function createDefaultUserInfoController()
{
if ($this->config['use_jwt_access_tokens']) {
@@ -614,6 +670,9 @@ class Server implements ResourceControllerInterface,
return new UserInfoController($this->tokenType, $this->storages['access_token'], $this->storages['user_claims'], $config, $this->getScopeUtil());
}
+ /**
+ * @return Bearer
+ */
protected function getDefaultTokenType()
{
$config = array_intersect_key($this->config, array_flip(explode(' ', 'token_param_name token_bearer_header_name')));
@@ -621,6 +680,10 @@ class Server implements ResourceControllerInterface,
return new Bearer($config);
}
+ /**
+ * @return array
+ * @throws LogicException
+ */
protected function getDefaultResponseTypes()
{
$responseTypes = array();
@@ -656,6 +719,10 @@ class Server implements ResourceControllerInterface,
return $responseTypes;
}
+ /**
+ * @return array
+ * @throws LogicException
+ */
protected function getDefaultGrantTypes()
{
$grantTypes = array();
@@ -692,6 +759,9 @@ class Server implements ResourceControllerInterface,
return $grantTypes;
}
+ /**
+ * @return AccessToken
+ */
protected function getAccessTokenResponseType()
{
if (isset($this->responseTypes['token'])) {
@@ -705,6 +775,9 @@ class Server implements ResourceControllerInterface,
return $this->createDefaultAccessTokenResponseType();
}
+ /**
+ * @return IdToken
+ */
protected function getIdTokenResponseType()
{
if (isset($this->responseTypes['id_token'])) {
@@ -714,6 +787,9 @@ class Server implements ResourceControllerInterface,
return $this->createDefaultIdTokenResponseType();
}
+ /**
+ * @return IdTokenToken
+ */
protected function getIdTokenTokenResponseType()
{
if (isset($this->responseTypes['id_token token'])) {
@@ -725,6 +801,9 @@ class Server implements ResourceControllerInterface,
/**
* For Resource Controller
+ *
+ * @return JwtAccessTokenStorage
+ * @throws LogicException
*/
protected function createDefaultJwtAccessTokenStorage()
{
@@ -741,6 +820,9 @@ class Server implements ResourceControllerInterface,
/**
* For Authorize and Token Controllers
+ *
+ * @return JwtAccessToken
+ * @throws LogicException
*/
protected function createDefaultJwtAccessTokenResponseType()
{
@@ -763,10 +845,14 @@ class Server implements ResourceControllerInterface,
return new JwtAccessToken($this->storages['public_key'], $tokenStorage, $refreshStorage, $config);
}
+ /**
+ * @return AccessToken
+ * @throws LogicException
+ */
protected function createDefaultAccessTokenResponseType()
{
if (!isset($this->storages['access_token'])) {
- throw new \LogicException('You must supply a response type implementing OAuth2\ResponseType\AccessTokenInterface, or a storage object implementing OAuth2\Storage\AccessTokenInterface to use the token server');
+ throw new LogicException("You must supply a response type implementing OAuth2\ResponseType\AccessTokenInterface, or a storage object implementing OAuth2\Storage\AccessTokenInterface to use the token server");
}
$refreshStorage = null;
@@ -780,13 +866,17 @@ class Server implements ResourceControllerInterface,
return new AccessToken($this->storages['access_token'], $refreshStorage, $config);
}
+ /**
+ * @return IdToken
+ * @throws LogicException
+ */
protected function createDefaultIdTokenResponseType()
{
if (!isset($this->storages['user_claims'])) {
- throw new \LogicException('You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use openid connect');
+ throw new LogicException("You must supply a storage object implementing OAuth2\OpenID\Storage\UserClaimsInterface to use openid connect");
}
if (!isset($this->storages['public_key'])) {
- throw new \LogicException('You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use openid connect');
+ throw new LogicException("You must supply a storage object implementing OAuth2\Storage\PublicKeyInterface to use openid connect");
}
$config = array_intersect_key($this->config, array_flip(explode(' ', 'issuer id_lifetime')));
@@ -794,11 +884,17 @@ class Server implements ResourceControllerInterface,
return new IdToken($this->storages['user_claims'], $this->storages['public_key'], $config);
}
+ /**
+ * @return IdTokenToken
+ */
protected function createDefaultIdTokenTokenResponseType()
{
return new IdTokenToken($this->getAccessTokenResponseType(), $this->getIdTokenResponseType());
}
+ /**
+ * @throws InvalidArgumentException
+ */
protected function validateOpenIdConnect()
{
$authCodeGrant = $this->getGrantType('authorization_code');
@@ -807,6 +903,10 @@ class Server implements ResourceControllerInterface,
}
}
+ /**
+ * @param string $name
+ * @return string
+ */
protected function normalizeResponseType($name)
{
// for multiple-valued response types - make them alphabetical
@@ -819,36 +919,60 @@ class Server implements ResourceControllerInterface,
return $name;
}
+ /**
+ * @return mixed
+ */
public function getResponse()
{
return $this->response;
}
+ /**
+ * @return array
+ */
public function getStorages()
{
return $this->storages;
}
+ /**
+ * @param string $name
+ * @return object|null
+ */
public function getStorage($name)
{
return isset($this->storages[$name]) ? $this->storages[$name] : null;
}
+ /**
+ * @return array
+ */
public function getGrantTypes()
{
return $this->grantTypes;
}
+ /**
+ * @param string $name
+ * @return object|null
+ */
public function getGrantType($name)
{
return isset($this->grantTypes[$name]) ? $this->grantTypes[$name] : null;
}
+ /**
+ * @return array
+ */
public function getResponseTypes()
{
return $this->responseTypes;
}
+ /**
+ * @param string $name
+ * @return object|null
+ */
public function getResponseType($name)
{
// for multiple-valued response types - make them alphabetical
@@ -857,23 +981,38 @@ class Server implements ResourceControllerInterface,
return isset($this->responseTypes[$name]) ? $this->responseTypes[$name] : null;
}
+ /**
+ * @return TokenTypeInterface
+ */
public function getTokenType()
{
return $this->tokenType;
}
+ /**
+ * @return ClientAssertionTypeInterface
+ */
public function getClientAssertionType()
{
return $this->clientAssertionType;
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setConfig($name, $value)
{
$this->config[$name] = $value;
}
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
public function getConfig($name, $default = null)
{
return isset($this->config[$name]) ? $this->config[$name] : $default;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
index 1819158af..22428f2c8 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AccessTokenInterface.php
@@ -15,17 +15,18 @@ interface AccessTokenInterface
*
* We need to retrieve access token data as we create and verify tokens.
*
- * @param $oauth_token
- * oauth_token to be check with.
+ * @param string $oauth_token - oauth_token to be check with.
*
- * @return
- * An associative array as below, and return NULL if the supplied oauth_token
- * is invalid:
- * - expires: Stored expiration in unix timestamp.
- * - client_id: (optional) Stored client identifier.
- * - user_id: (optional) Stored user identifier.
- * - scope: (optional) Stored scope values in space-separated string.
- * - id_token: (optional) Stored id_token (if "use_openid_connect" is true).
+ * @return array|null - An associative array as below, and return NULL if the supplied oauth_token is invalid:
+ * @code
+ * array(
+ * 'expires' => $expires, // Stored expiration in unix timestamp.
+ * 'client_id' => $client_id, // (optional) Stored client identifier.
+ * 'user_id' => $user_id, // (optional) Stored user identifier.
+ * 'scope' => $scope, // (optional) Stored scope values in space-separated string.
+ * 'id_token' => $id_token // (optional) Stored id_token (if "use_openid_connect" is true).
+ * );
+ * @endcode
*
* @ingroup oauth2_section_7
*/
@@ -36,11 +37,11 @@ interface AccessTokenInterface
*
* We need to store access token data as we create and verify tokens.
*
- * @param $oauth_token oauth_token to be stored.
- * @param $client_id client identifier to be stored.
- * @param $user_id user identifier to be stored.
- * @param int $expires expiration to be stored as a Unix timestamp.
- * @param string $scope OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $oauth_token - oauth_token to be stored.
+ * @param mixed $client_id - client identifier to be stored.
+ * @param mixed $user_id - user identifier to be stored.
+ * @param int $expires - expiration to be stored as a Unix timestamp.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
*
* @ingroup oauth2_section_4
*/
@@ -61,4 +62,4 @@ interface AccessTokenInterface
* @todo v2.0 include this method in interface. Omitted to maintain BC in v1.x
*/
//public function unsetAccessToken($access_token);
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
index edc7c70e5..2dbc138ac 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/AuthorizationCodeInterface.php
@@ -59,12 +59,12 @@ interface AuthorizationCodeInterface
*
* Required for OAuth2::GRANT_TYPE_AUTH_CODE.
*
- * @param string $code Authorization code to be stored.
- * @param mixed $client_id Client identifier to be stored.
- * @param mixed $user_id User identifier to be stored.
- * @param string $redirect_uri Redirect URI(s) to be stored in a space-separated string.
- * @param int $expires Expiration to be stored as a Unix timestamp.
- * @param string $scope OPTIONAL Scopes to be stored in space-separated string.
+ * @param string $code - Authorization code to be stored.
+ * @param mixed $client_id - Client identifier to be stored.
+ * @param mixed $user_id - User identifier to be stored.
+ * @param string $redirect_uri - Redirect URI(s) to be stored in a space-separated string.
+ * @param int $expires - Expiration to be stored as a Unix timestamp.
+ * @param string $scope - OPTIONAL Scopes to be stored in space-separated string.
*
* @ingroup oauth2_section_4
*/
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
index c5048c08d..e60e9d3ad 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Cassandra.php
@@ -7,24 +7,25 @@ use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;
use OAuth2\OpenID\Storage\UserClaimsInterface;
use OAuth2\OpenID\Storage\AuthorizationCodeInterface as OpenIDAuthorizationCodeInterface;
+use InvalidArgumentException;
/**
* Cassandra storage for all storage types
*
- * To use, install "thobbs/phpcassa" via composer
+ * To use, install "thobbs/phpcassa" via composer:
* <code>
- * composer require thobbs/phpcassa:dev-master
+ * composer require thobbs/phpcassa:dev-master
* </code>
*
- * Once this is done, instantiate the
+ * Once this is done, instantiate the connection:
* <code>
- * $cassandra = new \phpcassa\Connection\ConnectionPool('oauth2_server', array('127.0.0.1:9160'));
+ * $cassandra = new \phpcassa\Connection\ConnectionPool('oauth2_server', array('127.0.0.1:9160'));
* </code>
*
* Then, register the storage client:
* <code>
- * $storage = new OAuth2\Storage\Cassandra($cassandra);
- * $storage->setClientDetails($client_id, $client_secret, $redirect_uri);
+ * $storage = new OAuth2\Storage\Cassandra($cassandra);
+ * $storage->setClientDetails($client_id, $client_secret, $redirect_uri);
* </code>
*
* @see test/lib/OAuth2/Storage/Bootstrap::getCassandraStorage
@@ -43,17 +44,23 @@ class Cassandra implements AuthorizationCodeInterface,
private $cache;
- /* The cassandra client */
+ /**
+ * @var ConnectionPool
+ */
protected $cassandra;
- /* Configuration array */
+ /**
+ * @var array
+ */
protected $config;
/**
* Cassandra Storage! uses phpCassa
*
- * @param \phpcassa\ConnectionPool $cassandra
- * @param array $config
+ * @param ConnectionPool|array $connection
+ * @param array $config
+ *
+ * @throws InvalidArgumentException
*/
public function __construct($connection = array(), array $config = array())
{
@@ -61,7 +68,7 @@ class Cassandra implements AuthorizationCodeInterface,
$this->cassandra = $connection;
} else {
if (!is_array($connection)) {
- throw new \InvalidArgumentException('First argument to OAuth2\Storage\Cassandra must be an instance of phpcassa\Connection\ConnectionPool or a configuration array');
+ throw new InvalidArgumentException('First argument to OAuth2\Storage\Cassandra must be an instance of phpcassa\Connection\ConnectionPool or a configuration array');
}
$connection = array_merge(array(
'keyspace' => 'oauth2',
@@ -87,6 +94,10 @@ class Cassandra implements AuthorizationCodeInterface,
), $config);
}
+ /**
+ * @param $key
+ * @return bool|mixed
+ */
protected function getValue($key)
{
if (isset($this->cache[$key])) {
@@ -104,6 +115,12 @@ class Cassandra implements AuthorizationCodeInterface,
return json_decode($value, true);
}
+ /**
+ * @param $key
+ * @param $value
+ * @param int $expire
+ * @return bool
+ */
protected function setValue($key, $value, $expire = 0)
{
$this->cache[$key] = $value;
@@ -131,6 +148,10 @@ class Cassandra implements AuthorizationCodeInterface,
return true;
}
+ /**
+ * @param $key
+ * @return bool
+ */
protected function expireValue($key)
{
unset($this->cache[$key]);
@@ -151,12 +172,25 @@ class Cassandra implements AuthorizationCodeInterface,
return false;
}
- /* AuthorizationCodeInterface */
+ /**
+ * @param string $code
+ * @return bool|mixed
+ */
public function getAuthorizationCode($code)
{
return $this->getValue($this->config['code_key'] . $code);
}
+ /**
+ * @param string $authorization_code
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $redirect_uri
+ * @param int $expires
+ * @param string $scope
+ * @param string $id_token
+ * @return bool
+ */
public function setAuthorizationCode($authorization_code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
{
return $this->setValue(
@@ -166,6 +200,10 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param string $code
+ * @return bool
+ */
public function expireAuthorizationCode($code)
{
$key = $this->config['code_key'] . $code;
@@ -174,7 +212,11 @@ class Cassandra implements AuthorizationCodeInterface,
return $this->expireValue($key);
}
- /* UserCredentialsInterface */
+ /**
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
public function checkUserCredentials($username, $password)
{
if ($user = $this->getUser($username)) {
@@ -184,7 +226,13 @@ class Cassandra implements AuthorizationCodeInterface,
return false;
}
- // plaintext passwords are bad! Override this for your application
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param array $user
+ * @param string $password
+ * @return bool
+ */
protected function checkPassword($user, $password)
{
return $user['password'] == $this->hashPassword($password);
@@ -196,11 +244,19 @@ class Cassandra implements AuthorizationCodeInterface,
return sha1($password);
}
+ /**
+ * @param string $username
+ * @return array|bool|false
+ */
public function getUserDetails($username)
{
return $this->getUser($username);
}
+ /**
+ * @param string $username
+ * @return array|bool
+ */
public function getUser($username)
{
if (!$userInfo = $this->getValue($this->config['user_key'] . $username)) {
@@ -213,6 +269,13 @@ class Cassandra implements AuthorizationCodeInterface,
), $userInfo);
}
+ /**
+ * @param string $username
+ * @param string $password
+ * @param string $first_name
+ * @param string $last_name
+ * @return bool
+ */
public function setUser($username, $password, $first_name = null, $last_name = null)
{
$password = $this->hashPassword($password);
@@ -223,7 +286,11 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
- /* ClientCredentialsInterface */
+ /**
+ * @param mixed $client_id
+ * @param string $client_secret
+ * @return bool
+ */
public function checkClientCredentials($client_id, $client_secret = null)
{
if (!$client = $this->getClientDetails($client_id)) {
@@ -234,6 +301,10 @@ class Cassandra implements AuthorizationCodeInterface,
&& $client['client_secret'] == $client_secret;
}
+ /**
+ * @param $client_id
+ * @return bool
+ */
public function isPublicClient($client_id)
{
if (!$client = $this->getClientDetails($client_id)) {
@@ -243,12 +314,24 @@ class Cassandra implements AuthorizationCodeInterface,
return empty($client['client_secret']);
}
- /* ClientInterface */
+ /**
+ * @param $client_id
+ * @return array|bool|mixed
+ */
public function getClientDetails($client_id)
{
return $this->getValue($this->config['client_key'] . $client_id);
}
+ /**
+ * @param $client_id
+ * @param null $client_secret
+ * @param null $redirect_uri
+ * @param null $grant_types
+ * @param null $scope
+ * @param null $user_id
+ * @return bool
+ */
public function setClientDetails($client_id, $client_secret = null, $redirect_uri = null, $grant_types = null, $scope = null, $user_id = null)
{
return $this->setValue(
@@ -257,6 +340,11 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param $client_id
+ * @param $grant_type
+ * @return bool
+ */
public function checkRestrictedGrantType($client_id, $grant_type)
{
$details = $this->getClientDetails($client_id);
@@ -270,12 +358,23 @@ class Cassandra implements AuthorizationCodeInterface,
return true;
}
- /* RefreshTokenInterface */
+ /**
+ * @param $refresh_token
+ * @return bool|mixed
+ */
public function getRefreshToken($refresh_token)
{
return $this->getValue($this->config['refresh_token_key'] . $refresh_token);
}
+ /**
+ * @param $refresh_token
+ * @param $client_id
+ * @param $user_id
+ * @param $expires
+ * @param null $scope
+ * @return bool
+ */
public function setRefreshToken($refresh_token, $client_id, $user_id, $expires, $scope = null)
{
return $this->setValue(
@@ -285,17 +384,32 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param $refresh_token
+ * @return bool
+ */
public function unsetRefreshToken($refresh_token)
{
return $this->expireValue($this->config['refresh_token_key'] . $refresh_token);
}
- /* AccessTokenInterface */
+ /**
+ * @param string $access_token
+ * @return array|bool|mixed|null
+ */
public function getAccessToken($access_token)
{
return $this->getValue($this->config['access_token_key'].$access_token);
}
+ /**
+ * @param string $access_token
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param int $expires
+ * @param null $scope
+ * @return bool
+ */
public function setAccessToken($access_token, $client_id, $user_id, $expires, $scope = null)
{
return $this->setValue(
@@ -305,12 +419,19 @@ class Cassandra implements AuthorizationCodeInterface,
);
}
+ /**
+ * @param $access_token
+ * @return bool
+ */
public function unsetAccessToken($access_token)
{
return $this->expireValue($this->config['access_token_key'] . $access_token);
}
- /* ScopeInterface */
+ /**
+ * @param $scope
+ * @return bool
+ */
public function scopeExists($scope)
{
$scope = explode(' ', $scope);
@@ -322,6 +443,10 @@ class Cassandra implements AuthorizationCodeInterface,
return (count(array_diff($scope, $supportedScope)) == 0);
}
+ /**
+ * @param null $client_id
+ * @return bool|mixed
+ */
public function getDefaultScope($client_id = null)
{
if (is_null($client_id) || !$result = $this->getValue($this->config['scope_key'].'default:'.$client_id)) {
@@ -331,6 +456,13 @@ class Cassandra implements AuthorizationCodeInterface,
return $result;
}
+ /**
+ * @param $scope
+ * @param null $client_id
+ * @param string $type
+ * @return bool
+ * @throws \InvalidArgumentException
+ */
public function setScope($scope, $client_id = null, $type = 'supported')
{
if (!in_array($type, array('default', 'supported'))) {
@@ -346,7 +478,11 @@ class Cassandra implements AuthorizationCodeInterface,
return $this->setValue($key, $scope);
}
- /*JWTBearerInterface */
+ /**
+ * @param $client_id
+ * @param $subject
+ * @return bool|null
+ */
public function getClientKey($client_id, $subject)
{
if (!$jwt = $this->getValue($this->config['jwt_key'] . $client_id)) {
@@ -360,6 +496,12 @@ class Cassandra implements AuthorizationCodeInterface,
return null;
}
+ /**
+ * @param $client_id
+ * @param $key
+ * @param null $subject
+ * @return bool
+ */
public function setClientKey($client_id, $key, $subject = null)
{
return $this->setValue($this->config['jwt_key'] . $client_id, array(
@@ -368,7 +510,10 @@ class Cassandra implements AuthorizationCodeInterface,
));
}
- /*ScopeInterface */
+ /**
+ * @param $client_id
+ * @return bool|null
+ */
public function getClientScope($client_id)
{
if (!$clientDetails = $this->getClientDetails($client_id)) {
@@ -382,19 +527,38 @@ class Cassandra implements AuthorizationCodeInterface,
return null;
}
+ /**
+ * @param $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expiration
+ * @param $jti
+ * @throws \Exception
+ */
public function getJti($client_id, $subject, $audience, $expiration, $jti)
{
//TODO: Needs cassandra implementation.
throw new \Exception('getJti() for the Cassandra driver is currently unimplemented.');
}
+ /**
+ * @param $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expiration
+ * @param $jti
+ * @throws \Exception
+ */
public function setJti($client_id, $subject, $audience, $expiration, $jti)
{
//TODO: Needs cassandra implementation.
throw new \Exception('setJti() for the Cassandra driver is currently unimplemented.');
}
- /* PublicKeyInterface */
+ /**
+ * @param string $client_id
+ * @return mixed
+ */
public function getPublicKey($client_id = '')
{
$public_key = $this->getValue($this->config['public_key_key'] . $client_id);
@@ -407,6 +571,10 @@ class Cassandra implements AuthorizationCodeInterface,
}
}
+ /**
+ * @param string $client_id
+ * @return mixed
+ */
public function getPrivateKey($client_id = '')
{
$public_key = $this->getValue($this->config['public_key_key'] . $client_id);
@@ -419,6 +587,10 @@ class Cassandra implements AuthorizationCodeInterface,
}
}
+ /**
+ * @param null $client_id
+ * @return mixed|string
+ */
public function getEncryptionAlgorithm($client_id = null)
{
$public_key = $this->getValue($this->config['public_key_key'] . $client_id);
@@ -433,7 +605,11 @@ class Cassandra implements AuthorizationCodeInterface,
return 'RS256';
}
- /* UserClaimsInterface */
+ /**
+ * @param mixed $user_id
+ * @param string $claims
+ * @return array|bool
+ */
public function getUserClaims($user_id, $claims)
{
$userDetails = $this->getUserDetails($user_id);
@@ -460,6 +636,11 @@ class Cassandra implements AuthorizationCodeInterface,
return $userClaims;
}
+ /**
+ * @param $claim
+ * @param $userDetails
+ * @return array
+ */
protected function getUserClaim($claim, $userDetails)
{
$userClaims = array();
@@ -476,5 +657,4 @@ class Cassandra implements AuthorizationCodeInterface,
return $userClaims;
}
-
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
index 1eb55f027..9e8148b6b 100755..100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/CouchbaseDB.php
@@ -328,4 +328,4 @@ class CouchbaseDB implements AuthorizationCodeInterface,
//TODO: Needs couchbase implementation.
throw new \Exception('setJti() for the Couchbase driver is currently unimplemented.');
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
index 8347ab258..a54cb3712 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/DynamoDB.php
@@ -537,4 +537,4 @@ class DynamoDB implements
{
return null !== $value && '' !== $value;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
index 75b49d301..6ccacd6d9 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/JwtAccessToken.php
@@ -6,7 +6,6 @@ use OAuth2\Encryption\EncryptionInterface;
use OAuth2\Encryption\Jwt;
/**
- *
* @author Brent Shaffer <bshafs at gmail dot com>
*/
class JwtAccessToken implements JwtAccessTokenInterface
@@ -85,4 +84,4 @@ class JwtAccessToken implements JwtAccessTokenInterface
return $tokenData;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
index 42d833ccb..2c60b71ce 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Memory.php
@@ -378,4 +378,4 @@ class Memory implements AuthorizationCodeInterface,
return 'RS256';
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
index ae5107e29..074cee447 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
@@ -4,6 +4,7 @@ namespace OAuth2\Storage;
use OAuth2\OpenID\Storage\UserClaimsInterface;
use OAuth2\OpenID\Storage\AuthorizationCodeInterface as OpenIDAuthorizationCodeInterface;
+use InvalidArgumentException;
/**
* Simple PDO storage for all storage types
@@ -29,9 +30,22 @@ class Pdo implements
UserClaimsInterface,
OpenIDAuthorizationCodeInterface
{
+ /**
+ * @var \PDO
+ */
protected $db;
+
+ /**
+ * @var array
+ */
protected $config;
+ /**
+ * @param mixed $connection
+ * @param array $config
+ *
+ * @throws InvalidArgumentException
+ */
public function __construct($connection, $config = array())
{
if (!$connection instanceof \PDO) {
@@ -70,7 +84,11 @@ class Pdo implements
), $config);
}
- /* OAuth2\Storage\ClientCredentialsInterface */
+ /**
+ * @param string $client_id
+ * @param null|string $client_secret
+ * @return bool
+ */
public function checkClientCredentials($client_id, $client_secret = null)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where client_id = :client_id', $this->config['client_table']));
@@ -81,6 +99,10 @@ class Pdo implements
return $result && $result['client_secret'] == $client_secret;
}
+ /**
+ * @param string $client_id
+ * @return bool
+ */
public function isPublicClient($client_id)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where client_id = :client_id', $this->config['client_table']));
@@ -93,7 +115,10 @@ class Pdo implements
return empty($result['client_secret']);
}
- /* OAuth2\Storage\ClientInterface */
+ /**
+ * @param string $client_id
+ * @return array|mixed
+ */
public function getClientDetails($client_id)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where client_id = :client_id', $this->config['client_table']));
@@ -102,6 +127,15 @@ class Pdo implements
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
+ /**
+ * @param string $client_id
+ * @param null|string $client_secret
+ * @param null|string $redirect_uri
+ * @param null|array $grant_types
+ * @param null|string $scope
+ * @param null|string $user_id
+ * @return bool
+ */
public function setClientDetails($client_id, $client_secret = null, $redirect_uri = null, $grant_types = null, $scope = null, $user_id = null)
{
// if it exists, update it.
@@ -114,6 +148,11 @@ class Pdo implements
return $stmt->execute(compact('client_id', 'client_secret', 'redirect_uri', 'grant_types', 'scope', 'user_id'));
}
+ /**
+ * @param $client_id
+ * @param $grant_type
+ * @return bool
+ */
public function checkRestrictedGrantType($client_id, $grant_type)
{
$details = $this->getClientDetails($client_id);
@@ -127,7 +166,10 @@ class Pdo implements
return true;
}
- /* OAuth2\Storage\AccessTokenInterface */
+ /**
+ * @param string $access_token
+ * @return array|bool|mixed|null
+ */
public function getAccessToken($access_token)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where access_token = :access_token', $this->config['access_token_table']));
@@ -141,6 +183,14 @@ class Pdo implements
return $token;
}
+ /**
+ * @param string $access_token
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param int $expires
+ * @param string $scope
+ * @return bool
+ */
public function setAccessToken($access_token, $client_id, $user_id, $expires, $scope = null)
{
// convert expires to datestring
@@ -156,6 +206,10 @@ class Pdo implements
return $stmt->execute(compact('access_token', 'client_id', 'user_id', 'expires', 'scope'));
}
+ /**
+ * @param $access_token
+ * @return bool
+ */
public function unsetAccessToken($access_token)
{
$stmt = $this->db->prepare(sprintf('DELETE FROM %s WHERE access_token = :access_token', $this->config['access_token_table']));
@@ -166,6 +220,10 @@ class Pdo implements
}
/* OAuth2\Storage\AuthorizationCodeInterface */
+ /**
+ * @param string $code
+ * @return mixed
+ */
public function getAuthorizationCode($code)
{
$stmt = $this->db->prepare(sprintf('SELECT * from %s where authorization_code = :code', $this->config['code_table']));
@@ -179,6 +237,16 @@ class Pdo implements
return $code;
}
+ /**
+ * @param string $code
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $redirect_uri
+ * @param int $expires
+ * @param string $scope
+ * @param string $id_token
+ * @return bool|mixed
+ */
public function setAuthorizationCode($code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
{
if (func_num_args() > 6) {
@@ -199,6 +267,16 @@ class Pdo implements
return $stmt->execute(compact('code', 'client_id', 'user_id', 'redirect_uri', 'expires', 'scope'));
}
+ /**
+ * @param string $code
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $redirect_uri
+ * @param string $expires
+ * @param string $scope
+ * @param string $id_token
+ * @return bool
+ */
private function setAuthorizationCodeWithIdToken($code, $client_id, $user_id, $redirect_uri, $expires, $scope = null, $id_token = null)
{
// convert expires to datestring
@@ -214,6 +292,10 @@ class Pdo implements
return $stmt->execute(compact('code', 'client_id', 'user_id', 'redirect_uri', 'expires', 'scope', 'id_token'));
}
+ /**
+ * @param string $code
+ * @return bool
+ */
public function expireAuthorizationCode($code)
{
$stmt = $this->db->prepare(sprintf('DELETE FROM %s WHERE authorization_code = :code', $this->config['code_table']));
@@ -221,7 +303,11 @@ class Pdo implements
return $stmt->execute(compact('code'));
}
- /* OAuth2\Storage\UserCredentialsInterface */
+ /**
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
public function checkUserCredentials($username, $password)
{
if ($user = $this->getUser($username)) {
@@ -231,12 +317,20 @@ class Pdo implements
return false;
}
+ /**
+ * @param string $username
+ * @return array|bool
+ */
public function getUserDetails($username)
{
return $this->getUser($username);
}
- /* UserClaimsInterface */
+ /**
+ * @param mixed $user_id
+ * @param string $claims
+ * @return array|bool
+ */
public function getUserClaims($user_id, $claims)
{
if (!$userDetails = $this->getUserDetails($user_id)) {
@@ -262,6 +356,11 @@ class Pdo implements
return $userClaims;
}
+ /**
+ * @param string $claim
+ * @param array $userDetails
+ * @return array
+ */
protected function getUserClaim($claim, $userDetails)
{
$userClaims = array();
@@ -275,7 +374,10 @@ class Pdo implements
return $userClaims;
}
- /* OAuth2\Storage\RefreshTokenInterface */
+ /**
+ * @param string $refresh_token
+ * @return bool|mixed
+ */
public function getRefreshToken($refresh_token)
{
$stmt = $this->db->prepare(sprintf('SELECT * FROM %s WHERE refresh_token = :refresh_token', $this->config['refresh_token_table']));
@@ -289,6 +391,14 @@ class Pdo implements
return $token;
}
+ /**
+ * @param string $refresh_token
+ * @param mixed $client_id
+ * @param mixed $user_id
+ * @param string $expires
+ * @param string $scope
+ * @return bool
+ */
public function setRefreshToken($refresh_token, $client_id, $user_id, $expires, $scope = null)
{
// convert expires to datestring
@@ -299,6 +409,10 @@ class Pdo implements
return $stmt->execute(compact('refresh_token', 'client_id', 'user_id', 'expires', 'scope'));
}
+ /**
+ * @param string $refresh_token
+ * @return bool
+ */
public function unsetRefreshToken($refresh_token)
{
$stmt = $this->db->prepare(sprintf('DELETE FROM %s WHERE refresh_token = :refresh_token', $this->config['refresh_token_table']));
@@ -308,7 +422,13 @@ class Pdo implements
return $stmt->rowCount() > 0;
}
- // plaintext passwords are bad! Override this for your application
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param array $user
+ * @param string $password
+ * @return bool
+ */
protected function checkPassword($user, $password)
{
return $user['password'] == $this->hashPassword($password);
@@ -320,6 +440,10 @@ class Pdo implements
return sha1($password);
}
+ /**
+ * @param string $username
+ * @return array|bool
+ */
public function getUser($username)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT * from %s where username=:username', $this->config['user_table']));
@@ -335,6 +459,15 @@ class Pdo implements
), $userInfo);
}
+ /**
+ * plaintext passwords are bad! Override this for your application
+ *
+ * @param string $username
+ * @param string $password
+ * @param string $firstName
+ * @param string $lastName
+ * @return bool
+ */
public function setUser($username, $password, $firstName = null, $lastName = null)
{
// do not store in plaintext
@@ -350,7 +483,10 @@ class Pdo implements
return $stmt->execute(compact('username', 'password', 'firstName', 'lastName'));
}
- /* ScopeInterface */
+ /**
+ * @param string $scope
+ * @return bool
+ */
public function scopeExists($scope)
{
$scope = explode(' ', $scope);
@@ -365,6 +501,10 @@ class Pdo implements
return false;
}
+ /**
+ * @param mixed $client_id
+ * @return null|string
+ */
public function getDefaultScope($client_id = null)
{
$stmt = $this->db->prepare(sprintf('SELECT scope FROM %s WHERE is_default=:is_default', $this->config['scope_table']));
@@ -381,7 +521,11 @@ class Pdo implements
return null;
}
- /* JWTBearerInterface */
+ /**
+ * @param mixed $client_id
+ * @param $subject
+ * @return string
+ */
public function getClientKey($client_id, $subject)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT public_key from %s where client_id=:client_id AND subject=:subject', $this->config['jwt_table']));
@@ -391,6 +535,10 @@ class Pdo implements
return $stmt->fetchColumn();
}
+ /**
+ * @param mixed $client_id
+ * @return bool|null
+ */
public function getClientScope($client_id)
{
if (!$clientDetails = $this->getClientDetails($client_id)) {
@@ -404,6 +552,14 @@ class Pdo implements
return null;
}
+ /**
+ * @param mixed $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expires
+ * @param $jti
+ * @return array|null
+ */
public function getJti($client_id, $subject, $audience, $expires, $jti)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT * FROM %s WHERE issuer=:client_id AND subject=:subject AND audience=:audience AND expires=:expires AND jti=:jti', $this->config['jti_table']));
@@ -423,6 +579,14 @@ class Pdo implements
return null;
}
+ /**
+ * @param mixed $client_id
+ * @param $subject
+ * @param $audience
+ * @param $expires
+ * @param $jti
+ * @return bool
+ */
public function setJti($client_id, $subject, $audience, $expires, $jti)
{
$stmt = $this->db->prepare(sprintf('INSERT INTO %s (issuer, subject, audience, expires, jti) VALUES (:client_id, :subject, :audience, :expires, :jti)', $this->config['jti_table']));
@@ -430,7 +594,10 @@ class Pdo implements
return $stmt->execute(compact('client_id', 'subject', 'audience', 'expires', 'jti'));
}
- /* PublicKeyInterface */
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPublicKey($client_id = null)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT public_key FROM %s WHERE client_id=:client_id OR client_id IS NULL ORDER BY client_id IS NOT NULL DESC', $this->config['public_key_table']));
@@ -441,6 +608,10 @@ class Pdo implements
}
}
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPrivateKey($client_id = null)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT private_key FROM %s WHERE client_id=:client_id OR client_id IS NULL ORDER BY client_id IS NOT NULL DESC', $this->config['public_key_table']));
@@ -451,6 +622,10 @@ class Pdo implements
}
}
+ /**
+ * @param mixed $client_id
+ * @return string
+ */
public function getEncryptionAlgorithm($client_id = null)
{
$stmt = $this->db->prepare($sql = sprintf('SELECT encryption_algorithm FROM %s WHERE client_id=:client_id OR client_id IS NULL ORDER BY client_id IS NOT NULL DESC', $this->config['public_key_table']));
@@ -467,6 +642,9 @@ class Pdo implements
* DDL to create OAuth2 database and tables for PDO storage
*
* @see https://github.com/dsquier/oauth2-server-php-mysql
+ *
+ * @param string $dbName
+ * @return string
*/
public function getBuildSql($dbName = 'oauth2_server_php')
{
@@ -481,73 +659,73 @@ class Pdo implements
PRIMARY KEY (client_id)
);
- CREATE TABLE {$this->config['access_token_table']} (
- access_token VARCHAR(40) NOT NULL,
- client_id VARCHAR(80) NOT NULL,
- user_id VARCHAR(80),
- expires TIMESTAMP NOT NULL,
- scope VARCHAR(4000),
- PRIMARY KEY (access_token)
- );
+ CREATE TABLE {$this->config['access_token_table']} (
+ access_token VARCHAR(40) NOT NULL,
+ client_id VARCHAR(80) NOT NULL,
+ user_id VARCHAR(80),
+ expires TIMESTAMP NOT NULL,
+ scope VARCHAR(4000),
+ PRIMARY KEY (access_token)
+ );
- CREATE TABLE {$this->config['code_table']} (
- authorization_code VARCHAR(40) NOT NULL,
- client_id VARCHAR(80) NOT NULL,
- user_id VARCHAR(80),
- redirect_uri VARCHAR(2000),
- expires TIMESTAMP NOT NULL,
- scope VARCHAR(4000),
- id_token VARCHAR(1000),
- PRIMARY KEY (authorization_code)
- );
+ CREATE TABLE {$this->config['code_table']} (
+ authorization_code VARCHAR(40) NOT NULL,
+ client_id VARCHAR(80) NOT NULL,
+ user_id VARCHAR(80),
+ redirect_uri VARCHAR(2000),
+ expires TIMESTAMP NOT NULL,
+ scope VARCHAR(4000),
+ id_token VARCHAR(1000),
+ PRIMARY KEY (authorization_code)
+ );
- CREATE TABLE {$this->config['refresh_token_table']} (
- refresh_token VARCHAR(40) NOT NULL,
- client_id VARCHAR(80) NOT NULL,
- user_id VARCHAR(80),
- expires TIMESTAMP NOT NULL,
- scope VARCHAR(4000),
- PRIMARY KEY (refresh_token)
- );
+ CREATE TABLE {$this->config['refresh_token_table']} (
+ refresh_token VARCHAR(40) NOT NULL,
+ client_id VARCHAR(80) NOT NULL,
+ user_id VARCHAR(80),
+ expires TIMESTAMP NOT NULL,
+ scope VARCHAR(4000),
+ PRIMARY KEY (refresh_token)
+ );
- CREATE TABLE {$this->config['user_table']} (
- username VARCHAR(80),
- password VARCHAR(80),
- first_name VARCHAR(80),
- last_name VARCHAR(80),
- email VARCHAR(80),
- email_verified BOOLEAN,
- scope VARCHAR(4000)
- );
+ CREATE TABLE {$this->config['user_table']} (
+ username VARCHAR(80),
+ password VARCHAR(80),
+ first_name VARCHAR(80),
+ last_name VARCHAR(80),
+ email VARCHAR(80),
+ email_verified BOOLEAN,
+ scope VARCHAR(4000)
+ );
- CREATE TABLE {$this->config['scope_table']} (
- scope VARCHAR(80) NOT NULL,
- is_default BOOLEAN,
- PRIMARY KEY (scope)
- );
+ CREATE TABLE {$this->config['scope_table']} (
+ scope VARCHAR(80) NOT NULL,
+ is_default BOOLEAN,
+ PRIMARY KEY (scope)
+ );
- CREATE TABLE {$this->config['jwt_table']} (
- client_id VARCHAR(80) NOT NULL,
- subject VARCHAR(80),
- public_key VARCHAR(2000) NOT NULL
- );
+ CREATE TABLE {$this->config['jwt_table']} (
+ client_id VARCHAR(80) NOT NULL,
+ subject VARCHAR(80),
+ public_key VARCHAR(2000) NOT NULL
+ );
- CREATE TABLE {$this->config['jti_table']} (
- issuer VARCHAR(80) NOT NULL,
- subject VARCHAR(80),
- audience VARCHAR(80),
- expires TIMESTAMP NOT NULL,
- jti VARCHAR(2000) NOT NULL
- );
+ CREATE TABLE {$this->config['jti_table']} (
+ issuer VARCHAR(80) NOT NULL,
+ subject VARCHAR(80),
+ audiance VARCHAR(80),
+ expires TIMESTAMP NOT NULL,
+ jti VARCHAR(2000) NOT NULL
+ );
- CREATE TABLE {$this->config['public_key_table']} (
- client_id VARCHAR(80),
- public_key VARCHAR(2000),
- private_key VARCHAR(2000),
- encryption_algorithm VARCHAR(100) DEFAULT 'RS256'
- )
-";
+ CREATE TABLE {$this->config['public_key_table']} (
+ client_id VARCHAR(80),
+ public_key VARCHAR(2000),
+ private_key VARCHAR(2000),
+ encryption_algorithm VARCHAR(100) DEFAULT 'RS256'
+ )
+ ";
return $sql;
}
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
index 108418d3a..a6dc49fb5 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/PublicKeyInterface.php
@@ -10,7 +10,21 @@ namespace OAuth2\Storage;
*/
interface PublicKeyInterface
{
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPublicKey($client_id = null);
+
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getPrivateKey($client_id = null);
+
+ /**
+ * @param mixed $client_id
+ * @return mixed
+ */
public function getEncryptionAlgorithm($client_id = null);
-}
+} \ No newline at end of file
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
index 6e0fd7bad..f550579e4 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/UserCredentialsInterface.php
@@ -37,15 +37,15 @@ interface UserCredentialsInterface
public function checkUserCredentials($username, $password);
/**
- * @return
- * ARRAY the associated "user_id" and optional "scope" values
- * This function MUST return FALSE if the requested user does not exist or is
- * invalid. "scope" is a space-separated list of restricted scopes.
+ * @param string $username - username to get details for
+ * @return array|false - the associated "user_id" and optional "scope" values
+ * This function MUST return FALSE if the requested user does not exist or is
+ * invalid. "scope" is a space-separated list of restricted scopes.
* @code
- * return array(
- * "user_id" => USER_ID, // REQUIRED user_id to be stored with the authorization code or access token
- * "scope" => SCOPE // OPTIONAL space-separated list of restricted scopes
- * );
+ * return array(
+ * "user_id" => USER_ID, // REQUIRED user_id to be stored with the authorization code or access token
+ * "scope" => SCOPE // OPTIONAL space-separated list of restricted scopes
+ * );
* @endcode
*/
public function getUserDetails($username);
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
index 5901bdc42..2cb292389 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/AutoloadTest.php
@@ -2,7 +2,9 @@
namespace OAuth2;
-class AutoloadTest extends \PHPUnit_Framework_TestCase
+use PHPUnit\Framework\TestCase;
+
+class AutoloadTest extends TestCase
{
public function testClassesExist()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
index 3bfc760e4..fe3553b23 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/AuthorizeControllerTest.php
@@ -10,8 +10,9 @@ use OAuth2\GrantType\AuthorizationCode;
use OAuth2\Request;
use OAuth2\Response;
use OAuth2\Request\TestRequest;
+use PHPUnit\Framework\TestCase;
-class AuthorizeControllerTest extends \PHPUnit_Framework_TestCase
+class AuthorizeControllerTest extends TestCase
{
public function testNoClientIdResponse()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
index b277514a5..cd54d239a 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/ResourceControllerTest.php
@@ -7,8 +7,9 @@ use OAuth2\Server;
use OAuth2\GrantType\AuthorizationCode;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class ResourceControllerTest extends \PHPUnit_Framework_TestCase
+class ResourceControllerTest extends TestCase
{
public function testNoAccessToken()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
index 4a217bd55..d18eaa6d7 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Controller/TokenControllerTest.php
@@ -10,8 +10,9 @@ use OAuth2\GrantType\UserCredentials;
use OAuth2\Scope;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class TokenControllerTest extends \PHPUnit_Framework_TestCase
+class TokenControllerTest extends TestCase
{
public function testNoGrantType()
{
@@ -271,6 +272,48 @@ class TokenControllerTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($response->getParameter('error_description'), 'The request method must be POST when revoking an access token');
}
+ public function testCanUseCrossOriginRequestForRevoke()
+ {
+ $server = $this->getTestServer();
+
+ $request = new TestRequest();
+ $request->setMethod('OPTIONS');
+
+ $server->handleRevokeRequest($request, $response = new Response());
+ $this->assertTrue($response instanceof Response);
+ $this->assertEquals(200, $response->getStatusCode(), var_export($response, 1));
+ $this->assertEquals($response->getHttpHeader('Allow'), 'POST, OPTIONS');
+ }
+
+ public function testInvalidRequestMethodForAccessToken()
+ {
+ $server = $this->getTestServer();
+
+ $request = new TestRequest();
+ $request->setQuery(array(
+ 'token_type_hint' => 'access_token'
+ ));
+
+ $server->handleTokenRequest($request, $response = new Response());
+ $this->assertTrue($response instanceof Response);
+ $this->assertEquals(405, $response->getStatusCode(), var_export($response, 1));
+ $this->assertEquals($response->getParameter('error'), 'invalid_request');
+ $this->assertEquals($response->getParameter('error_description'), 'The request method must be POST when requesting an access token');
+ }
+
+ public function testCanUseCrossOriginRequestForAccessToken()
+ {
+ $server = $this->getTestServer();
+
+ $request = new TestRequest();
+ $request->setMethod('OPTIONS');
+
+ $server->handleTokenRequest($request, $response = new Response());
+ $this->assertTrue($response instanceof Response);
+ $this->assertEquals(200, $response->getStatusCode(), var_export($response, 1));
+ $this->assertEquals($response->getHttpHeader('Allow'), 'POST, OPTIONS');
+ }
+
public function testCreateController()
{
$storage = Bootstrap::getInstance()->getMemoryStorage();
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
index d34136767..c7e92c053 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/FirebaseJwtTest.php
@@ -3,8 +3,9 @@
namespace OAuth2\Encryption;
use OAuth2\Storage\Bootstrap;
+use PHPUnit\Framework\TestCase;
-class FirebaseJwtTest extends \PHPUnit_Framework_TestCase
+class FirebaseJwtTest extends TestCase
{
private $privateKey;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
index 214eebac8..d73b4c923 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Encryption/JwtTest.php
@@ -3,8 +3,9 @@
namespace OAuth2\Encryption;
use OAuth2\Storage\Bootstrap;
+use PHPUnit\Framework\TestCase;
-class JwtTest extends \PHPUnit_Framework_TestCase
+class JwtTest extends TestCase
{
private $privateKey;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
index 356b8e53c..b2314ffc6 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/AuthorizationCodeTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class AuthorizationCodeTest extends \PHPUnit_Framework_TestCase
+class AuthorizationCodeTest extends TestCase
{
public function testNoCode()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
index f0d46ccb3..2a7d0eb3d 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ClientCredentialsTest.php
@@ -7,8 +7,9 @@ use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class ClientCredentialsTest extends \PHPUnit_Framework_TestCase
+class ClientCredentialsTest extends TestCase
{
public function testInvalidCredentials()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
index a47aae3e8..14bf980f1 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/ImplicitTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class ImplicitTest extends \PHPUnit_Framework_TestCase
+class ImplicitTest extends TestCase
{
public function testImplicitNotAllowedResponse()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
index 0a6c4b827..e60023b3c 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/JwtBearerTest.php
@@ -7,8 +7,9 @@ use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
use OAuth2\Encryption\Jwt;
+use PHPUnit\Framework\TestCase;
-class JwtBearerTest extends \PHPUnit_Framework_TestCase
+class JwtBearerTest extends TestCase
{
private $privateKey;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
index a458aad8a..c964c6bbd 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/RefreshTokenTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class RefreshTokenTest extends \PHPUnit_Framework_TestCase
+class RefreshTokenTest extends TestCase
{
private $storage;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
index 18943d055..8b725e13a 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/GrantType/UserCredentialsTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class UserCredentialsTest extends \PHPUnit_Framework_TestCase
+class UserCredentialsTest extends TestCase
{
public function testNoUsername()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
index 46de936d8..fdc16daba 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/AuthorizeControllerTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class AuthorizeControllerTest extends \PHPUnit_Framework_TestCase
+class AuthorizeControllerTest extends TestCase
{
public function testValidateAuthorizeRequest()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
index b1b687077..62e84df57 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/Controller/UserInfoControllerTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class UserInfoControllerTest extends \PHPUnit_Framework_TestCase
+class UserInfoControllerTest extends TestCase
{
public function testCreateController()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
index 776002d1e..c89a1ae97 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/GrantType/AuthorizationCodeTest.php
@@ -6,8 +6,9 @@ use OAuth2\Storage\Bootstrap;
use OAuth2\Server;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class AuthorizationCodeTest extends \PHPUnit_Framework_TestCase
+class AuthorizationCodeTest extends TestCase
{
public function testValidCode()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
index b0311434a..7b892c946 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/CodeIdTokenTest.php
@@ -7,8 +7,9 @@ use OAuth2\Request;
use OAuth2\Response;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\ClientCredentials;
+use PHPUnit\Framework\TestCase;
-class CodeIdTokenTest extends \PHPUnit_Framework_TestCase
+class CodeIdTokenTest extends TestCase
{
public function testHandleAuthorizeRequest()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
index e772f6be4..a0df3a936 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTest.php
@@ -8,8 +8,9 @@ use OAuth2\Response;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\ClientCredentials;
use OAuth2\Encryption\Jwt;
+use PHPUnit\Framework\TestCase;
-class IdTokenTest extends \PHPUnit_Framework_TestCase
+class IdTokenTest extends TestCase
{
public function testValidateAuthorizeRequest()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
index bc564d37b..0573a9866 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/OpenID/ResponseType/IdTokenTokenTest.php
@@ -8,8 +8,9 @@ use OAuth2\Response;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\ClientCredentials;
use OAuth2\ResponseType\AccessToken;
+use PHPUnit\Framework\TestCase;
-class IdTokenTokenTest extends \PHPUnit_Framework_TestCase
+class IdTokenTokenTest extends TestCase
{
public function testHandleAuthorizeRequest()
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
index 10db3215c..cbf8f096b 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
@@ -5,8 +5,9 @@ namespace OAuth2;
use OAuth2\Request\TestRequest;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\AuthorizationCode;
+use PHPUnit\Framework\TestCase;
-class RequestTest extends \PHPUnit_Framework_TestCase
+class RequestTest extends TestCase
{
public function testRequestOverride()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
index b8149005d..2d2c57ee6 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
@@ -1,8 +1,8 @@
<?php
-namespace OAuth2;
+namespace OAuth2;use PHPUnit\Framework\TestCase;
-class ResponseTest extends \PHPUnit_Framework_TestCase
+class ResponseTest extends TestCase
{
public function testRenderAsXml()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
index 0ed1c82fc..43b02254f 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/AccessTokenTest.php
@@ -4,8 +4,9 @@ namespace OAuth2\ResponseType;
use OAuth2\Server;
use OAuth2\Storage\Memory;
+use PHPUnit\Framework\TestCase;
-class AccessTokenTest extends \PHPUnit_Framework_TestCase
+class AccessTokenTest extends TestCase
{
public function testRevokeAccessTokenWithTypeHint()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
index 51b01a927..7e37509ef 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
@@ -11,8 +11,9 @@ use OAuth2\GrantType\ClientCredentials;
use OAuth2\GrantType\UserCredentials;
use OAuth2\GrantType\RefreshToken;
use OAuth2\Encryption\Jwt;
+use PHPUnit\Framework\TestCase;
-class JwtAccessTokenTest extends \PHPUnit_Framework_TestCase
+class JwtAccessTokenTest extends TestCase
{
public function testCreateAccessToken()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
index 99f9cf6eb..5b51be1d1 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ScopeTest.php
@@ -3,8 +3,9 @@
namespace OAuth2;
use OAuth2\Storage\Memory;
+use PHPUnit\Framework\TestCase;
-class ScopeTest extends \PHPUnit_Framework_TestCase
+class ScopeTest extends TestCase
{
public function testCheckScope()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
index 747e120f5..3106961e2 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ServerTest.php
@@ -5,8 +5,9 @@ namespace OAuth2;
use OAuth2\Request\TestRequest;
use OAuth2\ResponseType\AuthorizationCode;
use OAuth2\Storage\Bootstrap;
+use PHPUnit\Framework\TestCase;
-class ServerTest extends \PHPUnit_Framework_TestCase
+class ServerTest extends TestCase
{
/**
* @expectedException LogicException OAuth2\Storage\ClientInterface
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
index a2e000e22..71cca3bd9 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/TokenType/BearerTest.php
@@ -4,8 +4,9 @@ namespace OAuth2\TokenType;
use OAuth2\Request\TestRequest;
use OAuth2\Response;
+use PHPUnit\Framework\TestCase;
-class BearerTest extends \PHPUnit_Framework_TestCase
+class BearerTest extends TestCase
{
public function testValidContentTypeWithCharset()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
index 7bbce28a4..a916ff2a3 100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Request/TestRequest.php
@@ -45,9 +45,14 @@ class TestRequest extends Request implements RequestInterface
$this->query = $query;
}
+ public function setMethod($method)
+ {
+ $this->server['REQUEST_METHOD'] = $method;
+ }
+
public function setPost(array $params)
{
- $this->server['REQUEST_METHOD'] = 'POST';
+ $this->setMethod('POST');
$this->request = $params;
}
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
index f0b1274a2..e841d3ad2 100755..100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/BaseTest.php
@@ -2,7 +2,9 @@
namespace OAuth2\Storage;
-abstract class BaseTest extends \PHPUnit_Framework_TestCase
+use PHPUnit\Framework\TestCase;
+
+abstract class BaseTest extends TestCase
{
public function provideStorage()
{
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
index 3d7bdd4e9..3d7bdd4e9 100755..100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 2c72175e7..c6f6d2322 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -43,7 +43,8 @@ namespace Composer\Autoload;
class ClassLoader
{
// PSR-4
- private $prefixLengthsPsr4 = array();
+ private $firstCharsPsr4 = array();
+ private $prefixLengthsPsr4 = array(); // For BC with legacy static maps
private $prefixDirsPsr4 = array();
private $fallbackDirsPsr4 = array();
@@ -170,11 +171,10 @@ class ClassLoader
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
// Register directories for a new namespace.
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
+ if ('\\' !== substr($prefix, -1)) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->firstCharsPsr4[$prefix[0]] = true;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
@@ -221,11 +221,10 @@ class ClassLoader
if (!$prefix) {
$this->fallbackDirsPsr4 = (array) $paths;
} else {
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
+ if ('\\' !== substr($prefix, -1)) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->firstCharsPsr4[$prefix[0]] = true;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
}
}
@@ -373,15 +372,15 @@ class ClassLoader
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
$first = $class[0];
- if (isset($this->prefixLengthsPsr4[$first])) {
+ if (isset($this->firstCharsPsr4[$first]) || isset($this->prefixLengthsPsr4[$first])) {
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath.'\\';
if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
- $length = $this->prefixLengthsPsr4[$first][$search];
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 707f72738..3c3031de8 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -801,6 +801,7 @@ return array(
'Zotlabs\\Lib\\Enotify' => $baseDir . '/Zotlabs/Lib/Enotify.php',
'Zotlabs\\Lib\\ExtendedZip' => $baseDir . '/Zotlabs/Lib/ExtendedZip.php',
'Zotlabs\\Lib\\IConfig' => $baseDir . '/Zotlabs/Lib/IConfig.php',
+ 'Zotlabs\\Lib\\Img_filesize' => $baseDir . '/Zotlabs/Lib/Img_filesize.php',
'Zotlabs\\Lib\\JSalmon' => $baseDir . '/Zotlabs/Lib/JSalmon.php',
'Zotlabs\\Lib\\LDSignatures' => $baseDir . '/Zotlabs/Lib/LDSignatures.php',
'Zotlabs\\Lib\\MarkdownSoap' => $baseDir . '/Zotlabs/Lib/MarkdownSoap.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index bbe6fd553..1fd1888f8 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -14,4 +14,5 @@ return array(
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+ 'f084d01b0a599f67676cffef638aa95b' => $vendorDir . '/smarty/smarty/libs/bootstrap.php',
);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 2955df1db..b310f60f2 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -24,7 +24,7 @@ class ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d
spl_autoload_unregister(array('ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d', 'loadClassLoader'));
$includePaths = require __DIR__ . '/include_paths.php';
- array_push($includePaths, get_include_path());
+ $includePaths[] = get_include_path();
set_include_path(implode(PATH_SEPARATOR, $includePaths));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index fbce4ec64..b0fb922de 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -15,45 +15,17 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+ 'f084d01b0a599f67676cffef638aa95b' => __DIR__ . '/..' . '/smarty/smarty/libs/bootstrap.php',
);
- public static $prefixLengthsPsr4 = array (
- 'Z' =>
- array (
- 'Zotlabs\\' => 8,
- ),
- 'S' =>
- array (
- 'Sabre\\Xml\\' => 10,
- 'Sabre\\VObject\\' => 14,
- 'Sabre\\Uri\\' => 10,
- 'Sabre\\HTTP\\' => 11,
- 'Sabre\\Event\\' => 12,
- 'Sabre\\DAV\\' => 10,
- 'Sabre\\DAVACL\\' => 13,
- 'Sabre\\CardDAV\\' => 14,
- 'Sabre\\CalDAV\\' => 13,
- ),
- 'P' =>
- array (
- 'Psr\\Log\\' => 8,
- ),
- 'L' =>
- array (
- 'League\\HTMLToMarkdown\\' => 22,
- ),
- 'I' =>
- array (
- 'ID3Parser\\' => 10,
- ),
- 'H' =>
- array (
- 'Hubzilla\\' => 9,
- ),
- 'C' =>
- array (
- 'CommerceGuys\\Intl\\' => 18,
- ),
+ public static $firstCharsPsr4 = array (
+ 'Z' => true,
+ 'S' => true,
+ 'P' => true,
+ 'L' => true,
+ 'I' => true,
+ 'H' => true,
+ 'C' => true,
);
public static $prefixDirsPsr4 = array (
@@ -953,6 +925,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\Enotify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Enotify.php',
'Zotlabs\\Lib\\ExtendedZip' => __DIR__ . '/../..' . '/Zotlabs/Lib/ExtendedZip.php',
'Zotlabs\\Lib\\IConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/IConfig.php',
+ 'Zotlabs\\Lib\\Img_filesize' => __DIR__ . '/../..' . '/Zotlabs/Lib/Img_filesize.php',
'Zotlabs\\Lib\\JSalmon' => __DIR__ . '/../..' . '/Zotlabs/Lib/JSalmon.php',
'Zotlabs\\Lib\\LDSignatures' => __DIR__ . '/../..' . '/Zotlabs/Lib/LDSignatures.php',
'Zotlabs\\Lib\\MarkdownSoap' => __DIR__ . '/../..' . '/Zotlabs/Lib/MarkdownSoap.php',
@@ -1257,7 +1230,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$prefixLengthsPsr4;
+ $loader->firstCharsPsr4 = ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$firstCharsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$prefixesPsr0;
$loader->classMap = ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d::$classMap;
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 31aa8aef4..f4a2b6278 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,157 +1,198 @@
[
{
- "name": "sabre/event",
- "version": "3.0.0",
- "version_normalized": "3.0.0.0",
+ "name": "bshaffer/oauth2-server-php",
+ "version": "v1.10.0",
+ "version_normalized": "1.10.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sabre-io/event.git",
- "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
+ "url": "https://github.com/bshaffer/oauth2-server-php.git",
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
- "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/d158878425392fe5a0cc34f15dbaf46315ae0ed9",
+ "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": ">=5.3.9"
},
"require-dev": {
- "phpunit/phpunit": "*",
- "sabre/cs": "~0.0.4"
+ "aws/aws-sdk-php": "~2.8",
+ "firebase/php-jwt": "~2.2",
+ "mongodb/mongodb": "^1.1",
+ "phpunit/phpunit": "^4.0",
+ "predis/predis": "dev-master",
+ "thobbs/phpcassa": "dev-master"
},
- "time": "2015-11-05T20:14:39+00:00",
+ "suggest": {
+ "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage",
+ "predis/predis": "Required to use Redis storage",
+ "thobbs/phpcassa": "Required to use Cassandra storage"
+ },
+ "time": "2017-11-15T01:41:02+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
- "psr-4": {
- "Sabre\\Event\\": "lib/"
- },
- "files": [
- "lib/coroutine.php",
- "lib/Loop/functions.php",
- "lib/Promise/functions.php"
- ]
+ "psr-0": {
+ "OAuth2": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
+ "name": "Brent Shaffer",
+ "email": "bshafs@gmail.com",
+ "homepage": "http://brentertainment.com"
}
],
- "description": "sabre/event is a library for lightweight event-based programming",
- "homepage": "http://sabre.io/event/",
+ "description": "OAuth2 Server for PHP",
+ "homepage": "http://github.com/bshaffer/oauth2-server-php",
"keywords": [
- "EventEmitter",
- "async",
- "events",
- "hooks",
- "plugin",
- "promise",
- "signal"
+ "auth",
+ "oauth",
+ "oauth2"
]
},
{
- "name": "sabre/xml",
- "version": "1.5.0",
- "version_normalized": "1.5.0.0",
+ "name": "commerceguys/intl",
+ "version": "v0.7.4",
+ "version_normalized": "0.7.4.0",
"source": {
"type": "git",
- "url": "https://github.com/sabre-io/xml.git",
- "reference": "59b20e5bbace9912607481634f97d05a776ffca7"
+ "url": "https://github.com/commerceguys/intl.git",
+ "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/xml/zipball/59b20e5bbace9912607481634f97d05a776ffca7",
- "reference": "59b20e5bbace9912607481634f97d05a776ffca7",
+ "url": "https://api.github.com/repos/commerceguys/intl/zipball/edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
+ "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
"shasum": ""
},
"require": {
- "ext-dom": "*",
- "ext-xmlreader": "*",
- "ext-xmlwriter": "*",
- "lib-libxml": ">=2.6.20",
- "php": ">=5.5.5",
- "sabre/uri": ">=1.0,<3.0.0"
+ "php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "*",
- "sabre/cs": "~1.0.0"
+ "mikey179/vfsstream": "1.*",
+ "phpunit/phpunit": "~4.0"
},
- "time": "2016-10-09T22:57:52+00:00",
+ "time": "2016-12-13T12:33:19+00:00",
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.x-dev"
+ }
+ },
"installation-source": "dist",
"autoload": {
"psr-4": {
- "Sabre\\Xml\\": "lib/"
+ "CommerceGuys\\Intl\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bojan Zivanovic"
+ }
+ ],
+ "description": "Internationalization library powered by CLDR data."
+ },
+ {
+ "name": "ezyang/htmlpurifier",
+ "version": "v4.9.3",
+ "version_normalized": "4.9.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ezyang/htmlpurifier.git",
+ "reference": "95e1bae3182efc0f3422896a3236e991049dac69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69",
+ "reference": "95e1bae3182efc0f3422896a3236e991049dac69",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2"
+ },
+ "require-dev": {
+ "simpletest/simpletest": "^1.1"
+ },
+ "time": "2017-06-03T02:28:16+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "HTMLPurifier": "library/"
},
"files": [
- "lib/Deserializer/functions.php",
- "lib/Serializer/functions.php"
+ "library/HTMLPurifier.composer.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "LGPL"
],
"authors": [
{
- "name": "Evert Pot",
- "email": "me@evertpot.com",
- "homepage": "http://evertpot.com/",
- "role": "Developer"
- },
- {
- "name": "Markus Staab",
- "email": "markus.staab@redaxo.de",
- "role": "Developer"
+ "name": "Edward Z. Yang",
+ "email": "admin@htmlpurifier.org",
+ "homepage": "http://ezyang.com"
}
],
- "description": "sabre/xml is an XML library that you may not hate.",
- "homepage": "https://sabre.io/xml/",
+ "description": "Standards compliant HTML filter written in PHP",
+ "homepage": "http://htmlpurifier.org/",
"keywords": [
- "XMLReader",
- "XMLWriter",
- "dom",
- "xml"
+ "html"
]
},
{
- "name": "psr/log",
- "version": "1.0.2",
- "version_normalized": "1.0.2.0",
+ "name": "league/html-to-markdown",
+ "version": "4.6.2",
+ "version_normalized": "4.6.2.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ "url": "https://github.com/thephpleague/html-to-markdown.git",
+ "reference": "3af14d8f44838257a75822819784e83819b34e2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/3af14d8f44838257a75822819784e83819b34e2e",
+ "reference": "3af14d8f44838257a75822819784e83819b34e2e",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "ext-dom": "*",
+ "ext-xml": "*",
+ "php": ">=5.3.3"
},
- "time": "2016-10-10T12:19:37+00:00",
+ "require-dev": {
+ "mikehaertl/php-shellcommand": "~1.1.0",
+ "phpunit/phpunit": "4.*",
+ "scrutinizer/ocular": "~1.1"
+ },
+ "time": "2018-01-07T19:45:06+00:00",
+ "bin": [
+ "bin/html-to-markdown"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "4.7-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "League\\HTMLToMarkdown\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -160,16 +201,60 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "http://www.colinodell.com",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Nick Cernis",
+ "email": "nick@cern.is",
+ "homepage": "http://modernnerd.net",
+ "role": "Original Author"
}
],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
+ "description": "An HTML-to-markdown conversion helper for PHP",
+ "homepage": "https://github.com/thephpleague/html-to-markdown",
"keywords": [
- "log",
- "psr",
- "psr-3"
+ "html",
+ "markdown"
+ ]
+ },
+ {
+ "name": "lukasreschke/id3parser",
+ "version": "v0.0.1",
+ "version_normalized": "0.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/LukasReschke/ID3Parser.git",
+ "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/LukasReschke/ID3Parser/zipball/cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
+ "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "time": "2016-04-04T09:34:50+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "ID3Parser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "homepage": "https://github.com/LukasReschke/ID3Parser/",
+ "keywords": [
+ "codecs",
+ "php",
+ "tags"
]
},
{
@@ -226,127 +311,99 @@
]
},
{
- "name": "bshaffer/oauth2-server-php",
- "version": "v1.9.0",
- "version_normalized": "1.9.0.0",
+ "name": "pear/text_languagedetect",
+ "version": "v1.0.0",
+ "version_normalized": "1.0.0.0",
"source": {
"type": "git",
- "url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697"
+ "url": "https://github.com/pear/Text_LanguageDetect.git",
+ "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/8856aed1a98d6da596ae3f9b8095b5c7a1581697",
- "reference": "8856aed1a98d6da596ae3f9b8095b5c7a1581697",
+ "url": "https://api.github.com/repos/pear/Text_LanguageDetect/zipball/bb9ff6f4970f686fac59081e916b456021fe7ba6",
+ "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6",
"shasum": ""
},
- "require": {
- "php": ">=5.3.9"
- },
"require-dev": {
- "aws/aws-sdk-php": "~2.8",
- "firebase/php-jwt": "~2.2",
- "mongodb/mongodb": "^1.1",
- "predis/predis": "dev-master",
- "thobbs/phpcassa": "dev-master"
+ "phpunit/phpunit": "*"
},
"suggest": {
- "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~1.1 is required to use MondoDB storage",
- "predis/predis": "Required to use Redis storage",
- "thobbs/phpcassa": "Required to use Cassandra storage"
+ "ext-mbstring": "May require the mbstring PHP extension"
},
- "time": "2017-01-06T23:20:00+00:00",
+ "time": "2017-03-02T16:14:08+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
- "OAuth2": "src/"
+ "Text": "./"
}
},
"notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "./"
+ ],
"license": [
- "MIT"
+ "BSD-2-Clause"
],
"authors": [
{
- "name": "Brent Shaffer",
- "email": "bshafs@gmail.com",
- "homepage": "http://brentertainment.com"
+ "name": "Nicholas Pisarro",
+ "email": "taak@php.net",
+ "role": "Lead"
}
],
- "description": "OAuth2 Server for PHP",
- "homepage": "http://github.com/bshaffer/oauth2-server-php",
- "keywords": [
- "auth",
- "oauth",
- "oauth2"
- ]
+ "description": "Identify human languages from text samples",
+ "homepage": "http://pear.php.net/package/Text_LanguageDetect"
},
{
- "name": "simplepie/simplepie",
- "version": "1.5",
- "version_normalized": "1.5.0.0",
+ "name": "psr/log",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
"source": {
"type": "git",
- "url": "https://github.com/simplepie/simplepie.git",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab"
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab",
- "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
- "require-dev": {
- "phpunit/phpunit": "~4 || ~5"
- },
- "suggest": {
- "mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
- },
- "time": "2017-04-17T07:29:31+00:00",
+ "time": "2016-10-10T12:19:37+00:00",
"type": "library",
- "installation-source": "source",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
"autoload": {
- "psr-0": {
- "SimplePie": "library"
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
}
},
+ "notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Ryan Parman",
- "homepage": "http://ryanparman.com/",
- "role": "Creator, alumnus developer"
- },
- {
- "name": "Geoffrey Sneddon",
- "homepage": "http://gsnedders.com/",
- "role": "Alumnus developer"
- },
- {
- "name": "Ryan McCue",
- "email": "me@ryanmccue.info",
- "homepage": "http://ryanmccue.info/",
- "role": "Developer"
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
}
],
- "description": "A simple Atom/RSS parsing library for PHP",
- "homepage": "http://simplepie.org/",
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
"keywords": [
- "atom",
- "feeds",
- "rss"
- ],
- "support": {
- "source": "https://github.com/simplepie/simplepie/tree/1.5",
- "issues": "https://github.com/simplepie/simplepie/issues"
- }
+ "log",
+ "psr",
+ "psr-3"
+ ]
},
{
"name": "sabre/dav",
@@ -434,69 +491,120 @@
]
},
{
- "name": "league/html-to-markdown",
- "version": "4.4.1",
- "version_normalized": "4.4.1.0",
+ "name": "sabre/event",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/html-to-markdown.git",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186"
+ "url": "https://github.com/sabre-io/event.git",
+ "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/82ea375b5b2b1da1da222644c0565c695bf88186",
- "reference": "82ea375b5b2b1da1da222644c0565c695bf88186",
+ "url": "https://api.github.com/repos/sabre-io/event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
+ "reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"shasum": ""
},
"require": {
- "ext-dom": "*",
- "ext-xml": "*",
- "php": ">=5.3.3"
+ "php": ">=5.5"
},
"require-dev": {
- "mikehaertl/php-shellcommand": "~1.1.0",
- "phpunit/phpunit": "4.*",
- "scrutinizer/ocular": "~1.1"
+ "phpunit/phpunit": "*",
+ "sabre/cs": "~0.0.4"
},
- "time": "2017-03-16T00:45:59+00:00",
- "bin": [
- "bin/html-to-markdown"
- ],
+ "time": "2015-11-05T20:14:39+00:00",
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.5-dev"
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sabre\\Event\\": "lib/"
+ },
+ "files": [
+ "lib/coroutine.php",
+ "lib/Loop/functions.php",
+ "lib/Promise/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
}
+ ],
+ "description": "sabre/event is a library for lightweight event-based programming",
+ "homepage": "http://sabre.io/event/",
+ "keywords": [
+ "EventEmitter",
+ "async",
+ "events",
+ "hooks",
+ "plugin",
+ "promise",
+ "signal"
+ ]
+ },
+ {
+ "name": "sabre/http",
+ "version": "4.2.3",
+ "version_normalized": "4.2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sabre-io/http.git",
+ "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sabre-io/http/zipball/0295f9a3ee39be97e0898592fc19e42421e0cd93",
+ "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93",
+ "shasum": ""
},
+ "require": {
+ "ext-ctype": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.4",
+ "sabre/event": ">=1.0.0,<4.0.0",
+ "sabre/uri": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.3",
+ "sabre/cs": "~0.0.1"
+ },
+ "suggest": {
+ "ext-curl": " to make http requests with the Client class"
+ },
+ "time": "2017-06-12T07:53:04+00:00",
+ "type": "library",
"installation-source": "dist",
"autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
"psr-4": {
- "League\\HTMLToMarkdown\\": "src/"
+ "Sabre\\HTTP\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "http://www.colinodell.com",
- "role": "Lead Developer"
- },
- {
- "name": "Nick Cernis",
- "email": "nick@cern.is",
- "homepage": "http://modernnerd.net",
- "role": "Original Author"
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
}
],
- "description": "An HTML-to-markdown conversion helper for PHP",
- "homepage": "https://github.com/thephpleague/html-to-markdown",
+ "description": "The sabre/http library provides utilities for dealing with http requests and responses. ",
+ "homepage": "https://github.com/fruux/sabre-http",
"keywords": [
- "html",
- "markdown"
+ "http"
]
},
{
@@ -554,17 +662,17 @@
},
{
"name": "sabre/vobject",
- "version": "4.1.2",
- "version_normalized": "4.1.2.0",
+ "version": "4.1.3",
+ "version_normalized": "4.1.3.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/vobject.git",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c"
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
- "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/df9916813d1d83e4f761c4cba13361ee74196fac",
+ "reference": "df9916813d1d83e4f761c4cba13361ee74196fac",
"shasum": ""
},
"require": {
@@ -573,13 +681,13 @@
"sabre/xml": ">=1.5 <3.0"
},
"require-dev": {
- "phpunit/phpunit": "*",
+ "phpunit/phpunit": "> 4.8, <6.0.0",
"sabre/cs": "^1.0.0"
},
"suggest": {
"hoa/bench": "If you would like to run the benchmark scripts"
},
- "time": "2016-12-06T04:14:09+00:00",
+ "time": "2017-10-18T08:29:40+00:00",
"bin": [
"bin/vobject",
"bin/generate_vcards"
@@ -652,96 +760,46 @@
]
},
{
- "name": "ezyang/htmlpurifier",
- "version": "v4.9.3",
- "version_normalized": "4.9.3.0",
+ "name": "sabre/xml",
+ "version": "1.5.0",
+ "version_normalized": "1.5.0.0",
"source": {
"type": "git",
- "url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "95e1bae3182efc0f3422896a3236e991049dac69"
+ "url": "https://github.com/sabre-io/xml.git",
+ "reference": "59b20e5bbace9912607481634f97d05a776ffca7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69",
- "reference": "95e1bae3182efc0f3422896a3236e991049dac69",
+ "url": "https://api.github.com/repos/sabre-io/xml/zipball/59b20e5bbace9912607481634f97d05a776ffca7",
+ "reference": "59b20e5bbace9912607481634f97d05a776ffca7",
"shasum": ""
},
"require": {
- "php": ">=5.2"
+ "ext-dom": "*",
+ "ext-xmlreader": "*",
+ "ext-xmlwriter": "*",
+ "lib-libxml": ">=2.6.20",
+ "php": ">=5.5.5",
+ "sabre/uri": ">=1.0,<3.0.0"
},
"require-dev": {
- "simpletest/simpletest": "^1.1"
+ "phpunit/phpunit": "*",
+ "sabre/cs": "~1.0.0"
},
- "time": "2017-06-03T02:28:16+00:00",
+ "time": "2016-10-09T22:57:52+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
- "psr-0": {
- "HTMLPurifier": "library/"
+ "psr-4": {
+ "Sabre\\Xml\\": "lib/"
},
"files": [
- "library/HTMLPurifier.composer.php"
+ "lib/Deserializer/functions.php",
+ "lib/Serializer/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL"
- ],
- "authors": [
- {
- "name": "Edward Z. Yang",
- "email": "admin@htmlpurifier.org",
- "homepage": "http://ezyang.com"
- }
- ],
- "description": "Standards compliant HTML filter written in PHP",
- "homepage": "http://htmlpurifier.org/",
- "keywords": [
- "html"
- ]
- },
- {
- "name": "sabre/http",
- "version": "4.2.3",
- "version_normalized": "4.2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sabre-io/http.git",
- "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sabre-io/http/zipball/0295f9a3ee39be97e0898592fc19e42421e0cd93",
- "reference": "0295f9a3ee39be97e0898592fc19e42421e0cd93",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-mbstring": "*",
- "php": ">=5.4",
- "sabre/event": ">=1.0.0,<4.0.0",
- "sabre/uri": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.3",
- "sabre/cs": "~0.0.1"
- },
- "suggest": {
- "ext-curl": " to make http requests with the Client class"
- },
- "time": "2017-06-12T07:53:04+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "lib/functions.php"
- ],
- "psr-4": {
- "Sabre\\HTTP\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
"BSD-3-Clause"
],
"authors": [
@@ -750,141 +808,140 @@
"email": "me@evertpot.com",
"homepage": "http://evertpot.com/",
"role": "Developer"
+ },
+ {
+ "name": "Markus Staab",
+ "email": "markus.staab@redaxo.de",
+ "role": "Developer"
}
],
- "description": "The sabre/http library provides utilities for dealing with http requests and responses. ",
- "homepage": "https://github.com/fruux/sabre-http",
+ "description": "sabre/xml is an XML library that you may not hate.",
+ "homepage": "https://sabre.io/xml/",
"keywords": [
- "http"
+ "XMLReader",
+ "XMLWriter",
+ "dom",
+ "xml"
]
},
{
- "name": "pear/text_languagedetect",
- "version": "v1.0.0",
- "version_normalized": "1.0.0.0",
+ "name": "simplepie/simplepie",
+ "version": "1.5.1",
+ "version_normalized": "1.5.1.0",
"source": {
"type": "git",
- "url": "https://github.com/pear/Text_LanguageDetect.git",
- "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6"
+ "url": "https://github.com/simplepie/simplepie.git",
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/Text_LanguageDetect/zipball/bb9ff6f4970f686fac59081e916b456021fe7ba6",
- "reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6",
+ "url": "https://api.github.com/repos/simplepie/simplepie/zipball/db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
+ "reference": "db9fff27b6d49eed3d4047cd3211ec8dba2f5d6e",
"shasum": ""
},
+ "require": {
+ "php": ">=5.3.0"
+ },
"require-dev": {
- "phpunit/phpunit": "*"
+ "phpunit/phpunit": "~4 || ~5"
},
"suggest": {
- "ext-mbstring": "May require the mbstring PHP extension"
+ "mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
},
- "time": "2017-03-02T16:14:08+00:00",
+ "time": "2017-11-12T02:03:34+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
- "Text": "./"
+ "SimplePie": "library"
}
},
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- "./"
- ],
"license": [
- "BSD-2-Clause"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Nicholas Pisarro",
- "email": "taak@php.net",
- "role": "Lead"
+ "name": "Ryan Parman",
+ "homepage": "http://ryanparman.com/",
+ "role": "Creator, alumnus developer"
+ },
+ {
+ "name": "Geoffrey Sneddon",
+ "homepage": "http://gsnedders.com/",
+ "role": "Alumnus developer"
+ },
+ {
+ "name": "Ryan McCue",
+ "email": "me@ryanmccue.info",
+ "homepage": "http://ryanmccue.info/",
+ "role": "Developer"
}
],
- "description": "Identify human languages from text samples",
- "homepage": "http://pear.php.net/package/Text_LanguageDetect"
+ "description": "A simple Atom/RSS parsing library for PHP",
+ "homepage": "http://simplepie.org/",
+ "keywords": [
+ "atom",
+ "feeds",
+ "rss"
+ ],
+ "support": {
+ "source": "https://github.com/simplepie/simplepie/tree/1.5.1",
+ "issues": "https://github.com/simplepie/simplepie/issues"
+ }
},
{
- "name": "commerceguys/intl",
- "version": "v0.7.4",
- "version_normalized": "0.7.4.0",
+ "name": "smarty/smarty",
+ "version": "v3.1.31",
+ "version_normalized": "3.1.31.0",
"source": {
"type": "git",
- "url": "https://github.com/commerceguys/intl.git",
- "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00"
+ "url": "https://github.com/smarty-php/smarty.git",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/commerceguys/intl/zipball/edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
- "reference": "edfcfc26ed8505c4f6fcf862eb36dfda1af74b00",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c7d42e4a327c402897dd587871434888fde1e7a9",
+ "reference": "c7d42e4a327c402897dd587871434888fde1e7a9",
"shasum": ""
},
"require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "mikey179/vfsstream": "1.*",
- "phpunit/phpunit": "~4.0"
+ "php": ">=5.2"
},
- "time": "2016-12-13T12:33:19+00:00",
+ "time": "2016-12-14T21:57:25+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "0.x-dev"
+ "dev-master": "3.1.x-dev"
}
},
"installation-source": "dist",
"autoload": {
- "psr-4": {
- "CommerceGuys\\Intl\\": "src"
- }
+ "files": [
+ "libs/bootstrap.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "LGPL-3.0"
],
"authors": [
{
- "name": "Bojan Zivanovic"
- }
- ],
- "description": "Internationalization library powered by CLDR data."
- },
- {
- "name": "lukasreschke/id3parser",
- "version": "v0.0.1",
- "version_normalized": "0.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/LukasReschke/ID3Parser.git",
- "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/LukasReschke/ID3Parser/zipball/cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
- "reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "time": "2016-04-04T09:34:50+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "ID3Parser\\": "src/"
+ "name": "Monte Ohrt",
+ "email": "monte@ohrt.com"
+ },
+ {
+ "name": "Uwe Tews",
+ "email": "uwe.tews@googlemail.com"
+ },
+ {
+ "name": "Rodney Rehm",
+ "email": "rodney.rehm@medialize.de"
}
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL"
],
- "homepage": "https://github.com/LukasReschke/ID3Parser/",
+ "description": "Smarty - the compiling PHP template engine",
+ "homepage": "http://www.smarty.net",
"keywords": [
- "codecs",
- "php",
- "tags"
+ "templating"
]
}
]
diff --git a/vendor/league/html-to-markdown/CHANGELOG.md b/vendor/league/html-to-markdown/CHANGELOG.md
index 067864412..c3b7bf65b 100644
--- a/vendor/league/html-to-markdown/CHANGELOG.md
+++ b/vendor/league/html-to-markdown/CHANGELOG.md
@@ -4,6 +4,25 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
## [Unreleased][unreleased]
+## [4.6.2]
+### Fixed
+ - Fixed issue with emphasized spaces (#146)
+
+## [4.6.1]
+### Fixed
+ - Fixed conversion of `<pre>` tags (#145)
+
+## [4.6.0]
+### Added
+ - Added support for ordered lists starting at numbers other than 1
+
+### Fixed
+ - Fixed overly-eager escaping of list-like text (#141)
+
+## [4.5.0]
+### Added
+ - Added configuration option for list item style (#135, #136)
+
## [4.4.1]
### Fixed
@@ -188,7 +207,11 @@ not ideally set, so this releases fixes that. Moving forwards this should reduce
### Added
- Initial release
-[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.4.1...master
+[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.6.2...master
+[4.6.2]: https://github.com/thephpleague/html-to-markdown/compare/4.6.1...4.6.2
+[4.6.1]: https://github.com/thephpleague/html-to-markdown/compare/4.6.0...4.6.1
+[4.6.0]: https://github.com/thephpleague/html-to-markdown/compare/4.5.0...4.6.0
+[4.5.0]: https://github.com/thephpleague/html-to-markdown/compare/4.4.1...4.5.0
[4.4.1]: https://github.com/thephpleague/html-to-markdown/compare/4.4.0...4.4.1
[4.4.0]: https://github.com/thephpleague/html-to-markdown/compare/4.3.1...4.4.0
[4.3.1]: https://github.com/thephpleague/html-to-markdown/compare/4.3.0...4.3.1
diff --git a/vendor/league/html-to-markdown/README.md b/vendor/league/html-to-markdown/README.md
index 8d75649d6..ab80541e6 100644
--- a/vendor/league/html-to-markdown/README.md
+++ b/vendor/league/html-to-markdown/README.md
@@ -13,7 +13,7 @@ HTML To Markdown for PHP
Library which converts HTML to [Markdown](http://daringfireball.net/projects/markdown/) for your sanity and convenience.
-**Requires**: PHP 5.3+
+**Requires**: PHP 5.3+ or PHP 7.0+
**Lead Developer**: [@colinodell](http://twitter.com/colinodell)
@@ -97,15 +97,15 @@ $markdown = $converter->convert($html); // $markdown now contains ""
### Style options
-Bold and italic tags are converted using the asterisk syntax by default. Change this to the underlined syntax using the `bold_style` and `italic_style` options.
+By default bold tags are converted using the asterisk syntax, and italic tags are converted using the underlined syntax. Change these by using the `bold_style` and `italic_style` options.
```php
$converter = new HtmlConverter();
-$converter->getConfig()->setOption('italic_style', '_');
+$converter->getConfig()->setOption('italic_style', '*');
$converter->getConfig()->setOption('bold_style', '__');
$html = '<em>Italic</em> and a <strong>bold</strong>';
-$markdown = $converter->convert($html); // $markdown now contains "_Italic_ and a __bold__"
+$markdown = $converter->convert($html); // $markdown now contains "*Italic* and a __bold__"
```
### Line break options
diff --git a/vendor/league/html-to-markdown/composer.json b/vendor/league/html-to-markdown/composer.json
index 58764bcb5..8482b767c 100644
--- a/vendor/league/html-to-markdown/composer.json
+++ b/vendor/league/html-to-markdown/composer.json
@@ -42,7 +42,7 @@
"bin": ["bin/html-to-markdown"],
"extra": {
"branch-alias": {
- "dev-master": "4.5-dev"
+ "dev-master": "4.7-dev"
}
}
}
diff --git a/vendor/league/html-to-markdown/src/Converter/EmphasisConverter.php b/vendor/league/html-to-markdown/src/Converter/EmphasisConverter.php
index 67250769b..8fd4dd6e2 100644
--- a/vendor/league/html-to-markdown/src/Converter/EmphasisConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/EmphasisConverter.php
@@ -32,7 +32,7 @@ class EmphasisConverter implements ConverterInterface, ConfigurationAwareInterfa
$value = $element->getValue();
if (!trim($value)) {
- return '';
+ return $value;
}
if ($tag === 'i' || $tag === 'em') {
diff --git a/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php b/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php
index dafec077c..f737b4e19 100644
--- a/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/ListItemConverter.php
@@ -2,11 +2,26 @@
namespace League\HTMLToMarkdown\Converter;
+use League\HTMLToMarkdown\Configuration;
+use League\HTMLToMarkdown\ConfigurationAwareInterface;
use League\HTMLToMarkdown\ElementInterface;
-class ListItemConverter implements ConverterInterface
+class ListItemConverter implements ConverterInterface, ConfigurationAwareInterface
{
/**
+ * @var Configuration
+ */
+ protected $config;
+
+ /**
+ * @param Configuration $config
+ */
+ public function setConfig(Configuration $config)
+ {
+ $this->config = $config;
+ }
+
+ /**
* @param ElementInterface $element
*
* @return string
@@ -29,10 +44,15 @@ class ListItemConverter implements ConverterInterface
}
if ($list_type === 'ul') {
- return $prefix . '- ' . $value . "\n";
+ $list_item_style = $this->config->getOption('list_item_style', '-');
+ return $prefix . $list_item_style . ' ' . $value . "\n";
}
- $number = $element->getSiblingPosition();
+ if ($list_type === 'ol' && $start = $element->getParent()->getAttribute('start')) {
+ $number = $start + $element->getSiblingPosition() - 1;
+ } else {
+ $number = $element->getSiblingPosition();
+ }
return $prefix . $number . '. ' . $value . "\n";
}
diff --git a/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php b/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php
index cf852bfcf..7207b81a6 100644
--- a/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php
@@ -109,7 +109,8 @@ class ParagraphConverter implements ConverterInterface
{
$regExs = array(
// Match numbers ending on ')' or '.' that are at the beginning of the line.
- '/^[0-9]+(?=\)|\.)/'
+ // They will be escaped if immediately followed by a space or newline.
+ '/^[0-9]+(?=(\)|\.)( |$))/'
);
foreach ($regExs as $i) {
diff --git a/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php b/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
index 7a4ec3357..0bb89e90f 100644
--- a/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
@@ -33,20 +33,27 @@ class PreformattedConverter implements ConverterInterface
// If the execution reaches this point it means it's just a pre tag, with no code tag nested
+ // Empty lines are a special case
+ if ($pre_content === '') {
+ return "```\n```\n";
+ }
+
// Normalizing new lines
$pre_content = preg_replace('/\r\n|\r|\n/', PHP_EOL, $pre_content);
- // Checking if the string has multiple lines
- $lines = preg_split('/\r\n|\r|\n/', $pre_content);
- if (count($lines) > 1) {
- // Multiple lines detected, adding three backticks and newlines
- $markdown .= '```' . "\n" . $pre_content . "\n" . '```';
- } else {
+ // Is it a single line?
+ if (strpos($pre_content, PHP_EOL) === false) {
// One line of code, wrapping it on one backtick.
- $markdown .= '`' . $pre_content . '`';
+ return '`' . $pre_content . '`';
+ }
+
+ // Ensure there's a newline at the end
+ if (strrpos($pre_content, PHP_EOL) !== strlen($pre_content) - 1) {
+ $pre_content .= PHP_EOL;
}
- return $markdown;
+ // Use three backticks
+ return "```\n" . $pre_content . "```\n";
}
/**
diff --git a/vendor/league/html-to-markdown/src/HtmlConverter.php b/vendor/league/html-to-markdown/src/HtmlConverter.php
index db3c29e1c..8d8936ec5 100644
--- a/vendor/league/html-to-markdown/src/HtmlConverter.php
+++ b/vendor/league/html-to-markdown/src/HtmlConverter.php
@@ -38,7 +38,8 @@ class HtmlConverter
'bold_style' => '**', // Set to '__' if you prefer the underlined style
'italic_style' => '_', // Set to '*' if you prefer the asterisk style
'remove_nodes' => '', // space-separated list of dom nodes that should be removed. example: 'meta style script'
- 'hard_break' => false,// Set to true to turn <br> into `\n` instead of ` \n`
+ 'hard_break' => false, // Set to true to turn <br> into `\n` instead of ` \n`
+ 'list_item_style' => '-', // Set the default character for each <li> in a <ul>. Can be '-', '*', or '+'
);
$this->environment = Environment::createDefaultEnvironment($defaults);
diff --git a/vendor/sabre/vobject/.travis.yml b/vendor/sabre/vobject/.travis.yml
index 3c5b32157..531ad5be4 100644
--- a/vendor/sabre/vobject/.travis.yml
+++ b/vendor/sabre/vobject/.travis.yml
@@ -4,15 +4,15 @@ php:
- 5.6
- 7.0
- 7.1
+ - 7.2
sudo: false
script:
- - phpunit --configuration tests/phpunit.xml
+ - ./bin/phpunit --configuration tests/phpunit.xml
- ./bin/sabre-cs-fixer fix . --dry-run --diff
before_script:
- - phpenv config-rm xdebug.ini; true
- composer install
cache:
diff --git a/vendor/sabre/vobject/CHANGELOG.md b/vendor/sabre/vobject/CHANGELOG.md
index c8f4cb4be..56a36f99c 100644
--- a/vendor/sabre/vobject/CHANGELOG.md
+++ b/vendor/sabre/vobject/CHANGELOG.md
@@ -1,6 +1,15 @@
ChangeLog
=========
+4.1.3 (2017-10-18)
+------------------
+
+* #363: Repair script and de-duplicate properties that are only allowed once,
+ but appear more than once. (@ddolcimascolo).
+* #377: Addes Pacific Time (US & Canada) as exchange timezone
+* #384: Added fallback for VCards without `FN`
+
+
4.1.2 (2016-12-15)
------------------
diff --git a/vendor/sabre/vobject/README.md b/vendor/sabre/vobject/README.md
index 0e37f1388..5030cf276 100644
--- a/vendor/sabre/vobject/README.md
+++ b/vendor/sabre/vobject/README.md
@@ -33,12 +33,12 @@ Build status
| branch | status |
| ------ | ------ |
-| master | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=master)](https://travis-ci.org/fruux/sabre-vobject) |
-| 3.5 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=3.5)](https://travis-ci.org/fruux/sabre-vobject) |
-| 3.4 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=3.4)](https://travis-ci.org/fruux/sabre-vobject) |
-| 3.1 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=3.1)](https://travis-ci.org/fruux/sabre-vobject) |
-| 2.1 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=2.1)](https://travis-ci.org/fruux/sabre-vobject) |
-| 2.0 | [![Build Status](https://travis-ci.org/fruux/sabre-vobject.svg?branch=2.0)](https://travis-ci.org/fruux/sabre-vobject) |
+| master | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=master)](https://travis-ci.org/sabre-io/vobject) |
+| 3.5 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=3.5)](https://travis-ci.org/sabre-io/vobject) |
+| 3.4 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=3.4)](https://travis-ci.org/sabre-io/vobject) |
+| 3.1 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=3.1)](https://travis-ci.org/sabre-io/vobject) |
+| 2.1 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=2.1)](https://travis-ci.org/sabre-io/vobject) |
+| 2.0 | [![Build Status](https://travis-ci.org/sabre-io/vobject.svg?branch=2.0)](https://travis-ci.org/sabre-io/vobject) |
diff --git a/vendor/sabre/vobject/bin/bench.php b/vendor/sabre/vobject/bin/bench.php
index 807b40777..807b40777 100755..100644
--- a/vendor/sabre/vobject/bin/bench.php
+++ b/vendor/sabre/vobject/bin/bench.php
diff --git a/vendor/sabre/vobject/bin/fetch_windows_zones.php b/vendor/sabre/vobject/bin/fetch_windows_zones.php
index 3f2a00f7a..3f2a00f7a 100755..100644
--- a/vendor/sabre/vobject/bin/fetch_windows_zones.php
+++ b/vendor/sabre/vobject/bin/fetch_windows_zones.php
diff --git a/vendor/sabre/vobject/bin/generateicalendardata.php b/vendor/sabre/vobject/bin/generateicalendardata.php
index a2df3c63a..a2df3c63a 100755..100644
--- a/vendor/sabre/vobject/bin/generateicalendardata.php
+++ b/vendor/sabre/vobject/bin/generateicalendardata.php
diff --git a/vendor/sabre/vobject/bin/mergeduplicates.php b/vendor/sabre/vobject/bin/mergeduplicates.php
index 076524d36..076524d36 100755..100644
--- a/vendor/sabre/vobject/bin/mergeduplicates.php
+++ b/vendor/sabre/vobject/bin/mergeduplicates.php
diff --git a/vendor/sabre/vobject/composer.json b/vendor/sabre/vobject/composer.json
index cfa4a712d..1f22f6de1 100644
--- a/vendor/sabre/vobject/composer.json
+++ b/vendor/sabre/vobject/composer.json
@@ -37,7 +37,7 @@
"sabre/xml" : ">=1.5 <3.0"
},
"require-dev" : {
- "phpunit/phpunit" : "*",
+ "phpunit/phpunit" : "> 4.8, <6.0.0",
"sabre/cs" : "^1.0.0"
},
diff --git a/vendor/sabre/vobject/lib/Component.php b/vendor/sabre/vobject/lib/Component.php
index 9a10ed3f8..ac87a10ec 100644
--- a/vendor/sabre/vobject/lib/Component.php
+++ b/vendor/sabre/vobject/lib/Component.php
@@ -662,8 +662,23 @@ class Component extends Node {
break;
case '?' :
if (isset($propertyCounters[$propName]) && $propertyCounters[$propName] > 1) {
+ $level = 3;
+
+ // We try to repair the same property appearing multiple times with the exact same value
+ // by removing the duplicates and keeping only one property
+ if ($options & self::REPAIR) {
+ $properties = array_unique($this->select($propName), SORT_REGULAR);
+
+ if (count($properties) === 1) {
+ $this->remove($propName);
+ $this->add($properties[0]);
+
+ $level = 1;
+ }
+ }
+
$messages[] = [
- 'level' => 3,
+ 'level' => $level,
'message' => $propName . ' MUST NOT appear more than once in a ' . $this->name . ' component',
'node' => $this,
];
diff --git a/vendor/sabre/vobject/lib/Component/VCard.php b/vendor/sabre/vobject/lib/Component/VCard.php
index 4f620de10..bca623d5e 100644
--- a/vendor/sabre/vobject/lib/Component/VCard.php
+++ b/vendor/sabre/vobject/lib/Component/VCard.php
@@ -295,6 +295,11 @@ class VCard extends VObject\Document {
} elseif (isset($this->ORG)) {
$this->FN = (string)$this->ORG;
$repaired = true;
+
+ // Otherwise, the EMAIL property may work
+ } elseif (isset($this->EMAIL)) {
+ $this->FN = (string)$this->EMAIL;
+ $repaired = true;
}
}
diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php
index 346e2044d..24c51a604 100644
--- a/vendor/sabre/vobject/lib/Version.php
+++ b/vendor/sabre/vobject/lib/Version.php
@@ -14,6 +14,6 @@ class Version {
/**
* Full version number.
*/
- const VERSION = '4.1.2';
+ const VERSION = '4.1.3';
}
diff --git a/vendor/sabre/vobject/lib/timezonedata/exchangezones.php b/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
index 38138354a..edba5b473 100644
--- a/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
@@ -85,6 +85,7 @@ return [
'Saskatchewan' => 'America/Edmonton',
'Arizona' => 'America/Phoenix',
'Mountain Time (US & Canada)' => 'America/Denver', // Best guess
+ 'Pacific Time (US & Canada)' => 'America/Los_Angeles', // Best guess
'Pacific Time (US & Canada); Tijuana' => 'America/Los_Angeles', // Best guess
'Alaska' => 'America/Anchorage',
'Hawaii' => 'Pacific/Honolulu',
diff --git a/vendor/simplepie/simplepie/.travis.yml b/vendor/simplepie/simplepie/.travis.yml
new file mode 100644
index 000000000..83d90ad19
--- /dev/null
+++ b/vendor/simplepie/simplepie/.travis.yml
@@ -0,0 +1,21 @@
+sudo: false
+language: php
+matrix:
+ fast_finish: true
+ include:
+ - php: 5.4
+ - php: 5.5
+ - php: 5.6
+ - php: 7.0
+ - php: 7.1
+ - php: hhvm
+ sudo: true
+ dist: trusty
+ group: edge # until the next Travis CI update
+ allow_failures:
+ - php: hhvm
+ - php: 7.0
+ - php: 7.1
+branches:
+ except:
+ - one-dot-two
diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php
index 428bfc068..34b6ca0c9 100755..100644
--- a/vendor/simplepie/simplepie/library/SimplePie.php
+++ b/vendor/simplepie/simplepie/library/SimplePie.php
@@ -33,7 +33,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @package SimplePie
- * @version 1.5
+ * @version 1.5.1
* @copyright 2004-2017 Ryan Parman, Geoffrey Sneddon, Ryan McCue
* @author Ryan Parman
* @author Geoffrey Sneddon
@@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie');
/**
* SimplePie Version
*/
-define('SIMPLEPIE_VERSION', '1.5');
+define('SIMPLEPIE_VERSION', '1.5.1');
/**
* SimplePie Build
@@ -810,7 +810,7 @@ class SimplePie
}
/**
- * Set the the default timeout for fetching remote feeds
+ * Set the default timeout for fetching remote feeds
*
* This allows you to change the maximum time the feed's server to respond
* and send the feed back.
@@ -1320,6 +1320,11 @@ class SimplePie
}
}
+ // The default sanitize class gets set in the constructor, check if it has
+ // changed.
+ if ($this->registry->get_class('Sanitize') !== 'SimplePie_Sanitize') {
+ $this->sanitize = $this->registry->create('Sanitize');
+ }
if (method_exists($this->sanitize, 'set_registry'))
{
$this->sanitize->set_registry($this->registry);
@@ -1644,33 +1649,18 @@ class SimplePie
try
{
$microformats = false;
- if (function_exists('Mf2\parse')) {
+ if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
+ $doc = new DOMDocument();
+ @$doc->loadHTML($file->body);
+ $xpath = new DOMXpath($doc);
// Check for both h-feed and h-entry, as both a feed with no entries
// and a list of entries without an h-feed wrapper are both valid.
- $position = 0;
- while ($position = strpos($file->body, 'h-feed', $position))
- {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($file->body, $start, 400);
- if ($microformats = preg_match('/class="[^"]*h-feed/', $check))
- {
- break;
- }
- $position += 7;
- }
- $position = 0;
- while ($position = strpos($file->body, 'h-entry', $position))
- {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($file->body, $start, 400);
- if ($microformats = preg_match('/class="[^"]*h-entry/', $check))
- {
- break;
- }
- $position += 7;
- }
+ $query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
+ 'contains(concat(" ", @class, " "), " h-entry ")]';
+ $result = $xpath->query($query);
+ $microformats = $result->length !== 0;
}
- // Now also do feed discovery, but if an h-entry was found don't
+ // Now also do feed discovery, but if microformats were found don't
// overwrite the current value of file.
$discovered = $locate->find($this->autodiscovery,
$this->all_discovered_feeds);
@@ -2606,15 +2596,15 @@ class SimplePie
}
}
- if (isset($this->data['links'][$rel]))
+ if (isset($this->data['headers']['link']) &&
+ preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/',
+ $this->data['headers']['link'], $match))
{
- return $this->data['links'][$rel];
+ return array($match[1]);
}
- else if (isset($this->data['headers']['link']) &&
- preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/',
- $this->data['headers']['link'], $match))
+ else if (isset($this->data['links'][$rel]))
{
- return array($match[1]);
+ return $this->data['links'][$rel];
}
else
{
@@ -3155,7 +3145,7 @@ class SimplePie
if (($url = $this->get_link()) !== null)
{
- return 'http://g.etfv.co/' . urlencode($url);
+ return 'https://www.google.com/s2/favicons?domain=' . urlencode($url);
}
return false;
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
index 1f73b3890..1f73b3890 100755..100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php
diff --git a/vendor/simplepie/simplepie/library/SimplePie/File.php b/vendor/simplepie/simplepie/library/SimplePie/File.php
index e670e05a0..2bb0a3b44 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/File.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/File.php
@@ -136,8 +136,7 @@ class SimplePie_File
$this->url = $info['url'];
}
curl_close($fp);
- $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
- $this->headers = array_pop($this->headers);
+ $this->headers = SimplePie_HTTP_Parser::prepareHeaders($this->headers, $info['redirect_count'] + 1);
$parser = new SimplePie_HTTP_Parser($this->headers);
if ($parser->parse())
{
diff --git a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
index 63ae1e03d..e982c206f 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php
@@ -496,4 +496,25 @@ class SimplePie_HTTP_Parser
}
}
}
+
+ /**
+ * Prepare headers (take care of proxies headers)
+ *
+ * @param string $headers Raw headers
+ * @param integer $count Redirection count. Default to 1.
+ *
+ * @return string
+ */
+ static public function prepareHeaders($headers, $count = 1)
+ {
+ $data = explode("\r\n\r\n", $headers, $count);
+ $data = array_pop($data);
+ if (false !== stripos($data, "HTTP/1.0 200 Connection established\r\n\r\n")) {
+ $data = str_ireplace("HTTP/1.0 200 Connection established\r\n\r\n", '', $data);
+ }
+ if (false !== stripos($data, "HTTP/1.1 200 Connection established\r\n\r\n")) {
+ $data = str_ireplace("HTTP/1.1 200 Connection established\r\n\r\n", '', $data);
+ }
+ return $data;
+ }
}
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php
index 00f4179bf..2083e7a92 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Item.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php
@@ -477,15 +477,15 @@ class SimplePie_Item
$label = null;
if (isset($category['attribs']['']['term']))
{
- $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_HTML);
+ $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($category['attribs']['']['scheme']))
{
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_HTML);
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($category['attribs']['']['label']))
{
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_HTML);
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
}
$categories[] = $this->registry->create('Category', array($term, $scheme, $label, $type));
}
@@ -493,10 +493,10 @@ class SimplePie_Item
{
// This is really the label, but keep this as the term also for BC.
// Label will also work on retrieving because that falls back to term.
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
if (isset($category['attribs']['']['domain']))
{
- $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_HTML);
+ $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
}
else
{
@@ -508,11 +508,11 @@ class SimplePie_Item
$type = 'subject';
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, $type) as $category)
{
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type));
+ $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null, $type));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, $type) as $category)
{
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type));
+ $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null, $type));
}
if (!empty($categories))
@@ -649,7 +649,7 @@ class SimplePie_Item
$email = null;
if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
{
- $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
{
@@ -657,7 +657,7 @@ class SimplePie_Item
}
if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
{
- $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if ($name !== null || $email !== null || $uri !== null)
{
@@ -671,7 +671,7 @@ class SimplePie_Item
$email = null;
if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
{
- $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
{
@@ -679,7 +679,7 @@ class SimplePie_Item
}
if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
{
- $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+ $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
}
if ($name !== null || $email !== null || $url !== null)
{
@@ -688,19 +688,19 @@ class SimplePie_Item
}
if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author'))
{
- $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_HTML)));
+ $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
{
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
+ $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
{
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
+ $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
}
foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
{
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null));
+ $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
}
if (!empty($authors))
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
index 17139abe9..df1234023 100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Parser.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Parser.php
@@ -76,26 +76,17 @@ class SimplePie_Parser
public function parse(&$data, $encoding, $url = '')
{
- if (function_exists('Mf2\parse')) {
+ if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
+ $doc = new DOMDocument();
+ @$doc->loadHTML($data);
+ $xpath = new DOMXpath($doc);
// Check for both h-feed and h-entry, as both a feed with no entries
// and a list of entries without an h-feed wrapper are both valid.
- $position = 0;
- while ($position = strpos($data, 'h-feed', $position)) {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($data, $start, 400);
- if (preg_match('/class="[^"]*h-feed/', $check)) {
- return $this->parse_microformats($data, $url);
- }
- $position += 7;
- }
- $position = 0;
- while ($position = strpos($data, 'h-entry', $position)) {
- $start = $position < 200 ? 0 : $position - 200;
- $check = substr($data, $start, 400);
- if (preg_match('/class="[^"]*h-entry/', $check)) {
- return $this->parse_microformats($data, $url);
- }
- $position += 7;
+ $query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
+ 'contains(concat(" ", @class, " "), " h-entry ")]';
+ $result = $xpath->query($query);
+ if ($result->length !== 0) {
+ return $this->parse_microformats($data, $url);
}
}
@@ -465,7 +456,7 @@ class SimplePie_Parser
$h_feed = $mf_item;
break;
}
- // Also look for an h-feed in the children of each top level item.
+ // Also look for h-feed or h-entry in the children of each top level item.
if (!isset($mf_item['children'][0]['type'])) continue;
if (in_array('h-feed', $mf_item['children'][0]['type'])) {
$h_feed = $mf_item['children'][0];
@@ -474,6 +465,13 @@ class SimplePie_Parser
if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item;
break;
}
+ else if (in_array('h-entry', $mf_item['children'][0]['type'])) {
+ $entries = $mf_item['children'];
+ // In this case the parent of the h-entry list may be an h-card, so use
+ // it as the feed_author.
+ if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item;
+ break;
+ }
}
if (isset($h_feed['children'])) {
$entries = $h_feed['children'];
@@ -485,7 +483,7 @@ class SimplePie_Parser
$feed_author = $mf['items'][0]['properties']['author'][0];
}
}
- else {
+ else if (count($entries) === 0) {
$entries = $mf['items'];
}
for ($i = 0; $i < count($entries); $i++) {
@@ -554,18 +552,21 @@ class SimplePie_Parser
$photo_list = array();
for ($j = 0; $j < count($entry['properties']['photo']); $j++) {
$photo = $entry['properties']['photo'][$j];
- if (strpos($content, $photo) === false) {
+ if (!empty($photo) && strpos($content, $photo) === false) {
$photo_list[] = $photo;
}
}
// When there's more than one photo show the first and use a lightbox.
+ // Need a permanent, unique name for the image set, but don't have
+ // anything unique except for the content itself, so use that.
$count = count($photo_list);
if ($count > 1) {
+ $image_set_id = preg_replace('/[[:^alnum:]]/', '', $photo_list[0]);
$description = '<p>';
for ($j = 0; $j < $count; $j++) {
$hidden = $j === 0 ? '' : 'class="hidden" ';
$description .= '<a href="'.$photo_list[$j].'" '.$hidden.
- 'data-lightbox="image-set-'.$i.'">'.
+ 'data-lightbox="image-set-'.$image_set_id.'">'.
'<img src="'.$photo_list[$j].'"></a>';
}
$description .= '<br><b>'.$count.' photos</b></p>';
@@ -583,10 +584,18 @@ class SimplePie_Parser
$item['title'] = array(array('data' => $title));
}
$description .= $entry['properties']['content'][0]['html'];
- if (isset($entry['properties']['in-reply-to'][0]['value'])) {
- $in_reply_to = $entry['properties']['in-reply-to'][0]['value'];
- $description .= '<p><span class="in-reply-to"></span> '.
- '<a href="'.$in_reply_to.'">'.$in_reply_to.'</a><p>';
+ if (isset($entry['properties']['in-reply-to'][0])) {
+ $in_reply_to = '';
+ if (is_string($entry['properties']['in-reply-to'][0])) {
+ $in_reply_to = $entry['properties']['in-reply-to'][0];
+ }
+ else if (isset($entry['properties']['in-reply-to'][0]['value'])) {
+ $in_reply_to = $entry['properties']['in-reply-to'][0]['value'];
+ }
+ if ($in_reply_to !== '') {
+ $description .= '<p><span class="in-reply-to"></span> '.
+ '<a href="'.$in_reply_to.'">'.$in_reply_to.'</a><p>';
+ }
}
$item['description'] = array(array('data' => $description));
}
@@ -627,7 +636,7 @@ class SimplePie_Parser
$image = array(array('child' => array('' => array('url' =>
array(array('data' => $feed_author['properties']['photo'][0]))))));
}
- // Use the a name given for the h-feed, or get the title from the html.
+ // Use the name given for the h-feed, or get the title from the html.
if ($feed_title !== '') {
$feed_title = array(array('data' => htmlspecialchars($feed_title)));
}
diff --git a/vendor/simplepie/simplepie/library/SimplePie/Registry.php b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
index e0909bb74..e0909bb74 100755..100644
--- a/vendor/simplepie/simplepie/library/SimplePie/Registry.php
+++ b/vendor/simplepie/simplepie/library/SimplePie/Registry.php
diff --git a/vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt b/vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt
new file mode 100644
index 000000000..c943d9f2e
--- /dev/null
+++ b/vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt
@@ -0,0 +1,29 @@
+
+
+Starting with Smarty 3.1.21 Composer has been configured to load the packages from github.
+
+*******************************************************************************
+* *
+* NOTE: Because of this change you must clear your local composer cache with *
+* the "composer clearcache" command *
+* *
+*******************************************************************************
+
+To get the latest stable version use
+ "require": {
+ "smarty/smarty": "~3.1"
+ }
+in your composer.json file.
+
+To get the trunk version use
+ "require": {
+ "smarty/smarty": "~3.1@dev"
+ }
+
+The "smarty/smarty" package will start at libs/.... subfolder.
+
+To retrieve the development and documentation folders add
+ "require-dev": {
+ "smarty/smarty-dev": "~3.1@dev"
+ }
+
diff --git a/vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt b/vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt
new file mode 100644
index 000000000..c415c4ccd
--- /dev/null
+++ b/vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt
@@ -0,0 +1,87 @@
+3.1.31-dev
+New tags for inheritance parent and child
+{block_parent} == {$smarty.block.parent}
+{block_child} == {$smarty.block.child}
+
+Since 3.1.28 you can mix inheritance by extends resource with the {extends} tag.
+A template called by extends resource can extend a subtemplate or chain buy the {extends} tag.
+Since 3.1.31 this feature can be turned off by setting the new Smarty property Smarty::$extends_recursion to false.
+
+
+3.1.28
+Starting with version 3.1.28 template inheritance is no longer a compile time process.
+All {block} tag parent/child relations are resolved at run time.
+This does resolve all known existing restrictions (see below).
+
+The $smarty::$inheritance_merge_compiled_includes property has been removed.
+Any access to it is ignored.
+
+New features:
+
+Any code outside root {block} tags in child templates is now executed but any output will be ignored.
+
+ {extends 'foo.tpl'}
+ {$bar = 'on'} // assigns variable $bar seen in parent templates
+ {block 'buh'}{/block}
+
+ {extends 'foo.tpl'}
+ {$bar} // the output of variable bar is ignored
+ {block 'buh'}{/block}
+
+{block} tags can be dynamically en/disabled by conditions.
+
+ {block 'root'}
+ {if $foo}
+ {block 'v1'}
+ ....
+ {/block}
+ {else}
+ {block 'v1'}
+ ....
+ {/block}
+ {/if}
+ {/block}
+
+{block} tags can have variable names.
+
+ {block $foo}
+ ....
+ {/block}
+
+Starting with 3.1.28 you can mix inheritance by extends resource with the {extends} tag.
+A template called by extends resource can extend a subtemplate or chain buy the {extends} tag.
+
+NOTE There is a BC break. If you used the extends resource {extends} tags have been ignored.
+
+THE FOLLOWING RESTRICTIONS ARE NO LONGER EXISTING:
+In Smarty 3.1 template inheritance is a compile time process. All the extending of {block} tags
+is done at compile time and the parent and child templates are compiled in a single compiled template.
+{include} subtemplate could also {block} tags. Such subtemplate could not compiled by it's own because
+it could be used in other context where the {block} extended with a different result. For that reasion
+the compiled code of {include} subtemplates gets also merged in compiled inheritance template.
+
+Merging the code into a single compile template has some drawbacks.
+1. You could not use variable file names in {include} Smarty would use the {include} of compilation time.
+2. You could not use individual compile_id in {include}
+3. Seperate caching of subtemplate was not possible
+4. Any change of the template directory structure between calls was not necessarily seen.
+
+Starting with 3.1.15 some of the above conditions got checked and resulted in an exception. It turned out
+that a couple of users did use some of above and now got exceptions.
+
+To resolve this starting with 3.1.16 there is a new configuration parameter $inheritance_merge_compiled_includes.
+For most backward compatibility its default setting is true.
+With this setting all {include} subtemplate will be merge into the compiled inheritance template, but the above cases
+could be rejected by exception.
+
+
+If $smarty->inheritance_merge_compiled_includes = false; {include} subtemplate will not be merged.
+You must now manually merge all {include} subtemplate which do contain {block} tags. This is done by setting the "inline" option.
+{include file='foo.bar' inline}
+
+1. In case of a variable file name like {include file=$foo inline} you must use the variable in a compile_id $smarty->compile_id = $foo;
+2. If you use individual compile_id in {include file='foo.tpl' compile_id=$bar inline} it must be used in the
+ global compile_id as well $smarty->compile_id = $bar;
+3. If call templates with different template_dir configurations and a parent could same named child template from different folders
+ you must make the folder name part of the compile_id.
+
diff --git a/vendor/smarty/smarty/LICENSE b/vendor/smarty/smarty/LICENSE
new file mode 100644
index 000000000..fb8ca6c6f
--- /dev/null
+++ b/vendor/smarty/smarty/LICENSE
@@ -0,0 +1,179 @@
+Smarty: the PHP compiling template engine
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ See the GNU Lesser General Public License below for more details.
+
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/vendor/smarty/smarty/NEW_FEATURES.txt b/vendor/smarty/smarty/NEW_FEATURES.txt
new file mode 100644
index 000000000..adbc1099b
--- /dev/null
+++ b/vendor/smarty/smarty/NEW_FEATURES.txt
@@ -0,0 +1,239 @@
+
+
+This file contains a brief description of new features which have been added to Smarty 3.1
+
+Smarty 3.1.31
+ New tags for inheritance parent and child
+ =========================================
+ {block_parent} == {$smarty.block.parent}
+ {block_child} == {$smarty.block.child}
+
+Smarty 3.1.30
+
+ Loop optimization {foreach} and {section}
+ =========================================
+ Smarty does optimize the {foreach} and {section} loops by removing code for not needed loop
+ properties.
+ The compiler collects needed properties by scanning the current template for $item@property,
+ $smarty.foreach.name.property and $smarty.section.name.property.
+ The compiler does not know if additional properties will be needed outside the current template scope.
+ Additional properties can be generated by adding them with the property attribute.
+
+ Example:
+ index.tpl
+ {foreach $from as $item properties=[iteration, index]}
+ {include 'sub.tpl'}
+ {$item.total}
+ {/foreach}
+
+ sub.tpl
+ {$item.index} {$item.iteration} {$item.total}
+
+ In above example code for the 'total' property is automatically generated as $item.total is used in
+ index.tpl. Code for 'iteration' and 'index' must be added with properties=[iteration, index].
+
+ New tag {make_nocache}
+ ======================
+ Syntax: {make_nocache $foo}
+
+ This tag makes a variable which does exists normally only while rendering the compiled template
+ available in the cached template for use in not cached expressions.
+
+ Expample:
+ {foreach from=$list item=item}
+ <li>{$item.name} {make_nocache $item}{if $current==$item.id} ACTIVE{/if}</li>
+ {/foreach}
+
+ The {foreach} loop is rendered while processing the compiled template, but $current is a nocache
+ variable. Normally the {if $current==$item.id} would fail as the $item variable is unkown in the
+ cached template. {make_nocache $item} does make the current $item value known in thee cached template.
+
+ {make_nocache} is ignored when caching is disabled or the variable does exists as nocache variable.
+
+ NOTE: if the variable value does contain objects these must have the __set_state method implemented.
+
+
+ Scope Attributes
+ ================
+ The scope handling has been updated to cover all cases of variable assignments in templates.
+
+ The tags {assign}, {append} direct assignments like {$foo = ...}, {$foo[...]= ...} support
+ the following optional scope attributes:
+ scope='parent' - the variable will be assigned in the current template and if the template
+ was included by {include} the calling template
+ scope='tpl_root' - the variable will be assigned in the outermost root template called by $smarty->display()
+ or $smarty->fetch() and is bubbled up all {include} sub-templates to the current template.
+ scope='smarty' - the variable will be assigned in the Smarty object and is bubbled up all {include} sub-templates
+ to the current template.
+ scope='global' - the variable will be assigned as Smarty object global variable and is bubbled up all {include}
+ sub-templates to the current template.
+ scope='root' - the variable will be assigned if a data object was used for variable definitions in the data
+ object or in the Smarty object otherwise and is bubbled up all {include} sub-templates to the
+ current template.
+ scope='local' - this scope has only a meaning if the tag is called within a template {function}.
+ The variable will be assigned in the local scope of the template function and the
+ template which did call the template function.
+
+
+ The {config_load} tag supports all of the above except the global scope.
+
+ The scope attribute can be used also with the {include} tag.
+ Supported scope are parent, tpl_root, smarty, global and root.
+ A scope used together with the {include} tag will cause that with some exceptions any variable
+ assignment within that sub-template will update/assign the variable in other scopes according
+ to the above rules. It does include also variables assigned by plugins, tags supporting the assign=foo
+ attribute and direct assignments in {if} and {while} like {if $foo=$bar}.
+ Excluded are the key and value variables of {foreach}, {for} loop variables , variables passed by attributes
+ in {include} and direct increments/decrements like {$foo++}, {$foo--}
+
+ Note: The scopes should be used only to the extend really need. If a variable value assigned in an included
+ sub-template should be returned to the calling sub-template just use {$foo='bar' scope='parent'}.
+ Use scopes only with variables for which it's realy needed. Avoid general scope settings with the
+ {include} tag as it can have a performance impact.
+
+ The {assign}, {append}, {config_load} and {$foo...=...} tags have a new option flag 'noscope'.Thi
+ Example: {$foo='bar' noscope} This will assign $foo only in the current template and any scope settings
+ at {include} is ignored.
+
+
+ Caching
+ =======
+ Caching does now observe the template_dir setting and will create separate cache files if required
+
+ Compiled Templates
+ ==================
+ The template_dir setting is now encoded in the uid of the file name.
+ The content of the compiled template may depend on the template_dir search order
+ {include .... inline} is used or $smarty->merge_compiled_includes is enabled
+
+ APC
+ ===
+ If APC is enabled force an apc_compile_file() when compiled or cached template was updated
+
+Smarty 3.1.28
+
+ OPCACHE
+ =======
+ Smarty does now invalidate automatically updated and cleared compiled or cached template files in OPCACHE.
+ Correct operation is no longer dependent on OPCACHE configuration settings.
+
+ Template inheritance
+ ====================
+ Template inheritance is now processed in run time.
+ See the INHERITANCE_RELEASE_NOTES
+
+ Modifier regex_replace
+ ======================
+ An optional limit parameter was added
+
+ fetch() and display()
+ =====================
+ The fetch() and display() methods of the template object accept now optionally the same parameter
+ as the corresponding Smarty methods to get the content of another template.
+ Example:
+ $template->display(); Does display template of template object
+ $template->display('foo.tpl'); Does display template 'foo.bar'
+
+ File: resource
+ ==============
+ Multiple template_dir entries can now be selected by a comma separated list of indices.
+ The template_dir array is searched in the order of the indices. (Could be used to change the default search order)
+ Example:
+ $smarty->display('[1],[0]foo.bar');
+
+ Filter support
+ ==============
+ Optional filter names
+ An optional filter name was added to $smarty->registerFilter(). It can be used to unregister a filter by name.
+ - $smarty->registerFilter('output', $callback, 'name');
+ $smarty->unregister('output', 'name');
+
+ Closures
+ $smarty->registerFilter() does now accept closures.
+ - $smarty->registerFilter('pre', function($source) {return $source;});
+ If no optional filter name was specified it gets the default name 'closure'.
+ If you register multiple closures register each with a unique filter name.
+ - $smarty->registerFilter('pre', function($source) {return $source;}, 'closure_1');
+ - $smarty->registerFilter('pre', function($source) {return $source;}, 'closure_2');
+
+
+Smarty 3.1.22
+
+ Namespace support within templates
+ ==================================
+ Within templates you can now use namespace specifications on:
+ - Constants like foo\bar\FOO
+ - Class names like foo\bar\Baz::FOO, foo\bar\Baz::$foo, foo\bar\Baz::foo()
+ - PHP function names like foo\bar\baz()
+
+ Security
+ ========
+ - disable special $smarty variable -
+ The Smarty_Security class has the new property $disabled_special_smarty_vars.
+ It's an array which can be loaded with the $smarty special variable names like
+ 'template_object', 'template', 'current_dir' and others which will be disabled.
+ Note: That this security check is performed at compile time.
+
+ - limit template nesting -
+ Property $max_template_nesting of Smarty_Security does set the maximum template nesting level.
+ The main template is level 1. The nesting level is checked at run time. When the maximum will be exceeded
+ an Exception will be thrown. The default setting is 0 which does disable this check.
+
+ - trusted static methods -
+ The Smarty_Security class has the new property $trusted_static_methods to restrict access to static methods.
+ It's an nested array of trusted class and method names.
+ Format:
+ array (
+ 'class_1' => array('method_1', 'method_2'), // allowed methods
+ 'class_2' => array(), // all methods of class allowed
+ )
+ To disable access for all methods of all classes set $trusted_static_methods = null;
+ The default value is an empty array() which does enables all methods of all classes, but for backward compatibility
+ the setting of $static_classes will be checked.
+ Note: That this security check is performed at compile time.
+
+ - trusted static properties -
+ The Smarty_Security class has the new property $trusted_static_properties to restrict access to static properties.
+ It's an nested array of trusted class and property names.
+ Format:
+ array (
+ 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
+ 'class_2' => array(), // all properties of class allowed
+ }
+ To disable access for all properties of all classes set $trusted_static_properties = null;
+ The default value is an empty array() which does enables all properties of all classes, but for backward compatibility
+ the setting of $static_classes will be checked.
+ Note: That this security check is performed at compile time.
+
+ - trusted constants .
+ The Smarty_Security class has the new property $trusted_constants to restrict access to constants.
+ It's an array of trusted constant names.
+ Format:
+ array (
+ 'SMARTY_DIR' , // allowed constant
+ }
+ If the array is empty (default) the usage of constants can be controlled with the
+ Smarty_Security::$allow_constants property (default true)
+
+
+
+ Compiled Templates
+ ==================
+ Smarty does now automatically detects a change of the $merge_compiled_includes and $escape_html
+ property and creates different compiled templates files depending on the setting.
+
+ Same applies to config files and the $config_overwrite, $config_booleanize and
+ $config_read_hidden properties.
+
+ Debugging
+ =========
+ The layout of the debug window has been changed for better readability
+
+ New class constants
+ Smarty::DEBUG_OFF
+ Smarty::DEBUG_ON
+ Smarty::DEBUG_INDIVIDUAL
+ have been introduced for setting the $debugging property.
+
+ Smarty::DEBUG_INDIVIDUAL will create for each display() and fetch() call an individual debug window.
+
diff --git a/library/Smarty/README b/vendor/smarty/smarty/README
index 08b397c3f..08b397c3f 100644
--- a/library/Smarty/README
+++ b/vendor/smarty/smarty/README
diff --git a/vendor/smarty/smarty/README.md b/vendor/smarty/smarty/README.md
new file mode 100644
index 000000000..5783eb3e0
--- /dev/null
+++ b/vendor/smarty/smarty/README.md
@@ -0,0 +1,65 @@
+#Smarty 3 template engine
+##Distribution repository
+
+> Smarty 3.1.28 introduces run time template inheritance
+
+> Read the NEW_FEATURES and INHERITANCE_RELEASE_NOTES file for recent extensions to Smarty 3.1 functionality
+
+Smarty versions 3.1.11 or later are now on github and can be installed with Composer.
+
+
+The "smarty/smarty" package will start at libs/.... subfolder.
+
+To get the latest stable version of Smarty 3.1 use
+
+```json
+"require": {
+ "smarty/smarty": "~3.1"
+}
+```
+
+in your composer.json file.
+
+To get the trunk version use
+
+```json
+"require": {
+ "smarty/smarty": "~3.1@dev"
+}
+```
+
+For a specific version use something like
+
+```json
+"require": {
+ "smarty/smarty": "3.1.19"
+}
+```
+
+PHPUnit test can be installed by corresponding composer entries like
+
+```json
+"require": {
+ "smarty/smarty-phpunit": "3.1.19"
+}
+```
+
+Similar applies for the lexer/parser generator
+
+```json
+"require": {
+ "smarty/smarty-lexer": "3.1.19"
+}
+```
+
+Or you could use
+
+```json
+"require": {
+ "smarty/smarty-dev": "3.1.19"
+}
+```
+
+Which is a wrapper to install all 3 packages
+
+Composer can also be used for Smarty2 versions 2.6.24 to 2.6.28
diff --git a/vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt b/vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt
new file mode 100644
index 000000000..79a2cb1b6
--- /dev/null
+++ b/vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt
@@ -0,0 +1,109 @@
+= Known incompatibilities with Smarty 2 =
+
+== Syntax ==
+
+Smarty 3 API has a new syntax. Much of the Smarty 2 syntax is supported
+by a wrapper but deprecated. See the README that comes with Smarty 3 for more
+information.
+
+The {$array|@mod} syntax has always been a bit confusing, where an "@" is required
+to apply a modifier to an array instead of the individual elements. Normally you
+always want the modifier to apply to the variable regardless of its type. In Smarty 3,
+{$array|mod} and {$array|@mod} behave identical. It is safe to drop the "@" and the
+modifier will still apply to the array. If you really want the modifier to apply to
+each array element, you must loop the array in-template, or use a custom modifier that
+supports array iteration. Most smarty functions already escape values where necessary
+such as {html_options}
+
+== PHP Version ==
+Smarty 3 is PHP 5 only. It will not work with PHP 4.
+
+== {php} Tag ==
+The {php} tag is disabled by default. The use of {php} tags is
+deprecated. It can be enabled with $smarty->allow_php_tag=true.
+
+But if you scatter PHP code which belongs together into several
+{php} tags it may not work any longer.
+
+== Delimiters and whitespace ==
+Delimiters surrounded by whitespace are no longer treated as Smarty tags.
+Therefore, { foo } will not compile as a tag, you must use {foo}. This change
+Makes Javascript/CSS easier to work with, eliminating the need for {literal}.
+This can be disabled by setting $smarty->auto_literal = false;
+
+== Unquoted Strings ==
+Smarty 2 was a bit more forgiving (and ambiguous) when it comes to unquoted strings
+in parameters. Smarty3 is more restrictive. You can still pass strings without quotes
+so long as they contain no special characters. (anything outside of A-Za-z0-9_)
+
+For example filename strings must be quoted
+<source lang="smarty">
+{include file='path/foo.tpl'}
+</source>
+
+== Extending the Smarty class ==
+Smarty 3 makes use of the __construct method for initialization. If you are extending
+the Smarty class, its constructor is not called implicitly if the your child class defines
+its own constructor. In order to run Smarty's constructor, a call to parent::__construct()
+within your child constructor is required.
+
+<source lang="php">
+class MySmarty extends Smarty {
+ function __construct() {
+ parent::__construct();
+
+ // your initialization code goes here
+
+ }
+}
+</source>
+
+== Autoloader ==
+Smarty 3 does register its own autoloader with spl_autoload_register. If your code has
+an existing __autoload function then this function must be explicitly registered on
+the __autoload stack. See http://us3.php.net/manual/en/function.spl-autoload-register.php
+for further details.
+
+== Plugin Filenames ==
+Smarty 3 optionally supports the PHP spl_autoloader. The autoloader requires filenames
+to be lower case. Because of this, Smarty plugin file names must also be lowercase.
+In Smarty 2, mixed case file names did work.
+
+== Scope of Special Smarty Variables ==
+In Smarty 2 the special Smarty variables $smarty.section... and $smarty.foreach...
+had global scope. If you had loops with the same name in subtemplates you could accidentally
+overwrite values of parent template.
+
+In Smarty 3 these special Smarty variable have only local scope in the template which
+is defining the loop. If you need their value in a subtemplate you have to pass them
+as parameter.
+<source lang="smarty">
+{include file='path/foo.tpl' index=$smarty.section.foo.index}
+</source>
+
+== SMARTY_RESOURCE_CHAR_SET ==
+Smarty 3 sets the constant SMARTY_RESOURCE_CHAR_SET to utf-8 as default template charset.
+This is now used also on modifiers like escape as default charset. If your templates use
+other charsets make sure that you define the constant accordingly. Otherwise you may not
+get any output.
+
+== newline at {if} tags ==
+A \n was added to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source.
+If one of the {if} tags is at the line end you will now get a newline in the HTML output.
+
+== trigger_error() ==
+The API function trigger_error() has been removed because it did just map to PHP trigger_error.
+However it's still included in the Smarty2 API wrapper.
+
+== Smarty constants ==
+The constants
+SMARTY_PHP_PASSTHRU
+SMARTY_PHP_QUOTE
+SMARTY_PHP_REMOVE
+SMARTY_PHP_ALLOW
+have been replaced with class constants
+Smarty::PHP_PASSTHRU
+Smarty::PHP_QUOTE
+Smarty::PHP_REMOVE
+Smarty::PHP_ALLOW
+
diff --git a/vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt b/vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt
new file mode 100644
index 000000000..fd8b540c2
--- /dev/null
+++ b/vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt
@@ -0,0 +1,24 @@
+== Smarty2 backward compatibility ==
+All Smarty2 specific API functions and deprecated functionallity has been moved
+to the SmartyBC class.
+
+== {php} Tag ==
+The {php} tag is no longer available in the standard Smarty calls.
+The use of {php} tags is deprecated and only available in the SmartyBC class.
+
+== {include_php} Tag ==
+The {include_php} tag is no longer available in the standard Smarty calls.
+The use of {include_php} tags is deprecated and only available in the SmartyBC class.
+
+== php template resource ==
+The support of the php template resource is removed.
+
+== $cache_dir, $compile_dir, $config_dir, $template_dir access ==
+The mentioned properties can't be accessed directly any longer. You must use
+corresponding getter/setters like addConfigDir(), setConfigDir(), getConfigDir()
+
+== obsolete Smarty class properties ==
+The following no longer used properties are removed:
+$allow_php_tag
+$allow_php_template
+$deprecation_notices \ No newline at end of file
diff --git a/vendor/smarty/smarty/SMARTY_3.1_NOTES.txt b/vendor/smarty/smarty/SMARTY_3.1_NOTES.txt
new file mode 100644
index 000000000..57709f0d7
--- /dev/null
+++ b/vendor/smarty/smarty/SMARTY_3.1_NOTES.txt
@@ -0,0 +1,306 @@
+Smarty 3.1 Notes
+================
+
+Smarty 3.1 is a departure from 2.0 compatibility. Most notably, all
+backward compatibility has been moved to a separate class file named
+SmartyBC.class.php. If you require compatibility with 2.0, you will
+need to use this class.
+
+Some differences from 3.0 are also present. 3.1 begins the journey of
+requiring setters/getters for property access. So far this is only
+implemented on the five directory properties: template_dir,
+plugins_dir, configs_dir, compile_dir and cache_dir. These properties
+are now protected, it is required to use the setters/getters instead.
+That said, direct property access will still work, however slightly
+slower since they will now fall through __set() and __get() and in
+turn passed through the setter/getter methods. 3.2 will exhibit a full
+list of setter/getter methods for all (currently) public properties,
+so code-completion in your IDE will work as expected.
+
+There is absolutely no PHP allowed in templates any more. All
+deprecated features of Smarty 2.0 are gone. Again, use the SmartyBC
+class if you need any backward compatibility.
+
+Internal Changes
+
+ Full UTF-8 Compatibility
+
+The plugins shipped with Smarty 3.1 have been rewritten to fully
+support UTF-8 strings if Multibyte String is available. Without
+MBString UTF-8 cannot be handled properly. For those rare cases where
+templates themselves have to juggle encodings, the new modifiers
+to_charset and from_charset may come in handy.
+
+ Plugin API and Performance
+
+All Plugins (modifiers, functions, blocks, resources,
+default_template_handlers, etc) are now receiving the
+Smarty_Internal_Template instance, where they were supplied with the
+Smarty instance in Smarty 3.0. *. As The Smarty_Internal_Template
+mimics the behavior of Smarty, this API simplification should not
+require any changes to custom plugins.
+
+The plugins shipped with Smarty 3.1 have been rewritten for better
+performance. Most notably {html_select_date} and {html_select_time}
+have been improved vastly. Performance aside, plugins have also been
+reviewed and generalized in their API. {html_select_date} and
+{html_select_time} now share almost all available options.
+
+The escape modifier now knows the $double_encode option, which will
+prevent entities from being encoded again.
+
+The capitalize modifier now know the $lc_rest option, which makes sure
+all letters following a captial letter are lower-cased.
+
+The count_sentences modifier now accepts (.?!) as
+legitimate endings of a sentence - previously only (.) was
+accepted
+
+The new unescape modifier is there to reverse the effects of the
+escape modifier. This applies to the escape formats html, htmlall and
+entity.
+
+ default_template_handler_func
+
+The invocation of $smarty->$default_template_handler_func had to be
+altered. Instead of a Smarty_Internal_Template, the fifth argument is
+now provided with the Smarty instance. New footprint:
+
+
+/**
+ * Default Template Handler
+ *
+ * called when Smarty's file: resource is unable to load a requested file
+ *
+ * @param string $type resource type (e.g. "file", "string", "eval", "resource")
+ * @param string $name resource name (e.g. "foo/bar.tpl")
+ * @param string &$content template's content
+ * @param integer &$modified template's modification time
+ * @param Smarty $smarty Smarty instance
+ * @return string|boolean path to file or boolean true if $content and $modified
+ * have been filled, boolean false if no default template
+ * could be loaded
+ */
+function default_template_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (false) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (false) {
+ // return a template directly
+ $content = "the template source";
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+}
+
+ Stuff done to the compiler
+
+Many performance improvements have happened internally. One notable
+improvement is that all compiled templates are now handled as PHP
+functions. This speeds up repeated templates tremendously, as each one
+calls an (in-memory) PHP function instead of performing another file
+include/scan.
+
+New Features
+
+ Template syntax
+
+ {block}..{/block}
+
+The {block} tag has a new hide option flag. It does suppress the block
+content if no corresponding child block exists.
+EXAMPLE:
+parent.tpl
+{block name=body hide} child content "{$smarty.block.child}" was
+inserted {block}
+In the above example the whole block will be suppressed if no child
+block "body" is existing.
+
+ {setfilter}..{/setfilter}
+
+The new {setfilter} block tag allows the definition of filters which
+run on variable output.
+SYNTAX:
+{setfilter filter1|filter2|filter3....}
+Smarty3 will lookup up matching filters in the following search order:
+1. varibale filter plugin in plugins_dir.
+2. a valid modifier. A modifier specification will also accept
+additional parameter like filter2:'foo'
+3. a PHP function
+{/setfilter} will turn previous filter setting off again.
+{setfilter} tags can be nested.
+EXAMPLE:
+{setfilter filter1}
+ {$foo}
+ {setfilter filter2}
+ {$bar}
+ {/setfilter}
+ {$buh}
+{/setfilter}
+{$blar}
+In the above example filter1 will run on the output of $foo, filter2
+on $bar, filter1 again on $buh and no filter on $blar.
+NOTES:
+- {$foo nofilter} will suppress the filters
+- These filters will run in addition to filters defined by
+registerFilter('variable',...), autoLoadFilter('variable',...) and
+defined default modifier.
+- {setfilter} will effect only the current template, not included
+subtemplates.
+
+ Resource API
+
+Smarty 3.1 features a new approach to resource management. The
+Smarty_Resource API allows simple, yet powerful integration of custom
+resources for templates and configuration files. It offers simple
+functions for loading data from a custom resource (e.g. database) as
+well as define new template types adhering to the special
+non-compiling (e,g, plain php) and non-compile-caching (e.g. eval:
+resource type) resources.
+
+See demo/plugins/resource.mysql.php for an example custom database
+resource.
+
+Note that old-fashioned registration of callbacks for resource
+management has been deprecated but is still possible with SmartyBC.
+
+ CacheResource API
+
+In line with the Resource API, the CacheResource API offers a more
+comfortable handling of output-cache data. With the
+Smarty_CacheResource_Custom accessing databases is made simple. With
+the introduction of Smarty_CacheResource_KeyValueStore the
+implementation of resources like memcache or APC became a no-brainer;
+simple hash-based storage systems are now supporting hierarchical
+output-caches.
+
+See demo/plugins/cacheresource.mysql.php for an example custom
+database CacheResource.
+See demo/plugins/cacheresource.memcache.php for an example custom
+memcache CacheResource using the KeyValueStore helper.
+
+Note that old-fashioned registration of $cache_handler is not possible
+anymore. As the functionality had not been ported to Smarty 3.0.x
+properly, it has been dropped from 3.1 completely.
+
+Locking facilities have been implemented to avoid concurrent cache
+generation. Enable cache locking by setting
+$smarty->cache_locking = true;
+
+ Relative Paths in Templates (File-Resource)
+
+As of Smarty 3.1 {include file="../foo.tpl"} and {include
+file="./foo.tpl"} will resolve relative to the template they're in.
+Relative paths are available with {include file="..."} and
+{extends file="..."}. As $smarty->fetch('../foo.tpl') and
+$smarty->fetch('./foo.tpl') cannot be relative to a template, an
+exception is thrown.
+
+ Addressing a specific $template_dir
+
+Smarty 3.1 introduces the $template_dir index notation.
+$smarty->fetch('[foo]bar.tpl') and {include file="[foo]bar.tpl"}
+require the template bar.tpl to be loaded from $template_dir['foo'];
+Smarty::setTemplateDir() and Smarty::addTemplateDir() offer ways to
+define indexes along with the actual directories.
+
+ Mixing Resources in extends-Resource
+
+Taking the php extends: template resource one step further, it is now
+possible to mix resources within an extends: call like
+$smarty->fetch("extends:file:foo.tpl|db:bar.tpl");
+
+To make eval: and string: resources available to the inheritance
+chain, eval:base64:TPL_STRING and eval:urlencode:TPL_STRING have been
+introduced. Supplying the base64 or urlencode flags will trigger
+decoding the TPL_STRING in with either base64_decode() or urldecode().
+
+ extends-Resource in template inheritance
+
+Template based inheritance may now inherit from php's extends:
+resource like {extends file="extends:foo.tpl|db:bar.tpl"}.
+
+ New Smarty property escape_html
+
+$smarty->escape_html = true will autoescape all template variable
+output by calling htmlspecialchars({$output}, ENT_QUOTES,
+SMARTY_RESOURCE_CHAR_SET).
+NOTE:
+This is a compile time option. If you change the setting you must make
+sure that the templates get recompiled.
+
+ New option at Smarty property compile_check
+
+The automatic recompilation of modified templates can now be
+controlled by the following settings:
+$smarty->compile_check = COMPILECHECK_OFF (false) - template files
+will not be checked
+$smarty->compile_check = COMPILECHECK_ON (true) - template files will
+always be checked
+$smarty->compile_check = COMPILECHECK_CACHEMISS - template files will
+be checked if caching is enabled and there is no existing cache file
+or it has expired
+
+ Automatic recompilation on Smarty version change
+
+Templates will now be automatically recompiled on Smarty version
+changes to avoide incompatibillities in the compiled code. Compiled
+template checked against the current setting of the SMARTY_VERSION
+constant.
+
+ default_config_handler_func()
+
+Analogous to the default_template_handler_func()
+default_config_handler_func() has been introduced.
+
+ default_plugin_handler_func()
+
+An optional default_plugin_handler_func() can be defined which gets called
+by the compiler on tags which can't be resolved internally or by plugins.
+The default_plugin_handler() can map tags to plugins on the fly.
+
+New getters/setters
+
+The following setters/getters will be part of the official
+documentation, and will be strongly recommended. Direct property
+access will still work for the foreseeable future... it will be
+transparently routed through the setters/getters, and consequently a
+bit slower.
+
+array|string getTemplateDir( [string $index] )
+replaces $smarty->template_dir; and $smarty->template_dir[$index];
+Smarty setTemplateDir( array|string $path )
+replaces $smarty->template_dir = "foo"; and $smarty->template_dir =
+array("foo", "bar");
+Smarty addTemplateDir( array|string $path, [string $index])
+replaces $smarty->template_dir[] = "bar"; and
+$smarty->template_dir[$index] = "bar";
+
+array|string getConfigDir( [string $index] )
+replaces $smarty->config_dir; and $smarty->config_dir[$index];
+Smarty setConfigDir( array|string $path )
+replaces $smarty->config_dir = "foo"; and $smarty->config_dir =
+array("foo", "bar");
+Smarty addConfigDir( array|string $path, [string $index])
+replaces $smarty->config_dir[] = "bar"; and
+$smarty->config_dir[$index] = "bar";
+
+array getPluginsDir()
+replaces $smarty->plugins_dir;
+Smarty setPluginsDir( array|string $path )
+replaces $smarty->plugins_dir = "foo";
+Smarty addPluginsDir( array|string $path )
+replaces $smarty->plugins_dir[] = "bar";
+
+string getCompileDir()
+replaces $smarty->compile_dir;
+Smarty setCompileDir( string $path )
+replaces $smarty->compile_dir = "foo";
+
+string getCacheDir()
+replaces $smarty->cache_dir;
+Smarty setCacheDir( string $path )
+replaces $smarty->cache_dir;
diff --git a/vendor/smarty/smarty/change_log.txt b/vendor/smarty/smarty/change_log.txt
new file mode 100644
index 000000000..1d42b0a76
--- /dev/null
+++ b/vendor/smarty/smarty/change_log.txt
@@ -0,0 +1,3201 @@
+===== 3.1.31 ===== (14.12.2016)
+ 23.11.2016
+ - move template object cache into static variables
+
+ 19.11.2016
+ - bugfix inheritance root child templates containing nested {block}{/block} could call sub-bock content from parent
+ template https://github.com/smarty-php/smarty/issues/317
+ - change version checking
+
+ 11.11.2016
+ - bugfix when Smarty is using a cached template object on Smarty::fetch() or Smarty::isCached() the inheritance data
+ must be removed https://github.com/smarty-php/smarty/issues/312
+ - smaller speed optimization
+
+ 08.11.2016
+ - add bootstrap file to load and register Smarty_Autoloader. Change composer.json to make it known to composer
+
+ 07.11.2016
+ - optimization of lexer speed https://github.com/smarty-php/smarty/issues/311
+
+ 27.10.2016
+ - bugfix template function definitions array has not been cached between Smarty::fetch() and Smarty::display() calls
+ https://github.com/smarty-php/smarty/issues/301
+
+ 23.10.2016
+ - improvement/bugfix when Smarty::fetch() is called on a template object the inheritance and tplFunctions property
+ should be copied to the called template object
+
+ 21.10.2016
+ - bugfix for compile locking touched timestamp of old compiled file was not restored on compilation error https://github.com/smarty-php/smarty/issues/308
+
+ 20.10.2016
+ - bugfix nocache code was not removed in cache file when subtemplate did contain PHP short tags in text but no other
+ nocache code https://github.com/smarty-php/smarty/issues/300
+
+ 19.10.2016
+ - bugfix {make_nocache $var} did fail when variable value did contain '\' https://github.com/smarty-php/smarty/issues/305
+ - bugfix {make_nocache $var} remove spaces from variable value https://github.com/smarty-php/smarty/issues/304
+
+ 12.10.2016
+ - bugfix {include} with template names including variable or constants could fail after bugfix from
+ 28.09.2016 https://github.com/smarty-php/smarty/issues/302
+
+ 08.10.2016
+ - optimization move runtime extension for template functions into Smarty objects
+
+ 29.09.2016
+ - improvement new Smarty::$extends_recursion property to disable execution of {extends} in templates called by extends resource
+ https://github.com/smarty-php/smarty/issues/296
+
+ 28.09.2016
+ - bugfix the generated code for calling a subtemplate must pass the template resource name in single quotes https://github.com/smarty-php/smarty/issues/299
+ - bugfix nocache hash was not removed for <?xml ?> tags in subtemplates https://github.com/smarty-php/smarty/issues/300
+
+ 27.09.2016
+ - bugfix when Smarty does use an internally cached template object on Smarty::fetch() calls
+ the template and config variables must be cleared https://github.com/smarty-php/smarty/issues/297
+
+ 20.09.2016
+ - bugfix some $smarty special template variables are no longer accessed as real variable.
+ using them on calls like {if isset($smarty.foo)} or {if empty($smarty.foo)} will fail
+ http://www.smarty.net/forums/viewtopic.php?t=26222
+ - temporary fix for https://github.com/smarty-php/smarty/issues/293 main reason still under investigation
+ - improvement new tags {block_parent} {block_child} in template inheritance
+
+ 19.09.2016
+ - optimization clear compiled and cached folder completely on detected version change
+ - cleanup convert cache resource file method clear into runtime extension
+
+ 15.09.2016
+ - bugfix assigning a variable in if condition by function like {if $value = array_shift($array)} the function got called twice https://github.com/smarty-php/smarty/issues/291
+ - bugfix function plugins called with assign attribute like {foo assign='bar'} did not output returned content because
+ because assumption was made that it was assigned to a variable https://github.com/smarty-php/smarty/issues/292
+ - bugfix calling $smarty->isCached() on a not existing cache file with $smarty->cache_locking = true; could cause a 10 second delay http://www.smarty.net/forums/viewtopic.php?t=26282
+ - improvement make Smarty::clearCompiledTemplate() on custom resource independent from changes of templateId computation
+
+ 11.09.2016
+ - improvement {math} misleading E_USER_WARNING messages when parameter value = null https://github.com/smarty-php/smarty/issues/288
+ - improvement move often used code snippets into methods
+ - performance Smarty::configLoad() did load unneeded template source object
+
+ 09.09.2016
+ - bugfix/optimization {foreach} did not execute the {foreachelse} when iterating empty objects https://github.com/smarty-php/smarty/pull/287
+ - bugfix {foreach} must keep the @properties when restoring a saved $item variable as the properties might be used outside {foreach} https://github.com/smarty-php/smarty/issues/267
+ - improvement {foreach} observe {break n} and {continue n} nesting levels when restoring saved $item and $key variables
+
+ 08.09.2016
+ - bugfix implement wrapper for removed method getConfigVariable() https://github.com/smarty-php/smarty/issues/286
+
+ 07.09.2016
+ - bugfix using nocache like attribute with value true like {plugin nocache=true} did not work https://github.com/smarty-php/smarty/issues/285
+ - bugfix uppercase TRUE, FALSE and NULL did not work when security was enabled https://github.com/smarty-php/smarty/issues/282
+ - bugfix when {foreach} was looping over an object the total property like {$item@total} did always return 1 https://github.com/smarty-php/smarty/issues/281
+ - bugfix {capture}{/capture} did add in 3.1.30 unintended additional blank lines https://github.com/smarty-php/smarty/issues/268
+
+ 01.09.2016
+ - performance require_once should be called only once for shared plugins https://github.com/smarty-php/smarty/issues/280
+
+ 26.08.2016
+ - bugfix change of 23.08.2016 failed on linux when use_include_path = true
+
+ 23.08.2016
+ - bugfix remove constant DS as shortcut for DIRECTORY_SEPARATOR as the user may have defined it to something else https://github.com/smarty-php/smarty/issues/277
+
+ 20.08-2016
+ - bugfix {config_load ... scope="global"} shall not throw an arror but fallback to scope="smarty" https://github.com/smarty-php/smarty/issues/274
+ - bugfix {make_nocache} failed when using composer autoloader https://github.com/smarty-php/smarty/issues/275
+
+ 14.08.2016
+ - bugfix $smarty_>debugging = true; did E_NOTICE messages when {eval} tag was used https://github.com/smarty-php/smarty/issues/266
+ - bugfix Class 'Smarty_Internal_Runtime_ValidateCompiled' not found when upgrading from some older Smarty versions with existing
+ compiled or cached template files https://github.com/smarty-php/smarty/issues/269
+ - optimization remove unneeded call to update acopes when {assign} scope and template scope was local (default)
+
+===== 3.1.30 ===== (07.08.2016)
+
+ 07.08.2016
+ - bugfix update of 04.08.2016 was incomplete
+
+ 05.08.2016
+ - bugfix compiling of templates failed when the Smarty delimiter did contain '/' https://github.com/smarty-php/smarty/issues/264
+ - updated error checking at template and config default handler
+
+ 04.08.2016
+ - improvement move template function source parameter into extension
+
+ 26.07.2016
+ - optimization unneeded loading of compiled resource
+
+ 24.07.2016
+ - regression this->addPluginsDir('/abs/path/to/dir') adding absolute path without trailing '/' did fail https://github.com/smarty-php/smarty/issues/260
+
+ 23.07.2016
+ - bugfix setTemplateDir('/') and setTemplateDir('') did create wrong absolute filepath https://github.com/smarty-php/smarty/issues/245
+ - optimization of filepath normalization
+ - improvement remove double function declaration in plugin shared.escape_special_cars.php https://github.com/smarty-php/smarty/issues/229
+
+ 19.07.2016
+ - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246
+ - bugfix {math} shell injection vulnerability patch provided by Tim Weber
+
+ 18.07.2016
+ - bugfix {foreach} if key variable and item@key attribute have been used both the key variable was not updated https://github.com/smarty-php/smarty/issues/254
+ - bugfix modifier on plugins like {plugin|modifier ... } did fail when the plugin does return an array https://github.com/smarty-php/smarty/issues/228
+ - bugfix avoid opcache_invalidate to result in ErrorException when opcache.restrict_api is not empty https://github.com/smarty-php/smarty/pull/244
+ - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246
+
+ 14.07.2016
+ - bugfix wrong parameter on compileAllTemplates() and compileAllConfig() https://github.com/smarty-php/smarty/issues/231
+
+ 13.07.2016
+ - bugfix PHP 7 compatibility on registered compiler plugins https://github.com/smarty-php/smarty/issues/241
+ - update testInstall() https://github.com/smarty-php/smarty/issues/248https://github.com/smarty-php/smarty/issues/248
+ - bugfix enable debugging could fail when template objects did already exists https://github.com/smarty-php/smarty/issues/237
+ - bugfix template function data should be merged when loading subtemplate https://github.com/smarty-php/smarty/issues/240
+ - bugfix wrong parameter on compileAllTemplates() https://github.com/smarty-php/smarty/issues/231
+
+ 12.07.2016
+ - bugfix {foreach} item variable must be created also on empty from array https://github.com/smarty-php/smarty/issues/238 and https://github.com/smarty-php/smarty/issues/239
+ - bugfix enableSecurity() must init cache flags https://github.com/smarty-php/smarty/issues/247
+
+ 27.05.2016
+ - bugfix/improvement of compileAlltemplates() follow symlinks in template folder (PHP >= 5.3.1) https://github.com/smarty-php/smarty/issues/224
+ clear internal cache and expension handler for each template to avoid possible conflicts https://github.com/smarty-php/smarty/issues/231
+
+ 16.05.2016
+ - optimization {foreach} compiler and processing
+ - broken PHP 5.3 and 5.4 compatibility
+
+ 15.05.2016
+ - optimization and cleanup of resource code
+
+ 10.05.2016
+ - optimization of inheritance processing
+
+ 07.05.2016
+ -bugfix Only variables should be assigned by reference https://github.com/smarty-php/smarty/issues/227
+
+ 02.05.2016
+ - enhancement {block} tag names can now be variable https://github.com/smarty-php/smarty/issues/221
+
+ 01.05.2016
+ - bugfix same relative filepath at {include} called from template in different folders could display wrong sub-template
+
+ 29.04.2016
+ - bugfix {strip} remove space on linebreak between html tags https://github.com/smarty-php/smarty/issues/213
+
+ 24.04.2016
+ - bugfix nested {include} with relative file path could fail when called in {block} ... {/block} https://github.com/smarty-php/smarty/issues/218
+
+ 14.04.2016
+ - bugfix special variable {$smarty.capture.name} was not case sensitive on name https://github.com/smarty-php/smarty/issues/210
+ - bugfix the default template handler must calculate the source uid https://github.com/smarty-php/smarty/issues/205
+
+ 13.04.2016
+ - bugfix template inheritance status must be saved when calling sub-templates https://github.com/smarty-php/smarty/issues/215
+
+ 27.03.2016
+ - bugfix change of 11.03.2016 cause again {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153
+
+ 11.03.2016
+ - optimization of capture and security handling
+ - improvement $smarty->clearCompiledTemplate() should return on recompiled or uncompiled resources
+
+ 10.03.2016
+ - optimization of resource processing
+
+ 09.03.2016
+ - improvement rework of 'scope' attribute handling see see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/194
+ https://github.com/smarty-php/smarty/issues/186 https://github.com/smarty-php/smarty/issues/179
+ - bugfix correct Autoloader update of 2.3.2014 https://github.com/smarty-php/smarty/issues/199
+
+ 04.03.2016
+ - bugfix change from 01.03.2016 will cause $smarty->isCached(..) failure if called multiple time for same template
+ (forum topic 25935)
+
+ 02.03.2016
+ - revert autoloader optimizations because of unexplainable warning when using plugins https://github.com/smarty-php/smarty/issues/199
+
+ 01.03.2016
+ - bugfix template objects must be cached on $smarty->fetch('foo.tpl) calls incase the template is fetched
+ multiple times (forum topic 25909)
+
+ 25.02.2016
+ - bugfix wrong _realpath with 4 or more parent-directories https://github.com/smarty-php/smarty/issues/190
+ - optimization of _realpath
+ - bugfix instanceof expression in template code must be treated as value https://github.com/smarty-php/smarty/issues/191
+
+ 20.02.2016
+ - bugfix {strip} must keep space between hmtl tags. Broken by changes of 10.2.2016 https://github.com/smarty-php/smarty/issues/184
+ - new feature/bugfix {foreach}{section} add 'properties' attribute to force compilation of loop properties
+ see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/189
+
+ 19.02.2016
+ - revert output buffer flushing on display, echo content again because possible problems when PHP files had
+ characters (newline} after ?> at file end https://github.com/smarty-php/smarty/issues/187
+
+ 14.02.2016
+ - new tag {make_nocache} read NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/110
+ - optimization of sub-template processing
+ - bugfix using extendsall as default resource and {include} inside {block} tags could produce unexpected results https://github.com/smarty-php/smarty/issues/183
+ - optimization of tag attribute compiling
+ - optimization make compiler tag object cache static for higher compilation speed
+
+ 11.02.2016
+ - improvement added KnockoutJS comments to trimwhitespace outputfilter https://github.com/smarty-php/smarty/issues/82
+ https://github.com/smarty-php/smarty/pull/181
+
+ 10.02.2016
+ - bugfix {strip} must keep space on output creating smarty tags within html tags https://github.com/smarty-php/smarty/issues/177
+ - bugfix wrong precedence on special if conditions like '$foo is ... by $bar' could cause wrong code https://github.com/smarty-php/smarty/issues/178
+ - improvement because of ambiguities the inline constant support has been removed from the $foo.bar syntax https://github.com/smarty-php/smarty/issues/149
+ - bugfix other {strip} error with output tags between hmtl https://github.com/smarty-php/smarty/issues/180
+
+ 09.02.2016
+ - move some code from parser into compiler
+ - reformat all code for unique style
+ - update/bugfix scope attribute handling reworked. Read the newfeatures.txt file
+
+ 05.02.2016
+ - improvement internal compiler changes
+
+ 01.02.2016
+ - bugfix {foreach} compilation failed when $smarty->merge_compiled_includes = true and pre-filters are used.
+
+ 29.01.2016
+ - bugfix implement replacement code for _tag_stack property https://github.com/smarty-php/smarty/issues/151
+
+ 28.01.2016
+ - bugfix allow windows network filepath or wrapper (forum topic 25876) https://github.com/smarty-php/smarty/issues/170
+ - bugfix if fetch('foo.tpl') is called on a template object the $parent parameter should default to the calling template object https://github.com/smarty-php/smarty/issues/152
+
+ 27.01.2016
+ - revert bugfix compiling {section} did create warning
+ - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161
+ update of yesterdays fix
+ - bugfix string resource could inject code at {block} or inline subtemplates through PHP comments https://github.com/smarty-php/smarty/issues/157
+ - bugfix output filters did not observe nocache code flhttps://github.com/smarty-php/smarty/issues/154g https://github.com/smarty-php/smarty/issues/160
+ - bugfix {extends} with relative file path did not work https://github.com/smarty-php/smarty/issues/154
+ https://github.com/smarty-php/smarty/issues/158
+ - bugfix {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153
+
+ 26.01.2016
+ - improvement observe Smarty::$_CHARSET in debugging console https://github.com/smarty-php/smarty/issues/169
+ - bugfix compiling {section} did create warning
+ - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161
+
+ 02.01.2016
+ - update scope handling
+ - optimize block plugin compiler
+ - improvement runtime checks if registered block plugins are callable
+
+ 01.01.2016
+ - remove Smarty::$resource_cache_mode property
+
+ 31.12.2015
+ - optimization of {assign}, {if} and {while} compiled code
+
+ 30.12.2015
+ - bugfix plugin names starting with "php" did not compile https://github.com/smarty-php/smarty/issues/147
+
+ 29.12.2015
+ - bugfix Smarty::error_reporting was not observed when display() or fetch() was called on template objects https://github.com/smarty-php/smarty/issues/145
+
+ 28.12.2015
+ - optimization of {foreach} code size and processing
+
+ 27.12.2015
+ - improve inheritance code
+ - update external methods
+ - code fixes
+ - PHPdoc updates
+
+ 25.12.2015
+ - compile {block} tag code and its processing into classes
+ - optimization replace hhvm extension by inline code
+ - new feature If ACP is enabled force an apc_compile_file() when compiled or cached template was updated
+
+ 24.12.2015
+ - new feature Compiler does now observe the template_dir setting and will create separate compiled files if required
+ - bugfix post filter did fail on template inheritance https://github.com/smarty-php/smarty/issues/144
+
+ 23.12.2015
+ - optimization move internal method decodeProperties back into template object
+ - optimization move subtemplate processing back into template object
+ - new feature Caching does now observe the template_dir setting and will create separate cache files if required
+
+ 22.12.2015
+ - change $xxx_dir properties from private to protected in case Smarty class gets extended
+ - code optimizations
+
+ 21.12.2015
+ - bugfix a filepath starting with '/' or '\' on windows should normalize to the root dir
+ of current working drive https://github.com/smarty-php/smarty/issues/134
+ - optimization of filepath normalization
+ - bugfix {strip} must remove all blanks between html tags https://github.com/smarty-php/smarty/issues/136
+
+ ===== 3.1.29 ===== (21.12.2015)
+ 21.12.2015
+ - optimization improve speed of filetime checks on extends and extendsall resource
+
+ 20.12.2015
+ - bugfix failure when the default resource type was set to 'extendsall' https://github.com/smarty-php/smarty/issues/123
+ - update compilation of Smarty special variables
+ - bugfix add addition check for OS type on normalization of file path https://github.com/smarty-php/smarty/issues/134
+ - bugfix the source uid of the extendsall resource must contain $template_dir settings https://github.com/smarty-php/smarty/issues/123
+
+ 19.12.2015
+ - bugfix using $smarty.capture.foo in expressions could fail https://github.com/smarty-php/smarty/pull/138
+ - bugfix broken PHP 5.2 compatibility https://github.com/smarty-php/smarty/issues/139
+ - remove no longer used code
+ - improvement make sure that compiled and cache templates never can contain a trailing '?>?
+
+ 18.12.2015
+ - bugfix regression when modifier parameter was followed by math https://github.com/smarty-php/smarty/issues/132
+
+ 17.12.2015
+ - bugfix {$smarty.capture.nameFail} did lowercase capture name https://github.com/smarty-php/smarty/issues/135
+ - bugfix using {block append/prepend} on same block in multiple levels of inheritance templates could fail (forum topic 25827)
+ - bugfix text content consisting of just a single '0' like in {if true}0{/if} was suppressed (forum topic 25834)
+
+ 16.12.2015
+ - bugfix {foreach} did fail if from atrribute is a Generator class https://github.com/smarty-php/smarty/issues/128
+ - bugfix direct access $smarty->template_dir = 'foo'; should call Smarty::setTemplateDir() https://github.com/smarty-php/smarty/issues/121
+
+ 15.12.2015
+ - bugfix {$smarty.cookies.foo} did return the $_COOKIE array not the 'foo' value https://github.com/smarty-php/smarty/issues/122
+ - bugfix a call to clearAllCache() and other should clear all internal template object caches (forum topic 25828)
+
+ 14.12.2015
+ - bugfix {$smarty.config.foo} broken in 3.1.28 https://github.com/smarty-php/smarty/issues/120
+ - bugfix multiple calls of {section} with same name droped E_NOTICE error https://github.com/smarty-php/smarty/issues/118
+
+ ===== 3.1.28 ===== (13.12.2015)
+ 13.12.2015
+ - bugfix {foreach} and {section} with uppercase characters in name attribute did not work (forum topic 25819)
+ - bugfix $smarty->debugging_ctrl = 'URL' did not work (forum topic 25811)
+ - bugfix Debug Console could display incorrect data when using subtemplates
+
+ 09.12.2015
+ - bugfix Smarty did fail under PHP 7.0.0 with use_include_path = true;
+
+ 09.12.2015
+ - bugfix {strip} should exclude some html tags from stripping, related to fix for https://github.com/smarty-php/smarty/issues/111
+
+ 08.12.2015
+ - bugfix internal template function data got stored in wrong compiled file https://github.com/smarty-php/smarty/issues/114
+
+ 05.12.2015
+ -bugfix {strip} should insert a single space https://github.com/smarty-php/smarty/issues/111
+
+ 25.11.2015
+ -bugfix a left delimter like '[%' did fail on [%$var_[%$variable%]%] (forum topic 25798)
+
+ 02.11.2015
+ - bugfix {include} with variable file name like {include file="foo_`$bar`.tpl"} did fail in 3.1.28-dev https://github.com/smarty-php/smarty/issues/102
+
+ 01.11.2015
+ - update config file processing
+
+ 31.10.2015
+ - bugfix add missing $trusted_dir property to SmartyBC class (forum topic 25751)
+
+ 29.10.2015
+ - improve template scope handling
+
+ 24.10.2015
+ - more optimizations of template processing
+ - bugfix Error when using {include} within {capture} https://github.com/smarty-php/smarty/issues/100
+
+ 21.10.2015
+ - move some code into runtime extensions
+
+ 18.10.2015
+ - optimize filepath normalization
+ - rework of template inheritance
+ - speed and size optimizations
+ - bugfix under HHVM temporary cache file must only be created when caches template was updated
+ - fix compiled code for new {block} assign attribute
+ - update code generated by template function call handler
+
+ 18.09.2015
+ - bugfix {if $foo instanceof $bar} failed to compile if 2nd value is a variable https://github.com/smarty-php/smarty/issues/92
+
+ 17.09.2015
+ - bugfix {foreach} first attribute was not correctly reset since commit 05a8fa2 of 02.08.2015 https://github.com/smarty-php/smarty/issues/90
+
+ 16.09.2015
+ - update compiler by moving no longer needed properties, code optimizations and other
+
+ 14.09.2015
+ - optimize autoloader
+ - optimize subtemplate handling
+ - update template inheritance processing
+ - move code of {call} processing back into Smarty_Internal_Template class
+ - improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557)
+ - bugfix unintended multiple debug windows (forum topic 25699)
+
+ 30.08.2015
+ - size optimization move some runtime functions into extension
+ - optimize inline template processing
+ - optimization merge inheritance child and parent templates into one compiled template file
+
+ 29.08.2015
+ - improvement convert template inheritance into runtime processing
+ - bugfix {$smarty.block.parent} did always reference the root parent block https://github.com/smarty-php/smarty/issues/68
+
+ 23.08.2015
+ - introduce Smarty::$resource_cache_mode and cache template object of {include} inside loop
+ - load seldom used Smarty API methods dynamically to reduce memory footprint
+ - cache template object of {include} if same template is included several times
+ - convert debug console processing to object
+ - use output buffers for better performance and less memory usage
+ - optimize nocache hash processing
+ - remove not really needed properties
+ - optimize rendering
+ - move caching to Smarty::_cache
+ - remove properties with redundant content
+ - optimize Smarty::templateExists()
+ - optimize use_include_path processing
+ - relocate properties for size optimization
+ - remove redundant code
+ - bugfix compiling super globals like {$smarty.get.foo} did fail in the master branch https://github.com/smarty-php/smarty/issues/77
+
+ 06.08.2015
+ - avoid possible circular object references caused by parser/lexer objects
+ - rewrite compileAll... utility methods
+ - commit several internal improvements
+ - bugfix Smarty failed when compile_id did contain "|"
+
+ 03.08.2015
+ - rework clear cache methods
+ - bugfix compileAllConfig() was broken since 3.1.22 because of the changes in config file processing
+ - improve getIncludePath() to return directory if no file was given
+
+ 02.08.2015
+ - optimization and code cleanup of {foreach} and {section} compiler
+ - rework {capture} compiler
+
+ 01.08.2015
+ - update DateTime object can be instance of DateTimeImmutable since PHP5.5 https://github.com/smarty-php/smarty/pull/75
+ - improvement show resource type and start of template source instead of uid on eval: and string: resource (forum topic 25630)
+
+ 31.07.2015
+ - optimize {foreach} and {section} compiler
+
+ 29.07.2015
+ - optimize {section} compiler for speed and size of compiled code
+
+ 28.07.2015
+ - update for PHP 7 compatibility
+
+ 26.07.2015
+ - improvement impement workaround for HHVM PHP incompatibillity https://github.com/facebook/hhvm/issues/4797
+
+ 25.07.2015
+ - bugfix parser did hang on text starting <?something https://github.com/smarty-php/smarty/issues/74
+
+ 20.07.2015
+ - bugfix config files got recompiled on each request
+ - improvement invalidate PHP 5.5 opcache for recompiled and cached templates https://github.com/smarty-php/smarty/issues/72
+
+ 12.07.2015
+ - optimize {extends} compilation
+
+ 10.07.2015
+ - bugfix force file: resource in demo resource.extendsall.php
+
+ 08.07.2015
+ - bugfix convert each word of class names to ucfirst in in compiler. (forum topic 25588)
+
+ 07.07.2015
+ - improvement allow fetch() or display() called on a template object to get output from other template
+ like $template->fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70
+ - improvement Added $limit parameter to regex_replace modifier #71
+ - new feature multiple indices on file: resource
+
+ 06.07.2015
+ - optimize {block} compilation
+ - optimization get rid of __get and __set in source object
+
+ 01.07.2015
+ - optimize compile check handling
+ - update {foreach} compiler
+ - bugfix debugging console did not display string values containing \n, \r or \t correctly https://github.com/smarty-php/smarty/issues/66
+ - optimize source resources
+
+ 28.06.2015
+ - move $smarty->enableSecurity() into Smarty_Security class
+ - optimize security isTrustedResourceDir()
+ - move auto load filter methods into extension
+ - move $smarty->getTemplateVars() into extension
+ - move getStreamVariable() into extension
+ - move $smarty->append() and $smarty->appendByRef() into extension
+ - optimize autoloader
+ - optimize file path normalization
+ - bugfix PATH_SEPARATOR was replaced by mistake in autoloader
+ - remove redundant code
+
+ 27.06.2015
+ - bugfix resolve naming conflict between custom Smarty delimiter '<%' and PHP ASP tags https://github.com/smarty-php/smarty/issues/64
+ - update $smarty->_realpath for relative path not starting with './'
+ - update Smarty security with new realpath handling
+ - update {include_php} with new realpath handling
+ - move $smarty->loadPlugin() into extension
+ - minor compiler optimizations
+ - bugfix allow function plugins with name ending with 'close' https://github.com/smarty-php/smarty/issues/52
+ - rework of $smarty->clearCompiledTemplate() and move it to its own extension
+
+ 19.06.2015
+ - improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59
+
+ ===== 3.1.27===== (18.06.2015)
+ 18.06.2015
+ - bugfix another update on file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56
+
+ ===== 3.1.26===== (18.06.2015)
+ 18.06.2015
+ - bugfix file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56
+
+ 17.06.2015
+ - bugfix calling a plugin with nocache option but no other attributes like {foo nocache} caused call to undefined function https://github.com/smarty-php/smarty/issues/55
+
+ ===== 3.1.25===== (15.06.2015)
+ 15.06.2015
+ - optimization of smarty_cachereource_keyvaluestore.php code
+
+ 14.06.2015
+ - bugfix a relative sub template path could fail if template_dir path did contain /../ https://github.com/smarty-php/smarty/issues/50
+ - optimization rework of path normalization
+ - bugfix an output tag with variable, modifier followed by an operator like {$foo|modifier+1} did fail https://github.com/smarty-php/smarty/issues/53
+
+ 13.06.2015
+ - bugfix a custom cache resource using smarty_cachereource_keyvaluestore.php did fail if php.ini mbstring.func_overload = 2 (forum topic 25568)
+
+ 11.06.2015
+ - bugfix the lexer could hang on very large quoted strings (forum topic 25570)
+
+ 08.06.2015
+ - bugfix using {$foo} as array index like $bar.{$foo} or in double quoted string like "some {$foo} thing" failed https://github.com/smarty-php/smarty/issues/49
+
+ 04.06.2015
+ - bugfix possible error message on unset() while compiling {block} tags https://github.com/smarty-php/smarty/issues/46
+
+ 01.06.2015
+ - bugfix <?xml ... ?> including template variables broken since 3.1.22 https://github.com/smarty-php/smarty/issues/47
+
+ 27.05.2015
+ - bugfix {include} with variable file name must not create by default individual cache file (since 3.1.22) https://github.com/smarty-php/smarty/issues/43
+
+ 24.05.2015
+ - bugfix if condition string 'neq' broken due to a typo https://github.com/smarty-php/smarty/issues/42
+
+ ===== 3.1.24===== (23.05.2015)
+ 23.05.2015
+ - improvement on php_handling to allow very large PHP sections, better error handling
+ - improvement allow extreme large comment sections (forum 25538)
+
+ 21.05.2015
+ - bugfix broken PHP 5.2 compatibility when compiling <?php tags https://github.com/smarty-php/smarty/issues/40
+ - bugfix named {foreach} comparison like $smarty.foreach.foobar.index > 1 did compile into wrong code https://github.com/smarty-php/smarty/issues/41
+
+ 19.05.2015
+ - bugfix compiler did overwrite existing variable value when setting the nocache attribute https://github.com/smarty-php/smarty/issues/39
+ - bugfix output filter trimwhitespace could run into the pcre.backtrack_limit on large output (code.google issue 220)
+ - bugfix compiler could run into the pcre.backtrack_limit on larger comment or {php} tag sections (forum 25538)
+
+ 18.05.2015
+ - improvement introduce shortcuts in lexer/parser rules for most frequent terms for higher
+ compilation speed
+
+ 16.05.2015
+ - bugfix {php}{/php} did work just for single lines https://github.com/smarty-php/smarty/issues/33
+ - improvement remove not needed ?><?php transitions from compiled code
+ - improvement reduce number of lexer tokens on operators and if conditions
+ - improvement higher compilation speed by modified lexer/parser generator at "smarty/smarty-lexer"
+
+ 13.05.2015
+ - improvement remove not needed ?><?php transitions from compiled code
+ - improvement of debugging:
+ - use fresh Smarty object to display the debug console because of possible problems when the Smarty
+ was extended or Smarty properties had been modified in the class source
+ - display Smarty version number
+ - Truncate lenght of Origin display and extend strin value display to 80 character
+ - bugfix in Smarty_Security 'nl2br' should be a trusted modifier, not PHP function (code.google issue 223)
+
+ 12.05.2015
+ - bugfix {$smarty.constant.TEST} did fail on undefined constant https://github.com/smarty-php/smarty/issues/28
+ - bugfix access to undefined config variable like {#undef#} did fail https://github.com/smarty-php/smarty/issues/29
+ - bugfix in nested {foreach} saved item attributes got overwritten https://github.com/smarty-php/smarty/issues/33
+
+ ===== 3.1.23 ===== (12.05.2015)
+ 12.05.2015
+ - bugfix of smaller performance issue introduce in 3.1.22 when caching is enabled
+ - bugfix missig entry for smarty-temmplate-config in autoloader
+
+ ===== 3.1.22 ===== tag was deleted because 3.1.22 did fail caused by the missing entry for smarty-temmplate-config in autoloader
+ 10.05.2015
+ - bugfix custom cache resource did not observe compile_id and cache_id when $cache_locking == true
+ - bugfix cache lock was not handled correctly after timeout when $cache_locking == true
+ - improvement added constants for $debugging
+
+ 07.05.2015
+ - improvement of the debugging console. Read NEW_FEATURES.txt
+ - optimization of resource class loading
+
+ 06.05.2015
+ - bugfix in 3.1.22-dev cache resource must not be loaded for subtemplates
+ - bugfix/improvement in 3.1.22-dev cache locking did not work as expected
+
+ 05.05.2015
+ - optimization on cache update when main template is modified
+ - optimization move <?php ?> handling from parser to new compiler module
+
+ 05.05.2015
+ - bugfix code could be messed up when {tags} are used in multiple attributes https://github.com/smarty-php/smarty/issues/23
+
+ 04.05.2015
+ - bugfix Smarty_Resource::parseResourceName incompatible with Google AppEngine (https://github.com/smarty-php/smarty/issues/22)
+ - improvement use is_file() checks to avoid errors suppressed by @ which could still cause problems (https://github.com/smarty-php/smarty/issues/24)
+
+ 28.04.2015
+ - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) 2nd fix
+
+ 28.04.2015
+ - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508)
+
+ 23.04.2015
+ - bugfix a nocache template variable used as parameter at {insert} was by mistake cached
+
+ 20.04.2015
+ - bugfix at a template function containing nocache code a parmeter could overwrite a template variable of same name
+
+ 27.03.2015
+ - bugfix Smarty_Security->allow_constants=false; did also disable true, false and null (change of 16.03.2015)
+ - improvement added a whitelist for trusted constants to security Smarty_Security::$trusted_constants (forum topic 25471)
+
+ 20.03.2015
+ - bugfix make sure that function properties get saved only in compiled files containing the fuction definition {forum topic 25452}
+ - bugfix correct update of global variable values on exit of template functions. (reported under Smarty Developers)
+
+ 16.03.2015
+ - bugfix problems with {function}{/function} and {call} tags in different subtemplate cache files {forum topic 25452}
+ - bugfix Smarty_Security->allow_constants=false; did not disallow direct usage of defined constants like {SMARTY_DIR} {forum topic 25457}
+ - bugfix {block}{/block} tags did not work inside double quoted strings https://github.com/smarty-php/smarty/issues/18
+
+
+ 15.03.2015
+ - bugfix $smarty->compile_check must be restored before rendering of a just updated cache file {forum 25452}
+
+ 14.03.2015
+ - bugfix {nocache} {/nocache} tags corrupted code when used within a nocache section caused by a nocache template variable.
+
+ - bugfix template functions defined with {function} in an included subtemplate could not be called in nocache
+ mode with {call... nocache} if the subtemplate had it's own cache file {forum 25452}
+
+ 10.03.2015
+ - bugfix {include ... nocache} whith variable file or compile_id attribute was not executed in nocache mode.
+
+ 12.02.2015
+ - bugfix multiple Smarty::fetch() of same template when $smarty->merge_compiled_includes = true; could cause function already defined error
+
+ 11.02.2015
+ - bugfix recursive {includes} did create E_NOTICE message when $smarty->merge_compiled_includes = true; (github issue #16)
+
+ 22.01.2015
+ - new feature security can now control access to static methods and properties
+ see also NEW_FEATURES.txt
+
+ 21.01.2015
+ - bugfix clearCompiledTemplates(), clearAll() and clear() could try to delete whole drive at wrong path permissions because realpath() fail (forum 25397)
+ - bugfix 'self::' and 'parent::' was interpreted in template syntax as static class
+
+ 04.01.2015
+ - push last weeks changes to github
+
+ - different optimizations
+ - improvement automatically create different versions of compiled templates and config files depending
+ on property settings.
+ - optimization restructure template processing by moving code into classes it better belongs to
+ - optimization restructure config file processing
+
+ 31.12.2014
+ - bugfix use function_exists('mb_get_info') for setting Smarty::$_MBSTRING.
+ Function mb_split could be overloaded depending on php.ini mbstring.func_overload
+
+
+ 29.12.2014
+ - new feature security can now limit the template nesting level by property $max_template_nesting
+ see also NEW_FEATURES.txt (forum 25370)
+
+ 29.12.2014
+ - new feature security can now disable special $smarty variables listed in property $disabled_special_smarty_vars
+ see also NEW_FEATURES.txt (forum 25370)
+
+ 27.12.2014
+ - bugfix clear internal _is_file_cache when plugins_dir was modified
+
+ 13.12.2014
+ - improvement optimization of lexer and parser resulting in a up to 30% higher compiling speed
+
+ 11.12.2014
+ - bugfix resolve parser ambiguity between constant print tag {CONST} and other smarty tags after change of 09.12.2014
+
+ 09.12.2014
+ - bugfix variables $null, $true and $false did not work after the change of 12.11.2014 (forum 25342)
+ - bugfix call of template function by a variable name did not work after latest changes (forum 25342)
+
+ 23.11.2014
+ - bugfix a plugin with attached modifier could fail if the tag was immediately followed by another Smarty tag (since 3.1.21) (forum 25326)
+
+ 13.11.2014
+ - improvement move autoload code into Autoloader.php. Use Composer autoloader when possible
+
+ 12.11.2014
+ - new feature added support of namespaces to template code
+
+ 08.11.2014 - 10.11.2014
+ - bugfix subtemplate called in nocache mode could be called with wrong compile_id when it did change on one of the calling templates
+ - improvement add code of template functions called in nocache mode dynamically to cache file (related to bugfix of 01.11.2014)
+ - bugfix Debug Console did not include all data from merged compiled subtemplates
+
+ 04.11.2014
+ - new feature $smarty->debugging = true; => overwrite existing Debug Console window (old behaviour)
+ $smarty->debugging = 2; => individual Debug Console window by template name
+
+ 03.11.2014
+ - bugfix Debug Console did not show included subtemplates since 3.1.17 (forum 25301)
+ - bugfix Modifier debug_print_var did not limit recursion or prevent recursive object display at Debug Console
+ (ATTENTION: parameter order has changed to be able to specify maximum recursion)
+ - bugfix Debug consol did not include subtemplate information with $smarty->merge_compiled_includes = true
+ - improvement The template variables are no longer displayed as objects on the Debug Console
+ - improvement $smarty->createData($parent = null, $name = null) new optional name parameter for display at Debug Console
+ - addition of some hooks for future extension of Debug Console
+
+ 01.11.2014
+ - bugfix and enhancement on subtemplate {include} and template {function} tags.
+ * Calling a template which has a nocache section could fail if it was called from a cached and a not cached subtemplate.
+ * Calling the same subtemplate cached and not cached with the $smarty->merge_compiled_includes enabled could cause problems
+ * Many smaller related changes
+
+ 30.10.2014
+ - bugfix access to class constant by object like {$object::CONST} or variable class name {$class::CONST} did not work (forum 25301)
+
+ 26.10.2014
+ - bugfix E_NOTICE message was created during compilation when ASP tags '<%' or '%>' are in template source text
+ - bugfix merge_compiled_includes option failed when caching enables and same subtemplate was included cached and not cached
+
+ ===== 3.1.21 ===== (18.10.2014)
+ 18.10.2014
+ - composer moved to github
+
+ 17.10.2014
+ - bugfix on $php_handling security and optimization of smarty_internal_parsetree (Thue Kristensen)
+
+ 16.10.2014
+ - bugfix composer.json update
+
+ 15.10.2014
+ - bugfix calling a new created cache file with fetch() and Smarty::CACHING_LIFETIME_SAVED multiple times did fail (forum 22350)
+
+ 14.10.2014
+ - bugfix any tag placed within "<script language=php>" will throw a security exception to close all thinkable holes
+ - bugfix classmap in root composer.json should start at "libs/..."
+ - improvement cache is_file(file_exists) results of loadPlugin() to avoid unnecessary calls during compilation (Issue 201}
+
+ 12.10.2014
+ - bugfix a comment like "<script{*foo*} language=php>" bypassed $php_handling checking (Thue Kristensen)
+ - bugfix change of 08.10.2014 could create E_NOTICE meassage when using "<?php" tags
+ - bugfix "<script language=php>" with $php_handling PHP_PASSTHRU was executed in {nocache} sections
+
+ ===== 3.1.20 ===== (09.10.2014)
+ 08.10.2014
+ - bugfix security mode of "<script language=php>" must be controlled by $php_handling property (Thue Kristensen)
+
+ 01.10.2014
+ - bugfix template resource of inheritance blocks could get invalid if the default resource type is not 'file'(Issue 202)
+ - bugfix existing child {block} tag must override parent {block} tag append / prepend setting (topic 25259)
+
+ 02.08.2014
+ - bugfix modifier wordwrap did output break string wrong if first word was exceeding length with cut = true (topic 25193)
+
+ 24.07.2014
+ - bugfix cache clear when cache folder does not exist
+
+ 16.07.2014
+ - enhancement remove BOM automatically from template source (topic 25161)
+
+ 04.07.2014
+ - bugfix the bufix of 02.06.2014 broke correct handling of child templates with same name but different template folders in extends resource (issue 194 and topic 25099)
+
+ ===== 3.1.19 ===== (30.06.2014)
+ 20.06.2014
+ - bugfix template variables could not be passed as parameter in {include} when the include was in a {nocache} section (topic 25131)
+
+ 17.06.2014
+ - bugfix large template text of some charsets could cause parsing errors (topic 24630)
+
+ 08.06.2014
+ - bugfix registered objects did not work after spelling fixes of 06.06.2014
+ - bugfix {block} tags within {literal} .. {/literal} got not displayed correctly (topic 25024)
+ - bugfix UNC WINDOWS PATH like "\\psf\path\to\dir" did not work as template directory (Issue 192)
+ - bugfix {html_image} security check did fail on files relative to basedir (Issue 191)
+
+ 06.06.2014
+ - fixed PHPUnit outputFilterTrimWhitespaceTests.php assertion of test result
+ - fixed spelling, PHPDoc , minor errors, code cleanup
+
+ 02.06.2014
+ - using multiple cwd with relative template dirs could result in identical compiled file names. (issue 194 and topic 25099)
+
+ 19.04.2014
+ - bugfix calling createTemplate(template, data) with empty data array caused notice of array to string conversion (Issue 189)
+ - bugfix clearCompiledTemplate() did not delete files on WINDOWS when a compile_id was specified
+
+ 18.04.2014
+ - revert bugfix of 5.4.2014 because %-e date format is not supported on all operating systems
+
+ ===== 3.1.18 ===== (07.04.2014)
+ 06.04.2014
+ - bugfix template inheritance fail when using custom resource after patch of 8.3.2014 (Issue 187)
+ - bugfix update of composer file (Issue 168 and 184)
+
+ 05.04.2014
+ - bugfix default date format leads to extra spaces when displaying dates with single digit days (Issue 165)
+
+ 26.03.2014
+ - bugfix Smart_Resource_Custom should not lowercase the resource name (Issue 183)
+
+ 24.03.2014
+ - bugfix using a {foreach} property like @iteration could fail when used in inheritance parent templates (Issue 182)
+
+ 20.03.2014
+ - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899)
+
+ 18.03.2014
+ - revert change of 17.03.2014
+
+17.03.2014
+ - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899)
+
+ 15.03.2014
+ - bugfix Smarty_CacheResource_Keyvaluestore did use different keys on read/writes and clearCache() calls (Issue 169)
+
+ 13.03.2014
+ - bugfix clearXxx() change of 27.1.2014 did not work when specifing cache_id or compile_id (forum topic 24868 and 24867)
+
+ ===== 3.1.17 =====
+ 08.03.2014
+ - bugfix relative file path {include} within {block} of child templates did throw exception on first call (Issue 177)
+
+ 17.02.2014
+ - bugfix Smarty failed when executing PHP on HHVM (Hip Hop 2.4) because uniqid('',true) does return string with ',' (forum topic 20343)
+
+ 16.02.2014
+ - bugfix a '//' or '\\' in template_dir path could produce wrong path on relative filepath in {include} (Issue 175)
+
+ 05.02.2014
+ - bugfix shared.literal_compiler_param.php did throw an exception when literal did contain a '-' (smarty-developers group)
+
+ 27.01.2014
+ - bugfix $smarty->debugging = true; did show the variable of the $smarty object not the variables used in display() call (forum topic 24764)
+ - bugfix clearCompiledTemplate(), clearAll() and clear() should use realpath to avoid possible exception from RecursiveDirectoryIterator (Issue 171)
+
+ 26.01.2014
+ - bugfix undo block nesting checks for {nocache} for reasons like forum topic 23280 (forum topic 24762)
+
+ 18.01.2014
+ - bugfix the compiler did fail when using template inheritance and recursive {include} (smarty-developers group)
+
+ 11.01.2014
+ - bugfix "* }" (spaces before right delimiter) was interpreted by mistake as comment end tag (Issue 170)
+ - internals content cache should be clear when updating cache file
+
+ 08.01.2014
+ - bugfix Smarty_CacheResource_Custom did not handle template resource type specifications on clearCache() calls (Issue 169)
+ - bugfix SmartyBC.class.php should use require_once to load Smarty.class.php (forum topic 24683)
+
+ ===== 3.1.16 =====
+ 15.12.2013
+ - bugfix {include} with {block} tag handling (forum topic 24599, 24594, 24682) (Issue 161)
+ Read 3.1.16_RELEASE_NOTES for more details
+ - enhancement additional debug output at $smarty->_parserdebug = true;
+
+ 07.11.2013
+ - bugfix too restrictive handling of {include} within {block} tags. 3.1.15 did throw errors where 3.1.14 did not (forum topic 24599)
+ - bugfix compiler could fail if PHP mbstring.func_overload is enabled (Issue 164)
+
+ 28.10.2013
+ - bugfix variable resource name at custom resource plugin did not work within {block} tags (Issue 163)
+ - bugfix notice "Trying to get property of non-object" removed (Issue 163)
+ - bugfix correction of modifier capitalize fix from 3.10.2013 (issue 159)
+ - bugfix multiple {block}s with same name in parent did not work (forum topic 24631)
+
+ 20.10.2013
+ - bugfix a variable file name at {extends} tag did fail (forum topic 24618)
+
+ 14.10.2013
+ - bugfix yesterdays fix could result in an undefined variable
+
+ 13.10.2013
+ - bugfix variable names on {include} in template inheritance did unextepted error message (forum topic 24594) (Issue 161)
+.- bugfix relative includes with same name like {include './foo.tpl'} from different folder failed (forum topic 24590)(Issue 161)
+
+ 04.10.2013
+ - bugfix variable file names at {extends} had been disbabled by mistake with the rewrite of
+ template inheritance of 24.08.2013 (forum topic 24585)
+
+03.10.2013
+ - bugfix loops using modifier capitalize did eat up memory (issue 159)
+
+ ===== Smarty 3.1.15 =====
+01.10.2013
+ - use current delimiters in compiler error messages (issue 157)
+ - improvement on performance when using error handler and multiple template folders (issue 152)
+
+17.09.2013
+ - improvement added patch for additional SmartyCompilerException properties for better access to scource information (forum topic 24559)
+
+16.09.2013
+ - bugfix recompiled templates did not show on first request with zend opcache cache (forum topic 24320)
+
+13.09.2013
+ - bugfix html_select_time defaulting error for the Meridian dropdown (forum topic 24549)
+
+09.09.2012
+- bugfix incorrect compiled code with array(object,method) callback at registered Variable Filter (forum topic 24542)
+
+27.08.2013
+- bugfix delimiter followed by linebreak did not work as auto literal after update from 24.08.2013 (forum topic 24518)
+
+24.08.2013
+- bugfix and enhancement
+ Because several recent problems with template inheritance the {block} tag compiler has been rewriten
+ - Error messages shown now the correct child template file and line number
+ - The compiler could fail on some larger UTF-8 text block (forum topic 24455)
+ - The {strip} tag can now be placed outside {block} tags in child templates (forum topic 24289)
+- change SmartyException::$escape is now false by default
+- change PHP traceback has been remove for SmartyException and SmartyCompilerException
+
+14.08.2013
+- bugfix compiled filepath of config file did not observe different config_dir (forum topic 24493)
+
+13.08.2013
+- bugfix the internal resource cache did not observe config_dir changes (forum topic 24493)
+
+12.08.2013
+- bugfix internal $tmpx variables must be unique over all inheritance templates (Issue 149)
+
+10.08.2013
+- bugfix a newline was eaten when a <?xml ... ?> was passed by a Smarty variable and caching was enabled (forum topic 24482)
+
+29.07.2013
+- bugfix headers already send warning thrown when using 'SMARTY_DEBUG=on' from URL (Issue 148)
+
+27.07.2013
+- enhancement allow access to properties of registered opjects for Smarty2 BC (forum topic 24344)
+
+26.07.2013
+- bugfix template inheritance nesting problem (forum topic 24387)
+
+15.7.2013
+- update code generated by PSR-2 standards fixer which introduced PHP 5.4 incompatibilities of 14.7.2013
+
+14.7.2013
+- bugfix increase of internal maximum parser stacksize to allow more complex tag code {forum topic 24426}
+- update for PHP 5.4 compatibility
+- reformat source to PSR-2 standard
+
+12.7.2013
+- bugfix Do not remove '//' from file path at normalization (Issue 142)
+
+2.7.2013
+- bugfix trimwhitespace would replace captured items in wrong order (forum topic 24387)
+
+===== Smarty-3.1.14 =====
+27.06.2013
+- bugfix removed PHP 5.5 deprecated preg_replace /e option in modifier capitalize (forum topic 24389)
+
+17.06.2013
+- fixed spelling in sources and documentation (from smarty-developers forum Veres Lajos)
+- enhancement added constant SMARTY::CLEAR_EXPIRED for the change of 26.05.2013 (forum topic 24310)
+- bugfix added smarty_security.php to composer.json (Issue 135)
+
+26.05.2013
+- enhancement an expire_time of -1 in clearCache() and clearAllCache() will delete outdated cache files
+ by their individual cache_lifetime used at creation (forum topic 24310)
+
+21.05.2013
+- bugfix modifier strip_tags:true was compiled into wrong code (Forum Topic 24287)
+- bugfix /n after ?> in Smarty.class.php did start output buffering (Issue 138)
+
+25.04.2013
+- bugfix escape and wordrap modifier could be compiled into wrong code when used in {nocache}{/nocache}
+ section but caching is disabled (Forum Topic 24260)
+
+05.04.2013
+- bugfix post filter must not run when compiling inheritance child blocks (Forum Topic 24094)
+- bugfix after the fix for Issue #130 compiler exceptions got double escaped (Forum Topic 24199)
+
+28.02.2013
+- bugfix nocache blocks could be lost when using CACHING_LIFETIME_SAVED (Issue #133)
+- bugfix Compile ID gets nulled when compiling child blocks (Issue #134)
+
+
+24.01.2013
+- bugfix wrong tag type in smarty_internal_templatecompilerbase.php could cause wrong plugin search order (Forum Topic 24028)
+
+===== Smarty-3.1.13 =====
+13.01.2013
+- enhancement allow to disable exception message escaping by SmartyException::$escape = false; (Issue #130)
+
+09.01.2013
+- bugfix compilation did fail when a prefilter did modify an {extends} tag c
+- bugfix template inheritance could fail if nested {block} tags in childs did contain {$smarty.block.child} (Issue #127)
+- bugfix template inheritance could fail if {block} tags in childs did have similar name as used plugins (Issue #128)
+- added abstract method declaration doCompile() in Smarty_Internal_TemplateCompilerBase (Forum Topic 23969)
+
+06.01.2013
+- Allow '://' URL syntax in template names of stream resources (Issue #129)
+
+27.11.2012
+- bugfix wrong variable usage in smarty_internal_utility.php (Issue #125)
+
+26.11.2012
+- bugfix global variable assigned within template function are not seen after template function exit (Forum Topic 23800)
+
+24.11.2012
+- made SmartyBC loadable via composer (Issue #124)
+
+20.11.2012
+- bugfix assignGlobal() called from plugins did not work (Forum Topic 23771)
+
+13.11.2012
+- adding attribute "strict" to html_options, html_checkboxes, html_radios to only print disabled/readonly attributes if their values are true or "disabled"/"readonly" (Issue #120)
+
+01.11.2012
+- bugfix muteExcpetedErrors() would screw up for non-readable paths (Issue #118)
+
+===== Smarty-3.1.12 =====
+14.09.2012
+- bugfix template inheritance failed to compile with delimiters {/ and /} (Forum Topic 23008)
+
+11.09.2012
+- bugfix escape Smarty exception messages to avoid possible script execution
+
+10.09.2012
+- bugfix tag option flags and shorttag attributes did not work when rdel started with '=' (Forum Topic 22979)
+
+31.08.2012
+- bugfix resolving relative paths broke in some circumstances (Issue #114)
+
+22.08.2012
+- bugfix test MBString availability through mb_split, as it could've been compiled without regex support (--enable-mbregex).
+ Either we get MBstring's full package, or we pretend it's not there at all.
+
+21.08.2012
+- bugfix $auto_literal = false did not work with { block} tags in child templates
+ (problem was reintroduced after fix in 3.1.7)(Forum Topic 20581)
+
+17.08.2012
+- bugfix compiled code of nocache sections could contain wrong escaping (Forum Topic 22810)
+
+15.08.2012
+- bugfix template inheritance did produce wrong code if subtemplates with {block} was
+ included several times (from smarty-developers forum)
+
+14.08.2012
+- bugfix PHP5.2 compatibility compromised by SplFileInfo::getBasename() (Issue 110)
+
+01.08.2012
+- bugfix avoid PHP error on $smarty->configLoad(...) with invalid section specification (Forum Topic 22608)
+
+30.07.2012
+-bugfix {assign} in a nocache section should not overwrite existing variable values
+ during compilation (issue 109)
+
+28.07.2012
+- bugfix array access of config variables did not work (Forum Topic 22527)
+
+19.07.2012
+- bugfix the default plugin handler did create wrong compiled code for static class methods
+ from external script files (issue 108)
+
+===== Smarty-3.1.11 =====
+30.06.2012
+- bugfix {block.. hide} did not work as nested child (Forum Topic 22216)
+
+25.06.2012
+- bugfix the default plugin handler did not allow static class methods for modifier (issue 85)
+
+24.06.2012
+- bugfix escape modifier support for PHP < 5.2.3 (Forum Topic 21176)
+
+11.06.2012
+- bugfix the patch for Topic 21856 did break tabs between tag attributes (Forum Topic 22124)
+
+===== Smarty-3.1.10 =====
+09.06.2012
+- bugfix the compiler did ignore registered compiler plugins for closing tags (Forum Topic 22094)
+- bugfix the patch for Topic 21856 did break multiline tags (Forum Topic 22124)
+
+===== Smarty-3.1.9 =====
+07.06.2012
+- bugfix fetch() and display() with relative paths (Issue 104)
+- bugfix treat "0000-00-00" as 0 in modifier.date_format (Issue 103)
+
+24.05.2012
+- bugfix Smarty_Internal_Write_File::writeFile() could cause race-conditions on linux systems (Issue 101)
+- bugfix attribute parameter names of plugins may now contain also "-" and ":" (Forum Topic 21856)
+- bugfix add compile_id to cache key of of source (Issue 97)
+
+22.05.2012
+- bugfix recursive {include} within {section} did fail (Smarty developer group)
+
+12.05.2012
+- bugfix {html_options} did not properly escape values (Issue 98)
+
+03.05.2012
+- bugfix make HTTP protocall version variable (issue 96)
+
+02.05.2012
+- bugfix {nocache}{block}{plugin}... did produce wrong compiled code when caching is disabled (Forum Topic 21572, issue 95)
+
+12.04.2012
+- bugfix Smarty did eat the linebreak after the <?xml...?> closing tag (Issue 93)
+- bugfix concurrent cache updates could create a warning (Forum Topic 21403)
+
+08.04.2012
+- bugfix "\\" was not escaped correctly when generating nocache code (Forum Topic 21364)
+
+30.03.2012
+- bugfix template inheritance did not throw exception when a parent template was deleted (issue 90)
+
+27.03.2012
+- bugfix prefilter did run multiple times on inline subtemplates compiled into several main templates (Forum Topic 21325)
+- bugfix implement Smarty2's behaviour of variables assigned by reference in SmartyBC. {assign} will affect all references.
+ (issue 88)
+
+21.03.2012
+- bugfix compileAllTemplates() and compileAllConfig() did not return the number of compiled files (Forum Topic 21286)
+
+13.03.2012
+- correction of yesterdays bugfix (Forum Topic 21175 and 21182)
+
+12.03.2012
+- bugfix a double quoted string of "$foo" did not compile into PHP "$foo" (Forum Topic 21175)
+- bugfix template inheritance did set $merge_compiled_includes globally true
+
+03.03.2012
+- optimization of compiling speed when same modifier was used several times
+
+02.03.2012
+- enhancement the default plugin handler can now also resolve undefined modifier (Smarty::PLUGIN_MODIFIER)
+ (Issue 85)
+
+===== Smarty-3.1.8 =====
+19.02.2012
+- bugfix {include} could result in a fatal error if used in appended or prepended nested {block} tags
+ (reported by mh and Issue 83)
+- enhancement added Smarty special variable $smarty.template_object to return the current template object (Forum Topic 20289)
+
+
+07.02.2012
+- bugfix increase entropy of internal function names in compiled and cached template files (Forum Topic 20996)
+- enhancement cacheable parameter added to default plugin handler, same functionality as in registerPlugin (request by calguy1000)
+
+06.02.2012
+- improvement stream_resolve_include_path() added to Smarty_Internal_Get_Include_Path (Forum Topic 20980)
+- bugfix fetch('extends:foo.tpl') always yielded $source->exists == true (Forum Topic 20980)
+- added modifier unescape:"url", fix (Forum Topic 20980)
+- improvement replaced some calls of preg_replace with str_replace (Issue 73)
+
+30.01.2012
+- bugfix Smarty_Security internal $_resource_dir cache wasn't properly propagated
+
+27.01.2012
+- bugfix Smarty did not a template name of "0" (Forum Topic 20895)
+
+20.01.2012
+- bugfix typo in Smarty_Internal_Get_IncludePath did cause runtime overhead (Issue 74)
+- improvment remove unneeded assigments (Issue 75 and 76)
+- fixed typo in template parser
+- bugfix output filter must not run before writing cache when template does contain nocache code (Issue 71)
+
+02.01.2012
+- bugfix {block foo nocache} did not load plugins within child {block} in nocache mode (Forum Topic 20753)
+
+29.12.2011
+- bugfix enable more entropy in Smarty_Internal_Write_File for "more uniqueness" and Cygwin compatibility (Forum Topic 20724)
+- bugfix embedded quotes in single quoted strings did not compile correctly in {nocache} sections (Forum Topic 20730)
+
+28.12.2011
+- bugfix Smarty's internal header code must be excluded from postfilters (issue 71)
+
+22.12.2011
+- bugfix the new lexer of 17.12.2011 did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680)
+- bugfix template inheritace did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680)
+
+20.12.2011
+- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return
+ content after {$smarty.block.child} (Forum Topic 20564)
+
+===== Smarty-3.1.7 =====
+18.12.2011
+- bugfix strings ending with " in multiline strings of config files failed to compile (issue #67)
+- added chaining to Smarty_Internal_Templatebase
+- changed unloadFilter() to not return a boolean in favor of chaining and API conformity
+- bugfix unregisterObject() raised notice when object to unregister did not exist
+- changed internals to use Smarty::$_MBSTRING ($_CHARSET, $_DATE_FORMAT) for better unit testing
+- added Smarty::$_UTF8_MODIFIER for proper PCRE charset handling (Forum Topic 20452)
+- added Smarty_Security::isTrustedUri() and Smarty_Security::$trusted_uri to validate
+ remote resource calls through {fetch} and {html_image} (Forum Topic 20627)
+
+17.12.2011
+- improvement of compiling speed by new handling of plain text blocks in the lexer/parser (issue #68)
+
+16.12.2011
+- bugfix the source exits flag and timestamp was not setup when template was in php include path (issue #69)
+
+9.12.2011
+- bugfix {capture} tags around recursive {include} calls did throw exception (Forum Topic 20549)
+- bugfix $auto_literal = false did not work with { block} tags in child templates (Forum Topic 20581)
+- bugfix template inheritance: do not include code of {include} in overloaded {block} into compiled
+ parent template (Issue #66}
+- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return expected
+ result (Forum Topic 20564)
+
+===== Smarty-3.1.6 =====
+30.11.2011
+- bugfix is_cache() for individual cached subtemplates with $smarty->caching = CACHING_OFF did produce
+ an exception (Forum Topic 20531)
+
+29.11.2011
+- bugfix added exception if the default plugin handler did return a not static callback (Forum Topic 20512)
+
+25.11.2011
+- bugfix {html_select_date} and {html_slecet_time} did not default to current time if "time" was not specified
+ since r4432 (issue 60)
+
+24.11.2011
+- bugfix a subtemplate later used as main template did use old variable values
+
+21.11.2011
+- bugfix cache file could include unneeded modifier plugins under certain condition
+
+18.11.2011
+- bugfix declare all directory properties private to map direct access to getter/setter also on extended Smarty class
+
+16.11.2011
+- bugfix Smarty_Resource::load() did not always return a proper resource handler (Forum Topic 20414)
+- added escape argument to html_checkboxes and html_radios (Forum Topic 20425)
+
+===== Smarty-3.1.5 =====
+14.11.2011
+- bugfix allow space between function name and open bracket (forum topic 20375)
+
+09.11.2011
+- bugfix different behaviour of uniqid() on cygwin. See https://bugs.php.net/bug.php?id=34908
+ (forum topic 20343)
+
+01.11.2011
+- bugfix {if} and {while} tags without condition did not throw a SmartyCompilerException (Issue #57)
+- bugfix multiline strings in config files could fail on longer strings (reopened Issue #55)
+
+22.10.2011
+- bugfix smarty_mb_from_unicode() would not decode unicode-points properly
+- bugfix use catch Exception instead UnexpectedValueException in
+ clearCompiledTemplate to be PHP 5.2 compatible
+
+21.10.2011
+- bugfix apostrophe in plugins_dir path name failed (forum topic 20199)
+- improvement sha1() for array keys longer than 150 characters
+- add Smarty::$allow_ambiguous_resources to activate unique resource handling (Forum Topic 20128)
+
+20.10.2011
+- @silenced unlink() in Smarty_Internal_Write_File since debuggers go haywire without it.
+- bugfix Smarty::clearCompiledTemplate() threw an Exception if $cache_id was not present in $compile_dir when $use_sub_dirs = true.
+- bugfix {html_select_date} and {html_select_time} did not properly handle empty time arguments (Forum Topic 20190)
+- improvement removed unnecessary sha1()
+
+19.10.2011
+- revert PHP4 constructor message
+- fixed PHP4 constructor message
+
+===== Smarty-3.1.4 =====
+19.10.2011
+- added exception when using PHP4 style constructor
+
+16.10.2011
+- bugfix testInstall() did not propery check cache_dir and compile_dir
+
+15.10.2011
+- bugfix Smarty_Resource and Smarty_CacheResource runtime caching (Forum Post 75264)
+
+14.10.2011
+- bugfix unique_resource did not properly apply to compiled resources (Forum Topic 20128)
+- add locking to custom resources (Forum Post 75252)
+- add Smarty_Internal_Template::clearCache() to accompany isCached() fetch() etc.
+
+13.10.2011
+- add caching for config files in Smarty_Resource
+- bugfix disable of caching after isCached() call did not work (Forum Topic 20131)
+- add concept unique_resource to combat potentially ambiguous template_resource values when custom resource handlers are used (Forum Topic 20128)
+- bugfix multiline strings in config files could fail on longer strings (Issue #55)
+
+11.10.2011
+- add runtime checks for not matching {capture}/{/capture} calls (Forum Topic 20120)
+
+10.10.2011
+- bugfix variable name typo in {html_options} and {html_checkboxes} (Issue #54)
+- bugfix <?xml> tag did create wrong output when caching enabled and the tag was in included subtemplate
+- bugfix Smarty_CacheResource_mysql example was missing strtotime() calls
+
+===== Smarty-3.1.3 =====
+07.10.2011
+- improvement removed html comments from {mailto} (Forum Topic 20092)
+- bugfix testInstall() would not show path to internal plugins_dir (Forum Post 74627)
+- improvement testInstall() now showing resolved paths and checking the include_path if necessary
+- bugfix html_options plugin did not handle object values properly (Issue #49, Forum Topic 20049)
+- improvement html_checkboxes and html_radios to accept null- and object values, and label_ids attribute
+- improvement removed some unnecessary count()s
+- bugfix parent pointer was not set when fetch() for other template was called on template object
+
+06.10.2011
+- bugfix switch lexer internals depending on mbstring.func_overload
+- bugfix start_year and end_year of {html_select_date} did not use current year as offset base (Issue #53)
+
+05.10.2011
+- bugfix of problem introduced with r4342 by replacing strlen() with isset()
+- add environment configuration issue with mbstring.func_overload Smarty cannot compensate for (Issue #45)
+- bugfix nofilter tag option did not disable default modifier
+- bugfix html_options plugin did not handle null- and object values properly (Issue #49, Forum Topic 20049)
+
+04.10.2011
+- bugfix assign() in plugins called in subtemplates did change value also in parent template
+- bugfix of problem introduced with r4342 on math plugin
+- bugfix output filter should not run on individually cached subtemplates
+- add unloadFilter() method
+- bugfix has_nocache_code flag was not reset before compilation
+
+===== Smarty-3.1.2 =====
+03.10.2011
+- improvement add internal $joined_template_dir property instead computing it on the fly several times
+
+01.10.2011
+- improvement replaced most in_array() calls by more efficient isset() on array_flip()ed haystacks
+- improvement replaced some strlen($foo) > 3 calls by isset($foo[3])
+- improvement Smarty_Internal_Utility::clearCompiledTemplate() removed redundant strlen()s
+
+29.09.2011
+- improvement of Smarty_Internal_Config::loadConfigVars() dropped the in_array for index look up
+
+28.09.2011
+- bugfix on template functions called nocache calling other template functions
+
+27.09.2011
+- bugfix possible warning "attempt to modify property of non-object" in {section} (issue #34)
+- added chaining to Smarty_Internal_Data so $smarty->assign('a',1)->assign('b',2); is possible now
+- bugfix remove race condition when a custom resource did change timestamp during compilation
+- bugfix variable property did not work on objects variable in template
+- bugfix smarty_make_timestamp() failed to process DateTime objects properly
+- bugfix wrong resource could be used on compile check of custom resource
+
+26.09.2011
+- bugfix repeated calls to same subtemplate did not make use of cached template object
+
+24.09.2011
+- removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application
+- optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable
+- added compile_dir and cache_dir to list of muted directories
+- improvment better error message for undefined templates at {include}
+
+23.09.2011
+- remove unused properties
+- optimization use real function instead anonymous function for preg_replace_callback
+- bugfix a relative {include} in child template blocks failed
+- bugfix direct setting of $template_dir, $config_dir, $plugins_dir in __construct() of an
+ extended Smarty class created problems
+- bugfix error muting was not implemented for cache locking
+
+===== Smarty 3.1.1 =====
+22.09.2011
+- bugfix {foreachelse} does fail if {section} was nested inside {foreach}
+- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true
+
+21.09.2011
+- bugfix look for mixed case plugin file names as in 3.0 if not found try all lowercase
+- added $error_muting to suppress error messages even for badly implemented error_handlers
+- optimized autoloader
+- reverted ./ and ../ handling in fetch() and display() - they're allowed again
+
+20.09.2011
+- bugfix removed debug echo output while compiling template inheritance
+- bugfix relative paths in $template_dir broke relative path resolving in {include "../foo.tpl"}
+- bugfix {include} did not work inside nested {block} tags
+- bugfix {assign} with scope root and global did not work in all cases
+
+19.09.2011
+- bugfix regression in Smarty_CacheReource_KeyValueStore introduced by r4261
+- bugfix output filter shall not run on included subtemplates
+
+18.09.2011
+- bugfix template caching did not care about file.tpl in different template_dir
+- bugfix {include $file} was broken when merge_compiled_incluges = true
+- bugfix {include} was broken when merge_compiled_incluges = true and same indluded template
+ was used in different main templates in one compilation run
+- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}
+- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true
+
+17.09.2011
+- bugfix lock_id for file resource would create invalid filepath
+- bugfix resource caching did not care about file.tpl in different template_dir
+
+===== Smarty 3.1.0 =====
+15/09/2011
+- optimization of {foreach}; call internal _count() method only when "total" or "last" {foreach} properties are used
+
+11/09/2011
+- added unregisterObject() method
+
+06/09/2011
+- bugfix isset() did not work in templates on config variables
+
+03/09/2011
+- bugfix createTemplate() must default to cache_id and compile_id of Smarty object
+- bugfix Smarty_CacheResource_KeyValueStore must include $source->uid in cache filepath to keep templates with same
+ name but different folders separated
+- added cacheresource.apc.php example in demo folder
+
+02/09/2011
+- bugfix cache lock file must use absolute filepath
+
+01/09/2011
+- update of cache locking
+
+30/08/2011
+- added locking mechanism to CacheResource API (implemented with File and KeyValueStores)
+
+28/08/2011
+- bugfix clearCompileTemplate() did not work for specific template subfolder or resource
+
+27/08/2011
+- bugfix {$foo|bar+1} did create syntax error
+
+26/08/2011
+- bugfix when generating nocache code which contains double \
+- bugfix handle race condition if cache file was deleted between filemtime and include
+
+17/08/2011
+- bugfix CacheResource_Custom bad internal fetch() call
+
+15/08/2011
+- bugfix CacheResource would load content twice for KeyValueStore and Custom handlers
+
+06/08/2011
+- bugfix {include} with scope attribute could execute in wrong scope
+- optimization of compile_check processing
+
+03/08/2011
+- allow comment tags to comment {block} tags out in child templates
+
+26/07/2011
+- bugfix experimental getTags() method did not work
+
+24/07/2011
+- sure opened output buffers are closed on exception
+- bugfix {foreach} did not work on IteratorAggregate
+
+22/07/2011
+- clear internal caches on clearAllCache(), clearCache(), clearCompiledTemplate()
+
+21/07/2011
+- bugfix value changes of variable values assigned to Smarty object could not be seen on repeated $smarty->fetch() calls
+
+17/07/2011
+- bugfix {$smarty.block.child} did drop a notice at undefined child
+
+15/07/2011
+- bugfix individual cache_lifetime of {include} did not work correctly inside {block} tags
+- added caches for Smarty_Internal_TemplateSource and Smarty_Internal_TemplateCompiled to reduce I/O for multiple cache_id rendering
+
+14/07/2011
+- made Smarty::loadPlugin() respect the include_path if required
+
+13/07/2011
+- optimized internal file write functionality
+- bugfix PHP did eat line break on nocache sections
+- fixed typo of Smarty_Security properties $allowed_modifiers and $disabled_modifiers
+
+06/07/2011
+- bugfix variable modifier must run befor gereral filtering/escaping
+
+04/07/2011
+- bugfix use (?P<name>) syntax at preg_match as some pcre libraries failed on (?<name>)
+- some performance improvement when using generic getter/setter on template objects
+
+30/06/2011
+- bugfix generic getter/setter of Smarty properties used on template objects did throw exception
+- removed is_dir and is_readable checks from directory setters for better performance
+
+28/06/2011
+- added back support of php template resource as undocumented feature
+- bugfix automatic recompilation on version change could drop undefined index notice on old 3.0 cache and compiled files
+- update of README_3_1_DEV.txt and moved into the distribution folder
+- improvement show first characters of eval and string templates instead sha1 Uid in debug window
+
+===== Smarty 3.1-RC1 =====
+25/06/2011
+- revert change of 17/06/2011. $_smarty varibale removed. call loadPlugin() from inside plugin code if required
+- code cleanup, remove no longer used properties and methods
+- update of PHPdoc comments
+
+23/06/2011
+- bugfix {html_select_date} would not respect current time zone
+
+19/06/2011
+- added $errors argument to testInstall() functions to suppress output.
+- added plugin-file checks to testInstall()
+
+18/06/2011
+- bugfix mixed use of same subtemplate inline and not inline in same script could cause a warning during compilation
+
+17/06/2011
+- bugfix/change use $_smarty->loadPlugin() when loading nested depending plugins via loadPlugin
+- bugfix {include ... inline} within {block}...{/block} did fail
+
+16/06/2011
+- bugfix do not overwrite '$smarty' template variable when {include ... scope=parent} is called
+- bugfix complete empty inline subtemplates did fail
+
+15/06/2011
+- bugfix template variables where not accessable within inline subtemplates
+
+12/06/2011
+- bugfix removed unneeded merging of template variable when fetching includled subtemplates
+
+10/06/2011
+- made protected properties $template_dir, $plugins_dir, $cache_dir, $compile_dir, $config_dir accessible via magic methods
+
+09/06/2011
+- fix smarty security_policy issue in plugins {html_image} and {fetch}
+
+05/06/2011
+- update of SMARTY_VERSION
+- bugfix made getTags() working again
+
+04/06/2011
+- allow extends resource in file attribute of {extends} tag
+
+03/06/2011
+- added {setfilter} tag to set filters for variable output
+- added escape_html property to control autoescaping of variable output
+
+27/05/2011
+- added allowed/disabled tags and modifiers in security for sandboxing
+
+23/05/2011
+- added base64: and urlencode: arguments to eval and string resource types
+
+22/05/2011
+- made time-attribute of {html_select_date} and {html_select_time} accept arrays as defined by attributes prefix and field_array
+
+13/05/2011
+- remove setOption / getOption calls from SamrtyBC class
+
+02/05/2011
+- removed experimental setOption() getOption() methods
+- output returned content also on opening tag calls of block plugins
+- rewrite of default plugin handler
+- compile code of variable filters for better performance
+
+20/04/2011
+- allow {php} {include_php} tags and PHP_ALLOW handling only with the SmartyBC class
+- removed support of php template resource
+
+20/04/2011
+- added extendsall resource example
+- optimization of template variable access
+- optimization of subtemplate handling {include}
+- optimization of template class
+
+01/04/2011
+- bugfix quote handling in capitalize modifier
+
+28/03/2011
+- bugfix stripslashes() requried when using PCRE e-modifier
+
+04/03/2011
+- upgrade to new PHP_LexerGenerator version 0.4.0 for better performance
+
+27/02/2011
+- ignore .svn folders when clearing cache and compiled files
+- string resources do not need a modify check
+
+26/02/2011
+- replaced smarty_internal_wrapper by SmartyBC class
+- load utility functions as static methods instead through __call()
+- bugfix in extends resource when subresources are used
+- optimization of modify checks
+
+25/02/2011
+- use $smarty->error_unassigned to control NOTICE handling on unassigned variables
+
+21/02/2011
+- added new new compile_check mode COMPILECHECK_CACHEMISS
+- corrected new cloning behaviour of createTemplate()
+- do no longer store the compiler object as property in the compile_tag classes to avoid possible memory leaks
+ during compilation
+
+19/02/2011
+- optimizations on merge_compiled_includes handling
+- a couple of optimizations and bugfixes related to new resource structure
+
+17/02/2011
+- changed ./ and ../ behaviour
+
+14/02/2011
+- added {block ... hide} option to suppress block if no child is defined
+
+13/02/2011
+- update handling of recursive subtemplate calls
+- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
+
+12/02/2011
+- new class Smarty_Internal_TemplateBase with shared methods of Smarty and Template objects
+- optimizations of template processing
+- made register... methods permanet
+- code for default_plugin_handler
+- add automatic recompilation at version change
+
+04/02/2011
+- change in Smarty_CacheResource_Custom
+- bugfix cache_lifetime did not compile correctly at {include} after last update
+- moved isCached processing into CacheResource class
+- bugfix new CacheResource API did not work with disabled compile_check
+
+03/02/2011
+- handle template content as function to improve speed on multiple calls of same subtemplate and isCached()/display() calls
+- bugfixes and improvents in the new resource API
+- optimizations of template class code
+
+25/01/2011
+- optimized function html_select_time
+
+22/01/2011
+- added Smarty::$use_include_path configuration directive for Resource API
+
+21/01/2011
+- optimized function html_select_date
+
+19/01/2011
+- optimized outputfilter trimwhitespace
+
+18/01/2011
+- bugfix Config to use Smarty_Resource to fetch sources
+- optimized Smarty_Security's isTrustedDir() and isTrustedPHPDir()
+
+17/01/2011
+- bugfix HTTP headers for CGI SAPIs
+
+16/01/2011
+- optimized internals of Smarty_Resource and Smarty_CacheResource
+
+14/01/2011
+- added modifiercompiler escape to improve performance of escaping html, htmlall, url, urlpathinfo, quotes, javascript
+- added support to choose template_dir to load from: [index]filename.tpl
+
+12/01/2011
+- added unencode modifier to revert results of encode modifier
+- added to_charset and from_charset modifier for character encoding
+
+11/01/2011
+- added SMARTY_MBSTRING to generalize MBString detection
+- added argument $lc_rest to modifier.capitalize to lower-case anything but the first character of a word
+- changed strip modifier to consider unicode white-space, too
+- changed wordwrap modifier to accept UTF-8 strings
+- changed count_sentences modifier to consider unicode characters and treat sequences delimited by ? and ! as sentences, too
+- added argument $double_encode to modifier.escape (applies to html and htmlall only)
+- changed escape modifier to be UTF-8 compliant
+- changed textformat block to be UTF-8 compliant
+- optimized performance of mailto function
+- fixed spacify modifier so characters are not prepended and appended, made it unicode compatible
+- fixed truncate modifier to properly use mb_string if possible
+- removed UTF-8 frenzy from count_characters modifier
+- fixed count_words modifier to treat "hello-world" as a single word like str_count_words() does
+- removed UTF-8 frenzy from upper modifier
+- removed UTF-8 frenzy from lower modifier
+
+01/01/2011
+- optimize smarty_modified_escape for hex, hexentity, decentity.
+
+28/12/2010
+- changed $tpl_vars, $config_vars and $parent to belong to Smarty_Internal_Data
+- added Smarty::registerCacheResource() for dynamic cache resource object registration
+
+27/12/2010
+- added Smarty_CacheResource API and refactored existing cache resources accordingly
+- added Smarty_CacheResource_Custom and Smarty_CacheResource_Mysql
+
+26/12/2010
+- added Smarty_Resource API and refactored existing resources accordingly
+- added Smarty_Resource_Custom and Smarty_Resource_Mysql
+- bugfix Smarty::createTemplate() to return properly cloned template instances
+
+24/12/2010
+- optimize smarty_function_escape_special_chars() for PHP >= 5.2.3
+
+===== SVN 3.0 trunk =====
+14/05/2011
+- bugfix error handling at stream resources
+
+13/05/2011
+- bugfix condition starting with "-" did fail at {if} and {while} tags
+
+22/04/2011
+- bugfix allow only fixed string as file attribute at {extends} tag
+
+01/04/2011
+- bugfix do not run filters and default modifier when displaying the debug template
+- bugfix of embedded double quotes within multi line strings (""")
+
+29/03/2011
+- bugfix on error message in smarty_internal_compile_block.php
+- bugfix mb handling in strip modifier
+- bugfix for Smarty2 style registered compiler function on unnamed attribute passing like {tag $foo $bar}
+
+17/03/2011
+- bugfix on default {function} parameters when {function} was used in nocache sections
+- bugfix on compiler object destruction. compiler_object property was by mistake unset.
+
+09/03/2011
+-bugfix a variable filter should run before modifiers on an output tag (see change of 23/07/2010)
+
+08/03/2011
+- bugfix loading config file without section should load only defaults
+
+03/03/2011
+- bugfix "smarty" template variable was not recreated when cached templated had expired
+- bugfix internal rendered_content must be cleared after subtemplate was included
+
+01/03/2011
+- bugfix replace modifier did not work in 3.0.7 on systems without multibyte support
+- bugfix {$smarty.template} could return in 3.0.7 parent template name instead of
+ child name when it needed to compile
+
+25/02/2011
+- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}
+
+24/02/2011
+- bugfix $smarty->clearCache('some.tpl') did by mistake cache the template object
+
+18/02/2011
+- bugfix removed possible race condition when isCached() was called for an individually cached subtemplate
+- bugfix force default debug.tpl to be loaded by the file resource
+
+17/02/2011
+-improvement not to delete files starting with '.' from cache and template_c folders on clearCompiledTemplate() and clearCache()
+
+16/02/2011
+-fixed typo in exception message of Smarty_Internal_Template
+-improvement allow leading spaces on } tag closing if auto_literal is enabled
+
+13/02/2011
+- bufix replace $smarty->triggerError() by exception
+- removed obsolete {popup_init..} plugin from demo templates
+- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
+
+===== Smarty 3.0.7 =====
+09/02/2011
+- patched vulnerability when using {$smarty.template}
+
+01/02/2011
+- removed assert() from config and template parser
+
+31/01/2011
+- bugfix the lexer/parser did fail on special characters like VT
+
+16/01/2011
+-bugfix of ArrayAccess object handling in internal _count() method
+-bugfix of Iterator object handling in internal _count() method
+
+14/01/2011
+-bugfix removed memory leak while processing compileAllTemplates
+
+12/01/2011
+- bugfix in {if} and {while} tag compiler when using assignments as condition and nocache mode
+
+10/01/2011
+- bugfix when using {$smarty.block.child} and name of {block} was in double quoted string
+- bugfix updateParentVariables() was called twice when leaving {include} processing
+
+- bugfix mb_str_replace in replace and escape modifiers work with utf8
+
+31/12/2010
+- bugfix dynamic configuration of $debugging_crtl did not work
+- bugfix default value of $config_read_hidden changed to false
+- bugfix format of attribute array on compiler plugins
+- bugfix getTemplateVars() could return value from wrong scope
+
+28/12/2010
+- bugfix multiple {append} tags failed to compile.
+
+22/12/2010
+- update do not clone the Smarty object an internal createTemplate() calls to increase performance
+
+21/12/2010
+- update html_options to support class and id attrs
+
+17/12/2010
+- bugfix added missing support of $cache_attrs for registered plugins
+
+15/12/2010
+- bugfix assignment as condition in {while} did drop an E_NOTICE
+
+14/12/2010
+- bugfix when passing an array as default parameter at {function} tag
+
+13/12/2010
+- bugfix {$smarty.template} in child template did not return right content
+- bugfix Smarty3 did not search the PHP include_path for template files
+
+===== Smarty 3.0.6 =====
+
+12/12/2010
+- bugfix fixed typo regarding yesterdays change to allow streamWrapper
+
+11/12/2010
+- bugfix nested block tags in template inheritance child templates did not work correctly
+- bugfix {$smarty.current_dir} in child template did not point to dir of child template
+- bugfix changed code when writing temporary compiled files to allow stream_wrapper
+
+06/12/2010
+- bugfix getTemplateVars() should return 'null' instead dropping E_NOTICE on an unassigned variable
+
+05/12/2010
+- bugfix missing declaration of $smarty in Smarty class
+- bugfix empty($foo) in {if} did drop a notice when $foo was not assigned
+
+01/12/2010
+- improvement of {debug} tag output
+
+27/11/2010
+-change run output filter before cache file is written. (same as in Smarty2)
+
+24/11/2011
+-bugfix on parser at !$foo|modifier
+-change parser logic when assignments used as condition in {if] and {while} to allow assign to array element
+
+23/11/2011
+-bugfix allow integer as attribute name in plugin calls
+-change trimm whitespace from error message, removed long list of expected tokens
+
+22/11/2010
+- bugfix on template inheritance when an {extends} tag was inserted by a prefilter
+- added error message for illegal variable file attributes at {extends...} tags
+
+===== Smarty 3.0.5 =====
+
+
+19/11/2010
+- bugfix on block plugins with modifiers
+
+18/11/2010
+- change on handling of unassigned template variable -- default will drop E_NOTICE
+- bugfix on Smarty2 wrapper load_filter() did not work
+
+17/11/2010
+- bugfix on {call} with variable function name
+- bugfix on {block} if name did contain '-'
+- bugfix in function.fetch.php , referece to undefined $smarty
+
+16/11/2010
+- bugfix whitespace in front of "<?php" in smarty_internal_compile_private_block_plugin.php
+- bugfix {$smarty.now} did compile incorrectly
+- bugfix on reset(),end(),next(),prev(),current() within templates
+- bugfix on default parameter for {function}
+
+15/11/2010
+- bugfix when using {$smarty.session} as object
+- bugfix scoping problem on $smarty object passed to filters
+- bugfix captured content could not be accessed globally
+- bugfix Smarty2 wrapper functions could not be call from within plugins
+
+===== Smarty 3.0.4 =====
+
+14/11/2010
+- bugfix isset() did not allow multiple parameter
+- improvment of some error messages
+- bugfix html_image did use removed property $request_use_auto_globals
+- small performace patch in Smarty class
+
+13/11/2010
+- bugfix overloading problem when $smarty->fetch()/display() have been used in plugins
+ (introduced with 3.0.2)
+- code cleanup
+
+===== Smarty 3.0.3 =====
+
+13/11/2010
+- bugfix on {debug}
+- reverted location of loadPlugin() to Smarty class
+- fixed comments in plugins
+- fixed internal_config (removed unwanted code line)
+- improvement remove last linebreak from {function} definition
+
+===== Smarty 3.0.2 =====
+
+12/11/2010
+- reactivated $error_reporting property handling
+- fixed typo in compile_continue
+- fixed security in {fetch} plugin
+- changed back plugin parameters to two. second is template object
+ with transparent access to Smarty object
+- fixed {config_load} scoping form compile time to run time
+
+===== Smarty 3.0.0 =====
+
+
+
+11/11/2010
+- major update including some API changes
+
+10/11/2010
+- observe compile_id also for config files
+
+09/11/2010
+-bugfix on complex expressions as start value for {for} tag
+request_use_auto_globals
+04/11/2010
+- bugfix do not allow access of dynamic and private object members of assigned objects when
+ security is enabled.
+
+01/11/2010
+- bugfix related to E_NOTICE change. {if empty($foo)} did fail when $foo contained a string
+
+28/10/2010
+- bugfix on compiling modifiers within $smarty special vars like {$smarty.post.{$foo|lower}}
+
+27/10/2010
+- bugfix default parameter values did not work for template functions included with {include}
+
+25/10/2010
+- bugfix for E_NOTICE change, array elements did not work as modifier parameter
+
+20/10/2010
+- bugfix for the E_NOTICE change
+
+19/10/2010
+- change Smarty does no longer mask out E_NOTICE by default during template processing
+
+13/10/2010
+- bugfix removed ambiguity between ternary and stream variable in template syntax
+- bugfix use caching properties of template instead of smarty object when compiling child {block}
+- bugfix {*block}...{/block*} did throw an exception in template inheritance
+- bugfix on template inheritance using nested eval or string resource in {extends} tags
+- bugfix on output buffer handling in isCached() method
+
+===== RC4 =====
+
+01/10/2010
+- added {break} and {continue} tags for flow control of {foreach},{section},{for} and {while} loops
+- change of 'string' resource. It's no longer evaluated and compiled files are now stored
+- new 'eval' resource which evaluates a template without saving the compiled file
+- change in isCached() method to allow multiple calls for the same template
+
+25/09/2010
+- bugfix on some compiling modifiers
+
+24/09/2010
+- bugfix merge_compiled_includes flag was not restored correctly in {block} tag
+
+22/09/2010
+- bugfix on default modifier
+
+18/09/2010
+- bugfix untility compileAllConfig() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
+- bugfix on templateExists() for extends resource
+
+17/09/2010
+- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags
+- bugfix corrected error message on missing template files in extends resource
+- bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
+
+16/09/2010
+- bugfix when a doublequoted modifier parameter did contain Smarty tags and ':'
+
+15/09/2010
+- bugfix resolving conflict between '<%'/'%>' as custom Smarty delimiter and ASP tags
+- use ucfirst for resource name on internal resource class names
+
+12/09/2010
+- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)
+
+10/09/2010
+- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)
+
+08/09/2010
+- allow multiple template inheritance branches starting in subtemplates
+
+07/09/2010
+- bugfix {counter} and {cycle} plugin assigned result to smarty variable not in local(template) scope
+- bugfix templates containing just {strip} {/strip} tags did produce an error
+
+
+23/08/2010
+- fixed E_STRICT errors for uninitialized variables
+
+22/08/2010
+- added attribute cache_id to {include} tag
+
+13/08/2010
+- remove exception_handler property from Smarty class
+- added Smarty's own exceptions SmartyException and SmartyCompilerException
+
+09/08/2010
+- bugfix on modifier with doublequoted strings as parameter containing embedded tags
+
+06/08/2010
+- bugfix when cascading some modifier like |strip|strip_tags modifier
+
+05/08/2010
+- added plugin type modifiercompiler to produce compiled modifier code
+- changed standard modifier plugins to the compiling versions whenever possible
+- bugfix in nocache sections {include} must not cache the subtemplate
+
+02/08/2010
+- bugfix strip did not work correctly in conjunction with comment lines
+
+31/07/2010
+- bugfix on nocache attribute at {assign} and {append}
+
+30/07/2010
+- bugfix passing scope attributes in doublequoted strings did not work at {include} {assign} and {append}
+
+25/07/2010
+- another bugfix of change from 23/07/2010 when compiling modifier
+
+24/07/2010
+- bugfix of change from 23/07/2010 when compiling modifier
+
+23/07/2010
+- changed execution order. A variable filter does now run before modifiers on output of variables
+- bugfix use always { and } as delimiter for debug.tpl
+
+
+22/07/2010
+- bugfix in templateExists() method
+
+20/07/2010
+- fixed handling of { strip } tag with whitespaces
+
+15/07/2010
+- bufix {$smarty.template} does include now the relative path, not just filename
+
+===== RC3 =====
+
+
+
+
+15/07/2010
+- make the date_format modifier work also on objects of the DateTime class
+- implementation of parsetrees in the parser to close security holes and remove unwanted empty line in HTML output
+
+08/07/2010
+- bugfix on assigning multidimensional arrays within templates
+- corrected bugfix for truncate modifier
+
+07/07/2010
+- bugfix the truncate modifier needs to check if the string is utf-8 encoded or not
+- bugfix support of script files relative to trusted_dir
+
+06/07/2010
+- create exception on recursive {extends} calls
+- fixed reported line number at "unexpected closing tag " exception
+- bugfix on escape:'mail' modifier
+- drop exception if 'item' variable is equal 'from' variable in {foreach} tag
+
+01/07/2010
+- removed call_user_func_array calls for optimization of compiled code when using registered modifiers and plugins
+
+25/06/2010
+- bugfix escaping " when block tags are used within doublequoted strings
+
+24/06/2010
+- replace internal get_time() calls with standard PHP5 microtime(true) calls in Smarty_Internal_Utility
+- added $smarty->register->templateClass() and $smarty->unregister->templateClass() methods for supporting static classes with namespace
+
+
+22/06/2010
+- allow spaces between typecast and value in template syntax
+- bugfix get correct count of traversables in {foreach} tag
+
+21/06/2010
+- removed use of PHP shortags SMARTY_PHP_PASSTHRU mode
+- improved speed of cache->clear() when a compile_id was specified and use_sub_dirs is true
+
+20/06/2010
+- replace internal get_time() calls with standard PHP5 microtime(true) calls
+- closed security hole when php.ini asp_tags = on
+
+18/06/2010
+- added __toString method to the Smarty_Variable class
+
+
+14/06/2010
+- make handling of Smarty comments followed by newline BC to Smarty2
+
+
+===== RC2 =====
+
+
+
+13/06/2010
+- bugfix Smarty3 did not handle hexadecimals like 0x0F as numerical value
+- bugifx Smarty3 did not accept numerical constants like .1 or 2. (without a leading or trailing digit)
+
+11/06/2010
+- bugfix the lexer did fail on larger {literal} ... {/literal} sections
+
+03/06/2010
+- bugfix on calling template functions like Smarty tags
+
+01/06/2010
+- bugfix on template functions used with template inheritance
+- removed /* vim: set expandtab: */ comments
+- bugfix of auto literal problem introduce with fix of 31/05/2010
+
+31/05/2010
+- bugfix the parser did not allow some smarty variables with special name like $for, $if, $else and others.
+
+27/05/2010
+- bugfix on object chaining using variable properties
+- make scope of {counter} and {cycle} tags again global as in Smarty2
+
+26/05/2010
+- bugfix removed decrepated register_resource call in smarty_internal_template.php
+
+25/05/2010
+- rewrite of template function handling to improve speed
+- bugfix on file dependency when merge_compiled_includes = true
+
+
+16/05/2010
+- bugfix when passing parameter with numeric name like {foo 1='bar' 2='blar'}
+
+14/05/2010
+- bugfix compile new config files if compile_check and force_compile = false
+- added variable static classes names to template syntax
+
+11/05/2010
+- bugfix make sure that the cache resource is loaded in all conditions when template methods getCached... are called externally
+- reverted the change 0f 30/04/2010. With the exception of forward references template functions can be again called by a standard tag.
+
+10/05/2010
+- bugfix on {foreach} and {for} optimizations of 27/04/2010
+
+09/05/2010
+- update of template and config file parser because of minor parser generator bugs
+
+07/05/2010
+- bugfix on {insert}
+
+06/05/2010
+- bugfix when merging compiled templates and objects are passed as parameter of the {include} tag
+
+05/05/2010
+- bugfix on {insert} to cache parameter
+- implementation of $smarty->default_modifiers as in Smarty2
+- bugfix on getTemplateVars method
+
+01/05/2010
+- bugfix on handling of variable method names at object chaning
+
+30/04/2010
+- bugfix when comparing timestamps in sysplugins/smarty_internal_config.php
+- work around of a substr_compare bug in older PHP5 versions
+- bugfix on template inheritance for tag names starting with "block"
+- bugfix on {function} tag with name attribute in doublequoted strings
+- fix to make calling of template functions unambiguously by madatory usage of the {call} tag
+
+===== RC1 =====
+
+27/04/2010
+- change default of $debugging_ctrl to 'NONE'
+- optimization of compiled code of {foreach} and {for} loops
+- change of compiler for config variables
+
+27/04/2010
+- bugfix in $smarty->cache->clear() method. (do not cache template object)
+
+
+17/04/2010
+- security fix in {math} plugin
+
+
+12/04/2010
+- bugfix in smarty_internal_templatecompilerbase (overloaded property)
+- removed parser restrictions in using true,false and null as ID
+
+07/04/2010
+- bugfix typo in smarty_internal_templatecompilerbase
+
+31/03/2010
+- compile locking by touching old compiled files to avoid concurrent compilations
+
+29/03/2010
+- bugfix allow array definitions as modifier parameter
+- bugfix observe compile_check property when loading config files
+- added the template object as third filter parameter
+
+25/03/2010
+- change of utility->compileAllTemplates() log messages
+- bugfix on nocache code in {function} tags
+- new method utility->compileAllConfig() to compile all config files
+
+24/03/2010
+- bugfix on register->modifier() error messages
+
+23/03/2010
+- bugfix on template inheritance when calling multiple child/parent relations
+- bugfix on caching mode SMARTY_CACHING_LIFETIME_SAVED and cache_lifetime = 0
+
+22/03/2010
+- bugfix make directory separator operating system independend in compileAllTemplates()
+
+21/03/2010
+- removed unused code in compileAllTemplates()
+
+19/03/2010
+- bugfix for multiple {/block} tags on same line
+
+17/03/2010
+- bugfix make $smarty->cache->clear() function independent from caching status
+
+16/03/2010
+- bugfix on assign attribute at registered template objects
+- make handling of modifiers on expression BC to Smarty2
+
+15/03/2010
+- bugfix on block plugin calls
+
+11/03/2010
+- changed parsing of <?php and ?> back to Smarty2 behaviour
+
+08/03/2010
+- bugfix on uninitialized properties in smarty_internal_template
+- bugfix on $smarty->disableSecurity()
+
+04/03/2010
+- bugfix allow uppercase chars in registered resource names
+- bugfix on accessing chained objects of static classes
+
+01/03/2010
+- bugfix on nocache code in {block} tags if child template was included by {include}
+
+27/02/2010
+- allow block tags inside double quoted string
+
+26/02/2010
+- cache modified check implemented
+- support of access to a class constant from an object (since PHP 5.3)
+
+24/02/2010
+- bugfix on expressions in doublequoted string enclosed in backticks
+- added security property $static_classes for static class security
+
+18/02/2010
+- bugfix on parsing Smarty tags inside <?xml ... ?>
+- bugfix on truncate modifier
+
+17/02/2010
+- removed restriction that modifiers did require surrounding parenthesis in some cases
+- added {$smarty.block.child} special variable for template inheritance
+
+16/02/2010
+- bugfix on <?xml ... ?> tags for all php_handling modes
+- bugfix on parameter of variablefilter.htmlspecialchars.php plugin
+
+14/02/2010
+- added missing _plugins property in smarty.class.php
+- bugfix $smarty.const... inside doublequoted strings and backticks was compiled into wrong PHP code
+
+12/02/2010
+- bugfix on nested {block} tags
+- changed Smarty special variable $smarty.parent to $smarty.block.parent
+- added support of nested {bock} tags
+
+10/02/2010
+- avoid possible notice on $smarty->cache->clear(...), $smarty->clear_cache(....)
+- allow Smarty tags inside <? ... ?> tags in SMARTY_PHP_QUOTE and SMARTY_PHP_PASSTHRU mode
+- bugfix at new "for" syntax like {for $x=1 to 10 step 2}
+
+09/02/2010
+- added $smarty->_tag_stack for tracing block tag hierarchy
+
+08/02/2010
+- bugfix use template fullpath at §smarty->cache->clear(...), $smarty->clear_cache(....)
+- bugfix of cache filename on extended templates when force_compile=true
+
+07/02/2010
+- bugfix on changes of 05/02/2010
+- preserve line endings type form template source
+- API changes (see README file)
+
+05/02/2010
+- bugfix on modifier and block plugins with same name
+
+02/02/2010
+- retaining newlines at registered functions and function plugins
+
+01/25/2010
+- bugfix cache resource was not loaded when caching was globally off but enabled at a template object
+- added test that $_SERVER['SCRIPT_NAME'] does exist in Smarty.class.php
+
+01/22/2010
+- new method $smarty->createData([$parent]) for creating a data object (required for bugfixes below)
+- bugfix config_load() method now works also on a data object
+- bugfix get_config_vars() method now works also on a data and template objects
+- bugfix clear_config() method now works also on a data and template objects
+
+01/19/2010
+- bugfix on plugins if same plugin was called from a nocache section first and later from a cached section
+
+
+###beta 7###
+
+
+01/17/2010
+- bugfix on $smarty.const... in double quoted strings
+
+01/16/2010
+- internal change of config file lexer/parser on handling of section names
+- bugfix on registered objects (format parameter of register_object was not handled correctly)
+
+01/14/2010
+- bugfix on backslash within single quoted strings
+- bugfix allow absolute filepath for config files
+- bugfix on special Smarty variable $smarty.cookies
+- revert handling of newline on no output tags like {if...}
+- allow special characters in config file section names for Smarty2 BC
+
+01/13/2010
+- bugfix on {if} tags
+
+01/12/2010
+- changed back modifier handling in parser. Some restrictions still apply:
+ if modifiers are used in side {if...} expression or in mathematical expressions
+ parentheses must be used.
+- bugfix the {function..} tag did not accept the name attribute in double quotes
+- closed possible security hole at <?php ... ?> tags
+- bugfix of config file parser on large config files
+
+
+###beta 6####
+
+01/11/2010
+- added \n to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source
+- added missing support of insert plugins
+- added optional nocache attribute to {block} tags in parent template
+- updated <?php...?> handling supporting now heredocs and newdocs. (thanks to Thue Jnaus Kristensen)
+
+01/09/2010
+- bugfix on nocache {block} tags in parent templates
+
+01/08/2010
+- bugfix on variable filters. filter/nofilter attributes did not work on output statements
+
+01/07/2010
+- bugfix on file dependency at template inheritance
+- bugfix on nocache code at template inheritance
+
+01/06/2010
+- fixed typo in smarty_internal_resource_registered
+- bugfix for custom delimiter at extends resource and {extends} tag
+
+01/05/2010
+- bugfix sha1() calculations at extends resource and some general improvments on sha1() handling
+
+
+01/03/2010
+- internal change on building cache files
+
+01/02/2010
+- update cached_timestamp at the template object after cache file is written to avoid possible side effects
+- use internally always SMARTY_CACHING_LIFETIME_* constants
+
+01/01/2010
+- bugfix for obtaining plugins which must be included (related to change of 12/30/2009)
+- bugfix for {php} tag (trow an exception if allow_php_tag = false)
+
+12/31/2009
+- optimization of generated code for doublequoted strings containing variables
+- rewrite of {function} tag handling
+ - can now be declared in an external subtemplate
+ - can contain nocache sections (nocache_hash handling)
+ - can be called in noccache sections (nocache_hash handling)
+ - new {call..} tag to call template functions with a variable name {call name=$foo}
+- fixed nocache_hash handling in merged compiled templates
+
+12/30/2009
+- bugfix for plugins defined in the script as smarty_function_foo
+
+12/29/2009
+- use sha1() for filepath encoding
+- updates on nocache_hash handling
+- internal change on merging some data
+- fixed cache filename for custom resources
+
+12/28/2009
+- update for security fixes
+- make modifier plugins always trusted
+- fixed bug loading modifiers in child template at template inheritance
+
+12/27/2009
+--- this is a major update with a couple of internal changes ---
+- new config file lexer/parser (thanks to Thue Jnaus Kristensen)
+- template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen)
+- fix on registered plugins with different type but same name
+- rewrite of plugin handling (optimized execution speed)
+- closed a security hole regarding PHP code injection into cache files
+- fixed bug in clear cache handling
+- Renamed a couple of internal classes
+- code cleanup for merging compiled templates
+- couple of runtime optimizations (still not all done)
+- update of getCachedTimestamp()
+- fixed bug on modifier plugins at nocache output
+
+12/19/2009
+- bugfix on comment lines in config files
+
+12/17/2009
+- bugfix of parent/global variable update at included/merged subtemplates
+- encode final template filepath into filename of compiled and cached files
+- fixed {strip} handling in auto literals
+
+12/16/2009
+- update of changelog
+- added {include file='foo.tpl' inline} inline option to merge compiled code of subtemplate into the calling template
+
+12/14/2009
+- fixed sideefect of last modification (objects in array index did not work anymore)
+
+12/13/2009
+- allow boolean negation ("!") as operator on variables outside {if} tag
+
+12/12/2009
+- bugfix on single quotes inside {function} tag
+- fix short append/prepend attributes in {block} tags
+
+12/11/2009
+- bugfix on clear_compiled_tpl (avoid possible warning)
+
+12/10/2009
+- bugfix on {function} tags and template inheritance
+
+12/05/2009
+- fixed problem when a cached file was fetched several times
+- removed unneeded lexer code
+
+12/04/2009
+- added max attribute to for loop
+- added security mode allow_super_globals
+
+12/03/2009
+- template inheritance: child templates can now call functions defined by the {function} tag in the parent template
+- added {for $foo = 1 to 5 step 2} syntax
+- bugfix for {$foo.$x.$y.$z}
+
+12/01/2009
+- fixed parsing of names of special formated tags like if,elseif,while,for,foreach
+- removed direct access to constants in templates because of some syntax problems
+- removed cache resource plugin for mysql from the distribution
+- replaced most hard errors (exceptions) by softerrors(trigger_error) in plugins
+- use $template_class property for template class name when compiling {include},{eval} and {extends} tags
+
+11/30/2009
+- map 'true' to SMARTY_CACHING_LIFETIME_CURRENT for the $smarty->caching parameter
+- allow {function} tags within {block} tags
+
+11/28/2009
+- ignore compile_id at debug template
+- added direct access to constants in templates
+- some lexer/parser optimizations
+
+11/27/2009
+- added cache resource MYSQL plugin
+
+11/26/2009
+- bugfix on nested doublequoted strings
+- correct line number on unknown tag error message
+- changed {include} compiled code
+- fix on checking dynamic varibales with error_unassigned = true
+
+11/25/2009
+- allow the following writing for boolean: true, TRUE, True, false, FALSE, False
+- {strip} tag functionality rewritten
+
+11/24/2009
+- bugfix for $smarty->config_overwrite = false
+
+11/23/2009
+- suppress warnings on unlink caused by race conditions
+- correct line number on unknown tag error message
+
+------- beta 5
+11/23/2009
+- fixed configfile parser for text starting with a numeric char
+- the default_template_handler_func may now return a filepath to a template source
+
+11/20/2009
+- bugfix for empty config files
+- convert timestamps of registered resources to integer
+
+11/19/2009
+- compiled templates are no longer touched with the filemtime of template source
+
+11/18/2009
+- allow integer as attribute name in plugin calls
+
+------- beta 4
+11/18/2009
+- observe umask settings when setting file permissions
+- avoide unneeded cache file creation for subtemplates which did occur in some situations
+- make $smarty->_current_file available during compilation for Smarty2 BC
+
+11/17/2009
+- sanitize compile_id and cache_id (replace illegal chars with _)
+- use _dir_perms and _file_perms properties at file creation
+- new constant SMARTY_RESOURCE_DATE_FORMAT (default '%b %e, %Y') which is used as default format in modifier date_format
+- added {foreach $array as $key=>$value} syntax
+- renamed extend tag and resource to extends: {extends file='foo.tol'} , $smarty->display('extends:foo.tpl|bar.tpl);
+- bugfix cycle plugin
+
+11/15/2009
+- lexer/parser optimizations on quoted strings
+
+11/14/2009
+- bugfix on merging compiled templates when source files got removed or renamed.
+- bugfix modifiers on registered object tags
+- fixed locaion where outputfilters are running
+- fixed config file definitions at EOF
+- fix on merging compiled templates with nocache sections in nocache includes
+- parser could run into a PHP error on wrong file attribute
+
+11/12/2009
+- fixed variable filenames in {include_php} and {insert}
+- added scope to Smarty variables in the {block} tag compiler
+- fix on nocache code in child {block} tags
+
+11/11/2009
+- fixed {foreachelse}, {forelse}, {sectionelse} compiled code at nocache variables
+- removed checking for reserved variables
+- changed debugging handling
+
+11/10/2009
+- fixed preg_qoute on delimiters
+
+11/09/2009
+- lexer/parser bugfix
+- new SMARTY_SPL_AUTOLOAD constant to control the autoloader option
+- bugfix for {function} block tags in included templates
+
+11/08/2009
+- fixed alphanumeric array index
+- bugfix on complex double quoted strings
+
+11/05/2009
+- config_load method can now be called on data and template objects
+
+11/04/2009
+- added typecasting support for template variables
+- bugfix on complex indexed special Smarty variables
+
+11/03/2009
+- fixed parser error on objects with special smarty vars
+- fixed file dependency for {incude} inside {block} tag
+- fixed not compiling on non existing compiled templates when compile_check = false
+- renamed function names of autoloaded Smarty methods to Smarty_Method_....
+- new security_class property (default is Smarty_Security)
+
+11/02/2009
+- added neq,lte,gte,mod as aliases to if conditions
+- throw exception on illegal Smarty() constructor calls
+
+10/31/2009
+- change of filenames in sysplugins folder for internal spl_autoload function
+- lexer/parser changed for increased compilation speed
+
+10/27/2009
+- fixed missing quotes in include_php.php
+
+10/27/2009
+- fixed typo in method.register_resource
+- pass {} through as literal
+
+10/26/2009
+- merge only compiled subtemplates into the compiled code of the main template
+
+10/24/2009
+- fixed nocache vars at internal block tags
+- fixed merging of recursive includes
+
+10/23/2009
+- fixed nocache var problem
+
+10/22/2009
+- fix trimwhitespace outputfilter parameter
+
+10/21/2009
+- added {$foo++}{$foo--} syntax
+- buxfix changed PHP "if (..):" to "if (..){" because of possible bad code when concenating PHP tags
+- autoload Smarty internal classes
+- fixed file dependency for config files
+- some code optimizations
+- fixed function definitions on some autoloaded methods
+- fixed nocache variable inside if condition of {if} tag
+
+10/20/2009
+- check at compile time for variable filter to improve rendering speed if no filter is used
+- fixed bug at combination of {elseif} tag and {...} in double quoted strings of static class parameter
+
+10/19/2009
+- fixed compiled template merging on variable double quoted strings as name
+- fixed bug in caching mode 2 and cache_lifetime -1
+- fixed modifier support on block tags
+
+10/17/2009
+- remove ?>\n<?php and ?><?php sequences from compiled template
+
+10/15/2009
+- buxfix on assigning array elements inside templates
+- parser bugfix on array access
+
+10/15/2009
+- allow bit operator '&' inside {if} tag
+- implementation of ternary operator
+
+10/13/2009
+- do not recompile evaluated templates if reused just with other data
+- recompile config files when config properties did change
+- some lexer/parser otimizations
+
+10/11/2009
+- allow {block} tags inside included templates
+- bugfix for resource plugins in Smarty2 format
+- some optimizations of internal.template.php
+
+10/11/2009
+- fixed bug when template with same name is used with different data objects
+- fixed bug with double quoted name attribute at {insert} tag
+- reenabled assign_by_ref and append_by_ref methods
+
+10/07/2009
+- removed block nesting checks for {capture}
+
+10/05/2009
+- added support of "isinstance" to {if} tag
+
+10/03/2009
+- internal changes to improve performance
+- fix registering of filters for classes
+
+10/01/2009
+- removed default timezone setting
+- reactivated PHP resource for simple PHP templates. Must set allow_php_templates = true to enable
+- {PHP} tag can be enabled by allow_php_tag = true
+
+09/30/2009
+- fixed handling template_exits method for all resource types
+- bugfix for other cache resources than file
+- the methods assign_by_ref is now wrapped to assign, append_by_ref to append
+- allow arrays of variables pass in display, fetch and createTemplate calls
+ $data = array('foo'=>'bar','foo2'=>'blar');
+ $smarty->display('my.tpl',$data);
+
+09/29/2009
+- changed {php} tag handling
+- removed support of Smarty::instance()
+- removed support of PHP resource type
+- improved execution speed of {foreach} tags
+- fixed bug in {section} tag
+
+09/23/2009
+- improvements and bugfix on {include} tag handling
+NOTICE: existing compiled template and cache files must be deleted
+
+09/19/2009
+- replace internal "eval()" calls by "include" during rendering process
+- speed improvment for templates which have included subtemplates
+ the compiled code of included templates is merged into the compiled code of the parent template
+- added logical operator "xor" for {if} tag
+- changed parameter ordering for Smarty2 BC
+ fetch($template, $cache_id = null, $compile_id = null, $parent = null)
+ display($template, $cache_id = null, $compile_id = null, $parent = null)
+ createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
+- property resource_char_set is now replaced by constant SMARTY_RESOURCE_CHAR_SET
+- fixed handling of classes in registered blocks
+- speed improvement of lexer on text sections
+
+09/01/2009
+- dropped nl2br as plugin
+- added '<>' as comparission operator in {if} tags
+- cached caching_lifetime property to cache_liftime for backward compatibility with Smarty2.
+ {include} optional attribute is also now cache_lifetime
+- fixed trigger_error method (moved into Smarty class)
+- version is now Beta!!!
+
+
+08/30/2009
+- some speed optimizations on loading internal plugins
+
+
+08/29/2009
+- implemented caching of registered Resources
+- new property 'auto_literal'. if true(default) '{ ' and ' }' interpreted as literal, not as Smarty delimiter
+
+
+08/28/2009
+- Fix on line breaks inside {if} tags
+
+08/26/2009
+- implemented registered resources as in Smarty2. NOTE: caching does not work yet
+- new property 'force_cache'. if true it forces the creation of a new cache file
+- fixed modifiers on arrays
+- some speed optimization on loading internal classes
+
+
+08/24/2009
+- fixed typo in lexer definition for '!==' operator
+- bugfix - the ouput of plugins was not cached
+- added global variable SCRIPT_NAME
+
+08/21/2009
+- fixed problems whitespace in conjuction with custom delimiters
+- Smarty tags can now be used as value anywhere
+
+08/18/2009
+- definition of template class name moded in internal.templatebase.php
+- whitespace parser changes
+
+08/12/2009
+- fixed parser problems
+
+08/11/2009
+- fixed parser problems with custom delimiter
+
+08/10/2009
+- update of mb support in plugins
+
+
+08/09/2009
+- fixed problems with doublequoted strings at name attribute of {block} tag
+- bugfix at scope attribute of {append} tag
+
+08/08/2009
+- removed all internal calls of Smarty::instance()
+- fixed code in double quoted strings
+
+08/05/2009
+- bugfix mb_string support
+- bugfix of \n.\t etc in double quoted strings
+
+07/29/2009
+- added syntax for variable config vars like #$foo#
+
+07/28/2009
+- fixed parsing of $smarty.session vars containing objects
+
+07/22/2009
+- fix of "$" handling in double quoted strings
+
+07/21/2009
+- fix that {$smarty.current_dir} return correct value within {block} tags.
+
+07/20/2009
+- drop error message on unmatched {block} {/block} pairs
+
+07/01/2009
+- fixed smarty_function_html_options call in plugin function.html_select_date.php (missing ,)
+
+06/24/2009
+- fixed smarty_function_html_options call in plugin function.html_select_date.php
+
+06/22/2009
+- fix on \n and spaces inside smarty tags
+- removed request_use_auto_globals propert as it is no longer needed because Smarty 3 will always run under PHP 5
+
+
+06/18/2009
+- fixed compilation of block plugins when caching enabled
+- added $smarty.current_dir which returns the current working directory
+
+06/14/2009
+- fixed array access on super globals
+- allow smarty tags within xml tags
+
+06/13/2009
+- bugfix at extend resource: create unique files for compiled template and cache for each combination of template files
+- update extend resource to handle appen and prepend block attributes
+- instantiate classes of plugins instead of calling them static
+
+06/03/2009
+- fixed repeat at block plugins
+
+05/25/2009
+- fixed problem with caching of compiler plugins
+
+05/14/2009
+- fixed directory separator handling
+
+05/09/2009
+- syntax change for stream variables
+- fixed bug when using absolute template filepath and caching
+
+05/08/2009
+- fixed bug of {nocache} tag in included templates
+
+05/06/2009
+- allow that plugins_dir folder names can end without directory separator
+
+05/05/2009
+- fixed E_STRICT incompabilities
+- {function} tag bug fix
+- security policy definitions have been moved from plugins folder to file Security.class.php in libs folder
+- added allow_super_global configuration to security
+
+04/30/2009
+- functions defined with the {function} tag now always have global scope
+
+04/29/2009
+- fixed problem with directory setter methods
+- allow that cache_dir can end without directory separator
+
+04/28/2009
+- the {function} tag can no longer overwrite standard smarty tags
+- inherit functions defined by the {fuction} tag into subtemplates
+- added {while <statement>} sytax to while tag
+
+04/26/2009
+- added trusted stream checking to security
+- internal changes at file dependency check for caching
+
+04/24/2009
+- changed name of {template} tag to {function}
+- added new {template} tag
+
+04/23/2009
+- fixed access of special smarty variables from included template
+
+04/22/2009
+- unified template stream syntax with standard Smarty resource syntax $smarty->display('mystream:mytemplate')
+
+04/21/2009
+- change of new style syntax for forach. Now: {foreach $array as $var} like in PHP
+
+04/20/2009
+- fixed "$foo.bar ..." variable replacement in double quoted strings
+- fixed error in {include} tag with variable file attribute
+
+04/18/2009
+- added stream resources ($smarty->display('mystream://mytemplate'))
+- added stream variables {$mystream:myvar}
+
+04/14/2009
+- fixed compile_id handling on {include} tags
+- fixed append/prepend attributes in {block} tag
+- added {if 'expression' is in 'array'} syntax
+- use crc32 as hash for compiled config files.
+
+04/13/2009
+- fixed scope problem with parent variables when appending variables within templates.
+- fixed code for {block} without childs (possible sources for notice errors removed)
+
+04/12/2009
+- added append and prepend attribute to {block} tag
+
+04/11/2009
+- fixed variables in 'file' attribute of {extend} tag
+- fixed problems in modifiers (if mb string functions not present)
+
+04/10/2009
+- check if mb string functions available otherwise fallback to normal string functions
+- added global variable scope SMARTY_GLOBAL_SCOPE
+- enable 'variable' filter by default
+- fixed {$smarty.block.parent.foo}
+- implementation of a 'variable' filter as replacement for default modifier
+
+04/09/2009
+- fixed execution of filters defined by classes
+- compile the always the content of {block} tags to make shure that the filters are running over it
+- syntax corrections on variable object property
+- syntax corrections on array access in dot syntax
+
+04/08/2009
+- allow variable object property
+
+04/07/2009
+- changed variable scopes to SMARTY_LOCAL_SCOPE, SMARTY_PARENT_SCOPE, SMARTY_ROOT_SCOPE to avoid possible conflicts with user constants
+- Smarty variable global attribute replaced with scope attribute
+
+04/06/2009
+- variable scopes LOCAL_SCOPE, PARENT_SCOPE, ROOT_SCOPE
+- more getter/setter methods
+
+04/05/2009
+- replaced new array looping syntax {for $foo in $array} with {foreach $foo in $array} to avoid confusion
+- added append array for short form of assign {$foo[]='bar'} and allow assignments to nested arrays {$foo['bla']['blue']='bar'}
+
+04/04/2009
+- make output of template default handlers cachable and save compiled source
+- some fixes on yesterdays update
+
+04/03/2006
+- added registerDefaultTemplateHandler method and functionallity
+- added registerDefaultPluginHandler method and functionallity
+- added {append} tag to extend Smarty array variabled
+
+04/02/2009
+- added setter/getter methods
+- added $foo@first and $foo@last properties at {for} tag
+- added $set_timezone (true/false) property to setup optionally the default time zone
+
+03/31/2009
+- bugfix smarty.class and internal.security_handler
+- added compile_check configuration
+- added setter/getter methods
+
+03/30/2009
+- added all major setter/getter methods
+
+03/28/2009
+- {block} tags can be nested now
+- md5 hash function replace with crc32 for speed optimization
+- file order for exted resource inverted
+- clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer
+
+03/27/2009
+- added extend resource
+
+03/26/2009
+- fixed parser not to create error on `word` in double quoted strings
+- allow PHP array(...)
+- implemented $smarty.block.name.parent to access parent block content
+- fixed smarty.class
+
+
+03/23/2009
+- fixed {foreachelse} and {forelse} tags
+
+03/22/2009
+- fixed possible sources for notice errors
+- rearrange SVN into distribution and development folders
+
+03/21/2009
+- fixed exceptions in function plugins
+- fixed notice error in Smarty.class.php
+- allow chained objects to span multiple lines
+- fixed error in modifiers
+
+03/20/2009
+- moved /plugins folder into /libs folder
+- added noprint modifier
+- autoappend a directory separator if the xxxxx_dir definition have no trailing one
+
+03/19/2009
+- allow array definition as modifier parameter
+- changed modifier to use multi byte string funktions.
+
+03/17/2009
+- bugfix
+
+03/15/2009
+- added {include_php} tag for BC
+- removed @ error suppression
+- bugfix fetch did always repeat output of first call when calling same template several times
+- PHPunit tests extended
+
+03/13/2009
+- changed block syntax to be Smarty like {block:titel} -> {block name=titel}
+- compiling of {block} and {extend} tags rewriten for better performance
+- added special Smarty variable block ($smarty.block.foo} returns the parent definition of block foo
+- optimization of {block} tag compiled code.
+- fixed problem with escaped double quotes in double quoted strings
+
+03/12/2009
+- added support of template inheritance by {extend } and {block } tags.
+- bugfix comments within literals
+- added scope attribuie to {include} tag
+
+03/10/2009
+- couple of bugfixes and improvements
+- PHPunit tests extended
+
+03/09/2009
+- added support for global template vars. {assign_global...} $smarty->assign_global(...)
+- added direct_access_security
+- PHPunit tests extended
+- added missing {if} tag conditions like "is div by" etc.
+
+03/08/2009
+- splitted up the Compiler class to make it easier to use a coustom compiler
+- made default plugins_dir relative to Smarty root and not current working directory
+- some changes to make the lexer parser better configurable
+- implemented {section} tag for Smarty2 BC
+
+03/07/2009
+- fixed problem with comment tags
+- fixed problem with #xxxx in double quoted string
+- new {while} tag implemented
+- made lexer and paser class configurable as $smarty property
+- Smarty method get_template_vars implemented
+- Smarty method get_registered_object implemented
+- Smarty method trigger_error implemented
+- PHPunit tests extended
+
+03/06/2009
+- final changes on config variable handling
+- parser change - unquoted strings will by be converted into single quoted strings
+- PHPunit tests extended
+- some code cleanup
+- fixed problem on catenate strings with expression
+- update of count_words modifier
+- bugfix on comment tags
+
+
+03/05/2009
+- bugfix on <?xml...> tag with caching enabled
+- changes on exception handling (by Monte)
+
+03/04/2009
+- added support for config variables
+- bugfix on <?xml...> tag
+
+03/02/2009
+- fixed unqouted strings within modifier parameter
+- bugfix parsing of mofifier parameter
+
+03/01/2009
+- modifier chaining works now as in Smarty2
+
+02/28/2009
+- changed handling of unqouted strings
+
+02/26/2009
+- bugfix
+- changed $smarty.capture.foo to be global for Smarty2 BC.
+
+02/24/2009
+- bugfix {php} {/php} tags for backward compatibility
+- bugfix for expressions on arrays
+- fixed usage of "null" value
+- added $smarty.foreach.foo.first and $smarty.foreach.foo.last
+
+02/06/2009
+- bugfix for request variables without index for example $smarty.get
+- experimental solution for variable functions in static class
+
+02/05/2009
+- update of popup plugin
+- added config variables to template parser (load config functions still missing)
+- parser bugfix for empty quoted strings
+
+02/03/2009
+- allow array of objects as static class variabales.
+- use htmlentities at source output at template errors.
+
+02/02/2009
+- changed search order on modifiers to look at plugins folder first
+- parser bug fix for modifier on array elements $foo.bar|modifier
+- parser bug fix on single quoted srings
+- internal: splitted up compiler plugin files
+
+02/01/2009
+- allow method chaining on static classes
+- special Smarty variables $smarty.... implemented
+- added {PHP} {/PHP} tags for backward compatibility
+
+01/31/2009
+- added {math} plugin for Smarty2 BC
+- added template_exists method
+- changed Smarty3 method enable_security() to enableSecurity() to follow camelCase standards
+
+01/30/2009
+- bugfix in single quoted strings
+- changed syntax for variable property access from $foo:property to $foo@property because of ambiguous syntax at modifiers
+
+01/29/2009
+- syntax for array definition changed from (1,2,3) to [1,2,3] to remove ambiguous syntax
+- allow {for $foo in [1,2,3]} syntax
+- bugfix in double quoted strings
+- allow <?xml...?> tags in template even if short_tags are enabled
+
+01/28/2009
+- fixed '!==' if condition.
+
+01/28/2009
+- added support of {strip} {/strip} tag.
+
+01/27/2009
+- bug fix on backticks in double quoted strings at objects
+
+01/25/2009
+- Smarty2 modfiers added to SVN
+
+01/25/2009
+- bugfix allow arrays at object properties in Smarty syntax
+- the template object is now passed as additional parameter at plugin calls
+- clear_compiled_tpl method completed
+
+01/20/2009
+- access to class constants implemented ( class::CONSTANT )
+- access to static class variables implemented ( class::$variable )
+- call of static class methods implemented ( class::method() )
+
+01/16/2009
+- reallow leading _ in variable names {$_var}
+- allow array of objects {$array.index->method()} syntax
+- finished work on clear_cache and clear_cache_all methods
+
+01/11/2009
+- added support of {literal} tag
+- added support of {ldelim} and {rdelim} tags
+- make code compatible to run with E_STRICT error setting
+
+01/08/2009
+- moved clear_assign and clear_all_assign to internal.templatebase.php
+- added assign_by_ref, append and append_by_ref methods
+
+01/02/2009
+- added load_filter method
+- fished work on filter handling
+- optimization of plugin loading
+
+12/30/2008
+- added compiler support of registered object
+- added backtick support in doubled quoted strings for backward compatibility
+- some minor bug fixes and improvments
+
+12/23/2008
+- fixed problem of not working "not" operator in if-expressions
+- added handling of compiler function plugins
+- finished work on (un)register_compiler_function method
+- finished work on (un)register_modifier method
+- plugin handling from plugins folder changed for modifier plugins
+ deleted - internal.modifier.php
+- added modifier chaining to parser
+
+12/17/2008
+- finished (un)register_function method
+- finished (un)register_block method
+- added security checking for PHP functions in PHP templates
+- plugin handling from plugins folder rewritten
+ new - internal.plugin_handler.php
+ deleted - internal.block.php
+ deleted - internal.function.php
+- removed plugin checking from security handler
+
+12/16/2008
+
+- new start of this change_log file
diff --git a/vendor/smarty/smarty/demo/configs/test.conf b/vendor/smarty/smarty/demo/configs/test.conf
new file mode 100644
index 000000000..5eac748ec
--- /dev/null
+++ b/vendor/smarty/smarty/demo/configs/test.conf
@@ -0,0 +1,5 @@
+title = Welcome to Smarty!
+cutoff_size = 40
+
+[setup]
+bold = true
diff --git a/vendor/smarty/smarty/demo/index.php b/vendor/smarty/smarty/demo/index.php
new file mode 100644
index 000000000..b67c217be
--- /dev/null
+++ b/vendor/smarty/smarty/demo/index.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Example Application
+ *
+ * @package Example-application
+ */
+
+require '../libs/Smarty.class.php';
+
+$smarty = new Smarty;
+
+//$smarty->force_compile = true;
+$smarty->debugging = true;
+$smarty->caching = true;
+$smarty->cache_lifetime = 120;
+
+$smarty->assign("Name", "Fred Irving Johnathan Bradley Peppergill", true);
+$smarty->assign("FirstName", array("John", "Mary", "James", "Henry"));
+$smarty->assign("LastName", array("Doe", "Smith", "Johnson", "Case"));
+$smarty->assign("Class", array(array("A", "B", "C", "D"), array("E", "F", "G", "H"), array("I", "J", "K", "L"),
+ array("M", "N", "O", "P")));
+
+$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
+ array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
+
+$smarty->assign("option_values", array("NY", "NE", "KS", "IA", "OK", "TX"));
+$smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas"));
+$smarty->assign("option_selected", "NE");
+
+$smarty->display('index.tpl');
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php b/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
new file mode 100644
index 000000000..ed55ec846
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.apc.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * APC CacheResource
+ * CacheResource Implementation based on the KeyValueStore API to use
+ * memcache as the storage resource for Smarty's output caching.
+ * *
+ *
+ * @package CacheResource-examples
+ * @author Uwe Tews
+ */
+class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
+{
+ public function __construct()
+ {
+ // test if APC is present
+ if (!function_exists('apc_cache_info')) {
+ throw new Exception('APC Template Caching Error: APC is not installed');
+ }
+ }
+
+ /**
+ * Read values for a set of keys from cache
+ *
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
+ * @return boolean true on success, false on failure
+ */
+ protected function read(array $keys)
+ {
+ $_res = array();
+ $res = apc_fetch($keys);
+ foreach ($res as $k => $v) {
+ $_res[ $k ] = $v;
+ }
+
+ return $_res;
+ }
+
+ /**
+ * Save values for a set of keys to cache
+ *
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function write(array $keys, $expire = null)
+ {
+ foreach ($keys as $k => $v) {
+ apc_store($k, $v, $expire);
+ }
+
+ return true;
+ }
+
+ /**
+ * Remove values from cache
+ *
+ * @param array $keys list of keys to delete
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function delete(array $keys)
+ {
+ foreach ($keys as $k) {
+ apc_delete($k);
+ }
+
+ return true;
+ }
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ return apc_clear_cache('user');
+ }
+}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
new file mode 100644
index 000000000..945beb349
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * Memcache CacheResource
+ * CacheResource Implementation based on the KeyValueStore API to use
+ * memcache as the storage resource for Smarty's output caching.
+ * Note that memcache has a limitation of 256 characters per cache-key.
+ * To avoid complications all cache-keys are translated to a sha1 hash.
+ *
+ * @package CacheResource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
+{
+ /**
+ * memcache instance
+ *
+ * @var Memcache
+ */
+ protected $memcache = null;
+
+ public function __construct()
+ {
+ if (class_exists('Memcached')) {
+ $this->memcache = new Memcached();
+ } else {
+ $this->memcache = new Memcache();
+ }
+ $this->memcache->addServer('127.0.0.1', 11211);
+ }
+
+ /**
+ * Read values for a set of keys from cache
+ *
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
+ * @return boolean true on success, false on failure
+ */
+ protected function read(array $keys)
+ {
+ $_keys = $lookup = array();
+ foreach ($keys as $k) {
+ $_k = sha1($k);
+ $_keys[] = $_k;
+ $lookup[ $_k ] = $k;
+ }
+ $_res = array();
+ $res = $this->memcache->get($_keys);
+ foreach ($res as $k => $v) {
+ $_res[ $lookup[ $k ] ] = $v;
+ }
+
+ return $_res;
+ }
+
+ /**
+ * Save values for a set of keys to cache
+ *
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function write(array $keys, $expire = null)
+ {
+ foreach ($keys as $k => $v) {
+ $k = sha1($k);
+ $this->memcache->set($k, $v, 0, $expire);
+ }
+
+ return true;
+ }
+
+ /**
+ * Remove values from cache
+ *
+ * @param array $keys list of keys to delete
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function delete(array $keys)
+ {
+ foreach ($keys as $k) {
+ $k = sha1($k);
+ $this->memcache->delete($k);
+ }
+
+ return true;
+ }
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ $this->memcache->flush();
+ }
+}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php b/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
new file mode 100644
index 000000000..027b93766
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * MySQL CacheResource
+ * CacheResource Implementation based on the Custom API to use
+ * MySQL as the storage resource for Smarty's output caching.
+ * Table definition:
+ * <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
+ * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
+ * `name` VARCHAR(250) NOT NULL,
+ * `cache_id` VARCHAR(250) NULL DEFAULT NULL,
+ * `compile_id` VARCHAR(250) NULL DEFAULT NULL,
+ * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ * `content` LONGTEXT NOT NULL,
+ * PRIMARY KEY (`id`),
+ * INDEX(`name`),
+ * INDEX(`cache_id`),
+ * INDEX(`compile_id`),
+ * INDEX(`modified`)
+ * ) ENGINE = InnoDB;</pre>
+ *
+ * @package CacheResource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
+{
+ // PDO instance
+ protected $db;
+
+ protected $fetch;
+
+ protected $fetchTimestamp;
+
+ protected $save;
+
+ public function __construct()
+ {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
+ }
+ catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
+ $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
+ $this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
+ VALUES (:id, :name, :cache_id, :compile_id, :content)');
+ }
+
+ /**
+ * fetch cached content and its modification time from data source
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ *
+ * @return void
+ */
+ protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
+ {
+ $this->fetch->execute(array('id' => $id));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $content = $row[ 'content' ];
+ $mtime = strtotime($row[ 'modified' ]);
+ } else {
+ $content = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch cached content's modification timestamp from data source
+ *
+ * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+ */
+ protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
+ {
+ $this->fetchTimestamp->execute(array('id' => $id));
+ $mtime = strtotime($this->fetchTimestamp->fetchColumn());
+ $this->fetchTimestamp->closeCursor();
+
+ return $mtime;
+ }
+
+ /**
+ * Save content to cache
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
+ {
+ $this->save->execute(array('id' => $id, 'name' => $name, 'cache_id' => $cache_id, 'compile_id' => $compile_id,
+ 'content' => $content,));
+
+ return !!$this->save->rowCount();
+ }
+
+ /**
+ * Delete content from cache
+ *
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration or null
+ *
+ * @return integer number of deleted caches
+ */
+ protected function delete($name, $cache_id, $compile_id, $exp_time)
+ {
+ // delete the whole cache
+ if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
+ // returning the number of deleted caches would require a second query to count them
+ $query = $this->db->query('TRUNCATE TABLE output_cache');
+
+ return - 1;
+ }
+ // build the filter
+ $where = array();
+ // equal test name
+ if ($name !== null) {
+ $where[] = 'name = ' . $this->db->quote($name);
+ }
+ // equal test compile_id
+ if ($compile_id !== null) {
+ $where[] = 'compile_id = ' . $this->db->quote($compile_id);
+ }
+ // range test expiration time
+ if ($exp_time !== null) {
+ $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
+ }
+ // equal test cache_id and match sub-groups
+ if ($cache_id !== null) {
+ $where[] = '(cache_id = ' . $this->db->quote($cache_id) . ' OR cache_id LIKE ' .
+ $this->db->quote($cache_id . '|%') . ')';
+ }
+ // run delete query
+ $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
+
+ return $query->rowCount();
+ }
+}
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
new file mode 100644
index 000000000..d1e2d6ace
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php
@@ -0,0 +1,327 @@
+<?php
+
+/**
+ * PDO Cache Handler
+ * Allows you to store Smarty Cache files into your db.
+ * Example table :
+ * CREATE TABLE `smarty_cache` (
+ * `id` char(40) NOT NULL COMMENT 'sha1 hash',
+ * `name` varchar(250) NOT NULL,
+ * `cache_id` varchar(250) DEFAULT NULL,
+ * `compile_id` varchar(250) DEFAULT NULL,
+ * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ * `expire` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ * `content` mediumblob NOT NULL,
+ * PRIMARY KEY (`id`),
+ * KEY `name` (`name`),
+ * KEY `cache_id` (`cache_id`),
+ * KEY `compile_id` (`compile_id`),
+ * KEY `modified` (`modified`),
+ * KEY `expire` (`expire`)
+ * ) ENGINE=InnoDB
+ * Example usage :
+ * $cnx = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
+ * $smarty->setCachingType('pdo');
+ * $smarty->loadPlugin('Smarty_CacheResource_Pdo');
+ * $smarty->registerCacheResource('pdo', new Smarty_CacheResource_Pdo($cnx, 'smarty_cache'));
+ *
+ * @author Beno!t POLASZEK - 2014
+ */
+class Smarty_CacheResource_Pdo extends Smarty_CacheResource_Custom
+{
+
+ protected $fetchStatements = Array('default' => 'SELECT %2$s
+ FROM %1$s
+ WHERE 1
+ AND id = :id
+ AND cache_id IS NULL
+ AND compile_id IS NULL',
+
+ 'withCacheId' => 'SELECT %2$s
+ FROM %1$s
+ WHERE 1
+ AND id = :id
+ AND cache_id = :cache_id
+ AND compile_id IS NULL',
+
+ 'withCompileId' => 'SELECT %2$s
+ FROM %1$s
+ WHERE 1
+ AND id = :id
+ AND compile_id = :compile_id
+ AND cache_id IS NULL',
+
+ 'withCacheIdAndCompileId' => 'SELECT %2$s
+ FROM %1$s
+ WHERE 1
+ AND id = :id
+ AND cache_id = :cache_id
+ AND compile_id = :compile_id');
+
+ protected $insertStatement = 'INSERT INTO %s
+
+ SET id = :id,
+ name = :name,
+ cache_id = :cache_id,
+ compile_id = :compile_id,
+ modified = CURRENT_TIMESTAMP,
+ expire = DATE_ADD(CURRENT_TIMESTAMP, INTERVAL :expire SECOND),
+ content = :content
+
+ ON DUPLICATE KEY UPDATE
+ name = :name,
+ cache_id = :cache_id,
+ compile_id = :compile_id,
+ modified = CURRENT_TIMESTAMP,
+ expire = DATE_ADD(CURRENT_TIMESTAMP, INTERVAL :expire SECOND),
+ content = :content';
+
+ protected $deleteStatement = 'DELETE FROM %1$s WHERE %2$s';
+
+ protected $truncateStatement = 'TRUNCATE TABLE %s';
+
+ protected $fetchColumns = 'modified, content';
+
+ protected $fetchTimestampColumns = 'modified';
+
+ protected $pdo, $table, $database;
+
+ /*
+ * Constructor
+ *
+ * @param PDO $pdo PDO : active connection
+ * @param string $table : table (or view) name
+ * @param string $database : optionnal - if table is located in another db
+ */
+ public function __construct(PDO $pdo, $table, $database = null)
+ {
+
+ if (is_null($table)) {
+ throw new SmartyException("Table name for caching can't be null");
+ }
+
+ $this->pdo = $pdo;
+ $this->table = $table;
+ $this->database = $database;
+
+ $this->fillStatementsWithTableName();
+ }
+
+ /*
+ * Fills the table name into the statements.
+ *
+ * @return Current Instance
+ * @access protected
+ */
+ protected function fillStatementsWithTableName()
+ {
+
+ foreach ($this->fetchStatements AS &$statement) {
+ $statement = sprintf($statement, $this->getTableName(), '%s');
+ }
+
+ $this->insertStatement = sprintf($this->insertStatement, $this->getTableName());
+ $this->deleteStatement = sprintf($this->deleteStatement, $this->getTableName(), '%s');
+ $this->truncateStatement = sprintf($this->truncateStatement, $this->getTableName());
+
+ return $this;
+ }
+
+ /*
+ * Gets the fetch statement, depending on what you specify
+ *
+ * @param string $columns : the column(s) name(s) you want to retrieve from the database
+ * @param string $id unique cache content identifier
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ * @access protected
+ */
+ protected function getFetchStatement($columns, $id, $cache_id = null, $compile_id = null)
+ {
+
+ if (!is_null($cache_id) && !is_null($compile_id)) {
+ $query = $this->fetchStatements[ 'withCacheIdAndCompileId' ] AND
+ $args = Array('id' => $id, 'cache_id' => $cache_id, 'compile_id' => $compile_id);
+ } elseif (is_null($cache_id) && !is_null($compile_id)) {
+ $query = $this->fetchStatements[ 'withCompileId' ] AND
+ $args = Array('id' => $id, 'compile_id' => $compile_id);
+ } elseif (!is_null($cache_id) && is_null($compile_id)) {
+ $query = $this->fetchStatements[ 'withCacheId' ] AND $args = Array('id' => $id, 'cache_id' => $cache_id);
+ } else {
+ $query = $this->fetchStatements[ 'default' ] AND $args = Array('id' => $id);
+ }
+
+ $query = sprintf($query, $columns);
+
+ $stmt = $this->pdo->prepare($query);
+
+ foreach ($args AS $key => $value) {
+ $stmt->bindValue($key, $value);
+ }
+
+ return $stmt;
+ }
+
+ /**
+ * fetch cached content and its modification time from data source
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ *
+ * @return void
+ * @access protected
+ */
+ protected function fetch($id, $name, $cache_id = null, $compile_id = null, &$content, &$mtime)
+ {
+
+ $stmt = $this->getFetchStatement($this->fetchColumns, $id, $cache_id, $compile_id);
+ $stmt->execute();
+ $row = $stmt->fetch();
+ $stmt->closeCursor();
+
+ if ($row) {
+ $content = $this->outputContent($row[ 'content' ]);
+ $mtime = strtotime($row[ 'modified' ]);
+ } else {
+ $content = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch cached content's modification timestamp from data source
+ * {@internal implementing this method is optional.
+ * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+ * @access protected
+ */
+ // protected function fetchTimestamp($id, $name, $cache_id = null, $compile_id = null) {
+ // $stmt = $this->getFetchStatement($this->fetchTimestampColumns, $id, $cache_id, $compile_id);
+ // $stmt -> execute();
+ // $mtime = strtotime($stmt->fetchColumn());
+ // $stmt -> closeCursor();
+ // return $mtime;
+ // }
+
+ /**
+ * Save content to cache
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ * @access protected
+ */
+ protected function save($id, $name, $cache_id = null, $compile_id = null, $exp_time, $content)
+ {
+
+ $stmt = $this->pdo->prepare($this->insertStatement);
+
+ $stmt->bindValue('id', $id);
+ $stmt->bindValue('name', $name);
+ $stmt->bindValue('cache_id', $cache_id, (is_null($cache_id)) ? PDO::PARAM_NULL : PDO::PARAM_STR);
+ $stmt->bindValue('compile_id', $compile_id, (is_null($compile_id)) ? PDO::PARAM_NULL : PDO::PARAM_STR);
+ $stmt->bindValue('expire', (int) $exp_time, PDO::PARAM_INT);
+ $stmt->bindValue('content', $this->inputContent($content));
+ $stmt->execute();
+
+ return !!$stmt->rowCount();
+ }
+
+ /*
+ * Encodes the content before saving to database
+ *
+ * @param string $content
+ * @return string $content
+ * @access protected
+ */
+ protected function inputContent($content)
+ {
+ return $content;
+ }
+
+ /*
+ * Decodes the content before saving to database
+ *
+ * @param string $content
+ * @return string $content
+ * @access protected
+ */
+ protected function outputContent($content)
+ {
+ return $content;
+ }
+
+ /**
+ * Delete content from cache
+ *
+ * @param string|null $name template name
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ * @param integer|null|-1 $exp_time seconds till expiration or null
+ *
+ * @return integer number of deleted caches
+ * @access protected
+ */
+ protected function delete($name = null, $cache_id = null, $compile_id = null, $exp_time = null)
+ {
+
+ // delete the whole cache
+ if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
+ // returning the number of deleted caches would require a second query to count them
+ $this->pdo->query($this->truncateStatement);
+ return - 1;
+ }
+ // build the filter
+ $where = array();
+ // equal test name
+ if ($name !== null) {
+ $where[] = 'name = ' . $this->pdo->quote($name);
+ }
+ // equal test cache_id and match sub-groups
+ if ($cache_id !== null) {
+ $where[] = '(cache_id = ' . $this->pdo->quote($cache_id) . ' OR cache_id LIKE ' .
+ $this->pdo->quote($cache_id . '|%') . ')';
+ }
+ // equal test compile_id
+ if ($compile_id !== null) {
+ $where[] = 'compile_id = ' . $this->pdo->quote($compile_id);
+ }
+ // for clearing expired caches
+ if ($exp_time === Smarty::CLEAR_EXPIRED) {
+ $where[] = 'expire < CURRENT_TIMESTAMP';
+ } // range test expiration time
+ elseif ($exp_time !== null) {
+ $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
+ }
+ // run delete query
+ $query = $this->pdo->query(sprintf($this->deleteStatement, join(' AND ', $where)));
+ return $query->rowCount();
+ }
+
+ /**
+ * Gets the formatted table name
+ *
+ * @return string
+ * @access protected
+ */
+ protected function getTableName()
+ {
+ return (is_null($this->database)) ? "`{$this->table}`" : "`{$this->database}`.`{$this->table}`";
+ }
+}
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
new file mode 100644
index 000000000..8a9e0a5dd
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * PDO Cache Handler with GZIP support
+ * Example usage :
+ * $cnx = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
+ * $smarty->setCachingType('pdo_gzip');
+ * $smarty->loadPlugin('Smarty_CacheResource_Pdo_Gzip');
+ * $smarty->registerCacheResource('pdo_gzip', new Smarty_CacheResource_Pdo_Gzip($cnx, 'smarty_cache'));
+ *
+ * @require Smarty_CacheResource_Pdo class
+ * @author Beno!t POLASZEK - 2014
+ */
+require_once 'cacheresource.pdo.php';
+
+class Smarty_CacheResource_Pdo_Gzip extends Smarty_CacheResource_Pdo
+{
+
+ /*
+ * Encodes the content before saving to database
+ *
+ * @param string $content
+ * @return string $content
+ * @access protected
+ */
+ protected function inputContent($content)
+ {
+ return gzdeflate($content);
+ }
+
+ /*
+ * Decodes the content before saving to database
+ *
+ * @param string $content
+ * @return string $content
+ * @access protected
+ */
+ protected function outputContent($content)
+ {
+ return gzinflate($content);
+ }
+}
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/demo/plugins/resource.extendsall.php b/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
new file mode 100644
index 000000000..a5ee432dd
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/resource.extendsall.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Extends All Resource
+ * Resource Implementation modifying the extends-Resource to walk
+ * through the template_dirs and inherit all templates of the same name
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $uid = '';
+ $sources = array();
+ $timestamp = 0;
+ foreach ($source->smarty->getTemplateDir() as $key => $directory) {
+ try {
+ $s = Smarty_Resource::source(null, $source->smarty, 'file:' . '[' . $key . ']' . $source->name);
+ if (!$s->exists) {
+ continue;
+ }
+ $sources[ $s->uid ] = $s;
+ $uid .= $s->filepath;
+ $timestamp = $s->timestamp > $timestamp ? $s->timestamp : $timestamp;
+ }
+ catch (SmartyException $e) {
+ }
+ }
+ if (!$sources) {
+ $source->exists = false;
+ return;
+ }
+
+ $sources = array_reverse($sources, true);
+ reset($sources);
+ $s = current($sources);
+ $source->components = $sources;
+ $source->filepath = $s->filepath;
+ $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
+ $source->exists = true;
+ $source->timestamp = $timestamp;
+ }
+
+ /*
+ * Disable timestamp checks for extendsall resource.
+ * The individual source components will be checked.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+
+}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.mysql.php b/vendor/smarty/smarty/demo/plugins/resource.mysql.php
new file mode 100644
index 000000000..619707e78
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/resource.mysql.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * MySQL Resource
+ * Resource Implementation based on the Custom API to use
+ * MySQL as the storage resource for Smarty's templates and configs.
+ * Table definition:
+ * <pre>CREATE TABLE IF NOT EXISTS `templates` (
+ * `name` varchar(100) NOT NULL,
+ * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ * `source` text,
+ * PRIMARY KEY (`name`)
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
+ * Demo data:
+ * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_Resource_Mysql extends Smarty_Resource_Custom
+{
+ // PDO instance
+ protected $db;
+
+ // prepared fetch() statement
+ protected $fetch;
+
+ // prepared fetchTimestamp() statement
+ protected $mtime;
+
+ public function __construct()
+ {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
+ }
+ catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
+ $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
+ }
+
+ /**
+ * Fetch a template and its modification time from database
+ *
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ *
+ * @return void
+ */
+ protected function fetch($name, &$source, &$mtime)
+ {
+ $this->fetch->execute(array('name' => $name));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $source = $row[ 'source' ];
+ $mtime = strtotime($row[ 'modified' ]);
+ } else {
+ $source = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch a template's modification time from database
+ *
+ * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
+ *
+ * @param string $name template name
+ *
+ * @return integer timestamp (epoch) the template was modified
+ */
+ protected function fetchTimestamp($name)
+ {
+ $this->mtime->execute(array('name' => $name));
+ $mtime = $this->mtime->fetchColumn();
+ $this->mtime->closeCursor();
+
+ return strtotime($mtime);
+ }
+}
diff --git a/vendor/smarty/smarty/demo/plugins/resource.mysqls.php b/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
new file mode 100644
index 000000000..d85aecf31
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/resource.mysqls.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * MySQL Resource
+ * Resource Implementation based on the Custom API to use
+ * MySQL as the storage resource for Smarty's templates and configs.
+ * Note that this MySQL implementation fetches the source and timestamps in
+ * a single database query, instead of two separate like resource.mysql.php does.
+ * Table definition:
+ * <pre>CREATE TABLE IF NOT EXISTS `templates` (
+ * `name` varchar(100) NOT NULL,
+ * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ * `source` text,
+ * PRIMARY KEY (`name`)
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
+ * Demo data:
+ * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
+{
+ // PDO instance
+ protected $db;
+
+ // prepared fetch() statement
+ protected $fetch;
+
+ public function __construct()
+ {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
+ }
+ catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
+ }
+
+ /**
+ * Fetch a template and its modification time from database
+ *
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ *
+ * @return void
+ */
+ protected function fetch($name, &$source, &$mtime)
+ {
+ $this->fetch->execute(array('name' => $name));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $source = $row[ 'source' ];
+ $mtime = strtotime($row[ 'modified' ]);
+ } else {
+ $source = null;
+ $mtime = null;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/demo/templates/footer.tpl b/vendor/smarty/smarty/demo/templates/footer.tpl
new file mode 100644
index 000000000..e04310fdd
--- /dev/null
+++ b/vendor/smarty/smarty/demo/templates/footer.tpl
@@ -0,0 +1,2 @@
+</BODY>
+</HTML>
diff --git a/vendor/smarty/smarty/demo/templates/header.tpl b/vendor/smarty/smarty/demo/templates/header.tpl
new file mode 100644
index 000000000..783210a18
--- /dev/null
+++ b/vendor/smarty/smarty/demo/templates/header.tpl
@@ -0,0 +1,5 @@
+<HTML>
+<HEAD>
+<TITLE>{$title} - {$Name}</TITLE>
+</HEAD>
+<BODY bgcolor="#ffffff">
diff --git a/vendor/smarty/smarty/demo/templates/index.tpl b/vendor/smarty/smarty/demo/templates/index.tpl
new file mode 100644
index 000000000..1fbb6d379
--- /dev/null
+++ b/vendor/smarty/smarty/demo/templates/index.tpl
@@ -0,0 +1,87 @@
+{config_load file="test.conf" section="setup"}
+{include file="header.tpl" title=foo}
+
+<PRE>
+
+{* bold and title are read from the config file *}
+ {if #bold#}<b>{/if}
+ {* capitalize the first letters of each word of the title *}
+ Title: {#title#|capitalize}
+ {if #bold#}</b>{/if}
+
+ The current date and time is {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
+
+ The value of global assigned variable $SCRIPT_NAME is {$SCRIPT_NAME}
+
+ Example of accessing server environment variable SERVER_NAME: {$smarty.server.SERVER_NAME}
+
+ The value of {ldelim}$Name{rdelim} is <b>{$Name}</b>
+
+variable modifier example of {ldelim}$Name|upper{rdelim}
+
+<b>{$Name|upper}</b>
+
+
+An example of a section loop:
+
+ {section name=outer
+ loop=$FirstName}
+ {if $smarty.section.outer.index is odd by 2}
+ {$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]}
+ {else}
+ {$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]}
+ {/if}
+ {sectionelse}
+ none
+ {/section}
+
+ An example of section looped key values:
+
+ {section name=sec1 loop=$contacts}
+ phone: {$contacts[sec1].phone}
+ <br>
+
+ fax: {$contacts[sec1].fax}
+ <br>
+
+ cell: {$contacts[sec1].cell}
+ <br>
+ {/section}
+ <p>
+
+ testing strip tags
+ {strip}
+<table border=0>
+ <tr>
+ <td>
+ <A HREF="{$SCRIPT_NAME}">
+ <font color="red">This is a test </font>
+ </A>
+ </td>
+ </tr>
+</table>
+ {/strip}
+
+</PRE>
+
+This is an example of the html_select_date function:
+
+<form>
+ {html_select_date start_year=1998 end_year=2010}
+</form>
+
+This is an example of the html_select_time function:
+
+<form>
+ {html_select_time use_24_hours=false}
+</form>
+
+This is an example of the html_options function:
+
+<form>
+ <select name=states>
+ {html_options values=$option_values selected=$option_selected output=$option_output}
+ </select>
+</form>
+
+{include file="footer.tpl"}
diff --git a/vendor/smarty/smarty/libs/Autoloader.php b/vendor/smarty/smarty/libs/Autoloader.php
new file mode 100644
index 000000000..d3b039caa
--- /dev/null
+++ b/vendor/smarty/smarty/libs/Autoloader.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Smarty Autoloader
+ *
+ * @package Smarty
+ */
+
+/**
+ * Smarty Autoloader
+ *
+ * @package Smarty
+ * @author Uwe Tews
+ * Usage:
+ * require_once '...path/Autoloader.php';
+ * Smarty_Autoloader::register();
+ * or
+ * include '...path/bootstarp.php';
+ *
+ * $smarty = new Smarty();
+ */
+class Smarty_Autoloader
+{
+ /**
+ * Filepath to Smarty root
+ *
+ * @var string
+ */
+ public static $SMARTY_DIR = null;
+
+ /**
+ * Filepath to Smarty internal plugins
+ *
+ * @var string
+ */
+ public static $SMARTY_SYSPLUGINS_DIR = null;
+
+ /**
+ * Array with Smarty core classes and their filename
+ *
+ * @var array
+ */
+ public static $rootClasses = array('smarty' => 'Smarty.class.php', 'smartybc' => 'SmartyBC.class.php',);
+
+ /**
+ * Registers Smarty_Autoloader backward compatible to older installations.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not.
+ */
+ public static function registerBC($prepend = false)
+ {
+ /**
+ * register the class autoloader
+ */
+ if (!defined('SMARTY_SPL_AUTOLOAD')) {
+ define('SMARTY_SPL_AUTOLOAD', 0);
+ }
+ if (SMARTY_SPL_AUTOLOAD &&
+ set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
+ ) {
+ $registeredAutoLoadFunctions = spl_autoload_functions();
+ if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {
+ spl_autoload_register();
+ }
+ } else {
+ self::register($prepend);
+ }
+ }
+
+ /**
+ * Registers Smarty_Autoloader as an SPL autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not.
+ */
+ public static function register($prepend = false)
+ {
+ self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : dirname(__FILE__) . DIRECTORY_SEPARATOR;
+ self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
+ self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
+ if (version_compare(phpversion(), '5.3.0', '>=')) {
+ spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
+ } else {
+ spl_autoload_register(array(__CLASS__, 'autoload'));
+ }
+ }
+
+ /**
+ * Handles auto loading of classes.
+ *
+ * @param string $class A class name.
+ */
+ public static function autoload($class)
+ {
+ if ($class[ 0 ] !== 'S' && strpos($class, 'Smarty') !== 0) {
+ return;
+ }
+ $_class = strtolower($class);
+ if (isset(self::$rootClasses[ $_class ])) {
+ $file = self::$SMARTY_DIR . self::$rootClasses[ $_class ];
+ if (is_file($file)) {
+ include $file;
+ }
+ } else {
+ $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
+ if (is_file($file)) {
+ include $file;
+ }
+ }
+ return;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/Smarty.class.php b/vendor/smarty/smarty/libs/Smarty.class.php
new file mode 100644
index 000000000..57eedfb93
--- /dev/null
+++ b/vendor/smarty/smarty/libs/Smarty.class.php
@@ -0,0 +1,1549 @@
+<?php
+/**
+ * Project: Smarty: the PHP compiling template engine
+ * File: Smarty.class.php
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @link http://www.smarty.net/
+ * @copyright 2016 New Digital Group, Inc.
+ * @copyright 2016 Uwe Tews
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ * @version 3.1.31
+ */
+
+/**
+ * set SMARTY_DIR to absolute path to Smarty library files.
+ * Sets SMARTY_DIR only if user application has not already defined it.
+ */
+if (!defined('SMARTY_DIR')) {
+ define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+}
+
+/**
+ * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins.
+ * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it.
+ */
+if (!defined('SMARTY_SYSPLUGINS_DIR')) {
+ define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR);
+}
+if (!defined('SMARTY_PLUGINS_DIR')) {
+ define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DIRECTORY_SEPARATOR);
+}
+if (!defined('SMARTY_MBSTRING')) {
+ define('SMARTY_MBSTRING', function_exists('mb_get_info'));
+}
+if (!defined('SMARTY_RESOURCE_CHAR_SET')) {
+ // UTF-8 can only be done properly when mbstring is available!
+ /**
+ * @deprecated in favor of Smarty::$_CHARSET
+ */
+ define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1');
+}
+if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) {
+ /**
+ * @deprecated in favor of Smarty::$_DATE_FORMAT
+ */
+ define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y');
+}
+
+/**
+ * Load Smarty_Autoloader
+ */
+if (!class_exists('Smarty_Autoloader')) {
+ include __DIR__ . '/bootstrap.php';
+}
+
+/**
+ * Load always needed external class files
+ */
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php';
+
+/**
+ * This is the main Smarty class
+ *
+ * @package Smarty
+ *
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method int clearAllCache(int $exp_time = null, string $type = null)
+ * @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null)
+ * @method int compileAllTemplates(string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
+ * @method int compileAllConfig(string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, int $max_errors = null)
+ * @method int clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
+ */
+class Smarty extends Smarty_Internal_TemplateBase
+{
+ /**#@+
+ * constant definitions
+ */
+
+ /**
+ * smarty version
+ */
+ const SMARTY_VERSION = '3.1.31';
+
+ /**
+ * define variable scopes
+ */
+ const SCOPE_LOCAL = 1;
+
+ const SCOPE_PARENT = 2;
+
+ const SCOPE_TPL_ROOT = 4;
+
+ const SCOPE_ROOT = 8;
+
+ const SCOPE_SMARTY = 16;
+
+ const SCOPE_GLOBAL = 32;
+
+ /**
+ * define caching modes
+ */
+ const CACHING_OFF = 0;
+
+ const CACHING_LIFETIME_CURRENT = 1;
+
+ const CACHING_LIFETIME_SAVED = 2;
+
+ /**
+ * define constant for clearing cache files be saved expiration dates
+ */
+ const CLEAR_EXPIRED = - 1;
+
+ /**
+ * define compile check modes
+ */
+ const COMPILECHECK_OFF = 0;
+
+ const COMPILECHECK_ON = 1;
+
+ const COMPILECHECK_CACHEMISS = 2;
+
+ /**
+ * define debug modes
+ */
+ const DEBUG_OFF = 0;
+
+ const DEBUG_ON = 1;
+
+ const DEBUG_INDIVIDUAL = 2;
+
+ /**
+ * modes for handling of "<?php ... ?>" tags in templates.
+ */
+ const PHP_PASSTHRU = 0; //-> print tags as plain text
+
+ const PHP_QUOTE = 1; //-> escape tags as entities
+
+ const PHP_REMOVE = 2; //-> escape tags as entities
+
+ const PHP_ALLOW = 3; //-> escape tags as entities
+
+ /**
+ * filter types
+ */
+ const FILTER_POST = 'post';
+
+ const FILTER_PRE = 'pre';
+
+ const FILTER_OUTPUT = 'output';
+
+ const FILTER_VARIABLE = 'variable';
+
+ /**
+ * plugin types
+ */
+ const PLUGIN_FUNCTION = 'function';
+
+ const PLUGIN_BLOCK = 'block';
+
+ const PLUGIN_COMPILER = 'compiler';
+
+ const PLUGIN_MODIFIER = 'modifier';
+
+ const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
+
+ /**
+ * Resource caching modes
+ * (not used since 3.1.30)
+ */
+ const RESOURCE_CACHE_OFF = 0;
+
+ const RESOURCE_CACHE_AUTOMATIC = 1; // cache template objects by rules
+
+ const RESOURCE_CACHE_TEMPLATE = 2; // cache all template objects
+
+ const RESOURCE_CACHE_ON = 4; // cache source and compiled resources
+
+ /**#@-*/
+
+ /**
+ * assigned global tpl vars
+ */
+ public static $global_tpl_vars = array();
+
+ /**
+ * error handler returned by set_error_handler() in Smarty::muteExpectedErrors()
+ */
+ public static $_previous_error_handler = null;
+
+ /**
+ * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors()
+ */
+ public static $_muted_directories = array();
+
+ /**
+ * Flag denoting if Multibyte String functions are available
+ */
+ public static $_MBSTRING = SMARTY_MBSTRING;
+
+ /**
+ * The character set to adhere to (e.g. "UTF-8")
+ */
+ public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET;
+
+ /**
+ * The date format to be used internally
+ * (accepts date() and strftime())
+ */
+ public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT;
+
+ /**
+ * Flag denoting if PCRE should run in UTF-8 mode
+ */
+ public static $_UTF8_MODIFIER = 'u';
+
+ /**
+ * Flag denoting if operating system is windows
+ */
+ public static $_IS_WINDOWS = false;
+
+ /**#@+
+ * variables
+ */
+
+ /**
+ * auto literal on delimiters with whitespace
+ *
+ * @var boolean
+ */
+ public $auto_literal = true;
+
+ /**
+ * display error on not assigned variables
+ *
+ * @var boolean
+ */
+ public $error_unassigned = false;
+
+ /**
+ * look up relative file path in include_path
+ *
+ * @var boolean
+ */
+ public $use_include_path = false;
+
+ /**
+ * template directory
+ *
+ * @var array
+ */
+ protected $template_dir = array('./templates/');
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedTemplateDir = array();
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_templateDirNormalized = false;
+
+ /**
+ * joined template directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_template_dir = null;
+
+ /**
+ * config directory
+ *
+ * @var array
+ */
+ protected $config_dir = array('./configs/');
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedConfigDir = array();
+
+ /**
+ * flag if config_dir is normalized
+ *
+ * @var bool
+ */
+ public $_configDirNormalized = false;
+
+ /**
+ * joined config directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_config_dir = null;
+
+ /**
+ * default template handler
+ *
+ * @var callable
+ */
+ public $default_template_handler_func = null;
+
+ /**
+ * default config handler
+ *
+ * @var callable
+ */
+ public $default_config_handler_func = null;
+
+ /**
+ * default plugin handler
+ *
+ * @var callable
+ */
+ public $default_plugin_handler_func = null;
+
+ /**
+ * compile directory
+ *
+ * @var string
+ */
+ protected $compile_dir = './templates_c/';
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_compileDirNormalized = false;
+
+ /**
+ * plugins directory
+ *
+ * @var array
+ */
+ protected $plugins_dir = array();
+
+ /**
+ * flag if plugins_dir is normalized
+ *
+ * @var bool
+ */
+ public $_pluginsDirNormalized = false;
+
+ /**
+ * cache directory
+ *
+ * @var string
+ */
+ protected $cache_dir = './cache/';
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_cacheDirNormalized = false;
+
+ /**
+ * force template compiling?
+ *
+ * @var boolean
+ */
+ public $force_compile = false;
+
+ /**
+ * check template for modifications?
+ *
+ * @var boolean
+ */
+ public $compile_check = true;
+
+ /**
+ * use sub dirs for compiled/cached files?
+ *
+ * @var boolean
+ */
+ public $use_sub_dirs = false;
+
+ /**
+ * allow ambiguous resources (that are made unique by the resource handler)
+ *
+ * @var boolean
+ */
+ public $allow_ambiguous_resources = false;
+
+ /**
+ * merge compiled includes
+ *
+ * @var boolean
+ */
+ public $merge_compiled_includes = false;
+
+ /*
+ * flag for behaviour when extends: resource and {extends} tag are used simultaneous
+ * if false disable execution of {extends} in templates called by extends resource.
+ * (behaviour as versions < 3.1.28)
+ *
+ * @var boolean
+ */
+ public $extends_recursion = true;
+
+ /**
+ * force cache file creation
+ *
+ * @var boolean
+ */
+ public $force_cache = false;
+
+ /**
+ * template left-delimiter
+ *
+ * @var string
+ */
+ public $left_delimiter = "{";
+
+ /**
+ * template right-delimiter
+ *
+ * @var string
+ */
+ public $right_delimiter = "}";
+
+ /**#@+
+ * security
+ */
+ /**
+ * class name
+ * This should be instance of Smarty_Security.
+ *
+ * @var string
+ * @see Smarty_Security
+ */
+ public $security_class = 'Smarty_Security';
+
+ /**
+ * implementation of security class
+ *
+ * @var Smarty_Security
+ */
+ public $security_policy = null;
+
+ /**
+ * controls handling of PHP-blocks
+ *
+ * @var integer
+ */
+ public $php_handling = self::PHP_PASSTHRU;
+
+ /**
+ * controls if the php template file resource is allowed
+ *
+ * @var bool
+ */
+ public $allow_php_templates = false;
+
+ /**#@-*/
+ /**
+ * debug mode
+ * Setting this to true enables the debug-console.
+ *
+ * @var boolean
+ */
+ public $debugging = false;
+
+ /**
+ * This determines if debugging is enable-able from the browser.
+ * <ul>
+ * <li>NONE => no debugging control allowed</li>
+ * <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
+ * </ul>
+ *
+ * @var string
+ */
+ public $debugging_ctrl = 'NONE';
+
+ /**
+ * Name of debugging URL-param.
+ * Only used when $debugging_ctrl is set to 'URL'.
+ * The name of the URL-parameter that activates debugging.
+ *
+ * @var string
+ */
+ public $smarty_debug_id = 'SMARTY_DEBUG';
+
+ /**
+ * Path of debug template.
+ *
+ * @var string
+ */
+ public $debug_tpl = null;
+
+ /**
+ * When set, smarty uses this value as error_reporting-level.
+ *
+ * @var int
+ */
+ public $error_reporting = null;
+
+ /**#@+
+ * config var settings
+ */
+
+ /**
+ * Controls whether variables with the same name overwrite each other.
+ *
+ * @var boolean
+ */
+ public $config_overwrite = true;
+
+ /**
+ * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
+ *
+ * @var boolean
+ */
+ public $config_booleanize = true;
+
+ /**
+ * Controls whether hidden config sections/vars are read from the file.
+ *
+ * @var boolean
+ */
+ public $config_read_hidden = false;
+
+ /**#@-*/
+
+ /**#@+
+ * resource locking
+ */
+
+ /**
+ * locking concurrent compiles
+ *
+ * @var boolean
+ */
+ public $compile_locking = true;
+
+ /**
+ * Controls whether cache resources should use locking mechanism
+ *
+ * @var boolean
+ */
+ public $cache_locking = false;
+
+ /**
+ * seconds to wait for acquiring a lock before ignoring the write lock
+ *
+ * @var float
+ */
+ public $locking_timeout = 10;
+
+ /**#@-*/
+
+ /**
+ * resource type used if none given
+ * Must be an valid key of $registered_resources.
+ *
+ * @var string
+ */
+ public $default_resource_type = 'file';
+
+ /**
+ * caching type
+ * Must be an element of $cache_resource_types.
+ *
+ * @var string
+ */
+ public $caching_type = 'file';
+
+ /**
+ * config type
+ *
+ * @var string
+ */
+ public $default_config_type = 'file';
+
+ /**
+ * check If-Modified-Since headers
+ *
+ * @var boolean
+ */
+ public $cache_modified_check = false;
+
+ /**
+ * registered plugins
+ *
+ * @var array
+ */
+ public $registered_plugins = array();
+
+ /**
+ * registered objects
+ *
+ * @var array
+ */
+ public $registered_objects = array();
+
+ /**
+ * registered classes
+ *
+ * @var array
+ */
+ public $registered_classes = array();
+
+ /**
+ * registered filters
+ *
+ * @var array
+ */
+ public $registered_filters = array();
+
+ /**
+ * registered resources
+ *
+ * @var array
+ */
+ public $registered_resources = array();
+
+ /**
+ * registered cache resources
+ *
+ * @var array
+ */
+ public $registered_cache_resources = array();
+
+ /**
+ * autoload filter
+ *
+ * @var array
+ */
+ public $autoload_filters = array();
+
+ /**
+ * default modifier
+ *
+ * @var array
+ */
+ public $default_modifiers = array();
+
+ /**
+ * autoescape variable output
+ *
+ * @var boolean
+ */
+ public $escape_html = false;
+
+ /**
+ * start time for execution time calculation
+ *
+ * @var int
+ */
+ public $start_time = 0;
+
+ /**
+ * required by the compiler for BC
+ *
+ * @var string
+ */
+ public $_current_file = null;
+
+ /**
+ * internal flag to enable parser debugging
+ *
+ * @var bool
+ */
+ public $_parserdebug = false;
+
+ /**
+ * This object type (Smarty = 1, template = 2, data = 4)
+ *
+ * @var int
+ */
+ public $_objType = 1;
+
+ /**
+ * Debug object
+ *
+ * @var Smarty_Internal_Debug
+ */
+ public $_debug = null;
+
+ /**
+ * Directory separator
+ *
+ * @var string
+ */
+ public $ds = DIRECTORY_SEPARATOR;
+
+ /**
+ * removed properties
+ *
+ * @var string[]
+ */
+ private $obsoleteProperties = array('resource_caching', 'template_resource_caching', 'direct_access_security',
+ '_dir_perms', '_file_perms', 'plugin_search_order',
+ 'inheritance_merge_compiled_includes', 'resource_cache_mode',);
+
+ /**
+ * List of private properties which will call getter/setter on a direct access
+ *
+ * @var string[]
+ */
+ private $accessMap = array('template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
+ 'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
+ 'cache_dir' => 'CacheDir',);
+
+ /**#@-*/
+
+ /**
+ * Initialize new Smarty object
+ */
+ public function __construct()
+ {
+ $this->_clearTemplateCache();
+ parent::__construct();
+ if (is_callable('mb_internal_encoding')) {
+ mb_internal_encoding(Smarty::$_CHARSET);
+ }
+ $this->start_time = microtime(true);
+
+ if (isset($_SERVER[ 'SCRIPT_NAME' ])) {
+ Smarty::$global_tpl_vars[ 'SCRIPT_NAME' ] = new Smarty_Variable($_SERVER[ 'SCRIPT_NAME' ]);
+ }
+
+ // Check if we're running on windows
+ Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
+ // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
+ if (Smarty::$_CHARSET !== 'UTF-8') {
+ Smarty::$_UTF8_MODIFIER = '';
+ }
+ }
+
+ /**
+ * Check if a template resource exists
+ *
+ * @param string $resource_name template name
+ *
+ * @return boolean status
+ */
+ public function templateExists($resource_name)
+ {
+ // create source object
+ $source = Smarty_Template_Source::load(null, $this, $resource_name);
+ return $source->exists;
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param string|Smarty_Security $security_class if a string is used, it must be class-name
+ *
+ * @return Smarty current Smarty instance for chaining
+ * @throws SmartyException when an invalid class name is provided
+ */
+ public function enableSecurity($security_class = null)
+ {
+ Smarty_Security::enableSecurity($this, $security_class);
+ return $this;
+ }
+
+ /**
+ * Disable security
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function disableSecurity()
+ {
+ $this->security_policy = null;
+
+ return $this;
+ }
+
+ /**
+ * Set template directory
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param bool $isConfig true for config_dir
+ *
+ * @return \Smarty current Smarty instance for chaining
+ */
+ public function setTemplateDir($template_dir, $isConfig = false)
+ {
+ if ($isConfig) {
+ $this->config_dir = array();
+ $this->_processedConfigDir = array();
+ } else {
+ $this->template_dir = array();
+ $this->_processedTemplateDir = array();
+ }
+ $this->addTemplateDir($template_dir, null, $isConfig);
+ return $this;
+ }
+
+ /**
+ * Add template directory(s)
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param string $key of the array element to assign the template dir to
+ * @param bool $isConfig true for config_dir
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function addTemplateDir($template_dir, $key = null, $isConfig = false)
+ {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ $this->_configDirNormalized = false;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ $this->_templateDirNormalized = false;
+ }
+ if (is_array($template_dir)) {
+ foreach ($template_dir as $k => $v) {
+ if (is_int($k)) {
+ // indexes are not merged but appended
+ $dir[] = $v;
+ } else {
+ // string indexes are overridden
+ $dir[ $k ] = $v;
+ unset($processed[ $key ]);
+ }
+ }
+ } else {
+ if ($key !== null) {
+ // override directory at specified index
+ $dir[ $key ] = $template_dir;
+ unset($processed[ $key ]);
+ } else {
+ // append new directory
+ $dir[] = $template_dir;
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Get template directories
+ *
+ * @param mixed $index index of directory to get, null to get all
+ * @param bool $isConfig true for config_dir
+ *
+ * @return array list of template directories, or directory of $index
+ */
+ public function getTemplateDir($index = null, $isConfig = false)
+ {
+ if ($isConfig) {
+ $dir = &$this->config_dir;
+ } else {
+ $dir = &$this->template_dir;
+ }
+ if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) {
+ $this->_nomalizeTemplateConfig($isConfig);
+ }
+ if ($index !== null) {
+ return isset($dir[ $index ]) ? $dir[ $index ] : null;
+ }
+ return $dir;
+ }
+
+ /**
+ * Set config directory
+ *
+ * @param $config_dir
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setConfigDir($config_dir)
+ {
+ return $this->setTemplateDir($config_dir, true);
+ }
+
+ /**
+ * Add config directory(s)
+ *
+ * @param string|array $config_dir directory(s) of config sources
+ * @param mixed $key key of the array element to assign the config dir to
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function addConfigDir($config_dir, $key = null)
+ {
+ return $this->addTemplateDir($config_dir, $key, true);
+ }
+
+ /**
+ * Get config directory
+ *
+ * @param mixed $index index of directory to get, null to get all
+ *
+ * @return array configuration directory
+ */
+ public function getConfigDir($index = null)
+ {
+ return $this->getTemplateDir($index, true);
+ }
+
+ /**
+ * Set plugins directory
+ *
+ * @param string|array $plugins_dir directory(s) of plugins
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setPluginsDir($plugins_dir)
+ {
+ $this->plugins_dir = (array) $plugins_dir;
+ $this->_pluginsDirNormalized = false;
+ return $this;
+ }
+
+ /**
+ * Adds directory of plugin files
+ *
+ * @param null|array $plugins_dir
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function addPluginsDir($plugins_dir)
+ {
+ if (empty($this->plugins_dir)) {
+ $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
+ }
+ $this->plugins_dir = array_merge($this->plugins_dir, (array) $plugins_dir);
+ $this->_pluginsDirNormalized = false;
+ return $this;
+ }
+
+ /**
+ * Get plugin directories
+ *
+ * @return array list of plugin directories
+ */
+ public function getPluginsDir()
+ {
+ if (empty($this->plugins_dir)) {
+ $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
+ $this->_pluginsDirNormalized = false;
+ }
+ if (!$this->_pluginsDirNormalized) {
+ if (!is_array($this->plugins_dir)) {
+ $this->plugins_dir = (array) $this->plugins_dir;
+ }
+ foreach ($this->plugins_dir as $k => $v) {
+ $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, "/\\") . $this->ds, true);
+ }
+ $this->_cache[ 'plugin_files' ] = array();
+ $this->_pluginsDirNormalized = true;
+ }
+ return $this->plugins_dir;
+ }
+
+ /**
+ *
+ * @param string $compile_dir directory to store compiled templates in
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setCompileDir($compile_dir)
+ {
+ $this->_normalizeDir('compile_dir', $compile_dir);
+ $this->_compileDirNormalized = true;
+ return $this;
+ }
+
+ /**
+ * Get compiled directory
+ *
+ * @return string path to compiled templates
+ */
+ public function getCompileDir()
+ {
+ if (!$this->_compileDirNormalized) {
+ $this->_normalizeDir('compile_dir', $this->compile_dir);
+ $this->_compileDirNormalized = true;
+ }
+ return $this->compile_dir;
+ }
+
+ /**
+ * Set cache directory
+ *
+ * @param string $cache_dir directory to store cached templates in
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setCacheDir($cache_dir)
+ {
+ $this->_normalizeDir('cache_dir', $cache_dir);
+ $this->_cacheDirNormalized = true;
+ return $this;
+ }
+
+ /**
+ * Get cache directory
+ *
+ * @return string path of cache directory
+ */
+ public function getCacheDir()
+ {
+ if (!$this->_cacheDirNormalized) {
+ $this->_normalizeDir('cache_dir', $this->cache_dir);
+ $this->_cacheDirNormalized = true;
+ }
+ return $this->cache_dir;
+ }
+
+ /**
+ * Normalize and set directory string
+ *
+ * @param string $dirName cache_dir or compile_dir
+ * @param string $dir filepath of folder
+ */
+ private function _normalizeDir($dirName, $dir)
+ {
+ $this->{$dirName} = $this->_realpath(rtrim($dir, "/\\") . $this->ds, true);
+ if (!isset(Smarty::$_muted_directories[ $this->{$dirName} ])) {
+ Smarty::$_muted_directories[ $this->{$dirName} ] = null;
+ }
+ }
+
+ /**
+ * Normalize template_dir or config_dir
+ *
+ * @param bool $isConfig true for config_dir
+ *
+ */
+ private function _nomalizeTemplateConfig($isConfig)
+ {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ }
+ if (!is_array($dir)) {
+ $dir = (array) $dir;
+ }
+ foreach ($dir as $k => $v) {
+ if (!isset($processed[ $k ])) {
+ $dir[ $k ] = $v = $this->_realpath(rtrim($v, "/\\") . $this->ds, true);
+ $processed[ $k ] = true;
+ }
+ }
+ $isConfig ? $this->_configDirNormalized = true : $this->_templateDirNormalized = true;
+ $isConfig ? $this->_joined_config_dir = join('#', $this->config_dir) :
+ $this->_joined_template_dir = join('#', $this->template_dir);
+ }
+
+ /**
+ * creates a template object
+ *
+ * @param string $template the resource handle of the template file
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ * @param boolean $do_clone flag is Smarty object shall be cloned
+ *
+ * @return object template object
+ */
+ public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
+ {
+ if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) {
+ $parent = $cache_id;
+ $cache_id = null;
+ }
+ if ($parent !== null && is_array($parent)) {
+ $data = $parent;
+ $parent = null;
+ } else {
+ $data = null;
+ }
+ if (!$this->_templateDirNormalized) {
+ $this->_nomalizeTemplateConfig(false);
+ }
+ $_templateId = $this->_getTemplateId($template, $cache_id, $compile_id);
+ $tpl = null;
+ if ($this->caching && isset(Smarty_Internal_Template::$isCacheTplObj[ $_templateId ])) {
+ $tpl = $do_clone ? clone Smarty_Internal_Template::$isCacheTplObj[ $_templateId ] :
+ Smarty_Internal_Template::$isCacheTplObj[ $_templateId ];
+ $tpl->inheritance = null;
+ $tpl->tpl_vars = $tpl->config_vars = array();
+ } else if (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) {
+ $tpl = clone Smarty_Internal_Template::$tplObjCache[ $_templateId ];
+ $tpl->inheritance = null;
+ $tpl->tpl_vars = $tpl->config_vars = array();
+ } else {
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $this->template_class($template, $this, null, $cache_id, $compile_id, null, null);
+ $tpl->templateId = $_templateId;
+ }
+ if ($do_clone) {
+ $tpl->smarty = clone $tpl->smarty;
+ }
+ $tpl->parent = $parent ? $parent : $this;
+ // fill data if present
+ if (!empty($data) && is_array($data)) {
+ // set up variable values
+ foreach ($data as $_key => $_val) {
+ $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val);
+ }
+ }
+ if ($this->debugging || $this->debugging_ctrl == 'URL') {
+ $tpl->smarty->_debug = new Smarty_Internal_Debug();
+ // check URL debugging control
+ if (!$this->debugging && $this->debugging_ctrl == 'URL') {
+ $tpl->smarty->_debug->debugUrl($tpl->smarty);
+ }
+ }
+ return $tpl;
+ }
+
+ /**
+ * Takes unknown classes and loads plugin files for them
+ * class name format: Smarty_PluginType_PluginName
+ * plugin filename format: plugintype.pluginname.php
+ *
+ * @param string $plugin_name class plugin name to load
+ * @param bool $check check if already loaded
+ *
+ * @throws SmartyException
+ * @return string |boolean filepath of loaded file or false
+ */
+ public function loadPlugin($plugin_name, $check = true)
+ {
+ return $this->ext->loadPlugin->loadPlugin($this, $plugin_name, $check);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @param string $template_name
+ * @param null|mixed $cache_id
+ * @param null|mixed $compile_id
+ * @param null $caching
+ * @param \Smarty_Internal_Template $template
+ *
+ * @return string
+ */
+ public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null,
+ Smarty_Internal_Template $template = null)
+ {
+ $template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" :
+ $template_name;
+ $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
+ $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
+ $caching = (int) ($caching === null ? $this->caching : $caching);
+
+ if ((isset($template) && strpos($template_name, ':.') !== false) || $this->allow_ambiguous_resources) {
+ $_templateId =
+ Smarty_Resource::getUniqueTemplateName((isset($template) ? $template : $this), $template_name) .
+ "#{$cache_id}#{$compile_id}#{$caching}";
+ } else {
+ $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
+ }
+ if (isset($_templateId[ 150 ])) {
+ $_templateId = sha1($_templateId);
+ }
+ return $_templateId;
+ }
+
+ /**
+ * Normalize path
+ * - remove /./ and /../
+ * - make it absolute if required
+ *
+ * @param string $path file path
+ * @param bool $realpath if true - convert to absolute
+ * false - convert to relative
+ * null - keep as it is but remove /./ /../
+ *
+ * @return string
+ */
+ public function _realpath($path, $realpath = null)
+ {
+ $nds = $this->ds == '/' ? '\\' : '/';
+ // normalize $this->ds
+ $path = str_replace($nds, $this->ds, $path);
+ preg_match('%^(?<root>(?:[[:alpha:]]:[\\\\]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(?:[[:print:]]*))$%',
+ $path, $parts);
+ $path = $parts[ 'path' ];
+ if ($parts[ 'root' ] == '\\') {
+ $parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ];
+ } else {
+ if ($realpath !== null && !$parts[ 'root' ]) {
+ $path = getcwd() . $this->ds . $path;
+ }
+ }
+ // remove noop 'DIRECTORY_SEPARATOR DIRECTORY_SEPARATOR' and 'DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR' patterns
+ $path = preg_replace('#([\\\\/]([.]?[\\\\/])+)#', $this->ds, $path);
+ // resolve '..DIRECTORY_SEPARATOR' pattern, smallest first
+ if (strpos($path, '..' . $this->ds) != false &&
+ preg_match_all('#(([.]?[\\\\/])*([.][.])[\\\\/]([.]?[\\\\/])*)+#', $path, $match)
+ ) {
+ $counts = array();
+ foreach ($match[ 0 ] as $m) {
+ $counts[] = (int) ((strlen($m) - 1) / 3);
+ }
+ sort($counts);
+ foreach ($counts as $count) {
+ $path = preg_replace('#(([\\\\/]([.]?[\\\\/])*[^\\\\/.]+){' . $count .
+ '}[\\\\/]([.]?[\\\\/])*([.][.][\\\\/]([.]?[\\\\/])*){' . $count . '})(?=[^.])#',
+ $this->ds, $path);
+ }
+ }
+
+ return $parts[ 'root' ] . $path;
+ }
+
+ /**
+ * Empty template objects cache
+ */
+ public function _clearTemplateCache()
+ {
+ Smarty_Internal_Template::$isCacheTplObj = array();
+ Smarty_Internal_Template::$tplObjCache = array();
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function _getSmartyObj()
+ {
+ return $this;
+ }
+
+ /**
+ * @param boolean $compile_check
+ */
+ public function setCompileCheck($compile_check)
+ {
+ $this->compile_check = $compile_check;
+ }
+
+ /**
+ * @param boolean $use_sub_dirs
+ */
+ public function setUseSubDirs($use_sub_dirs)
+ {
+ $this->use_sub_dirs = $use_sub_dirs;
+ }
+
+ /**
+ * @param int $error_reporting
+ */
+ public function setErrorReporting($error_reporting)
+ {
+ $this->error_reporting = $error_reporting;
+ }
+
+ /**
+ * @param boolean $escape_html
+ */
+ public function setEscapeHtml($escape_html)
+ {
+ $this->escape_html = $escape_html;
+ }
+
+ /**
+ * @param boolean $auto_literal
+ */
+ public function setAutoLiteral($auto_literal)
+ {
+ $this->auto_literal = $auto_literal;
+ }
+
+ /**
+ * @param boolean $force_compile
+ */
+ public function setForceCompile($force_compile)
+ {
+ $this->force_compile = $force_compile;
+ }
+
+ /**
+ * @param boolean $merge_compiled_includes
+ */
+ public function setMergeCompiledIncludes($merge_compiled_includes)
+ {
+ $this->merge_compiled_includes = $merge_compiled_includes;
+ }
+
+ /**
+ * @param string $left_delimiter
+ */
+ public function setLeftDelimiter($left_delimiter)
+ {
+ $this->left_delimiter = $left_delimiter;
+ }
+
+ /**
+ * @param string $right_delimiter
+ */
+ public function setRightDelimiter($right_delimiter)
+ {
+ $this->right_delimiter = $right_delimiter;
+ }
+
+ /**
+ * @param boolean $debugging
+ */
+ public function setDebugging($debugging)
+ {
+ $this->debugging = $debugging;
+ }
+
+ /**
+ * @param boolean $config_overwrite
+ */
+ public function setConfigOverwrite($config_overwrite)
+ {
+ $this->config_overwrite = $config_overwrite;
+ }
+
+ /**
+ * @param boolean $config_booleanize
+ */
+ public function setConfigBooleanize($config_booleanize)
+ {
+ $this->config_booleanize = $config_booleanize;
+ }
+
+ /**
+ * @param boolean $config_read_hidden
+ */
+ public function setConfigReadHidden($config_read_hidden)
+ {
+ $this->config_read_hidden = $config_read_hidden;
+ }
+
+ /**
+ * @param boolean $compile_locking
+ */
+ public function setCompileLocking($compile_locking)
+ {
+ $this->compile_locking = $compile_locking;
+ }
+
+ /**
+ * @param string $default_resource_type
+ */
+ public function setDefaultResourceType($default_resource_type)
+ {
+ $this->default_resource_type = $default_resource_type;
+ }
+
+ /**
+ * @param string $caching_type
+ */
+ public function setCachingType($caching_type)
+ {
+ $this->caching_type = $caching_type;
+ }
+
+ /**
+ * Test install
+ *
+ * @param null $errors
+ */
+ public function testInstall(&$errors = null)
+ {
+ Smarty_Internal_TestInstall::testInstall($this, $errors);
+ }
+
+ /**
+ * <<magic>> Generic getter.
+ * Calls the appropriate getter function.
+ * Issues an E_USER_NOTICE if no valid getter is found.
+ *
+ * @param string $name property name
+ *
+ * @return mixed
+ */
+ public function __get($name)
+ {
+ if (isset($this->accessMap[ $name ])) {
+ $method = 'get' . $this->accessMap[ $name ];
+ return $this->{$method}();
+ } elseif (isset($this->_cache[ $name ])) {
+ return $this->_cache[ $name ];
+ } elseif (in_array($name, $this->obsoleteProperties)) {
+ return null;
+ } else {
+ trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
+ }
+ return null;
+ }
+
+ /**
+ * <<magic>> Generic setter.
+ * Calls the appropriate setter function.
+ * Issues an E_USER_NOTICE if no valid setter is found.
+ *
+ * @param string $name property name
+ * @param mixed $value parameter passed to setter
+ */
+ public function __set($name, $value)
+ {
+ if (isset($this->accessMap[ $name ])) {
+ $method = 'set' . $this->accessMap[ $name ];
+ $this->{$method}($value);
+ } elseif (in_array($name, $this->obsoleteProperties)) {
+ return;
+ } else {
+ if (is_object($value) && method_exists($value, $name)) {
+ $this->$name = $value;
+ } else {
+ trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
+ }
+ }
+ }
+
+ /**
+ * Error Handler to mute expected messages
+ *
+ * @link http://php.net/set_error_handler
+ *
+ * @param integer $errno Error level
+ * @param $errstr
+ * @param $errfile
+ * @param $errline
+ * @param $errcontext
+ *
+ * @return bool|void
+ */
+ public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
+ {
+ $_is_muted_directory = false;
+
+ // add the SMARTY_DIR to the list of muted directories
+ if (!isset(Smarty::$_muted_directories[ SMARTY_DIR ])) {
+ $smarty_dir = realpath(SMARTY_DIR);
+ if ($smarty_dir !== false) {
+ Smarty::$_muted_directories[ SMARTY_DIR ] =
+ array('file' => $smarty_dir, 'length' => strlen($smarty_dir),);
+ }
+ }
+
+ // walk the muted directories and test against $errfile
+ foreach (Smarty::$_muted_directories as $key => &$dir) {
+ if (!$dir) {
+ // resolve directory and length for speedy comparisons
+ $file = realpath($key);
+ if ($file === false) {
+ // this directory does not exist, remove and skip it
+ unset(Smarty::$_muted_directories[ $key ]);
+ continue;
+ }
+ $dir = array('file' => $file, 'length' => strlen($file),);
+ }
+ if (!strncmp($errfile, $dir[ 'file' ], $dir[ 'length' ])) {
+ $_is_muted_directory = true;
+ break;
+ }
+ }
+ // pass to next error handler if this error did not occur inside SMARTY_DIR
+ // or the error was within smarty but masked to be ignored
+ if (!$_is_muted_directory || ($errno && $errno & error_reporting())) {
+ if (Smarty::$_previous_error_handler) {
+ return call_user_func(Smarty::$_previous_error_handler, $errno, $errstr, $errfile, $errline,
+ $errcontext);
+ } else {
+ return false;
+ }
+ }
+ return;
+ }
+
+ /**
+ * Enable error handler to mute expected messages
+ *
+ * @return void
+ */
+ public static function muteExpectedErrors()
+ {
+ /*
+ error muting is done because some people implemented custom error_handlers using
+ http://php.net/set_error_handler and for some reason did not understand the following paragraph:
+
+ It is important to remember that the standard PHP error handler is completely bypassed for the
+ error types specified by error_types unless the callback function returns FALSE.
+ error_reporting() settings will have no effect and your error handler will be called regardless -
+ however you are still able to read the current value of error_reporting and act appropriately.
+ Of particular note is that this value will be 0 if the statement that caused the error was
+ prepended by the @ error-control operator.
+
+ Smarty deliberately uses @filemtime() over file_exists() and filemtime() in some places. Reasons include
+ - @filemtime() is almost twice as fast as using an additional file_exists()
+ - between file_exists() and filemtime() a possible race condition is opened,
+ which does not exist using the simple @filemtime() approach.
+ */
+ $error_handler = array('Smarty', 'mutingErrorHandler');
+ $previous = set_error_handler($error_handler);
+
+ // avoid dead loops
+ if ($previous !== $error_handler) {
+ Smarty::$_previous_error_handler = $previous;
+ }
+ }
+
+ /**
+ * Disable error handler muting expected messages
+ *
+ * @return void
+ */
+ public static function unmuteExpectedErrors()
+ {
+ restore_error_handler();
+ }
+}
diff --git a/vendor/smarty/smarty/libs/SmartyBC.class.php b/vendor/smarty/smarty/libs/SmartyBC.class.php
new file mode 100644
index 000000000..3955e4f24
--- /dev/null
+++ b/vendor/smarty/smarty/libs/SmartyBC.class.php
@@ -0,0 +1,455 @@
+<?php
+/**
+ * Project: Smarty: the PHP compiling template engine
+ * File: SmartyBC.class.php
+ * SVN: $Id: $
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @link http://www.smarty.net/
+ * @copyright 2008 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ */
+/**
+ * @ignore
+ */
+require_once(dirname(__FILE__) . '/Smarty.class.php');
+
+/**
+ * Smarty Backward Compatibility Wrapper Class
+ *
+ * @package Smarty
+ */
+class SmartyBC extends Smarty
+{
+ /**
+ * Smarty 2 BC
+ *
+ * @var string
+ */
+ public $_version = self::SMARTY_VERSION;
+
+ /**
+ * This is an array of directories where trusted php scripts reside.
+ *
+ * @var array
+ */
+ public $trusted_dir = array();
+
+ /**
+ * Initialize new SmartyBC object
+ *
+ */
+ public function __construct()
+ {
+ parent::__construct();
+ }
+
+ /**
+ * wrapper for assign_by_ref
+ *
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to assign
+ */
+ public function assign_by_ref($tpl_var, &$value)
+ {
+ $this->assignByRef($tpl_var, $value);
+ }
+
+ /**
+ * wrapper for append_by_ref
+ *
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to append
+ * @param boolean $merge flag if array elements shall be merged
+ */
+ public function append_by_ref($tpl_var, &$value, $merge = false)
+ {
+ $this->appendByRef($tpl_var, $value, $merge);
+ }
+
+ /**
+ * clear the given assigned template variable.
+ *
+ * @param string $tpl_var the template variable to clear
+ */
+ public function clear_assign($tpl_var)
+ {
+ $this->clearAssign($tpl_var);
+ }
+
+ /**
+ * Registers custom function to be used in templates
+ *
+ * @param string $function the name of the template function
+ * @param string $function_impl the name of the PHP function to register
+ * @param bool $cacheable
+ * @param mixed $cache_attrs
+ */
+ public function register_function($function, $function_impl, $cacheable = true, $cache_attrs = null)
+ {
+ $this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
+ }
+
+ /**
+ * Unregister custom function
+ *
+ * @param string $function name of template function
+ */
+ public function unregister_function($function)
+ {
+ $this->unregisterPlugin('function', $function);
+ }
+
+ /**
+ * Registers object to be used in templates
+ *
+ * @param string $object name of template object
+ * @param object $object_impl the referenced PHP object to register
+ * @param array $allowed list of allowed methods (empty = all)
+ * @param boolean $smarty_args smarty argument format, else traditional
+ * @param array $block_methods list of methods that are block format
+ *
+ * @throws SmartyException
+ * @internal param array $block_functs list of methods that are block format
+ */
+ public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true,
+ $block_methods = array())
+ {
+ settype($allowed, 'array');
+ settype($smarty_args, 'boolean');
+ $this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
+ }
+
+ /**
+ * Unregister object
+ *
+ * @param string $object name of template object
+ */
+ public function unregister_object($object)
+ {
+ $this->unregisterObject($object);
+ }
+
+ /**
+ * Registers block function to be used in templates
+ *
+ * @param string $block name of template block
+ * @param string $block_impl PHP function to register
+ * @param bool $cacheable
+ * @param mixed $cache_attrs
+ */
+ public function register_block($block, $block_impl, $cacheable = true, $cache_attrs = null)
+ {
+ $this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
+ }
+
+ /**
+ * Unregister block function
+ *
+ * @param string $block name of template function
+ */
+ public function unregister_block($block)
+ {
+ $this->unregisterPlugin('block', $block);
+ }
+
+ /**
+ * Registers compiler function
+ *
+ * @param string $function name of template function
+ * @param string $function_impl name of PHP function to register
+ * @param bool $cacheable
+ */
+ public function register_compiler_function($function, $function_impl, $cacheable = true)
+ {
+ $this->registerPlugin('compiler', $function, $function_impl, $cacheable);
+ }
+
+ /**
+ * Unregister compiler function
+ *
+ * @param string $function name of template function
+ */
+ public function unregister_compiler_function($function)
+ {
+ $this->unregisterPlugin('compiler', $function);
+ }
+
+ /**
+ * Registers modifier to be used in templates
+ *
+ * @param string $modifier name of template modifier
+ * @param string $modifier_impl name of PHP function to register
+ */
+ public function register_modifier($modifier, $modifier_impl)
+ {
+ $this->registerPlugin('modifier', $modifier, $modifier_impl);
+ }
+
+ /**
+ * Unregister modifier
+ *
+ * @param string $modifier name of template modifier
+ */
+ public function unregister_modifier($modifier)
+ {
+ $this->unregisterPlugin('modifier', $modifier);
+ }
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @param string $type name of resource
+ * @param array $functions array of functions to handle resource
+ */
+ public function register_resource($type, $functions)
+ {
+ $this->registerResource($type, $functions);
+ }
+
+ /**
+ * Unregister a resource
+ *
+ * @param string $type name of resource
+ */
+ public function unregister_resource($type)
+ {
+ $this->unregisterResource($type);
+ }
+
+ /**
+ * Registers a prefilter function to apply
+ * to a template before compiling
+ *
+ * @param callable $function
+ */
+ public function register_prefilter($function)
+ {
+ $this->registerFilter('pre', $function);
+ }
+
+ /**
+ * Unregister a prefilter function
+ *
+ * @param callable $function
+ */
+ public function unregister_prefilter($function)
+ {
+ $this->unregisterFilter('pre', $function);
+ }
+
+ /**
+ * Registers a postfilter function to apply
+ * to a compiled template after compilation
+ *
+ * @param callable $function
+ */
+ public function register_postfilter($function)
+ {
+ $this->registerFilter('post', $function);
+ }
+
+ /**
+ * Unregister a postfilter function
+ *
+ * @param callable $function
+ */
+ public function unregister_postfilter($function)
+ {
+ $this->unregisterFilter('post', $function);
+ }
+
+ /**
+ * Registers an output filter function to apply
+ * to a template output
+ *
+ * @param callable $function
+ */
+ public function register_outputfilter($function)
+ {
+ $this->registerFilter('output', $function);
+ }
+
+ /**
+ * Unregister an outputfilter function
+ *
+ * @param callable $function
+ */
+ public function unregister_outputfilter($function)
+ {
+ $this->unregisterFilter('output', $function);
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ */
+ public function load_filter($type, $name)
+ {
+ $this->loadFilter($type, $name);
+ }
+
+ /**
+ * clear cached content for the given template and cache id
+ *
+ * @param string $tpl_file name of template file
+ * @param string $cache_id name of cache_id
+ * @param string $compile_id name of compile_id
+ * @param string $exp_time expiration time
+ *
+ * @return boolean
+ */
+ public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
+ {
+ return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * clear the entire contents of cache (all templates)
+ *
+ * @param string $exp_time expire time
+ *
+ * @return boolean
+ */
+ public function clear_all_cache($exp_time = null)
+ {
+ return $this->clearCache(null, null, null, $exp_time);
+ }
+
+ /**
+ * test to see if valid cache exists for this template
+ *
+ * @param string $tpl_file name of template file
+ * @param string $cache_id
+ * @param string $compile_id
+ *
+ * @return boolean
+ */
+ public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
+ {
+ return $this->isCached($tpl_file, $cache_id, $compile_id);
+ }
+
+ /**
+ * clear all the assigned template variables.
+ */
+ public function clear_all_assign()
+ {
+ $this->clearAllAssign();
+ }
+
+ /**
+ * clears compiled version of specified template resource,
+ * or all compiled template files if one is not specified.
+ * This function is for advanced use only, not normally needed.
+ *
+ * @param string $tpl_file
+ * @param string $compile_id
+ * @param string $exp_time
+ *
+ * @return boolean results of {@link smarty_core_rm_auto()}
+ */
+ public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
+ {
+ return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
+ }
+
+ /**
+ * Checks whether requested template exists.
+ *
+ * @param string $tpl_file
+ *
+ * @return boolean
+ */
+ public function template_exists($tpl_file)
+ {
+ return $this->templateExists($tpl_file);
+ }
+
+ /**
+ * Returns an array containing template variables
+ *
+ * @param string $name
+ *
+ * @return array
+ */
+ public function get_template_vars($name = null)
+ {
+ return $this->getTemplateVars($name);
+ }
+
+ /**
+ * Returns an array containing config variables
+ *
+ * @param string $name
+ *
+ * @return array
+ */
+ public function get_config_vars($name = null)
+ {
+ return $this->getConfigVars($name);
+ }
+
+ /**
+ * load configuration values
+ *
+ * @param string $file
+ * @param string $section
+ * @param string $scope
+ */
+ public function config_load($file, $section = null, $scope = 'global')
+ {
+ $this->ConfigLoad($file, $section, $scope);
+ }
+
+ /**
+ * return a reference to a registered object
+ *
+ * @param string $name
+ *
+ * @return object
+ */
+ public function get_registered_object($name)
+ {
+ return $this->getRegisteredObject($name);
+ }
+
+ /**
+ * clear configuration values
+ *
+ * @param string $var
+ */
+ public function clear_config($var = null)
+ {
+ $this->clearConfig($var);
+ }
+
+ /**
+ * trigger Smarty error
+ *
+ * @param string $error_msg
+ * @param integer $error_type
+ */
+ public function trigger_error($error_msg, $error_type = E_USER_WARNING)
+ {
+ trigger_error("Smarty error: $error_msg", $error_type);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/bootstrap.php b/vendor/smarty/smarty/libs/bootstrap.php
new file mode 100644
index 000000000..32096087f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/bootstrap.php
@@ -0,0 +1,17 @@
+<?php
+/*
+ * This file is part of the Smarty package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Load and register Smarty Autoloader
+ */
+if (!class_exists('Smarty_Autoloader')) {
+ require __DIR__ . '/Autoloader.php';
+}
+Smarty_Autoloader::register();
diff --git a/library/Smarty/libs/debug.tpl b/vendor/smarty/smarty/libs/debug.tpl
index 5526cbca8..5526cbca8 100644
--- a/library/Smarty/libs/debug.tpl
+++ b/vendor/smarty/smarty/libs/debug.tpl
diff --git a/vendor/smarty/smarty/libs/plugins/block.textformat.php b/vendor/smarty/smarty/libs/plugins/block.textformat.php
new file mode 100644
index 000000000..e2c5e3de4
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/block.textformat.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * Smarty plugin to format text blocks
+ *
+ * @package Smarty
+ * @subpackage PluginsBlock
+ */
+
+/**
+ * Smarty {textformat}{/textformat} block plugin
+ * Type: block function<br>
+ * Name: textformat<br>
+ * Purpose: format text a certain way with preset styles
+ * or custom wrap/indent settings<br>
+ * Params:
+ * <pre>
+ * - style - string (email)
+ * - indent - integer (0)
+ * - wrap - integer (80)
+ * - wrap_char - string ("\n")
+ * - indent_char - string (" ")
+ * - wrap_boundary - boolean (true)
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ * @param string $content contents of the block
+ * @param Smarty_Internal_Template $template template object
+ * @param boolean &$repeat repeat flag
+ *
+ * @return string content re-formatted
+ * @author Monte Ohrt <monte at ohrt dot com>
+ */
+function smarty_block_textformat($params, $content, $template, &$repeat)
+{
+ if (is_null($content)) {
+ return;
+ }
+ if (Smarty::$_MBSTRING && !is_callable('smarty_mb_wordwrap')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
+ }
+
+ $style = null;
+ $indent = 0;
+ $indent_first = 0;
+ $indent_char = ' ';
+ $wrap = 80;
+ $wrap_char = "\n";
+ $wrap_cut = false;
+ $assign = null;
+
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'style':
+ case 'indent_char':
+ case 'wrap_char':
+ case 'assign':
+ $$_key = (string) $_val;
+ break;
+
+ case 'indent':
+ case 'indent_first':
+ case 'wrap':
+ $$_key = (int) $_val;
+ break;
+
+ case 'wrap_cut':
+ $$_key = (bool) $_val;
+ break;
+
+ default:
+ trigger_error("textformat: unknown attribute '$_key'");
+ }
+ }
+
+ if ($style == 'email') {
+ $wrap = 72;
+ }
+ // split into paragraphs
+ $_paragraphs = preg_split('![\r\n]{2}!', $content);
+
+ foreach ($_paragraphs as &$_paragraph) {
+ if (!$_paragraph) {
+ continue;
+ }
+ // convert mult. spaces & special chars to single space
+ $_paragraph =
+ preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER),
+ array(' ', ''), $_paragraph);
+ // indent first line
+ if ($indent_first > 0) {
+ $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
+ }
+ // wordwrap sentences
+ if (Smarty::$_MBSTRING) {
+ $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+ } else {
+ $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+ }
+ // indent lines
+ if ($indent > 0) {
+ $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
+ }
+ }
+ $_output = implode($wrap_char . $wrap_char, $_paragraphs);
+
+ if ($assign) {
+ $template->assign($assign, $_output);
+ } else {
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.counter.php b/vendor/smarty/smarty/libs/plugins/function.counter.php
new file mode 100644
index 000000000..bcc8f498c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.counter.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {counter} function plugin
+ * Type: function<br>
+ * Name: counter<br>
+ * Purpose: print out a counter value
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_counter($params, $template)
+{
+ static $counters = array();
+
+ $name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default';
+ if (!isset($counters[ $name ])) {
+ $counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1);
+ }
+ $counter =& $counters[ $name ];
+
+ if (isset($params[ 'start' ])) {
+ $counter[ 'start' ] = $counter[ 'count' ] = (int) $params[ 'start' ];
+ }
+
+ if (!empty($params[ 'assign' ])) {
+ $counter[ 'assign' ] = $params[ 'assign' ];
+ }
+
+ if (isset($counter[ 'assign' ])) {
+ $template->assign($counter[ 'assign' ], $counter[ 'count' ]);
+ }
+
+ if (isset($params[ 'print' ])) {
+ $print = (bool) $params[ 'print' ];
+ } else {
+ $print = empty($counter[ 'assign' ]);
+ }
+
+ if ($print) {
+ $retval = $counter[ 'count' ];
+ } else {
+ $retval = null;
+ }
+
+ if (isset($params[ 'skip' ])) {
+ $counter[ 'skip' ] = $params[ 'skip' ];
+ }
+
+ if (isset($params[ 'direction' ])) {
+ $counter[ 'direction' ] = $params[ 'direction' ];
+ }
+
+ if ($counter[ 'direction' ] == "down") {
+ $counter[ 'count' ] -= $counter[ 'skip' ];
+ } else {
+ $counter[ 'count' ] += $counter[ 'skip' ];
+ }
+
+ return $retval;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.cycle.php b/vendor/smarty/smarty/libs/plugins/function.cycle.php
new file mode 100644
index 000000000..a76d49aed
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.cycle.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {cycle} function plugin
+ * Type: function<br>
+ * Name: cycle<br>
+ * Date: May 3, 2002<br>
+ * Purpose: cycle through given values<br>
+ * Params:
+ * <pre>
+ * - name - name of cycle (optional)
+ * - values - comma separated list of values to cycle, or an array of values to cycle
+ * (this can be left out for subsequent calls)
+ * - reset - boolean - resets given var to true
+ * - print - boolean - print var or not. default is true
+ * - advance - boolean - whether or not to advance the cycle
+ * - delimiter - the value delimiter, default is ","
+ * - assign - boolean, assigns to template var instead of printed.
+ * </pre>
+ * Examples:<br>
+ * <pre>
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Mark Priatel <mpriatel@rogers.com>
+ * @author credit to Gerard <gerard@interfold.com>
+ * @author credit to Jason Sweat <jsweat_php@yahoo.com>
+ * @version 1.3
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+
+function smarty_function_cycle($params, $template)
+{
+ static $cycle_vars;
+
+ $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
+ $print = (isset($params[ 'print' ])) ? (bool) $params[ 'print' ] : true;
+ $advance = (isset($params[ 'advance' ])) ? (bool) $params[ 'advance' ] : true;
+ $reset = (isset($params[ 'reset' ])) ? (bool) $params[ 'reset' ] : false;
+
+ if (!isset($params[ 'values' ])) {
+ if (!isset($cycle_vars[ $name ][ 'values' ])) {
+ trigger_error("cycle: missing 'values' parameter");
+
+ return;
+ }
+ } else {
+ if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] != $params[ 'values' ]) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
+ }
+ $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
+ }
+
+ if (isset($params[ 'delimiter' ])) {
+ $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
+ } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
+ $cycle_vars[ $name ][ 'delimiter' ] = ',';
+ }
+
+ if (is_array($cycle_vars[ $name ][ 'values' ])) {
+ $cycle_array = $cycle_vars[ $name ][ 'values' ];
+ } else {
+ $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
+ }
+
+ if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
+ }
+
+ if (isset($params[ 'assign' ])) {
+ $print = false;
+ $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
+ }
+
+ if ($print) {
+ $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
+ } else {
+ $retval = null;
+ }
+
+ if ($advance) {
+ if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
+ } else {
+ $cycle_vars[ $name ][ 'index' ] ++;
+ }
+ }
+
+ return $retval;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.fetch.php b/vendor/smarty/smarty/libs/plugins/function.fetch.php
new file mode 100644
index 000000000..cb60dd918
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.fetch.php
@@ -0,0 +1,221 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {fetch} plugin
+ * Type: function<br>
+ * Name: fetch<br>
+ * Purpose: fetch file, web or ftp data and display results
+ *
+ * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
+ * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
+ */
+function smarty_function_fetch($params, $template)
+{
+ if (empty($params[ 'file' ])) {
+ trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE);
+
+ return;
+ }
+
+ // strip file protocol
+ if (stripos($params[ 'file' ], 'file://') === 0) {
+ $params[ 'file' ] = substr($params[ 'file' ], 7);
+ }
+
+ $protocol = strpos($params[ 'file' ], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
+ }
+
+ if (isset($template->smarty->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->smarty->security_policy->isTrustedResourceDir($params[ 'file' ])) {
+ return;
+ }
+ }
+ }
+
+ $content = '';
+ if ($protocol == 'http') {
+ // http fetch
+ if ($uri_parts = parse_url($params[ 'file' ])) {
+ // set defaults
+ $host = $server_name = $uri_parts[ 'host' ];
+ $timeout = 30;
+ $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
+ $agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION;
+ $referer = "";
+ $uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/';
+ $uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : '';
+ $_is_proxy = false;
+ if (empty($uri_parts[ 'port' ])) {
+ $port = 80;
+ } else {
+ $port = $uri_parts[ 'port' ];
+ }
+ if (!empty($uri_parts[ 'user' ])) {
+ $user = $uri_parts[ 'user' ];
+ }
+ if (!empty($uri_parts[ 'pass' ])) {
+ $pass = $uri_parts[ 'pass' ];
+ }
+ // loop through parameters, setup headers
+ foreach ($params as $param_key => $param_value) {
+ switch ($param_key) {
+ case "file":
+ case "assign":
+ case "assign_headers":
+ break;
+ case "user":
+ if (!empty($param_value)) {
+ $user = $param_value;
+ }
+ break;
+ case "pass":
+ if (!empty($param_value)) {
+ $pass = $param_value;
+ }
+ break;
+ case "accept":
+ if (!empty($param_value)) {
+ $accept = $param_value;
+ }
+ break;
+ case "header":
+ if (!empty($param_value)) {
+ if (!preg_match('![\w\d-]+: .+!', $param_value)) {
+ trigger_error("[plugin] invalid header format '" . $param_value . "'", E_USER_NOTICE);
+
+ return;
+ } else {
+ $extra_headers[] = $param_value;
+ }
+ }
+ break;
+ case "proxy_host":
+ if (!empty($param_value)) {
+ $proxy_host = $param_value;
+ }
+ break;
+ case "proxy_port":
+ if (!preg_match('!\D!', $param_value)) {
+ $proxy_port = (int) $param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
+
+ return;
+ }
+ break;
+ case "agent":
+ if (!empty($param_value)) {
+ $agent = $param_value;
+ }
+ break;
+ case "referer":
+ if (!empty($param_value)) {
+ $referer = $param_value;
+ }
+ break;
+ case "timeout":
+ if (!preg_match('!\D!', $param_value)) {
+ $timeout = (int) $param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
+
+ return;
+ }
+ break;
+ default:
+ trigger_error("[plugin] unrecognized attribute '" . $param_key . "'", E_USER_NOTICE);
+
+ return;
+ }
+ }
+ if (!empty($proxy_host) && !empty($proxy_port)) {
+ $_is_proxy = true;
+ $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
+ } else {
+ $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
+ }
+
+ if (!$fp) {
+ trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
+
+ return;
+ } else {
+ if ($_is_proxy) {
+ fputs($fp, 'GET ' . $params[ 'file' ] . " HTTP/1.0\r\n");
+ } else {
+ fputs($fp, "GET $uri HTTP/1.0\r\n");
+ }
+ if (!empty($host)) {
+ fputs($fp, "Host: $host\r\n");
+ }
+ if (!empty($accept)) {
+ fputs($fp, "Accept: $accept\r\n");
+ }
+ if (!empty($agent)) {
+ fputs($fp, "User-Agent: $agent\r\n");
+ }
+ if (!empty($referer)) {
+ fputs($fp, "Referer: $referer\r\n");
+ }
+ if (isset($extra_headers) && is_array($extra_headers)) {
+ foreach ($extra_headers as $curr_header) {
+ fputs($fp, $curr_header . "\r\n");
+ }
+ }
+ if (!empty($user) && !empty($pass)) {
+ fputs($fp, "Authorization: BASIC " . base64_encode("$user:$pass") . "\r\n");
+ }
+
+ fputs($fp, "\r\n");
+ while (!feof($fp)) {
+ $content .= fgets($fp, 4096);
+ }
+ fclose($fp);
+ $csplit = preg_split("!\r\n\r\n!", $content, 2);
+
+ $content = $csplit[ 1 ];
+
+ if (!empty($params[ 'assign_headers' ])) {
+ $template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ]));
+ }
+ }
+ } else {
+ trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
+
+ return;
+ }
+ } else {
+ $content = @file_get_contents($params[ 'file' ]);
+ if ($content === false) {
+ throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'");
+ }
+ }
+
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $content);
+ } else {
+ return $content;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php b/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
new file mode 100644
index 000000000..04ce45733
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
@@ -0,0 +1,251 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_checkboxes} function plugin
+ * File: function.html_checkboxes.php<br>
+ * Type: function<br>
+ * Name: html_checkboxes<br>
+ * Date: 24.Feb.2003<br>
+ * Purpose: Prints out a list of checkbox input types<br>
+ * Examples:
+ * <pre>
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
+ * </pre>
+ * Params:
+ * <pre>
+ * - name (optional) - string default "checkbox"
+ * - values (required) - array
+ * - options (optional) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie <br> or &nbsp;
+ * - output (optional) - the output next to each checkbox
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
+ * (Smarty online manual)
+ * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param object $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_checkboxes($params, $template)
+{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+
+ $name = 'checkbox';
+ $values = null;
+ $options = null;
+ $selected = array();
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+
+ $extra = '';
+
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string) $_val;
+ break;
+
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool) $_val;
+ break;
+
+ case 'options':
+ $$_key = (array) $_val;
+ break;
+
+ case 'values':
+ case 'output':
+ $$_key = array_values((array) $_val);
+ break;
+
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = array();
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, "__toString")) {
+ $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
+ } else {
+ trigger_error("html_checkboxes: selected attribute contains an object of class '" .
+ get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string) $_sel);
+ }
+ $selected[ $_sel ] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, "__toString")) {
+ $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+ } else {
+ trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) .
+ "' without __toString() method", E_USER_NOTICE);
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string) $_val);
+ }
+ break;
+
+ case 'checkboxes':
+ trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
+ E_USER_WARNING);
+ $options = (array) $_val;
+ break;
+
+ case 'assign':
+ break;
+
+ case 'strict':
+ break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params[ 'strict' ])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ if (!isset($options) && !isset($values)) {
+ return '';
+ } /* raise error here? */
+
+ $_html_result = array();
+
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result[] =
+ smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
+ }
+ }
+
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+}
+
+function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels,
+ $label_ids, $escape = true)
+{
+ $_output = '';
+
+ if (is_object($value)) {
+ if (method_exists($value, "__toString")) {
+ $value = (string) $value->__toString();
+ } else {
+ trigger_error("html_options: value is an object of class '" . get_class($value) .
+ "' without __toString() method", E_USER_NOTICE);
+
+ return '';
+ }
+ } else {
+ $value = (string) $value;
+ }
+
+ if (is_object($output)) {
+ if (method_exists($output, "__toString")) {
+ $output = (string) $output->__toString();
+ } else {
+ trigger_error("html_options: output is an object of class '" . get_class($output) .
+ "' without __toString() method", E_USER_NOTICE);
+
+ return '';
+ }
+ } else {
+ $output = (string) $output;
+ }
+
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_',
+ $name . '_' . $value));
+ $_output .= '<label for="' . $_id . '">';
+ } else {
+ $_output .= '<label>';
+ }
+ }
+
+ $name = smarty_function_escape_special_chars($name);
+ $value = smarty_function_escape_special_chars($value);
+ if ($escape) {
+ $output = smarty_function_escape_special_chars($output);
+ }
+
+ $_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
+
+ if ($labels && $label_ids) {
+ $_output .= ' id="' . $_id . '"';
+ }
+
+ if (is_array($selected)) {
+ if (isset($selected[ $value ])) {
+ $_output .= ' checked="checked"';
+ }
+ } elseif ($value === $selected) {
+ $_output .= ' checked="checked"';
+ }
+
+ $_output .= $extra . ' />' . $output;
+ if ($labels) {
+ $_output .= '</label>';
+ }
+
+ $_output .= $separator;
+
+ return $_output;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_image.php b/vendor/smarty/smarty/libs/plugins/function.html_image.php
new file mode 100644
index 000000000..6da8fc544
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_image.php
@@ -0,0 +1,166 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_image} function plugin
+ * Type: function<br>
+ * Name: html_image<br>
+ * Date: Feb 24, 2003<br>
+ * Purpose: format HTML tags for the image<br>
+ * Examples: {html_image file="/images/masthead.gif"}<br>
+ * Output: <img src="/images/masthead.gif" width=400 height=23><br>
+ * Params:
+ * <pre>
+ * - file - (required) - file (and path) of image
+ * - height - (optional) - image height (default actual height)
+ * - width - (optional) - image width (default actual width)
+ * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
+ * - path_prefix - prefix for path output (optional, default empty)
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Duda <duda@big.hu>
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_image($params, $template)
+{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+
+ $alt = '';
+ $file = '';
+ $height = '';
+ $width = '';
+ $extra = '';
+ $prefix = '';
+ $suffix = '';
+ $path_prefix = '';
+ $basedir = isset($_SERVER[ 'DOCUMENT_ROOT' ]) ? $_SERVER[ 'DOCUMENT_ROOT' ] : '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'file':
+ case 'height':
+ case 'width':
+ case 'dpi':
+ case 'path_prefix':
+ case 'basedir':
+ $$_key = $_val;
+ break;
+
+ case 'alt':
+ if (!is_array($_val)) {
+ $$_key = smarty_function_escape_special_chars($_val);
+ } else {
+ throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+
+ case 'link':
+ case 'href':
+ $prefix = '<a href="' . $_val . '">';
+ $suffix = '</a>';
+ break;
+
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ if (empty($file)) {
+ trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
+
+ return;
+ }
+
+ if ($file[ 0 ] == '/') {
+ $_image_path = $basedir . $file;
+ } else {
+ $_image_path = $file;
+ }
+
+ // strip file protocol
+ if (stripos($params[ 'file' ], 'file://') === 0) {
+ $params[ 'file' ] = substr($params[ 'file' ], 7);
+ }
+
+ $protocol = strpos($params[ 'file' ], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
+ }
+
+ if (isset($template->smarty->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
+ return;
+ }
+ }
+ }
+
+ if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) {
+ // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
+ if (!$_image_data = @getimagesize($_image_path)) {
+ if (!file_exists($_image_path)) {
+ trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
+
+ return;
+ } elseif (!is_readable($_image_path)) {
+ trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
+
+ return;
+ } else {
+ trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
+
+ return;
+ }
+ }
+
+ if (!isset($params[ 'width' ])) {
+ $width = $_image_data[ 0 ];
+ }
+ if (!isset($params[ 'height' ])) {
+ $height = $_image_data[ 1 ];
+ }
+ }
+
+ if (isset($params[ 'dpi' ])) {
+ if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) {
+ // FIXME: (rodneyrehm) wrong dpi assumption
+ // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
+ $dpi_default = 72;
+ } else {
+ $dpi_default = 96;
+ }
+ $_resize = $dpi_default / $params[ 'dpi' ];
+ $width = round($width * $_resize);
+ $height = round($height * $_resize);
+ }
+
+ return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' .
+ $height . '"' . $extra . ' />' . $suffix;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_options.php b/vendor/smarty/smarty/libs/plugins/function.html_options.php
new file mode 100644
index 000000000..bc8f36e0b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_options.php
@@ -0,0 +1,206 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_options} function plugin
+ * Type: function<br>
+ * Name: html_options<br>
+ * Purpose: Prints the list of <option> tags generated from
+ * the passed parameters<br>
+ * Params:
+ * <pre>
+ * - name (optional) - string default "select"
+ * - values (required) - if no options supplied) - array
+ * - options (required) - if no values supplied) - associative array
+ * - selected (optional) - string default not set
+ * - output (required) - if not options supplied) - array
+ * - id (optional) - string default not set
+ * - class (optional) - string default not set
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_options($params)
+{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+
+ $name = null;
+ $values = null;
+ $options = null;
+ $selected = null;
+ $output = null;
+ $id = null;
+ $class = null;
+
+ $extra = '';
+
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'class':
+ case 'id':
+ $$_key = (string) $_val;
+ break;
+
+ case 'options':
+ $options = (array) $_val;
+ break;
+
+ case 'values':
+ case 'output':
+ $$_key = array_values((array) $_val);
+ break;
+
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = array();
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, "__toString")) {
+ $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
+ } else {
+ trigger_error("html_options: selected attribute contains an object of class '" .
+ get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string) $_sel);
+ }
+ $selected[ $_sel ] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, "__toString")) {
+ $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+ } else {
+ trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) .
+ "' without __toString() method", E_USER_NOTICE);
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string) $_val);
+ }
+ break;
+
+ case 'strict':
+ break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params[ 'strict' ])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+
+ return '';
+ }
+
+ $_html_result = '';
+ $_idx = 0;
+
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ }
+
+ if (!empty($name)) {
+ $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
+ $_html_result =
+ '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result .
+ '</select>' . "\n";
+ }
+
+ return $_html_result;
+}
+
+function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
+{
+ if (!is_array($value)) {
+ $_key = smarty_function_escape_special_chars($key);
+ $_html_result = '<option value="' . $_key . '"';
+ if (is_array($selected)) {
+ if (isset($selected[ $_key ])) {
+ $_html_result .= ' selected="selected"';
+ }
+ } elseif ($_key === $selected) {
+ $_html_result .= ' selected="selected"';
+ }
+ $_html_class = !empty($class) ? ' class="' . $class . ' option"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
+ if (is_object($value)) {
+ if (method_exists($value, "__toString")) {
+ $value = smarty_function_escape_special_chars((string) $value->__toString());
+ } else {
+ trigger_error("html_options: value is an object of class '" . get_class($value) .
+ "' without __toString() method", E_USER_NOTICE);
+
+ return '';
+ }
+ } else {
+ $value = smarty_function_escape_special_chars((string) $value);
+ }
+ $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
+ $idx ++;
+ } else {
+ $_idx = 0;
+ $_html_result =
+ smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null,
+ $class, $_idx);
+ $idx ++;
+ }
+
+ return $_html_result;
+}
+
+function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
+{
+ $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
+ foreach ($values as $key => $value) {
+ $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
+ }
+ $optgroup_html .= "</optgroup>\n";
+
+ return $optgroup_html;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_radios.php b/vendor/smarty/smarty/libs/plugins/function.html_radios.php
new file mode 100644
index 000000000..6ef84328a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_radios.php
@@ -0,0 +1,234 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_radios} function plugin
+ * File: function.html_radios.php<br>
+ * Type: function<br>
+ * Name: html_radios<br>
+ * Date: 24.Feb.2003<br>
+ * Purpose: Prints out a list of radio input types<br>
+ * Params:
+ * <pre>
+ * - name (optional) - string default "radio"
+ * - values (required) - array
+ * - options (required) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie <br> or &nbsp;
+ * - output (optional) - the output next to each radio button
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ * </pre>
+ * Examples:
+ * <pre>
+ * {html_radios values=$ids output=$names}
+ * {html_radios values=$ids name='box' separator='<br>' output=$names}
+ * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
+ * </pre>
+ *
+ * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
+ * (Smarty online manual)
+ * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_radios($params, $template)
+{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+
+ $name = 'radio';
+ $values = null;
+ $options = null;
+ $selected = null;
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string) $_val;
+ break;
+
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, "__toString")) {
+ $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+ } else {
+ trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) .
+ "' without __toString() method", E_USER_NOTICE);
+ }
+ } else {
+ $selected = (string) $_val;
+ }
+ break;
+
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool) $_val;
+ break;
+
+ case 'options':
+ $$_key = (array) $_val;
+ break;
+
+ case 'values':
+ case 'output':
+ $$_key = array_values((array) $_val);
+ break;
+
+ case 'radios':
+ trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
+ E_USER_WARNING);
+ $options = (array) $_val;
+ break;
+
+ case 'assign':
+ break;
+
+ case 'strict':
+ break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params[ 'strict' ])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+
+ return '';
+ }
+
+ $_html_result = array();
+
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result[] =
+ smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels,
+ $label_ids, $escape);
+ }
+ }
+
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+}
+
+function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids,
+ $escape)
+{
+ $_output = '';
+
+ if (is_object($value)) {
+ if (method_exists($value, "__toString")) {
+ $value = (string) $value->__toString();
+ } else {
+ trigger_error("html_options: value is an object of class '" . get_class($value) .
+ "' without __toString() method", E_USER_NOTICE);
+
+ return '';
+ }
+ } else {
+ $value = (string) $value;
+ }
+
+ if (is_object($output)) {
+ if (method_exists($output, "__toString")) {
+ $output = (string) $output->__toString();
+ } else {
+ trigger_error("html_options: output is an object of class '" . get_class($output) .
+ "' without __toString() method", E_USER_NOTICE);
+
+ return '';
+ }
+ } else {
+ $output = (string) $output;
+ }
+
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_',
+ $name . '_' . $value));
+ $_output .= '<label for="' . $_id . '">';
+ } else {
+ $_output .= '<label>';
+ }
+ }
+
+ $name = smarty_function_escape_special_chars($name);
+ $value = smarty_function_escape_special_chars($value);
+ if ($escape) {
+ $output = smarty_function_escape_special_chars($output);
+ }
+
+ $_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
+
+ if ($labels && $label_ids) {
+ $_output .= ' id="' . $_id . '"';
+ }
+
+ if ($value === $selected) {
+ $_output .= ' checked="checked"';
+ }
+
+ $_output .= $extra . ' />' . $output;
+ if ($labels) {
+ $_output .= '</label>';
+ }
+
+ $_output .= $separator;
+
+ return $_output;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_select_date.php b/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
new file mode 100644
index 000000000..3a48da0bb
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
@@ -0,0 +1,388 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_select_date} plugin
+ * Type: function<br>
+ * Name: html_select_date<br>
+ * Purpose: Prints the dropdowns for date selection.
+ * ChangeLog:
+ * <pre>
+ * - 1.0 initial release
+ * - 1.1 added support for +/- N syntax for begin
+ * and end year values. (Monte)
+ * - 1.2 added support for yyyy-mm-dd syntax for
+ * time value. (Jan Rosier)
+ * - 1.3 added support for choosing format for
+ * month values (Gary Loescher)
+ * - 1.3.1 added support for choosing format for
+ * day values (Marcus Bointon)
+ * - 1.3.2 support negative timestamps, force year
+ * dropdown to include given date unless explicitly set (Monte)
+ * - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
+ * of 0000-00-00 dates (cybot, boots)
+ * - 2.0 complete rewrite for performance,
+ * added attributes month_names, *_id
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
+ * (Smarty online manual)
+ * @version 2.0
+ * @author Andrei Zmievski
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+function smarty_function_html_select_date($params)
+{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+ if (!is_callable('smarty_make_timestamp')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ }
+ // generate timestamps used for month names only
+ static $_month_timestamps = null;
+ static $_current_year = null;
+ if ($_month_timestamps === null) {
+ $_current_year = date('Y');
+ $_month_timestamps = array();
+ for ($i = 1; $i <= 12; $i ++) {
+ $_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000);
+ }
+ }
+
+ /* Default values. */
+ $prefix = "Date_";
+ $start_year = null;
+ $end_year = null;
+ $display_days = true;
+ $display_months = true;
+ $display_years = true;
+ $month_format = "%B";
+ /* Write months as numbers by default GL */
+ $month_value_format = "%m";
+ $day_format = "%02d";
+ /* Write day values using this format MB */
+ $day_value_format = "%d";
+ $year_as_text = false;
+ /* Display years in reverse order? Ie. 2000,1999,.... */
+ $reverse_years = false;
+ /* Should the select boxes be part of an array when returned from PHP?
+ e.g. setting it to "birthday", would create "birthday[Day]",
+ "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
+ $field_array = null;
+ /* <select size>'s of the different <select> tags.
+ If not set, uses default dropdown. */
+ $day_size = null;
+ $month_size = null;
+ $year_size = null;
+ /* Unparsed attributes common to *ALL* the <select>/<input> tags.
+ An example might be in the template: all_extra ='class ="foo"'. */
+ $all_extra = null;
+ /* Separate attributes for the tags. */
+ $day_extra = null;
+ $month_extra = null;
+ $year_extra = null;
+ /* Order in which to display the fields.
+ "D" -> day, "M" -> month, "Y" -> year. */
+ $field_order = 'MDY';
+ /* String printed between the different fields. */
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+ // $all_empty = null;
+ // $day_empty = null;
+ // $month_empty = null;
+ // $year_empty = null;
+ $extra_attrs = '';
+ $all_id = null;
+ $day_id = null;
+ $month_id = null;
+ $year_id = null;
+
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ if (!is_array($_value) && $_value !== null) {
+ $time = smarty_make_timestamp($_value);
+ }
+ break;
+
+ case 'month_names':
+ if (is_array($_value) && count($_value) == 12) {
+ $$_key = $_value;
+ } else {
+ trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE);
+ }
+ break;
+
+ case 'prefix':
+ case 'field_array':
+ case 'start_year':
+ case 'end_year':
+ case 'day_format':
+ case 'day_value_format':
+ case 'month_format':
+ case 'month_value_format':
+ case 'day_size':
+ case 'month_size':
+ case 'year_size':
+ case 'all_extra':
+ case 'day_extra':
+ case 'month_extra':
+ case 'year_extra':
+ case 'field_order':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_empty':
+ case 'month_empty':
+ case 'day_empty':
+ case 'year_empty':
+ case 'all_id':
+ case 'month_id':
+ case 'day_id':
+ case 'year_id':
+ $$_key = (string) $_value;
+ break;
+
+ case 'display_days':
+ case 'display_months':
+ case 'display_years':
+ case 'year_as_text':
+ case 'reverse_years':
+ $$_key = (bool) $_value;
+ break;
+
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ // Note: date() is faster than strftime()
+ // Note: explode(date()) is faster than date() date() date()
+ if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
+ if (isset($params[ 'time' ][ $prefix . 'Year' ])) {
+ // $_REQUEST[$field_array] given
+ foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
+ date($_elementKey);
+ }
+ } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Year' ])) {
+ // $_REQUEST given
+ foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
+ $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
+ }
+ } else {
+ // no date found, use NOW
+ list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_year = $_month = $_day = $time = null;
+ } else {
+ list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+ }
+ } else {
+ list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time));
+ }
+
+ // make syntax "+N" or "-N" work with $start_year and $end_year
+ // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
+ foreach (array('start', 'end') as $key) {
+ $key .= '_year';
+ $t = $$key;
+ if ($t === null) {
+ $$key = (int) $_current_year;
+ } elseif ($t[ 0 ] == '+') {
+ $$key = (int) ($_current_year + (int) trim(substr($t, 1)));
+ } elseif ($t[ 0 ] == '-') {
+ $$key = (int) ($_current_year - (int) trim(substr($t, 1)));
+ } else {
+ $$key = (int) $$key;
+ }
+ }
+
+ // flip for ascending or descending
+ if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
+ $t = $end_year;
+ $end_year = $start_year;
+ $start_year = $t;
+ }
+
+ // generate year <select> or <input>
+ if ($display_years) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($year_extra) {
+ $_extra .= ' ' . $year_extra;
+ }
+
+ if ($year_as_text) {
+ $_html_years =
+ '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra .
+ $extra_attrs . ' />';
+ } else {
+ $_html_years = '<select name="' . $_name . '"';
+ if ($year_id !== null || $all_id !== null) {
+ $_html_years .= ' id="' . smarty_function_escape_special_chars($year_id !== null ?
+ ($year_id ? $year_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
+ }
+ if ($year_size) {
+ $_html_years .= ' size="' . $year_size . '"';
+ }
+ $_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($year_empty) || isset($all_empty)) {
+ $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+
+ $op = $start_year > $end_year ? - 1 : 1;
+ for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
+ $_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i .
+ '</option>' . $option_separator;
+ }
+
+ $_html_years .= '</select>';
+ }
+ }
+
+ // generate month <select> or <input>
+ if ($display_months) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($month_extra) {
+ $_extra .= ' ' . $month_extra;
+ }
+
+ $_html_months = '<select name="' . $_name . '"';
+ if ($month_id !== null || $all_id !== null) {
+ $_html_months .= ' id="' . smarty_function_escape_special_chars($month_id !== null ?
+ ($month_id ? $month_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
+ }
+ if ($month_size) {
+ $_html_months .= ' size="' . $month_size . '"';
+ }
+ $_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($month_empty) || isset($all_empty)) {
+ $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+
+ for ($i = 1; $i <= 12; $i ++) {
+ $_val = sprintf('%02d', $i);
+ $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) :
+ ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[ $i ]));
+ $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]);
+ $_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
+ }
+
+ $_html_months .= '</select>';
+ }
+
+ // generate day <select> or <input>
+ if ($display_days) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($day_extra) {
+ $_extra .= ' ' . $day_extra;
+ }
+
+ $_html_days = '<select name="' . $_name . '"';
+ if ($day_id !== null || $all_id !== null) {
+ $_html_days .= ' id="' .
+ smarty_function_escape_special_chars($day_id !== null ? ($day_id ? $day_id : $_name) :
+ ($all_id ? ($all_id . $_name) : $_name)) . '"';
+ }
+ if ($day_size) {
+ $_html_days .= ' size="' . $day_size . '"';
+ }
+ $_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($day_empty) || isset($all_empty)) {
+ $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+
+ for ($i = 1; $i <= 31; $i ++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
+ $_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
+ $_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' .
+ $_text . '</option>' . $option_separator;
+ }
+
+ $_html_days .= '</select>';
+ }
+
+ // order the fields for output
+ $_html = '';
+ for ($i = 0; $i <= 2; $i ++) {
+ switch ($field_order[ $i ]) {
+ case 'Y':
+ case 'y':
+ if (isset($_html_years)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_years;
+ }
+ break;
+
+ case 'm':
+ case 'M':
+ if (isset($_html_months)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_months;
+ }
+ break;
+
+ case 'd':
+ case 'D':
+ if (isset($_html_days)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_days;
+ }
+ break;
+ }
+ }
+
+ return $_html;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_select_time.php b/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
new file mode 100644
index 000000000..89f0406f6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
@@ -0,0 +1,363 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_select_time} function plugin
+ * Type: function<br>
+ * Name: html_select_time<br>
+ * Purpose: Prints the dropdowns for time selection
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
+ * (Smarty online manual)
+ * @author Roberto Berto <roberto@berto.net>
+ * @author Monte Ohrt <monte AT ohrt DOT com>
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ * @uses smarty_make_timestamp()
+ */
+function smarty_function_html_select_time($params)
+{
+ if (!is_callable('smarty_function_escape_special_chars')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ }
+ if (!is_callable('smarty_make_timestamp')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ }
+ $prefix = "Time_";
+ $field_array = null;
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+
+ $display_hours = true;
+ $display_minutes = true;
+ $display_seconds = true;
+ $display_meridian = true;
+
+ $hour_format = '%02d';
+ $hour_value_format = '%02d';
+ $minute_format = '%02d';
+ $minute_value_format = '%02d';
+ $second_format = '%02d';
+ $second_value_format = '%02d';
+
+ $hour_size = null;
+ $minute_size = null;
+ $second_size = null;
+ $meridian_size = null;
+
+ $all_empty = null;
+ $hour_empty = null;
+ $minute_empty = null;
+ $second_empty = null;
+ $meridian_empty = null;
+
+ $all_id = null;
+ $hour_id = null;
+ $minute_id = null;
+ $second_id = null;
+ $meridian_id = null;
+
+ $use_24_hours = true;
+ $minute_interval = 1;
+ $second_interval = 1;
+
+ $extra_attrs = '';
+ $all_extra = null;
+ $hour_extra = null;
+ $minute_extra = null;
+ $second_extra = null;
+ $meridian_extra = null;
+
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ if (!is_array($_value) && $_value !== null) {
+ $time = smarty_make_timestamp($_value);
+ }
+ break;
+
+ case 'prefix':
+ case 'field_array':
+
+ case 'field_separator':
+ case 'option_separator':
+
+ case 'all_extra':
+ case 'hour_extra':
+ case 'minute_extra':
+ case 'second_extra':
+ case 'meridian_extra':
+
+ case 'all_empty':
+ case 'hour_empty':
+ case 'minute_empty':
+ case 'second_empty':
+ case 'meridian_empty':
+
+ case 'all_id':
+ case 'hour_id':
+ case 'minute_id':
+ case 'second_id':
+ case 'meridian_id':
+
+ case 'hour_format':
+ case 'hour_value_format':
+ case 'minute_format':
+ case 'minute_value_format':
+ case 'second_format':
+ case 'second_value_format':
+ $$_key = (string) $_value;
+ break;
+
+ case 'display_hours':
+ case 'display_minutes':
+ case 'display_seconds':
+ case 'display_meridian':
+ case 'use_24_hours':
+ $$_key = (bool) $_value;
+ break;
+
+ case 'minute_interval':
+ case 'second_interval':
+
+ case 'hour_size':
+ case 'minute_size':
+ case 'second_size':
+ case 'meridian_size':
+ $$_key = (int) $_value;
+ break;
+
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
+ if (isset($params[ 'time' ][ $prefix . 'Hour' ])) {
+ // $_REQUEST[$field_array] given
+ foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
+ date($_elementKey);
+ }
+ $_meridian =
+ isset($params[ 'time' ][ $prefix . 'Meridian' ]) ? (' ' . $params[ 'time' ][ $prefix . 'Meridian' ]) :
+ '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+ } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) {
+ // $_REQUEST given
+ foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
+ $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
+ }
+ $_meridian = isset($params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) ?
+ (' ' . $params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) : '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+ } else {
+ // no date found, use NOW
+ list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_hour = $_minute = $_second = $time = null;
+ } else {
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s'));
+ }
+ } else {
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+ }
+
+ // generate hour <select>
+ if ($display_hours) {
+ $_html_hours = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($hour_extra) {
+ $_extra .= ' ' . $hour_extra;
+ }
+
+ $_html_hours = '<select name="' . $_name . '"';
+ if ($hour_id !== null || $all_id !== null) {
+ $_html_hours .= ' id="' .
+ smarty_function_escape_special_chars($hour_id !== null ? ($hour_id ? $hour_id : $_name) :
+ ($all_id ? ($all_id . $_name) : $_name)) . '"';
+ }
+ if ($hour_size) {
+ $_html_hours .= ' size="' . $hour_size . '"';
+ }
+ $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($hour_empty) || isset($all_empty)) {
+ $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+
+ $start = $use_24_hours ? 0 : 1;
+ $end = $use_24_hours ? 23 : 12;
+ for ($i = $start; $i <= $end; $i ++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i);
+ $_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
+
+ if (!$use_24_hours) {
+ $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
+ }
+
+ $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
+ $_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' .
+ $_text . '</option>' . $option_separator;
+ }
+
+ $_html_hours .= '</select>';
+ }
+
+ // generate minute <select>
+ if ($display_minutes) {
+ $_html_minutes = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($minute_extra) {
+ $_extra .= ' ' . $minute_extra;
+ }
+
+ $_html_minutes = '<select name="' . $_name . '"';
+ if ($minute_id !== null || $all_id !== null) {
+ $_html_minutes .= ' id="' . smarty_function_escape_special_chars($minute_id !== null ?
+ ($minute_id ? $minute_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
+ }
+ if ($minute_size) {
+ $_html_minutes .= ' size="' . $minute_size . '"';
+ }
+ $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($minute_empty) || isset($all_empty)) {
+ $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+
+ $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
+ for ($i = 0; $i <= 59; $i += $minute_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
+ $_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
+ $_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
+ }
+
+ $_html_minutes .= '</select>';
+ }
+
+ // generate second <select>
+ if ($display_seconds) {
+ $_html_seconds = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($second_extra) {
+ $_extra .= ' ' . $second_extra;
+ }
+
+ $_html_seconds = '<select name="' . $_name . '"';
+ if ($second_id !== null || $all_id !== null) {
+ $_html_seconds .= ' id="' . smarty_function_escape_special_chars($second_id !== null ?
+ ($second_id ? $second_id : $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
+ }
+ if ($second_size) {
+ $_html_seconds .= ' size="' . $second_size . '"';
+ }
+ $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($second_empty) || isset($all_empty)) {
+ $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' .
+ $option_separator;
+ }
+
+ $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
+ for ($i = 0; $i <= 59; $i += $second_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
+ $_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
+ $_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') .
+ '>' . $_text . '</option>' . $option_separator;
+ }
+
+ $_html_seconds .= '</select>';
+ }
+
+ // generate meridian <select>
+ if ($display_meridian && !$use_24_hours) {
+ $_html_meridian = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($meridian_extra) {
+ $_extra .= ' ' . $meridian_extra;
+ }
+
+ $_html_meridian = '<select name="' . $_name . '"';
+ if ($meridian_id !== null || $all_id !== null) {
+ $_html_meridian .= ' id="' . smarty_function_escape_special_chars($meridian_id !== null ?
+ ($meridian_id ? $meridian_id :
+ $_name) :
+ ($all_id ? ($all_id . $_name) :
+ $_name)) . '"';
+ }
+ if ($meridian_size) {
+ $_html_meridian .= ' size="' . $meridian_size . '"';
+ }
+ $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
+
+ if (isset($meridian_empty) || isset($all_empty)) {
+ $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
+ '</option>' . $option_separator;
+ }
+
+ $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') .
+ '>AM</option>' . $option_separator . '<option value="pm"' .
+ ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator .
+ '</select>';
+ }
+
+ $_html = '';
+ foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) {
+ if (isset($$k)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $$k;
+ }
+ }
+
+ return $_html;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.html_table.php b/vendor/smarty/smarty/libs/plugins/function.html_table.php
new file mode 100644
index 000000000..42e23e722
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.html_table.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_table} function plugin
+ * Type: function<br>
+ * Name: html_table<br>
+ * Date: Feb 17, 2003<br>
+ * Purpose: make an html table from an array of data<br>
+ * Params:
+ * <pre>
+ * - loop - array to loop through
+ * - cols - number of columns, comma separated list of column names
+ * or array of column names
+ * - rows - number of rows
+ * - table_attr - table attributes
+ * - th_attr - table heading attributes (arrays are cycled)
+ * - tr_attr - table row attributes (arrays are cycled)
+ * - td_attr - table cell attributes (arrays are cycled)
+ * - trailpad - value to pad trailing cells with
+ * - caption - text for caption element
+ * - vdir - vertical direction (default: "down", means top-to-bottom)
+ * - hdir - horizontal direction (default: "right", means left-to-right)
+ * - inner - inner loop (default "cols": print $loop line by line,
+ * $loop will be printed column by column otherwise)
+ * </pre>
+ * Examples:
+ * <pre>
+ * {table loop=$data}
+ * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
+ * {table loop=$data cols="first,second,third" tr_attr=$colors}
+ * </pre>
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
+ * @author credit to boots <boots dot smarty at yahoo dot com>
+ * @version 1.1
+ * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+function smarty_function_html_table($params)
+{
+ $table_attr = 'border="1"';
+ $tr_attr = '';
+ $th_attr = '';
+ $td_attr = '';
+ $cols = $cols_count = 3;
+ $rows = 3;
+ $trailpad = '&nbsp;';
+ $vdir = 'down';
+ $hdir = 'right';
+ $inner = 'cols';
+ $caption = '';
+ $loop = null;
+
+ if (!isset($params[ 'loop' ])) {
+ trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
+
+ return;
+ }
+
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'loop':
+ $$_key = (array) $_value;
+ break;
+
+ case 'cols':
+ if (is_array($_value) && !empty($_value)) {
+ $cols = $_value;
+ $cols_count = count($_value);
+ } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
+ $cols = explode(',', $_value);
+ $cols_count = count($cols);
+ } elseif (!empty($_value)) {
+ $cols_count = (int) $_value;
+ } else {
+ $cols_count = $cols;
+ }
+ break;
+
+ case 'rows':
+ $$_key = (int) $_value;
+ break;
+
+ case 'table_attr':
+ case 'trailpad':
+ case 'hdir':
+ case 'vdir':
+ case 'inner':
+ case 'caption':
+ $$_key = (string) $_value;
+ break;
+
+ case 'tr_attr':
+ case 'td_attr':
+ case 'th_attr':
+ $$_key = $_value;
+ break;
+ }
+ }
+
+ $loop_count = count($loop);
+ if (empty($params[ 'rows' ])) {
+ /* no rows specified */
+ $rows = ceil($loop_count / $cols_count);
+ } elseif (empty($params[ 'cols' ])) {
+ if (!empty($params[ 'rows' ])) {
+ /* no cols specified, but rows */
+ $cols_count = ceil($loop_count / $rows);
+ }
+ }
+
+ $output = "<table $table_attr>\n";
+
+ if (!empty($caption)) {
+ $output .= '<caption>' . $caption . "</caption>\n";
+ }
+
+ if (is_array($cols)) {
+ $cols = ($hdir == 'right') ? $cols : array_reverse($cols);
+ $output .= "<thead><tr>\n";
+
+ for ($r = 0; $r < $cols_count; $r ++) {
+ $output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
+ $output .= $cols[ $r ];
+ $output .= "</th>\n";
+ }
+ $output .= "</tr></thead>\n";
+ }
+
+ $output .= "<tbody>\n";
+ for ($r = 0; $r < $rows; $r ++) {
+ $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
+ $rx = ($vdir == 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
+
+ for ($c = 0; $c < $cols_count; $c ++) {
+ $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
+ if ($inner != 'cols') {
+ /* shuffle x to loop over rows*/
+ $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
+ }
+
+ if ($x < $loop_count) {
+ $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[ $x ] . "</td>\n";
+ } else {
+ $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
+ }
+ }
+ $output .= "</tr>\n";
+ }
+ $output .= "</tbody>\n";
+ $output .= "</table>\n";
+
+ return $output;
+}
+
+function smarty_function_html_table_cycle($name, $var, $no)
+{
+ if (!is_array($var)) {
+ $ret = $var;
+ } else {
+ $ret = $var[ $no % count($var) ];
+ }
+
+ return ($ret) ? ' ' . $ret : '';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.mailto.php b/vendor/smarty/smarty/libs/plugins/function.mailto.php
new file mode 100644
index 000000000..9d2a5d2d5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.mailto.php
@@ -0,0 +1,153 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {mailto} function plugin
+ * Type: function<br>
+ * Name: mailto<br>
+ * Date: May 21, 2002
+ * Purpose: automate mailto address link creation, and optionally encode them.<br>
+ * Params:
+ * <pre>
+ * - address - (required) - e-mail address
+ * - text - (optional) - text to display, default is address
+ * - encode - (optional) - can be one of:
+ * * none : no encoding (default)
+ * * javascript : encode with javascript
+ * * javascript_charcode : encode with javascript charcode
+ * * hex : encode with hexidecimal (no javascript)
+ * - cc - (optional) - address(es) to carbon copy
+ * - bcc - (optional) - address(es) to blind carbon copy
+ * - subject - (optional) - e-mail subject
+ * - newsgroups - (optional) - newsgroup(s) to post to
+ * - followupto - (optional) - address(es) to follow up to
+ * - extra - (optional) - extra tags for the href link
+ * </pre>
+ * Examples:
+ * <pre>
+ * {mailto address="me@domain.com"}
+ * {mailto address="me@domain.com" encode="javascript"}
+ * {mailto address="me@domain.com" encode="hex"}
+ * {mailto address="me@domain.com" subject="Hello to you!"}
+ * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
+ * {mailto address="me@domain.com" extra='class="mailto"'}
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
+ * (Smarty online manual)
+ * @version 1.2
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Jason Sweat (added cc, bcc and subject functionality)
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+function smarty_function_mailto($params)
+{
+ static $_allowed_encoding =
+ array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
+ $extra = '';
+
+ if (empty($params[ 'address' ])) {
+ trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
+
+ return;
+ } else {
+ $address = $params[ 'address' ];
+ }
+
+ $text = $address;
+ // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
+ // so, don't encode it.
+ $search = array('%40', '%2C');
+ $replace = array('@', ',');
+ $mail_parms = array();
+ foreach ($params as $var => $value) {
+ switch ($var) {
+ case 'cc':
+ case 'bcc':
+ case 'followupto':
+ if (!empty($value)) {
+ $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
+ }
+ break;
+
+ case 'subject':
+ case 'newsgroups':
+ $mail_parms[] = $var . '=' . rawurlencode($value);
+ break;
+
+ case 'extra':
+ case 'text':
+ $$var = $value;
+
+ default:
+ }
+ }
+
+ if ($mail_parms) {
+ $address .= '?' . join('&', $mail_parms);
+ }
+
+ $encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ];
+ if (!isset($_allowed_encoding[ $encode ])) {
+ trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
+ E_USER_WARNING);
+
+ return;
+ }
+ // FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
+ if ($encode == 'javascript') {
+ $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
+
+ $js_encode = '';
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) {
+ $js_encode .= '%' . bin2hex($string[ $x ]);
+ }
+
+ return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
+ } elseif ($encode == 'javascript_charcode') {
+ $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
+
+ for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
+ $ord[] = ord($string[ $x ]);
+ }
+
+ $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n" . "{document.write(String.fromCharCode(" .
+ implode(',', $ord) . "))" . "}\n" . "</script>\n";
+
+ return $_ret;
+ } elseif ($encode == 'hex') {
+ preg_match('!^(.*)(\?.*)$!', $address, $match);
+ if (!empty($match[ 2 ])) {
+ trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
+
+ return;
+ }
+ $address_encode = '';
+ for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) {
+ if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) {
+ $address_encode .= '%' . bin2hex($address[ $x ]);
+ } else {
+ $address_encode .= $address[ $x ];
+ }
+ }
+ $text_encode = '';
+ for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) {
+ $text_encode .= '&#x' . bin2hex($text[ $x ]) . ';';
+ }
+
+ $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
+
+ return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
+ } else {
+ // no encoding
+ return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/function.math.php b/vendor/smarty/smarty/libs/plugins/function.math.php
new file mode 100644
index 000000000..fc5db335c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/function.math.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Smarty plugin
+ * This plugin is only for Smarty2 BC
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {math} function plugin
+ * Type: function<br>
+ * Name: math<br>
+ * Purpose: handle math computations in template
+ *
+ * @link http://www.smarty.net/manual/en/language.function.math.php {math}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_math($params, $template)
+{
+ static $_allowed_funcs =
+ array('int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
+ 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true, 'rand' => true,
+ 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true);
+ // be sure equation parameter is present
+ if (empty($params[ 'equation' ])) {
+ trigger_error("math: missing equation parameter", E_USER_WARNING);
+
+ return;
+ }
+
+ $equation = $params[ 'equation' ];
+
+ // make sure parenthesis are balanced
+ if (substr_count($equation, "(") != substr_count($equation, ")")) {
+ trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
+
+ return;
+ }
+
+ // disallow backticks
+ if (strpos($equation, '`') !== false) {
+ trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
+
+ return;
+ }
+
+ // also disallow dollar signs
+ if (strpos($equation, '$') !== false) {
+ trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
+
+ return;
+ }
+
+ foreach ($params as $key => $val) {
+ if ($key != "equation" && $key != "format" && $key != "assign") {
+ // make sure value is not empty
+ if (strlen($val) == 0) {
+ trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
+
+ return;
+ }
+ if (!is_numeric($val)) {
+ trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
+
+ return;
+ }
+ }
+ }
+
+ // match all vars in equation, make sure all are passed
+ preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
+
+ foreach ($match[ 1 ] as $curr_var) {
+ if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) {
+ trigger_error("math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", E_USER_WARNING);
+
+ return;
+ }
+ }
+
+ foreach ($params as $key => $val) {
+ if ($key != "equation" && $key != "format" && $key != "assign") {
+ $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+ }
+ }
+ $smarty_math_result = null;
+ eval("\$smarty_math_result = " . $equation . ";");
+
+ if (empty($params[ 'format' ])) {
+ if (empty($params[ 'assign' ])) {
+ return $smarty_math_result;
+ } else {
+ $template->assign($params[ 'assign' ], $smarty_math_result);
+ }
+ } else {
+ if (empty($params[ 'assign' ])) {
+ printf($params[ 'format' ], $smarty_math_result);
+ } else {
+ $template->assign($params[ 'assign' ], sprintf($params[ 'format' ], $smarty_math_result));
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php b/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
new file mode 100644
index 000000000..6513a0495
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty capitalize modifier plugin
+ * Type: modifier<br>
+ * Name: capitalize<br>
+ * Purpose: capitalize words in the string
+ * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
+ *
+ * @param string $string string to capitalize
+ * @param boolean $uc_digits also capitalize "x123" to "X123"
+ * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
+ *
+ * @return string capitalized string
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Rodney Rehm
+ */
+function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
+{
+ if (Smarty::$_MBSTRING) {
+ if ($lc_rest) {
+ // uppercase (including hyphenated words)
+ $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
+ } else {
+ // uppercase word breaks
+ $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
+ 'smarty_mod_cap_mbconvert_cb', $string);
+ }
+ // check uc_digits case
+ if (!$uc_digits) {
+ if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches,
+ PREG_OFFSET_CAPTURE)) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace($upper_string, mb_strtolower($match[ 0 ], Smarty::$_CHARSET), $match[ 1 ],
+ strlen($match[ 0 ]));
+ }
+ }
+ }
+ $upper_string =
+ preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb',
+ $upper_string);
+ return $upper_string;
+ }
+
+ // lowercase first
+ if ($lc_rest) {
+ $string = strtolower($string);
+ }
+ // uppercase (including hyphenated words)
+ $upper_string =
+ preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb',
+ $string);
+ // check uc_digits case
+ if (!$uc_digits) {
+ if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches,
+ PREG_OFFSET_CAPTURE)) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ]));
+ }
+ }
+ }
+ $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb',
+ $upper_string);
+ return $upper_string;
+}
+
+/*
+ *
+ * Bug: create_function() use exhausts memory when used in long loops
+ * Fix: use declared functions for callbacks instead of using create_function()
+ * Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3
+ *
+ * @author Kyle Renfrow
+ */
+function smarty_mod_cap_mbconvert_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
+}
+
+function smarty_mod_cap_mbconvert2_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
+}
+
+function smarty_mod_cap_ucfirst_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ]));
+}
+
+function smarty_mod_cap_ucfirst2_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ]));
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.date_format.php b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
new file mode 100644
index 000000000..bfe363c08
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty date_format modifier plugin
+ * Type: modifier<br>
+ * Name: date_format<br>
+ * Purpose: format datestamps via strftime<br>
+ * Input:<br>
+ * - string: input date string
+ * - format: strftime format for output
+ * - default_date: default date if $string is empty
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input date string
+ * @param string $format strftime format for output
+ * @param string $default_date default date if $string is empty
+ * @param string $formatter either 'strftime' or 'auto'
+ *
+ * @return string |void
+ * @uses smarty_make_timestamp()
+ */
+function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
+{
+ if ($format === null) {
+ $format = Smarty::$_DATE_FORMAT;
+ }
+ /**
+ * require_once the {@link shared.make_timestamp.php} plugin
+ */
+ if (!is_callable('smarty_make_timestamp')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+ }
+ if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') {
+ $timestamp = smarty_make_timestamp($string);
+ } elseif ($default_date != '') {
+ $timestamp = smarty_make_timestamp($default_date);
+ } else {
+ return;
+ }
+ if ($formatter == 'strftime' || ($formatter == 'auto' && strpos($format, '%') !== false)) {
+ if (Smarty::$_IS_WINDOWS) {
+ $_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
+ $_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
+ if (strpos($format, '%e') !== false) {
+ $_win_from[] = '%e';
+ $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
+ }
+ if (strpos($format, '%l') !== false) {
+ $_win_from[] = '%l';
+ $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
+ }
+ $format = str_replace($_win_from, $_win_to, $format);
+ }
+
+ return strftime($format, $timestamp);
+ } else {
+ return date($format, $timestamp);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php b/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
new file mode 100644
index 000000000..34f85dcd5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
@@ -0,0 +1,112 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage Debug
+ */
+
+/**
+ * Smarty debug_print_var modifier plugin
+ * Type: modifier<br>
+ * Name: debug_print_var<br>
+ * Purpose: formats variable contents for display in the console
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array|object $var variable to be formatted
+ * @param int $max maximum recursion depth if $var is an array or object
+ * @param int $length maximum string length if $var is a string
+ * @param int $depth actual recursion depth
+ * @param array $objects processed objects in actual depth to prevent recursive object processing
+ *
+ * @return string
+ */
+function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
+{
+ $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
+ switch (gettype($var)) {
+ case 'array' :
+ $results = '<b>Array (' . count($var) . ')</b>';
+ if ($depth == $max) {
+ break;
+ }
+ foreach ($var as $curr_key => $curr_val) {
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b>' . strtr($curr_key, $_replace) .
+ '</b> =&gt; ' .
+ smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
+ $depth --;
+ }
+ break;
+
+ case 'object' :
+ $object_vars = get_object_vars($var);
+ $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
+ if (in_array($var, $objects)) {
+ $results .= ' called recursive';
+ break;
+ }
+ if ($depth == $max) {
+ break;
+ }
+ $objects[] = $var;
+ foreach ($object_vars as $curr_key => $curr_val) {
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2) . '<b> -&gt;' . strtr($curr_key, $_replace) .
+ '</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects);
+ $depth --;
+ }
+ break;
+
+ case 'boolean' :
+ case 'NULL' :
+ case 'resource' :
+ if (true === $var) {
+ $results = 'true';
+ } elseif (false === $var) {
+ $results = 'false';
+ } elseif (null === $var) {
+ $results = 'null';
+ } else {
+ $results = htmlspecialchars((string) $var);
+ }
+ $results = '<i>' . $results . '</i>';
+ break;
+
+ case 'integer' :
+ case 'float' :
+ $results = htmlspecialchars((string) $var);
+ break;
+
+ case 'string' :
+ $results = strtr($var, $_replace);
+ if (Smarty::$_MBSTRING) {
+ if (mb_strlen($var, Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...';
+ }
+ } else {
+ if (isset($var[ $length ])) {
+ $results = substr($var, 0, $length - 3) . '...';
+ }
+ }
+
+ $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET);
+ break;
+
+ case 'unknown type' :
+ default :
+ $results = strtr((string) $var, $_replace);
+ if (Smarty::$_MBSTRING) {
+ if (mb_strlen($results, Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...';
+ }
+ } else {
+ if (strlen($results) > $length) {
+ $results = substr($results, 0, $length - 3) . '...';
+ }
+ }
+
+ $results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET);
+ }
+
+ return $results;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.escape.php b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
new file mode 100644
index 000000000..9c247b933
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.escape.php
@@ -0,0 +1,207 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty escape modifier plugin
+ * Type: modifier<br>
+ * Name: escape<br>
+ * Purpose: escape string for output
+ *
+ * @link http://www.smarty.net/docs/en/language.modifier.escape
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param string $esc_type escape type
+ * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
+ * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
+ *
+ * @return string escaped input string
+ */
+function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
+{
+ static $_double_encode = null;
+ if ($_double_encode === null) {
+ $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
+ }
+
+ if (!$char_set) {
+ $char_set = Smarty::$_CHARSET;
+ }
+
+ switch ($esc_type) {
+ case 'html':
+ if ($_double_encode) {
+ // php >=5.3.2 - go native
+ return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+ } else {
+ if ($double_encode) {
+ // php <5.2.3 - only handle double encoding
+ return htmlspecialchars($string, ENT_QUOTES, $char_set);
+ } else {
+ // php <5.2.3 - prevent double encoding
+ $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+ $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
+ $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+
+ return $string;
+ }
+ }
+
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ // mb_convert_encoding ignores htmlspecialchars()
+ if ($_double_encode) {
+ // php >=5.3.2 - go native
+ $string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+ } else {
+ if ($double_encode) {
+ // php <5.2.3 - only handle double encoding
+ $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
+ } else {
+ // php <5.2.3 - prevent double encoding
+ $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+ $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
+ $string =
+ str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+
+ return $string;
+ }
+ }
+
+ // htmlentities() won't convert everything, so use mb_convert_encoding
+ return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set);
+ }
+
+ // no MBString fallback
+ if ($_double_encode) {
+ return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
+ } else {
+ if ($double_encode) {
+ return htmlentities($string, ENT_QUOTES, $char_set);
+ } else {
+ $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+ $string = htmlentities($string, ENT_QUOTES, $char_set);
+ $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+
+ return $string;
+ }
+ }
+
+ case 'url':
+ return rawurlencode($string);
+
+ case 'urlpathinfo':
+ return str_replace('%2F', '/', rawurlencode($string));
+
+ case 'quotes':
+ // escape unescaped single quotes
+ return preg_replace("%(?<!\\\\)'%", "\\'", $string);
+
+ case 'hex':
+ // escape every byte into hex
+ // Note that the UTF-8 encoded character ä will be represented as %c3%a4
+ $return = '';
+ $_length = strlen($string);
+ for ($x = 0; $x < $_length; $x ++) {
+ $return .= '%' . bin2hex($string[ $x ]);
+ }
+
+ return $return;
+
+ case 'hexentity':
+ $return = '';
+ if (Smarty::$_MBSTRING) {
+ if (!is_callable('smarty_mb_to_unicode')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ }
+ $return = '';
+ foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
+ $return .= '&#x' . strtoupper(dechex($unicode)) . ';';
+ }
+
+ return $return;
+ }
+ // no MBString fallback
+ $_length = strlen($string);
+ for ($x = 0; $x < $_length; $x ++) {
+ $return .= '&#x' . bin2hex($string[ $x ]) . ';';
+ }
+
+ return $return;
+
+ case 'decentity':
+ $return = '';
+ if (Smarty::$_MBSTRING) {
+ if (!is_callable('smarty_mb_to_unicode')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ }
+ $return = '';
+ foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
+ $return .= '&#' . $unicode . ';';
+ }
+
+ return $return;
+ }
+ // no MBString fallback
+ $_length = strlen($string);
+ for ($x = 0; $x < $_length; $x ++) {
+ $return .= '&#' . ord($string[ $x ]) . ';';
+ }
+
+ return $return;
+
+ case 'javascript':
+ // escape quotes and backslashes, newlines, etc.
+ return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n',
+ '</' => '<\/'));
+
+ case 'mail':
+ if (Smarty::$_MBSTRING) {
+ if (!is_callable('smarty_mb_str_replace')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+ }
+ return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
+ }
+ // no MBString fallback
+ return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
+
+ case 'nonstd':
+ // escape non-standard chars, such as ms document quotes
+ $return = '';
+ if (Smarty::$_MBSTRING) {
+ if (!is_callable('smarty_mb_to_unicode')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+ }
+ foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
+ if ($unicode >= 126) {
+ $return .= '&#' . $unicode . ';';
+ } else {
+ $return .= chr($unicode);
+ }
+ }
+
+ return $return;
+ }
+
+ $_length = strlen($string);
+ for ($_i = 0; $_i < $_length; $_i ++) {
+ $_ord = ord(substr($string, $_i, 1));
+ // non-standard char, escape it
+ if ($_ord >= 126) {
+ $return .= '&#' . $_ord . ';';
+ } else {
+ $return .= substr($string, $_i, 1);
+ }
+ }
+
+ return $return;
+
+ default:
+ return $string;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php b/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
new file mode 100644
index 000000000..85f41fdda
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty regex_replace modifier plugin
+ * Type: modifier<br>
+ * Name: regex_replace<br>
+ * Purpose: regular expression search/replace
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
+ * regex_replace (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param string|array $search regular expression(s) to search for
+ * @param string|array $replace string(s) that should be replaced
+ * @param int $limit the maximum number of replacements
+ *
+ * @return string
+ */
+function smarty_modifier_regex_replace($string, $search, $replace, $limit = - 1)
+{
+ if (is_array($search)) {
+ foreach ($search as $idx => $s) {
+ $search[ $idx ] = _smarty_regex_replace_check($s);
+ }
+ } else {
+ $search = _smarty_regex_replace_check($search);
+ }
+
+ return preg_replace($search, $replace, $string, $limit);
+}
+
+/**
+ * @param string $search string(s) that should be replaced
+ *
+ * @return string
+ * @ignore
+ */
+function _smarty_regex_replace_check($search)
+{
+ // null-byte injection detection
+ // anything behind the first null-byte is ignored
+ if (($pos = strpos($search, "\0")) !== false) {
+ $search = substr($search, 0, $pos);
+ }
+ // remove eval-modifier from $search
+ if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) {
+ $search = substr($search, 0, - strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]);
+ }
+
+ return $search;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.replace.php b/vendor/smarty/smarty/libs/plugins/modifier.replace.php
new file mode 100644
index 000000000..9dca259d5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.replace.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty replace modifier plugin
+ * Type: modifier<br>
+ * Name: replace<br>
+ * Purpose: simple search/replace
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ *
+ * @param string $string input string
+ * @param string $search text to search for
+ * @param string $replace replacement text
+ *
+ * @return string
+ */
+function smarty_modifier_replace($string, $search, $replace)
+{
+ if (Smarty::$_MBSTRING) {
+ if (!is_callable('smarty_mb_str_replace')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+ }
+ return smarty_mb_str_replace($search, $replace, $string);
+ }
+
+ return str_replace($search, $replace, $string);
+}
diff --git a/library/Smarty/libs/plugins/modifier.spacify.php b/vendor/smarty/smarty/libs/plugins/modifier.spacify.php
index e5c41ad8b..e5c41ad8b 100644
--- a/library/Smarty/libs/plugins/modifier.spacify.php
+++ b/vendor/smarty/smarty/libs/plugins/modifier.spacify.php
diff --git a/vendor/smarty/smarty/libs/plugins/modifier.truncate.php b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
new file mode 100644
index 000000000..6fe844259
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifier.truncate.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty truncate modifier plugin
+ * Type: modifier<br>
+ * Name: truncate<br>
+ * Purpose: Truncate a string to a certain length if necessary,
+ * optionally splitting in the middle of a word, and
+ * appending the $etc string or inserting $etc into the middle.
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param integer $length length of truncated text
+ * @param string $etc end string
+ * @param boolean $break_words truncate at word boundary
+ * @param boolean $middle truncate in the middle of text
+ *
+ * @return string truncated string
+ */
+function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
+{
+ if ($length == 0) {
+ return '';
+ }
+
+ if (Smarty::$_MBSTRING) {
+ if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
+ $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
+ if (!$break_words && !$middle) {
+ $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '',
+ mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
+ }
+ if (!$middle) {
+ return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
+ }
+
+ return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc .
+ mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
+ }
+
+ return $string;
+ }
+
+ // no MBString fallback
+ if (isset($string[ $length ])) {
+ $length -= min($length, strlen($etc));
+ if (!$break_words && !$middle) {
+ $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
+ }
+ if (!$middle) {
+ return substr($string, 0, $length) . $etc;
+ }
+
+ return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
+ }
+
+ return $string;
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.cat.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
index db9d81fbf..db9d81fbf 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.cat.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
new file mode 100644
index 000000000..0a3ce257b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_characters modifier plugin
+ * Type: modifier<br>
+ * Name: count_characteres<br>
+ * Purpose: count the number of characters in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_characters($params)
+{
+ if (!isset($params[ 1 ]) || $params[ 1 ] != 'true') {
+ return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)';
+ }
+ if (Smarty::$_MBSTRING) {
+ return 'mb_strlen(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ }
+ // no MBString fallback
+ return 'strlen(' . $params[ 0 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
new file mode 100644
index 000000000..f7f447763
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_paragraphs modifier plugin
+ * Type: modifier<br>
+ * Name: count_paragraphs<br>
+ * Purpose: count the number of paragraphs in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
+ * count_paragraphs (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_paragraphs($params)
+{
+ // count \r or \n characters
+ return '(preg_match_all(\'#[\r\n]+#\', ' . $params[ 0 ] . ', $tmp)+1)';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
new file mode 100644
index 000000000..20032925e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_sentences modifier plugin
+ * Type: modifier<br>
+ * Name: count_sentences
+ * Purpose: count the number of sentences in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
+ * count_sentences (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_sentences($params)
+{
+ // find periods, question marks, exclamation marks with a word before but not after.
+ return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[ 0 ] . ', $tmp)';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
new file mode 100644
index 000000000..f20a197cd
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_words modifier plugin
+ * Type: modifier<br>
+ * Name: count_words<br>
+ * Purpose: count the number of words in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_words($params)
+{
+ if (Smarty::$_MBSTRING) {
+ // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
+ // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
+ return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' .
+ $params[ 0 ] . ', $tmp)';
+ }
+ // no MBString fallback
+ return 'str_word_count(' . $params[ 0 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
new file mode 100644
index 000000000..2c4c00a37
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty default modifier plugin
+ * Type: modifier<br>
+ * Name: default<br>
+ * Purpose: designate default value for empty variables
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_default($params)
+{
+ $output = $params[ 0 ];
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = "''";
+ }
+
+ array_shift($params);
+ foreach ($params as $param) {
+ $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)';
+ }
+
+ return $output;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
new file mode 100644
index 000000000..11565c2d9
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php
@@ -0,0 +1,115 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty escape modifier plugin
+ * Type: modifier<br>
+ * Name: escape<br>
+ * Purpose: escape string for output
+ *
+ * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ * @param $compiler
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_escape($params, $compiler)
+{
+ static $_double_encode = null;
+ if (!is_callable('smarty_literal_compiler_param')) {
+ require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
+ }
+ if ($_double_encode === null) {
+ $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
+ }
+
+ try {
+ $esc_type = smarty_literal_compiler_param($params, 1, 'html');
+ $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
+ $double_encode = smarty_literal_compiler_param($params, 3, true);
+
+ if (!$char_set) {
+ $char_set = Smarty::$_CHARSET;
+ }
+
+ switch ($esc_type) {
+ case 'html':
+ if ($_double_encode) {
+ return 'htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
+ var_export($double_encode, true) . ')';
+ } elseif ($double_encode) {
+ return 'htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
+ } else {
+ // fall back to modifier.escape.php
+ }
+
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ if ($_double_encode) {
+ // php >=5.2.3 - go native
+ return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' .
+ var_export($char_set, true) . ', ' . var_export($double_encode, true) .
+ '), "HTML-ENTITIES", ' . var_export($char_set, true) . ')';
+ } elseif ($double_encode) {
+ // php <5.2.3 - only handle double encoding
+ return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' .
+ var_export($char_set, true) . '), "HTML-ENTITIES", ' . var_export($char_set, true) . ')';
+ } else {
+ // fall back to modifier.escape.php
+ }
+ }
+
+ // no MBString fallback
+ if ($_double_encode) {
+ // php >=5.2.3 - go native
+ return 'htmlentities(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' .
+ var_export($double_encode, true) . ')';
+ } elseif ($double_encode) {
+ // php <5.2.3 - only handle double encoding
+ return 'htmlentities(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')';
+ } else {
+ // fall back to modifier.escape.php
+ }
+
+ case 'url':
+ return 'rawurlencode(' . $params[ 0 ] . ')';
+
+ case 'urlpathinfo':
+ return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))';
+
+ case 'quotes':
+ // escape unescaped single quotes
+ return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')';
+
+ case 'javascript':
+ // escape quotes and backslashes, newlines, etc.
+ return 'strtr(' . $params[ 0 ] .
+ ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
+ }
+ }
+ catch (SmartyException $e) {
+ // pass through to regular plugin fallback
+ }
+
+ // could not optimize |escape call, so fallback to regular plugin
+ if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'modifier.escape.php';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] =
+ 'smarty_modifier_escape';
+ } else {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'modifier.escape.php';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] =
+ 'smarty_modifier_escape';
+ }
+
+ return 'smarty_modifier_escape(' . join(', ', $params) . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
new file mode 100644
index 000000000..e25a95749
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty from_charset modifier plugin
+ * Type: modifier<br>
+ * Name: from_charset<br>
+ * Purpose: convert character encoding from $charset to internal encoding
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_from_charset($params)
+{
+ if (!Smarty::$_MBSTRING) {
+ // FIXME: (rodneyrehm) shouldn't this throw an error?
+ return $params[ 0 ];
+ }
+
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = '"ISO-8859-1"';
+ }
+
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
new file mode 100644
index 000000000..851f18448
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty indent modifier plugin
+ * Type: modifier<br>
+ * Name: indent<br>
+ * Purpose: indent lines of text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_indent($params)
+{
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 4;
+ }
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = "' '";
+ }
+
+ return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
new file mode 100644
index 000000000..a335eff7f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty lower modifier plugin
+ * Type: modifier<br>
+ * Name: lower<br>
+ * Purpose: convert string to lowercase
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_lower($params)
+{
+ if (Smarty::$_MBSTRING) {
+ return 'mb_strtolower(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ }
+ // no MBString fallback
+ return 'strtolower(' . $params[ 0 ] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.noprint.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
index 4906908b4..4906908b4 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.noprint.php
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
new file mode 100644
index 000000000..bcf9883db
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty string_format modifier plugin
+ * Type: modifier<br>
+ * Name: string_format<br>
+ * Purpose: format strings via sprintf
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_string_format($params)
+{
+ return 'sprintf(' . $params[ 1 ] . ',' . $params[ 0 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
new file mode 100644
index 000000000..8173eed8f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty strip modifier plugin
+ * Type: modifier<br>
+ * Name: strip<br>
+ * Purpose: Replace all repeated spaces, newlines, tabs
+ * with a single space or supplied replacement string.<br>
+ * Example: {$var|strip} {$var|strip:"&nbsp;"}<br>
+ * Date: September 25th, 2002
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_strip($params)
+{
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = "' '";
+ }
+
+ return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
new file mode 100644
index 000000000..e56bf9315
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty strip_tags modifier plugin
+ * Type: modifier<br>
+ * Name: strip_tags<br>
+ * Purpose: strip html tags from text
+ *
+ * @link http://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_strip_tags($params)
+{
+ if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') == 'true') {
+ return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
+ } else {
+ return 'strip_tags(' . $params[ 0 ] . ')';
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
new file mode 100644
index 000000000..fea8d8273
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty to_charset modifier plugin
+ * Type: modifier<br>
+ * Name: to_charset<br>
+ * Purpose: convert character encoding from internal encoding to $charset
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_to_charset($params)
+{
+ if (!Smarty::$_MBSTRING) {
+ // FIXME: (rodneyrehm) shouldn't this throw an error?
+ return $params[ 0 ];
+ }
+
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = '"ISO-8859-1"';
+ }
+
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 1 ] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
new file mode 100644
index 000000000..a3409bc73
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty unescape modifier plugin
+ * Type: modifier<br>
+ * Name: unescape<br>
+ * Purpose: unescape html entities
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_unescape($params)
+{
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 'html';
+ }
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
+ } else {
+ $params[ 2 ] = "'" . $params[ 2 ] . "'";
+ }
+
+ switch (trim($params[ 1 ], '"\'')) {
+ case 'entity':
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'HTML-ENTITIES\')';
+ }
+
+ return 'html_entity_decode(' . $params[ 0 ] . ', ENT_NOQUOTES, ' . $params[ 2 ] . ')';
+
+ case 'html':
+ return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)';
+
+ case 'url':
+ return 'rawurldecode(' . $params[ 0 ] . ')';
+
+ default:
+ return $params[ 0 ];
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
new file mode 100644
index 000000000..a083c4f7e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty upper modifier plugin
+ * Type: modifier<br>
+ * Name: lower<br>
+ * Purpose: convert string to uppercase
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_upper($params)
+{
+ if (Smarty::$_MBSTRING) {
+ return 'mb_strtoupper(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ }
+ // no MBString fallback
+ return 'strtoupper(' . $params[ 0 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php b/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
new file mode 100644
index 000000000..91849738e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty wordwrap modifier plugin
+ * Type: modifier<br>
+ * Name: wordwrap<br>
+ * Purpose: wrap a string of text at a given length
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ * @param $compiler
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_wordwrap($params, $compiler)
+{
+ if (!isset($params[ 1 ])) {
+ $params[ 1 ] = 80;
+ }
+ if (!isset($params[ 2 ])) {
+ $params[ 2 ] = '"\n"';
+ }
+ if (!isset($params[ 3 ])) {
+ $params[ 3 ] = 'false';
+ }
+ $function = 'wordwrap';
+ if (Smarty::$_MBSTRING) {
+ if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
+ $compiler->template->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] =
+ 'smarty_mb_wordwrap';
+ } else {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] =
+ SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] =
+ 'smarty_mb_wordwrap';
+ }
+ $function = 'smarty_mb_wordwrap';
+ }
+
+ return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')';
+}
diff --git a/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php b/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
new file mode 100644
index 000000000..1a67123a4
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFilter
+ */
+
+/**
+ * Smarty trimwhitespace outputfilter plugin
+ * Trim unnecessary whitespace from HTML markup.
+ *
+ * @author Rodney Rehm
+ *
+ * @param string $source input string
+ *
+ * @return string filtered output
+ * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
+ */
+function smarty_outputfilter_trimwhitespace($source)
+{
+ $store = array();
+ $_store = 0;
+ $_offset = 0;
+
+ // Unify Line-Breaks to \n
+ $source = preg_replace("/\015\012|\015|\012/", "\n", $source);
+
+ // capture Internet Explorer and KnockoutJS Conditional Comments
+ if (preg_match_all('#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', $source, $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+
+ $_offset += $_length - strlen($replace);
+ $_store ++;
+ }
+ }
+
+ // Strip all HTML-Comments
+ // yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124
+ $source = preg_replace('#<!--.*?-->#ms', '', $source);
+
+ // capture html elements not to be messed with
+ $_offset = 0;
+ if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
+ $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+
+ $_offset += $_length - strlen($replace);
+ $_store ++;
+ }
+ }
+
+ $expressions = array(// replace multiple spaces between tags by a single space
+ // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
+ '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ '#^\s+<#Ss' => '<', '#>\s+$#Ss' => '>',);
+
+ $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ // $source = trim( $source );
+
+ $_offset = 0;
+ if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
+
+ $_offset += strlen($replace) - $_length;
+ $_store ++;
+ }
+ }
+
+ return $source;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php b/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
new file mode 100644
index 000000000..b68fe4b9d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * escape_special_chars common function
+ * Function: smarty_function_escape_special_chars<br>
+ * Purpose: used by other smarty functions to escape
+ * special chars except for already escaped ones
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string text that should by escaped
+ *
+ * @return string
+ */
+function smarty_function_escape_special_chars($string)
+{
+ if (!is_array($string)) {
+ if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
+ $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false);
+ } else {
+ $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+ $string = htmlspecialchars($string);
+ $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+ }
+ }
+
+ return $string;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php b/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
new file mode 100644
index 000000000..8a3711d30
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * evaluate compiler parameter
+ *
+ * @param array $params parameter array as given to the compiler function
+ * @param integer $index array index of the parameter to convert
+ * @param mixed $default value to be returned if the parameter is not present
+ *
+ * @return mixed evaluated value of parameter or $default
+ * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
+ * @author Rodney Rehm
+ */
+function smarty_literal_compiler_param($params, $index, $default = null)
+{
+ // not set, go default
+ if (!isset($params[ $index ])) {
+ return $default;
+ }
+ // test if param is a literal
+ if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) {
+ throw new SmartyException('$param[' . $index .
+ '] is not a literal and is thus not evaluatable at compile time');
+ }
+
+ $t = null;
+ eval("\$t = " . $params[ $index ] . ";");
+
+ return $t;
+}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php b/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
new file mode 100644
index 000000000..67f862441
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * Function: smarty_make_timestamp<br>
+ * Purpose: used by other smarty functions to make a timestamp from a string.
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
+ *
+ * @return int
+ */
+function smarty_make_timestamp($string)
+{
+ if (empty($string)) {
+ // use "now":
+ return time();
+ } elseif ($string instanceof DateTime ||
+ (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
+ ) {
+ return (int) $string->format('U'); // PHP 5.2 BC
+ } elseif (strlen($string) == 14 && ctype_digit($string)) {
+ // it is mysql timestamp format of YYYYMMDDHHMMSS?
+ return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2), substr($string, 4, 2),
+ substr($string, 6, 2), substr($string, 0, 4));
+ } elseif (is_numeric($string)) {
+ // it is a numeric string, we handle it as timestamp
+ return (int) $string;
+ } else {
+ // strtotime should handle it
+ $time = strtotime($string);
+ if ($time == - 1 || $time === false) {
+ // strtotime() was not able to parse $string, use "now":
+ return time();
+ }
+
+ return $time;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php b/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
new file mode 100644
index 000000000..0c3ffe258
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+if (!function_exists('smarty_mb_str_replace')) {
+
+ /**
+ * Multibyte string replace
+ *
+ * @param string $search the string to be searched
+ * @param string $replace the replacement string
+ * @param string $subject the source string
+ * @param int &$count number of matches found
+ *
+ * @return string replaced string
+ * @author Rodney Rehm
+ */
+ function smarty_mb_str_replace($search, $replace, $subject, &$count = 0)
+ {
+ if (!is_array($search) && is_array($replace)) {
+ return false;
+ }
+ if (is_array($subject)) {
+ // call mb_replace for each single string in $subject
+ foreach ($subject as &$string) {
+ $string = smarty_mb_str_replace($search, $replace, $string, $c);
+ $count += $c;
+ }
+ } elseif (is_array($search)) {
+ if (!is_array($replace)) {
+ foreach ($search as &$string) {
+ $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
+ $count += $c;
+ }
+ } else {
+ $n = max(count($search), count($replace));
+ while ($n --) {
+ $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
+ $count += $c;
+ next($search);
+ next($replace);
+ }
+ }
+ } else {
+ $parts = mb_split(preg_quote($search), $subject);
+ $count = count($parts) - 1;
+ $subject = implode($replace, $parts);
+ }
+
+ return $subject;
+ }
+}
diff --git a/library/Smarty/libs/plugins/shared.mb_unicode.php b/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
index 0f790b56a..0f790b56a 100644
--- a/library/Smarty/libs/plugins/shared.mb_unicode.php
+++ b/vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php
diff --git a/vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php b/vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php
new file mode 100644
index 000000000..21632a1c0
--- /dev/null
+++ b/vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+if (!function_exists('smarty_mb_wordwrap')) {
+
+ /**
+ * Wrap a string to a given number of characters
+ *
+ * @link http://php.net/manual/en/function.wordwrap.php for similarity
+ *
+ * @param string $str the string to wrap
+ * @param int $width the width of the output
+ * @param string $break the character used to break the line
+ * @param boolean $cut ignored parameter, just for the sake of
+ *
+ * @return string wrapped string
+ * @author Rodney Rehm
+ */
+ function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
+ {
+ // break words into tokens using white space as a delimiter
+ $tokens =
+ preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ $length = 0;
+ $t = '';
+ $_previous = false;
+ $_space = false;
+
+ foreach ($tokens as $_token) {
+ $token_length = mb_strlen($_token, Smarty::$_CHARSET);
+ $_tokens = array($_token);
+ if ($token_length > $width) {
+ if ($cut) {
+ $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1,
+ PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ }
+ }
+
+ foreach ($_tokens as $token) {
+ $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
+ $token_length = mb_strlen($token, Smarty::$_CHARSET);
+ $length += $token_length;
+
+ if ($length > $width) {
+ // remove space before inserted break
+ if ($_previous) {
+ $t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
+ }
+
+ if (!$_space) {
+ // add the break before the token
+ if (!empty($t)) {
+ $t .= $break;
+ }
+ $length = $token_length;
+ }
+ } elseif ($token == "\n") {
+ // hard break must reset counters
+ $_previous = 0;
+ $length = 0;
+ }
+ $_previous = $_space;
+ // add the token
+ $t .= $token;
+ }
+ }
+
+ return $t;
+ }
+}
diff --git a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php b/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
index aecd1e7e7..aecd1e7e7 100644
--- a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php
+++ b/vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
new file mode 100644
index 000000000..2a4552cb2
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php
@@ -0,0 +1,220 @@
+<?php
+/**
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+
+/**
+ * Cache Handler API
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Rodney Rehm
+ */
+abstract class Smarty_CacheResource
+{
+ /**
+ * resource types provided by the core
+ *
+ * @var array
+ */
+ protected static $sysplugins = array('file' => 'smarty_internal_cacheresource_file.php',);
+
+ /**
+ * populate Cached Object with meta data from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ abstract public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return void
+ */
+ abstract public function populateTimestamp(Smarty_Template_Cached $cached);
+
+ /**
+ * Read the cached template and process header
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null,
+ $update = false);
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ abstract function readCachedContent(Smarty_Internal_Template $_template);
+
+ /**
+ * Return cached content
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return null|string
+ */
+ public function getCachedContent(Smarty_Internal_Template $_template)
+ {
+ if ($_template->cached->handler->process($_template)) {
+ ob_start();
+ $unifunc = $_template->cached->unifunc;
+ $unifunc($_template);
+ return ob_get_clean();
+ }
+
+ return null;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clearAll(Smarty $smarty, $exp_time = null);
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+
+ /**
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool|null
+ */
+ public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // theoretically locking_timeout should be checked against time_limit (max_execution_time)
+ $start = microtime(true);
+ $hadLock = null;
+ while ($this->hasLock($smarty, $cached)) {
+ $hadLock = true;
+ if (microtime(true) - $start > $smarty->locking_timeout) {
+ // abort waiting for lock release
+ return false;
+ }
+ sleep(1);
+ }
+
+ return $hadLock;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // check if lock exists
+ return false;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // create lock
+ return true;
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // release lock
+ return true;
+ }
+
+ /**
+ * Load Cache Resource Handler
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $type name of the cache resource
+ *
+ * @throws SmartyException
+ * @return Smarty_CacheResource Cache Resource Handler
+ */
+ public static function load(Smarty $smarty, $type = null)
+ {
+ if (!isset($type)) {
+ $type = $smarty->caching_type;
+ }
+
+ // try smarty's cache
+ if (isset($smarty->_cache[ 'cacheresource_handlers' ][ $type ])) {
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ];
+ }
+
+ // try registered resource
+ if (isset($smarty->registered_cache_resources[ $type ])) {
+ // do not cache these instances as they may vary from instance to instance
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = $smarty->registered_cache_resources[ $type ];
+ }
+ // try sysplugins dir
+ if (isset(self::$sysplugins[ $type ])) {
+ $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
+ }
+ // try plugins dir
+ $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type);
+ if ($smarty->loadPlugin($cache_resource_class)) {
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
+ }
+ // give up
+ throw new SmartyException("Unable to load cache resource '{$type}'");
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
new file mode 100644
index 000000000..8f1290e49
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
@@ -0,0 +1,275 @@
+<?php
+/**
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+
+/**
+ * Cache Handler API
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Rodney Rehm
+ */
+abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
+{
+ /**
+ * fetch cached content and its modification time from data source
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ *
+ * @return void
+ */
+ abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
+
+ /**
+ * Fetch cached content's modification timestamp from data source
+ * {@internal implementing this method is optional.
+ * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+ */
+ protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
+ {
+ return false;
+ }
+
+ /**
+ * Save content to cache
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration or null
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
+
+ /**
+ * Delete content from cache
+ *
+ * @param string|null $name template name
+ * @param string|null $cache_id cache id
+ * @param string|null $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ *
+ * @return integer number of deleted caches
+ */
+ abstract protected function delete($name, $cache_id, $compile_id, $exp_time);
+
+ /**
+ * populate Cached Object with meta data from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
+ {
+ $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
+ $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null;
+ $path = $cached->source->uid . $_cache_id . $_compile_id;
+ $cached->filepath = sha1($path);
+ if ($_template->smarty->cache_locking) {
+ $cached->lock_id = sha1('lock.' . $path);
+ }
+ $this->populateTimestamp($cached);
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Cached $cached)
+ {
+ $mtime =
+ $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
+ if ($mtime !== null) {
+ $cached->timestamp = $mtime;
+ $cached->exists = !!$cached->timestamp;
+
+ return;
+ }
+ $timestamp = null;
+ $this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $cached->content,
+ $timestamp);
+ $cached->timestamp = isset($timestamp) ? $timestamp : false;
+ $cached->exists = !!$cached->timestamp;
+ }
+
+ /**
+ * Read the cached template and process the header
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl, Smarty_Template_Cached $cached = null,
+ $update = false)
+ {
+ if (!$cached) {
+ $cached = $_smarty_tpl->cached;
+ }
+ $content = $cached->content ? $cached->content : null;
+ $timestamp = $cached->timestamp ? $cached->timestamp : null;
+ if ($content === null || !$timestamp) {
+ $this->fetch($_smarty_tpl->cached->filepath, $_smarty_tpl->source->name, $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id, $content, $timestamp);
+ }
+ if (isset($content)) {
+ eval("?>" . $content);
+ $cached->content = null;
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+ {
+ return $this->save($_template->cached->filepath, $_template->source->name, $_template->cache_id,
+ $_template->compile_id, $_template->cache_lifetime, $content);
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string|boolean content
+ */
+ public function readCachedContent(Smarty_Internal_Template $_template)
+ {
+ $content = $_template->cached->content ? $_template->cached->content : null;
+ $timestamp = null;
+ if ($content === null) {
+ $timestamp = null;
+ $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id,
+ $_template->compile_id, $content, $timestamp);
+ }
+ if (isset($content)) {
+ return $content;
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ return $this->delete(null, null, null, $exp_time);
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $cache_name = null;
+
+ if (isset($resource_name)) {
+ $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
+ if ($source->exists) {
+ $cache_name = $source->name;
+ } else {
+ return 0;
+ }
+ }
+
+ return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $id = $cached->lock_id;
+ $name = $cached->source->name . '.lock';
+
+ $mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id);
+ if ($mtime === null) {
+ $this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime);
+ }
+ return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = true;
+ $id = $cached->lock_id;
+ $name = $cached->source->name . '.lock';
+ $this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, '');
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = false;
+ $name = $cached->source->name . '.lock';
+ $this->delete($name, $cached->cache_id, $cached->compile_id, null);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
new file mode 100644
index 000000000..bab1b5c09
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
@@ -0,0 +1,507 @@
+<?php
+/**
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+
+/**
+ * Smarty Cache Handler Base for Key/Value Storage Implementations
+ * This class implements the functionality required to use simple key/value stores
+ * for hierarchical cache groups. key/value stores like memcache or APC do not support
+ * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
+ * is no problem to filesystem and RDBMS implementations.
+ * This implementation is based on the concept of invalidation. While one specific cache
+ * can be identified and cleared, any range of caches cannot be identified. For this reason
+ * each level of the cache group hierarchy can have its own value in the store. These values
+ * are nothing but microtimes, telling us when a particular cache group was cleared for the
+ * last time. These keys are evaluated for every cache read to determine if the cache has
+ * been invalidated since it was created and should hence be treated as inexistent.
+ * Although deep hierarchies are possible, they are not recommended. Try to keep your
+ * cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
+ * »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
+ * cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever«
+ * consider using »a|b|c|$page-$items-$whatever« instead.
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Rodney Rehm
+ */
+abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
+{
+ /**
+ * cache for contents
+ *
+ * @var array
+ */
+ protected $contents = array();
+
+ /**
+ * cache for timestamps
+ *
+ * @var array
+ */
+ protected $timestamps = array();
+
+ /**
+ * populate Cached Object with meta data from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
+ {
+ $cached->filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' .
+ $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
+
+ $this->populateTimestamp($cached);
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Cached $cached)
+ {
+ if (!$this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $content,
+ $timestamp, $cached->source->uid)
+ ) {
+ return;
+ }
+ $cached->content = $content;
+ $cached->timestamp = (int) $timestamp;
+ $cached->exists = !!$cached->timestamp;
+ }
+
+ /**
+ * Read the cached template and process the header
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl, Smarty_Template_Cached $cached = null,
+ $update = false)
+ {
+ if (!$cached) {
+ $cached = $_smarty_tpl->cached;
+ }
+ $content = $cached->content ? $cached->content : null;
+ $timestamp = $cached->timestamp ? $cached->timestamp : null;
+ if ($content === null || !$timestamp) {
+ if (!$this->fetch($_smarty_tpl->cached->filepath, $_smarty_tpl->source->name, $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id, $content, $timestamp, $_smarty_tpl->source->uid)
+ ) {
+ return false;
+ }
+ }
+ if (isset($content)) {
+ eval("?>" . $content);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+ {
+ $this->addMetaTimestamp($content);
+
+ return $this->write(array($_template->cached->filepath => $content), $_template->cache_lifetime);
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function readCachedContent(Smarty_Internal_Template $_template)
+ {
+ $content = $_template->cached->content ? $_template->cached->content : null;
+ $timestamp = null;
+ if ($content === null) {
+ if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id,
+ $_template->compile_id, $content, $timestamp, $_template->source->uid)
+ ) {
+ return false;
+ }
+ }
+ if (isset($content)) {
+ return $content;
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ * {@internal the $exp_time argument is ignored altogether }}
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time [being ignored]
+ *
+ * @return integer number of cache files deleted [always -1]
+ * @uses purge() to clear the whole store
+ * @uses invalidate() to mark everything outdated if purge() is inapplicable
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ if (!$this->purge()) {
+ $this->invalidate(null);
+ }
+ return - 1;
+ }
+
+ /**
+ * Empty cache for a specific template
+ * {@internal the $exp_time argument is ignored altogether}}
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time [being ignored]
+ *
+ * @return integer number of cache files deleted [always -1]
+ * @uses buildCachedFilepath() to generate the CacheID
+ * @uses invalidate() to mark CacheIDs parent chain as outdated
+ * @uses delete() to remove CacheID from cache
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $uid = $this->getTemplateUid($smarty, $resource_name);
+ $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' .
+ $this->sanitize($compile_id);
+ $this->delete(array($cid));
+ $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
+ return - 1;
+ }
+
+ /**
+ * Get template's unique ID
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ *
+ * @return string filepath of cache file
+ * @throws \SmartyException
+ *
+ */
+ protected function getTemplateUid(Smarty $smarty, $resource_name)
+ {
+ if (isset($resource_name)) {
+ $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
+ if ($source->exists) {
+ return $source->uid;
+ }
+ }
+ return '';
+ }
+
+ /**
+ * Sanitize CacheID components
+ *
+ * @param string $string CacheID component to sanitize
+ *
+ * @return string sanitized CacheID component
+ */
+ protected function sanitize($string)
+ {
+ $string = trim($string, '|');
+ if (!$string) {
+ return '';
+ }
+ return preg_replace('#[^\w\|]+#S', '_', $string);
+ }
+
+ /**
+ * Fetch and prepare a cache object.
+ *
+ * @param string $cid CacheID to fetch
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer &$timestamp cached timestamp (epoch)
+ * @param string $resource_uid resource's uid
+ *
+ * @return boolean success
+ */
+ protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null,
+ &$timestamp = null, $resource_uid = null)
+ {
+ $t = $this->read(array($cid));
+ $content = !empty($t[ $cid ]) ? $t[ $cid ] : null;
+ $timestamp = null;
+
+ if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
+ $invalidated =
+ $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
+ if ($invalidated > $timestamp) {
+ $timestamp = null;
+ $content = null;
+ }
+ }
+
+ return !!$content;
+ }
+
+ /**
+ * Add current microtime to the beginning of $cache_content
+ * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
+ *
+ * @param string &$content the content to be cached
+ */
+ protected function addMetaTimestamp(&$content)
+ {
+ $mt = explode(" ", microtime());
+ $ts = pack("NN", $mt[ 1 ], (int) ($mt[ 0 ] * 100000000));
+ $content = $ts . $content;
+ }
+
+ /**
+ * Extract the timestamp the $content was cached
+ *
+ * @param string &$content the cached content
+ *
+ * @return float the microtime the content was cached
+ */
+ protected function getMetaTimestamp(&$content)
+ {
+ extract(unpack('N1s/N1m/a*content', $content));
+ /**
+ * @var int $s
+ * @var int $m
+ */
+ return $s + ($m / 100000000);
+ }
+
+ /**
+ * Invalidate CacheID
+ *
+ * @param string $cid CacheID
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's uid
+ *
+ * @return void
+ */
+ protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null,
+ $resource_uid = null)
+ {
+ $now = microtime(true);
+ $key = null;
+ // invalidate everything
+ if (!$resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#ALL';
+ } // invalidate all caches by template
+ else {
+ if ($resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
+ } // invalidate all caches by cache group
+ else {
+ if (!$resource_name && $cache_id && !$compile_id) {
+ $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
+ } // invalidate all caches by compile id
+ else {
+ if (!$resource_name && !$cache_id && $compile_id) {
+ $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
+ } // invalidate by combination
+ else {
+ $key = 'IVK#CID#' . $cid;
+ }
+ }
+ }
+ }
+ $this->write(array($key => $now));
+ }
+
+ /**
+ * Determine the latest timestamp known to the invalidation chain
+ *
+ * @param string $cid CacheID to determine latest invalidation timestamp of
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return float the microtime the CacheID was invalidated
+ */
+ protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null,
+ $resource_uid = null)
+ {
+ // abort if there is no CacheID
+ if (false && !$cid) {
+ return 0;
+ }
+ // abort if there are no InvalidationKeys to check
+ if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
+ return 0;
+ }
+
+ // there are no InValidationKeys
+ if (!($values = $this->read($_cid))) {
+ return 0;
+ }
+ // make sure we're dealing with floats
+ $values = array_map('floatval', $values);
+
+ return max($values);
+ }
+
+ /**
+ * Translate a CacheID into the list of applicable InvalidationKeys.
+ * Splits "some|chain|into|an|array" into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
+ *
+ * @param string $cid CacheID to translate
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return array list of InvalidationKeys
+ * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
+ */
+ protected function listInvalidationKeys($cid, $resource_name = null, $cache_id = null, $compile_id = null,
+ $resource_uid = null)
+ {
+ $t = array('IVK#ALL');
+ $_name = $_compile = '#';
+ if ($resource_name) {
+ $_name .= $resource_uid . '#' . $this->sanitize($resource_name);
+ $t[] = 'IVK#TEMPLATE' . $_name;
+ }
+ if ($compile_id) {
+ $_compile .= $this->sanitize($compile_id);
+ $t[] = 'IVK#COMPILE' . $_compile;
+ }
+ $_name .= '#';
+ $cid = trim($cache_id, '|');
+ if (!$cid) {
+ return $t;
+ }
+ $i = 0;
+ while (true) {
+ // determine next delimiter position
+ $i = strpos($cid, '|', $i);
+ // add complete CacheID if there are no more delimiters
+ if ($i === false) {
+ $t[] = 'IVK#CACHE#' . $cid;
+ $t[] = 'IVK#CID' . $_name . $cid . $_compile;
+ $t[] = 'IVK#CID' . $_name . $_compile;
+ break;
+ }
+ $part = substr($cid, 0, $i);
+ // add slice to list
+ $t[] = 'IVK#CACHE#' . $part;
+ $t[] = 'IVK#CID' . $_name . $part . $_compile;
+ // skip past delimiter position
+ $i ++;
+ }
+
+ return $t;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $key = 'LOCK#' . $cached->filepath;
+ $data = $this->read(array($key));
+
+ return $data && time() - $data[ $key ] < $smarty->locking_timeout;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = true;
+ $key = 'LOCK#' . $cached->filepath;
+ $this->write(array($key => time()), $smarty->locking_timeout);
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = false;
+ $key = 'LOCK#' . $cached->filepath;
+ $this->delete(array($key));
+ }
+
+ /**
+ * Read values for a set of keys from cache
+ *
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
+ */
+ abstract protected function read(array $keys);
+
+ /**
+ * Save values for a set of keys to cache
+ *
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
+ * @return boolean true on success, false on failure
+ */
+ abstract protected function write(array $keys, $expire = null);
+
+ /**
+ * Remove values from cache
+ *
+ * @param array $keys list of keys to delete
+ *
+ * @return boolean true on success, false on failure
+ */
+ abstract protected function delete(array $keys);
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
new file mode 100644
index 000000000..b9f5de9a5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Smarty Plugin Data
+ * This file contains the data object
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * class for the Smarty data object
+ * The Smarty data object will hold Smarty variables in the current scope
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+class Smarty_Data extends Smarty_Internal_Data
+{
+ /**
+ * Counter
+ *
+ * @var int
+ */
+ static $count = 0;
+
+ /**
+ * Data block name
+ *
+ * @var string
+ */
+ public $dataObjectName = '';
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * create Smarty data object
+ *
+ * @param Smarty|array $_parent parent template
+ * @param Smarty|Smarty_Internal_Template $smarty global smarty instance
+ * @param string $name optional data block name
+ *
+ * @throws SmartyException
+ */
+ public function __construct($_parent = null, $smarty = null, $name = null)
+ {
+ parent::__construct();
+ self::$count ++;
+ $this->dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count);
+ $this->smarty = $smarty;
+ if (is_object($_parent)) {
+ // when object set up back pointer
+ $this->parent = $_parent;
+ } elseif (is_array($_parent)) {
+ // set up variable values
+ foreach ($_parent as $_key => $_val) {
+ $this->tpl_vars[ $_key ] = new Smarty_Variable($_val);
+ }
+ } elseif ($_parent != null) {
+ throw new SmartyException("Wrong type for template variables");
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
new file mode 100644
index 000000000..a33ad1b11
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * Smarty {block} tag class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Block
+{
+ /**
+ * Block name
+ *
+ * @var string
+ */
+ public $name = '';
+
+ /**
+ * Hide attribute
+ *
+ * @var bool
+ */
+ public $hide = false;
+
+ /**
+ * Append attribute
+ *
+ * @var bool
+ */
+ public $append = false;
+
+ /**
+ * prepend attribute
+ *
+ * @var bool
+ */
+ public $prepend = false;
+
+ /**
+ * Block calls {$smarty.block.child}
+ *
+ * @var bool
+ */
+ public $callsChild = false;
+
+ /**
+ * Inheritance child block
+ *
+ * @var Smarty_Internal_Block|null
+ */
+ public $child = null;
+
+ /**
+ * Inheritance calling parent block
+ *
+ * @var Smarty_Internal_Block|null
+ */
+ public $parent = null;
+
+ /**
+ * Inheritance Template index
+ *
+ * @var int
+ */
+ public $tplIndex = 0;
+
+ /**
+ * Smarty_Internal_Block constructor.
+ * - if outer level {block} of child template ($state == 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param string $name block name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ */
+ public function __construct($name, $tplIndex)
+ {
+ $this->name = $name;
+ $this->tplIndex = $tplIndex;
+ }
+
+ /**
+ * Compiled block code overloaded by {block} class
+ *
+ * @param \Smarty_Internal_Template $tpl
+ */
+ public function callBlock(Smarty_Internal_Template $tpl)
+ {
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
new file mode 100644
index 000000000..7df4ddffb
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -0,0 +1,220 @@
+<?php
+/**
+ * Smarty Internal Plugin CacheResource File
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * This class does contain all necessary methods for the HTML cache on file system
+ * Implements the file system as resource for the HTML cache Version ussing nocache inserts.
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
+{
+ /**
+ * populate Cached Object with meta data from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
+ {
+ $source = &$_template->source;
+ $smarty = &$_template->smarty;
+ $_compile_dir_sep = $smarty->use_sub_dirs ? $smarty->ds : '^';
+ $_filepath = sha1($source->uid . $smarty->_joined_template_dir);
+ $cached->filepath = $smarty->getCacheDir();
+ if (isset($_template->cache_id)) {
+ $cached->filepath .= preg_replace(array('![^\w|]+!', '![|]+!'), array('_', $_compile_dir_sep),
+ $_template->cache_id) . $_compile_dir_sep;
+ }
+ if (isset($_template->compile_id)) {
+ $cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep;
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . $smarty->ds . $_filepath[ 2 ] . $_filepath[ 3 ] . $smarty->ds .
+ $_filepath[ 4 ] . $_filepath[ 5 ] . $smarty->ds;
+ }
+ $cached->filepath .= $_filepath;
+ $basename = $source->handler->getBasename($source);
+ if (!empty($basename)) {
+ $cached->filepath .= '.' . $basename;
+ }
+ if ($smarty->cache_locking) {
+ $cached->lock_id = $cached->filepath . '.lock';
+ }
+ $cached->filepath .= '.php';
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ }
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Cached $cached)
+ {
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ }
+ }
+
+ /**
+ * Read the cached template and process its header
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param bool $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl, Smarty_Template_Cached $cached = null,
+ $update = false)
+ {
+ $_smarty_tpl->cached->valid = false;
+ if ($update && defined('HHVM_VERSION')) {
+ eval("?>" . file_get_contents($_smarty_tpl->cached->filepath));
+ return true;
+ } else {
+ return @include $_smarty_tpl->cached->filepath;
+ }
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+ {
+ if ($_template->smarty->ext->_writeFile->writeFile($_template->cached->filepath, $content,
+ $_template->smarty) === true
+ ) {
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($_template->cached->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($_template->cached->filepath);
+ }
+ $cached = $_template->cached;
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ public function readCachedContent(Smarty_Internal_Template $_template)
+ {
+ if (is_file($_template->cached->filepath)) {
+ return file_get_contents($_template->cached->filepath);
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ return $smarty->ext->_cacheResourceFile->clear($smarty, null, null, null, $exp_time);
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ return $smarty->ext->_cacheResourceFile->clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+ clearstatcache(true, $cached->lock_id);
+ } else {
+ clearstatcache();
+ }
+ if (is_file($cached->lock_id)) {
+ $t = filemtime($cached->lock_id);
+ return $t && (time() - $t < $smarty->locking_timeout);
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = true;
+ touch($cached->lock_id);
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = false;
+ @unlink($cached->lock_id);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
new file mode 100644
index 000000000..8539d6b2a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Append
+ * Compiles the {append} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Append Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
+{
+ /**
+ * Compiles code for the {append} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // the following must be assigned at runtime because it will be overwritten in parent class
+ $this->required_attributes = array('var', 'value');
+ $this->shorttag_order = array('var', 'value');
+ $this->optional_attributes = array('scope', 'index');
+ $this->mapCache = array();
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // map to compile assign attributes
+ if (isset($_attr[ 'index' ])) {
+ $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']';
+ unset($_attr[ 'index' ]);
+ } else {
+ $_params[ 'smarty_internal_index' ] = '[]';
+ }
+ $_new_attr = array();
+ foreach ($_attr as $key => $value) {
+ $_new_attr[] = array($key => $value);
+ }
+ // call compile assign
+ return parent::compile($_new_attr, $compiler, $_params);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
new file mode 100644
index 000000000..3bd33847b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Assign
+ * Compiles the {assign} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Assign Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('nocache', 'noscope');
+
+ /**
+ * Valid scope names
+ *
+ * @var array
+ */
+ public $valid_scopes = array('local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
+ 'root' => Smarty::SCOPE_ROOT, 'global' => Smarty::SCOPE_GLOBAL,
+ 'tpl_root' => Smarty::SCOPE_TPL_ROOT, 'smarty' => Smarty::SCOPE_SMARTY);
+
+ /**
+ * Compiles code for the {assign} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
+ $this->required_attributes = array('var', 'value');
+ $this->shorttag_order = array('var', 'value');
+ $this->optional_attributes = array('scope');
+ $this->mapCache = array();
+ $_nocache = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // nocache ?
+ if ($_var = $compiler->getId($_attr[ 'var' ])) {
+ $_var = "'{$_var}'";
+ } else {
+ $_var = $_attr[ 'var' ];
+ }
+ if ($compiler->tag_nocache || $compiler->nocache) {
+ $_nocache = true;
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'var' ]);
+ }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = - 1;
+ } else {
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+ }
+ // optional parameter
+ $_params = "";
+ if ($_nocache || $_scope) {
+ $_params .= ' ,' . var_export($_nocache, true);
+ }
+ if ($_scope) {
+ $_params .= ' ,' . $_scope;
+ }
+ if (isset($parameter[ 'smarty_internal_index' ])) {
+ $output =
+ "<?php \$_tmp_array = isset(\$_smarty_tpl->tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n";
+ $output .= "if (!is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess) {\n";
+ $output .= "settype(\$_tmp_array, 'array');\n";
+ $output .= "}\n";
+ $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n";
+ $output .= "\$_smarty_tpl->_assignInScope({$_var}, \$_tmp_array{$_params});\n?>";
+ } else {
+ $output = "<?php \$_smarty_tpl->_assignInScope({$_var}, {$_attr['value']}{$_params});\n?>";
+ }
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
new file mode 100644
index 000000000..5098d62fe
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
@@ -0,0 +1,202 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('hide', 'nocache');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('assign');
+
+ /**
+ * Saved compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * Compiles code for the {block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->_cache[ 'blockNesting' ] = 0;
+ }
+ if ($compiler->_cache[ 'blockNesting' ] == 0) {
+ // make sure that inheritance gets initialized in template code
+ $this->registerInit($compiler);
+ $this->option_flags = array('hide', 'nocache', 'append', 'prepend');
+ } else {
+ $this->option_flags = array('hide', 'nocache');
+ }
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $compiler->_cache[ 'blockNesting' ] ++;
+ $_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(rand(), true));
+ $compiler->_cache[ 'blockName' ][ $compiler->_cache[ 'blockNesting' ] ] = $_attr[ 'name' ];
+ $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ] = $_className;
+ $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ] = array();
+ $compiler->_cache[ 'blockParams' ][ 1 ][ 'subBlocks' ][ trim($_attr[ 'name' ], '"\'') ][] = $_className;
+ $this->openTag($compiler, 'block', array($_attr, $compiler->nocache, $compiler->parser->current_buffer,
+ $compiler->template->compiled->has_nocache_code,
+ $compiler->template->caching));
+ // must whole block be nocache ?
+ if ($compiler->tag_nocache) {
+ $i = 0;
+ }
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ // $compiler->suppressNocacheProcessing = true;
+ if ($_attr[ 'nocache' ] === true) {
+ //$compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->taglineno);
+ }
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $compiler->template->compiled->has_nocache_code = false;
+ $compiler->suppressNocacheProcessing = true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile BlockClose Class
+ *
+ */
+class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Compiles code for the {/block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block'));
+ // init block parameter
+ $_block = $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ];
+ unset($compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]);
+ $_name = $_attr[ 'name' ];
+ $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
+ unset($_attr[ 'assign' ], $_attr[ 'name' ]);
+ foreach ($_attr as $name => $stat) {
+ if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat != 'false')) {
+ $_block[ $name ] = 'true';
+ }
+ }
+ $_className = $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ];
+ // get compiled block code
+ $_functionCode = $compiler->parser->current_buffer;
+ // setup buffer for template function code
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+
+ $output = "<?php\n";
+ $output .= "/* {block {$_name}} */\n";
+ $output .= "class {$_className} extends Smarty_Internal_Block\n";
+ $output .= "{\n";
+ foreach ($_block as $property => $value) {
+ $output .= "public \${$property} = " . var_export($value,true) .";\n";
+ }
+ $output .= "public function callBlock(Smarty_Internal_Template \$_smarty_tpl) {\n";
+ //$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n";
+ if ($compiler->template->compiled->has_nocache_code) {
+ $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n";
+ }
+ if (isset($_assign)) {
+ $output .= "ob_start();\n";
+ }
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "<?php\n";
+ if (isset($_assign)) {
+ $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ $output .= "}\n";
+ $output .= "}\n";
+ $output .= "/* {/block {$_name}} */\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->blockOrFunctionCode .= $f = $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ // nocache plugins must be copied
+ if (!empty($compiler->template->compiled->required_plugins[ 'nocache' ])) {
+ foreach ($compiler->template->compiled->required_plugins[ 'nocache' ] as $plugin => $tmp) {
+ foreach ($tmp as $type => $data) {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin ][ $type ] =
+ $data;
+ }
+ }
+ }
+
+ // restore old status
+ $compiler->template->compiled->has_nocache_code = $_has_nocache_code;
+ $compiler->tag_nocache = $compiler->nocache;
+ $compiler->nocache = $_nocache;
+ $compiler->parser->current_buffer = $_buffer;
+ $output = "<?php \n";
+ if ($compiler->_cache[ 'blockNesting' ] == 1) {
+ $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n";
+ } else {
+ $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n";
+ }
+ $output .= "?>\n";
+ $compiler->_cache[ 'blockNesting' ] --;
+ if ($compiler->_cache[ 'blockNesting' ] == 0) {
+ unset($compiler->_cache[ 'blockNesting' ]);
+ }
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
new file mode 100644
index 000000000..bb070ebe3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
@@ -0,0 +1,54 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Parent Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Compile_Block_Child extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array();
+
+ /**
+ * Saved compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * Compiles code for the {block_parent} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->trigger_template_error(' tag {$smarty.block.child} used outside {block} tags ',
+ $compiler->parser->lex->taglineno);
+ }
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true';
+ $output = "<?php \n\$_smarty_tpl->inheritance->callChild(\$_smarty_tpl, \$this);\n?>\n";
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
new file mode 100644
index 000000000..0ec1e8485
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
@@ -0,0 +1,73 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Parent Class
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Compile_Block_Parent extends Smarty_Internal_Compile_Shared_Inheritance
+{
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array();
+
+ /**
+ * Saved compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * Compiles code for the {block_parent} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->trigger_template_error(' tag {$smarty.block.parent} used outside {block} tags ',
+ $compiler->parser->lex->taglineno);
+ }
+ $compiler->suppressNocacheProcessing = true;
+ $compiler->has_code = true;
+ $output = "<?php \n\$_smarty_tpl->inheritance->callParent(\$_smarty_tpl, \$this" .
+ (isset($_attr[ 'name' ]) ? ", {$_attr[ 'name' ]}" : '') . ");\n?>\n";
+ return $output;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
new file mode 100644
index 000000000..50157382a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Break
+ * Compiles the {break} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Break Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('levels');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('levels');
+
+ /**
+ * Compiles code for the {break} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($levels, $foreachLevels) = $this->checkLevels($args, $compiler);
+ $output = "<?php\n";
+ if ($foreachLevels) {
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore($foreachLevels);
+ }
+ $output .= "break {$levels};?>";
+ return $output;
+ }
+
+ /**
+ * check attributes and return array of break and foreach levels
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param string $tag tag name
+ *
+ * @return array
+ * @throws \SmartyCompilerException
+ */
+ public function checkLevels($args, Smarty_Internal_TemplateCompilerBase $compiler, $tag = 'break')
+ {
+ static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+
+ if (isset($_attr[ 'levels' ])) {
+ if (!is_numeric($_attr[ 'levels' ])) {
+ $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
+ }
+ $levels = $_attr[ 'levels' ];
+ } else {
+ $levels = 1;
+ }
+ $level_count = $levels;
+ $stack_count = count($compiler->_tag_stack) - 1;
+ $foreachLevels = 0;
+ $lastTag = '';
+ while ($level_count >= 0 && $stack_count >= 0) {
+ if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) {
+ $lastTag = $compiler->_tag_stack[ $stack_count ][ 0 ];
+ if ($level_count === 0) {
+ break;
+ }
+ $level_count --;
+ if ($compiler->_tag_stack[ $stack_count ][ 0 ] === 'foreach') {
+ $foreachLevels ++;
+ }
+ }
+ $stack_count --;
+ }
+ if ($level_count != 0) {
+ $compiler->trigger_template_error("cannot {$tag} {$levels} level(s)", null, true);
+ }
+ if ($lastTag === 'foreach' && $tag === 'break') {
+ $foreachLevels --;
+ }
+ return array($levels, $foreachLevels);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
new file mode 100644
index 000000000..739df5eca
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function_Call
+ * Compiles the calls of user defined tags defined by {function}
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Function_Call Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles the calls of user defined tags defined by {function}
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // save possible attributes
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr[ 'assign' ];
+ }
+ //$_name = trim($_attr['name'], "'\"");
+ $_name = $_attr[ 'name' ];
+ unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]);
+ // set flag (compiled code of {function} must be included in cache file
+ if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) {
+ $_nocache = 'true';
+ } else {
+ $_nocache = 'false';
+ }
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ //$compiler->suppressNocacheProcessing = true;
+ // was there an assign attribute
+ if (isset($_assign)) {
+ $_output =
+ "<?php ob_start();\n\$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
+ } else {
+ $_output =
+ "<?php \$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n";
+ }
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
new file mode 100644
index 000000000..34fc55f9d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
@@ -0,0 +1,112 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Capture
+ * Compiles the {capture} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Capture Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('name', 'assign', 'append');
+
+ /**
+ * Compiles code for the {$smarty.capture.xxx}
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase$compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public static function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
+ {
+ $tag = trim($parameter[ 0 ], '"\'');
+ $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
+ if (!$name) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
+ }
+ return "\$_smarty_tpl->smarty->ext->_capture->getBuffer(\$_smarty_tpl, '{$name}')";
+ }
+
+ /**
+ * Compiles code for the {capture} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args, $parameter, 'capture');
+
+ $buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'";
+ $assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null';
+ $append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null';
+
+ $compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache);
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ $_output = "<?php \$_smarty_tpl->smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>";
+
+ return $_output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Captureclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/capture} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args, $parameter, '/capture');
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+
+ list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]);
+
+ return "<?php \$_smarty_tpl->smarty->ext->_capture->close(\$_smarty_tpl);?>";
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
new file mode 100644
index 000000000..7c6e9b59e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Config Load
+ * Compiles the {config load} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Config Load Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('file');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('file', 'section');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('section', 'scope');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('nocache', 'noscope');
+
+ /**
+ * Valid scope names
+ *
+ * @var array
+ */
+ public $valid_scopes = array('local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
+ 'root' => Smarty::SCOPE_ROOT, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
+ 'smarty' => Smarty::SCOPE_SMARTY, 'global' => Smarty::SCOPE_SMARTY);
+
+ /**
+ * Compiles code for the {config_load} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+
+ // save possible attributes
+ $conf_file = $_attr[ 'file' ];
+ if (isset($_attr[ 'section' ])) {
+ $section = $_attr[ 'section' ];
+ } else {
+ $section = 'null';
+ }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = - 1;
+ } else {
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+ }
+
+ // create config object
+ $_output =
+ "<?php\n\$_smarty_tpl->smarty->ext->configLoad->_loadConfigFile(\$_smarty_tpl, {$conf_file}, {$section}, {$_scope});\n?>\n";
+
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
new file mode 100644
index 000000000..7492c7df2
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Continue
+ * Compiles the {continue} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Continue Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Continue extends Smarty_Internal_Compile_Break
+{
+
+ /**
+ * Compiles code for the {continue} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($levels, $foreachLevels) = $this->checkLevels($args, $compiler, 'continue');
+ $output = "<?php\n";
+ if ($foreachLevels > 1) {
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore($foreachLevels - 1);
+ }
+ $output .= "continue {$levels};?>";
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
new file mode 100644
index 000000000..1668e72e8
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Debug
+ * Compiles the {debug} tag.
+ * It opens a window the the Smarty Debugging Console.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Debug Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {debug} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ // compile always as nocache
+ $compiler->tag_nocache = true;
+
+ // display debug template
+ $_output =
+ "<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n";
+ $_output .= "unset(\$_smarty_debug);\n?>";
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
new file mode 100644
index 000000000..97a3c29c5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Eval
+ * Compiles the {eval} tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Eval Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('var');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('assign');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('var', 'assign');
+
+ /**
+ * Compiles code for the {eval} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr[ 'assign' ];
+ }
+
+ // create template object
+ $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr[ 'var' ] .
+ ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
+ //was there an assign attribute?
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
+ } else {
+ $_output .= "echo \$_template->fetch();";
+ }
+
+ return "<?php $_output ?>";
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
new file mode 100644
index 000000000..83cb80500
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
@@ -0,0 +1,144 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Compile extend
+ * Compiles the {extends} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile extend Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('file');
+
+ /**
+ * Array of names of optional attribute required by tag
+ * use array('_any') if there is no restriction of attributes names
+ *
+ * @var array
+ */
+ public $optional_attributes = array('extends_resource');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('file');
+
+ /**
+ * Compiles code for the {extends} tag extends: resource
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ * @throws \SmartyException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1);
+ }
+ if (strpos($_attr[ 'file' ], '$_tmp') !== false) {
+ $compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1);
+ }
+ // add code to initialize inheritance
+ $this->registerInit($compiler, true);
+ $file = trim($_attr[ 'file' ], '\'"');
+ if (strlen($file) > 8 && substr($file, 0, 8) == 'extends:') {
+ // generate code for each template
+ $files = array_reverse(explode('|', substr($file, 8)));
+ $i = 0;
+ foreach ($files as $file) {
+ if ($file[ 0 ] == '"') {
+ $file = trim($file, '".');
+ } else {
+ $file = "'{$file}'";
+ }
+ $i ++;
+ if ($i == count($files) && isset($_attr[ 'extends_resource' ])) {
+ $this->compileEndChild($compiler);
+ }
+ $this->compileInclude($compiler, $file);
+ }
+ if (!isset($_attr[ 'extends_resource' ])) {
+ $this->compileEndChild($compiler);
+ }
+ } else {
+ $this->compileEndChild($compiler, $_attr[ 'file' ]);
+ }
+ $compiler->has_code = false;
+ return '';
+ }
+
+ /**
+ * Add code for inheritance endChild() method to end of template
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param null|string $template optional inheritance parent template
+ */
+ private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler, $template = null)
+ {
+ $inlineUids = '';
+ if (isset($template) && $compiler->smarty->merge_compiled_includes) {
+ $code = $compiler->compileTag('include', array($template, array('scope' => 'parent')));
+ if (preg_match("/([,][\s]*['][a-z0-9]+['][,][\s]*[']content.*['])[)]/", $code, $match)) {
+ $inlineUids = $match[ 1 ];
+ }
+ }
+ $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ "<?php \$_smarty_tpl->inheritance->endChild(\$_smarty_tpl" .
+ (isset($template) ?
+ ', ' . $template . $inlineUids :
+ '') . ");\n?>\n");
+ }
+
+ /**
+ * Add code for including subtemplate to end of template
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param string $template subtemplate name
+ */
+ private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $template)
+ {
+ $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $compiler->compileTag('include',
+ array($template,
+ array('scope' => 'parent'))));
+ }
+
+ /**
+ * Create source code for {extends} from source components array
+ *
+ * @param []\Smarty_Internal_Template_Source $components
+ *
+ * @return string
+ */
+ public static function extendsSourceArrayCode($components)
+ {
+ $resources = array();
+ foreach ($components as $source) {
+ $resources[] = $source->resource;
+ }
+ return '{extends file=\'extends:' . join('|', $resources) . '\' extends_resource=true}';
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
new file mode 100644
index 000000000..e5e7c61c3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
@@ -0,0 +1,170 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile For
+ * Compiles the {for} {forelse} {/for} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile For Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {for} tag
+ * Smarty 3 does implement two different syntax's:
+ * - {for $var in $array}
+ * For looping over arrays or iterators
+ * - {for $x=0; $x<$y; $x++}
+ * For general loops
+ * The parser is generating different sets of attribute by which this compiler can
+ * determine which syntax is used.
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ $compiler->loopNesting ++;
+ if ($parameter == 0) {
+ $this->required_attributes = array('start', 'to');
+ $this->optional_attributes = array('max', 'step');
+ } else {
+ $this->required_attributes = array('start', 'ifexp', 'var', 'step');
+ $this->optional_attributes = array();
+ }
+ $this->mapCache = array();
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ $output = "<?php\n";
+ if ($parameter == 1) {
+ foreach ($_attr[ 'start' ] as $_statement) {
+ if (is_array($_statement[ 'var' ])) {
+ $var = $_statement[ 'var' ][ 'var' ];
+ $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
+ } else {
+ $var = $_statement[ 'var' ];
+ $index = '';
+ }
+ $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n";
+ }
+ if (is_array($_attr[ 'var' ])) {
+ $var = $_attr[ 'var' ][ 'var' ];
+ $index = $_attr[ 'var' ][ 'smarty_internal_index' ];
+ } else {
+ $var = $_attr[ 'var' ];
+ $index = '';
+ }
+ $output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n";
+ } else {
+ $_statement = $_attr[ 'start' ];
+ if (is_array($_statement[ 'var' ])) {
+ $var = $_statement[ 'var' ][ 'var' ];
+ $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
+ } else {
+ $var = $_statement[ 'var' ];
+ $index = '';
+ }
+ $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);";
+ if (isset($_attr[ 'step' ])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];";
+ } else {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;";
+ }
+ if (isset($_attr[ 'max' ])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n";
+ } else {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n";
+ }
+ $output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n";
+ $output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration == 1;";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration == \$_smarty_tpl->tpl_vars[$var]->total;";
+ }
+ $output .= "?>";
+
+ $this->openTag($compiler, 'for', array('for', $compiler->nocache));
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ // return compiled code
+ return $output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Forelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {forelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ list($openTag, $nocache) = $this->closeTag($compiler, array('for'));
+ $this->openTag($compiler, 'forelse', array('forelse', $nocache));
+
+ return "<?php }} else { ?>";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Forclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/for} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ $compiler->loopNesting --;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+
+ list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse'));
+
+ $output = "<?php }\n";
+ if ($openTag != 'forelse') {
+ $output .= "}\n";
+ }
+ $output .= "?>\n";
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
new file mode 100644
index 000000000..5ddd42d8a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
@@ -0,0 +1,344 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Foreach
+ * Compiles the {foreach} {foreachelse} {/foreach} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Foreach Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_ForeachSection
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('from', 'item');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('name', 'key', 'properties');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('from', 'item', 'key', 'name');
+
+ /**
+ * counter
+ *
+ * @var int
+ */
+ public $counter = 0;
+
+ /**
+ * Name of this tag
+ *
+ * @var string
+ */
+ public $tagName = 'foreach';
+
+ /**
+ * Valid properties of $smarty.foreach.name.xxx variable
+ *
+ * @var array
+ */
+ public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total');
+
+ /**
+ * Valid properties of $item@xxx variable
+ *
+ * @var array
+ */
+ public $itemProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'key');
+
+ /**
+ * Flag if tag had name attribute
+ *
+ * @var bool
+ */
+ public $isNamed = false;
+
+ /**
+ * Compiles code for the {foreach} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $compiler->loopNesting ++;
+ // init
+ $this->isNamed = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $from = $_attr[ 'from' ];
+ $item = $compiler->getId($_attr[ 'item' ]);
+ if ($item === false) {
+ $item = $compiler->getVariableName($_attr[ 'item' ]);
+ }
+ $key = $name = null;
+ $attributes = array('item' => $item);
+ if (isset($_attr[ 'key' ])) {
+ $key = $compiler->getId($_attr[ 'key' ]);
+ if ($key === false) {
+ $key = $compiler->getVariableName($_attr[ 'key' ]);
+ }
+ $attributes[ 'key' ] = $key;
+ }
+ if (isset($_attr[ 'name' ])) {
+ $this->isNamed = true;
+ $name = $attributes[ 'name' ] = $compiler->getId($_attr[ 'name' ]);
+ }
+ foreach ($attributes as $a => $v) {
+ if ($v === false) {
+ $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
+ }
+ }
+ $fromName = $compiler->getVariableName($_attr[ 'from' ]);
+ if ($fromName) {
+ foreach (array('item', 'key') as $a) {
+ if (isset($attributes[ $a ]) && $attributes[ $a ] == $fromName) {
+ $compiler->trigger_template_error("'{$a}' and 'from' may not have same variable name '{$fromName}'",
+ null, true);
+ }
+ }
+ }
+
+ $itemVar = "\$_smarty_tpl->tpl_vars['{$item}']";
+ $local = '$__foreach_' . $attributes[ 'item' ] . '_' . $this->counter ++ . '_';
+ // search for used tag attributes
+ $itemAttr = array();
+ $namedAttr = array();
+ $this->scanForProperties($attributes, $compiler);
+ if (!empty($this->matchResults[ 'item' ])) {
+ $itemAttr = $this->matchResults[ 'item' ];
+ }
+ if (!empty($this->matchResults[ 'named' ])) {
+ $namedAttr = $this->matchResults[ 'named' ];
+ }
+ if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->itemProperties)) {
+ $itemAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ if ($this->isNamed) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $nameAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ }
+ if (isset($itemAttr[ 'first' ])) {
+ $itemAttr[ 'index' ] = true;
+ }
+ if (isset($namedAttr[ 'first' ])) {
+ $namedAttr[ 'index' ] = true;
+ }
+ if (isset($namedAttr[ 'last' ])) {
+ $namedAttr[ 'iteration' ] = true;
+ $namedAttr[ 'total' ] = true;
+ }
+ if (isset($itemAttr[ 'last' ])) {
+ $itemAttr[ 'iteration' ] = true;
+ $itemAttr[ 'total' ] = true;
+ }
+ if (isset($namedAttr[ 'show' ])) {
+ $namedAttr[ 'total' ] = true;
+ }
+ if (isset($itemAttr[ 'show' ])) {
+ $itemAttr[ 'total' ] = true;
+ }
+ $keyTerm = '';
+ if (isset($attributes[ 'key' ])) {
+ $keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => ";
+ }
+ if (isset($itemAttr[ 'key' ])) {
+ $keyTerm = "{$itemVar}->key => ";
+ }
+ if ($this->isNamed) {
+ $foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']";
+ }
+ $needTotal = isset($itemAttr[ 'total' ]);
+ // Register tag
+ $this->openTag($compiler, 'foreach',
+ array('foreach', $compiler->nocache, $local, $itemVar, empty($itemAttr) ? 1 : 2));
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ // generate output code
+ $output = "<?php\n";
+ $output .= "\$_from = \$_smarty_tpl->smarty->ext->_foreach->init(\$_smarty_tpl, $from, " .
+ var_export($item, true);
+ if ($name || $needTotal || $key) {
+ $output .= ', ' . var_export($needTotal, true);
+ }
+ if ($name || $key) {
+ $output .= ', ' . var_export($key, true);
+ }
+ if ($name) {
+ $output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true);
+ }
+ $output .= ");\n";
+ if (isset($itemAttr[ 'show' ])) {
+ $output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n";
+ }
+ if (isset($itemAttr[ 'iteration' ])) {
+ $output .= "{$itemVar}->iteration = 0;\n";
+ }
+ if (isset($itemAttr[ 'index' ])) {
+ $output .= "{$itemVar}->index = -1;\n";
+ }
+ $output .= "if (\$_from !== null) {\n";
+ $output .= "foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n";
+ if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) {
+ $output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n";
+ }
+ if (isset($itemAttr[ 'iteration' ])) {
+ $output .= "{$itemVar}->iteration++;\n";
+ }
+ if (isset($itemAttr[ 'index' ])) {
+ $output .= "{$itemVar}->index++;\n";
+ }
+ if (isset($itemAttr[ 'first' ])) {
+ $output .= "{$itemVar}->first = !{$itemVar}->index;\n";
+ }
+ if (isset($itemAttr[ 'last' ])) {
+ $output .= "{$itemVar}->last = {$itemVar}->iteration == {$itemVar}->total;\n";
+ }
+ if (isset($foreachVar)) {
+ if (isset($namedAttr[ 'iteration' ])) {
+ $output .= "{$foreachVar}->value['iteration']++;\n";
+ }
+ if (isset($namedAttr[ 'index' ])) {
+ $output .= "{$foreachVar}->value['index']++;\n";
+ }
+ if (isset($namedAttr[ 'first' ])) {
+ $output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n";
+ }
+ if (isset($namedAttr[ 'last' ])) {
+ $output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] == {$foreachVar}->value['total'];\n";
+ }
+ }
+ if (!empty($itemAttr)) {
+ $output .= "{$local}saved = {$itemVar};\n";
+ }
+ $output .= "?>";
+
+ return $output;
+ }
+
+ /**
+ * Compiles code for to restore saved template variables
+ *
+ * @param int $levels number of levels to restore
+ *
+ * @return string compiled code
+ */
+ public function compileRestore($levels)
+ {
+ return "\$_smarty_tpl->smarty->ext->_foreach->restore(\$_smarty_tpl, {$levels});\n";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Foreachelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {foreachelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ list($openTag, $nocache, $local, $itemVar, $restore) = $this->closeTag($compiler, array('foreach'));
+ $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $itemVar, 0));
+ $output = "<?php\n";
+ if ($restore == 2) {
+ $output .= "{$itemVar} = {$local}saved;\n";
+ }
+ $output .= "}\n} else {\n?>\n";
+ return $output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Foreachclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/foreach} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $compiler->loopNesting --;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+
+ list($openTag, $compiler->nocache, $local, $itemVar, $restore) =
+ $this->closeTag($compiler, array('foreach', 'foreachelse'));
+ $output = "<?php\n";
+
+ if ($restore == 2) {
+ $output .= "{$itemVar} = {$local}saved;\n";
+ }
+ if ($restore > 0) {
+ $output .= "}\n";
+ }
+ $output .= "}\n";
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore(1);
+ $output .= "?>\n";
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
new file mode 100644
index 000000000..b7cd9e1c0
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
@@ -0,0 +1,216 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function
+ * Compiles the {function} {/function} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
+{
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the {function} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ unset($_attr[ 'nocache' ]);
+ $_name = trim($_attr[ 'name' ], "'\"");
+ $compiler->parent_compiler->tpl_function[ $_name ] = array();
+ $save = array($_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code,
+ $compiler->template->caching);
+ $this->openTag($compiler, 'function', $save);
+ // Init temporary context
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $compiler->template->compiled->has_nocache_code = false;
+ return true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Functionclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
+{
+
+ /**
+ * Compiler object
+ *
+ * @var object
+ */
+ private $compiler = null;
+
+ /**
+ * Compiles code for the {/function} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object|\Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $this->compiler = $compiler;
+ $saved_data = $this->closeTag($compiler, array('function'));
+ $_attr = $saved_data[ 0 ];
+ $_name = trim($_attr[ 'name' ], "'\"");
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'compiled_filepath' ] =
+ $compiler->parent_compiler->template->compiled->filepath;
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'uid' ] = $compiler->template->source->uid;
+ $_parameter = $_attr;
+ unset($_parameter[ 'name' ]);
+ // default parameter
+ $_paramsArray = array();
+ foreach ($_parameter as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ if (!empty($_paramsArray)) {
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ $_paramsCode = "\$params = array_merge($_params, \$params);\n";
+ } else {
+ $_paramsCode = '';
+ }
+ $_functionCode = $compiler->parser->current_buffer;
+ // setup buffer for template function code
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+
+ $_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}";
+ $_funcNameCaching = $_funcName . '_nocache';
+ if ($compiler->template->compiled->has_nocache_code) {
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching;
+ $output = "<?php\n";
+ $output .= "/* {$_funcNameCaching} */\n";
+ $output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
+ $output .= "function {$_funcNameCaching} (\$_smarty_tpl,\$params) {\n";
+ $output .= "ob_start();\n";
+ $output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n";
+ $output .= $_paramsCode;
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}";
+ $output .= "\$params = var_export(\$params, true);\n";
+ $output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
+ $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->saveTemplateVariables(\\\$_smarty_tpl, '{$_name}');\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value, \\\$_smarty_tpl->isRenderingCache);\n}\n?>";
+ $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\n\";?>";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
+ $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n";
+ $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>";
+ $output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash, ob_get_clean());\n";
+ $output .= "}\n}\n";
+ $output .= "/*/ {$_funcName}_nocache */\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $_functionCode = new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ preg_replace_callback("/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
+ array($this, 'removeNocache'),
+ $_functionCode->to_smarty_php($compiler->parser)));
+ }
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName;
+ $output = "<?php\n";
+ $output .= "/* {$_funcName} */\n";
+ $output .= "if (!function_exists('{$_funcName}')) {\n";
+ $output .= "function {$_funcName}(\$_smarty_tpl,\$params) {\n";
+ $output .= $_paramsCode;
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}?>";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "<?php\n}}\n";
+ $output .= "/*/ {$_funcName} */\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $output));
+ $compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
+ // nocache plugins must be copied
+ if (!empty($compiler->template->compiled->required_plugins[ 'nocache' ])) {
+ foreach ($compiler->template->compiled->required_plugins[ 'nocache' ] as $plugin => $tmp) {
+ foreach ($tmp as $type => $data) {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin ][ $type ] =
+ $data;
+ }
+ }
+ }
+ // restore old buffer
+
+ $compiler->parser->current_buffer = $saved_data[ 1 ];
+ // restore old status
+ $compiler->template->compiled->has_nocache_code = $saved_data[ 2 ];
+ $compiler->template->caching = $saved_data[ 3 ];
+ return true;
+ }
+
+ /**
+ * Remove nocache code
+ *
+ * @param $match
+ *
+ * @return string
+ */
+ function removeNocache($match)
+ {
+ $code =
+ preg_replace("/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
+ '', $match[ 0 ]);
+ $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
+ return $code;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
new file mode 100644
index 000000000..14db55d4f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
@@ -0,0 +1,211 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile If
+ * Compiles the {if} {else} {elseif} {/if} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile If Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->openTag($compiler, 'if', array(1, $compiler->nocache));
+ // must whole block be nocache ?
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+
+ if (!array_key_exists("if condition", $parameter)) {
+ $compiler->trigger_template_error("missing if condition", null, true);
+ }
+
+ if (is_array($parameter[ 'if condition' ])) {
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $_output = "<?php {$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ";?>\n";
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = "{$prefixVar}";
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $_output .= $assignCompiler->compile($assignAttr, $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ $_output .= "<?php if ({$prefixVar}) {?>";
+ return $_output;
+ } else {
+ return "<?php if ({$parameter['if condition']}) {?>";
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Else Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {else} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+ $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
+
+ return "<?php } else { ?>";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile ElseIf Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {elseif} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+
+ if (!array_key_exists("if condition", $parameter)) {
+ $compiler->trigger_template_error("missing elseif condition", null, true);
+ }
+
+ $assignCode = '';
+ $var = '';
+ if (is_array($parameter[ 'if condition' ])) {
+ $condition_by_assign = true;
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCode = "<?php {$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ";?>\n";
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = "{$prefixVar}";
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $assignCode .= $assignCompiler->compile($assignAttr, $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $assignCode .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ } else {
+ $condition_by_assign = false;
+ }
+
+ $prefixCode = $compiler->getPrefixCode();
+ if (empty($prefixCode)) {
+ if ($condition_by_assign) {
+ $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+ $_output = $compiler->appendCode("<?php } else {\n?>", $assignCode);
+ return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
+ } else {
+ $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
+ return "<?php } elseif ({$parameter['if condition']}) {?>";
+ }
+ } else {
+ $_output = $compiler->appendCode("<?php } else {\n?>", $prefixCode);
+ $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+ if ($condition_by_assign) {
+ $_output = $compiler->appendCode($_output, $assignCode);
+ return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>");
+ } else {
+ return $compiler->appendCode($_output, "<?php if ({$parameter['if condition']}) {?>");
+ }
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Ifclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
+ $tmp = '';
+ for ($i = 0; $i < $nesting; $i ++) {
+ $tmp .= '}';
+ }
+
+ return "<?php {$tmp}?>";
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
new file mode 100644
index 000000000..a81b0c740
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
@@ -0,0 +1,344 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Include
+ * Compiles the {include} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Include Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
+{
+ /**
+ * caching mode to create nocache code but no cache file
+ */
+ const CACHING_NOCACHE_CODE = 9999;
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('file');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('file');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('nocache', 'inline', 'caching');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Valid scope names
+ *
+ * @var array
+ */
+ public $valid_scopes = array('parent' => Smarty::SCOPE_PARENT, 'root' => Smarty::SCOPE_ROOT,
+ 'global' => Smarty::SCOPE_GLOBAL, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
+ 'smarty' => Smarty::SCOPE_SMARTY);
+
+ /**
+ * Compiles code for the {include} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param Smarty_Internal_SmartyTemplateCompiler $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @throws SmartyCompilerException
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler, $parameter)
+ {
+ $uid = $t_hash = null;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ $fullResourceName = $source_resource = $_attr[ 'file' ];
+ $variable_template = false;
+ $cache_tpl = false;
+ // parse resource_name
+ if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) {
+ $type = !empty($match[ 3 ]) ? $match[ 3 ] : $compiler->template->smarty->default_resource_type;
+ $name = !empty($match[ 5 ]) ? $match[ 5 ] : $match[ 6 ];
+ $handler = Smarty_Resource::load($compiler->smarty, $type);
+ if ($handler->recompiled || $handler->uncompiled) {
+ $variable_template = true;
+ }
+ if (!$variable_template) {
+ if ($type != 'string') {
+ $fullResourceName = "{$type}:{$name}";
+ $compiled = $compiler->parent_compiler->template->compiled;
+ if (isset($compiled->includes[ $fullResourceName ])) {
+ $compiled->includes[ $fullResourceName ] ++;
+ $cache_tpl = true;
+ } else {
+ if ("{$compiler->template->source->type}:{$compiler->template->source->name}" ==
+ $fullResourceName
+ ) {
+ // recursive call of current template
+ $compiled->includes[ $fullResourceName ] = 2;
+ $cache_tpl = true;
+ } else {
+ $compiled->includes[ $fullResourceName ] = 1;
+ }
+ }
+ $fullResourceName = $match[ 1 ] . $fullResourceName . $match[ 1 ];
+ }
+ }
+ if (empty($match[ 5 ])) {
+ $variable_template = true;
+ }
+ } else {
+ $variable_template = true;
+ }
+
+ // scope setup
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+
+ // set flag to cache subtemplate object when called within loop or template name is variable.
+ if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) {
+ $_cache_tpl = 'true';
+ } else {
+ $_cache_tpl = 'false';
+ }
+ // assume caching is off
+ $_caching = Smarty::CACHING_OFF;
+
+ $call_nocache = $compiler->tag_nocache || $compiler->nocache;
+
+ // caching was on and {include} is not in nocache mode
+ if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) {
+ $_caching = self::CACHING_NOCACHE_CODE;
+ }
+
+ // flag if included template code should be merged into caller
+ $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr[ 'inline' ] === true) &&
+ !$compiler->template->source->handler->recompiled;
+
+ if ($merge_compiled_includes) {
+ // variable template name ?
+ if ($variable_template) {
+ $merge_compiled_includes = false;
+ }
+ // variable compile_id?
+ if (isset($_attr[ 'compile_id' ]) && $compiler->isVariable($_attr[ 'compile_id' ])) {
+ $merge_compiled_includes = false;
+ }
+ }
+
+ /*
+ * if the {include} tag provides individual parameter for caching or compile_id
+ * the subtemplate must not be included into the common cache file and is treated like
+ * a call in nocache mode.
+ *
+ */
+ if ($_attr[ 'nocache' ] !== true && $_attr[ 'caching' ]) {
+ $_caching = $_new_caching = (int) $_attr[ 'caching' ];
+ $call_nocache = true;
+ } else {
+ $_new_caching = Smarty::CACHING_LIFETIME_CURRENT;
+ }
+ if (isset($_attr[ 'cache_lifetime' ])) {
+ $_cache_lifetime = $_attr[ 'cache_lifetime' ];
+ $call_nocache = true;
+ $_caching = $_new_caching;
+ } else {
+ $_cache_lifetime = '$_smarty_tpl->cache_lifetime';
+ }
+ if (isset($_attr[ 'cache_id' ])) {
+ $_cache_id = $_attr[ 'cache_id' ];
+ $call_nocache = true;
+ $_caching = $_new_caching;
+ } else {
+ $_cache_id = '$_smarty_tpl->cache_id';
+ }
+ if (isset($_attr[ 'compile_id' ])) {
+ $_compile_id = $_attr[ 'compile_id' ];
+ } else {
+ $_compile_id = '$_smarty_tpl->compile_id';
+ }
+
+ // if subtemplate will be called in nocache mode do not merge
+ if ($compiler->template->caching && $call_nocache) {
+ $merge_compiled_includes = false;
+ }
+ // assign attribute
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ if ($_assign = $compiler->getId($_attr[ 'assign' ])) {
+ $_assign = "'{$_assign}'";
+ if ($compiler->tag_nocache || $compiler->nocache || $call_nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'assign' ]);
+ }
+ } else {
+ $_assign = $_attr[ 'assign' ];
+ }
+ }
+
+ $has_compiled_template = false;
+ if ($merge_compiled_includes) {
+ $c_id = isset($_attr[ 'compile_id' ]) ? $_attr[ 'compile_id' ] : $compiler->template->compile_id;
+ // we must observe different compile_id and caching
+ $t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching'));
+ $compiler->smarty->allow_ambiguous_resources = true;
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $compiler->smarty->template_class (trim($fullResourceName, '"\''), $compiler->smarty,
+ $compiler->template, $compiler->template->cache_id, $c_id,
+ $_caching);
+ $uid = $tpl->source->type . $tpl->source->uid;
+ if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) {
+ $has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash);
+ } else {
+ $has_compiled_template = true;
+ }
+ unset($tpl);
+ }
+ // delete {include} standard attributes
+ unset($_attr[ 'file' ], $_attr[ 'assign' ], $_attr[ 'cache_id' ], $_attr[ 'compile_id' ], $_attr[ 'cache_lifetime' ], $_attr[ 'nocache' ], $_attr[ 'caching' ], $_attr[ 'scope' ], $_attr[ 'inline' ]);
+ // remaining attributes must be assigned as smarty variable
+ $_vars = 'array()';
+ if (!empty($_attr)) {
+ $_pairs = array();
+ // create variables
+ foreach ($_attr as $key => $value) {
+ $_pairs[] = "'$key'=>$value";
+ }
+ $_vars = 'array(' . join(',', $_pairs) . ')';
+ }
+ $update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache &&
+ $_compile_id != '$_smarty_tpl->compile_id';
+ if ($has_compiled_template && !$call_nocache) {
+ $_output = "<?php\n";
+ if ($update_compile_id) {
+ $_output .= $compiler->makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n");
+ }
+ if (!empty($_attr) && $_caching == 9999 && $compiler->template->caching) {
+ $_vars_nc = "foreach ($_vars as \$ik => \$iv) {\n";
+ $_vars_nc .= "\$_smarty_tpl->tpl_vars[\$ik] = new Smarty_Variable(\$iv);\n";
+ $_vars_nc .= "}\n";
+ $_output .= substr($compiler->processNocacheCode('<?php ' . $_vars_nc . "?>\n", true), 6, - 3);
+ }
+ if (isset($_assign)) {
+ $_output .= "ob_start();\n";
+ }
+ $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['func']}');\n";
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ if ($update_compile_id) {
+ $_output .= $compiler->makeNocacheCode("\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n");
+ }
+ $_output .= "?>\n";
+
+ return $_output;
+ }
+
+ if ($call_nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $_output = "<?php ";
+ if ($update_compile_id) {
+ $_output .= "\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n";
+ }
+ // was there an assign attribute
+ if (isset($_assign)) {
+ $_output .= "ob_start();\n";
+ }
+ $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n";
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ if ($update_compile_id) {
+ $_output .= "\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n";
+ }
+ $_output .= "?>\n";
+ return $_output;
+ }
+
+ /**
+ * Compile inline sub template
+ *
+ * @param \Smarty_Internal_SmartyTemplateCompiler $compiler
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $t_hash
+ *
+ * @return bool
+ */
+ public function compileInlineTemplate(Smarty_Internal_SmartyTemplateCompiler $compiler,
+ Smarty_Internal_Template $tpl, $t_hash)
+ {
+ $uid = $tpl->source->type . $tpl->source->uid;
+ if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) {
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] = $tpl->source->uid;
+ if (isset($compiler->template->inheritance)) {
+ $tpl->inheritance = clone $compiler->template->inheritance;
+ }
+ $tpl->compiled = new Smarty_Template_Compiled();
+ $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
+ $tpl->loadCompiler();
+ // save unique function name
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] =
+ $tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
+ // make sure whole chain gets compiled
+ $tpl->mustCompile = true;
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] =
+ $tpl->compiled->nocache_hash;
+ if ($compiler->template->source->type == 'file') {
+ $sourceInfo = $compiler->template->source->filepath;
+ } else {
+ $basename = $compiler->template->source->handler->getBasename($compiler->template->source);
+ $sourceInfo = $compiler->template->source->type . ':' .
+ ($basename ? $basename : $compiler->template->source->name);
+ }
+ // get compiled code
+ $compiled_code = "<?php\n\n";
+ $compiled_code .= "/* Start inline template \"{$sourceInfo}\" =============================*/\n";
+ $compiled_code .= "function {$tpl->compiled->unifunc} (\$_smarty_tpl) {\n";
+ $compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler);
+ $compiled_code .= "<?php\n";
+ $compiled_code .= "}\n?>\n";
+ $compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode);
+ $compiled_code .= "<?php\n\n";
+ $compiled_code .= "/* End inline template \"{$sourceInfo}\" =============================*/\n";
+ $compiled_code .= "?>";
+ unset($tpl->compiler);
+ if ($tpl->compiled->has_nocache_code) {
+ // replace nocache_hash
+ $compiled_code =
+ str_replace("{$tpl->compiled->nocache_hash}", $compiler->template->compiled->nocache_hash,
+ $compiled_code);
+ $compiler->template->compiled->has_nocache_code = true;
+ }
+ $compiler->parent_compiler->mergedSubTemplatesCode[ $tpl->compiled->unifunc ] = $compiled_code;
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php
new file mode 100644
index 000000000..77586da8b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Include PHP
+ * Compiles the {include_php} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('file');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('file');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('once', 'assign');
+
+ /**
+ * Compiles code for the {include_php} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string
+ * @throws \SmartyCompilerException
+ * @throws \SmartyException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ if (!($compiler->smarty instanceof SmartyBC)) {
+ throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable");
+ }
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
+ $_smarty_tpl = $compiler->template;
+ $_filepath = false;
+ $_file = null;
+ eval('$_file = @' . $_attr[ 'file' ] . ';');
+ if (!isset($compiler->smarty->security_policy) && file_exists($_file)) {
+ $_filepath = $compiler->smarty->_realpath($_file, true);
+ } else {
+ if (isset($compiler->smarty->security_policy)) {
+ $_dir = $compiler->smarty->security_policy->trusted_dir;
+ } else {
+ $_dir = $compiler->smarty->trusted_dir;
+ }
+ if (!empty($_dir)) {
+ foreach ((array) $_dir as $_script_dir) {
+ $_path = $compiler->smarty->_realpath($_script_dir . $compiler->smarty->ds . $_file, true);
+ if (file_exists($_path)) {
+ $_filepath = $_path;
+ break;
+ }
+ }
+ }
+ }
+ if ($_filepath == false) {
+ $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", null, true);
+ }
+
+ if (isset($compiler->smarty->security_policy)) {
+ $compiler->smarty->security_policy->isTrustedPHPDir($_filepath);
+ }
+
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr[ 'assign' ];
+ }
+ $_once = '_once';
+ if (isset($_attr[ 'once' ])) {
+ if ($_attr[ 'once' ] == 'false') {
+ $_once = '';
+ }
+ }
+
+ if (isset($_assign)) {
+ return "<?php ob_start();\ninclude{$_once} ('{$_filepath}');\n\$_smarty_tpl->assign({$_assign},ob_get_clean());\n?>";
+ } else {
+ return "<?php include{$_once} ('{$_filepath}');?>\n";
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
new file mode 100644
index 000000000..02ef67c3a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
@@ -0,0 +1,155 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Compile Insert
+ * Compiles the {insert} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the {insert} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ //Does tag create output
+ $compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
+
+ $nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache);
+ if (!$nocacheParam) {
+ // do not compile as nocache code
+ $compiler->suppressNocacheProcessing = true;
+ }
+ $compiler->tag_nocache = true;
+ $_smarty_tpl = $compiler->template;
+ $_name = null;
+ $_script = null;
+
+ $_output = '<?php ';
+ // save possible attributes
+ eval('$_name = @' . $_attr[ 'name' ] . ';');
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr[ 'assign' ];
+ // create variable to make sure that the compiler knows about its nocache status
+ $var = trim($_attr[ 'assign' ], "'");
+ if (isset($compiler->template->tpl_vars[ $var ])) {
+ $compiler->template->tpl_vars[ $var ]->nocache = true;
+ } else {
+ $compiler->template->tpl_vars[ $var ] = new Smarty_Variable(null, true);
+ }
+ }
+ if (isset($_attr[ 'script' ])) {
+ // script which must be included
+ $_function = "smarty_insert_{$_name}";
+ $_smarty_tpl = $compiler->template;
+ $_filepath = false;
+ eval('$_script = @' . $_attr[ 'script' ] . ';');
+ if (!isset($compiler->smarty->security_policy) && file_exists($_script)) {
+ $_filepath = $_script;
+ } else {
+ if (isset($compiler->smarty->security_policy)) {
+ $_dir = $compiler->smarty->security_policy->trusted_dir;
+ } else {
+ $_dir = $compiler->smarty instanceof SmartyBC ? $compiler->smarty->trusted_dir : null;
+ }
+ if (!empty($_dir)) {
+ foreach ((array) $_dir as $_script_dir) {
+ $_script_dir = rtrim($_script_dir, '/\\') . $compiler->smarty->ds;
+ if (file_exists($_script_dir . $_script)) {
+ $_filepath = $_script_dir . $_script;
+ break;
+ }
+ }
+ }
+ }
+ if ($_filepath == false) {
+ $compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true);
+ }
+ // code for script file loading
+ $_output .= "require_once '{$_filepath}' ;";
+ require_once $_filepath;
+ if (!is_callable($_function)) {
+ $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'",
+ null, true);
+ }
+ } else {
+ $_filepath = 'null';
+ $_function = "insert_{$_name}";
+ // function in PHP script ?
+ if (!is_callable($_function)) {
+ // try plugin
+ if (!$_function = $compiler->getPlugin($_name, 'insert')) {
+ $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", null,
+ true);
+ }
+ }
+ }
+ // delete {insert} standard attributes
+ unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'script' ], $_attr[ 'nocache' ]);
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ $_paramsArray[] = "'$_key' => $_value";
+ }
+ $_params = 'array(' . implode(", ", $_paramsArray) . ')';
+ // call insert
+ if (isset($_assign)) {
+ if ($_smarty_tpl->caching && !$nocacheParam) {
+ $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>";
+ } else {
+ $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
+ }
+ } else {
+ if ($_smarty_tpl->caching && !$nocacheParam) {
+ $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
+ } else {
+ $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>";
+ }
+ }
+
+ return $_output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
new file mode 100644
index 000000000..7251dcd6c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Ldelim
+ * Compiles the {ldelim} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Ldelim Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {ldelim} tag
+ * This tag does output the left delimiter
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ // this tag does not return compiled code
+ $compiler->has_code = true;
+
+ return $compiler->smarty->left_delimiter;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
new file mode 100644
index 000000000..720dd68b3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Make_Nocache
+ * Compiles the {make_nocache} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Make_Nocache Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Make_Nocache extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array();
+
+ /**
+ * Array of names of required attribute required by tag
+ *
+ * @var array
+ */
+ public $required_attributes = array('var');
+
+ /**
+ * Shorttag attribute order defined by its names
+ *
+ * @var array
+ */
+ public $shorttag_order = array('var');
+
+ /**
+ * Compiles code for the {make_nocache} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($compiler->template->caching) {
+ $output = "<?php \$_smarty_tpl->smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n";
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ } else {
+ return true;
+ }
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
index b29a993aa..b29a993aa 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
new file mode 100644
index 000000000..617564276
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Block Plugin
+ * Compiles code for the execution of block plugin
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Plugin Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * nesting level
+ *
+ * @var int
+ */
+ public $nesting = 0;
+
+ /**
+ * Compiles code for the execution of block plugin
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of block plugin
+ * @param string $function PHP function name
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function = null)
+ {
+ if (!isset($tag[ 5 ]) || substr($tag, - 5) != 'close') {
+ // opening tag of block plugin
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->nesting ++;
+ unset($_attr[ 'nocache' ]);
+ list($callback, $_paramsArray, $callable) = $this->setup($compiler, $_attr, $tag, $function);
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+ // compile code
+ $output = "<?php ";
+ if (is_array($callback)) {
+ $output .= "\$_block_plugin{$this->nesting} = isset({$callback[0]}) ? {$callback[0]} : null;\n";
+ $callback = "\$_block_plugin{$this->nesting}{$callback[1]}";
+ }
+ if (isset($callable)) {
+ $output .= "if (!is_callable({$callable})) {\nthrow new SmartyException('block tag \'{$tag}\' not callable or registered');\n}\n";
+ }
+ $output .= "\$_smarty_tpl->smarty->_cache['_tag_stack'][] = array('{$tag}', {$_params});\n";
+ $output .= "\$_block_repeat=true;\necho {$callback}({$_params}, null, \$_smarty_tpl, \$_block_repeat);\nwhile (\$_block_repeat) {\nob_start();\n?>";
+ $this->openTag($compiler, $tag, array($_params, $compiler->nocache, $callback));
+ // maybe nocache because of nocache variables or nocache plugin
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ } else {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ // closing tag of block plugin, restore nocache
+ list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, - 5));
+ //Does tag create output
+ $compiler->has_output = isset($_params[ 'assign' ]) ? false : true;
+ // compile code
+ if (!isset($parameter[ 'modifier_list' ])) {
+ $mod_pre = $mod_post = $mod_content = '';
+ $mod_content2 = 'ob_get_clean()';
+ } else {
+ $mod_content2 = "\$_block_content{$this->nesting}";
+ $mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n";
+ $mod_pre = "ob_start();\n";
+ $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifier_list' ],
+ 'value' => 'ob_get_clean()')) . ";\n";
+ }
+ $output = "<?php " . $mod_content . "\$_block_repeat=false;\n" . $mod_pre .
+ "echo {$callback}({$_params}, " . $mod_content2 .
+ ", \$_smarty_tpl, \$_block_repeat);\n" . $mod_post . "}\n";
+ $output .= "array_pop(\$_smarty_tpl->smarty->_cache['_tag_stack']);";
+ $output .= "?>";
+ }
+ return $output . "\n";
+ }
+
+ /**
+ * Setup callback and parameter array
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param string $function
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
+ {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ return array($function, $_paramsArray, null);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
new file mode 100644
index 000000000..bf569be3a
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
@@ -0,0 +1,221 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile ForeachSection
+ * Shared methods for {foreach} {section} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile ForeachSection Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_CompileBase
+{
+
+ /**
+ * Preg search pattern
+ *
+ * @var string
+ */
+ private $propertyPreg = '';
+
+ /**
+ * Offsets in preg match result
+ *
+ * @var array
+ */
+ private $resultOffsets = array();
+
+ /**
+ * Start offset
+ *
+ * @var int
+ */
+ private $startOffset = 0;
+
+ /**
+ * Name of this tag
+ *
+ * @var string
+ */
+ public $tagName = '';
+
+ /**
+ * Valid properties of $smarty.xxx variable
+ *
+ * @var array
+ */
+ public $nameProperties = array();
+
+ /**
+ * {section} tag has no item properties
+ *
+ * @var array
+ */
+ public $itemProperties = null;
+
+ /**
+ * {section} tag has always name attribute
+ *
+ * @var bool
+ */
+ public $isNamed = true;
+
+ /**
+ * @var array
+ */
+ public $matchResults = array();
+
+ /**
+ * Scan sources for used tag attributes
+ *
+ * @param array $attributes
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function scanForProperties($attributes, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->propertyPreg = '~(';
+ $this->startOffset = 0;
+ $this->resultOffsets = array();
+ $this->matchResults = array('named' => array(), 'item' => array());
+ if ($this->isNamed) {
+ $this->buildPropertyPreg(true, $attributes);
+ }
+ if (isset($this->itemProperties)) {
+ if ($this->isNamed) {
+ $this->propertyPreg .= '|';
+ }
+ $this->buildPropertyPreg(false, $attributes);
+ }
+ $this->propertyPreg .= ')\W~i';
+ // Template source
+ $this->matchTemplateSource($compiler);
+ // Parent template source
+ $this->matchParentTemplateSource($compiler);
+ // {block} source
+ $this->matchBlockSource($compiler);
+ }
+
+ /**
+ * Build property preg string
+ *
+ * @param bool $named
+ * @param array $attributes
+ */
+ public function buildPropertyPreg($named, $attributes)
+ {
+ if ($named) {
+ $this->resultOffsets[ 'named' ] = $this->startOffset + 3;
+ $this->propertyPreg .= "([\$]smarty[.]{$this->tagName}[.]{$attributes['name']}[.](";
+ $properties = $this->nameProperties;
+ } else {
+ $this->resultOffsets[ 'item' ] = $this->startOffset + 3;
+ $this->propertyPreg .= "([\$]{$attributes['item']}[@](";
+ $properties = $this->itemProperties;
+ }
+ $this->startOffset += count($properties) + 2;
+ $propName = reset($properties);
+ while ($propName) {
+ $this->propertyPreg .= "({$propName})";
+ $propName = next($properties);
+ if ($propName) {
+ $this->propertyPreg .= '|';
+ }
+ }
+ $this->propertyPreg .= '))';
+ }
+
+ /**
+ * Find matches in source string
+ *
+ * @param string $source
+ */
+ public function matchProperty($source)
+ {
+ preg_match_all($this->propertyPreg, $source, $match, PREG_SET_ORDER);
+ foreach ($this->resultOffsets as $key => $offset) {
+ foreach ($match as $m) {
+ if (isset($m[ $offset ]) && !empty($m[ $offset ])) {
+ $this->matchResults[ $key ][ strtolower($m[ $offset ]) ] = true;
+ }
+ }
+ }
+ }
+
+ /**
+ * Find matches in template source
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function matchTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->matchProperty($compiler->parser->lex->data);
+ }
+
+ /**
+ * Find matches in all parent template source
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function matchParentTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // search parent compiler template source
+ $nextCompiler = $compiler;
+ while ($nextCompiler !== $nextCompiler->parent_compiler) {
+ $nextCompiler = $nextCompiler->parent_compiler;
+ if ($compiler !== $nextCompiler) {
+ // get template source
+ $_content = $nextCompiler->template->source->getContent();
+ if ($_content != '') {
+ // run pre filter if required
+ if ((isset($nextCompiler->smarty->autoload_filters[ 'pre' ]) ||
+ isset($nextCompiler->smarty->registered_filters[ 'pre' ]))
+ ) {
+ $_content = $nextCompiler->smarty->ext->_filterHandler->runFilter('pre', $_content,
+ $nextCompiler->template);
+ }
+ $this->matchProperty($_content);
+ }
+ }
+ }
+ }
+
+ /**
+ * Find matches in {block} tag source
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ }
+
+ /**
+ * Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $tag = strtolower(trim($parameter[ 0 ], '"\''));
+ $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
+ if (!$name) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
+ }
+ $property = isset($parameter[ 2 ]) ? strtolower($compiler->getId($parameter[ 2 ])) : false;
+ if (!$property || !in_array($property, $this->nameProperties)) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true);
+ }
+ $tagVar = "'__smarty_{$tag}_{$name}'";
+ return "(isset(\$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}']) ? \$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}'] : null)";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
new file mode 100644
index 000000000..26529bb68
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function Plugin
+ * Compiles code for the execution of function plugin
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Function Plugin Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array();
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the execution of function plugin
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function plugin
+ * @param string $function PHP function name
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ unset($_attr[ 'nocache' ]);
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ // compile code
+ $output = "{$function}({$_params},\$_smarty_tpl)";
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output));
+ }
+ //Does tag create output
+ $compiler->has_output = true;
+ $output = "<?php echo {$output};?>\n";
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
new file mode 100644
index 000000000..2ee88db48
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
@@ -0,0 +1,157 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Compile Modifier
+ * Compiles code for modifier execution
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Modifier Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for modifier execution
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $output = $parameter[ 'value' ];
+ // loop over list of modifiers
+ foreach ($parameter[ 'modifierlist' ] as $single_modifier) {
+ $modifier = $single_modifier[ 0 ];
+ $single_modifier[ 0 ] = $output;
+ $params = implode(',', $single_modifier);
+ // check if we know already the type of modifier
+ if (isset($compiler->known_modifier_type[ $modifier ])) {
+ $modifier_types = array($compiler->known_modifier_type[ $modifier ]);
+ } else {
+ $modifier_types = array(1, 2, 3, 4, 5, 6);
+ }
+ foreach ($modifier_types as $type) {
+ switch ($type) {
+ case 1:
+ // registered modifier
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) {
+ $function =
+ $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ];
+ if (!is_array($function)) {
+ $output = "{$function}({$params})";
+ } else {
+ if (is_object($function[ 0 ])) {
+ $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' .
+ $modifier . '\'][0][0]->' . $function[ 1 ] . '(' . $params . ')';
+ } else {
+ $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')';
+ }
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 2:
+ // registered modifier compiler
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) {
+ $output =
+ call_user_func($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ],
+ $single_modifier, $compiler->smarty);
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 3:
+ // modifiercompiler plugin
+ if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) ||
+ $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+ $plugin = 'smarty_modifiercompiler_' . $modifier;
+ $output = $plugin($single_modifier, $compiler);
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 4:
+ // modifier plugin
+ if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) ||
+ $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+ $output = "{$function}({$params})";
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 5:
+ // PHP function
+ if (is_callable($modifier)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) ||
+ $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)
+ ) {
+ $output = "{$modifier}({$params})";
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 6:
+ // default plugin handler
+ if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ]) ||
+ (is_callable($compiler->smarty->default_plugin_handler_func) &&
+ $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))
+ ) {
+ $function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ];
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) ||
+ $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+ if (!is_array($function)) {
+ $output = "{$function}({$params})";
+ } else {
+ if (is_object($function[ 0 ])) {
+ $output = $function[ 0 ] . '->'. $function[ 1 ] . '(' . $params . ')';
+ } else {
+ $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')';
+ }
+ }
+ }
+ if (isset($compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) ||
+ isset($compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ])
+ ) {
+ // was a plugin
+ $compiler->known_modifier_type[ $modifier ] = 4;
+ } else {
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ }
+ break 2;
+ }
+ }
+ }
+ if (!isset($compiler->known_modifier_type[ $modifier ])) {
+ $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", null, true);
+ }
+ }
+
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
new file mode 100644
index 000000000..5c7fb6265
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Block Function
+ * Compiles code for registered objects as block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Object Block Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_Compile_Private_Block_Plugin
+{
+ /**
+ * Setup callback and parameter array
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param string $method
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $method)
+ {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}");
+ return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')");
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
new file mode 100644
index 000000000..7f78a421e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Function
+ * Compiles code for registered objects as function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Object Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the execution of function plugin
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
+ * @param string $method name of method to call
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ //Does tag create output
+ $compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
+
+ unset($_attr[ 'nocache' ]);
+ $_assign = null;
+ if (isset($_attr[ 'assign' ])) {
+ $_assign = $_attr[ 'assign' ];
+ unset($_attr[ 'assign' ]);
+ }
+ // method or property ?
+ if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) {
+ // convert attributes into parameter array string
+ if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
+ } else {
+ $_params = implode(",", $_attr);
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
+ }
+ } else {
+ // object property
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
+ }
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output));
+ }
+ //Does tag create output
+ $compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
+
+ if (empty($_assign)) {
+ return "<?php echo {$output};?>\n";
+ } else {
+ return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n";
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php
new file mode 100644
index 000000000..8bff8499f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php
@@ -0,0 +1,216 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile PHP Expression
+ * Compiles any tag which will output an expression or variable
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile PHP Expression Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase
+{
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('code', 'type');
+
+ /**
+ * Compiles code for generating output from any expression
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $compiler->has_code = false;
+ if ($_attr[ 'type' ] == 'xml') {
+ $compiler->tag_nocache = true;
+ $output = addcslashes($_attr[ 'code' ], "'\\");
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $compiler->processNocacheCode("<?php echo '" .
+ $output .
+ "';?>",
+ true)));
+ return '';
+ }
+ if ($_attr[ 'type' ] != 'tag') {
+ if ($compiler->php_handling == Smarty::PHP_REMOVE) {
+ return '';
+ } elseif ($compiler->php_handling == Smarty::PHP_QUOTE) {
+ $output =
+ preg_replace_callback('#(<\?(?:php|=)?)|(<%)|(<script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*>)|(\?>)|(%>)|(<\/script>)#i',
+ array($this, 'quote'), $_attr[ 'code' ]);
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Text($output));
+ return '';
+ } elseif ($compiler->php_handling == Smarty::PHP_PASSTHRU || $_attr[ 'type' ] == 'unmatched') {
+ $compiler->tag_nocache = true;
+ $output = addcslashes($_attr[ 'code' ], "'\\");
+ $compiler->parser->current_buffer->append_subtree($compiler->parser,
+ new Smarty_Internal_ParseTree_Tag($compiler->parser,
+ $compiler->processNocacheCode("<?php echo '" .
+ $output .
+ "';?>",
+ true)));
+ return '';
+ } elseif ($compiler->php_handling == Smarty::PHP_ALLOW) {
+ if (!($compiler->smarty instanceof SmartyBC)) {
+ $compiler->trigger_template_error('$smarty->php_handling PHP_ALLOW not allowed. Use SmartyBC to enable it',
+ null, true);
+ }
+ $compiler->has_code = true;
+ return $_attr[ 'code' ];
+ } else {
+ $compiler->trigger_template_error('Illegal $smarty->php_handling value', null, true);
+ }
+ } else {
+ $compiler->has_code = true;
+ if (!($compiler->smarty instanceof SmartyBC)) {
+ $compiler->trigger_template_error('{php}{/php} tags not allowed. Use SmartyBC to enable them', null,
+ true);
+ }
+ $ldel = preg_quote($compiler->smarty->left_delimiter, '#');
+ $rdel = preg_quote($compiler->smarty->right_delimiter, '#');
+ preg_match("#^({$ldel}php\\s*)((.)*?)({$rdel})#", $_attr[ 'code' ], $match);
+ if (!empty($match[ 2 ])) {
+ if ('nocache' == trim($match[ 2 ])) {
+ $compiler->tag_nocache = true;
+ } else {
+ $compiler->trigger_template_error("illegal value of option flag \"{$match[2]}\"", null, true);
+ }
+ }
+ return preg_replace(array("#^{$ldel}\\s*php\\s*(.)*?{$rdel}#", "#{$ldel}\\s*/\\s*php\\s*{$rdel}$#"),
+ array('<?php ', '?>'), $_attr[ 'code' ]);
+ }
+ }
+
+ /**
+ * Lexer code for PHP tags
+ *
+ * This code has been moved from lexer here fo easier debugging and maintenance
+ *
+ * @param $lex
+ */
+ public function parsePhp($lex)
+ {
+ $lex->token = Smarty_Internal_Templateparser::TP_PHP;
+ $close = 0;
+ $lex->taglineno = $lex->line;
+ $closeTag = '?>';
+ if (strpos($lex->value, '<?xml') === 0) {
+ $lex->is_xml = true;
+ $lex->phpType = 'xml';
+ return;
+ } elseif (strpos($lex->value, '<?') === 0) {
+ $lex->phpType = 'php';
+ } elseif (strpos($lex->value, '<%') === 0) {
+ $lex->phpType = 'asp';
+ $closeTag = '%>';
+ } elseif (strpos($lex->value, '%>') === 0) {
+ $lex->phpType = 'unmatched';
+ } elseif (strpos($lex->value, '?>') === 0) {
+ if ($lex->is_xml) {
+ $lex->is_xml = false;
+ $lex->phpType = 'xml';
+ return;
+ }
+ $lex->phpType = 'unmatched';
+ } elseif (strpos($lex->value, '<s') === 0) {
+ $lex->phpType = 'script';
+ $closeTag = '</script>';
+ } elseif (strpos($lex->value, $lex->smarty->left_delimiter) === 0) {
+ if ($lex->isAutoLiteral()) {
+ $lex->token = Smarty_Internal_Templateparser::TP_TEXT;
+ return;
+ }
+ $closeTag = "{$lex->smarty->left_delimiter}/php{$lex->smarty->right_delimiter}";
+ if ($lex->value == $closeTag) {
+ $lex->compiler->trigger_template_error("unexpected closing tag '{$closeTag}'");
+ }
+ $lex->phpType = 'tag';
+ }
+ if ($lex->phpType == 'unmatched') {
+ return;
+ }
+ if (($lex->phpType == 'php' || $lex->phpType == 'asp') &&
+ ($lex->compiler->php_handling == Smarty::PHP_PASSTHRU || $lex->compiler->php_handling == Smarty::PHP_QUOTE)
+ ) {
+ return;
+ }
+ $start = $lex->counter + strlen($lex->value);
+ $body = true;
+ if (preg_match('~' . preg_quote($closeTag, '~') . '~i', $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
+ $close = $match[ 0 ][ 1 ];
+ } else {
+ $lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'");
+ }
+ while ($body) {
+ if (preg_match('~([/][*])|([/][/][^\n]*)|(\'[^\'\\\\]*(?:\\.[^\'\\\\]*)*\')|("[^"\\\\]*(?:\\.[^"\\\\]*)*")~',
+ $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) {
+ $value = $match[ 0 ][ 0 ];
+ $from = $pos = $match[ 0 ][ 1 ];
+ if ($pos > $close) {
+ $body = false;
+ } else {
+ $start = $pos + strlen($value);
+ $phpCommentStart = $value == '/*';
+ if ($phpCommentStart) {
+ $phpCommentEnd = preg_match('~([*][/])~', $lex->data, $match, PREG_OFFSET_CAPTURE, $start);
+ if ($phpCommentEnd) {
+ $pos2 = $match[ 0 ][ 1 ];
+ $start = $pos2 + strlen($match[ 0 ][ 0 ]);
+ }
+ }
+ while ($close > $pos && $close < $start) {
+ if (preg_match('~' . preg_quote($closeTag, '~') . '~i', $lex->data, $match, PREG_OFFSET_CAPTURE,
+ $from)) {
+ $close = $match[ 0 ][ 1 ];
+ $from = $close + strlen($match[ 0 ][ 0 ]);
+ } else {
+ $lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'");
+ }
+ }
+ if ($phpCommentStart && (!$phpCommentEnd || $pos2 > $close)) {
+ $lex->taglineno = $lex->line + substr_count(substr($lex->data, $lex->counter, $start), "\n");
+ $lex->compiler->trigger_template_error("missing PHP comment closing tag '*/'");
+ }
+ }
+ } else {
+ $body = false;
+ }
+ }
+ $lex->value = substr($lex->data, $lex->counter, $close + strlen($closeTag) - $lex->counter);
+ }
+
+ /*
+ * Call back function for $php_handling = PHP_QUOTE
+ *
+ */
+ /**
+ * @param $match
+ *
+ * @return string
+ */
+ private function quote($match)
+ {
+ return htmlspecialchars($match[ 0 ], ENT_QUOTES);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
new file mode 100644
index 000000000..811996bcc
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Print Expression
+ * Compiles any tag which will output an expression or variable
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Print Expression Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('assign');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('nocache', 'nofilter');
+
+ /**
+ * Compiles code for generating output from any expression
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $output = $parameter[ 'value' ];
+ // tag modifier
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output));
+ }
+ if (isset($_attr[ 'assign' ])) {
+ // assign output to variable
+ return "<?php \$_smarty_tpl->assign({$_attr['assign']},{$output});?>";
+ } else {
+ // display value
+ if (!$_attr[ 'nofilter' ]) {
+ // default modifier
+ if (!empty($compiler->smarty->default_modifiers)) {
+ if (empty($compiler->default_modifier_list)) {
+ $modifierlist = array();
+ foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
+ preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/',
+ $single_default_modifier, $mod_array);
+ for ($i = 0, $count = count($mod_array[ 0 ]); $i < $count; $i ++) {
+ if ($mod_array[ 0 ][ $i ] != ':') {
+ $modifierlist[ $key ][] = $mod_array[ 0 ][ $i ];
+ }
+ }
+ }
+ $compiler->default_modifier_list = $modifierlist;
+ }
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $compiler->default_modifier_list,
+ 'value' => $output));
+ }
+ // autoescape html
+ if ($compiler->template->smarty->escape_html) {
+ $output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
+ }
+ // loop over registered filters
+ if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) {
+ foreach ($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ] as $key =>
+ $function) {
+ if (!is_array($function)) {
+ $output = "{$function}({$output},\$_smarty_tpl)";
+ } elseif (is_object($function[ 0 ])) {
+ $output =
+ "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
+ } else {
+ $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
+ }
+ }
+ }
+ // auto loaded filters
+ if (isset($compiler->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ])) {
+ foreach ((array) $compiler->template->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ] as $name)
+ {
+ $result = $this->compile_output_filter($compiler, $name, $output);
+ if ($result !== false) {
+ $output = $result;
+ } else {
+ // not found, throw exception
+ throw new SmartyException("Unable to load filter '{$name}'");
+ }
+ }
+ }
+ foreach ($compiler->variable_filters as $filter) {
+ if (count($filter) == 1 &&
+ ($result = $this->compile_output_filter($compiler, $filter[ 0 ], $output)) !== false
+ ) {
+ $output = $result;
+ } else {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => array($filter), 'value' => $output));
+ }
+ }
+ }
+
+ $compiler->has_output = true;
+ $output = "<?php echo {$output};?>";
+ }
+
+ return $output;
+ }
+
+ /**
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param string $name name of variable filter
+ * @param string $output embedded output
+ *
+ * @return string
+ */
+ private function compile_output_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output)
+ {
+ $plugin_name = "smarty_variablefilter_{$name}";
+ $path = $compiler->smarty->loadPlugin($plugin_name);
+ if ($path) {
+ /**
+ if ($compiler->template->caching) {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'file' ] =
+ $path;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'function' ] =
+ $plugin_name;
+ } else {
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'file' ] =
+ $path;
+ $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $name ][ Smarty::FILTER_VARIABLE ][ 'function' ] =
+ $plugin_name;
+ }
+ * */
+ return "{$plugin_name}({$output},\$_smarty_tpl)";
+ } else {
+ // not found
+ return false;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
new file mode 100644
index 000000000..987bc96f3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Block
+ * Compiles code for the execution of a registered block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Block Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_Compile_Private_Block_Plugin
+{
+ /**
+ * Setup callback, parameter array and nocache mode
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param null $function
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
+ {
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) {
+ $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
+ $callback = $tag_info[ 0 ];
+ if (is_array($callback)) {
+ if (is_object($callback[ 0 ])) {
+ $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
+ $callback =
+ array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}");
+ } else {
+ $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
+ $callback =
+ array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}");
+ }
+ } else {
+ $callable = "\$_block_plugin{$this->nesting}";
+ $callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", '');
+ }
+ } else {
+ $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
+ $callback = $tag_info[ 0 ];
+ if (is_array($callback)) {
+ $callable = "array('{$callback[0]}', '{$callback[1]}')";
+ $callback = "{$callback[1]}::{$callback[1]}";
+ } else {
+ $callable = null;
+ }
+ }
+ $compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache;
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
+ $_value = str_replace("'", "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ return array($callback, $_paramsArray, $callable);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
new file mode 100644
index 000000000..7a4cbb7f7
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Function
+ * Compiles code for the execution of a registered function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the execution of a registered function
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ unset($_attr[ 'nocache' ]);
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
+ $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
+ } else {
+ $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
+ }
+ // not cachable?
+ $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[ 1 ];
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
+ $_value = str_replace("'", "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ $function = $tag_info[ 0 ];
+ // compile code
+ if (!is_array($function)) {
+ $output = "{$function}({$_params},\$_smarty_tpl)";
+ } elseif (is_object($function[ 0 ])) {
+ $output =
+ "\$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl)";
+ } else {
+ $output = "{$function[0]}::{$function[1]}({$_params},\$_smarty_tpl)";
+ }
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag('private_modifier', array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output));
+ }
+ //Does tag create output
+ $compiler->has_output = true;
+ $output = "<?php echo {$output};?>\n";
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
new file mode 100644
index 000000000..0c6be44f6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Special Smarty Variable
+ * Compiles the special $smarty variables
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile special Smarty Variable Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the special $smarty variables
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param $parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2));
+ $variable = strtolower($compiler->getId($_index[ 0 ]));
+ if ($variable === false) {
+ $compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true);
+ }
+ if (!isset($compiler->smarty->security_policy) ||
+ $compiler->smarty->security_policy->isTrustedSpecialSmartyVar($variable, $compiler)
+ ) {
+ switch ($variable) {
+ case 'foreach':
+ case 'section':
+ if (!isset(Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ])) {
+ $class = 'Smarty_Internal_Compile_' . ucfirst($variable);
+ Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ] = new $class;
+ }
+ return Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ]->compileSpecialVariable(array(), $compiler, $_index);
+ case 'capture':
+ if (class_exists('Smarty_Internal_Compile_Capture')) {
+ return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index);
+ }
+ return '';
+ case 'now':
+ return 'time()';
+ case 'cookies':
+ if (isset($compiler->smarty->security_policy) &&
+ !$compiler->smarty->security_policy->allow_super_globals
+ ) {
+ $compiler->trigger_template_error("(secure mode) super globals not permitted");
+ break;
+ }
+ $compiled_ref = '$_COOKIE';
+ break;
+ case 'get':
+ case 'post':
+ case 'env':
+ case 'server':
+ case 'session':
+ case 'request':
+ if (isset($compiler->smarty->security_policy) &&
+ !$compiler->smarty->security_policy->allow_super_globals
+ ) {
+ $compiler->trigger_template_error("(secure mode) super globals not permitted");
+ break;
+ }
+ $compiled_ref = '$_' . strtoupper($variable);
+ break;
+
+ case 'template':
+ return 'basename($_smarty_tpl->source->filepath)';
+
+ case 'template_object':
+ return '$_smarty_tpl';
+
+ case 'current_dir':
+ return 'dirname($_smarty_tpl->source->filepath)';
+
+ case 'version':
+ return "Smarty::SMARTY_VERSION";
+
+ case 'const':
+ if (isset($compiler->smarty->security_policy) &&
+ !$compiler->smarty->security_policy->allow_constants
+ ) {
+ $compiler->trigger_template_error("(secure mode) constants not permitted");
+ break;
+ }
+ if (strpos($_index[ 1 ], '$') === false && strpos($_index[ 1 ], '\'') === false) {
+ return "@constant('{$_index[1]}')";
+ } else {
+ return "@constant({$_index[1]})";
+ }
+
+ case 'config':
+ if (isset($_index[ 2 ])) {
+ return "(is_array(\$tmp = \$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])) ? \$tmp[$_index[2]] : null)";
+ } else {
+ return "\$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])";
+ }
+ case 'ldelim':
+ return "\$_smarty_tpl->smarty->left_delimiter";
+ case 'rdelim':
+ return "\$_smarty_tpl->smarty->right_delimiter";
+ default:
+ $compiler->trigger_template_error('$smarty.' . trim($_index[ 0 ], "'") . ' is not defined');
+ break;
+ }
+ if (isset($_index[ 1 ])) {
+ array_shift($_index);
+ foreach ($_index as $_ind) {
+ $compiled_ref = $compiled_ref . "[$_ind]";
+ }
+ }
+ return $compiled_ref;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
new file mode 100644
index 000000000..2e6b43c17
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Rdelim
+ * Compiles the {rdelim} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Rdelim Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {rdelim} tag
+ * This tag does output the right delimiter.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ // this tag does not return compiled code
+ $compiler->has_code = true;
+
+ return $compiler->smarty->right_delimiter;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
new file mode 100644
index 000000000..c3701fc63
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
@@ -0,0 +1,469 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Section
+ * Compiles the {section} {sectionelse} {/section} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Section Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_ForeachSection
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name', 'loop');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name', 'loop');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('start', 'step', 'max', 'show', 'properties');
+
+ /**
+ * counter
+ *
+ * @var int
+ */
+ public $counter = 0;
+
+ /**
+ * Name of this tag
+ *
+ * @var string
+ */
+ public $tagName = 'section';
+
+ /**
+ * Valid properties of $smarty.section.name.xxx variable
+ *
+ * @var array
+ */
+ public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'rownum', 'index_prev',
+ 'index_next', 'loop');
+
+ /**
+ * {section} tag has no item properties
+ *
+ * @var array
+ */
+ public $itemProperties = null;
+
+ /**
+ * {section} tag has always name attribute
+ *
+ * @var bool
+ */
+ public $isNamed = true;
+
+ /**
+ * Compiles code for the {section} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting ++;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $attributes = array('name' => $compiler->getId($_attr[ 'name' ]));
+ unset($_attr[ 'name' ]);
+ foreach ($attributes as $a => $v) {
+ if ($v === false) {
+ $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
+ }
+ }
+ $local = "\$__section_{$attributes['name']}_" . $this->counter ++ . '_';
+ $sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']";
+ $this->openTag($compiler, 'section', array('section', $compiler->nocache, $local, $sectionVar));
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+
+ $initLocal =
+ array('saved' => "isset(\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']) ? \$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}'] : false",);
+ $initNamedProperty = array();
+ $initFor = array();
+ $incFor = array();
+ $cmpFor = array();
+ $propValue = array('index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
+ 'iteration' => "{$local}iteration",
+
+ );
+ $propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,);
+ // search for used tag attributes
+ $this->scanForProperties($attributes, $compiler);
+ if (!empty($this->matchResults[ 'named' ])) {
+ $namedAttr = $this->matchResults[ 'named' ];
+ }
+ if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $namedAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ $namedAttr[ 'index' ] = true;
+ $output = "<?php\n";
+ foreach ($_attr as $attr_name => $attr_value) {
+ switch ($attr_name) {
+ case 'loop':
+ if (is_numeric($attr_value)) {
+ $v = (int) $attr_value;
+ $t = 0;
+ } else {
+ $v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))";
+ $t = 1;
+ }
+ if (isset($namedAttr[ 'loop' ])) {
+ $initNamedProperty[ 'loop' ] = "'loop' => {$v}";
+ if ($t == 1) {
+ $v = "{$sectionVar}->value['loop']";
+ }
+ } elseif ($t == 1) {
+ $initLocal[ 'loop' ] = $v;
+ $v = "{$local}loop";
+ }
+ break;
+ case 'show':
+ if (is_bool($attr_value)) {
+ $v = $attr_value ? 'true' : 'false';
+ $t = 0;
+ } else {
+ $v = "(bool) $attr_value";
+ $t = 3;
+ }
+ break;
+ case 'step':
+ if (is_numeric($attr_value)) {
+ $v = (int) $attr_value;
+ $v = ($v == 0) ? 1 : $v;
+ $t = 0;
+ break;
+ }
+ $initLocal[ 'step' ] = "((int)@$attr_value) == 0 ? 1 : (int)@$attr_value";
+ $v = "{$local}step";
+ $t = 2;
+ break;
+
+ case 'max':
+ case 'start':
+ if (is_numeric($attr_value)) {
+ $v = (int) $attr_value;
+ $t = 0;
+ break;
+ }
+ $v = "(int)@$attr_value";
+ $t = 3;
+ break;
+ }
+ if ($t == 3 && $compiler->getId($attr_value)) {
+ $t = 1;
+ }
+ $propValue[ $attr_name ] = $v;
+ $propType[ $attr_name ] = $t;
+ }
+
+ if (isset($namedAttr[ 'step' ])) {
+ $initNamedProperty[ 'step' ] = $propValue[ 'step' ];
+ }
+ if (isset($namedAttr[ 'iteration' ])) {
+ $propValue[ 'iteration' ] = "{$sectionVar}->value['iteration']";
+ }
+ $incFor[ 'iteration' ] = "{$propValue['iteration']}++";
+ $initFor[ 'iteration' ] = "{$propValue['iteration']} = 1";
+
+ if ($propType[ 'step' ] == 0) {
+ if ($propValue[ 'step' ] == 1) {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index']++";
+ } elseif ($propValue[ 'step' ] > 1) {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ } else {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] -= " . - $propValue[ 'step' ];
+ }
+ } else {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ }
+
+ if (!isset($propValue[ 'max' ])) {
+ $propValue[ 'max' ] = $propValue[ 'loop' ];
+ $propType[ 'max' ] = $propType[ 'loop' ];
+ } elseif ($propType[ 'max' ] != 0) {
+ $propValue[ 'max' ] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
+ $propType[ 'max' ] = 1;
+ } else {
+ if ($propValue[ 'max' ] < 0) {
+ $propValue[ 'max' ] = $propValue[ 'loop' ];
+ $propType[ 'max' ] = $propType[ 'loop' ];
+ }
+ }
+
+ if (!isset($propValue[ 'start' ])) {
+ $start_code =
+ array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue[ 'loop' ], 5 => ' - 1');
+ if ($propType[ 'loop' ] == 0) {
+ $start_code[ 5 ] = '';
+ $start_code[ 4 ] = $propValue[ 'loop' ] - 1;
+ }
+ if ($propType[ 'step' ] == 0) {
+ if ($propValue[ 'step' ] > 0) {
+ $start_code = array(1 => '0');
+ $propType[ 'start' ] = 0;
+ } else {
+ $start_code[ 1 ] = $start_code[ 2 ] = $start_code[ 3 ] = '';
+ $propType[ 'start' ] = $propType[ 'loop' ];
+ }
+ } else {
+ $propType[ 'start' ] = 1;
+ }
+ $propValue[ 'start' ] = join('', $start_code);
+ } else {
+ $start_code =
+ array(1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0',
+ 5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')',
+ 11 => ' : ', 12 => 'min(', 13 => $propValue[ 'start' ], 14 => ', ',
+ 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue[ 'loop' ], 17 => ' : ',
+ 18 => $propType[ 'loop' ] == 0 ? $propValue[ 'loop' ] - 1 : "{$propValue['loop']} - 1",
+ 19 => ')');
+ if ($propType[ 'step' ] == 0) {
+ $start_code[ 3 ] = $start_code[ 5 ] = $start_code[ 15 ] = $start_code[ 17 ] = '';
+ if ($propValue[ 'step' ] > 0) {
+ $start_code[ 6 ] = $start_code[ 18 ] = '';
+ } else {
+ $start_code[ 4 ] = $start_code[ 16 ] = '';
+ }
+ }
+ if ($propType[ 'start' ] == 0) {
+ if ($propType[ 'loop' ] == 0) {
+ $start_code[ 8 ] = $propValue[ 'start' ] + $propValue[ 'loop' ];
+ }
+ $propType[ 'start' ] = $propType[ 'step' ] + $propType[ 'loop' ];
+ $start_code[ 1 ] = '';
+ if ($propValue[ 'start' ] < 0) {
+ for ($i = 11; $i <= 19; $i ++) {
+ $start_code[ $i ] = '';
+ }
+ if ($propType[ 'start' ] == 0) {
+ $start_code = array(max($propValue[ 'step' ] > 0 ? 0 : - 1,
+ $propValue[ 'start' ] + $propValue[ 'loop' ]));
+ }
+ } else {
+ for ($i = 1; $i <= 11; $i ++) {
+ $start_code[ $i ] = '';
+ }
+ if ($propType[ 'start' ] == 0) {
+ $start_code =
+ array(min($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] : $propValue[ 'loop' ] - 1,
+ $propValue[ 'start' ]));
+ }
+ }
+ }
+ $propValue[ 'start' ] = join('', $start_code);
+ }
+ if ($propType[ 'start' ] != 0) {
+ $initLocal[ 'start' ] = $propValue[ 'start' ];
+ $propValue[ 'start' ] = "{$local}start";
+ }
+
+ $initFor[ 'index' ] = "{$sectionVar}->value['index'] = {$propValue['start']}";
+
+ if (!isset($_attr[ 'start' ]) && !isset($_attr[ 'step' ]) && !isset($_attr[ 'max' ])) {
+ $propValue[ 'total' ] = $propValue[ 'loop' ];
+ $propType[ 'total' ] = $propType[ 'loop' ];
+ } else {
+ $propType[ 'total' ] =
+ $propType[ 'start' ] + $propType[ 'loop' ] + $propType[ 'step' ] + $propType[ 'max' ];
+ if ($propType[ 'total' ] == 0) {
+ $propValue[ 'total' ] =
+ min(ceil(($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] - $propValue[ 'start' ] :
+ (int) $propValue[ 'start' ] + 1) / abs($propValue[ 'step' ])), $propValue[ 'max' ]);
+ } else {
+ $total_code = array(1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
+ 5 => $propValue[ 'loop' ], 6 => ' - ', 7 => $propValue[ 'start' ], 8 => ' : ',
+ 9 => $propValue[ 'start' ], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
+ 14 => $propValue[ 'step' ], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",);
+ if (!isset($propValue[ 'max' ])) {
+ $total_code[ 1 ] = $total_code[ 17 ] = '';
+ }
+ if ($propType[ 'loop' ] + $propType[ 'start' ] == 0) {
+ $total_code[ 5 ] = $propValue[ 'loop' ] - $propValue[ 'start' ];
+ $total_code[ 6 ] = $total_code[ 7 ] = '';
+ }
+ if ($propType[ 'start' ] == 0) {
+ $total_code[ 9 ] = (int) $propValue[ 'start' ] + 1;
+ $total_code[ 10 ] = '';
+ }
+ if ($propType[ 'step' ] == 0) {
+ $total_code[ 13 ] = $total_code[ 15 ] = '';
+ if ($propValue[ 'step' ] == 1 || $propValue[ 'step' ] == - 1) {
+ $total_code[ 2 ] = $total_code[ 12 ] = $total_code[ 14 ] = $total_code[ 16 ] = '';
+ } elseif ($propValue[ 'step' ] < 0) {
+ $total_code[ 14 ] = - $propValue[ 'step' ];
+ }
+ $total_code[ 4 ] = '';
+ if ($propValue[ 'step' ] > 0) {
+ $total_code[ 8 ] = $total_code[ 9 ] = $total_code[ 10 ] = '';
+ } else {
+ $total_code[ 5 ] = $total_code[ 6 ] = $total_code[ 7 ] = $total_code[ 8 ] = '';
+ }
+ }
+ $propValue[ 'total' ] = join('', $total_code);
+ }
+ }
+
+ if (isset($namedAttr[ 'loop' ])) {
+ $initNamedProperty[ 'loop' ] = "'loop' => {$propValue['total']}";
+ }
+ if (isset($namedAttr[ 'total' ])) {
+ $initNamedProperty[ 'total' ] = "'total' => {$propValue['total']}";
+ if ($propType[ 'total' ] > 0) {
+ $propValue[ 'total' ] = "{$sectionVar}->value['total']";
+ }
+ } elseif ($propType[ 'total' ] > 0) {
+ $initLocal[ 'total' ] = $propValue[ 'total' ];
+ $propValue[ 'total' ] = "{$local}total";
+ }
+
+ $cmpFor[ 'iteration' ] = "{$propValue['iteration']} <= {$propValue['total']}";
+
+ foreach ($initLocal as $key => $code) {
+ $output .= "{$local}{$key} = {$code};\n";
+ }
+
+ $_vars = 'array(' . join(', ', $initNamedProperty) . ')';
+ $output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n";
+ $cond_code = "{$propValue['total']} != 0";
+ if ($propType[ 'total' ] == 0) {
+ if ($propValue[ 'total' ] == 0) {
+ $cond_code = 'false';
+ } else {
+ $cond_code = 'true';
+ }
+ }
+ if ($propType[ 'show' ] > 0) {
+ $output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n";
+ $output .= "if ({$local}show) {\n";
+ } elseif ($propValue[ 'show' ] == 'true') {
+ $output .= "if ({$cond_code}) {\n";
+ } else {
+ $output .= "if (false) {\n";
+ }
+ $jinit = join(', ', $initFor);
+ $jcmp = join(', ', $cmpFor);
+ $jinc = join(', ', $incFor);
+ $output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n";
+ if (isset($namedAttr[ 'rownum' ])) {
+ $output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n";
+ }
+ if (isset($namedAttr[ 'index_prev' ])) {
+ $output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n";
+ }
+ if (isset($namedAttr[ 'index_next' ])) {
+ $output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n";
+ }
+ if (isset($namedAttr[ 'first' ])) {
+ $output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} == 1);\n";
+ }
+ if (isset($namedAttr[ 'last' ])) {
+ $output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} == {$propValue['total']});\n";
+ }
+ $output .= "?>";
+
+ return $output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Sectionelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {sectionelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ list($openTag, $nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section'));
+ $this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache, $local, $sectionVar));
+
+ return "<?php }} else {\n ?>";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Sectionclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/section} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting --;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+
+ list($openTag, $compiler->nocache, $local, $sectionVar) =
+ $this->closeTag($compiler, array('section', 'sectionelse'));
+
+ $output = "<?php\n";
+ if ($openTag == 'sectionelse') {
+ $output .= "}\n";
+ } else {
+ $output .= "}\n}\n";
+ }
+ $output .= "if ({$local}saved) {\n";
+ $output .= "{$sectionVar} = {$local}saved;\n";
+ $output .= "}\n";
+ $output .= "?>";
+
+ return $output;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
new file mode 100644
index 000000000..1f3ba8d48
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Setfilter
+ * Compiles code for setfilter tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Setfilter Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for setfilter tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $compiler->variable_filter_stack[] = $compiler->variable_filters;
+ $compiler->variable_filters = $parameter[ 'modifier_list' ];
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+
+ return true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Setfilterclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/setfilter} tag
+ * This tag does not generate compiled output. It resets variable filter.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ // reset variable filter to previous state
+ if (count($compiler->variable_filter_stack)) {
+ $compiler->variable_filters = array_pop($compiler->variable_filter_stack);
+ } else {
+ $compiler->variable_filters = array();
+ }
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+
+ return true;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
new file mode 100644
index 000000000..c95576596
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Shared Inheritance
+ * Shared methods for {extends} and {block} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Shared Inheritance Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase
+{
+ /**
+ * Register post compile callback to compile inheritance initialization code
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param bool|false $initChildSequence if true force child template
+ */
+ public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
+ {
+ if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
+ $compiler->registerPostCompileCallback(array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
+ array($initChildSequence), 'inheritanceInit', $initChildSequence);
+
+ $compiler->_cache[ 'inheritanceInit' ] = true;
+ }
+ }
+
+ /**
+ * Compile inheritance initialization code as prefix
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param bool|false $initChildSequence if true force child template
+ */
+ static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
+ {
+ $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " .
+ var_export($initChildSequence, true) . ");\n?>\n";
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
new file mode 100644
index 000000000..6025798c5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile While
+ * Compiles the {while} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile While Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $compiler->loopNesting ++;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->openTag($compiler, 'while', $compiler->nocache);
+
+ if (!array_key_exists("if condition", $parameter)) {
+ $compiler->trigger_template_error("missing while condition", null, true);
+ }
+
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ if (is_array($parameter[ 'if condition' ])) {
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = "{$prefixVar}";
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $_output = "<?php while ({$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ") {?>";
+ $_output .= $assignCompiler->compile($assignAttr, $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $_output = "<?php while ({$prefixVar} = " . $parameter[ 'if condition' ][ 'value' ] . ") {?>";
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+
+ return $_output;
+ } else {
+ return "<?php\n while ({$parameter['if condition']}) {?>";
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Whileclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting --;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $compiler->nocache = $this->closeTag($compiler, array('while'));
+ return "<?php }?>\n";
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
new file mode 100644
index 000000000..08aab6f4e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
@@ -0,0 +1,196 @@
+<?php
+/**
+ * Smarty Internal Plugin CompileBase
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * This class does extend all internal compile plugins
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+abstract class Smarty_Internal_CompileBase
+{
+ /**
+ * Array of names of required attribute required by tag
+ *
+ * @var array
+ */
+ public $required_attributes = array();
+
+ /**
+ * Array of names of optional attribute required by tag
+ * use array('_any') if there is no restriction of attributes names
+ *
+ * @var array
+ */
+ public $optional_attributes = array();
+
+ /**
+ * Shorttag attribute order defined by its names
+ *
+ * @var array
+ */
+ public $shorttag_order = array();
+
+ /**
+ * Array of names of valid option flags
+ *
+ * @var array
+ */
+ public $option_flags = array('nocache');
+
+ /**
+ * Mapping array for boolqn option value
+ *
+ * @var array
+ */
+ public $optionMap = array(1 => true, 0 => false, 'true' => true, 'false' => false);
+
+ /**
+ * Mapping array with attributes as key
+ *
+ * @var array
+ */
+ public $mapCache = array();
+
+ /**
+ * This function checks if the attributes passed are valid
+ * The attributes passed for the tag to compile are checked against the list of required and
+ * optional attributes. Required attributes must be present. Optional attributes are check against
+ * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
+ * as valid
+ *
+ * @param object $compiler compiler object
+ * @param array $attributes attributes applied to the tag
+ *
+ * @return array of mapped attributes for further processing
+ */
+ public function getAttributes($compiler, $attributes)
+ {
+ $_indexed_attr = array();
+ if (!isset($this->mapCache[ 'option' ])) {
+ $this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true);
+ }
+ foreach ($attributes as $key => $mixed) {
+ // shorthand ?
+ if (!is_array($mixed)) {
+ // option flag ?
+ if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) {
+ $_indexed_attr[ trim($mixed, '\'"') ] = true;
+ // shorthand attribute ?
+ } elseif (isset($this->shorttag_order[ $key ])) {
+ $_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed;
+ } else {
+ // too many shorthands
+ $compiler->trigger_template_error('too many shorthand attributes', null, true);
+ }
+ // named attribute
+ } else {
+ foreach ($mixed as $k => $v) {
+ // option flag?
+ if (isset($this->mapCache[ 'option' ][ $k ])) {
+ if (is_bool($v)) {
+ $_indexed_attr[ $k ] = $v;
+ } else {
+ if (is_string($v)) {
+ $v = trim($v, '\'" ');
+ }
+ if (isset($this->optionMap[ $v ])) {
+ $_indexed_attr[ $k ] = $this->optionMap[ $v ];
+ } else {
+ $compiler->trigger_template_error("illegal value '" . var_export($v, true) .
+ "' for option flag '{$k}'", null, true);
+ }
+ }
+ // must be named attribute
+ } else {
+ $_indexed_attr[ $k ] = $v;
+ }
+ }
+ }
+ }
+ // check if all required attributes present
+ foreach ($this->required_attributes as $attr) {
+ if (!isset($_indexed_attr[ $attr ])) {
+ $compiler->trigger_template_error("missing \"" . $attr . "\" attribute", null, true);
+ }
+ }
+ // check for not allowed attributes
+ if ($this->optional_attributes != array('_any')) {
+ if (!isset($this->mapCache[ 'all' ])) {
+ $this->mapCache[ 'all' ] =
+ array_fill_keys(array_merge($this->required_attributes, $this->optional_attributes,
+ $this->option_flags), true);
+ }
+ foreach ($_indexed_attr as $key => $dummy) {
+ if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) {
+ $compiler->trigger_template_error("unexpected \"" . $key . "\" attribute", null, true);
+ }
+ }
+ }
+ // default 'false' for all option flags not set
+ foreach ($this->option_flags as $flag) {
+ if (!isset($_indexed_attr[ $flag ])) {
+ $_indexed_attr[ $flag ] = false;
+ }
+ }
+ if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) {
+ $compiler->tag_nocache = true;
+ }
+ return $_indexed_attr;
+ }
+
+ /**
+ * Push opening tag name on stack
+ * Optionally additional data can be saved on stack
+ *
+ * @param object $compiler compiler object
+ * @param string $openTag the opening tag's name
+ * @param mixed $data optional data saved
+ */
+ public function openTag($compiler, $openTag, $data = null)
+ {
+ array_push($compiler->_tag_stack, array($openTag, $data));
+ }
+
+ /**
+ * Pop closing tag
+ * Raise an error if this stack-top doesn't match with expected opening tags
+ *
+ * @param object $compiler compiler object
+ * @param array|string $expectedTag the expected opening tag names
+ *
+ * @return mixed any type the opening tag's name or saved data
+ */
+ public function closeTag($compiler, $expectedTag)
+ {
+ if (count($compiler->_tag_stack) > 0) {
+ // get stacked info
+ list($_openTag, $_data) = array_pop($compiler->_tag_stack);
+ // open tag must match with the expected ones
+ if (in_array($_openTag, (array) $expectedTag)) {
+ if (is_null($_data)) {
+ // return opening tag
+ return $_openTag;
+ } else {
+ // return restored data
+ return $_data;
+ }
+ }
+ // wrong nesting of tags
+ $compiler->trigger_template_error("unclosed {$compiler->smarty->left_delimiter}" . $_openTag .
+ "{$compiler->smarty->right_delimiter} tag");
+
+ return;
+ }
+ // wrong nesting of tags
+ $compiler->trigger_template_error("unexpected closing tag", null, true);
+
+ return;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
new file mode 100644
index 000000000..b1ef958cd
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
@@ -0,0 +1,197 @@
+<?php
+/**
+ * Smarty Internal Plugin Config File Compiler
+ * This is the config file compiler class. It calls the lexer and parser to
+ * perform the compiling.
+ *
+ * @package Smarty
+ * @subpackage Config
+ * @author Uwe Tews
+ */
+
+/**
+ * Main config file compiler class
+ *
+ * @package Smarty
+ * @subpackage Config
+ */
+class Smarty_Internal_Config_File_Compiler
+{
+ /**
+ * Lexer class name
+ *
+ * @var string
+ */
+ public $lexer_class;
+
+ /**
+ * Parser class name
+ *
+ * @var string
+ */
+ public $parser_class;
+
+ /**
+ * Lexer object
+ *
+ * @var object
+ */
+ public $lex;
+
+ /**
+ * Parser object
+ *
+ * @var object
+ */
+ public $parser;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty object
+ */
+ public $smarty;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty_Internal_Template object
+ */
+ public $template;
+
+ /**
+ * Compiled config data sections and variables
+ *
+ * @var array
+ */
+ public $config_data = array();
+
+ /**
+ * compiled config data must always be written
+ *
+ * @var bool
+ */
+ public $write_compiled_code = true;
+
+ /**
+ * Initialize compiler
+ *
+ * @param string $lexer_class class name
+ * @param string $parser_class class name
+ * @param Smarty $smarty global instance
+ */
+ public function __construct($lexer_class, $parser_class, Smarty $smarty)
+ {
+ $this->smarty = $smarty;
+ // get required plugins
+ $this->lexer_class = $lexer_class;
+ $this->parser_class = $parser_class;
+ $this->smarty = $smarty;
+ $this->config_data[ 'sections' ] = array();
+ $this->config_data[ 'vars' ] = array();
+ }
+
+ /**
+ * Method to compile Smarty config source.
+ *
+ * @param Smarty_Internal_Template $template
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ */
+ public function compileTemplate(Smarty_Internal_Template $template)
+ {
+ $this->template = $template;
+ $this->template->compiled->file_dependency[ $this->template->source->uid ] =
+ array($this->template->source->filepath, $this->template->source->getTimeStamp(),
+ $this->template->source->type);
+ if ($this->smarty->debugging) {
+ if (!isset( $this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $this->smarty->_debug->start_compile($this->template);
+ }
+ // init the lexer/parser to compile the config file
+ /* @var Smarty_Internal_ConfigFileLexer $this->lex */
+ $this->lex = new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $template->source->getContent()) . "\n",
+ $this);
+ /* @var Smarty_Internal_ConfigFileParser $this->parser */
+ $this->parser = new $this->parser_class($this->lex, $this);
+
+ if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+ $mbEncoding = mb_internal_encoding();
+ mb_internal_encoding('ASCII');
+ } else {
+ $mbEncoding = null;
+ }
+
+ if ($this->smarty->_parserdebug) {
+ $this->parser->PrintTrace();
+ }
+ // get tokens from lexer and parse them
+ while ($this->lex->yylex()) {
+ if ($this->smarty->_parserdebug) {
+ echo "<br>Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n";
+ }
+ $this->parser->doParse($this->lex->token, $this->lex->value);
+ }
+ // finish parsing process
+ $this->parser->doParse(0, 0);
+
+ if ($mbEncoding) {
+ mb_internal_encoding($mbEncoding);
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_compile($this->template);
+ }
+ // template header code
+ $template_header =
+ "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") .
+ "\n";
+ $template_header .= " compiled from \"" . $this->template->source->filepath . "\" */ ?>\n";
+
+ $code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .
+ var_export($this->config_data, true) . '); ?>';
+ return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code);
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ *
+ * @throws SmartyCompilerException
+ */
+ public function trigger_config_file_error($args = null)
+ {
+ // get config source line which has error
+ $line = $this->lex->line;
+ if (isset($args)) {
+ // $line--;
+ }
+ $match = preg_split("/\n/", $this->lex->data);
+ $error_text =
+ "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ // expected token from parser
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[ $token ];
+ if (isset($this->lex->smarty_token_names[ $exp_token ])) {
+ // token type from lexer
+ $expect[] = '"' . $this->lex->smarty_token_names[ $exp_token ] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[ $token ];
+ }
+ }
+ // output parser error message
+ $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
+ }
+ throw new SmartyCompilerException($error_text);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
new file mode 100644
index 000000000..7869ef384
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
@@ -0,0 +1,732 @@
+<?php
+/**
+ * Smarty Internal Plugin Configfilelexer
+ *
+ * This is the lexer to break the config file source into tokens
+ *
+ * @package Smarty
+ * @subpackage Config
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty_Internal_Configfilelexer
+ *
+ * This is the config file lexer.
+ * It is generated from the smarty_internal_configfilelexer.plex file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Configfilelexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_Config_File_Compiler
+ */
+ private $compiler = null;
+
+ /**
+ * copy of config_booleanize
+ *
+ * @var bool
+ */
+ private $configBooleanize = false;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION',
+ 6 => 'TRIPPLE');
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ private $yy_global_pattern2 = null;
+
+ private $yy_global_pattern3 = null;
+
+ private $yy_global_pattern4 = null;
+
+ private $yy_global_pattern5 = null;
+
+ private $yy_global_pattern6 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param Smarty_Internal_Config_File_Compiler $compiler
+ */
+ function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[ 0 ]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ private $_yy_state = 1;
+
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ }
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 =
+ "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state START');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const START = 1;
+
+ function yy_r1_1()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+ }
+
+ function yy_r1_2()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+ }
+
+ function yy_r1_3()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
+ }
+
+ function yy_r1_4()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+ }
+
+ function yy_r1_5()
+ {
+
+ return false;
+ }
+
+ function yy_r1_6()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ }
+
+ function yy_r1_7()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_ID;
+ }
+
+ function yy_r1_8()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
+ }
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 =
+ "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const VALUE = 2;
+
+ function yy_r2_1()
+ {
+
+ return false;
+ }
+
+ function yy_r2_2()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
+ $this->yypopstate();
+ }
+
+ function yy_r2_3()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_INT;
+ $this->yypopstate();
+ }
+
+ function yy_r2_4()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+ }
+
+ function yy_r2_5()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+
+ function yy_r2_6()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+
+ function yy_r2_7()
+ {
+
+ if (!$this->configBooleanize ||
+ !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))
+ ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
+ $this->yypopstate();
+ }
+ }
+
+ function yy_r2_8()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+
+ function yy_r2_9()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->value = "";
+ $this->yypopstate();
+ }
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = "/\G([^\n]+?(?=[ \t\r]*\n))/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state NAKED_STRING_VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const NAKED_STRING_VALUE = 3;
+
+ function yy_r3_1()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state COMMENT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const COMMENT = 4;
+
+ function yy_r4_1()
+ {
+
+ return false;
+ }
+
+ function yy_r4_2()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ }
+
+ function yy_r4_3()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ $this->yypopstate();
+ }
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state SECTION');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const SECTION = 5;
+
+ function yy_r5_1()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
+ }
+
+ function yy_r5_2()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
+ $this->yypopstate();
+ }
+
+ public function yylex6()
+ {
+ if (!isset($this->yy_global_pattern6)) {
+ $this->yy_global_pattern6 = "/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state TRIPPLE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r6_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const TRIPPLE = 6;
+
+ function yy_r6_1()
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+ }
+
+ function yy_r6_2()
+ {
+
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[ 0 ][ 1 ])) {
+ $to = $match[ 0 ][ 1 ];
+ } else {
+ $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
+ }
+
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
new file mode 100644
index 000000000..b7551a2b5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
@@ -0,0 +1,1022 @@
+<?php
+
+class TPC_yyToken implements ArrayAccess
+{
+ public $string = '';
+
+ public $metadata = array();
+
+ public function __construct($s, $m = array())
+ {
+ if ($s instanceof TPC_yyToken) {
+ $this->string = $s->string;
+ $this->metadata = $s->metadata;
+ } else {
+ $this->string = (string) $s;
+ if ($m instanceof TPC_yyToken) {
+ $this->metadata = $m->metadata;
+ } elseif (is_array($m)) {
+ $this->metadata = $m;
+ }
+ }
+ }
+
+ public function __toString()
+ {
+ return $this->string;
+ }
+
+ public function offsetExists($offset)
+ {
+ return isset($this->metadata[ $offset ]);
+ }
+
+ public function offsetGet($offset)
+ {
+ return $this->metadata[ $offset ];
+ }
+
+ public function offsetSet($offset, $value)
+ {
+ if ($offset === null) {
+ if (isset($value[ 0 ])) {
+ $x = ($value instanceof TPC_yyToken) ? $value->metadata : $value;
+ $this->metadata = array_merge($this->metadata, $x);
+
+ return;
+ }
+ $offset = count($this->metadata);
+ }
+ if ($value === null) {
+ return;
+ }
+ if ($value instanceof TPC_yyToken) {
+ if ($value->metadata) {
+ $this->metadata[ $offset ] = $value->metadata;
+ }
+ } elseif ($value) {
+ $this->metadata[ $offset ] = $value;
+ }
+ }
+
+ public function offsetUnset($offset)
+ {
+ unset($this->metadata[ $offset ]);
+ }
+}
+
+class TPC_yyStackEntry
+{
+ public $stateno; /* The state-number */
+ public $major; /* The major token value. This is the code
+ ** number for the token at this stack level */
+ public $minor; /* The user-supplied minor token value. This
+ ** is the value of the token */
+}
+
+;
+
+#line 12 "../smarty/lexer/smarty_internal_configfileparser.y"
+
+/**
+ * Smarty Internal Plugin Configfileparse
+ *
+ * This is the config file parser.
+ * It is generated from the smarty_internal_configfileparser.y file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Configfileparser
+{
+ #line 25 "../smarty/lexer/smarty_internal_configfileparser.y"
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Configfilelexer
+ */
+ private $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_Config_File_Compiler
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * copy of config_overwrite property
+ *
+ * @var bool
+ */
+ private $configOverwrite = false;
+
+ /**
+ * copy of config_read_hidden property
+ *
+ * @var bool
+ */
+ private $configReadHidden = false;
+
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = Array('\\' => '\\', '\'' => '\'');
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Configfilelexer $lex
+ * @param Smarty_Internal_Config_File_Compiler $compiler
+ */
+ function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->smarty;
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = "";
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[ 0 ] === '\\') {
+ if (isset(self::$escapes_single[ $s[ 1 ] ])) {
+ $s = self::$escapes_single[ $s[ 1 ] ];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ }
+
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ }
+
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(Array $var, Array &$target_array)
+ {
+ $key = $var[ "key" ];
+ $value = $var[ "value" ];
+
+ if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) {
+ $target_array[ 'vars' ][ $key ] = $value;
+ } else {
+ settype($target_array[ 'vars' ][ $key ], 'array');
+ $target_array[ 'vars' ][ $key ][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(Array $vars)
+ {
+ if (!isset($this->compiler->config_data[ 'vars' ])) {
+ $this->compiler->config_data[ 'vars' ] = Array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, Array $vars)
+ {
+ if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) {
+ $this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = Array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]);
+ }
+ }
+
+ const TPC_OPENB = 1;
+
+ const TPC_SECTION = 2;
+
+ const TPC_CLOSEB = 3;
+
+ const TPC_DOT = 4;
+
+ const TPC_ID = 5;
+
+ const TPC_EQUAL = 6;
+
+ const TPC_FLOAT = 7;
+
+ const TPC_INT = 8;
+
+ const TPC_BOOL = 9;
+
+ const TPC_SINGLE_QUOTED_STRING = 10;
+
+ const TPC_DOUBLE_QUOTED_STRING = 11;
+
+ const TPC_TRIPPLE_QUOTES = 12;
+
+ const TPC_TRIPPLE_TEXT = 13;
+
+ const TPC_TRIPPLE_QUOTES_END = 14;
+
+ const TPC_NAKED_STRING = 15;
+
+ const TPC_OTHER = 16;
+
+ const TPC_NEWLINE = 17;
+
+ const TPC_COMMENTSTART = 18;
+
+ const YY_NO_ACTION = 60;
+
+ const YY_ACCEPT_ACTION = 59;
+
+ const YY_ERROR_ACTION = 58;
+
+ const YY_SZ_ACTTAB = 38;
+
+ static public $yy_action = array(29, 30, 34, 33, 24, 13, 19, 25, 35, 21, 59, 8, 3, 1, 20, 12, 14, 31, 20, 12, 15,
+ 17, 23, 18, 27, 26, 4, 5, 6, 32, 2, 11, 28, 22, 16, 9, 7, 10,);
+
+ static public $yy_lookahead = array(7, 8, 9, 10, 11, 12, 5, 27, 15, 16, 20, 21, 23, 23, 17, 18, 13, 14, 17, 18, 15,
+ 2, 17, 4, 25, 26, 6, 3, 3, 14, 23, 1, 24, 17, 2, 25, 22, 25,);
+
+ const YY_SHIFT_USE_DFLT = - 8;
+
+ const YY_SHIFT_MAX = 19;
+
+ static public $yy_shift_ofst = array(- 8, 1, 1, 1, - 7, - 3, - 3, 30, - 8, - 8, - 8, 19, 5, 3, 15, 16, 24, 25, 32,
+ 20,);
+
+ const YY_REDUCE_USE_DFLT = - 21;
+
+ const YY_REDUCE_MAX = 10;
+
+ static public $yy_reduce_ofst = array(- 10, - 1, - 1, - 1, - 20, 10, 12, 8, 14, 7, - 11,);
+
+ static public $yyExpectedTokens = array(array(), array(5, 17, 18,), array(5, 17, 18,), array(5, 17, 18,),
+ array(7, 8, 9, 10, 11, 12, 15, 16,), array(17, 18,), array(17, 18,),
+ array(1,), array(), array(), array(), array(2, 4,), array(15, 17,),
+ array(13, 14,), array(14,), array(17,), array(3,), array(3,), array(2,),
+ array(6,), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(),);
+
+ static public $yy_default = array(44, 37, 41, 40, 58, 58, 58, 36, 39, 44, 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 55, 54, 57, 56, 50, 45, 43, 42, 38, 46, 47, 52, 51, 49, 48, 53,);
+
+ const YYNOCODE = 29;
+
+ const YYSTACKDEPTH = 100;
+
+ const YYNSTATE = 36;
+
+ const YYNRULE = 22;
+
+ const YYERRORSYMBOL = 19;
+
+ const YYERRSYMDT = 'yy0';
+
+ const YYFALLBACK = 0;
+
+ public static $yyFallback = array();
+
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ public $yyTraceFILE;
+
+ public $yyTracePrompt;
+
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array('$', 'OPENB', 'SECTION', 'CLOSEB', 'DOT', 'ID', 'EQUAL', 'FLOAT', 'INT', 'BOOL',
+ 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT',
+ 'TRIPPLE_QUOTES_END', 'NAKED_STRING', 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list', 'section', 'newline', 'var', 'value',);
+
+ public static $yyRuleName = array('start ::= global_vars sections', 'global_vars ::= var_list',
+ 'sections ::= sections section', 'sections ::=',
+ 'section ::= OPENB SECTION CLOSEB newline var_list',
+ 'section ::= OPENB DOT SECTION CLOSEB newline var_list',
+ 'var_list ::= var_list newline', 'var_list ::= var_list var', 'var_list ::=',
+ 'var ::= ID EQUAL value', 'value ::= FLOAT', 'value ::= INT', 'value ::= BOOL',
+ 'value ::= SINGLE_QUOTED_STRING', 'value ::= DOUBLE_QUOTED_STRING',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END', 'value ::= NAKED_STRING',
+ 'value ::= OTHER', 'newline ::= NEWLINE', 'newline ::= COMMENTSTART NEWLINE',
+ 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',);
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[ $tokenType ];
+ } else {
+ return "Unknown";
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default:
+ break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx --;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ $expected = self::$yyExpectedTokens[ $state ];
+ if (isset($res3[ $state ][ $token ])) {
+ if ($res3[ $state ][ $token ]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done ++ == 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset(self::$yyExpectedTokens[ $nextstate ])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
+ if (isset($res4[ $nextstate ][ $token ])) {
+ if ($res4[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[ $nextstate ][ $token ] =
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
+ ) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx ++;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ }
+ while (true);
+ }
+ break;
+ }
+ while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ if (isset($res[ $state ][ $token ])) {
+ if ($res[ $state ][ $token ]) {
+ return true;
+ }
+ } else {
+ if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done ++ == 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset($res2[ $nextstate ][ $token ])) {
+ if ($res2[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
+ in_array($token, self::$yyExpectedTokens[ $nextstate ],
+ true))
+ ) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx ++;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ }
+ while (true);
+ }
+ break;
+ }
+ while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[ $this->yyidx ]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[ $stateno ])) {
+ // no shift actions
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_shift_ofst[ $stateno ];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead == self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
+ ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
+ ) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
+ $this->yyTokenName[ $iFallback ] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_reduce_ofst[ $stateno ];
+ if ($i == self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead == self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx ++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx --;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ #line 239 "../smarty/lexer/smarty_internal_configfileparser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
+
+ return;
+ }
+ $yytos = new TPC_yyStackEntry;
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i ++) {
+ fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
+ }
+ fwrite($this->yyTraceFILE, "\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(array(0 => 20, 1 => 2), array(0 => 21, 1 => 1), array(0 => 22, 1 => 2),
+ array(0 => 22, 1 => 0), array(0 => 24, 1 => 5), array(0 => 24, 1 => 6),
+ array(0 => 23, 1 => 2), array(0 => 23, 1 => 2), array(0 => 23, 1 => 0),
+ array(0 => 26, 1 => 3), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 3), array(0 => 27, 1 => 2), array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1), array(0 => 25, 1 => 1), array(0 => 25, 1 => 2),
+ array(0 => 25, 1 => 3),);
+
+ public static $yyReduceMap = array(0 => 0, 2 => 0, 3 => 0, 19 => 0, 20 => 0, 21 => 0, 1 => 1, 4 => 4, 5 => 5,
+ 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 14 => 14,
+ 15 => 15, 16 => 16, 17 => 17, 18 => 17,);
+
+ #line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r0()
+ {
+ $this->_retvalue = null;
+ }
+
+ #line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r1()
+ {
+ $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = null;
+ }
+
+ #line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r4()
+ {
+ $this->add_section_vars($this->yystack[ $this->yyidx + - 3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = null;
+ }
+
+ #line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r5()
+ {
+ if ($this->configReadHidden) {
+ $this->add_section_vars($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ $this->_retvalue = null;
+ }
+
+ #line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r6()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r7()
+ {
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, Array($this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r8()
+ {
+ $this->_retvalue = Array();
+ }
+
+ #line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r9()
+ {
+ $this->_retvalue = Array("key" => $this->yystack[ $this->yyidx + - 2 ]->minor,
+ "value" => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r10()
+ {
+ $this->_retvalue = (float) $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r11()
+ {
+ $this->_retvalue = (int) $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r12()
+ {
+ $this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r13()
+ {
+ $this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r14()
+ {
+ $this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r15()
+ {
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r16()
+ {
+ $this->_retvalue = '';
+ }
+
+ #line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
+ function yy_r17()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[ $yyruleno ]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[ $yyruleno ])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i --) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx ++;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[ $this->yyidx ] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+ #line 232 "../smarty/lexer/smarty_internal_configfileparser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ #line 225 "../smarty/lexer/smarty_internal_configfileparser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = - 1;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor == 0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt --;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact == self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[ $this->yyidx ]->major;
+ if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor == 0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx != self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ }
+ while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
new file mode 100644
index 000000000..fd9c3020b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
@@ -0,0 +1,285 @@
+<?php
+/**
+ * Smarty Internal Plugin Data
+ * This file contains the basic classes and methods for template and variable creation
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Base class with template and variable methods
+ *
+ * @package Smarty
+ * @subpackage Template
+ *
+ * @property int $scope
+ * @property Smarty $smarty
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method mixed getConfigVariable(string $varName, bool $errorEnable = true)
+ * @method mixed getConfigVars(string $varName = null, bool $searchParents = true)
+ * @method mixed getGlobal(string $varName = null)
+ * @method mixed getStreamVariable(string $variable)
+ * @method Smarty_Internal_Data clearAssign(mixed $tpl_var)
+ * @method Smarty_Internal_Data clearAllAssign()
+ * @method Smarty_Internal_Data clearConfig(string $varName = null)
+ * @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local')
+ */
+class Smarty_Internal_Data
+{
+ /**
+ * This object type (Smarty = 1, template = 2, data = 4)
+ *
+ * @var int
+ */
+ public $_objType = 4;
+
+ /**
+ * name of class used for templates
+ *
+ * @var string
+ */
+ public $template_class = 'Smarty_Internal_Template';
+
+ /**
+ * template variables
+ *
+ * @var Smarty_Variable[]
+ */
+ public $tpl_vars = array();
+
+ /**
+ * parent template (if any)
+ *
+ * @var Smarty|Smarty_Internal_Template|Smarty_Internal_Data
+ */
+ public $parent = null;
+
+ /**
+ * configuration settings
+ *
+ * @var string[]
+ */
+ public $config_vars = array();
+
+ /**
+ * extension handler
+ *
+ * @var Smarty_Internal_Extension_Handler
+ */
+ public $ext = null;
+
+ /**
+ * Smarty_Internal_Data constructor.
+ *
+ * Install extension handler
+ */
+ public function __construct()
+ {
+ $this->ext = new Smarty_Internal_Extension_Handler();
+ $this->ext->objType = $this->_objType;
+ }
+
+ /**
+ * assigns a Smarty variable
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for
+ * chaining
+ */
+ public function assign($tpl_var, $value = null, $nocache = false)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $_key => $_val) {
+ $this->assign($_key, $_val, $nocache);
+ }
+ } else {
+ if ($tpl_var != '') {
+ if ($this->_objType === 2) {
+ /** @var Smarty_Internal_Template $this */
+ $this->_assignInScope($tpl_var, $value, $nocache);
+ } else {
+ $this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache);
+ }
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * appends values to template variables
+ *
+ * @api Smarty::append()
+ * @link http://www.smarty.net/docs/en/api.append.tpl
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to append
+ * @param bool $merge flag if array elements shall be merged
+ * @param bool $nocache if true any output of this variable will
+ * be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function append($tpl_var, $value = null, $merge = false, $nocache = false)
+ {
+ return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache);
+ }
+
+ /**
+ * assigns a global Smarty variable
+ *
+ * @param string $varName the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function assignGlobal($varName, $value = null, $nocache = false)
+ {
+ return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache);
+ }
+
+ /**
+ * appends values to template variables by reference
+ *
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to append
+ * @param boolean $merge flag if array elements shall be merged
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function appendByRef($tpl_var, &$value, $merge = false)
+ {
+ return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge);
+ }
+
+ /**
+ * assigns values to template variables by reference
+ *
+ * @param string $tpl_var the template variable name
+ * @param $value
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function assignByRef($tpl_var, &$value, $nocache = false)
+ {
+ return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache);
+ }
+
+ /**
+ * Returns a single or all template variables
+ *
+ * @api Smarty::getTemplateVars()
+ * @link http://www.smarty.net/docs/en/api.get.template.vars.tpl
+ *
+ * @param string $varName variable name or null
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param bool $searchParents include parent templates?
+ *
+ * @return mixed variable value or or array of variables
+ */
+ public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
+ {
+ return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents);
+ }
+
+ /**
+ * gets the object of a Smarty variable
+ *
+ * @param string $variable the name of the Smarty variable
+ * @param Smarty_Internal_Data $_ptr optional pointer to data object
+ * @param boolean $searchParents search also in parent data
+ * @param bool $error_enable
+ *
+ * @return Smarty_Variable|Smarty_Undefined_Variable the object of the variable
+ * @deprecated since 3.1.28 please use Smarty_Internal_Data::getTemplateVars() instead.
+ */
+ public function getVariable($variable = null, Smarty_Internal_Data $_ptr = null, $searchParents = true,
+ $error_enable = true)
+ {
+ return $this->ext->getTemplateVars->_getVariable($this, $variable, $_ptr, $searchParents, $error_enable);
+ }
+
+ /**
+ * Follow the parent chain an merge template and config variables
+ *
+ * @param \Smarty_Internal_Data|null $data
+ */
+ public function _mergeVars(Smarty_Internal_Data $data = null)
+ {
+ if (isset($data)) {
+ if (!empty($this->tpl_vars)) {
+ $data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars);
+ }
+ if (!empty($this->config_vars)) {
+ $data->config_vars = array_merge($this->config_vars, $data->config_vars);
+ }
+ } else {
+ $data = $this;
+ }
+ if (isset($this->parent)) {
+ $this->parent->_mergeVars($data);
+ }
+ }
+
+ /**
+ * Return true if this instance is a Data obj
+ *
+ * @return bool
+ */
+ public function _isDataObj()
+ {
+ return $this->_objType === 4;
+ }
+
+ /**
+ * Return true if this instance is a template obj
+ *
+ * @return bool
+ */
+ public function _isTplObj()
+ {
+ return $this->_objType === 2;
+ }
+
+ /**
+ * Return true if this instance is a Smarty obj
+ *
+ * @return bool
+ */
+ public function _isSmartyObj()
+ {
+ return $this->_objType === 1;
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function _getSmartyObj()
+ {
+ return $this->smarty;
+ }
+
+ /**
+ * Handle unknown class methods
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ return $this->ext->_callExternalMethod($this, $name, $args);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
new file mode 100644
index 000000000..f16bd3fb1
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
@@ -0,0 +1,426 @@
+<?php
+/**
+ * Smarty Internal Plugin Debug
+ * Class to collect data for the Smarty Debugging Console
+ *
+ * @package Smarty
+ * @subpackage Debug
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Debug Class
+ *
+ * @package Smarty
+ * @subpackage Debug
+ */
+class Smarty_Internal_Debug extends Smarty_Internal_Data
+{
+ /**
+ * template data
+ *
+ * @var array
+ */
+ public $template_data = array();
+
+ /**
+ * List of uid's which shall be ignored
+ *
+ * @var array
+ */
+ public $ignore_uid = array();
+
+ /**
+ * Index of display() and fetch() calls
+ *
+ * @var int
+ */
+ public $index = 0;
+
+ /**
+ * Counter for window offset
+ *
+ * @var int
+ */
+ public $offset = 0;
+
+ /**
+ * Start logging template
+ *
+ * @param \Smarty_Internal_Template $template template
+ * @param null $mode true: display false: fetch null: subtemplate
+ */
+ public function start_template(Smarty_Internal_Template $template, $mode = null)
+ {
+ if (isset($mode) && !$template->_isSubTpl()) {
+ $this->index ++;
+ $this->offset ++;
+ $this->template_data[ $this->index ] = null;
+ }
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function end_template(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ];
+ //$this->template_data[$this->index][$key]['properties'] = $template->properties;
+ }
+
+ /**
+ * Start logging of compile time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function start_compile(Smarty_Internal_Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ if (!empty($template->compiler->trace_uid)) {
+ $key = $template->compiler->trace_uid;
+ if (!isset($this->template_data[ $this->index ][ $key ])) {
+ if (isset($_is_stringy[ $template->source->type ])) {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] =
+ '\'' . substr($template->source->name, 0, 25) . '...\'';
+ } else {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
+ }
+ } else {
+ if (isset($this->ignore_uid[ $template->source->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function end_compile(Smarty_Internal_Template $template)
+ {
+ if (!empty($template->compiler->trace_uid)) {
+ $key = $template->compiler->trace_uid;
+ } else {
+ if (isset($this->ignore_uid[ $template->source->uid ])) {
+ return;
+ }
+
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of render time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function start_render(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function end_render(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of cache time
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function start_cache(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function end_cache(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Register template object
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function register_template(Smarty_Internal_Template $template)
+ {
+ }
+
+ /**
+ * Register data object
+ *
+ * @param \Smarty_Data $data data object
+ */
+ public static function register_data(Smarty_Data $data)
+ {
+ }
+
+ /**
+ * Opens a window for the Smarty Debugging Console and display the data
+ *
+ * @param Smarty_Internal_Template|Smarty $obj object to debug
+ * @param bool $full
+ */
+ public function display_debug($obj, $full = false)
+ {
+ if (!$full) {
+ $this->offset ++;
+ $savedIndex = $this->index;
+ $this->index = 9999;
+ }
+ $smarty = $obj->_getSmartyObj();
+ // create fresh instance of smarty for displaying the debug console
+ // to avoid problems if the application did overload the Smarty class
+ $debObj = new Smarty();
+ // copy the working dirs from application
+ $debObj->setCompileDir($smarty->getCompileDir());
+ // init properties by hand as user may have edited the original Smarty class
+ $debObj->setPluginsDir(is_dir(__DIR__ . '/../plugins') ? __DIR__ . '/../plugins' : $smarty->getPluginsDir());
+ $debObj->force_compile = false;
+ $debObj->compile_check = true;
+ $debObj->left_delimiter = '{';
+ $debObj->right_delimiter = '}';
+ $debObj->security_policy = null;
+ $debObj->debugging = false;
+ $debObj->debugging_ctrl = 'NONE';
+ $debObj->error_reporting = E_ALL & ~E_NOTICE;
+ $debObj->debug_tpl = isset($smarty->debug_tpl) ? $smarty->debug_tpl : 'file:' . __DIR__ . '/../debug.tpl';
+ $debObj->registered_plugins = array();
+ $debObj->registered_resources = array();
+ $debObj->registered_filters = array();
+ $debObj->autoload_filters = array();
+ $debObj->default_modifiers = array();
+ $debObj->escape_html = true;
+ $debObj->caching = false;
+ $debObj->compile_id = null;
+ $debObj->cache_id = null;
+ // prepare information of assigned variables
+ $ptr = $this->get_debug_vars($obj);
+ $_assigned_vars = $ptr->tpl_vars;
+ ksort($_assigned_vars);
+ $_config_vars = $ptr->config_vars;
+ ksort($_config_vars);
+ $debugging = $smarty->debugging;
+
+ $_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj);
+ if ($obj->_isTplObj()) {
+ $_template->assign('template_name', $obj->source->type . ':' . $obj->source->name);
+ }
+ if ($obj->_objType == 1 || $full) {
+ $_template->assign('template_data', $this->template_data[ $this->index ]);
+ } else {
+ $_template->assign('template_data', null);
+ }
+ $_template->assign('assigned_vars', $_assigned_vars);
+ $_template->assign('config_vars', $_config_vars);
+ $_template->assign('execution_time', microtime(true) - $smarty->start_time);
+ $_template->assign('display_mode', $debugging == 2 || !$full);
+ $_template->assign('offset', $this->offset * 50);
+ echo $_template->fetch();
+ if (isset($full)) {
+ $this->index --;
+ }
+ if (!$full) {
+ $this->index = $savedIndex;
+ }
+ }
+
+ /**
+ * Recursively gets variables from all template/data scopes
+ *
+ * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
+ *
+ * @return StdClass
+ */
+ public function get_debug_vars($obj)
+ {
+ $config_vars = array();
+ foreach ($obj->config_vars as $key => $var) {
+ $config_vars[ $key ][ 'value' ] = $var;
+ if ($obj->_isTplObj()) {
+ $config_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
+ } elseif ($obj->_isDataObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
+ } else {
+ $config_vars[ $key ][ 'scope' ] = 'Smarty object';
+ }
+ }
+ $tpl_vars = array();
+ foreach ($obj->tpl_vars as $key => $var) {
+ foreach ($var as $varkey => $varvalue) {
+ if ($varkey == 'value') {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ } else {
+ if ($varkey == 'nocache') {
+ if ($varvalue == true) {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ }
+ } else {
+ if ($varkey != 'scope' || $varvalue !== 0) {
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
+ }
+ }
+ }
+ }
+ if ($obj->_isTplObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
+ } elseif ($obj->_isDataObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
+ } else {
+ $tpl_vars[ $key ][ 'scope' ] = 'Smarty object';
+ }
+ }
+
+ if (isset($obj->parent)) {
+ $parent = $this->get_debug_vars($obj->parent);
+ foreach ($parent->tpl_vars as $name => $pvar) {
+ if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
+
+ foreach ($parent->config_vars as $name => $pvar) {
+ if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $config_vars = array_merge($parent->config_vars, $config_vars);
+ } else {
+ foreach (Smarty::$global_tpl_vars as $key => $var) {
+ if (!array_key_exists($key, $tpl_vars)) {
+ foreach ($var as $varkey => $varvalue) {
+ if ($varkey == 'value') {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ } else {
+ if ($varkey == 'nocache') {
+ if ($varvalue == true) {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ }
+ } else {
+ if ($varkey != 'scope' || $varvalue !== 0) {
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
+ }
+ }
+ }
+ }
+ $tpl_vars[ $key ][ 'scope' ] = 'Global';
+ }
+ }
+ }
+
+ return (object) array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
+ }
+
+ /**
+ * Return key into $template_data for template
+ *
+ * @param \Smarty_Internal_Template $template template object
+ *
+ * @return string key into $template_data
+ */
+ private function get_key(Smarty_Internal_Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ // calculate Uid if not already done
+ if ($template->source->uid == '') {
+ $template->source->filepath;
+ }
+ $key = $template->source->uid;
+ if (isset($this->template_data[ $this->index ][ $key ])) {
+ return $key;
+ } else {
+ if (isset($_is_stringy[ $template->source->type ])) {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] =
+ '\'' . substr($template->source->name, 0, 25) . '...\'';
+ } else {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0;
+
+ return $key;
+ }
+ }
+
+ /**
+ * Ignore template
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function ignore(Smarty_Internal_Template $template)
+ {
+ // calculate Uid if not already done
+ if ($template->source->uid == '') {
+ $template->source->filepath;
+ }
+ $this->ignore_uid[ $template->source->uid ] = true;
+ }
+
+ /**
+ * handle 'URL' debugging mode
+ *
+ * @param Smarty $smarty
+ */
+ public function debugUrl(Smarty $smarty)
+ {
+ if (isset($_SERVER[ 'QUERY_STRING' ])) {
+ $_query_string = $_SERVER[ 'QUERY_STRING' ];
+ } else {
+ $_query_string = '';
+ }
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
+ // enable debugging for this browser session
+ setcookie('SMARTY_DEBUG', true);
+ $smarty->debugging = true;
+ } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
+ // disable debugging for this browser session
+ setcookie('SMARTY_DEBUG', false);
+ $smarty->debugging = false;
+ } else {
+ // enable debugging for this page
+ $smarty->debugging = true;
+ }
+ } else {
+ if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) {
+ $smarty->debugging = true;
+ }
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
new file mode 100644
index 000000000..340e6dee1
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
@@ -0,0 +1,171 @@
+<?php
+
+/**
+ * Smarty Extension handler
+ *
+ * Load extensions dynamically
+ *
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ * Runtime extensions
+ * @property Smarty_Internal_Runtime_CacheModify $_cacheModify
+ * @property Smarty_Internal_Runtime_CacheResourceFile $_cacheResourceFile
+ * @property Smarty_Internal_Runtime_Capture $_capture
+ * @property Smarty_Internal_Runtime_CodeFrame $_codeFrame
+ * @property Smarty_Internal_Runtime_FilterHandler $_filterHandler
+ * @property Smarty_Internal_Runtime_Foreach $_foreach
+ * @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath
+ * @property Smarty_Internal_Runtime_Make_Nocache $_make_nocache
+ * @property Smarty_Internal_Runtime_UpdateCache $_updateCache
+ * @property Smarty_Internal_Runtime_UpdateScope $_updateScope
+ * @property Smarty_Internal_Runtime_TplFunction $_tplFunction
+ * @property Smarty_Internal_Runtime_WriteFile $_writeFile
+ *
+ * Method extensions
+ * @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars
+ * @property Smarty_Internal_Method_Append $append
+ * @property Smarty_Internal_Method_AppendByRef $appendByRef
+ * @property Smarty_Internal_Method_AssignGlobal $assignGlobal
+ * @property Smarty_Internal_Method_AssignByRef $assignByRef
+ * @property Smarty_Internal_Method_LoadFilter $loadFilter
+ * @property Smarty_Internal_Method_LoadPlugin $loadPlugin
+ * @property Smarty_Internal_Method_RegisterFilter $registerFilter
+ * @property Smarty_Internal_Method_RegisterObject $registerObject
+ * @property Smarty_Internal_Method_RegisterPlugin $registerPlugin
+ */
+class Smarty_Internal_Extension_Handler
+{
+
+ public $objType = null;
+
+ /**
+ * Cache for property information from generic getter/setter
+ * Preloaded with names which should not use with generic getter/setter
+ *
+ * @var array
+ */
+ private $_property_info = array('AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0,
+ 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0,
+ 'TemplateVars' => 0,);#
+
+ private $resolvedProperties = array();
+
+ /**
+ * Call external Method
+ *
+ * @param \Smarty_Internal_Data $data
+ * @param string $name external method names
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args)
+ {
+ /* @var Smarty $data ->smarty */
+ $smarty = isset($data->smarty) ? $data->smarty : $data;
+ if (!isset($smarty->ext->$name)) {
+ $class = 'Smarty_Internal_Method_' . $this->upperCase($name);
+ if (preg_match('/^(set|get)([A-Z].*)$/', $name, $match)) {
+ $pn = '';
+ if (!isset($this->_property_info[ $prop = $match[ 2 ] ])) {
+ // convert camel case to underscored name
+ $this->resolvedProperties[ $prop ] = $pn = strtolower(join('_',
+ preg_split('/([A-Z][^A-Z]*)/', $prop,
+ - 1, PREG_SPLIT_NO_EMPTY |
+ PREG_SPLIT_DELIM_CAPTURE)));
+ $this->_property_info[ $prop ] =
+ property_exists($data, $pn) ? 1 : ($data->_isTplObj() && property_exists($smarty, $pn) ? 2 : 0);
+ }
+ if ($this->_property_info[ $prop ]) {
+ $pn = $this->resolvedProperties[ $prop ];
+ if ($match[ 1 ] == 'get') {
+ return $this->_property_info[ $prop ] == 1 ? $data->$pn : $data->smarty->$pn;
+ } else {
+ return $this->_property_info[ $prop ] == 1 ? $data->$pn = $args[ 0 ] :
+ $data->smarty->$pn = $args[ 0 ];
+ }
+ } elseif (!class_exists($class)) {
+ throw new SmartyException("property '$pn' does not exist.");
+ }
+ }
+ if (class_exists($class)) {
+ $callback = array($smarty->ext->$name = new $class(), $name);
+ }
+ } else {
+ $callback = array($smarty->ext->$name, $name);
+ }
+ array_unshift($args, $data);
+ if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) {
+ return call_user_func_array($callback, $args);
+ }
+ return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
+ }
+
+ /**
+ * Make first character of name parts upper case
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public function upperCase($name)
+ {
+ $_name = explode('_', $name);
+ $_name = array_map('ucfirst', $_name);
+ return implode('_', $_name);
+ }
+
+ /**
+ * set extension property
+ *
+ * @param string $property_name property name
+ * @param mixed $value value
+ *
+ * @throws SmartyException
+ */
+ public function __set($property_name, $value)
+ {
+ $this->$property_name = $value;
+ }
+
+ /**
+ * get extension object
+ *
+ * @param string $property_name property name
+ *
+ * @return mixed|Smarty_Template_Cached
+ * @throws SmartyException
+ */
+ public function __get($property_name)
+ {
+ // object properties of runtime template extensions will start with '_'
+ if ($property_name[ 0 ] == '_') {
+ $class = 'Smarty_Internal_Runtime' . $this->upperCase($property_name);
+ } else {
+ $class = 'Smarty_Internal_Method_' . $this->upperCase($property_name);
+ }
+ if (!class_exists($class)) {
+ return $this->$property_name = new Smarty_Internal_Undefined($class);
+ }
+ return $this->$property_name = new $class();
+ }
+
+ /**
+ * Call error handler for undefined method
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), array($this));
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
new file mode 100644
index 000000000..3eef8a28c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Smarty Method AddAutoloadFilters
+ *
+ * Smarty::addAutoloadFilters() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_AddAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters
+{
+
+ /**
+ * Add autoload filters
+ *
+ * @api Smarty::setAutoloadFilters()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array $filters filters to load automatically
+ * @param string $type "pre", "output", … specify the
+ * filter type to set. Defaults to
+ * none treating $filters' keys as
+ * the appropriate types
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function addAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if ($type !== null) {
+ $this->_checkFilterType($type);
+ if (!empty($smarty->autoload_filters[ $type ])) {
+ $smarty->autoload_filters[ $type ] = array_merge($smarty->autoload_filters[ $type ], (array) $filters);
+ } else {
+ $smarty->autoload_filters[ $type ] = (array) $filters;
+ }
+ } else {
+ foreach ((array) $filters as $type => $value) {
+ $this->_checkFilterType($type);
+ if (!empty($smarty->autoload_filters[ $type ])) {
+ $smarty->autoload_filters[ $type ] =
+ array_merge($smarty->autoload_filters[ $type ], (array) $value);
+ } else {
+ $smarty->autoload_filters[ $type ] = (array) $value;
+ }
+ }
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
new file mode 100644
index 000000000..afb0b68d5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Smarty Method AddDefaultModifiers
+ *
+ * Smarty::addDefaultModifiers() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_AddDefaultModifiers
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Add default modifiers
+ *
+ * @api Smarty::addDefaultModifiers()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array|string $modifiers modifier or list of modifiers
+ * to add
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function addDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (is_array($modifiers)) {
+ $smarty->default_modifiers = array_merge($smarty->default_modifiers, $modifiers);
+ } else {
+ $smarty->default_modifiers[] = $modifiers;
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
new file mode 100644
index 000000000..af6935919
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * Smarty Method Append
+ *
+ * Smarty::append() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_Append
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * appends values to template variables
+ *
+ * @api Smarty::append()
+ * @link http://www.smarty.net/docs/en/api.append.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to append
+ * @param bool $merge flag if array elements shall be merged
+ * @param bool $nocache if true any output of this variable will
+ * be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function append(Smarty_Internal_Data $data, $tpl_var, $value = null, $merge = false, $nocache = false)
+ {
+ if (is_array($tpl_var)) {
+ // $tpl_var is an array, ignore $value
+ foreach ($tpl_var as $_key => $_val) {
+ if ($_key != '') {
+ $this->append($data, $_key, $_val, $merge, $nocache);
+ }
+ }
+ } else {
+ if ($tpl_var != '' && isset($value)) {
+ if (!isset($data->tpl_vars[ $tpl_var ])) {
+ $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false);
+ if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
+ } else {
+ $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst;
+ }
+ }
+ if (!(is_array($data->tpl_vars[ $tpl_var ]->value) ||
+ $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess)
+ ) {
+ settype($data->tpl_vars[ $tpl_var ]->value, 'array');
+ }
+ if ($merge && is_array($value)) {
+ foreach ($value as $_mkey => $_mval) {
+ $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval;
+ }
+ } else {
+ $data->tpl_vars[ $tpl_var ]->value[] = $value;
+ }
+ }
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
+ }
+ }
+ return $data;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
new file mode 100644
index 000000000..532ac9509
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Smarty Method AppendByRef
+ *
+ * Smarty::appendByRef() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_AppendByRef
+{
+
+ /**
+ * appends values to template variables by reference
+ *
+ * @api Smarty::appendByRef()
+ * @link http://www.smarty.net/docs/en/api.append.by.ref.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to append
+ * @param bool $merge flag if array elements shall be merged
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false)
+ {
+ if ($tpl_var != '' && isset($value)) {
+ if (!isset($data->tpl_vars[ $tpl_var ])) {
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable();
+ }
+ if (!is_array($data->tpl_vars[ $tpl_var ]->value)) {
+ settype($data->tpl_vars[ $tpl_var ]->value, 'array');
+ }
+ if ($merge && is_array($value)) {
+ foreach ($value as $_key => $_val) {
+ $data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ];
+ }
+ } else {
+ $data->tpl_vars[ $tpl_var ]->value[] = &$value;
+ }
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
+ }
+ }
+ return $data;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
new file mode 100644
index 000000000..0060bbc5f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Smarty Method AssignByRef
+ *
+ * Smarty::assignByRef() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_AssignByRef
+{
+
+ /**
+ * assigns values to template variables by reference
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $tpl_var the template variable name
+ * @param $value
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function assignByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $nocache)
+ {
+ if ($tpl_var != '') {
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
+ $data->tpl_vars[ $tpl_var ]->value = &$value;
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
+ }
+ }
+ return $data;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
new file mode 100644
index 000000000..3c2b26049
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * Smarty Method AssignGlobal
+ *
+ * Smarty::assignGlobal() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_AssignGlobal
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * assigns a global Smarty variable
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $varName the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function assignGlobal(Smarty_Internal_Data $data, $varName, $value = null, $nocache = false)
+ {
+ if ($varName != '') {
+ Smarty::$global_tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache);
+ $ptr = $data;
+ while ($ptr->_isTplObj()) {
+ $ptr->tpl_vars[ $varName ] = clone Smarty::$global_tpl_vars[ $varName ];
+ $ptr = $ptr->parent;
+ }
+ }
+ return $data;
+ }
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallassign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
index 1e5fec4bd..1e5fec4bd 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
new file mode 100644
index 000000000..5879f9a06
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Smarty Method ClearAllCache
+ *
+ * Smarty::clearAllCache() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_ClearAllCache
+{
+ /**
+ * Valid for Smarty object
+ *
+ * @var int
+ */
+ public $objMap = 1;
+
+ /**
+ * Empty cache folder
+ *
+ * @api Smarty::clearAllCache()
+ * @link http://www.smarty.net/docs/en/api.clear.all.cache.tpl
+ *
+ * @param \Smarty $smarty
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAllCache(Smarty $smarty, $exp_time = null, $type = null)
+ {
+ $smarty->_clearTemplateCache();
+ // load cache resource and call clearAll
+ $_cache_resource = Smarty_CacheResource::load($smarty, $type);
+ return $_cache_resource->clearAll($smarty, $exp_time);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
new file mode 100644
index 000000000..060a2ac49
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Smarty Method ClearAssign
+ *
+ * Smarty::clearAssign() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_ClearAssign
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * clear the given assigned template variable(s).
+ *
+ * @api Smarty::clearAssign()
+ * @link http://www.smarty.net/docs/en/api.clear.assign.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string|array $tpl_var the template variable(s) to clear
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function clearAssign(Smarty_Internal_Data $data, $tpl_var)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $curr_var) {
+ unset($data->tpl_vars[ $curr_var ]);
+ }
+ } else {
+ unset($data->tpl_vars[ $tpl_var ]);
+ }
+
+ return $data;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
new file mode 100644
index 000000000..95649a777
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Smarty Method ClearCache
+ *
+ * Smarty::clearCache() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_ClearCache
+{
+ /**
+ * Valid for Smarty object
+ *
+ * @var int
+ */
+ public $objMap = 1;
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @api Smarty::clearCache()
+ * @link http://www.smarty.net/docs/en/api.clear.cache.tpl
+ *
+ * @param \Smarty $smarty
+ * @param string $template_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearCache(Smarty $smarty, $template_name, $cache_id = null, $compile_id = null, $exp_time = null,
+ $type = null)
+ {
+ $smarty->_clearTemplateCache();
+ // load cache resource and call clear
+ $_cache_resource = Smarty_CacheResource::load($smarty, $type);
+ return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
new file mode 100644
index 000000000..a1f1a80bb
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Smarty Method ClearCompiledTemplate
+ *
+ * Smarty::clearCompiledTemplate() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_ClearCompiledTemplate
+{
+ /**
+ * Valid for Smarty object
+ *
+ * @var int
+ */
+ public $objMap = 1;
+
+ /**
+ * Delete compiled template file
+ *
+ * @api Smarty::clearCompiledTemplate()
+ * @link http://www.smarty.net/docs/en/api.clear.compiled.template.tpl
+ *
+ * @param \Smarty $smarty
+ * @param string $resource_name template name
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ *
+ * @return integer number of template files deleted
+ */
+ public function clearCompiledTemplate(Smarty $smarty, $resource_name = null, $compile_id = null, $exp_time = null)
+ {
+ // clear template objects cache
+ $smarty->_clearTemplateCache();
+
+ $_compile_dir = $smarty->getCompileDir();
+ if ($_compile_dir == '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
+ $_dir_sep = $smarty->use_sub_dirs ? $smarty->ds : '^';
+ if (isset($resource_name)) {
+ $_save_stat = $smarty->caching;
+ $smarty->caching = false;
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = $smarty->createTemplate($resource_name);
+ $smarty->caching = $_save_stat;
+ if (!$tpl->source->handler->uncompiled && !$tpl->source->handler->recompiled && $tpl->source->exists) {
+ $_resource_part_1 = basename(str_replace('^', $smarty->ds, $tpl->compiled->filepath));
+ $_resource_part_1_length = strlen($_resource_part_1);
+ } else {
+ return 0;
+ }
+ $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
+ $_resource_part_2_length = strlen($_resource_part_2);
+ }
+ $_dir = $_compile_dir;
+ if ($smarty->use_sub_dirs && isset($_compile_id)) {
+ $_dir .= $_compile_id . $_dir_sep;
+ }
+ if (isset($_compile_id)) {
+ $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
+ $_compile_id_part_length = strlen($_compile_id_part);
+ }
+ $_count = 0;
+ try {
+ $_compileDirs = new RecursiveDirectoryIterator($_dir);
+ // NOTE: UnexpectedValueException thrown for PHP >= 5.3
+ }
+ catch (Exception $e) {
+ return 0;
+ }
+ $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_compile as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) == '.') {
+ continue;
+ }
+ $_filepath = (string) $_file;
+ if ($_file->isDir()) {
+ if (!$_compile->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $unlink = false;
+ if ((!isset($_compile_id) || (isset($_filepath[ $_compile_id_part_length ]) && $a =
+ !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) &&
+ (!isset($resource_name) || (isset($_filepath[ $_resource_part_1_length ]) &&
+ substr_compare($_filepath, $_resource_part_1,
+ - $_resource_part_1_length, $_resource_part_1_length) ==
+ 0) || (isset($_filepath[ $_resource_part_2_length ]) &&
+ substr_compare($_filepath, $_resource_part_2,
+ - $_resource_part_2_length,
+ $_resource_part_2_length) == 0))
+ ) {
+ if (isset($exp_time)) {
+ if (time() - @filemtime($_filepath) >= $exp_time) {
+ $unlink = true;
+ }
+ } else {
+ $unlink = true;
+ }
+ }
+
+ if ($unlink && @unlink($_filepath)) {
+ $_count ++;
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($_filepath, true);
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
new file mode 100644
index 000000000..371247807
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Smarty Method ClearConfig
+ *
+ * Smarty::clearConfig() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_ClearConfig
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * clear a single or all config variables
+ *
+ * @api Smarty::clearConfig()
+ * @link http://www.smarty.net/docs/en/api.clear.config.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string|null $name variable name or null
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function clearConfig(Smarty_Internal_Data $data, $name = null)
+ {
+ if (isset($name)) {
+ unset($data->config_vars[ $name ]);
+ } else {
+ $data->config_vars = array();
+ }
+ return $data;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
new file mode 100644
index 000000000..767031bd9
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * Smarty Method CompileAllConfig
+ *
+ * Smarty::compileAllConfig() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_CompileAllConfig extends Smarty_Internal_Method_CompileAllTemplates
+{
+
+ /**
+ * Compile all config files
+ *
+ * @api Smarty::compileAllConfig()
+ *
+ * @param \Smarty $smarty passed smarty object
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
+ * @return int number of template files recompiled
+ */
+ public function compileAllConfig(Smarty $smarty, $extension = '.conf', $force_compile = false, $time_limit = 0,
+ $max_errors = null)
+ {
+ return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
new file mode 100644
index 000000000..0abed2124
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * Smarty Method CompileAllTemplates
+ *
+ * Smarty::compileAllTemplates() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_CompileAllTemplates
+{
+ /**
+ * Valid for Smarty object
+ *
+ * @var int
+ */
+ public $objMap = 1;
+
+ /**
+ * Compile all template files
+ *
+ * @api Smarty::compileAllTemplates()
+ *
+ * @param \Smarty $smarty passed smarty object
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
+ * @return integer number of template files recompiled
+ */
+ public function compileAllTemplates(Smarty $smarty, $extension = '.tpl', $force_compile = false, $time_limit = 0,
+ $max_errors = null)
+ {
+ return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors);
+ }
+
+ /**
+ * Compile all template or config files
+ *
+ * @param \Smarty $smarty
+ * @param string $extension template file name extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit set maximum execution time
+ * @param int $max_errors set maximum allowed errors
+ * @param bool $isConfig flag true if called for config files
+ *
+ * @return int number of template files compiled
+ */
+ protected function compileAll(Smarty $smarty, $extension, $force_compile, $time_limit, $max_errors,
+ $isConfig = false)
+ {
+ // switch off time limit
+ if (function_exists('set_time_limit')) {
+ @set_time_limit($time_limit);
+ }
+ $_count = 0;
+ $_error_count = 0;
+ $sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir();
+ // loop over array of source directories
+ foreach ($sourceDir as $_dir) {
+ $_dir_1 = new RecursiveDirectoryIterator($_dir, defined('FilesystemIterator::FOLLOW_SYMLINKS') ?
+ FilesystemIterator::FOLLOW_SYMLINKS : 0);
+ $_dir_2 = new RecursiveIteratorIterator($_dir_1);
+ foreach ($_dir_2 as $_fileinfo) {
+ $_file = $_fileinfo->getFilename();
+ if (substr(basename($_fileinfo->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
+ if (!substr_compare($_file, $extension, - strlen($extension)) == 0) {
+ continue;
+ }
+ if ($_fileinfo->getPath() !== substr($_dir, 0, - 1)) {
+ $_file = substr($_fileinfo->getPath(), strlen($_dir)) . $smarty->ds . $_file;
+ }
+ echo "\n<br>", $_dir, '---', $_file;
+ flush();
+ $_start_time = microtime(true);
+ $_smarty = clone $smarty;
+ //
+ $_smarty->_cache = array();
+ $_smarty->ext = new Smarty_Internal_Extension_Handler();
+ $_smarty->ext->objType = $_smarty->_objType;
+ $_smarty->force_compile = $force_compile;
+ try {
+ /* @var Smarty_Internal_Template $_tpl */
+ $_tpl = new $smarty->template_class($_file, $_smarty);
+ $_tpl->caching = Smarty::CACHING_OFF;
+ $_tpl->source =
+ $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl);
+ if ($_tpl->mustCompile()) {
+ $_tpl->compileTemplateSource();
+ $_count ++;
+ echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
+ flush();
+ } else {
+ echo ' is up to date';
+ flush();
+ }
+ }
+ catch (Exception $e) {
+ echo "\n<br> ------>Error: ", $e->getMessage(), "<br><br>\n";
+ $_error_count ++;
+ }
+ // free memory
+ unset($_tpl);
+ $_smarty->_clearTemplateCache();
+ if ($max_errors !== null && $_error_count == $max_errors) {
+ echo "\n<br><br>too many errors\n";
+ exit();
+ }
+ }
+ }
+ echo "\n<br>";
+ return $_count;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
new file mode 100644
index 000000000..6113eaf98
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
@@ -0,0 +1,183 @@
+<?php
+
+/**
+ * Smarty Method ConfigLoad
+ *
+ * Smarty::configLoad() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_ConfigLoad
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * load a config file, optionally load just selected sections
+ *
+ * @api Smarty::configLoad()
+ * @link http://www.smarty.net/docs/en/api.config.load.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $config_file filename
+ * @param mixed $sections array of section names, single
+ * section or null
+ *
+ * @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function configLoad(Smarty_Internal_Data $data, $config_file, $sections = null)
+ {
+ $this->_loadConfigFile($data, $config_file, $sections, null);
+ return $data;
+ }
+
+ /**
+ * load a config file, optionally load just selected sections
+ *
+ * @api Smarty::configLoad()
+ * @link http://www.smarty.net/docs/en/api.config.load.tpl
+ *
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $config_file filename
+ * @param mixed $sections array of section names, single
+ * section or null
+ * @param int $scope scope into which config variables
+ * shall be loaded
+ *
+ * @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0)
+ {
+ /* @var \Smarty $smarty */
+ $smarty = $data->_getSmartyObj();
+ /* @var \Smarty_Internal_Template $confObj */
+ $confObj = new Smarty_Internal_Template($config_file, $smarty, $data, null, null, null, null, true);
+ $confObj->caching = Smarty::CACHING_OFF;
+ $confObj->source->config_sections = $sections;
+ $confObj->source->scope = $scope;
+ $confObj->compiled = Smarty_Template_Compiled::load($confObj);
+ $confObj->compiled->render($confObj);
+ if ($data->_isTplObj()) {
+ $data->compiled->file_dependency[ $confObj->source->uid ] =
+ array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type);
+ }
+ }
+
+ /**
+ * load config variables into template object
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $new_config_vars
+ *
+ */
+ public function _loadConfigVars(Smarty_Internal_Template $tpl, $new_config_vars)
+ {
+ $this->_assignConfigVars($tpl->parent->config_vars, $tpl, $new_config_vars);
+ $tagScope = $tpl->source->scope;
+ if ($tagScope >= 0) {
+ if ($tagScope == Smarty::SCOPE_LOCAL) {
+ $this->_updateVarStack($tpl, $new_config_vars);
+ $tagScope = 0;
+ if (!$tpl->scope) {
+ return;
+ }
+ }
+ if ($tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) {
+ $mergedScope = $tagScope | $tpl->scope;
+ if ($mergedScope) {
+ // update scopes
+ foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent, $mergedScope) as $ptr) {
+ $this->_assignConfigVars($ptr->config_vars, $tpl, $new_config_vars);
+ if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
+ $this->_updateVarStack($tpl, $new_config_vars);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Assign all config variables in given scope
+ *
+ * @param array $config_vars config variables in scope
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $new_config_vars loaded config variables
+ */
+ public function _assignConfigVars(&$config_vars, Smarty_Internal_Template $tpl, $new_config_vars)
+ {
+ // copy global config vars
+ foreach ($new_config_vars[ 'vars' ] as $variable => $value) {
+ if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
+ $config_vars[ $variable ] = $value;
+ } else {
+ $config_vars[ $variable ] = array_merge((array) $config_vars[ $variable ], (array) $value);
+ }
+ }
+ // scan sections
+ $sections = $tpl->source->config_sections;
+ if (!empty($sections)) {
+ foreach ((array) $sections as $tpl_section) {
+ if (isset($new_config_vars[ 'sections' ][ $tpl_section ])) {
+ foreach ($new_config_vars[ 'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) {
+ if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
+ $config_vars[ $variable ] = $value;
+ } else {
+ $config_vars[ $variable ] = array_merge((array) $config_vars[ $variable ], (array) $value);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Update config variables in template local variable stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $config_vars
+ */
+ public function _updateVarStack(Smarty_Internal_Template $tpl, $config_vars)
+ {
+ $i = 0;
+ while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
+ $this->_assignConfigVars($tpl->_cache[ 'varStack' ][ $i ][ 'config' ], $tpl, $config_vars);
+ $i ++;
+ }
+ }
+
+ /**
+ * gets a config variable value
+ *
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $varName the name of the config variable
+ * @param bool $errorEnable
+ *
+ * @return null|string the value of the config variable
+ */
+ public function _getConfigVariable(Smarty_Internal_Data $data, $varName, $errorEnable = true)
+ {
+ $_ptr = $data;
+ while ($_ptr !== null) {
+ if (isset($_ptr->config_vars[ $varName ])) {
+ // found it, return it
+ return $_ptr->config_vars[ $varName ];
+ }
+ // not found, try at parent
+ $_ptr = $_ptr->parent;
+ }
+ if ($data->smarty->error_unassigned && $errorEnable) {
+ // force a notice
+ $x = $$varName;
+ }
+ return null;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
new file mode 100644
index 000000000..43ce89432
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Smarty Method CreateData
+ *
+ * Smarty::createData() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_CreateData
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * creates a data object
+ *
+ * @api Smarty::createData()
+ * @link http://www.smarty.net/docs/en/api.create.data.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty $parent next higher level of Smarty
+ * variables
+ * @param string $name optional data block name
+ *
+ * @returns Smarty_Data data object
+ */
+ public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null)
+ {
+ /* @var Smarty $smarty */
+ $smarty = $obj->_getSmartyObj();
+ $dataObj = new Smarty_Data($parent, $smarty, $name);
+ if ($smarty->debugging) {
+ Smarty_Internal_Debug::register_data($dataObj);
+ }
+ return $dataObj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
new file mode 100644
index 000000000..d945a01e3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * Smarty Method GetAutoloadFilters
+ *
+ * Smarty::getAutoloadFilters() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters
+{
+
+ /**
+ * Get autoload filters
+ *
+ * @api Smarty::getAutoloadFilters()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type type of filter to get auto loads
+ * for. Defaults to all autoload
+ * filters
+ *
+ * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type
+ * was specified
+ */
+ public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if ($type !== null) {
+ $this->_checkFilterType($type);
+ return isset($smarty->autoload_filters[ $type ]) ? $smarty->autoload_filters[ $type ] : array();
+ }
+ return $smarty->autoload_filters;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
new file mode 100644
index 000000000..4dd398208
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * Smarty Method GetConfigVariable
+ *
+ * Smarty::getConfigVariable() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetConfigVariable
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * gets a config variable value
+ *
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $varName the name of the config variable
+ * @param bool $errorEnable
+ *
+ * @return null|string the value of the config variable
+ */
+ public function getConfigVariable(Smarty_Internal_Data $data, $varName = null, $errorEnable = true)
+ {
+ return $data->ext->configLoad->_getConfigVariable($data, $varName, $errorEnable);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
new file mode 100644
index 000000000..b75cf8179
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * Smarty Method GetConfigVars
+ *
+ * Smarty::getConfigVars() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetConfigVars
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * Returns a single or all config variables
+ *
+ * @api Smarty::getConfigVars()
+ * @link http://www.smarty.net/docs/en/api.get.config.vars.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $varname variable name or null
+ * @param bool $search_parents include parent templates?
+ *
+ * @return mixed variable value or or array of variables
+ */
+ public function getConfigVars(Smarty_Internal_Data $data, $varname = null, $search_parents = true)
+ {
+ $_ptr = $data;
+ $var_array = array();
+ while ($_ptr !== null) {
+ if (isset($varname)) {
+ if (isset($_ptr->config_vars[ $varname ])) {
+ return $_ptr->config_vars[ $varname ];
+ }
+ } else {
+ $var_array = array_merge($_ptr->config_vars, $var_array);
+ }
+ // not found, try at parent
+ if ($search_parents) {
+ $_ptr = $_ptr->parent;
+ } else {
+ $_ptr = null;
+ }
+ }
+ if (isset($varname)) {
+ return '';
+ } else {
+ return $var_array;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
new file mode 100644
index 000000000..52073c14e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Smarty Method GetDebugTemplate
+ *
+ * Smarty::getDebugTemplate() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetDebugTemplate
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * return name of debugging template
+ *
+ * @api Smarty::getDebugTemplate()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ *
+ * @return string
+ */
+ public function getDebugTemplate(Smarty_Internal_TemplateBase $obj)
+ {
+ $smarty = $obj->_getSmartyObj();
+ return $smarty->debug_tpl;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
new file mode 100644
index 000000000..f65ab7914
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Smarty Method GetDefaultModifiers
+ *
+ * Smarty::getDefaultModifiers() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetDefaultModifiers
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Get default modifiers
+ *
+ * @api Smarty::getDefaultModifiers()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ *
+ * @return array list of default modifiers
+ */
+ public function getDefaultModifiers(Smarty_Internal_TemplateBase $obj)
+ {
+ $smarty = $obj->_getSmartyObj();
+ return $smarty->default_modifiers;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
new file mode 100644
index 000000000..7a8a9bc71
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * Smarty Method GetGlobal
+ *
+ * Smarty::getGlobal() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetGlobal
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * Returns a single or all global variables
+ *
+ * @api Smarty::getGlobal()
+ *
+ * @param \Smarty_Internal_Data $data
+ * @param string $varName variable name or null
+ *
+ * @return string variable value or or array of variables
+ */
+ public function getGlobal(Smarty_Internal_Data $data, $varName = null)
+ {
+ if (isset($varName)) {
+ if (isset(Smarty::$global_tpl_vars[ $varName ])) {
+ return Smarty::$global_tpl_vars[ $varName ]->value;
+ } else {
+ return '';
+ }
+ } else {
+ $_result = array();
+ foreach (Smarty::$global_tpl_vars AS $key => $var) {
+ $_result[ $key ] = $var->value;
+ }
+ return $_result;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
new file mode 100644
index 000000000..c5c064665
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Smarty Method GetRegisteredObject
+ *
+ * Smarty::getRegisteredObject() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetRegisteredObject
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * return a reference to a registered object
+ *
+ * @api Smarty::getRegisteredObject()
+ * @link http://www.smarty.net/docs/en/api.get.registered.object.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $object_name object name
+ *
+ * @return object
+ * @throws \SmartyException if no such object is found
+ */
+ public function getRegisteredObject(Smarty_Internal_TemplateBase $obj, $object_name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (!isset($smarty->registered_objects[ $object_name ])) {
+ throw new SmartyException("'$object_name' is not a registered object");
+ }
+ if (!is_object($smarty->registered_objects[ $object_name ][ 0 ])) {
+ throw new SmartyException("registered '$object_name' is not an object");
+ }
+ return $smarty->registered_objects[ $object_name ][ 0 ];
+ }
+} \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
index b922fd088..b922fd088 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
new file mode 100644
index 000000000..5718b69e9
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * Smarty Method GetTags
+ *
+ * Smarty::getTags() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetTags
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Return array of tag/attributes of all tags used by an template
+ *
+ * @api Smarty::getTags()
+ * @link http://www.smarty.net/docs/en/api.get.tags.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param null|string|Smarty_Internal_Template $template
+ *
+ * @return array of tag/attributes
+ * @throws \SmartyException
+ */
+ public function getTags(Smarty_Internal_TemplateBase $obj, $template = null)
+ {
+ /* @var Smarty $smarty */
+ $smarty = $obj->_getSmartyObj();
+ if ($obj->_isTplObj() && !isset($template)) {
+ $tpl = clone $obj;
+ } elseif (isset($template) && $template->_isTplObj()) {
+ $tpl = clone $template;
+ } elseif (isset($template) && is_string($template)) {
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $smarty->template_class($template, $smarty);
+ // checks if template exists
+ if (!$tpl->source->exists) {
+ throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'");
+ }
+ }
+ if (isset($tpl)) {
+ $tpl->smarty = clone $tpl->smarty;
+ $tpl->smarty->_cache[ 'get_used_tags' ] = true;
+ $tpl->_cache[ 'used_tags' ] = array();
+ $tpl->smarty->merge_compiled_includes = false;
+ $tpl->smarty->disableSecurity();
+ $tpl->caching = false;
+ $tpl->loadCompiler();
+ $tpl->compiler->compileTemplate($tpl);
+ return $tpl->_cache[ 'used_tags' ];
+ }
+ throw new SmartyException("Missing template specification");
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
new file mode 100644
index 000000000..1759646f3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * Smarty Method GetTemplateVars
+ *
+ * Smarty::getTemplateVars() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_GetTemplateVars
+{
+ /**
+ * Valid for all objects
+ *
+ * @var int
+ */
+ public $objMap = 7;
+
+ /**
+ * Returns a single or all template variables
+ *
+ * @api Smarty::getTemplateVars()
+ * @link http://www.smarty.net/docs/en/api.get.template.vars.tpl
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $varName variable name or null
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param bool $searchParents include parent templates?
+ *
+ * @return mixed variable value or or array of variables
+ */
+ public function getTemplateVars(Smarty_Internal_Data $data, $varName = null, Smarty_Internal_Data $_ptr = null,
+ $searchParents = true)
+ {
+ if (isset($varName)) {
+ $_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false);
+ if (is_object($_var)) {
+ return $_var->value;
+ } else {
+ return null;
+ }
+ } else {
+ $_result = array();
+ if ($_ptr === null) {
+ $_ptr = $data;
+ }
+ while ($_ptr !== null) {
+ foreach ($_ptr->tpl_vars AS $key => $var) {
+ if (!array_key_exists($key, $_result)) {
+ $_result[ $key ] = $var->value;
+ }
+ }
+ // not found, try at parent
+ if ($searchParents) {
+ $_ptr = $_ptr->parent;
+ } else {
+ $_ptr = null;
+ }
+ }
+ if ($searchParents && isset(Smarty::$global_tpl_vars)) {
+ foreach (Smarty::$global_tpl_vars AS $key => $var) {
+ if (!array_key_exists($key, $_result)) {
+ $_result[ $key ] = $var->value;
+ }
+ }
+ }
+ return $_result;
+ }
+ }
+
+ /**
+ * gets the object of a Smarty variable
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $varName the name of the Smarty variable
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param bool $searchParents search also in parent data
+ * @param bool $errorEnable
+ *
+ * @return \Smarty_Variable
+ */
+ public function _getVariable(Smarty_Internal_Data $data, $varName, Smarty_Internal_Data $_ptr = null,
+ $searchParents = true, $errorEnable = true)
+ {
+ if ($_ptr === null) {
+ $_ptr = $data;
+ }
+ while ($_ptr !== null) {
+ if (isset($_ptr->tpl_vars[ $varName ])) {
+ // found it, return it
+ return $_ptr->tpl_vars[ $varName ];
+ }
+ // not found, try at parent
+ if ($searchParents) {
+ $_ptr = $_ptr->parent;
+ } else {
+ $_ptr = null;
+ }
+ }
+ if (isset(Smarty::$global_tpl_vars[ $varName ])) {
+ // found it, return it
+ return Smarty::$global_tpl_vars[ $varName ];
+ }
+ /* @var \Smarty $smarty */
+ $smarty = isset($data->smarty) ? $data->smarty : $data;
+ if ($smarty->error_unassigned && $errorEnable) {
+ // force a notice
+ $x = $$varName;
+ }
+
+ return new Smarty_Undefined_Variable;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
new file mode 100644
index 000000000..d092d876e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * Smarty Method LoadFilter
+ *
+ * Smarty::loadFilter() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_LoadFilter
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Valid filter types
+ *
+ * @var array
+ */
+ private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @api Smarty::loadFilter()
+ *
+ * @link http://www.smarty.net/docs/en/api.load.filter.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return bool
+ * @throws SmartyException if filter could not be loaded
+ */
+ public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $this->_checkFilterType($type);
+ $_plugin = "smarty_{$type}filter_{$name}";
+ $_filter_name = $_plugin;
+ if (is_callable($_plugin)) {
+ $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
+ return true;
+ }
+ if ($smarty->loadPlugin($_plugin)) {
+ if (class_exists($_plugin, false)) {
+ $_plugin = array($_plugin, 'execute');
+ }
+ if (is_callable($_plugin)) {
+ $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
+ return true;
+ }
+ }
+ throw new SmartyException("{$type}filter \"{$name}\" not found or callable");
+ }
+
+ /**
+ * Check if filter type is valid
+ *
+ * @param string $type
+ *
+ * @throws \SmartyException
+ */
+ public function _checkFilterType($type)
+ {
+ if (!isset($this->filterTypes[ $type ])) {
+ throw new SmartyException("Illegal filter type \"{$type}\"");
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
new file mode 100644
index 000000000..50f3bfc2c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * Smarty Extension Loadplugin
+ *
+ * $smarty->loadPlugin() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_LoadPlugin
+{
+ /**
+ * Cache of searched plugin files
+ *
+ * @var array
+ */
+ public $plugin_files = array();
+
+ /**
+ * Takes unknown classes and loads plugin files for them
+ * class name format: Smarty_PluginType_PluginName
+ * plugin filename format: plugintype.pluginname.php
+ *
+ * @param \Smarty $smarty
+ * @param string $plugin_name class plugin name to load
+ * @param bool $check check if already loaded
+ *
+ * @return bool|string
+ * @throws \SmartyException
+ */
+ public function loadPlugin(Smarty $smarty, $plugin_name, $check)
+ {
+ // if function or class exists, exit silently (already loaded)
+ if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) {
+ return true;
+ }
+ if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) {
+ throw new SmartyException("plugin {$plugin_name} is not a valid name format");
+ }
+ if (!empty($match[ 2 ])) {
+ $file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php';
+ if (isset($this->plugin_files[ $file ])) {
+ if ($this->plugin_files[ $file ] !== false) {
+ return $this->plugin_files[ $file ];
+ } else {
+ return false;
+ }
+ } else {
+ if (is_file($file)) {
+ $this->plugin_files[ $file ] = $file;
+ require_once($file);
+ return $file;
+ } else {
+ $this->plugin_files[ $file ] = false;
+ return false;
+ }
+ }
+ }
+ // plugin filename is expected to be: [type].[name].php
+ $_plugin_filename = "{$match[1]}.{$match[4]}.php";
+ $_lower_filename = strtolower($_plugin_filename);
+ if (isset($this->plugin_files)) {
+ if (isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
+ if (!$smarty->use_include_path || $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] !== false) {
+ return $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ];
+ }
+ }
+ if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) {
+ unset($this->plugin_files[ 'include_path' ]);
+ } else {
+ if (isset($this->plugin_files[ 'include_path' ][ $_lower_filename ])) {
+ return $this->plugin_files[ 'include_path' ][ $_lower_filename ];
+ }
+ }
+ }
+ $_file_names = array($_plugin_filename);
+ if ($_lower_filename != $_plugin_filename) {
+ $_file_names[] = $_lower_filename;
+ }
+ $_p_dirs = $smarty->getPluginsDir();
+ if (!isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
+ // loop through plugin dirs and find the plugin
+ foreach ($_p_dirs as $_plugin_dir) {
+ foreach ($_file_names as $name) {
+ $file = $_plugin_dir . $name;
+ if (is_file($file)) {
+ $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = $file;
+ require_once($file);
+ return $file;
+ }
+ $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = false;
+ }
+ }
+ }
+ if ($smarty->use_include_path) {
+ foreach ($_file_names as $_file_name) {
+ // try PHP include_path
+ $file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty);
+ $this->plugin_files[ 'include_path' ][ $_lower_filename ] = $file;
+ if ($file !== false) {
+ require_once($file);
+ return $file;
+ }
+ }
+ }
+ // no plugin loaded
+ return false;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
new file mode 100644
index 000000000..0950ba9cf
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Smarty Method MustCompile
+ *
+ * Smarty_Internal_Template::mustCompile() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_MustCompile
+{
+ /**
+ * Valid for template object
+ *
+ * @var int
+ */
+ public $objMap = 2;
+
+ /**
+ * Returns if the current template must be compiled by the Smarty compiler
+ * It does compare the timestamps of template source and the compiled templates and checks the force compile
+ * configuration
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @return bool
+ * @throws \SmartyException
+ */
+ public function mustCompile(Smarty_Internal_Template $_template)
+ {
+ if (!$_template->source->exists) {
+ if ($_template->_isSubTpl()) {
+ $parent_resource = " in '$_template->parent->template_resource}'";
+ } else {
+ $parent_resource = '';
+ }
+ throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
+ }
+ if ($_template->mustCompile === null) {
+ $_template->mustCompile = (!$_template->source->handler->uncompiled &&
+ ($_template->smarty->force_compile || $_template->source->handler->recompiled ||
+ !$_template->compiled->exists || ($_template->smarty->compile_check &&
+ $_template->compiled->getTimeStamp() <
+ $_template->source->getTimeStamp())));
+ }
+
+ return $_template->mustCompile;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
new file mode 100644
index 000000000..ae3872722
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Smarty Method RegisterCacheResource
+ *
+ * Smarty::registerCacheResource() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterCacheResource
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @api Smarty::registerCacheResource()
+ * @link http://www.smarty.net/docs/en/api.register.cacheresource.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $name name of resource type
+ * @param \Smarty_CacheResource $resource_handler
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function registerCacheResource(Smarty_Internal_TemplateBase $obj, $name,
+ Smarty_CacheResource $resource_handler)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $smarty->registered_cache_resources[ $name ] = $resource_handler;
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
new file mode 100644
index 000000000..5469b98aa
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * Smarty Method RegisterClass
+ *
+ * Smarty::registerClass() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterClass
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers static classes to be used in templates
+ *
+ * @api Smarty::registerClass()
+ * @link http://www.smarty.net/docs/en/api.register.class.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $class_name
+ * @param string $class_impl the referenced PHP class to
+ * register
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function registerClass(Smarty_Internal_TemplateBase $obj, $class_name, $class_impl)
+ {
+ $smarty = $obj->_getSmartyObj();
+ // test if exists
+ if (!class_exists($class_impl)) {
+ throw new SmartyException("Undefined class '$class_impl' in register template class");
+ }
+ // register the class
+ $smarty->registered_classes[ $class_name ] = $class_impl;
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
new file mode 100644
index 000000000..43088a1d4
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Smarty Method RegisterDefaultConfigHandler
+ *
+ * Smarty::registerDefaultConfigHandler() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterDefaultConfigHandler
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Register config default handler
+ *
+ * @api Smarty::registerDefaultConfigHandler()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param callable $callback class/method name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws SmartyException if $callback is not callable
+ */
+ public function registerDefaultConfigHandler(Smarty_Internal_TemplateBase $obj, $callback)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (is_callable($callback)) {
+ $smarty->default_config_handler_func = $callback;
+ } else {
+ throw new SmartyException("Default config handler not callable");
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
new file mode 100644
index 000000000..d9aecb4a9
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * Smarty Method RegisterDefaultPluginHandler
+ *
+ * Smarty::registerDefaultPluginHandler() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterDefaultPluginHandler
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers a default plugin handler
+ *
+ * @api Smarty::registerDefaultPluginHandler()
+ * @link http://www.smarty.net/docs/en/api.register.default.plugin.handler.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param callable $callback class/method name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws SmartyException if $callback is not callable
+ */
+ public function registerDefaultPluginHandler(Smarty_Internal_TemplateBase $obj, $callback)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (is_callable($callback)) {
+ $smarty->default_plugin_handler_func = $callback;
+ } else {
+ throw new SmartyException("Default plugin handler '$callback' not callable");
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
new file mode 100644
index 000000000..569ea1062
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * Smarty Method RegisterDefaultTemplateHandler
+ *
+ * Smarty::registerDefaultTemplateHandler() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterDefaultTemplateHandler
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Register template default handler
+ *
+ * @api Smarty::registerDefaultTemplateHandler()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param callable $callback class/method name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws SmartyException if $callback is not callable
+ */
+ public function registerDefaultTemplateHandler(Smarty_Internal_TemplateBase $obj, $callback)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (is_callable($callback)) {
+ $smarty->default_template_handler_func = $callback;
+ } else {
+ throw new SmartyException("Default template handler not callable");
+ }
+ return $obj;
+ }
+
+ /**
+ * get default content from template or config resource handler
+ *
+ * @param Smarty_Template_Source $source
+ *
+ * @throws \SmartyException
+ */
+ public static function _getDefaultTemplate(Smarty_Template_Source $source)
+ {
+ if ($source->isConfig) {
+ $default_handler = $source->smarty->default_config_handler_func;
+ } else {
+ $default_handler = $source->smarty->default_template_handler_func;
+ }
+ $_content = $_timestamp = null;
+ $_return = call_user_func_array($default_handler,
+ array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
+ if (is_string($_return)) {
+ $source->exists = is_file($_return);
+ if ($source->exists) {
+ $source->timestamp = filemtime($_return);
+ } else {
+ throw new SmartyException("Default handler: Unable to load " .
+ ($source->isConfig ? 'config' : 'template') .
+ " default file '{$_return}' for '{$source->type}:{$source->name}'");
+ }
+ $source->name = $source->filepath = $_return;
+ $source->uid = sha1($source->filepath);
+ } elseif ($_return === true) {
+ $source->content = $_content;
+ $source->exists = true;
+ $source->uid = $source->name = sha1($_content);
+ $source->handler = Smarty_Resource::load($source->smarty, 'eval');
+ } else {
+ $source->exists = false;
+ throw new SmartyException('Default handler: No ' . ($source->isConfig ? 'config' : 'template') .
+ " default content for '{$source->type}:{$source->name}'");
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
new file mode 100644
index 000000000..ea8f75a85
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * Smarty Method RegisterFilter
+ *
+ * Smarty::registerFilter() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterFilter
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Valid filter types
+ *
+ * @var array
+ */
+ private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
+
+ /**
+ * Registers a filter function
+ *
+ * @api Smarty::registerFilter()
+ *
+ * @link http://www.smarty.net/docs/en/api.register.filter.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type filter type
+ * @param callback $callback
+ * @param string|null $name optional filter name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $this->_checkFilterType($type);
+ $name = isset($name) ? $name : $this->_getFilterName($callback);
+ if (!is_callable($callback)) {
+ throw new SmartyException("{$type}filter \"{$name}\" not callable");
+ }
+ $smarty->registered_filters[ $type ][ $name ] = $callback;
+ return $obj;
+ }
+
+ /**
+ * Return internal filter name
+ *
+ * @param callback $function_name
+ *
+ * @return string internal filter name
+ */
+ public function _getFilterName($function_name)
+ {
+ if (is_array($function_name)) {
+ $_class_name = (is_object($function_name[ 0 ]) ? get_class($function_name[ 0 ]) : $function_name[ 0 ]);
+
+ return $_class_name . '_' . $function_name[ 1 ];
+ } elseif (is_string($function_name)) {
+ return $function_name;
+ } else {
+ return 'closure';
+ }
+ }
+
+ /**
+ * Check if filter type is valid
+ *
+ * @param string $type
+ *
+ * @throws \SmartyException
+ */
+ public function _checkFilterType($type)
+ {
+ if (!isset($this->filterTypes[ $type ])) {
+ throw new SmartyException("Illegal filter type \"{$type}\"");
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
new file mode 100644
index 000000000..ba699b219
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Smarty Method RegisterObject
+ *
+ * Smarty::registerObject() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterObject
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers object to be used in templates
+ *
+ * @api Smarty::registerObject()
+ * @link http://www.smarty.net/docs/en/api.register.object.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $object_name
+ * @param object $object the
+ * referenced
+ * PHP object to
+ * register
+ * @param array $allowed_methods_properties list of
+ * allowed
+ * methods
+ * (empty = all)
+ * @param bool $format smarty
+ * argument
+ * format, else
+ * traditional
+ * @param array $block_methods list of
+ * block-methods
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function registerObject(Smarty_Internal_TemplateBase $obj, $object_name, $object,
+ $allowed_methods_properties = array(), $format = true, $block_methods = array())
+ {
+ $smarty = $obj->_getSmartyObj();
+ // test if allowed methods callable
+ if (!empty($allowed_methods_properties)) {
+ foreach ((array) $allowed_methods_properties as $method) {
+ if (!is_callable(array($object, $method)) && !property_exists($object, $method)) {
+ throw new SmartyException("Undefined method or property '$method' in registered object");
+ }
+ }
+ }
+ // test if block methods callable
+ if (!empty($block_methods)) {
+ foreach ((array) $block_methods as $method) {
+ if (!is_callable(array($object, $method))) {
+ throw new SmartyException("Undefined method '$method' in registered object");
+ }
+ }
+ }
+ // register the object
+ $smarty->registered_objects[ $object_name ] =
+ array($object, (array) $allowed_methods_properties, (boolean) $format, (array) $block_methods);
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
new file mode 100644
index 000000000..91f065920
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Smarty Method RegisterPlugin
+ *
+ * Smarty::registerPlugin() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterPlugin
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @api Smarty::registerPlugin()
+ * @link http://www.smarty.net/docs/en/api.register.plugin.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ * @param callback $callback PHP callback to register
+ * @param bool $cacheable if true (default) this
+ * function is cache able
+ * @param mixed $cache_attr caching attributes if any
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws SmartyException when the plugin tag is invalid
+ */
+ public function registerPlugin(Smarty_Internal_TemplateBase $obj, $type, $name, $callback, $cacheable = true,
+ $cache_attr = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_plugins[ $type ][ $name ])) {
+ throw new SmartyException("Plugin tag \"{$name}\" already registered");
+ } elseif (!is_callable($callback)) {
+ throw new SmartyException("Plugin \"{$name}\" not callable");
+ } else {
+ $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool) $cacheable, (array) $cache_attr);
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
new file mode 100644
index 000000000..44534b738
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Smarty Method RegisterResource
+ *
+ * Smarty::registerResource() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_RegisterResource
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @api Smarty::registerResource()
+ * @link http://www.smarty.net/docs/en/api.register.resource.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $name name of resource type
+ * @param Smarty_Resource|array $resource_handler or instance of
+ * Smarty_Resource, or
+ * array of callbacks to
+ * handle resource
+ * (deprecated)
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function registerResource(Smarty_Internal_TemplateBase $obj, $name, $resource_handler)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $smarty->registered_resources[ $name ] =
+ $resource_handler instanceof Smarty_Resource ? $resource_handler : array($resource_handler, false);
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
new file mode 100644
index 000000000..df5ca6405
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * Smarty Method SetAutoloadFilters
+ *
+ * Smarty::setAutoloadFilters() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_SetAutoloadFilters
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Valid filter types
+ *
+ * @var array
+ */
+ private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
+
+ /**
+ * Set autoload filters
+ *
+ * @api Smarty::setAutoloadFilters()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array $filters filters to load automatically
+ * @param string $type "pre", "output", … specify the
+ * filter type to set. Defaults to
+ * none treating $filters' keys as
+ * the appropriate types
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if ($type !== null) {
+ $this->_checkFilterType($type);
+ $smarty->autoload_filters[ $type ] = (array) $filters;
+ } else {
+ foreach ((array) $filters as $type => $value) {
+ $this->_checkFilterType($type);
+ }
+ $smarty->autoload_filters = (array) $filters;
+ }
+ return $obj;
+ }
+
+ /**
+ * Check if filter type is valid
+ *
+ * @param string $type
+ *
+ * @throws \SmartyException
+ */
+ public function _checkFilterType($type)
+ {
+ if (!isset($this->filterTypes[ $type ])) {
+ throw new SmartyException("Illegal filter type \"{$type}\"");
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
new file mode 100644
index 000000000..76c87deb6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Smarty Method SetDebugTemplate
+ *
+ * Smarty::setDebugTemplate() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_SetDebugTemplate
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * set the debug template
+ *
+ * @api Smarty::setDebugTemplate()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $tpl_name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws SmartyException if file is not readable
+ */
+ public function setDebugTemplate(Smarty_Internal_TemplateBase $obj, $tpl_name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (!is_readable($tpl_name)) {
+ throw new SmartyException("Unknown file '{$tpl_name}'");
+ }
+ $smarty->debug_tpl = $tpl_name;
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
new file mode 100644
index 000000000..81434b968
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * Smarty Method SetDefaultModifiers
+ *
+ * Smarty::setDefaultModifiers() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_SetDefaultModifiers
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Set default modifiers
+ *
+ * @api Smarty::setDefaultModifiers()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array|string $modifiers modifier or list of modifiers
+ * to set
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function setDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $smarty->default_modifiers = (array) $modifiers;
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
new file mode 100644
index 000000000..9aa1d229b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Smarty Method UnloadFilter
+ *
+ * Smarty::unloadFilter() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_UnloadFilter extends Smarty_Internal_Method_LoadFilter
+{
+ /**
+ * load a filter of specified type and name
+ *
+ * @api Smarty::unloadFilter()
+ *
+ * @link http://www.smarty.net/docs/en/api.unload.filter.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return bool
+ */
+ public function unloadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $this->_checkFilterType($type);
+ if (isset($smarty->registered_filters[ $type ])) {
+ $_filter_name = "smarty_{$type}filter_{$name}";
+ if (isset($smarty->registered_filters[ $type ][ $_filter_name ])) {
+ unset ($smarty->registered_filters[ $type ][ $_filter_name ]);
+ if (empty($smarty->registered_filters[ $type ])) {
+ unset($smarty->registered_filters[ $type ]);
+ }
+ }
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
new file mode 100644
index 000000000..1a157ffb6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Smarty Method UnregisterCacheResource
+ *
+ * Smarty::unregisterCacheResource() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_UnregisterCacheResource
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @api Smarty::unregisterCacheResource()
+ * @link http://www.smarty.net/docs/en/api.unregister.cacheresource.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param $name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function unregisterCacheResource(Smarty_Internal_TemplateBase $obj, $name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_cache_resources[ $name ])) {
+ unset($smarty->registered_cache_resources[ $name ]);
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
new file mode 100644
index 000000000..c5b88f57d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Smarty Method UnregisterFilter
+ *
+ * Smarty::unregisterFilter() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_UnregisterFilter extends Smarty_Internal_Method_RegisterFilter
+{
+ /**
+ * Unregisters a filter function
+ *
+ * @api Smarty::unregisterFilter()
+ *
+ * @link http://www.smarty.net/docs/en/api.unregister.filter.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type filter type
+ * @param callback|string $callback
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function unregisterFilter(Smarty_Internal_TemplateBase $obj, $type, $callback)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $this->_checkFilterType($type);
+ if (isset($smarty->registered_filters[ $type ])) {
+ $name = is_string($callback) ? $callback : $this->_getFilterName($callback);
+ if (isset($smarty->registered_filters[ $type ][ $name ])) {
+ unset($smarty->registered_filters[ $type ][ $name ]);
+ if (empty($smarty->registered_filters[ $type ])) {
+ unset($smarty->registered_filters[ $type ]);
+ }
+ }
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
new file mode 100644
index 000000000..76d48661e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Smarty Method UnregisterObject
+ *
+ * Smarty::unregisterObject() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_UnregisterObject
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @api Smarty::unregisterObject()
+ * @link http://www.smarty.net/docs/en/api.unregister.object.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $object_name name of object
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function unregisterObject(Smarty_Internal_TemplateBase $obj, $object_name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_objects[ $object_name ])) {
+ unset($smarty->registered_objects[ $object_name ]);
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
new file mode 100644
index 000000000..b5f0d505b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Smarty Method UnregisterPlugin
+ *
+ * Smarty::unregisterPlugin() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_UnregisterPlugin
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @api Smarty::unregisterPlugin()
+ * @link http://www.smarty.net/docs/en/api.unregister.plugin.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function unregisterPlugin(Smarty_Internal_TemplateBase $obj, $type, $name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_plugins[ $type ][ $name ])) {
+ unset($smarty->registered_plugins[ $type ][ $name ]);
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
new file mode 100644
index 000000000..ed4801d48
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Smarty Method UnregisterResource
+ *
+ * Smarty::unregisterResource() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_UnregisterResource
+{
+ /**
+ * Valid for Smarty and template object
+ *
+ * @var int
+ */
+ public $objMap = 3;
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @api Smarty::unregisterResource()
+ * @link http://www.smarty.net/docs/en/api.unregister.resource.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type name of resource type
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ */
+ public function unregisterResource(Smarty_Internal_TemplateBase $obj, $type)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if (isset($smarty->registered_resources[ $type ])) {
+ unset($smarty->registered_resources[ $type ]);
+ }
+ return $obj;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
new file mode 100644
index 000000000..65fc143cd
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Smarty Internal Plugin Nocache Insert
+ * Compiles the {insert} tag into the cache file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Nocache_Insert
+{
+ /**
+ * Compiles code for the {insert} tag into cache file
+ *
+ * @param string $_function insert function name
+ * @param array $_attr array with parameter
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $_script script name to load or 'null'
+ * @param string $_assign optional variable name
+ *
+ * @return string compiled code
+ */
+ public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
+ {
+ $_output = '<?php ';
+ if ($_script != 'null') {
+ // script which must be included
+ // code for script file loading
+ $_output .= "require_once '{$_script}';";
+ }
+ // call insert
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) .
+ ",\$_smarty_tpl), true);?>";
+ } else {
+ $_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
+ }
+ $_tpl = $_template;
+ while ($_tpl->_isSubTpl()) {
+ $_tpl = $_tpl->parent;
+ }
+
+ return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/" . $_output .
+ "/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
index 32c9df094..32c9df094 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_code.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
index d0f0b3fd9..d0f0b3fd9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_code.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
new file mode 100644
index 000000000..8c2e0d993
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * Double quoted string inside a tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+
+/**
+ * Double quoted string inside a tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
+{
+ /**
+ * Create parse tree buffer for double quoted string subtrees
+ *
+ * @param object $parser parser object
+ * @param Smarty_Internal_ParseTree $subtree parse tree buffer
+ */
+ public function __construct($parser, Smarty_Internal_ParseTree $subtree)
+ {
+ $this->subtrees[] = $subtree;
+ if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
+ $parser->block_nesting_level = count($parser->compiler->_tag_stack);
+ }
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param Smarty_Internal_ParseTree $subtree parse tree buffer
+ */
+ public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
+ {
+ $last_subtree = count($this->subtrees) - 1;
+ if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag &&
+ $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
+ ) {
+ if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
+ '<?php echo ' . $subtree->data . ';?>');
+ } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
+ '<?php echo "' . $subtree->data . '";?>');
+ } else {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
+ }
+ } else {
+ $this->subtrees[] = $subtree;
+ }
+ if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
+ $parser->block_nesting_level = count($parser->compiler->_tag_stack);
+ }
+ }
+
+ /**
+ * Merge subtree buffer content together
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string compiled template code
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ $code = '';
+ foreach ($this->subtrees as $subtree) {
+ if ($code !== "") {
+ $code .= ".";
+ }
+ if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
+ $more_php = $subtree->assign_to_var($parser);
+ } else {
+ $more_php = $subtree->to_smarty_php($parser);
+ }
+
+ $code .= $more_php;
+
+ if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
+ $parser->compiler->has_variable_string = true;
+ }
+ }
+
+ return $code;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
index a8ca389d9..a8ca389d9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
new file mode 100644
index 000000000..9058aabfb
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse tree in the template parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * A complete smarty tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree
+{
+
+ /**
+ * Saved block nesting level
+ *
+ * @var int
+ */
+ public $saved_block_nesting;
+
+ /**
+ * Create parse tree buffer for Smarty tag
+ *
+ * @param \Smarty_Internal_Templateparser $parser parser object
+ * @param string $data content
+ */
+ public function __construct(Smarty_Internal_Templateparser $parser, $data)
+ {
+ $this->data = $data;
+ $this->saved_block_nesting = $parser->block_nesting_level;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ return $this->data;
+ }
+
+ /**
+ * Return complied code that loads the evaluated output of buffer content into a temporary variable
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string template code
+ */
+ public function assign_to_var(Smarty_Internal_Templateparser $parser)
+ {
+ $var = $parser->compiler->getNewPrefixVariable();
+ $tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data);
+ $tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>");
+ $parser->compiler->prefix_code[] = sprintf("%s", $tmp);
+
+ return $var;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
new file mode 100644
index 000000000..f6032351e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
@@ -0,0 +1,128 @@
+<?php
+/**
+ * Smarty Internal Plugin Templateparser Parse Tree
+ * These are classes to build parse tree in the template parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * Template element
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree
+{
+
+ /**
+ * Array of template elements
+ *
+ * @var array
+ */
+ public $subtrees = Array();
+
+ /**
+ * Create root of parse tree for template elements
+ *
+ */
+ public function __construct()
+ {
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param Smarty_Internal_ParseTree $subtree
+ */
+ public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
+ {
+ if (!empty($subtree->subtrees)) {
+ $this->subtrees = array_merge($this->subtrees, $subtree->subtrees);
+ } else {
+ if ($subtree->data !== '') {
+ $this->subtrees[] = $subtree;
+ }
+ }
+ }
+
+ /**
+ * Append array to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param \Smarty_Internal_ParseTree[] $array
+ */
+ public function append_array(Smarty_Internal_Templateparser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge($this->subtrees, (array) $array);
+ }
+ }
+
+ /**
+ * Prepend array to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param \Smarty_Internal_ParseTree[] $array
+ */
+ public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge((array) $array, $this->subtrees);
+ }
+ }
+
+ /**
+ * Sanitize and merge subtree buffers together
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string template code content
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ $code = '';
+ for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key ++) {
+ if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) {
+ $subtree = $this->subtrees[ $key ]->to_smarty_php($parser);
+ while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Text ||
+ $this->subtrees[ $key + 1 ]->data == '')) {
+ $key ++;
+ if ($this->subtrees[ $key ]->data == '') {
+ continue;
+ }
+ $subtree .= $this->subtrees[ $key ]->to_smarty_php($parser);
+ }
+ if ($subtree == '') {
+ continue;
+ }
+ $code .= preg_replace('/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', "<?php echo '\$1'; ?>\n",
+ $subtree);
+ continue;
+ }
+ if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) {
+ $subtree = $this->subtrees[ $key ]->to_smarty_php($parser);
+ while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Tag ||
+ $this->subtrees[ $key + 1 ]->data == '')) {
+ $key ++;
+ if ($this->subtrees[ $key ]->data == '') {
+ continue;
+ }
+ $subtree = $parser->compiler->appendCode($subtree, $this->subtrees[ $key ]->to_smarty_php($parser));
+ }
+ if ($subtree == '') {
+ continue;
+ }
+ $code .= $subtree;
+ continue;
+ }
+ $code .= $this->subtrees[ $key ]->to_smarty_php($parser);
+ }
+ return $code;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_text.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
index b3100fa09..b3100fa09 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree_text.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
new file mode 100644
index 000000000..d3088bdd9
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
@@ -0,0 +1,95 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Eval
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Eval
+ * Implements the strings as resource for Smarty template
+ * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $source->uid = $source->filepath = sha1($source->name);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+
+ return $string;
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ return get_class($this) . '#' . $this->decode($resource_name);
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return '';
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
new file mode 100644
index 000000000..4f1f09ea5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Extends
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Extends
+ * Implements the file system as resource for Smarty which {extend}s a chain of template files templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_Extends extends Smarty_Resource
+{
+ /**
+ * mbstring.overload flag
+ *
+ * @var int
+ */
+ public $mbstring_overload = 0;
+
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @throws SmartyException
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $uid = '';
+ $sources = array();
+ $components = explode('|', $source->name);
+ $smarty = &$source->smarty;
+ $exists = true;
+ foreach ($components as $component) {
+ /* @var \Smarty_Template_Source $_s */
+ $_s = Smarty_Template_Source::load(null, $smarty, $component);
+ if ($_s->type == 'php') {
+ throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type");
+ }
+ $sources[ $_s->uid ] = $_s;
+ $uid .= $_s->filepath;
+ if ($_template) {
+ $exists = $exists && $_s->exists;
+ }
+ }
+ $source->components = $sources;
+ $source->filepath = $_s->filepath;
+ $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
+ $source->exists = $exists;
+ if ($_template) {
+ $source->timestamp = $_s->timestamp;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ $source->exists = true;
+ /* @var \Smarty_Template_Source $_s */
+ foreach ($source->components as $_s) {
+ $source->exists = $source->exists && $_s->exists;
+ }
+ $source->timestamp = $source->exists ? $_s->getTimeStamp() : false;
+ }
+
+ /**
+ * Load template's source from files into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if (!$source->exists) {
+ throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'");
+ }
+
+ $_components = array_reverse($source->components);
+
+ $_content = '';
+ /* @var \Smarty_Template_Source $_s */
+ foreach ($_components as $_s) {
+ // read content
+ $_content .= $_s->getContent();
+ }
+ return $_content;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return str_replace(':', '.', basename($source->filepath));
+ }
+
+ /*
+ * Disable timestamp checks for extends resource.
+ * The individual source components will be checked.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
new file mode 100644
index 000000000..a58771a17
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource File
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource File
+ * Implements the file system as resource for Smarty templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_File extends Smarty_Resource
+{
+ /**
+ * build template filepath by traversing the template_dir array
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string fully qualified filepath
+ * @throws SmartyException
+ */
+ protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $file = $source->name;
+ // absolute file ?
+ if ($file[ 0 ] == '/' || $file[ 1 ] == ':') {
+ $file = $source->smarty->_realpath($file, true);
+ return is_file($file) ? $file : false;
+ }
+ // go relative to a given template?
+ if ($file[ 0 ] == '.' && $_template && $_template->_isSubTpl() &&
+ preg_match('#^[.]{1,2}[\\\/]#', $file)
+ ) {
+ if ($_template->parent->source->type != 'file' && $_template->parent->source->type != 'extends' &&
+ !isset($_template->parent->_cache[ 'allow_relative_path' ])
+ ) {
+ throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'");
+ }
+ // normalize path
+ $path = $source->smarty->_realpath(dirname($_template->parent->source->filepath) . $source->smarty->ds . $file);
+ // files relative to a template only get one shot
+ return is_file($path) ? $path : false;
+ }
+ // normalize $source->smarty->ds
+ if (strpos($file, $source->smarty->ds == '/' ? '\\' : '/') !== false) {
+ $file = str_replace($source->smarty->ds == '/' ? '\\' : '/', $source->smarty->ds, $file);
+ }
+
+ $_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
+ // template_dir index?
+ if ($file[ 0 ] == '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
+ $file = $fileMatch[ 2 ];
+ $_indices = explode(',', $fileMatch[ 1 ]);
+ $_index_dirs = array();
+ foreach ($_indices as $index) {
+ $index = trim($index);
+ // try string indexes
+ if (isset($_directories[ $index ])) {
+ $_index_dirs[] = $_directories[ $index ];
+ } elseif (is_numeric($index)) {
+ // try numeric index
+ $index = (int) $index;
+ if (isset($_directories[ $index ])) {
+ $_index_dirs[] = $_directories[ $index ];
+ } else {
+ // try at location index
+ $keys = array_keys($_directories);
+ if (isset($_directories[ $keys[ $index ] ])) {
+ $_index_dirs[] = $_directories[ $keys[ $index ] ];
+ }
+ }
+ }
+ }
+ if (empty($_index_dirs)) {
+ // index not found
+ return false;
+ } else {
+ $_directories = $_index_dirs;
+ }
+ }
+
+ // relative file name?
+ foreach ($_directories as $_directory) {
+ $path = $_directory . $file;
+ if (is_file($path)) {
+ return (strpos($path, '.' . $source->smarty->ds) !== false) ? $source->smarty->_realpath($path) : $path;
+ }
+ }
+ if (!isset($_index_dirs)) {
+ // Could be relative to cwd
+ $path = $source->smarty->_realpath($file, true);
+ if (is_file($path)) {
+ return $path;
+ }
+ }
+ // Use include path ?
+ if ($source->smarty->use_include_path) {
+ return $source->smarty->ext->_getIncludePath->getIncludePath($_directories, $file, $source->smarty);
+ }
+ return false;
+ }
+
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $source->filepath = $this->buildFilepath($source, $_template);
+
+ if ($source->filepath !== false) {
+ if (isset($source->smarty->security_policy) && is_object($source->smarty->security_policy)) {
+ $source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig);
+ }
+ $source->exists = true;
+ $source->uid = sha1($source->filepath . ($source->isConfig ? $source->smarty->_joined_config_dir :
+ $source->smarty->_joined_template_dir));
+ $source->timestamp = filemtime($source->filepath);
+ } else {
+ $source->timestamp = $source->exists = false;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ if (!$source->exists) {
+ $source->timestamp = $source->exists = is_file($source->filepath);
+ }
+ if ($source->exists) {
+ $source->timestamp = filemtime($source->filepath);
+ }
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if ($source->exists) {
+ return file_get_contents($source->filepath);
+ }
+ throw new SmartyException('Unable to read ' . ($source->isConfig ? 'config' : 'template') .
+ " {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return basename($source->filepath);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
new file mode 100644
index 000000000..52e7096b3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
@@ -0,0 +1,106 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Resource PHP
+ * Implements the file system as resource for PHP templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File
+{
+ /**
+ * Flag that it's an uncompiled resource
+ *
+ * @var bool
+ */
+ public $uncompiled = true;
+
+ /**
+ * container for short_open_tag directive's value before executing PHP templates
+ *
+ * @var string
+ */
+ protected $short_open_tag;
+
+ /**
+ * Resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = true;
+
+ /**
+ * Create a new PHP Resource
+ */
+ public function __construct()
+ {
+ $this->short_open_tag = ini_get('short_open_tag');
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if ($source->exists) {
+ return '';
+ }
+ throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * Render and output the template (without using the compiler)
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
+ */
+ public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
+ {
+ if (!$source->smarty->allow_php_templates) {
+ throw new SmartyException("PHP templates are disabled");
+ }
+ if (!$source->exists) {
+ throw new SmartyException("Unable to load template {$source->type} '{$source->name}'" .
+ ($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : ''));
+ }
+
+ // prepare variables
+ extract($_template->getTemplateVars());
+
+ // include PHP template with short open tags enabled
+ ini_set('short_open_tag', '1');
+ /** @var Smarty_Internal_Template $_smarty_template
+ * used in included file
+ */
+ $_smarty_template = $_template;
+ include($source->filepath);
+ ini_set('short_open_tag', $this->short_open_tag);
+ }
+
+ /**
+ * populate compiled object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object (is ignored)
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = $_template->source->filepath;
+ $compiled->timestamp = $_template->source->timestamp;
+ $compiled->exists = $_template->source->exists;
+ $compiled->file_dependency[ $_template->source->uid ] =
+ array($compiled->filepath, $compiled->timestamp,
+ $_template->source->type,);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php
new file mode 100644
index 000000000..8535257ab
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Registered
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Registered
+ * Implements the registered resource for Smarty template
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @deprecated
+ */
+class Smarty_Internal_Resource_Registered extends Smarty_Resource
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $source->filepath = $source->type . ':' . $source->name;
+ $source->uid = sha1($source->filepath . $source->smarty->_joined_template_dir);
+ $source->timestamp = $this->getTemplateTimestamp($source);
+ $source->exists = !!$source->timestamp;
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ $source->timestamp = $this->getTemplateTimestamp($source);
+ $source->exists = !!$source->timestamp;
+ }
+
+ /**
+ * Get timestamp (epoch) the template source was modified
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
+ */
+ public function getTemplateTimestamp(Smarty_Template_Source $source)
+ {
+ // return timestamp
+ $time_stamp = false;
+ call_user_func_array($source->smarty->registered_resources[ $source->type ][ 0 ][ 1 ],
+ array($source->name, &$time_stamp, $source->smarty));
+
+ return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
+ }
+
+ /**
+ * Load template's source by invoking the registered callback into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ // return template string
+ $content = null;
+ $t = call_user_func_array($source->smarty->registered_resources[ $source->type ][ 0 ][ 0 ],
+ array($source->name, &$content, $source->smarty));
+ if (is_bool($t) && !$t) {
+ throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ return $content;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return basename($source->name);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
new file mode 100644
index 000000000..b4248fbb5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Stream
+ * Implements the streams as resource for Smarty template
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Stream
+ * Implements the streams as resource for Smarty template
+ *
+ * @link http://php.net/streams
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ if (strpos($source->resource, '://') !== false) {
+ $source->filepath = $source->resource;
+ } else {
+ $source->filepath = str_replace(':', '://', $source->resource);
+ }
+ $source->uid = false;
+ $source->content = $this->getContent($source);
+ $source->timestamp = $source->exists = !!$source->content;
+ }
+
+ /**
+ * Load template's source from stream into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ $t = '';
+ // the availability of the stream has already been checked in Smarty_Resource::fetch()
+ $fp = fopen($source->filepath, 'r+');
+ if ($fp) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+ $t .= $current_line;
+ }
+ fclose($fp);
+
+ return $t;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ return get_class($this) . '#' . $resource_name;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
new file mode 100644
index 000000000..f2610d9d6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
@@ -0,0 +1,107 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource String
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource String
+ * Implements the strings as resource for Smarty template
+ * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}}
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_String extends Smarty_Resource
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $source->uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+
+ return $string;
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ return get_class($this) . '#' . $this->decode($resource_name);
+ }
+
+ /**
+ * Determine basename for compiled filename
+ * Always returns an empty string.
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return '';
+ }
+
+ /*
+ * Disable timestamp checks for string resource.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
+
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
new file mode 100644
index 000000000..a91874a9f
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_CacheModify
+{
+ /**
+ * check client side cache
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param \Smarty_Internal_Template $_template
+ * @param string $content
+ */
+ public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
+ {
+ $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code;
+ $_last_modified_date =
+ @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3);
+ if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
+ switch (PHP_SAPI) {
+ case 'cgi': // php-cgi < 5.3
+ case 'cgi-fcgi': // php-cgi >= 5.3
+ case 'fpm-fcgi': // php-fpm >= 5.3.3
+ header('Status: 304 Not Modified');
+ break;
+
+ case 'cli':
+ if ( /* ^phpunit */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
+ ) {
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
+ }
+ break;
+
+ default:
+ if ( /* ^phpunit */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
+ ) {
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
+ } else {
+ header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified');
+ }
+ break;
+ }
+ } else {
+ switch (PHP_SAPI) {
+ case 'cli':
+ if ( /* ^phpunit */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
+ ) {
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] =
+ 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
+ }
+ break;
+ default:
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
+ break;
+ }
+ echo $content;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
new file mode 100644
index 000000000..7b7a9f685
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
@@ -0,0 +1,136 @@
+<?php
+
+/**
+ * Smarty cache resource file clear method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Runtime Cache Resource File Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Runtime_CacheResourceFile
+{
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
+ $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
+ $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
+ $_dir = $smarty->getCacheDir();
+ if ($_dir == '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_dir_length = strlen($_dir);
+ if (isset($_cache_id)) {
+ $_cache_id_parts = explode('|', $_cache_id);
+ $_cache_id_parts_count = count($_cache_id_parts);
+ if ($smarty->use_sub_dirs) {
+ foreach ($_cache_id_parts as $id_part) {
+ $_dir .= $id_part . $smarty->ds;
+ }
+ }
+ }
+ if (isset($resource_name)) {
+ $_save_stat = $smarty->caching;
+ $smarty->caching = true;
+ $tpl = new $smarty->template_class($resource_name, $smarty);
+ $smarty->caching = $_save_stat;
+
+ // remove from template cache
+ $tpl->source; // have the template registered before unset()
+
+ if ($tpl->source->exists) {
+ $_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath));
+ } else {
+ return 0;
+ }
+ }
+ $_count = 0;
+ $_time = time();
+ if (file_exists($_dir)) {
+ $_cacheDirs = new RecursiveDirectoryIterator($_dir);
+ $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_cache as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) == '.') {
+ continue;
+ }
+ $_filepath = (string) $_file;
+ // directory ?
+ if ($_file->isDir()) {
+ if (!$_cache->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length)));
+ $_parts_count = count($_parts);
+ // check name
+ if (isset($resource_name)) {
+ if ($_parts[ $_parts_count - 1 ] != $_resourcename_parts) {
+ continue;
+ }
+ }
+ // check compile id
+ if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ]) ||
+ $_parts[ $_parts_count - 2 - $_compile_id_offset ] != $_compile_id)
+ ) {
+ continue;
+ }
+ // check cache id
+ if (isset($_cache_id)) {
+ // count of cache id parts
+ $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset :
+ $_parts_count - 1 - $_compile_id_offset;
+ if ($_parts_count < $_cache_id_parts_count) {
+ continue;
+ }
+ for ($i = 0; $i < $_cache_id_parts_count; $i ++) {
+ if ($_parts[ $i ] != $_cache_id_parts[ $i ]) {
+ continue 2;
+ }
+ }
+ }
+ // expired ?
+ if (isset($exp_time)) {
+ if ($exp_time < 0) {
+ preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_file), $match);
+ if ($_time < (@filemtime($_file) + $match[ 1 ])) {
+ continue;
+ }
+ } else {
+ if ($_time - @filemtime($_file) < $exp_time) {
+ continue;
+ }
+ }
+ }
+ $_count += @unlink($_filepath) ? 1 : 0;
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($_filepath, true);
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
new file mode 100644
index 000000000..69f1ce0cf
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
@@ -0,0 +1,161 @@
+<?php
+
+/**
+ * Runtime Extension Capture
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Runtime_Capture
+{
+ /**
+ * Flag that this instance will not be cached
+ *
+ * @var bool
+ */
+ public $isPrivateExtension = true;
+
+ /**
+ * Stack of capture parameter
+ *
+ * @var array
+ */
+ private $captureStack = array();
+
+ /**
+ * Current open capture sections
+ *
+ * @var int
+ */
+ private $captureCount = 0;
+
+ /**
+ * Count stack
+ *
+ * @var int[]
+ */
+ private $countStack = array();
+
+ /**
+ * Named buffer
+ *
+ * @var string[]
+ */
+ private $namedBuffer = array();
+
+ /**
+ * Flag if callbacks are registered
+ *
+ * @var bool
+ */
+ private $isRegistered = false;
+
+ /**
+ * Open capture section
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param string $buffer capture name
+ * @param string $assign variable name
+ * @param string $append variable name
+ */
+ public function open(Smarty_Internal_Template $_template, $buffer, $assign, $append)
+ {
+ if (!$this->isRegistered) {
+ $this->register($_template);
+ }
+ $this->captureStack[] = array($buffer, $assign, $append);
+ $this->captureCount ++;
+ ob_start();
+ }
+
+ /**
+ * Register callbacks in template class
+ *
+ * @param \Smarty_Internal_Template $_template
+ */
+ private function register(Smarty_Internal_Template $_template)
+ {
+ $_template->startRenderCallbacks[] = array($this, 'startRender');
+ $_template->endRenderCallbacks[] = array($this, 'endRender');
+ $this->startRender($_template);
+ $this->isRegistered = true;
+ }
+
+ /**
+ * Start render callback
+ *
+ * @param \Smarty_Internal_Template $_template
+ */
+ public function startRender(Smarty_Internal_Template $_template)
+ {
+ $this->countStack[] = $this->captureCount;
+ $this->captureCount = 0;
+ }
+
+ /**
+ * Close capture section
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function close(Smarty_Internal_Template $_template)
+ {
+ if ($this->captureCount) {
+ list($buffer, $assign, $append) = array_pop($this->captureStack);
+ $this->captureCount --;
+ if (isset($assign)) {
+ $_template->assign($assign, ob_get_contents());
+ }
+ if (isset($append)) {
+ $_template->append($append, ob_get_contents());
+ }
+ $this->namedBuffer[ $buffer ] = ob_get_clean();
+ } else {
+ $this->error($_template);
+ }
+ }
+
+ /**
+ * Error exception on not matching {capture}{/capture}
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function error(Smarty_Internal_Template $_template)
+ {
+ throw new SmartyException("Not matching {capture}{/capture} in \"{$_template->template_resource}\"");
+ }
+
+ /**
+ * Return content of named capture buffer
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param $name
+ *
+ * @return null
+ */
+ public function getBuffer(Smarty_Internal_Template $_template, $name)
+ {
+ return isset($this->namedBuffer[ $name ]) ? $this->namedBuffer[ $name ] : null;
+ }
+
+ /**
+ * End render callback
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function endRender(Smarty_Internal_Template $_template)
+ {
+ if ($this->captureCount) {
+ $this->error($_template);
+ } else {
+ $this->captureCount = array_pop($this->countStack);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
new file mode 100644
index 000000000..e363712a6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Smarty Internal Extension
+ * This file contains the Smarty template extension to create a code frame
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Class Smarty_Internal_Extension_CodeFrame
+ * Create code frame for compiled and cached templates
+ */
+class Smarty_Internal_Runtime_CodeFrame
+{
+ /**
+ * Create code frame for compiled and cached templates
+ *
+ * @param Smarty_Internal_Template $_template
+ * @param string $content optional template content
+ * @param string $functions compiled template function and block code
+ * @param bool $cache flag for cache file
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ *
+ * @return string
+ */
+ public function create(Smarty_Internal_Template $_template, $content = '', $functions = '', $cache = false,
+ Smarty_Internal_TemplateCompilerBase $compiler = null)
+ {
+ // build property code
+ $properties[ 'version' ] = Smarty::SMARTY_VERSION;
+ $properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
+ if (!$cache) {
+ $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code;
+ $properties[ 'file_dependency' ] = $_template->compiled->file_dependency;
+ $properties[ 'includes' ] = $_template->compiled->includes;
+ } else {
+ $properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code;
+ $properties[ 'file_dependency' ] = $_template->cached->file_dependency;
+ $properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
+ }
+ $output = "<?php\n";
+ $output .= "/* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") .
+ "\n from \"" . $_template->source->filepath . "\" */\n\n";
+ $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
+ $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .
+ ($cache ? 'true' : 'false') . ")";
+ $output .= "if ({$dec}) {\n";
+ $output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n";
+ if (!$cache && !empty($compiler->tpl_function)) {
+ $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
+ var_export($compiler->tpl_function, true) . ");\n";
+ }
+ if ($cache && isset($_template->smarty->ext->_tplFunction)) {
+ $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
+ var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n";
+
+ }
+ // include code for plugins
+ if (!$cache) {
+ if (!empty($_template->compiled->required_plugins[ 'compiled' ])) {
+ foreach ($_template->compiled->required_plugins[ 'compiled' ] as $tmp) {
+ foreach ($tmp as $data) {
+ $file = addslashes($data[ 'file' ]);
+ if (is_array($data[ 'function' ])) {
+ $output .= "if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) require_once '{$file}';\n";
+ } else {
+ $output .= "if (!is_callable('{$data['function']}')) require_once '{$file}';\n";
+ }
+ }
+ }
+ }
+ if ($_template->caching && !empty($_template->compiled->required_plugins[ 'nocache' ])) {
+ $_template->compiled->has_nocache_code = true;
+ $output .= "echo '/*%%SmartyNocache:{$_template->compiled->nocache_hash}%%*/<?php \$_smarty = \$_smarty_tpl->smarty; ";
+ foreach ($_template->compiled->required_plugins[ 'nocache' ] as $tmp) {
+ foreach ($tmp as $data) {
+ $file = addslashes($data[ 'file' ]);
+ if (is_array($data[ 'function' ])) {
+ $output .= addslashes("if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) require_once '{$file}';\n");
+ } else {
+ $output .= addslashes("if (!is_callable('{$data['function']}')) require_once '{$file}';\n");
+ }
+ }
+ }
+ $output .= "?>/*/%%SmartyNocache:{$_template->compiled->nocache_hash}%%*/';\n";
+ }
+ }
+ $output .= "?>\n";
+ $output .= $content;
+ $output .= "<?php }\n?>";
+ $output .= $functions;
+ $output .= "<?php }\n";
+ // remove unneeded PHP tags
+ return preg_replace(array('/\s*\?>[\n]?<\?php\s*/', '/\?>\s*$/'), array("\n", ''), $output);
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
new file mode 100644
index 000000000..f6cfa7c44
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Smarty Internal Plugin Filter Handler
+ * Smarty filter handler class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+
+/**
+ * Class for filter processing
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Runtime_FilterHandler
+{
+ /**
+ * Run filters over content
+ * The filters will be lazy loaded if required
+ * class name format: Smarty_FilterType_FilterName
+ * plugin filename format: filtertype.filtername.php
+ * Smarty2 filter plugins could be used
+ *
+ * @param string $type the type of filter ('pre','post','output') which shall run
+ * @param string $content the content which shall be processed by the filters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
+ * @return string the filtered content
+ */
+ public function runFilter($type, $content, Smarty_Internal_Template $template)
+ {
+ // loop over autoload filters of specified type
+ if (!empty($template->smarty->autoload_filters[ $type ])) {
+ foreach ((array) $template->smarty->autoload_filters[ $type ] as $name) {
+ $plugin_name = "Smarty_{$type}filter_{$name}";
+ if (function_exists($plugin_name)) {
+ $callback = $plugin_name;
+ } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
+ $callback = array($plugin_name, 'execute');
+ } elseif ($template->smarty->loadPlugin($plugin_name, false)) {
+ if (function_exists($plugin_name)) {
+ // use loaded Smarty2 style plugin
+ $callback = $plugin_name;
+ } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
+ // loaded class of filter plugin
+ $callback = array($plugin_name, 'execute');
+ } else {
+ throw new SmartyException("Auto load {$type}-filter plugin method \"{$plugin_name}::execute\" not callable");
+ }
+ } else {
+ // nothing found, throw exception
+ throw new SmartyException("Unable to auto load {$type}-filter plugin \"{$plugin_name}\"");
+ }
+ $content = call_user_func($callback, $content, $template);
+ }
+ }
+ // loop over registered filters of specified type
+ if (!empty($template->smarty->registered_filters[ $type ])) {
+ foreach ($template->smarty->registered_filters[ $type ] as $key => $name) {
+ $content = call_user_func($template->smarty->registered_filters[ $type ][ $key ], $content, $template);
+ }
+ }
+ // return filtered output
+ return $content;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
new file mode 100644
index 000000000..1e8655d92
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * Foreach Runtime Methods count(), init(), restore()
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ */
+class Smarty_Internal_Runtime_Foreach
+{
+
+ /**
+ * Stack of saved variables
+ *
+ * @var array
+ */
+ private $stack = array();
+
+ /**
+ * Init foreach loop
+ * - save item and key variables, named foreach property data if defined
+ * - init item and key variables, named foreach property data if required
+ * - count total if required
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param mixed $from values to loop over
+ * @param string $item variable name
+ * @param bool $needTotal flag if we need to count values
+ * @param null|string $key variable name
+ * @param null|string $name of named foreach
+ * @param array $properties of named foreach
+ *
+ * @return mixed $from
+ */
+ public function init(Smarty_Internal_Template $tpl, $from, $item, $needTotal = false, $key = null, $name = null,
+ $properties = array())
+ {
+ $saveVars = array();
+ $total = null;
+ if (!is_array($from)) {
+ if (is_object($from)) {
+ $total = $this->count($from);
+ } else {
+ settype($from, 'array');
+ }
+ }
+ if (!isset($total)) {
+ $total = empty($from) ? 0 : (($needTotal || isset($properties[ 'total' ])) ? count($from) : 1);
+ }
+ if (isset($tpl->tpl_vars[ $item ])) {
+ $saveVars[ 'item' ] = array($item, $tpl->tpl_vars[ $item ]);
+ }
+ $tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache);
+ if ($total === 0) {
+ $from = null;
+ } else {
+ if ($key) {
+ if (isset($tpl->tpl_vars[ $key ])) {
+ $saveVars[ 'key' ] = array($key, $tpl->tpl_vars[ $key ]);
+ }
+ $tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache);
+ }
+ }
+ if ($needTotal) {
+ $tpl->tpl_vars[ $item ]->total = $total;
+ }
+ if ($name) {
+ $namedVar = "__smarty_foreach_{$name}";
+ if (isset($tpl->tpl_vars[ $namedVar ])) {
+ $saveVars[ 'named' ] = array($namedVar, $tpl->tpl_vars[ $namedVar ]);
+ }
+ $namedProp = array();
+ if (isset($properties[ 'total' ])) {
+ $namedProp[ 'total' ] = $total;
+ }
+ if (isset($properties[ 'iteration' ])) {
+ $namedProp[ 'iteration' ] = 0;
+ }
+ if (isset($properties[ 'index' ])) {
+ $namedProp[ 'index' ] = - 1;
+ }
+ if (isset($properties[ 'show' ])) {
+ $namedProp[ 'show' ] = ($total > 0);
+ }
+ $tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp);
+ }
+ $this->stack[] = $saveVars;
+ return $from;
+ }
+
+ /**
+ * Restore saved variables
+ *
+ * will be called by {break n} or {continue n} for the required number of levels
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param int $levels number of levels
+ */
+ public function restore(Smarty_Internal_Template $tpl, $levels = 1)
+ {
+ while ($levels) {
+ $saveVars = array_pop($this->stack);
+ if (!empty($saveVars)) {
+ if (isset($saveVars[ 'item' ])) {
+ $item = &$saveVars[ 'item' ];
+ $tpl->tpl_vars[ $item[ 0 ] ]->value = $item[ 1 ]->value;
+ }
+ if (isset($saveVars[ 'key' ])) {
+ $tpl->tpl_vars[ $saveVars[ 'key' ][ 0 ] ] = $saveVars[ 'key' ][ 1 ];
+ }
+ if (isset($saveVars[ 'named' ])) {
+ $tpl->tpl_vars[ $saveVars[ 'named' ][ 0 ] ] = $saveVars[ 'named' ][ 1 ];
+ }
+ }
+ $levels--;
+ }
+ }
+
+ /*
+ *
+ * [util function] counts an array, arrayAccess/traversable or PDOStatement object
+ *
+ * @param mixed $value
+ *
+ * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
+ * for empty elements
+ */
+ public function count($value)
+ {
+ if ($value instanceof Countable) {
+ return count($value);
+ } elseif ($value instanceof IteratorAggregate) {
+ // Note: getIterator() returns a Traversable, not an Iterator
+ // thus rewind() and valid() methods may not be present
+ return iterator_count($value->getIterator());
+ } elseif ($value instanceof Iterator) {
+ return $value instanceof Generator ? 1 : iterator_count($value);
+ } elseif ($value instanceof PDOStatement) {
+ return $value->rowCount();
+ } elseif ($value instanceof Traversable) {
+ return iterator_count($value);
+ } elseif ($value instanceof ArrayAccess) {
+ return $value->offsetExists(0) ? 1 : 0;
+ }
+ return count((array) $value);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
new file mode 100644
index 000000000..e12b0c57c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
@@ -0,0 +1,182 @@
+<?php
+/**
+ * Smarty read include path plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Monte Ohrt
+ */
+
+/**
+ * Smarty Internal Read Include Path Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Runtime_GetIncludePath
+{
+ /**
+ * include path cache
+ *
+ * @var string
+ */
+ public $_include_path = '';
+
+ /**
+ * include path directory cache
+ *
+ * @var array
+ */
+ public $_include_dirs = array();
+
+ /**
+ * include path directory cache
+ *
+ * @var array
+ */
+ public $_user_dirs = array();
+
+ /**
+ * stream cache
+ *
+ * @var string[]
+ */
+ public $isFile = array();
+
+ /**
+ * stream cache
+ *
+ * @var string[]
+ */
+ public $isPath = array();
+
+ /**
+ * stream cache
+ *
+ * @var int[]
+ */
+ public $number = array();
+
+ /**
+ * status cache
+ *
+ * @var bool
+ */
+ public $_has_stream_include = null;
+
+ /**
+ * Number for array index
+ *
+ * @var int
+ */
+ public $counter = 0;
+
+ /**
+ * Check if include path was updated
+ *
+ * @param \Smarty $smarty
+ *
+ * @return bool
+ */
+ public function isNewIncludePath(Smarty $smarty)
+ {
+ $_i_path = get_include_path();
+ if ($this->_include_path != $_i_path) {
+ $this->_include_dirs = array();
+ $this->_include_path = $_i_path;
+ $_dirs = (array) explode(PATH_SEPARATOR, $_i_path);
+ foreach ($_dirs as $_path) {
+ if (is_dir($_path)) {
+ $this->_include_dirs[] = $smarty->_realpath($_path . $smarty->ds, true);
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * return array with include path directories
+ *
+ * @param \Smarty $smarty
+ *
+ * @return array
+ */
+ public function getIncludePathDirs(Smarty $smarty)
+ {
+ $this->isNewIncludePath($smarty);
+ return $this->_include_dirs;
+ }
+
+ /**
+ * Return full file path from PHP include_path
+ *
+ * @param string[] $dirs
+ * @param string $file
+ * @param \Smarty $smarty
+ *
+ * @return bool|string full filepath or false
+ *
+ */
+ public function getIncludePath($dirs, $file, Smarty $smarty)
+ {
+ //if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) {
+ if (!(isset($this->_has_stream_include) ? $this->_has_stream_include :
+ $this->_has_stream_include = function_exists('stream_resolve_include_path'))
+ ) {
+ $this->isNewIncludePath($smarty);
+ }
+ // try PHP include_path
+ foreach ($dirs as $dir) {
+ $dir_n = isset($this->number[ $dir ]) ? $this->number[ $dir ] : $this->number[ $dir ] = $this->counter ++;
+ if (isset($this->isFile[ $dir_n ][ $file ])) {
+ if ($this->isFile[ $dir_n ][ $file ]) {
+ return $this->isFile[ $dir_n ][ $file ];
+ } else {
+ continue;
+ }
+ }
+ if (isset($this->_user_dirs[ $dir_n ])) {
+ if (false === $this->_user_dirs[ $dir_n ]) {
+ continue;
+ } else {
+ $dir = $this->_user_dirs[ $dir_n ];
+ }
+ } else {
+ if ($dir[ 0 ] == '/' || $dir[ 1 ] == ':') {
+ $dir = str_ireplace(getcwd(), '.', $dir);
+ if ($dir[ 0 ] == '/' || $dir[ 1 ] == ':') {
+ $this->_user_dirs[ $dir_n ] = false;
+ continue;
+ }
+ }
+ $dir = substr($dir, 2);
+ $this->_user_dirs[ $dir_n ] = $dir;
+ }
+ if ($this->_has_stream_include) {
+ $path = stream_resolve_include_path($dir . (isset($file) ? $file : ''));
+ if ($path) {
+ return $this->isFile[ $dir_n ][ $file ] = $path;
+ }
+ } else {
+ foreach ($this->_include_dirs as $key => $_i_path) {
+ $path = isset($this->isPath[ $key ][ $dir_n ]) ? $this->isPath[ $key ][ $dir_n ] :
+ $this->isPath[ $key ][ $dir_n ] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false;
+ if ($path === false) {
+ continue;
+ }
+ if (isset($file)) {
+ $_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false;
+ if ($_file) {
+ return $_file;
+ }
+ } else {
+ // no file was given return directory path
+ return $path;
+ }
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
new file mode 100644
index 000000000..7ec5924e6
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
@@ -0,0 +1,241 @@
+<?php
+
+/**
+ * Inheritance Runtime Methods processBlock, endChild, init
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_Inheritance
+{
+
+ /**
+ * State machine
+ * - 0 idle next extends will create a new inheritance tree
+ * - 1 processing child template
+ * - 2 wait for next inheritance template
+ * - 3 assume parent template, if child will loaded goto state 1
+ * a call to a sub template resets the state to 0
+ *
+ * @var int
+ */
+ public $state = 0;
+
+ /**
+ * Array of root child {block} objects
+ *
+ * @var Smarty_Internal_Block[]
+ */
+ public $childRoot = array();
+
+ /**
+ * inheritance template nesting level
+ *
+ * @var int
+ */
+ public $inheritanceLevel = 0;
+
+ /**
+ * inheritance template index
+ *
+ * @var int
+ */
+ public $tplIndex = - 1;
+
+ /**
+ * Array of template source objects
+ * - key template index
+ *
+ * @var Smarty_Template_Source[]
+ */
+ public $sources = array();
+
+ /**
+ * Stack of source objects while executing block code
+ *
+ * @var Smarty_Template_Source[]
+ */
+ public $sourceStack = array();
+
+ /**
+ * Initialize inheritance
+ *
+ * @param \Smarty_Internal_Template $tpl template object of caller
+ * @param bool $initChild if true init for child template
+ * @param array $blockNames outer level block name
+ *
+ */
+ public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array())
+ {
+ // if called while executing parent template it must be a sub-template with new inheritance root
+ if ($initChild && $this->state == 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
+ $tpl->inheritance = new Smarty_Internal_Runtime_Inheritance();
+ $tpl->inheritance->init($tpl, $initChild, $blockNames);
+ return;
+ }
+ $this->tplIndex ++;
+ $this->sources[ $this->tplIndex ] = $tpl->source;
+
+ // start of child sub template(s)
+ if ($initChild) {
+ $this->state = 1;
+ if (!$this->inheritanceLevel) {
+ //grab any output of child templates
+ ob_start();
+ }
+ $this->inheritanceLevel ++;
+ // $tpl->startRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateStart');
+ // $tpl->endRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateEnd');
+ }
+ // if state was waiting for parent change state to parent
+ if ($this->state == 2) {
+ $this->state = 3;
+ }
+ }
+
+ /**
+ * End of child template(s)
+ * - if outer level is reached flush output buffer and switch to wait for parent template state
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param null|string $template optinal name of inheritance parent template
+ * @param null|string $uid uid of inline template
+ * @param null|string $func function call name of inline template
+ */
+ public function endChild(Smarty_Internal_Template $tpl, $template = null, $uid = null, $func = null)
+ {
+ $this->inheritanceLevel --;
+ if (!$this->inheritanceLevel) {
+ ob_end_clean();
+ $this->state = 2;
+ }
+ if (isset($template) && (($tpl->parent->_isTplObj() && $tpl->parent->source->type !== 'extends') || $tpl->smarty->extends_recursion)) {
+ $tpl->_subTemplateRender($template, $tpl->cache_id, $tpl->compile_id, $tpl->caching ? 9999 : 0,
+ $tpl->cache_lifetime, array(), 2, false, $uid, $func);
+ }
+ }
+
+ /**
+ * Smarty_Internal_Block constructor.
+ * - if outer level {block} of child template ($state == 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param $className
+ * @param string $name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ */
+ public function instanceBlock(Smarty_Internal_Template $tpl, $className, $name, $tplIndex = null)
+ {
+ $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex);
+ if (isset($this->childRoot[ $name ])) {
+ $block->child = $this->childRoot[ $name ];
+ }
+ if ($this->state == 1) {
+ $this->childRoot[ $name ] = $block;
+ return;
+ }
+ // make sure we got child block of child template of current block
+ while ($block->child && $block->tplIndex <= $block->child->tplIndex) {
+ $block->child = $block->child->child;
+ }
+ $this->process($tpl, $block);
+ }
+
+ /**
+ * Goto child block or render this
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ * @param \Smarty_Internal_Block|null $parent
+ *
+ * @throws \SmartyException
+ */
+ public function process(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block,
+ Smarty_Internal_Block $parent = null)
+ {
+ if ($block->hide && !isset($block->child)) {
+ return;
+ }
+ if (isset($block->child) && $block->child->hide && !isset($block->child->child)) {
+ $block->child = null;
+ }
+ $block->parent = $parent;
+ if ($block->append && !$block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block);
+ }
+ if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->process($tpl, $block->child, $block);
+ }
+ if ($block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block);
+ if ($block->append) {
+ if ($block->callsChild || !isset($block->child) ||
+ ($block->child->hide && !isset($block->child->child))
+ ) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->process($tpl, $block->child, $block);
+ }
+ }
+ }
+ $block->parent = null;
+ }
+
+ /**
+ * Render child on {$smarty.block.child}
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ */
+ public function callChild(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block)
+ {
+ if (isset($block->child)) {
+ $this->process($tpl, $block->child, $block);
+ }
+ }
+
+ /**
+ * Render parent on {$smarty.block.parent} or {block append/prepend} *
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ *
+ * @param null $name
+ *
+ * @throws \SmartyException
+ */
+ public function callParent(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block, $name = null)
+ {
+ if (isset($name)) {
+ $block = $block->parent;
+ while (isset($block)) {
+ if (isset($block->subBlocks[ $name ])) {
+ } else {
+ $block = $block->parent;
+ }
+ }
+ return;
+ } else if (isset($block->parent)) {
+ $this->callBlock($block->parent, $tpl);
+ } else {
+ throw new SmartyException("inheritance: illegal {\$smarty.block.parent} or {block append/prepend} used in parent template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'");
+ }
+ }
+
+ /**
+ * @param \Smarty_Internal_Block $block
+ * @param \Smarty_Internal_Template $tpl
+ */
+ public function callBlock(Smarty_Internal_Block $block, Smarty_Internal_Template $tpl)
+ {
+ $this->sourceStack[] = $tpl->source;
+ $tpl->source = $this->sources[ $block->tplIndex ];
+ $block->callBlock($tpl);
+ $tpl->source = array_pop($this->sourceStack);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
new file mode 100644
index 000000000..65382772d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * {make_nocache} Runtime Methods save(), store()
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ */
+class Smarty_Internal_Runtime_Make_Nocache
+{
+
+ /**
+ * Save current variable value while rendering compiled template and inject nocache code to
+ * assign variable value in cahed template
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $var variable name
+ *
+ * @throws \SmartyException
+ */
+ public function save(Smarty_Internal_Template $tpl, $var)
+ {
+ if (isset($tpl->tpl_vars[ $var ])) {
+ $export =
+ preg_replace('/^Smarty_Variable::__set_state[(]|[)]$/', '', var_export($tpl->tpl_vars[ $var ], true));
+ if (preg_match('/(\w+)::__set_state/', $export, $match)) {
+ throw new SmartyException("{make_nocache \${$var}} in template '{$tpl->source->name}': variable does contain object '{$match[1]}' not implementing method '__set_state'");
+ }
+ echo "/*%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/<?php " .
+ addcslashes("\$_smarty_tpl->smarty->ext->_make_nocache->store(\$_smarty_tpl, '{$var}', ", '\\') .
+ $export . ");?>\n/*/%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/";
+ }
+ }
+
+ /**
+ * Store variable value saved while rendering compiled template in cached template context
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $var variable name
+ * @param array $properties
+ */
+ public function store(Smarty_Internal_Template $tpl, $var, $properties)
+ {
+ // do not overwrite existing nocache variables
+ if (!isset($tpl->tpl_vars[ $var ]) || !$tpl->tpl_vars[ $var ]->nocache) {
+ $newVar = new Smarty_Variable();
+ unset($properties[ 'nocache' ]);
+ foreach ($properties as $k => $v) {
+ $newVar->$k = $v;
+ }
+ $tpl->tpl_vars[ $var ] = $newVar;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
new file mode 100644
index 000000000..f6b36f2a5
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
@@ -0,0 +1,171 @@
+<?php
+
+/**
+ * TplFunction Runtime Methods callTemplateFunction
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_TplFunction
+{
+ /**
+ * Call template function
+ *
+ * @param \Smarty_Internal_Template $tpl template object
+ * @param string $name template function name
+ * @param array $params parameter array
+ * @param bool $nocache true if called nocache
+ *
+ * @throws \SmartyException
+ */
+ public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache)
+ {
+ $funcParam = isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
+ (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : null);
+ if (isset($funcParam)) {
+ if (!$tpl->caching || ($tpl->caching && $nocache)) {
+ $function = $funcParam[ 'call_name' ];
+ } else {
+ if (isset($funcParam[ 'call_name_caching' ])) {
+ $function = $funcParam[ 'call_name_caching' ];
+ } else {
+ $function = $funcParam[ 'call_name' ];
+ }
+ }
+ if (function_exists($function)) {
+ $this->saveTemplateVariables($tpl, $name);
+ $function ($tpl, $params);
+ $this->restoreTemplateVariables($tpl, $name);
+ return;
+ }
+ // try to load template function dynamically
+ if ($this->addTplFuncToCache($tpl, $name, $function)) {
+ $this->saveTemplateVariables($tpl, $name);
+ $function ($tpl, $params);
+ $this->restoreTemplateVariables($tpl, $name);
+ return;
+ }
+ }
+ throw new SmartyException("Unable to find template function '{$name}'");
+ }
+
+ /**
+ * Register template functions defined by template
+ *
+ * @param \Smarty|\Smarty_Internal_Template|\Smarty_Internal_TemplateBase $obj
+ * @param array $tplFunctions source information array of template functions defined in template
+ * @param bool $override if true replace existing functions with same name
+ */
+ public function registerTplFunctions(Smarty_Internal_TemplateBase $obj, $tplFunctions, $override = true)
+ {
+ $obj->tplFunctions =
+ $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions);
+ // make sure that the template functions are known in parent templates
+ if ($obj->_isSubTpl()) {
+ $obj->smarty->ext->_tplFunction->registerTplFunctions($obj->parent, $tplFunctions, false);
+ } else {
+ $obj->smarty->tplFunctions = $override ? array_merge($obj->smarty->tplFunctions, $tplFunctions) :
+ array_merge($tplFunctions, $obj->smarty->tplFunctions);
+ }
+ }
+
+ /**
+ * Return source parameter array for single or all template functions
+ *
+ * @param \Smarty_Internal_Template $tpl template object
+ * @param null|string $name template function name
+ *
+ * @return array|bool|mixed
+ */
+ public function getTplFunction(Smarty_Internal_Template $tpl, $name = null)
+ {
+ if (isset($name)) {
+ return isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
+ (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : false);
+ } else {
+ return empty($tpl->tplFunctions) ? $tpl->smarty->tplFunctions : $tpl->tplFunctions;
+ }
+ }
+
+ /**
+ *
+ * Add template function to cache file for nocache calls
+ *
+ * @param Smarty_Internal_Template $tpl
+ * @param string $_name template function name
+ * @param string $_function PHP function name
+ *
+ * @return bool
+ */
+ public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function)
+ {
+ $funcParam = $tpl->tplFunctions[ $_name ];
+ if (is_file($funcParam[ 'compiled_filepath' ])) {
+ // read compiled file
+ $code = file_get_contents($funcParam[ 'compiled_filepath' ]);
+ // grab template function
+ if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
+ // grab source info from file dependency
+ preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
+ unset($code);
+ // make PHP function known
+ eval($match[ 0 ]);
+ if (function_exists($_function)) {
+ // search cache file template
+ $tplPtr = $tpl;
+ while (!isset($tplPtr->cached) && isset($tplPtr->parent)) {
+ $tplPtr = $tplPtr->parent;
+ }
+ // add template function code to cache file
+ if (isset($tplPtr->cached)) {
+ /* @var Smarty_Template_Cached $cache */
+ $cache = $tplPtr->cached;
+ $content = $cache->read($tplPtr);
+ if ($content) {
+ // check if we must update file dependency
+ if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
+ $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
+ }
+ $tplPtr->smarty->ext->_updateCache->write($cache, $tplPtr,
+ preg_replace('/\s*\?>\s*$/', "\n", $content) .
+ "\n" . preg_replace(array('/^\s*<\?php\s+/',
+ '/\s*\?>\s*$/',), "\n",
+ $match[ 0 ]));
+ }
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Save current template variables on stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $name stack name
+ */
+ public function saveTemplateVariables(Smarty_Internal_Template $tpl, $name)
+ {
+ $tpl->_cache[ 'varStack' ][] =
+ array('tpl' => $tpl->tpl_vars, 'config' => $tpl->config_vars, 'name' => "_tplFunction_{$name}");
+ }
+
+ /**
+ * Restore saved variables into template objects
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $name stack name
+ */
+ public function restoreTemplateVariables(Smarty_Internal_Template $tpl, $name)
+ {
+ if (isset($tpl->_cache[ 'varStack' ])) {
+ $vars = array_pop($tpl->_cache[ 'varStack' ]);
+ $tpl->tpl_vars = $vars[ 'tpl' ];
+ $tpl->config_vars = $vars[ 'config' ];
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
new file mode 100644
index 000000000..ceee3b718
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
@@ -0,0 +1,165 @@
+<?php
+
+/**
+ * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_UpdateCache
+{
+ /**
+ * check client side cache
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param Smarty_Internal_Template $_template
+ * @param string $content
+ */
+ public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
+ {
+ }
+
+ /**
+ * Sanitize content and write it to cache resource
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param Smarty_Internal_Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \SmartyException
+ */
+ public function removeNoCacheHash(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template,
+ $no_output_filter)
+ {
+ $content = ob_get_clean();
+ unset($cached->hashes[ $_template->compiled->nocache_hash ]);
+ if (!empty($cached->hashes)) {
+ $hash_array = array();
+ foreach ($cached->hashes as $hash => $foo) {
+ $hash_array[] = "/{$hash}/";
+ }
+ $content = preg_replace($hash_array, $_template->compiled->nocache_hash, $content);
+ }
+ $_template->cached->has_nocache_code = false;
+ // get text between non-cached items
+ $cache_split =
+ preg_split("!/\*%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*/!s",
+ $content);
+ // get non-cached items
+ preg_match_all("!/\*%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$_template->compiled->nocache_hash}%%\*/!s",
+ $content, $cache_parts);
+ $content = '';
+ // loop over items, stitch back together
+ foreach ($cache_split as $curr_idx => $curr_split) {
+ // escape PHP tags in template content
+ $content .= preg_replace('/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/',
+ "<?php echo '\$1'; ?>\n", $curr_split);
+ if (isset($cache_parts[ 0 ][ $curr_idx ])) {
+ $_template->cached->has_nocache_code = true;
+ $content .= $cache_parts[ 1 ][ $curr_idx ];
+ }
+ }
+ if (!$no_output_filter && !$_template->cached->has_nocache_code &&
+ (isset($_template->smarty->autoload_filters[ 'output' ]) ||
+ isset($_template->smarty->registered_filters[ 'output' ]))
+ ) {
+ $content = $_template->smarty->ext->_filterHandler->runFilter('output', $content, $_template);
+ }
+ // write cache file content
+ $this->writeCachedContent($cached, $_template, $content);
+ }
+
+ /**
+ * Cache was invalid , so render from compiled and write to cache
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param \Smarty_Internal_Template $_template
+ * @param $no_output_filter
+ *
+ * @throws \Exception
+ */
+ public function updateCache(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $no_output_filter)
+ {
+ ob_start();
+ if (!isset($_template->compiled)) {
+ $_template->loadCompiled();
+ }
+ $_template->compiled->render($_template);
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->start_cache($_template);
+ }
+ $this->removeNoCacheHash($cached, $_template, $no_output_filter);
+ $compile_check = $_template->smarty->compile_check;
+ $_template->smarty->compile_check = false;
+ if ($_template->_isSubTpl()) {
+ $_template->compiled->unifunc = $_template->parent->compiled->unifunc;
+ }
+ if (!$_template->cached->processed) {
+ $_template->cached->process($_template, true);
+ }
+ $_template->smarty->compile_check = $compile_check;
+ $cached->getRenderedTemplateCode($_template);
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_cache($_template);
+ }
+ }
+
+ /**
+ * Writes the content to cache resource
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param Smarty_Internal_Template $_template
+ * @param string $content
+ *
+ * @return bool
+ */
+ public function writeCachedContent(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
+ {
+ if ($_template->source->handler->recompiled || !($_template->caching == Smarty::CACHING_LIFETIME_CURRENT ||
+ $_template->caching == Smarty::CACHING_LIFETIME_SAVED)
+ ) {
+ // don't write cache file
+ return false;
+ }
+ $content = $_template->smarty->ext->_codeFrame->create($_template, $content, '', true);
+ return $this->write($cached, $_template, $content);
+ }
+
+ /**
+ * Write this cache object to handler
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return bool success
+ */
+ public function write(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
+ {
+ if (!$_template->source->handler->recompiled) {
+ if ($cached->handler->writeCachedContent($_template, $content)) {
+ $cached->content = null;
+ $cached->timestamp = time();
+ $cached->exists = true;
+ $cached->valid = true;
+ $cached->cache_lifetime = $_template->cache_lifetime;
+ $cached->processed = false;
+ if ($_template->smarty->cache_locking) {
+ $cached->handler->releaseLock($_template->smarty, $cached);
+ }
+
+ return true;
+ }
+ $cached->content = null;
+ $cached->timestamp = false;
+ $cached->exists = false;
+ $cached->valid = false;
+ $cached->processed = false;
+ }
+
+ return false;
+ }
+
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
new file mode 100644
index 000000000..79885321b
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * Runtime Extension updateScope
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ *
+ **/
+class Smarty_Internal_Runtime_UpdateScope
+{
+
+ /**
+ * Update new assigned template or config variable in other effected scopes
+ *
+ * @param Smarty_Internal_Template $tpl data object
+ * @param string|null $varName variable name
+ * @param int $tagScope tag scope to which bubble up variable value
+ *
+ */
+ public function _updateScope(Smarty_Internal_Template $tpl, $varName, $tagScope = 0)
+ {
+ if ($tagScope) {
+ $this->_updateVarStack($tpl, $varName);
+ $tagScope = $tagScope & ~Smarty::SCOPE_LOCAL;
+ if (!$tpl->scope && !$tagScope) return;
+ }
+ $mergedScope = $tagScope | $tpl->scope;
+ if ($mergedScope) {
+ if ($mergedScope & Smarty::SCOPE_GLOBAL && $varName) {
+ Smarty::$global_tpl_vars[ $varName ] = $tpl->tpl_vars[ $varName ];
+ }
+ // update scopes
+ foreach ($this->_getAffectedScopes($tpl, $mergedScope) as $ptr) {
+ $this->_updateVariableInOtherScope($ptr->tpl_vars, $tpl, $varName);
+ if($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
+ $this->_updateVarStack($ptr, $varName); }
+ }
+ }
+ }
+
+ /**
+ * Get array of objects which needs to be updated by given scope value
+ *
+ * @param Smarty_Internal_Template $tpl
+ * @param int $mergedScope merged tag and template scope to which bubble up variable value
+ *
+ * @return array
+ */
+ public function _getAffectedScopes(Smarty_Internal_Template $tpl, $mergedScope)
+ {
+ $_stack = array();
+ $ptr = $tpl->parent;
+ if ($mergedScope && isset($ptr) && $ptr->_isTplObj()) {
+ $_stack[] = $ptr;
+ $mergedScope = $mergedScope & ~Smarty::SCOPE_PARENT;
+ if (!$mergedScope) {
+ // only parent was set, we are done
+ return $_stack;
+ }
+ $ptr = $ptr->parent;
+ }
+ while (isset($ptr) && $ptr->_isTplObj()) {
+ $_stack[] = $ptr;
+ $ptr = $ptr->parent;
+ }
+ if ($mergedScope & Smarty::SCOPE_SMARTY) {
+ if (isset($tpl->smarty)) {
+ $_stack[] = $tpl->smarty;
+ }
+ } elseif ($mergedScope & Smarty::SCOPE_ROOT) {
+ while (isset($ptr)) {
+ if (!$ptr->_isTplObj()) {
+ $_stack[] = $ptr;
+ break;
+ }
+ $ptr = $ptr->parent;
+ }
+ }
+ return $_stack;
+ }
+
+ /**
+ * Update varibale in other scope
+ *
+ * @param array $tpl_vars template variable array
+ * @param \Smarty_Internal_Template $from
+ * @param string $varName variable name
+ */
+ public function _updateVariableInOtherScope(&$tpl_vars, Smarty_Internal_Template $from, $varName)
+ {
+ if (!isset($tpl_vars[ $varName ])) {
+ $tpl_vars[ $varName ] = clone $from->tpl_vars[ $varName ];
+ } else {
+ $tpl_vars[ $varName ] = clone $tpl_vars[ $varName ];
+ $tpl_vars[ $varName ]->value = $from->tpl_vars[ $varName ]->value;
+ }
+ }
+
+ /**
+ * Update variable in template local variable stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string|null $varName variable name or null for config variables
+ */
+ public function _updateVarStack(Smarty_Internal_Template $tpl, $varName)
+ {
+ $i = 0;
+ while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
+ $this->_updateVariableInOtherScope($tpl->_cache[ 'varStack' ][ $i ][ 'tpl' ], $tpl, $varName);
+ $i ++;
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
new file mode 100644
index 000000000..7c462c6ca
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Smarty write file plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Monte Ohrt
+ */
+
+/**
+ * Smarty Internal Write File Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Runtime_WriteFile
+{
+ /**
+ * Writes file in a safe way to disk
+ *
+ * @param string $_filepath complete filepath
+ * @param string $_contents file content
+ * @param Smarty $smarty smarty instance
+ *
+ * @throws SmartyException
+ * @return boolean true
+ */
+ public function writeFile($_filepath, $_contents, Smarty $smarty)
+ {
+ $_error_reporting = error_reporting();
+ error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
+ $_file_perms = property_exists($smarty, '_file_perms') ? $smarty->_file_perms : 0644;
+ $_dir_perms =
+ property_exists($smarty, '_dir_perms') ? (isset($smarty->_dir_perms) ? $smarty->_dir_perms : 0777) : 0771;
+ if ($_file_perms !== null) {
+ $old_umask = umask(0);
+ }
+
+ $_dirpath = dirname($_filepath);
+ // if subdirs, create dir structure
+ if ($_dirpath !== '.' && !file_exists($_dirpath)) {
+ mkdir($_dirpath, $_dir_perms, true);
+ }
+
+ // write to tmp file, then move to overt file lock race condition
+ $_tmp_file = $_dirpath . $smarty->ds . str_replace(array('.', ','), '_', uniqid('wrt', true));
+ if (!file_put_contents($_tmp_file, $_contents)) {
+ error_reporting($_error_reporting);
+ throw new SmartyException("unable to write file {$_tmp_file}");
+ }
+
+ /*
+ * Windows' rename() fails if the destination exists,
+ * Linux' rename() properly handles the overwrite.
+ * Simply unlink()ing a file might cause other processes
+ * currently reading that file to fail, but linux' rename()
+ * seems to be smart enough to handle that for us.
+ */
+ if (Smarty::$_IS_WINDOWS) {
+ // remove original file
+ if (is_file($_filepath)) {
+ @unlink($_filepath);
+ }
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ } else {
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ if (!$success) {
+ // remove original file
+ if (is_file($_filepath)) {
+ @unlink($_filepath);
+ }
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ }
+ }
+ if (!$success) {
+ error_reporting($_error_reporting);
+ throw new SmartyException("unable to write file {$_filepath}");
+ }
+ if ($_file_perms !== null) {
+ // set file permissions
+ chmod($_filepath, $_file_perms);
+ umask($old_umask);
+ }
+ error_reporting($_error_reporting);
+
+ return true;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
new file mode 100644
index 000000000..8cd37dd56
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
@@ -0,0 +1,170 @@
+<?php
+/**
+ * Smarty Internal Plugin Smarty Template Compiler Base
+ * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Class SmartyTemplateCompiler
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase
+{
+ /**
+ * Lexer class name
+ *
+ * @var string
+ */
+ public $lexer_class;
+
+ /**
+ * Parser class name
+ *
+ * @var string
+ */
+ public $parser_class;
+
+ /**
+ * array of vars which can be compiled in local scope
+ *
+ * @var array
+ */
+ public $local_var = array();
+
+ /**
+ * array of callbacks called when the normal compile process of template is finished
+ *
+ * @var array
+ */
+ public $postCompileCallbacks = array();
+
+ /**
+ * prefix code
+ *
+ * @var string
+ */
+ public $prefixCompiledCode = '';
+
+ /**
+ * postfix code
+ *
+ * @var string
+ */
+ public $postfixCompiledCode = '';
+
+ /**
+ * Initialize compiler
+ *
+ * @param string $lexer_class class name
+ * @param string $parser_class class name
+ * @param Smarty $smarty global instance
+ */
+ public function __construct($lexer_class, $parser_class, Smarty $smarty)
+ {
+ parent::__construct($smarty);
+ // get required plugins
+ $this->lexer_class = $lexer_class;
+ $this->parser_class = $parser_class;
+ }
+
+ /**
+ * method to compile a Smarty template
+ *
+ * @param mixed $_content template source
+ * @param bool $isTemplateSource
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ * @throws \SmartyCompilerException
+ */
+ protected function doCompile($_content, $isTemplateSource = false)
+ {
+ /* here is where the compiling takes place. Smarty
+ tags in the templates are replaces with PHP code,
+ then written to compiled files. */
+ // init the lexer/parser to compile the template
+ $this->parser =
+ new $this->parser_class(new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $_content), $this),
+ $this);
+ if ($isTemplateSource && $this->template->caching) {
+ $this->parser->insertPhpCode("<?php\n\$_smarty_tpl->compiled->nocache_hash = '{$this->nocache_hash}';\n?>\n");
+ }
+ if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+ $mbEncoding = mb_internal_encoding();
+ mb_internal_encoding('ASCII');
+ } else {
+ $mbEncoding = null;
+ }
+
+ if ($this->smarty->_parserdebug) {
+ $this->parser->PrintTrace();
+ $this->parser->lex->PrintTrace();
+ }
+ // get tokens from lexer and parse them
+ while ($this->parser->lex->yylex()) {
+ if ($this->smarty->_parserdebug) {
+ echo "<pre>Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " .
+ htmlentities($this->parser->lex->value) . "</pre>";
+ }
+ $this->parser->doParse($this->parser->lex->token, $this->parser->lex->value);
+ }
+
+ // finish parsing process
+ $this->parser->doParse(0, 0);
+ if ($mbEncoding) {
+ mb_internal_encoding($mbEncoding);
+ }
+ // check for unclosed tags
+ if (count($this->_tag_stack) > 0) {
+ // get stacked info
+ list($openTag, $_data) = array_pop($this->_tag_stack);
+ $this->trigger_template_error("unclosed {$this->smarty->left_delimiter}" . $openTag .
+ "{$this->smarty->right_delimiter} tag");
+ }
+ // call post compile callbacks
+ foreach ($this->postCompileCallbacks as $cb) {
+ $parameter = $cb;
+ $parameter[ 0 ] = $this;
+ call_user_func_array($cb[ 0 ], $parameter);
+ }
+ // return compiled code
+ return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode;
+ }
+
+ /**
+ * Register a post compile callback
+ * - when the callback is called after template compiling the compiler object will be inserted as first parameter
+ *
+ * @param callback $callback
+ * @param array $parameter optional parameter array
+ * @param string $key optional key for callback
+ * @param bool $replace if true replace existing keyed callback
+ *
+ */
+ public function registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
+ {
+ array_unshift($parameter, $callback);
+ if (isset($key)) {
+ if ($replace || !isset($this->postCompileCallbacks[ $key ])) {
+ $this->postCompileCallbacks[ $key ] = $parameter;
+ }
+ } else {
+ $this->postCompileCallbacks[] = $parameter;
+ }
+ }
+
+ /**
+ * Remove a post compile callback
+ *
+ * @param string $key callback key
+ */
+ public function unregisterPostCompileCallback($key)
+ {
+ unset($this->postCompileCallbacks[ $key ]);
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
new file mode 100644
index 000000000..f950606df
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php
@@ -0,0 +1,692 @@
+<?php
+/**
+ * Smarty Internal Plugin Template
+ * This file contains the Smarty template engine
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Main class with template data structures and methods
+ *
+ * @package Smarty
+ * @subpackage Template
+ *
+ * @property Smarty_Template_Compiled $compiled
+ * @property Smarty_Template_Cached $cached
+ * @property Smarty_Internal_TemplateCompilerBase $compiler
+ *
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method bool mustCompile()
+ */
+class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
+{
+ /**
+ * This object type (Smarty = 1, template = 2, data = 4)
+ *
+ * @var int
+ */
+ public $_objType = 2;
+
+ /**
+ * Global smarty instance
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * Source instance
+ *
+ * @var Smarty_Template_Source|Smarty_Template_Config
+ */
+ public $source = null;
+
+ /**
+ * Inheritance runtime extension
+ *
+ * @var Smarty_Internal_Runtime_Inheritance
+ */
+ public $inheritance = null;
+
+ /**
+ * Template resource
+ *
+ * @var string
+ */
+ public $template_resource = null;
+
+ /**
+ * flag if compiled template is invalid and must be (re)compiled
+ *
+ * @var bool
+ */
+ public $mustCompile = null;
+
+ /**
+ * Template Id
+ *
+ * @var null|string
+ */
+ public $templateId = null;
+
+ /**
+ * Scope in which variables shall be assigned
+ *
+ * @var int
+ */
+ public $scope = 0;
+
+ /**
+ * Flag which is set while rending a cache file
+ *
+ * @var bool
+ */
+ public $isRenderingCache = false;
+
+ /**
+ * Callbacks called before rendering template
+ *
+ * @var callback[]
+ */
+ public $startRenderCallbacks = array();
+
+ /**
+ * Callbacks called after rendering template
+ *
+ * @var callback[]
+ */
+ public $endRenderCallbacks = array();
+
+ /**
+ * Template object cache
+ *
+ * @var Smarty_Internal_Template[]
+ */
+ public static $tplObjCache = array();
+
+ /**
+ * Template object cache for Smarty::isCached() == true
+ *
+ * @var Smarty_Internal_Template[]
+ */
+ public static $isCacheTplObj = array();
+
+ /**
+ * Subtemplate Info Cache
+ *
+ * @var string[]int[]
+ */
+ public static $subTplInfo = array();
+
+ /**
+ * Create template data object
+ * Some of the global Smarty settings copied to template scope
+ * It load the required template resources and caching plugins
+ *
+ * @param string $template_resource template resource string
+ * @param Smarty $smarty Smarty instance
+ * @param null|\Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent object
+ * with variables or null
+ * @param mixed $_cache_id cache id or null
+ * @param mixed $_compile_id compile id or null
+ * @param bool|int|null $_caching use caching?
+ * @param int|null $_cache_lifetime cache life-time in seconds
+ * @param bool $_isConfig
+ *
+ * @throws \SmartyException
+ */
+ public function __construct($template_resource, Smarty $smarty, Smarty_Internal_Data $_parent = null,
+ $_cache_id = null, $_compile_id = null, $_caching = null, $_cache_lifetime = null,
+ $_isConfig = false)
+ {
+ $this->smarty = $smarty;
+ // Smarty parameter
+ $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
+ $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
+ $this->caching = $_caching === null ? $this->smarty->caching : $_caching;
+ if ($this->caching === true) {
+ $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
+ }
+ $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
+ $this->parent = $_parent;
+ // Template resource
+ $this->template_resource = $template_resource;
+ $this->source = $_isConfig ? Smarty_Template_Config::load($this) : Smarty_Template_Source::load($this);
+ parent::__construct();
+ if ($smarty->security_policy && method_exists($smarty->security_policy, 'registerCallBacks')) {
+ $smarty->security_policy->registerCallBacks($this);
+ }
+ }
+
+ /**
+ * render template
+ *
+ * @param bool $no_output_filter if true do not run output filter
+ * @param null|bool $display true: display, false: fetch null: sub-template
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function render($no_output_filter = true, $display = null)
+ {
+ if ($this->smarty->debugging) {
+ if (!isset($this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $this->smarty->_debug->start_template($this, $display);
+ }
+ // checks if template exists
+ if (!$this->source->exists) {
+ throw new SmartyException("Unable to load template '{$this->source->type}:{$this->source->name}'" .
+ ($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : ''));
+ }
+ // disable caching for evaluated code
+ if ($this->source->handler->recompiled) {
+ $this->caching = false;
+ }
+ // read from cache or render
+ $isCacheTpl =
+ $this->caching == Smarty::CACHING_LIFETIME_CURRENT || $this->caching == Smarty::CACHING_LIFETIME_SAVED;
+ if ($isCacheTpl) {
+ if (!isset($this->cached) || $this->cached->cache_id !== $this->cache_id ||
+ $this->cached->compile_id !== $this->compile_id
+ ) {
+ $this->loadCached(true);
+ }
+ $this->cached->render($this, $no_output_filter);
+ } else {
+ if (!isset($this->compiled) || $this->compiled->compile_id !== $this->compile_id) {
+ $this->loadCompiled(true);
+ }
+ $this->compiled->render($this);
+ }
+
+ // display or fetch
+ if ($display) {
+ if ($this->caching && $this->smarty->cache_modified_check) {
+ $this->smarty->ext->_cacheModify->cacheModifiedCheck($this->cached, $this,
+ isset($content) ? $content : ob_get_clean());
+ } else {
+ if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
+ !$no_output_filter && (isset($this->smarty->autoload_filters[ 'output' ]) ||
+ isset($this->smarty->registered_filters[ 'output' ]))
+ ) {
+ echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
+ } else {
+ echo ob_get_clean();
+ }
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_template($this);
+ // debug output
+ $this->smarty->_debug->display_debug($this, true);
+ }
+ return '';
+ } else {
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_template($this);
+ if ($this->smarty->debugging === 2 && $display === false) {
+ $this->smarty->_debug->display_debug($this, true);
+ }
+ }
+ if ($this->_isSubTpl()) {
+ foreach ($this->compiled->required_plugins as $code => $tmp1) {
+ foreach ($tmp1 as $name => $tmp) {
+ foreach ($tmp as $type => $data) {
+ $this->parent->compiled->required_plugins[ $code ][ $name ][ $type ] = $data;
+ }
+ }
+ }
+ }
+ if (!$no_output_filter &&
+ (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
+ (isset($this->smarty->autoload_filters[ 'output' ]) ||
+ isset($this->smarty->registered_filters[ 'output' ]))
+ ) {
+ return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this);
+ }
+ // return cache content
+ return null;
+ }
+ }
+
+ /**
+ * Runtime function to render sub-template
+ *
+ * @param string $template template name
+ * @param mixed $cache_id cache id
+ * @param mixed $compile_id compile id
+ * @param integer $caching cache mode
+ * @param integer $cache_lifetime life time of cache data
+ * @param array $data passed parameter template variables
+ * @param int $scope scope in which {include} should execute
+ * @param bool $forceTplCache cache template object
+ * @param string $uid file dependency uid
+ * @param string $content_func function name
+ *
+ */
+ public function _subTemplateRender($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $scope,
+ $forceTplCache, $uid = null, $content_func = null)
+ {
+ $tpl = clone $this;
+ $tpl->parent = $this;
+ $smarty = &$this->smarty;
+ $_templateId = $smarty->_getTemplateId($template, $cache_id, $compile_id, $caching, $tpl);
+ // recursive call ?
+ if (isset($tpl->templateId) ? $tpl->templateId : $tpl->_getTemplateId() != $_templateId) {
+ // already in template cache?
+ if (isset(self::$tplObjCache[ $_templateId ])) {
+ // copy data from cached object
+ $cachedTpl = &self::$tplObjCache[ $_templateId ];
+ $tpl->templateId = $cachedTpl->templateId;
+ $tpl->template_resource = $cachedTpl->template_resource;
+ $tpl->cache_id = $cachedTpl->cache_id;
+ $tpl->compile_id = $cachedTpl->compile_id;
+ $tpl->source = $cachedTpl->source;
+ if (isset($cachedTpl->compiled)) {
+ $tpl->compiled = $cachedTpl->compiled;
+ } else {
+ unset($tpl->compiled);
+ }
+ if ($caching != 9999 && isset($cachedTpl->cached)) {
+ $tpl->cached = $cachedTpl->cached;
+ } else {
+ unset($tpl->cached);
+ }
+ } else {
+ $tpl->templateId = $_templateId;
+ $tpl->template_resource = $template;
+ $tpl->cache_id = $cache_id;
+ $tpl->compile_id = $compile_id;
+ if (isset($uid)) {
+ // for inline templates we can get all resource information from file dependency
+ list($filepath, $timestamp, $type) = $tpl->compiled->file_dependency[ $uid ];
+ $tpl->source = new Smarty_Template_Source($smarty, $filepath, $type, $filepath);
+ $tpl->source->filepath = $filepath;
+ $tpl->source->timestamp = $timestamp;
+ $tpl->source->exists = true;
+ $tpl->source->uid = $uid;
+ } else {
+ $tpl->source = Smarty_Template_Source::load($tpl);
+ unset($tpl->compiled);
+ }
+ if ($caching != 9999) {
+ unset($tpl->cached);
+ }
+ }
+ } else {
+ // on recursive calls force caching
+ $forceTplCache = true;
+ }
+ $tpl->caching = $caching;
+ $tpl->cache_lifetime = $cache_lifetime;
+ // set template scope
+ $tpl->scope = $scope;
+ if (!isset(self::$tplObjCache[ $tpl->templateId ]) && !$tpl->source->handler->recompiled) {
+ // check if template object should be cached
+ if ($forceTplCache || (isset(self::$subTplInfo[ $tpl->template_resource ]) &&
+ self::$subTplInfo[ $tpl->template_resource ] > 1) ||
+ ($tpl->_isSubTpl() && isset(self::$tplObjCache[ $tpl->parent->templateId ]))
+ ) {
+ self::$tplObjCache[ $tpl->templateId ] = $tpl;
+ }
+ }
+
+ if (!empty($data)) {
+ // set up variable values
+ foreach ($data as $_key => $_val) {
+ $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val, $this->isRenderingCache);
+ }
+ }
+ if ($tpl->caching == 9999) {
+ if (!isset($tpl->compiled)) {
+ $this->loadCompiled(true);
+ }
+ if ($tpl->compiled->has_nocache_code) {
+ $this->cached->hashes[ $tpl->compiled->nocache_hash ] = true;
+ }
+ }
+ $tpl->_cache = array();
+ if (isset($uid)) {
+ if ($smarty->debugging) {
+ if (!isset($smarty->_debug)) {
+ $smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $smarty->_debug->start_template($tpl);
+ $smarty->_debug->start_render($tpl);
+ }
+ $tpl->compiled->getRenderedTemplateCode($tpl, $content_func);
+ if ($smarty->debugging) {
+ $smarty->_debug->end_template($tpl);
+ $smarty->_debug->end_render($tpl);
+ }
+ } else {
+ if (isset($tpl->compiled)) {
+ $tpl->compiled->render($tpl);
+ } else {
+ $tpl->render();
+ }
+ }
+ }
+
+ /**
+ * Get called sub-templates and save call count
+ *
+ */
+ public function _subTemplateRegister()
+ {
+ foreach ($this->compiled->includes as $name => $count) {
+ if (isset(self::$subTplInfo[ $name ])) {
+ self::$subTplInfo[ $name ] += $count;
+ } else {
+ self::$subTplInfo[ $name ] = $count;
+ }
+ }
+ }
+
+ /**
+ * Check if this is a sub template
+ *
+ * @return bool true is sub template
+ */
+ public function _isSubTpl()
+ {
+ return isset($this->parent) && $this->parent->_isTplObj();
+ }
+
+ /**
+ * Assign variable in scope
+ *
+ * @param string $varName variable name
+ * @param mixed $value value
+ * @param bool $nocache nocache flag
+ * @param int $scope scope into which variable shall be assigned
+ *
+ */
+ public function _assignInScope($varName, $value, $nocache = false, $scope = 0)
+ {
+ if (isset($this->tpl_vars[ $varName ])) {
+ $this->tpl_vars[ $varName ] = clone $this->tpl_vars[ $varName ];
+ $this->tpl_vars[ $varName ]->value = $value;
+ if ($nocache || $this->isRenderingCache) {
+ $this->tpl_vars[ $varName ]->nocache = true;
+ }
+ } else {
+ $this->tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache || $this->isRenderingCache);
+ }
+ if ($scope >= 0) {
+ if ($scope > 0 || $this->scope > 0) {
+ $this->smarty->ext->_updateScope->_updateScope($this, $varName, $scope);
+ }
+ }
+ }
+
+ /**
+ * This function is executed automatically when a compiled or cached template file is included
+ * - Decode saved properties from compiled template and cache files
+ * - Check if compiled or cache file is valid
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $properties special template properties
+ * @param bool $cache flag if called from cache file
+ *
+ * @return bool flag if compiled or cache file is valid
+ * @throws \SmartyException
+ */
+ public function _decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
+ {
+ // on cache resources other than file check version stored in cache code
+ if (!isset($properties[ 'version' ]) || Smarty::SMARTY_VERSION !== $properties[ 'version' ]) {
+ if ($cache) {
+ $tpl->smarty->clearAllCache();
+ } else {
+ $tpl->smarty->clearCompiledTemplate();
+ }
+ return false;
+ }
+ $is_valid = true;
+ if (!empty($properties[ 'file_dependency' ]) &&
+ ((!$cache && $tpl->smarty->compile_check) || $tpl->smarty->compile_check == 1)
+ ) {
+ // check file dependencies at compiled code
+ foreach ($properties[ 'file_dependency' ] as $_file_to_check) {
+ if ($_file_to_check[ 2 ] == 'file' || $_file_to_check[ 2 ] == 'php') {
+ if ($tpl->source->filepath == $_file_to_check[ 0 ]) {
+ // do not recheck current template
+ continue;
+ //$mtime = $tpl->source->getTimeStamp();
+ } else {
+ // file and php types can be checked without loading the respective resource handlers
+ $mtime = is_file($_file_to_check[ 0 ]) ? filemtime($_file_to_check[ 0 ]) : false;
+ }
+ } else {
+ $handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[ 2 ]);
+ if ($handler->checkTimestamps()) {
+ $source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]);
+ $mtime = $source->getTimeStamp();
+ } else {
+ continue;
+ }
+ }
+ if ($mtime === false || $mtime > $_file_to_check[ 1 ]) {
+ $is_valid = false;
+ break;
+ }
+ }
+ }
+ if ($cache) {
+ // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
+ if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties[ 'cache_lifetime' ] >= 0 &&
+ (time() > ($tpl->cached->timestamp + $properties[ 'cache_lifetime' ]))
+ ) {
+ $is_valid = false;
+ }
+ $tpl->cached->cache_lifetime = $properties[ 'cache_lifetime' ];
+ $tpl->cached->valid = $is_valid;
+ $resource = $tpl->cached;
+ } else {
+ $tpl->mustCompile = !$is_valid;
+ $resource = $tpl->compiled;
+ $resource->includes = isset($properties[ 'includes' ]) ? $properties[ 'includes' ] : array();
+ }
+ if ($is_valid) {
+ $resource->unifunc = $properties[ 'unifunc' ];
+ $resource->has_nocache_code = $properties[ 'has_nocache_code' ];
+ // $tpl->compiled->nocache_hash = $properties['nocache_hash'];
+ $resource->file_dependency = $properties[ 'file_dependency' ];
+ }
+ return $is_valid && !function_exists($properties[ 'unifunc' ]);
+ }
+
+ /**
+ * Compiles the template
+ * If the template is not evaluated the compiled template is saved on disk
+ */
+ public function compileTemplateSource()
+ {
+ return $this->compiled->compileTemplateSource($this);
+ }
+
+ /**
+ * Writes the content to cache resource
+ *
+ * @param string $content
+ *
+ * @return bool
+ */
+ public function writeCachedContent($content)
+ {
+ return $this->smarty->ext->_updateCache->writeCachedContent($this->cached, $this, $content);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @return string
+ */
+ public function _getTemplateId()
+ {
+ return isset($this->templateId) ? $this->templateId : $this->templateId =
+ $this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id);
+ }
+
+ /**
+ * runtime error not matching capture tags
+ */
+ public function capture_error()
+ {
+ throw new SmartyException("Not matching {capture} open/close in \"{$this->template_resource}\"");
+ }
+
+ /**
+ * Load compiled object
+ *
+ * @param bool $force force new compiled object
+ */
+ public function loadCompiled($force = false)
+ {
+ if ($force || !isset($this->compiled)) {
+ $this->compiled = Smarty_Template_Compiled::load($this);
+ }
+ }
+
+ /**
+ * Load cached object
+ *
+ * @param bool $force force new cached object
+ */
+ public function loadCached($force = false)
+ {
+ if ($force || !isset($this->cached)) {
+ $this->cached = Smarty_Template_Cached::load($this);
+ }
+ }
+
+ /**
+ * Load inheritance object
+ *
+ */
+ public function _loadInheritance()
+ {
+ if (!isset($this->inheritance)) {
+ $this->inheritance = new Smarty_Internal_Runtime_Inheritance();
+ }
+ }
+
+ /**
+ * Unload inheritance object
+ *
+ */
+ public function _cleanUp()
+ {
+ $this->startRenderCallbacks = array();
+ $this->endRenderCallbacks = array();
+ $this->inheritance = null;
+ }
+
+ /**
+ * Load compiler object
+ *
+ * @throws \SmartyException
+ */
+ public function loadCompiler()
+ {
+ if (!class_exists($this->source->compiler_class)) {
+ $this->smarty->loadPlugin($this->source->compiler_class);
+ }
+ $this->compiler =
+ new $this->source->compiler_class($this->source->template_lexer_class, $this->source->template_parser_class,
+ $this->smarty);
+ }
+
+ /**
+ * Handle unknown class methods
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ // method of Smarty object?
+ if (method_exists($this->smarty, $name)) {
+ return call_user_func_array(array($this->smarty, $name), $args);
+ }
+ // parent
+ return parent::__call($name, $args);
+ }
+
+ /**
+ * set Smarty property in template context
+ *
+ * @param string $property_name property name
+ * @param mixed $value value
+ *
+ * @throws SmartyException
+ */
+ public function __set($property_name, $value)
+ {
+ switch ($property_name) {
+ case 'compiled':
+ case 'cached':
+ case 'compiler':
+ $this->$property_name = $value;
+ return;
+ default:
+ // Smarty property ?
+ if (property_exists($this->smarty, $property_name)) {
+ $this->smarty->$property_name = $value;
+ return;
+ }
+ }
+ throw new SmartyException("invalid template property '$property_name'.");
+ }
+
+ /**
+ * get Smarty property in template context
+ *
+ * @param string $property_name property name
+ *
+ * @return mixed|Smarty_Template_Cached
+ * @throws SmartyException
+ */
+ public function __get($property_name)
+ {
+ switch ($property_name) {
+ case 'compiled':
+ $this->loadCompiled();
+ return $this->compiled;
+
+ case 'cached':
+ $this->loadCached();
+ return $this->cached;
+
+ case 'compiler':
+ $this->loadCompiler();
+ return $this->compiler;
+ default:
+ // Smarty property ?
+ if (property_exists($this->smarty, $property_name)) {
+ return $this->smarty->$property_name;
+ }
+ }
+ throw new SmartyException("template property '$property_name' does not exist.");
+ }
+
+ /**
+ * Template data object destructor
+ */
+ public function __destruct()
+ {
+ if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) {
+ $this->cached->handler->releaseLock($this->smarty, $this->cached);
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
new file mode 100644
index 000000000..c026a6644
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php
@@ -0,0 +1,355 @@
+<?php
+/**
+ * Smarty Internal Plugin Smarty Template Base
+ * This file contains the basic shared methods for template handling
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Class with shared smarty/template methods
+ *
+ * @package Smarty
+ * @subpackage Template
+ *
+ * @property int $_objType
+ *
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method Smarty_Internal_TemplateBase addAutoloadFilters(mixed $filters, string $type = null)
+ * @method Smarty_Internal_TemplateBase addDefaultModifier(mixed $modifiers)
+ * @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null)
+ * @method array getAutoloadFilters(string $type = null)
+ * @method string getDebugTemplate()
+ * @method array getDefaultModifier()
+ * @method array getTags(mixed $template = null)
+ * @method object getRegisteredObject(string $object_name)
+ * @method Smarty_Internal_TemplateBase registerCacheResource(string $name, Smarty_CacheResource $resource_handler)
+ * @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl)
+ * @method Smarty_Internal_TemplateBase registerDefaultConfigHandler(callback $callback)
+ * @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback)
+ * @method Smarty_Internal_TemplateBase registerDefaultTemplateHandler(callback $callback)
+ * @method Smarty_Internal_TemplateBase registerResource(string $name, mixed $resource_handler)
+ * @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null)
+ * @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name)
+ * @method Smarty_Internal_TemplateBase setDefaultModifier(mixed $modifiers)
+ * @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name)
+ * @method Smarty_Internal_TemplateBase unregisterCacheResource(string $name)
+ * @method Smarty_Internal_TemplateBase unregisterObject(string $object_name)
+ * @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name)
+ * @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback)
+ * @method Smarty_Internal_TemplateBase unregisterResource(string $name)
+ * @method Smarty _getSmartyObj()
+ */
+abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
+{
+ /**
+ * Set this if you want different sets of cache files for the same
+ * templates.
+ *
+ * @var string
+ */
+ public $cache_id = null;
+
+ /**
+ * Set this if you want different sets of compiled files for the same
+ * templates.
+ *
+ * @var string
+ */
+ public $compile_id = null;
+
+ /**
+ * caching enabled
+ *
+ * @var boolean
+ */
+ public $caching = false;
+
+ /**
+ * cache lifetime in seconds
+ *
+ * @var integer
+ */
+ public $cache_lifetime = 3600;
+
+ /**
+ * Array of source information for known template functions
+ *
+ * @var array
+ */
+ public $tplFunctions = array();
+
+ /**
+ * universal cache
+ *
+ * @var array()
+ */
+ public $_cache = array();
+
+ /**
+ * fetches a rendered Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ *
+ * @throws Exception
+ * @throws SmartyException
+ * @return string rendered template output
+ */
+ public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null)
+ {
+ $result = $this->_execute($template, $cache_id, $compile_id, $parent, 0);
+ return $result === null ? ob_get_clean() : $result;
+ }
+
+ /**
+ * displays a Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ */
+ public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
+ {
+ // display template
+ $this->_execute($template, $cache_id, $compile_id, $parent, 1);
+ }
+
+ /**
+ * test if cache is valid
+ *
+ * @api Smarty::isCached()
+ * @link http://www.smarty.net/docs/en/api.is.cached.tpl
+ *
+ * @param null|string|\Smarty_Internal_Template $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ *
+ * @return boolean cache status
+ */
+ public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null)
+ {
+ return $this->_execute($template, $cache_id, $compile_id, $parent, 2);
+ }
+
+ /**
+ * fetches a rendered Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
+ *
+ * @return mixed
+ * @throws \Exception
+ * @throws \SmartyException
+ */
+ private function _execute($template, $cache_id, $compile_id, $parent, $function)
+ {
+ $smarty = $this->_getSmartyObj();
+ $saveVars = true;
+ if ($template === null) {
+ if (!$this->_isTplObj()) {
+ throw new SmartyException($function . '():Missing \'$template\' parameter');
+ } else {
+ $template = $this;
+ }
+ } elseif (is_object($template)) {
+ /* @var Smarty_Internal_Template $template */
+ if (!isset($template->_objType) || !$template->_isTplObj()) {
+ throw new SmartyException($function . '():Template object expected');
+ }
+ } else {
+ // get template object
+ $saveVars = false;
+
+ $template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent ? $parent : $this, false);
+ if ($this->_objType == 1) {
+ // set caching in template object
+ $template->caching = $this->caching;
+ }
+ }
+ // fetch template content
+ $level = ob_get_level();
+ try {
+ $_smarty_old_error_level =
+ isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null;
+ if ($this->_objType == 2) {
+ /* @var Smarty_Internal_Template $this */
+ $template->tplFunctions = $this->tplFunctions;
+ $template->inheritance = $this->inheritance;
+ }
+ /* @var Smarty_Internal_Template $parent */
+ if (isset($parent->_objType) && ($parent->_objType == 2) && !empty($parent->tplFunctions)) {
+ $template->tplFunctions = array_merge($parent->tplFunctions, $template->tplFunctions);
+ }
+ if ($function == 2) {
+ if ($template->caching) {
+ // return cache status of template
+ if (!isset($template->cached)) {
+ $template->loadCached();
+ }
+ $result = $template->cached->isCached($template);
+ Smarty_Internal_Template::$isCacheTplObj[ $template->_getTemplateId() ] = $template;
+ } else {
+ return false;
+ }
+ } else {
+ if ($saveVars) {
+ $savedTplVars = $template->tpl_vars;
+ $savedConfigVars = $template->config_vars;
+ }
+ ob_start();
+ $template->_mergeVars();
+ if (!empty(Smarty::$global_tpl_vars)) {
+ $template->tpl_vars = array_merge(Smarty::$global_tpl_vars, $template->tpl_vars);
+ }
+ $result = $template->render(false, $function);
+ $template->_cleanUp();
+ if ($saveVars) {
+ $template->tpl_vars = $savedTplVars;
+ $template->config_vars = $savedConfigVars;
+ } else {
+ if (!$function && !isset(Smarty_Internal_Template::$tplObjCache[ $template->templateId ])) {
+ $template->parent = null;
+ $template->tpl_vars = $template->config_vars = array();
+ Smarty_Internal_Template::$tplObjCache[ $template->templateId ] = $template;
+ }
+ }
+ }
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
+ return $result;
+ }
+ catch (Exception $e) {
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
+ throw $e;
+ }
+ }
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @api Smarty::registerPlugin()
+ * @link http://www.smarty.net/docs/en/api.register.plugin.tpl
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ * @param callback $callback PHP callback to register
+ * @param bool $cacheable if true (default) this function is cache able
+ * @param mixed $cache_attr caching attributes if any
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws SmartyException when the plugin tag is invalid
+ */
+ public function registerPlugin($type, $name, $callback, $cacheable = true, $cache_attr = null)
+ {
+ return $this->ext->registerPlugin->registerPlugin($this, $type, $name, $callback, $cacheable, $cache_attr);
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @api Smarty::loadFilter()
+ * @link http://www.smarty.net/docs/en/api.load.filter.tpl
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return bool
+ * @throws SmartyException if filter could not be loaded
+ */
+ public function loadFilter($type, $name)
+ {
+ return $this->ext->loadFilter->loadFilter($this, $type, $name);
+ }
+
+ /**
+ * Registers a filter function
+ *
+ * @api Smarty::registerFilter()
+ * @link http://www.smarty.net/docs/en/api.register.filter.tpl
+ *
+ * @param string $type filter type
+ * @param callback $callback
+ * @param string|null $name optional filter name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function registerFilter($type, $callback, $name = null)
+ {
+ return $this->ext->registerFilter->registerFilter($this, $type, $callback, $name);
+ }
+
+ /**
+ * Registers object to be used in templates
+ *
+ * @api Smarty::registerObject()
+ * @link http://www.smarty.net/docs/en/api.register.object.tpl
+ *
+ * @param string $object_name
+ * @param object $object the referenced PHP object to register
+ * @param array $allowed_methods_properties list of allowed methods (empty = all)
+ * @param bool $format smarty argument format, else traditional
+ * @param array $block_methods list of block-methods
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function registerObject($object_name, $object, $allowed_methods_properties = array(), $format = true,
+ $block_methods = array())
+ {
+ return $this->ext->registerObject->registerObject($this, $object_name, $object, $allowed_methods_properties,
+ $format, $block_methods);
+ }
+
+ /**
+ * @param boolean $caching
+ */
+ public function setCaching($caching)
+ {
+ $this->caching = $caching;
+ }
+
+ /**
+ * @param int $cache_lifetime
+ */
+ public function setCacheLifetime($cache_lifetime)
+ {
+ $this->cache_lifetime = $cache_lifetime;
+ }
+
+ /**
+ * @param string $compile_id
+ */
+ public function setCompileId($compile_id)
+ {
+ $this->compile_id = $compile_id;
+ }
+
+ /**
+ * @param string $cache_id
+ */
+ public function setCacheId($cache_id)
+ {
+ $this->cache_id = $cache_id;
+ }
+
+}
+
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
new file mode 100644
index 000000000..158d654c7
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -0,0 +1,1365 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Smarty Template Compiler Base
+ * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Main abstract compiler class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ *
+ * @property Smarty_Internal_SmartyTemplateCompiler $prefixCompiledCode = ''
+ * @property Smarty_Internal_SmartyTemplateCompiler $postfixCompiledCode = ''
+ * @method registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false)
+ * @method unregisterPostCompileCallback($key)
+ */
+abstract class Smarty_Internal_TemplateCompilerBase
+{
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * Parser object
+ *
+ * @var Smarty_Internal_Templateparser
+ */
+ public $parser = null;
+
+ /**
+ * hash for nocache sections
+ *
+ * @var mixed
+ */
+ public $nocache_hash = null;
+
+ /**
+ * suppress generation of nocache code
+ *
+ * @var bool
+ */
+ public $suppressNocacheProcessing = false;
+
+ /**
+ * compile tag objects cache
+ *
+ * @var array
+ */
+ static $_tag_objects = array();
+
+ /**
+ * tag stack
+ *
+ * @var array
+ */
+ public $_tag_stack = array();
+
+ /**
+ * current template
+ *
+ * @var Smarty_Internal_Template
+ */
+ public $template = null;
+
+ /**
+ * merged included sub template data
+ *
+ * @var array
+ */
+ public $mergedSubTemplatesData = array();
+
+ /**
+ * merged sub template code
+ *
+ * @var array
+ */
+ public $mergedSubTemplatesCode = array();
+
+ /**
+ * collected template properties during compilation
+ *
+ * @var array
+ */
+ public $templateProperties = array();
+
+ /**
+ * source line offset for error messages
+ *
+ * @var int
+ */
+ public $trace_line_offset = 0;
+
+ /**
+ * trace uid
+ *
+ * @var string
+ */
+ public $trace_uid = '';
+
+ /**
+ * trace file path
+ *
+ * @var string
+ */
+ public $trace_filepath = '';
+
+ /**
+ * stack for tracing file and line of nested {block} tags
+ *
+ * @var array
+ */
+ public $trace_stack = array();
+
+ /**
+ * plugins loaded by default plugin handler
+ *
+ * @var array
+ */
+ public $default_handler_plugins = array();
+
+ /**
+ * saved preprocessed modifier list
+ *
+ * @var mixed
+ */
+ public $default_modifier_list = null;
+
+ /**
+ * force compilation of complete template as nocache
+ *
+ * @var boolean
+ */
+ public $forceNocache = false;
+
+ /**
+ * flag if compiled template file shall we written
+ *
+ * @var bool
+ */
+ public $write_compiled_code = true;
+
+ /**
+ * Template functions
+ *
+ * @var array
+ */
+ public $tpl_function = array();
+
+ /**
+ * called sub functions from template function
+ *
+ * @var array
+ */
+ public $called_functions = array();
+
+ /**
+ * compiled template or block function code
+ *
+ * @var string
+ */
+ public $blockOrFunctionCode = '';
+
+ /**
+ * php_handling setting either from Smarty or security
+ *
+ * @var int
+ */
+ public $php_handling = 0;
+
+ /**
+ * flags for used modifier plugins
+ *
+ * @var array
+ */
+ public $modifier_plugins = array();
+
+ /**
+ * type of already compiled modifier
+ *
+ * @var array
+ */
+ public $known_modifier_type = array();
+
+ /**
+ * parent compiler object for merged subtemplates and template functions
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $parent_compiler = null;
+
+ /**
+ * Flag true when compiling nocache section
+ *
+ * @var bool
+ */
+ public $nocache = false;
+
+ /**
+ * Flag true when tag is compiled as nocache
+ *
+ * @var bool
+ */
+ public $tag_nocache = false;
+
+ /**
+ * Compiled tag prefix code
+ *
+ * @var array
+ */
+ public $prefix_code = array();
+
+ /**
+ * Prefix code stack
+ *
+ * @var array
+ */
+ public $prefixCodeStack = array();
+
+ /**
+ * Tag has compiled code
+ *
+ * @var bool
+ */
+ public $has_code = false;
+
+ /**
+ * A variable string was compiled
+ *
+ * @var bool
+ */
+ public $has_variable_string = false;
+
+ /**
+ * Tag creates output
+ *
+ * @var bool
+ */
+ public $has_output = false;
+
+ /**
+ * Stack for {setfilter} {/setfilter}
+ *
+ * @var array
+ */
+ public $variable_filter_stack = array();
+
+ /**
+ * variable filters for {setfilter} {/setfilter}
+ *
+ * @var array
+ */
+ public $variable_filters = array();
+
+ /**
+ * Nesting count of looping tags like {foreach}, {for}, {section}, {while}
+ *
+ * @var int
+ */
+ public $loopNesting = 0;
+
+ /**
+ * Strip preg pattern
+ *
+ * @var string
+ */
+ public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!';
+
+ /**
+ * plugin search order
+ *
+ * @var array
+ */
+ public $plugin_search_order = array('function', 'block', 'compiler', 'class');
+
+ /**
+ * General storage area for tag compiler plugins
+ *
+ * @var array
+ */
+ public $_cache = array();
+
+ /**
+ * counter for prefix variable number
+ *
+ * @var int
+ */
+ public static $prefixVariableNumber = 0;
+
+ /**
+ * method to compile a Smarty template
+ *
+ * @param mixed $_content template source
+ * @param bool $isTemplateSource
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ */
+ abstract protected function doCompile($_content, $isTemplateSource = false);
+
+ /**
+ * Initialize compiler
+ *
+ * @param Smarty $smarty global instance
+ */
+ public function __construct(Smarty $smarty)
+ {
+ $this->smarty = $smarty;
+ $this->nocache_hash = str_replace(array('.', ','), '_', uniqid(rand(), true));
+ }
+
+ /**
+ * Method to compile a Smarty template
+ *
+ * @param Smarty_Internal_Template $template template object to compile
+ * @param bool $nocache true is shall be compiled in nocache mode
+ * @param null|Smarty_Internal_TemplateCompilerBase $parent_compiler
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ * @throws \Exception
+ */
+ public function compileTemplate(Smarty_Internal_Template $template, $nocache = null,
+ Smarty_Internal_TemplateCompilerBase $parent_compiler = null)
+ {
+ // get code frame of compiled template
+ $_compiled_code = $template->smarty->ext->_codeFrame->create($template,
+ $this->compileTemplateSource($template, $nocache,
+ $parent_compiler),
+ $this->postFilter($this->blockOrFunctionCode) .
+ join('', $this->mergedSubTemplatesCode), false,
+ $this);
+ return $_compiled_code;
+ }
+
+ /**
+ * Compile template source and run optional post filter
+ *
+ * @param \Smarty_Internal_Template $template
+ * @param null|bool $nocache flag if template must be compiled in nocache mode
+ * @param \Smarty_Internal_TemplateCompilerBase $parent_compiler
+ *
+ * @return string
+ * @throws \Exception
+ */
+ public function compileTemplateSource(Smarty_Internal_Template $template, $nocache = null,
+ Smarty_Internal_TemplateCompilerBase $parent_compiler = null)
+ {
+ try {
+ // save template object in compiler class
+ $this->template = $template;
+ if (property_exists($this->template->smarty, 'plugin_search_order')) {
+ $this->plugin_search_order = $this->template->smarty->plugin_search_order;
+ }
+ if ($this->smarty->debugging) {
+ if (!isset($this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $this->smarty->_debug->start_compile($this->template);
+ }
+ if (isset($this->template->smarty->security_policy)) {
+ $this->php_handling = $this->template->smarty->security_policy->php_handling;
+ } else {
+ $this->php_handling = $this->template->smarty->php_handling;
+ }
+ $this->parent_compiler = $parent_compiler ? $parent_compiler : $this;
+ $nocache = isset($nocache) ? $nocache : false;
+ if (empty($template->compiled->nocache_hash)) {
+ $template->compiled->nocache_hash = $this->nocache_hash;
+ } else {
+ $this->nocache_hash = $template->compiled->nocache_hash;
+ }
+ // flag for nocache sections
+ $this->nocache = $nocache;
+ $this->tag_nocache = false;
+ // reset has nocache code flag
+ $this->template->compiled->has_nocache_code = false;
+ $this->has_variable_string = false;
+ $this->prefix_code = array();
+ // add file dependency
+ if ($this->smarty->merge_compiled_includes || $this->template->source->handler->checkTimestamps()) {
+ $this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] =
+ array($this->template->source->filepath, $this->template->source->getTimeStamp(),
+ $this->template->source->type,);
+ }
+ $this->smarty->_current_file = $this->template->source->filepath;
+ // get template source
+ if (!empty($this->template->source->components)) {
+ // we have array of inheritance templates by extends: resource
+ // generate corresponding source code sequence
+ $_content =
+ Smarty_Internal_Compile_Extends::extendsSourceArrayCode($this->template->source->components);
+ } else {
+ // get template source
+ $_content = $this->template->source->getContent();
+ }
+ $_compiled_code = $this->postFilter($this->doCompile($this->preFilter($_content), true));
+ }
+ catch (Exception $e) {
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_compile($this->template);
+ }
+ $this->_tag_stack = array();
+ // free memory
+ $this->parent_compiler = null;
+ $this->template = null;
+ $this->parser = null;
+ throw $e;
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_compile($this->template);
+ }
+ $this->parent_compiler = null;
+ $this->parser = null;
+ return $_compiled_code;
+ }
+
+ /**
+ * Optionally process compiled code by post filter
+ *
+ * @param string $code compiled code
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function postFilter($code)
+ {
+ // run post filter if on code
+ if (!empty($code) &&
+ (isset($this->smarty->autoload_filters[ 'post' ]) || isset($this->smarty->registered_filters[ 'post' ]))
+ ) {
+ return $this->smarty->ext->_filterHandler->runFilter('post', $code, $this->template);
+ } else {
+ return $code;
+ }
+ }
+
+ /**
+ * Run optional prefilter
+ *
+ * @param string $_content template source
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function preFilter($_content)
+ {
+ // run pre filter if required
+ if ($_content != '' &&
+ ((isset($this->smarty->autoload_filters[ 'pre' ]) || isset($this->smarty->registered_filters[ 'pre' ])))
+ ) {
+ return $this->smarty->ext->_filterHandler->runFilter('pre', $_content, $this->template);
+ } else {
+ return $_content;
+ }
+ }
+
+ /**
+ * Compile Tag
+ * This is a call back from the lexer/parser
+ *
+ * Save current prefix code
+ * Compile tag
+ * Merge tag prefix code with saved one
+ * (required nested tags in attributes)
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @throws SmartyCompilerException
+ * @throws SmartyException
+ * @return string compiled code
+ */
+ public function compileTag($tag, $args, $parameter = array())
+ {
+ $this->prefixCodeStack[] = $this->prefix_code;
+ $this->prefix_code = array();
+ $result = $this->compileTag2($tag, $args, $parameter);
+ $this->prefix_code = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ return $result;
+ }
+
+ /**
+ * Compile Tag
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @throws SmartyCompilerException
+ * @throws SmartyException
+ * @return string compiled code
+ */
+ private function compileTag2($tag, $args, $parameter)
+ {
+ $plugin_type = '';
+ // $args contains the attributes parsed and compiled by the lexer/parser
+ // assume that tag does compile into code, but creates no HTML output
+ $this->has_code = true;
+ $this->has_output = false;
+ // log tag/attributes
+ if (isset($this->smarty->_cache[ 'get_used_tags' ])) {
+ $this->template->_cache[ 'used_tags' ][] = array($tag, $args);
+ }
+ // check nocache option flag
+ foreach ($args as $arg) {
+ if (!is_array($arg)) {
+ if ($arg === "'nocache'" || $arg === 'nocache') {
+ $this->tag_nocache = true;
+ }
+ } else {
+ foreach ($arg as $k => $v) {
+ if (($k === "'nocache'" || $k === 'nocache') && (trim($v, "'\" ") == 'true')) {
+ $this->tag_nocache = true;
+ }
+ }
+ }
+ }
+ // compile the smarty tag (required compile classes to compile the tag are auto loaded)
+ if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
+ if (isset($this->parent_compiler->tpl_function[ $tag ]) ||
+ (isset ($this->template->smarty->ext->_tplFunction) && $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false)) {
+ // template defined by {template} tag
+ $args[ '_attr' ][ 'name' ] = "'" . $tag . "'";
+ $_output = $this->callTagCompiler('call', $args, $parameter);
+ }
+ }
+ if ($_output !== false) {
+ if ($_output !== true) {
+ // did we get compiled code
+ if ($this->has_code) {
+ // Does it create output?
+ if ($this->has_output) {
+ $_output .= "\n";
+ }
+ // return compiled code
+ return $_output;
+ }
+ }
+ // tag did not produce compiled code
+ return null;
+ } else {
+ // map_named attributes
+ if (isset($args[ '_attr' ])) {
+ foreach ($args[ '_attr' ] as $key => $attribute) {
+ if (is_array($attribute)) {
+ $args = array_merge($args, $attribute);
+ }
+ }
+ }
+ // not an internal compiler tag
+ if (strlen($tag) < 6 || substr($tag, - 5) != 'close') {
+ // check if tag is a registered object
+ if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) {
+ $method = $parameter[ 'object_method' ];
+ if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ]) &&
+ (empty($this->smarty->registered_objects[ $tag ][ 1 ]) ||
+ in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
+ ) {
+ return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
+ } elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) {
+ return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag,
+ $method);
+ } else {
+ // throw exception
+ $this->trigger_template_error('not allowed method "' . $method . '" in registered object "' .
+ $tag . '"', null, true);
+ }
+ }
+ // check if tag is registered
+ foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,) as $plugin_type)
+ {
+ if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) {
+ // if compiler function plugin call it now
+ if ($plugin_type == Smarty::PLUGIN_COMPILER) {
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[ $key ] = $mixed;
+ }
+ }
+ if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) {
+ $this->tag_nocache = true;
+ }
+ return call_user_func_array($this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ],
+ array($new_args, $this));
+ }
+ // compile registered function or block function
+ if ($plugin_type == Smarty::PLUGIN_FUNCTION || $plugin_type == Smarty::PLUGIN_BLOCK) {
+ return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter,
+ $tag);
+ }
+ }
+ }
+ // check plugins from plugins folder
+ foreach ($this->plugin_search_order as $plugin_type) {
+ if ($plugin_type == Smarty::PLUGIN_COMPILER &&
+ $this->smarty->loadPlugin('smarty_compiler_' . $tag) &&
+ (!isset($this->smarty->security_policy) ||
+ $this->smarty->security_policy->isTrustedTag($tag, $this))
+ ) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (is_callable($plugin)) {
+ // convert arguments format for old compiler plugins
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[ $key ] = $mixed;
+ }
+ }
+
+ return $plugin($new_args, $this->smarty);
+ }
+ if (class_exists($plugin, false)) {
+ $plugin_object = new $plugin;
+ if (method_exists($plugin_object, 'compile')) {
+ return $plugin_object->compile($args, $this);
+ }
+ }
+ throw new SmartyException("Plugin \"{$tag}\" not callable");
+ } else {
+ if ($function = $this->getPlugin($tag, $plugin_type)) {
+ if (!isset($this->smarty->security_policy) ||
+ $this->smarty->security_policy->isTrustedTag($tag, $this)
+ ) {
+ return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $parameter,
+ $tag, $function);
+ }
+ }
+ }
+ }
+ if (is_callable($this->smarty->default_plugin_handler_func)) {
+ $found = false;
+ // look for already resolved tags
+ foreach ($this->plugin_search_order as $plugin_type) {
+ if (isset($this->default_handler_plugins[ $plugin_type ][ $tag ])) {
+ $found = true;
+ break;
+ }
+ }
+ if (!$found) {
+ // call default handler
+ foreach ($this->plugin_search_order as $plugin_type) {
+ if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
+ $found = true;
+ break;
+ }
+ }
+ }
+ if ($found) {
+ // if compiler function plugin call it now
+ if ($plugin_type == Smarty::PLUGIN_COMPILER) {
+ $new_args = array();
+ foreach ($args as $mixed) {
+ $new_args = array_merge($new_args, $mixed);
+ }
+ return call_user_func_array($this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ],
+ array($new_args, $this));
+ } else {
+ return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter,
+ $tag);
+ }
+ }
+ }
+ } else {
+ // compile closing tag of block function
+ $base_tag = substr($tag, 0, - 5);
+ // check if closing tag is a registered object
+ if (isset($this->smarty->registered_objects[ $base_tag ]) && isset($parameter[ 'object_method' ])) {
+ $method = $parameter[ 'object_method' ];
+ if (in_array($method, $this->smarty->registered_objects[ $base_tag ][ 3 ])) {
+ return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag,
+ $method);
+ } else {
+ // throw exception
+ $this->trigger_template_error('not allowed closing tag method "' . $method .
+ '" in registered object "' . $base_tag . '"', null, true);
+ }
+ }
+ // registered block tag ?
+ if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ]) ||
+ isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
+ ) {
+ return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
+ }
+ // registered function tag ?
+ if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
+ return $this->callTagCompiler('private_registered_function', $args, $parameter, $tag);
+ }
+ // block plugin?
+ if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
+ return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
+ }
+ // function plugin?
+ if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) {
+ if (!isset($this->smarty->security_policy) ||
+ $this->smarty->security_policy->isTrustedTag($tag, $this)
+ ) {
+ return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function);
+ }
+ }
+ // registered compiler plugin ?
+ if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ])) {
+ // if compiler function plugin call it now
+ $args = array();
+ if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) {
+ $this->tag_nocache = true;
+ }
+ return call_user_func_array($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ],
+ array($args, $this));
+ }
+ if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (is_callable($plugin)) {
+ return $plugin($args, $this->smarty);
+ }
+ if (class_exists($plugin, false)) {
+ $plugin_object = new $plugin;
+ if (method_exists($plugin_object, 'compile')) {
+ return $plugin_object->compile($args, $this);
+ }
+ }
+ throw new SmartyException("Plugin \"{$tag}\" not callable");
+ }
+ }
+ $this->trigger_template_error("unknown tag \"" . $tag . "\"", null, true);
+ }
+ }
+
+ /**
+ * compile variable
+ *
+ * @param string $variable
+ *
+ * @return string
+ */
+ public function compileVariable($variable)
+ {
+ if (strpos($variable, '(') == 0) {
+ // not a variable variable
+ $var = trim($variable, '\'');
+ $this->tag_nocache = $this->tag_nocache |
+ $this->template->ext->getTemplateVars->_getVariable($this->template, $var, null, true,
+ false)->nocache;
+ // todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache;
+ }
+ return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
+ }
+
+ /**
+ * compile config variable
+ *
+ * @param string $variable
+ *
+ * @return string
+ */
+ public function compileConfigVariable($variable)
+ {
+ // return '$_smarty_tpl->config_vars[' . $variable . ']';
+ return '$_smarty_tpl->smarty->ext->configLoad->_getConfigVariable($_smarty_tpl, ' . $variable . ')';
+ }
+
+ /**
+ * compile PHP function call
+ *
+ * @param string $name
+ * @param array $parameter
+ *
+ * @return string
+ */
+ public function compilePHPFunctionCall($name, $parameter)
+ {
+ if (!$this->smarty->security_policy || $this->smarty->security_policy->isTrustedPhpFunction($name, $this)) {
+ if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0 ||
+ strcasecmp($name, 'array') === 0 || is_callable($name)
+ ) {
+ $func_name = strtolower($name);
+ $par = implode(',', $parameter);
+ $parHasFuction = strpos($par, '(') !== false;
+ if ($func_name == 'isset') {
+ if (count($parameter) == 0) {
+ $this->trigger_template_error('Illegal number of paramer in "isset()"');
+ }
+ if ($parHasFuction) {
+ $prefixVar = $this->getNewPrefixVariable();
+ $this->appendPrefixCode("<?php $prefixVar" . '=' . $par . ';?>');
+ $isset_par = $prefixVar;
+ } else {
+ $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
+ }
+ return $name . "(" . $isset_par . ")";
+ } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
+ if (count($parameter) != 1) {
+ $this->trigger_template_error('Illegal number of paramer in "empty()"');
+ }
+ if ($func_name == 'empty') {
+ if ($parHasFuction) {
+ $prefixVar = $this->getNewPrefixVariable();
+ $this->appendPrefixCode("<?php $prefixVar" . '=' . $par . ';?>');
+
+ return $func_name . '(' . $prefixVar . ')';
+ } else {
+ return $func_name . '(' .
+ str_replace("')->value", "',null,true,false)->value", $parameter[ 0 ]) . ')';
+ }
+ } else {
+ return $func_name . '(' . $parameter[ 0 ] . ')';
+ }
+ } else {
+ return $name . "(" . implode(',', $parameter) . ")";
+ }
+ } else {
+ $this->trigger_template_error("unknown function \"" . $name . "\"");
+ }
+ }
+ }
+
+ /**
+ * This method is called from parser to process a text content section
+ * - remove text from inheritance child templates as they may generate output
+ * - strip text if strip is enabled
+ *
+ * @param string $text
+ *
+ * @return null|\Smarty_Internal_ParseTree_Text
+ */
+ public function processText($text)
+ {
+ if ((string) $text != '') {
+ $store = array();
+ $_store = 0;
+ if ($this->parser->strip) {
+ if (strpos($text, '<') !== false) {
+ // capture html elements not to be messed with
+ $_offset = 0;
+ if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
+ $text, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+
+ $_offset += $_length - strlen($replace);
+ $_store ++;
+ }
+ }
+ $expressions = array(// replace multiple spaces between tags by a single space
+ '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove newline between tags
+ '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
+ // remove multiple spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ '#>[\040\011]+$#Ss' => '> ', '#>[\040\011]*[\n]\s*$#Ss' => '>',
+ $this->stripRegEx => '',);
+
+ $text = preg_replace(array_keys($expressions), array_values($expressions), $text);
+ $_offset = 0;
+ if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $text, $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
+
+ $_offset += strlen($replace) - $_length;
+ $_store ++;
+ }
+ }
+ } else {
+ $text = preg_replace($this->stripRegEx, '', $text);
+ }
+ }
+ return new Smarty_Internal_ParseTree_Text($text);
+ }
+ return null;
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag and calls the compile method
+ * compile objects cached for reuse.
+ * class name format: Smarty_Internal_Compile_TagName
+ * plugin filename format: Smarty_Internal_TagName.php
+ *
+ * @param string $tag tag name
+ * @param array $args list of tag attributes
+ * @param mixed $param1 optional parameter
+ * @param mixed $param2 optional parameter
+ * @param mixed $param3 optional parameter
+ *
+ * @return string|bool compiled code or false
+ */
+ public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
+ {
+ $tagCompiler = $this->getTagCompiler($tag);
+ // compile this tag
+ return $tagCompiler === false ? false : $tagCompiler->compile($args, $this, $param1, $param2, $param3);
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag compile objects cached for reuse.
+ *
+ * class name format: Smarty_Internal_Compile_TagName
+ * plugin filename format: Smarty_Internal_TagName.php
+ *
+ * @param string $tag tag name
+ *
+ * @return Smarty_Internal_CompileBase|bool tag compiler object or false if not found
+ */
+ public function getTagCompiler($tag)
+ {
+ // re-use object if already exists
+ if (!isset(self::$_tag_objects[ $tag ])) {
+ // lazy load internal compiler plugin
+ $_tag = explode('_', $tag);
+ $_tag = array_map('ucfirst', $_tag);
+ $class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag);
+ if (class_exists($class_name) &&
+ (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))
+ ) {
+ self::$_tag_objects[ $tag ] = new $class_name;
+ } else {
+ self::$_tag_objects[ $tag ] = false;
+ }
+ }
+ return self::$_tag_objects[ $tag ];
+ }
+
+ /**
+ * Check for plugins and return function name
+ *
+ * @param $plugin_name
+ * @param string $plugin_type type of plugin
+ *
+ * @return string call name of function
+ */
+ public function getPlugin($plugin_name, $plugin_type)
+ {
+ $function = null;
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ if (isset($this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
+ $function =
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ } elseif (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ] =
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ];
+ $function =
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ }
+ } else {
+ if (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
+ $function =
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ } elseif (isset($this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ] =
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ];
+ $function =
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ }
+ }
+ if (isset($function)) {
+ if ($plugin_type == 'modifier') {
+ $this->modifier_plugins[ $plugin_name ] = true;
+ }
+
+ return $function;
+ }
+ // loop through plugin dirs and find the plugin
+ $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
+ $file = $this->smarty->loadPlugin($function, false);
+
+ if (is_string($file)) {
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
+ $file;
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
+ $function;
+ } else {
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
+ $file;
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
+ $function;
+ }
+ if ($plugin_type == 'modifier') {
+ $this->modifier_plugins[ $plugin_name ] = true;
+ }
+
+ return $function;
+ }
+ if (is_callable($function)) {
+ // plugin function is defined in the script
+ return $function;
+ }
+
+ return false;
+ }
+
+ /**
+ * Check for plugins by default plugin handler
+ *
+ * @param string $tag name of tag
+ * @param string $plugin_type type of plugin
+ *
+ * @return boolean true if found
+ */
+ public function getPluginFromDefaultHandler($tag, $plugin_type)
+ {
+ $callback = null;
+ $script = null;
+ $cacheable = true;
+ $result = call_user_func_array($this->smarty->default_plugin_handler_func,
+ array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable,));
+ if ($result) {
+ $this->tag_nocache = $this->tag_nocache || !$cacheable;
+ if ($script !== null) {
+ if (is_file($script)) {
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'file' ] =
+ $script;
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'function' ] =
+ $callback;
+ } else {
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'file' ] =
+ $script;
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'function' ] =
+ $callback;
+ }
+ require_once $script;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned script file \"{$script}\" for \"{$tag}\" not found");
+ }
+ }
+ if (is_callable($callback)) {
+ $this->default_handler_plugins[ $plugin_type ][ $tag ] = array($callback, true, array());
+
+ return true;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" not callable");
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Append code segments and remove unneeded ?> <?php transitions
+ *
+ * @param string $left
+ * @param string $right
+ *
+ * @return string
+ */
+ public function appendCode($left, $right)
+ {
+ if (preg_match('/\s*\?>\s*$/', $left) && preg_match('/^\s*<\?php\s+/', $right)) {
+ $left = preg_replace('/\s*\?>\s*$/', "\n", $left);
+ $left .= preg_replace('/^\s*<\?php\s+/', '', $right);
+ } else {
+ $left .= $right;
+ }
+ return $left;
+ }
+
+ /**
+ * Inject inline code for nocache template sections
+ * This method gets the content of each template element from the parser.
+ * If the content is compiled code and it should be not cached the code is injected
+ * into the rendered output.
+ *
+ * @param string $content content of template element
+ * @param boolean $is_code true if content is compiled code
+ *
+ * @return string content
+ */
+ public function processNocacheCode($content, $is_code)
+ {
+ // If the template is not evaluated and we have a nocache section and or a nocache tag
+ if ($is_code && !empty($content)) {
+ // generate replacement code
+ if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->template->caching &&
+ !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache)
+ ) {
+ $this->template->compiled->has_nocache_code = true;
+ $_output = addcslashes($content, '\'\\');
+ $_output = str_replace("^#^", "'", $_output);
+ $_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output .
+ "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
+ // make sure we include modifier plugins for nocache code
+ foreach ($this->modifier_plugins as $plugin_name => $dummy) {
+ if (isset($this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) {
+ $this->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $plugin_name ][ 'modifier' ] =
+ $this->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ];
+ }
+ }
+ } else {
+ $_output = $content;
+ }
+ } else {
+ $_output = $content;
+ }
+ $this->modifier_plugins = array();
+ $this->suppressNocacheProcessing = false;
+ $this->tag_nocache = false;
+
+ return $_output;
+ }
+
+ /**
+ * Get Id
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ public function getId($input)
+ {
+ if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) {
+ return $match[ 2 ];
+ }
+ return false;
+ }
+
+ /**
+ * Get variable name from string
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ public function getVariableName($input)
+ {
+ if (preg_match('~^[$]_smarty_tpl->tpl_vars\[[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]->value$~', $input, $match)) {
+ return $match[ 1 ];
+ }
+ return false;
+ }
+
+ /**
+ * Set nocache flag in variable or create new variable
+ *
+ * @param string $varName
+ */
+ public function setNocacheInVariable($varName)
+ {
+ // create nocache var to make it know for further compiling
+ if ($_var = $this->getId($varName)) {
+ if (isset($this->template->tpl_vars[ $_var ])) {
+ $this->template->tpl_vars[ $_var ] = clone $this->template->tpl_vars[ $_var ];
+ $this->template->tpl_vars[ $_var ]->nocache = true;
+ } else {
+ $this->template->tpl_vars[ $_var ] = new Smarty_Variable(null, true);
+ }
+ }
+ }
+
+ /**
+ * @param array $_attr tag attributes
+ * @param array $validScopes
+ *
+ * @return int|string
+ * @throws \SmartyCompilerException
+ */
+ public function convertScope($_attr, $validScopes)
+ {
+ $_scope = 0;
+ if (isset($_attr[ 'scope' ])) {
+ $_scopeName = trim($_attr[ 'scope' ], "'\"");
+ if (is_numeric($_scopeName) && in_array($_scopeName, $validScopes)) {
+ $_scope = $_scopeName;
+ } elseif (is_string($_scopeName)) {
+ $_scopeName = trim($_scopeName, "'\"");
+ $_scope = isset($validScopes[ $_scopeName ]) ? $validScopes[ $_scopeName ] : false;
+ } else {
+ $_scope = false;
+ }
+ if ($_scope === false) {
+ $err = var_export($_scopeName, true);
+ $this->trigger_template_error("illegal value '{$err}' for \"scope\" attribute", null, true);
+ }
+ }
+ return $_scope;
+ }
+
+ /**
+ * Generate nocache code string
+ *
+ * @param string $code PHP code
+ *
+ * @return string
+ */
+ public function makeNocacheCode($code)
+ {
+ return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/<?php " .
+ str_replace("^#^", "'", addcslashes($code, '\'\\')) .
+ "?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n";
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ * @param string $line line-number
+ * @param null|bool $tagline if true the line number of last tag
+ *
+ * @throws \SmartyCompilerException when an unexpected token is found
+ */
+ public function trigger_template_error($args = null, $line = null, $tagline = null)
+ {
+ $lex = $this->parser->lex;
+ if ($tagline === true) {
+ // get line number of Tag
+ $line = $lex->taglineno;
+ } elseif (!isset($line)) {
+ // get template source line which has error
+ $line = $lex->line;
+ } else {
+ $line = (int) $line;
+ }
+
+ if (in_array($this->template->source->type, array('eval', 'string'))) {
+ $templateName = $this->template->source->type . ':' . trim(preg_replace('![\t\r\n]+!', ' ',
+ strlen($lex->data) > 40 ?
+ substr($lex->data, 0, 40) .
+ '...' : $lex->data));
+ } else {
+ $templateName = $this->template->source->type . ':' . $this->template->source->filepath;
+ }
+
+ // $line += $this->trace_line_offset;
+ $match = preg_split("/\n/", $lex->data);
+ $error_text =
+ 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) .
+ '" on line ' . ($line + $this->trace_line_offset) . ' "' .
+ trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])) . '" ';
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ $expect = array();
+ // expected token from parser
+ $error_text .= ' - Unexpected "' . $lex->value . '"';
+ if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[ $token ];
+ if (isset($lex->smarty_token_names[ $exp_token ])) {
+ // token type from lexer
+ $expect[] = '"' . $lex->smarty_token_names[ $exp_token ] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[ $token ];
+ }
+ }
+ $error_text .= ', expected one of: ' . implode(' , ', $expect);
+ }
+ }
+ $e = new SmartyCompilerException($error_text);
+ $e->line = $line;
+ $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ]));
+ $e->desc = $args;
+ $e->template = $this->template->source->filepath;
+ throw $e;
+ }
+
+ /**
+ * Return var_export() value with all white spaces removed
+ *
+ * @param mixed $value
+ *
+ * @return string
+ */
+ public function getVarExport($value)
+ {
+ return preg_replace('/\s/', '', var_export($value, true));
+ }
+
+ /**
+ * Check if $value contains variable elements
+ *
+ * @param mixed $value
+ *
+ * @return bool|int
+ */
+ public function isVariable($value)
+ {
+ if (is_string($value)) {
+ return preg_match('/[$(]/', $value);
+ }
+ if (is_bool($value) || is_numeric($value)) {
+ return false;
+ }
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ if ($this->isVariable($k) || $this->isVariable($v)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * Get new prefix variable name
+ *
+ * @return string
+ */
+ public function getNewPrefixVariable()
+ {
+ self::$prefixVariableNumber ++;
+ return $this->getPrefixVariable();
+ }
+
+ /**
+ * Get current prefix variable name
+ *
+ * @return string
+ */
+ public function getPrefixVariable()
+ {
+ return '$_prefixVariable' . self::$prefixVariableNumber;
+ }
+
+ /**
+ * append code to prefix buffer
+ *
+ * @param string $code
+ */
+ public function appendPrefixCode($code)
+ {
+ $this->prefix_code[] = $code;
+ }
+
+ /**
+ * get prefix code string
+ *
+ * @return string
+ */
+ public function getPrefixCode()
+ {
+ $code = '';
+ $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ $this->prefixCodeStack[] = array();
+ foreach ($prefixArray as $c) {
+ $code = $this->appendCode($code, $c);
+ }
+ $this->prefix_code = array();
+ return $code;
+ }
+
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
new file mode 100644
index 000000000..8e870b75c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
@@ -0,0 +1,1169 @@
+<?php
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Smarty_Internal_Templatelexer
+ * This is the template file lexer.
+ * It is generated from the smarty_internal_templatelexer.plex file
+ *
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Templatelexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * php code type
+ *
+ * @var string
+ */
+ public $phpType = '';
+
+ /**
+ * escaped left delimiter
+ *
+ * @var string
+ */
+ public $ldel = '';
+
+ /**
+ * escaped left delimiter length
+ *
+ * @var int
+ */
+ public $ldel_length = 0;
+
+ /**
+ * escaped right delimiter
+ *
+ * @var string
+ */
+ public $rdel = '';
+
+ /**
+ * escaped right delimiter length
+ *
+ * @var int
+ */
+ public $rdel_length = 0;
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * PHP start tag string
+ *
+ * @var string
+ */
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ private $yy_global_pattern2 = null;
+
+ private $yy_global_pattern3 = null;
+
+ private $yy_global_pattern4 = null;
+
+ private $yy_global_pattern5 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)', 'OPENP' => '(', 'CLOSEP' => ')', 'OPENB' => '[',
+ 'CLOSEB' => ']', 'PTR' => '->', 'APTR' => '=>', 'EQUAL' => '=',
+ 'NUMBER' => 'number', 'UNIMATH' => '+" , "-', 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--', 'SPACE' => ' ', 'DOLLAR' => '$',
+ 'SEMICOLON' => ';', 'COLON' => ':', 'DOUBLECOLON' => '::', 'AT' => '@',
+ 'HATCH' => '#', 'QUOTE' => '"', 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier', 'DOT' => '.', 'COMMA' => '","',
+ 'QMARK' => '"?"', 'ID' => 'id, name', 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag', 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment', 'AS' => 'as', 'TO' => 'to',
+ 'PHP' => '"<?php", "<%", "{php}" tag',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',);
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ function __construct($data, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->data = $data;
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[ 0 ]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->smarty;
+ $this->compiler = $compiler;
+ $this->ldel = preg_quote($this->smarty->left_delimiter, '/');
+ $this->ldel_length = strlen($this->smarty->left_delimiter);
+ $this->rdel = preg_quote($this->smarty->right_delimiter, '/');
+ $this->rdel_length = strlen($this->smarty->right_delimiter);
+ $this->smarty_token_names[ 'LDEL' ] = $this->smarty->left_delimiter;
+ $this->smarty_token_names[ 'RDEL' ] = $this->smarty->right_delimiter;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ /*
+ * Check if this tag is autoliteral
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false;
+ }
+
+ private $_yy_state = 1;
+
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] :
+ $this->_yy_state);
+ }
+ }
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 =
+ "/\G([{][}])|\G(" . $this->ldel . "[*])|\G((" . $this->ldel . "\\s*php([ ].*?)?" . $this->rdel . ")|(" .
+ $this->ldel . "\\s*[\/]php" . $this->rdel . "))|\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel .
+ ")|\G(" . $this->ldel . "\\s*)|\G(\\s*" . $this->rdel .
+ ")|\G((<[?]((php\\s+|=)|\\s+))|(<[%])|(<[?]xml\\s+)|(<script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*>)|([?][>])|([%][>]))|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state TEXT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const TEXT = 1;
+
+ function yy_r1_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r1_2()
+ {
+
+ preg_match("/[*]{$this->rdel}/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[ 0 ][ 1 ])) {
+ $to = $match[ 0 ][ 1 ] + strlen($match[ 0 ][ 0 ]);
+ } else {
+ $this->compiler->trigger_template_error("missing or misspelled comment closing tag '*{$this->smarty->right_delimiter}'");
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ return false;
+ }
+
+ function yy_r1_3()
+ {
+
+ $this->compiler->getTagCompiler('private_php')->parsePhp($this);
+ }
+
+ function yy_r1_7()
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
+ ) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ }
+
+ function yy_r1_8()
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
+ ) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ }
+
+ function yy_r1_9()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r1_10()
+ {
+
+ $this->compiler->getTagCompiler('private_php')->parsePhp($this);
+ }
+
+ function yy_r1_19()
+ {
+
+ $to = $this->dataLength;
+ preg_match("/($this->ldel)|(<[?]((php\s+|=)|\s+))|(<[%])|(<[?]xml\s+)|(<script\s+language\s*=\s*[\"']?\s*php\s*[\"']?\s*>)|([?][>])|([%][>])/i",
+ $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[ 0 ][ 1 ])) {
+ $to = $match[ 0 ][ 1 ];
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 =
+ "/\G(" . $this->ldel . "\\s*(if|elseif|else if|while)\\s+)|\G(" . $this->ldel . "\\s*for\\s+)|\G(" .
+ $this->ldel . "\\s*foreach(?![^\s]))|\G(" . $this->ldel . "\\s*setfilter\\s+)|\G(" . $this->ldel .
+ "\\s*make_nocache\\s+)|\G(" . $this->ldel . "\\s*[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel .
+ ")|\G(" . $this->ldel . "\\s*[\/](?:(?!block)[0-9]*[a-zA-Z_]\\w*)\\s*" . $this->rdel . ")|\G(" .
+ $this->ldel . "\\s*[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*" . $this->rdel . ")|\G(" . $this->ldel .
+ "\\s*[\/])|\G(" . $this->ldel . "\\s*)/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state TAG');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const TAG = 2;
+
+ function yy_r2_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_3()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_4()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_5()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_6()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_7()
+ {
+
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_9()
+ {
+
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_10()
+ {
+
+ if ($this->_yy_stack[ count($this->_yy_stack) - 1 ] == self::TEXT) {
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->left_delimiter;
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+
+ function yy_r2_12()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r2_13()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = "/\G(\\s*" . $this->rdel . ")|\G(" . $this->ldel .
+ "\\s*)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$]smarty\\.block\\.(child|parent))|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*(([!=][=]{1,2})|([<][=>]?)|([>][=]?)|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+(is\\s+(not\\s+)?(odd|even|div)\\s+by)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G(([!]\\s*)|(not\\s+))|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|])|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state TAGBODY');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const TAGBODY = 3;
+
+ function yy_r3_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_RDEL;
+ $this->yypopstate();
+ }
+
+ function yy_r3_2()
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
+ ) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ }
+
+ function yy_r3_3()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ }
+
+ function yy_r3_4()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
+ }
+
+ function yy_r3_5()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r3_7()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ }
+
+ function yy_r3_8()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
+ }
+
+ function yy_r3_9()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_ISIN;
+ }
+
+ function yy_r3_10()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_AS;
+ }
+
+ function yy_r3_11()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TO;
+ }
+
+ function yy_r3_12()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_STEP;
+ }
+
+ function yy_r3_13()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
+ }
+
+ function yy_r3_14()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LOGOP;
+ }
+
+ function yy_r3_19()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SLOGOP;
+ }
+
+ function yy_r3_21()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
+ }
+
+ function yy_r3_25()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
+ }
+
+ function yy_r3_28()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_NOT;
+ }
+
+ function yy_r3_31()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
+ }
+
+ function yy_r3_35()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_OPENP;
+ }
+
+ function yy_r3_36()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
+ }
+
+ function yy_r3_37()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_OPENB;
+ }
+
+ function yy_r3_38()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
+ }
+
+ function yy_r3_39()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_PTR;
+ }
+
+ function yy_r3_40()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_APTR;
+ }
+
+ function yy_r3_41()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
+ }
+
+ function yy_r3_42()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
+ }
+
+ function yy_r3_44()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
+ }
+
+ function yy_r3_46()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_MATH;
+ }
+
+ function yy_r3_48()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_AT;
+ }
+
+ function yy_r3_49()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_HATCH;
+ }
+
+ function yy_r3_50()
+ {
+
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->rdel_length) ==
+ $this->smarty->right_delimiter
+ ) {
+ preg_match("/\s+/", $this->value, $match);
+ $this->value = $match[ 0 ];
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+ }
+ }
+
+ function yy_r3_51()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
+ }
+
+ function yy_r3_54()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_ID;
+ }
+
+ function yy_r3_55()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
+ }
+
+ function yy_r3_56()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+
+ function yy_r3_57()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_VERT;
+ }
+
+ function yy_r3_58()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOT;
+ }
+
+ function yy_r3_59()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_COMMA;
+ }
+
+ function yy_r3_60()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
+ }
+
+ function yy_r3_61()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
+ }
+
+ function yy_r3_62()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_COLON;
+ }
+
+ function yy_r3_63()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_QMARK;
+ }
+
+ function yy_r3_64()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_HEX;
+ }
+
+ function yy_r3_65()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ }
+
+ function yy_r3_66()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 =
+ "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/]literal\\s*" .
+ $this->rdel . ")|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state LITERAL');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const LITERAL = 4;
+
+ function yy_r4_1()
+ {
+
+ $this->literal_cnt ++;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+
+ function yy_r4_2()
+ {
+
+ if ($this->literal_cnt) {
+ $this->literal_cnt --;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+
+ function yy_r4_3()
+ {
+
+ $to = $this->dataLength;
+ preg_match("/{$this->ldel}[\/]?literal{$this->rdel}/i", $this->data, $match, PREG_OFFSET_CAPTURE,
+ $this->counter);
+ if (isset($match[ 0 ][ 1 ])) {
+ $to = $match[ 0 ][ 1 ];
+ } else {
+ $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 =
+ "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/]literal\\s*" .
+ $this->rdel . ")|\G(" . $this->ldel . "\\s*[\/])|\G(" . $this->ldel . "\\s*[0-9]*[a-zA-Z_]\\w*)|\G(" .
+ $this->ldel .
+ "\\s*)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(" .
+ $this->ldel . "|\\$|`\\$|\")))|\G([\S\s])/isS";
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, null, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' .
+ substr($this->data, $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ }
+ while (true);
+ } // end function
+
+ const DOUBLEQUOTEDSTRING = 5;
+
+ function yy_r5_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r5_2()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r5_3()
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
+ ) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ }
+
+ function yy_r5_4()
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
+ ) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ }
+
+ function yy_r5_5()
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[ $this->ldel_length ]) ?
+ strpos(" \n\t\r", $this->value[ $this->ldel_length ]) !== false : false
+ ) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ }
+
+ function yy_r5_6()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypopstate();
+ }
+
+ function yy_r5_7()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->value = substr($this->value, 0, - 1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+ function yy_r5_8()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ }
+
+ function yy_r5_9()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r5_10()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r5_14()
+ {
+
+ $to = $this->dataLength;
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+}
+
+ \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
new file mode 100644
index 000000000..bc74fe440
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
@@ -0,0 +1,2831 @@
+<?php
+
+class TP_yyToken implements ArrayAccess
+{
+ public $string = '';
+
+ public $metadata = array();
+
+ public function __construct($s, $m = array())
+ {
+ if ($s instanceof TP_yyToken) {
+ $this->string = $s->string;
+ $this->metadata = $s->metadata;
+ } else {
+ $this->string = (string) $s;
+ if ($m instanceof TP_yyToken) {
+ $this->metadata = $m->metadata;
+ } elseif (is_array($m)) {
+ $this->metadata = $m;
+ }
+ }
+ }
+
+ public function __toString()
+ {
+ return $this->string;
+ }
+
+ public function offsetExists($offset)
+ {
+ return isset($this->metadata[ $offset ]);
+ }
+
+ public function offsetGet($offset)
+ {
+ return $this->metadata[ $offset ];
+ }
+
+ public function offsetSet($offset, $value)
+ {
+ if ($offset === null) {
+ if (isset($value[ 0 ])) {
+ $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
+ $this->metadata = array_merge($this->metadata, $x);
+
+ return;
+ }
+ $offset = count($this->metadata);
+ }
+ if ($value === null) {
+ return;
+ }
+ if ($value instanceof TP_yyToken) {
+ if ($value->metadata) {
+ $this->metadata[ $offset ] = $value->metadata;
+ }
+ } elseif ($value) {
+ $this->metadata[ $offset ] = $value;
+ }
+ }
+
+ public function offsetUnset($offset)
+ {
+ unset($this->metadata[ $offset ]);
+ }
+}
+
+class TP_yyStackEntry
+{
+ public $stateno; /* The state-number */
+ public $major; /* The major token value. This is the code
+ ** number for the token at this stack level */
+ public $minor; /* The user-supplied minor token value. This
+ ** is the value of the token */
+}
+
+;
+
+#line 11 "../smarty/lexer/smarty_internal_templateparser.y"
+
+/**
+ * Smarty Template Parser Class
+ *
+ * This is the template parser.
+ * It is generated from the smarty_internal_templateparser.y file
+ *
+ * @author Uwe Tews <uwe.tews@googlemail.com>
+ */
+class Smarty_Internal_Templateparser
+{
+ #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ const Err1 = "Security error: Call to private object member not allowed";
+
+ const Err2 = "Security error: Call to dynamic object member not allowed";
+
+ const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var Smarty_Internal_ParseTree
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var Smarty_Internal_ParseTree
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Templatelexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var Smarty_Internal_Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var Smarty_Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * security object
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Templatelexer $lex
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->template;
+ $this->smarty = $this->template->smarty;
+ $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
+ $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Smarty_Internal_ParseTree_Tag
+ */
+ public function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
+ }
+
+ const TP_VERT = 1;
+
+ const TP_COLON = 2;
+
+ const TP_PHP = 3;
+
+ const TP_TEXT = 4;
+
+ const TP_STRIPON = 5;
+
+ const TP_STRIPOFF = 6;
+
+ const TP_LITERALSTART = 7;
+
+ const TP_LITERALEND = 8;
+
+ const TP_LITERAL = 9;
+
+ const TP_RDEL = 10;
+
+ const TP_SIMPELOUTPUT = 11;
+
+ const TP_LDEL = 12;
+
+ const TP_DOLLARID = 13;
+
+ const TP_EQUAL = 14;
+
+ const TP_SIMPLETAG = 15;
+
+ const TP_ID = 16;
+
+ const TP_PTR = 17;
+
+ const TP_LDELMAKENOCACHE = 18;
+
+ const TP_LDELIF = 19;
+
+ const TP_LDELFOR = 20;
+
+ const TP_SEMICOLON = 21;
+
+ const TP_INCDEC = 22;
+
+ const TP_TO = 23;
+
+ const TP_STEP = 24;
+
+ const TP_LDELFOREACH = 25;
+
+ const TP_SPACE = 26;
+
+ const TP_AS = 27;
+
+ const TP_APTR = 28;
+
+ const TP_LDELSETFILTER = 29;
+
+ const TP_SMARTYBLOCKCHILDPARENT = 30;
+
+ const TP_CLOSETAG = 31;
+
+ const TP_LDELSLASH = 32;
+
+ const TP_ATTR = 33;
+
+ const TP_INTEGER = 34;
+
+ const TP_COMMA = 35;
+
+ const TP_OPENP = 36;
+
+ const TP_CLOSEP = 37;
+
+ const TP_MATH = 38;
+
+ const TP_UNIMATH = 39;
+
+ const TP_ISIN = 40;
+
+ const TP_QMARK = 41;
+
+ const TP_NOT = 42;
+
+ const TP_TYPECAST = 43;
+
+ const TP_HEX = 44;
+
+ const TP_DOT = 45;
+
+ const TP_INSTANCEOF = 46;
+
+ const TP_SINGLEQUOTESTRING = 47;
+
+ const TP_DOUBLECOLON = 48;
+
+ const TP_NAMESPACE = 49;
+
+ const TP_AT = 50;
+
+ const TP_HATCH = 51;
+
+ const TP_OPENB = 52;
+
+ const TP_CLOSEB = 53;
+
+ const TP_DOLLAR = 54;
+
+ const TP_LOGOP = 55;
+
+ const TP_SLOGOP = 56;
+
+ const TP_TLOGOP = 57;
+
+ const TP_SINGLECOND = 58;
+
+ const TP_QUOTE = 59;
+
+ const TP_BACKTICK = 60;
+
+ const YY_NO_ACTION = 532;
+
+ const YY_ACCEPT_ACTION = 531;
+
+ const YY_ERROR_ACTION = 530;
+
+ const YY_SZ_ACTTAB = 2114;
+
+ static public $yy_action = array(268, 8, 132, 210, 245, 197, 183, 228, 7, 84, 176, 264, 275, 302, 112, 44, 36, 278,
+ 233, 136, 305, 221, 281, 203, 237, 26, 234, 202, 41, 104, 189, 39, 42, 256, 213,
+ 216, 224, 78, 207, 129, 82, 1, 316, 297, 102, 268, 8, 133, 79, 245, 80, 302, 228,
+ 7, 84, 330, 299, 82, 272, 112, 297, 273, 325, 233, 285, 305, 221, 214, 231, 34, 26,
+ 3, 101, 41, 230, 78, 39, 42, 256, 213, 35, 239, 314, 207, 300, 82, 1, 13, 297, 333,
+ 268, 8, 135, 79, 245, 201, 302, 228, 7, 84, 35, 85, 322, 109, 112, 29, 196, 13,
+ 233, 269, 305, 221, 237, 231, 249, 26, 136, 104, 41, 219, 78, 39, 42, 256, 213,
+ 459, 239, 267, 207, 355, 82, 1, 459, 297, 446, 268, 8, 135, 79, 245, 193, 302, 228,
+ 7, 84, 35, 446, 297, 28, 112, 247, 263, 13, 233, 82, 305, 221, 297, 231, 309, 26,
+ 185, 292, 41, 298, 78, 39, 42, 256, 213, 27, 239, 237, 207, 232, 82, 1, 104, 297,
+ 459, 268, 8, 135, 79, 245, 195, 459, 228, 7, 84, 446, 297, 283, 11, 112, 25, 188,
+ 282, 233, 236, 305, 221, 446, 204, 294, 26, 32, 318, 41, 90, 210, 39, 42, 256, 213,
+ 174, 239, 137, 207, 402, 82, 1, 210, 297, 9, 268, 8, 136, 79, 245, 201, 223, 228,
+ 7, 84, 402, 142, 235, 225, 112, 22, 227, 402, 233, 166, 305, 221, 35, 231, 27, 33,
+ 210, 101, 41, 13, 210, 39, 42, 256, 213, 361, 239, 302, 207, 399, 82, 1, 210, 297,
+ 101, 268, 8, 135, 79, 245, 201, 402, 228, 7, 84, 399, 235, 297, 109, 112, 447, 78,
+ 399, 233, 319, 305, 221, 402, 194, 172, 26, 279, 447, 41, 402, 307, 39, 42, 256,
+ 213, 182, 239, 16, 207, 296, 82, 1, 210, 297, 101, 268, 8, 131, 79, 245, 201, 357,
+ 228, 7, 84, 283, 11, 475, 475, 112, 282, 303, 475, 233, 24, 305, 221, 35, 231, 175,
+ 4, 279, 271, 41, 13, 109, 39, 42, 256, 213, 181, 239, 178, 207, 12, 82, 1, 16, 297,
+ 274, 268, 8, 135, 79, 245, 200, 475, 228, 7, 84, 475, 475, 283, 11, 112, 475, 189,
+ 282, 233, 210, 305, 221, 20, 231, 38, 26, 179, 292, 41, 148, 446, 39, 42, 256, 213,
+ 229, 239, 180, 207, 332, 82, 1, 446, 297, 190, 268, 8, 134, 79, 245, 201, 215, 228,
+ 7, 84, 168, 16, 188, 243, 112, 104, 189, 303, 233, 140, 305, 221, 325, 231, 255,
+ 26, 177, 214, 41, 218, 312, 39, 42, 256, 213, 277, 239, 128, 207, 101, 82, 1, 92,
+ 297, 2, 268, 8, 136, 79, 245, 201, 23, 228, 7, 84, 210, 108, 251, 184, 112, 297,
+ 304, 289, 233, 367, 305, 221, 137, 231, 315, 33, 220, 5, 41, 9, 5, 39, 42, 256,
+ 213, 35, 239, 189, 207, 113, 82, 311, 13, 297, 106, 446, 214, 212, 79, 116, 72,
+ 114, 258, 260, 261, 222, 102, 446, 214, 257, 280, 187, 308, 334, 270, 206, 242,
+ 152, 299, 210, 128, 83, 262, 250, 252, 253, 176, 332, 211, 329, 268, 8, 151, 143,
+ 245, 189, 178, 228, 7, 84, 210, 265, 332, 332, 112, 188, 21, 311, 233, 153, 305,
+ 221, 214, 212, 17, 122, 67, 114, 164, 141, 189, 13, 102, 149, 266, 257, 280, 183,
+ 332, 332, 270, 206, 242, 332, 299, 295, 44, 36, 278, 235, 311, 208, 279, 145, 169,
+ 214, 212, 91, 122, 67, 114, 189, 320, 332, 167, 102, 146, 139, 257, 280, 94, 171,
+ 159, 270, 206, 242, 332, 299, 210, 38, 311, 189, 332, 155, 209, 214, 212, 317, 122,
+ 53, 107, 123, 232, 332, 189, 102, 291, 400, 257, 280, 6, 217, 276, 270, 206, 242,
+ 311, 299, 297, 158, 313, 214, 212, 400, 122, 49, 107, 154, 117, 332, 400, 102, 30,
+ 446, 257, 280, 248, 332, 173, 270, 206, 242, 279, 299, 324, 446, 186, 292, 332, 95,
+ 279, 268, 10, 326, 170, 245, 88, 87, 228, 7, 84, 279, 138, 89, 279, 112, 86, 309,
+ 311, 233, 115, 305, 221, 214, 212, 254, 122, 67, 114, 105, 303, 163, 165, 102, 303,
+ 93, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 303, 303, 303, 286, 19, 311,
+ 205, 303, 303, 303, 214, 212, 303, 116, 72, 114, 303, 43, 40, 37, 102, 303, 303,
+ 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 324, 327, 323, 288, 287, 303,
+ 303, 268, 10, 326, 331, 245, 303, 303, 228, 7, 84, 303, 303, 303, 303, 112, 303,
+ 303, 311, 233, 303, 305, 221, 214, 212, 303, 122, 70, 114, 303, 303, 303, 303, 102,
+ 303, 303, 257, 280, 303, 283, 11, 270, 206, 242, 282, 299, 303, 311, 303, 290, 19,
+ 303, 214, 212, 35, 122, 54, 114, 303, 303, 303, 13, 102, 162, 303, 257, 280, 183,
+ 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122, 68,
+ 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 100, 73, 114, 303, 303, 303, 303,
+ 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 122, 77, 114, 303, 303, 303, 303, 102, 147, 303, 257, 280,
+ 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122,
+ 76, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 99, 71, 114, 303, 303, 303, 303,
+ 102, 161, 303, 257, 280, 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278,
+ 303, 214, 212, 303, 122, 47, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303,
+ 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 59,
+ 114, 303, 303, 303, 303, 102, 150, 303, 257, 280, 183, 303, 303, 270, 206, 242,
+ 332, 299, 311, 44, 36, 278, 303, 214, 198, 303, 118, 55, 114, 303, 303, 303, 303,
+ 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 122, 69, 114, 303, 303, 303, 303, 102, 160, 303, 257, 280,
+ 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 97, 303, 81,
+ 48, 103, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 57, 114, 303, 303, 303, 303,
+ 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 122, 65, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
+ 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 96, 303, 81,
+ 46, 103, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242,
+ 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 111, 50, 114, 303, 303, 303, 303,
+ 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
+ 303, 303, 214, 212, 303, 98, 61, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
+ 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 199, 303,
+ 122, 56, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206,
+ 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 51, 114, 303, 303, 303,
+ 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303,
+ 303, 303, 303, 214, 212, 303, 122, 58, 114, 303, 303, 303, 303, 102, 303, 303, 257,
+ 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212,
+ 303, 122, 74, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270,
+ 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 62, 114, 303, 303,
+ 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311,
+ 303, 303, 303, 303, 214, 212, 303, 122, 60, 114, 303, 303, 303, 303, 102, 303, 303,
+ 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214,
+ 212, 303, 122, 45, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303,
+ 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 64, 114, 303,
+ 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299,
+ 311, 303, 303, 303, 303, 214, 212, 303, 122, 75, 114, 303, 303, 303, 303, 102, 303,
+ 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303,
+ 214, 212, 303, 122, 63, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303,
+ 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 66, 114,
+ 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 412, 412, 270, 206, 242, 303,
+ 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 53, 114, 303, 303, 303, 303, 102,
+ 303, 303, 257, 280, 210, 303, 303, 270, 206, 242, 303, 299, 446, 301, 412, 412,
+ 412, 303, 531, 52, 259, 260, 261, 222, 446, 303, 214, 303, 303, 35, 303, 412, 412,
+ 412, 412, 303, 13, 303, 303, 303, 303, 43, 40, 37, 210, 303, 303, 311, 303, 303,
+ 303, 303, 214, 212, 210, 130, 303, 114, 327, 323, 288, 287, 102, 303, 303, 303,
+ 241, 31, 303, 35, 270, 206, 242, 303, 299, 303, 13, 303, 303, 35, 303, 43, 40, 37,
+ 303, 303, 13, 303, 303, 303, 303, 43, 40, 37, 303, 303, 303, 311, 327, 323, 288,
+ 287, 214, 212, 210, 124, 303, 114, 327, 323, 288, 287, 102, 192, 303, 303, 310,
+ 303, 303, 303, 270, 206, 242, 311, 299, 226, 303, 303, 214, 212, 303, 120, 303,
+ 114, 475, 475, 303, 28, 102, 475, 459, 43, 40, 37, 303, 303, 270, 206, 242, 303,
+ 299, 303, 303, 303, 303, 303, 303, 311, 327, 323, 288, 287, 214, 212, 303, 126,
+ 303, 114, 459, 303, 303, 459, 102, 475, 303, 459, 226, 303, 303, 303, 270, 206,
+ 242, 303, 299, 475, 475, 226, 18, 303, 475, 459, 303, 303, 303, 303, 475, 475, 303,
+ 303, 226, 475, 459, 283, 11, 303, 303, 303, 282, 475, 475, 303, 303, 303, 475, 459,
+ 303, 303, 35, 459, 144, 303, 459, 303, 475, 13, 459, 303, 303, 303, 459, 303, 303,
+ 459, 311, 475, 303, 459, 321, 214, 212, 303, 119, 459, 114, 303, 459, 303, 475,
+ 102, 459, 303, 303, 303, 303, 303, 303, 270, 206, 242, 303, 299, 311, 210, 14, 303,
+ 303, 214, 212, 303, 127, 303, 114, 303, 284, 303, 303, 102, 129, 303, 303, 303,
+ 303, 102, 303, 270, 206, 242, 311, 299, 210, 303, 293, 214, 212, 299, 121, 303,
+ 114, 311, 43, 40, 37, 102, 214, 212, 303, 125, 303, 114, 303, 270, 206, 242, 102,
+ 299, 156, 327, 323, 288, 287, 210, 270, 206, 242, 210, 299, 43, 40, 37, 210, 303,
+ 303, 303, 244, 303, 303, 303, 303, 303, 303, 110, 303, 303, 327, 323, 288, 287,
+ 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40, 37, 210, 43, 40, 37, 210,
+ 303, 43, 40, 37, 240, 210, 303, 303, 191, 327, 323, 288, 287, 327, 323, 288, 287,
+ 303, 327, 323, 288, 287, 303, 306, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40,
+ 37, 303, 43, 40, 37, 210, 303, 238, 43, 40, 37, 303, 303, 303, 303, 327, 323, 288,
+ 287, 327, 323, 288, 287, 15, 303, 327, 323, 288, 287, 303, 303, 303, 475, 475, 303,
+ 303, 303, 475, 459, 210, 303, 246, 43, 40, 37, 210, 303, 303, 303, 303, 303, 475,
+ 475, 283, 11, 303, 475, 459, 282, 327, 323, 288, 287, 303, 303, 303, 459, 303, 35,
+ 459, 157, 475, 303, 459, 303, 13, 43, 40, 37, 303, 303, 303, 43, 40, 37, 459, 303,
+ 303, 459, 303, 475, 328, 459, 327, 323, 288, 287, 303, 303, 327, 323, 288, 287,
+ 303, 406, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303,
+ 303, 406, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303, 406, 303, 303, 303,
+ 303, 303, 303, 303, 235,);
+
+ static public $yy_lookahead = array(11, 12, 13, 1, 15, 16, 76, 18, 19, 20, 7, 8, 9, 22, 25, 85, 86, 87, 29, 13, 31,
+ 32, 16, 34, 75, 36, 77, 78, 39, 80, 100, 42, 43, 44, 45, 71, 47, 46, 49, 75, 51,
+ 52, 53, 54, 80, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 49, 92, 51, 66, 25, 54,
+ 69, 65, 29, 30, 31, 32, 70, 34, 14, 36, 35, 17, 39, 16, 46, 42, 43, 44, 45, 26,
+ 47, 53, 49, 10, 51, 52, 33, 54, 53, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 26,
+ 104, 105, 48, 25, 12, 13, 33, 29, 16, 31, 32, 75, 34, 77, 36, 13, 80, 39, 16,
+ 46, 42, 43, 44, 45, 45, 47, 34, 49, 10, 51, 52, 52, 54, 36, 11, 12, 13, 59, 15,
+ 16, 22, 18, 19, 20, 26, 48, 54, 14, 25, 13, 34, 33, 29, 51, 31, 32, 54, 34, 94,
+ 36, 96, 97, 39, 97, 46, 42, 43, 44, 45, 14, 47, 75, 49, 77, 51, 52, 80, 54, 45,
+ 11, 12, 13, 59, 15, 16, 52, 18, 19, 20, 36, 54, 11, 12, 25, 21, 100, 16, 29, 45,
+ 31, 32, 48, 34, 16, 36, 14, 53, 39, 35, 1, 42, 43, 44, 45, 93, 47, 45, 49, 10,
+ 51, 52, 1, 54, 52, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 26, 27, 45, 50, 25,
+ 12, 13, 33, 29, 16, 31, 32, 26, 34, 14, 36, 1, 17, 39, 33, 1, 42, 43, 44, 45,
+ 10, 47, 22, 49, 10, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15, 16, 10, 18, 19, 20,
+ 26, 45, 54, 48, 25, 36, 46, 33, 29, 53, 31, 32, 26, 34, 93, 36, 95, 48, 39, 33,
+ 60, 42, 43, 44, 45, 81, 47, 35, 49, 37, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15,
+ 16, 10, 18, 19, 20, 11, 12, 11, 12, 25, 16, 101, 16, 29, 14, 31, 32, 26, 34, 93,
+ 36, 95, 22, 39, 33, 48, 42, 43, 44, 45, 81, 47, 76, 49, 41, 51, 52, 35, 54, 37,
+ 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 11, 12, 11, 12, 25, 16, 100, 16, 29, 1,
+ 31, 32, 28, 34, 2, 36, 96, 97, 39, 72, 36, 42, 43, 44, 45, 17, 47, 76, 49, 82,
+ 51, 52, 48, 54, 16, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 75, 35, 100, 37, 25,
+ 80, 100, 101, 29, 13, 31, 32, 65, 34, 37, 36, 13, 70, 39, 16, 91, 42, 43, 44,
+ 45, 16, 47, 98, 49, 17, 51, 52, 36, 54, 36, 11, 12, 13, 59, 15, 16, 12, 18, 19,
+ 20, 1, 48, 4, 76, 25, 54, 16, 105, 29, 10, 31, 32, 45, 34, 53, 36, 17, 36, 39,
+ 52, 36, 42, 43, 44, 45, 26, 47, 100, 49, 16, 51, 65, 33, 54, 80, 36, 70, 71, 59,
+ 73, 74, 75, 64, 65, 66, 67, 80, 48, 70, 83, 84, 76, 98, 91, 88, 89, 90, 72, 92,
+ 1, 98, 16, 3, 4, 5, 6, 7, 82, 102, 103, 11, 12, 72, 72, 15, 100, 76, 18, 19, 20,
+ 1, 16, 82, 82, 25, 100, 28, 65, 29, 51, 31, 32, 70, 71, 26, 73, 74, 75, 72, 72,
+ 100, 33, 80, 72, 10, 83, 84, 76, 82, 82, 88, 89, 90, 82, 92, 16, 85, 86, 87, 45,
+ 65, 99, 95, 72, 51, 70, 71, 76, 73, 74, 75, 100, 53, 82, 93, 80, 72, 13, 83, 84,
+ 76, 93, 72, 88, 89, 90, 82, 92, 1, 2, 65, 100, 82, 72, 99, 70, 71, 53, 73, 74,
+ 75, 16, 77, 82, 100, 80, 16, 10, 83, 84, 36, 14, 34, 88, 89, 90, 65, 92, 54, 72,
+ 13, 70, 71, 26, 73, 74, 75, 72, 77, 82, 33, 80, 23, 36, 83, 84, 82, 82, 72, 88,
+ 89, 90, 95, 92, 4, 48, 96, 97, 82, 81, 95, 11, 12, 13, 93, 15, 80, 80, 18, 19,
+ 20, 95, 80, 80, 95, 25, 80, 94, 65, 29, 79, 31, 32, 70, 71, 8, 73, 74, 75, 68,
+ 106, 93, 93, 80, 106, 93, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 106, 106,
+ 106, 59, 60, 65, 99, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 38, 39, 40,
+ 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 4, 55, 56, 57, 58,
+ 106, 106, 11, 12, 13, 103, 15, 106, 106, 18, 19, 20, 106, 106, 106, 106, 25,
+ 106, 106, 65, 29, 106, 31, 32, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
+ 106, 106, 83, 84, 106, 11, 12, 88, 89, 90, 16, 92, 106, 65, 106, 59, 60, 106,
+ 70, 71, 26, 73, 74, 75, 106, 106, 106, 33, 80, 72, 106, 83, 84, 76, 106, 106,
+ 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
+ 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
+ 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
+ 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
+ 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90, 82, 92,
+ 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 100, 106,
+ 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
+ 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90,
+ 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
+ 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
+ 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106,
+ 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
+ 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
+ 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76,
+ 106, 106, 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106,
+ 106, 106, 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
+ 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
+ 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
+ 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
+ 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
+ 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106,
+ 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106,
+ 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75,
+ 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92,
+ 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106,
+ 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71,
+ 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88,
+ 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
+ 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
+ 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
+ 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
+ 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106,
+ 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
+ 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
+ 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106,
+ 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106,
+ 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
+ 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
+ 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
+ 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
+ 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
+ 80, 106, 106, 83, 84, 106, 1, 2, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
+ 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 1, 106, 106,
+ 88, 89, 90, 106, 92, 36, 10, 38, 39, 40, 106, 62, 63, 64, 65, 66, 67, 48, 106,
+ 70, 106, 106, 26, 106, 55, 56, 57, 58, 106, 33, 106, 106, 106, 106, 38, 39, 40,
+ 1, 106, 106, 65, 106, 106, 106, 106, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80,
+ 106, 106, 106, 84, 24, 106, 26, 88, 89, 90, 106, 92, 106, 33, 106, 106, 26, 106,
+ 38, 39, 40, 106, 106, 33, 106, 106, 106, 106, 38, 39, 40, 106, 106, 106, 65, 55,
+ 56, 57, 58, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80, 10, 106, 106, 84, 106,
+ 106, 106, 88, 89, 90, 65, 92, 2, 106, 106, 70, 71, 106, 73, 106, 75, 11, 12,
+ 106, 14, 80, 16, 17, 38, 39, 40, 106, 106, 88, 89, 90, 106, 92, 106, 106, 106,
+ 106, 106, 106, 65, 55, 56, 57, 58, 70, 71, 106, 73, 106, 75, 45, 106, 106, 48,
+ 80, 50, 106, 52, 2, 106, 106, 106, 88, 89, 90, 106, 92, 11, 12, 2, 14, 106, 16,
+ 17, 106, 106, 106, 106, 11, 12, 106, 106, 2, 16, 17, 11, 12, 106, 106, 106, 16,
+ 11, 12, 106, 106, 106, 16, 17, 106, 106, 26, 45, 28, 106, 48, 106, 50, 33, 52,
+ 106, 106, 106, 45, 106, 106, 48, 65, 50, 106, 52, 53, 70, 71, 106, 73, 45, 75,
+ 106, 48, 106, 50, 80, 52, 106, 106, 106, 106, 106, 106, 88, 89, 90, 106, 92, 65,
+ 1, 2, 106, 106, 70, 71, 106, 73, 106, 75, 106, 71, 106, 106, 80, 75, 106, 106,
+ 106, 106, 80, 106, 88, 89, 90, 65, 92, 1, 106, 89, 70, 71, 92, 73, 106, 75, 65,
+ 38, 39, 40, 80, 70, 71, 106, 73, 106, 75, 106, 88, 89, 90, 80, 92, 27, 55, 56,
+ 57, 58, 1, 88, 89, 90, 1, 92, 38, 39, 40, 1, 106, 106, 106, 10, 106, 106, 106,
+ 106, 106, 106, 21, 106, 106, 55, 56, 57, 58, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 38, 39, 40, 1, 38, 39, 40, 1, 106, 38, 39, 40, 10, 1, 106, 106,
+ 10, 55, 56, 57, 58, 55, 56, 57, 58, 106, 55, 56, 57, 58, 106, 60, 106, 106, 106,
+ 106, 106, 106, 106, 106, 38, 39, 40, 106, 38, 39, 40, 1, 106, 37, 38, 39, 40,
+ 106, 106, 106, 106, 55, 56, 57, 58, 55, 56, 57, 58, 2, 106, 55, 56, 57, 58, 106,
+ 106, 106, 11, 12, 106, 106, 106, 16, 17, 1, 106, 37, 38, 39, 40, 1, 106, 106,
+ 106, 106, 106, 11, 12, 11, 12, 106, 16, 17, 16, 55, 56, 57, 58, 106, 106, 106,
+ 45, 106, 26, 48, 28, 50, 106, 52, 106, 33, 38, 39, 40, 106, 106, 106, 38, 39,
+ 40, 45, 106, 106, 48, 106, 50, 53, 52, 55, 56, 57, 58, 106, 106, 55, 56, 57, 58,
+ 106, 10, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21, 106, 23, 106,
+ 106, 26, 106, 106, 106, 106, 106, 106, 33, 106, 35, 106, 37, 106, 106, 106, 106,
+ 106, 106, 106, 45,);
+
+ const YY_SHIFT_USE_DFLT = - 12;
+
+ const YY_SHIFT_MAX = 238;
+
+ static public $yy_shift_ofst = array(519, 349, 79, 349, 304, 79, 79, 304, 34, - 11, 34, 79, 394, 79, 79, 124, 79,
+ 169, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 259, 79, 79, 79, 79, 79, 79, 169,
+ 79, 214, 214, 439, 439, 439, 439, 439, 439, 1617, 1577, 1627, 1627, 1627, 1627,
+ 1627, 519, 1944, 1978, 2012, 1903, 1938, 1677, 1836, 1934, 1863, 1898, 1894,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 695,
+ 695, 6, 660, 459, 311, 103, 221, 411, 745, 1766, 2016, 783, 783, 411, 221, 411,
+ 427, 221, 607, 74, 119, 209, 266, 254, 228, 181, 55, 314, 3, 314, 235, 418,
+ 418, 584, 250, 528, 378, 297, 54, 518, 54, 539, 2, 2, 2, 2, 2, 2, 2, 2, 2, 252,
+ 252, - 12, 1697, 1759, 1748, 1995, 1772, 2014, 93, 361, 359, 134, 54, 137, 54,
+ 137, 54, 54, 54, 54, 54, 54, 54, 54, 80, 54, 54, 137, 137, 54, 54, 54, 54, 54,
+ 172, 54, 172, 444, 172, 320, 80, 172, 172, 172, 54, 172, 172, 687, 594, 2, 252,
+ 2, 382, 382, 2, 2, 252, 252, 2, - 12, - 12, - 12, - 12, - 12, 1550, 2068, 617,
+ 316, 154, 29, 240, 354, 98, 174, 236, 192, 272, 413, 249, 322, 381, 188, 36,
+ - 9, 598, 554, 424, 533, 525, 441, 498, 505, 473, 458, 450, 421, 559, 610, 594,
+ 627, 605, 564, 534, 392, 388, 629, 117, 58, 156, 313,);
+
+ const YY_REDUCE_USE_DFLT = - 71;
+
+ const YY_REDUCE_MAX = 192;
+
+ static public $yy_reduce_ofst = array(1530, 426, 482, 656, 545, 515, 623, 571, 1017, 961, 1101, 1325, 933, 793, 849,
+ 821, 1465, 1157, 1129, 1185, 1073, 989, 1045, 1241, 1381, 1437, 1493, 1409,
+ 1269, 1297, 1353, 1213, 708, 737, 905, 877, 765, 1606, 1556, 1632, 1808, 1797,
+ 1771, 1666, 1743, 886, 491, 830, 491, 746, 942, 998, 438, - 70, - 70, - 70,
+ - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70,
+ - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, 1777, - 3, 524, 460,
+ - 36, 511, - 51, 362, 487, 575, 567, 586, 37, 445, 97, 65, 317, 321, 541, 541,
+ 276, 276, 276, 414, 246, 290, 246, - 8, 201, 290, 344, 422, 340, 276, 461,
+ 387, 290, 486, 276, 530, 276, 276, 276, 276, 276, 435, 276, 276, 276, 276,
+ 570, 290, 276, 122, 122, 122, 122, 122, 122, 602, 589, 122, 122, 574, 606,
+ 574, 603, 574, 574, 574, 574, 574, 574, 574, 574, 581, 574, 574, 597, 596,
+ 574, 574, 574, 574, 574, 593, 574, 593, 609, 593, 611, 608, 593, 593, 593,
+ 574, 593, 593, 631, 612, 96, 67, 96, 230, 230, 96, 96, 67, 67, 96, 269, 224,
+ 588, 508, 501,);
+
+ static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
+ 43, 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 53, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
+ 43, 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 52, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
+ 44, 45, 47, 49, 51, 54, 59,),
+ array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
+ array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
+ array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 53, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58, 60,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 2, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 27, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 21, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,),
+ array(1, 38, 39, 40, 55, 56, 57, 58,), array(38, 39, 40, 55, 56, 57, 58,),
+ array(38, 39, 40, 55, 56, 57, 58,), array(13, 16, 49, 51, 54,),
+ array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
+ array(1, 10, 17, 26, 33, 36, 48,), array(1, 10, 26, 33,),
+ array(13, 16, 51, 54,), array(1, 26, 33,), array(13, 36, 54,),
+ array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
+ array(11, 12, 16, 26, 28, 33,), array(11, 12, 16, 26, 28, 33,),
+ array(11, 12, 16, 26, 33,), array(11, 12, 16, 26, 33,), array(13, 36, 54,),
+ array(1, 26, 33,), array(13, 36, 54,), array(17, 45, 52,),
+ array(1, 26, 33,), array(1, 2,), array(10, 22, 26, 33, 46,),
+ array(10, 22, 26, 33, 46,), array(1, 10, 26, 27, 33,),
+ array(1, 10, 26, 33,), array(1, 10, 26, 33,), array(12, 13, 16, 54,),
+ array(11, 12, 16, 50,), array(14, 17, 48,), array(11, 12, 16,),
+ array(7, 8, 9,), array(11, 12, 16,), array(14, 17, 48,), array(13, 16,),
+ array(13, 16,), array(13, 54,), array(1, 10,), array(26, 33,),
+ array(1, 17,), array(17, 48,), array(26, 33,), array(1, 28,),
+ array(26, 33,), array(1, 53,), array(1,), array(1,), array(1,), array(1,),
+ array(1,), array(1,), array(1,), array(1,), array(1,), array(17,),
+ array(17,), array(), array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
+ array(2, 11, 12, 16, 17, 45, 48, 50, 52, 53,),
+ array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
+ array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
+ array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
+ array(11, 12, 16, 17, 45, 48, 50, 52,), array(12, 13, 16, 34, 54,),
+ array(11, 12, 16, 50,), array(11, 12, 16,), array(14, 45, 52,),
+ array(26, 33,), array(13, 54,), array(26, 33,), array(13, 54,),
+ array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
+ array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
+ array(45, 52,), array(26, 33,), array(26, 33,), array(13, 54,),
+ array(13, 54,), array(26, 33,), array(26, 33,), array(26, 33,),
+ array(26, 33,), array(26, 33,), array(45, 52,), array(26, 33,),
+ array(45, 52,), array(12, 36,), array(45, 52,), array(14, 22,),
+ array(45, 52,), array(45, 52,), array(45, 52,), array(45, 52,),
+ array(26, 33,), array(45, 52,), array(45, 52,), array(8,), array(36,),
+ array(1,), array(17,), array(1,), array(2,), array(2,), array(1,),
+ array(1,), array(17,), array(17,), array(1,), array(), array(), array(),
+ array(), array(), array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57, 58,),
+ array(10, 21, 23, 26, 33, 35, 37, 45,), array(10, 14, 26, 33, 36, 48,),
+ array(11, 12, 16, 50,), array(36, 45, 48, 53,), array(22, 46, 53,),
+ array(22, 46, 60,), array(28, 36, 48,), array(36, 48,), array(21, 35,),
+ array(45, 53,), array(14, 45,), array(35, 37,), array(36, 48,),
+ array(36, 48,), array(35, 37,), array(35, 37,), array(16, 50,),
+ array(35, 53,), array(22, 46,), array(34,), array(10,), array(16,),
+ array(51,), array(16,), array(36,), array(51,), array(16,), array(16,),
+ array(4,), array(16,), array(53,), array(16,), array(16,), array(36,),
+ array(13,), array(16,), array(53,), array(45,), array(37,), array(16,),
+ array(23,), array(34,), array(16,), array(14,), array(41,), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(), array(),
+ array(), array(), array(), array(), array(), array(), array(),);
+
+ static public $yy_default = array(338, 515, 494, 530, 530, 494, 494, 530, 530, 530, 530, 530, 530, 530, 530, 530,
+ 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530,
+ 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 396, 530, 396,
+ 359, 372, 362, 396, 335, 530, 530, 530, 530, 530, 530, 530, 530, 401, 530, 530,
+ 377, 517, 492, 493, 418, 516, 403, 401, 518, 398, 407, 408, 423, 422, 530, 530,
+ 434, 410, 530, 396, 530, 530, 396, 396, 396, 396, 530, 396, 530, 506, 396, 386,
+ 424, 424, 410, 410, 410, 530, 459, 449, 459, 530, 459, 449, 530, 530, 530, 410,
+ 396, 390, 449, 396, 410, 374, 410, 417, 426, 425, 410, 392, 421, 414, 413, 427,
+ 503, 449, 501, 448, 448, 448, 448, 448, 448, 530, 461, 459, 475, 382, 530, 381,
+ 530, 369, 366, 364, 368, 360, 363, 358, 370, 452, 384, 356, 530, 530, 385, 375,
+ 380, 379, 373, 455, 376, 484, 459, 487, 530, 454, 453, 486, 485, 383, 456, 457,
+ 350, 459, 443, 481, 387, 495, 496, 416, 391, 507, 504, 393, 500, 500, 500, 459,
+ 459, 434, 430, 434, 460, 434, 424, 424, 434, 434, 530, 430, 430, 530, 530, 444,
+ 530, 530, 530, 530, 424, 530, 530, 530, 530, 530, 505, 530, 530, 530, 342, 530,
+ 439, 530, 530, 475, 530, 530, 530, 430, 530, 530, 404, 432, 530, 530, 436, 439,
+ 480, 502, 440, 490, 465, 365, 436, 475, 394, 405, 343, 344, 345, 346, 347, 409,
+ 429, 411, 337, 336, 339, 340, 341, 431, 348, 397, 353, 464, 354, 463, 435, 378,
+ 351, 349, 489, 352, 433, 462, 419, 477, 415, 446, 478, 479, 438, 388, 519, 511,
+ 510, 521, 520, 412, 482, 437, 498, 497, 491, 476, 483, 451, 526, 527, 428, 499,
+ 450, 389, 524, 523, 488, 458, 420, 442, 445, 371, 471, 468, 474, 467, 466, 469,
+ 472, 470, 522, 509, 529, 528, 525, 508, 473, 513, 447, 514, 395, 512, 441,);
+
+ const YYNOCODE = 107;
+
+ const YYSTACKDEPTH = 500;
+
+ const YYNSTATE = 335;
+
+ const YYNRULE = 195;
+
+ const YYERRORSYMBOL = 61;
+
+ const YYERRSYMDT = 'yy0';
+
+ const YYFALLBACK = 0;
+
+ public static $yyFallback = array();
+
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
+
+ public $yyTraceFILE;
+
+ public $yyTracePrompt;
+
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
+ 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
+ 'SIMPLETAG', 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC',
+ 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER',
+ 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
+ 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
+ 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
+ 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK',
+ 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
+ 'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes',
+ 'value', 'expr', 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction',
+ 'varvar', 'modparameters', 'attribute', 'ternary', 'array', 'tlop', 'lop', 'scond',
+ 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', 'object',
+ 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method',
+ 'params', 'modifier', 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
+ 'doublequotedcontent',);
+
+ public static $yyRuleName = array('start ::= template', 'template ::= template_element',
+ 'template ::= template template_element', 'template ::=',
+ 'template_element ::= smartytag', 'template_element ::= literal',
+ 'template_element ::= PHP', 'template_element ::= text_content',
+ 'text_content ::= TEXT', 'text_content ::= text_content TEXT',
+ 'template_element ::= STRIPON', 'template_element ::= STRIPOFF',
+ 'literal ::= LITERALSTART LITERALEND',
+ 'literal ::= LITERALSTART literal_elements LITERALEND',
+ 'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
+ 'literal_element ::= literal', 'literal_element ::= LITERAL',
+ 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
+ 'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
+ 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
+ 'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
+ 'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
+ 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
+ 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
+ 'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
+ 'tag ::= LDEL ID PTR ID modifierlist attributes',
+ 'tag ::= LDELMAKENOCACHE DOLLARID', 'tag ::= LDELIF expr',
+ 'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
+ 'tag ::= LDELIF statement attributes',
+ 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
+ 'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
+ 'tag ::= LDELFOR statement TO expr attributes',
+ 'tag ::= LDELFOR statement TO expr STEP expr attributes',
+ 'tag ::= LDELFOREACH attributes',
+ 'tag ::= LDELFOREACH SPACE value AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
+ 'tag ::= LDELSETFILTER ID modparameters',
+ 'tag ::= LDELSETFILTER ID modparameters modifierlist',
+ 'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
+ 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
+ 'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
+ 'attributes ::= attributes attribute', 'attributes ::= attribute',
+ 'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
+ 'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
+ 'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
+ 'statements ::= statement', 'statements ::= statements COMMA statement',
+ 'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
+ 'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
+ 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
+ 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
+ 'expr ::= expr modifierlist', 'expr ::= expr tlop value',
+ 'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array',
+ 'expr ::= expr ISIN value',
+ 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
+ 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
+ 'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
+ 'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
+ 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
+ 'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
+ 'value ::= variable INSTANCEOF ns1', 'value ::= variable INSTANCEOF variable',
+ 'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
+ 'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
+ 'value ::= value modifierlist', 'value ::= NAMESPACE',
+ 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
+ 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
+ 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
+ 'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
+ 'variable ::= HATCH variable HATCH arrayindex',
+ 'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
+ 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
+ 'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
+ 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
+ 'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
+ 'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
+ 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
+ 'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
+ 'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
+ 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
+ 'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
+ 'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
+ 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
+ 'objectchain ::= objectchain objectelement',
+ 'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
+ 'objectelement ::= PTR LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
+ 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
+ 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
+ 'modifierlist ::= modifierlist modifier modparameters',
+ 'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
+ 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
+ 'modparameters ::=', 'modparameter ::= COLON value',
+ 'modparameter ::= COLON array', 'static_class_access ::= method',
+ 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
+ 'static_class_access ::= DOLLARID arrayindex',
+ 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
+ 'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND',
+ 'array ::= OPENB arrayelements CLOSEB', 'arrayelements ::= arrayelement',
+ 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
+ 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
+ 'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
+ 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
+ 'doublequoted ::= doublequoted doublequotedcontent',
+ 'doublequoted ::= doublequotedcontent',
+ 'doublequotedcontent ::= BACKTICK variable BACKTICK',
+ 'doublequotedcontent ::= BACKTICK expr BACKTICK',
+ 'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
+ 'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
+ 'doublequotedcontent ::= TEXT',);
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[ $tokenType ];
+ } else {
+ return "Unknown";
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default:
+ break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx --;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ $expected = self::$yyExpectedTokens[ $state ];
+ if (isset($res3[ $state ][ $token ])) {
+ if ($res3[ $state ][ $token ]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done ++ == 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset(self::$yyExpectedTokens[ $nextstate ])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
+ if (isset($res4[ $nextstate ][ $token ])) {
+ if ($res4[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[ $nextstate ][ $token ] =
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
+ ) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx ++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ }
+ while (true);
+ }
+ break;
+ }
+ while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ if (isset($res[ $state ][ $token ])) {
+ if ($res[ $state ][ $token ]) {
+ return true;
+ }
+ } else {
+ if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done ++ == 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
+ if (isset($res2[ $nextstate ][ $token ])) {
+ if ($res2[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
+ in_array($token, self::$yyExpectedTokens[ $nextstate ],
+ true))
+ ) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx ++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ }
+ while (true);
+ }
+ break;
+ }
+ while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[ $this->yyidx ]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[ $stateno ])) {
+ // no shift actions
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_shift_ofst[ $stateno ];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead == self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
+ ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
+ ) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
+ $this->yyTokenName[ $iFallback ] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_reduce_ofst[ $stateno ];
+ if ($i == self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead == self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx ++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx --;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_template_error("Stack overflow in template parser");
+
+ return;
+ }
+ $yytos = new TP_yyStackEntry;
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i ++) {
+ fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
+ }
+ fwrite($this->yyTraceFILE, "\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(array(0 => 62, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 2),
+ array(0 => 63, 1 => 0), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
+ array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 67, 1 => 1),
+ array(0 => 67, 1 => 2), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
+ array(0 => 66, 1 => 2), array(0 => 66, 1 => 3), array(0 => 68, 1 => 2),
+ array(0 => 68, 1 => 0), array(0 => 69, 1 => 1), array(0 => 69, 1 => 1),
+ array(0 => 65, 1 => 2), array(0 => 65, 1 => 1), array(0 => 70, 1 => 2),
+ array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
+ array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
+ array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 5),
+ array(0 => 65, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
+ array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 6),
+ array(0 => 70, 1 => 2), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
+ array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 8),
+ array(0 => 79, 1 => 2), array(0 => 79, 1 => 1), array(0 => 70, 1 => 5),
+ array(0 => 70, 1 => 7), array(0 => 70, 1 => 2), array(0 => 70, 1 => 6),
+ array(0 => 70, 1 => 8), array(0 => 70, 1 => 6), array(0 => 70, 1 => 8),
+ array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 2),
+ array(0 => 65, 1 => 1), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
+ array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 72, 1 => 2),
+ array(0 => 72, 1 => 1), array(0 => 72, 1 => 0), array(0 => 82, 1 => 4),
+ array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2),
+ array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 4),
+ array(0 => 78, 1 => 1), array(0 => 78, 1 => 3), array(0 => 77, 1 => 3),
+ array(0 => 77, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3),
+ array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
+ array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 1),
+ array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
+ array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
+ array(0 => 83, 1 => 7), array(0 => 83, 1 => 7), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
+ array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 3), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
+ array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
+ array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
+ array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
+ array(0 => 89, 1 => 1), array(0 => 89, 1 => 1), array(0 => 71, 1 => 1),
+ array(0 => 71, 1 => 1), array(0 => 71, 1 => 3), array(0 => 71, 1 => 1),
+ array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 3),
+ array(0 => 71, 1 => 4), array(0 => 75, 1 => 2), array(0 => 75, 1 => 2),
+ array(0 => 93, 1 => 2), array(0 => 93, 1 => 0), array(0 => 94, 1 => 2),
+ array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 2),
+ array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 3),
+ array(0 => 94, 1 => 5), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
+ array(0 => 94, 1 => 3), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
+ array(0 => 94, 1 => 3), array(0 => 94, 1 => 2), array(0 => 80, 1 => 1),
+ array(0 => 80, 1 => 1), array(0 => 80, 1 => 2), array(0 => 95, 1 => 1),
+ array(0 => 95, 1 => 1), array(0 => 95, 1 => 3), array(0 => 92, 1 => 2),
+ array(0 => 96, 1 => 1), array(0 => 96, 1 => 2), array(0 => 97, 1 => 3),
+ array(0 => 97, 1 => 3), array(0 => 97, 1 => 5), array(0 => 97, 1 => 6),
+ array(0 => 97, 1 => 2), array(0 => 88, 1 => 4), array(0 => 98, 1 => 4),
+ array(0 => 98, 1 => 4), array(0 => 99, 1 => 3), array(0 => 99, 1 => 1),
+ array(0 => 99, 1 => 0), array(0 => 76, 1 => 3), array(0 => 76, 1 => 2),
+ array(0 => 100, 1 => 3), array(0 => 100, 1 => 2), array(0 => 81, 1 => 2),
+ array(0 => 81, 1 => 0), array(0 => 101, 1 => 2), array(0 => 101, 1 => 2),
+ array(0 => 91, 1 => 1), array(0 => 91, 1 => 2), array(0 => 91, 1 => 1),
+ array(0 => 91, 1 => 2), array(0 => 91, 1 => 3), array(0 => 86, 1 => 1),
+ array(0 => 86, 1 => 1), array(0 => 85, 1 => 1), array(0 => 87, 1 => 1),
+ array(0 => 84, 1 => 3), array(0 => 102, 1 => 1), array(0 => 102, 1 => 3),
+ array(0 => 102, 1 => 0), array(0 => 103, 1 => 3), array(0 => 103, 1 => 3),
+ array(0 => 103, 1 => 1), array(0 => 90, 1 => 2), array(0 => 90, 1 => 3),
+ array(0 => 104, 1 => 2), array(0 => 104, 1 => 1), array(0 => 105, 1 => 3),
+ array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 3),
+ array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 1),);
+
+ public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 16 => 8, 17 => 8,
+ 43 => 8, 66 => 8, 67 => 8, 75 => 8, 76 => 8, 80 => 8, 89 => 8, 94 => 8, 95 => 8,
+ 100 => 8, 104 => 8, 105 => 8, 109 => 8, 111 => 8, 116 => 8, 178 => 8, 183 => 8,
+ 9 => 9, 10 => 10, 11 => 11, 12 => 12, 15 => 12, 13 => 13, 74 => 13, 14 => 14,
+ 90 => 14, 92 => 14, 93 => 14, 123 => 14, 18 => 18, 19 => 19, 20 => 20, 22 => 20,
+ 24 => 20, 21 => 21, 23 => 21, 25 => 21, 26 => 26, 27 => 26, 28 => 28, 29 => 29,
+ 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36, 37 => 37,
+ 38 => 38, 40 => 38, 39 => 39, 41 => 41, 42 => 42, 44 => 44, 45 => 45, 46 => 46,
+ 47 => 47, 49 => 47, 48 => 48, 50 => 48, 51 => 51, 52 => 52, 53 => 53, 54 => 54,
+ 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 69 => 60, 158 => 60,
+ 162 => 60, 166 => 60, 167 => 60, 61 => 61, 159 => 61, 165 => 61, 62 => 62,
+ 63 => 63, 64 => 63, 65 => 65, 143 => 65, 68 => 68, 70 => 70, 71 => 71, 72 => 71,
+ 73 => 73, 77 => 77, 78 => 78, 79 => 78, 81 => 81, 108 => 81, 82 => 82, 83 => 83,
+ 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88, 91 => 91, 96 => 96, 97 => 97,
+ 98 => 98, 99 => 99, 101 => 101, 102 => 102, 103 => 102, 106 => 106, 107 => 107,
+ 110 => 110, 112 => 112, 113 => 113, 114 => 114, 115 => 115, 117 => 117,
+ 118 => 118, 119 => 119, 120 => 120, 121 => 121, 122 => 122, 124 => 124,
+ 180 => 124, 125 => 125, 126 => 126, 127 => 127, 128 => 128, 129 => 129,
+ 130 => 130, 138 => 130, 131 => 131, 132 => 132, 133 => 133, 134 => 133,
+ 136 => 133, 137 => 133, 135 => 135, 139 => 139, 140 => 140, 141 => 141,
+ 184 => 141, 142 => 142, 144 => 144, 145 => 145, 146 => 146, 147 => 147,
+ 148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152, 153 => 153,
+ 154 => 154, 155 => 155, 156 => 156, 157 => 157, 160 => 160, 161 => 161,
+ 163 => 163, 164 => 164, 168 => 168, 169 => 169, 170 => 170, 171 => 171,
+ 172 => 172, 173 => 173, 174 => 174, 175 => 175, 176 => 176, 177 => 177,
+ 179 => 179, 181 => 181, 182 => 182, 185 => 185, 186 => 186, 187 => 187,
+ 188 => 188, 189 => 188, 191 => 188, 190 => 190, 192 => 192, 193 => 193,
+ 194 => 194,);
+
+ #line 218 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r0()
+ {
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ $this->_retvalue = $this->root_buffer->to_smarty_php($this);
+ }
+
+ #line 228 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r1()
+ {
+ if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
+ $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ }
+
+ #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r2()
+ {
+ if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
+ // because of possible code injection
+ $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ }
+
+ #line 249 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r4()
+ {
+ if ($this->compiler->has_code) {
+ $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
+ } else {
+ $this->_retvalue = null;
+ }
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = count($this->compiler->_tag_stack);
+ }
+
+ #line 260 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r5()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 264 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r6()
+ {
+ $code = $this->compiler->compileTag('private_php',
+ array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
+ array('type' => $this->lex->phpType)), array());
+ if ($this->compiler->has_code && !empty($code)) {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $code) {
+ $tmp .= $code;
+ }
+ $this->compiler->prefix_code = array();
+ $this->_retvalue =
+ new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
+ } else {
+ $this->_retvalue = null;
+ }
+ }
+
+ #line 275 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r7()
+ {
+ $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 279 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r8()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 283 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r9()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 288 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r10()
+ {
+ $this->strip = true;
+ }
+
+ #line 292 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r11()
+ {
+ $this->strip = false;
+ }
+
+ #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r12()
+ {
+ $this->_retvalue = '';
+ }
+
+ #line 301 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r13()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 305 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r14()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 321 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r18()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 327 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r19()
+ {
+ $var =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
+ ' $');
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
+ array('value' => $this->compiler->compileVariable('\'' .
+ $match[ 1 ] .
+ '\'')));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
+ array('value' => $this->compiler->compileVariable('\'' .
+ $var .
+ '\'')));
+ }
+ }
+
+ #line 337 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r20()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
+ array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r21()
+ {
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
+ }
+
+ #line 364 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r26()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
+ 0 ]->minor),
+ array('var' => '\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 2 ]->minor,
+ 1) . '\'')));
+ }
+
+ #line 372 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r28()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign',
+ array_merge(array(array('value' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ array('var' => '\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 3 ]->minor,
+ 1) . '\'')),
+ $this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 376 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r29()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign',
+ array_merge(array(array('value' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ array('var' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor[ 'var' ])),
+ $this->yystack[ $this->yyidx + 0 ]->minor),
+ array('smarty_internal_index' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor[ 'smarty_internal_index' ]));
+ }
+
+ #line 381 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r30()
+ {
+ $tag =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ $this->_retvalue = null;;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag, array());
+ }
+ }
+ }
+ }
+
+ #line 403 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r31()
+ {
+ if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
+ }
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+ }
+
+ #line 413 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r32()
+ {
+ if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
+ array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
+ }
+ }
+
+ #line 426 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r33()
+ {
+ if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
+ }
+ $this->_retvalue =
+ $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
+ 'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('modifierlist' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor));
+ }
+ }
+
+ #line 438 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r34()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('object_method' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor));
+ }
+
+ #line 443 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r35()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('modifierlist' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor,
+ 'object_method' => $this->yystack[ $this->yyidx +
+ - 2 ]->minor));
+ }
+
+ #line 448 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r36()
+ {
+ $this->_retvalue = $this->compiler->compileTag('make_nocache', array(array('var' => '\'' .
+ substr($this->yystack[ $this->yyidx +
+ 0 ]->minor,
+ 1) . '\'')));
+ }
+
+ #line 453 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r37()
+ {
+ $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
+ array('if condition' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 458 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r38()
+ {
+ $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
+ $this->yystack[ $this->yyidx + 0 ]->minor,
+ array('if condition' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor));
+ }
+
+ #line 463 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r39()
+ {
+ $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
+ array('if condition' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 474 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r41()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('start' => $this->yystack[ $this->yyidx +
+ - 6 ]->minor),
+ array('ifexp' => $this->yystack[ $this->yyidx +
+ - 4 ]->minor),
+ array('var' => $this->yystack[ $this->yyidx +
+ - 2 ]->minor),
+ array('step' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))),
+ 1);
+ }
+
+ #line 478 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r42()
+ {
+ $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 486 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r44()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('start' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor),
+ array('to' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))),
+ 0);
+ }
+
+ #line 490 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r45()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('start' => $this->yystack[ $this->yyidx +
+ - 5 ]->minor),
+ array('to' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor),
+ array('step' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))),
+ 0);
+ }
+
+ #line 495 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r46()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 500 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r47()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('from' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor),
+ array('item' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor))));
+ }
+
+ #line 504 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r48()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
+ array(array('from' => $this->yystack[ $this->yyidx +
+ - 5 ]->minor),
+ array('item' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ array('key' => $this->yystack[ $this->yyidx +
+ - 3 ]->minor))));
+ }
+
+ #line 517 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r51()
+ {
+ $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
+ array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
+ - 1 ]->minor),
+ $this->yystack[ $this->yyidx +
+ 0 ]->minor))));
+ }
+
+ #line 521 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r52()
+ {
+ $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
+ array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
+ - 2 ]->minor),
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor)),
+ $this->yystack[ $this->yyidx +
+ 0 ]->minor)));
+ }
+
+ #line 526 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r53()
+ {
+ $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
+ if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
+ // {$smarty.block.child}
+ $this->_retvalue = $this->compiler->compileTag('block_child', array());;
+ } else {
+ // {$smarty.block.parent}
+ $this->_retvalue = $this->compiler->compileTag('block_parent', array());;
+ }
+ }
+
+ #line 539 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r54()
+ {
+ $tag =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
+ ' /');
+ if ($tag == 'strip') {
+ $this->strip = false;
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
+ }
+ }
+
+ #line 548 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r55()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
+ }
+
+ #line 552 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r56()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
+ array('modifier_list' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 557 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r57()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
+ array('object_method' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 561 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r58()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
+ array('object_method' => $this->yystack[ $this->yyidx +
+ - 1 ]->minor,
+ 'modifier_list' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 569 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r59()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 575 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r60()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r61()
+ {
+ $this->_retvalue = array();
+ }
+
+ #line 585 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r62()
+ {
+ if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
+ }
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
+ } else {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
+ '\'');
+ }
+ }
+
+ #line 596 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r63()
+ {
+ $this->_retvalue =
+ array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
+ 0 ]->minor);
+ }
+
+ #line 604 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r65()
+ {
+ $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
+ }
+
+ #line 616 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r68()
+ {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 629 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r70()
+ {
+ $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
+ }
+
+ #line 634 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r71()
+ {
+ $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
+ 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 641 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r73()
+ {
+ $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
+ 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 665 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r77()
+ {
+ $this->_retvalue =
+ '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
+ }
+
+ #line 670 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r78()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 684 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r81()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
+ array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
+ 'modifierlist' => $this->yystack[ $this->yyidx +
+ 0 ]->minor));
+ }
+
+ #line 690 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r82()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] . $this->yystack[ $this->yyidx + - 2 ]->minor .
+ $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] . $this->yystack[ $this->yyidx + 0 ]->minor . ')';
+ }
+
+ #line 694 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r83()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 698 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r84()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
+ }
+
+ #line 702 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r85()
+ {
+ $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ')';
+ }
+
+ #line 706 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r86()
+ {
+ $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ')';
+ }
+
+ #line 714 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r87()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->compiler->compileVariable('\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 2 ]->minor,
+ 1) .
+ '\'') .
+ ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 718 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r88()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 733 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r91()
+ {
+ $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 754 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r96()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 758 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r97()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
+ }
+
+ #line 762 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r98()
+ {
+ $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 767 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r99()
+ {
+ if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ } else {
+ $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
+ }
+ }
+
+ #line 784 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r101()
+ {
+ $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
+ }
+
+ #line 788 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r102()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 806 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r106()
+ {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
+ $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
+ $this->compiler->compileTag('private_special_variable', array(),
+ $this->yystack[ $this->yyidx +
+ - 2 ]->minor[ 'smarty_internal_index' ]) .
+ ';?>');
+ } else {
+ $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
+ $this->compiler->compileVariable($this->yystack[ $this->yyidx +
+ - 2 ]->minor[ 'var' ]) .
+ $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] .
+ ';?>');
+ }
+ $this->_retvalue = $prefixVar . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
+ }
+
+ #line 817 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r107()
+ {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php $prefixVar" . '=ob_get_clean();?>'));
+ $this->_retvalue = $prefixVar;
+ }
+
+ #line 834 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r110()
+ {
+ if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
+ (!$this->security ||
+ $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
+ ) {
+ if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
+ $this->_retvalue =
+ $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
+ } else {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
+ }
+ } else {
+ $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
+ "' is undefined or not allowed by security setting");
+ }
+ }
+
+ #line 853 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r112()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 864 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r113()
+ {
+ $this->_retvalue =
+ $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
+ }
+
+ #line 867 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r114()
+ {
+ if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
+ $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
+ $this->yystack[ $this->yyidx +
+ 0 ]->minor[ 'smarty_internal_index' ]);
+ $this->_retvalue = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
+ $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
+ $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
+ }
+ }
+
+ #line 880 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r115()
+ {
+ $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 890 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r117()
+ {
+ $this->_retvalue =
+ $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
+ }
+
+ #line 894 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r118()
+ {
+ $this->_retvalue = '(is_array($tmp = ' .
+ $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor .
+ "'") . ') ? $tmp' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
+ }
+
+ #line 898 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r119()
+ {
+ $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 902 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r120()
+ {
+ $this->_retvalue =
+ '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
+ ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
+ }
+
+ #line 906 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r121()
+ {
+ $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
+ 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r122()
+ {
+ $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
+ 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 922 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r124()
+ {
+ return;
+ }
+
+ #line 928 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r125()
+ {
+ $this->_retvalue =
+ '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
+ ']';
+ }
+
+ #line 931 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r126()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
+ }
+
+ #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r127()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
+ $this->yystack[ $this->yyidx + 0 ]->minor . ']';
+ }
+
+ #line 939 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r128()
+ {
+ $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
+ }
+
+ #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r129()
+ {
+ $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
+ }
+
+ #line 948 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r130()
+ {
+ $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
+ }
+
+ #line 953 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r131()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor .
+ '\'][\'index\']') .
+ ']';
+ }
+
+ #line 957 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r132()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
+ $this->yystack[ $this->yyidx +
+ - 3 ]->minor .
+ '\'][\'' .
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor .
+ '\']') . ']';
+ }
+
+ #line 960 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r133()
+ {
+ $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
+ }
+
+ #line 966 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r135()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileVariable('\'' .
+ substr($this->yystack[ $this->yyidx + - 1 ]->minor,
+ 1) . '\'') . ']';;
+ }
+
+ #line 982 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r139()
+ {
+ $this->_retvalue = '[]';
+ }
+
+ #line 992 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r140()
+ {
+ $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
+ }
+
+ #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r141()
+ {
+ $this->_retvalue = "''";
+ }
+
+ #line 1001 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r142()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1009 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r144()
+ {
+ $var =
+ trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
+ ' $');
+ $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
+ }
+
+ #line 1015 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r145()
+ {
+ $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
+ }
+
+ #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r146()
+ {
+ if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
+ $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
+ $this->yystack[ $this->yyidx +
+ - 1 ]->minor[ 'smarty_internal_index' ]) .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ } else {
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
+ $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
+ $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+ }
+
+ #line 1031 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r147()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r148()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1041 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r149()
+ {
+ if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
+ $this->compiler->trigger_template_error(self::Err1);
+ }
+ $this->_retvalue =
+ '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1048 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r150()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
+ $this->yystack[ $this->yyidx + 0 ]->minor . '}';
+ }
+
+ #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r151()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue =
+ '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
+ }
+
+ #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r152()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
+ $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor .
+ '}';
+ }
+
+ #line 1070 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r153()
+ {
+ $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1078 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r154()
+ {
+ $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 1086 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r155()
+ {
+ if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
+ $this->compiler->trigger_template_error(self::Err1);
+ }
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
+ implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
+ }
+
+ #line 1093 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r156()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->appendPrefixCode("<?php $prefixVar" . '=' . $this->compiler->compileVariable('\'' .
+ substr($this->yystack[ $this->yyidx +
+ - 3 ]->minor,
+ 1) .
+ '\'') . ';?>');
+ $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
+ }
+
+ #line 1104 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r157()
+ {
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 1121 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r160()
+ {
+ $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
+ array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor)));
+ }
+
+ #line 1125 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r161()
+ {
+ $this->_retvalue =
+ array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ #line 1133 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r163()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1141 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r164()
+ {
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1160 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r168()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
+ }
+
+ #line 1165 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r169()
+ {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
+ }
+
+ #line 1170 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r170()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
+ }
+
+ #line 1175 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r171()
+ {
+ $this->_retvalue =
+ array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
+ }
+
+ #line 1180 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r172()
+ {
+ $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
+ $this->yystack[ $this->yyidx + - 1 ]->minor .
+ $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
+ }
+
+ #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r173()
+ {
+ $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
+ }
+
+ #line 1190 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r174()
+ {
+ static $lops =
+ array('eq' => ' == ', 'ne' => ' != ', 'neq' => ' != ', 'gt' => ' > ', 'ge' => ' >= ', 'gte' => ' >= ',
+ 'lt' => ' < ', 'le' => ' <= ', 'lte' => ' <= ', 'mod' => ' % ', 'and' => ' && ', 'or' => ' || ',
+ 'xor' => ' xor ',);
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
+ $this->_retvalue = $lops[ $op ];
+ }
+
+ #line 1209 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r175()
+ {
+ static $tlops =
+ array('isdivby' => array('op' => ' % ', 'pre' => '!('), 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
+ $this->_retvalue = $tlops[ $op ];
+ }
+
+ #line 1222 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r176()
+ {
+ static $scond =
+ array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
+ $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
+ $this->_retvalue = $scond[ $op ];
+ }
+
+ #line 1236 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r177()
+ {
+ $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
+ }
+
+ #line 1244 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r179()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r181()
+ {
+ $this->_retvalue =
+ $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1256 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r182()
+ {
+ $this->_retvalue =
+ '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ #line 1272 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r185()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
+ }
+
+ #line 1277 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r186()
+ {
+ $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ }
+
+ #line 1282 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r187()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1286 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r188()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
+ }
+
+ #line 1294 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r190()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
+ substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
+ '\']->value');
+ }
+
+ #line 1302 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r192()
+ {
+ $this->_retvalue =
+ new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
+ }
+
+ #line 1306 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r193()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
+ function yy_r194()
+ {
+ $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[ $yyruleno ]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[ $yyruleno ])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i --) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx ++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[ $this->yyidx ] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+ #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ #line 193 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = - 1;
+ $x = new TP_yyStackEntry;
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor == 0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt --;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact == self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[ $this->yyidx ]->major;
+ if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor == 0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx != self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ }
+ while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
new file mode 100644
index 000000000..7cb575573
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
@@ -0,0 +1,598 @@
+<?php
+/**
+ * Smarty Internal TestInstall
+ * Test Smarty installation
+ *
+ * @package Smarty
+ * @subpackage Utilities
+ * @author Uwe Tews
+ */
+
+/**
+ * TestInstall class
+ *
+ * @package Smarty
+ * @subpackage Utilities
+ */
+class Smarty_Internal_TestInstall
+{
+ /**
+ * diagnose Smarty setup
+ * If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
+ *
+ * @param \Smarty $smarty
+ * @param array $errors array to push results into rather than outputting them
+ *
+ * @return bool status, true if everything is fine, false else
+ */
+ public static function testInstall(Smarty $smarty, &$errors = null)
+ {
+ $status = true;
+
+ if ($errors === null) {
+ echo "<PRE>\n";
+ echo "Smarty Installation test...\n";
+ echo "Testing template directory...\n";
+ }
+
+ $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
+
+ // test if all registered template_dir are accessible
+ foreach ($smarty->getTemplateDir() as $template_dir) {
+ $_template_dir = $template_dir;
+ $template_dir = realpath($template_dir);
+ // resolve include_path or fail existence
+ if (!$template_dir) {
+ if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
+ // try PHP include_path
+ if ($_stream_resolve_include_path) {
+ $template_dir = stream_resolve_include_path($_template_dir);
+ } else {
+ $template_dir = $smarty->ext->_getIncludePath->getIncludePath($_template_dir, null, $smarty);
+ }
+
+ if ($template_dir !== false) {
+ if ($errors === null) {
+ echo "$template_dir is OK.\n";
+ }
+
+ continue;
+ } else {
+ $status = false;
+ $message =
+ "FAILED: $_template_dir does not exist (and couldn't be found in include_path either)";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+
+ continue;
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: $_template_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+
+ continue;
+ }
+ }
+
+ if (!is_dir($template_dir)) {
+ $status = false;
+ $message = "FAILED: $template_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ } elseif (!is_readable($template_dir)) {
+ $status = false;
+ $message = "FAILED: $template_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "$template_dir is OK.\n";
+ }
+ }
+ }
+
+ if ($errors === null) {
+ echo "Testing compile directory...\n";
+ }
+
+ // test if registered compile_dir is accessible
+ $__compile_dir = $smarty->getCompileDir();
+ $_compile_dir = realpath($__compile_dir);
+ if (!$_compile_dir) {
+ $status = false;
+ $message = "FAILED: {$__compile_dir} does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_dir($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_readable($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_writable($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not writable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "{$_compile_dir} is OK.\n";
+ }
+ }
+
+ if ($errors === null) {
+ echo "Testing plugins directory...\n";
+ }
+
+ // test if all registered plugins_dir are accessible
+ // and if core plugins directory is still registered
+ $_core_plugins_dir = realpath(dirname(__FILE__) . '/../plugins');
+ $_core_plugins_available = false;
+ foreach ($smarty->getPluginsDir() as $plugin_dir) {
+ $_plugin_dir = $plugin_dir;
+ $plugin_dir = realpath($plugin_dir);
+ // resolve include_path or fail existence
+ if (!$plugin_dir) {
+ if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
+ // try PHP include_path
+ if ($_stream_resolve_include_path) {
+ $plugin_dir = stream_resolve_include_path($_plugin_dir);
+ } else {
+ $plugin_dir = $smarty->ext->_getIncludePath->getIncludePath($_plugin_dir, null, $smarty);
+ }
+
+ if ($plugin_dir !== false) {
+ if ($errors === null) {
+ echo "$plugin_dir is OK.\n";
+ }
+
+ continue;
+ } else {
+ $status = false;
+ $message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+
+ continue;
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: $_plugin_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+
+ continue;
+ }
+ }
+
+ if (!is_dir($plugin_dir)) {
+ $status = false;
+ $message = "FAILED: $plugin_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ } elseif (!is_readable($plugin_dir)) {
+ $status = false;
+ $message = "FAILED: $plugin_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ } elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) {
+ $_core_plugins_available = true;
+ if ($errors === null) {
+ echo "$plugin_dir is OK.\n";
+ }
+ } else {
+ if ($errors === null) {
+ echo "$plugin_dir is OK.\n";
+ }
+ }
+ }
+ if (!$_core_plugins_available) {
+ $status = false;
+ $message = "WARNING: Smarty's own libs/plugins is not available";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } elseif (!isset($errors[ 'plugins_dir' ])) {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ }
+
+ if ($errors === null) {
+ echo "Testing cache directory...\n";
+ }
+
+ // test if all registered cache_dir is accessible
+ $__cache_dir = $smarty->getCacheDir();
+ $_cache_dir = realpath($__cache_dir);
+ if (!$_cache_dir) {
+ $status = false;
+ $message = "FAILED: {$__cache_dir} does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_dir($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_readable($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_writable($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not writable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "{$_cache_dir} is OK.\n";
+ }
+ }
+
+ if ($errors === null) {
+ echo "Testing configs directory...\n";
+ }
+
+ // test if all registered config_dir are accessible
+ foreach ($smarty->getConfigDir() as $config_dir) {
+ $_config_dir = $config_dir;
+ // resolve include_path or fail existence
+ if (!$config_dir) {
+ if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
+ // try PHP include_path
+ if ($_stream_resolve_include_path) {
+ $config_dir = stream_resolve_include_path($_config_dir);
+ } else {
+ $config_dir = $smarty->ext->_getIncludePath->getIncludePath($_config_dir, null, $smarty);
+ }
+
+ if ($config_dir !== false) {
+ if ($errors === null) {
+ echo "$config_dir is OK.\n";
+ }
+
+ continue;
+ } else {
+ $status = false;
+ $message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+
+ continue;
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: $_config_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+
+ continue;
+ }
+ }
+
+ if (!is_dir($config_dir)) {
+ $status = false;
+ $message = "FAILED: $config_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ } elseif (!is_readable($config_dir)) {
+ $status = false;
+ $message = "FAILED: $config_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "$config_dir is OK.\n";
+ }
+ }
+ }
+
+ if ($errors === null) {
+ echo "Testing sysplugin files...\n";
+ }
+ // test if sysplugins are available
+ $source = SMARTY_SYSPLUGINS_DIR;
+ if (is_dir($source)) {
+ $expectedSysplugins = array('smartycompilerexception.php' => true, 'smartyexception.php' => true,
+ 'smarty_cacheresource.php' => true, 'smarty_cacheresource_custom.php' => true,
+ 'smarty_cacheresource_keyvaluestore.php' => true, 'smarty_data.php' => true,
+ 'smarty_internal_block.php' => true,
+ 'smarty_internal_cacheresource_file.php' => true,
+ 'smarty_internal_compilebase.php' => true,
+ 'smarty_internal_compile_append.php' => true,
+ 'smarty_internal_compile_assign.php' => true,
+ 'smarty_internal_compile_block.php' => true,
+ 'smarty_internal_compile_block_child.php' => true,
+ 'smarty_internal_compile_block_parent.php' => true,
+ 'smarty_internal_compile_break.php' => true,
+ 'smarty_internal_compile_call.php' => true,
+ 'smarty_internal_compile_capture.php' => true,
+ 'smarty_internal_compile_config_load.php' => true,
+ 'smarty_internal_compile_continue.php' => true,
+ 'smarty_internal_compile_debug.php' => true,
+ 'smarty_internal_compile_eval.php' => true,
+ 'smarty_internal_compile_extends.php' => true,
+ 'smarty_internal_compile_for.php' => true,
+ 'smarty_internal_compile_foreach.php' => true,
+ 'smarty_internal_compile_function.php' => true,
+ 'smarty_internal_compile_if.php' => true,
+ 'smarty_internal_compile_include.php' => true,
+ 'smarty_internal_compile_include_php.php' => true,
+ 'smarty_internal_compile_insert.php' => true,
+ 'smarty_internal_compile_ldelim.php' => true,
+ 'smarty_internal_compile_make_nocache.php' => true,
+ 'smarty_internal_compile_nocache.php' => true,
+ 'smarty_internal_compile_private_block_plugin.php' => true,
+ 'smarty_internal_compile_private_foreachsection.php' => true,
+ 'smarty_internal_compile_private_function_plugin.php' => true,
+ 'smarty_internal_compile_private_modifier.php' => true,
+ 'smarty_internal_compile_private_object_block_function.php' => true,
+ 'smarty_internal_compile_private_object_function.php' => true,
+ 'smarty_internal_compile_private_php.php' => true,
+ 'smarty_internal_compile_private_print_expression.php' => true,
+ 'smarty_internal_compile_private_registered_block.php' => true,
+ 'smarty_internal_compile_private_registered_function.php' => true,
+ 'smarty_internal_compile_private_special_variable.php' => true,
+ 'smarty_internal_compile_rdelim.php' => true,
+ 'smarty_internal_compile_section.php' => true,
+ 'smarty_internal_compile_setfilter.php' => true,
+ 'smarty_internal_compile_shared_inheritance.php' => true,
+ 'smarty_internal_compile_while.php' => true,
+ 'smarty_internal_configfilelexer.php' => true,
+ 'smarty_internal_configfileparser.php' => true,
+ 'smarty_internal_config_file_compiler.php' => true,
+ 'smarty_internal_data.php' => true, 'smarty_internal_debug.php' => true,
+ 'smarty_internal_extension_handler.php' => true,
+ 'smarty_internal_method_addautoloadfilters.php' => true,
+ 'smarty_internal_method_adddefaultmodifiers.php' => true,
+ 'smarty_internal_method_append.php' => true,
+ 'smarty_internal_method_appendbyref.php' => true,
+ 'smarty_internal_method_assignbyref.php' => true,
+ 'smarty_internal_method_assignglobal.php' => true,
+ 'smarty_internal_method_clearallassign.php' => true,
+ 'smarty_internal_method_clearallcache.php' => true,
+ 'smarty_internal_method_clearassign.php' => true,
+ 'smarty_internal_method_clearcache.php' => true,
+ 'smarty_internal_method_clearcompiledtemplate.php' => true,
+ 'smarty_internal_method_clearconfig.php' => true,
+ 'smarty_internal_method_compileallconfig.php' => true,
+ 'smarty_internal_method_compilealltemplates.php' => true,
+ 'smarty_internal_method_configload.php' => true,
+ 'smarty_internal_method_createdata.php' => true,
+ 'smarty_internal_method_getautoloadfilters.php' => true,
+ 'smarty_internal_method_getconfigvariable.php' => true,
+ 'smarty_internal_method_getconfigvars.php' => true,
+ 'smarty_internal_method_getdebugtemplate.php' => true,
+ 'smarty_internal_method_getdefaultmodifiers.php' => true,
+ 'smarty_internal_method_getglobal.php' => true,
+ 'smarty_internal_method_getregisteredobject.php' => true,
+ 'smarty_internal_method_getstreamvariable.php' => true,
+ 'smarty_internal_method_gettags.php' => true,
+ 'smarty_internal_method_gettemplatevars.php' => true,
+ 'smarty_internal_method_loadfilter.php' => true,
+ 'smarty_internal_method_loadplugin.php' => true,
+ 'smarty_internal_method_mustcompile.php' => true,
+ 'smarty_internal_method_registercacheresource.php' => true,
+ 'smarty_internal_method_registerclass.php' => true,
+ 'smarty_internal_method_registerdefaultconfighandler.php' => true,
+ 'smarty_internal_method_registerdefaultpluginhandler.php' => true,
+ 'smarty_internal_method_registerdefaulttemplatehandler.php' => true,
+ 'smarty_internal_method_registerfilter.php' => true,
+ 'smarty_internal_method_registerobject.php' => true,
+ 'smarty_internal_method_registerplugin.php' => true,
+ 'smarty_internal_method_registerresource.php' => true,
+ 'smarty_internal_method_setautoloadfilters.php' => true,
+ 'smarty_internal_method_setdebugtemplate.php' => true,
+ 'smarty_internal_method_setdefaultmodifiers.php' => true,
+ 'smarty_internal_method_unloadfilter.php' => true,
+ 'smarty_internal_method_unregistercacheresource.php' => true,
+ 'smarty_internal_method_unregisterfilter.php' => true,
+ 'smarty_internal_method_unregisterobject.php' => true,
+ 'smarty_internal_method_unregisterplugin.php' => true,
+ 'smarty_internal_method_unregisterresource.php' => true,
+ 'smarty_internal_nocache_insert.php' => true,
+ 'smarty_internal_parsetree.php' => true,
+ 'smarty_internal_parsetree_code.php' => true,
+ 'smarty_internal_parsetree_dq.php' => true,
+ 'smarty_internal_parsetree_dqcontent.php' => true,
+ 'smarty_internal_parsetree_tag.php' => true,
+ 'smarty_internal_parsetree_template.php' => true,
+ 'smarty_internal_parsetree_text.php' => true,
+ 'smarty_internal_resource_eval.php' => true,
+ 'smarty_internal_resource_extends.php' => true,
+ 'smarty_internal_resource_file.php' => true,
+ 'smarty_internal_resource_php.php' => true,
+ 'smarty_internal_resource_registered.php' => true,
+ 'smarty_internal_resource_stream.php' => true,
+ 'smarty_internal_resource_string.php' => true,
+ 'smarty_internal_runtime_cachemodify.php' => true,
+ 'smarty_internal_runtime_cacheresourcefile.php' => true,
+ 'smarty_internal_runtime_capture.php' => true,
+ 'smarty_internal_runtime_codeframe.php' => true,
+ 'smarty_internal_runtime_filterhandler.php' => true,
+ 'smarty_internal_runtime_foreach.php' => true,
+ 'smarty_internal_runtime_getincludepath.php' => true,
+ 'smarty_internal_runtime_inheritance.php' => true,
+ 'smarty_internal_runtime_make_nocache.php' => true,
+ 'smarty_internal_runtime_tplfunction.php' => true,
+ 'smarty_internal_runtime_updatecache.php' => true,
+ 'smarty_internal_runtime_updatescope.php' => true,
+ 'smarty_internal_runtime_writefile.php' => true,
+ 'smarty_internal_smartytemplatecompiler.php' => true,
+ 'smarty_internal_template.php' => true,
+ 'smarty_internal_templatebase.php' => true,
+ 'smarty_internal_templatecompilerbase.php' => true,
+ 'smarty_internal_templatelexer.php' => true,
+ 'smarty_internal_templateparser.php' => true,
+ 'smarty_internal_testinstall.php' => true,
+ 'smarty_internal_undefined.php' => true, 'smarty_resource.php' => true,
+ 'smarty_resource_custom.php' => true, 'smarty_resource_recompiled.php' => true,
+ 'smarty_resource_uncompiled.php' => true, 'smarty_security.php' => true,
+ 'smarty_template_cached.php' => true, 'smarty_template_compiled.php' => true,
+ 'smarty_template_config.php' => true,
+ 'smarty_template_resource_base.php' => true,
+ 'smarty_template_source.php' => true, 'smarty_undefined_variable.php' => true,
+ 'smarty_variable.php' => true,);
+ $iterator = new DirectoryIterator($source);
+ foreach ($iterator as $file) {
+ if (!$file->isDot()) {
+ $filename = $file->getFilename();
+ if (isset($expectedSysplugins[ $filename ])) {
+ unset($expectedSysplugins[ $filename ]);
+ }
+ }
+ }
+ if ($expectedSysplugins) {
+ $status = false;
+ $message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expectedSysplugins));
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'sysplugins' ] = $message;
+ }
+ } elseif ($errors === null) {
+ echo "... OK\n";
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory';
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'sysplugins_dir_constant' ] = $message;
+ }
+ }
+
+ if ($errors === null) {
+ echo "Testing plugin files...\n";
+ }
+ // test if core plugins are available
+ $source = SMARTY_PLUGINS_DIR;
+ if (is_dir($source)) {
+ $expectedPlugins =
+ array('block.textformat.php' => true, 'function.counter.php' => true, 'function.cycle.php' => true,
+ 'function.fetch.php' => true, 'function.html_checkboxes.php' => true,
+ 'function.html_image.php' => true, 'function.html_options.php' => true,
+ 'function.html_radios.php' => true, 'function.html_select_date.php' => true,
+ 'function.html_select_time.php' => true, 'function.html_table.php' => true,
+ 'function.mailto.php' => true, 'function.math.php' => true, 'modifier.capitalize.php' => true,
+ 'modifier.date_format.php' => true, 'modifier.debug_print_var.php' => true,
+ 'modifier.escape.php' => true, 'modifier.regex_replace.php' => true,
+ 'modifier.replace.php' => true, 'modifier.spacify.php' => true, 'modifier.truncate.php' => true,
+ 'modifiercompiler.cat.php' => true, 'modifiercompiler.count_characters.php' => true,
+ 'modifiercompiler.count_paragraphs.php' => true, 'modifiercompiler.count_sentences.php' => true,
+ 'modifiercompiler.count_words.php' => true, 'modifiercompiler.default.php' => true,
+ 'modifiercompiler.escape.php' => true, 'modifiercompiler.from_charset.php' => true,
+ 'modifiercompiler.indent.php' => true, 'modifiercompiler.lower.php' => true,
+ 'modifiercompiler.noprint.php' => true, 'modifiercompiler.string_format.php' => true,
+ 'modifiercompiler.strip.php' => true, 'modifiercompiler.strip_tags.php' => true,
+ 'modifiercompiler.to_charset.php' => true, 'modifiercompiler.unescape.php' => true,
+ 'modifiercompiler.upper.php' => true, 'modifiercompiler.wordwrap.php' => true,
+ 'outputfilter.trimwhitespace.php' => true, 'shared.escape_special_chars.php' => true,
+ 'shared.literal_compiler_param.php' => true, 'shared.make_timestamp.php' => true,
+ 'shared.mb_str_replace.php' => true, 'shared.mb_unicode.php' => true,
+ 'shared.mb_wordwrap.php' => true, 'variablefilter.htmlspecialchars.php' => true,);
+ $iterator = new DirectoryIterator($source);
+ foreach ($iterator as $file) {
+ if (!$file->isDot()) {
+ $filename = $file->getFilename();
+ if (isset($expectedPlugins[ $filename ])) {
+ unset($expectedPlugins[ $filename ]);
+ }
+ }
+ }
+ if ($expectedPlugins) {
+ $status = false;
+ $message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expectedPlugins));
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins' ] = $message;
+ }
+ } elseif ($errors === null) {
+ echo "... OK\n";
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory';
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir_constant' ] = $message;
+ }
+ }
+
+ if ($errors === null) {
+ echo "Tests complete.\n";
+ echo "</PRE>\n";
+ }
+
+ return $status;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
new file mode 100644
index 000000000..d6f4bf62e
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Smarty Internal Undefined
+ *
+ * Class to handle undefined method calls or calls to obsolete runtime extensions
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Undefined
+{
+
+ /**
+ * Name of undefined extension class
+ *
+ * @var string|null
+ */
+ public $class = null;
+
+ /**
+ * Smarty_Internal_Undefined constructor.
+ *
+ * @param null|string $class name of undefined extension class
+ */
+ public function __construct($class = null)
+ {
+ $this->class = $class;
+ }
+
+ /**
+ * Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $properties special template properties
+ * @param bool $cache flag if called from cache file
+ *
+ * @return bool false
+ */
+ public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
+ {
+ if ($cache) {
+ $tpl->cached->valid = false;
+ } else {
+ $tpl->mustCompile = true;
+ }
+ return false;
+ }
+
+ /**
+ * Call error handler for undefined method
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ if (isset($this->class)) {
+ throw new SmartyException("undefined extension class '{$this->class}'");
+ } else {
+ throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method");
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
new file mode 100644
index 000000000..ea673ead1
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
@@ -0,0 +1,254 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ *
+ * @method renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
+ * @method populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ * @method process(Smarty_Internal_Template $_smarty_tpl)
+ */
+abstract class Smarty_Resource
+{
+ /**
+ * Source is bypassing compiler
+ *
+ * @var boolean
+ */
+ public $uncompiled = false;
+
+ /**
+ * Source must be recompiled on every occasion
+ *
+ * @var boolean
+ */
+ public $recompiled = false;
+
+ /**
+ * resource types provided by the core
+ *
+ * @var array
+ */
+ public static $sysplugins = array('file' => 'smarty_internal_resource_file.php',
+ 'string' => 'smarty_internal_resource_string.php',
+ 'extends' => 'smarty_internal_resource_extends.php',
+ 'stream' => 'smarty_internal_resource_stream.php',
+ 'eval' => 'smarty_internal_resource_eval.php',
+ 'php' => 'smarty_internal_resource_php.php');
+
+ /**
+ * Flag if resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = false;
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ abstract public function getContent(Smarty_Template_Source $source);
+
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ */
+ abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ // intentionally left blank
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ if ($isConfig) {
+ if (!isset($smarty->_joined_config_dir)) {
+ $smarty->getTemplateDir(null, true);
+ }
+ return get_class($this) . '#' . $smarty->_joined_config_dir . '#' . $resource_name;
+ } else {
+ if (!isset($smarty->_joined_template_dir)) {
+ $smarty->getTemplateDir();
+ }
+ return get_class($this) . '#' . $smarty->_joined_template_dir . '#' . $resource_name;
+ }
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return basename(preg_replace('![^\w]+!', '_', $source->name));
+ }
+
+ /**
+ * Load Resource Handler
+ *
+ * @param Smarty $smarty smarty object
+ * @param string $type name of the resource
+ *
+ * @throws SmartyException
+ * @return Smarty_Resource Resource Handler
+ */
+ public static function load(Smarty $smarty, $type)
+ {
+ // try smarty's cache
+ if (isset($smarty->_cache[ 'resource_handlers' ][ $type ])) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ];
+ }
+
+ // try registered resource
+ if (isset($smarty->registered_resources[ $type ])) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] =
+ $smarty->registered_resources[ $type ] instanceof Smarty_Resource ?
+ $smarty->registered_resources[ $type ] : new Smarty_Internal_Resource_Registered();
+ }
+
+ // try sysplugins dir
+ if (isset(self::$sysplugins[ $type ])) {
+ $_resource_class = 'Smarty_Internal_Resource_' . ucfirst($type);
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
+ }
+
+ // try plugins dir
+ $_resource_class = 'Smarty_Resource_' . ucfirst($type);
+ if ($smarty->loadPlugin($_resource_class)) {
+ if (class_exists($_resource_class, false)) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
+ } else {
+ $smarty->registerResource($type,
+ array("smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp",
+ "smarty_resource_{$type}_secure", "smarty_resource_{$type}_trusted"));
+ // give it another try, now that the resource is registered properly
+ return self::load($smarty, $type);
+ }
+ }
+
+ // try streams
+ $_known_stream = stream_get_wrappers();
+ if (in_array($type, $_known_stream)) {
+ // is known stream
+ if (is_object($smarty->security_policy)) {
+ $smarty->security_policy->isTrustedStream($type);
+ }
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new Smarty_Internal_Resource_Stream();
+ }
+
+ // TODO: try default_(template|config)_handler
+
+ // give up
+ throw new SmartyException("Unknown resource type '{$type}'");
+ }
+
+ /**
+ * extract resource_type and resource_name from template_resource and config_resource
+ * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
+ *
+ * @param string $resource_name template_resource or config_resource to parse
+ * @param string $default_resource the default resource_type defined in $smarty
+ *
+ * @return array with parsed resource name and type
+ */
+ public static function parseResourceName($resource_name, $default_resource)
+ {
+ if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) {
+ $type = $match[ 1 ];
+ $name = substr($resource_name, strlen($match[ 0 ]));
+ } else {
+ // no resource given, use default
+ // or single character before the colon is not a resource type, but part of the filepath
+ $type = $default_resource;
+ $name = $resource_name;
+ }
+ return array($name, $type);
+ }
+
+ /**
+ * modify template_resource according to resource handlers specifications
+ *
+ * @param \Smarty_Internal_Template|\Smarty $obj Smarty instance
+ * @param string $template_resource template_resource to extract resource handler and name of
+ *
+ * @return string unique resource name
+ */
+ public static function getUniqueTemplateName($obj, $template_resource)
+ {
+ $smarty = $obj->_getSmartyObj();
+ list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type);
+ // TODO: optimize for Smarty's internal resource types
+ $resource = Smarty_Resource::load($smarty, $type);
+ // go relative to a given template?
+ $_file_is_dotted = $name[ 0 ] == '.' && ($name[ 1 ] == '.' || $name[ 1 ] == '/');
+ if ($obj->_isTplObj() && $_file_is_dotted &&
+ ($obj->source->type == 'file' || $obj->parent->source->type == 'extends')
+ ) {
+ $name = $smarty->_realpath(dirname($obj->parent->source->filepath) . $smarty->ds . $name);
+ }
+ return $resource->buildUniqueResourceName($smarty, $name);
+ }
+
+ /*
+ * Check if resource must check time stamps when when loading complied or cached templates.
+ * Resources like 'extends' which use source components my disable timestamp checks on own resource.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return true;
+ }
+
+ /**
+ * initialize Source Object for given resource
+ * wrapper for backward compatibility to versions < 3.1.22
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return Smarty_Template_Source Source Object
+ */
+ public static function source(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
+ $template_resource = null)
+ {
+ return Smarty_Template_Source::load($_template, $smarty, $template_resource);
+ }
+}
+
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_custom.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
index 619f2d6f0..619f2d6f0 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource_custom.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
new file mode 100644
index 000000000..7e51d1b1d
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins that don't compile cache
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Recompiled extends Smarty_Resource
+{
+ /**
+ * Flag that it's an recompiled resource
+ *
+ * @var bool
+ */
+ public $recompiled = true;
+
+ /**
+ * Resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = true;
+
+ /**
+ * compile template from source
+ *
+ * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl)
+ {
+ $compiled = &$_smarty_tpl->compiled;
+ $compiled->file_dependency = array();
+ $compiled->includes = array();
+ $compiled->nocache_hash = null;
+ $compiled->unifunc = null;
+ $level = ob_get_level();
+ ob_start();
+ $_smarty_tpl->loadCompiler();
+ // call compiler
+ try {
+ eval("?>" . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl));
+ }
+ catch (Exception $e) {
+ unset($_smarty_tpl->compiler);
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ throw $e;
+ }
+ // release compiler object to free memory
+ unset($_smarty_tpl->compiler);
+ ob_get_clean();
+ $compiled->timestamp = time();
+ $compiled->exists = true;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = false;
+ $compiled->timestamp = false;
+ $compiled->exists = false;
+ }
+
+ /*
+ * Disable timestamp checks for recompiled resource.
+ *
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
new file mode 100644
index 000000000..554f3aea3
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ * Base implementation for resource plugins that don't use the compiler
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Uncompiled extends Smarty_Resource
+{
+ /**
+ * Flag that it's an uncompiled resource
+ *
+ * @var bool
+ */
+ public $uncompiled = true;
+
+ /**
+ * Resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = true;
+
+ /**
+ * populate compiled object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = $_template->source->filepath;
+ $compiled->timestamp = $_template->source->timestamp;
+ $compiled->exists = $_template->source->exists;
+ if ($_template->smarty->merge_compiled_includes || $_template->source->handler->checkTimestamps()) {
+ $compiled->file_dependency[ $_template->source->uid ] =
+ array($compiled->filepath, $compiled->timestamp, $_template->source->type,);
+ }
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_security.php b/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
new file mode 100644
index 000000000..4f75f7529
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
@@ -0,0 +1,730 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage Security
+ * @author Uwe Tews
+ */
+
+/*
+ * FIXME: Smarty_Security API
+ * - getter and setter instead of public properties would allow cultivating an internal cache properly
+ * - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir are immutable
+ * the cache is killed every time either of the variables change. That means that two distinct Smarty objects with differing
+ * $template_dir or $config_dir should NOT share the same Smarty_Security instance,
+ * as this would lead to (severe) performance penalty! how should this be handled?
+ */
+
+/**
+ * This class does contain the security settings
+ */
+class Smarty_Security
+{
+ /**
+ * This determines how Smarty handles "<?php ... ?>" tags in templates.
+ * possible values:
+ * <ul>
+ * <li>Smarty::PHP_PASSTHRU -> echo PHP tags as they are</li>
+ * <li>Smarty::PHP_QUOTE -> escape tags as entities</li>
+ * <li>Smarty::PHP_REMOVE -> remove php tags</li>
+ * <li>Smarty::PHP_ALLOW -> execute php tags</li>
+ * </ul>
+ *
+ * @var integer
+ */
+ public $php_handling = Smarty::PHP_PASSTHRU;
+
+ /**
+ * This is the list of template directories that are considered secure.
+ * $template_dir is in this list implicitly.
+ *
+ * @var array
+ */
+ public $secure_dir = array();
+
+ /**
+ * This is an array of directories where trusted php scripts reside.
+ * {@link $security} is disabled during their inclusion/execution.
+ *
+ * @var array
+ */
+ public $trusted_dir = array();
+
+ /**
+ * List of regular expressions (PCRE) that include trusted URIs
+ *
+ * @var array
+ */
+ public $trusted_uri = array();
+
+ /**
+ * List of trusted constants names
+ *
+ * @var array
+ */
+ public $trusted_constants = array();
+
+ /**
+ * This is an array of trusted static classes.
+ * If empty access to all static classes is allowed.
+ * If set to 'none' none is allowed.
+ *
+ * @var array
+ */
+ public $static_classes = array();
+
+ /**
+ * This is an nested array of trusted classes and static methods.
+ * If empty access to all static classes and methods is allowed.
+ * Format:
+ * array (
+ * 'class_1' => array('method_1', 'method_2'), // allowed methods listed
+ * 'class_2' => array(), // all methods of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_methods = array();
+
+ /**
+ * This is an array of trusted static properties.
+ * If empty access to all static classes and properties is allowed.
+ * Format:
+ * array (
+ * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
+ * 'class_2' => array(), // all properties of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_properties = array();
+
+ /**
+ * This is an array of trusted PHP functions.
+ * If empty all functions are allowed.
+ * To disable all PHP functions set $php_functions = null.
+ *
+ * @var array
+ */
+ public $php_functions = array('isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array', 'time',);
+
+ /**
+ * This is an array of trusted PHP modifiers.
+ * If empty all modifiers are allowed.
+ * To disable all modifier set $php_modifiers = null.
+ *
+ * @var array
+ */
+ public $php_modifiers = array('escape', 'count', 'nl2br',);
+
+ /**
+ * This is an array of allowed tags.
+ * If empty no restriction by allowed_tags.
+ *
+ * @var array
+ */
+ public $allowed_tags = array();
+
+ /**
+ * This is an array of disabled tags.
+ * If empty no restriction by disabled_tags.
+ *
+ * @var array
+ */
+ public $disabled_tags = array();
+
+ /**
+ * This is an array of allowed modifier plugins.
+ * If empty no restriction by allowed_modifiers.
+ *
+ * @var array
+ */
+ public $allowed_modifiers = array();
+
+ /**
+ * This is an array of disabled modifier plugins.
+ * If empty no restriction by disabled_modifiers.
+ *
+ * @var array
+ */
+ public $disabled_modifiers = array();
+
+ /**
+ * This is an array of disabled special $smarty variables.
+ *
+ * @var array
+ */
+ public $disabled_special_smarty_vars = array();
+
+ /**
+ * This is an array of trusted streams.
+ * If empty all streams are allowed.
+ * To disable all streams set $streams = null.
+ *
+ * @var array
+ */
+ public $streams = array('file');
+
+ /**
+ * + flag if constants can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_constants = true;
+
+ /**
+ * + flag if super globals can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_super_globals = true;
+
+ /**
+ * max template nesting level
+ *
+ * @var int
+ */
+ public $max_template_nesting = 0;
+
+ /**
+ * current template nesting level
+ *
+ * @var int
+ */
+ private $_current_template_nesting = 0;
+
+ /**
+ * Cache for $resource_dir lookup
+ *
+ * @var array
+ */
+ protected $_resource_dir = array();
+
+ /**
+ * Cache for $template_dir lookup
+ *
+ * @var array
+ */
+ protected $_template_dir = array();
+
+ /**
+ * Cache for $config_dir lookup
+ *
+ * @var array
+ */
+ protected $_config_dir = array();
+
+ /**
+ * Cache for $secure_dir lookup
+ *
+ * @var array
+ */
+ protected $_secure_dir = array();
+
+ /**
+ * Cache for $php_resource_dir lookup
+ *
+ * @var array
+ */
+ protected $_php_resource_dir = null;
+
+ /**
+ * Cache for $trusted_dir lookup
+ *
+ * @var array
+ */
+ protected $_trusted_dir = null;
+
+ /**
+ * Cache for include path status
+ *
+ * @var bool
+ */
+ protected $_include_path_status = false;
+
+ /**
+ * Cache for $_include_array lookup
+ *
+ * @var array
+ */
+ protected $_include_dir = array();
+
+ /**
+ * @param Smarty $smarty
+ */
+ public function __construct($smarty)
+ {
+ $this->smarty = $smarty;
+ $this->smarty->_cache[ 'template_dir_new' ] = true;
+ $this->smarty->_cache[ 'config_dir_new' ] = true;
+ }
+
+ /**
+ * Check if PHP function is trusted.
+ *
+ * @param string $function_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if function is trusted
+ * @throws SmartyCompilerException if php function is not trusted
+ */
+ public function isTrustedPhpFunction($function_name, $compiler)
+ {
+ if (isset($this->php_functions) &&
+ (empty($this->php_functions) || in_array($function_name, $this->php_functions))
+ ) {
+ return true;
+ }
+
+ $compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting");
+
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if static class is trusted.
+ *
+ * @param string $class_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class is trusted
+ * @throws SmartyCompilerException if static class is not trusted
+ */
+ public function isTrustedStaticClass($class_name, $compiler)
+ {
+ if (isset($this->static_classes) &&
+ (empty($this->static_classes) || in_array($class_name, $this->static_classes))
+ ) {
+ return true;
+ }
+
+ $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
+
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if static class method/property is trusted.
+ *
+ * @param string $class_name
+ * @param string $params
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class method is trusted
+ * @throws SmartyCompilerException if static class method is not trusted
+ */
+ public function isTrustedStaticClassAccess($class_name, $params, $compiler)
+ {
+ if (!isset($params[ 2 ])) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if ($params[ 2 ] == 'method') {
+ $allowed = $this->trusted_static_methods;
+ $name = substr($params[ 0 ], 0, strpos($params[ 0 ], '('));
+ } else {
+ $allowed = $this->trusted_static_properties;
+ // strip '$'
+ $name = substr($params[ 0 ], 1);
+ }
+ if (isset($allowed)) {
+ if (empty($allowed)) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if (isset($allowed[ $class_name ]) &&
+ (empty($allowed[ $class_name ]) || in_array($name, $allowed[ $class_name ]))
+ ) {
+ return true;
+ }
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if PHP modifier is trusted.
+ *
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if modifier is trusted
+ * @throws SmartyCompilerException if modifier is not trusted
+ */
+ public function isTrustedPhpModifier($modifier_name, $compiler)
+ {
+ if (isset($this->php_modifiers) &&
+ (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers))
+ ) {
+ return true;
+ }
+
+ $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting");
+
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if tag is trusted.
+ *
+ * @param string $tag_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ * @throws SmartyCompilerException if modifier is not trusted
+ */
+ public function isTrustedTag($tag_name, $compiler)
+ {
+ // check for internal always required tags
+ if (in_array($tag_name,
+ array('assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin',
+ 'private_object_block_function', 'private_object_function', 'private_registered_function',
+ 'private_registered_block', 'private_special_variable', 'private_print_expression',
+ 'private_modifier'))) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_tags)) {
+ if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true);
+ }
+ } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true);
+ }
+
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if special $smarty variable is trusted.
+ *
+ * @param string $var_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ * @throws SmartyCompilerException if modifier is not trusted
+ */
+ public function isTrustedSpecialSmartyVar($var_name, $compiler)
+ {
+ if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("special variable '\$smarty.{$var_name}' not allowed by security setting",
+ null, true);
+ }
+
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if modifier plugin is trusted.
+ *
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ * @throws SmartyCompilerException if modifier is not trusted
+ */
+ public function isTrustedModifier($modifier_name, $compiler)
+ {
+ // check for internal always allowed modifier
+ if (in_array($modifier_name, array('default'))) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_modifiers)) {
+ if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("modifier '{$modifier_name}' disabled by security setting", null,
+ true);
+ }
+ } elseif (in_array($modifier_name, $this->allowed_modifiers) &&
+ !in_array($modifier_name, $this->disabled_modifiers)
+ ) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting", null,
+ true);
+ }
+
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if constants are enabled or trusted
+ *
+ * @param string $const constant name
+ * @param object $compiler compiler object
+ *
+ * @return bool
+ */
+ public function isTrustedConstant($const, $compiler)
+ {
+ if (in_array($const, array('true', 'false', 'null'))) {
+ return true;
+ }
+ if (!empty($this->trusted_constants)) {
+ if (!in_array(strtolower($const), $this->trusted_constants)) {
+ $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
+ return false;
+ }
+ return true;
+ }
+ if ($this->allow_constants) {
+ return true;
+ }
+ $compiler->trigger_template_error("Security: access to constants not permitted");
+ return false;
+ }
+
+ /**
+ * Check if stream is trusted.
+ *
+ * @param string $stream_name
+ *
+ * @return boolean true if stream is trusted
+ * @throws SmartyException if stream is not trusted
+ */
+ public function isTrustedStream($stream_name)
+ {
+ if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
+ return true;
+ }
+
+ throw new SmartyException("stream '{$stream_name}' not allowed by security setting");
+ }
+
+ /**
+ * Check if directory of file resource is trusted.
+ *
+ * @param string $filepath
+ * @param null|bool $isConfig
+ *
+ * @return bool true if directory is trusted
+ * @throws \SmartyException if directory is not trusted
+ */
+ public function isTrustedResourceDir($filepath, $isConfig = null)
+ {
+ if ($this->_include_path_status !== $this->smarty->use_include_path) {
+ foreach ($this->_include_dir as $directory) {
+ unset($this->_resource_dir[ $directory ]);
+ }
+ if ($this->smarty->use_include_path) {
+ $this->_include_dir = array();
+ $_dirs = $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty);
+ foreach ($_dirs as $directory) {
+ $this->_include_dir[] = $directory;
+ $this->_resource_dir[ $directory ] = true;
+ }
+ }
+ $this->_include_path_status = $this->smarty->use_include_path;
+ }
+ if ($isConfig !== true &&
+ (!isset($this->smarty->_cache[ 'template_dir_new' ]) || $this->smarty->_cache[ 'template_dir_new' ])
+ ) {
+ $_dir = $this->smarty->getTemplateDir();
+ if ($this->_template_dir !== $_dir) {
+ foreach ($this->_template_dir as $directory) {
+ unset($this->_resource_dir[ $directory ]);
+ }
+ foreach ($_dir as $directory) {
+ $this->_resource_dir[ $directory ] = true;
+ }
+ $this->_template_dir = $_dir;
+ }
+ $this->smarty->_cache[ 'template_dir_new' ] = false;
+ }
+ if ($isConfig !== false &&
+ (!isset($this->smarty->_cache[ 'config_dir_new' ]) || $this->smarty->_cache[ 'config_dir_new' ])
+ ) {
+ $_dir = $this->smarty->getConfigDir();
+ if ($this->_config_dir !== $_dir) {
+ foreach ($this->_config_dir as $directory) {
+ unset($this->_resource_dir[ $directory ]);
+ }
+ foreach ($_dir as $directory) {
+ $this->_resource_dir[ $directory ] = true;
+ }
+ $this->_config_dir = $_dir;
+ }
+ $this->smarty->_cache[ 'config_dir_new' ] = false;
+ }
+ if ($this->_secure_dir !== (array) $this->secure_dir) {
+ foreach ($this->_secure_dir as $directory) {
+ unset($this->_resource_dir[ $directory ]);
+ }
+ foreach ((array) $this->secure_dir as $directory) {
+ $directory = $this->smarty->_realpath($directory . DIRECTORY_SEPARATOR, true);
+ $this->_resource_dir[ $directory ] = true;
+ }
+ $this->_secure_dir = (array) $this->secure_dir;
+ }
+ $this->_resource_dir = $this->_checkDir($filepath, $this->_resource_dir);
+ return true;
+ }
+
+ /**
+ * Check if URI (e.g. {fetch} or {html_image}) is trusted
+ * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
+ * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
+ * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
+ *
+ * @param string $uri
+ *
+ * @return boolean true if URI is trusted
+ * @throws SmartyException if URI is not trusted
+ * @uses $trusted_uri for list of patterns to match against $uri
+ */
+ public function isTrustedUri($uri)
+ {
+ $_uri = parse_url($uri);
+ if (!empty($_uri[ 'scheme' ]) && !empty($_uri[ 'host' ])) {
+ $_uri = $_uri[ 'scheme' ] . '://' . $_uri[ 'host' ];
+ foreach ($this->trusted_uri as $pattern) {
+ if (preg_match($pattern, $_uri)) {
+ return true;
+ }
+ }
+ }
+
+ throw new SmartyException("URI '{$uri}' not allowed by security setting");
+ }
+
+ /**
+ * Check if directory of file resource is trusted.
+ *
+ * @param string $filepath
+ *
+ * @return boolean true if directory is trusted
+ * @throws SmartyException if PHP directory is not trusted
+ */
+ public function isTrustedPHPDir($filepath)
+ {
+ if (empty($this->trusted_dir)) {
+ throw new SmartyException("directory '{$filepath}' not allowed by security setting (no trusted_dir specified)");
+ }
+
+ // check if index is outdated
+ if (!$this->_trusted_dir || $this->_trusted_dir !== $this->trusted_dir) {
+ $this->_php_resource_dir = array();
+
+ $this->_trusted_dir = $this->trusted_dir;
+ foreach ((array) $this->trusted_dir as $directory) {
+ $directory = $this->smarty->_realpath($directory . DIRECTORY_SEPARATOR, true);
+ $this->_php_resource_dir[ $directory ] = true;
+ }
+ }
+
+ $this->_php_resource_dir =
+ $this->_checkDir($this->smarty->_realpath($filepath, true), $this->_php_resource_dir);
+ return true;
+ }
+
+ /**
+ * Check if file is inside a valid directory
+ *
+ * @param string $filepath
+ * @param array $dirs valid directories
+ *
+ * @return array
+ * @throws \SmartyException
+ */
+ private function _checkDir($filepath, $dirs)
+ {
+ $directory = dirname($filepath) . DIRECTORY_SEPARATOR;
+ $_directory = array();
+ while (true) {
+ // remember the directory to add it to _resource_dir in case we're successful
+ $_directory[ $directory ] = true;
+ // test if the directory is trusted
+ if (isset($dirs[ $directory ])) {
+ // merge sub directories of current $directory into _resource_dir to speed up subsequent lookup
+ $dirs = array_merge($dirs, $_directory);
+
+ return $dirs;
+ }
+ // abort if we've reached root
+ if (!preg_match('#[\\\/][^\\\/]+[\\\/]$#', $directory)) {
+ break;
+ }
+ // bubble up one level
+ $directory = preg_replace('#[\\\/][^\\\/]+[\\\/]$#', DIRECTORY_SEPARATOR, $directory);
+ }
+
+ // give up
+ throw new SmartyException("directory '{$filepath}' not allowed by security setting");
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param \Smarty $smarty
+ * @param string|Smarty_Security $security_class if a string is used, it must be class-name
+ *
+ * @return \Smarty current Smarty instance for chaining
+ * @throws \SmartyException when an invalid class name is provided
+ */
+ public static function enableSecurity(Smarty $smarty, $security_class)
+ {
+ if ($security_class instanceof Smarty_Security) {
+ $smarty->security_policy = $security_class;
+ return;
+ } elseif (is_object($security_class)) {
+ throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security.");
+ }
+ if ($security_class == null) {
+ $security_class = $smarty->security_class;
+ }
+ if (!class_exists($security_class)) {
+ throw new SmartyException("Security class '$security_class' is not defined");
+ } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) {
+ throw new SmartyException("Class '$security_class' must extend Smarty_Security.");
+ } else {
+ $smarty->security_policy = new $security_class($smarty);
+ }
+ return;
+ }
+ /**
+ * Start template processing
+ *
+ * @param $template
+ *
+ * @throws SmartyException
+ */
+ public function startTemplate($template)
+ {
+ if ($this->max_template_nesting > 0 && $this->_current_template_nesting ++ >= $this->max_template_nesting) {
+ throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
+ }
+ }
+
+ /**
+ * Exit template processing
+ *
+ */
+ public function endTemplate()
+ {
+ if ($this->max_template_nesting > 0) {
+ $this->_current_template_nesting --;
+ }
+ }
+
+ /**
+ * Register callback functions call at start/end of template rendering
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function registerCallBacks(Smarty_Internal_Template $template)
+ {
+ $template->startRenderCallbacks[] = array($this, 'startTemplate');
+ $template->endRenderCallbacks[] = array($this, 'endTemplate');
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
new file mode 100644
index 000000000..58f0daf28
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
@@ -0,0 +1,256 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Uwe Tews
+ * Date: 04.12.2014
+ * Time: 06:08
+ */
+
+/**
+ * Smarty Resource Data Object
+ * Cache Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+class Smarty_Template_Cached extends Smarty_Template_Resource_Base
+{
+ /**
+ * Cache Is Valid
+ *
+ * @var boolean
+ */
+ public $valid = null;
+
+ /**
+ * CacheResource Handler
+ *
+ * @var Smarty_CacheResource
+ */
+ public $handler = null;
+
+ /**
+ * Template Cache Id (Smarty_Internal_Template::$cache_id)
+ *
+ * @var string
+ */
+ public $cache_id = null;
+
+ /**
+ * saved cache lifetime in seconds
+ *
+ * @var integer
+ */
+ public $cache_lifetime = 0;
+
+ /**
+ * Id for cache locking
+ *
+ * @var string
+ */
+ public $lock_id = null;
+
+ /**
+ * flag that cache is locked by this instance
+ *
+ * @var bool
+ */
+ public $is_locked = false;
+
+ /**
+ * Source Object
+ *
+ * @var Smarty_Template_Source
+ */
+ public $source = null;
+
+ /**
+ * Nocache hash codes of processed compiled templates
+ *
+ * @var array
+ */
+ public $hashes = array();
+
+ /**
+ * Flag if this is a cache resource
+ *
+ * @var bool
+ */
+ public $isCache = true;
+
+ /**
+ * create Cached Object container
+ *
+ * @param Smarty_Internal_Template $_template template object
+ */
+ public function __construct(Smarty_Internal_Template $_template)
+ {
+ $this->compile_id = $_template->compile_id;
+ $this->cache_id = $_template->cache_id;
+ $this->source = $_template->source;
+ if (!class_exists('Smarty_CacheResource', false)) {
+ require SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
+ }
+ $this->handler = Smarty_CacheResource::load($_template->smarty);
+ }
+
+ /**
+ * @param Smarty_Internal_Template $_template
+ *
+ * @return Smarty_Template_Cached
+ */
+ static function load(Smarty_Internal_Template $_template)
+ {
+ $_template->cached = new Smarty_Template_Cached($_template);
+ $_template->cached->handler->populate($_template->cached, $_template);
+ // caching enabled ?
+ if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT ||
+ $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->handler->recompiled
+ ) {
+ $_template->cached->valid = false;
+ }
+ return $_template->cached;
+ }
+
+ /**
+ * Render cache template
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Exception
+ */
+ public function render(Smarty_Internal_Template $_template, $no_output_filter = true)
+ {
+ if ($this->isCached($_template)) {
+ if ($_template->smarty->debugging) {
+ if (!isset($_template->smarty->_debug)) {
+ $_template->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $_template->smarty->_debug->start_cache($_template);
+ }
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ $this->getRenderedTemplateCode($_template);
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_cache($_template);
+ }
+ return;
+ } else {
+ $_template->smarty->ext->_updateCache->updateCache($this, $_template, $no_output_filter);
+ }
+ }
+
+ /**
+ * Check if cache is valid, lock cache if required
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @return bool flag true if cache is valid
+ */
+ public function isCached(Smarty_Internal_Template $_template)
+ {
+ if ($this->valid !== null) {
+ return $this->valid;
+ }
+ while (true) {
+ while (true) {
+ if ($this->exists === false || $_template->smarty->force_compile || $_template->smarty->force_cache) {
+ $this->valid = false;
+ } else {
+ $this->valid = true;
+ }
+ if ($this->valid && $_template->caching == Smarty::CACHING_LIFETIME_CURRENT &&
+ $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)
+ ) {
+ // lifetime expired
+ $this->valid = false;
+ }
+ if ($this->valid && $_template->smarty->compile_check == 1 &&
+ $_template->source->getTimeStamp() > $this->timestamp
+ ) {
+ $this->valid = false;
+ }
+ if ($this->valid || !$_template->smarty->cache_locking) {
+ break;
+ }
+ if (!$this->handler->locked($_template->smarty, $this)) {
+ $this->handler->acquireLock($_template->smarty, $this);
+ break 2;
+ }
+ $this->handler->populate($this, $_template);
+ }
+ if ($this->valid) {
+ if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) {
+ // load cache file for the following checks
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->start_cache($_template);
+ }
+ if ($this->handler->process($_template, $this) === false) {
+ $this->valid = false;
+ } else {
+ $this->processed = true;
+ }
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_cache($_template);
+ }
+ } else {
+ $this->is_locked = true;
+ continue;
+ }
+ } else {
+ return $this->valid;
+ }
+ if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED &&
+ $_template->cached->cache_lifetime >= 0 &&
+ (time() > ($_template->cached->timestamp + $_template->cached->cache_lifetime))
+ ) {
+ $this->valid = false;
+ }
+ if ($_template->smarty->cache_locking) {
+ if (!$this->valid) {
+ $this->handler->acquireLock($_template->smarty, $this);
+ } elseif ($this->is_locked) {
+ $this->handler->releaseLock($_template->smarty, $this);
+ }
+ }
+ return $this->valid;
+ }
+ return $this->valid;
+ }
+
+ /**
+ * Process cached template
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param bool $update flag if called because cache update
+ */
+ public function process(Smarty_Internal_Template $_template, $update = false)
+ {
+ if ($this->handler->process($_template, $this, $update) === false) {
+ $this->valid = false;
+ }
+ if ($this->valid) {
+ $this->processed = true;
+ } else {
+ $this->processed = false;
+ }
+ }
+
+ /**
+ * Read cache content from handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function read(Smarty_Internal_Template $_template)
+ {
+ if (!$_template->source->handler->recompiled) {
+ return $this->handler->readCachedContent($_template);
+ }
+ return false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
new file mode 100644
index 000000000..18f9d562c
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
@@ -0,0 +1,255 @@
+<?php
+
+/**
+ * Smarty Resource Data Object
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ * @property string $content compiled content
+ */
+class Smarty_Template_Compiled extends Smarty_Template_Resource_Base
+{
+
+ /**
+ * nocache hash
+ *
+ * @var string|null
+ */
+ public $nocache_hash = null;
+
+ /**
+ * get a Compiled Object of this source
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return Smarty_Template_Compiled compiled object
+ */
+ static function load($_template)
+ {
+ $compiled = new Smarty_Template_Compiled();
+ if ($_template->source->handler->hasCompiledHandler) {
+ $_template->source->handler->populateCompiledFilepath($compiled, $_template);
+ } else {
+ $compiled->populateCompiledFilepath($_template);
+ }
+ return $compiled;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Smarty_Internal_Template $_template template object
+ **/
+ public function populateCompiledFilepath(Smarty_Internal_Template $_template)
+ {
+ $source = &$_template->source;
+ $smarty = &$_template->smarty;
+ $this->filepath = $smarty->getCompileDir();
+ if (isset($_template->compile_id)) {
+ $this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) .
+ ($smarty->use_sub_dirs ? $smarty->ds : '^');
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $this->filepath .= $source->uid[ 0 ] . $source->uid[ 1 ] . $smarty->ds . $source->uid[ 2 ] .
+ $source->uid[ 3 ] . $smarty->ds . $source->uid[ 4 ] . $source->uid[ 5 ] . $smarty->ds;
+ }
+ $this->filepath .= $source->uid . '_';
+ if ($source->isConfig) {
+ $this->filepath .= (int) $smarty->config_read_hidden + (int) $smarty->config_booleanize * 2 +
+ (int) $smarty->config_overwrite * 4;
+ } else {
+ $this->filepath .= (int) $smarty->merge_compiled_includes + (int) $smarty->escape_html * 2 +
+ (($smarty->merge_compiled_includes && $source->type === 'extends') ?
+ (int) $smarty->extends_recursion * 4 : 0);
+ }
+ $this->filepath .= '.' . $source->type;
+ $basename = $source->handler->getBasename($source);
+ if (!empty($basename)) {
+ $this->filepath .= '.' . $basename;
+ }
+ if ($_template->caching) {
+ $this->filepath .= '.cache';
+ }
+ $this->filepath .= '.php';
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ }
+
+ /**
+ * load compiled template or compile from source
+ *
+ * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl)
+ {
+ $source = &$_smarty_tpl->source;
+ $smarty = &$_smarty_tpl->smarty;
+ if ($source->handler->recompiled) {
+ $source->handler->process($_smarty_tpl);
+ } elseif (!$source->handler->uncompiled) {
+ if (!$this->exists || $smarty->force_compile ||
+ ($smarty->compile_check && $source->getTimeStamp() > $this->getTimeStamp())
+ ) {
+ $this->compileTemplateSource($_smarty_tpl);
+ $compileCheck = $smarty->compile_check;
+ $smarty->compile_check = false;
+ $this->loadCompiledTemplate($_smarty_tpl);
+ $smarty->compile_check = $compileCheck;
+ } else {
+ $_smarty_tpl->mustCompile = true;
+ @include($this->filepath);
+ if ($_smarty_tpl->mustCompile) {
+ $this->compileTemplateSource($_smarty_tpl);
+ $compileCheck = $smarty->compile_check;
+ $smarty->compile_check = false;
+ $this->loadCompiledTemplate($_smarty_tpl);
+ $smarty->compile_check = $compileCheck;
+ }
+ }
+ $_smarty_tpl->_subTemplateRegister();
+ $this->processed = true;
+ }
+ }
+
+ /**
+ * Load fresh compiled template by including the PHP file
+ * HHVM requires a work around because of a PHP incompatibility
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ */
+ private function loadCompiledTemplate(Smarty_Internal_Template $_smarty_tpl)
+ {
+ if (function_exists('opcache_invalidate') && strlen(ini_get("opcache.restrict_api")) < 1) {
+ opcache_invalidate($this->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($this->filepath);
+ }
+ if (defined('HHVM_VERSION')) {
+ eval("?>" . file_get_contents($this->filepath));
+ } else {
+ include($this->filepath);
+ }
+ }
+
+ /**
+ * render compiled template code
+ *
+ * @param Smarty_Internal_Template $_template
+ *
+ * @return string
+ * @throws Exception
+ */
+ public function render(Smarty_Internal_Template $_template)
+ {
+ // checks if template exists
+ if (!$_template->source->exists) {
+ $type = $_template->source->isConfig ? 'config' : 'template';
+ throw new SmartyException("Unable to load {$type} '{$_template->source->type}:{$_template->source->name}'");
+ }
+ if ($_template->smarty->debugging) {
+ if (!isset($_template->smarty->_debug)) {
+ $_template->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $_template->smarty->_debug->start_render($_template);
+ }
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ if (isset($_template->cached)) {
+ $_template->cached->file_dependency =
+ array_merge($_template->cached->file_dependency, $this->file_dependency);
+ }
+ if ($_template->source->handler->uncompiled) {
+ $_template->source->handler->renderUncompiled($_template->source, $_template);
+ } else {
+ $this->getRenderedTemplateCode($_template);
+ }
+ if ($_template->caching && $this->has_nocache_code) {
+ $_template->cached->hashes[ $this->nocache_hash ] = true;
+ }
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_render($_template);
+ }
+ }
+
+ /**
+ * compile template from source
+ *
+ * @param Smarty_Internal_Template $_template
+ *
+ * @throws Exception
+ */
+ public function compileTemplateSource(Smarty_Internal_Template $_template)
+ {
+ $this->file_dependency = array();
+ $this->includes = array();
+ $this->nocache_hash = null;
+ $this->unifunc = null;
+ // compile locking
+ $saved_timestamp = $_template->source->handler->recompiled ? false : $this->getTimeStamp();
+ if ($saved_timestamp) {
+ touch($this->filepath);
+ }
+ // compile locking
+ try {
+ // call compiler
+ $_template->loadCompiler();
+ $this->write($_template, $_template->compiler->compileTemplate($_template));
+ }
+ catch (Exception $e) {
+ // restore old timestamp in case of error
+ if ($saved_timestamp) {
+ touch($this->filepath, $saved_timestamp);
+ }
+ unset($_template->compiler);
+ throw $e;
+ }
+ // release compiler object to free memory
+ unset($_template->compiler);
+ }
+
+ /**
+ * Write compiled code by handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $code compiled code
+ *
+ * @return boolean success
+ */
+ public function write(Smarty_Internal_Template $_template, $code)
+ {
+ if (!$_template->source->handler->recompiled) {
+ if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) {
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Read compiled content from handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ public function read(Smarty_Internal_Template $_template)
+ {
+ if (!$_template->source->handler->recompiled) {
+ return file_get_contents($this->filepath);
+ }
+ return isset($this->content) ? $this->content : false;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
new file mode 100644
index 000000000..44cdba6fd
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Smarty Config Source Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Config Resource Data Object
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ *
+ */
+class Smarty_Template_Config extends Smarty_Template_Source
+{
+ /**
+ * array of section names, single section or null
+ *
+ * @var null|string|array
+ */
+ public $config_sections = null;
+
+ /**
+ * scope into which the config variables shall be loaded
+ *
+ * @var int
+ */
+ public $scope = 0;
+
+ /**
+ * Flag that source is a config file
+ *
+ * @var bool
+ */
+ public $isConfig = true;
+
+ /**
+ * Name of the Class to compile this resource's contents with
+ *
+ * @var string
+ */
+ public $compiler_class = 'Smarty_Internal_Config_File_Compiler';
+
+ /**
+ * Name of the Class to tokenize this resource's contents with
+ *
+ * @var string
+ */
+ public $template_lexer_class = 'Smarty_Internal_Configfilelexer';
+
+ /**
+ * Name of the Class to parse this resource's contents with
+ *
+ * @var string
+ */
+ public $template_parser_class = 'Smarty_Internal_Configfileparser';
+
+ /**
+ * initialize Source Object for given resource
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return Smarty_Template_Config Source Object
+ * @throws SmartyException
+ */
+ public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
+ $template_resource = null)
+ {
+ static $_incompatible_resources = array('extends' => true, 'php' => true);
+ if ($_template) {
+ $smarty = $_template->smarty;
+ $template_resource = $_template->template_resource;
+ }
+ if (empty($template_resource)) {
+ throw new SmartyException('Source: Missing name');
+ }
+ // parse resource_name, load resource handler
+ list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type);
+ // make sure configs are not loaded via anything smarty can't handle
+ if (isset($_incompatible_resources[ $type ])) {
+ throw new SmartyException ("Unable to use resource '{$type}' for config");
+ }
+ $source = new Smarty_Template_Config($smarty, $template_resource, $type, $name);
+ $source->handler->populate($source, $_template);
+ if (!$source->exists && isset($smarty->default_config_handler_func)) {
+ Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
+ $source->handler->populate($source, $_template);
+ }
+ return $source;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
new file mode 100644
index 000000000..6cc008a10
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
@@ -0,0 +1,158 @@
+<?php
+
+/**
+ * Smarty Template Resource Base Object
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+abstract class Smarty_Template_Resource_Base
+{
+ /**
+ * Compiled Filepath
+ *
+ * @var string
+ */
+ public $filepath = null;
+
+ /**
+ * Compiled Timestamp
+ *
+ * @var integer|bool
+ */
+ public $timestamp = false;
+
+ /**
+ * Compiled Existence
+ *
+ * @var boolean
+ */
+ public $exists = false;
+
+ /**
+ * Template Compile Id (Smarty_Internal_Template::$compile_id)
+ *
+ * @var string
+ */
+ public $compile_id = null;
+
+ /**
+ * Compiled Content Loaded
+ *
+ * @var boolean
+ */
+ public $processed = false;
+
+ /**
+ * unique function name for compiled template code
+ *
+ * @var string
+ */
+ public $unifunc = '';
+
+ /**
+ * flag if template does contain nocache code sections
+ *
+ * @var bool
+ */
+ public $has_nocache_code = false;
+
+ /**
+ * resource file dependency
+ *
+ * @var array
+ */
+ public $file_dependency = array();
+
+ /**
+ * Content buffer
+ *
+ * @var string
+ */
+ public $content = null;
+
+ /**
+ * required plugins
+ *
+ * @var array
+ */
+ public $required_plugins = array();
+
+ /**
+ * Included subtemplates
+ *
+ * @var array
+ */
+ public $includes = array();
+
+ /**
+ * Flag if this is a cache resource
+ *
+ * @var bool
+ */
+ public $isCache = false;
+
+ /**
+ * Process resource
+ *
+ * @param Smarty_Internal_Template $_template template object
+ */
+ abstract public function process(Smarty_Internal_Template $_template);
+
+ /**
+ * get rendered template content by calling compiled or cached template code
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param string $unifunc function with template code
+ *
+ * @throws \Exception
+ */
+ public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null)
+ {
+ $smarty = &$_template->smarty;
+ $_template->isRenderingCache = $this->isCache;
+ $level = ob_get_level();
+ try {
+ if (!isset($unifunc)) {
+ $unifunc = $this->unifunc;
+ }
+ if (empty($unifunc) || !function_exists($unifunc)) {
+ throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
+ }
+ if ($_template->startRenderCallbacks) {
+ foreach ($_template->startRenderCallbacks as $callback) {
+ call_user_func($callback, $_template);
+ }
+ }
+ $unifunc($_template);
+ foreach ($_template->endRenderCallbacks as $callback) {
+ call_user_func($callback, $_template);
+ }
+ $_template->isRenderingCache = false;
+ }
+ catch (Exception $e) {
+ $_template->isRenderingCache = false;
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ if (isset($smarty->security_policy)) {
+ $smarty->security_policy->endTemplate();
+ }
+ throw $e;
+ }
+ }
+
+ /**
+ * Get compiled time stamp
+ *
+ * @return int
+ */
+ public function getTimeStamp()
+ {
+ if ($this->exists && !$this->timestamp) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ return $this->timestamp;
+ }
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
new file mode 100644
index 000000000..fdb3deaa8
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
@@ -0,0 +1,210 @@
+<?php
+
+/**
+ * Smarty Resource Data Object
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ *
+ */
+class Smarty_Template_Source
+{
+ /**
+ * Unique Template ID
+ *
+ * @var string
+ */
+ public $uid = null;
+
+ /**
+ * Template Resource (Smarty_Internal_Template::$template_resource)
+ *
+ * @var string
+ */
+ public $resource = null;
+
+ /**
+ * Resource Type
+ *
+ * @var string
+ */
+ public $type = null;
+
+ /**
+ * Resource Name
+ *
+ * @var string
+ */
+ public $name = null;
+
+ /**
+ * Source Filepath
+ *
+ * @var string
+ */
+ public $filepath = null;
+
+ /**
+ * Source Timestamp
+ *
+ * @var integer
+ */
+ public $timestamp = null;
+
+ /**
+ * Source Existence
+ *
+ * @var boolean
+ */
+ public $exists = false;
+
+ /**
+ * Source File Base name
+ *
+ * @var string
+ */
+ public $basename = null;
+
+ /**
+ * The Components an extended template is made of
+ *
+ * @var \Smarty_Template_Source[]
+ */
+ public $components = null;
+
+ /**
+ * Resource Handler
+ *
+ * @var \Smarty_Resource
+ */
+ public $handler = null;
+
+ /**
+ * Smarty instance
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * Resource is source
+ *
+ * @var bool
+ */
+ public $isConfig = false;
+
+ /**
+ * Template source content eventually set by default handler
+ *
+ * @var string
+ */
+ public $content = null;
+
+ /**
+ * Name of the Class to compile this resource's contents with
+ *
+ * @var string
+ */
+ public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
+
+ /**
+ * Name of the Class to tokenize this resource's contents with
+ *
+ * @var string
+ */
+ public $template_lexer_class = 'Smarty_Internal_Templatelexer';
+
+ /**
+ * Name of the Class to parse this resource's contents with
+ *
+ * @var string
+ */
+ public $template_parser_class = 'Smarty_Internal_Templateparser';
+
+ /**
+ * create Source Object container
+ *
+ * @param Smarty_Resource $handler Resource Handler this source object communicates with
+ * @param Smarty $smarty Smarty instance this source object belongs to
+ * @param string $resource full template_resource
+ * @param string $type type of resource
+ * @param string $name resource name
+ *
+ */
+ public function __construct(Smarty $smarty, $resource, $type, $name)
+ {
+ $this->handler =
+ isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] :
+ Smarty_Resource::load($smarty, $type);
+ $this->smarty = $smarty;
+ $this->resource = $resource;
+ $this->type = $type;
+ $this->name = $name;
+ }
+
+ /**
+ * initialize Source Object for given resource
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return Smarty_Template_Source Source Object
+ * @throws SmartyException
+ */
+ public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null,
+ $template_resource = null)
+ {
+ if ($_template) {
+ $smarty = $_template->smarty;
+ $template_resource = $_template->template_resource;
+ }
+ if (empty($template_resource)) {
+ throw new SmartyException('Source: Missing name');
+ }
+ // parse resource_name, load resource handler, identify unique resource name
+ if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) {
+ $type = $match[ 1 ];
+ $name = $match[ 2 ];
+ } else {
+ // no resource given, use default
+ // or single character before the colon is not a resource type, but part of the filepath
+ $type = $smarty->default_resource_type;
+ $name = $template_resource;
+ }
+ // create new source object
+ $source = new Smarty_Template_Source($smarty, $template_resource, $type, $name);
+ $source->handler->populate($source, $_template);
+ if (!$source->exists && isset($_template->smarty->default_template_handler_func)) {
+ Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
+ $source->handler->populate($source, $_template);
+ }
+ return $source;
+ }
+
+ /**
+ * Get source time stamp
+ *
+ * @return int
+ */
+ public function getTimeStamp()
+ {
+ if (!isset($this->timestamp)) {
+ $this->handler->populateTimestamp($this);
+ }
+ return $this->timestamp;
+ }
+
+ /**
+ * Get source content
+ *
+ * @return string
+ */
+ public function getContent()
+ {
+ return isset($this->content) ? $this->content : $this->handler->getContent($this);
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_undefined_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
index 88bc6f68c..88bc6f68c 100644
--- a/library/Smarty/libs/sysplugins/smarty_undefined_variable.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php b/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
new file mode 100644
index 000000000..0b17bc7cf
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_variable.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * class for the Smarty variable object
+ * This class defines the Smarty variable object
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+class Smarty_Variable
+{
+ /**
+ * template variable
+ *
+ * @var mixed
+ */
+ public $value = null;
+
+ /**
+ * if true any output of this variable will be not cached
+ *
+ * @var boolean
+ */
+ public $nocache = false;
+
+ /**
+ * create Smarty variable object
+ *
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ */
+ public function __construct($value = null, $nocache = false)
+ {
+ $this->value = $value;
+ $this->nocache = $nocache;
+ }
+
+ /**
+ * <<magic>> String conversion
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return (string) $this->value;
+ }
+}
+
diff --git a/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
new file mode 100644
index 000000000..763bab159
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Smarty compiler exception class
+ *
+ * @package Smarty
+ */
+class SmartyCompilerException extends SmartyException
+{
+ public function __toString()
+ {
+ return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
+ }
+
+ /**
+ * The line number of the template error
+ *
+ * @type int|null
+ */
+ public $line = null;
+
+ /**
+ * The template source snippet relating to the error
+ *
+ * @type string|null
+ */
+ public $source = null;
+
+ /**
+ * The raw text of the error message
+ *
+ * @type string|null
+ */
+ public $desc = null;
+
+ /**
+ * The resource identifier or template name
+ *
+ * @type string|null
+ */
+ public $template = null;
+}
diff --git a/vendor/smarty/smarty/libs/sysplugins/smartyexception.php b/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
new file mode 100644
index 000000000..431d8f8e9
--- /dev/null
+++ b/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * Smarty exception class
+ *
+ * @package Smarty
+ */
+class SmartyException extends Exception
+{
+ public static $escape = false;
+
+ public function __toString()
+ {
+ return ' --> Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- ';
+ }
+}
diff --git a/view/css/conversation.css b/view/css/conversation.css
index 77a600deb..f7ab3dcdd 100644
--- a/view/css/conversation.css
+++ b/view/css/conversation.css
@@ -286,7 +286,6 @@ img.smiley.emoji:hover {
height: 32px;
}
-
.checklist input {
margin: 0px;
vertical-align: middle;
@@ -296,6 +295,15 @@ img.smiley.emoji:hover {
padding: 15px;
}
+.view-summary {
+ margin-bottom: 1rem;
+}
+
+.view-article {
+ margin-top: 1rem;
+}
+
+
#filer_save {
margin-left: 15px;
}
diff --git a/view/css/mod_admin.css b/view/css/mod_admin.css
index 409744402..5e22fc90c 100644
--- a/view/css/mod_admin.css
+++ b/view/css/mod_admin.css
@@ -70,3 +70,21 @@
margin-top: 0px !important;
margin-left: 0px !important;
}
+
+pre code {
+ background: #F5F5F5;
+ font-family: Courier, monospace;
+ font-size: 1em;
+ padding: 1em 1.5em;
+ display: block;
+ white-space: pre-wrap;
+}
+
+code {
+ background: #F5F5F5;
+ font-family: Courier, monospace;
+ font-size: 1em;
+ display: inline;
+ padding: 0.2em 0.2em;
+ white-space: pre-wrap;
+} \ No newline at end of file
diff --git a/view/css/mod_connections.css b/view/css/mod_connections.css
index 00e6e2a70..4c26193b4 100644
--- a/view/css/mod_connections.css
+++ b/view/css/mod_connections.css
@@ -36,4 +36,10 @@
.connphone {
color: green;
-} \ No newline at end of file
+}
+
+.contact-photo-wrapper .oneway-overlay {
+ margin-top: -25px;
+ margin-left: 53px;
+ font-size: 20px;
+}
diff --git a/view/css/mod_profile_photo.css b/view/css/mod_profile_photo.css
index 5540b5fae..1b7e15194 100644
--- a/view/css/mod_profile_photo.css
+++ b/view/css/mod_profile_photo.css
@@ -9,4 +9,12 @@
#profile-photo-submit-wrapper {
clear: both;
-} \ No newline at end of file
+}
+
+#profile-photo-wrapper {
+ height: 300px;
+ width: 300px;
+ max-width: 300px;
+ max-height: 300px;
+ overflow: hidden;
+}
diff --git a/view/css/mod_viewconnections.css b/view/css/mod_viewconnections.css
index 56add4cac..1b0c7ab62 100644
--- a/view/css/mod_viewconnections.css
+++ b/view/css/mod_viewconnections.css
@@ -31,3 +31,9 @@
.contact-entry-end {
clear: both;
}
+
+.contact-entry-photo-wrapper .oneway-overlay {
+ margin-top: 25px;
+ margin-left: -25px;
+ font-size: 20px;
+}
diff --git a/view/css/mod_wiki.css b/view/css/mod_wiki.css
index 4e4c71e1d..e0b02b414 100644
--- a/view/css/mod_wiki.css
+++ b/view/css/mod_wiki.css
@@ -48,3 +48,24 @@ td i {
padding-right: 10px;
}
+pre code {
+ background: #F5F5F5;
+ font-family: Courier, monospace;
+ font-size: 1em;
+ padding: 1em 1.5em;
+ display: block;
+ white-space: pre-wrap;
+}
+
+code {
+ background: #F5F5F5;
+ font-family: Courier, monospace;
+ font-size: 1em;
+ display: inline;
+ padding: 0.2em 0.2em;
+ white-space: pre-wrap;
+}
+
+#wiki-content-container code {
+ background: #F5F5F5;
+} \ No newline at end of file
diff --git a/view/css/navbar_tucson.css b/view/css/navbar_tucson.css
index 79f95fe63..e69de29bb 100644
--- a/view/css/navbar_tucson.css
+++ b/view/css/navbar_tucson.css
@@ -1,3 +0,0 @@
-#notifications {
- display: none;
-}
diff --git a/view/css/widgets.css b/view/css/widgets.css
index 76e829b04..f97029aad 100644
--- a/view/css/widgets.css
+++ b/view/css/widgets.css
@@ -179,6 +179,31 @@ a.wikilist {
overflow: auto;
}
+.notifications-textinput {
+ padding: .75rem 0.85rem;
+}
+
+.notifications-textinput input {
+ padding-left: 1.75rem;
+}
+
+.notifications-textinput-clear {
+ padding: .5rem;
+ line-height: 1;
+ position: absolute;
+ top: .75rem;
+ right: 1rem;
+ cursor: pointer;
+}
+
+.notifications-textinput-filter {
+ padding: .5rem;
+ line-height: 1;
+ position: absolute;
+ top: .75rem;
+ left: 0.75rem;
+}
+
.notification-content.collapsing {
overflow: hidden;
}
@@ -199,3 +224,10 @@ a.wikilist {
#notifications {
margin-bottom: 1rem;
}
+
+/* contact block */
+.contact-block-div .oneway-overlay {
+ font-size: 20px;
+ margin-left: -25px;
+ margin-top: 25px;
+}
diff --git a/view/de b/view/de
new file mode 120000
index 000000000..47f12ca72
--- /dev/null
+++ b/view/de
@@ -0,0 +1 @@
+de-de \ No newline at end of file
diff --git a/view/de-de/hmessages.po b/view/de-de/hmessages.po
new file mode 100644
index 000000000..bdd6c0ac2
--- /dev/null
+++ b/view/de-de/hmessages.po
@@ -0,0 +1,14077 @@
+# hubzilla
+# Copyright (C) 2012-2016 hubzilla
+# This file is distributed under the same license as the hubzilla package.
+#
+# Translators:
+# Alex <info@pixelbits.de>, 2013
+# Balder <andreas.bauer@ymail.com>, 2013
+# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2013
+# do.t <tobias@tonstrom.de>, 2014
+# Einer von Vielen <tom@jfellow.net>, 2013
+# Ettore Atalan <atalanttore@googlemail.com>, 2015-2017
+# Frank Dieckmann <frank@lumina-verte.org>, 2013
+# Harald Klimach <harald@klimachs.de>, 2016
+# Herbert Thielen <thielen@hs-worms.de>, 2018
+# Holger - <holger.froese@gmail.com>, 2018
+# JooBee <d13@raclan.de>, 2014
+# Kai <kai@proppower.de>, 2015
+# Oliver <post@toktan.org>, 2015-2017
+# Phellmes <forum@suschka.de>, 2014,2016-2018
+# sasiflo <transiflex@sasiflo.de>, 2014
+# Steff <steff@digitalesecho.de>, 2015-2016
+# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016
+# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016-2018
+# zottel <transifex@zottel.net>, 2015
+# sasiflo <transiflex@sasiflo.de>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: Redmatrix\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-01 08:51+0100\n"
+"PO-Revision-Date: 2018-03-04 23:22+0000\n"
+"Last-Translator: Phellmes <forum@suschka.de>\n"
+"Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../../Zotlabs/Access/Permissions.php:56
+msgid "Can view my channel stream and posts"
+msgstr "Kann meinen Kanal-Stream und meine Beiträge sehen"
+
+#: ../../Zotlabs/Access/Permissions.php:57
+msgid "Can send me their channel stream and posts"
+msgstr "Kann mir die Beiträge aus seinem/ihrem Kanal schicken"
+
+#: ../../Zotlabs/Access/Permissions.php:58
+msgid "Can view my default channel profile"
+msgstr "Kann mein Standardprofil sehen"
+
+#: ../../Zotlabs/Access/Permissions.php:59
+msgid "Can view my connections"
+msgstr "Kann meine Verbindungen sehen"
+
+#: ../../Zotlabs/Access/Permissions.php:60
+msgid "Can view my file storage and photos"
+msgstr "Kann meine Datei- und Bilderordner sehen"
+
+#: ../../Zotlabs/Access/Permissions.php:61
+msgid "Can upload/modify my file storage and photos"
+msgstr "Kann in meine Datei- und Bilderordner hochladen/ändern"
+
+#: ../../Zotlabs/Access/Permissions.php:62
+msgid "Can view my channel webpages"
+msgstr "Kann die Webseiten meines Kanals sehen"
+
+#: ../../Zotlabs/Access/Permissions.php:63
+msgid "Can view my wiki pages"
+msgstr "Kann meine Wiki-Seiten sehen"
+
+#: ../../Zotlabs/Access/Permissions.php:64
+msgid "Can create/edit my channel webpages"
+msgstr "Kann Webseiten in meinem Kanal erstellen/ändern"
+
+#: ../../Zotlabs/Access/Permissions.php:65
+msgid "Can write to my wiki pages"
+msgstr "Kann meine Wiki-Seiten bearbeiten"
+
+#: ../../Zotlabs/Access/Permissions.php:66
+msgid "Can post on my channel (wall) page"
+msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"
+
+#: ../../Zotlabs/Access/Permissions.php:67
+msgid "Can comment on or like my posts"
+msgstr "Darf meine Beiträge kommentieren und mögen/nicht mögen"
+
+#: ../../Zotlabs/Access/Permissions.php:68
+msgid "Can send me private mail messages"
+msgstr "Kann mir private Nachrichten schicken"
+
+#: ../../Zotlabs/Access/Permissions.php:69
+msgid "Can like/dislike profiles and profile things"
+msgstr "Kann Profile und Profilsachen mögen/nicht mögen"
+
+#: ../../Zotlabs/Access/Permissions.php:70
+msgid "Can forward to all my channel connections via @+ mentions in posts"
+msgstr "Kann an alle meine Verbindungen via @-Erwähnungen Nachrichten weiterleiten"
+
+#: ../../Zotlabs/Access/Permissions.php:71
+msgid "Can chat with me"
+msgstr "Kann mit mir chatten"
+
+#: ../../Zotlabs/Access/Permissions.php:72
+msgid "Can source my public posts in derived channels"
+msgstr "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden"
+
+#: ../../Zotlabs/Access/Permissions.php:73
+msgid "Can administer my channel"
+msgstr "Kann meinen Kanal administrieren"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:265
+msgid "Social Networking"
+msgstr "Soziales Netzwerk"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:266
+msgid "Social - Mostly Public"
+msgstr "Soziales Netzwerk - Weitgehend öffentlich"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:267
+msgid "Social - Restricted"
+msgstr "Soziales Netzwerk - Beschränkt"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:268
+msgid "Social - Private"
+msgstr "Soziales Netzwerk - Privat"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:271
+msgid "Community Forum"
+msgstr "Forum"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:272
+msgid "Forum - Mostly Public"
+msgstr "Forum - Weitgehend öffentlich"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:273
+msgid "Forum - Restricted"
+msgstr "Forum - Beschränkt"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:274
+msgid "Forum - Private"
+msgstr "Forum - Privat"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:277
+msgid "Feed Republish"
+msgstr "Teilen von Feeds"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:278
+msgid "Feed - Mostly Public"
+msgstr "Feeds - Weitgehend öffentlich"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:279
+msgid "Feed - Restricted"
+msgstr "Feeds - Beschränkt"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:282
+msgid "Special Purpose"
+msgstr "Für besondere Zwecke"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:283
+msgid "Special - Celebrity/Soapbox"
+msgstr "Speziell - Mitteilungs-Kanal (keine Kommentare)"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:284
+msgid "Special - Group Repository"
+msgstr "Speziell - Gruppenarchiv"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:287
+#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Settings/Channel.php:473
+#: ../../Zotlabs/Module/Connedit.php:918 ../../Zotlabs/Module/Profiles.php:798
+#: ../../Zotlabs/Module/Register.php:224 ../../include/selectors.php:49
+#: ../../include/selectors.php:66 ../../include/selectors.php:104
+#: ../../include/selectors.php:140 ../../include/event.php:1315
+#: ../../include/event.php:1322 ../../include/connections.php:689
+#: ../../include/connections.php:696
+msgid "Other"
+msgstr "Andere"
+
+#: ../../Zotlabs/Access/PermissionRoles.php:288
+msgid "Custom/Expert Mode"
+msgstr "Benutzerdefiniert/Expertenmodus"
+
+#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:29
+#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
+#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32
+#: ../../Zotlabs/Module/Cards.php:33 ../../Zotlabs/Module/Webpages.php:33
+#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1198
+msgid "Requested profile is not available."
+msgstr "Das angefragte Profil ist nicht verfügbar."
+
+#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
+#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94
+#: ../../Zotlabs/Module/Articles.php:68 ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:110
+#: ../../Zotlabs/Module/Channel.php:248 ../../Zotlabs/Module/Channel.php:288
+#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Events.php:271
+#: ../../Zotlabs/Module/Appman.php:86 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Article_edit.php:51
+#: ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/New_channel.php:102
+#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
+#: ../../Zotlabs/Module/Moderate.php:13
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:275
+#: ../../Zotlabs/Module/Thing.php:295 ../../Zotlabs/Module/Thing.php:336
+#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67
+#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Connections.php:29
+#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:64
+#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50
+#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:400
+#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:149
+#: ../../Zotlabs/Module/Profile_photo.php:302
+#: ../../Zotlabs/Module/Profile_photo.php:315
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:229
+#: ../../Zotlabs/Module/Item.php:246 ../../Zotlabs/Module/Item.php:256
+#: ../../Zotlabs/Module/Item.php:1099 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:389
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Layouts.php:71
+#: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89
+#: ../../Zotlabs/Module/Defperms.php:173 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635
+#: ../../Zotlabs/Module/Editwebpage.php:68
+#: ../../Zotlabs/Module/Editwebpage.php:89
+#: ../../Zotlabs/Module/Editwebpage.php:107
+#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Cards.php:72 ../../Zotlabs/Module/Webpages.php:118
+#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:74
+#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Suggest.php:28
+#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
+#: ../../Zotlabs/Module/Register.php:77
+#: ../../Zotlabs/Module/Cover_photo.php:281
+#: ../../Zotlabs/Module/Cover_photo.php:294
+#: ../../Zotlabs/Module/Display.php:406 ../../Zotlabs/Module/Network.php:15
+#: ../../Zotlabs/Module/Filestorage.php:15
+#: ../../Zotlabs/Module/Filestorage.php:70
+#: ../../Zotlabs/Module/Filestorage.php:85
+#: ../../Zotlabs/Module/Filestorage.php:117 ../../Zotlabs/Module/Common.php:38
+#: ../../Zotlabs/Module/Viewconnections.php:28
+#: ../../Zotlabs/Module/Viewconnections.php:33
+#: ../../Zotlabs/Module/Service_limits.php:11
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Card_edit.php:51
+#: ../../Zotlabs/Module/Notifications.php:11
+#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:123
+#: ../../addon/keepout/keepout.php:36 ../../addon/openid/Mod_Id.php:53
+#: ../../addon/gitwiki/Mod_Gitwiki.php:196
+#: ../../addon/gitwiki/Mod_Gitwiki.php:292 ../../addon/pumpio/pumpio.php:40
+#: ../../include/attach.php:150 ../../include/attach.php:197
+#: ../../include/attach.php:270 ../../include/attach.php:284
+#: ../../include/attach.php:293 ../../include/attach.php:366
+#: ../../include/attach.php:380 ../../include/attach.php:387
+#: ../../include/attach.php:469 ../../include/attach.php:1019
+#: ../../include/attach.php:1093 ../../include/attach.php:1258
+#: ../../include/items.php:3656 ../../include/photos.php:27
+msgid "Permission denied."
+msgstr "Berechtigung verweigert."
+
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155
+#: ../../Zotlabs/Module/Editblock.php:113
+msgid "Block Name"
+msgstr "Block-Name"
+
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2402
+msgid "Blocks"
+msgstr "Blöcke"
+
+#: ../../Zotlabs/Module/Blocks.php:156
+msgid "Block Title"
+msgstr "Titel des Blocks"
+
+#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:114
+#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:251
+msgid "Created"
+msgstr "Erstellt"
+
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:115
+#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:252
+msgid "Edited"
+msgstr "Geändert"
+
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:96
+#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:146
+#: ../../Zotlabs/Module/Connedit.php:921 ../../Zotlabs/Module/Menu.php:118
+#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801
+#: ../../Zotlabs/Module/Cards.php:100 ../../Zotlabs/Module/Webpages.php:239
+#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:382
+#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
+msgid "Create"
+msgstr "Erstelle"
+
+#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114
+#: ../../Zotlabs/Module/Article_edit.php:99
+#: ../../Zotlabs/Module/Admin/Profs.php:154
+#: ../../Zotlabs/Module/Settings/Oauth.php:149
+#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:114
+#: ../../Zotlabs/Module/Connections.php:265
+#: ../../Zotlabs/Module/Connections.php:303
+#: ../../Zotlabs/Module/Connections.php:323 ../../Zotlabs/Module/Wiki.php:202
+#: ../../Zotlabs/Module/Wiki.php:358 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Layouts.php:193
+#: ../../Zotlabs/Module/Editwebpage.php:142
+#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:85
+#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:409
+#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:288
+#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
+#: ../../addon/gitwiki/Mod_Gitwiki.php:151
+#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1297
+#: ../../include/channel.php:1301 ../../include/menu.php:113
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1102
+#: ../../Zotlabs/Module/Layouts.php:194 ../../Zotlabs/Module/Webpages.php:241
+#: ../../Zotlabs/Widget/Cdav.php:124 ../../include/conversation.php:1363
+msgid "Share"
+msgstr "Teilen"
+
+#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
+#: ../../Zotlabs/Module/Cdav.php:897 ../../Zotlabs/Module/Cdav.php:1187
+#: ../../Zotlabs/Module/Article_edit.php:129
+#: ../../Zotlabs/Module/Admin/Accounts.php:174
+#: ../../Zotlabs/Module/Admin/Channels.php:149
+#: ../../Zotlabs/Module/Admin/Profs.php:155
+#: ../../Zotlabs/Module/Settings/Oauth.php:150
+#: ../../Zotlabs/Module/Thing.php:262 ../../Zotlabs/Module/Editblock.php:139
+#: ../../Zotlabs/Module/Connections.php:273
+#: ../../Zotlabs/Module/Photos.php:1203 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Group.php:179
+#: ../../Zotlabs/Module/Profiles.php:803
+#: ../../Zotlabs/Module/Editwebpage.php:167
+#: ../../Zotlabs/Module/Webpages.php:242
+#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Lib/Apps.php:410
+#: ../../Zotlabs/Lib/ThreadItem.php:141 ../../Zotlabs/Storage/Browser.php:289
+#: ../../include/conversation.php:690 ../../include/conversation.php:733
+msgid "Delete"
+msgstr "Löschen"
+
+#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Events.php:694
+#: ../../Zotlabs/Module/Wiki.php:204 ../../Zotlabs/Module/Layouts.php:198
+#: ../../Zotlabs/Module/Webpages.php:246 ../../Zotlabs/Module/Pubsites.php:60
+#: ../../addon/gitwiki/Mod_Gitwiki.php:153
+msgid "View"
+msgstr "Ansicht"
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Einladungslimit überschritten."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : Keine gültige Email Adresse."
+
+#: ../../Zotlabs/Module/Invite.php:67
+msgid "Please join us on $Projectname"
+msgstr "Schließe Dich uns auf $Projectname an!"
+
+#: ../../Zotlabs/Module/Invite.php:77
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines $Projectname-Servers."
+
+#: ../../Zotlabs/Module/Invite.php:82
+#: ../../addon/notifyadmin/notifyadmin.php:40
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Nachricht konnte nicht zugestellt werden."
+
+#: ../../Zotlabs/Module/Invite.php:86
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d Nachricht gesendet."
+msgstr[1] "%d Nachrichten gesendet."
+
+#: ../../Zotlabs/Module/Invite.php:107
+msgid "You have no more invitations available"
+msgstr "Du hast keine weiteren verfügbare Einladungen"
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "Send invitations"
+msgstr "Einladungen senden"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid "Enter email addresses, one per line:"
+msgstr "Email-Adressen eintragen, eine pro Zeile:"
+
+#: ../../Zotlabs/Module/Invite.php:140 ../../Zotlabs/Module/Mail.php:285
+msgid "Your message:"
+msgstr "Deine Nachricht:"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "Please join my community on $Projectname."
+msgstr "Schließe Dich uns auf $Projectname an!"
+
+#: ../../Zotlabs/Module/Invite.php:143
+msgid "You will need to supply this invitation code:"
+msgstr "Bitte verwende bei der Registrierung den folgenden Einladungscode:"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registriere Dich auf einem beliebigen $Projectname-Hub (sie sind alle miteinander verbunden)"
+
+#: ../../Zotlabs/Module/Invite.php:146
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Gib meine $Projectname-Adresse im Suchfeld ein."
+
+#: ../../Zotlabs/Module/Invite.php:147
+msgid "or visit"
+msgstr "oder besuche"
+
+#: ../../Zotlabs/Module/Invite.php:149
+msgid "3. Click [Connect]"
+msgstr "3. Klicke auf [Verbinden]"
+
+#: ../../Zotlabs/Module/Invite.php:151 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Events.php:493
+#: ../../Zotlabs/Module/Appman.php:152
+#: ../../Zotlabs/Module/Import_items.php:129
+#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:349
+#: ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Admin/Features.php:66
+#: ../../Zotlabs/Module/Admin/Plugins.php:438
+#: ../../Zotlabs/Module/Admin/Accounts.php:167
+#: ../../Zotlabs/Module/Admin/Logs.php:84
+#: ../../Zotlabs/Module/Admin/Channels.php:147
+#: ../../Zotlabs/Module/Admin/Themes.php:158
+#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Profs.php:157
+#: ../../Zotlabs/Module/Admin/Account_edit.php:74
+#: ../../Zotlabs/Module/Admin/Security.php:104
+#: ../../Zotlabs/Module/Settings/Permcats.php:110
+#: ../../Zotlabs/Module/Settings/Channel.php:488
+#: ../../Zotlabs/Module/Settings/Features.php:47
+#: ../../Zotlabs/Module/Settings/Tokens.php:168
+#: ../../Zotlabs/Module/Settings/Account.php:118
+#: ../../Zotlabs/Module/Settings/Featured.php:54
+#: ../../Zotlabs/Module/Settings/Display.php:192
+#: ../../Zotlabs/Module/Settings/Oauth.php:87
+#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374
+#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:345
+#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:1082
+#: ../../Zotlabs/Module/Photos.php:1122 ../../Zotlabs/Module/Photos.php:1240
+#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Module/Pdledit.php:98
+#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:887
+#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:242
+#: ../../Zotlabs/Module/Email_validation.php:40
+#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Defperms.php:249
+#: ../../Zotlabs/Module/Group.php:87 ../../Zotlabs/Module/Profiles.php:726
+#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
+#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
+#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Lib/ThreadItem.php:750
+#: ../../Zotlabs/Widget/Eventstools.php:16
+#: ../../Zotlabs/Widget/Wiki_pages.php:40
+#: ../../Zotlabs/Widget/Wiki_pages.php:97
+#: ../../view/theme/redbasic_c/php/config.php:95
+#: ../../view/theme/redbasic/php/config.php:93
+#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:273
+#: ../../addon/planets/planets.php:153
+#: ../../addon/openclipatar/openclipatar.php:53
+#: ../../addon/wppost/wppost.php:113 ../../addon/nsfw/nsfw.php:92
+#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89
+#: ../../addon/likebanner/likebanner.php:57
+#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
+#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113
+#: ../../addon/diaspora/diaspora.php:822
+#: ../../addon/gitwiki/Mod_Gitwiki.php:155
+#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/hzfiles/hzfiles.php:84
+#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
+#: ../../addon/mailtest/mailtest.php:100
+#: ../../addon/openstreetmap/openstreetmap.php:168
+#: ../../addon/rtof/rtof.php:101 ../../addon/jappixmini/jappixmini.php:371
+#: ../../addon/superblock/superblock.php:120 ../../addon/nofed/nofed.php:80
+#: ../../addon/redred/redred.php:119 ../../addon/logrot/logrot.php:35
+#: ../../addon/frphotos/frphotos.php:96 ../../addon/pubcrawl/pubcrawl.php:1053
+#: ../../addon/chords/Mod_Chords.php:60 ../../addon/libertree/libertree.php:85
+#: ../../addon/flattrwidget/flattrwidget.php:124
+#: ../../addon/statusnet/statusnet.php:322
+#: ../../addon/statusnet/statusnet.php:380
+#: ../../addon/statusnet/statusnet.php:432
+#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:218
+#: ../../addon/twitter/twitter.php:265
+#: ../../addon/smileybutton/smileybutton.php:219
+#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
+#: ../../addon/authchoose/authchoose.php:71 ../../addon/xmpp/xmpp.php:69
+#: ../../addon/pumpio/pumpio.php:237 ../../addon/redfiles/redfiles.php:124
+#: ../../addon/hubwall/hubwall.php:95 ../../include/js_strings.php:22
+msgid "Submit"
+msgstr "Absenden"
+
+#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Articles.php:179
+#: ../../Zotlabs/Lib/Apps.php:229 ../../include/features.php:124
+#: ../../include/nav.php:469
+msgid "Articles"
+msgstr "Artikel"
+
+#: ../../Zotlabs/Module/Articles.php:95
+msgid "Add Article"
+msgstr "Artikel hinzufügen"
+
+#: ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Article_edit.php:17
+#: ../../Zotlabs/Module/Article_edit.php:33
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editwebpage.php:80
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Card_edit.php:17
+#: ../../Zotlabs/Module/Card_edit.php:33
+msgid "Item not found"
+msgstr "Element nicht gefunden"
+
+#: ../../Zotlabs/Module/Editlayout.php:128
+#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189
+msgid "Layout Name"
+msgstr "Layout-Name"
+
+#: ../../Zotlabs/Module/Editlayout.php:129
+#: ../../Zotlabs/Module/Layouts.php:132
+msgid "Layout Description (Optional)"
+msgstr "Layout-Beschreibung (optional)"
+
+#: ../../Zotlabs/Module/Editlayout.php:137
+msgid "Edit Layout"
+msgstr "Layout bearbeiten"
+
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Cloud.php:111 ../../Zotlabs/Module/Group.php:74
+#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68
+#: ../../Zotlabs/Module/Like.php:296 ../../Zotlabs/Web/WebServer.php:122
+#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
+#: ../../addon/frphotos/frphotos.php:81 ../../addon/redfiles/redfiles.php:109
+#: ../../include/items.php:358
+msgid "Permission denied"
+msgstr "Keine Berechtigung"
+
+#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
+msgid "Invalid profile identifier."
+msgstr "Ungültiger Profil-Identifikator"
+
+#: ../../Zotlabs/Module/Profperm.php:111
+msgid "Profile Visibility Editor"
+msgstr "Profil-Sichtbarkeits-Editor"
+
+#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1634
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../Zotlabs/Module/Profperm.php:115
+msgid "Click on a contact to add or remove."
+msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."
+
+#: ../../Zotlabs/Module/Profperm.php:124
+msgid "Visible To"
+msgstr "Sichtbar für"
+
+#: ../../Zotlabs/Module/Profperm.php:140
+#: ../../Zotlabs/Module/Connections.php:140
+msgid "All Connections"
+msgstr "Alle Verbindungen"
+
+#: ../../Zotlabs/Module/Cdav.php:785
+msgid "INVALID EVENT DISMISSED!"
+msgstr "UNGÃœLTIGEN TERMIN ABGELEHNT!"
+
+#: ../../Zotlabs/Module/Cdav.php:786
+msgid "Summary: "
+msgstr "Zusammenfassung:"
+
+#: ../../Zotlabs/Module/Cdav.php:786 ../../Zotlabs/Module/Cdav.php:787
+#: ../../Zotlabs/Module/Cdav.php:794 ../../Zotlabs/Module/Embedphotos.php:146
+#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1273
+#: ../../Zotlabs/Lib/Apps.php:754 ../../Zotlabs/Lib/Apps.php:832
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:95
+#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:853
+#: ../../include/conversation.php:1160
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: ../../Zotlabs/Module/Cdav.php:787
+msgid "Date: "
+msgstr "Datum:"
+
+#: ../../Zotlabs/Module/Cdav.php:788 ../../Zotlabs/Module/Cdav.php:795
+msgid "Reason: "
+msgstr "Grund:"
+
+#: ../../Zotlabs/Module/Cdav.php:793
+msgid "INVALID CARD DISMISSED!"
+msgstr "UNGÃœLTIGE KARTE ABGELEHNT!"
+
+#: ../../Zotlabs/Module/Cdav.php:794
+msgid "Name: "
+msgstr "Name: "
+
+#: ../../Zotlabs/Module/Cdav.php:868 ../../Zotlabs/Module/Events.php:460
+msgid "Event title"
+msgstr "Termintitel"
+
+#: ../../Zotlabs/Module/Cdav.php:869 ../../Zotlabs/Module/Events.php:466
+msgid "Start date and time"
+msgstr "Startdatum und -zeit"
+
+#: ../../Zotlabs/Module/Cdav.php:869 ../../Zotlabs/Module/Cdav.php:870
+msgid "Example: YYYY-MM-DD HH:mm"
+msgstr "Beispiel: JJJJ-MM-TT HH:mm"
+
+#: ../../Zotlabs/Module/Cdav.php:870
+msgid "End date and time"
+msgstr "Enddatum und -zeit"
+
+#: ../../Zotlabs/Module/Cdav.php:871 ../../Zotlabs/Module/Events.php:473
+#: ../../Zotlabs/Module/Appman.php:142 ../../Zotlabs/Module/Rbmark.php:101
+#: ../../addon/rendezvous/rendezvous.php:173
+msgid "Description"
+msgstr "Beschreibung"
+
+#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Profiles.php:509
+#: ../../Zotlabs/Module/Profiles.php:737 ../../Zotlabs/Module/Pubsites.php:52
+#: ../../include/js_strings.php:25
+msgid "Location"
+msgstr "Ort"
+
+#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Events.php:689
+#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Cal.php:346 ../../Zotlabs/Module/Photos.php:971
+msgid "Previous"
+msgstr "Voriges"
+
+#: ../../Zotlabs/Module/Cdav.php:880 ../../Zotlabs/Module/Events.php:690
+#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Setup.php:263
+#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Cal.php:347
+#: ../../Zotlabs/Module/Photos.php:980
+msgid "Next"
+msgstr "Nächste"
+
+#: ../../Zotlabs/Module/Cdav.php:881 ../../Zotlabs/Module/Events.php:700
+#: ../../Zotlabs/Module/Cal.php:348
+msgid "Today"
+msgstr "Heute"
+
+#: ../../Zotlabs/Module/Cdav.php:882 ../../Zotlabs/Module/Events.php:695
+msgid "Month"
+msgstr "Monat"
+
+#: ../../Zotlabs/Module/Cdav.php:883 ../../Zotlabs/Module/Events.php:696
+msgid "Week"
+msgstr "Woche"
+
+#: ../../Zotlabs/Module/Cdav.php:884 ../../Zotlabs/Module/Events.php:697
+msgid "Day"
+msgstr "Tag"
+
+#: ../../Zotlabs/Module/Cdav.php:885
+msgid "List month"
+msgstr "Liste Monat"
+
+#: ../../Zotlabs/Module/Cdav.php:886
+msgid "List week"
+msgstr "Liste Woche"
+
+#: ../../Zotlabs/Module/Cdav.php:887
+msgid "List day"
+msgstr "Liste Tag"
+
+#: ../../Zotlabs/Module/Cdav.php:894
+msgid "More"
+msgstr "Mehr"
+
+#: ../../Zotlabs/Module/Cdav.php:895
+msgid "Less"
+msgstr "Weniger"
+
+#: ../../Zotlabs/Module/Cdav.php:896
+msgid "Select calendar"
+msgstr "Kalender auswählen"
+
+#: ../../Zotlabs/Module/Cdav.php:898
+msgid "Delete all"
+msgstr "Alles löschen"
+
+#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Cdav.php:1188
+#: ../../Zotlabs/Module/Admin/Plugins.php:423
+#: ../../Zotlabs/Module/Settings/Oauth.php:88
+#: ../../Zotlabs/Module/Settings/Oauth.php:114
+#: ../../Zotlabs/Module/Wiki.php:345 ../../Zotlabs/Module/Wiki.php:375
+#: ../../Zotlabs/Module/Profile_photo.php:464
+#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Fbrowser.php:66
+#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804
+#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138
+#: ../../addon/gitwiki/Mod_Gitwiki.php:244
+#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1386
+#: ../../include/conversation.php:1435
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: ../../Zotlabs/Module/Cdav.php:900
+msgid "Sorry! Editing of recurrent events is not yet implemented."
+msgstr "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen ist leider noch nicht implementiert."
+
+#: ../../Zotlabs/Module/Cdav.php:1170
+#: ../../Zotlabs/Module/Sharedwithme.php:105
+#: ../../Zotlabs/Module/Admin/Channels.php:159
+#: ../../Zotlabs/Module/Settings/Oauth.php:89
+#: ../../Zotlabs/Module/Settings/Oauth.php:115
+#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:906
+#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:558
+#: ../../Zotlabs/Storage/Browser.php:283
+#: ../../Zotlabs/Widget/Wiki_page_history.php:22
+#: ../../addon/rendezvous/rendezvous.php:172
+#: ../../addon/gitwiki/Mod_Gitwiki.php:158
+msgid "Name"
+msgstr "Name"
+
+#: ../../Zotlabs/Module/Cdav.php:1171 ../../Zotlabs/Module/Connedit.php:907
+msgid "Organisation"
+msgstr "Organisation"
+
+#: ../../Zotlabs/Module/Cdav.php:1172 ../../Zotlabs/Module/Connedit.php:908
+msgid "Title"
+msgstr "Titel"
+
+#: ../../Zotlabs/Module/Cdav.php:1173 ../../Zotlabs/Module/Connedit.php:909
+#: ../../Zotlabs/Module/Profiles.php:789
+msgid "Phone"
+msgstr "Telefon"
+
+#: ../../Zotlabs/Module/Cdav.php:1174
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
+#: ../../Zotlabs/Module/Admin/Accounts.php:182
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Profiles.php:790
+#: ../../addon/openid/MysqlProvider.php:56
+#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
+#: ../../addon/redred/redred.php:107 ../../include/network.php:1775
+msgid "Email"
+msgstr "E-Mail"
+
+#: ../../Zotlabs/Module/Cdav.php:1175 ../../Zotlabs/Module/Connedit.php:911
+#: ../../Zotlabs/Module/Profiles.php:791
+msgid "Instant messenger"
+msgstr "Sofortnachrichtendienst"
+
+#: ../../Zotlabs/Module/Cdav.php:1176 ../../Zotlabs/Module/Connedit.php:912
+#: ../../Zotlabs/Module/Profiles.php:792
+msgid "Website"
+msgstr "Webseite"
+
+#: ../../Zotlabs/Module/Cdav.php:1177 ../../Zotlabs/Module/Locs.php:118
+#: ../../Zotlabs/Module/Admin/Channels.php:160
+#: ../../Zotlabs/Module/Connedit.php:913 ../../Zotlabs/Module/Profiles.php:502
+#: ../../Zotlabs/Module/Profiles.php:793
+msgid "Address"
+msgstr "Adresse"
+
+#: ../../Zotlabs/Module/Cdav.php:1178 ../../Zotlabs/Module/Connedit.php:914
+#: ../../Zotlabs/Module/Profiles.php:794
+msgid "Note"
+msgstr "Hinweis"
+
+#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1308
+#: ../../include/connections.php:682
+msgid "Mobile"
+msgstr "Mobil"
+
+#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:916
+#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1309
+#: ../../include/connections.php:683
+msgid "Home"
+msgstr "Home"
+
+#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:917
+#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1312
+#: ../../include/connections.php:686
+msgid "Work"
+msgstr "Arbeit"
+
+#: ../../Zotlabs/Module/Cdav.php:1183 ../../Zotlabs/Module/Connedit.php:919
+#: ../../Zotlabs/Module/Profiles.php:799
+#: ../../addon/jappixmini/jappixmini.php:368
+msgid "Add Contact"
+msgstr "Kontakt hinzufügen"
+
+#: ../../Zotlabs/Module/Cdav.php:1184 ../../Zotlabs/Module/Connedit.php:920
+#: ../../Zotlabs/Module/Profiles.php:800
+msgid "Add Field"
+msgstr "Feld hinzufügen"
+
+#: ../../Zotlabs/Module/Cdav.php:1186
+#: ../../Zotlabs/Module/Admin/Plugins.php:453
+#: ../../Zotlabs/Module/Settings/Oauth.php:42
+#: ../../Zotlabs/Module/Settings/Oauth.php:113
+#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Profiles.php:802
+#: ../../Zotlabs/Lib/Apps.php:393
+msgid "Update"
+msgstr "Aktualisieren"
+
+#: ../../Zotlabs/Module/Cdav.php:1189 ../../Zotlabs/Module/Connedit.php:925
+msgid "P.O. Box"
+msgstr "Postfach"
+
+#: ../../Zotlabs/Module/Cdav.php:1190 ../../Zotlabs/Module/Connedit.php:926
+msgid "Additional"
+msgstr "Zusätzlich"
+
+#: ../../Zotlabs/Module/Cdav.php:1191 ../../Zotlabs/Module/Connedit.php:927
+msgid "Street"
+msgstr "Straße"
+
+#: ../../Zotlabs/Module/Cdav.php:1192 ../../Zotlabs/Module/Connedit.php:928
+msgid "Locality"
+msgstr "Ortschaft"
+
+#: ../../Zotlabs/Module/Cdav.php:1193 ../../Zotlabs/Module/Connedit.php:929
+msgid "Region"
+msgstr "Region"
+
+#: ../../Zotlabs/Module/Cdav.php:1194 ../../Zotlabs/Module/Connedit.php:930
+msgid "ZIP Code"
+msgstr "Postleitzahl"
+
+#: ../../Zotlabs/Module/Cdav.php:1195 ../../Zotlabs/Module/Connedit.php:931
+#: ../../Zotlabs/Module/Profiles.php:760
+msgid "Country"
+msgstr "Land"
+
+#: ../../Zotlabs/Module/Cdav.php:1242
+msgid "Default Calendar"
+msgstr "Standardkalender"
+
+#: ../../Zotlabs/Module/Cdav.php:1252
+msgid "Default Addressbook"
+msgstr "Standardadressbuch"
+
+#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25
+msgid "This site is not a directory server"
+msgstr "Diese Webseite ist kein Verzeichnisserver"
+
+#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Chat.php:25
+#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:508
+msgid "You must be logged in to see this page."
+msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können."
+
+#: ../../Zotlabs/Module/Channel.php:47 ../../Zotlabs/Module/Hcard.php:37
+#: ../../Zotlabs/Module/Profile.php:45
+msgid "Posts and comments"
+msgstr "Beiträge und Kommentare"
+
+#: ../../Zotlabs/Module/Channel.php:54 ../../Zotlabs/Module/Hcard.php:44
+#: ../../Zotlabs/Module/Profile.php:52
+msgid "Only posts"
+msgstr "Nur Beiträge"
+
+#: ../../Zotlabs/Module/Channel.php:107
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."
+
+#: ../../Zotlabs/Module/Uexport.php:57 ../../Zotlabs/Module/Uexport.php:58
+msgid "Export Channel"
+msgstr "Kanal exportieren"
+
+#: ../../Zotlabs/Module/Uexport.php:59
+msgid ""
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
+msgstr "Exportiert die grundlegenden Kanal-Informationen in eine kleine Datei. Diese stellt eine Sicherung Deiner Verbindungen, Berechtigungen, Profile und Basisdaten bereit, die für den Import auf einem anderen Hub verwendet werden kann, aber nicht die Beiträge Deines Kanals enthält."
+
+#: ../../Zotlabs/Module/Uexport.php:60
+msgid "Export Content"
+msgstr "Kanal und Inhalte exportieren"
+
+#: ../../Zotlabs/Module/Uexport.php:61
+msgid ""
+"Export your channel information and recent content to a JSON backup that can"
+" be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for"
+" this download to begin."
+msgstr "Exportiert Deine Kanal-Informationen sowie alle zugehörigen Inhalte in eine JSON-Sicherungsdatei. Die sichert alle Verbindungen, Berechtigungen, Profildaten und Deine Beiträge aus mehreren Monaten. Diese Datei kann SEHR groß werden! Bitte habe ein wenig Geduld – es kann mehrere Minuten dauern, bis der Download startet."
+
+#: ../../Zotlabs/Module/Uexport.php:63
+msgid "Export your posts from a given year."
+msgstr "Exportiert die Beiträge des angegebenen Jahres."
+
+#: ../../Zotlabs/Module/Uexport.php:65
+msgid ""
+"You may also export your posts and conversations for a particular year or "
+"month. Adjust the date in your browser location bar to select other dates. "
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
+msgstr "Du kannst auch die Beiträge und Konversationen eines bestimmten Jahres oder Monats exportieren. Ändere das Datum in der Adresszeile Deines Browsers, um andere Zeiträume zu wählen. Falls der Export fehlschlägt (vermutlich, weil auf diesem Hub nicht genügend Speicher zur Verfügung steht), versuche es noch einmal mit einer kleineren Zeitspanne."
+
+#: ../../Zotlabs/Module/Uexport.php:66
+#, php-format
+msgid ""
+"To select all posts for a given year, such as this year, visit <a "
+"href=\"%1$s\">%2$s</a>"
+msgstr "Um alle Beiträge eines bestimmten Jahres, zum Beispiel dieses Jahres, auszuwählen, klicke <a href=\"%1$s\">%2$s</a>."
+
+#: ../../Zotlabs/Module/Uexport.php:67
+#, php-format
+msgid ""
+"To select all posts for a given month, such as January of this year, visit "
+"<a href=\"%1$s\">%2$s</a>"
+msgstr "Um alle Beiträge eines bestimmten Monats auszuwählen, zum Beispiel vom Januar diesen Jahres, klicke <a href=\"%1$s\">%2$s</a>."
+
+#: ../../Zotlabs/Module/Uexport.php:68
+#, php-format
+msgid ""
+"These content files may be imported or restored by visiting <a "
+"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results"
+" please import or restore these in date order (oldest first)."
+msgstr "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1$s\">%2$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst."
+
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "Welcome to Hubzilla!"
+msgstr "Willkommen bei Hubzilla!"
+
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "You have got no unseen posts..."
+msgstr "Du hast keine ungelesenen Beiträge..."
+
+#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:540
+#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:63
+#: ../../Zotlabs/Module/Directory.php:68 ../../Zotlabs/Module/Display.php:30
+#: ../../Zotlabs/Module/Viewconnections.php:23
+msgid "Public access denied."
+msgstr "Öffentlichen Zugriff verweigert."
+
+#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:319
+#: ../../Zotlabs/Lib/Apps.php:256 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../include/text.php:1051 ../../include/text.php:1063
+#: ../../include/acl_selectors.php:118 ../../include/nav.php:179
+msgid "Search"
+msgstr "Suche"
+
+#: ../../Zotlabs/Module/Search.php:226
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "Beiträge mit Schlagwort: %s"
+
+#: ../../Zotlabs/Module/Search.php:228
+#, php-format
+msgid "Search results for: %s"
+msgstr "Suchergebnisse für: %s"
+
+#: ../../Zotlabs/Module/Pubstream.php:93
+#: ../../Zotlabs/Widget/Notifications.php:131
+msgid "Public Stream"
+msgstr "Öffentlicher Beitrags-Stream"
+
+#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
+msgid "Location not found."
+msgstr "Klon nicht gefunden."
+
+#: ../../Zotlabs/Module/Locs.php:62
+msgid "Location lookup failed."
+msgstr "Nachschlagen des Kanal-Ortes fehlgeschlagen"
+
+#: ../../Zotlabs/Module/Locs.php:66
+msgid ""
+"Please select another location to become primary before removing the primary"
+" location."
+msgstr "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst."
+
+#: ../../Zotlabs/Module/Locs.php:95
+msgid "Syncing locations"
+msgstr "Synchronisiere Klone"
+
+#: ../../Zotlabs/Module/Locs.php:105
+msgid "No locations found."
+msgstr "Keine Klon-Adressen gefunden."
+
+#: ../../Zotlabs/Module/Locs.php:116
+msgid "Manage Channel Locations"
+msgstr "Klon-Adressen verwalten"
+
+#: ../../Zotlabs/Module/Locs.php:119 ../../Zotlabs/Module/Admin.php:111
+msgid "Primary"
+msgstr "Primär"
+
+#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113
+msgid "Drop"
+msgstr "Löschen"
+
+#: ../../Zotlabs/Module/Locs.php:122
+msgid "Sync Now"
+msgstr "Jetzt synchronisieren"
+
+#: ../../Zotlabs/Module/Locs.php:123
+msgid "Please wait several minutes between consecutive operations."
+msgstr "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!"
+
+#: ../../Zotlabs/Module/Locs.php:124
+msgid ""
+"When possible, drop a location by logging into that website/hub and removing"
+" your channel."
+msgstr "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst."
+
+#: ../../Zotlabs/Module/Locs.php:125
+msgid "Use this form to drop the location if the hub is no longer operating."
+msgstr "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt."
+
+#: ../../Zotlabs/Module/Apporder.php:44
+msgid "Change Order of Pinned Navbar Apps"
+msgstr "Reihenfolge der in der Navigation angepinnten Apps ändern"
+
+#: ../../Zotlabs/Module/Apporder.php:44
+msgid "Change Order of App Tray Apps"
+msgstr "Reihenfolge der Apps im App-Menü ändern"
+
+#: ../../Zotlabs/Module/Apporder.php:45
+msgid ""
+"Use arrows to move the corresponding app left (top) or right (bottom) in the"
+" navbar"
+msgstr "Benutze die Pfeil-Knöpfe, um die jeweilige App in der Navigationsleiste nach links (oben) oder rechts (unten) zu bewegen"
+
+#: ../../Zotlabs/Module/Apporder.php:45
+msgid "Use arrows to move the corresponding app up or down in the app tray"
+msgstr "Benutze die Pfeil-Knöpfe, um die jeweilige App im App-Menü nach oben oder unten zu bewegen"
+
+#: ../../Zotlabs/Module/Mitem.php:28 ../../Zotlabs/Module/Menu.php:144
+msgid "Menu not found."
+msgstr "Menü nicht gefunden"
+
+#: ../../Zotlabs/Module/Mitem.php:52
+msgid "Unable to create element."
+msgstr "Element konnte nicht erstellt werden."
+
+#: ../../Zotlabs/Module/Mitem.php:76
+msgid "Unable to update menu element."
+msgstr "Kann Menü-Element nicht aktualisieren."
+
+#: ../../Zotlabs/Module/Mitem.php:92
+msgid "Unable to add menu element."
+msgstr "Kann Menü-Bestandteil nicht hinzufügen."
+
+#: ../../Zotlabs/Module/Mitem.php:120 ../../Zotlabs/Module/Menu.php:166
+#: ../../Zotlabs/Module/Xchan.php:41
+msgid "Not found."
+msgstr "Nicht gefunden."
+
+#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:230
+msgid "Menu Item Permissions"
+msgstr "Zugriffsrechte des Menü-Elements"
+
+#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231
+#: ../../Zotlabs/Module/Settings/Channel.php:521
+msgid "(click to open/close)"
+msgstr "(zum öffnen/schließen anklicken)"
+
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:176
+msgid "Link Name"
+msgstr "Name des Links"
+
+#: ../../Zotlabs/Module/Mitem.php:161 ../../Zotlabs/Module/Mitem.php:239
+msgid "Link or Submenu Target"
+msgstr "Ziel des Links oder Untermenüs"
+
+#: ../../Zotlabs/Module/Mitem.php:161
+msgid "Enter URL of the link or select a menu name to create a submenu"
+msgstr "URL des Links eingeben oder Menünamen wählen, um ein Untermenü anzulegen."
+
+#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:240
+msgid "Use magic-auth if available"
+msgstr "Magic-Auth verwenden, falls verfügbar"
+
+#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
+#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
+#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Admin/Site.php:252
+#: ../../Zotlabs/Module/Settings/Channel.php:305
+#: ../../Zotlabs/Module/Settings/Display.php:100
+#: ../../Zotlabs/Module/Api.php:99 ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
+#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Connedit.php:779
+#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
+#: ../../Zotlabs/Module/Defperms.php:180 ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Filestorage.php:155
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:397 ../../boot.php:1587
+#: ../../view/theme/redbasic_c/php/config.php:100
+#: ../../view/theme/redbasic_c/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:98
+#: ../../addon/planets/planets.php:149 ../../addon/wppost/wppost.php:82
+#: ../../addon/wppost/wppost.php:105 ../../addon/wppost/wppost.php:109
+#: ../../addon/nsfw/nsfw.php:84 ../../addon/ijpost/ijpost.php:73
+#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
+#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
+#: ../../addon/ljpost/ljpost.php:82 ../../addon/gitwiki/Mod_Gitwiki.php:166
+#: ../../addon/rainbowtag/rainbowtag.php:81 ../../addon/visage/visage.php:166
+#: ../../addon/nsabait/nsabait.php:157 ../../addon/rtof/rtof.php:81
+#: ../../addon/rtof/rtof.php:85 ../../addon/jappixmini/jappixmini.php:309
+#: ../../addon/jappixmini/jappixmini.php:313
+#: ../../addon/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/jappixmini.php:351
+#: ../../addon/jappixmini/jappixmini.php:355
+#: ../../addon/jappixmini/jappixmini.php:359 ../../addon/nofed/nofed.php:72
+#: ../../addon/nofed/nofed.php:76 ../../addon/redred/redred.php:95
+#: ../../addon/redred/redred.php:99 ../../addon/libertree/libertree.php:69
+#: ../../addon/libertree/libertree.php:81
+#: ../../addon/flattrwidget/flattrwidget.php:120
+#: ../../addon/statusnet/statusnet.php:389
+#: ../../addon/statusnet/statusnet.php:411
+#: ../../addon/statusnet/statusnet.php:415
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:243
+#: ../../addon/twitter/twitter.php:252 ../../addon/twitter/twitter.php:261
+#: ../../addon/smileybutton/smileybutton.php:211
+#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
+#: ../../addon/pumpio/pumpio.php:219 ../../addon/pumpio/pumpio.php:223
+#: ../../addon/pumpio/pumpio.php:227 ../../addon/pumpio/pumpio.php:231
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145
+msgid "No"
+msgstr "Nein"
+
+#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
+#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
+#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Admin/Site.php:254
+#: ../../Zotlabs/Module/Settings/Channel.php:305
+#: ../../Zotlabs/Module/Settings/Display.php:100
+#: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
+#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Defperms.php:180
+#: ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Filestorage.php:155
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:397 ../../boot.php:1587
+#: ../../view/theme/redbasic_c/php/config.php:100
+#: ../../view/theme/redbasic_c/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:98
+#: ../../addon/planets/planets.php:149 ../../addon/wppost/wppost.php:82
+#: ../../addon/wppost/wppost.php:105 ../../addon/wppost/wppost.php:109
+#: ../../addon/nsfw/nsfw.php:84 ../../addon/ijpost/ijpost.php:73
+#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
+#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
+#: ../../addon/ljpost/ljpost.php:82 ../../addon/gitwiki/Mod_Gitwiki.php:166
+#: ../../addon/rainbowtag/rainbowtag.php:81 ../../addon/visage/visage.php:166
+#: ../../addon/nsabait/nsabait.php:157 ../../addon/rtof/rtof.php:81
+#: ../../addon/rtof/rtof.php:85 ../../addon/jappixmini/jappixmini.php:309
+#: ../../addon/jappixmini/jappixmini.php:313
+#: ../../addon/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/jappixmini.php:351
+#: ../../addon/jappixmini/jappixmini.php:355
+#: ../../addon/jappixmini/jappixmini.php:359 ../../addon/nofed/nofed.php:72
+#: ../../addon/nofed/nofed.php:76 ../../addon/redred/redred.php:95
+#: ../../addon/redred/redred.php:99 ../../addon/libertree/libertree.php:69
+#: ../../addon/libertree/libertree.php:81
+#: ../../addon/flattrwidget/flattrwidget.php:120
+#: ../../addon/statusnet/statusnet.php:389
+#: ../../addon/statusnet/statusnet.php:411
+#: ../../addon/statusnet/statusnet.php:415
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:243
+#: ../../addon/twitter/twitter.php:252 ../../addon/twitter/twitter.php:261
+#: ../../addon/smileybutton/smileybutton.php:211
+#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
+#: ../../addon/pumpio/pumpio.php:219 ../../addon/pumpio/pumpio.php:223
+#: ../../addon/pumpio/pumpio.php:227 ../../addon/pumpio/pumpio.php:231
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145
+msgid "Yes"
+msgstr "Ja"
+
+#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:241
+msgid "Open link in new window"
+msgstr "Öffne Link in neuem Fenster"
+
+#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242
+msgid "Order in list"
+msgstr "Reihenfolge in der Liste"
+
+#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Größere Nummern werden weiter unten in der Auflistung einsortiert"
+
+#: ../../Zotlabs/Module/Mitem.php:165
+msgid "Submit and finish"
+msgstr "Absenden und fertigstellen"
+
+#: ../../Zotlabs/Module/Mitem.php:166
+msgid "Submit and continue"
+msgstr "Absenden und fortfahren"
+
+#: ../../Zotlabs/Module/Mitem.php:174
+msgid "Menu:"
+msgstr "Menü:"
+
+#: ../../Zotlabs/Module/Mitem.php:177
+msgid "Link Target"
+msgstr "Ziel des Links"
+
+#: ../../Zotlabs/Module/Mitem.php:180
+msgid "Edit menu"
+msgstr "Menü bearbeiten"
+
+#: ../../Zotlabs/Module/Mitem.php:183
+msgid "Edit element"
+msgstr "Bestandteil bearbeiten"
+
+#: ../../Zotlabs/Module/Mitem.php:184
+msgid "Drop element"
+msgstr "Bestandteil löschen"
+
+#: ../../Zotlabs/Module/Mitem.php:185
+msgid "New element"
+msgstr "Neues Bestandteil"
+
+#: ../../Zotlabs/Module/Mitem.php:186
+msgid "Edit this menu container"
+msgstr "Diesen Menü-Container bearbeiten"
+
+#: ../../Zotlabs/Module/Mitem.php:187
+msgid "Add menu element"
+msgstr "Menüelement hinzufügen"
+
+#: ../../Zotlabs/Module/Mitem.php:188
+msgid "Delete this menu item"
+msgstr "Lösche dieses Menü-Bestandteil"
+
+#: ../../Zotlabs/Module/Mitem.php:189
+msgid "Edit this menu item"
+msgstr "Bearbeite dieses Menü-Bestandteil"
+
+#: ../../Zotlabs/Module/Mitem.php:206
+msgid "Menu item not found."
+msgstr "Menü-Bestandteil nicht gefunden."
+
+#: ../../Zotlabs/Module/Mitem.php:219
+msgid "Menu item deleted."
+msgstr "Menü-Bestandteil gelöscht."
+
+#: ../../Zotlabs/Module/Mitem.php:221
+msgid "Menu item could not be deleted."
+msgstr "Menü-Bestandteil kann nicht gelöscht werden."
+
+#: ../../Zotlabs/Module/Mitem.php:228
+msgid "Edit Menu Element"
+msgstr "Bearbeite Menü-Bestandteil"
+
+#: ../../Zotlabs/Module/Mitem.php:238
+msgid "Link text"
+msgstr "Link Text"
+
+#: ../../Zotlabs/Module/Events.php:25
+msgid "Calendar entries imported."
+msgstr "Kalendereinträge wurden importiert."
+
+#: ../../Zotlabs/Module/Events.php:27
+msgid "No calendar entries found."
+msgstr "Keine Kalendereinträge gefunden."
+
+#: ../../Zotlabs/Module/Events.php:110
+msgid "Event can not end before it has started."
+msgstr "Termin-Ende liegt vor dem Beginn."
+
+#: ../../Zotlabs/Module/Events.php:112 ../../Zotlabs/Module/Events.php:121
+#: ../../Zotlabs/Module/Events.php:143
+msgid "Unable to generate preview."
+msgstr "Vorschau konnte nicht erzeugt werden."
+
+#: ../../Zotlabs/Module/Events.php:119
+msgid "Event title and start time are required."
+msgstr "Titel und Startzeit des Termins sind erforderlich."
+
+#: ../../Zotlabs/Module/Events.php:141 ../../Zotlabs/Module/Events.php:265
+msgid "Event not found."
+msgstr "Termin nicht gefunden."
+
+#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
+#: ../../Zotlabs/Module/Like.php:385 ../../include/conversation.php:119
+#: ../../include/text.php:2007 ../../include/event.php:1153
+msgid "event"
+msgstr "Termin"
+
+#: ../../Zotlabs/Module/Events.php:460
+msgid "Edit event title"
+msgstr "Termintitel bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465
+#: ../../Zotlabs/Module/Appman.php:140 ../../Zotlabs/Module/Appman.php:141
+#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752
+#: ../../include/datetime.php:205
+msgid "Required"
+msgstr "Benötigt"
+
+#: ../../Zotlabs/Module/Events.php:462
+msgid "Categories (comma-separated list)"
+msgstr "Kategorien (Kommagetrennte Liste)"
+
+#: ../../Zotlabs/Module/Events.php:463
+msgid "Edit Category"
+msgstr "Kategorie bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:463
+msgid "Category"
+msgstr "Kategorie"
+
+#: ../../Zotlabs/Module/Events.php:466
+msgid "Edit start date and time"
+msgstr "Startdatum und -zeit bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:470
+msgid "Finish date and time are not known or not relevant"
+msgstr "Enddatum und -zeit sind unbekannt oder irrelevant"
+
+#: ../../Zotlabs/Module/Events.php:469
+msgid "Edit finish date and time"
+msgstr "Enddatum und -zeit bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:469
+msgid "Finish date and time"
+msgstr "Enddatum und -zeit"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Events.php:472
+msgid "Adjust for viewer timezone"
+msgstr "An die Zeitzone des Betrachters anpassen"
+
+#: ../../Zotlabs/Module/Events.php:471
+msgid ""
+"Important for events that happen in a particular place. Not practical for "
+"global holidays."
+msgstr "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien."
+
+#: ../../Zotlabs/Module/Events.php:473
+msgid "Edit Description"
+msgstr "Beschreibung bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:475
+msgid "Edit Location"
+msgstr "Ort bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1123
+#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:760
+#: ../../include/conversation.php:1330
+msgid "Preview"
+msgstr "Vorschau"
+
+#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1402
+msgid "Permission settings"
+msgstr "Berechtigungs-Einstellungen"
+
+#: ../../Zotlabs/Module/Events.php:489
+msgid "Timezone:"
+msgstr "Zeitzone:"
+
+#: ../../Zotlabs/Module/Events.php:494
+msgid "Advanced Options"
+msgstr "Weitere Optionen"
+
+#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:266
+msgid "l, F j"
+msgstr "l, j. F"
+
+#: ../../Zotlabs/Module/Events.php:633
+msgid "Edit event"
+msgstr "Termin bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:635
+msgid "Delete event"
+msgstr "Termin löschen"
+
+#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:315
+#: ../../include/text.php:1826
+msgid "Link to Source"
+msgstr "Link zur Quelle"
+
+#: ../../Zotlabs/Module/Events.php:669
+msgid "calendar"
+msgstr "Kalender"
+
+#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
+msgid "Edit Event"
+msgstr "Termin bearbeiten"
+
+#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
+msgid "Create Event"
+msgstr "Termin anlegen"
+
+#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341
+#: ../../include/channel.php:1637
+msgid "Export"
+msgstr "Exportieren"
+
+#: ../../Zotlabs/Module/Events.php:731
+msgid "Event removed"
+msgstr "Termin gelöscht"
+
+#: ../../Zotlabs/Module/Events.php:734
+msgid "Failed to remove event"
+msgstr "Termin konnte nicht gelöscht werden"
+
+#: ../../Zotlabs/Module/Appman.php:38 ../../Zotlabs/Module/Appman.php:55
+msgid "App installed."
+msgstr "App installiert."
+
+#: ../../Zotlabs/Module/Appman.php:48
+msgid "Malformed app."
+msgstr "Fehlerhafte App."
+
+#: ../../Zotlabs/Module/Appman.php:129
+msgid "Embed code"
+msgstr "Code einbetten"
+
+#: ../../Zotlabs/Module/Appman.php:135
+msgid "Edit App"
+msgstr "App bearbeiten"
+
+#: ../../Zotlabs/Module/Appman.php:135
+msgid "Create App"
+msgstr "App erstellen"
+
+#: ../../Zotlabs/Module/Appman.php:140
+msgid "Name of app"
+msgstr "Name der App"
+
+#: ../../Zotlabs/Module/Appman.php:141
+msgid "Location (URL) of app"
+msgstr "Ort (URL) der App"
+
+#: ../../Zotlabs/Module/Appman.php:143
+msgid "Photo icon URL"
+msgstr "URL zum Icon"
+
+#: ../../Zotlabs/Module/Appman.php:143
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 Pixel – optional"
+
+#: ../../Zotlabs/Module/Appman.php:144
+msgid "Categories (optional, comma separated list)"
+msgstr "Kategorien (optional, kommagetrennte Liste)"
+
+#: ../../Zotlabs/Module/Appman.php:145
+msgid "Version ID"
+msgstr "Versions-ID"
+
+#: ../../Zotlabs/Module/Appman.php:146
+msgid "Price of app"
+msgstr "Preis der App"
+
+#: ../../Zotlabs/Module/Appman.php:147
+msgid "Location (URL) to purchase app"
+msgstr "Ort (URL), um die App zu kaufen"
+
+#: ../../Zotlabs/Module/Regmod.php:15
+msgid "Please login."
+msgstr "Bitte melde dich an."
+
+#: ../../Zotlabs/Module/Magic.php:72
+msgid "Hub not found."
+msgstr "Server nicht gefunden."
+
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
+#: ../../Zotlabs/Module/Like.php:383
+#: ../../addon/redphotos/redphotohelper.php:71
+#: ../../addon/diaspora/Receiver.php:1518 ../../addon/pubcrawl/as.php:1359
+#: ../../include/conversation.php:116 ../../include/text.php:2004
+msgid "photo"
+msgstr "Foto"
+
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:383
+#: ../../addon/diaspora/Receiver.php:1518 ../../addon/pubcrawl/as.php:1359
+#: ../../include/conversation.php:144 ../../include/text.php:2010
+msgid "status"
+msgstr "Status"
+
+#: ../../Zotlabs/Module/Subthread.php:142
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s folgt nun %2$ss %3$s"
+
+#: ../../Zotlabs/Module/Subthread.php:144
+#, php-format
+msgid "%1$s stopped following %2$s's %3$s"
+msgstr "%1$s folgt %2$ss %3$s nicht mehr"
+
+#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:62
+#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75
+#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41
+#: ../../Zotlabs/Module/Card_edit.php:44
+msgid "Channel not found."
+msgstr "Kanal nicht gefunden."
+
+#: ../../Zotlabs/Module/Article_edit.php:101
+#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:207
+#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
+#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
+#: ../../include/conversation.php:1278
+msgid "Insert web link"
+msgstr "Link einfügen"
+
+#: ../../Zotlabs/Module/Article_edit.php:117
+#: ../../Zotlabs/Module/Editblock.php:129
+#: ../../Zotlabs/Module/Card_edit.php:117 ../../include/conversation.php:1398
+msgid "Title (optional)"
+msgstr "Titel (optional)"
+
+#: ../../Zotlabs/Module/Article_edit.php:128
+msgid "Edit Article"
+msgstr "Artikel bearbeiten"
+
+#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:64
+msgid "Nothing to import."
+msgstr "Nichts zu importieren."
+
+#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:79
+#: ../../Zotlabs/Module/Import.php:95
+msgid "Unable to download data from old server"
+msgstr "Daten können vom alten Server nicht heruntergeladen werden"
+
+#: ../../Zotlabs/Module/Import_items.php:77
+#: ../../Zotlabs/Module/Import.php:102
+msgid "Imported file is empty."
+msgstr "Die importierte Datei ist leer."
+
+#: ../../Zotlabs/Module/Import_items.php:93
+#: ../../Zotlabs/Module/Import.php:121
+#, php-format
+msgid "Warning: Database versions differ by %1$d updates."
+msgstr "Achtung: Datenbankversionen unterscheiden sich um %1$d Aktualisierungen."
+
+#: ../../Zotlabs/Module/Import_items.php:108
+msgid "Import completed"
+msgstr "Import abgeschlossen"
+
+#: ../../Zotlabs/Module/Import_items.php:125
+msgid "Import Items"
+msgstr "Beiträge importieren"
+
+#: ../../Zotlabs/Module/Import_items.php:126
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren."
+
+#: ../../Zotlabs/Module/Import_items.php:127
+#: ../../Zotlabs/Module/Import.php:516
+msgid "File to Upload"
+msgstr "Hochzuladende Datei:"
+
+#: ../../Zotlabs/Module/New_channel.php:119
+#: ../../Zotlabs/Module/Manage.php:138
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."
+
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:254
+msgid "Name or caption"
+msgstr "Name oder Titel"
+
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:254
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
+msgstr "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ "
+
+#: ../../Zotlabs/Module/New_channel.php:134
+#: ../../Zotlabs/Module/Register.php:256
+msgid "Choose a short nickname"
+msgstr "Wähle einen kurzen Spitznamen"
+
+#: ../../Zotlabs/Module/New_channel.php:134
+#: ../../Zotlabs/Module/Register.php:256
+#, php-format
+msgid ""
+"Your nickname will be used to create an easy to remember channel address "
+"e.g. nickname%s"
+msgstr "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst, z.B. nickname%s"
+
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
+msgid "Channel role and privacy"
+msgstr "Kanaltyp und Privatspäre-Einstellungen"
+
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
+msgid "Select a channel role with your privacy requirements."
+msgstr "Wähle einen passenden Kanaltyp mit den zugehörigen Voreinstellungen zur Privatsphäre."
+
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
+msgid "Read more about roles"
+msgstr "Mehr Informationen über Rollen"
+
+#: ../../Zotlabs/Module/New_channel.php:138
+msgid "Create Channel"
+msgstr "Einen neuen Kanal anlegen"
+
+#: ../../Zotlabs/Module/New_channel.php:139
+msgid ""
+"A channel is your identity on this network. It can represent a person, a "
+"blog, or a forum to name a few. Channels can make connections with other "
+"channels to share information with highly detailed permissions."
+msgstr "Ein Kanal ist Deine Identität in diesem Netzwerk. Er kann eine Person, ein Blog oder ein Forum repräsentieren, nur um ein paar Beispiele zu nennen. Kanäle können Verbindungen miteinander eingehen, um Informationen zu teilen, jeweils basierend auf sehr detaillierten Berechtigungseinstellungen."
+
+#: ../../Zotlabs/Module/New_channel.php:140
+msgid ""
+"or <a href=\"import\">import an existing channel</a> from another location."
+msgstr "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server."
+
+#: ../../Zotlabs/Module/New_channel.php:145
+msgid "Validate"
+msgstr "Überprüfe"
+
+#: ../../Zotlabs/Module/Removeme.php:35
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden."
+
+#: ../../Zotlabs/Module/Removeme.php:60
+msgid "Remove This Channel"
+msgstr "Diesen Kanal löschen"
+
+#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Changeaddr.php:78
+msgid "WARNING: "
+msgstr "WARNUNG: "
+
+#: ../../Zotlabs/Module/Removeme.php:61
+msgid "This channel will be completely removed from the network. "
+msgstr "Dieser Kanal wird vollständig aus dem Netzwerk gelöscht."
+
+#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:58
+msgid "This action is permanent and can not be undone!"
+msgstr "Dieser Schritt ist endgültig und kann nicht rückgängig gemacht werden!"
+
+#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:59
+#: ../../Zotlabs/Module/Changeaddr.php:79
+msgid "Please enter your password for verification:"
+msgstr "Bitte gib zur Bestätigung Dein Passwort ein:"
+
+#: ../../Zotlabs/Module/Removeme.php:63
+msgid "Remove this channel and all its clones from the network"
+msgstr "Lösche diesen Kanal und all seine Klone aus dem Netzwerk"
+
+#: ../../Zotlabs/Module/Removeme.php:63
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk"
+
+#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Settings/Channel.php:592
+msgid "Remove Channel"
+msgstr "Kanal löschen"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:104
+msgid "Files: shared with me"
+msgstr "Dateien, die mit mir geteilt wurden"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:106
+msgid "NEW"
+msgstr "NEU"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:107
+#: ../../Zotlabs/Storage/Browser.php:285 ../../include/text.php:1434
+msgid "Size"
+msgstr "Größe"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:108
+#: ../../Zotlabs/Storage/Browser.php:286
+msgid "Last Modified"
+msgstr "Zuletzt geändert"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:109
+msgid "Remove all files"
+msgstr "Alle Dateien löschen"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:110
+msgid "Remove this file"
+msgstr "Diese Datei löschen"
+
+#: ../../Zotlabs/Module/Setup.php:170
+msgid "$Projectname Server - Setup"
+msgstr "$Projectname Server-Einrichtung"
+
+#: ../../Zotlabs/Module/Setup.php:174
+msgid "Could not connect to database."
+msgstr "Kann nicht mit der Datenbank verbinden."
+
+#: ../../Zotlabs/Module/Setup.php:178
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS."
+
+#: ../../Zotlabs/Module/Setup.php:185
+msgid "Could not create table."
+msgstr "Konnte Tabelle nicht erstellen."
+
+#: ../../Zotlabs/Module/Setup.php:191
+msgid "Your site database has been installed."
+msgstr "Die Datenbank Deines Hubs wurde installiert."
+
+#: ../../Zotlabs/Module/Setup.php:197
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren."
+
+#: ../../Zotlabs/Module/Setup.php:198 ../../Zotlabs/Module/Setup.php:262
+#: ../../Zotlabs/Module/Setup.php:745
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Lies die Datei \"install/INSTALL.txt\"."
+
+#: ../../Zotlabs/Module/Setup.php:259
+msgid "System check"
+msgstr "Systemprüfung"
+
+#: ../../Zotlabs/Module/Setup.php:264
+msgid "Check again"
+msgstr "Nochmal prüfen"
+
+#: ../../Zotlabs/Module/Setup.php:286
+msgid "Database connection"
+msgstr "Datenbankverbindung"
+
+#: ../../Zotlabs/Module/Setup.php:287
+msgid ""
+"In order to install $Projectname we need to know how to connect to your "
+"database."
+msgstr "Um $Projectname zu installieren, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können."
+
+#: ../../Zotlabs/Module/Setup.php:288
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast."
+
+#: ../../Zotlabs/Module/Setup.php:289
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst."
+
+#: ../../Zotlabs/Module/Setup.php:293
+msgid "Database Server Name"
+msgstr "Datenbankservername"
+
+#: ../../Zotlabs/Module/Setup.php:293
+msgid "Default is 127.0.0.1"
+msgstr "Standard ist 127.0.0.1"
+
+#: ../../Zotlabs/Module/Setup.php:294
+msgid "Database Port"
+msgstr "Datenbankport"
+
+#: ../../Zotlabs/Module/Setup.php:294
+msgid "Communication port number - use 0 for default"
+msgstr "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung"
+
+#: ../../Zotlabs/Module/Setup.php:295
+msgid "Database Login Name"
+msgstr "Datenbank-Benutzername"
+
+#: ../../Zotlabs/Module/Setup.php:296
+msgid "Database Login Password"
+msgstr "Datenbank-Passwort"
+
+#: ../../Zotlabs/Module/Setup.php:297
+msgid "Database Name"
+msgstr "Datenbankname"
+
+#: ../../Zotlabs/Module/Setup.php:298
+msgid "Database Type"
+msgstr "Datenbanktyp"
+
+#: ../../Zotlabs/Module/Setup.php:300 ../../Zotlabs/Module/Setup.php:341
+msgid "Site administrator email address"
+msgstr "E-Mail Adresse des Seiten-Administrators"
+
+#: ../../Zotlabs/Module/Setup.php:300 ../../Zotlabs/Module/Setup.php:341
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "Die E-Mail-Adresse Deines Kontos muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst."
+
+#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:343
+msgid "Website URL"
+msgstr "Webseiten-URL"
+
+#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:343
+msgid "Please use SSL (https) URL if available."
+msgstr "Nutze wenn möglich eine SSL-URL (https)."
+
+#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:345
+msgid "Please select a default timezone for your website"
+msgstr "Standard-Zeitzone für Deinen Server"
+
+#: ../../Zotlabs/Module/Setup.php:330
+msgid "Site settings"
+msgstr "Seiteneinstellungen"
+
+#: ../../Zotlabs/Module/Setup.php:384
+msgid "PHP version 5.5 or greater is required."
+msgstr "PHP-Version 5.5 oder höher ist erforderlich."
+
+#: ../../Zotlabs/Module/Setup.php:385
+msgid "PHP version"
+msgstr "PHP-Version"
+
+#: ../../Zotlabs/Module/Setup.php:401
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden."
+
+#: ../../Zotlabs/Module/Setup.php:402
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen."
+
+#: ../../Zotlabs/Module/Setup.php:406
+msgid "PHP executable path"
+msgstr "PHP-Pfad zu ausführbarer Datei"
+
+#: ../../Zotlabs/Module/Setup.php:406
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren."
+
+#: ../../Zotlabs/Module/Setup.php:411
+msgid "Command line PHP"
+msgstr "PHP-Befehlszeile"
+
+#: ../../Zotlabs/Module/Setup.php:421
+msgid ""
+"Unable to check command line PHP, as shell_exec() is disabled. This is "
+"required."
+msgstr "Prüfung auf Kommandozeilen-PHP fehlgeschlagen, da shell_exec() deaktiviert ist. Dies wird aber benötigt."
+
+#: ../../Zotlabs/Module/Setup.php:424
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert."
+
+#: ../../Zotlabs/Module/Setup.php:425
+msgid "This is required for message delivery to work."
+msgstr "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert."
+
+#: ../../Zotlabs/Module/Setup.php:428
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
+
+#: ../../Zotlabs/Module/Setup.php:446
+#, php-format
+msgid ""
+"Your max allowed total upload size is set to %s. Maximum size of one file to"
+" upload is set to %s. You are allowed to upload up to %d files at once."
+msgstr "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden."
+
+#: ../../Zotlabs/Module/Setup.php:451
+msgid "You can adjust these settings in the server php.ini file."
+msgstr "Du kannst diese Einstellungen in der php.ini - Datei des Servers anpassen."
+
+#: ../../Zotlabs/Module/Setup.php:453
+msgid "PHP upload limits"
+msgstr "PHP-Hochladebeschränkungen"
+
+#: ../../Zotlabs/Module/Setup.php:476
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen."
+
+#: ../../Zotlabs/Module/Setup.php:477
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung."
+
+#: ../../Zotlabs/Module/Setup.php:480
+msgid "Generate encryption keys"
+msgstr "Verschlüsselungsschlüssel erzeugen"
+
+#: ../../Zotlabs/Module/Setup.php:497
+msgid "libCurl PHP module"
+msgstr "libCurl-PHP-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:498
+msgid "GD graphics PHP module"
+msgstr "GD-Grafik-PHP-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:499
+msgid "OpenSSL PHP module"
+msgstr "OpenSSL-PHP-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:500
+msgid "PDO database PHP module"
+msgstr "PDO-Datenbank-PHP-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:501
+msgid "mb_string PHP module"
+msgstr "mb_string-PHP-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:502
+msgid "xml PHP module"
+msgstr "xml-PHP-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:503
+msgid "zip PHP module"
+msgstr "zip PHP Modul"
+
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
+msgid "Apache mod_rewrite module"
+msgstr "Apache-mod_rewrite-Modul"
+
+#: ../../Zotlabs/Module/Setup.php:507
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
+msgid "exec"
+msgstr "exec"
+
+#: ../../Zotlabs/Module/Setup.php:513
+msgid ""
+"Error: exec is required but is either not installed or has been disabled in "
+"php.ini"
+msgstr "Fehler: exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
+
+#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
+msgid "shell_exec"
+msgstr "shell_exec"
+
+#: ../../Zotlabs/Module/Setup.php:519
+msgid ""
+"Error: shell_exec is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Fehler: shell_exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
+
+#: ../../Zotlabs/Module/Setup.php:527
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:531
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:535
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:539
+msgid "Error: PDO database PHP module required but not installed."
+msgstr "Fehler: PDO-Datenbank-PHP-Modul ist erforderlich, aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:543
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:547
+msgid "Error: xml PHP module required for DAV but not installed."
+msgstr "Fehler: Das xml-PHP-Modul wird für DAV benötigt, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:551
+msgid "Error: zip PHP module required but not installed."
+msgstr "Fehler: Das zip PHP Modul ist erforderlich, ist aber nicht installiert."
+
+#: ../../Zotlabs/Module/Setup.php:569
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht."
+
+#: ../../Zotlabs/Module/Setup.php:570
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst."
+
+#: ../../Zotlabs/Module/Setup.php:571
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst."
+
+#: ../../Zotlabs/Module/Setup.php:572
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt."
+
+#: ../../Zotlabs/Module/Setup.php:575
+msgid ".htconfig.php is writable"
+msgstr ".htconfig.php ist beschreibbar"
+
+#: ../../Zotlabs/Module/Setup.php:589
+msgid ""
+"This software uses the Smarty3 template engine to render its web views. "
+"Smarty3 compiles templates to PHP to speed up rendering."
+msgstr "Diese Software verwendet die Smarty3 Template Engine, um Vorlagen für die Webdarstellung zu verarbeiten. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."
+
+#: ../../Zotlabs/Module/Setup.php:590
+#, php-format
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the top level web folder."
+msgstr "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses."
+
+#: ../../Zotlabs/Module/Setup.php:591 ../../Zotlabs/Module/Setup.php:612
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat."
+
+#: ../../Zotlabs/Module/Setup.php:592
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält."
+
+#: ../../Zotlabs/Module/Setup.php:595
+#, php-format
+msgid "%s is writable"
+msgstr "%s ist beschreibbar"
+
+#: ../../Zotlabs/Module/Setup.php:611
+msgid ""
+"This software uses the store directory to save uploaded files. The web "
+"server needs to have write access to the store directory under the top level"
+" web folder"
+msgstr "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Web-Stammverzeichnisses."
+
+#: ../../Zotlabs/Module/Setup.php:615
+msgid "store is writable"
+msgstr "store ist schreibbar"
+
+#: ../../Zotlabs/Module/Setup.php:647
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server."
+
+#: ../../Zotlabs/Module/Setup.php:648
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich."
+
+#: ../../Zotlabs/Module/Setup.php:649
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können."
+
+#: ../../Zotlabs/Module/Setup.php:650
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer $Projectname-Hubs (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird)."
+
+#: ../../Zotlabs/Module/Setup.php:651
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen."
+
+#: ../../Zotlabs/Module/Setup.php:652
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind."
+
+#: ../../Zotlabs/Module/Setup.php:654
+msgid ""
+"If you are confident that the certificate is valid and signed by a trusted "
+"authority, check to see if you have failed to install an intermediate cert. "
+"These are not normally required by browsers, but are required for server-to-"
+"server communications."
+msgstr "Wenn Du sicher bist, dass das Zertifikat gültig und von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, prüfe auf ggf. noch zu installierende Zwischenzertifikate (intermediate). Diese werden nicht unbedingt von Browsern benötigt, aber sehr wohl für die Kommunikation zwischen Servern."
+
+#: ../../Zotlabs/Module/Setup.php:656
+msgid "SSL certificate validation"
+msgstr "SSL Zertifikatverifizierung"
+
+#: ../../Zotlabs/Module/Setup.php:662
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:"
+
+#: ../../Zotlabs/Module/Setup.php:665
+msgid "Url rewrite is working"
+msgstr "Url rewrite funktioniert"
+
+#: ../../Zotlabs/Module/Setup.php:679
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen."
+
+#: ../../Zotlabs/Module/Setup.php:703
+#: ../../addon/rendezvous/rendezvous.php:401
+msgid "Errors encountered creating database tables."
+msgstr "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten."
+
+#: ../../Zotlabs/Module/Setup.php:743
+msgid "<h1>What next?</h1>"
+msgstr "<h1>Wie geht es jetzt weiter?</h1>"
+
+#: ../../Zotlabs/Module/Setup.php:744
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten."
+
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
+msgid "Continue"
+msgstr "Fortfahren"
+
+#: ../../Zotlabs/Module/Connect.php:90
+msgid "Premium Channel Setup"
+msgstr "Premium-Kanal-Einrichtung"
+
+#: ../../Zotlabs/Module/Connect.php:92
+msgid "Enable premium channel connection restrictions"
+msgstr "Einschränkungen für einen Premium-Kanal aktivieren"
+
+#: ../../Zotlabs/Module/Connect.php:93
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc."
+
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig."
+
+#: ../../Zotlabs/Module/Connect.php:96
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:"
+
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite."
+
+#: ../../Zotlabs/Module/Connect.php:106
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"
+
+#: ../../Zotlabs/Module/Connect.php:114
+msgid "Restricted or Premium Channel"
+msgstr "Eingeschränkter oder Premium-Kanal"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:35
+msgid "Queue Statistics"
+msgstr "Warteschlangenstatistiken"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:36
+msgid "Total Entries"
+msgstr "Einträge insgesamt"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:37
+msgid "Priority"
+msgstr "Priorität"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:38
+msgid "Destination URL"
+msgstr "Ziel-URL"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:39
+msgid "Mark hub permanently offline"
+msgstr "Hub als permanent offline markieren"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:40
+msgid "Empty queue for this hub"
+msgstr "Warteschlange für diesen Hub leeren"
+
+#: ../../Zotlabs/Module/Admin/Queue.php:41
+msgid "Last known contact"
+msgstr "Letzter Kontakt"
+
+#: ../../Zotlabs/Module/Admin/Features.php:55
+#: ../../Zotlabs/Module/Admin/Features.php:56
+#: ../../Zotlabs/Module/Settings/Features.php:38
+msgid "Off"
+msgstr "Aus"
+
+#: ../../Zotlabs/Module/Admin/Features.php:55
+#: ../../Zotlabs/Module/Admin/Features.php:56
+#: ../../Zotlabs/Module/Settings/Features.php:38
+msgid "On"
+msgstr "An"
+
+#: ../../Zotlabs/Module/Admin/Features.php:56
+#, php-format
+msgid "Lock feature %s"
+msgstr "Blockiere die Funktion %s"
+
+#: ../../Zotlabs/Module/Admin/Features.php:64
+msgid "Manage Additional Features"
+msgstr "Zusätzliche Funktionen verwalten"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:19
+msgid "Update has been marked successful"
+msgstr "Update wurde als erfolgreich markiert"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:31
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle."
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:34
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "Update %s wurde erfolgreich ausgeführt."
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:38
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt."
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:41
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "Update-Funktion %s konnte nicht gefunden werden."
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:59
+msgid "Failed Updates"
+msgstr "Fehlgeschlagene Aktualisierungen"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:61
+msgid "Mark success (if update was manually applied)"
+msgstr "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:62
+msgid "Attempt to execute this update step automatically"
+msgstr "Versuche, diesen Updateschritt automatisch auszuführen"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:67
+msgid "No failed updates."
+msgstr "Keine fehlgeschlagenen Aktualisierungen."
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:259
+#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:46
+#: ../../Zotlabs/Module/Display.php:410
+#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Admin.php:62
+#: ../../include/items.php:3569
+msgid "Item not found."
+msgstr "Element nicht gefunden."
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:289
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plug-In %s deaktiviert."
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:294
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plug-In %s aktiviert."
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:310
+#: ../../Zotlabs/Module/Admin/Themes.php:95
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:313
+#: ../../Zotlabs/Module/Admin/Themes.php:97
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:341
+#: ../../Zotlabs/Module/Admin/Plugins.php:436
+#: ../../Zotlabs/Module/Admin/Accounts.php:165
+#: ../../Zotlabs/Module/Admin/Logs.php:82
+#: ../../Zotlabs/Module/Admin/Channels.php:145
+#: ../../Zotlabs/Module/Admin/Themes.php:122
+#: ../../Zotlabs/Module/Admin/Themes.php:156
+#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Security.php:86
+#: ../../Zotlabs/Module/Admin.php:136
+msgid "Administration"
+msgstr "Administration"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:342
+#: ../../Zotlabs/Module/Admin/Plugins.php:437
+#: ../../Zotlabs/Widget/Admin.php:27
+msgid "Plugins"
+msgstr "Plug-Ins"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:343
+#: ../../Zotlabs/Module/Admin/Themes.php:124
+msgid "Toggle"
+msgstr "Umschalten"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:344
+#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:242
+#: ../../Zotlabs/Widget/Newmember.php:55
+#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:105
+#: ../../include/nav.php:192
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:351
+#: ../../Zotlabs/Module/Admin/Themes.php:134
+msgid "Author: "
+msgstr "Autor: "
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:352
+#: ../../Zotlabs/Module/Admin/Themes.php:135
+msgid "Maintainer: "
+msgstr "Betreuer:"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:353
+msgid "Minimum project version: "
+msgstr "Minimale Version des Projekts:"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:354
+msgid "Maximum project version: "
+msgstr "Maximale Version des Projekts:"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:355
+msgid "Minimum PHP version: "
+msgstr "Minimale PHP Version:"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:356
+msgid "Compatible Server Roles: "
+msgstr "Kompatible Serverrollen: "
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:357
+msgid "Requires: "
+msgstr "Benötigt:"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:358
+#: ../../Zotlabs/Module/Admin/Plugins.php:442
+msgid "Disabled - version incompatibility"
+msgstr "Abgeschaltet - Versionsinkompatibilität"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:411
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr "Gib die öffentliche Git-Repository-URL des Plugin-Repository an."
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:412
+msgid "Plugin repo git URL"
+msgstr "Plugin-Repository Git URL"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:413
+msgid "Custom repo name"
+msgstr "Benutzerdefinierter Repository-Name"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:413
+msgid "(optional)"
+msgstr "(optional)"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:414
+msgid "Download Plugin Repo"
+msgstr "Plugin-Repository herunterladen"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:421
+msgid "Install new repo"
+msgstr "Neues Repository installieren"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:393
+msgid "Install"
+msgstr "Installieren"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:445
+msgid "Manage Repos"
+msgstr "Repositorien verwalten"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:446
+msgid "Installed Plugin Repositories"
+msgstr "Installierte Plugin-Repositorien"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:447
+msgid "Install a New Plugin Repository"
+msgstr "Ein neues Plugin-Repository installieren"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:454
+msgid "Switch branch"
+msgstr "Zweig/Branch wechseln"
+
+#: ../../Zotlabs/Module/Admin/Plugins.php:455
+#: ../../Zotlabs/Module/Photos.php:1020 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../addon/superblock/superblock.php:116
+msgid "Remove"
+msgstr "Entfernen"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:37
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "%s Konto blockiert/freigegeben"
+msgstr[1] "%s Konten blockiert/freigegeben"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:44
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s Konto gelöscht"
+msgstr[1] "%s Konten gelöscht"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:80
+msgid "Account not found"
+msgstr "Konto nicht gefunden"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2462
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "Konto '%s' gelöscht"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:99
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "Konto '%s' blockiert"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:107
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "Konto '%s' freigegeben"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:166
+#: ../../Zotlabs/Module/Admin/Accounts.php:179
+#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23
+msgid "Accounts"
+msgstr "Konten"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:168
+#: ../../Zotlabs/Module/Admin/Channels.php:148
+msgid "select all"
+msgstr "Alle auswählen"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:169
+msgid "Registrations waiting for confirm"
+msgstr "Registrierungen warten auf Bestätigung"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
+msgid "Request date"
+msgstr "Antragsdatum"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:171
+msgid "No registrations."
+msgstr "Keine Registrierungen."
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:172
+#: ../../Zotlabs/Module/Connections.php:287 ../../include/conversation.php:732
+msgid "Approve"
+msgstr "Genehmigen"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:173
+msgid "Deny"
+msgstr "Verweigern"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:175
+#: ../../Zotlabs/Module/Connedit.php:622
+msgid "Block"
+msgstr "Blockieren"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:176
+#: ../../Zotlabs/Module/Connedit.php:622
+msgid "Unblock"
+msgstr "Freigeben"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:181
+msgid "ID"
+msgstr "ID"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:183 ../../include/group.php:284
+msgid "All Channels"
+msgstr "Alle Kanäle"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:184
+msgid "Register date"
+msgstr "Registrierungs-Datum"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:185
+msgid "Last login"
+msgstr "Letzte Anmeldung"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:186
+msgid "Expires"
+msgstr "Verfällt"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:187
+msgid "Service Class"
+msgstr "Service-Klasse"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:189
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:190
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?"
+
+#: ../../Zotlabs/Module/Admin/Logs.php:28
+msgid "Log settings updated."
+msgstr "Protokoll-Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48
+#: ../../Zotlabs/Widget/Admin.php:58
+msgid "Logs"
+msgstr "Protokolle"
+
+#: ../../Zotlabs/Module/Admin/Logs.php:85
+msgid "Clear"
+msgstr "Leeren"
+
+#: ../../Zotlabs/Module/Admin/Logs.php:91
+msgid "Debugging"
+msgstr "Debugging"
+
+#: ../../Zotlabs/Module/Admin/Logs.php:92
+msgid "Log file"
+msgstr "Protokolldatei"
+
+#: ../../Zotlabs/Module/Admin/Logs.php:92
+msgid ""
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis."
+
+#: ../../Zotlabs/Module/Admin/Logs.php:93
+msgid "Log level"
+msgstr "Protokollstufe"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:31
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s Kanal gesperrt/freigegeben"
+msgstr[1] "%s Kanäle gesperrt/freigegeben"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:40
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] "Code für %s Kanal gesperrt/freigegeben"
+msgstr[1] "Code für %s Kanäle gesperrt/freigegeben"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:46
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s Kanal gelöscht"
+msgstr[1] "%s Kanäle gelöscht"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:65
+msgid "Channel not found"
+msgstr "Kanal nicht gefunden"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:75
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Kanal '%s' gelöscht"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:87
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Kanal '%s' gesperrt"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:87
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Kanal '%s' freigegeben"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:98
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr "Code für Kanal '%s' freigegeben"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:98
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Code für Kanal '%s' gesperrt"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:146
+#: ../../Zotlabs/Module/Admin.php:110 ../../Zotlabs/Widget/Admin.php:24
+msgid "Channels"
+msgstr "Kanäle"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:150
+msgid "Censor"
+msgstr "Sperren"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:151
+msgid "Uncensor"
+msgstr "Freigeben"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:152
+msgid "Allow Code"
+msgstr "Code erlauben"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:153
+msgid "Disallow Code"
+msgstr "Code sperren"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:154
+#: ../../include/conversation.php:1808 ../../include/nav.php:378
+msgid "Channel"
+msgstr "Kanal"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:158
+msgid "UID"
+msgstr "UID"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:162
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?"
+
+#: ../../Zotlabs/Module/Admin/Channels.php:163
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?"
+
+#: ../../Zotlabs/Module/Admin/Themes.php:26
+msgid "Theme settings updated."
+msgstr "Design-Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin/Themes.php:61
+msgid "No themes found."
+msgstr "Keine Designs gefunden."
+
+#: ../../Zotlabs/Module/Admin/Themes.php:116
+msgid "Screenshot"
+msgstr "Bildschirmfoto"
+
+#: ../../Zotlabs/Module/Admin/Themes.php:123
+#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28
+msgid "Themes"
+msgstr "Designs"
+
+#: ../../Zotlabs/Module/Admin/Themes.php:162
+msgid "[Experimental]"
+msgstr "[Experimentell]"
+
+#: ../../Zotlabs/Module/Admin/Themes.php:163
+msgid "[Unsupported]"
+msgstr "[Nicht unterstützt]"
+
+#: ../../Zotlabs/Module/Admin/Site.php:158
+msgid "Site settings updated."
+msgstr "Site-Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin/Site.php:184
+#: ../../view/theme/redbasic_c/php/config.php:15
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3082
+msgid "Default"
+msgstr "Standard"
+
+#: ../../Zotlabs/Module/Admin/Site.php:195
+#: ../../Zotlabs/Module/Settings/Display.php:130
+#, php-format
+msgid "%s - (Incompatible)"
+msgstr "%s - (Inkompatibel)"
+
+#: ../../Zotlabs/Module/Admin/Site.php:202
+msgid "mobile"
+msgstr "mobil"
+
+#: ../../Zotlabs/Module/Admin/Site.php:204
+msgid "experimental"
+msgstr "experimentell"
+
+#: ../../Zotlabs/Module/Admin/Site.php:206
+msgid "unsupported"
+msgstr "nicht unterstützt"
+
+#: ../../Zotlabs/Module/Admin/Site.php:253
+msgid "Yes - with approval"
+msgstr "Ja - mit Zustimmung"
+
+#: ../../Zotlabs/Module/Admin/Site.php:259
+msgid "My site is not a public server"
+msgstr "Mein Server ist kein öffentlicher Server"
+
+#: ../../Zotlabs/Module/Admin/Site.php:260
+msgid "My site has paid access only"
+msgstr "Meine Seite hat nur bezahlten Zugriff"
+
+#: ../../Zotlabs/Module/Admin/Site.php:261
+msgid "My site has free access only"
+msgstr "Meine Seite hat nur freien Zugriff"
+
+#: ../../Zotlabs/Module/Admin/Site.php:262
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades"
+
+#: ../../Zotlabs/Module/Admin/Site.php:274
+msgid "Beginner/Basic"
+msgstr "Anfänger/Basis"
+
+#: ../../Zotlabs/Module/Admin/Site.php:275
+msgid "Novice - not skilled but willing to learn"
+msgstr "Anfänger - unerfahren, aber bereit zu lernen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:276
+msgid "Intermediate - somewhat comfortable"
+msgstr "Fortgeschritten - relativ komfortabel"
+
+#: ../../Zotlabs/Module/Admin/Site.php:277
+msgid "Advanced - very comfortable"
+msgstr "Fortgeschritten - sehr komfortabel"
+
+#: ../../Zotlabs/Module/Admin/Site.php:278
+msgid "Expert - I can write computer code"
+msgstr "Experte - Ich kann Computercode schreiben"
+
+#: ../../Zotlabs/Module/Admin/Site.php:279
+msgid "Wizard - I probably know more than you do"
+msgstr "Zauberer - ich kann wahrscheinlich mehr als Du"
+
+#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22
+msgid "Site"
+msgstr "Seite"
+
+#: ../../Zotlabs/Module/Admin/Site.php:290
+#: ../../Zotlabs/Module/Register.php:269
+msgid "Registration"
+msgstr "Registrierung"
+
+#: ../../Zotlabs/Module/Admin/Site.php:291
+msgid "File upload"
+msgstr "Dateiupload"
+
+#: ../../Zotlabs/Module/Admin/Site.php:292
+msgid "Policies"
+msgstr "Richtlinien"
+
+#: ../../Zotlabs/Module/Admin/Site.php:293
+#: ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Fortgeschritten"
+
+#: ../../Zotlabs/Module/Admin/Site.php:297
+#: ../../addon/statusnet/statusnet.php:891
+msgid "Site name"
+msgstr "Seitenname"
+
+#: ../../Zotlabs/Module/Admin/Site.php:299
+msgid "Site default technical skill level"
+msgstr "Standard-Qualifikationsstufe der Website"
+
+#: ../../Zotlabs/Module/Admin/Site.php:299
+msgid "Used to provide a member experience matched to technical comfort level"
+msgstr "Dies wird verwendet, um eine Benutzererfahrung passend zur technischen Qualifikationsstufe zu bieten."
+
+#: ../../Zotlabs/Module/Admin/Site.php:301
+msgid "Lock the technical skill level setting"
+msgstr "Sperre die technische Qualifikationsstufe"
+
+#: ../../Zotlabs/Module/Admin/Site.php:301
+msgid "Members can set their own technical comfort level by default"
+msgstr "Benutzer können standardmäßig ihre eigene technische Qualifikationsstufe einstellen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:303
+msgid "Banner/Logo"
+msgstr "Banner/Logo"
+
+#: ../../Zotlabs/Module/Admin/Site.php:303
+msgid "Unfiltered HTML/CSS/JS is allowed"
+msgstr "Ungefiltertes HTML/CSS/JS ist erlaubt"
+
+#: ../../Zotlabs/Module/Admin/Site.php:304
+msgid "Administrator Information"
+msgstr "Administrator-Informationen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:304
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Siteinfo.php:21
+msgid "Site Information"
+msgstr "Seiteninformationen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:305
+msgid ""
+"Publicly visible description of this site. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:306
+msgid "System language"
+msgstr "System-Sprache"
+
+#: ../../Zotlabs/Module/Admin/Site.php:307
+msgid "System theme"
+msgstr "System-Design"
+
+#: ../../Zotlabs/Module/Admin/Site.php:307
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Standard-System-Design – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Design-Einstellungen ändern</a>"
+
+#: ../../Zotlabs/Module/Admin/Site.php:308
+msgid "Mobile system theme"
+msgstr "System-Design für mobile Geräte:"
+
+#: ../../Zotlabs/Module/Admin/Site.php:308
+msgid "Theme for mobile devices"
+msgstr "Theme für mobile Geräte"
+
+#: ../../Zotlabs/Module/Admin/Site.php:310
+msgid "Allow Feeds as Connections"
+msgstr "Feeds als Verbindungen erlauben"
+
+#: ../../Zotlabs/Module/Admin/Site.php:310
+msgid "(Heavy system resource usage)"
+msgstr "(führt zu hoher Systemlast)"
+
+#: ../../Zotlabs/Module/Admin/Site.php:311
+msgid "Maximum image size"
+msgstr "Maximale Bildgröße"
+
+#: ../../Zotlabs/Module/Admin/Site.php:311
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)."
+
+#: ../../Zotlabs/Module/Admin/Site.php:312
+msgid "Does this site allow new member registration?"
+msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?"
+
+#: ../../Zotlabs/Module/Admin/Site.php:313
+msgid "Invitation only"
+msgstr "Nur mit Einladung"
+
+#: ../../Zotlabs/Module/Admin/Site.php:313
+msgid ""
+"Only allow new member registrations with an invitation code. Above register "
+"policy must be set to Yes."
+msgstr "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:314
+msgid "Minimum age"
+msgstr "Mindestalter"
+
+#: ../../Zotlabs/Module/Admin/Site.php:314
+msgid "Minimum age (in years) for who may register on this site."
+msgstr "Mindestalter (in Jahren) für alle, die sich auf dieser Website anmelden möchten."
+
+#: ../../Zotlabs/Module/Admin/Site.php:315
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?"
+
+#: ../../Zotlabs/Module/Admin/Site.php:316
+msgid "Register text"
+msgstr "Registrierungstext"
+
+#: ../../Zotlabs/Module/Admin/Site.php:316
+msgid "Will be displayed prominently on the registration page."
+msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
+
+#: ../../Zotlabs/Module/Admin/Site.php:317
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)"
+
+#: ../../Zotlabs/Module/Admin/Site.php:317
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen."
+
+#: ../../Zotlabs/Module/Admin/Site.php:318
+msgid "Preserve site homepage URL"
+msgstr "Homepage-URL schützen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:318
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten."
+
+#: ../../Zotlabs/Module/Admin/Site.php:319
+msgid "Accounts abandoned after x days"
+msgstr "Konten gelten nach X Tagen als unbenutzt"
+
+#: ../../Zotlabs/Module/Admin/Site.php:319
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit."
+
+#: ../../Zotlabs/Module/Admin/Site.php:320
+msgid "Allowed friend domains"
+msgstr "Erlaubte Domains für Kontakte"
+
+#: ../../Zotlabs/Module/Admin/Site.php:320
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
+
+#: ../../Zotlabs/Module/Admin/Site.php:321
+msgid "Verify Email Addresses"
+msgstr "E-Mail-Adressen überprüfen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:321
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)."
+
+#: ../../Zotlabs/Module/Admin/Site.php:322
+msgid "Force publish"
+msgstr "Veröffentlichung erzwingen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:322
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen."
+
+#: ../../Zotlabs/Module/Admin/Site.php:323
+msgid "Import Public Streams"
+msgstr "Öffentliche Beiträge importieren"
+
+#: ../../Zotlabs/Module/Admin/Site.php:323
+msgid ""
+"Import and allow access to public content pulled from other sites. Warning: "
+"this content is unmoderated."
+msgstr "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert."
+
+#: ../../Zotlabs/Module/Admin/Site.php:324
+msgid "Site only Public Streams"
+msgstr "Öffentlichen Beitragsstrom auf diesen Server beschränken"
+
+#: ../../Zotlabs/Module/Admin/Site.php:324
+msgid ""
+"Allow access to public content originating only from this site if Imported "
+"Public Streams are disabled."
+msgstr "Erlaubt den Zugriff auf öffentliche Beiträge von ausschließlich dieser Website (diesem Server), wenn \"Öffentliche Beiträge importieren\" ausgeschaltet ist."
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid "Allow anybody on the internet to access the Public streams"
+msgstr "Allen im Internet Zugriff auf den öffentlichen Beitragsstrom erlauben"
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid ""
+"Disable to require authentication before viewing. Warning: this content is "
+"unmoderated."
+msgstr "Deaktiviert die erforderliche Authentifizierung vor dem Ansehen. Warnung: Diese Inhalte sind nicht moderiert."
+
+#: ../../Zotlabs/Module/Admin/Site.php:326
+msgid "Login on Homepage"
+msgstr "Log-in auf der Startseite"
+
+#: ../../Zotlabs/Module/Admin/Site.php:326
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:327
+msgid "Enable context help"
+msgstr "Kontext-Hilfe aktivieren"
+
+#: ../../Zotlabs/Module/Admin/Site.php:327
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird."
+
+#: ../../Zotlabs/Module/Admin/Site.php:329
+msgid "Reply-to email address for system generated email."
+msgstr "Antwortadresse (reply-to) für Emails, die vom System generiert wurden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:330
+msgid "Sender (From) email address for system generated email."
+msgstr "Absenderadresse (from) für Emails, die vom System generiert wurden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:331
+msgid "Name of email sender for system generated email."
+msgstr "Name des Versenders von Emails, die vom System generiert wurden."
+
+#: ../../Zotlabs/Module/Admin/Site.php:333
+msgid "Directory Server URL"
+msgstr "Verzeichnisserver-URL"
+
+#: ../../Zotlabs/Module/Admin/Site.php:333
+msgid "Default directory server"
+msgstr "Standard-Verzeichnisserver"
+
+#: ../../Zotlabs/Module/Admin/Site.php:335
+msgid "Proxy user"
+msgstr "Proxy Benutzer"
+
+#: ../../Zotlabs/Module/Admin/Site.php:336
+msgid "Proxy URL"
+msgstr "Proxy URL"
+
+#: ../../Zotlabs/Module/Admin/Site.php:337
+msgid "Network timeout"
+msgstr "Netzwerk-Timeout"
+
+#: ../../Zotlabs/Module/Admin/Site.php:337
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)."
+
+#: ../../Zotlabs/Module/Admin/Site.php:338
+msgid "Delivery interval"
+msgstr "Auslieferung Intervall"
+
+#: ../../Zotlabs/Module/Admin/Site.php:338
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
+
+#: ../../Zotlabs/Module/Admin/Site.php:339
+msgid "Deliveries per process"
+msgstr "Zustellungen pro Prozess"
+
+#: ../../Zotlabs/Module/Admin/Site.php:339
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust"
+" if necessary to tune system performance. Recommend: 1-5."
+msgstr "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5."
+
+#: ../../Zotlabs/Module/Admin/Site.php:340
+msgid "Queue Threshold"
+msgstr "Warteschlangen-Grenzwert"
+
+#: ../../Zotlabs/Module/Admin/Site.php:340
+msgid ""
+"Always defer immediate delivery if queue contains more than this number of "
+"entries."
+msgstr "Unmittelbare Zustellung immer verzögern, wenn die Warteschlange mehr als diese Anzahl von Einträgen enthält."
+
+#: ../../Zotlabs/Module/Admin/Site.php:341
+msgid "Poll interval"
+msgstr "Abfrageintervall"
+
+#: ../../Zotlabs/Module/Admin/Site.php:341
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet."
+
+#: ../../Zotlabs/Module/Admin/Site.php:342
+msgid "Path to ImageMagick convert program"
+msgstr "Pfad zum ImageMagick-Programm convert"
+
+#: ../../Zotlabs/Module/Admin/Site.php:342
+msgid ""
+"If set, use this program to generate photo thumbnails for huge images ( > "
+"4000 pixels in either dimension), otherwise memory exhaustion may occur. "
+"Example: /usr/bin/convert"
+msgstr "Wenn gesetzt, dann verwende dieses Programm zum Erzeugen von Vorschaubildern großer Fotos (>4000 Pixel in beiden Richtungen), anderenfalls kann Speicherüberlauf auftreten. Beispiel: /usr/bin/convert"
+
+#: ../../Zotlabs/Module/Admin/Site.php:343
+msgid "Allow SVG thumbnails in file browser"
+msgstr "Erlaube SVG-Vorschaubilder im Dateibrowser"
+
+#: ../../Zotlabs/Module/Admin/Site.php:343
+msgid "WARNING: SVG images may contain malicious code."
+msgstr "Warnung: SVG-Grafiken können Schadcode enthalten."
+
+#: ../../Zotlabs/Module/Admin/Site.php:344
+msgid "Maximum Load Average"
+msgstr "Maximales Load Average"
+
+#: ../../Zotlabs/Module/Admin/Site.php:344
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"
+
+#: ../../Zotlabs/Module/Admin/Site.php:345
+msgid "Expiration period in days for imported (grid/network) content"
+msgstr "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen"
+
+#: ../../Zotlabs/Module/Admin/Site.php:345
+msgid "0 for no expiration of imported content"
+msgstr "0 = keine Löschung importierter Inhalte"
+
+#: ../../Zotlabs/Module/Admin/Site.php:347
+msgid ""
+"Public servers: Optional landing (marketing) webpage for new registrants"
+msgstr "Öffentliche Server: Optionale Einstiegsseite (landing page) für neue Mitglieder vor deren Anmeldung"
+
+#: ../../Zotlabs/Module/Admin/Site.php:347
+#, php-format
+msgid "Create this page first. Default is %s/register"
+msgstr "Erstelle zunächst die entsprechende Seite. Standard ist %s/register"
+
+#: ../../Zotlabs/Module/Admin/Site.php:348
+msgid "Page to display after creating a new channel"
+msgstr "Seite, die nach Erstellung eines neuen Kanals angezeigt werden soll"
+
+#: ../../Zotlabs/Module/Admin/Site.php:348
+msgid "Recommend: profiles, go, or settings"
+msgstr "Empfohlen: profiles, go oder settings"
+
+#: ../../Zotlabs/Module/Admin/Site.php:350
+msgid "Optional: site location"
+msgstr "Optional: Standort der Website"
+
+#: ../../Zotlabs/Module/Admin/Site.php:350
+msgid "Region or country"
+msgstr "Region oder Land"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:69
+msgid "New Profile Field"
+msgstr "Neues Profilfeld"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:70
+#: ../../Zotlabs/Module/Admin/Profs.php:90
+msgid "Field nickname"
+msgstr "Kurzname für das Feld"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:70
+#: ../../Zotlabs/Module/Admin/Profs.php:90
+msgid "System name of field"
+msgstr "Systemname des Feldes"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:71
+#: ../../Zotlabs/Module/Admin/Profs.php:91
+msgid "Input type"
+msgstr "Art des Inhalts"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:72
+#: ../../Zotlabs/Module/Admin/Profs.php:92
+msgid "Field Name"
+msgstr "Feldname"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:72
+#: ../../Zotlabs/Module/Admin/Profs.php:92
+msgid "Label on profile pages"
+msgstr "Bezeichnung auf Profilseiten"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:73
+#: ../../Zotlabs/Module/Admin/Profs.php:93
+msgid "Help text"
+msgstr "Hilfetext"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:73
+#: ../../Zotlabs/Module/Admin/Profs.php:93
+msgid "Additional info (optional)"
+msgstr "Zusätzliche Informationen (optional)"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:74
+#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
+#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1052
+#: ../../include/text.php:1064
+msgid "Save"
+msgstr "Speichern"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:83
+msgid "Field definition not found"
+msgstr "Feld-Definition nicht gefunden"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:89
+msgid "Edit Profile Field"
+msgstr "Profilfeld bearbeiten"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../Zotlabs/Widget/Admin.php:30
+msgid "Profile Fields"
+msgstr "Profil Felder"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:148
+msgid "Basic Profile Fields"
+msgstr "Notwendige Profil Felder"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:149
+msgid "Advanced Profile Fields"
+msgstr "Erweiterte Profil Felder"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:149
+msgid "(In addition to basic fields)"
+msgstr "(zusätzlich zu notwendige Felder)"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:151
+msgid "All available fields"
+msgstr "Alle verfügbaren Felder"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:152
+msgid "Custom Fields"
+msgstr "Benutzerdefinierte Felder"
+
+#: ../../Zotlabs/Module/Admin/Profs.php:156
+msgid "Create Custom Field"
+msgstr "Erstelle benutzerdefiniertes Feld"
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:29
+#, php-format
+msgid "Password changed for account %d."
+msgstr "Passwort für Konto %d geändert."
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:46
+msgid "Account settings updated."
+msgstr "Kontoeinstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:61
+msgid "Account not found."
+msgstr "Konto nicht gefunden."
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:68
+msgid "Account Edit"
+msgstr "Kontobearbeitung"
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:69
+msgid "New Password"
+msgstr "Neues Passwort"
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:70
+msgid "New Password again"
+msgstr "Neues Passwort wiederholen"
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:71
+msgid "Technical skill level"
+msgstr "Technische Qualifikationsstufe"
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:72
+msgid "Account language (for emails)"
+msgstr "Kontosprache (für E-Mails)"
+
+#: ../../Zotlabs/Module/Admin/Account_edit.php:73
+msgid "Service class"
+msgstr "Dienstklasse"
+
+#: ../../Zotlabs/Module/Admin/Security.php:77
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr "Standardmäßig wird ungefiltertes HTML in eingebetteten Inhalten zugelassen. Das ist prinzipiell unsicher."
+
+#: ../../Zotlabs/Module/Admin/Security.php:80
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "Die empfohlene Einstellung ist, ungefiltertes HTML nur von den nachfolgenden Webseiten zu erlauben:"
+
+#: ../../Zotlabs/Module/Admin/Security.php:81
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+
+#: ../../Zotlabs/Module/Admin/Security.php:82
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert."
+
+#: ../../Zotlabs/Module/Admin/Security.php:87
+#: ../../Zotlabs/Widget/Admin.php:25
+msgid "Security"
+msgstr "Sicherheit"
+
+#: ../../Zotlabs/Module/Admin/Security.php:89
+msgid "Block public"
+msgstr "Öffentlichen Zugriff blockieren"
+
+#: ../../Zotlabs/Module/Admin/Security.php:89
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist."
+
+#: ../../Zotlabs/Module/Admin/Security.php:90
+msgid "Set \"Transport Security\" HTTP header"
+msgstr "Setze den \"Transport Security\" HTTP Header"
+
+#: ../../Zotlabs/Module/Admin/Security.php:91
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr "Setze den \"Content Security Policy\" HTTP Header"
+
+#: ../../Zotlabs/Module/Admin/Security.php:92
+msgid "Allowed email domains"
+msgstr "Erlaubte Domains für E-Mails"
+
+#: ../../Zotlabs/Module/Admin/Security.php:92
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
+
+#: ../../Zotlabs/Module/Admin/Security.php:93
+msgid "Not allowed email domains"
+msgstr "Nicht erlaubte Domains für E-Mails"
+
+#: ../../Zotlabs/Module/Admin/Security.php:93
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde."
+
+#: ../../Zotlabs/Module/Admin/Security.php:94
+msgid "Allow communications only from these sites"
+msgstr "Kommunikation nur von diesen Servern/Domains erlauben"
+
+#: ../../Zotlabs/Module/Admin/Security.php:94
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben."
+
+#: ../../Zotlabs/Module/Admin/Security.php:95
+msgid "Block communications from these sites"
+msgstr "Kommunikation von diesen Servern/Domains blockieren"
+
+#: ../../Zotlabs/Module/Admin/Security.php:96
+msgid "Allow communications only from these channels"
+msgstr "Kommunikation nur von diesen Kanälen erlauben"
+
+#: ../../Zotlabs/Module/Admin/Security.php:96
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by "
+"default"
+msgstr "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. "
+
+#: ../../Zotlabs/Module/Admin/Security.php:97
+msgid "Block communications from these channels"
+msgstr "Kommunikation von folgenden Kanälen blockieren"
+
+#: ../../Zotlabs/Module/Admin/Security.php:98
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr "Erlaube Einbettungen nur von sicheren (SSL) Webseiten und Links."
+
+#: ../../Zotlabs/Module/Admin/Security.php:99
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr "Erlaube Einbettung von Inhalten mit ungefiltertem HTML nur von diesen Domains"
+
+#: ../../Zotlabs/Module/Admin/Security.php:99
+msgid "One site per line. By default embedded content is filtered."
+msgstr "Eine Website/Domain pro Zeile. Standardmäßig wird eingebetteter Inhalt gefiltert."
+
+#: ../../Zotlabs/Module/Admin/Security.php:100
+msgid "Block embedded HTML from these domains"
+msgstr "Eingebettete HTML Inhalte von diesen Servern/Domains blockieren"
+
+#: ../../Zotlabs/Module/Lockview.php:75
+msgid "Remote privacy information not available."
+msgstr "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar."
+
+#: ../../Zotlabs/Module/Lockview.php:96
+msgid "Visible to:"
+msgstr "Sichtbar für:"
+
+#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
+#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88
+msgctxt "acl"
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../Zotlabs/Module/Moderate.php:55
+msgid "Comment approved"
+msgstr "Kommentar bestätigt"
+
+#: ../../Zotlabs/Module/Moderate.php:59
+msgid "Comment deleted"
+msgstr "Kommentar gelöscht"
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:37
+msgid "Permission category saved."
+msgstr "Berechtigungsrolle gespeichert."
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:61
+msgid ""
+"Use this form to create permission rules for various classes of people or "
+"connections."
+msgstr "Verwende dieses Formular, um Berechtigungsrollen für verschiedene Gruppen von Personen oder Verbindungen zu erstellen."
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:94
+msgid "Permission Categories"
+msgstr "Berechtigungsrollen"
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:102
+msgid "Permission Name"
+msgstr "Name der Berechtigungsrolle"
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:103
+#: ../../Zotlabs/Module/Settings/Tokens.php:161
+#: ../../Zotlabs/Module/Connedit.php:891 ../../Zotlabs/Module/Defperms.php:250
+msgid "My Settings"
+msgstr "Meine Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:105
+#: ../../Zotlabs/Module/Settings/Tokens.php:163
+#: ../../Zotlabs/Module/Connedit.php:886 ../../Zotlabs/Module/Defperms.php:248
+msgid "inherited"
+msgstr "geerbt"
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:108
+#: ../../Zotlabs/Module/Settings/Tokens.php:166
+#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Defperms.php:253
+msgid "Individual Permissions"
+msgstr "Individuelle Zugriffsrechte"
+
+#: ../../Zotlabs/Module/Settings/Permcats.php:109
+#: ../../Zotlabs/Module/Settings/Tokens.php:167
+#: ../../Zotlabs/Module/Connedit.php:894
+msgid ""
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can <strong>not</strong> change those"
+" settings here."
+msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:64
+#: ../../Zotlabs/Module/Settings/Channel.php:68
+#: ../../Zotlabs/Module/Settings/Channel.php:69
+#: ../../Zotlabs/Module/Settings/Channel.php:72
+#: ../../Zotlabs/Module/Settings/Channel.php:83
+#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:24
+#: ../../include/selectors.php:123 ../../include/channel.php:437
+#: ../../include/channel.php:438 ../../include/channel.php:445
+msgid "Friends"
+msgstr "Freunde"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:262
+#: ../../Zotlabs/Module/Defperms.php:103
+#: ../../addon/rendezvous/rendezvous.php:82
+#: ../../addon/openstreetmap/openstreetmap.php:184
+#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
+#: ../../addon/twitter/twitter.php:772 ../../addon/piwik/piwik.php:116
+#: ../../addon/xmpp/xmpp.php:102
+msgid "Settings updated."
+msgstr "Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:323
+msgid "Nobody except yourself"
+msgstr "Niemand außer Dir selbst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:324
+msgid "Only those you specifically allow"
+msgstr "Nur die, denen Du es explizit erlaubst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:325
+msgid "Approved connections"
+msgstr "Angenommene Verbindungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:326
+msgid "Any connections"
+msgstr "Beliebige Verbindungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:327
+msgid "Anybody on this website"
+msgstr "Jeder auf dieser Website"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:328
+msgid "Anybody in this network"
+msgstr "Alle $Projectname-Mitglieder"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:329
+msgid "Anybody authenticated"
+msgstr "Jeder authentifizierte"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:330
+msgid "Anybody on the internet"
+msgstr "Jeder im Internet"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:405
+msgid "Publish your default profile in the network directory"
+msgstr "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:410
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:414
+msgid "or"
+msgstr "oder"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:419
+msgid "Your channel address is"
+msgstr "Deine Kanal-Adresse lautet"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:422
+msgid "Your files/photos are accessible via WebDAV at"
+msgstr "Deine Dateien/Fotos sind via WebDAV verfügbar auf"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:486
+msgid "Channel Settings"
+msgstr "Kanal-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:493
+msgid "Basic Settings"
+msgstr "Grundeinstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:494
+#: ../../include/channel.php:1522
+msgid "Full Name:"
+msgstr "Voller Name:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:495
+#: ../../Zotlabs/Module/Settings/Account.php:119
+msgid "Email Address:"
+msgstr "Email Adresse:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:496
+msgid "Your Timezone:"
+msgstr "Ihre Zeitzone:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:497
+msgid "Default Post Location:"
+msgstr "Standardstandort:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:497
+msgid "Geographical location to display on your posts"
+msgstr "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:498
+msgid "Use Browser Location:"
+msgstr "Standort des Browsers verwenden:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:500
+msgid "Adult Content"
+msgstr "Nicht jugendfreie Inhalte"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:500
+msgid ""
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:502
+msgid "Security and Privacy Settings"
+msgstr "Sicherheits- und Datenschutz-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:504
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:506
+msgid "Hide my online presence"
+msgstr "Meine Online-Präsenz verbergen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:506
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Verhindert die Anzeige Deines Online-Status in deinem Profil"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:508
+msgid "Simple Privacy Settings:"
+msgstr "Einfache Privatsphäre-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:509
+msgid ""
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:510
+msgid ""
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:511
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Privat – <em>Standard privat, nie offen oder öffentlich</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:512
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Blockiert – <em>Alle standardmäßig blockiert</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:514
+msgid "Allow others to tag your posts"
+msgstr "Erlaube anderen, Deine Beiträge zu verschlagworten"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:514
+msgid ""
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:516
+msgid "Channel Permission Limits"
+msgstr "Kanal-Berechtigungslimits"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:518
+msgid "Expire other channel content after this many days"
+msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:518
+msgid "0 or blank to use the website limit."
+msgstr "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:518
+#, php-format
+msgid "This website expires after %d days."
+msgstr "Diese Webseite läuft nach %d Tagen ab."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:518
+msgid "This website does not expire imported content."
+msgstr "Diese Webseite lässt importierte Inhalte nicht verfallen."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:518
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:519
+msgid "Maximum Friend Requests/Day:"
+msgstr "Maximale Kontaktanfragen pro Tag:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:519
+msgid "May reduce spam activity"
+msgstr "Kann die Spam-Aktivität verringern"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:520
+msgid "Default Privacy Group"
+msgstr "Standard-Gruppe"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:522
+msgid "Use my default audience setting for the type of object published"
+msgstr "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:523
+msgid "Profile to assign new connections"
+msgstr "Profil, welches neuen Verbindungen zugewiesen wird"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:532
+msgid "Channel permissions category:"
+msgstr "Zugriffsrechte-Kategorie des Kanals:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:533
+msgid "Default Permissions Group"
+msgstr "Standard-Berechtigungsgruppe"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:539
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:539
+msgid "Useful to reduce spamming"
+msgstr "Nützlich, um Spam zu verringern"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:542
+#: ../../Zotlabs/Lib/Enotify.php:68
+msgid "Notification Settings"
+msgstr "Benachrichtigungs-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:543
+msgid "By default post a status message when:"
+msgstr "Sende standardmäßig Status-Nachrichten, wenn:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:544
+msgid "accepting a friend request"
+msgstr "Du eine Verbindungsanfrage annimmst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:545
+msgid "joining a forum/community"
+msgstr "Du einem Forum beitrittst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:546
+msgid "making an <em>interesting</em> profile change"
+msgstr "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:547
+msgid "Send a notification email when:"
+msgstr "Eine E-Mail-Benachrichtigung senden, wenn:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:548
+msgid "You receive a connection request"
+msgstr "Du eine Verbindungsanfrage erhältst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:549
+msgid "Your connections are confirmed"
+msgstr "Eine Verbindung bestätigt wurde"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:550
+msgid "Someone writes on your profile wall"
+msgstr "Jemand auf Deine Pinnwand schreibt"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:551
+msgid "Someone writes a followup comment"
+msgstr "Jemand einen Beitrag kommentiert"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:552
+msgid "You receive a private message"
+msgstr "Du eine private Nachricht erhältst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:553
+msgid "You receive a friend suggestion"
+msgstr "Du einen Kontaktvorschlag erhältst"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:554
+msgid "You are tagged in a post"
+msgstr "Du in einem Beitrag erwähnt wurdest"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:555
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:557
+msgid "Someone likes your post/comment"
+msgstr "Jemand mag Ihren Beitrag/Kommentar"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:560
+msgid "Show visual notifications including:"
+msgstr "Visuelle Benachrichtigungen anzeigen für:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:562
+msgid "Unseen grid activity"
+msgstr "Ungesehene Netzwerk-Aktivität"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:563
+msgid "Unseen channel activity"
+msgstr "Ungesehene Kanal-Aktivität"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:564
+msgid "Unseen private messages"
+msgstr "Ungelesene persönliche Nachrichten"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:569
+#: ../../Zotlabs/Module/Settings/Channel.php:570
+#: ../../Zotlabs/Module/Settings/Channel.php:571
+#: ../../addon/jappixmini/jappixmini.php:343
+msgid "Recommended"
+msgstr "Empfohlen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:565
+msgid "Upcoming events"
+msgstr "Baldige Termine"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:566
+msgid "Events today"
+msgstr "Heutige Termine"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:567
+msgid "Upcoming birthdays"
+msgstr "Baldige Geburtstage"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:567
+msgid "Not available in all themes"
+msgstr "Nicht in allen Designs verfügbar"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:568
+msgid "System (personal) notifications"
+msgstr "System – (persönliche) Benachrichtigungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:569
+msgid "System info messages"
+msgstr "System – Info-Nachrichten"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:570
+msgid "System critical alerts"
+msgstr "System – kritische Warnungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:571
+msgid "New connections"
+msgstr "Neue Verbindungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:572
+msgid "System Registrations"
+msgstr "System – Registrierungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:573
+msgid "Unseen shared files"
+msgstr "Ungesehene geteilte Dateien"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:574
+msgid "Unseen public activity"
+msgstr "Ungesehene öffentliche Aktivität"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:575
+msgid "Email notification hub (hostname)"
+msgstr "Hub für E-Mail-Benachrichtigungen (Hostname)"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:575
+#, php-format
+msgid ""
+"If your channel is mirrored to multiple hubs, set this to your preferred "
+"location. This will prevent duplicate email notifications. Example: %s"
+msgstr "Wenn Dein Kanal auf mehreren Hubs geklont ist, setze die Einstellung auf deinen bevorzugten Hub. Dies verhindert Mehrfachzustellung von E-Mail-Benachrichtigungen. Beispiel: %s"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:576
+msgid ""
+"Also show new wall posts, private messages and connections under Notices"
+msgstr "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:578
+msgid "Notify me of events this many days in advance"
+msgstr "Benachrichtige mich zu Terminen so viele Tage im Voraus"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:578
+msgid "Must be greater than 0"
+msgstr "Muss größer als 0 sein"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:584
+msgid "Advanced Account/Page Type Settings"
+msgstr "Erweiterte Konten- und Seitenart-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:585
+msgid "Change the behaviour of this account for special situations"
+msgstr "Ändere das Verhalten dieses Kontos unter speziellen Umständen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:587
+msgid "Miscellaneous Settings"
+msgstr "Sonstige Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:588
+msgid "Default photo upload folder"
+msgstr "Voreingestellter Ordner für hochgeladene Fotos"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:588
+#: ../../Zotlabs/Module/Settings/Channel.php:589
+msgid "%Y - current year, %m - current month"
+msgstr "%Y - aktuelles Jahr, %m - aktueller Monat"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:589
+msgid "Default file upload folder"
+msgstr "Voreingestellter Ordner für hochgeladene Dateien"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:591
+msgid "Personal menu to display in your channel pages"
+msgstr "Eigenes Menü zur Anzeige auf den Seiten deines Kanals"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:593
+msgid "Remove this channel."
+msgstr "Diesen Kanal löschen"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:594
+msgid "Firefox Share $Projectname provider"
+msgstr "$Projectname-Provider für Firefox Share"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:595
+msgid "Start calendar week on Monday"
+msgstr "Beginne die kalendarische Woche am Montag"
+
+#: ../../Zotlabs/Module/Settings/Features.php:45
+msgid "Additional Features"
+msgstr "Zusätzliche Funktionen"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:31
+#, php-format
+msgid "This channel is limited to %d tokens"
+msgstr "Dieser Kanal ist auf %d Token begrenzt"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:37
+msgid "Name and Password are required."
+msgstr "Name und Passwort sind erforderlich."
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:77
+msgid "Token saved."
+msgstr "Token gespeichert."
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:113
+msgid ""
+"Use this form to create temporary access identifiers to share things with "
+"non-members. These identities may be used in Access Control Lists and "
+"visitors may login using these credentials to access private content."
+msgstr "Mit diesem Formular kannst Du temporäre Zugangs-IDs anlegen, um Inhalte mit Nicht-Mitgliedern zu teilen. Die IDs können in Berechtigungslisten (ACLs) verwendet werden, und Besucher können sich damit einloggen, um auf private Inhalte zuzugreifen."
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:115
+msgid ""
+"You may also provide <em>dropbox</em> style access links to friends and "
+"associates by adding the Login Password to any specific site URL as shown. "
+"Examples:"
+msgstr "Du kannst auch <em>Dropbox</em>-ähnliche Zugriffslinks an Andere weitergeben, indem du das Login-Passwort an eine entsprechende URL anhängst wie nachfolgend gezeigt. Beispiele:"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:150
+#: ../../Zotlabs/Widget/Settings_menu.php:92
+msgid "Guest Access Tokens"
+msgstr "Gastzugangstoken"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:157
+msgid "Login Name"
+msgstr "Anmeldename"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:158
+msgid "Login Password"
+msgstr "Anmeldepasswort"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:159
+msgid "Expires (yyyy-mm-dd)"
+msgstr "Läuft ab (jjjj-mm-tt)"
+
+#: ../../Zotlabs/Module/Settings/Tokens.php:160
+#: ../../Zotlabs/Module/Connedit.php:890
+msgid "Their Settings"
+msgstr "Deren Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Account.php:20
+msgid "Not valid email."
+msgstr "Keine gültige E-Mail Adresse."
+
+#: ../../Zotlabs/Module/Settings/Account.php:23
+msgid "Protected email address. Cannot change to that email."
+msgstr "Geschützte E-Mail Adresse. Diese kann nicht verändert werden."
+
+#: ../../Zotlabs/Module/Settings/Account.php:32
+msgid "System failure storing new email. Please try again."
+msgstr "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal."
+
+#: ../../Zotlabs/Module/Settings/Account.php:40
+msgid "Technical skill level updated"
+msgstr "Technische Qualifikationsstufe aktualisiert"
+
+#: ../../Zotlabs/Module/Settings/Account.php:56
+msgid "Password verification failed."
+msgstr "Passwortüberprüfung fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Settings/Account.php:63
+msgid "Passwords do not match. Password unchanged."
+msgstr "Kennwörter stimmen nicht überein. Kennwort nicht verändert."
+
+#: ../../Zotlabs/Module/Settings/Account.php:67
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert."
+
+#: ../../Zotlabs/Module/Settings/Account.php:81
+msgid "Password changed."
+msgstr "Kennwort geändert."
+
+#: ../../Zotlabs/Module/Settings/Account.php:83
+msgid "Password update failed. Please try again."
+msgstr "Kennwortänderung fehlgeschlagen. Bitte versuche es noch einmal."
+
+#: ../../Zotlabs/Module/Settings/Account.php:112
+msgid "Account Settings"
+msgstr "Konto-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Account.php:113
+msgid "Current Password"
+msgstr "Aktuelles Passwort"
+
+#: ../../Zotlabs/Module/Settings/Account.php:114
+msgid "Enter New Password"
+msgstr "Gib ein neues Passwort ein"
+
+#: ../../Zotlabs/Module/Settings/Account.php:115
+msgid "Confirm New Password"
+msgstr "Bestätige das neue Passwort"
+
+#: ../../Zotlabs/Module/Settings/Account.php:115
+msgid "Leave password fields blank unless changing"
+msgstr "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern"
+
+#: ../../Zotlabs/Module/Settings/Account.php:116
+msgid "Your technical skill level"
+msgstr "Deine technische Qualifikationsstufe"
+
+#: ../../Zotlabs/Module/Settings/Account.php:116
+msgid ""
+"Used to provide a member experience and additional features consistent with "
+"your comfort level"
+msgstr "Dies wird verwendet, um Dir eine Benutzererfahrung sowie zusätzliche Funktionen passend zu Deiner technischen Qualifikationsstufe zu bieten (Bedienkomfort beim Umgang mit Anwendungen)."
+
+#: ../../Zotlabs/Module/Settings/Account.php:120
+#: ../../Zotlabs/Module/Removeaccount.php:61
+msgid "Remove Account"
+msgstr "Konto entfernen"
+
+#: ../../Zotlabs/Module/Settings/Account.php:121
+msgid "Remove this account including all its channels"
+msgstr "Dieses Konto inklusive all seiner Kanäle löschen"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:23
+msgid "Affinity Slider settings updated."
+msgstr "Die Beziehungsgrad-Schieberegler-Einstellungen wurden aktualisiert."
+
+#: ../../Zotlabs/Module/Settings/Featured.php:38
+msgid "No feature settings configured"
+msgstr "Keine Funktions-Einstellungen konfiguriert"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:45
+msgid "Default maximum affinity level"
+msgstr "Voreinstellung für maximalen Beziehungsgrad"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:45
+msgid "0-99 default 99"
+msgstr "0-99 - Standard 99"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:50
+msgid "Default minimum affinity level"
+msgstr "Voreinstellung für minimalen Beziehungsgrad"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:50
+msgid "0-99 - default 0"
+msgstr "0-99 - Standard 0"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:54
+msgid "Affinity Slider Settings"
+msgstr "Beziehungsgrad-Schieberegler-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:64
+msgid "Addon Settings"
+msgstr "Addon-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:65
+msgid "Please save/submit changes to any panel before opening another."
+msgstr "Bitte speichere alle Änderungen in diesem Bereich, bevor Du einen anderen öffnest."
+
+#: ../../Zotlabs/Module/Settings/Display.php:139
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s – (experimentell)"
+
+#: ../../Zotlabs/Module/Settings/Display.php:187
+msgid "Display Settings"
+msgstr "Anzeige-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:188
+msgid "Theme Settings"
+msgstr "Design-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:189
+msgid "Custom Theme Settings"
+msgstr "Benutzerdefinierte Design-Einstellungen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:190
+msgid "Content Settings"
+msgstr "Inhaltseinstellungen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:196
+msgid "Display Theme:"
+msgstr "Anzeige-Design:"
+
+#: ../../Zotlabs/Module/Settings/Display.php:197
+msgid "Select scheme"
+msgstr "Schema wählen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:199
+msgid "Preload images before rendering the page"
+msgstr "Bilder im voraus laden, bevor die Seite angezeigt wird"
+
+#: ../../Zotlabs/Module/Settings/Display.php:199
+msgid ""
+"The subjective page load time will be longer but the page will be ready when"
+" displayed"
+msgstr "Die empfundene Ladezeit wird sich erhöhen, aber dafür ist das Layout stabil, sobald eine Seite angezeigt wird"
+
+#: ../../Zotlabs/Module/Settings/Display.php:200
+msgid "Enable user zoom on mobile devices"
+msgstr "Zoom auf Mobilgeräten aktivieren"
+
+#: ../../Zotlabs/Module/Settings/Display.php:201
+msgid "Update browser every xx seconds"
+msgstr "Browser alle xx Sekunden aktualisieren"
+
+#: ../../Zotlabs/Module/Settings/Display.php:201
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Minimum 10 Sekunden, kein Maximum"
+
+#: ../../Zotlabs/Module/Settings/Display.php:202
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:"
+
+#: ../../Zotlabs/Module/Settings/Display.php:202
+msgid "Maximum of 100 items"
+msgstr "Maximum: 100 Beiträge"
+
+#: ../../Zotlabs/Module/Settings/Display.php:203
+msgid "Show emoticons (smilies) as images"
+msgstr "Emoticons (Smilies) als Bilder anzeigen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:204
+msgid "Provide channel menu in navigation bar"
+msgstr "Kanal-Menü in der Navigationsleiste zur Verfügung stellen"
+
+#: ../../Zotlabs/Module/Settings/Display.php:204
+msgid "Default: channel menu located in app menu"
+msgstr "Voreinstellung: Kanal-Menü ist im App-Menü integriert"
+
+#: ../../Zotlabs/Module/Settings/Display.php:205
+msgid "Manual conversation updates"
+msgstr "Manuelle Konversationsaktualisierung"
+
+#: ../../Zotlabs/Module/Settings/Display.php:205
+msgid "Default is on, turning this off may increase screen jumping"
+msgstr "Voreinstellung ist An, dies abzuschalten kann das unerwartete Springen der Seitenanzeige erhöhen."
+
+#: ../../Zotlabs/Module/Settings/Display.php:206
+msgid "Link post titles to source"
+msgstr "Beitragstitel zum Originalbeitrag verlinken"
+
+#: ../../Zotlabs/Module/Settings/Display.php:207
+msgid "System Page Layout Editor - (advanced)"
+msgstr "System-Seitenlayout-Editor (für Experten)"
+
+#: ../../Zotlabs/Module/Settings/Display.php:210
+msgid "Use blog/list mode on channel page"
+msgstr "Blog-/Listenmodus auf der Kanalseite verwenden"
+
+#: ../../Zotlabs/Module/Settings/Display.php:210
+#: ../../Zotlabs/Module/Settings/Display.php:211
+msgid "(comments displayed separately)"
+msgstr "(Kommentare werden separat angezeigt)"
+
+#: ../../Zotlabs/Module/Settings/Display.php:211
+msgid "Use blog/list mode on grid page"
+msgstr "Blog-/Listenmodus auf der Netzwerkseite verwenden"
+
+#: ../../Zotlabs/Module/Settings/Display.php:212
+msgid "Channel page max height of content (in pixels)"
+msgstr "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)"
+
+#: ../../Zotlabs/Module/Settings/Display.php:212
+#: ../../Zotlabs/Module/Settings/Display.php:213
+msgid "click to expand content exceeding this height"
+msgstr "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden."
+
+#: ../../Zotlabs/Module/Settings/Display.php:213
+msgid "Grid page max height of content (in pixels)"
+msgstr "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:34
+msgid "Name is required"
+msgstr "Name ist erforderlich"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:38
+msgid "Key and Secret are required"
+msgstr "Schlüssel und Geheimnis werden benötigt"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:86
+#: ../../Zotlabs/Module/Settings/Oauth.php:112
+#: ../../Zotlabs/Module/Settings/Oauth.php:148
+msgid "Add application"
+msgstr "Anwendung hinzufügen"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:89
+msgid "Name of application"
+msgstr "Name der Anwendung"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:90
+#: ../../Zotlabs/Module/Settings/Oauth.php:116
+#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:781
+msgid "Consumer Key"
+msgstr "Consumer Key"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:90
+#: ../../Zotlabs/Module/Settings/Oauth.php:91
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:91
+#: ../../Zotlabs/Module/Settings/Oauth.php:117
+#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:782
+msgid "Consumer Secret"
+msgstr "Consumer Secret"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:92
+#: ../../Zotlabs/Module/Settings/Oauth.php:118
+msgid "Redirect"
+msgstr "Umleitung"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:92
+msgid ""
+"Redirect URI - leave blank unless your application specifically requires "
+"this"
+msgstr "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:93
+#: ../../Zotlabs/Module/Settings/Oauth.php:119
+msgid "Icon url"
+msgstr "Symbol-URL"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:93
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid "Optional"
+msgstr "Optional"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:104
+msgid "Application not found."
+msgstr "Die Anwendung wurde nicht gefunden."
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:147
+msgid "Connected Apps"
+msgstr "Verbundene Apps"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:151
+msgid "Client key starts with"
+msgstr "Client Key beginnt mit"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:152
+msgid "No name"
+msgstr "Kein Name"
+
+#: ../../Zotlabs/Module/Settings/Oauth.php:153
+msgid "Remove authorization"
+msgstr "Authorisierung aufheben"
+
+#: ../../Zotlabs/Module/Embedphotos.php:140
+#: ../../Zotlabs/Module/Photos.php:811 ../../Zotlabs/Module/Photos.php:1350
+#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78
+msgid "View Photo"
+msgstr "Foto ansehen"
+
+#: ../../Zotlabs/Module/Embedphotos.php:156
+#: ../../Zotlabs/Module/Photos.php:842 ../../Zotlabs/Widget/Portfolio.php:108
+#: ../../Zotlabs/Widget/Album.php:95
+msgid "Edit Album"
+msgstr "Album bearbeiten"
+
+#: ../../Zotlabs/Module/Embedphotos.php:158
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Photos.php:844
+#: ../../Zotlabs/Module/Photos.php:1381
+#: ../../Zotlabs/Module/Profile_photo.php:458
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Storage/Browser.php:277 ../../Zotlabs/Storage/Browser.php:384
+#: ../../Zotlabs/Widget/Cdav.php:133 ../../Zotlabs/Widget/Cdav.php:169
+#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Album.php:97
+msgid "Upload"
+msgstr "Hochladen"
+
+#: ../../Zotlabs/Module/Achievements.php:38
+msgid "Some blurb about what to do when you're new here"
+msgstr "Ein Hinweis, was man tun kann, wenn man neu hier ist"
+
+#: ../../Zotlabs/Module/Thing.php:115
+msgid "Thing updated"
+msgstr "Sache aktualisiert"
+
+#: ../../Zotlabs/Module/Thing.php:167
+msgid "Object store: failed"
+msgstr "Speichern des Objekts fehlgeschlagen"
+
+#: ../../Zotlabs/Module/Thing.php:171
+msgid "Thing added"
+msgstr "Sache hinzugefügt"
+
+#: ../../Zotlabs/Module/Thing.php:197
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
+
+#: ../../Zotlabs/Module/Thing.php:260
+msgid "Show Thing"
+msgstr "Sache anzeigen"
+
+#: ../../Zotlabs/Module/Thing.php:267
+msgid "item not found."
+msgstr "Eintrag nicht gefunden"
+
+#: ../../Zotlabs/Module/Thing.php:300
+msgid "Edit Thing"
+msgstr "Sache bearbeiten"
+
+#: ../../Zotlabs/Module/Thing.php:302 ../../Zotlabs/Module/Thing.php:359
+msgid "Select a profile"
+msgstr "Wähle ein Profil"
+
+#: ../../Zotlabs/Module/Thing.php:306 ../../Zotlabs/Module/Thing.php:362
+msgid "Post an activity"
+msgstr "Aktivitätsnachricht senden"
+
+#: ../../Zotlabs/Module/Thing.php:306 ../../Zotlabs/Module/Thing.php:362
+msgid "Only sends to viewers of the applicable profile"
+msgstr "Nur an Betrachter des ausgewählten Profils senden"
+
+#: ../../Zotlabs/Module/Thing.php:308 ../../Zotlabs/Module/Thing.php:364
+msgid "Name of thing e.g. something"
+msgstr "Name der Sache, z. B. irgendwas"
+
+#: ../../Zotlabs/Module/Thing.php:310 ../../Zotlabs/Module/Thing.php:365
+msgid "URL of thing (optional)"
+msgstr "URL der Sache (optional)"
+
+#: ../../Zotlabs/Module/Thing.php:312 ../../Zotlabs/Module/Thing.php:366
+msgid "URL for photo of thing (optional)"
+msgstr "URL eines Fotos der Sache (optional)"
+
+#: ../../Zotlabs/Module/Thing.php:314 ../../Zotlabs/Module/Thing.php:367
+#: ../../Zotlabs/Module/Photos.php:702 ../../Zotlabs/Module/Photos.php:1071
+#: ../../Zotlabs/Module/Connedit.php:676 ../../Zotlabs/Module/Chat.php:235
+#: ../../Zotlabs/Module/Filestorage.php:147
+#: ../../include/acl_selectors.php:123
+msgid "Permissions"
+msgstr "Berechtigungen"
+
+#: ../../Zotlabs/Module/Thing.php:357
+msgid "Add Thing to your Profile"
+msgstr "Die Sache Deinem Profil hinzufügen"
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:57
+msgid "No more system notifications."
+msgstr "Keine System-Benachrichtigungen mehr."
+
+#: ../../Zotlabs/Module/Notify.php:65
+#: ../../Zotlabs/Module/Notifications.php:61
+msgid "System Notifications"
+msgstr "System-Benachrichtigungen"
+
+#: ../../Zotlabs/Module/Follow.php:31
+msgid "Channel added."
+msgstr "Kanal hinzugefügt."
+
+#: ../../Zotlabs/Module/Import.php:143
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Dein Vertrag erlaubt nur %d Kanäle."
+
+#: ../../Zotlabs/Module/Import.php:157
+msgid "No channel. Import failed."
+msgstr "Kein Kanal. Import fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Import.php:481
+#: ../../addon/diaspora/import_diaspora.php:139
+msgid "Import completed."
+msgstr "Import abgeschlossen."
+
+#: ../../Zotlabs/Module/Import.php:509
+msgid "You must be logged in to use this feature."
+msgstr "Du musst angemeldet sein um diese Funktion zu nutzen."
+
+#: ../../Zotlabs/Module/Import.php:514
+msgid "Import Channel"
+msgstr "Kanal importieren"
+
+#: ../../Zotlabs/Module/Import.php:515
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file."
+msgstr "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren."
+
+#: ../../Zotlabs/Module/Import.php:517
+msgid "Or provide the old server/hub details"
+msgstr "Oder gib die Details Deines bisherigen $Projectname-Hubs ein"
+
+#: ../../Zotlabs/Module/Import.php:518
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Bisherige Kanal-Adresse (xyz@example.com)"
+
+#: ../../Zotlabs/Module/Import.php:519
+msgid "Your old login email address"
+msgstr "Deine alte Login-E-Mail-Adresse"
+
+#: ../../Zotlabs/Module/Import.php:520
+msgid "Your old login password"
+msgstr "Dein altes Passwort"
+
+#: ../../Zotlabs/Module/Import.php:521
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige $Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."
+
+#: ../../Zotlabs/Module/Import.php:522
+msgid "Make this hub my primary location"
+msgstr "Dieser $Pojectname-Hub ist mein primärer Hub."
+
+#: ../../Zotlabs/Module/Import.php:523
+msgid "Move this channel (disable all previous locations)"
+msgstr "Verschiebe diesen Kanal (deaktiviere alle vorherigen Adressen/Klone)"
+
+#: ../../Zotlabs/Module/Import.php:524
+msgid "Import a few months of posts if possible (limited by available memory"
+msgstr "Importiere die Beiträge einiger Monate, sofern möglich (beschränkt durch verfügbaren Speicher)"
+
+#: ../../Zotlabs/Module/Import.php:525
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
+msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen."
+
+#: ../../Zotlabs/Module/Rmagic.php:35
+msgid "Authentication failed."
+msgstr "Authentifizierung fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1583
+#: ../../include/channel.php:2307
+msgid "Remote Authentication"
+msgstr "Entfernte Authentifizierung"
+
+#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2308
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Deine Kanal-Adresse (z. B. channel@example.com)"
+
+#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2309
+msgid "Authenticate"
+msgstr "Authentifizieren"
+
+#: ../../Zotlabs/Module/Cal.php:69
+msgid "Permissions denied."
+msgstr "Berechtigung verweigert."
+
+#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2426
+msgid "Import"
+msgstr "Import"
+
+#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95
+msgid "Authorize application connection"
+msgstr "Zugriff für die Anwendung autorisieren"
+
+#: ../../Zotlabs/Module/Api.php:75
+msgid "Return to your app and insert this Security Code:"
+msgstr "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:"
+
+#: ../../Zotlabs/Module/Api.php:85
+msgid "Please login to continue."
+msgstr "Zum Weitermachen, bitte einloggen."
+
+#: ../../Zotlabs/Module/Api.php:97
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"
+
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Element nicht verfügbar."
+
+#: ../../Zotlabs/Module/Editblock.php:138
+msgid "Edit Block"
+msgstr "Block bearbeiten"
+
+#: ../../Zotlabs/Module/Profile.php:93
+msgid "vcard"
+msgstr "VCard"
+
+#: ../../Zotlabs/Module/Apps.php:48 ../../Zotlabs/Lib/Apps.php:228
+msgid "Apps"
+msgstr "Apps"
+
+#: ../../Zotlabs/Module/Apps.php:51
+msgid "Manage apps"
+msgstr "Apps verwalten"
+
+#: ../../Zotlabs/Module/Apps.php:52
+msgid "Create new app"
+msgstr "Neue App erstellen"
+
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:268
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s ist %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:253
+msgid "Mood"
+msgstr "Laune"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"
+
+#: ../../Zotlabs/Module/Connections.php:54
+#: ../../Zotlabs/Module/Connections.php:156
+#: ../../Zotlabs/Module/Connections.php:245
+msgid "Blocked"
+msgstr "Blockiert"
+
+#: ../../Zotlabs/Module/Connections.php:59
+#: ../../Zotlabs/Module/Connections.php:163
+#: ../../Zotlabs/Module/Connections.php:244
+msgid "Ignored"
+msgstr "Ignoriert"
+
+#: ../../Zotlabs/Module/Connections.php:64
+#: ../../Zotlabs/Module/Connections.php:177
+#: ../../Zotlabs/Module/Connections.php:243
+msgid "Hidden"
+msgstr "Versteckt"
+
+#: ../../Zotlabs/Module/Connections.php:69
+#: ../../Zotlabs/Module/Connections.php:170
+msgid "Archived/Unreachable"
+msgstr "Archiviert/Unerreichbar"
+
+#: ../../Zotlabs/Module/Connections.php:74
+#: ../../Zotlabs/Module/Connections.php:83 ../../Zotlabs/Module/Menu.php:116
+#: ../../Zotlabs/Module/Notifications.php:52
+#: ../../include/conversation.php:1714
+msgid "New"
+msgstr "Neu"
+
+#: ../../Zotlabs/Module/Connections.php:88
+#: ../../Zotlabs/Module/Connections.php:102
+#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:26
+msgid "All"
+msgstr "Alle"
+
+#: ../../Zotlabs/Module/Connections.php:133
+#: ../../Zotlabs/Widget/Notifications.php:84
+msgid "New Connections"
+msgstr "Neue Verbindungen"
+
+#: ../../Zotlabs/Module/Connections.php:136
+msgid "Show pending (new) connections"
+msgstr "Ausstehende (neue) Verbindungsanfragen anzeigen"
+
+#: ../../Zotlabs/Module/Connections.php:143
+msgid "Show all connections"
+msgstr "Alle Verbindungen anzeigen"
+
+#: ../../Zotlabs/Module/Connections.php:159
+msgid "Only show blocked connections"
+msgstr "Nur blockierte Verbindungen anzeigen"
+
+#: ../../Zotlabs/Module/Connections.php:166
+msgid "Only show ignored connections"
+msgstr "Nur ignorierte Verbindungen anzeigen"
+
+#: ../../Zotlabs/Module/Connections.php:173
+msgid "Only show archived/unreachable connections"
+msgstr "Nur archivierte/unerreichbare Verbindungen anzeigen"
+
+#: ../../Zotlabs/Module/Connections.php:180
+msgid "Only show hidden connections"
+msgstr "Nur versteckte Verbindungen anzeigen"
+
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Pending approval"
+msgstr "Wartet auf Genehmigung"
+
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Archived"
+msgstr "Archiviert"
+
+#: ../../Zotlabs/Module/Connections.php:246
+msgid "Not connected at this location"
+msgstr "An diesem Ort nicht verbunden"
+
+#: ../../Zotlabs/Module/Connections.php:263
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
+
+#: ../../Zotlabs/Module/Connections.php:264
+msgid "Edit connection"
+msgstr "Verbindung bearbeiten"
+
+#: ../../Zotlabs/Module/Connections.php:266
+msgid "Delete connection"
+msgstr "Verbindung löschen"
+
+#: ../../Zotlabs/Module/Connections.php:275
+msgid "Channel address"
+msgstr "Kanaladresse"
+
+#: ../../Zotlabs/Module/Connections.php:277
+msgid "Network"
+msgstr "Netzwerk"
+
+#: ../../Zotlabs/Module/Connections.php:280
+msgid "Call"
+msgstr "Anruf"
+
+#: ../../Zotlabs/Module/Connections.php:282
+msgid "Status"
+msgstr "Status"
+
+#: ../../Zotlabs/Module/Connections.php:284
+msgid "Connected"
+msgstr "Verbunden"
+
+#: ../../Zotlabs/Module/Connections.php:286
+msgid "Approve connection"
+msgstr "Verbindung genehmigen"
+
+#: ../../Zotlabs/Module/Connections.php:288
+msgid "Ignore connection"
+msgstr "Verbindung ignorieren"
+
+#: ../../Zotlabs/Module/Connections.php:289
+#: ../../Zotlabs/Module/Connedit.php:630
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: ../../Zotlabs/Module/Connections.php:290
+msgid "Recent activity"
+msgstr "Kürzliche Aktivitäten"
+
+#: ../../Zotlabs/Module/Connections.php:315 ../../Zotlabs/Lib/Apps.php:235
+#: ../../include/text.php:973
+msgid "Connections"
+msgstr "Verbindungen"
+
+#: ../../Zotlabs/Module/Connections.php:320
+msgid "Search your connections"
+msgstr "Verbindungen durchsuchen"
+
+#: ../../Zotlabs/Module/Connections.php:321
+msgid "Connections search"
+msgstr "Verbindung suchen"
+
+#: ../../Zotlabs/Module/Connections.php:322
+#: ../../Zotlabs/Module/Directory.php:396
+#: ../../Zotlabs/Module/Directory.php:401 ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Finde"
+
+#: ../../Zotlabs/Module/Viewsrc.php:43
+msgid "item"
+msgstr "Beitrag"
+
+#: ../../Zotlabs/Module/Viewsrc.php:55
+msgid "Source of Item"
+msgstr "Quelle des Elements"
+
+#: ../../Zotlabs/Module/Bookmarks.php:56
+msgid "Bookmark added"
+msgstr "Lesezeichen hinzugefügt"
+
+#: ../../Zotlabs/Module/Bookmarks.php:79
+msgid "My Bookmarks"
+msgstr "Meine Lesezeichen"
+
+#: ../../Zotlabs/Module/Bookmarks.php:90
+msgid "My Connections Bookmarks"
+msgstr "Lesezeichen meiner Kontakte"
+
+#: ../../Zotlabs/Module/Removeaccount.php:35
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt."
+
+#: ../../Zotlabs/Module/Removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Dieses Konto löschen"
+
+#: ../../Zotlabs/Module/Removeaccount.php:58
+msgid ""
+"This account and all its channels will be completely removed from the "
+"network. "
+msgstr "Dieses Konto mit all seinen Kanälen wird vollständig aus dem Netzwerk gelöscht."
+
+#: ../../Zotlabs/Module/Removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen"
+
+#: ../../Zotlabs/Module/Removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Standardmäßig werden nur die Kanalklone auf diesem $Projectname-Hub aus dem Netzwerk entfernt"
+
+#: ../../Zotlabs/Module/Photos.php:78
+msgid "Page owner information could not be retrieved."
+msgstr "Informationen über den Besitzer der Seite konnten nicht gefunden werden."
+
+#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:120
+msgid "Album not found."
+msgstr "Album nicht gefunden."
+
+#: ../../Zotlabs/Module/Photos.php:103
+msgid "Delete Album"
+msgstr "Album löschen"
+
+#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1083
+msgid "Delete Photo"
+msgstr "Foto löschen"
+
+#: ../../Zotlabs/Module/Photos.php:551
+msgid "No photos selected"
+msgstr "Keine Fotos ausgewählt"
+
+#: ../../Zotlabs/Module/Photos.php:600
+msgid "Access to this item is restricted."
+msgstr "Der Zugriff auf dieses Foto ist eingeschränkt."
+
+#: ../../Zotlabs/Module/Photos.php:646
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "%1$.2f MB von %2$.2f MB Foto-Speicher belegt."
+
+#: ../../Zotlabs/Module/Photos.php:649
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "%1$.2f MB Foto-Speicher belegt."
+
+#: ../../Zotlabs/Module/Photos.php:691
+msgid "Upload Photos"
+msgstr "Fotos hochladen"
+
+#: ../../Zotlabs/Module/Photos.php:695
+msgid "Enter an album name"
+msgstr "Namen für ein neues Album eingeben"
+
+#: ../../Zotlabs/Module/Photos.php:696
+msgid "or select an existing album (doubleclick)"
+msgstr "oder ein bereits vorhandenes auswählen (Doppelklick)"
+
+#: ../../Zotlabs/Module/Photos.php:697
+msgid "Create a status post for this upload"
+msgstr "Einen Statusbeitrag für diesen Upload erzeugen"
+
+#: ../../Zotlabs/Module/Photos.php:698
+msgid "Caption (optional):"
+msgstr "Beschriftung (optional):"
+
+#: ../../Zotlabs/Module/Photos.php:699
+msgid "Description (optional):"
+msgstr "Beschreibung (optional):"
+
+#: ../../Zotlabs/Module/Photos.php:785
+msgid "Show Newest First"
+msgstr "Neueste zuerst anzeigen"
+
+#: ../../Zotlabs/Module/Photos.php:787
+msgid "Show Oldest First"
+msgstr "Älteste zuerst anzeigen"
+
+#: ../../Zotlabs/Module/Photos.php:892
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden."
+
+#: ../../Zotlabs/Module/Photos.php:894
+msgid "Photo not available"
+msgstr "Foto nicht verfügbar"
+
+#: ../../Zotlabs/Module/Photos.php:952
+msgid "Use as profile photo"
+msgstr "Als Profilfoto verwenden"
+
+#: ../../Zotlabs/Module/Photos.php:953
+msgid "Use as cover photo"
+msgstr "Als Titelbild verwenden"
+
+#: ../../Zotlabs/Module/Photos.php:960
+msgid "Private Photo"
+msgstr "Privates Foto"
+
+#: ../../Zotlabs/Module/Photos.php:975
+msgid "View Full Size"
+msgstr "In voller Größe anzeigen"
+
+#: ../../Zotlabs/Module/Photos.php:1057
+msgid "Edit photo"
+msgstr "Foto bearbeiten"
+
+#: ../../Zotlabs/Module/Photos.php:1059
+msgid "Rotate CW (right)"
+msgstr "Drehen im UZS (rechts)"
+
+#: ../../Zotlabs/Module/Photos.php:1060
+msgid "Rotate CCW (left)"
+msgstr "Drehen gegen UZS (links)"
+
+#: ../../Zotlabs/Module/Photos.php:1063
+msgid "Move photo to album"
+msgstr "Foto in Album verschieben"
+
+#: ../../Zotlabs/Module/Photos.php:1064
+msgid "Enter a new album name"
+msgstr "Gib einen Namen für ein neues Album ein"
+
+#: ../../Zotlabs/Module/Photos.php:1065
+msgid "or select an existing one (doubleclick)"
+msgstr "oder wähle ein bereits vorhandenes aus (Doppelklick)"
+
+#: ../../Zotlabs/Module/Photos.php:1068
+msgid "Caption"
+msgstr "Bildunterschrift"
+
+#: ../../Zotlabs/Module/Photos.php:1070
+msgid "Add a Tag"
+msgstr "Schlagwort hinzufügen"
+
+#: ../../Zotlabs/Module/Photos.php:1078
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Beispiele: @ben, @Karl_Prester, @lieschen@example.com"
+
+#: ../../Zotlabs/Module/Photos.php:1081
+msgid "Flag as adult in album view"
+msgstr "In der Albumansicht als nicht jugendfrei markieren"
+
+#: ../../Zotlabs/Module/Photos.php:1100 ../../Zotlabs/Lib/ThreadItem.php:281
+msgid "I like this (toggle)"
+msgstr "Mir gefällt das (Umschalter)"
+
+#: ../../Zotlabs/Module/Photos.php:1101 ../../Zotlabs/Lib/ThreadItem.php:282
+msgid "I don't like this (toggle)"
+msgstr "Mir gefällt das nicht (Umschalter)"
+
+#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Lib/ThreadItem.php:427
+#: ../../include/conversation.php:785
+msgid "Please wait"
+msgstr "Bitte warten"
+
+#: ../../Zotlabs/Module/Photos.php:1119 ../../Zotlabs/Module/Photos.php:1237
+#: ../../Zotlabs/Lib/ThreadItem.php:747
+msgid "This is you"
+msgstr "Das bist Du"
+
+#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
+#: ../../Zotlabs/Lib/ThreadItem.php:749 ../../include/js_strings.php:6
+msgid "Comment"
+msgstr "Kommentar"
+
+#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
+msgctxt "title"
+msgid "Likes"
+msgstr "Gefällt mir"
+
+#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
+msgctxt "title"
+msgid "Dislikes"
+msgstr "Gefällt mir nicht"
+
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
+msgctxt "title"
+msgid "Agree"
+msgstr "Zustimmungen"
+
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
+msgctxt "title"
+msgid "Disagree"
+msgstr "Ablehnungen"
+
+#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
+msgctxt "title"
+msgid "Abstain"
+msgstr "Enthaltungen"
+
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
+msgctxt "title"
+msgid "Attending"
+msgstr "Zusagen"
+
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
+msgctxt "title"
+msgid "Not attending"
+msgstr "Absagen"
+
+#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
+msgctxt "title"
+msgid "Might attend"
+msgstr "Vielleicht"
+
+#: ../../Zotlabs/Module/Photos.php:1156 ../../Zotlabs/Module/Photos.php:1168
+#: ../../Zotlabs/Lib/ThreadItem.php:201 ../../Zotlabs/Lib/ThreadItem.php:213
+msgid "View all"
+msgstr "Alles anzeigen"
+
+#: ../../Zotlabs/Module/Photos.php:1160 ../../Zotlabs/Lib/ThreadItem.php:205
+#: ../../include/conversation.php:1978 ../../include/channel.php:1540
+#: ../../include/taxonomy.php:597
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Gefällt mir"
+msgstr[1] "Gefällt mir"
+
+#: ../../Zotlabs/Module/Photos.php:1165 ../../Zotlabs/Lib/ThreadItem.php:210
+#: ../../include/conversation.php:1981
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Gefällt nicht"
+msgstr[1] "Gefällt nicht"
+
+#: ../../Zotlabs/Module/Photos.php:1265
+msgid "Photo Tools"
+msgstr "Fotowerkzeuge"
+
+#: ../../Zotlabs/Module/Photos.php:1274
+msgid "In This Photo:"
+msgstr "Auf diesem Foto:"
+
+#: ../../Zotlabs/Module/Photos.php:1279
+msgid "Map"
+msgstr "Karte"
+
+#: ../../Zotlabs/Module/Photos.php:1287 ../../Zotlabs/Lib/ThreadItem.php:415
+msgctxt "noun"
+msgid "Likes"
+msgstr "Gefällt mir"
+
+#: ../../Zotlabs/Module/Photos.php:1288 ../../Zotlabs/Lib/ThreadItem.php:416
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Gefällt nicht"
+
+#: ../../Zotlabs/Module/Photos.php:1293 ../../Zotlabs/Lib/ThreadItem.php:421
+#: ../../include/acl_selectors.php:125
+msgid "Close"
+msgstr "Schließen"
+
+#: ../../Zotlabs/Module/Photos.php:1365 ../../Zotlabs/Module/Photos.php:1378
+#: ../../Zotlabs/Module/Photos.php:1379 ../../include/photos.php:656
+msgid "Recent Photos"
+msgstr "Neueste Fotos"
+
+#: ../../Zotlabs/Module/Wiki.php:30
+msgid "Profile Unavailable."
+msgstr "Profil nicht verfügbar."
+
+#: ../../Zotlabs/Module/Wiki.php:44 ../../Zotlabs/Module/Cloud.php:108
+#: ../../addon/gitwiki/Mod_Gitwiki.php:42
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: ../../Zotlabs/Module/Wiki.php:68 ../../addon/gitwiki/Mod_Gitwiki.php:62
+msgid "Invalid channel"
+msgstr "Ungültiger Kanal"
+
+#: ../../Zotlabs/Module/Wiki.php:124 ../../addon/gitwiki/Mod_Gitwiki.php:107
+msgid "Error retrieving wiki"
+msgstr "Fehler beim Abrufen des Wiki"
+
+#: ../../Zotlabs/Module/Wiki.php:131 ../../addon/gitwiki/Mod_Gitwiki.php:114
+msgid "Error creating zip file export folder"
+msgstr "Fehler bei der Erzeugung des Zip-Datei Export-Verzeichnisses "
+
+#: ../../Zotlabs/Module/Wiki.php:182 ../../addon/gitwiki/Mod_Gitwiki.php:132
+msgid "Error downloading wiki: "
+msgstr "Fehler beim Herunterladen des Wiki:"
+
+#: ../../Zotlabs/Module/Wiki.php:197 ../../addon/gitwiki/Mod_Gitwiki.php:146
+#: ../../include/conversation.php:1925 ../../include/nav.php:494
+msgid "Wikis"
+msgstr "Wikis"
+
+#: ../../Zotlabs/Module/Wiki.php:203 ../../addon/gitwiki/Mod_Gitwiki.php:152
+msgid "Download"
+msgstr "Herunterladen"
+
+#: ../../Zotlabs/Module/Wiki.php:205 ../../Zotlabs/Module/Chat.php:256
+#: ../../Zotlabs/Module/Profiles.php:834 ../../Zotlabs/Module/Manage.php:145
+#: ../../addon/gitwiki/Mod_Gitwiki.php:154
+msgid "Create New"
+msgstr "Neu anlegen"
+
+#: ../../Zotlabs/Module/Wiki.php:207 ../../addon/gitwiki/Mod_Gitwiki.php:156
+msgid "Wiki name"
+msgstr "Name des Wiki"
+
+#: ../../Zotlabs/Module/Wiki.php:208 ../../addon/gitwiki/Mod_Gitwiki.php:157
+msgid "Content type"
+msgstr "Inhaltstyp"
+
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
+#: ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../addon/mdpost/mdpost.php:40
+#: ../../include/text.php:1868
+msgid "Markdown"
+msgstr "Markdown"
+
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
+#: ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1866
+msgid "BBcode"
+msgstr "BBcode"
+
+#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:36
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1869
+msgid "Text"
+msgstr "Text"
+
+#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:284
+#: ../../addon/gitwiki/Mod_Gitwiki.php:159
+msgid "Type"
+msgstr "Typ"
+
+#: ../../Zotlabs/Module/Wiki.php:211
+msgid "Any&nbsp;type"
+msgstr "Alle&nbsp;Arten"
+
+#: ../../Zotlabs/Module/Wiki.php:218
+msgid "Lock content type"
+msgstr "Inhaltstyp sperren"
+
+#: ../../Zotlabs/Module/Wiki.php:219 ../../addon/gitwiki/Mod_Gitwiki.php:166
+msgid "Create a status post for this wiki"
+msgstr "Erzeuge einen Statusbeitrag für dieses Wiki"
+
+#: ../../Zotlabs/Module/Wiki.php:220
+msgid "Edit Wiki Name"
+msgstr "Wiki-Namen bearbeiten"
+
+#: ../../Zotlabs/Module/Wiki.php:262 ../../addon/gitwiki/Mod_Gitwiki.php:185
+msgid "Wiki not found"
+msgstr "Wiki nicht gefunden"
+
+#: ../../Zotlabs/Module/Wiki.php:286 ../../addon/gitwiki/Mod_Gitwiki.php:210
+msgid "Rename page"
+msgstr "Seite umbenennen"
+
+#: ../../Zotlabs/Module/Wiki.php:305 ../../addon/gitwiki/Mod_Gitwiki.php:214
+msgid "Error retrieving page content"
+msgstr "Fehler beim Abrufen des Seiteninhalts"
+
+#: ../../Zotlabs/Module/Wiki.php:313 ../../Zotlabs/Module/Wiki.php:315
+msgid "New page"
+msgstr "Neue Seite"
+
+#: ../../Zotlabs/Module/Wiki.php:343 ../../addon/gitwiki/Mod_Gitwiki.php:242
+msgid "Revision Comparison"
+msgstr "Revisionsvergleich"
+
+#: ../../Zotlabs/Module/Wiki.php:344 ../../addon/gitwiki/Mod_Gitwiki.php:243
+msgid "Revert"
+msgstr "Rückgängig machen"
+
+#: ../../Zotlabs/Module/Wiki.php:351
+msgid "Short description of your changes (optional)"
+msgstr "Kurze Beschreibung Ihrer Änderungen (optional)"
+
+#: ../../Zotlabs/Module/Wiki.php:358 ../../addon/gitwiki/Mod_Gitwiki.php:252
+msgid "Source"
+msgstr "Quelle"
+
+#: ../../Zotlabs/Module/Wiki.php:368 ../../addon/gitwiki/Mod_Gitwiki.php:260
+msgid "New page name"
+msgstr "Neuer Seitenname"
+
+#: ../../Zotlabs/Module/Wiki.php:373 ../../addon/gitwiki/Mod_Gitwiki.php:265
+#: ../../include/conversation.php:1282
+msgid "Embed image from photo albums"
+msgstr "Bild aus Fotoalben einbetten"
+
+#: ../../Zotlabs/Module/Wiki.php:374 ../../addon/gitwiki/Mod_Gitwiki.php:266
+#: ../../include/conversation.php:1385
+msgid "Embed an image from your albums"
+msgstr "Betten Sie ein Bild aus Ihren Alben ein"
+
+#: ../../Zotlabs/Module/Wiki.php:376
+#: ../../Zotlabs/Module/Profile_photo.php:465
+#: ../../Zotlabs/Module/Cover_photo.php:366
+#: ../../addon/gitwiki/Mod_Gitwiki.php:268 ../../include/conversation.php:1387
+#: ../../include/conversation.php:1434
+msgid "OK"
+msgstr "Ok"
+
+#: ../../Zotlabs/Module/Wiki.php:377 ../../addon/gitwiki/Mod_Gitwiki.php:269
+#: ../../include/conversation.php:1318
+msgid "Choose images to embed"
+msgstr "Wählen Sie Bilder zum Einbetten aus"
+
+#: ../../Zotlabs/Module/Wiki.php:378 ../../addon/gitwiki/Mod_Gitwiki.php:270
+#: ../../include/conversation.php:1319
+msgid "Choose an album"
+msgstr "Wählen Sie ein Album aus"
+
+#: ../../Zotlabs/Module/Wiki.php:379 ../../addon/gitwiki/Mod_Gitwiki.php:271
+msgid "Choose a different album"
+msgstr "Wählen Sie ein anderes Album aus"
+
+#: ../../Zotlabs/Module/Wiki.php:380 ../../addon/gitwiki/Mod_Gitwiki.php:272
+#: ../../include/conversation.php:1321
+msgid "Error getting album list"
+msgstr "Fehler beim Holen der Albenliste"
+
+#: ../../Zotlabs/Module/Wiki.php:381 ../../addon/gitwiki/Mod_Gitwiki.php:273
+#: ../../include/conversation.php:1322
+msgid "Error getting photo link"
+msgstr "Fehler beim Holen des Fotolinks"
+
+#: ../../Zotlabs/Module/Wiki.php:382 ../../addon/gitwiki/Mod_Gitwiki.php:274
+#: ../../include/conversation.php:1323
+msgid "Error getting album"
+msgstr "Fehler beim Holen des Albums"
+
+#: ../../Zotlabs/Module/Wiki.php:458 ../../addon/gitwiki/Mod_Gitwiki.php:337
+msgid "Error creating wiki. Invalid name."
+msgstr "Fehler beim Erstellen des Wiki. Ungültiger Name."
+
+#: ../../Zotlabs/Module/Wiki.php:465
+msgid "A wiki with this name already exists."
+msgstr "Es existiert bereits ein Wiki mit diesem Namen."
+
+#: ../../Zotlabs/Module/Wiki.php:478 ../../addon/gitwiki/Mod_Gitwiki.php:348
+msgid "Wiki created, but error creating Home page."
+msgstr "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite"
+
+#: ../../Zotlabs/Module/Wiki.php:485 ../../addon/gitwiki/Mod_Gitwiki.php:353
+msgid "Error creating wiki"
+msgstr "Fehler beim Erstellen des Wiki"
+
+#: ../../Zotlabs/Module/Wiki.php:508
+msgid "Error updating wiki. Invalid name."
+msgstr "Fehler beim Aktualisieren des Wikis. Ungültiger Name."
+
+#: ../../Zotlabs/Module/Wiki.php:528
+msgid "Error updating wiki"
+msgstr "Fehler beim Aktualisieren des Wikis"
+
+#: ../../Zotlabs/Module/Wiki.php:543
+msgid "Wiki delete permission denied."
+msgstr "Wiki-Löschberechtigung verweigert."
+
+#: ../../Zotlabs/Module/Wiki.php:553
+msgid "Error deleting wiki"
+msgstr "Fehler beim Löschen des Wiki"
+
+#: ../../Zotlabs/Module/Wiki.php:586 ../../addon/gitwiki/Mod_Gitwiki.php:400
+msgid "New page created"
+msgstr "Neue Seite erstellt"
+
+#: ../../Zotlabs/Module/Wiki.php:707
+msgid "Cannot delete Home"
+msgstr "Kann die Startseite nicht löschen"
+
+#: ../../Zotlabs/Module/Wiki.php:771
+msgid "Current Revision"
+msgstr "Aktuelle Revision"
+
+#: ../../Zotlabs/Module/Wiki.php:771
+msgid "Selected Revision"
+msgstr "Ausgewählte Revision"
+
+#: ../../Zotlabs/Module/Wiki.php:821
+msgid "You must be authenticated."
+msgstr "Sie müssen authenzifiziert sein."
+
+#: ../../Zotlabs/Module/Chanview.php:139
+msgid "toggle full screen mode"
+msgstr "auf Vollbildmodus umschalten"
+
+#: ../../Zotlabs/Module/Pdledit.php:21
+msgid "Layout updated."
+msgstr "Layout aktualisiert."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Chat.php:219
+msgid "Feature disabled."
+msgstr "Funktion deaktiviert."
+
+#: ../../Zotlabs/Module/Pdledit.php:47 ../../Zotlabs/Module/Pdledit.php:90
+msgid "Edit System Page Description"
+msgstr "Systemseitenbeschreibung bearbeiten"
+
+#: ../../Zotlabs/Module/Pdledit.php:68
+msgid "(modified)"
+msgstr "(geändert)"
+
+#: ../../Zotlabs/Module/Pdledit.php:68 ../../Zotlabs/Module/Lostpass.php:133
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: ../../Zotlabs/Module/Pdledit.php:85
+msgid "Layout not found."
+msgstr "Layout nicht gefunden."
+
+#: ../../Zotlabs/Module/Pdledit.php:91
+msgid "Module Name:"
+msgstr "Modulname:"
+
+#: ../../Zotlabs/Module/Pdledit.php:92
+msgid "Layout Help"
+msgstr "Layout-Hilfe"
+
+#: ../../Zotlabs/Module/Pdledit.php:93
+msgid "Edit another layout"
+msgstr "Ein weiteres Layout bearbeiten"
+
+#: ../../Zotlabs/Module/Pdledit.php:94
+msgid "System layout"
+msgstr "System-Layout"
+
+#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:254
+#: ../../include/conversation.php:1092
+msgid "Poke"
+msgstr "Anstupsen"
+
+#: ../../Zotlabs/Module/Poke.php:183
+msgid "Poke somebody"
+msgstr "Jemanden anstupsen"
+
+#: ../../Zotlabs/Module/Poke.php:186
+msgid "Poke/Prod"
+msgstr "Anstupsen/Knuffen"
+
+#: ../../Zotlabs/Module/Poke.php:187
+msgid "Poke, prod or do other things to somebody"
+msgstr "Jemanden anstupsen, knuffen oder sonstiges"
+
+#: ../../Zotlabs/Module/Poke.php:194
+msgid "Recipient"
+msgstr "Empfänger"
+
+#: ../../Zotlabs/Module/Poke.php:195
+msgid "Choose what you wish to do to recipient"
+msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst"
+
+#: ../../Zotlabs/Module/Poke.php:198 ../../Zotlabs/Module/Poke.php:199
+msgid "Make this post private"
+msgstr "Diesen Beitrag privat machen"
+
+#: ../../Zotlabs/Module/Profile_photo.php:66
+#: ../../Zotlabs/Module/Cover_photo.php:56
+msgid "Image uploaded but image cropping failed."
+msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
+
+#: ../../Zotlabs/Module/Profile_photo.php:120
+#: ../../Zotlabs/Module/Profile_photo.php:248
+#: ../../include/photo/photo_driver.php:740
+msgid "Profile Photos"
+msgstr "Profilfotos"
+
+#: ../../Zotlabs/Module/Profile_photo.php:142
+#: ../../Zotlabs/Module/Cover_photo.php:159
+msgid "Image resize failed."
+msgstr "Bild-Anpassung fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Profile_photo.php:218
+#: ../../addon/openclipatar/openclipatar.php:298
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
+
+#: ../../Zotlabs/Module/Profile_photo.php:225
+#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:195
+msgid "Unable to process image"
+msgstr "Kann Bild nicht verarbeiten"
+
+#: ../../Zotlabs/Module/Profile_photo.php:260
+#: ../../Zotlabs/Module/Cover_photo.php:197
+msgid "Image upload failed."
+msgstr "Hochladen des Bilds fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Profile_photo.php:279
+#: ../../Zotlabs/Module/Cover_photo.php:214
+msgid "Unable to process image."
+msgstr "Kann Bild nicht verarbeiten."
+
+#: ../../Zotlabs/Module/Profile_photo.php:343
+#: ../../Zotlabs/Module/Profile_photo.php:390
+#: ../../Zotlabs/Module/Cover_photo.php:307
+#: ../../Zotlabs/Module/Cover_photo.php:322
+msgid "Photo not available."
+msgstr "Foto nicht verfügbar."
+
+#: ../../Zotlabs/Module/Profile_photo.php:455
+#: ../../Zotlabs/Module/Cover_photo.php:358
+msgid "Upload File:"
+msgstr "Datei hochladen:"
+
+#: ../../Zotlabs/Module/Profile_photo.php:456
+#: ../../Zotlabs/Module/Cover_photo.php:359
+msgid "Select a profile:"
+msgstr "Wähle ein Profil:"
+
+#: ../../Zotlabs/Module/Profile_photo.php:457
+msgid "Use Photo for Profile"
+msgstr "Foto für Profil verwenden"
+
+#: ../../Zotlabs/Module/Profile_photo.php:457
+msgid "Change Profile Photo"
+msgstr "Profilfoto ändern"
+
+#: ../../Zotlabs/Module/Profile_photo.php:458
+msgid "Use"
+msgstr "Verwenden"
+
+#: ../../Zotlabs/Module/Profile_photo.php:462
+#: ../../Zotlabs/Module/Profile_photo.php:463
+#: ../../Zotlabs/Module/Cover_photo.php:363
+#: ../../Zotlabs/Module/Cover_photo.php:364
+msgid "Use a photo from your albums"
+msgstr "Ein Foto aus meinen Alben verwenden"
+
+#: ../../Zotlabs/Module/Profile_photo.php:467
+#: ../../Zotlabs/Module/Cover_photo.php:369
+msgid "Select existing photo"
+msgstr "Wähle ein vorhandenes Foto aus"
+
+#: ../../Zotlabs/Module/Profile_photo.php:486
+#: ../../Zotlabs/Module/Cover_photo.php:386
+msgid "Crop Image"
+msgstr "Bild zuschneiden"
+
+#: ../../Zotlabs/Module/Profile_photo.php:487
+#: ../../Zotlabs/Module/Cover_photo.php:387
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
+
+#: ../../Zotlabs/Module/Profile_photo.php:489
+#: ../../Zotlabs/Module/Cover_photo.php:389
+msgid "Done Editing"
+msgstr "Bearbeitung fertigstellen"
+
+#: ../../Zotlabs/Module/Chatsvc.php:131
+msgid "Away"
+msgstr "Abwesend"
+
+#: ../../Zotlabs/Module/Chatsvc.php:136
+msgid "Online"
+msgstr "Online"
+
+#: ../../Zotlabs/Module/Item.php:194
+msgid "Unable to locate original post."
+msgstr "Originalbeitrag nicht gefunden."
+
+#: ../../Zotlabs/Module/Item.php:476
+msgid "Empty post discarded."
+msgstr "Leeren Beitrag verworfen."
+
+#: ../../Zotlabs/Module/Item.php:867
+msgid "Duplicate post suppressed."
+msgstr "Doppelter Beitrag unterdrückt."
+
+#: ../../Zotlabs/Module/Item.php:1012
+msgid "System error. Post not saved."
+msgstr "Systemfehler. Beitrag nicht gespeichert."
+
+#: ../../Zotlabs/Module/Item.php:1048
+msgid "Your comment is awaiting approval."
+msgstr "Dein Kommentar muss noch bestätigt werden."
+
+#: ../../Zotlabs/Module/Item.php:1153
+msgid "Unable to obtain post information from database."
+msgstr "Beitragsinformationen können nicht aus der Datenbank abgerufen werden."
+
+#: ../../Zotlabs/Module/Item.php:1182
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."
+
+#: ../../Zotlabs/Module/Item.php:1189
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."
+
+#: ../../Zotlabs/Module/Ping.php:320
+msgid "sent you a private message"
+msgstr "hat Dir eine private Nachricht geschickt"
+
+#: ../../Zotlabs/Module/Ping.php:372
+msgid "added your channel"
+msgstr "hat deinen Kanal hinzugefügt"
+
+#: ../../Zotlabs/Module/Ping.php:396
+msgid "requires approval"
+msgstr "Zustimmung erforderlich"
+
+#: ../../Zotlabs/Module/Ping.php:406
+msgid "g A l F d"
+msgstr "l, d. F, G:i \\U\\h\\r"
+
+#: ../../Zotlabs/Module/Ping.php:424
+msgid "[today]"
+msgstr "[Heute]"
+
+#: ../../Zotlabs/Module/Ping.php:433
+msgid "posted an event"
+msgstr "hat einen Termin veröffentlicht"
+
+#: ../../Zotlabs/Module/Ping.php:466
+msgid "shared a file with you"
+msgstr "hat eine Datei mit Dir geteilt"
+
+#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29
+msgid "Invalid item."
+msgstr "Ungültiges Element."
+
+#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
+#: ../../Zotlabs/Module/Display.php:133
+#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:167
+#: ../../include/help.php:81
+msgid "Page not found."
+msgstr "Seite nicht gefunden."
+
+#: ../../Zotlabs/Module/Page.php:173
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Connedit.php:79 ../../Zotlabs/Module/Defperms.php:59
+msgid "Could not access contact record."
+msgstr "Konnte nicht auf den Kontakteintrag zugreifen."
+
+#: ../../Zotlabs/Module/Connedit.php:109
+msgid "Could not locate selected profile."
+msgstr "Gewähltes Profil nicht gefunden."
+
+#: ../../Zotlabs/Module/Connedit.php:246
+msgid "Connection updated."
+msgstr "Verbindung aktualisiert."
+
+#: ../../Zotlabs/Module/Connedit.php:248
+msgid "Failed to update connection record."
+msgstr "Konnte den Verbindungseintrag nicht aktualisieren."
+
+#: ../../Zotlabs/Module/Connedit.php:302
+msgid "is now connected to"
+msgstr "ist jetzt verbunden mit"
+
+#: ../../Zotlabs/Module/Connedit.php:427
+msgid "Could not access address book record."
+msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen."
+
+#: ../../Zotlabs/Module/Connedit.php:475
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar."
+
+#: ../../Zotlabs/Module/Connedit.php:490 ../../Zotlabs/Module/Connedit.php:499
+#: ../../Zotlabs/Module/Connedit.php:508 ../../Zotlabs/Module/Connedit.php:517
+#: ../../Zotlabs/Module/Connedit.php:530
+msgid "Unable to set address book parameters."
+msgstr "Konnte die Adressbuch-Parameter nicht setzen."
+
+#: ../../Zotlabs/Module/Connedit.php:554
+msgid "Connection has been removed."
+msgstr "Verbindung wurde gelöscht."
+
+#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:247
+#: ../../addon/openclipatar/openclipatar.php:57
+#: ../../include/conversation.php:1032 ../../include/nav.php:114
+msgid "View Profile"
+msgstr "Profil ansehen"
+
+#: ../../Zotlabs/Module/Connedit.php:597
+#, php-format
+msgid "View %s's profile"
+msgstr "%ss Profil ansehen"
+
+#: ../../Zotlabs/Module/Connedit.php:601
+msgid "Refresh Permissions"
+msgstr "Zugriffsrechte neu laden"
+
+#: ../../Zotlabs/Module/Connedit.php:604
+msgid "Fetch updated permissions"
+msgstr "Aktualisierte Zugriffsrechte abrufen"
+
+#: ../../Zotlabs/Module/Connedit.php:608
+msgid "Refresh Photo"
+msgstr "Foto aktualisieren"
+
+#: ../../Zotlabs/Module/Connedit.php:611
+msgid "Fetch updated photo"
+msgstr "Aktualisiertes Profilfoto abrufen"
+
+#: ../../Zotlabs/Module/Connedit.php:615
+msgid "Recent Activity"
+msgstr "Kürzliche Aktivitäten"
+
+#: ../../Zotlabs/Module/Connedit.php:618
+msgid "View recent posts and comments"
+msgstr "Betrachte die neuesten Beiträge und Kommentare"
+
+#: ../../Zotlabs/Module/Connedit.php:625
+msgid "Block (or Unblock) all communications with this connection"
+msgstr "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen"
+
+#: ../../Zotlabs/Module/Connedit.php:626
+msgid "This connection is blocked!"
+msgstr "Die Verbindung ist geblockt!"
+
+#: ../../Zotlabs/Module/Connedit.php:630
+msgid "Unignore"
+msgstr "Nicht ignorieren"
+
+#: ../../Zotlabs/Module/Connedit.php:633
+msgid "Ignore (or Unignore) all inbound communications from this connection"
+msgstr "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen"
+
+#: ../../Zotlabs/Module/Connedit.php:634
+msgid "This connection is ignored!"
+msgstr "Die Verbindung wird ignoriert!"
+
+#: ../../Zotlabs/Module/Connedit.php:638
+msgid "Unarchive"
+msgstr "Aus Archiv zurückholen"
+
+#: ../../Zotlabs/Module/Connedit.php:638
+msgid "Archive"
+msgstr "Archivieren"
+
+#: ../../Zotlabs/Module/Connedit.php:641
+msgid ""
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
+msgstr "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)"
+
+#: ../../Zotlabs/Module/Connedit.php:642
+msgid "This connection is archived!"
+msgstr "Die Verbindung ist archiviert!"
+
+#: ../../Zotlabs/Module/Connedit.php:646
+msgid "Unhide"
+msgstr "Wieder sichtbar machen"
+
+#: ../../Zotlabs/Module/Connedit.php:646
+msgid "Hide"
+msgstr "Verstecken"
+
+#: ../../Zotlabs/Module/Connedit.php:649
+msgid "Hide or Unhide this connection from your other connections"
+msgstr "Diese Verbindung vor anderen Verbindungen verstecken/zeigen"
+
+#: ../../Zotlabs/Module/Connedit.php:650
+msgid "This connection is hidden!"
+msgstr "Die Verbindung ist versteckt!"
+
+#: ../../Zotlabs/Module/Connedit.php:657
+msgid "Delete this connection"
+msgstr "Verbindung löschen"
+
+#: ../../Zotlabs/Module/Connedit.php:665
+msgid "Fetch Vcard"
+msgstr "Vcard abrufen"
+
+#: ../../Zotlabs/Module/Connedit.php:668
+msgid "Fetch electronic calling card for this connection"
+msgstr "Rufe eine digitale Visitenkarte für diese Verbindung ab"
+
+#: ../../Zotlabs/Module/Connedit.php:679
+msgid "Open Individual Permissions section by default"
+msgstr "Öffne standardmäßig den Bereich für individuelle Berechtigungen"
+
+#: ../../Zotlabs/Module/Connedit.php:702
+msgid "Affinity"
+msgstr "Beziehung"
+
+#: ../../Zotlabs/Module/Connedit.php:705
+msgid "Open Set Affinity section by default"
+msgstr "Öffne standardmäßig den Bereich für Beziehungsgrad-Einstellungen"
+
+#: ../../Zotlabs/Module/Connedit.php:709 ../../Zotlabs/Widget/Affinity.php:22
+msgid "Me"
+msgstr "Ich"
+
+#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:23
+msgid "Family"
+msgstr "Familie"
+
+#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:25
+msgid "Acquaintances"
+msgstr "Bekannte"
+
+#: ../../Zotlabs/Module/Connedit.php:739
+msgid "Filter"
+msgstr "Filter"
+
+#: ../../Zotlabs/Module/Connedit.php:742
+msgid "Open Custom Filter section by default"
+msgstr "Öffne standardmäßig den Bereich für benutzerdefinierte Filter"
+
+#: ../../Zotlabs/Module/Connedit.php:779
+msgid "Approve this connection"
+msgstr "Verbindung genehmigen"
+
+#: ../../Zotlabs/Module/Connedit.php:779
+msgid "Accept connection to allow communication"
+msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"
+
+#: ../../Zotlabs/Module/Connedit.php:784
+msgid "Set Affinity"
+msgstr "Beziehung festlegen"
+
+#: ../../Zotlabs/Module/Connedit.php:787
+msgid "Set Profile"
+msgstr "Profil festlegen"
+
+#: ../../Zotlabs/Module/Connedit.php:790
+msgid "Set Affinity & Profile"
+msgstr "Beziehung und Profile festlegen"
+
+#: ../../Zotlabs/Module/Connedit.php:838
+msgid "This connection is unreachable from this location."
+msgstr "Diese Verbindung ist von diesem Ort unerreichbar."
+
+#: ../../Zotlabs/Module/Connedit.php:839
+msgid "This connection may be unreachable from other channel locations."
+msgstr "Diese Verbindung könnte von anderen Standpunkten des Kanals nicht erreichbar sein."
+
+#: ../../Zotlabs/Module/Connedit.php:841
+msgid "Location independence is not supported by their network."
+msgstr "Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt."
+
+#: ../../Zotlabs/Module/Connedit.php:847
+msgid ""
+"This connection is unreachable from this location. Location independence is "
+"not supported by their network."
+msgstr "Diese Verbindung ist von diesem Standort aus unerreichbar. Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt."
+
+#: ../../Zotlabs/Module/Connedit.php:850 ../../Zotlabs/Module/Defperms.php:238
+#: ../../Zotlabs/Widget/Settings_menu.php:109
+msgid "Connection Default Permissions"
+msgstr "Standardzugriffsrechte für neue Verbindungen:"
+
+#: ../../Zotlabs/Module/Connedit.php:850 ../../include/items.php:4164
+#, php-format
+msgid "Connection: %s"
+msgstr "Verbindung: %s"
+
+#: ../../Zotlabs/Module/Connedit.php:851 ../../Zotlabs/Module/Defperms.php:239
+msgid "Apply these permissions automatically"
+msgstr "Diese Berechtigungen automatisch anwenden"
+
+#: ../../Zotlabs/Module/Connedit.php:851
+msgid "Connection requests will be approved without your interaction"
+msgstr "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist."
+
+#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:240
+msgid "Permission role"
+msgstr "Berechtigungsrolle"
+
+#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:240
+#: ../../Zotlabs/Widget/Notifications.php:151 ../../include/nav.php:284
+msgid "Loading"
+msgstr "Lädt..."
+
+#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:241
+msgid "Add permission role"
+msgstr "Berechtigungsrolle hinzufügen"
+
+#: ../../Zotlabs/Module/Connedit.php:860
+msgid "This connection's primary address is"
+msgstr "Die Hauptadresse der Verbindung ist"
+
+#: ../../Zotlabs/Module/Connedit.php:861
+msgid "Available locations:"
+msgstr "Verfügbare Klone:"
+
+#: ../../Zotlabs/Module/Connedit.php:866 ../../Zotlabs/Module/Defperms.php:245
+msgid ""
+"The permissions indicated on this page will be applied to all new "
+"connections."
+msgstr "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet."
+
+#: ../../Zotlabs/Module/Connedit.php:867
+msgid "Connection Tools"
+msgstr "Verbindungswerkzeuge"
+
+#: ../../Zotlabs/Module/Connedit.php:869
+msgid "Slide to adjust your degree of friendship"
+msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen"
+
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Rate.php:155
+#: ../../include/js_strings.php:20
+msgid "Rating"
+msgstr "Bewertung"
+
+#: ../../Zotlabs/Module/Connedit.php:871
+msgid "Slide to adjust your rating"
+msgstr "Verschieben, um Deine Bewertung einzustellen"
+
+#: ../../Zotlabs/Module/Connedit.php:872 ../../Zotlabs/Module/Connedit.php:877
+msgid "Optionally explain your rating"
+msgstr "Optional kannst Du Deine Bewertung begründen"
+
+#: ../../Zotlabs/Module/Connedit.php:874
+msgid "Custom Filter"
+msgstr "Benutzerdefinierter Filter"
+
+#: ../../Zotlabs/Module/Connedit.php:875
+msgid "Only import posts with this text"
+msgstr "Nur Beiträge mit diesem Text importieren"
+
+#: ../../Zotlabs/Module/Connedit.php:875 ../../Zotlabs/Module/Connedit.php:876
+msgid ""
+"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
+"all posts"
+msgstr "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren."
+
+#: ../../Zotlabs/Module/Connedit.php:876
+msgid "Do not import posts with this text"
+msgstr "Beiträge mit diesem Text nicht importieren"
+
+#: ../../Zotlabs/Module/Connedit.php:878
+msgid "This information is public!"
+msgstr "Diese Information ist öffentlich!"
+
+#: ../../Zotlabs/Module/Connedit.php:883
+msgid "Connection Pending Approval"
+msgstr "Verbindung wartet auf Bestätigung"
+
+#: ../../Zotlabs/Module/Connedit.php:888
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."
+
+#: ../../Zotlabs/Module/Connedit.php:895
+msgid ""
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can change those settings here but "
+"they wont have any impact unless the inherited setting changes."
+msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen."
+
+#: ../../Zotlabs/Module/Connedit.php:896
+msgid "Last update:"
+msgstr "Letzte Aktualisierung:"
+
+#: ../../Zotlabs/Module/Connedit.php:904
+msgid "Details"
+msgstr "Details"
+
+#: ../../Zotlabs/Module/Chat.php:181
+msgid "Room not found"
+msgstr "Chatraum nicht gefunden"
+
+#: ../../Zotlabs/Module/Chat.php:197
+msgid "Leave Room"
+msgstr "Raum verlassen"
+
+#: ../../Zotlabs/Module/Chat.php:198
+msgid "Delete Room"
+msgstr "Raum löschen"
+
+#: ../../Zotlabs/Module/Chat.php:199
+msgid "I am away right now"
+msgstr "Ich bin gerade nicht da"
+
+#: ../../Zotlabs/Module/Chat.php:200
+msgid "I am online"
+msgstr "Ich bin online"
+
+#: ../../Zotlabs/Module/Chat.php:202
+msgid "Bookmark this room"
+msgstr "Lesezeichen für diesen Raum setzen"
+
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:241
+#: ../../Zotlabs/Module/Mail.php:362 ../../include/conversation.php:1313
+msgid "Please enter a link URL:"
+msgstr "Gib eine URL ein:"
+
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:294
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../include/conversation.php:1432
+msgid "Encrypt text"
+msgstr "Text verschlüsseln"
+
+#: ../../Zotlabs/Module/Chat.php:232
+msgid "New Chatroom"
+msgstr "Neuer Chatraum"
+
+#: ../../Zotlabs/Module/Chat.php:233
+msgid "Chatroom name"
+msgstr "Chatraumname"
+
+#: ../../Zotlabs/Module/Chat.php:234
+msgid "Expiration of chats (minutes)"
+msgstr "Verfall von Chats (Minuten)"
+
+#: ../../Zotlabs/Module/Chat.php:250
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "%1$ss Chaträume"
+
+#: ../../Zotlabs/Module/Chat.php:255
+msgid "No chatrooms available"
+msgstr "Keine Chaträume verfügbar"
+
+#: ../../Zotlabs/Module/Chat.php:259
+msgid "Expiration"
+msgstr "Verfall"
+
+#: ../../Zotlabs/Module/Chat.php:260
+msgid "min"
+msgstr "min"
+
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:248
+#: ../../include/conversation.php:1831 ../../include/nav.php:401
+msgid "Photos"
+msgstr "Fotos"
+
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:243
+#: ../../Zotlabs/Storage/Browser.php:272 ../../include/conversation.php:1839
+#: ../../include/nav.php:409
+msgid "Files"
+msgstr "Dateien"
+
+#: ../../Zotlabs/Module/Menu.php:49
+msgid "Unable to update menu."
+msgstr "Kann Menü nicht aktualisieren."
+
+#: ../../Zotlabs/Module/Menu.php:60
+msgid "Unable to create menu."
+msgstr "Kann Menü nicht erstellen."
+
+#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110
+msgid "Menu Name"
+msgstr "Name des Menüs"
+
+#: ../../Zotlabs/Module/Menu.php:98
+msgid "Unique name (not visible on webpage) - required"
+msgstr "Eindeutiger Name (nicht sichtbar auf der Webseite) – erforderlich"
+
+#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111
+msgid "Menu Title"
+msgstr "Menütitel"
+
+#: ../../Zotlabs/Module/Menu.php:99
+msgid "Visible on webpage - leave empty for no title"
+msgstr "Sichtbar auf der Webseite – für keinen Titel leer lassen"
+
+#: ../../Zotlabs/Module/Menu.php:100
+msgid "Allow Bookmarks"
+msgstr "Lesezeichen erlauben"
+
+#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Im Menü können gespeicherte Lesezeichen abgelegt werden"
+
+#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159
+msgid "Submit and proceed"
+msgstr "Absenden und fortfahren"
+
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2403
+msgid "Menus"
+msgstr "Menüs"
+
+#: ../../Zotlabs/Module/Menu.php:117
+msgid "Bookmarks allowed"
+msgstr "Lesezeichen erlaubt"
+
+#: ../../Zotlabs/Module/Menu.php:119
+msgid "Delete this menu"
+msgstr "Lösche dieses Menü"
+
+#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154
+msgid "Edit menu contents"
+msgstr "Bearbeite Menü Inhalte"
+
+#: ../../Zotlabs/Module/Menu.php:121
+msgid "Edit this menu"
+msgstr "Dieses Menü bearbeiten"
+
+#: ../../Zotlabs/Module/Menu.php:136
+msgid "Menu could not be deleted."
+msgstr "Menü konnte nicht gelöscht werden."
+
+#: ../../Zotlabs/Module/Menu.php:149
+msgid "Edit Menu"
+msgstr "Menü bearbeiten"
+
+#: ../../Zotlabs/Module/Menu.php:153
+msgid "Add or remove entries to this menu"
+msgstr "Einträge zu diesem Menü hinzufügen oder entfernen"
+
+#: ../../Zotlabs/Module/Menu.php:155
+msgid "Menu name"
+msgstr "Menü Name"
+
+#: ../../Zotlabs/Module/Menu.php:155
+msgid "Must be unique, only seen by you"
+msgstr "Muss eindeutig sein, ist aber nur für Dich sichtbar"
+
+#: ../../Zotlabs/Module/Menu.php:156
+msgid "Menu title"
+msgstr "Menü Titel"
+
+#: ../../Zotlabs/Module/Menu.php:156
+msgid "Menu title as seen by others"
+msgstr "Menü Titel wie er von anderen gesehen wird"
+
+#: ../../Zotlabs/Module/Menu.php:157
+msgid "Allow bookmarks"
+msgstr "Erlaube Lesezeichen"
+
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2404
+msgid "Layouts"
+msgstr "Layouts"
+
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:251
+#: ../../include/nav.php:176 ../../include/nav.php:280
+#: ../../include/help.php:68 ../../include/help.php:74
+msgid "Help"
+msgstr "Hilfe"
+
+#: ../../Zotlabs/Module/Layouts.php:186
+msgid "Comanche page description language help"
+msgstr "Hilfe zur Comanche-Seitenbeschreibungssprache"
+
+#: ../../Zotlabs/Module/Layouts.php:190
+msgid "Layout Description"
+msgstr "Layout-Beschreibung"
+
+#: ../../Zotlabs/Module/Layouts.php:195
+msgid "Download PDL file"
+msgstr "PDL-Datei herunterladen"
+
+#: ../../Zotlabs/Module/Cloud.php:114
+msgid "Please refresh page"
+msgstr "Bitte die Seite neu laden"
+
+#: ../../Zotlabs/Module/Cloud.php:117
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: ../../Zotlabs/Module/Email_validation.php:24
+#: ../../Zotlabs/Module/Email_resend.php:12
+msgid "Token verification failed."
+msgstr "Überprüfung des Verifizierungscodes fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Email_validation.php:36
+msgid "Email Verification Required"
+msgstr "Email-Überprüfung erforderlich"
+
+#: ../../Zotlabs/Module/Email_validation.php:37
+#, php-format
+msgid ""
+"A verification token was sent to your email address [%s]. Enter that token "
+"here to complete the account verification step. Please allow a few minutes "
+"for delivery, and check your spam folder if you do not see the message."
+msgstr "Ein Verifizierungscode wurde an Deine Emailadresse versendet [%s]. Gib diesen Code hier ein, um die Überprüfung abzuschließen. Bedenke, dass die Zustellung der Mail einige Zeit dauern kann, und überprüfe ggf. auch Spam- und andere Filter-Ordner, falls die Nachricht nicht erscheint."
+
+#: ../../Zotlabs/Module/Email_validation.php:38
+msgid "Resend Email"
+msgstr "Email erneut versenden"
+
+#: ../../Zotlabs/Module/Email_validation.php:41
+msgid "Validation token"
+msgstr "Verifizierungscode"
+
+#: ../../Zotlabs/Module/Tagger.php:48
+msgid "Post not found."
+msgstr "Beitrag nicht gefunden."
+
+#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:160
+#: ../../include/bbcode.php:339
+msgid "post"
+msgstr "Beitrag"
+
+#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
+#: ../../include/text.php:2012
+msgid "comment"
+msgstr "Kommentar"
+
+#: ../../Zotlabs/Module/Tagger.php:117
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s hat %2$ss %3$s mit %4$s verschlagwortet"
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert."
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Konfigurationseditor"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird."
+
+#: ../../Zotlabs/Module/Defperms.php:239
+msgid ""
+"If enabled, connection requests will be approved without your interaction"
+msgstr "Ist dies aktiviert, werden Verbindungsanfragen ohne Deine aktive Zustimmung bestätigt."
+
+#: ../../Zotlabs/Module/Defperms.php:246
+msgid "Automatic approval settings"
+msgstr "Einstellungen für automatische Bestätigung"
+
+#: ../../Zotlabs/Module/Defperms.php:254
+msgid ""
+"Some individual permissions may have been preset or locked based on your "
+"channel type and privacy settings."
+msgstr "Einige individuelle Berechtigungen können basierend auf Deinen Kanal- und Privatsphäre-Einstellungen vorbelegt oder gesperrt sein."
+
+#: ../../Zotlabs/Module/Group.php:24
+msgid "Privacy group created."
+msgstr "Gruppe wurde erstellt."
+
+#: ../../Zotlabs/Module/Group.php:30
+msgid "Could not create privacy group."
+msgstr "Gruppe konnte nicht erstellt werden."
+
+#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:143
+#: ../../include/items.php:4131
+msgid "Privacy group not found."
+msgstr "Gruppe nicht gefunden."
+
+#: ../../Zotlabs/Module/Group.php:58
+msgid "Privacy group updated."
+msgstr "Gruppe wurde aktualisiert."
+
+#: ../../Zotlabs/Module/Group.php:92
+msgid "Create a group of channels."
+msgstr "Erstelle eine Gruppe für Kanäle."
+
+#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:186
+msgid "Privacy group name: "
+msgstr "Gruppenname:"
+
+#: ../../Zotlabs/Module/Group.php:95 ../../Zotlabs/Module/Group.php:189
+msgid "Members are visible to other channels"
+msgstr "Mitglieder sind sichtbar für andere Kanäle"
+
+#: ../../Zotlabs/Module/Group.php:113
+msgid "Privacy group removed."
+msgstr "Gruppe wurde entfernt."
+
+#: ../../Zotlabs/Module/Group.php:115
+msgid "Unable to remove privacy group."
+msgstr "Gruppe konnte nicht entfernt werden."
+
+#: ../../Zotlabs/Module/Group.php:185
+msgid "Privacy group editor"
+msgstr "Gruppeneditor"
+
+#: ../../Zotlabs/Module/Group.php:199 ../../Zotlabs/Module/Help.php:81
+msgid "Members"
+msgstr "Mitglieder"
+
+#: ../../Zotlabs/Module/Group.php:201
+msgid "All Connected Channels"
+msgstr "Alle verbundenen Kanäle"
+
+#: ../../Zotlabs/Module/Group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Wähle einen Kanal zum hinzufügen oder entfernen aus."
+
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184
+#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659
+msgid "Profile not found."
+msgstr "Profil nicht gefunden."
+
+#: ../../Zotlabs/Module/Profiles.php:44
+msgid "Profile deleted."
+msgstr "Profil gelöscht."
+
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105
+msgid "Profile-"
+msgstr "Profil-"
+
+#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127
+msgid "New profile created."
+msgstr "Neues Profil erstellt."
+
+#: ../../Zotlabs/Module/Profiles.php:111
+msgid "Profile unavailable to clone."
+msgstr "Profil kann nicht geklont werden."
+
+#: ../../Zotlabs/Module/Profiles.php:146
+msgid "Profile unavailable to export."
+msgstr "Dieses Profil kann nicht exportiert werden."
+
+#: ../../Zotlabs/Module/Profiles.php:252
+msgid "Profile Name is required."
+msgstr "Profil-Name erforderlich."
+
+#: ../../Zotlabs/Module/Profiles.php:459
+msgid "Marital Status"
+msgstr "Familienstand"
+
+#: ../../Zotlabs/Module/Profiles.php:463
+msgid "Romantic Partner"
+msgstr "Romantische Partner"
+
+#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:775
+msgid "Likes"
+msgstr "Gefällt"
+
+#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:776
+msgid "Dislikes"
+msgstr "Gefällt nicht"
+
+#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:783
+msgid "Work/Employment"
+msgstr "Arbeit/Anstellung"
+
+#: ../../Zotlabs/Module/Profiles.php:478
+msgid "Religion"
+msgstr "Religion"
+
+#: ../../Zotlabs/Module/Profiles.php:482
+msgid "Political Views"
+msgstr "Politische Ansichten"
+
+#: ../../Zotlabs/Module/Profiles.php:486
+#: ../../addon/openid/MysqlProvider.php:74
+msgid "Gender"
+msgstr "Geschlecht"
+
+#: ../../Zotlabs/Module/Profiles.php:490
+msgid "Sexual Preference"
+msgstr "Sexuelle Orientierung"
+
+#: ../../Zotlabs/Module/Profiles.php:494
+msgid "Homepage"
+msgstr "Webseite"
+
+#: ../../Zotlabs/Module/Profiles.php:498
+msgid "Interests"
+msgstr "Hobbys/Interessen"
+
+#: ../../Zotlabs/Module/Profiles.php:594
+msgid "Profile updated."
+msgstr "Profil aktualisiert."
+
+#: ../../Zotlabs/Module/Profiles.php:678
+msgid "Hide your connections list from viewers of this profile"
+msgstr "Deine Verbindungen vor Betrachtern dieses Profils verbergen"
+
+#: ../../Zotlabs/Module/Profiles.php:725
+msgid "Edit Profile Details"
+msgstr "Bearbeite Profil-Details"
+
+#: ../../Zotlabs/Module/Profiles.php:727
+msgid "View this profile"
+msgstr "Dieses Profil ansehen"
+
+#: ../../Zotlabs/Module/Profiles.php:728 ../../Zotlabs/Module/Profiles.php:827
+#: ../../include/channel.php:1320
+msgid "Edit visibility"
+msgstr "Sichtbarkeit bearbeiten"
+
+#: ../../Zotlabs/Module/Profiles.php:729
+msgid "Profile Tools"
+msgstr "Profilwerkzeuge"
+
+#: ../../Zotlabs/Module/Profiles.php:730
+msgid "Change cover photo"
+msgstr "Titelbild ändern"
+
+#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1290
+msgid "Change profile photo"
+msgstr "Profilfoto ändern"
+
+#: ../../Zotlabs/Module/Profiles.php:732
+msgid "Create a new profile using these settings"
+msgstr "Neues Profil anlegen und diese Einstellungen übernehmen"
+
+#: ../../Zotlabs/Module/Profiles.php:733
+msgid "Clone this profile"
+msgstr "Dieses Profil klonen"
+
+#: ../../Zotlabs/Module/Profiles.php:734
+msgid "Delete this profile"
+msgstr "Dieses Profil löschen"
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Add profile things"
+msgstr "Sachen zum Profil hinzufügen"
+
+#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1705
+msgid "Personal"
+msgstr "Persönlich"
+
+#: ../../Zotlabs/Module/Profiles.php:738
+msgid "Relation"
+msgstr "Beziehung"
+
+#: ../../Zotlabs/Module/Profiles.php:739 ../../Zotlabs/Widget/Newmember.php:53
+#: ../../include/datetime.php:58
+msgid "Miscellaneous"
+msgstr "Verschiedenes"
+
+#: ../../Zotlabs/Module/Profiles.php:741
+msgid "Import profile from file"
+msgstr "Profil aus einer Datei importieren"
+
+#: ../../Zotlabs/Module/Profiles.php:742
+msgid "Export profile to file"
+msgstr "Profil in eine Datei exportieren"
+
+#: ../../Zotlabs/Module/Profiles.php:743
+msgid "Your gender"
+msgstr "Dein Geschlecht"
+
+#: ../../Zotlabs/Module/Profiles.php:744
+msgid "Marital status"
+msgstr "Familienstand"
+
+#: ../../Zotlabs/Module/Profiles.php:745
+msgid "Sexual preference"
+msgstr "Sexuelle Orientierung"
+
+#: ../../Zotlabs/Module/Profiles.php:748
+msgid "Profile name"
+msgstr "Profilname"
+
+#: ../../Zotlabs/Module/Profiles.php:750
+msgid "This is your default profile."
+msgstr "Das ist Dein Standardprofil."
+
+#: ../../Zotlabs/Module/Profiles.php:752
+msgid "Your full name"
+msgstr "Dein voller Name"
+
+#: ../../Zotlabs/Module/Profiles.php:753
+msgid "Title/Description"
+msgstr "Titel/Beschreibung"
+
+#: ../../Zotlabs/Module/Profiles.php:756
+msgid "Street address"
+msgstr "Straße und Hausnummer"
+
+#: ../../Zotlabs/Module/Profiles.php:757
+msgid "Locality/City"
+msgstr "Wohnort"
+
+#: ../../Zotlabs/Module/Profiles.php:758
+msgid "Region/State"
+msgstr "Region/Bundesstaat"
+
+#: ../../Zotlabs/Module/Profiles.php:759
+msgid "Postal/Zip code"
+msgstr "Postleitzahl"
+
+#: ../../Zotlabs/Module/Profiles.php:765
+msgid "Who (if applicable)"
+msgstr "Wer (falls anwendbar)"
+
+#: ../../Zotlabs/Module/Profiles.php:765
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
+
+#: ../../Zotlabs/Module/Profiles.php:766
+msgid "Since (date)"
+msgstr "Seit (Datum)"
+
+#: ../../Zotlabs/Module/Profiles.php:769
+msgid "Tell us about yourself"
+msgstr "Erzähle uns ein wenig von Dir"
+
+#: ../../Zotlabs/Module/Profiles.php:770
+#: ../../addon/openid/MysqlProvider.php:68
+msgid "Homepage URL"
+msgstr "Homepage-URL"
+
+#: ../../Zotlabs/Module/Profiles.php:771
+msgid "Hometown"
+msgstr "Heimatort"
+
+#: ../../Zotlabs/Module/Profiles.php:772
+msgid "Political views"
+msgstr "Politische Ansichten"
+
+#: ../../Zotlabs/Module/Profiles.php:773
+msgid "Religious views"
+msgstr "Religiöse Ansichten"
+
+#: ../../Zotlabs/Module/Profiles.php:774
+msgid "Keywords used in directory listings"
+msgstr "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden"
+
+#: ../../Zotlabs/Module/Profiles.php:774
+msgid "Example: fishing photography software"
+msgstr "Beispiel: Angeln Fotografie Software"
+
+#: ../../Zotlabs/Module/Profiles.php:777
+msgid "Musical interests"
+msgstr "Musikalische Interessen"
+
+#: ../../Zotlabs/Module/Profiles.php:778
+msgid "Books, literature"
+msgstr "Bücher, Literatur"
+
+#: ../../Zotlabs/Module/Profiles.php:779
+msgid "Television"
+msgstr "Fernsehen"
+
+#: ../../Zotlabs/Module/Profiles.php:780
+msgid "Film/Dance/Culture/Entertainment"
+msgstr "Film/Tanz/Kultur/Unterhaltung"
+
+#: ../../Zotlabs/Module/Profiles.php:781
+msgid "Hobbies/Interests"
+msgstr "Hobbys/Interessen"
+
+#: ../../Zotlabs/Module/Profiles.php:782
+msgid "Love/Romance"
+msgstr "Liebe/Romantik"
+
+#: ../../Zotlabs/Module/Profiles.php:784
+msgid "School/Education"
+msgstr "Schule/Ausbildung"
+
+#: ../../Zotlabs/Module/Profiles.php:785
+msgid "Contact information and social networks"
+msgstr "Kontaktinformation und soziale Netzwerke"
+
+#: ../../Zotlabs/Module/Profiles.php:786
+msgid "My other channels"
+msgstr "Meine anderen Kanäle"
+
+#: ../../Zotlabs/Module/Profiles.php:788
+msgid "Communications"
+msgstr "Kommunikation"
+
+#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1316
+msgid "Profile Image"
+msgstr "Profilfoto:"
+
+#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1297
+#: ../../include/nav.php:117
+msgid "Edit Profiles"
+msgstr "Profile bearbeiten"
+
+#: ../../Zotlabs/Module/Go.php:21
+msgid "This page is available only to site members"
+msgstr "Diese Seite ist nur für Mitglieder verfügbar"
+
+#: ../../Zotlabs/Module/Go.php:27
+msgid "Welcome"
+msgstr "Willkommen"
+
+#: ../../Zotlabs/Module/Go.php:29
+msgid "What would you like to do?"
+msgstr "Was möchtest Du gerne tun?"
+
+#: ../../Zotlabs/Module/Go.php:31
+msgid ""
+"Please bookmark this page if you would like to return to it in the future"
+msgstr "Bitte speichere diese Seite in Deinen Lesezeichen, falls Du später zu ihr zurückkehren möchtest."
+
+#: ../../Zotlabs/Module/Go.php:35
+msgid "Upload a profile photo"
+msgstr "Ein Profilfoto hochladen"
+
+#: ../../Zotlabs/Module/Go.php:36
+msgid "Upload a cover photo"
+msgstr "Ein Titelbild hochladen"
+
+#: ../../Zotlabs/Module/Go.php:37
+msgid "Edit your default profile"
+msgstr "Dein Standardprofil bearbeiten"
+
+#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:43
+msgid "View friend suggestions"
+msgstr "Freundschafts- und Verbindungsvorschläge ansehen"
+
+#: ../../Zotlabs/Module/Go.php:39 ../../Zotlabs/Widget/Newmember.php:42
+msgid "View the channel directory"
+msgstr "Das Kanalverzeichnis ansehen"
+
+#: ../../Zotlabs/Module/Go.php:40
+msgid "View/edit your channel settings"
+msgstr "Deine Kanaleinstellungen ansehen/bearbeiten"
+
+#: ../../Zotlabs/Module/Go.php:41
+msgid "View the site or project documentation"
+msgstr "Die Website-/Projektdokumentation ansehen"
+
+#: ../../Zotlabs/Module/Go.php:42
+msgid "Visit your channel homepage"
+msgstr "Deine Kanal-Startseite aufrufen"
+
+#: ../../Zotlabs/Module/Go.php:43
+msgid ""
+"View your connections and/or add somebody whose address you already know"
+msgstr "Deine Verbindungen ansehen und/oder jemanden hinzufügen, dessen Kanal-Adresse Du bereits kennst"
+
+#: ../../Zotlabs/Module/Go.php:44
+msgid ""
+"View your personal stream (this may be empty until you add some connections)"
+msgstr "Deinen persönlichen Beitragsstrom ansehen (dieser kann leer sein, bis Du ein paar Verbindungen hinzugefügt hast)"
+
+#: ../../Zotlabs/Module/Go.php:52
+msgid "View the public stream. Warning: this content is not moderated"
+msgstr "Den öffentlichen Beitragsstrom ansehen. Warnung: Diese Inhalte sind nicht moderiert."
+
+#: ../../Zotlabs/Module/Editwebpage.php:139
+msgid "Page link"
+msgstr "Seiten-Link"
+
+#: ../../Zotlabs/Module/Editwebpage.php:166
+msgid "Edit Webpage"
+msgstr "Webseite bearbeiten"
+
+#: ../../Zotlabs/Module/Manage.php:145
+msgid "Create a new channel"
+msgstr "Neuen Kanal anlegen"
+
+#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:240
+#: ../../include/nav.php:102 ../../include/nav.php:190
+msgid "Channel Manager"
+msgstr "Kanal-Manager"
+
+#: ../../Zotlabs/Module/Manage.php:171
+msgid "Current Channel"
+msgstr "Aktueller Kanal"
+
+#: ../../Zotlabs/Module/Manage.php:173
+msgid "Switch to one of your channels by selecting it."
+msgstr "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst."
+
+#: ../../Zotlabs/Module/Manage.php:174
+msgid "Default Channel"
+msgstr "Standard Kanal"
+
+#: ../../Zotlabs/Module/Manage.php:175
+msgid "Make Default"
+msgstr "Zum Standard machen"
+
+#: ../../Zotlabs/Module/Manage.php:178
+#, php-format
+msgid "%d new messages"
+msgstr "%d neue Nachrichten"
+
+#: ../../Zotlabs/Module/Manage.php:179
+#, php-format
+msgid "%d new introductions"
+msgstr "%d neue Vorstellungen"
+
+#: ../../Zotlabs/Module/Manage.php:181
+msgid "Delegated Channel"
+msgstr "Delegierte Kanäle"
+
+#: ../../Zotlabs/Module/Cards.php:42 ../../Zotlabs/Module/Cards.php:181
+#: ../../Zotlabs/Lib/Apps.php:230 ../../include/conversation.php:1890
+#: ../../include/features.php:114 ../../include/nav.php:458
+msgid "Cards"
+msgstr "Karten"
+
+#: ../../Zotlabs/Module/Cards.php:99
+msgid "Add Card"
+msgstr "Karte hinzufügen"
+
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken"
+
+#: ../../Zotlabs/Module/Siteinfo.php:18
+msgid "About this site"
+msgstr "Ãœber diese Seite"
+
+#: ../../Zotlabs/Module/Siteinfo.php:19
+msgid "Site Name"
+msgstr "Seitenname"
+
+#: ../../Zotlabs/Module/Siteinfo.php:23
+msgid "Administrator"
+msgstr "Administrator"
+
+#: ../../Zotlabs/Module/Siteinfo.php:25 ../../Zotlabs/Module/Register.php:232
+msgid "Terms of Service"
+msgstr "Nutzungsbedingungen"
+
+#: ../../Zotlabs/Module/Siteinfo.php:26
+msgid "Software and Project information"
+msgstr "Software und Projektinformationen"
+
+#: ../../Zotlabs/Module/Siteinfo.php:27
+msgid "This site is powered by $Projectname"
+msgstr "Diese Website wird bereitgestellt durch $Projectname"
+
+#: ../../Zotlabs/Module/Siteinfo.php:28
+msgid ""
+"Federated and decentralised networking and identity services provided by Zot"
+msgstr "Verbundene, dezentrale Netzwerk- und Identitätsdienste, ermöglicht mittels Zot"
+
+#: ../../Zotlabs/Module/Siteinfo.php:30
+#, php-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: ../../Zotlabs/Module/Siteinfo.php:31
+msgid "Project homepage"
+msgstr "Projekt-Website"
+
+#: ../../Zotlabs/Module/Siteinfo.php:32
+msgid "Developer homepage"
+msgstr "Entwickler-Website"
+
+#: ../../Zotlabs/Module/Ratings.php:70
+msgid "No ratings"
+msgstr "Keine Bewertungen"
+
+#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35
+#: ../../include/conversation.php:1082
+msgid "Ratings"
+msgstr "Bewertungen"
+
+#: ../../Zotlabs/Module/Ratings.php:98
+msgid "Rating: "
+msgstr "Bewertung: "
+
+#: ../../Zotlabs/Module/Ratings.php:99
+msgid "Website: "
+msgstr "Webseite: "
+
+#: ../../Zotlabs/Module/Ratings.php:101
+msgid "Description: "
+msgstr "Beschreibung: "
+
+#: ../../Zotlabs/Module/Webpages.php:54
+msgid "Import Webpage Elements"
+msgstr "Webseitenelemente importieren"
+
+#: ../../Zotlabs/Module/Webpages.php:55
+msgid "Import selected"
+msgstr "Import ausgewählt"
+
+#: ../../Zotlabs/Module/Webpages.php:78
+msgid "Export Webpage Elements"
+msgstr "Webseitenelemente exportieren"
+
+#: ../../Zotlabs/Module/Webpages.php:79
+msgid "Export selected"
+msgstr "Exportieren ausgewählt"
+
+#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:244
+#: ../../include/conversation.php:1912 ../../include/nav.php:481
+msgid "Webpages"
+msgstr "Webseiten"
+
+#: ../../Zotlabs/Module/Webpages.php:248
+msgid "Actions"
+msgstr "Aktionen"
+
+#: ../../Zotlabs/Module/Webpages.php:249
+msgid "Page Link"
+msgstr "Seiten-Link"
+
+#: ../../Zotlabs/Module/Webpages.php:250
+msgid "Page Title"
+msgstr "Seitentitel"
+
+#: ../../Zotlabs/Module/Webpages.php:280
+msgid "Invalid file type."
+msgstr "Ungültiger Dateityp."
+
+#: ../../Zotlabs/Module/Webpages.php:292
+msgid "Error opening zip file"
+msgstr "Fehler beim Öffnen der ZIP-Datei"
+
+#: ../../Zotlabs/Module/Webpages.php:303
+msgid "Invalid folder path."
+msgstr "Ungültiger Ordnerpfad."
+
+#: ../../Zotlabs/Module/Webpages.php:330
+msgid "No webpage elements detected."
+msgstr "Keine Webseitenelemente erkannt."
+
+#: ../../Zotlabs/Module/Webpages.php:405
+msgid "Import complete."
+msgstr "Import abgeschlossen."
+
+#: ../../Zotlabs/Module/Changeaddr.php:35
+msgid ""
+"Channel name changes are not allowed within 48 hours of changing the account"
+" password."
+msgstr "Innerhalb von 48 Stunden nach einer Änderung des Konto-Passworts können Kanäle nicht umbenannt werden."
+
+#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:214
+#: ../../include/channel.php:599
+msgid "Reserved nickname. Please choose another."
+msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
+
+#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:219
+#: ../../include/channel.php:604
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
+
+#: ../../Zotlabs/Module/Changeaddr.php:77
+msgid "Change channel nickname/address"
+msgstr "Kanalname/-adresse ändern"
+
+#: ../../Zotlabs/Module/Changeaddr.php:78
+msgid "Any/all connections on other networks will be lost!"
+msgstr "Jegliche/alle Verbindungen zu anderen Netzwerken gehen verloren!"
+
+#: ../../Zotlabs/Module/Changeaddr.php:80
+msgid "New channel address"
+msgstr "Neue Kanaladresse"
+
+#: ../../Zotlabs/Module/Changeaddr.php:81
+msgid "Rename Channel"
+msgstr "Kanal umbenennen"
+
+#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43
+msgid "Item is not editable"
+msgstr "Element kann nicht bearbeitet werden."
+
+#: ../../Zotlabs/Module/Editpost.php:108 ../../Zotlabs/Module/Rpost.php:178
+msgid "Edit post"
+msgstr "Bearbeite Beitrag"
+
+#: ../../Zotlabs/Module/Dreport.php:45
+msgid "Invalid message"
+msgstr "Ungültige Beitrags-ID (mid)"
+
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "no results"
+msgstr "keine Ergebnisse"
+
+#: ../../Zotlabs/Module/Dreport.php:93
+msgid "channel sync processed"
+msgstr "Kanal-Sync verarbeitet"
+
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "queued"
+msgstr "zur Warteschlange hinzugefügt"
+
+#: ../../Zotlabs/Module/Dreport.php:101
+msgid "posted"
+msgstr "zugestellt"
+
+#: ../../Zotlabs/Module/Dreport.php:105
+msgid "accepted for delivery"
+msgstr "für Zustellung akzeptiert"
+
+#: ../../Zotlabs/Module/Dreport.php:109
+msgid "updated"
+msgstr "aktualisiert"
+
+#: ../../Zotlabs/Module/Dreport.php:112
+msgid "update ignored"
+msgstr "Aktualisierung ignoriert"
+
+#: ../../Zotlabs/Module/Dreport.php:115
+msgid "permission denied"
+msgstr "Zugriff verweigert"
+
+#: ../../Zotlabs/Module/Dreport.php:119
+msgid "recipient not found"
+msgstr "Empfänger nicht gefunden."
+
+#: ../../Zotlabs/Module/Dreport.php:122
+msgid "mail recalled"
+msgstr "Mail widerrufen"
+
+#: ../../Zotlabs/Module/Dreport.php:125
+msgid "duplicate mail received"
+msgstr "Doppelte Mail erhalten"
+
+#: ../../Zotlabs/Module/Dreport.php:128
+msgid "mail delivered"
+msgstr "Mail zugestellt"
+
+#: ../../Zotlabs/Module/Dreport.php:148
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Zustellungsbericht für %1$s"
+
+#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:39
+#: ../../Zotlabs/Widget/Wiki_pages.php:96
+msgid "Options"
+msgstr "Optionen"
+
+#: ../../Zotlabs/Module/Dreport.php:152
+msgid "Redeliver"
+msgstr "Erneut zustellen"
+
+#: ../../Zotlabs/Module/Sources.php:37
+msgid "Failed to create source. No channel selected."
+msgstr "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt."
+
+#: ../../Zotlabs/Module/Sources.php:51
+msgid "Source created."
+msgstr "Quelle erstellt."
+
+#: ../../Zotlabs/Module/Sources.php:64
+msgid "Source updated."
+msgstr "Quelle aktualisiert."
+
+#: ../../Zotlabs/Module/Sources.php:90
+msgid "*"
+msgstr "*"
+
+#: ../../Zotlabs/Module/Sources.php:96
+#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:274
+msgid "Channel Sources"
+msgstr "Kanal-Quellen"
+
+#: ../../Zotlabs/Module/Sources.php:97
+msgid "Manage remote sources of content for your channel."
+msgstr "Externe Inhaltsquellen für Deinen Kanal verwalten."
+
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
+msgid "New Source"
+msgstr "Neue Quelle"
+
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals."
+
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
+msgid "Only import content with these words (one per line)"
+msgstr "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten"
+
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
+msgid "Leave blank to import all public content"
+msgstr "Leer lassen, um alle öffentlichen Beiträge zu importieren"
+
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
+msgid "Channel Name"
+msgstr "Name des Kanals"
+
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr "Füge die folgenden Kategorien zu Beiträgen, die aus dieser Quelle importiert werden, hinzu (kommagetrennt)"
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
+msgid "Source not found."
+msgstr "Quelle nicht gefunden."
+
+#: ../../Zotlabs/Module/Sources.php:140
+msgid "Edit Source"
+msgstr "Quelle bearbeiten"
+
+#: ../../Zotlabs/Module/Sources.php:141
+msgid "Delete Source"
+msgstr "Quelle löschen"
+
+#: ../../Zotlabs/Module/Sources.php:169
+msgid "Source removed"
+msgstr "Quelle gelöscht"
+
+#: ../../Zotlabs/Module/Sources.php:171
+msgid "Unable to remove source."
+msgstr "Konnte die Quelle nicht löschen."
+
+#: ../../Zotlabs/Module/Like.php:54
+msgid "Like/Dislike"
+msgstr "Mögen/Nicht mögen"
+
+#: ../../Zotlabs/Module/Like.php:59
+msgid "This action is restricted to members."
+msgstr "Diese Aktion kann nur von Mitgliedern ausgeführt werden."
+
+#: ../../Zotlabs/Module/Like.php:60
+msgid ""
+"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
+"href=\"register\">register as a new $Projectname member</a> to continue."
+msgstr "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner $Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues $Projectname-Mitglied</a>."
+
+#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
+#: ../../Zotlabs/Module/Like.php:173
+msgid "Invalid request."
+msgstr "Ungültige Anfrage."
+
+#: ../../Zotlabs/Module/Like.php:121 ../../include/conversation.php:122
+msgid "channel"
+msgstr "Kanal"
+
+#: ../../Zotlabs/Module/Like.php:150
+msgid "thing"
+msgstr "Sache"
+
+#: ../../Zotlabs/Module/Like.php:196
+msgid "Channel unavailable."
+msgstr "Kanal nicht vorhanden."
+
+#: ../../Zotlabs/Module/Like.php:244
+msgid "Previous action reversed."
+msgstr "Die vorherige Aktion wurde rückgängig gemacht."
+
+#: ../../Zotlabs/Module/Like.php:436 ../../addon/diaspora/Receiver.php:1547
+#: ../../addon/pubcrawl/as.php:1394 ../../include/conversation.php:160
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s gefällt %2$ss %3$s"
+
+#: ../../Zotlabs/Module/Like.php:438 ../../addon/pubcrawl/as.php:1396
+#: ../../include/conversation.php:163
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s gefällt %2$ss %3$s nicht"
+
+#: ../../Zotlabs/Module/Like.php:440
+#, php-format
+msgid "%1$s agrees with %2$s's %3$s"
+msgstr "%1$s stimmt %2$ss %3$s zu"
+
+#: ../../Zotlabs/Module/Like.php:442
+#, php-format
+msgid "%1$s doesn't agree with %2$s's %3$s"
+msgstr "%1$s lehnt %2$ss %3$s ab"
+
+#: ../../Zotlabs/Module/Like.php:444
+#, php-format
+msgid "%1$s abstains from a decision on %2$s's %3$s"
+msgstr "%1$s enthält sich zu %2$ss %3$s"
+
+#: ../../Zotlabs/Module/Like.php:446 ../../addon/diaspora/Receiver.php:2031
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr "%1$s nimmt an %2$ss %3$s teil"
+
+#: ../../Zotlabs/Module/Like.php:448 ../../addon/diaspora/Receiver.php:2033
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr "%1$s nimmt an %2$ss %3$s nicht teil"
+
+#: ../../Zotlabs/Module/Like.php:450 ../../addon/diaspora/Receiver.php:2035
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr "%1$s nimmt vielleicht an %2$ss %3$s teil"
+
+#: ../../Zotlabs/Module/Like.php:562
+msgid "Action completed."
+msgstr "Aktion durchgeführt."
+
+#: ../../Zotlabs/Module/Like.php:563
+msgid "Thank you."
+msgstr "Vielen Dank."
+
+#: ../../Zotlabs/Module/Directory.php:250
+#, php-format
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] "%d Bewertung"
+msgstr[1] "%d Bewertungen"
+
+#: ../../Zotlabs/Module/Directory.php:261
+msgid "Gender: "
+msgstr "Geschlecht:"
+
+#: ../../Zotlabs/Module/Directory.php:263
+msgid "Status: "
+msgstr "Status:"
+
+#: ../../Zotlabs/Module/Directory.php:265
+msgid "Homepage: "
+msgstr "Webseite:"
+
+#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1565
+msgid "Age:"
+msgstr "Alter:"
+
+#: ../../Zotlabs/Module/Directory.php:319 ../../include/channel.php:1392
+#: ../../include/event.php:54 ../../include/event.php:86
+msgid "Location:"
+msgstr "Ort:"
+
+#: ../../Zotlabs/Module/Directory.php:325
+msgid "Description:"
+msgstr "Beschreibung:"
+
+#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1581
+msgid "Hometown:"
+msgstr "Heimatstadt:"
+
+#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1589
+msgid "About:"
+msgstr "Ãœber:"
+
+#: ../../Zotlabs/Module/Directory.php:333 ../../Zotlabs/Module/Suggest.php:56
+#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
+#: ../../include/conversation.php:1052 ../../include/channel.php:1377
+#: ../../include/connections.php:111
+msgid "Connect"
+msgstr "Verbinden"
+
+#: ../../Zotlabs/Module/Directory.php:334
+msgid "Public Forum:"
+msgstr "Öffentliches Forum:"
+
+#: ../../Zotlabs/Module/Directory.php:337
+msgid "Keywords: "
+msgstr "Schlüsselwörter:"
+
+#: ../../Zotlabs/Module/Directory.php:340
+msgid "Don't suggest"
+msgstr "Nicht vorschlagen"
+
+#: ../../Zotlabs/Module/Directory.php:342
+msgid "Common connections (estimated):"
+msgstr "Gemeinsame Verbindungen (geschätzt):"
+
+#: ../../Zotlabs/Module/Directory.php:391
+msgid "Global Directory"
+msgstr "Globales Verzeichnis"
+
+#: ../../Zotlabs/Module/Directory.php:391
+msgid "Local Directory"
+msgstr "Lokales Verzeichnis"
+
+#: ../../Zotlabs/Module/Directory.php:397
+msgid "Finding:"
+msgstr "Ergebnisse:"
+
+#: ../../Zotlabs/Module/Directory.php:400 ../../Zotlabs/Module/Suggest.php:64
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
+msgstr "Kanal-Vorschläge"
+
+#: ../../Zotlabs/Module/Directory.php:402
+msgid "next page"
+msgstr "nächste Seite"
+
+#: ../../Zotlabs/Module/Directory.php:402
+msgid "previous page"
+msgstr "vorherige Seite"
+
+#: ../../Zotlabs/Module/Directory.php:403
+msgid "Sort options"
+msgstr "Sortieroptionen"
+
+#: ../../Zotlabs/Module/Directory.php:404
+msgid "Alphabetic"
+msgstr "alphabetisch"
+
+#: ../../Zotlabs/Module/Directory.php:405
+msgid "Reverse Alphabetic"
+msgstr "Entgegengesetzt alphabetisch"
+
+#: ../../Zotlabs/Module/Directory.php:406
+msgid "Newest to Oldest"
+msgstr "Neueste zuerst"
+
+#: ../../Zotlabs/Module/Directory.php:407
+msgid "Oldest to Newest"
+msgstr "Älteste zuerst"
+
+#: ../../Zotlabs/Module/Directory.php:424
+msgid "No entries (some entries may be hidden)."
+msgstr "Keine Einträge gefunden (einige könnten versteckt sein)."
+
+#: ../../Zotlabs/Module/Xchan.php:10
+msgid "Xchan Lookup"
+msgstr "Xchan-Suche"
+
+#: ../../Zotlabs/Module/Xchan.php:13
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:"
+
+#: ../../Zotlabs/Module/Suggest.php:39
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal."
+
+#: ../../Zotlabs/Module/Suggest.php:58 ../../Zotlabs/Widget/Suggestions.php:46
+msgid "Ignore/Hide"
+msgstr "Ignorieren/Verstecken"
+
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Konnte Deinen Server nicht finden."
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Veröffentlichung erfolgreich."
+
+#: ../../Zotlabs/Module/Mail.php:73
+msgid "Unable to lookup recipient."
+msgstr "Konnte den Empfänger nicht finden."
+
+#: ../../Zotlabs/Module/Mail.php:80
+msgid "Unable to communicate with requested channel."
+msgstr "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Mail.php:87
+msgid "Cannot verify requested channel."
+msgstr "Verifizierung des angeforderten Kanals fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Mail.php:105
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Mail.php:160
+msgid "Messages"
+msgstr "Nachrichten"
+
+#: ../../Zotlabs/Module/Mail.php:173
+msgid "message"
+msgstr "Nachricht"
+
+#: ../../Zotlabs/Module/Mail.php:214
+msgid "Message recalled."
+msgstr "Nachricht widerrufen."
+
+#: ../../Zotlabs/Module/Mail.php:227
+msgid "Conversation removed."
+msgstr "Unterhaltung gelöscht."
+
+#: ../../Zotlabs/Module/Mail.php:242 ../../Zotlabs/Module/Mail.php:363
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Verfällt YYYY-MM-DD HH;MM"
+
+#: ../../Zotlabs/Module/Mail.php:270
+msgid "Requested channel is not in this network"
+msgstr "Angeforderter Kanal ist nicht in diesem Netzwerk."
+
+#: ../../Zotlabs/Module/Mail.php:278
+msgid "Send Private Message"
+msgstr "Private Nachricht senden"
+
+#: ../../Zotlabs/Module/Mail.php:279 ../../Zotlabs/Module/Mail.php:421
+msgid "To:"
+msgstr "An:"
+
+#: ../../Zotlabs/Module/Mail.php:282 ../../Zotlabs/Module/Mail.php:423
+msgid "Subject:"
+msgstr "Betreff:"
+
+#: ../../Zotlabs/Module/Mail.php:287 ../../Zotlabs/Module/Mail.php:429
+#: ../../include/conversation.php:1382
+msgid "Attach file"
+msgstr "Datei anhängen"
+
+#: ../../Zotlabs/Module/Mail.php:289
+msgid "Send"
+msgstr "Absenden"
+
+#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
+#: ../../include/conversation.php:1427
+msgid "Set expiration date"
+msgstr "Verfallsdatum"
+
+#: ../../Zotlabs/Module/Mail.php:393
+msgid "Delete message"
+msgstr "Nachricht löschen"
+
+#: ../../Zotlabs/Module/Mail.php:394
+msgid "Delivery report"
+msgstr "Zustellungsbericht"
+
+#: ../../Zotlabs/Module/Mail.php:395
+msgid "Recall message"
+msgstr "Nachricht widerrufen"
+
+#: ../../Zotlabs/Module/Mail.php:397
+msgid "Message has been recalled."
+msgstr "Die Nachricht wurde widerrufen."
+
+#: ../../Zotlabs/Module/Mail.php:414
+msgid "Delete Conversation"
+msgstr "Unterhaltung löschen"
+
+#: ../../Zotlabs/Module/Mail.php:416
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten."
+
+#: ../../Zotlabs/Module/Mail.php:420
+msgid "Send Reply"
+msgstr "Antwort senden"
+
+#: ../../Zotlabs/Module/Mail.php:425
+#, php-format
+msgid "Your message for %s (%s):"
+msgstr "Deine Nachricht für %s (%s):"
+
+#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12
+msgid "Public Hubs"
+msgstr "Öffentliche Hubs"
+
+#: ../../Zotlabs/Module/Pubsites.php:27
+msgid ""
+"The listed hubs allow public registration for the $Projectname network. All "
+"hubs in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some hubs may require subscription or "
+"provide tiered service plans. The hub itself <strong>may</strong> provide "
+"additional details."
+msgstr "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im $Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen."
+
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Hub URL"
+msgstr "Hub-URL"
+
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Access Type"
+msgstr "Zugriffstyp"
+
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Registration Policy"
+msgstr "Registrierungsrichtlinien"
+
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Stats"
+msgstr "Statistiken"
+
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Software"
+msgstr "Software"
+
+#: ../../Zotlabs/Module/Pubsites.php:49
+msgid "Rate"
+msgstr "Bewerten"
+
+#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:267
+msgid "webpage"
+msgstr "Webseite"
+
+#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:273
+msgid "block"
+msgstr "Block"
+
+#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:270
+msgid "layout"
+msgstr "Layout"
+
+#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:276
+msgid "menu"
+msgstr "Menü"
+
+#: ../../Zotlabs/Module/Impel.php:183
+#, php-format
+msgid "%s element installed"
+msgstr "Element für %s installiert"
+
+#: ../../Zotlabs/Module/Impel.php:186
+#, php-format
+msgid "%s element installation failed"
+msgstr "Installation des Elements %s fehlgeschlagen"
+
+#: ../../Zotlabs/Module/Rbmark.php:94
+msgid "Select a bookmark folder"
+msgstr "Lesezeichenordner wählen"
+
+#: ../../Zotlabs/Module/Rbmark.php:99
+msgid "Save Bookmark"
+msgstr "Lesezeichen speichern"
+
+#: ../../Zotlabs/Module/Rbmark.php:100
+msgid "URL of bookmark"
+msgstr "URL des Lesezeichens"
+
+#: ../../Zotlabs/Module/Rbmark.php:105
+msgid "Or enter new bookmark folder name"
+msgstr "Oder gib einen neuen Namen für den Lesezeichenordner ein"
+
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Enter a folder name"
+msgstr "Gib einen Ordnernamen ein"
+
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "or select an existing folder (doubleclick)"
+msgstr "oder wähle einen vorhanden Ordner aus (Doppelklick)"
+
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:151
+msgid "Save to Folder"
+msgstr "In Ordner speichern"
+
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "Abrufen der URL gab einen Fehler zurück: %1$s"
+
+#: ../../Zotlabs/Module/Register.php:49
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal."
+
+#: ../../Zotlabs/Module/Register.php:55
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Register.php:89
+msgid "Passwords do not match."
+msgstr "Passwörter stimmen nicht überein."
+
+#: ../../Zotlabs/Module/Register.php:132
+msgid "Registration successful. Continue to create your first channel..."
+msgstr "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst..."
+
+#: ../../Zotlabs/Module/Register.php:135
+msgid ""
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."
+
+#: ../../Zotlabs/Module/Register.php:142
+msgid "Your registration is pending approval by the site owner."
+msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
+
+#: ../../Zotlabs/Module/Register.php:145
+msgid "Your registration can not be processed."
+msgstr "Deine Registrierung konnte nicht verarbeitet werden."
+
+#: ../../Zotlabs/Module/Register.php:192
+msgid "Registration on this hub is disabled."
+msgstr "Die Registrierung auf diesem Hub ist nicht möglich."
+
+#: ../../Zotlabs/Module/Register.php:201
+msgid "Registration on this hub is by approval only."
+msgstr "Eine Registrierung auf diesem Hub erfordert die Zustimmung durch den Administrator."
+
+#: ../../Zotlabs/Module/Register.php:202
+msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
+msgstr "<a href=\"pubsites\">Registriere Dich auf einem der anderen verbundenen Hubs.</a>"
+
+#: ../../Zotlabs/Module/Register.php:212
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal."
+
+#: ../../Zotlabs/Module/Register.php:238
+#, php-format
+msgid "I accept the %s for this website"
+msgstr "Ich akzeptiere die %s für diese Webseite"
+
+#: ../../Zotlabs/Module/Register.php:245
+#, php-format
+msgid "I am over %s years of age and accept the %s for this website"
+msgstr "Ich bin älter als %s Jahre und akzeptiere die %s dieser Website."
+
+#: ../../Zotlabs/Module/Register.php:250
+msgid "Your email address"
+msgstr "Ihre E-Mail Adresse"
+
+#: ../../Zotlabs/Module/Register.php:251
+msgid "Choose a password"
+msgstr "Passwort"
+
+#: ../../Zotlabs/Module/Register.php:252
+msgid "Please re-enter your password"
+msgstr "Bitte gib Dein Passwort noch einmal ein"
+
+#: ../../Zotlabs/Module/Register.php:253
+msgid "Please enter your invitation code"
+msgstr "Bitte trage Deinen Einladungs-Code ein"
+
+#: ../../Zotlabs/Module/Register.php:258
+msgid "no"
+msgstr "nein"
+
+#: ../../Zotlabs/Module/Register.php:258
+msgid "yes"
+msgstr "ja"
+
+#: ../../Zotlabs/Module/Register.php:274
+msgid "Membership on this site is by invitation only."
+msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
+
+#: ../../Zotlabs/Module/Register.php:286 ../../boot.php:1563
+#: ../../include/nav.php:164
+msgid "Register"
+msgstr "Registrieren"
+
+#: ../../Zotlabs/Module/Register.php:287
+msgid ""
+"This site requires email verification. After completing this form, please "
+"check your email for further instructions."
+msgstr "Diese Website erfordert eine Email-Bestätigung. Bitte prüfe Deine Emails nach Ausfüllen und Absenden des Formulars, um weitere Hinweise zu bekommen."
+
+#: ../../Zotlabs/Module/Cover_photo.php:136
+#: ../../Zotlabs/Module/Cover_photo.php:186
+msgid "Cover Photos"
+msgstr "Cover Foto"
+
+#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4508
+msgid "female"
+msgstr "weiblich"
+
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4509
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s hat ihr %2$s aktualisiert"
+
+#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4510
+msgid "male"
+msgstr "männlich"
+
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4511
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s hat sein %2$s aktualisiert"
+
+#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4513
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "%1$s hat sein/ihr %2$s aktualisiert"
+
+#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2059
+msgid "cover photo"
+msgstr "Cover Foto"
+
+#: ../../Zotlabs/Module/Cover_photo.php:360
+msgid "Change Cover Photo"
+msgstr "Titelbild ändern"
+
+#: ../../Zotlabs/Module/Help.php:23
+msgid "Documentation Search"
+msgstr "Suche in der Dokumentation"
+
+#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1821
+#: ../../include/nav.php:391
+msgid "About"
+msgstr "Ãœber"
+
+#: ../../Zotlabs/Module/Help.php:82
+msgid "Administrators"
+msgstr "Administratoren"
+
+#: ../../Zotlabs/Module/Help.php:83
+msgid "Developers"
+msgstr "Entwickler"
+
+#: ../../Zotlabs/Module/Help.php:84
+msgid "Tutorials"
+msgstr "Tutorials"
+
+#: ../../Zotlabs/Module/Help.php:95
+msgid "$Projectname Documentation"
+msgstr "$Projectname-Dokumentation"
+
+#: ../../Zotlabs/Module/Help.php:96
+msgid "Contents"
+msgstr "Inhalt"
+
+#: ../../Zotlabs/Module/Display.php:351
+msgid "Article"
+msgstr "Artikel"
+
+#: ../../Zotlabs/Module/Display.php:403
+msgid "Item has been removed."
+msgstr "Der Beitrag wurde entfernt."
+
+#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
+msgid "Tag removed"
+msgstr "Schlagwort entfernt"
+
+#: ../../Zotlabs/Module/Tagrm.php:123
+msgid "Remove Item Tag"
+msgstr "Schlagwort entfernen"
+
+#: ../../Zotlabs/Module/Tagrm.php:125
+msgid "Select a tag to remove: "
+msgstr "Schlagwort zum Entfernen auswählen:"
+
+#: ../../Zotlabs/Module/Network.php:100
+msgid "No such group"
+msgstr "Gruppe nicht gefunden"
+
+#: ../../Zotlabs/Module/Network.php:142
+msgid "No such channel"
+msgstr "Kanal nicht gefunden"
+
+#: ../../Zotlabs/Module/Network.php:147
+msgid "forum"
+msgstr "Forum"
+
+#: ../../Zotlabs/Module/Network.php:159
+msgid "Search Results For:"
+msgstr "Suchergebnisse für:"
+
+#: ../../Zotlabs/Module/Network.php:230
+msgid "Privacy group is empty"
+msgstr "Gruppe ist leer"
+
+#: ../../Zotlabs/Module/Network.php:240
+msgid "Privacy group: "
+msgstr "Gruppe:"
+
+#: ../../Zotlabs/Module/Network.php:268
+msgid "Invalid connection."
+msgstr "Ungültige Verbindung."
+
+#: ../../Zotlabs/Module/Network.php:289 ../../addon/redred/redred.php:65
+msgid "Invalid channel."
+msgstr "Ungültiger Kanal."
+
+#: ../../Zotlabs/Module/Acl.php:361
+msgid "network"
+msgstr "Netzwerk"
+
+#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82
+#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:92
+#, php-format
+msgid "Welcome to %s"
+msgstr "Willkommen auf %s"
+
+#: ../../Zotlabs/Module/Filestorage.php:79
+msgid "Permission Denied."
+msgstr "Zugriff verweigert."
+
+#: ../../Zotlabs/Module/Filestorage.php:95
+msgid "File not found."
+msgstr "Datei nicht gefunden."
+
+#: ../../Zotlabs/Module/Filestorage.php:142
+msgid "Edit file permissions"
+msgstr "Dateiberechtigungen bearbeiten"
+
+#: ../../Zotlabs/Module/Filestorage.php:154
+msgid "Set/edit permissions"
+msgstr "Berechtigungen setzen/ändern"
+
+#: ../../Zotlabs/Module/Filestorage.php:155
+msgid "Include all files and sub folders"
+msgstr "Alle Dateien und Unterverzeichnisse einbinden"
+
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Return to file list"
+msgstr "Zurück zur Dateiliste"
+
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
+
+#: ../../Zotlabs/Module/Filestorage.php:159
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
+
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Share this file"
+msgstr "Diese Datei freigeben"
+
+#: ../../Zotlabs/Module/Filestorage.php:162
+msgid "Show URL to this file"
+msgstr "URL zu dieser Datei anzeigen"
+
+#: ../../Zotlabs/Module/Filestorage.php:163
+#: ../../Zotlabs/Storage/Browser.php:397
+msgid "Show in your contacts shared folder"
+msgstr "Im geteilten Ordner Deiner Kontakte anzeigen"
+
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Kein Kanal."
+
+#: ../../Zotlabs/Module/Common.php:45
+msgid "No connections in common."
+msgstr "Keine gemeinsamen Verbindungen."
+
+#: ../../Zotlabs/Module/Common.php:65
+msgid "View Common Connections"
+msgstr "Zeige gemeinsame Verbindungen"
+
+#: ../../Zotlabs/Module/Email_resend.php:30
+msgid "Email verification resent"
+msgstr "Email zur Verifizierung wurde erneut versendet"
+
+#: ../../Zotlabs/Module/Email_resend.php:33
+msgid "Unable to resend email verification message."
+msgstr "Erneutes Versenden der Email zur Verifizierung nicht möglich."
+
+#: ../../Zotlabs/Module/Viewconnections.php:65
+msgid "No connections."
+msgstr "Keine Verbindungen."
+
+#: ../../Zotlabs/Module/Viewconnections.php:83
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "%ss Profil [%s] besuchen"
+
+#: ../../Zotlabs/Module/Viewconnections.php:113
+msgid "View Connections"
+msgstr "Verbindungen anzeigen"
+
+#: ../../Zotlabs/Module/Admin.php:97
+msgid "Blocked accounts"
+msgstr "Blockierte Benutzerkonten"
+
+#: ../../Zotlabs/Module/Admin.php:98
+msgid "Expired accounts"
+msgstr "Abgelaufene Benutzerkonten"
+
+#: ../../Zotlabs/Module/Admin.php:99
+msgid "Expiring accounts"
+msgstr "Ablaufende Benutzerkonten"
+
+#: ../../Zotlabs/Module/Admin.php:112
+msgid "Clones"
+msgstr "Klone"
+
+#: ../../Zotlabs/Module/Admin.php:118
+msgid "Message queues"
+msgstr "Nachrichten-Warteschlangen"
+
+#: ../../Zotlabs/Module/Admin.php:132
+msgid "Your software should be updated"
+msgstr "Die installierte Software sollte aktualisiert werden"
+
+#: ../../Zotlabs/Module/Admin.php:137
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+#: ../../Zotlabs/Module/Admin.php:140
+msgid "Registered accounts"
+msgstr "Registrierte Konten"
+
+#: ../../Zotlabs/Module/Admin.php:141
+msgid "Pending registrations"
+msgstr "Ausstehende Registrierungen"
+
+#: ../../Zotlabs/Module/Admin.php:142
+msgid "Registered channels"
+msgstr "Registrierte Kanäle"
+
+#: ../../Zotlabs/Module/Admin.php:143
+msgid "Active plugins"
+msgstr "Aktive Plug-Ins"
+
+#: ../../Zotlabs/Module/Admin.php:144
+msgid "Version"
+msgstr "Version"
+
+#: ../../Zotlabs/Module/Admin.php:145
+msgid "Repository version (master)"
+msgstr "Repository-Version (master)"
+
+#: ../../Zotlabs/Module/Admin.php:146
+msgid "Repository version (dev)"
+msgstr "Repository-Version (dev)"
+
+#: ../../Zotlabs/Module/Service_limits.php:23
+msgid "No service class restrictions found."
+msgstr "Keine Dienstklassenbeschränkungen gefunden."
+
+#: ../../Zotlabs/Module/Rate.php:156
+msgid "Website:"
+msgstr "Webseite:"
+
+#: ../../Zotlabs/Module/Rate.php:159
+#, php-format
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Kanal [%s] (auf diesem Server noch unbekannt)"
+
+#: ../../Zotlabs/Module/Rate.php:160
+msgid "Rating (this information is public)"
+msgstr "Bewertung (öffentlich sichtbar)"
+
+#: ../../Zotlabs/Module/Rate.php:161
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)"
+
+#: ../../Zotlabs/Module/Card_edit.php:128
+msgid "Edit Card"
+msgstr "Karte bearbeiten"
+
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Kein gültiges Konto gefunden."
+
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."
+
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Nutzer (%s)"
+
+#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Passwort-Rücksetzung auf %s angefordert"
+
+#: ../../Zotlabs/Module/Lostpass.php:68
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1591
+msgid "Password Reset"
+msgstr "Zurücksetzen des Kennworts"
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your password has been reset as requested."
+msgstr "Dein Passwort wurde wie angefordert neu erstellt."
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Your new password is"
+msgstr "Dein neues Passwort lautet"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "Save or copy your new password - and then"
+msgstr "Speichere oder kopiere Dein neues Passwort – und dann"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid "click here to login"
+msgstr "Klicke hier, um dich anzumelden"
+
+#: ../../Zotlabs/Module/Lostpass.php:96
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden."
+
+#: ../../Zotlabs/Module/Lostpass.php:117
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Auf %s wurde Dein Passwort geändert"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Forgot your Password?"
+msgstr "Kennwort vergessen?"
+
+#: ../../Zotlabs/Module/Lostpass.php:131
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail."
+
+#: ../../Zotlabs/Module/Lostpass.php:132
+msgid "Email Address"
+msgstr "E-Mail Adresse"
+
+#: ../../Zotlabs/Module/Notifications.php:62
+#: ../../Zotlabs/Lib/ThreadItem.php:408
+msgid "Mark all seen"
+msgstr "Alle als gelesen markieren"
+
+#: ../../Zotlabs/Lib/Techlevels.php:10
+msgid "0. Beginner/Basic"
+msgstr "0. Einsteiger/Basis"
+
+#: ../../Zotlabs/Lib/Techlevels.php:11
+msgid "1. Novice - not skilled but willing to learn"
+msgstr "1. Anfänger - unerfahren, aber bereit zu lernen"
+
+#: ../../Zotlabs/Lib/Techlevels.php:12
+msgid "2. Intermediate - somewhat comfortable"
+msgstr "2. Fortgeschritten - relativ komfortabel"
+
+#: ../../Zotlabs/Lib/Techlevels.php:13
+msgid "3. Advanced - very comfortable"
+msgstr "3. Fortgeschritten - sehr komfortabel"
+
+#: ../../Zotlabs/Lib/Techlevels.php:14
+msgid "4. Expert - I can write computer code"
+msgstr "4. Experte - Ich kann Computercode schreiben"
+
+#: ../../Zotlabs/Lib/Techlevels.php:15
+msgid "5. Wizard - I probably know more than you do"
+msgstr "5. Zauberer - ich kann wahrscheinlich mehr als Du"
+
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Site Admin"
+msgstr "Hub-Administration"
+
+#: ../../Zotlabs/Lib/Apps.php:232 ../../addon/buglink/buglink.php:16
+msgid "Report Bug"
+msgstr "Fehler melden"
+
+#: ../../Zotlabs/Lib/Apps.php:233
+msgid "View Bookmarks"
+msgstr "Lesezeichen ansehen"
+
+#: ../../Zotlabs/Lib/Apps.php:234
+msgid "My Chatrooms"
+msgstr "Meine Chaträume"
+
+#: ../../Zotlabs/Lib/Apps.php:236
+msgid "Firefox Share"
+msgstr "Teilen-Knopf für Firefox"
+
+#: ../../Zotlabs/Lib/Apps.php:237
+msgid "Remote Diagnostics"
+msgstr "Ferndiagnose"
+
+#: ../../Zotlabs/Lib/Apps.php:238 ../../include/features.php:390
+msgid "Suggest Channels"
+msgstr "Kanäle vorschlagen"
+
+#: ../../Zotlabs/Lib/Apps.php:239 ../../boot.php:1582
+#: ../../include/nav.php:126 ../../include/nav.php:130
+msgid "Login"
+msgstr "Anmelden"
+
+#: ../../Zotlabs/Lib/Apps.php:241
+msgid "Activity"
+msgstr "Aktivität"
+
+#: ../../Zotlabs/Lib/Apps.php:245 ../../include/conversation.php:1928
+#: ../../include/features.php:87 ../../include/nav.php:497
+msgid "Wiki"
+msgstr "Wiki"
+
+#: ../../Zotlabs/Lib/Apps.php:246
+msgid "Channel Home"
+msgstr "Mein Kanal"
+
+#: ../../Zotlabs/Lib/Apps.php:249 ../../include/conversation.php:1850
+#: ../../include/conversation.php:1853
+msgid "Events"
+msgstr "Termine"
+
+#: ../../Zotlabs/Lib/Apps.php:250
+msgid "Directory"
+msgstr "Verzeichnis"
+
+#: ../../Zotlabs/Lib/Apps.php:252
+msgid "Mail"
+msgstr "Mail"
+
+#: ../../Zotlabs/Lib/Apps.php:255
+msgid "Chat"
+msgstr "Chat"
+
+#: ../../Zotlabs/Lib/Apps.php:257
+msgid "Probe"
+msgstr "Testen"
+
+#: ../../Zotlabs/Lib/Apps.php:258
+msgid "Suggest"
+msgstr "Empfehlen"
+
+#: ../../Zotlabs/Lib/Apps.php:259
+msgid "Random Channel"
+msgstr "Zufälliger Kanal"
+
+#: ../../Zotlabs/Lib/Apps.php:260
+msgid "Invite"
+msgstr "Einladen"
+
+#: ../../Zotlabs/Lib/Apps.php:261 ../../Zotlabs/Widget/Admin.php:26
+msgid "Features"
+msgstr "Funktionen"
+
+#: ../../Zotlabs/Lib/Apps.php:262 ../../addon/openid/MysqlProvider.php:69
+msgid "Language"
+msgstr "Sprache"
+
+#: ../../Zotlabs/Lib/Apps.php:263
+msgid "Post"
+msgstr "Beitrag schreiben"
+
+#: ../../Zotlabs/Lib/Apps.php:264 ../../addon/openid/MysqlProvider.php:58
+#: ../../addon/openid/MysqlProvider.php:59
+#: ../../addon/openid/MysqlProvider.php:60
+msgid "Profile Photo"
+msgstr "Profilfoto"
+
+#: ../../Zotlabs/Lib/Apps.php:407
+msgid "Purchase"
+msgstr "Kaufen"
+
+#: ../../Zotlabs/Lib/Apps.php:411
+msgid "Undelete"
+msgstr "Wieder hergestellt"
+
+#: ../../Zotlabs/Lib/Apps.php:419
+msgid "Add to app-tray"
+msgstr "Zum App-Menü hinzufügen"
+
+#: ../../Zotlabs/Lib/Apps.php:420
+msgid "Remove from app-tray"
+msgstr "Aus dem App-Menü entfernen"
+
+#: ../../Zotlabs/Lib/Apps.php:421
+msgid "Pin to navbar"
+msgstr "An Navigationsleiste anpinnen"
+
+#: ../../Zotlabs/Lib/Apps.php:422
+msgid "Unpin from navbar"
+msgstr "Von Navigationsleiste entfernen"
+
+#: ../../Zotlabs/Lib/Permcat.php:82
+msgctxt "permcat"
+msgid "default"
+msgstr "Standard"
+
+#: ../../Zotlabs/Lib/Permcat.php:133
+msgctxt "permcat"
+msgid "follower"
+msgstr "Abonnent"
+
+#: ../../Zotlabs/Lib/Permcat.php:137
+msgctxt "permcat"
+msgid "contributor"
+msgstr "Beitragender"
+
+#: ../../Zotlabs/Lib/Permcat.php:141
+msgctxt "permcat"
+msgid "publisher"
+msgstr "Autor"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:42
+#: ../../Zotlabs/Lib/NativeWikiPage.php:93
+msgid "(No Title)"
+msgstr "(Kein Titel)"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:107
+msgid "Wiki page create failed."
+msgstr "Anlegen der Wiki-Seite fehlgeschlagen."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:120
+msgid "Wiki not found."
+msgstr "Wiki nicht gefunden."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:131
+msgid "Destination name already exists"
+msgstr "Zielname bereits vorhanden"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:163
+#: ../../Zotlabs/Lib/NativeWikiPage.php:359
+msgid "Page not found"
+msgstr "Seite nicht gefunden"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:194
+msgid "Error reading page content"
+msgstr "Fehler beim Lesen des Seiteninhalts"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:350
+#: ../../Zotlabs/Lib/NativeWikiPage.php:400
+#: ../../Zotlabs/Lib/NativeWikiPage.php:467
+#: ../../Zotlabs/Lib/NativeWikiPage.php:508
+msgid "Error reading wiki"
+msgstr "Fehler beim Lesen des Wiki"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:388
+msgid "Page update failed."
+msgstr "Seitenaktualisierung fehlgeschlagen."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:422
+msgid "Nothing deleted"
+msgstr "Nichts gelöscht"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:488
+msgid "Compare: object not found."
+msgstr "Vergleichen: Objekt nicht gefunden."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:494
+msgid "Page updated"
+msgstr "Seite aktualisiert"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:497
+msgid "Untitled"
+msgstr "Ohne Titel"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:503
+msgid "Wiki resource_id required for git commit"
+msgstr "Die resource_id des Wiki wird benötigt für den git commit."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:559
+#: ../../Zotlabs/Widget/Wiki_page_history.php:23
+msgctxt "wiki_history"
+msgid "Message"
+msgstr "Nachricht"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:597
+#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:706
+#: ../../include/bbcode.php:865
+msgid "Different viewers will see this text differently"
+msgstr "Verschiedene Betrachter werden diesen Text unterschiedlich sehen"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:34
+#: ../../include/acl_selectors.php:33
+msgid "Visible to your default audience"
+msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:107
+#: ../../include/acl_selectors.php:106
+msgid "Only me"
+msgstr "Nur ich"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:108
+msgid "Public"
+msgstr "Öffentlich"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:109
+msgid "Anybody in the $Projectname network"
+msgstr "Jeder innerhalb des $Projectname Netzwerks"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:110
+#, php-format
+msgid "Any account on %s"
+msgstr "Jedes Nutzerkonto auf %s"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:111
+msgid "Any of my connections"
+msgstr "Alle meine Verbindungen"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:112
+msgid "Only connections I specifically allow"
+msgstr "Nur Verbindungen, denen ich es explizit erlaube"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:113
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:114
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Alle Verbindungen einschließlich der noch nicht bestätigten"
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:150
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)."
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:151
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils."
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:152
+msgid "This is your default setting for who can view your connections"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen."
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:153
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos."
+
+#: ../../Zotlabs/Lib/PermissionDescription.php:154
+msgid "This is your default setting for the audience of your webpages"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."
+
+#: ../../Zotlabs/Lib/Chatroom.php:23
+msgid "Missing room name"
+msgstr "Der Chatraum hat keinen Namen"
+
+#: ../../Zotlabs/Lib/Chatroom.php:32
+msgid "Duplicate room name"
+msgstr "Name des Chatraums bereits vergeben"
+
+#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90
+msgid "Invalid room specifier."
+msgstr "Ungültiger Raumbezeichner."
+
+#: ../../Zotlabs/Lib/Chatroom.php:122
+msgid "Room not found."
+msgstr "Chatraum konnte nicht gefunden werden."
+
+#: ../../Zotlabs/Lib/Chatroom.php:143
+msgid "Room is full"
+msgstr "Der Chatraum ist voll"
+
+#: ../../Zotlabs/Lib/Enotify.php:60
+msgid "$Projectname Notification"
+msgstr "$Projectname-Benachrichtigung"
+
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:308
+#: ../../addon/diaspora/util.php:321 ../../addon/diaspora/p.php:48
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:63
+msgid "Thank You,"
+msgstr "Danke."
+
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33
+#, php-format
+msgid "%s Administrator"
+msgstr "der Administrator von %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:66
+#, php-format
+msgid "This email was sent by %1$s at %2$s."
+msgstr "Diese Email wurde von %1$s auf %2$s gesendet."
+
+#: ../../Zotlabs/Lib/Enotify.php:67
+#, php-format
+msgid ""
+"To stop receiving these messages, please adjust your Notification Settings "
+"at %s"
+msgstr "Um diese Nachrichten nicht mehr zu erhalten, passe bitte Deine Benachrichtigungseinstellungen unter folgendem Link an: %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:68
+#, php-format
+msgid "To stop receiving these messages, please adjust your %s."
+msgstr "Um diese Nachrichten nicht mehr zu erhalten, passe bitte Deine %s an."
+
+#: ../../Zotlabs/Lib/Enotify.php:120
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../Zotlabs/Lib/Enotify.php:124
+#, php-format
+msgid "[$Projectname:Notify] New mail received at %s"
+msgstr "[$Projectname:Benachrichtigung] Neue Mail empfangen auf %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:126
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet."
+
+#: ../../Zotlabs/Lib/Enotify.php:127
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s hat Dir %2$s geschickt."
+
+#: ../../Zotlabs/Lib/Enotify.php:127
+msgid "a private message"
+msgstr "eine private Nachricht"
+
+#: ../../Zotlabs/Lib/Enotify.php:128
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten."
+
+#: ../../Zotlabs/Lib/Enotify.php:141
+msgid "commented on"
+msgstr "kommentierte"
+
+#: ../../Zotlabs/Lib/Enotify.php:152
+msgid "liked"
+msgstr "gefiel"
+
+#: ../../Zotlabs/Lib/Enotify.php:155
+msgid "disliked"
+msgstr "missfiel"
+
+#: ../../Zotlabs/Lib/Enotify.php:198
+#, php-format
+msgid "%1$s, %2$s %3$s [zrl=%4$s]a %5$s[/zrl]"
+msgstr "%1$s, %2$s %3$s [zrl=%4$s]ein %5$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:207
+#, php-format
+msgid "%1$s, %2$s %3$s [zrl=%4$s]%5$s's %6$s[/zrl]"
+msgstr "%1$s, %2$s %3$s [zrl=%4$s]%5$s's %6$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:217
+#, php-format
+msgid "%1$s, %2$s %3$s [zrl=%4$s]your %5$s[/zrl]"
+msgstr "%1$s, %2$s %3$s [zrl=%4$s]Dein %5$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s"
+msgstr "[$Projectname:Benachrichtigung] Moderierter Kommantar in Unterhaltung #%1$d von %2$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[$Projectname:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:233
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst."
+
+#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:318
+#: ../../Zotlabs/Lib/Enotify.php:335 ../../Zotlabs/Lib/Enotify.php:361
+#: ../../Zotlabs/Lib/Enotify.php:379 ../../Zotlabs/Lib/Enotify.php:393
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren."
+
+#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241
+#, php-format
+msgid "Please visit %s to approve or reject this comment."
+msgstr "Bitte besuche %s, um diesen Kommentar anzunehmen oder abzulehnen."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+#, php-format
+msgid "%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s gefällt [zrl=%3$s]dein %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:314
+#, php-format
+msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s"
+msgstr "[$Projectname:Benachrichtigung] Gefällt mir in Unterhaltung #%1$d von %2$s erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:315
+#, php-format
+msgid "%1$s, %2$s liked an item/conversation you created."
+msgstr "%1$s, %2$s gefällt ein Beitrag oder eine Unterhaltung von Dir"
+
+#: ../../Zotlabs/Lib/Enotify.php:326
+#, php-format
+msgid "[$Projectname:Notify] %s posted to your profile wall"
+msgstr "[$Projectname:Benachrichtigung] %s schrieb auf Deine Pinnwand"
+
+#: ../../Zotlabs/Lib/Enotify.php:328
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben"
+
+#: ../../Zotlabs/Lib/Enotify.php:330
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben"
+
+#: ../../Zotlabs/Lib/Enotify.php:354
+#, php-format
+msgid "[$Projectname:Notify] %s tagged you"
+msgstr "[$Projectname:Benachrichtigung] %s hat Dich erwähnt"
+
+#: ../../Zotlabs/Lib/Enotify.php:355
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt"
+
+#: ../../Zotlabs/Lib/Enotify.php:356
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:368
+#, php-format
+msgid "[$Projectname:Notify] %1$s poked you"
+msgstr "[$Projectname:Benachrichtigung] %1$s hat Dich angestupst"
+
+#: ../../Zotlabs/Lib/Enotify.php:369
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s hat Dich auf %3$s angestupst"
+
+#: ../../Zotlabs/Lib/Enotify.php:370
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:386
+#, php-format
+msgid "[$Projectname:Notify] %s tagged your post"
+msgstr "[$Projectname:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet"
+
+#: ../../Zotlabs/Lib/Enotify.php:387
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet"
+
+#: ../../Zotlabs/Lib/Enotify.php:388
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet"
+
+#: ../../Zotlabs/Lib/Enotify.php:400
+msgid "[$Projectname:Notify] Introduction received"
+msgstr "[$Projectname:Benachrichtigung] Verbindungsanfrage erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:401
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, Du hast eine neue Verbindungsanfrage von '%2$s' auf %3$s erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:402
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, Du hast [zrl=%2$s]eine neue Verbindungsanfrage[/zrl] von %3$s erhalten."
+
+#: ../../Zotlabs/Lib/Enotify.php:406 ../../Zotlabs/Lib/Enotify.php:425
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Du kannst Dir das Profil unter %s ansehen"
+
+#: ../../Zotlabs/Lib/Enotify.php:408
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen."
+
+#: ../../Zotlabs/Lib/Enotify.php:415
+msgid "[$Projectname:Notify] Friend suggestion received"
+msgstr "[$Projectname:Benachrichtigung] Freundschaftsvorschlag erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:416
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:417
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten."
+
+#: ../../Zotlabs/Lib/Enotify.php:423
+msgid "Name:"
+msgstr "Name:"
+
+#: ../../Zotlabs/Lib/Enotify.php:424
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../Zotlabs/Lib/Enotify.php:427
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
+
+#: ../../Zotlabs/Lib/Enotify.php:647
+msgid "[$Projectname:Notify]"
+msgstr "[$Projectname:Benachrichtigung]"
+
+#: ../../Zotlabs/Lib/Enotify.php:815
+msgid "created a new post"
+msgstr "Neuer Beitrag wurde erzeugt"
+
+#: ../../Zotlabs/Lib/Enotify.php:816
+#, php-format
+msgid "commented on %s's post"
+msgstr "hat %s's Beitrag kommentiert"
+
+#: ../../Zotlabs/Lib/Enotify.php:823
+#, php-format
+msgid "edited a post dated %s"
+msgstr "hat einen Beitrag vom %s bearbeitet"
+
+#: ../../Zotlabs/Lib/Enotify.php:827
+#, php-format
+msgid "edited a comment dated %s"
+msgstr "hat einen Kommentar vom %s bearbeitet"
+
+#: ../../Zotlabs/Lib/NativeWiki.php:151
+msgid "Wiki updated successfully"
+msgstr "Wiki erfolgreich aktualisiert"
+
+#: ../../Zotlabs/Lib/NativeWiki.php:198
+msgid "Wiki files deleted successfully"
+msgstr "Wiki-Dateien erfolgreich gelöscht"
+
+#: ../../Zotlabs/Lib/DB_Upgrade.php:83
+#, php-format
+msgid "Update Error at %s"
+msgstr "Aktualisierungsfehler auf %s"
+
+#: ../../Zotlabs/Lib/DB_Upgrade.php:89
+#, php-format
+msgid "Update %s failed. See error logs."
+msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen."
+
+#: ../../Zotlabs/Lib/ThreadItem.php:97 ../../include/conversation.php:697
+msgid "Private Message"
+msgstr "Private Nachricht"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../include/conversation.php:689
+msgid "Select"
+msgstr "Auswählen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:172
+msgid "I will attend"
+msgstr "Ich werde teilnehmen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:172
+msgid "I will not attend"
+msgstr "Ich werde nicht teilnehmen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:172
+msgid "I might attend"
+msgstr "Ich werde vielleicht teilnehmen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:182
+msgid "I agree"
+msgstr "Ich stimme zu"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:182
+msgid "I disagree"
+msgstr "Ich lehne ab"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:182
+msgid "I abstain"
+msgstr "Ich enthalte mich"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:238
+msgid "Add Star"
+msgstr "Stern hinzufügen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:239
+msgid "Remove Star"
+msgstr "Stern entfernen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:240
+msgid "Toggle Star Status"
+msgstr "Markierungsstatus (Stern) umschalten"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:244
+msgid "starred"
+msgstr "markiert"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:254 ../../include/conversation.php:704
+msgid "Message signature validated"
+msgstr "Signatur überprüft"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:255 ../../include/conversation.php:705
+msgid "Message signature incorrect"
+msgstr "Signatur nicht korrekt"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:263
+msgid "Add Tag"
+msgstr "Tag hinzufügen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:510
+msgid "like"
+msgstr "mag"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:511
+msgid "dislike"
+msgstr "verurteile"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:286
+msgid "Share This"
+msgstr "Teilen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:286
+msgid "share"
+msgstr "Teilen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:295
+msgid "Delivery Report"
+msgstr "Zustellungsbericht"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:313
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d Kommentar"
+msgstr[1] "%d Kommentare"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:343 ../../Zotlabs/Lib/ThreadItem.php:344
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Schaue Dir %ss Profil an – %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:347
+msgid "to"
+msgstr "an"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:348
+msgid "via"
+msgstr "via"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:349
+msgid "Wall-to-Wall"
+msgstr "Wall-to-Wall"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:350
+msgid "via Wall-To-Wall:"
+msgstr "via Wall-To-Wall:"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:363 ../../include/conversation.php:763
+#, php-format
+msgid "from %s"
+msgstr "via %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:366 ../../include/conversation.php:766
+#, php-format
+msgid "last edited: %s"
+msgstr "zuletzt bearbeitet: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:367 ../../include/conversation.php:767
+#, php-format
+msgid "Expires: %s"
+msgstr "Verfällt: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:374
+msgid "Attend"
+msgstr "Zusagen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:375
+msgid "Attendance Options"
+msgstr "Zusageoptionen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:376
+msgid "Vote"
+msgstr "Abstimmen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:377
+msgid "Voting Options"
+msgstr "Abstimmungsoptionen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:398
+#: ../../addon/bookmarker/bookmarker.php:38
+msgid "Save Bookmarks"
+msgstr "Favoriten speichern"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:399
+msgid "Add to Calendar"
+msgstr "Zum Kalender hinzufügen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:426 ../../include/conversation.php:483
+msgid "This is an unsaved preview"
+msgstr "Dies ist eine nicht gespeicherte Vorschau"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:458 ../../include/js_strings.php:7
+#, php-format
+msgid "%s show all"
+msgstr "%s mehr anzeigen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:751 ../../include/conversation.php:1377
+msgid "Bold"
+msgstr "Fett"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:752 ../../include/conversation.php:1378
+msgid "Italic"
+msgstr "Kursiv"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/conversation.php:1379
+msgid "Underline"
+msgstr "Unterstrichen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:754 ../../include/conversation.php:1380
+msgid "Quote"
+msgstr "Zitat"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1381
+msgid "Code"
+msgstr "Code"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:756
+msgid "Image"
+msgstr "Bild"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:757
+msgid "Attach File"
+msgstr "Datei anhängen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:758
+msgid "Insert Link"
+msgstr "Link einfügen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:759
+msgid "Video"
+msgstr "Video"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:769
+msgid "Your full name (required)"
+msgstr "Ihr vollständiger Name (erforderlich)"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:770
+msgid "Your email address (required)"
+msgstr "Ihre E-Mail-Adresse (erforderlich)"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:771
+msgid "Your website URL (optional)"
+msgstr "Ihre Webseiten-URL (optional)"
+
+#: ../../Zotlabs/Zot/Auth.php:152
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut."
+
+#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76
+#: ../../addon/openid/Mod_Openid.php:178
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich."
+
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:287
+msgid "parent"
+msgstr "Ãœbergeordnetes Verzeichnis"
+
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2821
+msgid "Collection"
+msgstr "Sammlung"
+
+#: ../../Zotlabs/Storage/Browser.php:134
+msgid "Principal"
+msgstr "Prinzipal"
+
+#: ../../Zotlabs/Storage/Browser.php:137
+msgid "Addressbook"
+msgstr "Adressbuch"
+
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:420
+#: ../../include/nav.php:423
+msgid "Calendar"
+msgstr "Kalender"
+
+#: ../../Zotlabs/Storage/Browser.php:143
+msgid "Schedule Inbox"
+msgstr "Posteingang für überwachte Kalender"
+
+#: ../../Zotlabs/Storage/Browser.php:146
+msgid "Schedule Outbox"
+msgstr "Postausgang für überwachte Kalender"
+
+#: ../../Zotlabs/Storage/Browser.php:273
+msgid "Total"
+msgstr "Summe"
+
+#: ../../Zotlabs/Storage/Browser.php:275
+msgid "Shared"
+msgstr "Geteilt"
+
+#: ../../Zotlabs/Storage/Browser.php:353
+#, php-format
+msgid "You are using %1$s of your available file storage."
+msgstr "Sie verwenden %1$s von Ihrem verfügbaren Dateispeicher."
+
+#: ../../Zotlabs/Storage/Browser.php:358
+#, php-format
+msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
+msgstr "Sie verwenden %1$s von %2$s verfügbarem Dateispeicher. (%3$s&#37;)"
+
+#: ../../Zotlabs/Storage/Browser.php:369
+msgid "WARNING:"
+msgstr "WARNUNG:"
+
+#: ../../Zotlabs/Storage/Browser.php:381
+msgid "Create new folder"
+msgstr "Neuen Ordner anlegen"
+
+#: ../../Zotlabs/Storage/Browser.php:383
+msgid "Upload file"
+msgstr "Datei hochladen"
+
+#: ../../Zotlabs/Storage/Browser.php:396
+msgid "Drop files here to immediately upload"
+msgstr "Dateien zum sofortigen Hochladen hier fallen lassen"
+
+#: ../../Zotlabs/Widget/Forums.php:100
+msgid "Forums"
+msgstr "Foren"
+
+#: ../../Zotlabs/Widget/Cdav.php:37
+msgid "Select Channel"
+msgstr "Kanal auswählen"
+
+#: ../../Zotlabs/Widget/Cdav.php:42
+msgid "Read-write"
+msgstr "Lesen-schreiben"
+
+#: ../../Zotlabs/Widget/Cdav.php:43
+msgid "Read-only"
+msgstr "Nur Lesen"
+
+#: ../../Zotlabs/Widget/Cdav.php:117
+msgid "My Calendars"
+msgstr "Meine Kalender"
+
+#: ../../Zotlabs/Widget/Cdav.php:119
+msgid "Shared Calendars"
+msgstr "Geteilte Kalender"
+
+#: ../../Zotlabs/Widget/Cdav.php:123
+msgid "Share this calendar"
+msgstr "Diesen Kalender teilen"
+
+#: ../../Zotlabs/Widget/Cdav.php:125
+msgid "Calendar name and color"
+msgstr "Kalendername und -farbe"
+
+#: ../../Zotlabs/Widget/Cdav.php:127
+msgid "Create new calendar"
+msgstr "Neuen Kalender erstellen"
+
+#: ../../Zotlabs/Widget/Cdav.php:129
+msgid "Calendar Name"
+msgstr "Kalendername"
+
+#: ../../Zotlabs/Widget/Cdav.php:130
+msgid "Calendar Tools"
+msgstr "Kalenderwerkzeuge"
+
+#: ../../Zotlabs/Widget/Cdav.php:131
+msgid "Import calendar"
+msgstr "Kalender importieren"
+
+#: ../../Zotlabs/Widget/Cdav.php:132
+msgid "Select a calendar to import to"
+msgstr "Kalender zum Hineinimportieren auswählen"
+
+#: ../../Zotlabs/Widget/Cdav.php:159
+msgid "Addressbooks"
+msgstr "Adressbücher"
+
+#: ../../Zotlabs/Widget/Cdav.php:161
+msgid "Addressbook name"
+msgstr "Adressbuchname"
+
+#: ../../Zotlabs/Widget/Cdav.php:163
+msgid "Create new addressbook"
+msgstr "Neues Adressbuch erstellen"
+
+#: ../../Zotlabs/Widget/Cdav.php:164
+msgid "Addressbook Name"
+msgstr "Adressbuchname"
+
+#: ../../Zotlabs/Widget/Cdav.php:166
+msgid "Addressbook Tools"
+msgstr "Adressbuchwerkzeuge"
+
+#: ../../Zotlabs/Widget/Cdav.php:167
+msgid "Import addressbook"
+msgstr "Adressbuch importieren"
+
+#: ../../Zotlabs/Widget/Cdav.php:168
+msgid "Select an addressbook to import to"
+msgstr "Adressbuch zum Hineinimportieren auswählen"
+
+#: ../../Zotlabs/Widget/Appcategories.php:40
+#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:97
+#: ../../include/contact_widgets.php:141 ../../include/contact_widgets.php:186
+#: ../../include/taxonomy.php:344 ../../include/taxonomy.php:426
+#: ../../include/taxonomy.php:446 ../../include/taxonomy.php:467
+msgid "Categories"
+msgstr "Kategorien"
+
+#: ../../Zotlabs/Widget/Appcategories.php:43 ../../Zotlabs/Widget/Filer.php:31
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:100
+#: ../../include/contact_widgets.php:144 ../../include/contact_widgets.php:189
+msgid "Everything"
+msgstr "Alles"
+
+#: ../../Zotlabs/Widget/Eventstools.php:13
+msgid "Events Tools"
+msgstr "Kalenderwerkzeuge"
+
+#: ../../Zotlabs/Widget/Eventstools.php:14
+msgid "Export Calendar"
+msgstr "Kalender exportieren"
+
+#: ../../Zotlabs/Widget/Eventstools.php:15
+msgid "Import Calendar"
+msgstr "Kalender importieren"
+
+#: ../../Zotlabs/Widget/Suggestedchats.php:32
+msgid "Suggested Chatrooms"
+msgstr "Chatraum-Vorschläge"
+
+#: ../../Zotlabs/Widget/Hq_controls.php:14
+msgid "HQ Control Panel"
+msgstr "HQ-Einstellungen"
+
+#: ../../Zotlabs/Widget/Hq_controls.php:17
+msgid "Create a new post"
+msgstr "Neuen Beitrag erstellen"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:13
+msgid "Private Mail Menu"
+msgstr "Private Nachrichten"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:15
+msgid "Combined View"
+msgstr "Kombinierte Anzeige"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:20
+msgid "Inbox"
+msgstr "Eingang"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:25
+msgid "Outbox"
+msgstr "Ausgang"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:30
+msgid "New Message"
+msgstr "Neue Nachricht"
+
+#: ../../Zotlabs/Widget/Chatroom_list.php:16
+#: ../../include/conversation.php:1864 ../../include/conversation.php:1867
+#: ../../include/nav.php:434 ../../include/nav.php:437
+msgid "Chatrooms"
+msgstr "Chaträume"
+
+#: ../../Zotlabs/Widget/Chatroom_list.php:20
+msgid "Overview"
+msgstr "Ãœbersicht"
+
+#: ../../Zotlabs/Widget/Rating.php:51
+msgid "Rating Tools"
+msgstr "Bewertungswerkzeuge"
+
+#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57
+msgid "Rate Me"
+msgstr "Bewerte mich"
+
+#: ../../Zotlabs/Widget/Rating.php:60
+msgid "View Ratings"
+msgstr "Bewertungen ansehen"
+
+#: ../../Zotlabs/Widget/Activity.php:50
+msgctxt "widget"
+msgid "Activity"
+msgstr "Aktivität"
+
+#: ../../Zotlabs/Widget/Follow.php:22
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen."
+
+#: ../../Zotlabs/Widget/Follow.php:29
+msgid "Add New Connection"
+msgstr "Neue Verbindung hinzufügen"
+
+#: ../../Zotlabs/Widget/Follow.php:30
+msgid "Enter channel address"
+msgstr "Adresse des Kanals eingeben"
+
+#: ../../Zotlabs/Widget/Follow.php:31
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Beispiele: bob@beispiel.com, http://beispiel.com/barbara"
+
+#: ../../Zotlabs/Widget/Wiki_list.php:15 ../../addon/gitwiki/gitwiki.php:95
+msgid "Wiki List"
+msgstr "Wikiliste"
+
+#: ../../Zotlabs/Widget/Archive.php:43
+msgid "Archives"
+msgstr "Archive"
+
+#: ../../Zotlabs/Widget/Conversations.php:17
+msgid "Received Messages"
+msgstr "Erhaltene Nachrichten"
+
+#: ../../Zotlabs/Widget/Conversations.php:21
+msgid "Sent Messages"
+msgstr "Gesendete Nachrichten"
+
+#: ../../Zotlabs/Widget/Conversations.php:25
+msgid "Conversations"
+msgstr "Konversationen"
+
+#: ../../Zotlabs/Widget/Conversations.php:37
+msgid "No messages."
+msgstr "Keine Nachrichten."
+
+#: ../../Zotlabs/Widget/Conversations.php:57
+msgid "Delete conversation"
+msgstr "Unterhaltung löschen"
+
+#: ../../Zotlabs/Widget/Chatroom_members.php:11
+msgid "Chat Members"
+msgstr "Chatmitglieder"
+
+#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58
+msgid "photo/image"
+msgstr "Foto/Bild"
+
+#: ../../Zotlabs/Widget/Savedsearch.php:75
+msgid "Remove term"
+msgstr "Eintrag löschen"
+
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:354
+msgid "Saved Searches"
+msgstr "Gespeicherte Suchanfragen"
+
+#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:333
+msgid "add"
+msgstr "hinzufügen"
+
+#: ../../Zotlabs/Widget/Notes.php:16
+msgid "Notes"
+msgstr "Notizen"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:32
+#: ../../Zotlabs/Widget/Wiki_pages.php:89 ../../addon/gitwiki/gitwiki.php:81
+msgid "Add new page"
+msgstr "Neue Seite hinzufügen"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:83 ../../addon/gitwiki/gitwiki.php:76
+msgid "Wiki Pages"
+msgstr "Wikiseiten"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:94 ../../addon/gitwiki/gitwiki.php:82
+msgid "Page name"
+msgstr "Seitenname"
+
+#: ../../Zotlabs/Widget/Affinity.php:45
+msgid "Refresh"
+msgstr "Aktualisieren"
+
+#: ../../Zotlabs/Widget/Tasklist.php:23
+msgid "Tasks"
+msgstr "Aufgaben"
+
+#: ../../Zotlabs/Widget/Suggestions.php:51
+msgid "Suggestions"
+msgstr "Vorschläge"
+
+#: ../../Zotlabs/Widget/Suggestions.php:52
+msgid "See more..."
+msgstr "Mehr anzeigen …"
+
+#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
+#: ../../include/features.php:443
+msgid "Saved Folders"
+msgstr "Gespeicherte Ordner"
+
+#: ../../Zotlabs/Widget/Cover_photo.php:54
+msgid "Click to show more"
+msgstr "Klick, um mehr anzuzeigen"
+
+#: ../../Zotlabs/Widget/Newmember.php:33
+msgid "Profile Creation"
+msgstr "Profilerstellung"
+
+#: ../../Zotlabs/Widget/Newmember.php:35
+msgid "Upload profile photo"
+msgstr "Profilfoto hochladen"
+
+#: ../../Zotlabs/Widget/Newmember.php:36
+msgid "Upload cover photo"
+msgstr "Titelbild hochladen"
+
+#: ../../Zotlabs/Widget/Newmember.php:37 ../../include/nav.php:119
+msgid "Edit your profile"
+msgstr "Profil bearbeiten"
+
+#: ../../Zotlabs/Widget/Newmember.php:40
+msgid "Find and Connect with others"
+msgstr "Finden und Verbinden von/mit Anderen"
+
+#: ../../Zotlabs/Widget/Newmember.php:44
+msgid "Manage your connections"
+msgstr "Deine Verbindungen verwalten"
+
+#: ../../Zotlabs/Widget/Newmember.php:47
+msgid "Communicate"
+msgstr "Kommunizieren"
+
+#: ../../Zotlabs/Widget/Newmember.php:49
+msgid "View your channel homepage"
+msgstr "Deine Kanal-Startseite ansehen"
+
+#: ../../Zotlabs/Widget/Newmember.php:50
+msgid "View your network stream"
+msgstr "Deine Netzwerk-Aktivitäten ansehen"
+
+#: ../../Zotlabs/Widget/Newmember.php:56
+msgid "Documentation"
+msgstr "Dokumentation"
+
+#: ../../Zotlabs/Widget/Newmember.php:67
+msgid "View public stream. Warning: not moderated"
+msgstr "Öffentliche Beitragsaktivitäten ansehen. Warnung: Diese Inhalte sind nicht moderiert."
+
+#: ../../Zotlabs/Widget/Newmember.php:71
+msgid "New Member Links"
+msgstr "Links für neue Mitglieder"
+
+#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
+msgid "Member registrations waiting for confirmation"
+msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
+
+#: ../../Zotlabs/Widget/Admin.php:29
+msgid "Inspect queue"
+msgstr "Warteschlange kontrollieren"
+
+#: ../../Zotlabs/Widget/Admin.php:31
+msgid "DB updates"
+msgstr "DB-Aktualisierungen"
+
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:199
+msgid "Admin"
+msgstr "Administration"
+
+#: ../../Zotlabs/Widget/Admin.php:56
+msgid "Plugin Features"
+msgstr "Plug-In Funktionen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:35
+msgid "Account settings"
+msgstr "Konto-Einstellungen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:41
+msgid "Channel settings"
+msgstr "Kanal-Einstellungen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:50
+msgid "Additional features"
+msgstr "Zusätzliche Funktionen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:57
+msgid "Addon settings"
+msgstr "Addon-Einstellungen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:63
+msgid "Display settings"
+msgstr "Anzeige-Einstellungen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:70
+msgid "Manage locations"
+msgstr "Klon-Adressen verwalten"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:77
+msgid "Export channel"
+msgstr "Kanal exportieren"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:84
+msgid "Connected apps"
+msgstr "Verbundene Apps"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:231
+msgid "Permission Groups"
+msgstr "Berechtigungsrollen"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:117
+msgid "Premium Channel Settings"
+msgstr "Premium-Kanal-Einstellungen"
+
+#: ../../Zotlabs/Widget/Bookmarkedchats.php:24
+msgid "Bookmarked Chatrooms"
+msgstr "Gespeicherte Chatrooms"
+
+#: ../../Zotlabs/Widget/Notifications.php:16
+msgid "New Network Activity"
+msgstr "Neue Netzwerk-Aktivitäten"
+
+#: ../../Zotlabs/Widget/Notifications.php:17
+msgid "New Network Activity Notifications"
+msgstr "Benachrichtigungen für neue Netzwerk-Aktivitäten"
+
+#: ../../Zotlabs/Widget/Notifications.php:20
+msgid "View your network activity"
+msgstr "Zeige Deine Netzwerk-Aktivitäten"
+
+#: ../../Zotlabs/Widget/Notifications.php:23
+msgid "Mark all notifications read"
+msgstr "Alle Benachrichtigungen als gesehen markieren"
+
+#: ../../Zotlabs/Widget/Notifications.php:26
+#: ../../Zotlabs/Widget/Notifications.php:45
+#: ../../Zotlabs/Widget/Notifications.php:141
+msgid "Show new posts only"
+msgstr "Zeige nur neue Beiträge"
+
+#: ../../Zotlabs/Widget/Notifications.php:27
+#: ../../Zotlabs/Widget/Notifications.php:46
+#: ../../Zotlabs/Widget/Notifications.php:142
+msgid "Filter by name"
+msgstr "Nach Namen filtern"
+
+#: ../../Zotlabs/Widget/Notifications.php:35
+msgid "New Home Activity"
+msgstr "Neue Kanal-Aktivitäten"
+
+#: ../../Zotlabs/Widget/Notifications.php:36
+msgid "New Home Activity Notifications"
+msgstr "Benachrichtigungen für neue Kanal-Aktivitäten"
+
+#: ../../Zotlabs/Widget/Notifications.php:39
+msgid "View your home activity"
+msgstr "Zeige Deine Kanal-Aktivitäten"
+
+#: ../../Zotlabs/Widget/Notifications.php:42
+#: ../../Zotlabs/Widget/Notifications.php:138
+msgid "Mark all notifications seen"
+msgstr "Alle Benachrichtigungen als gesehen markieren"
+
+#: ../../Zotlabs/Widget/Notifications.php:54
+msgid "New Mails"
+msgstr "Neue Mails"
+
+#: ../../Zotlabs/Widget/Notifications.php:55
+msgid "New Mails Notifications"
+msgstr "Benachrichtigungen für neue Mails"
+
+#: ../../Zotlabs/Widget/Notifications.php:58
+msgid "View your private mails"
+msgstr "Zeige Deine persönlichen Mails"
+
+#: ../../Zotlabs/Widget/Notifications.php:61
+msgid "Mark all messages seen"
+msgstr "Alle Mails als gelesen markieren"
+
+#: ../../Zotlabs/Widget/Notifications.php:69
+msgid "New Events"
+msgstr "Neue Termine"
+
+#: ../../Zotlabs/Widget/Notifications.php:70
+msgid "New Events Notifications"
+msgstr "Benachrichtigungen für neue Termine"
+
+#: ../../Zotlabs/Widget/Notifications.php:73
+msgid "View events"
+msgstr "Termine ansehen"
+
+#: ../../Zotlabs/Widget/Notifications.php:76
+msgid "Mark all events seen"
+msgstr "Markiere alle Termine als gesehen"
+
+#: ../../Zotlabs/Widget/Notifications.php:85
+msgid "New Connections Notifications"
+msgstr "Benachrichtigungen für neue Verbindungen"
+
+#: ../../Zotlabs/Widget/Notifications.php:88
+msgid "View all connections"
+msgstr "Zeige alle Verbindungen"
+
+#: ../../Zotlabs/Widget/Notifications.php:96
+msgid "New Files"
+msgstr "Neue Dateien"
+
+#: ../../Zotlabs/Widget/Notifications.php:97
+msgid "New Files Notifications"
+msgstr "Benachrichtigungen für neue Dateien"
+
+#: ../../Zotlabs/Widget/Notifications.php:104
+#: ../../Zotlabs/Widget/Notifications.php:105
+msgid "Notices"
+msgstr "Benachrichtigungen"
+
+#: ../../Zotlabs/Widget/Notifications.php:108
+msgid "View all notices"
+msgstr "Alle Notizen ansehen"
+
+#: ../../Zotlabs/Widget/Notifications.php:111
+msgid "Mark all notices seen"
+msgstr "Alle Notizen als gesehen markieren"
+
+#: ../../Zotlabs/Widget/Notifications.php:121
+msgid "New Registrations"
+msgstr "Neue Registrierungen"
+
+#: ../../Zotlabs/Widget/Notifications.php:122
+msgid "New Registrations Notifications"
+msgstr "Benachrichtigungen für neue Registrierungen"
+
+#: ../../Zotlabs/Widget/Notifications.php:132
+msgid "Public Stream Notifications"
+msgstr "Benachrichtigungen für öffentlichen Beitrags-Stream"
+
+#: ../../Zotlabs/Widget/Notifications.php:135
+msgid "View the public stream"
+msgstr "Zeige öffentlichen Beitrags-Stream"
+
+#: ../../Zotlabs/Widget/Notifications.php:150
+msgid "Sorry, you have got no notifications at the moment"
+msgstr "Du hast momentan keine Benachrichtigungen"
+
+#: ../../util/nconfig.php:34
+msgid "Source channel not found."
+msgstr "Quellkanal nicht gefunden."
+
+#: ../../boot.php:1562
+msgid "Create an account to access services and applications"
+msgstr "Erstelle ein Konto, um auf Dienste und Anwendungen zugreifen zu können."
+
+#: ../../boot.php:1581 ../../include/nav.php:111 ../../include/nav.php:140
+#: ../../include/nav.php:159
+msgid "Logout"
+msgstr "Abmelden"
+
+#: ../../boot.php:1585
+msgid "Login/Email"
+msgstr "Anmelden/E-Mail"
+
+#: ../../boot.php:1586
+msgid "Password"
+msgstr "Kennwort"
+
+#: ../../boot.php:1587
+msgid "Remember me"
+msgstr "Angaben speichern"
+
+#: ../../boot.php:1590
+msgid "Forgot your password?"
+msgstr "Passwort vergessen?"
+
+#: ../../boot.php:2347
+#, php-format
+msgid "[$Projectname] Website SSL error for %s"
+msgstr "[$Projectname] Webseiten-SSL-Fehler für %s"
+
+#: ../../boot.php:2352
+msgid "Website SSL certificate is not valid. Please correct."
+msgstr "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben."
+
+#: ../../boot.php:2540
+#, php-format
+msgid "[$Projectname] Cron tasks not running on %s"
+msgstr "[$Projectname] Cron-Jobs laufen nicht auf %s"
+
+#: ../../boot.php:2545
+msgid "Cron/Scheduled tasks not running."
+msgstr "Cron-Aufgaben laufen nicht."
+
+#: ../../boot.php:2474 ../../include/datetime.php:232
+msgid "never"
+msgstr "Nie"
+
+#: ../../view/theme/redbasic_c/php/config.php:16
+#: ../../view/theme/redbasic_c/php/config.php:19
+#: ../../view/theme/redbasic/php/config.php:16
+#: ../../view/theme/redbasic/php/config.php:19
+msgid "Focus (Hubzilla default)"
+msgstr "Focus (Voreinstellung für Hubzilla)"
+
+#: ../../view/theme/redbasic_c/php/config.php:99
+#: ../../view/theme/redbasic/php/config.php:97
+msgid "Theme settings"
+msgstr "Design-Einstellungen"
+
+#: ../../view/theme/redbasic_c/php/config.php:100
+#: ../../view/theme/redbasic/php/config.php:98
+msgid "Narrow navbar"
+msgstr "Schmale Navigationsleiste"
+
+#: ../../view/theme/redbasic_c/php/config.php:101
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Navigation bar background color"
+msgstr "Hintergrundfarbe der Navigationsleiste"
+
+#: ../../view/theme/redbasic_c/php/config.php:102
+#: ../../view/theme/redbasic/php/config.php:100
+msgid "Navigation bar icon color "
+msgstr "Farbe für die Icons der Navigationsleiste"
+
+#: ../../view/theme/redbasic_c/php/config.php:103
+#: ../../view/theme/redbasic/php/config.php:101
+msgid "Navigation bar active icon color "
+msgstr "Farbe für aktive Icons der Navigationsleiste"
+
+#: ../../view/theme/redbasic_c/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:102
+msgid "Link color"
+msgstr "Linkfarbe"
+
+#: ../../view/theme/redbasic_c/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:103
+msgid "Set font-color for banner"
+msgstr "Farbe der Schrift des Banners"
+
+#: ../../view/theme/redbasic_c/php/config.php:106
+#: ../../view/theme/redbasic/php/config.php:104
+msgid "Set the background color"
+msgstr "Hintergrundfarbe"
+
+#: ../../view/theme/redbasic_c/php/config.php:107
+#: ../../view/theme/redbasic/php/config.php:105
+msgid "Set the background image"
+msgstr "Hintergrundbild"
+
+#: ../../view/theme/redbasic_c/php/config.php:108
+#: ../../view/theme/redbasic/php/config.php:106
+msgid "Set the background color of items"
+msgstr "Hintergrundfarbe für Beiträge"
+
+#: ../../view/theme/redbasic_c/php/config.php:109
+#: ../../view/theme/redbasic/php/config.php:107
+msgid "Set the background color of comments"
+msgstr "Hintergrundfarbe für Kommentare"
+
+#: ../../view/theme/redbasic_c/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Set font-size for the entire application"
+msgstr "Schriftgröße für die gesamte Anwendung"
+
+#: ../../view/theme/redbasic_c/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Examples: 1rem, 100%, 16px"
+msgstr "Beispiele: 1rem, 100%, 16px"
+
+#: ../../view/theme/redbasic_c/php/config.php:111
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Set font-color for posts and comments"
+msgstr "Schriftfarbe für Beiträge und Kommentare"
+
+#: ../../view/theme/redbasic_c/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Set radius of corners"
+msgstr "Ecken-Radius"
+
+#: ../../view/theme/redbasic_c/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Example: 4px"
+msgstr "Beispiel: 4px"
+
+#: ../../view/theme/redbasic_c/php/config.php:113
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Set shadow depth of photos"
+msgstr "Schattentiefe von Fotos"
+
+#: ../../view/theme/redbasic_c/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Set maximum width of content region in pixel"
+msgstr "Maximalbreite des Inhaltsbereichs in Pixel festlegen"
+
+#: ../../view/theme/redbasic_c/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Leave empty for default width"
+msgstr "Leer lassen für Standardbreite"
+
+#: ../../view/theme/redbasic_c/php/config.php:115
+msgid "Left align page content"
+msgstr "Seiteninhalt linksbündig anzeigen"
+
+#: ../../view/theme/redbasic_c/php/config.php:116
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "Set size of conversation author photo"
+msgstr "Größe der Avatare von Themenstartern"
+
+#: ../../view/theme/redbasic_c/php/config.php:117
+#: ../../view/theme/redbasic/php/config.php:114
+msgid "Set size of followup author photos"
+msgstr "Größe der Avatare von Kommentatoren"
+
+#: ../../addon/rendezvous/rendezvous.php:57
+msgid "Errors encountered deleting database table "
+msgstr "Beim Löschen der Datenbanktabelle sind Fehler aufgetreten."
+
+#: ../../addon/rendezvous/rendezvous.php:95
+#: ../../addon/twitter/twitter.php:779
+msgid "Submit Settings"
+msgstr "Einstellungen absenden"
+
+#: ../../addon/rendezvous/rendezvous.php:96
+msgid "Drop tables when uninstalling?"
+msgstr "Lösche Tabellen beim Deinstallieren?"
+
+#: ../../addon/rendezvous/rendezvous.php:96
+msgid ""
+"If checked, the Rendezvous database tables will be deleted when the plugin "
+"is uninstalled."
+msgstr "Wenn ausgewählt, werden die Rendezvous-Tabellen in der Datenbank gelöscht, sobald das Plugin deinstalliert wird."
+
+#: ../../addon/rendezvous/rendezvous.php:97
+msgid "Mapbox Access Token"
+msgstr "Mapbox Zugangs-Token"
+
+#: ../../addon/rendezvous/rendezvous.php:97
+msgid ""
+"If you enter a Mapbox access token, it will be used to retrieve map tiles "
+"from Mapbox instead of the default OpenStreetMap tile server."
+msgstr "Wenn Du ein Mapbox Zugangs-Token eingibst, werden die Kartendaten (Kacheln) damit von Mapbox geladen, anstatt von OpenStreetMap, welches die Voreinstellung ist."
+
+#: ../../addon/rendezvous/rendezvous.php:162
+msgid "Rendezvous"
+msgstr "Rendezvous"
+
+#: ../../addon/rendezvous/rendezvous.php:167
+msgid ""
+"This identity has been deleted by another member due to inactivity. Please "
+"press the \"New identity\" button or refresh the page to register a new "
+"identity. You may use the same name."
+msgstr "Diese Identität wurde von einem anderen Mitglied aufgrund von Inaktivität gelöscht. Bitte klicke auf \"Neue Identität\" oder aktualisiere die Website im Browser, um eine neue Identität zu registrieren. Du kannst dabei den selben Namen verwenden."
+
+#: ../../addon/rendezvous/rendezvous.php:168
+msgid "Welcome to Rendezvous!"
+msgstr "Willkommen bei Rendezvous!"
+
+#: ../../addon/rendezvous/rendezvous.php:169
+msgid ""
+"Enter your name to join this rendezvous. To begin sharing your location with"
+" the other members, tap the GPS control. When your location is discovered, a"
+" red dot will appear and others will be able to see you on the map."
+msgstr "Gib Deinen Namen ein, um diesem Rendezvous beizutreten. Um Deinen Standort mit anderen Mitgliedern zu teilen, klicke auf das GPS Symbol. Sobald Dein Standort ermittelt ist, erscheint ein roter Punkt, und die Anderen werden Dich auf der Karte sehen können."
+
+#: ../../addon/rendezvous/rendezvous.php:171
+msgid "Let's meet here"
+msgstr "Lasst uns hier treffen"
+
+#: ../../addon/rendezvous/rendezvous.php:174
+msgid "New marker"
+msgstr "Neue Markierung"
+
+#: ../../addon/rendezvous/rendezvous.php:175
+msgid "Edit marker"
+msgstr "Markierung bearbeiten"
+
+#: ../../addon/rendezvous/rendezvous.php:176
+msgid "New identity"
+msgstr "Neue Identität"
+
+#: ../../addon/rendezvous/rendezvous.php:177
+msgid "Delete marker"
+msgstr "Markierung löschen"
+
+#: ../../addon/rendezvous/rendezvous.php:178
+msgid "Delete member"
+msgstr "Mitglied löschen"
+
+#: ../../addon/rendezvous/rendezvous.php:179
+msgid "Edit proximity alert"
+msgstr "Annäherungsalarm bearbeiten"
+
+#: ../../addon/rendezvous/rendezvous.php:180
+msgid ""
+"A proximity alert will be issued when this member is within a certain radius"
+" of you.<br><br>Enter a radius in meters (0 to disable):"
+msgstr "Ein Annäherungsalarm wird ausgelöst werden, sobald sich dieses Mitglied innerhalb eines bestimmten Radius von Dir aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):"
+
+#: ../../addon/rendezvous/rendezvous.php:180
+#: ../../addon/rendezvous/rendezvous.php:185
+msgid "distance"
+msgstr "Entfernung"
+
+#: ../../addon/rendezvous/rendezvous.php:181
+msgid "Proximity alert distance (meters)"
+msgstr "Entfernung für Annäherungsalarm (in Metern)"
+
+#: ../../addon/rendezvous/rendezvous.php:182
+#: ../../addon/rendezvous/rendezvous.php:184
+msgid ""
+"A proximity alert will be issued when you are within a certain radius of the"
+" marker location.<br><br>Enter a radius in meters (0 to disable):"
+msgstr "Ein Annäherungsalarm wird ausgelöst werden, sobald Du Dich innerhalb eines bestimmten Radius der Markierung aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):"
+
+#: ../../addon/rendezvous/rendezvous.php:183
+msgid "Marker proximity alert"
+msgstr "Annäherungsalarm für Markierung"
+
+#: ../../addon/rendezvous/rendezvous.php:186
+msgid "Reminder note"
+msgstr "Erinnerungshinweis"
+
+#: ../../addon/rendezvous/rendezvous.php:187
+msgid ""
+"Enter a note to be displayed when you are within the specified proximity..."
+msgstr "Gib eine Nachricht ein, die angezeigt werden soll, wenn Du Dich in der festgelegten Nähe befindest..."
+
+#: ../../addon/rendezvous/rendezvous.php:199
+msgid "Add new rendezvous"
+msgstr "Neues Rendezvous hinzufügen"
+
+#: ../../addon/rendezvous/rendezvous.php:200
+msgid ""
+"Create a new rendezvous and share the access link with those you wish to "
+"invite to the group. Those who open the link become members of the "
+"rendezvous. They can view other member locations, add markers to the map, or"
+" share their own locations with the group."
+msgstr "Erstelle ein neues Rendezvous und teile den Zugriffslink mit allen, die Du in die Gruppe einladen möchtest. Die, die den Link öffnen, werden Mitglieder des Rendezvous. Sie können die Standorte der anderen Mitglieder sehen, Marker zur Karte hinzufügen oder ihre eigenen Standorte mit der Gruppe teilen."
+
+#: ../../addon/skeleton/skeleton.php:59
+msgid "Some setting"
+msgstr "Einige Einstellungen"
+
+#: ../../addon/skeleton/skeleton.php:61
+msgid "A setting"
+msgstr "Eine Einstellung"
+
+#: ../../addon/skeleton/skeleton.php:64
+msgid "Skeleton Settings"
+msgstr "Skeleton Einstellungen"
+
+#: ../../addon/gnusoc/gnusoc.php:247
+msgid "GNU-Social Protocol Settings updated."
+msgstr "GNU social Protokoll Einstellungen aktualisiert"
+
+#: ../../addon/gnusoc/gnusoc.php:266
+msgid ""
+"The GNU-Social protocol does not support location independence. Connections "
+"you make within that network may be unreachable from alternate channel "
+"locations."
+msgstr "Das GNU-Social-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein."
+
+#: ../../addon/gnusoc/gnusoc.php:269
+msgid "Enable the GNU-Social protocol for this channel"
+msgstr "Aktiviere das GNU social Protokoll für diesen Kanal"
+
+#: ../../addon/gnusoc/gnusoc.php:273
+msgid "GNU-Social Protocol Settings"
+msgstr "GNU social Protokoll Einstellungen"
+
+#: ../../addon/gnusoc/gnusoc.php:464
+msgid "Follow"
+msgstr "Folgen"
+
+#: ../../addon/gnusoc/gnusoc.php:467
+#, php-format
+msgid "%1$s is now following %2$s"
+msgstr "%1$s folgt nun %2$s"
+
+#: ../../addon/planets/planets.php:121
+msgid "Planets Settings updated."
+msgstr "Planeten Einstellungen aktualisiert"
+
+#: ../../addon/planets/planets.php:149
+msgid "Enable Planets Plugin"
+msgstr "Aktiviere Planeten Plugin"
+
+#: ../../addon/planets/planets.php:153
+msgid "Planets Settings"
+msgstr "Planeten Einstellungen"
+
+#: ../../addon/openclipatar/openclipatar.php:50
+#: ../../addon/openclipatar/openclipatar.php:128
+msgid "System defaults:"
+msgstr "Systemstandardeinstellungen:"
+
+#: ../../addon/openclipatar/openclipatar.php:54
+msgid "Preferred Clipart IDs"
+msgstr "Bevorzugte Clipart-IDs"
+
+#: ../../addon/openclipatar/openclipatar.php:54
+msgid "List of preferred clipart ids. These will be shown first."
+msgstr "Liste bevorzugter Clipart-IDs. Diese werden zuerst angezeigt."
+
+#: ../../addon/openclipatar/openclipatar.php:55
+msgid "Default Search Term"
+msgstr "Standard-Suchbegriff"
+
+#: ../../addon/openclipatar/openclipatar.php:55
+msgid "The default search term. These will be shown second."
+msgstr "Der Standard-Suchbegriff. Dieser wird an zweiter Stelle angezeigt."
+
+#: ../../addon/openclipatar/openclipatar.php:56
+msgid "Return After"
+msgstr "Zurückkehren nach"
+
+#: ../../addon/openclipatar/openclipatar.php:56
+msgid "Page to load after image selection."
+msgstr "Die Seite, die nach Auswahl eines Bildes geladen werden soll."
+
+#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1301
+#: ../../include/nav.php:119
+msgid "Edit Profile"
+msgstr "Profil bearbeiten"
+
+#: ../../addon/openclipatar/openclipatar.php:59
+msgid "Profile List"
+msgstr "Profilliste"
+
+#: ../../addon/openclipatar/openclipatar.php:61
+msgid "Order of Preferred"
+msgstr "Reihenfolge der Bevorzugten"
+
+#: ../../addon/openclipatar/openclipatar.php:61
+msgid "Sort order of preferred clipart ids."
+msgstr "Sortierreihenfolge der bevorzugten Clipart-IDs."
+
+#: ../../addon/openclipatar/openclipatar.php:62
+#: ../../addon/openclipatar/openclipatar.php:68
+msgid "Newest first"
+msgstr "Neueste zuerst"
+
+#: ../../addon/openclipatar/openclipatar.php:65
+msgid "As entered"
+msgstr "Wie eingegeben"
+
+#: ../../addon/openclipatar/openclipatar.php:67
+msgid "Order of other"
+msgstr "Sortierung aller anderen"
+
+#: ../../addon/openclipatar/openclipatar.php:67
+msgid "Sort order of other clipart ids."
+msgstr "Sortierreihenfolge der übrigen Clipart-IDs."
+
+#: ../../addon/openclipatar/openclipatar.php:69
+msgid "Most downloaded first"
+msgstr "Meist heruntergeladene zuerst"
+
+#: ../../addon/openclipatar/openclipatar.php:70
+msgid "Most liked first"
+msgstr "Beliebteste zuerst"
+
+#: ../../addon/openclipatar/openclipatar.php:72
+msgid "Preferred IDs Message"
+msgstr "Nachricht für bevorzugte IDs"
+
+#: ../../addon/openclipatar/openclipatar.php:72
+msgid "Message to display above preferred results."
+msgstr "Nachricht, die über den Ergebnissen mit den bevorzugten IDs angezeigt werden soll."
+
+#: ../../addon/openclipatar/openclipatar.php:78
+msgid "Uploaded by: "
+msgstr "Hochgeladen von: "
+
+#: ../../addon/openclipatar/openclipatar.php:78
+msgid "Drawn by: "
+msgstr "Gezeichnet von: "
+
+#: ../../addon/openclipatar/openclipatar.php:182
+#: ../../addon/openclipatar/openclipatar.php:194
+msgid "Use this image"
+msgstr ""
+
+#: ../../addon/openclipatar/openclipatar.php:192
+msgid "Or select from a free OpenClipart.org image:"
+msgstr "Oder wähle ein freies Bild von OpenClipart.org:"
+
+#: ../../addon/openclipatar/openclipatar.php:195
+msgid "Search Term"
+msgstr "Suchbegriff"
+
+#: ../../addon/openclipatar/openclipatar.php:232
+msgid "Unknown error. Please try again later."
+msgstr "Unbekannter Fehler. Bitte versuchen Sie es später erneut."
+
+#: ../../addon/openclipatar/openclipatar.php:308
+msgid "Profile photo updated successfully."
+msgstr "Profilfoto erfolgreich aktualisiert."
+
+#: ../../addon/adultphotoflag/adultphotoflag.php:24
+msgid "Flag Adult Photos"
+msgstr "Nicht jugendfreie Fotos markieren"
+
+#: ../../addon/adultphotoflag/adultphotoflag.php:25
+msgid ""
+"Provide photo edit option to hide inappropriate photos from default album "
+"view"
+msgstr "Stellt eine Option zum Verstecken von Fotos mit unangemessenen Inhalten in der Standard-Albumansicht bereit"
+
+#: ../../addon/wppost/wppost.php:45
+msgid "Post to WordPress"
+msgstr "Auf WordPress posten"
+
+#: ../../addon/wppost/wppost.php:82
+msgid "Enable WordPress Post Plugin"
+msgstr "Aktiviere das WordPress-Plugin"
+
+#: ../../addon/wppost/wppost.php:86
+msgid "WordPress username"
+msgstr "WordPress-Benutzername"
+
+#: ../../addon/wppost/wppost.php:90
+msgid "WordPress password"
+msgstr "WordPress-Passwort"
+
+#: ../../addon/wppost/wppost.php:94
+msgid "WordPress API URL"
+msgstr "WordPress-API-URL"
+
+#: ../../addon/wppost/wppost.php:95
+msgid "Typically https://your-blog.tld/xmlrpc.php"
+msgstr "Normalerweise https://your-blog.tld/xmlrpc.php"
+
+#: ../../addon/wppost/wppost.php:98
+msgid "WordPress blogid"
+msgstr "WordPress blogid"
+
+#: ../../addon/wppost/wppost.php:99
+msgid "For multi-user sites such as wordpress.com, otherwise leave blank"
+msgstr "Nötig für Mehrbenutzer Seiten wie wordpress.com, andernfalls frei lassen"
+
+#: ../../addon/wppost/wppost.php:105
+msgid "Post to WordPress by default"
+msgstr "Standardmäßig auf auf WordPress posten"
+
+#: ../../addon/wppost/wppost.php:109
+msgid "Forward comments (requires hubzilla_wp plugin)"
+msgstr "Kommentare weiterleiten (benötigt hubzilla_wp Plugin)"
+
+#: ../../addon/wppost/wppost.php:113
+msgid "WordPress Post Settings"
+msgstr "WordPress-Beitragseinstellungen"
+
+#: ../../addon/wppost/wppost.php:129
+msgid "Wordpress Settings saved."
+msgstr "Wordpress-Einstellungen gespeichert."
+
+#: ../../addon/nsfw/nsfw.php:80
+msgid ""
+"This plugin looks in posts for the words/text you specify below, and "
+"collapses any content containing those keywords so it is not displayed at "
+"inappropriate times, such as sexual innuendo that may be improper in a work "
+"setting. It is polite and recommended to tag any content containing nudity "
+"with #NSFW. This filter can also match any other word/text you specify, and"
+" can thereby be used as a general purpose content filter."
+msgstr "Dieses Plugin sucht in Beiträgen nach Wörtern oder Textbausteinen, die Du hier unterhalb einträgst, und faltet alle Beiträge zusammen, in denen es diese Bausteine findet. Auf diese Weise wird verhindert, dass Inhalte, wie z.B. sexuelle Anspielungen, in unpassenden Momenten angezeigt werden. Es gilt als höflich und empfohlen, den #NSFW Tag für Beiträge zu verwenden, bei denen Du davon ausgehen kannst, dass andere sie anstößig finden könnten. Du kannst aber auch beliebige andere Wörter in der Liste angeben und das Plugin so als allgemeinen Inhaltsfilter verwenden."
+
+#: ../../addon/nsfw/nsfw.php:84
+msgid "Enable Content filter"
+msgstr "Inhaltsfilter aktivieren"
+
+#: ../../addon/nsfw/nsfw.php:88
+msgid "Comma separated list of keywords to hide"
+msgstr "Kommaseparierte Liste von Schlüsselworten die verborgen werden sollen."
+
+#: ../../addon/nsfw/nsfw.php:88
+msgid "Word, /regular-expression/, lang=xx, lang!=xx"
+msgstr "Wort, /regular-expression/, lang=xx, lang!=xx"
+
+#: ../../addon/nsfw/nsfw.php:92
+msgid "Not Safe For Work Settings"
+msgstr "Not Safe For Work Einstellungen"
+
+#: ../../addon/nsfw/nsfw.php:92
+msgid "General Purpose Content Filter"
+msgstr "Allzweck-Inhaltsfilter"
+
+#: ../../addon/nsfw/nsfw.php:110
+msgid "NSFW Settings saved."
+msgstr "NSFW-Einstellungen gespeichert."
+
+#: ../../addon/nsfw/nsfw.php:207
+msgid "Possible adult content"
+msgstr "Möglicherweise nicht jugendfreie Inhalte"
+
+#: ../../addon/nsfw/nsfw.php:222
+#, php-format
+msgid "%s - view"
+msgstr "%s - ansehen"
+
+#: ../../addon/ijpost/ijpost.php:42
+msgid "Post to Insanejournal"
+msgstr "Bei InsaneJournal veröffentlichen"
+
+#: ../../addon/ijpost/ijpost.php:73
+msgid "Enable InsaneJournal Post Plugin"
+msgstr "Aktiviere das InsaneJournal Plugin"
+
+#: ../../addon/ijpost/ijpost.php:77
+msgid "InsaneJournal username"
+msgstr "InsaneJournal-Benutzername"
+
+#: ../../addon/ijpost/ijpost.php:81
+msgid "InsaneJournal password"
+msgstr "InsaneJournal-Passwort"
+
+#: ../../addon/ijpost/ijpost.php:85
+msgid "Post to InsaneJournal by default"
+msgstr "Standardmäßig bei InsaneJournal veröffentlichen"
+
+#: ../../addon/ijpost/ijpost.php:89
+msgid "InsaneJournal Post Settings"
+msgstr "InsaneJournal-Beitragseinstellungen"
+
+#: ../../addon/ijpost/ijpost.php:104
+msgid "Insane Journal Settings saved."
+msgstr "InsaneJournal-Einstellungen gespeichert."
+
+#: ../../addon/dwpost/dwpost.php:42
+msgid "Post to Dreamwidth"
+msgstr "Bei Dreamwidth veröffentlichen"
+
+#: ../../addon/dwpost/dwpost.php:73
+msgid "Enable Dreamwidth Post Plugin"
+msgstr "Aktiviere das Dreamwidth-Plugin"
+
+#: ../../addon/dwpost/dwpost.php:77
+msgid "Dreamwidth username"
+msgstr "Dreamwidth-Benutzername"
+
+#: ../../addon/dwpost/dwpost.php:81
+msgid "Dreamwidth password"
+msgstr "Dreamwidth-Passwort"
+
+#: ../../addon/dwpost/dwpost.php:85
+msgid "Post to Dreamwidth by default"
+msgstr "Standardmäßig auf auf Dreamwidth posten"
+
+#: ../../addon/dwpost/dwpost.php:89
+msgid "Dreamwidth Post Settings"
+msgstr "Dreamwidth-Beitragseinstellungen"
+
+#: ../../addon/notifyadmin/notifyadmin.php:34
+msgid "New registration"
+msgstr ""
+
+#: ../../addon/notifyadmin/notifyadmin.php:42
+#, php-format
+msgid "Message sent to %s. New account registration: %s"
+msgstr "Nachricht gesendet an %s. Neue Kontoregistrierung: %s"
+
+#: ../../addon/dirstats/dirstats.php:94
+msgid "Hubzilla Directory Stats"
+msgstr "Hubzilla-Verzeichnisstatistiken"
+
+#: ../../addon/dirstats/dirstats.php:95
+msgid "Total Hubs"
+msgstr "Hubs insgesamt"
+
+#: ../../addon/dirstats/dirstats.php:97
+msgid "Hubzilla Hubs"
+msgstr "Hubzilla Hubs"
+
+#: ../../addon/dirstats/dirstats.php:99
+msgid "Friendica Hubs"
+msgstr "Friendica Hubs"
+
+#: ../../addon/dirstats/dirstats.php:101
+msgid "Diaspora Pods"
+msgstr "Diaspora Pods"
+
+#: ../../addon/dirstats/dirstats.php:103
+msgid "Hubzilla Channels"
+msgstr "Hubzilla-Kanäle"
+
+#: ../../addon/dirstats/dirstats.php:105
+msgid "Friendica Channels"
+msgstr "Friendica-Kanäle"
+
+#: ../../addon/dirstats/dirstats.php:107
+msgid "Diaspora Channels"
+msgstr "Diaspora-Kanäle"
+
+#: ../../addon/dirstats/dirstats.php:109
+msgid "Aged 35 and above"
+msgstr "35 und älter"
+
+#: ../../addon/dirstats/dirstats.php:111
+msgid "Aged 34 and under"
+msgstr "34 und jünger"
+
+#: ../../addon/dirstats/dirstats.php:113
+msgid "Average Age"
+msgstr "Durchschnittsalter"
+
+#: ../../addon/dirstats/dirstats.php:115
+msgid "Known Chatrooms"
+msgstr "Bekannte Chaträume"
+
+#: ../../addon/dirstats/dirstats.php:117
+msgid "Known Tags"
+msgstr "Bekannte Schlagwörter"
+
+#: ../../addon/dirstats/dirstats.php:119
+msgid ""
+"Please note Diaspora and Friendica statistics are merely those **this "
+"directory** is aware of, and not all those known in the network. This also "
+"applies to chatrooms,"
+msgstr "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume."
+
+#: ../../addon/likebanner/likebanner.php:51
+msgid "Your Webbie:"
+msgstr "Dein Webbie"
+
+#: ../../addon/likebanner/likebanner.php:54
+msgid "Fontsize (px):"
+msgstr "Schriftgröße (px):"
+
+#: ../../addon/likebanner/likebanner.php:68
+msgid "Link:"
+msgstr "Link:"
+
+#: ../../addon/likebanner/likebanner.php:70
+msgid "Like us on Hubzilla"
+msgstr "Like us on Hubzilla"
+
+#: ../../addon/likebanner/likebanner.php:72
+msgid "Embed:"
+msgstr "Einbetten"
+
+#: ../../addon/redphotos/redphotos.php:106
+msgid "Photos imported"
+msgstr "Fotos importiert"
+
+#: ../../addon/redphotos/redphotos.php:129
+msgid "Redmatrix Photo Album Import"
+msgstr "Redmatrix-Fotoalbumimport"
+
+#: ../../addon/redphotos/redphotos.php:130
+msgid "This will import all your Redmatrix photo albums to this channel."
+msgstr "Hiermit werden all deine Fotoalben von Redmatrix in diesen Kanal importiert."
+
+#: ../../addon/redphotos/redphotos.php:131
+#: ../../addon/redfiles/redfiles.php:121
+msgid "Redmatrix Server base URL"
+msgstr "Basis-URL des Redmatrix Servers"
+
+#: ../../addon/redphotos/redphotos.php:132
+#: ../../addon/redfiles/redfiles.php:122
+msgid "Redmatrix Login Username"
+msgstr "Redmatrix-Anmeldebenutzername"
+
+#: ../../addon/redphotos/redphotos.php:133
+#: ../../addon/redfiles/redfiles.php:123
+msgid "Redmatrix Login Password"
+msgstr "Redmatrix-Anmeldepasswort"
+
+#: ../../addon/redphotos/redphotos.php:134
+msgid "Import just this album"
+msgstr "Nur dieses Album importieren"
+
+#: ../../addon/redphotos/redphotos.php:134
+msgid "Leave blank to import all albums"
+msgstr "Leer lassen um alle Alben zu importieren"
+
+#: ../../addon/redphotos/redphotos.php:135
+msgid "Maximum count to import"
+msgstr "Maximal zu importierende Anzahl"
+
+#: ../../addon/redphotos/redphotos.php:135
+msgid "0 or blank to import all available"
+msgstr "0 oder leer lassen um alles zu importieren"
+
+#: ../../addon/irc/irc.php:45
+msgid "Channels to auto connect"
+msgstr "Kanäle zur automatischen Verbindung"
+
+#: ../../addon/irc/irc.php:45 ../../addon/irc/irc.php:49
+msgid "Comma separated list"
+msgstr "Kommagetrennte Liste"
+
+#: ../../addon/irc/irc.php:49 ../../addon/irc/irc.php:96
+msgid "Popular Channels"
+msgstr "Beliebte Kanäle"
+
+#: ../../addon/irc/irc.php:53
+msgid "IRC Settings"
+msgstr "IRC-Einstellungen"
+
+#: ../../addon/irc/irc.php:69
+msgid "IRC settings saved."
+msgstr "IRC-Einstellungen gespeichert."
+
+#: ../../addon/irc/irc.php:74
+msgid "IRC Chatroom"
+msgstr "IRC-Chatraum"
+
+#: ../../addon/ljpost/ljpost.php:42
+msgid "Post to LiveJournal"
+msgstr "Bei LiveJurnal veröffentlichen"
+
+#: ../../addon/ljpost/ljpost.php:70
+msgid "Enable LiveJournal Post Plugin"
+msgstr "Aktiviere das LiveJurnal Plugin"
+
+#: ../../addon/ljpost/ljpost.php:74
+msgid "LiveJournal username"
+msgstr "LiveJournal-Benutzername"
+
+#: ../../addon/ljpost/ljpost.php:78
+msgid "LiveJournal password"
+msgstr "LiveJournal-Passwort"
+
+#: ../../addon/ljpost/ljpost.php:82
+msgid "Post to LiveJournal by default"
+msgstr "Standardmäßig bei LiveJurnal veröffentlichen"
+
+#: ../../addon/ljpost/ljpost.php:86
+msgid "LiveJournal Post Settings"
+msgstr "LiveJournal-Beitragseinstellungen"
+
+#: ../../addon/ljpost/ljpost.php:101
+msgid "LiveJournal Settings saved."
+msgstr "LiveJournal-Einstellungen gespeichert."
+
+#: ../../addon/openid/openid.php:49
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal."
+
+#: ../../addon/openid/openid.php:49
+msgid "The error message was:"
+msgstr "Die Fehlermeldung war:"
+
+#: ../../addon/openid/MysqlProvider.php:52
+msgid "First Name"
+msgstr "Vorname"
+
+#: ../../addon/openid/MysqlProvider.php:53
+msgid "Last Name"
+msgstr "Nachname"
+
+#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/redred.php:111
+msgid "Nickname"
+msgstr "Spitzname"
+
+#: ../../addon/openid/MysqlProvider.php:55
+msgid "Full Name"
+msgstr "Voller Name"
+
+#: ../../addon/openid/MysqlProvider.php:61
+msgid "Profile Photo 16px"
+msgstr "Profilfoto 16 px"
+
+#: ../../addon/openid/MysqlProvider.php:62
+msgid "Profile Photo 32px"
+msgstr "Profilfoto 32 px"
+
+#: ../../addon/openid/MysqlProvider.php:63
+msgid "Profile Photo 48px"
+msgstr "Profilfoto 48 px"
+
+#: ../../addon/openid/MysqlProvider.php:64
+msgid "Profile Photo 64px"
+msgstr "Profilfoto 64 px"
+
+#: ../../addon/openid/MysqlProvider.php:65
+msgid "Profile Photo 80px"
+msgstr "Profilfoto 80 px"
+
+#: ../../addon/openid/MysqlProvider.php:66
+msgid "Profile Photo 128px"
+msgstr "Profilfoto 128 px"
+
+#: ../../addon/openid/MysqlProvider.php:67
+msgid "Timezone"
+msgstr "Zeitzone"
+
+#: ../../addon/openid/MysqlProvider.php:70
+msgid "Birth Year"
+msgstr "Geburtsjahr"
+
+#: ../../addon/openid/MysqlProvider.php:71
+msgid "Birth Month"
+msgstr "Geburtsmonat"
+
+#: ../../addon/openid/MysqlProvider.php:72
+msgid "Birth Day"
+msgstr "Geburtstag"
+
+#: ../../addon/openid/MysqlProvider.php:73
+msgid "Birthdate"
+msgstr "Geburtsdatum"
+
+#: ../../addon/openid/Mod_Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID-Protokollfehler. Keine Kennung zurückgegeben."
+
+#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:290
+msgid "Login failed."
+msgstr "Login fehlgeschlagen."
+
+#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49
+#: ../../include/selectors.php:66 ../../include/channel.php:1481
+msgid "Male"
+msgstr "Männlich"
+
+#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49
+#: ../../include/selectors.php:66 ../../include/channel.php:1479
+msgid "Female"
+msgstr "Weiblich"
+
+#: ../../addon/randpost/randpost.php:97
+msgid "You're welcome."
+msgstr "Gern geschehen."
+
+#: ../../addon/randpost/randpost.php:98
+msgid "Ah shucks..."
+msgstr "Ach Mist..."
+
+#: ../../addon/randpost/randpost.php:99
+msgid "Don't mention it."
+msgstr "Keine Ursache."
+
+#: ../../addon/randpost/randpost.php:100
+msgid "&lt;blush&gt;"
+msgstr ""
+
+#: ../../addon/startpage/startpage.php:109
+msgid "Page to load after login"
+msgstr "Seite, die nach dem Login geladen werden soll"
+
+#: ../../addon/startpage/startpage.php:109
+msgid ""
+"Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy "
+"collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave "
+"blank for default network page (grid)."
+msgstr "Beispiele: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (Gruppen-gefilterte Beiträge), &quot;channel&quot; oder &quot;notifications/system&quot; (freilassen für die Standard-Netzwerkseite (grid)."
+
+#: ../../addon/startpage/startpage.php:113
+msgid "Startpage Settings"
+msgstr "Startseiteneinstellungen"
+
+#: ../../addon/morepokes/morepokes.php:19
+msgid "bitchslap"
+msgstr "Ohrfeige"
+
+#: ../../addon/morepokes/morepokes.php:19
+msgid "bitchslapped"
+msgstr "geohrfeigt"
+
+#: ../../addon/morepokes/morepokes.php:20
+msgid "shag"
+msgstr "bumsen"
+
+#: ../../addon/morepokes/morepokes.php:20
+msgid "shagged"
+msgstr "gebumst"
+
+#: ../../addon/morepokes/morepokes.php:21
+msgid "patent"
+msgstr "Patent"
+
+#: ../../addon/morepokes/morepokes.php:21
+msgid "patented"
+msgstr "patentiert"
+
+#: ../../addon/morepokes/morepokes.php:22
+msgid "hug"
+msgstr "umarmen"
+
+#: ../../addon/morepokes/morepokes.php:22
+msgid "hugged"
+msgstr "umarmt"
+
+#: ../../addon/morepokes/morepokes.php:23
+msgid "murder"
+msgstr "ermorden"
+
+#: ../../addon/morepokes/morepokes.php:23
+msgid "murdered"
+msgstr "ermordet"
+
+#: ../../addon/morepokes/morepokes.php:24
+msgid "worship"
+msgstr "Anbetung"
+
+#: ../../addon/morepokes/morepokes.php:24
+msgid "worshipped"
+msgstr "angebetet"
+
+#: ../../addon/morepokes/morepokes.php:25
+msgid "kiss"
+msgstr "küssen"
+
+#: ../../addon/morepokes/morepokes.php:25
+msgid "kissed"
+msgstr "geküsst"
+
+#: ../../addon/morepokes/morepokes.php:26
+msgid "tempt"
+msgstr "verlocken"
+
+#: ../../addon/morepokes/morepokes.php:26
+msgid "tempted"
+msgstr "verlockt"
+
+#: ../../addon/morepokes/morepokes.php:27
+msgid "raise eyebrows at"
+msgstr "Augenbrauen hochziehen"
+
+#: ../../addon/morepokes/morepokes.php:27
+msgid "raised their eyebrows at"
+msgstr "zog die Augenbrauen hoch"
+
+#: ../../addon/morepokes/morepokes.php:28
+msgid "insult"
+msgstr "beleidigen"
+
+#: ../../addon/morepokes/morepokes.php:28
+msgid "insulted"
+msgstr "beleidigt"
+
+#: ../../addon/morepokes/morepokes.php:29
+msgid "praise"
+msgstr "loben"
+
+#: ../../addon/morepokes/morepokes.php:29
+msgid "praised"
+msgstr "gelobt"
+
+#: ../../addon/morepokes/morepokes.php:30
+msgid "be dubious of"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:30
+msgid "was dubious of"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:31
+msgid "eat"
+msgstr "essen"
+
+#: ../../addon/morepokes/morepokes.php:31
+msgid "ate"
+msgstr "aß"
+
+#: ../../addon/morepokes/morepokes.php:32
+msgid "giggle and fawn at"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:32
+msgid "giggled and fawned at"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:33
+msgid "doubt"
+msgstr "anzweifeln"
+
+#: ../../addon/morepokes/morepokes.php:33
+msgid "doubted"
+msgstr "angezweifelt"
+
+#: ../../addon/morepokes/morepokes.php:34
+msgid "glare"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:34
+msgid "glared at"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:35
+msgid "fuck"
+msgstr "ficken"
+
+#: ../../addon/morepokes/morepokes.php:35
+msgid "fucked"
+msgstr "gefickt"
+
+#: ../../addon/morepokes/morepokes.php:36
+msgid "bonk"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:36
+msgid "bonked"
+msgstr ""
+
+#: ../../addon/morepokes/morepokes.php:37
+msgid "declare undying love for"
+msgstr "erkläre unsterbliche Liebe"
+
+#: ../../addon/morepokes/morepokes.php:37
+msgid "declared undying love for"
+msgstr "erklärte unsterbliche Liebe"
+
+#: ../../addon/diaspora/diaspora.php:778
+msgid "Diaspora Protocol Settings updated."
+msgstr "Diaspora Protokoll Einstellungen aktualisiert"
+
+#: ../../addon/diaspora/diaspora.php:797
+msgid ""
+"The Diaspora protocol does not support location independence. Connections "
+"you make within that network may be unreachable from alternate channel "
+"locations."
+msgstr "Das Diaspora-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein."
+
+#: ../../addon/diaspora/diaspora.php:800
+msgid "Enable the Diaspora protocol for this channel"
+msgstr "Das Diaspora Protokoll für diesen Kanal aktivieren"
+
+#: ../../addon/diaspora/diaspora.php:804
+msgid "Allow any Diaspora member to comment on your public posts"
+msgstr "Erlaube jedem Diaspora Nutzer deine öffentlichen Beiträge zu kommentieren"
+
+#: ../../addon/diaspora/diaspora.php:808
+msgid "Prevent your hashtags from being redirected to other sites"
+msgstr "Verhindern, dass Deine Hashtags zu anderen Seiten umgeleitet werden"
+
+#: ../../addon/diaspora/diaspora.php:812
+msgid ""
+"Sign and forward posts and comments with no existing Diaspora signature"
+msgstr "Signieren und Weiterleiten von Beiträgen und Kommentaren ohne vorhandene Diaspora-Signatur"
+
+#: ../../addon/diaspora/diaspora.php:817
+msgid "Followed hashtags (comma separated, do not include the #)"
+msgstr "Verfolgte Hashtags (Komma separierte Liste, ohne die #)"
+
+#: ../../addon/diaspora/diaspora.php:822
+msgid "Diaspora Protocol Settings"
+msgstr "Diaspora Protokoll Einstellungen"
+
+#: ../../addon/diaspora/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "Es wurde kein Nutzername in der importierten Datei gefunden."
+
+#: ../../addon/diaspora/import_diaspora.php:41 ../../include/import.php:62
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."
+
+#: ../../addon/testdrive/testdrive.php:104
+#, php-format
+msgid "Your account on %s will expire in a few days."
+msgstr "Dein Konto auf %s wird in ein paar Tagen ablaufen."
+
+#: ../../addon/testdrive/testdrive.php:105
+msgid "Your $Productname test account is about to expire."
+msgstr "Dein $Productname Test-Konto wird bald auslaufen."
+
+#: ../../addon/rainbowtag/rainbowtag.php:81
+msgid "Enable Rainbowtag"
+msgstr "Rainbowtag aktivieren"
+
+#: ../../addon/rainbowtag/rainbowtag.php:85
+msgid "Rainbowtag Settings"
+msgstr "Rainbowtag-Einstellungen"
+
+#: ../../addon/rainbowtag/rainbowtag.php:101
+msgid "Rainbowtag Settings saved."
+msgstr "Rainbowtag-Einstellungen gespeichert."
+
+#: ../../addon/upload_limits/upload_limits.php:25
+msgid "Show Upload Limits"
+msgstr "Hochladebeschränkungen anzeigen"
+
+#: ../../addon/upload_limits/upload_limits.php:27
+msgid "Hubzilla configured maximum size: "
+msgstr "Die in Hubzilla eingestellte maximale Größe:"
+
+#: ../../addon/upload_limits/upload_limits.php:28
+msgid "PHP upload_max_filesize: "
+msgstr "PHP upload_max_filesize:"
+
+#: ../../addon/upload_limits/upload_limits.php:29
+msgid "PHP post_max_size (must be larger than upload_max_filesize): "
+msgstr "PHP post_max_size (muss größer sein als upload_max_filesize):"
+
+#: ../../addon/gravatar/gravatar.php:123
+msgid "generic profile image"
+msgstr "generisches Profilbild"
+
+#: ../../addon/gravatar/gravatar.php:124
+msgid "random geometric pattern"
+msgstr "zufälliges geometrisches Muster"
+
+#: ../../addon/gravatar/gravatar.php:125
+msgid "monster face"
+msgstr "Monstergesicht"
+
+#: ../../addon/gravatar/gravatar.php:126
+msgid "computer generated face"
+msgstr "computergeneriertes Gesicht"
+
+#: ../../addon/gravatar/gravatar.php:127
+msgid "retro arcade style face"
+msgstr ""
+
+#: ../../addon/gravatar/gravatar.php:128
+msgid "Hub default profile photo"
+msgstr "Standard-Profilfoto für diesen Hub"
+
+#: ../../addon/gravatar/gravatar.php:143
+msgid "Information"
+msgstr "Information"
+
+#: ../../addon/gravatar/gravatar.php:143
+msgid ""
+"Libravatar addon is installed, too. Please disable Libravatar addon or this "
+"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
+"nothing was found at Libravatar."
+msgstr ""
+
+#: ../../addon/gravatar/gravatar.php:150
+#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:91
+msgid "Save Settings"
+msgstr "Einstellungen speichern"
+
+#: ../../addon/gravatar/gravatar.php:151
+msgid "Default avatar image"
+msgstr "Standard-Avatarbild"
+
+#: ../../addon/gravatar/gravatar.php:151
+msgid "Select default avatar image if none was found at Gravatar. See README"
+msgstr ""
+
+#: ../../addon/gravatar/gravatar.php:152
+msgid "Rating of images"
+msgstr "Bewertungen der Bilder"
+
+#: ../../addon/gravatar/gravatar.php:152
+msgid "Select the appropriate avatar rating for your site. See README"
+msgstr ""
+
+#: ../../addon/gravatar/gravatar.php:165
+msgid "Gravatar settings updated."
+msgstr "Gravatar-Einstellungen aktualisiert."
+
+#: ../../addon/hzfiles/hzfiles.php:79
+msgid "Hubzilla File Storage Import"
+msgstr "Hubzilla-Datenspeicher-Import"
+
+#: ../../addon/hzfiles/hzfiles.php:80
+msgid "This will import all your cloud files from another server."
+msgstr "Hiermit werden alle Deine Cloud-Dateien von einem anderen Server importiert."
+
+#: ../../addon/hzfiles/hzfiles.php:81
+msgid "Hubzilla Server base URL"
+msgstr "Basis-URL des Habzilla-Servers"
+
+#: ../../addon/hzfiles/hzfiles.php:82
+msgid "Since modified date yyyy-mm-dd"
+msgstr ""
+
+#: ../../addon/hzfiles/hzfiles.php:83
+msgid "Until modified date yyyy-mm-dd"
+msgstr ""
+
+#: ../../addon/visage/visage.php:93
+msgid "Recent Channel/Profile Viewers"
+msgstr "Kürzliche Kanal/Profil Besucher"
+
+#: ../../addon/visage/visage.php:98
+msgid "This plugin/addon has not been configured."
+msgstr "Dieses Plugin/Addon wurde noch nicht konfiguriert."
+
+#: ../../addon/visage/visage.php:99
+#, php-format
+msgid "Please visit the Visage settings on %s"
+msgstr "Bitte rufe die Visage Einstellungen auf %s auf"
+
+#: ../../addon/visage/visage.php:99
+msgid "your feature settings page"
+msgstr "Die Funktions-Einstellungsseite"
+
+#: ../../addon/visage/visage.php:112
+msgid "No entries."
+msgstr "Keine Einträge."
+
+#: ../../addon/visage/visage.php:166
+msgid "Enable Visage Visitor Logging"
+msgstr "Aktiviere das Visage-Besucher Logging"
+
+#: ../../addon/visage/visage.php:170
+msgid "Visage Settings"
+msgstr "Visage-Einstellungen"
+
+#: ../../addon/nsabait/nsabait.php:125
+msgid "Nsabait Settings updated."
+msgstr "Nsabait-Einstellungen aktualisiert."
+
+#: ../../addon/nsabait/nsabait.php:157
+msgid "Enable NSAbait Plugin"
+msgstr "Aktiviere das NSAbait Plugin"
+
+#: ../../addon/nsabait/nsabait.php:161
+msgid "NSAbait Settings"
+msgstr "NSAbait-Einstellungen"
+
+#: ../../addon/mailtest/mailtest.php:19
+msgid "Send test email"
+msgstr "Test-E-Mail senden"
+
+#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50
+msgid "No recipients found."
+msgstr "Keine Empfänger gefunden."
+
+#: ../../addon/mailtest/mailtest.php:66
+msgid "Mail sent."
+msgstr "Mail gesendet."
+
+#: ../../addon/mailtest/mailtest.php:68
+msgid "Sending of mail failed."
+msgstr "Senden der E-Mail fehlgeschlagen."
+
+#: ../../addon/mailtest/mailtest.php:77
+msgid "Mail Test"
+msgstr "Mail Test"
+
+#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92
+msgid "Message subject"
+msgstr "Betreff der Nachricht"
+
+#: ../../addon/mdpost/mdpost.php:41
+msgid "Use markdown for editing posts"
+msgstr "Verwende Markdown zum Bearbeiten von Beiträgen"
+
+#: ../../addon/openstreetmap/openstreetmap.php:146
+msgid "View Larger"
+msgstr "Größer anzeigen"
+
+#: ../../addon/openstreetmap/openstreetmap.php:169
+msgid "Tile Server URL"
+msgstr "Kachelserver-URL"
+
+#: ../../addon/openstreetmap/openstreetmap.php:169
+msgid ""
+"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" "
+"target=\"_blank\">public tile servers</a>"
+msgstr "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Kachelserver</a>"
+
+#: ../../addon/openstreetmap/openstreetmap.php:170
+msgid "Nominatim (reverse geocoding) Server URL"
+msgstr "Nominatim (reverse Geokodierung) Server URL"
+
+#: ../../addon/openstreetmap/openstreetmap.php:170
+msgid ""
+"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" "
+"target=\"_blank\">Nominatim servers</a>"
+msgstr "Eine Liste der <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim Server</a>"
+
+#: ../../addon/openstreetmap/openstreetmap.php:171
+msgid "Default zoom"
+msgstr "Standardzoom"
+
+#: ../../addon/openstreetmap/openstreetmap.php:171
+msgid ""
+"The default zoom level. (1:world, 18:highest, also depends on tile server)"
+msgstr "Die Standard-Vergrößerungsstufe (1:Welt, 18:höchste, hängt außerdem vom Kachelserver ab)."
+
+#: ../../addon/openstreetmap/openstreetmap.php:172
+msgid "Include marker on map"
+msgstr "Markierung auf der Karte einschließen"
+
+#: ../../addon/openstreetmap/openstreetmap.php:172
+msgid "Include a marker on the map."
+msgstr "Binde eine Markierung auf der Karte ein."
+
+#: ../../addon/msgfooter/msgfooter.php:47
+msgid "text to include in all outgoing posts from this site"
+msgstr "Test der in alle Beiträge angefügt werden soll, die von dieser Seite ausgehen"
+
+#: ../../addon/rtof/rtof.php:45
+msgid "Post to Friendica"
+msgstr "Bei Friendica veröffentlichen"
+
+#: ../../addon/rtof/rtof.php:62
+msgid "rtof Settings saved."
+msgstr "rtof-Einstellungen gespeichert."
+
+#: ../../addon/rtof/rtof.php:81
+msgid "Allow posting to Friendica"
+msgstr "Erlaube die Veröffentlichung bei Friendica"
+
+#: ../../addon/rtof/rtof.php:85
+msgid "Send public postings to Friendica by default"
+msgstr "Standardmäßig öffentliche Beiträge bei Friendica veröffentlichen"
+
+#: ../../addon/rtof/rtof.php:89
+msgid "Friendica API Path"
+msgstr "Friendica-API-Pfad"
+
+#: ../../addon/rtof/rtof.php:89 ../../addon/redred/redred.php:103
+msgid "https://{sitename}/api"
+msgstr "https://{sitename}/api"
+
+#: ../../addon/rtof/rtof.php:93
+msgid "Friendica login name"
+msgstr "Friendica-Anmeldename"
+
+#: ../../addon/rtof/rtof.php:97
+msgid "Friendica password"
+msgstr "Friendica-Passwort"
+
+#: ../../addon/rtof/rtof.php:101
+msgid "Hubzilla to Friendica Post Settings"
+msgstr "Hubzilla-zu-Friendica Beitragseinstellungen"
+
+#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1397
+#: ../../include/channel.php:1568
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../addon/jappixmini/jappixmini.php:309
+msgid "Activate addon"
+msgstr "Addon aktiviren"
+
+#: ../../addon/jappixmini/jappixmini.php:313
+msgid "Hide Jappixmini Chat-Widget from the webinterface"
+msgstr "Jappix Mini Chat-Widget von der Weboberfläche verbergen"
+
+#: ../../addon/jappixmini/jappixmini.php:318
+msgid "Jabber username"
+msgstr "Jabber-Benutzername"
+
+#: ../../addon/jappixmini/jappixmini.php:324
+msgid "Jabber server"
+msgstr "Jabber-Server"
+
+#: ../../addon/jappixmini/jappixmini.php:330
+msgid "Jabber BOSH host URL"
+msgstr "Jabber BOSH Host URL"
+
+#: ../../addon/jappixmini/jappixmini.php:337
+msgid "Jabber password"
+msgstr "Jabber-Passwort"
+
+#: ../../addon/jappixmini/jappixmini.php:343
+msgid "Encrypt Jabber password with Hubzilla password"
+msgstr "Jabber-Passwort mit Hubzilla-Passwort verschlüsseln"
+
+#: ../../addon/jappixmini/jappixmini.php:347 ../../addon/redred/redred.php:115
+msgid "Hubzilla password"
+msgstr "Hubzilla-Passwort"
+
+#: ../../addon/jappixmini/jappixmini.php:351
+#: ../../addon/jappixmini/jappixmini.php:355
+msgid "Approve subscription requests from Hubzilla contacts automatically"
+msgstr "Verbindungsanfragen von Hubzilla-Kontakten automatisch annehmen"
+
+#: ../../addon/jappixmini/jappixmini.php:359
+msgid "Purge internal list of jabber addresses of contacts"
+msgstr "Interne Liste der Jabber Adressen von Kontakten löschen"
+
+#: ../../addon/jappixmini/jappixmini.php:364
+msgid "Configuration Help"
+msgstr "Konfigurationshilfe"
+
+#: ../../addon/jappixmini/jappixmini.php:371
+msgid "Jappix Mini Settings"
+msgstr "Jappix Mini Einstellungen"
+
+#: ../../addon/superblock/superblock.php:112
+msgid "Currently blocked"
+msgstr "Derzeit blockiert"
+
+#: ../../addon/superblock/superblock.php:114
+msgid "No channels currently blocked"
+msgstr "Momentan sind keine Kanäle blockiert"
+
+#: ../../addon/superblock/superblock.php:120
+msgid "\"Superblock\" Settings"
+msgstr "\"Superblock\"-Einstellungen"
+
+#: ../../addon/superblock/superblock.php:345
+msgid "Block Completely"
+msgstr "Vollständig blockieren"
+
+#: ../../addon/superblock/superblock.php:394
+msgid "superblock settings updated"
+msgstr "Superblock Einstellungen aktualisiert"
+
+#: ../../addon/nofed/nofed.php:42
+msgid "Federate"
+msgstr "Beitrag verteilen"
+
+#: ../../addon/nofed/nofed.php:56
+msgid "nofed Settings saved."
+msgstr "nofed Einstellungen gespeichert"
+
+#: ../../addon/nofed/nofed.php:72
+msgid "Allow Federation Toggle"
+msgstr "Umschalter zur Beitragsverteilung bereitstellen"
+
+#: ../../addon/nofed/nofed.php:76
+msgid "Federate posts by default"
+msgstr "Beiträge standardmäßig verteilen"
+
+#: ../../addon/nofed/nofed.php:80
+msgid "NoFed Settings"
+msgstr "NoFed-Einstellungen"
+
+#: ../../addon/redred/redred.php:45
+msgid "Post to Red"
+msgstr ""
+
+#: ../../addon/redred/redred.php:60
+msgid "Channel is required."
+msgstr "Kanal ist erforderlich."
+
+#: ../../addon/redred/redred.php:76
+msgid "redred Settings saved."
+msgstr "redred-Einstellungen gespeichert."
+
+#: ../../addon/redred/redred.php:95
+msgid "Allow posting to another Hubzilla Channel"
+msgstr "Erlaube die Veröffentlichung in anderen Hubzilla Kanälen"
+
+#: ../../addon/redred/redred.php:99
+msgid "Send public postings to Hubzilla channel by default"
+msgstr ""
+
+#: ../../addon/redred/redred.php:103
+msgid "Hubzilla API Path"
+msgstr "Hubzilla-API-Pfad"
+
+#: ../../addon/redred/redred.php:107
+msgid "Hubzilla login name"
+msgstr "Hubzilla-Anmeldename"
+
+#: ../../addon/redred/redred.php:111
+msgid "Hubzilla channel name"
+msgstr "Hubzilla-Kanalname"
+
+#: ../../addon/redred/redred.php:119
+msgid "Hubzilla Crosspost Settings"
+msgstr "Hubzilla Crosspost Einstellungen"
+
+#: ../../addon/logrot/logrot.php:36
+msgid "Logfile archive directory"
+msgstr "Verzeichnis der Logdatei"
+
+#: ../../addon/logrot/logrot.php:36
+msgid "Directory to store rotated logs"
+msgstr "Verzeichnis, in dem rotierte Logs gespeichert werden sollen"
+
+#: ../../addon/logrot/logrot.php:37
+msgid "Logfile size in bytes before rotating"
+msgstr "zu erreichende Logdateigröße in Bytes, bevor rotiert wird"
+
+#: ../../addon/logrot/logrot.php:38
+msgid "Number of logfiles to retain"
+msgstr "Anzahl aufzubewahrender rotierter Logdateien"
+
+#: ../../addon/frphotos/frphotos.php:91
+msgid "Friendica Photo Album Import"
+msgstr "Friendica-Fotoalbumimport"
+
+#: ../../addon/frphotos/frphotos.php:92
+msgid "This will import all your Friendica photo albums to this Red channel."
+msgstr "Hiermit werden all deine Fotoalben von Friendica in diesen Hubzilla Kanal importiert."
+
+#: ../../addon/frphotos/frphotos.php:93
+msgid "Friendica Server base URL"
+msgstr "BasisURL des Friendica Servers"
+
+#: ../../addon/frphotos/frphotos.php:94
+msgid "Friendica Login Username"
+msgstr "Friendica-Anmeldebenutzername"
+
+#: ../../addon/frphotos/frphotos.php:95
+msgid "Friendica Login Password"
+msgstr "Friendica-Anmeldepasswort"
+
+#: ../../addon/pubcrawl/as.php:1101 ../../addon/pubcrawl/as.php:1228
+#: ../../addon/pubcrawl/as.php:1403 ../../include/network.php:1774
+msgid "ActivityPub"
+msgstr "ActivityPub"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1034
+msgid "ActivityPub Protocol Settings updated."
+msgstr "ActivityPub Protokoll Einstellungen aktualisiert"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1043
+msgid ""
+"The ActivityPub protocol does not support location independence. Connections"
+" you make within that network may be unreachable from alternate channel "
+"locations."
+msgstr ""
+
+#: ../../addon/pubcrawl/pubcrawl.php:1046
+msgid "Enable the ActivityPub protocol for this channel"
+msgstr "Aktiviere das ActivityPub Protokoll für diesen Kanal"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1049
+msgid "Send multi-media HTML articles"
+msgstr "Multimedia HTML Artikel versenden"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1049
+msgid "Not supported by some microblog services such as Mastodon"
+msgstr "Wird von einigen Microblogging-Plattformen wie Mastodon nicht unterstützt"
+
+#: ../../addon/pubcrawl/pubcrawl.php:1053
+msgid "ActivityPub Protocol Settings"
+msgstr "ActivityPub Protokoll Einstellungen"
+
+#: ../../addon/donate/donate.php:21
+msgid "Project Servers and Resources"
+msgstr "Projektserver und -ressourcen"
+
+#: ../../addon/donate/donate.php:22
+msgid "Project Creator and Tech Lead"
+msgstr "Projektersteller und Technischer Leiter"
+
+#: ../../addon/donate/donate.php:23
+msgid "Admin, developer, directorymin, support bloke"
+msgstr "Administrator, Entwickler, Verzeichnis Betreibender, Supportleistende"
+
+#: ../../addon/donate/donate.php:50
+msgid ""
+"And the hundreds of other people and organisations who helped make the "
+"Hubzilla possible."
+msgstr "Und die hunderte anderen Menschen und Organisationen, die geholfen haben Hubzilla möglich zu machen."
+
+#: ../../addon/donate/donate.php:53
+msgid ""
+"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving "
+"their time and expertise - and often paying out of pocket for services they "
+"share with others."
+msgstr "Die Redmatrix/Hubzilla Projekte werden hauptsächlich von Freiwilligen bereitgestellt, die ihre Zeit und Expertise zur Verfügung stellen - und oft aus eigener Tasche für die Dienste zahlen, die sie mit anderen teilen."
+
+#: ../../addon/donate/donate.php:54
+msgid ""
+"There is no corporate funding and no ads, and we do not collect and sell "
+"your personal information. (We don't control your personal information - "
+"<strong>you do</strong>.)"
+msgstr "Es gibt keine Finanzierung durch Firmen, keine Werbung und wir verkaufen Deine persönlichen Daten nicht. (Wir kontrollieren Deine persönlichen Daten nicht - <strong>das machst Du</strong>.)"
+
+#: ../../addon/donate/donate.php:55
+msgid ""
+"Help support our ground-breaking work in decentralisation, web identity, and"
+" privacy."
+msgstr "Hilf uns bei unserer wegweisenden Arbeit im Bereich der Dezantralisation, von Web-Identitäten und Privatsphäre."
+
+#: ../../addon/donate/donate.php:57
+msgid ""
+"Your donations keep servers and services running and also helps us to "
+"provide innovative new features and continued development."
+msgstr "Die Spenden werden dafür verwendet Server und Dienste am laufen zu halten und helfen desweiteren innovative Neuerungen zu schaffen und die Entwicklung voran zu treiben."
+
+#: ../../addon/donate/donate.php:60
+msgid "Donate"
+msgstr "Spenden"
+
+#: ../../addon/donate/donate.php:62
+msgid ""
+"Choose a project, developer, or public hub to support with a one-time "
+"donation"
+msgstr "Wähle ein Projekt, einen Entwickler oder einen öffentlichen Hub den du mit einer einmaligen Spende unterstützen willst."
+
+#: ../../addon/donate/donate.php:63
+msgid "Donate Now"
+msgstr "Jetzt spenden"
+
+#: ../../addon/donate/donate.php:64
+msgid ""
+"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project "
+"only)"
+msgstr "<strong><em>Oder</em></strong> werde ein Unterstützer des Projekts (ausschließlich Hubzilla)"
+
+#: ../../addon/donate/donate.php:65
+msgid ""
+"Please indicate if you would like your first name or full name (or nothing) "
+"to appear in our sponsor listing"
+msgstr "Bitte teile uns mit ob dein kompletter Name oder dein Vorname (oder gar nichts) auf unserer Sponsoren-Seite veröffentlicht werden soll."
+
+#: ../../addon/donate/donate.php:66
+msgid "Sponsor"
+msgstr "Sponsor"
+
+#: ../../addon/donate/donate.php:69
+msgid "Special thanks to: "
+msgstr "Besonderer Dank an: "
+
+#: ../../addon/chords/Mod_Chords.php:44
+msgid ""
+"This is a fairly comprehensive and complete guitar chord dictionary which "
+"will list most of the available ways to play a certain chord, starting from "
+"the base of the fingerboard up to a few frets beyond the twelfth fret "
+"(beyond which everything repeats). A couple of non-standard tunings are "
+"provided for the benefit of slide players, etc."
+msgstr ""
+
+#: ../../addon/chords/Mod_Chords.php:46
+msgid ""
+"Chord names start with a root note (A-G) and may include sharps (#) and "
+"flats (b). This software will parse most of the standard naming conventions "
+"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."
+msgstr ""
+
+#: ../../addon/chords/Mod_Chords.php:48
+msgid ""
+"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, "
+"E7b13b11 ..."
+msgstr "Einige gültige Beispiele: A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."
+
+#: ../../addon/chords/Mod_Chords.php:51
+msgid "Guitar Chords"
+msgstr "Gitarrenakkorde"
+
+#: ../../addon/chords/Mod_Chords.php:52
+msgid "The complete online chord dictionary"
+msgstr "Das komplette online Akkord-Verzeichnis"
+
+#: ../../addon/chords/Mod_Chords.php:57
+msgid "Tuning"
+msgstr "Stimmen"
+
+#: ../../addon/chords/Mod_Chords.php:58
+msgid "Chord name: example: Em7"
+msgstr "Beispiel Akkord Name: Em7"
+
+#: ../../addon/chords/Mod_Chords.php:59
+msgid "Show for left handed stringing"
+msgstr "Linkshänder-Besaitung anzeigen"
+
+#: ../../addon/chords/chords.php:33
+msgid "Quick Reference"
+msgstr "Schnellreferenz"
+
+#: ../../addon/libertree/libertree.php:38
+msgid "Post to Libertree"
+msgstr "Bei Libertree veröffentlichen"
+
+#: ../../addon/libertree/libertree.php:69
+msgid "Enable Libertree Post Plugin"
+msgstr "Aktivire das Libertree-Plugin"
+
+#: ../../addon/libertree/libertree.php:73
+msgid "Libertree API token"
+msgstr "Libertree API Token"
+
+#: ../../addon/libertree/libertree.php:77
+msgid "Libertree site URL"
+msgstr "URL der Libertree Seite"
+
+#: ../../addon/libertree/libertree.php:81
+msgid "Post to Libertree by default"
+msgstr "Standardmäßig bei Libertree veröffentlichen"
+
+#: ../../addon/libertree/libertree.php:85
+msgid "Libertree Post Settings"
+msgstr "Libertree-Beitragseinstellungen"
+
+#: ../../addon/libertree/libertree.php:99
+msgid "Libertree Settings saved."
+msgstr "Libertree-Einstellungen gespeichert."
+
+#: ../../addon/flattrwidget/flattrwidget.php:45
+msgid "Flattr this!"
+msgstr "Flattr this!"
+
+#: ../../addon/flattrwidget/flattrwidget.php:83
+msgid "Flattr widget settings updated."
+msgstr "Flattr Widget Einstellungen aktualisiert"
+
+#: ../../addon/flattrwidget/flattrwidget.php:100
+msgid "Flattr user"
+msgstr "Flattr Nutzer"
+
+#: ../../addon/flattrwidget/flattrwidget.php:104
+msgid "URL of the Thing to flattr"
+msgstr "URL des Dings zum flattrn"
+
+#: ../../addon/flattrwidget/flattrwidget.php:104
+msgid "If empty channel URL is used"
+msgstr "Falls leer wird die Channel URL verwendet"
+
+#: ../../addon/flattrwidget/flattrwidget.php:108
+msgid "Title of the Thing to flattr"
+msgstr "Titel des Dings zum flattrn"
+
+#: ../../addon/flattrwidget/flattrwidget.php:108
+msgid "If empty \"channel name on The Hubzilla\" will be used"
+msgstr "Falls leer wird \"Kanalname auf The Hubzilla\" verwendet"
+
+#: ../../addon/flattrwidget/flattrwidget.php:112
+msgid "Static or dynamic flattr button"
+msgstr "Statischer oder dynamischer Flattr Button"
+
+#: ../../addon/flattrwidget/flattrwidget.php:112
+msgid "static"
+msgstr "statisch"
+
+#: ../../addon/flattrwidget/flattrwidget.php:112
+msgid "dynamic"
+msgstr "dynamisch"
+
+#: ../../addon/flattrwidget/flattrwidget.php:116
+msgid "Alignment of the widget"
+msgstr "Ausrichtung des Widgets"
+
+#: ../../addon/flattrwidget/flattrwidget.php:116
+msgid "left"
+msgstr "links"
+
+#: ../../addon/flattrwidget/flattrwidget.php:116
+msgid "right"
+msgstr "rechts"
+
+#: ../../addon/flattrwidget/flattrwidget.php:120
+msgid "Enable Flattr widget"
+msgstr "Flattr Widget verwenden"
+
+#: ../../addon/flattrwidget/flattrwidget.php:124
+msgid "Flattr Widget Settings"
+msgstr "Flattr Widget Einstellungen"
+
+#: ../../addon/statusnet/statusnet.php:143
+msgid "Post to GNU social"
+msgstr "Bei GNU social veröffentlichen"
+
+#: ../../addon/statusnet/statusnet.php:195
+msgid ""
+"Please contact your site administrator.<br />The provided API URL is not "
+"valid."
+msgstr "Bitte kontaktiere den Administrator deines Hubs.<br />Die angegebene API URL ist nicht korrekt."
+
+#: ../../addon/statusnet/statusnet.php:232
+msgid "We could not contact the GNU social API with the Path you entered."
+msgstr "Mit dem angegebenen Pfad war es uns nicht möglich, die GNU social API zu erreichen."
+
+#: ../../addon/statusnet/statusnet.php:266
+msgid "GNU social settings updated."
+msgstr "GNU social Einstellungen aktualisiert."
+
+#: ../../addon/statusnet/statusnet.php:310
+msgid "Globally Available GNU social OAuthKeys"
+msgstr "Global verfügbare GNU social OAuthKeys"
+
+#: ../../addon/statusnet/statusnet.php:312
+msgid ""
+"There are preconfigured OAuth key pairs for some GNU social servers "
+"available. If you are using one of them, please use these credentials.<br "
+"/>If not feel free to connect to any other GNU social instance (see below)."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:327
+msgid "Provide your own OAuth Credentials"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:329
+msgid ""
+"No consumer key pair for GNU social found. Register your Hubzilla Account as"
+" an desktop client on your GNU social account, copy the consumer key pair "
+"here and enter the API base root.<br />Before you register your own OAuth "
+"key pair ask the administrator if there is already a key pair for this "
+"Hubzilla installation at your favourite GNU social installation."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:333
+msgid "OAuth Consumer Key"
+msgstr "OAuth Consumer Key"
+
+#: ../../addon/statusnet/statusnet.php:337
+msgid "OAuth Consumer Secret"
+msgstr "OAuth Consumer Secret"
+
+#: ../../addon/statusnet/statusnet.php:341
+msgid "Base API Path"
+msgstr "Basis Pfad der API"
+
+#: ../../addon/statusnet/statusnet.php:341
+msgid "Remember the trailing /"
+msgstr "Denke an das abschließende /"
+
+#: ../../addon/statusnet/statusnet.php:345
+msgid "GNU social application name"
+msgstr "GNU social Anwendungsname"
+
+#: ../../addon/statusnet/statusnet.php:368
+msgid ""
+"To connect to your GNU social account click the button below to get a "
+"security code from GNU social which you have to copy into the input box "
+"below and submit the form. Only your <strong>public</strong> posts will be "
+"posted to GNU social."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:370
+msgid "Log in with GNU social"
+msgstr "Mit GNU social anmelden"
+
+#: ../../addon/statusnet/statusnet.php:373
+msgid "Copy the security code from GNU social here"
+msgstr "Kopiere den Sicherheitscode von GNU social hier her"
+
+#: ../../addon/statusnet/statusnet.php:383
+msgid "Cancel Connection Process"
+msgstr "Verbindungsprozes abbrechen"
+
+#: ../../addon/statusnet/statusnet.php:385
+msgid "Current GNU social API is"
+msgstr "Aktuelle GNU social API ist"
+
+#: ../../addon/statusnet/statusnet.php:389
+msgid "Cancel GNU social Connection"
+msgstr "GNU social Verbindung trennen"
+
+#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:233
+msgid "Currently connected to: "
+msgstr "Momentan verbunden mit:"
+
+#: ../../addon/statusnet/statusnet.php:406
+msgid ""
+"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
+"details from unknown viewers?</em>) the link potentially included in public "
+"postings relayed to GNU social will lead the visitor to a blank page "
+"informing the visitor that the access to your profile has been restricted."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:411
+msgid "Allow posting to GNU social"
+msgstr "Erlaube die Veröffentlichung bei GNU social"
+
+#: ../../addon/statusnet/statusnet.php:411
+msgid ""
+"If enabled your public postings can be posted to the associated GNU-social "
+"account"
+msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen GNU social Konto veröffentlicht werden."
+
+#: ../../addon/statusnet/statusnet.php:415
+msgid "Post to GNU social by default"
+msgstr "Standardmäßig bei GNU social veröffentlichen"
+
+#: ../../addon/statusnet/statusnet.php:415
+msgid ""
+"If enabled your public postings will be posted to the associated GNU-social "
+"account by default"
+msgstr "Wenn aktiv werden all deine öffentlichen Beiträge standardmäßig bei dem verbundenen GNU social Konto veröffentlicht."
+
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:261
+msgid "Clear OAuth configuration"
+msgstr "OAuth Konfiguration löschen"
+
+#: ../../addon/statusnet/statusnet.php:432
+msgid "GNU social Post Settings"
+msgstr "GNU social Einstellungen"
+
+#: ../../addon/statusnet/statusnet.php:892
+msgid "API URL"
+msgstr "API-URL"
+
+#: ../../addon/statusnet/statusnet.php:895
+msgid "Application name"
+msgstr "Anwendungsname"
+
+#: ../../addon/qrator/qrator.php:48
+msgid "QR code"
+msgstr "QR-Code"
+
+#: ../../addon/qrator/qrator.php:63
+msgid "QR Generator"
+msgstr "QR-Generator"
+
+#: ../../addon/qrator/qrator.php:64
+msgid "Enter some text"
+msgstr "Etwas Text eingeben"
+
+#: ../../addon/chess/chess.php:353 ../../addon/chess/chess.php:542
+msgid "Invalid game."
+msgstr "Ungültiges Spiel."
+
+#: ../../addon/chess/chess.php:359 ../../addon/chess/chess.php:582
+msgid "You are not a player in this game."
+msgstr "Sie sind kein Spieler in diesem Spiel."
+
+#: ../../addon/chess/chess.php:415
+msgid "You must be a local channel to create a game."
+msgstr "Um ein Spiel zu eröffnen, musst du ein lokaler Kanal sein"
+
+#: ../../addon/chess/chess.php:433
+msgid "You must select one opponent that is not yourself."
+msgstr "Du musst einen Gegner wählen, der nicht du selbst ist"
+
+#: ../../addon/chess/chess.php:444
+msgid "Random color chosen."
+msgstr ""
+
+#: ../../addon/chess/chess.php:452
+msgid "Error creating new game."
+msgstr "Fehler beim Erstellen eines neuen Spiels."
+
+#: ../../addon/chess/chess.php:486 ../../include/channel.php:1152
+msgid "Requested channel is not available."
+msgstr "Angeforderter Kanal nicht verfügbar."
+
+#: ../../addon/chess/chess.php:500
+msgid "You must select a local channel /chess/channelname"
+msgstr "Du musst einen lokalen Kanal/Schach(Kanalnamen aufwählen"
+
+#: ../../addon/chess/chess.php:1066
+msgid "Enable notifications"
+msgstr "Benachrichtigungen aktivieren"
+
+#: ../../addon/twitter/twitter.php:99
+msgid "Post to Twitter"
+msgstr "Bei Twitter veröffentlichen"
+
+#: ../../addon/twitter/twitter.php:155
+msgid "Twitter settings updated."
+msgstr "Twitter-Einstellungen aktualisiert."
+
+#: ../../addon/twitter/twitter.php:184
+msgid ""
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr "Es wurde kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte kontaktiere deinen Seiten-Administrator."
+
+#: ../../addon/twitter/twitter.php:206
+msgid ""
+"At this Hubzilla instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input"
+" box below and submit the form. Only your <strong>public</strong> posts will"
+" be posted to Twitter."
+msgstr "Auf diesem Hubzilla-Server ist das Twitter-Plugin aktiviert, aber Du hast Dich hier noch nicht mit Deinem Twitter-Konto verbunden. Um dies zu tun, klicke die Schaltfläche unten, um eine PIN von Twitter zu erhalten, die Du dann in das Eingabefeld darunter einfügen und das Formular bestätigen musst. Nur Deine <strong>öffentlichen</strong> Beiträge werden auf Twitter geteilt."
+
+#: ../../addon/twitter/twitter.php:208
+msgid "Log in with Twitter"
+msgstr "Mit Twitter anmelden"
+
+#: ../../addon/twitter/twitter.php:211
+msgid "Copy the PIN from Twitter here"
+msgstr "PIN von Twitter hier her kopieren"
+
+#: ../../addon/twitter/twitter.php:238
+msgid ""
+"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
+"details from unknown viewers?</em>) the link potentially included in public "
+"postings relayed to Twitter will lead the visitor to a blank page informing "
+"the visitor that the access to your profile has been restricted."
+msgstr "<strong>Hinweis:</strong> Entsprechend Deiner Privatsphären-Einstellungen (<em>Profil-Details vor nicht angemeldeten Besuchern verbergen?</em>) kann ein ggf. zu Twitter geteilter Link Besucher auf eine leere Seite führen, die darüber informiert, dass der Zugriff zu Deinem Profil eingeschränkt ist."
+
+#: ../../addon/twitter/twitter.php:243
+msgid "Allow posting to Twitter"
+msgstr "Erlaube die Veröffentlichung bei Twitter"
+
+#: ../../addon/twitter/twitter.php:243
+msgid ""
+"If enabled your public postings can be posted to the associated Twitter "
+"account"
+msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Konto veröffentlicht werden."
+
+#: ../../addon/twitter/twitter.php:247
+msgid "Twitter post length"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:247
+msgid "Maximum tweet length"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:252
+msgid "Send public postings to Twitter by default"
+msgstr "Standardmäßig öffentliche Beiträge bei Twitter veröffentlichen"
+
+#: ../../addon/twitter/twitter.php:252
+msgid ""
+"If enabled your public postings will be posted to the associated Twitter "
+"account by default"
+msgstr "Wenn aktiv werden deine öffentlichen Beiträge bei dem verbundenen Twitter Konto veröffentlicht werden."
+
+#: ../../addon/twitter/twitter.php:270
+msgid "Twitter Post Settings"
+msgstr "Twitter-Beitragseinstellungen"
+
+#: ../../addon/smileybutton/smileybutton.php:211
+msgid "Deactivate the feature"
+msgstr "Diese Funktion abschalten"
+
+#: ../../addon/smileybutton/smileybutton.php:215
+msgid "Hide the button and show the smilies directly."
+msgstr "Verstecke die Schaltfläche und zeige die Smilies direkt an."
+
+#: ../../addon/smileybutton/smileybutton.php:219
+msgid "Smileybutton Settings"
+msgstr "Smileyknopf-Einstellungen"
+
+#: ../../addon/piwik/piwik.php:85
+msgid ""
+"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> "
+"analytics tool."
+msgstr "Diese Website verwendet <a href='http://www.piwik.org'>Piwik</a>, um die Besucherzugriffe auszuwerten."
+
+#: ../../addon/piwik/piwik.php:88
+#, php-format
+msgid ""
+"If you do not want that your visits are logged this way you <a href='%s'>can"
+" set a cookie to prevent Piwik from tracking further visits of the site</a> "
+"(opt-out)."
+msgstr "Wenn Du nicht möchtest, dass Deine Besuche zu diesem Zweck gespeichert werden, kannst Du <a href='%s'>ein Cookie setzen, welches Piwik davon abhält, Deine weiteren Besuche auf dieser Website zu verfolgen</a> (Opt-out)."
+
+#: ../../addon/piwik/piwik.php:96
+msgid "Piwik Base URL"
+msgstr "Piwik Basis-URL"
+
+#: ../../addon/piwik/piwik.php:96
+msgid ""
+"Absolute path to your Piwik installation. (without protocol (http/s), with "
+"trailing slash)"
+msgstr "Der absolute Pfad zu Deiner Piwik-Installation (ohne Protokoll (http/s), aber mit abschließendem Schrägstrich / )."
+
+#: ../../addon/piwik/piwik.php:97
+msgid "Site ID"
+msgstr "Seitenkennung"
+
+#: ../../addon/piwik/piwik.php:98
+msgid "Show opt-out cookie link?"
+msgstr "Den Opt-out Cookie-Link anzeigen?"
+
+#: ../../addon/piwik/piwik.php:99
+msgid "Asynchronous tracking"
+msgstr "Asynchrones Tracking"
+
+#: ../../addon/piwik/piwik.php:100
+msgid "Enable frontend JavaScript error tracking"
+msgstr "Ermögliche Frontend-JavaScript-Fehlertracking"
+
+#: ../../addon/piwik/piwik.php:100
+msgid "This feature requires Piwik >= 2.2.0"
+msgstr "Diese Funktion erfordert Piwik >= 2.2.0"
+
+#: ../../addon/tour/tour.php:75
+msgid "Edit your profile and change settings."
+msgstr "Bearbeite dein Profil und ändere die Einstellungen."
+
+#: ../../addon/tour/tour.php:76
+msgid "Click here to see activity from your connections."
+msgstr "Klicke hier, um die Aktivitäten Deiner Verbindungen zu sehen."
+
+#: ../../addon/tour/tour.php:77
+msgid "Click here to see your channel home."
+msgstr "Klicke hier, um Deine Kanal-Hauptseite zu sehen."
+
+#: ../../addon/tour/tour.php:78
+msgid "You can access your private messages from here."
+msgstr "Hierüber kannst Du auf Deine privaten Nachrichten zugreifen."
+
+#: ../../addon/tour/tour.php:79
+msgid "Create new events here."
+msgstr "Neue Termine hier erstellen"
+
+#: ../../addon/tour/tour.php:80
+msgid ""
+"You can accept new connections and change permissions for existing ones "
+"here. You can also e.g. create groups of contacts."
+msgstr "Du kannst hier neue Verbindungen akzeptieren sowie die Einstellungen bereits vorhandener Vebindungen bearbeiten. Außerdem kannst Du Verbindungen in Gruppen zusammenfassen."
+
+#: ../../addon/tour/tour.php:81
+msgid "System notifications will arrive here"
+msgstr "Systembenachrichtigungen werden hier eintreffen"
+
+#: ../../addon/tour/tour.php:82
+msgid "Search for content and users"
+msgstr "Nach Inhalt von Benutzern suchen"
+
+#: ../../addon/tour/tour.php:83
+msgid "Browse for new contacts"
+msgstr "Schaue nach möglichen neuen Verbindungen."
+
+#: ../../addon/tour/tour.php:84
+msgid "Launch installed apps"
+msgstr "Installierte Apps starten"
+
+#: ../../addon/tour/tour.php:85
+msgid "Looking for help? Click here."
+msgstr "Du benötigst Hilfe? Klicke hier."
+
+#: ../../addon/tour/tour.php:86
+msgid ""
+"New events have occurred in your network. Click here to see what has "
+"happened!"
+msgstr "In Deinem Netzwerk gibt es neue Ereignisse. Klicke hier, um zu sehen, was passiert ist!"
+
+#: ../../addon/tour/tour.php:87
+msgid "You have received a new private message. Click here to see from who!"
+msgstr "Du hast eine neue private Nachricht erhalten. Klicke hier, um zu sehen, von wem!"
+
+#: ../../addon/tour/tour.php:88
+msgid "There are events this week. Click here too see which!"
+msgstr "Es gibt neue Termine diese Woche. Klicke hier, um zu sehen, welche!"
+
+#: ../../addon/tour/tour.php:89
+msgid "You have received a new introduction. Click here to see who!"
+msgstr "Du hast eine neue Verbindungsanfrage erhalten. Klicke hier, um zu sehen, wer es ist!"
+
+#: ../../addon/tour/tour.php:90
+msgid ""
+"There is a new system notification. Click here to see what has happened!"
+msgstr "Es gibt eine neue Systembenachrichtigung. Klicke hier, um zu sehen, was passiert ist!"
+
+#: ../../addon/tour/tour.php:93
+msgid "Click here to share text, images, videos and sound."
+msgstr "Klicke hier, um Texte, Bilder, Videos und Klänge zu teilen."
+
+#: ../../addon/tour/tour.php:94
+msgid "You can write an optional title for your update (good for long posts)."
+msgstr "Du kannst Deinem Beitrag einen optionalen Titel geben (gut für lange Beiträge)."
+
+#: ../../addon/tour/tour.php:95
+msgid "Entering some categories here makes it easier to find your post later."
+msgstr "Ein paar Kategorien hier einzugeben, macht es leichter, Deinen Beitrag später wiederzufinden."
+
+#: ../../addon/tour/tour.php:96
+msgid "Share photos, links, location, etc."
+msgstr "Teile Photos, Links, Standort, usw."
+
+#: ../../addon/tour/tour.php:97
+msgid ""
+"Only want to share content for a while? Make it expire at a certain date."
+msgstr "Du möchtest diesen Inhalt nur für eine Weile teilen? Dann lass ihn zu einem bestimmten Datum ablaufen."
+
+#: ../../addon/tour/tour.php:98
+msgid "You can password protect content."
+msgstr "Du kannst Inhalte mit einem Passwort schützen."
+
+#: ../../addon/tour/tour.php:99
+msgid "Choose who you share with."
+msgstr "Wähle aus, mit wem Du teilen möchtest."
+
+#: ../../addon/tour/tour.php:101
+msgid "Click here when you are done."
+msgstr "Klicke hier, wenn Du fertig bist."
+
+#: ../../addon/tour/tour.php:104
+msgid "Adjust from which channels posts should be displayed."
+msgstr "Lege fest, von welchen Kanälen Beiträge angezeigt werden sollen."
+
+#: ../../addon/tour/tour.php:105
+msgid "Only show posts from channels in the specified privacy group."
+msgstr "Zeige nur Beträge von Kanälen, die in einer bestimmten Gruppe sind."
+
+#: ../../addon/tour/tour.php:109
+msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)."
+msgstr "Finde Beiträge, die bestimmte Tags enthalten (Stichworte, die mit dem \"#\"-Symbol beginnen)."
+
+#: ../../addon/tour/tour.php:110
+msgid "Easily find posts in given category."
+msgstr "Finde Beiträge in bestimmten Kategorien."
+
+#: ../../addon/tour/tour.php:111
+msgid "Easily find posts by date."
+msgstr "Finde Beiträge anhand des Datums."
+
+#: ../../addon/tour/tour.php:112
+msgid ""
+"Suggested users who have volounteered to be shown as suggestions, and who we"
+" think you might find interesting."
+msgstr "Vorgeschlagene Kanäle, die in ihren Einstellungen zugestimmt haben, als Vorschläge angezeigt zu werden, und die Du eventuell interessant finden könntest."
+
+#: ../../addon/tour/tour.php:113
+msgid "Here you see channels you have connected to."
+msgstr "Hier siehst du die Kanäle, mit denen Du verbunden bist."
+
+#: ../../addon/tour/tour.php:114
+msgid "Save your search so you can repeat it at a later date."
+msgstr "Speichere Deine Suche, so dass Du sie später leicht erneut durchführen kannst."
+
+#: ../../addon/tour/tour.php:117
+msgid ""
+"If you see this icon you can be sure that the sender is who it say it is. It"
+" is normal that it is not always possible to verify the sender, so the icon "
+"will be missing sometimes. There is usually no need to worry about that."
+msgstr "Wenn Du dieses Symbol siehst, kannst Du weitgehend sicher sein, dass der Ansender dem angegebenen entspricht. Nicht immer ist es möglich, den Absender zu verifizieren, daher fehlt das Symbol mitunter. Das ist aber in der Regel kein Grund zur Sorge."
+
+#: ../../addon/tour/tour.php:118
+msgid ""
+"Danger! It seems someone tried to forge a message! This message is not "
+"necessarily from who it says it is from!"
+msgstr "Vorsicht! Es kann sein, dass jemand versucht, eine Nachricht zu fälschen! Diese Nachricht muss nicht unbedingt vom angegebenen Absender stammen!"
+
+#: ../../addon/tour/tour.php:125
+msgid ""
+"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can "
+"pause it at any time and continue where you left off by reloading the page, "
+"or navigting to another page.</p><p>You can also advance by pressing the "
+"return key"
+msgstr "Willkommen zu Hubzilla! Möchtest Du eine Tour der Benutzeroberfläche angezeigt bekommen?</p><p>Du kannst zu jeder Zeit pausieren und fortsetzen, wo Du aufgehört hast, indem Du die Seite neu lädtst, oder zu einer anderen Seite springst.</p><p>Du kannst auc durch das Drücken der Enter-Taste weitergehen."
+
+#: ../../addon/sendzid/sendzid.php:25
+msgid "Extended Identity Sharing"
+msgstr "Erweitertes Teilen von Identitäten"
+
+#: ../../addon/sendzid/sendzid.php:26
+msgid ""
+"Share your identity with all websites on the internet. When disabled, "
+"identity is only shared with $Projectname sites."
+msgstr "Teile Deine Identität mit allen Webseiten im Internet. Ist dies deaktiviert, wird Deine Identität nur mit $Projectname - Servern geteilt."
+
+#: ../../addon/tictac/tictac.php:21
+msgid "Three Dimensional Tic-Tac-Toe"
+msgstr "Dreidimensionales Tic-Tac-Toe"
+
+#: ../../addon/tictac/tictac.php:54
+msgid "3D Tic-Tac-Toe"
+msgstr "3D Tic-Tac-Toe"
+
+#: ../../addon/tictac/tictac.php:59
+msgid "New game"
+msgstr "Neues Spiel"
+
+#: ../../addon/tictac/tictac.php:60
+msgid "New game with handicap"
+msgstr "Neues Handicaü-Spiel"
+
+#: ../../addon/tictac/tictac.php:61
+msgid ""
+"Three dimensional tic-tac-toe is just like the traditional game except that "
+"it is played on multiple levels simultaneously. "
+msgstr "3D Tic-Tac-Toe funktioniert wie das ursprüngliche Spiel, nur dass es auf mehreren Ebenen gleichzeitig gespielt wird."
+
+#: ../../addon/tictac/tictac.php:62
+msgid ""
+"In this case there are three levels. You win by getting three in a row on "
+"any level, as well as up, down, and diagonally across the different levels."
+msgstr "In diesem Fall sind es drei Ebenen. Du gewinnst, wenn es dir gelingt drei in einer Reihe auf einer beliebigen Ebene oder diagonal über die verschiedenen Ebenen hinweg zu erreichen."
+
+#: ../../addon/tictac/tictac.php:64
+msgid ""
+"The handicap game disables the center position on the middle level because "
+"the player claiming this square often has an unfair advantage."
+msgstr "Bei einem Handicap-Spiel wird die Position im Zentrum der mittleren Ebene gesperrt, da der Spieler der dieses Feld für sich beansprucht meist einen unfairen Vorteil hat."
+
+#: ../../addon/tictac/tictac.php:183
+msgid "You go first..."
+msgstr "Du darfst anfangen..."
+
+#: ../../addon/tictac/tictac.php:188
+msgid "I'm going first this time..."
+msgstr "Diesmal werde ich anfangen..."
+
+#: ../../addon/tictac/tictac.php:194
+msgid "You won!"
+msgstr "Sie haben gewonnen!"
+
+#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225
+msgid "\"Cat\" game!"
+msgstr "\"Katzen\"-Spiel!"
+
+#: ../../addon/tictac/tictac.php:223
+msgid "I won!"
+msgstr "Ich habe gewonnen!"
+
+#: ../../addon/pageheader/pageheader.php:43
+msgid "Message to display on every page on this server"
+msgstr "Nachricht, die auf jeder Seite dieses Servers angezeigt werden soll"
+
+#: ../../addon/pageheader/pageheader.php:48
+msgid "Pageheader Settings"
+msgstr "Nachrichtenkopf-Einstellungen"
+
+#: ../../addon/pageheader/pageheader.php:64
+msgid "pageheader Settings saved."
+msgstr "Nachrichtenkopf-Einstellungen gespeichert."
+
+#: ../../addon/authchoose/authchoose.php:67
+msgid "Only authenticate automatically to sites of your friends"
+msgstr "Authentifiziere Dich nur auf Seiten deiner Freunde automatisch"
+
+#: ../../addon/authchoose/authchoose.php:67
+msgid "By default you are automatically authenticated anywhere in the network"
+msgstr "Authentifiziere Dich standardmäßig bei allen Seiten im Netzwerk automatisch"
+
+#: ../../addon/authchoose/authchoose.php:71
+msgid "Authchoose Settings"
+msgstr "Einstellungen für automatische Authentifizierung"
+
+#: ../../addon/authchoose/authchoose.php:85
+msgid "Atuhchoose Settings updated."
+msgstr "Einstellungen für automatische Authentifizierung aktualisiert."
+
+#: ../../addon/moremoods/moremoods.php:19
+msgid "lonely"
+msgstr "einsam"
+
+#: ../../addon/moremoods/moremoods.php:20
+msgid "drunk"
+msgstr "betrunken"
+
+#: ../../addon/moremoods/moremoods.php:21
+msgid "horny"
+msgstr "geil"
+
+#: ../../addon/moremoods/moremoods.php:22
+msgid "stoned"
+msgstr "bekifft"
+
+#: ../../addon/moremoods/moremoods.php:23
+msgid "fucked up"
+msgstr "beschissen"
+
+#: ../../addon/moremoods/moremoods.php:24
+msgid "clusterfucked"
+msgstr "clusterfucked"
+
+#: ../../addon/moremoods/moremoods.php:25
+msgid "crazy"
+msgstr "verrückt"
+
+#: ../../addon/moremoods/moremoods.php:26
+msgid "hurt"
+msgstr "verletzt"
+
+#: ../../addon/moremoods/moremoods.php:27
+msgid "sleepy"
+msgstr "müde"
+
+#: ../../addon/moremoods/moremoods.php:28
+msgid "grumpy"
+msgstr "mürrisch"
+
+#: ../../addon/moremoods/moremoods.php:29
+msgid "high"
+msgstr "hoch"
+
+#: ../../addon/moremoods/moremoods.php:30
+msgid "semi-conscious"
+msgstr "halb bewusstlos"
+
+#: ../../addon/moremoods/moremoods.php:31
+msgid "in love"
+msgstr "verliebt"
+
+#: ../../addon/moremoods/moremoods.php:32
+msgid "in lust"
+msgstr ""
+
+#: ../../addon/moremoods/moremoods.php:33
+msgid "naked"
+msgstr "nackt"
+
+#: ../../addon/moremoods/moremoods.php:34
+msgid "stinky"
+msgstr "stinkend"
+
+#: ../../addon/moremoods/moremoods.php:35
+msgid "sweaty"
+msgstr "verschwitzt"
+
+#: ../../addon/moremoods/moremoods.php:36
+msgid "bleeding out"
+msgstr "blutend"
+
+#: ../../addon/moremoods/moremoods.php:37
+msgid "victorious"
+msgstr "siegreich"
+
+#: ../../addon/moremoods/moremoods.php:38
+msgid "defeated"
+msgstr "besiegt"
+
+#: ../../addon/moremoods/moremoods.php:39
+msgid "envious"
+msgstr "neidisch"
+
+#: ../../addon/moremoods/moremoods.php:40
+msgid "jealous"
+msgstr "eifersüchtig"
+
+#: ../../addon/xmpp/xmpp.php:31
+msgid "XMPP settings updated."
+msgstr "XMPP-Einstellungen aktualisiert."
+
+#: ../../addon/xmpp/xmpp.php:53
+msgid "Enable Chat"
+msgstr "Chat aktivieren"
+
+#: ../../addon/xmpp/xmpp.php:58
+msgid "Individual credentials"
+msgstr "Individuelle Anmeldedaten"
+
+#: ../../addon/xmpp/xmpp.php:64
+msgid "Jabber BOSH server"
+msgstr "Jabber BOSH Server"
+
+#: ../../addon/xmpp/xmpp.php:69
+msgid "XMPP Settings"
+msgstr "XMPP-Einstellungen"
+
+#: ../../addon/xmpp/xmpp.php:92
+msgid "Jabber BOSH host"
+msgstr "Jabber BOSH Host"
+
+#: ../../addon/xmpp/xmpp.php:93
+msgid "Use central userbase"
+msgstr "Zentrale Benutzerbasis verwenden"
+
+#: ../../addon/xmpp/xmpp.php:93
+msgid ""
+"If enabled, members will automatically login to an ejabberd server that has "
+"to be installed on this machine with synchronized credentials via the "
+"\"auth_ejabberd.php\" script."
+msgstr ""
+
+#: ../../addon/wholikesme/wholikesme.php:29
+msgid "Who likes me?"
+msgstr "Wer mag mich?"
+
+#: ../../addon/pumpio/pumpio.php:148
+msgid "You are now authenticated to pumpio."
+msgstr "Du bist nun bei pumpio authenzifiziert."
+
+#: ../../addon/pumpio/pumpio.php:149
+msgid "return to the featured settings page"
+msgstr ""
+
+#: ../../addon/pumpio/pumpio.php:163
+msgid "Post to Pump.io"
+msgstr "Bei pumpio veröffentlichen"
+
+#: ../../addon/pumpio/pumpio.php:198
+msgid "Pump.io servername"
+msgstr "Pump.io-Servername"
+
+#: ../../addon/pumpio/pumpio.php:198
+msgid "Without \"http://\" or \"https://\""
+msgstr "Ohne \"http://\" oder \"https://\""
+
+#: ../../addon/pumpio/pumpio.php:202
+msgid "Pump.io username"
+msgstr "Pump.io-Benutzername"
+
+#: ../../addon/pumpio/pumpio.php:202
+msgid "Without the servername"
+msgstr "Ohne dem Servernamen"
+
+#: ../../addon/pumpio/pumpio.php:213
+msgid "You are not authenticated to pumpio"
+msgstr "Du bist nicht bei pumpio authentifiziert."
+
+#: ../../addon/pumpio/pumpio.php:215
+msgid "(Re-)Authenticate your pump.io connection"
+msgstr "Deine pumpio Verbindung (erneut) authentifizieren"
+
+#: ../../addon/pumpio/pumpio.php:219
+msgid "Enable pump.io Post Plugin"
+msgstr "Aktiviere das pumpio-Plugin"
+
+#: ../../addon/pumpio/pumpio.php:223
+msgid "Post to pump.io by default"
+msgstr "Standardmäßig bei pumpio veröffentlichen"
+
+#: ../../addon/pumpio/pumpio.php:227
+msgid "Should posts be public"
+msgstr "Sollen die Beiträge öffentlich sein"
+
+#: ../../addon/pumpio/pumpio.php:231
+msgid "Mirror all public posts"
+msgstr "Öffentliche Beiträge spiegeln"
+
+#: ../../addon/pumpio/pumpio.php:237
+msgid "Pump.io Post Settings"
+msgstr "Pump.io-Beitragseinstellungen"
+
+#: ../../addon/pumpio/pumpio.php:266
+msgid "PumpIO Settings saved."
+msgstr "PumpIO-Einstellungen gespeichert."
+
+#: ../../addon/ldapauth/ldapauth.php:61
+msgid "An account has been created for you."
+msgstr "Ein Konto wurde für Sie erstellt."
+
+#: ../../addon/ldapauth/ldapauth.php:68
+msgid "Authentication successful but rejected: account creation is disabled."
+msgstr "Authentifizierung war erfolgreich, wurde aber abgewiesen! Das Anlegen von Konten wurde deaktiviert."
+
+#: ../../addon/opensearch/opensearch.php:26
+#, php-format
+msgctxt "opensearch"
+msgid "Search %1$s (%2$s)"
+msgstr "Suche %1$s (%2$s)"
+
+#: ../../addon/opensearch/opensearch.php:28
+msgctxt "opensearch"
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../addon/opensearch/opensearch.php:43
+msgid "Search $Projectname"
+msgstr "$Projectname suchen"
+
+#: ../../addon/redfiles/redfiles.php:119
+msgid "Redmatrix File Storage Import"
+msgstr ""
+
+#: ../../addon/redfiles/redfiles.php:120
+msgid "This will import all your Redmatrix cloud files to this channel."
+msgstr "Hiermit werden alle deine Daten aus der Redmatrix Cloud in diesen Kanal importiert."
+
+#: ../../addon/redfiles/redfilehelper.php:64
+msgid "file"
+msgstr "Datei"
+
+#: ../../addon/hubwall/hubwall.php:19
+msgid "Send email to all members"
+msgstr "E-Mail an alle Mitglieder senden"
+
+#: ../../addon/hubwall/hubwall.php:73
+#, php-format
+msgid "%1$d of %2$d messages sent."
+msgstr "%1$d von %2$d Nachrichten gesendet."
+
+#: ../../addon/hubwall/hubwall.php:81
+msgid "Send email to all hub members."
+msgstr "Eine E-Mail an alle Mitglieder dieses Hubs senden."
+
+#: ../../addon/hubwall/hubwall.php:93
+msgid "Sender Email address"
+msgstr "E-Mail Adresse des Absenders"
+
+#: ../../addon/hubwall/hubwall.php:94
+msgid "Test mode (only send to hub administrator)"
+msgstr "Test Modus (nur an Hub Administratoren senden)"
+
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Häufig"
+
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Stündlich"
+
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "Zwei Mal am Tag"
+
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Täglich"
+
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Wöchentlich"
+
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "Monatlich"
+
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Momentan männlich"
+
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Momentan weiblich"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Größtenteils männlich"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Größtenteils weiblich"
+
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transsexuell"
+
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Zwischengeschlechtlich"
+
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transsexuell"
+
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Zwitter"
+
+#: ../../include/selectors.php:49 ../../include/channel.php:1485
+msgid "Neuter"
+msgstr "Geschlechtslos"
+
+#: ../../include/selectors.php:49 ../../include/channel.php:1487
+msgid "Non-specific"
+msgstr "unklar"
+
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Unentschieden"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Männer"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Frauen"
+
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Schwul"
+
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbisch"
+
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Keine Bevorzugung"
+
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Bisexuell"
+
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autosexuell"
+
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Enthaltsam"
+
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Jungfräulich"
+
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Abweichend"
+
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fetisch"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Unmengen"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Sexlos"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Single"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Einsam"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Verfügbar"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "Nicht verfügbar"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Verguckt"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Verknallt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Lerne gerade jemanden kennen"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Treulos"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Sexabhängig"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Freunde/Begünstigte"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Lose"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Verlobt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Verheiratet"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Gewissermaßen verheiratet"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Partner"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Lebensgemeinschaft"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Informelle Ehe"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Glücklich"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "Nicht Ausschau haltend"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Swinger"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Betrogen"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Getrennt"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Labil"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Geschieden"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Gewissermaßen geschieden"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Verwitwet"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Ungewiss"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Es ist kompliziert"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "Interessiert mich nicht"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Frag mich mal"
+
+#: ../../include/conversation.php:169
+#, php-format
+msgid "likes %1$s's %2$s"
+msgstr "gefällt %1$ss %2$s"
+
+#: ../../include/conversation.php:172
+#, php-format
+msgid "doesn't like %1$s's %2$s"
+msgstr "missfällt %1$ss %2$s"
+
+#: ../../include/conversation.php:212
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s ist jetzt mit %2$s verbunden"
+
+#: ../../include/conversation.php:247
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s stupste %2$s an"
+
+#: ../../include/conversation.php:251 ../../include/text.php:1129
+#: ../../include/text.php:1133
+msgid "poked"
+msgstr "stupste"
+
+#: ../../include/conversation.php:736
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "%ss Profil auf %s ansehen"
+
+#: ../../include/conversation.php:756
+msgid "Categories:"
+msgstr "Kategorien:"
+
+#: ../../include/conversation.php:757
+msgid "Filed under:"
+msgstr "Gespeichert unter:"
+
+#: ../../include/conversation.php:783
+msgid "View in context"
+msgstr "Im Zusammenhang anschauen"
+
+#: ../../include/conversation.php:884
+msgid "remove"
+msgstr "lösche"
+
+#: ../../include/conversation.php:888
+msgid "Loading..."
+msgstr "Lädt ..."
+
+#: ../../include/conversation.php:889
+msgid "Delete Selected Items"
+msgstr "Lösche die ausgewählten Elemente"
+
+#: ../../include/conversation.php:932
+msgid "View Source"
+msgstr "Quelle anzeigen"
+
+#: ../../include/conversation.php:942
+msgid "Follow Thread"
+msgstr "Unterhaltung folgen"
+
+#: ../../include/conversation.php:951
+msgid "Unfollow Thread"
+msgstr "Unterhaltung nicht mehr folgen"
+
+#: ../../include/conversation.php:1042
+msgid "Activity/Posts"
+msgstr "Aktivitäten/Beiträge"
+
+#: ../../include/conversation.php:1062
+msgid "Edit Connection"
+msgstr "Verbindung bearbeiten"
+
+#: ../../include/conversation.php:1072
+msgid "Message"
+msgstr "Nachricht"
+
+#: ../../include/conversation.php:1206
+#, php-format
+msgid "%s likes this."
+msgstr "%s gefällt das."
+
+#: ../../include/conversation.php:1206
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s gefällt das nicht."
+
+#: ../../include/conversation.php:1210
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d Person</span> gefällt das."
+msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das."
+
+#: ../../include/conversation.php:1212
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d Person</span> gefällt das nicht."
+msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das nicht."
+
+#: ../../include/conversation.php:1218
+msgid "and"
+msgstr "und"
+
+#: ../../include/conversation.php:1221
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ""
+msgstr[1] ", und %d andere"
+
+#: ../../include/conversation.php:1222
+#, php-format
+msgid "%s like this."
+msgstr "%s gefällt das."
+
+#: ../../include/conversation.php:1222
+#, php-format
+msgid "%s don't like this."
+msgstr "%s gefällt das nicht."
+
+#: ../../include/conversation.php:1265
+msgid "Set your location"
+msgstr "Standort"
+
+#: ../../include/conversation.php:1266
+msgid "Clear browser location"
+msgstr "Browser-Standort löschen"
+
+#: ../../include/conversation.php:1314
+msgid "Tag term:"
+msgstr "Schlagwort:"
+
+#: ../../include/conversation.php:1315
+msgid "Where are you right now?"
+msgstr "Wo bist Du jetzt grade?"
+
+#: ../../include/conversation.php:1320
+msgid "Choose a different album..."
+msgstr "Wählen Sie ein anderes Album aus..."
+
+#: ../../include/conversation.php:1324
+msgid "Comments enabled"
+msgstr "Kommentare aktiviert"
+
+#: ../../include/conversation.php:1325
+msgid "Comments disabled"
+msgstr "Kommentare deaktiviert"
+
+#: ../../include/conversation.php:1372
+msgid "Page link name"
+msgstr "Link zur Seite"
+
+#: ../../include/conversation.php:1375
+msgid "Post as"
+msgstr "Veröffentlichen als"
+
+#: ../../include/conversation.php:1389
+msgid "Toggle voting"
+msgstr "Umfragewerkzeug aktivieren"
+
+#: ../../include/conversation.php:1392
+msgid "Disable comments"
+msgstr "Kommentare deaktivieren"
+
+#: ../../include/conversation.php:1393
+msgid "Toggle comments"
+msgstr "Kommentare umschalten"
+
+#: ../../include/conversation.php:1401
+msgid "Categories (optional, comma-separated list)"
+msgstr "Kategorien (optional, kommagetrennte Liste)"
+
+#: ../../include/conversation.php:1424
+msgid "Other networks and post services"
+msgstr "Andere Netzwerke und Platformen"
+
+#: ../../include/conversation.php:1430
+msgid "Set publish date"
+msgstr "Veröffentlichungsdatum festlegen"
+
+#: ../../include/conversation.php:1690
+msgid "Commented Order"
+msgstr "Neueste Kommentare"
+
+#: ../../include/conversation.php:1693
+msgid "Sort by Comment Date"
+msgstr "Nach Kommentardatum sortiert"
+
+#: ../../include/conversation.php:1697
+msgid "Posted Order"
+msgstr "Neueste Beiträge"
+
+#: ../../include/conversation.php:1700
+msgid "Sort by Post Date"
+msgstr "Nach Beitragsdatum sortiert"
+
+#: ../../include/conversation.php:1708
+msgid "Posts that mention or involve you"
+msgstr "Beiträge mit Beteiligung Deinerseits"
+
+#: ../../include/conversation.php:1717
+msgid "Activity Stream - by date"
+msgstr "Activity Stream – nach Datum sortiert"
+
+#: ../../include/conversation.php:1723
+msgid "Starred"
+msgstr "Markiert"
+
+#: ../../include/conversation.php:1726
+msgid "Favourite Posts"
+msgstr "Markierte Beiträge"
+
+#: ../../include/conversation.php:1733
+msgid "Spam"
+msgstr "Spam"
+
+#: ../../include/conversation.php:1736
+msgid "Posts flagged as SPAM"
+msgstr "Nachrichten, die als SPAM markiert wurden"
+
+#: ../../include/conversation.php:1811 ../../include/nav.php:381
+msgid "Status Messages and Posts"
+msgstr "Statusnachrichten und Beiträge"
+
+#: ../../include/conversation.php:1824 ../../include/nav.php:394
+msgid "Profile Details"
+msgstr "Profil-Details"
+
+#: ../../include/conversation.php:1834 ../../include/nav.php:404
+#: ../../include/photos.php:655
+msgid "Photo Albums"
+msgstr "Fotoalben"
+
+#: ../../include/conversation.php:1842 ../../include/nav.php:412
+msgid "Files and Storage"
+msgstr "Dateien und Speicher"
+
+#: ../../include/conversation.php:1879 ../../include/nav.php:447
+msgid "Bookmarks"
+msgstr "Lesezeichen"
+
+#: ../../include/conversation.php:1882 ../../include/nav.php:450
+msgid "Saved Bookmarks"
+msgstr "Gespeicherte Lesezeichen"
+
+#: ../../include/conversation.php:1893 ../../include/nav.php:461
+msgid "View Cards"
+msgstr "Karten anzeigen"
+
+#: ../../include/conversation.php:1901
+msgid "articles"
+msgstr "Artikel"
+
+#: ../../include/conversation.php:1904 ../../include/nav.php:472
+msgid "View Articles"
+msgstr "Artikel anzeigen"
+
+#: ../../include/conversation.php:1915 ../../include/nav.php:484
+msgid "View Webpages"
+msgstr "Webseiten anzeigen"
+
+#: ../../include/conversation.php:1984
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Zusage"
+msgstr[1] "Zusagen"
+
+#: ../../include/conversation.php:1987
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Absage"
+msgstr[1] "Absagen"
+
+#: ../../include/conversation.php:1990
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] " Unentschlossen"
+msgstr[1] "Unentschlossene"
+
+#: ../../include/conversation.php:1993
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "Zustimmung"
+msgstr[1] "Zustimmungen"
+
+#: ../../include/conversation.php:1996
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Ablehnung"
+msgstr[1] "Ablehnungen"
+
+#: ../../include/conversation.php:1999
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "Enthaltung"
+msgstr[1] "Enthaltungen"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Verzeichnisoptionen"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Sicherer Modus"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Nur öffentliche Foren"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Nur dieser Hub"
+
+#: ../../include/bookmarks.php:34
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "%1$ss Lesezeichen"
+
+#: ../../include/import.php:41
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
+
+#: ../../include/import.php:106
+msgid "Cloned channel not found. Import failed."
+msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."
+
+#: ../../include/text.php:492
+msgid "prev"
+msgstr "vorherige"
+
+#: ../../include/text.php:494
+msgid "first"
+msgstr "erste"
+
+#: ../../include/text.php:523
+msgid "last"
+msgstr "letzte"
+
+#: ../../include/text.php:526
+msgid "next"
+msgstr "nächste"
+
+#: ../../include/text.php:537
+msgid "older"
+msgstr "älter"
+
+#: ../../include/text.php:539
+msgid "newer"
+msgstr "neuer"
+
+#: ../../include/text.php:961
+msgid "No connections"
+msgstr "Keine Verbindungen"
+
+#: ../../include/text.php:993
+#, php-format
+msgid "View all %s connections"
+msgstr "Alle Verbindungen von %s anzeigen"
+
+#: ../../include/text.php:1129 ../../include/text.php:1133
+msgid "poke"
+msgstr "anstupsen"
+
+#: ../../include/text.php:1134
+msgid "ping"
+msgstr "anpingen"
+
+#: ../../include/text.php:1134
+msgid "pinged"
+msgstr "pingte"
+
+#: ../../include/text.php:1135
+msgid "prod"
+msgstr "knuffen"
+
+#: ../../include/text.php:1135
+msgid "prodded"
+msgstr "knuffte"
+
+#: ../../include/text.php:1136
+msgid "slap"
+msgstr "ohrfeigen"
+
+#: ../../include/text.php:1136
+msgid "slapped"
+msgstr "ohrfeigte"
+
+#: ../../include/text.php:1137
+msgid "finger"
+msgstr "befummeln"
+
+#: ../../include/text.php:1137
+msgid "fingered"
+msgstr "befummelte"
+
+#: ../../include/text.php:1138
+msgid "rebuff"
+msgstr "eine Abfuhr erteilen"
+
+#: ../../include/text.php:1138
+msgid "rebuffed"
+msgstr "zurückgewiesen"
+
+#: ../../include/text.php:1161
+msgid "happy"
+msgstr "glücklich"
+
+#: ../../include/text.php:1162
+msgid "sad"
+msgstr "traurig"
+
+#: ../../include/text.php:1163
+msgid "mellow"
+msgstr "sanft"
+
+#: ../../include/text.php:1164
+msgid "tired"
+msgstr "müde"
+
+#: ../../include/text.php:1165
+msgid "perky"
+msgstr "frech"
+
+#: ../../include/text.php:1166
+msgid "angry"
+msgstr "sauer"
+
+#: ../../include/text.php:1167
+msgid "stupefied"
+msgstr "verblüfft"
+
+#: ../../include/text.php:1168
+msgid "puzzled"
+msgstr "verwirrt"
+
+#: ../../include/text.php:1169
+msgid "interested"
+msgstr "interessiert"
+
+#: ../../include/text.php:1170
+msgid "bitter"
+msgstr "verbittert"
+
+#: ../../include/text.php:1171
+msgid "cheerful"
+msgstr "fröhlich"
+
+#: ../../include/text.php:1172
+msgid "alive"
+msgstr "lebendig"
+
+#: ../../include/text.php:1173
+msgid "annoyed"
+msgstr "verärgert"
+
+#: ../../include/text.php:1174
+msgid "anxious"
+msgstr "unruhig"
+
+#: ../../include/text.php:1175
+msgid "cranky"
+msgstr "schrullig"
+
+#: ../../include/text.php:1176
+msgid "disturbed"
+msgstr "verstört"
+
+#: ../../include/text.php:1177
+msgid "frustrated"
+msgstr "frustriert"
+
+#: ../../include/text.php:1178
+msgid "depressed"
+msgstr "deprimiert"
+
+#: ../../include/text.php:1179
+msgid "motivated"
+msgstr "motiviert"
+
+#: ../../include/text.php:1180
+msgid "relaxed"
+msgstr "entspannt"
+
+#: ../../include/text.php:1181
+msgid "surprised"
+msgstr "überrascht"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:76
+msgid "Monday"
+msgstr "Montag"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:77
+msgid "Tuesday"
+msgstr "Dienstag"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:78
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:79
+msgid "Thursday"
+msgstr "Donnerstag"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:80
+msgid "Friday"
+msgstr "Freitag"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:81
+msgid "Saturday"
+msgstr "Samstag"
+
+#: ../../include/text.php:1360 ../../include/js_strings.php:75
+msgid "Sunday"
+msgstr "Sonntag"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:51
+msgid "January"
+msgstr "Januar"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:52
+msgid "February"
+msgstr "Februar"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:53
+msgid "March"
+msgstr "März"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:54
+msgid "April"
+msgstr "April"
+
+#: ../../include/text.php:1364
+msgid "May"
+msgstr "Mai"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:56
+msgid "June"
+msgstr "Juni"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:57
+msgid "July"
+msgstr "Juli"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:58
+msgid "August"
+msgstr "August"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:59
+msgid "September"
+msgstr "September"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:60
+msgid "October"
+msgstr "Oktober"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:61
+msgid "November"
+msgstr "November"
+
+#: ../../include/text.php:1364 ../../include/js_strings.php:62
+msgid "December"
+msgstr "Dezember"
+
+#: ../../include/text.php:1428 ../../include/text.php:1432
+msgid "Unknown Attachment"
+msgstr "Unbekannter Anhang"
+
+#: ../../include/text.php:1434 ../../include/feedutils.php:852
+msgid "unknown"
+msgstr "unbekannt"
+
+#: ../../include/text.php:1470
+msgid "remove category"
+msgstr "Kategorie entfernen"
+
+#: ../../include/text.php:1544
+msgid "remove from file"
+msgstr "aus der Datei entfernen"
+
+#: ../../include/text.php:1686 ../../include/message.php:12
+msgid "Download binary/encrypted content"
+msgstr "Binären/verschlüsselten Inhalt herunterladen"
+
+#: ../../include/text.php:1848 ../../include/language.php:397
+msgid "default"
+msgstr "Standard"
+
+#: ../../include/text.php:1856
+msgid "Page layout"
+msgstr "Seiten-Layout"
+
+#: ../../include/text.php:1856
+msgid "You can create your own with the layouts tool"
+msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"
+
+#: ../../include/text.php:1867
+msgid "HTML"
+msgstr "HTML"
+
+#: ../../include/text.php:1870
+msgid "Comanche Layout"
+msgstr "Comanche-Layout"
+
+#: ../../include/text.php:1875
+msgid "PHP"
+msgstr "PHP"
+
+#: ../../include/text.php:1884
+msgid "Page content type"
+msgstr "Art des Seiteninhalts"
+
+#: ../../include/text.php:2017
+msgid "activity"
+msgstr "Aktivität"
+
+#: ../../include/text.php:2099
+msgid "a-z, 0-9, -, and _ only"
+msgstr "nur a-z, 0-9, - und _"
+
+#: ../../include/text.php:2399
+msgid "Design Tools"
+msgstr "Gestaltungswerkzeuge"
+
+#: ../../include/text.php:2405
+msgid "Pages"
+msgstr "Seiten"
+
+#: ../../include/text.php:2427
+msgid "Import website..."
+msgstr "Webseite importieren..."
+
+#: ../../include/text.php:2428
+msgid "Select folder to import"
+msgstr "Ordner zum Importieren auswählen"
+
+#: ../../include/text.php:2429
+msgid "Import from a zipped folder:"
+msgstr "Aus einem gezippten Ordner importieren:"
+
+#: ../../include/text.php:2430
+msgid "Import from cloud files:"
+msgstr "Aus Cloud-Dateien importieren:"
+
+#: ../../include/text.php:2431
+msgid "/cloud/channel/path/to/folder"
+msgstr "/Cloud/Kanal/Pfad/zum/Ordner"
+
+#: ../../include/text.php:2432
+msgid "Enter path to website files"
+msgstr "Pfad zu Webseitendateien eingeben"
+
+#: ../../include/text.php:2433
+msgid "Select folder"
+msgstr "Ordner auswählen"
+
+#: ../../include/text.php:2434
+msgid "Export website..."
+msgstr "Webseite exportieren..."
+
+#: ../../include/text.php:2435
+msgid "Export to a zip file"
+msgstr "In eine ZIP-Datei exportieren"
+
+#: ../../include/text.php:2436
+msgid "website.zip"
+msgstr "website.zip"
+
+#: ../../include/text.php:2437
+msgid "Enter a name for the zip file."
+msgstr "Geben Sie einen für die ZIP-Datei ein."
+
+#: ../../include/text.php:2438
+msgid "Export to cloud files"
+msgstr "In Cloud-Dateien exportieren"
+
+#: ../../include/text.php:2439
+msgid "/path/to/export/folder"
+msgstr "/Pfad/zum/exportierenden/Ordner"
+
+#: ../../include/text.php:2440
+msgid "Enter a path to a cloud files destination."
+msgstr "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein."
+
+#: ../../include/text.php:2441
+msgid "Specify folder"
+msgstr "Ordner angeben"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d Einladung verfügbar"
+msgstr[1] "%d Einladungen verfügbar"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Finde Kanäle"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Name oder Interessen eingeben"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Verbinden/Folgen"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Beispiele: Robert Morgenstein, Angeln"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Zufallsprofil"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Lade Freunde ein"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Fortgeschrittenes Beispiel: name=fred and country=iceland"
+
+#: ../../include/contact_widgets.php:223
+msgid "Common Connections"
+msgstr "Gemeinsame Verbindungen"
+
+#: ../../include/contact_widgets.php:228
+#, php-format
+msgid "View all %d common connections"
+msgstr "Zeige alle %d gemeinsamen Verbindungen"
+
+#: ../../include/markdown.php:158 ../../include/bbcode.php:343
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s schrieb den folgenden %2$s %3$s"
+
+#: ../../include/follow.php:37
+msgid "Channel is blocked on this site."
+msgstr "Der Kanal ist auf dieser Seite blockiert "
+
+#: ../../include/follow.php:42
+msgid "Channel location missing."
+msgstr "Adresse des Kanals fehlt."
+
+#: ../../include/follow.php:84
+msgid "Response from remote channel was incomplete."
+msgstr "Antwort des entfernten Kanals war unvollständig."
+
+#: ../../include/follow.php:101
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanal wurde gelöscht und existiert nicht mehr."
+
+#: ../../include/follow.php:156
+msgid "Remote channel or protocol unavailable."
+msgstr "Externer Kanal oder Protokoll nicht verfügbar."
+
+#: ../../include/follow.php:179
+msgid "Channel discovery failed."
+msgstr "Kanalsuche fehlgeschlagen"
+
+#: ../../include/follow.php:191
+msgid "Protocol disabled."
+msgstr "Protokoll deaktiviert."
+
+#: ../../include/follow.php:202
+msgid "Cannot connect to yourself."
+msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Dieses Element löschen?"
+
+#: ../../include/js_strings.php:8
+#, php-format
+msgid "%s show less"
+msgstr "%s weniger anzeigen"
+
+#: ../../include/js_strings.php:9
+#, php-format
+msgid "%s expand"
+msgstr "%s aufklappen"
+
+#: ../../include/js_strings.php:10
+#, php-format
+msgid "%s collapse"
+msgstr "%s einklappen"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Kennwort zu kurz"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Kennwörter stimmen nicht überein"
+
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "alle"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "geheime Passphrase"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Hinweis zur Passphrase"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "Alle schließen"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Nichts Neues hier"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Diesen Kanal bewerten (öffentlich sichtbar)"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Beschreibung (optional)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Gib eine URL ein:"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlassen möchtest?"
+
+#: ../../include/js_strings.php:31
+msgid "timeago.prefixAgo"
+msgstr "vor"
+
+#: ../../include/js_strings.php:32
+msgid "timeago.prefixFromNow"
+msgstr "in"
+
+#: ../../include/js_strings.php:33
+msgid "timeago.suffixAgo"
+msgstr "NONE"
+
+#: ../../include/js_strings.php:34
+msgid "timeago.suffixFromNow"
+msgstr "NONE"
+
+#: ../../include/js_strings.php:37
+msgid "less than a minute"
+msgstr "weniger als einer Minute"
+
+#: ../../include/js_strings.php:38
+msgid "about a minute"
+msgstr "ungefähr einer Minute"
+
+#: ../../include/js_strings.php:39
+#, php-format
+msgid "%d minutes"
+msgstr "%d Minuten"
+
+#: ../../include/js_strings.php:40
+msgid "about an hour"
+msgstr "ungefähr einer Stunde"
+
+#: ../../include/js_strings.php:41
+#, php-format
+msgid "about %d hours"
+msgstr "ungefähr %d Stunden"
+
+#: ../../include/js_strings.php:42
+msgid "a day"
+msgstr "einem Tag"
+
+#: ../../include/js_strings.php:43
+#, php-format
+msgid "%d days"
+msgstr "%d Tagen"
+
+#: ../../include/js_strings.php:44
+msgid "about a month"
+msgstr "ungefähr einem Monat"
+
+#: ../../include/js_strings.php:45
+#, php-format
+msgid "%d months"
+msgstr "%d Monaten"
+
+#: ../../include/js_strings.php:46
+msgid "about a year"
+msgstr "ungefähr einem Jahr"
+
+#: ../../include/js_strings.php:47
+#, php-format
+msgid "%d years"
+msgstr "%d Jahren"
+
+#: ../../include/js_strings.php:48
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:49
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/js_strings.php:55
+msgctxt "long"
+msgid "May"
+msgstr "Mai"
+
+#: ../../include/js_strings.php:63
+msgid "Jan"
+msgstr "Jan"
+
+#: ../../include/js_strings.php:64
+msgid "Feb"
+msgstr "Feb"
+
+#: ../../include/js_strings.php:65
+msgid "Mar"
+msgstr "Mär"
+
+#: ../../include/js_strings.php:66
+msgid "Apr"
+msgstr "Apr"
+
+#: ../../include/js_strings.php:67
+msgctxt "short"
+msgid "May"
+msgstr "Mai"
+
+#: ../../include/js_strings.php:68
+msgid "Jun"
+msgstr "Jun"
+
+#: ../../include/js_strings.php:69
+msgid "Jul"
+msgstr "Jul"
+
+#: ../../include/js_strings.php:70
+msgid "Aug"
+msgstr "Aug"
+
+#: ../../include/js_strings.php:71
+msgid "Sep"
+msgstr "Sep"
+
+#: ../../include/js_strings.php:72
+msgid "Oct"
+msgstr "Okt"
+
+#: ../../include/js_strings.php:73
+msgid "Nov"
+msgstr "Nov"
+
+#: ../../include/js_strings.php:74
+msgid "Dec"
+msgstr "Dez"
+
+#: ../../include/js_strings.php:82
+msgid "Sun"
+msgstr "So"
+
+#: ../../include/js_strings.php:83
+msgid "Mon"
+msgstr "Mo"
+
+#: ../../include/js_strings.php:84
+msgid "Tue"
+msgstr "Di"
+
+#: ../../include/js_strings.php:85
+msgid "Wed"
+msgstr "Mi"
+
+#: ../../include/js_strings.php:86
+msgid "Thu"
+msgstr "Do"
+
+#: ../../include/js_strings.php:87
+msgid "Fri"
+msgstr "Fr"
+
+#: ../../include/js_strings.php:88
+msgid "Sat"
+msgstr "Sa"
+
+#: ../../include/js_strings.php:89
+msgctxt "calendar"
+msgid "today"
+msgstr "heute"
+
+#: ../../include/js_strings.php:90
+msgctxt "calendar"
+msgid "month"
+msgstr "Monat"
+
+#: ../../include/js_strings.php:91
+msgctxt "calendar"
+msgid "week"
+msgstr "Woche"
+
+#: ../../include/js_strings.php:92
+msgctxt "calendar"
+msgid "day"
+msgstr "Tag"
+
+#: ../../include/js_strings.php:93
+msgctxt "calendar"
+msgid "All day"
+msgstr "Ganztägig"
+
+#: ../../include/message.php:40
+msgid "Unable to determine sender."
+msgstr "Kann Absender nicht bestimmen."
+
+#: ../../include/message.php:79
+msgid "No recipient provided."
+msgstr "Kein Empfänger angegeben"
+
+#: ../../include/message.php:84
+msgid "[no subject]"
+msgstr "[no subject]"
+
+#: ../../include/message.php:214
+msgid "Stored post could not be verified."
+msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
+
+#: ../../include/activities.php:41
+msgid " and "
+msgstr "und"
+
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "öffentliches Profil"
+
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s hat %2$s auf &ldquo;%3$s&rdquo; geändert"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Besuche %1$s's %2$s"
+
+#: ../../include/activities.php:62
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
+
+#: ../../include/attach.php:265 ../../include/attach.php:361
+msgid "Item was not found."
+msgstr "Beitrag wurde nicht gefunden."
+
+#: ../../include/attach.php:554
+msgid "No source file."
+msgstr "Keine Quelldatei."
+
+#: ../../include/attach.php:576
+msgid "Cannot locate file to replace"
+msgstr "Kann Datei zum Ersetzen nicht finden"
+
+#: ../../include/attach.php:595
+msgid "Cannot locate file to revise/update"
+msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden"
+
+#: ../../include/attach.php:737
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Datei überschreitet das Größen-Limit von %d"
+
+#: ../../include/attach.php:758
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."
+
+#: ../../include/attach.php:940
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."
+
+#: ../../include/attach.php:959
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."
+
+#: ../../include/attach.php:1033 ../../include/attach.php:1049
+msgid "Path not available."
+msgstr "Pfad nicht verfügbar."
+
+#: ../../include/attach.php:1098 ../../include/attach.php:1263
+msgid "Empty pathname"
+msgstr "Leere Pfadangabe"
+
+#: ../../include/attach.php:1124
+msgid "duplicate filename or path"
+msgstr "doppelter Dateiname oder Pfad"
+
+#: ../../include/attach.php:1149
+msgid "Path not found."
+msgstr "Pfad nicht gefunden."
+
+#: ../../include/attach.php:1217
+msgid "mkdir failed."
+msgstr "mkdir fehlgeschlagen."
+
+#: ../../include/attach.php:1221
+msgid "database storage failed."
+msgstr "Speichern in der Datenbank fehlgeschlagen."
+
+#: ../../include/attach.php:1269
+msgid "Empty path"
+msgstr "Leere Pfadangabe"
+
+#: ../../include/security.php:532
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
+
+#: ../../include/items.php:885 ../../include/items.php:945
+msgid "(Unknown)"
+msgstr "(Unbekannt)"
+
+#: ../../include/items.php:1129
+msgid "Visible to anybody on the internet."
+msgstr "Für jeden im Internet sichtbar."
+
+#: ../../include/items.php:1131
+msgid "Visible to you only."
+msgstr "Nur für Dich sichtbar."
+
+#: ../../include/items.php:1133
+msgid "Visible to anybody in this network."
+msgstr "Für jedes $Projectname-Mitglied sichtbar."
+
+#: ../../include/items.php:1135
+msgid "Visible to anybody authenticated."
+msgstr "Für jeden sichtbar, der angemeldet ist."
+
+#: ../../include/items.php:1137
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Für jeden auf %s sichtbar."
+
+#: ../../include/items.php:1139
+msgid "Visible to all connections."
+msgstr "Für alle Verbindungen sichtbar."
+
+#: ../../include/items.php:1141
+msgid "Visible to approved connections."
+msgstr "Nur für akzeptierte Verbindungen sichtbar."
+
+#: ../../include/items.php:1143
+msgid "Visible to specific connections."
+msgstr "Sichtbar für bestimmte Verbindungen."
+
+#: ../../include/items.php:4147
+msgid "Privacy group is empty."
+msgstr "Gruppe ist leer."
+
+#: ../../include/items.php:4154
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Gruppe: %s"
+
+#: ../../include/items.php:4166
+msgid "Connection not found."
+msgstr "Die Verbindung wurde nicht gefunden."
+
+#: ../../include/items.php:4515
+msgid "profile photo"
+msgstr "Profilfoto"
+
+#: ../../include/items.php:4706
+#, php-format
+msgid "[Edited %s]"
+msgstr "[%s wurde bearbeitet]"
+
+#: ../../include/items.php:4706
+msgctxt "edit_activity"
+msgid "Post"
+msgstr "Beitrag"
+
+#: ../../include/items.php:4706
+msgctxt "edit_activity"
+msgid "Comment"
+msgstr "Kommentar"
+
+#: ../../include/channel.php:35
+msgid "Unable to obtain identity information from database"
+msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
+
+#: ../../include/channel.php:68
+msgid "Empty name"
+msgstr "Namensfeld leer"
+
+#: ../../include/channel.php:71
+msgid "Name too long"
+msgstr "Name ist zu lang"
+
+#: ../../include/channel.php:188
+msgid "No account identifier"
+msgstr "Keine Konten-Kennung"
+
+#: ../../include/channel.php:200
+msgid "Nickname is required."
+msgstr "Spitzname ist erforderlich."
+
+#: ../../include/channel.php:277
+msgid "Unable to retrieve created identity"
+msgstr "Kann die erstellte Identität nicht empfangen"
+
+#: ../../include/channel.php:373
+msgid "Default Profile"
+msgstr "Standard-Profil"
+
+#: ../../include/channel.php:532 ../../include/channel.php:621
+msgid "Unable to retrieve modified identity"
+msgstr "Geänderte Identität kann nicht empfangen werden"
+
+#: ../../include/channel.php:1298
+msgid "Create New Profile"
+msgstr "Neues Profil erstellen"
+
+#: ../../include/channel.php:1319
+msgid "Visible to everybody"
+msgstr "Für jeden sichtbar"
+
+#: ../../include/channel.php:1396 ../../include/channel.php:1524
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: ../../include/channel.php:1398 ../../include/channel.php:1579
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: ../../include/channel.php:1399
+msgid "Online Now"
+msgstr "gerade online"
+
+#: ../../include/channel.php:1452
+msgid "Change your profile photo"
+msgstr "Dein Profilfoto ändern"
+
+#: ../../include/channel.php:1483
+msgid "Trans"
+msgstr "Trans"
+
+#: ../../include/channel.php:1529
+msgid "Like this channel"
+msgstr "Dieser Kanal gefällt mir"
+
+#: ../../include/channel.php:1553
+msgid "j F, Y"
+msgstr "j. F Y"
+
+#: ../../include/channel.php:1554
+msgid "j F"
+msgstr "j. F"
+
+#: ../../include/channel.php:1561
+msgid "Birthday:"
+msgstr "Geburtstag:"
+
+#: ../../include/channel.php:1574
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "seit %1$d %2$s"
+
+#: ../../include/channel.php:1577
+msgid "Sexual Preference:"
+msgstr "Sexuelle Orientierung:"
+
+#: ../../include/channel.php:1583
+msgid "Tags:"
+msgstr "Schlagworte:"
+
+#: ../../include/channel.php:1585
+msgid "Political Views:"
+msgstr "Politische Ansichten:"
+
+#: ../../include/channel.php:1587
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/channel.php:1591
+msgid "Hobbies/Interests:"
+msgstr "Hobbys/Interessen:"
+
+#: ../../include/channel.php:1593
+msgid "Likes:"
+msgstr "Gefällt:"
+
+#: ../../include/channel.php:1595
+msgid "Dislikes:"
+msgstr "Gefällt nicht:"
+
+#: ../../include/channel.php:1597
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformation und soziale Netzwerke:"
+
+#: ../../include/channel.php:1599
+msgid "My other channels:"
+msgstr "Meine anderen Kanäle:"
+
+#: ../../include/channel.php:1601
+msgid "Musical interests:"
+msgstr "Musikalische Interessen:"
+
+#: ../../include/channel.php:1603
+msgid "Books, literature:"
+msgstr "Bücher, Literatur:"
+
+#: ../../include/channel.php:1605
+msgid "Television:"
+msgstr "Fernsehen:"
+
+#: ../../include/channel.php:1607
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/Tanz/Kultur/Unterhaltung:"
+
+#: ../../include/channel.php:1609
+msgid "Love/Romance:"
+msgstr "Liebe/Romantik:"
+
+#: ../../include/channel.php:1611
+msgid "Work/employment:"
+msgstr "Arbeit/Anstellung:"
+
+#: ../../include/channel.php:1613
+msgid "School/education:"
+msgstr "Schule/Ausbildung:"
+
+#: ../../include/channel.php:1636
+msgid "Like this thing"
+msgstr "Gefällt mir"
+
+#: ../../include/event.php:24 ../../include/event.php:71
+msgid "l F d, Y \\@ g:i A"
+msgstr "l, d. F Y, H:i"
+
+#: ../../include/event.php:32 ../../include/event.php:75
+msgid "Starts:"
+msgstr "Beginnt:"
+
+#: ../../include/event.php:42 ../../include/event.php:79
+msgid "Finishes:"
+msgstr "Endet:"
+
+#: ../../include/event.php:1011
+msgid "This event has been added to your calendar."
+msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt"
+
+#: ../../include/event.php:1227
+msgid "Not specified"
+msgstr "Keine Angabe"
+
+#: ../../include/event.php:1228
+msgid "Needs Action"
+msgstr "Aktion erforderlich"
+
+#: ../../include/event.php:1229
+msgid "Completed"
+msgstr "Abgeschlossen"
+
+#: ../../include/event.php:1230
+msgid "In Process"
+msgstr "In Bearbeitung"
+
+#: ../../include/event.php:1231
+msgid "Cancelled"
+msgstr "gestrichen"
+
+#: ../../include/event.php:1310 ../../include/connections.php:684
+msgid "Home, Voice"
+msgstr "Zuhause, Sprache"
+
+#: ../../include/event.php:1311 ../../include/connections.php:685
+msgid "Home, Fax"
+msgstr "Zuhause, Fax"
+
+#: ../../include/event.php:1313 ../../include/connections.php:687
+msgid "Work, Voice"
+msgstr "Arbeit, Sprache"
+
+#: ../../include/event.php:1314 ../../include/connections.php:688
+msgid "Work, Fax"
+msgstr "Arbeit, Fax"
+
+#: ../../include/network.php:762
+msgid "view full size"
+msgstr "In Vollbildansicht anschauen"
+
+#: ../../include/network.php:1769 ../../include/network.php:1770
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/network.php:1771
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/network.php:1772
+msgid "GNU-Social"
+msgstr "GNU-Social"
+
+#: ../../include/network.php:1773
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/network.php:1776
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/network.php:1777
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/network.php:1778
+msgid "Zot"
+msgstr "Zot"
+
+#: ../../include/network.php:1779
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/network.php:1780
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/network.php:1781
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/language.php:410
+msgid "Select an alternate language"
+msgstr "Wähle eine alternative Sprache"
+
+#: ../../include/acl_selectors.php:113
+msgid "Who can see this?"
+msgstr "Wer kann das sehen?"
+
+#: ../../include/acl_selectors.php:114
+msgid "Custom selection"
+msgstr "Benutzerdefinierte Auswahl"
+
+#: ../../include/acl_selectors.php:115
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."
+
+#: ../../include/acl_selectors.php:116
+msgid "Show"
+msgstr "Anzeigen"
+
+#: ../../include/acl_selectors.php:117
+msgid "Don't show"
+msgstr "Nicht anzeigen"
+
+#: ../../include/acl_selectors.php:150
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."
+
+#: ../../include/dba/dba_driver.php:178
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
+
+#: ../../include/bbcode.php:198 ../../include/bbcode.php:1151
+#: ../../include/bbcode.php:1154 ../../include/bbcode.php:1159
+#: ../../include/bbcode.php:1162 ../../include/bbcode.php:1165
+#: ../../include/bbcode.php:1168 ../../include/bbcode.php:1173
+#: ../../include/bbcode.php:1176 ../../include/bbcode.php:1181
+#: ../../include/bbcode.php:1184 ../../include/bbcode.php:1187
+#: ../../include/bbcode.php:1190
+msgid "Image/photo"
+msgstr "Bild/Foto"
+
+#: ../../include/bbcode.php:237 ../../include/bbcode.php:1201
+msgid "Encrypted content"
+msgstr "Verschlüsselter Inhalt"
+
+#: ../../include/bbcode.php:253
+#, php-format
+msgid "Install %1$s element %2$s"
+msgstr "Installiere %1$s Element %2$s"
+
+#: ../../include/bbcode.php:257
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren."
+
+#: ../../include/bbcode.php:335
+msgid "card"
+msgstr "Karte"
+
+#: ../../include/bbcode.php:337
+msgid "article"
+msgstr "Artikel"
+
+#: ../../include/bbcode.php:420 ../../include/bbcode.php:428
+msgid "Click to open/close"
+msgstr "Klicke zum Öffnen/Schließen"
+
+#: ../../include/bbcode.php:428
+msgid "spoiler"
+msgstr "Spoiler"
+
+#: ../../include/bbcode.php:441
+msgid "View article"
+msgstr "Artikel ansehen"
+
+#: ../../include/bbcode.php:441
+msgid "View summary"
+msgstr "Zusammenfassung ansehen"
+
+#: ../../include/bbcode.php:1139
+msgid "$1 wrote:"
+msgstr "$1 schrieb:"
+
+#: ../../include/oembed.php:328
+msgid " by "
+msgstr "von"
+
+#: ../../include/oembed.php:329
+msgid " on "
+msgstr "am"
+
+#: ../../include/oembed.php:358
+msgid "Embedded content"
+msgstr "Eingebetteter Inhalt"
+
+#: ../../include/oembed.php:367
+msgid "Embedding disabled"
+msgstr "Einbetten deaktiviert"
+
+#: ../../include/zid.php:346
+#, php-format
+msgid "OpenWebAuth: %1$s welcomes %2$s"
+msgstr "OpenWebAuth: %1$s heißt %2$s willkommen"
+
+#: ../../include/features.php:54
+msgid "General Features"
+msgstr "Allgemeine Funktionen"
+
+#: ../../include/features.php:60
+msgid "Advanced Profiles"
+msgstr "Erweiterte Profile"
+
+#: ../../include/features.php:61
+msgid "Additional profile sections and selections"
+msgstr "Stellt zusätzliche Bereiche und Felder im Profil zur Verfügung"
+
+#: ../../include/features.php:69
+msgid "Profile Import/Export"
+msgstr "Profil-Import/Export"
+
+#: ../../include/features.php:70
+msgid "Save and load profile details across sites/channels"
+msgstr "Ermöglicht das Speichern von Profilen, um sie in einen anderen Kanal zu importieren"
+
+#: ../../include/features.php:78
+msgid "Web Pages"
+msgstr "Webseiten"
+
+#: ../../include/features.php:79
+msgid "Provide managed web pages on your channel"
+msgstr "Ermöglicht das Erstellen von Webseiten in Deinem Kanal"
+
+#: ../../include/features.php:88
+msgid "Provide a wiki for your channel"
+msgstr "Stelle ein Wiki in Deinem Kanal zur Verfügung"
+
+#: ../../include/features.php:105
+msgid "Private Notes"
+msgstr "Private Notizen"
+
+#: ../../include/features.php:106
+msgid "Enables a tool to store notes and reminders (note: not encrypted)"
+msgstr "Aktiviert ein Werkzeug mit dem Notizen und Erinnerungen gespeichert werden können (Hinweis: nicht verschlüsselt)"
+
+#: ../../include/features.php:115
+msgid "Create personal planning cards"
+msgstr "Erstelle persönliche (Notiz-)Karten zur Planung/Koordination oder ähnlichen Zwecken"
+
+#: ../../include/features.php:125
+msgid "Create interactive articles"
+msgstr "Erstelle interaktive Artikel"
+
+#: ../../include/features.php:133
+msgid "Navigation Channel Select"
+msgstr "Kanal-Auswahl in der Navigationsleiste"
+
+#: ../../include/features.php:134
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü"
+
+#: ../../include/features.php:142
+msgid "Photo Location"
+msgstr "Aufnahmeort"
+
+#: ../../include/features.php:143
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte"
+
+#: ../../include/features.php:151
+msgid "Access Controlled Chatrooms"
+msgstr "Zugriffskontrollierte Chaträume"
+
+#: ../../include/features.php:152
+msgid "Provide chatrooms and chat services with access control."
+msgstr "Bieten Sie Chaträume und Chatdienste mit Zugriffskontrolle an."
+
+#: ../../include/features.php:161
+msgid "Smart Birthdays"
+msgstr "Smarte Geburtstage"
+
+#: ../../include/features.php:162
+msgid ""
+"Make birthday events timezone aware in case your friends are scattered "
+"across the planet."
+msgstr "Stellt für Geburtstage einen Zeitzonenbezug her, falls deine Freunde über den ganzen Planeten verstreut sind."
+
+#: ../../include/features.php:170
+msgid "Event Timezone Selection"
+msgstr "Termin-Zeitzonenauswahl"
+
+#: ../../include/features.php:171
+msgid "Allow event creation in timezones other than your own."
+msgstr "Ermögliche das Erstellen von Terminen in anderen Zeitzonen als Deiner eigenen."
+
+#: ../../include/features.php:180
+msgid "Premium Channel"
+msgstr "Premium-Kanal"
+
+#: ../../include/features.php:181
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen"
+
+#: ../../include/features.php:189
+msgid "Advanced Directory Search"
+msgstr "Erweiterte Verzeichnissuche"
+
+#: ../../include/features.php:190
+msgid "Allows creation of complex directory search queries"
+msgstr "Ermöglicht die Erstellung komplexer Verzeichnis-Suchabfragen"
+
+#: ../../include/features.php:198
+msgid "Advanced Theme and Layout Settings"
+msgstr "Erweiterte Design- und Layout-Einstellungen"
+
+#: ../../include/features.php:199
+msgid "Allows fine tuning of themes and page layouts"
+msgstr "Erlaubt die Feineinstellung von Designs und Seitenlayouts"
+
+#: ../../include/features.php:208
+msgid "Access Control and Permissions"
+msgstr "Zugriffskontrolle und Berechtigungen"
+
+#: ../../include/features.php:212 ../../include/group.php:328
+msgid "Privacy Groups"
+msgstr "Gruppen"
+
+#: ../../include/features.php:213
+msgid "Enable management and selection of privacy groups"
+msgstr "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren"
+
+#: ../../include/features.php:221
+msgid "Multiple Profiles"
+msgstr "Mehrfachprofile"
+
+#: ../../include/features.php:222
+msgid "Ability to create multiple profiles"
+msgstr "Ermöglicht das Anlegen mehrerer Profile pro Kanal"
+
+#: ../../include/features.php:232
+msgid "Provide alternate connection permission roles."
+msgstr "Stelle benutzerdefinierte Berechtigungsrollen für Verbindungen zur Verfügung."
+
+#: ../../include/features.php:240
+msgid "OAuth Clients"
+msgstr "OAuth Clients"
+
+#: ../../include/features.php:241
+msgid "Manage authenticatication tokens for mobile and remote apps."
+msgstr "Verwalte Tokens für den Zugriff von mobilen bzw. externen Anwendungen."
+
+#: ../../include/features.php:249
+msgid "Access Tokens"
+msgstr "Zugangstokens"
+
+#: ../../include/features.php:250
+msgid "Create access tokens so that non-members can access private content."
+msgstr "Erzeuge Tokens für den Zugriff von Nicht-Mitgliedern auf private Inhalte."
+
+#: ../../include/features.php:261
+msgid "Post Composition Features"
+msgstr "Nachbearbeitungsfunktionen"
+
+#: ../../include/features.php:265
+msgid "Large Photos"
+msgstr "Große Fotos"
+
+#: ../../include/features.php:266
+msgid ""
+"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
+"(640px) photo thumbnails"
+msgstr "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet."
+
+#: ../../include/features.php:275
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Ermöglicht den automatischen Import von Inhalten für diesen Kanal von anderen Kanälen oder Feeds"
+
+#: ../../include/features.php:283
+msgid "Even More Encryption"
+msgstr "Noch mehr Verschlüsselung"
+
+#: ../../include/features.php:284
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Ermöglicht optional die zusätzliche Verschlüsselung von Inhalten (Ende-zu-Ende mit geteiltem Schlüssel)"
+
+#: ../../include/features.php:292
+msgid "Enable Voting Tools"
+msgstr "Umfragewerkzeuge aktivieren"
+
+#: ../../include/features.php:293
+msgid "Provide a class of post which others can vote on"
+msgstr "Aktiviert die Umfragewerkzeuge, um anderen die Möglichkeit zu geben, einem Beitrag zuzustimmen, ihn abzulehnen oder sich zu enthalten. (Muss im Beitrag selbst noch aktiviert werden.)"
+
+#: ../../include/features.php:301
+msgid "Disable Comments"
+msgstr "Kommentare deaktivieren"
+
+#: ../../include/features.php:302
+msgid "Provide the option to disable comments for a post"
+msgstr "Ermöglicht, die Kommentarfunktion für einzelne Beiträge abzuschalten"
+
+#: ../../include/features.php:310
+msgid "Delayed Posting"
+msgstr "Verzögertes Senden"
+
+#: ../../include/features.php:311
+msgid "Allow posts to be published at a later date"
+msgstr "Ermöglicht es, Beiträge zu einem späteren Zeitpunkt zu veröffentlichen"
+
+#: ../../include/features.php:319
+msgid "Content Expiration"
+msgstr "Verfall von Inhalten"
+
+#: ../../include/features.php:320
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum."
+
+#: ../../include/features.php:328
+msgid "Suppress Duplicate Posts/Comments"
+msgstr "Doppelte Beiträge unterdrücken"
+
+#: ../../include/features.php:329
+msgid ""
+"Prevent posts with identical content to be published with less than two "
+"minutes in between submissions."
+msgstr "Verhindert, dass innerhalb von zwei Minuten Beiträge mit identischem Inhalt veröffentlicht werden."
+
+#: ../../include/features.php:340
+msgid "Network and Stream Filtering"
+msgstr "Netzwerk- und Stream-Filter"
+
+#: ../../include/features.php:344
+msgid "Search by Date"
+msgstr "Suche nach Datum"
+
+#: ../../include/features.php:345
+msgid "Ability to select posts by date ranges"
+msgstr "Möglichkeit, Beiträge nach Zeiträumen auszuwählen"
+
+#: ../../include/features.php:355
+msgid "Save search terms for re-use"
+msgstr "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung"
+
+#: ../../include/features.php:363
+msgid "Network Personal Tab"
+msgstr "Persönlicher Netzwerkreiter"
+
+#: ../../include/features.php:364
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Aktiviert einen Reiter in der Grid-Ansicht, der nur Netzwerk-Beiträge anzeigt, mit denen Du interagiert hast"
+
+#: ../../include/features.php:372
+msgid "Network New Tab"
+msgstr "Netzwerkreiter Neu"
+
+#: ../../include/features.php:373
+msgid "Enable tab to display all new Network activity"
+msgstr "Aktiviert einen Reiter in der Grid-Ansicht, der alle neuen Netzwerkaktivitäten anzeigt"
+
+#: ../../include/features.php:381
+msgid "Affinity Tool"
+msgstr "Beziehungs-Tool"
+
+#: ../../include/features.php:382
+msgid "Filter stream activity by depth of relationships"
+msgstr "Aktiviert ein Werkzeug in der Grid-Ansicht, das den Stream nach Grad der Beziehung filtern kann"
+
+#: ../../include/features.php:391
+msgid "Show friend and connection suggestions"
+msgstr "Freund- und Verbindungsvorschläge anzeigen"
+
+#: ../../include/features.php:399
+msgid "Connection Filtering"
+msgstr "Filter für Verbindungen"
+
+#: ../../include/features.php:400
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)"
+
+#: ../../include/features.php:412
+msgid "Post/Comment Tools"
+msgstr "Beitrag-/Kommentar-Tools"
+
+#: ../../include/features.php:416
+msgid "Community Tagging"
+msgstr "Gemeinschaftliches Verschlagworten"
+
+#: ../../include/features.php:417
+msgid "Ability to tag existing posts"
+msgstr "Ermöglicht das Verschlagworten existierender Beiträge"
+
+#: ../../include/features.php:425
+msgid "Post Categories"
+msgstr "Beitrags-Kategorien"
+
+#: ../../include/features.php:426
+msgid "Add categories to your posts"
+msgstr "Aktiviert Kategorien für Beiträge"
+
+#: ../../include/features.php:434
+msgid "Emoji Reactions"
+msgstr "Emoji Reaktionen"
+
+#: ../../include/features.php:435
+msgid "Add emoji reaction ability to posts"
+msgstr "Aktiviert Emoji-Reaktionen für Beiträge"
+
+#: ../../include/features.php:444
+msgid "Ability to file posts under folders"
+msgstr "Möglichkeit, Beiträge in Verzeichnissen zu sammeln"
+
+#: ../../include/features.php:452
+msgid "Dislike Posts"
+msgstr "Gefällt-mir-nicht-Beiträge"
+
+#: ../../include/features.php:453
+msgid "Ability to dislike posts/comments"
+msgstr "Aktiviert die „Gefällt mir nicht“-Schaltfläche"
+
+#: ../../include/features.php:461
+msgid "Star Posts"
+msgstr "Beiträge mit Sternchen versehen"
+
+#: ../../include/features.php:462
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol"
+
+#: ../../include/features.php:470
+msgid "Tag Cloud"
+msgstr "Schlagwort-Wolke"
+
+#: ../../include/features.php:471
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite"
+
+#: ../../include/taxonomy.php:384 ../../include/taxonomy.php:405
+msgid "Tags"
+msgstr "Schlagwörter"
+
+#: ../../include/taxonomy.php:487
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+#: ../../include/taxonomy.php:508
+msgid "have"
+msgstr "habe"
+
+#: ../../include/taxonomy.php:508
+msgid "has"
+msgstr "hat"
+
+#: ../../include/taxonomy.php:509
+msgid "want"
+msgstr "will"
+
+#: ../../include/taxonomy.php:509
+msgid "wants"
+msgstr "will"
+
+#: ../../include/taxonomy.php:510
+msgid "likes"
+msgstr "gefällt"
+
+#: ../../include/taxonomy.php:511
+msgid "dislikes"
+msgstr "missfällt"
+
+#: ../../include/account.php:35
+msgid "Not a valid email address"
+msgstr "Ungültige E-Mail-Adresse"
+
+#: ../../include/account.php:37
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt"
+
+#: ../../include/account.php:43
+msgid "Your email address is already registered at this site."
+msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."
+
+#: ../../include/account.php:75
+msgid "An invitation is required."
+msgstr "Eine Einladung wird benötigt."
+
+#: ../../include/account.php:79
+msgid "Invitation could not be verified."
+msgstr "Die Einladung konnte nicht bestätigt werden."
+
+#: ../../include/account.php:157
+msgid "Please enter the required information."
+msgstr "Bitte gib die benötigten Informationen ein."
+
+#: ../../include/account.php:224
+msgid "Failed to store account information."
+msgstr "Speichern der Nutzerkontodaten fehlgeschlagen."
+
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registrierungsbestätigung für %s"
+
+#: ../../include/account.php:382
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registrierungsanfrage auf %s"
+
+#: ../../include/account.php:404
+msgid "your registration password"
+msgstr "Dein Registrierungspasswort"
+
+#: ../../include/account.php:410 ../../include/account.php:472
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registrierungsdetails für %s"
+
+#: ../../include/account.php:483
+msgid "Account approved."
+msgstr "Nutzerkonto bestätigt."
+
+#: ../../include/account.php:523
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrierung für %s wurde widerrufen"
+
+#: ../../include/account.php:802 ../../include/account.php:804
+msgid "Click here to upgrade."
+msgstr "Klicke hier, um das Upgrade durchzuführen."
+
+#: ../../include/account.php:810
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
+
+#: ../../include/account.php:815
+msgid "This action is not available under your subscription plan."
+msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
+
+#: ../../include/datetime.php:134
+msgid "Birthday"
+msgstr "Geburtstag"
+
+#: ../../include/datetime.php:134
+msgid "Age: "
+msgstr "Alter:"
+
+#: ../../include/datetime.php:134
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "JJJJ-MM-TT oder MM-TT"
+
+#: ../../include/datetime.php:238
+msgid "less than a second ago"
+msgstr "Vor weniger als einer Sekunde"
+
+#: ../../include/datetime.php:256
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "vor %1$d %2$s"
+
+#: ../../include/datetime.php:267
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "Jahr"
+msgstr[1] "Jahre"
+
+#: ../../include/datetime.php:270
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "Monat"
+msgstr[1] "Monate"
+
+#: ../../include/datetime.php:273
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "Woche"
+msgstr[1] "Wochen"
+
+#: ../../include/datetime.php:276
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "Tag"
+msgstr[1] "Tage"
+
+#: ../../include/datetime.php:279
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "Stunde"
+msgstr[1] "Stunden"
+
+#: ../../include/datetime.php:282
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "Minute"
+msgstr[1] "Minuten"
+
+#: ../../include/datetime.php:285
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "Sekunde"
+msgstr[1] "Sekunden"
+
+#: ../../include/datetime.php:514
+#, php-format
+msgid "%1$s's birthday"
+msgstr "%1$ss Geburtstag"
+
+#: ../../include/datetime.php:515
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Alles Gute zum Geburtstag, %1$s"
+
+#: ../../include/nav.php:96
+msgid "Remote authentication"
+msgstr "Ãœber Konto auf anderem Server einloggen"
+
+#: ../../include/nav.php:96
+msgid "Click to authenticate to your home hub"
+msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"
+
+#: ../../include/nav.php:102 ../../include/nav.php:190
+msgid "Manage Your Channels"
+msgstr "Verwalte Deine Kanäle"
+
+#: ../../include/nav.php:105 ../../include/nav.php:192
+msgid "Account/Channel Settings"
+msgstr "Konto-/Kanal-Einstellungen"
+
+#: ../../include/nav.php:111 ../../include/nav.php:140
+msgid "End this session"
+msgstr "Beende diese Sitzung"
+
+#: ../../include/nav.php:114
+msgid "Your profile page"
+msgstr "Deine Profilseite"
+
+#: ../../include/nav.php:117
+msgid "Manage/Edit profiles"
+msgstr "Profile verwalten"
+
+#: ../../include/nav.php:126 ../../include/nav.php:130
+msgid "Sign in"
+msgstr "Anmelden"
+
+#: ../../include/nav.php:157
+msgid "Take me home"
+msgstr "Bringe mich nach Hause (eigener Kanal)"
+
+#: ../../include/nav.php:159
+msgid "Log me out of this site"
+msgstr "Logge mich von dieser Seite aus"
+
+#: ../../include/nav.php:164
+msgid "Create an account"
+msgstr "Erzeuge ein Konto"
+
+#: ../../include/nav.php:176
+msgid "Help and documentation"
+msgstr "Hilfe und Dokumentation"
+
+#: ../../include/nav.php:179
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"
+
+#: ../../include/nav.php:199
+msgid "Site Setup and Configuration"
+msgstr "Seiten-Einrichtung und -Konfiguration"
+
+#: ../../include/nav.php:290
+msgid "@name, #tag, ?doc, content"
+msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt"
+
+#: ../../include/nav.php:291
+msgid "Please wait..."
+msgstr "Bitte warten..."
+
+#: ../../include/nav.php:297
+msgid "Add Apps"
+msgstr "Apps hinzufügen"
+
+#: ../../include/nav.php:298
+msgid "Arrange Apps"
+msgstr "Apps anordnen"
+
+#: ../../include/nav.php:299
+msgid "Toggle System Apps"
+msgstr "System-Apps umschalten"
+
+#: ../../include/photos.php:150
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
+
+#: ../../include/photos.php:161
+msgid "Image file is empty."
+msgstr "Bilddatei ist leer."
+
+#: ../../include/photos.php:322
+msgid "Photo storage failed."
+msgstr "Fotospeicherung fehlgeschlagen."
+
+#: ../../include/photos.php:364
+msgid "a new photo"
+msgstr "ein neues Foto"
+
+#: ../../include/photos.php:368
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
+
+#: ../../include/photos.php:660
+msgid "Upload New Photos"
+msgstr "Neue Fotos hochladen"
+
+#: ../../include/zot.php:767
+msgid "Invalid data packet"
+msgstr "Ungültiges Datenpaket"
+
+#: ../../include/zot.php:794
+msgid "Unable to verify channel signature"
+msgstr "Konnte die Signatur des Kanals nicht verifizieren"
+
+#: ../../include/zot.php:2529
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
+
+#: ../../include/zot.php:4180
+msgid "invalid target signature"
+msgstr "Ungültige Signatur des Ziels"
+
+#: ../../include/group.php:22
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen."
+
+#: ../../include/group.php:264
+msgid "Add new connections to this privacy group"
+msgstr "Neue Verbindung zu dieser Gruppe hinzufügen"
+
+#: ../../include/group.php:306
+msgid "edit"
+msgstr "Bearbeiten"
+
+#: ../../include/group.php:329
+msgid "Edit group"
+msgstr "Gruppe ändern"
+
+#: ../../include/group.php:330
+msgid "Add privacy group"
+msgstr "Gruppe hinzufügen"
+
+#: ../../include/group.php:331
+msgid "Channels not in any privacy group"
+msgstr "Kanäle, die in keiner Gruppe sind"
+
+#: ../../include/connections.php:128
+msgid "New window"
+msgstr "Neues Fenster"
+
+#: ../../include/connections.php:129
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"
+
+#: ../../include/auth.php:148
+msgid "Logged out."
+msgstr "Ausgeloggt."
+
+#: ../../include/auth.php:263
+msgid "Email validation is incomplete. Please check your email."
+msgstr "E-Mail-Bestätigung nicht abgeschlossen. Bitte prüfe Deine E-Mails (ggf. Spam-Filterung mit berücksichtigen)."
+
+#: ../../include/auth.php:279
+msgid "Failed authentication"
+msgstr "Authentifizierung fehlgeschlagen"
+
+#: ../../include/help.php:34
+msgid "Help:"
+msgstr "Hilfe:"
+
+#: ../../include/help.php:78
+msgid "Not Found"
+msgstr "Nicht gefunden"
diff --git a/view/de-de/hstrings.php b/view/de-de/hstrings.php
new file mode 100644
index 000000000..c4c3c9091
--- /dev/null
+++ b/view/de-de/hstrings.php
@@ -0,0 +1,3208 @@
+<?php
+
+if(! function_exists("string_plural_select_de_de")) {
+function string_plural_select_de_de($n){
+ return ($n != 1);;
+}}
+App::$rtl = 0;
+App::$strings["Can view my channel stream and posts"] = "Kann meinen Kanal-Stream und meine Beiträge sehen";
+App::$strings["Can send me their channel stream and posts"] = "Kann mir die Beiträge aus seinem/ihrem Kanal schicken";
+App::$strings["Can view my default channel profile"] = "Kann mein Standardprofil sehen";
+App::$strings["Can view my connections"] = "Kann meine Verbindungen sehen";
+App::$strings["Can view my file storage and photos"] = "Kann meine Datei- und Bilderordner sehen";
+App::$strings["Can upload/modify my file storage and photos"] = "Kann in meine Datei- und Bilderordner hochladen/ändern";
+App::$strings["Can view my channel webpages"] = "Kann die Webseiten meines Kanals sehen";
+App::$strings["Can view my wiki pages"] = "Kann meine Wiki-Seiten sehen";
+App::$strings["Can create/edit my channel webpages"] = "Kann Webseiten in meinem Kanal erstellen/ändern";
+App::$strings["Can write to my wiki pages"] = "Kann meine Wiki-Seiten bearbeiten";
+App::$strings["Can post on my channel (wall) page"] = "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen";
+App::$strings["Can comment on or like my posts"] = "Darf meine Beiträge kommentieren und mögen/nicht mögen";
+App::$strings["Can send me private mail messages"] = "Kann mir private Nachrichten schicken";
+App::$strings["Can like/dislike profiles and profile things"] = "Kann Profile und Profilsachen mögen/nicht mögen";
+App::$strings["Can forward to all my channel connections via @+ mentions in posts"] = "Kann an alle meine Verbindungen via @-Erwähnungen Nachrichten weiterleiten";
+App::$strings["Can chat with me"] = "Kann mit mir chatten";
+App::$strings["Can source my public posts in derived channels"] = "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden";
+App::$strings["Can administer my channel"] = "Kann meinen Kanal administrieren";
+App::$strings["Social Networking"] = "Soziales Netzwerk";
+App::$strings["Social - Mostly Public"] = "Soziales Netzwerk - Weitgehend öffentlich";
+App::$strings["Social - Restricted"] = "Soziales Netzwerk - Beschränkt";
+App::$strings["Social - Private"] = "Soziales Netzwerk - Privat";
+App::$strings["Community Forum"] = "Forum";
+App::$strings["Forum - Mostly Public"] = "Forum - Weitgehend öffentlich";
+App::$strings["Forum - Restricted"] = "Forum - Beschränkt";
+App::$strings["Forum - Private"] = "Forum - Privat";
+App::$strings["Feed Republish"] = "Teilen von Feeds";
+App::$strings["Feed - Mostly Public"] = "Feeds - Weitgehend öffentlich";
+App::$strings["Feed - Restricted"] = "Feeds - Beschränkt";
+App::$strings["Special Purpose"] = "Für besondere Zwecke";
+App::$strings["Special - Celebrity/Soapbox"] = "Speziell - Mitteilungs-Kanal (keine Kommentare)";
+App::$strings["Special - Group Repository"] = "Speziell - Gruppenarchiv";
+App::$strings["Other"] = "Andere";
+App::$strings["Custom/Expert Mode"] = "Benutzerdefiniert/Expertenmodus";
+App::$strings["Requested profile is not available."] = "Das angefragte Profil ist nicht verfügbar.";
+App::$strings["Permission denied."] = "Berechtigung verweigert.";
+App::$strings["Block Name"] = "Block-Name";
+App::$strings["Blocks"] = "Blöcke";
+App::$strings["Block Title"] = "Titel des Blocks";
+App::$strings["Created"] = "Erstellt";
+App::$strings["Edited"] = "Geändert";
+App::$strings["Create"] = "Erstelle";
+App::$strings["Edit"] = "Bearbeiten";
+App::$strings["Share"] = "Teilen";
+App::$strings["Delete"] = "Löschen";
+App::$strings["View"] = "Ansicht";
+App::$strings["Total invitation limit exceeded."] = "Einladungslimit überschritten.";
+App::$strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse.";
+App::$strings["Please join us on \$Projectname"] = "Schließe Dich uns auf \$Projectname an!";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines \$Projectname-Servers.";
+App::$strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d Nachricht gesendet.",
+ 1 => "%d Nachrichten gesendet.",
+);
+App::$strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen";
+App::$strings["Send invitations"] = "Einladungen senden";
+App::$strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:";
+App::$strings["Your message:"] = "Deine Nachricht:";
+App::$strings["Please join my community on \$Projectname."] = "Schließe Dich uns auf \$Projectname an!";
+App::$strings["You will need to supply this invitation code:"] = "Bitte verwende bei der Registrierung den folgenden Einladungscode:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registriere Dich auf einem beliebigen \$Projectname-Hub (sie sind alle miteinander verbunden)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Gib meine \$Projectname-Adresse im Suchfeld ein.";
+App::$strings["or visit"] = "oder besuche";
+App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]";
+App::$strings["Submit"] = "Absenden";
+App::$strings["Articles"] = "Artikel";
+App::$strings["Add Article"] = "Artikel hinzufügen";
+App::$strings["Item not found"] = "Element nicht gefunden";
+App::$strings["Layout Name"] = "Layout-Name";
+App::$strings["Layout Description (Optional)"] = "Layout-Beschreibung (optional)";
+App::$strings["Edit Layout"] = "Layout bearbeiten";
+App::$strings["Permission denied"] = "Keine Berechtigung";
+App::$strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator";
+App::$strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor";
+App::$strings["Profile"] = "Profil";
+App::$strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen.";
+App::$strings["Visible To"] = "Sichtbar für";
+App::$strings["All Connections"] = "Alle Verbindungen";
+App::$strings["INVALID EVENT DISMISSED!"] = "UNGÃœLTIGEN TERMIN ABGELEHNT!";
+App::$strings["Summary: "] = "Zusammenfassung:";
+App::$strings["Unknown"] = "Unbekannt";
+App::$strings["Date: "] = "Datum:";
+App::$strings["Reason: "] = "Grund:";
+App::$strings["INVALID CARD DISMISSED!"] = "UNGÃœLTIGE KARTE ABGELEHNT!";
+App::$strings["Name: "] = "Name: ";
+App::$strings["Event title"] = "Termintitel";
+App::$strings["Start date and time"] = "Startdatum und -zeit";
+App::$strings["Example: YYYY-MM-DD HH:mm"] = "Beispiel: JJJJ-MM-TT HH:mm";
+App::$strings["End date and time"] = "Enddatum und -zeit";
+App::$strings["Description"] = "Beschreibung";
+App::$strings["Location"] = "Ort";
+App::$strings["Previous"] = "Voriges";
+App::$strings["Next"] = "Nächste";
+App::$strings["Today"] = "Heute";
+App::$strings["Month"] = "Monat";
+App::$strings["Week"] = "Woche";
+App::$strings["Day"] = "Tag";
+App::$strings["List month"] = "Liste Monat";
+App::$strings["List week"] = "Liste Woche";
+App::$strings["List day"] = "Liste Tag";
+App::$strings["More"] = "Mehr";
+App::$strings["Less"] = "Weniger";
+App::$strings["Select calendar"] = "Kalender auswählen";
+App::$strings["Delete all"] = "Alles löschen";
+App::$strings["Cancel"] = "Abbrechen";
+App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen ist leider noch nicht implementiert.";
+App::$strings["Name"] = "Name";
+App::$strings["Organisation"] = "Organisation";
+App::$strings["Title"] = "Titel";
+App::$strings["Phone"] = "Telefon";
+App::$strings["Email"] = "E-Mail";
+App::$strings["Instant messenger"] = "Sofortnachrichtendienst";
+App::$strings["Website"] = "Webseite";
+App::$strings["Address"] = "Adresse";
+App::$strings["Note"] = "Hinweis";
+App::$strings["Mobile"] = "Mobil";
+App::$strings["Home"] = "Home";
+App::$strings["Work"] = "Arbeit";
+App::$strings["Add Contact"] = "Kontakt hinzufügen";
+App::$strings["Add Field"] = "Feld hinzufügen";
+App::$strings["Update"] = "Aktualisieren";
+App::$strings["P.O. Box"] = "Postfach";
+App::$strings["Additional"] = "Zusätzlich";
+App::$strings["Street"] = "Straße";
+App::$strings["Locality"] = "Ortschaft";
+App::$strings["Region"] = "Region";
+App::$strings["ZIP Code"] = "Postleitzahl";
+App::$strings["Country"] = "Land";
+App::$strings["Default Calendar"] = "Standardkalender";
+App::$strings["Default Addressbook"] = "Standardadressbuch";
+App::$strings["This site is not a directory server"] = "Diese Webseite ist kein Verzeichnisserver";
+App::$strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können.";
+App::$strings["Posts and comments"] = "Beiträge und Kommentare";
+App::$strings["Only posts"] = "Nur Beiträge";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet.";
+App::$strings["Export Channel"] = "Kanal exportieren";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportiert die grundlegenden Kanal-Informationen in eine kleine Datei. Diese stellt eine Sicherung Deiner Verbindungen, Berechtigungen, Profile und Basisdaten bereit, die für den Import auf einem anderen Hub verwendet werden kann, aber nicht die Beiträge Deines Kanals enthält.";
+App::$strings["Export Content"] = "Kanal und Inhalte exportieren";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportiert Deine Kanal-Informationen sowie alle zugehörigen Inhalte in eine JSON-Sicherungsdatei. Die sichert alle Verbindungen, Berechtigungen, Profildaten und Deine Beiträge aus mehreren Monaten. Diese Datei kann SEHR groß werden! Bitte habe ein wenig Geduld – es kann mehrere Minuten dauern, bis der Download startet.";
+App::$strings["Export your posts from a given year."] = "Exportiert die Beiträge des angegebenen Jahres.";
+App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "Du kannst auch die Beiträge und Konversationen eines bestimmten Jahres oder Monats exportieren. Ändere das Datum in der Adresszeile Deines Browsers, um andere Zeiträume zu wählen. Falls der Export fehlschlägt (vermutlich, weil auf diesem Hub nicht genügend Speicher zur Verfügung steht), versuche es noch einmal mit einer kleineren Zeitspanne.";
+App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Jahres, zum Beispiel dieses Jahres, auszuwählen, klicke <a href=\"%1\$s\">%2\$s</a>.";
+App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Monats auszuwählen, zum Beispiel vom Januar diesen Jahres, klicke <a href=\"%1\$s\">%2\$s</a>.";
+App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1\$s\">%2\$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst.";
+App::$strings["Welcome to Hubzilla!"] = "Willkommen bei Hubzilla!";
+App::$strings["You have got no unseen posts..."] = "Du hast keine ungelesenen Beiträge...";
+App::$strings["Public access denied."] = "Öffentlichen Zugriff verweigert.";
+App::$strings["Search"] = "Suche";
+App::$strings["Items tagged with: %s"] = "Beiträge mit Schlagwort: %s";
+App::$strings["Search results for: %s"] = "Suchergebnisse für: %s";
+App::$strings["Public Stream"] = "Öffentlicher Beitrags-Stream";
+App::$strings["Location not found."] = "Klon nicht gefunden.";
+App::$strings["Location lookup failed."] = "Nachschlagen des Kanal-Ortes fehlgeschlagen";
+App::$strings["Please select another location to become primary before removing the primary location."] = "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst.";
+App::$strings["Syncing locations"] = "Synchronisiere Klone";
+App::$strings["No locations found."] = "Keine Klon-Adressen gefunden.";
+App::$strings["Manage Channel Locations"] = "Klon-Adressen verwalten";
+App::$strings["Primary"] = "Primär";
+App::$strings["Drop"] = "Löschen";
+App::$strings["Sync Now"] = "Jetzt synchronisieren";
+App::$strings["Please wait several minutes between consecutive operations."] = "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!";
+App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst.";
+App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt.";
+App::$strings["Change Order of Pinned Navbar Apps"] = "Reihenfolge der in der Navigation angepinnten Apps ändern";
+App::$strings["Change Order of App Tray Apps"] = "Reihenfolge der Apps im App-Menü ändern";
+App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Benutze die Pfeil-Knöpfe, um die jeweilige App in der Navigationsleiste nach links (oben) oder rechts (unten) zu bewegen";
+App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Benutze die Pfeil-Knöpfe, um die jeweilige App im App-Menü nach oben oder unten zu bewegen";
+App::$strings["Menu not found."] = "Menü nicht gefunden";
+App::$strings["Unable to create element."] = "Element konnte nicht erstellt werden.";
+App::$strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren.";
+App::$strings["Unable to add menu element."] = "Kann Menü-Bestandteil nicht hinzufügen.";
+App::$strings["Not found."] = "Nicht gefunden.";
+App::$strings["Menu Item Permissions"] = "Zugriffsrechte des Menü-Elements";
+App::$strings["(click to open/close)"] = "(zum öffnen/schließen anklicken)";
+App::$strings["Link Name"] = "Name des Links";
+App::$strings["Link or Submenu Target"] = "Ziel des Links oder Untermenüs";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "URL des Links eingeben oder Menünamen wählen, um ein Untermenü anzulegen.";
+App::$strings["Use magic-auth if available"] = "Magic-Auth verwenden, falls verfügbar";
+App::$strings["No"] = "Nein";
+App::$strings["Yes"] = "Ja";
+App::$strings["Open link in new window"] = "Öffne Link in neuem Fenster";
+App::$strings["Order in list"] = "Reihenfolge in der Liste";
+App::$strings["Higher numbers will sink to bottom of listing"] = "Größere Nummern werden weiter unten in der Auflistung einsortiert";
+App::$strings["Submit and finish"] = "Absenden und fertigstellen";
+App::$strings["Submit and continue"] = "Absenden und fortfahren";
+App::$strings["Menu:"] = "Menü:";
+App::$strings["Link Target"] = "Ziel des Links";
+App::$strings["Edit menu"] = "Menü bearbeiten";
+App::$strings["Edit element"] = "Bestandteil bearbeiten";
+App::$strings["Drop element"] = "Bestandteil löschen";
+App::$strings["New element"] = "Neues Bestandteil";
+App::$strings["Edit this menu container"] = "Diesen Menü-Container bearbeiten";
+App::$strings["Add menu element"] = "Menüelement hinzufügen";
+App::$strings["Delete this menu item"] = "Lösche dieses Menü-Bestandteil";
+App::$strings["Edit this menu item"] = "Bearbeite dieses Menü-Bestandteil";
+App::$strings["Menu item not found."] = "Menü-Bestandteil nicht gefunden.";
+App::$strings["Menu item deleted."] = "Menü-Bestandteil gelöscht.";
+App::$strings["Menu item could not be deleted."] = "Menü-Bestandteil kann nicht gelöscht werden.";
+App::$strings["Edit Menu Element"] = "Bearbeite Menü-Bestandteil";
+App::$strings["Link text"] = "Link Text";
+App::$strings["Calendar entries imported."] = "Kalendereinträge wurden importiert.";
+App::$strings["No calendar entries found."] = "Keine Kalendereinträge gefunden.";
+App::$strings["Event can not end before it has started."] = "Termin-Ende liegt vor dem Beginn.";
+App::$strings["Unable to generate preview."] = "Vorschau konnte nicht erzeugt werden.";
+App::$strings["Event title and start time are required."] = "Titel und Startzeit des Termins sind erforderlich.";
+App::$strings["Event not found."] = "Termin nicht gefunden.";
+App::$strings["event"] = "Termin";
+App::$strings["Edit event title"] = "Termintitel bearbeiten";
+App::$strings["Required"] = "Benötigt";
+App::$strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)";
+App::$strings["Edit Category"] = "Kategorie bearbeiten";
+App::$strings["Category"] = "Kategorie";
+App::$strings["Edit start date and time"] = "Startdatum und -zeit bearbeiten";
+App::$strings["Finish date and time are not known or not relevant"] = "Enddatum und -zeit sind unbekannt oder irrelevant";
+App::$strings["Edit finish date and time"] = "Enddatum und -zeit bearbeiten";
+App::$strings["Finish date and time"] = "Enddatum und -zeit";
+App::$strings["Adjust for viewer timezone"] = "An die Zeitzone des Betrachters anpassen";
+App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien.";
+App::$strings["Edit Description"] = "Beschreibung bearbeiten";
+App::$strings["Edit Location"] = "Ort bearbeiten";
+App::$strings["Preview"] = "Vorschau";
+App::$strings["Permission settings"] = "Berechtigungs-Einstellungen";
+App::$strings["Timezone:"] = "Zeitzone:";
+App::$strings["Advanced Options"] = "Weitere Optionen";
+App::$strings["l, F j"] = "l, j. F";
+App::$strings["Edit event"] = "Termin bearbeiten";
+App::$strings["Delete event"] = "Termin löschen";
+App::$strings["Link to Source"] = "Link zur Quelle";
+App::$strings["calendar"] = "Kalender";
+App::$strings["Edit Event"] = "Termin bearbeiten";
+App::$strings["Create Event"] = "Termin anlegen";
+App::$strings["Export"] = "Exportieren";
+App::$strings["Event removed"] = "Termin gelöscht";
+App::$strings["Failed to remove event"] = "Termin konnte nicht gelöscht werden";
+App::$strings["App installed."] = "App installiert.";
+App::$strings["Malformed app."] = "Fehlerhafte App.";
+App::$strings["Embed code"] = "Code einbetten";
+App::$strings["Edit App"] = "App bearbeiten";
+App::$strings["Create App"] = "App erstellen";
+App::$strings["Name of app"] = "Name der App";
+App::$strings["Location (URL) of app"] = "Ort (URL) der App";
+App::$strings["Photo icon URL"] = "URL zum Icon";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 Pixel – optional";
+App::$strings["Categories (optional, comma separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
+App::$strings["Version ID"] = "Versions-ID";
+App::$strings["Price of app"] = "Preis der App";
+App::$strings["Location (URL) to purchase app"] = "Ort (URL), um die App zu kaufen";
+App::$strings["Please login."] = "Bitte melde dich an.";
+App::$strings["Hub not found."] = "Server nicht gefunden.";
+App::$strings["photo"] = "Foto";
+App::$strings["status"] = "Status";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt nun %2\$ss %3\$s";
+App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s folgt %2\$ss %3\$s nicht mehr";
+App::$strings["Channel not found."] = "Kanal nicht gefunden.";
+App::$strings["Insert web link"] = "Link einfügen";
+App::$strings["Title (optional)"] = "Titel (optional)";
+App::$strings["Edit Article"] = "Artikel bearbeiten";
+App::$strings["Nothing to import."] = "Nichts zu importieren.";
+App::$strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
+App::$strings["Imported file is empty."] = "Die importierte Datei ist leer.";
+App::$strings["Warning: Database versions differ by %1\$d updates."] = "Achtung: Datenbankversionen unterscheiden sich um %1\$d Aktualisierungen.";
+App::$strings["Import completed"] = "Import abgeschlossen";
+App::$strings["Import Items"] = "Beiträge importieren";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren.";
+App::$strings["File to Upload"] = "Hochzuladende Datei:";
+App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet.";
+App::$strings["Name or caption"] = "Name oder Titel";
+App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ ";
+App::$strings["Choose a short nickname"] = "Wähle einen kurzen Spitznamen";
+App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst, z.B. nickname%s";
+App::$strings["Channel role and privacy"] = "Kanaltyp und Privatspäre-Einstellungen";
+App::$strings["Select a channel role with your privacy requirements."] = "Wähle einen passenden Kanaltyp mit den zugehörigen Voreinstellungen zur Privatsphäre.";
+App::$strings["Read more about roles"] = "Mehr Informationen über Rollen";
+App::$strings["Create Channel"] = "Einen neuen Kanal anlegen";
+App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Ein Kanal ist Deine Identität in diesem Netzwerk. Er kann eine Person, ein Blog oder ein Forum repräsentieren, nur um ein paar Beispiele zu nennen. Kanäle können Verbindungen miteinander eingehen, um Informationen zu teilen, jeweils basierend auf sehr detaillierten Berechtigungseinstellungen.";
+App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server.";
+App::$strings["Validate"] = "Überprüfe";
+App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden.";
+App::$strings["Remove This Channel"] = "Diesen Kanal löschen";
+App::$strings["WARNING: "] = "WARNUNG: ";
+App::$strings["This channel will be completely removed from the network. "] = "Dieser Kanal wird vollständig aus dem Netzwerk gelöscht.";
+App::$strings["This action is permanent and can not be undone!"] = "Dieser Schritt ist endgültig und kann nicht rückgängig gemacht werden!";
+App::$strings["Please enter your password for verification:"] = "Bitte gib zur Bestätigung Dein Passwort ein:";
+App::$strings["Remove this channel and all its clones from the network"] = "Lösche diesen Kanal und all seine Klone aus dem Netzwerk";
+App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk";
+App::$strings["Remove Channel"] = "Kanal löschen";
+App::$strings["Files: shared with me"] = "Dateien, die mit mir geteilt wurden";
+App::$strings["NEW"] = "NEU";
+App::$strings["Size"] = "Größe";
+App::$strings["Last Modified"] = "Zuletzt geändert";
+App::$strings["Remove all files"] = "Alle Dateien löschen";
+App::$strings["Remove this file"] = "Diese Datei löschen";
+App::$strings["\$Projectname Server - Setup"] = "\$Projectname Server-Einrichtung";
+App::$strings["Could not connect to database."] = "Kann nicht mit der Datenbank verbinden.";
+App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS.";
+App::$strings["Could not create table."] = "Konnte Tabelle nicht erstellen.";
+App::$strings["Your site database has been installed."] = "Die Datenbank Deines Hubs wurde installiert.";
+App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren.";
+App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Lies die Datei \"install/INSTALL.txt\".";
+App::$strings["System check"] = "Systemprüfung";
+App::$strings["Check again"] = "Nochmal prüfen";
+App::$strings["Database connection"] = "Datenbankverbindung";
+App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Um \$Projectname zu installieren, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können.";
+App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast.";
+App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst.";
+App::$strings["Database Server Name"] = "Datenbankservername";
+App::$strings["Default is 127.0.0.1"] = "Standard ist 127.0.0.1";
+App::$strings["Database Port"] = "Datenbankport";
+App::$strings["Communication port number - use 0 for default"] = "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung";
+App::$strings["Database Login Name"] = "Datenbank-Benutzername";
+App::$strings["Database Login Password"] = "Datenbank-Passwort";
+App::$strings["Database Name"] = "Datenbankname";
+App::$strings["Database Type"] = "Datenbanktyp";
+App::$strings["Site administrator email address"] = "E-Mail Adresse des Seiten-Administrators";
+App::$strings["Your account email address must match this in order to use the web admin panel."] = "Die E-Mail-Adresse Deines Kontos muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst.";
+App::$strings["Website URL"] = "Webseiten-URL";
+App::$strings["Please use SSL (https) URL if available."] = "Nutze wenn möglich eine SSL-URL (https).";
+App::$strings["Please select a default timezone for your website"] = "Standard-Zeitzone für Deinen Server";
+App::$strings["Site settings"] = "Seiteneinstellungen";
+App::$strings["PHP version 5.5 or greater is required."] = "PHP-Version 5.5 oder höher ist erforderlich.";
+App::$strings["PHP version"] = "PHP-Version";
+App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden.";
+App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen.";
+App::$strings["PHP executable path"] = "PHP-Pfad zu ausführbarer Datei";
+App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren.";
+App::$strings["Command line PHP"] = "PHP-Befehlszeile";
+App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "Prüfung auf Kommandozeilen-PHP fehlgeschlagen, da shell_exec() deaktiviert ist. Dies wird aber benötigt.";
+App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert.";
+App::$strings["This is required for message delivery to work."] = "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert.";
+App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden.";
+App::$strings["You can adjust these settings in the server php.ini file."] = "Du kannst diese Einstellungen in der php.ini - Datei des Servers anpassen.";
+App::$strings["PHP upload limits"] = "PHP-Hochladebeschränkungen";
+App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen.";
+App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung.";
+App::$strings["Generate encryption keys"] = "Verschlüsselungsschlüssel erzeugen";
+App::$strings["libCurl PHP module"] = "libCurl-PHP-Modul";
+App::$strings["GD graphics PHP module"] = "GD-Grafik-PHP-Modul";
+App::$strings["OpenSSL PHP module"] = "OpenSSL-PHP-Modul";
+App::$strings["PDO database PHP module"] = "PDO-Datenbank-PHP-Modul";
+App::$strings["mb_string PHP module"] = "mb_string-PHP-Modul";
+App::$strings["xml PHP module"] = "xml-PHP-Modul";
+App::$strings["zip PHP module"] = "zip PHP Modul";
+App::$strings["Apache mod_rewrite module"] = "Apache-mod_rewrite-Modul";
+App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert.";
+App::$strings["exec"] = "exec";
+App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Fehler: exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert";
+App::$strings["shell_exec"] = "shell_exec";
+App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Fehler: shell_exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert";
+App::$strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert.";
+App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert.";
+App::$strings["Error: openssl PHP module required but not installed."] = "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert.";
+App::$strings["Error: PDO database PHP module required but not installed."] = "Fehler: PDO-Datenbank-PHP-Modul ist erforderlich, aber nicht installiert.";
+App::$strings["Error: mb_string PHP module required but not installed."] = "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert.";
+App::$strings["Error: xml PHP module required for DAV but not installed."] = "Fehler: Das xml-PHP-Modul wird für DAV benötigt, ist aber nicht installiert.";
+App::$strings["Error: zip PHP module required but not installed."] = "Fehler: Das zip PHP Modul ist erforderlich, ist aber nicht installiert.";
+App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht.";
+App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst.";
+App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst.";
+App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt.";
+App::$strings[".htconfig.php is writable"] = ".htconfig.php ist beschreibbar";
+App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Diese Software verwendet die Smarty3 Template Engine, um Vorlagen für die Webdarstellung zu verarbeiten. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses.";
+App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat.";
+App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält.";
+App::$strings["%s is writable"] = "%s ist beschreibbar";
+App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Web-Stammverzeichnisses.";
+App::$strings["store is writable"] = "store ist schreibbar";
+App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server.";
+App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich.";
+App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können.";
+App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer \$Projectname-Hubs (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird).";
+App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen.";
+App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind.";
+App::$strings["If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications."] = "Wenn Du sicher bist, dass das Zertifikat gültig und von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, prüfe auf ggf. noch zu installierende Zwischenzertifikate (intermediate). Diese werden nicht unbedingt von Browsern benötigt, aber sehr wohl für die Kommunikation zwischen Servern.";
+App::$strings["SSL certificate validation"] = "SSL Zertifikatverifizierung";
+App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:";
+App::$strings["Url rewrite is working"] = "Url rewrite funktioniert";
+App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen.";
+App::$strings["Errors encountered creating database tables."] = "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten.";
+App::$strings["<h1>What next?</h1>"] = "<h1>Wie geht es jetzt weiter?</h1>";
+App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten.";
+App::$strings["Continue"] = "Fortfahren";
+App::$strings["Premium Channel Setup"] = "Premium-Kanal-Einrichtung";
+App::$strings["Enable premium channel connection restrictions"] = "Einschränkungen für einen Premium-Kanal aktivieren";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc.";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig.";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite.";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)";
+App::$strings["Restricted or Premium Channel"] = "Eingeschränkter oder Premium-Kanal";
+App::$strings["Queue Statistics"] = "Warteschlangenstatistiken";
+App::$strings["Total Entries"] = "Einträge insgesamt";
+App::$strings["Priority"] = "Priorität";
+App::$strings["Destination URL"] = "Ziel-URL";
+App::$strings["Mark hub permanently offline"] = "Hub als permanent offline markieren";
+App::$strings["Empty queue for this hub"] = "Warteschlange für diesen Hub leeren";
+App::$strings["Last known contact"] = "Letzter Kontakt";
+App::$strings["Off"] = "Aus";
+App::$strings["On"] = "An";
+App::$strings["Lock feature %s"] = "Blockiere die Funktion %s";
+App::$strings["Manage Additional Features"] = "Zusätzliche Funktionen verwalten";
+App::$strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert";
+App::$strings["Executing %s failed. Check system logs."] = "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle.";
+App::$strings["Update %s was successfully applied."] = "Update %s wurde erfolgreich ausgeführt.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt.";
+App::$strings["Update function %s could not be found."] = "Update-Funktion %s konnte nicht gefunden werden.";
+App::$strings["Failed Updates"] = "Fehlgeschlagene Aktualisierungen";
+App::$strings["Mark success (if update was manually applied)"] = "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)";
+App::$strings["Attempt to execute this update step automatically"] = "Versuche, diesen Updateschritt automatisch auszuführen";
+App::$strings["No failed updates."] = "Keine fehlgeschlagenen Aktualisierungen.";
+App::$strings["Item not found."] = "Element nicht gefunden.";
+App::$strings["Plugin %s disabled."] = "Plug-In %s deaktiviert.";
+App::$strings["Plugin %s enabled."] = "Plug-In %s aktiviert.";
+App::$strings["Disable"] = "Deaktivieren";
+App::$strings["Enable"] = "Aktivieren";
+App::$strings["Administration"] = "Administration";
+App::$strings["Plugins"] = "Plug-Ins";
+App::$strings["Toggle"] = "Umschalten";
+App::$strings["Settings"] = "Einstellungen";
+App::$strings["Author: "] = "Autor: ";
+App::$strings["Maintainer: "] = "Betreuer:";
+App::$strings["Minimum project version: "] = "Minimale Version des Projekts:";
+App::$strings["Maximum project version: "] = "Maximale Version des Projekts:";
+App::$strings["Minimum PHP version: "] = "Minimale PHP Version:";
+App::$strings["Compatible Server Roles: "] = "Kompatible Serverrollen: ";
+App::$strings["Requires: "] = "Benötigt:";
+App::$strings["Disabled - version incompatibility"] = "Abgeschaltet - Versionsinkompatibilität";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "Gib die öffentliche Git-Repository-URL des Plugin-Repository an.";
+App::$strings["Plugin repo git URL"] = "Plugin-Repository Git URL";
+App::$strings["Custom repo name"] = "Benutzerdefinierter Repository-Name";
+App::$strings["(optional)"] = "(optional)";
+App::$strings["Download Plugin Repo"] = "Plugin-Repository herunterladen";
+App::$strings["Install new repo"] = "Neues Repository installieren";
+App::$strings["Install"] = "Installieren";
+App::$strings["Manage Repos"] = "Repositorien verwalten";
+App::$strings["Installed Plugin Repositories"] = "Installierte Plugin-Repositorien";
+App::$strings["Install a New Plugin Repository"] = "Ein neues Plugin-Repository installieren";
+App::$strings["Switch branch"] = "Zweig/Branch wechseln";
+App::$strings["Remove"] = "Entfernen";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "%s Konto blockiert/freigegeben",
+ 1 => "%s Konten blockiert/freigegeben",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "%s Konto gelöscht",
+ 1 => "%s Konten gelöscht",
+);
+App::$strings["Account not found"] = "Konto nicht gefunden";
+App::$strings["Account '%s' deleted"] = "Konto '%s' gelöscht";
+App::$strings["Account '%s' blocked"] = "Konto '%s' blockiert";
+App::$strings["Account '%s' unblocked"] = "Konto '%s' freigegeben";
+App::$strings["Accounts"] = "Konten";
+App::$strings["select all"] = "Alle auswählen";
+App::$strings["Registrations waiting for confirm"] = "Registrierungen warten auf Bestätigung";
+App::$strings["Request date"] = "Antragsdatum";
+App::$strings["No registrations."] = "Keine Registrierungen.";
+App::$strings["Approve"] = "Genehmigen";
+App::$strings["Deny"] = "Verweigern";
+App::$strings["Block"] = "Blockieren";
+App::$strings["Unblock"] = "Freigeben";
+App::$strings["ID"] = "ID";
+App::$strings["All Channels"] = "Alle Kanäle";
+App::$strings["Register date"] = "Registrierungs-Datum";
+App::$strings["Last login"] = "Letzte Anmeldung";
+App::$strings["Expires"] = "Verfällt";
+App::$strings["Service Class"] = "Service-Klasse";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?";
+App::$strings["Log settings updated."] = "Protokoll-Einstellungen aktualisiert.";
+App::$strings["Logs"] = "Protokolle";
+App::$strings["Clear"] = "Leeren";
+App::$strings["Debugging"] = "Debugging";
+App::$strings["Log file"] = "Protokolldatei";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis.";
+App::$strings["Log level"] = "Protokollstufe";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "%s Kanal gesperrt/freigegeben",
+ 1 => "%s Kanäle gesperrt/freigegeben",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "Code für %s Kanal gesperrt/freigegeben",
+ 1 => "Code für %s Kanäle gesperrt/freigegeben",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "%s Kanal gelöscht",
+ 1 => "%s Kanäle gelöscht",
+);
+App::$strings["Channel not found"] = "Kanal nicht gefunden";
+App::$strings["Channel '%s' deleted"] = "Kanal '%s' gelöscht";
+App::$strings["Channel '%s' censored"] = "Kanal '%s' gesperrt";
+App::$strings["Channel '%s' uncensored"] = "Kanal '%s' freigegeben";
+App::$strings["Channel '%s' code allowed"] = "Code für Kanal '%s' freigegeben";
+App::$strings["Channel '%s' code disallowed"] = "Code für Kanal '%s' gesperrt";
+App::$strings["Channels"] = "Kanäle";
+App::$strings["Censor"] = "Sperren";
+App::$strings["Uncensor"] = "Freigeben";
+App::$strings["Allow Code"] = "Code erlauben";
+App::$strings["Disallow Code"] = "Code sperren";
+App::$strings["Channel"] = "Kanal";
+App::$strings["UID"] = "UID";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?";
+App::$strings["Theme settings updated."] = "Design-Einstellungen aktualisiert.";
+App::$strings["No themes found."] = "Keine Designs gefunden.";
+App::$strings["Screenshot"] = "Bildschirmfoto";
+App::$strings["Themes"] = "Designs";
+App::$strings["[Experimental]"] = "[Experimentell]";
+App::$strings["[Unsupported]"] = "[Nicht unterstützt]";
+App::$strings["Site settings updated."] = "Site-Einstellungen aktualisiert.";
+App::$strings["Default"] = "Standard";
+App::$strings["%s - (Incompatible)"] = "%s - (Inkompatibel)";
+App::$strings["mobile"] = "mobil";
+App::$strings["experimental"] = "experimentell";
+App::$strings["unsupported"] = "nicht unterstützt";
+App::$strings["Yes - with approval"] = "Ja - mit Zustimmung";
+App::$strings["My site is not a public server"] = "Mein Server ist kein öffentlicher Server";
+App::$strings["My site has paid access only"] = "Meine Seite hat nur bezahlten Zugriff";
+App::$strings["My site has free access only"] = "Meine Seite hat nur freien Zugriff";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades";
+App::$strings["Beginner/Basic"] = "Anfänger/Basis";
+App::$strings["Novice - not skilled but willing to learn"] = "Anfänger - unerfahren, aber bereit zu lernen";
+App::$strings["Intermediate - somewhat comfortable"] = "Fortgeschritten - relativ komfortabel";
+App::$strings["Advanced - very comfortable"] = "Fortgeschritten - sehr komfortabel";
+App::$strings["Expert - I can write computer code"] = "Experte - Ich kann Computercode schreiben";
+App::$strings["Wizard - I probably know more than you do"] = "Zauberer - ich kann wahrscheinlich mehr als Du";
+App::$strings["Site"] = "Seite";
+App::$strings["Registration"] = "Registrierung";
+App::$strings["File upload"] = "Dateiupload";
+App::$strings["Policies"] = "Richtlinien";
+App::$strings["Advanced"] = "Fortgeschritten";
+App::$strings["Site name"] = "Seitenname";
+App::$strings["Site default technical skill level"] = "Standard-Qualifikationsstufe der Website";
+App::$strings["Used to provide a member experience matched to technical comfort level"] = "Dies wird verwendet, um eine Benutzererfahrung passend zur technischen Qualifikationsstufe zu bieten.";
+App::$strings["Lock the technical skill level setting"] = "Sperre die technische Qualifikationsstufe";
+App::$strings["Members can set their own technical comfort level by default"] = "Benutzer können standardmäßig ihre eigene technische Qualifikationsstufe einstellen";
+App::$strings["Banner/Logo"] = "Banner/Logo";
+App::$strings["Unfiltered HTML/CSS/JS is allowed"] = "Ungefiltertes HTML/CSS/JS ist erlaubt";
+App::$strings["Administrator Information"] = "Administrator-Informationen";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden.";
+App::$strings["Site Information"] = "Seiteninformationen";
+App::$strings["Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here"] = "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden.";
+App::$strings["System language"] = "System-Sprache";
+App::$strings["System theme"] = "System-Design";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard-System-Design – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Design-Einstellungen ändern</a>";
+App::$strings["Mobile system theme"] = "System-Design für mobile Geräte:";
+App::$strings["Theme for mobile devices"] = "Theme für mobile Geräte";
+App::$strings["Allow Feeds as Connections"] = "Feeds als Verbindungen erlauben";
+App::$strings["(Heavy system resource usage)"] = "(führt zu hoher Systemlast)";
+App::$strings["Maximum image size"] = "Maximale Bildgröße";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung).";
+App::$strings["Does this site allow new member registration?"] = "Erlaubt dieser Server die Registrierung neuer Nutzer?";
+App::$strings["Invitation only"] = "Nur mit Einladung";
+App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden.";
+App::$strings["Minimum age"] = "Mindestalter";
+App::$strings["Minimum age (in years) for who may register on this site."] = "Mindestalter (in Jahren) für alle, die sich auf dieser Website anmelden möchten.";
+App::$strings["Which best describes the types of account offered by this hub?"] = "Was ist die passendste Beschreibung der Konten auf diesem Hub?";
+App::$strings["Register text"] = "Registrierungstext";
+App::$strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt.";
+App::$strings["Site homepage to show visitors (default: login box)"] = "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen.";
+App::$strings["Preserve site homepage URL"] = "Homepage-URL schützen";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten.";
+App::$strings["Accounts abandoned after x days"] = "Konten gelten nach X Tagen als unbenutzt";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit.";
+App::$strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
+App::$strings["Verify Email Addresses"] = "E-Mail-Adressen überprüfen";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen).";
+App::$strings["Force publish"] = "Veröffentlichung erzwingen";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen.";
+App::$strings["Import Public Streams"] = "Öffentliche Beiträge importieren";
+App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert.";
+App::$strings["Site only Public Streams"] = "Öffentlichen Beitragsstrom auf diesen Server beschränken";
+App::$strings["Allow access to public content originating only from this site if Imported Public Streams are disabled."] = "Erlaubt den Zugriff auf öffentliche Beiträge von ausschließlich dieser Website (diesem Server), wenn \"Öffentliche Beiträge importieren\" ausgeschaltet ist.";
+App::$strings["Allow anybody on the internet to access the Public streams"] = "Allen im Internet Zugriff auf den öffentlichen Beitragsstrom erlauben";
+App::$strings["Disable to require authentication before viewing. Warning: this content is unmoderated."] = "Deaktiviert die erforderliche Authentifizierung vor dem Ansehen. Warnung: Diese Inhalte sind nicht moderiert.";
+App::$strings["Login on Homepage"] = "Log-in auf der Startseite";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden.";
+App::$strings["Enable context help"] = "Kontext-Hilfe aktivieren";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird.";
+App::$strings["Reply-to email address for system generated email."] = "Antwortadresse (reply-to) für Emails, die vom System generiert wurden.";
+App::$strings["Sender (From) email address for system generated email."] = "Absenderadresse (from) für Emails, die vom System generiert wurden.";
+App::$strings["Name of email sender for system generated email."] = "Name des Versenders von Emails, die vom System generiert wurden.";
+App::$strings["Directory Server URL"] = "Verzeichnisserver-URL";
+App::$strings["Default directory server"] = "Standard-Verzeichnisserver";
+App::$strings["Proxy user"] = "Proxy Benutzer";
+App::$strings["Proxy URL"] = "Proxy URL";
+App::$strings["Network timeout"] = "Netzwerk-Timeout";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen).";
+App::$strings["Delivery interval"] = "Auslieferung Intervall";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
+App::$strings["Deliveries per process"] = "Zustellungen pro Prozess";
+App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5.";
+App::$strings["Queue Threshold"] = "Warteschlangen-Grenzwert";
+App::$strings["Always defer immediate delivery if queue contains more than this number of entries."] = "Unmittelbare Zustellung immer verzögern, wenn die Warteschlange mehr als diese Anzahl von Einträgen enthält.";
+App::$strings["Poll interval"] = "Abfrageintervall";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet.";
+App::$strings["Path to ImageMagick convert program"] = "Pfad zum ImageMagick-Programm convert";
+App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "Wenn gesetzt, dann verwende dieses Programm zum Erzeugen von Vorschaubildern großer Fotos (>4000 Pixel in beiden Richtungen), anderenfalls kann Speicherüberlauf auftreten. Beispiel: /usr/bin/convert";
+App::$strings["Allow SVG thumbnails in file browser"] = "Erlaube SVG-Vorschaubilder im Dateibrowser";
+App::$strings["WARNING: SVG images may contain malicious code."] = "Warnung: SVG-Grafiken können Schadcode enthalten.";
+App::$strings["Maximum Load Average"] = "Maximales Load Average";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50";
+App::$strings["Expiration period in days for imported (grid/network) content"] = "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen";
+App::$strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte";
+App::$strings["Public servers: Optional landing (marketing) webpage for new registrants"] = "Öffentliche Server: Optionale Einstiegsseite (landing page) für neue Mitglieder vor deren Anmeldung";
+App::$strings["Create this page first. Default is %s/register"] = "Erstelle zunächst die entsprechende Seite. Standard ist %s/register";
+App::$strings["Page to display after creating a new channel"] = "Seite, die nach Erstellung eines neuen Kanals angezeigt werden soll";
+App::$strings["Recommend: profiles, go, or settings"] = "Empfohlen: profiles, go oder settings";
+App::$strings["Optional: site location"] = "Optional: Standort der Website";
+App::$strings["Region or country"] = "Region oder Land";
+App::$strings["New Profile Field"] = "Neues Profilfeld";
+App::$strings["Field nickname"] = "Kurzname für das Feld";
+App::$strings["System name of field"] = "Systemname des Feldes";
+App::$strings["Input type"] = "Art des Inhalts";
+App::$strings["Field Name"] = "Feldname";
+App::$strings["Label on profile pages"] = "Bezeichnung auf Profilseiten";
+App::$strings["Help text"] = "Hilfetext";
+App::$strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)";
+App::$strings["Save"] = "Speichern";
+App::$strings["Field definition not found"] = "Feld-Definition nicht gefunden";
+App::$strings["Edit Profile Field"] = "Profilfeld bearbeiten";
+App::$strings["Profile Fields"] = "Profil Felder";
+App::$strings["Basic Profile Fields"] = "Notwendige Profil Felder";
+App::$strings["Advanced Profile Fields"] = "Erweiterte Profil Felder";
+App::$strings["(In addition to basic fields)"] = "(zusätzlich zu notwendige Felder)";
+App::$strings["All available fields"] = "Alle verfügbaren Felder";
+App::$strings["Custom Fields"] = "Benutzerdefinierte Felder";
+App::$strings["Create Custom Field"] = "Erstelle benutzerdefiniertes Feld";
+App::$strings["Password changed for account %d."] = "Passwort für Konto %d geändert.";
+App::$strings["Account settings updated."] = "Kontoeinstellungen aktualisiert.";
+App::$strings["Account not found."] = "Konto nicht gefunden.";
+App::$strings["Account Edit"] = "Kontobearbeitung";
+App::$strings["New Password"] = "Neues Passwort";
+App::$strings["New Password again"] = "Neues Passwort wiederholen";
+App::$strings["Technical skill level"] = "Technische Qualifikationsstufe";
+App::$strings["Account language (for emails)"] = "Kontosprache (für E-Mails)";
+App::$strings["Service class"] = "Dienstklasse";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "Standardmäßig wird ungefiltertes HTML in eingebetteten Inhalten zugelassen. Das ist prinzipiell unsicher.";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "Die empfohlene Einstellung ist, ungefiltertes HTML nur von den nachfolgenden Webseiten zu erlauben:";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert.";
+App::$strings["Security"] = "Sicherheit";
+App::$strings["Block public"] = "Öffentlichen Zugriff blockieren";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "Setze den \"Transport Security\" HTTP Header";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "Setze den \"Content Security Policy\" HTTP Header";
+App::$strings["Allowed email domains"] = "Erlaubte Domains für E-Mails";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
+App::$strings["Not allowed email domains"] = "Nicht erlaubte Domains für E-Mails";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde.";
+App::$strings["Allow communications only from these sites"] = "Kommunikation nur von diesen Servern/Domains erlauben";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben.";
+App::$strings["Block communications from these sites"] = "Kommunikation von diesen Servern/Domains blockieren";
+App::$strings["Allow communications only from these channels"] = "Kommunikation nur von diesen Kanälen erlauben";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. ";
+App::$strings["Block communications from these channels"] = "Kommunikation von folgenden Kanälen blockieren";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Erlaube Einbettungen nur von sicheren (SSL) Webseiten und Links.";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Erlaube Einbettung von Inhalten mit ungefiltertem HTML nur von diesen Domains";
+App::$strings["One site per line. By default embedded content is filtered."] = "Eine Website/Domain pro Zeile. Standardmäßig wird eingebetteter Inhalt gefiltert.";
+App::$strings["Block embedded HTML from these domains"] = "Eingebettete HTML Inhalte von diesen Servern/Domains blockieren";
+App::$strings["Remote privacy information not available."] = "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar.";
+App::$strings["Visible to:"] = "Sichtbar für:";
+App::$strings["__ctx:acl__ Profile"] = "Profil";
+App::$strings["Comment approved"] = "Kommentar bestätigt";
+App::$strings["Comment deleted"] = "Kommentar gelöscht";
+App::$strings["Permission category saved."] = "Berechtigungsrolle gespeichert.";
+App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Verwende dieses Formular, um Berechtigungsrollen für verschiedene Gruppen von Personen oder Verbindungen zu erstellen.";
+App::$strings["Permission Categories"] = "Berechtigungsrollen";
+App::$strings["Permission Name"] = "Name der Berechtigungsrolle";
+App::$strings["My Settings"] = "Meine Einstellungen";
+App::$strings["inherited"] = "geerbt";
+App::$strings["Individual Permissions"] = "Individuelle Zugriffsrechte";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden.";
+App::$strings["Friends"] = "Freunde";
+App::$strings["Settings updated."] = "Einstellungen aktualisiert.";
+App::$strings["Nobody except yourself"] = "Niemand außer Dir selbst";
+App::$strings["Only those you specifically allow"] = "Nur die, denen Du es explizit erlaubst";
+App::$strings["Approved connections"] = "Angenommene Verbindungen";
+App::$strings["Any connections"] = "Beliebige Verbindungen";
+App::$strings["Anybody on this website"] = "Jeder auf dieser Website";
+App::$strings["Anybody in this network"] = "Alle \$Projectname-Mitglieder";
+App::$strings["Anybody authenticated"] = "Jeder authentifizierte";
+App::$strings["Anybody on the internet"] = "Jeder im Internet";
+App::$strings["Publish your default profile in the network directory"] = "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen";
+App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?";
+App::$strings["or"] = "oder";
+App::$strings["Your channel address is"] = "Deine Kanal-Adresse lautet";
+App::$strings["Your files/photos are accessible via WebDAV at"] = "Deine Dateien/Fotos sind via WebDAV verfügbar auf";
+App::$strings["Channel Settings"] = "Kanal-Einstellungen";
+App::$strings["Basic Settings"] = "Grundeinstellungen";
+App::$strings["Full Name:"] = "Voller Name:";
+App::$strings["Email Address:"] = "Email Adresse:";
+App::$strings["Your Timezone:"] = "Ihre Zeitzone:";
+App::$strings["Default Post Location:"] = "Standardstandort:";
+App::$strings["Geographical location to display on your posts"] = "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll";
+App::$strings["Use Browser Location:"] = "Standort des Browsers verwenden:";
+App::$strings["Adult Content"] = "Nicht jugendfreie Inhalte";
+App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)";
+App::$strings["Security and Privacy Settings"] = "Sicherheits- und Datenschutz-Einstellungen";
+App::$strings["Your permissions are already configured. Click to view/adjust"] = "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern";
+App::$strings["Hide my online presence"] = "Meine Online-Präsenz verbergen";
+App::$strings["Prevents displaying in your profile that you are online"] = "Verhindert die Anzeige Deines Online-Status in deinem Profil";
+App::$strings["Simple Privacy Settings:"] = "Einfache Privatsphäre-Einstellungen";
+App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>";
+App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>";
+App::$strings["Private - <em>default private, never open or public</em>"] = "Privat – <em>Standard privat, nie offen oder öffentlich</em>";
+App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Blockiert – <em>Alle standardmäßig blockiert</em>";
+App::$strings["Allow others to tag your posts"] = "Erlaube anderen, Deine Beiträge zu verschlagworten";
+App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren";
+App::$strings["Channel Permission Limits"] = "Kanal-Berechtigungslimits";
+App::$strings["Expire other channel content after this many days"] = "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen";
+App::$strings["0 or blank to use the website limit."] = "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden.";
+App::$strings["This website expires after %d days."] = "Diese Webseite läuft nach %d Tagen ab.";
+App::$strings["This website does not expire imported content."] = "Diese Webseite lässt importierte Inhalte nicht verfallen.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist.";
+App::$strings["Maximum Friend Requests/Day:"] = "Maximale Kontaktanfragen pro Tag:";
+App::$strings["May reduce spam activity"] = "Kann die Spam-Aktivität verringern";
+App::$strings["Default Privacy Group"] = "Standard-Gruppe";
+App::$strings["Use my default audience setting for the type of object published"] = "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps";
+App::$strings["Profile to assign new connections"] = "Profil, welches neuen Verbindungen zugewiesen wird";
+App::$strings["Channel permissions category:"] = "Zugriffsrechte-Kategorie des Kanals:";
+App::$strings["Default Permissions Group"] = "Standard-Berechtigungsgruppe";
+App::$strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:";
+App::$strings["Useful to reduce spamming"] = "Nützlich, um Spam zu verringern";
+App::$strings["Notification Settings"] = "Benachrichtigungs-Einstellungen";
+App::$strings["By default post a status message when:"] = "Sende standardmäßig Status-Nachrichten, wenn:";
+App::$strings["accepting a friend request"] = "Du eine Verbindungsanfrage annimmst";
+App::$strings["joining a forum/community"] = "Du einem Forum beitrittst";
+App::$strings["making an <em>interesting</em> profile change"] = "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst";
+App::$strings["Send a notification email when:"] = "Eine E-Mail-Benachrichtigung senden, wenn:";
+App::$strings["You receive a connection request"] = "Du eine Verbindungsanfrage erhältst";
+App::$strings["Your connections are confirmed"] = "Eine Verbindung bestätigt wurde";
+App::$strings["Someone writes on your profile wall"] = "Jemand auf Deine Pinnwand schreibt";
+App::$strings["Someone writes a followup comment"] = "Jemand einen Beitrag kommentiert";
+App::$strings["You receive a private message"] = "Du eine private Nachricht erhältst";
+App::$strings["You receive a friend suggestion"] = "Du einen Kontaktvorschlag erhältst";
+App::$strings["You are tagged in a post"] = "Du in einem Beitrag erwähnt wurdest";
+App::$strings["You are poked/prodded/etc. in a post"] = "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest";
+App::$strings["Someone likes your post/comment"] = "Jemand mag Ihren Beitrag/Kommentar";
+App::$strings["Show visual notifications including:"] = "Visuelle Benachrichtigungen anzeigen für:";
+App::$strings["Unseen grid activity"] = "Ungesehene Netzwerk-Aktivität";
+App::$strings["Unseen channel activity"] = "Ungesehene Kanal-Aktivität";
+App::$strings["Unseen private messages"] = "Ungelesene persönliche Nachrichten";
+App::$strings["Recommended"] = "Empfohlen";
+App::$strings["Upcoming events"] = "Baldige Termine";
+App::$strings["Events today"] = "Heutige Termine";
+App::$strings["Upcoming birthdays"] = "Baldige Geburtstage";
+App::$strings["Not available in all themes"] = "Nicht in allen Designs verfügbar";
+App::$strings["System (personal) notifications"] = "System – (persönliche) Benachrichtigungen";
+App::$strings["System info messages"] = "System – Info-Nachrichten";
+App::$strings["System critical alerts"] = "System – kritische Warnungen";
+App::$strings["New connections"] = "Neue Verbindungen";
+App::$strings["System Registrations"] = "System – Registrierungen";
+App::$strings["Unseen shared files"] = "Ungesehene geteilte Dateien";
+App::$strings["Unseen public activity"] = "Ungesehene öffentliche Aktivität";
+App::$strings["Email notification hub (hostname)"] = "Hub für E-Mail-Benachrichtigungen (Hostname)";
+App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Wenn Dein Kanal auf mehreren Hubs geklont ist, setze die Einstellung auf deinen bevorzugten Hub. Dies verhindert Mehrfachzustellung von E-Mail-Benachrichtigungen. Beispiel: %s";
+App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen";
+App::$strings["Notify me of events this many days in advance"] = "Benachrichtige mich zu Terminen so viele Tage im Voraus";
+App::$strings["Must be greater than 0"] = "Muss größer als 0 sein";
+App::$strings["Advanced Account/Page Type Settings"] = "Erweiterte Konten- und Seitenart-Einstellungen";
+App::$strings["Change the behaviour of this account for special situations"] = "Ändere das Verhalten dieses Kontos unter speziellen Umständen";
+App::$strings["Miscellaneous Settings"] = "Sonstige Einstellungen";
+App::$strings["Default photo upload folder"] = "Voreingestellter Ordner für hochgeladene Fotos";
+App::$strings["%Y - current year, %m - current month"] = "%Y - aktuelles Jahr, %m - aktueller Monat";
+App::$strings["Default file upload folder"] = "Voreingestellter Ordner für hochgeladene Dateien";
+App::$strings["Personal menu to display in your channel pages"] = "Eigenes Menü zur Anzeige auf den Seiten deines Kanals";
+App::$strings["Remove this channel."] = "Diesen Kanal löschen";
+App::$strings["Firefox Share \$Projectname provider"] = "\$Projectname-Provider für Firefox Share";
+App::$strings["Start calendar week on Monday"] = "Beginne die kalendarische Woche am Montag";
+App::$strings["Additional Features"] = "Zusätzliche Funktionen";
+App::$strings["This channel is limited to %d tokens"] = "Dieser Kanal ist auf %d Token begrenzt";
+App::$strings["Name and Password are required."] = "Name und Passwort sind erforderlich.";
+App::$strings["Token saved."] = "Token gespeichert.";
+App::$strings["Use this form to create temporary access identifiers to share things with non-members. These identities may be used in Access Control Lists and visitors may login using these credentials to access private content."] = "Mit diesem Formular kannst Du temporäre Zugangs-IDs anlegen, um Inhalte mit Nicht-Mitgliedern zu teilen. Die IDs können in Berechtigungslisten (ACLs) verwendet werden, und Besucher können sich damit einloggen, um auf private Inhalte zuzugreifen.";
+App::$strings["You may also provide <em>dropbox</em> style access links to friends and associates by adding the Login Password to any specific site URL as shown. Examples:"] = "Du kannst auch <em>Dropbox</em>-ähnliche Zugriffslinks an Andere weitergeben, indem du das Login-Passwort an eine entsprechende URL anhängst wie nachfolgend gezeigt. Beispiele:";
+App::$strings["Guest Access Tokens"] = "Gastzugangstoken";
+App::$strings["Login Name"] = "Anmeldename";
+App::$strings["Login Password"] = "Anmeldepasswort";
+App::$strings["Expires (yyyy-mm-dd)"] = "Läuft ab (jjjj-mm-tt)";
+App::$strings["Their Settings"] = "Deren Einstellungen";
+App::$strings["Not valid email."] = "Keine gültige E-Mail Adresse.";
+App::$strings["Protected email address. Cannot change to that email."] = "Geschützte E-Mail Adresse. Diese kann nicht verändert werden.";
+App::$strings["System failure storing new email. Please try again."] = "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal.";
+App::$strings["Technical skill level updated"] = "Technische Qualifikationsstufe aktualisiert";
+App::$strings["Password verification failed."] = "Passwortüberprüfung fehlgeschlagen.";
+App::$strings["Passwords do not match. Password unchanged."] = "Kennwörter stimmen nicht überein. Kennwort nicht verändert.";
+App::$strings["Empty passwords are not allowed. Password unchanged."] = "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert.";
+App::$strings["Password changed."] = "Kennwort geändert.";
+App::$strings["Password update failed. Please try again."] = "Kennwortänderung fehlgeschlagen. Bitte versuche es noch einmal.";
+App::$strings["Account Settings"] = "Konto-Einstellungen";
+App::$strings["Current Password"] = "Aktuelles Passwort";
+App::$strings["Enter New Password"] = "Gib ein neues Passwort ein";
+App::$strings["Confirm New Password"] = "Bestätige das neue Passwort";
+App::$strings["Leave password fields blank unless changing"] = "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern";
+App::$strings["Your technical skill level"] = "Deine technische Qualifikationsstufe";
+App::$strings["Used to provide a member experience and additional features consistent with your comfort level"] = "Dies wird verwendet, um Dir eine Benutzererfahrung sowie zusätzliche Funktionen passend zu Deiner technischen Qualifikationsstufe zu bieten (Bedienkomfort beim Umgang mit Anwendungen).";
+App::$strings["Remove Account"] = "Konto entfernen";
+App::$strings["Remove this account including all its channels"] = "Dieses Konto inklusive all seiner Kanäle löschen";
+App::$strings["Affinity Slider settings updated."] = "Die Beziehungsgrad-Schieberegler-Einstellungen wurden aktualisiert.";
+App::$strings["No feature settings configured"] = "Keine Funktions-Einstellungen konfiguriert";
+App::$strings["Default maximum affinity level"] = "Voreinstellung für maximalen Beziehungsgrad";
+App::$strings["0-99 default 99"] = "0-99 - Standard 99";
+App::$strings["Default minimum affinity level"] = "Voreinstellung für minimalen Beziehungsgrad";
+App::$strings["0-99 - default 0"] = "0-99 - Standard 0";
+App::$strings["Affinity Slider Settings"] = "Beziehungsgrad-Schieberegler-Einstellungen";
+App::$strings["Addon Settings"] = "Addon-Einstellungen";
+App::$strings["Please save/submit changes to any panel before opening another."] = "Bitte speichere alle Änderungen in diesem Bereich, bevor Du einen anderen öffnest.";
+App::$strings["%s - (Experimental)"] = "%s – (experimentell)";
+App::$strings["Display Settings"] = "Anzeige-Einstellungen";
+App::$strings["Theme Settings"] = "Design-Einstellungen";
+App::$strings["Custom Theme Settings"] = "Benutzerdefinierte Design-Einstellungen";
+App::$strings["Content Settings"] = "Inhaltseinstellungen";
+App::$strings["Display Theme:"] = "Anzeige-Design:";
+App::$strings["Select scheme"] = "Schema wählen";
+App::$strings["Preload images before rendering the page"] = "Bilder im voraus laden, bevor die Seite angezeigt wird";
+App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "Die empfundene Ladezeit wird sich erhöhen, aber dafür ist das Layout stabil, sobald eine Seite angezeigt wird";
+App::$strings["Enable user zoom on mobile devices"] = "Zoom auf Mobilgeräten aktivieren";
+App::$strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren";
+App::$strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 Sekunden, kein Maximum";
+App::$strings["Maximum number of conversations to load at any time:"] = "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:";
+App::$strings["Maximum of 100 items"] = "Maximum: 100 Beiträge";
+App::$strings["Show emoticons (smilies) as images"] = "Emoticons (Smilies) als Bilder anzeigen";
+App::$strings["Provide channel menu in navigation bar"] = "Kanal-Menü in der Navigationsleiste zur Verfügung stellen";
+App::$strings["Default: channel menu located in app menu"] = "Voreinstellung: Kanal-Menü ist im App-Menü integriert";
+App::$strings["Manual conversation updates"] = "Manuelle Konversationsaktualisierung";
+App::$strings["Default is on, turning this off may increase screen jumping"] = "Voreinstellung ist An, dies abzuschalten kann das unerwartete Springen der Seitenanzeige erhöhen.";
+App::$strings["Link post titles to source"] = "Beitragstitel zum Originalbeitrag verlinken";
+App::$strings["System Page Layout Editor - (advanced)"] = "System-Seitenlayout-Editor (für Experten)";
+App::$strings["Use blog/list mode on channel page"] = "Blog-/Listenmodus auf der Kanalseite verwenden";
+App::$strings["(comments displayed separately)"] = "(Kommentare werden separat angezeigt)";
+App::$strings["Use blog/list mode on grid page"] = "Blog-/Listenmodus auf der Netzwerkseite verwenden";
+App::$strings["Channel page max height of content (in pixels)"] = "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)";
+App::$strings["click to expand content exceeding this height"] = "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden.";
+App::$strings["Grid page max height of content (in pixels)"] = "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite";
+App::$strings["Name is required"] = "Name ist erforderlich";
+App::$strings["Key and Secret are required"] = "Schlüssel und Geheimnis werden benötigt";
+App::$strings["Add application"] = "Anwendung hinzufügen";
+App::$strings["Name of application"] = "Name der Anwendung";
+App::$strings["Consumer Key"] = "Consumer Key";
+App::$strings["Automatically generated - change if desired. Max length 20"] = "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20";
+App::$strings["Consumer Secret"] = "Consumer Secret";
+App::$strings["Redirect"] = "Umleitung";
+App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert";
+App::$strings["Icon url"] = "Symbol-URL";
+App::$strings["Optional"] = "Optional";
+App::$strings["Application not found."] = "Die Anwendung wurde nicht gefunden.";
+App::$strings["Connected Apps"] = "Verbundene Apps";
+App::$strings["Client key starts with"] = "Client Key beginnt mit";
+App::$strings["No name"] = "Kein Name";
+App::$strings["Remove authorization"] = "Authorisierung aufheben";
+App::$strings["View Photo"] = "Foto ansehen";
+App::$strings["Edit Album"] = "Album bearbeiten";
+App::$strings["Upload"] = "Hochladen";
+App::$strings["Some blurb about what to do when you're new here"] = "Ein Hinweis, was man tun kann, wenn man neu hier ist";
+App::$strings["Thing updated"] = "Sache aktualisiert";
+App::$strings["Object store: failed"] = "Speichern des Objekts fehlgeschlagen";
+App::$strings["Thing added"] = "Sache hinzugefügt";
+App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+App::$strings["Show Thing"] = "Sache anzeigen";
+App::$strings["item not found."] = "Eintrag nicht gefunden";
+App::$strings["Edit Thing"] = "Sache bearbeiten";
+App::$strings["Select a profile"] = "Wähle ein Profil";
+App::$strings["Post an activity"] = "Aktivitätsnachricht senden";
+App::$strings["Only sends to viewers of the applicable profile"] = "Nur an Betrachter des ausgewählten Profils senden";
+App::$strings["Name of thing e.g. something"] = "Name der Sache, z. B. irgendwas";
+App::$strings["URL of thing (optional)"] = "URL der Sache (optional)";
+App::$strings["URL for photo of thing (optional)"] = "URL eines Fotos der Sache (optional)";
+App::$strings["Permissions"] = "Berechtigungen";
+App::$strings["Add Thing to your Profile"] = "Die Sache Deinem Profil hinzufügen";
+App::$strings["No more system notifications."] = "Keine System-Benachrichtigungen mehr.";
+App::$strings["System Notifications"] = "System-Benachrichtigungen";
+App::$strings["Channel added."] = "Kanal hinzugefügt.";
+App::$strings["Your service plan only allows %d channels."] = "Dein Vertrag erlaubt nur %d Kanäle.";
+App::$strings["No channel. Import failed."] = "Kein Kanal. Import fehlgeschlagen.";
+App::$strings["Import completed."] = "Import abgeschlossen.";
+App::$strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen.";
+App::$strings["Import Channel"] = "Kanal importieren";
+App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren.";
+App::$strings["Or provide the old server/hub details"] = "Oder gib die Details Deines bisherigen \$Projectname-Hubs ein";
+App::$strings["Your old identity address (xyz@example.com)"] = "Bisherige Kanal-Adresse (xyz@example.com)";
+App::$strings["Your old login email address"] = "Deine alte Login-E-Mail-Adresse";
+App::$strings["Your old login password"] = "Dein altes Passwort";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige \$Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein.";
+App::$strings["Make this hub my primary location"] = "Dieser $Pojectname-Hub ist mein primärer Hub.";
+App::$strings["Move this channel (disable all previous locations)"] = "Verschiebe diesen Kanal (deaktiviere alle vorherigen Adressen/Klone)";
+App::$strings["Import a few months of posts if possible (limited by available memory"] = "Importiere die Beiträge einiger Monate, sofern möglich (beschränkt durch verfügbaren Speicher)";
+App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen.";
+App::$strings["Authentication failed."] = "Authentifizierung fehlgeschlagen.";
+App::$strings["Remote Authentication"] = "Entfernte Authentifizierung";
+App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Deine Kanal-Adresse (z. B. channel@example.com)";
+App::$strings["Authenticate"] = "Authentifizieren";
+App::$strings["Permissions denied."] = "Berechtigung verweigert.";
+App::$strings["Import"] = "Import";
+App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
+App::$strings["Return to your app and insert this Security Code:"] = "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:";
+App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
+App::$strings["Item not available."] = "Element nicht verfügbar.";
+App::$strings["Edit Block"] = "Block bearbeiten";
+App::$strings["vcard"] = "VCard";
+App::$strings["Apps"] = "Apps";
+App::$strings["Manage apps"] = "Apps verwalten";
+App::$strings["Create new app"] = "Neue App erstellen";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s ist %2\$s";
+App::$strings["Mood"] = "Laune";
+App::$strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden";
+App::$strings["Blocked"] = "Blockiert";
+App::$strings["Ignored"] = "Ignoriert";
+App::$strings["Hidden"] = "Versteckt";
+App::$strings["Archived/Unreachable"] = "Archiviert/Unerreichbar";
+App::$strings["New"] = "Neu";
+App::$strings["All"] = "Alle";
+App::$strings["New Connections"] = "Neue Verbindungen";
+App::$strings["Show pending (new) connections"] = "Ausstehende (neue) Verbindungsanfragen anzeigen";
+App::$strings["Show all connections"] = "Alle Verbindungen anzeigen";
+App::$strings["Only show blocked connections"] = "Nur blockierte Verbindungen anzeigen";
+App::$strings["Only show ignored connections"] = "Nur ignorierte Verbindungen anzeigen";
+App::$strings["Only show archived/unreachable connections"] = "Nur archivierte/unerreichbare Verbindungen anzeigen";
+App::$strings["Only show hidden connections"] = "Nur versteckte Verbindungen anzeigen";
+App::$strings["Pending approval"] = "Wartet auf Genehmigung";
+App::$strings["Archived"] = "Archiviert";
+App::$strings["Not connected at this location"] = "An diesem Ort nicht verbunden";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Verbindung bearbeiten";
+App::$strings["Delete connection"] = "Verbindung löschen";
+App::$strings["Channel address"] = "Kanaladresse";
+App::$strings["Network"] = "Netzwerk";
+App::$strings["Call"] = "Anruf";
+App::$strings["Status"] = "Status";
+App::$strings["Connected"] = "Verbunden";
+App::$strings["Approve connection"] = "Verbindung genehmigen";
+App::$strings["Ignore connection"] = "Verbindung ignorieren";
+App::$strings["Ignore"] = "Ignorieren";
+App::$strings["Recent activity"] = "Kürzliche Aktivitäten";
+App::$strings["Connections"] = "Verbindungen";
+App::$strings["Search your connections"] = "Verbindungen durchsuchen";
+App::$strings["Connections search"] = "Verbindung suchen";
+App::$strings["Find"] = "Finde";
+App::$strings["item"] = "Beitrag";
+App::$strings["Source of Item"] = "Quelle des Elements";
+App::$strings["Bookmark added"] = "Lesezeichen hinzugefügt";
+App::$strings["My Bookmarks"] = "Meine Lesezeichen";
+App::$strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte";
+App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt.";
+App::$strings["Remove This Account"] = "Dieses Konto löschen";
+App::$strings["This account and all its channels will be completely removed from the network. "] = "Dieses Konto mit all seinen Kanälen wird vollständig aus dem Netzwerk gelöscht.";
+App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen";
+App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Standardmäßig werden nur die Kanalklone auf diesem \$Projectname-Hub aus dem Netzwerk entfernt";
+App::$strings["Page owner information could not be retrieved."] = "Informationen über den Besitzer der Seite konnten nicht gefunden werden.";
+App::$strings["Album not found."] = "Album nicht gefunden.";
+App::$strings["Delete Album"] = "Album löschen";
+App::$strings["Delete Photo"] = "Foto löschen";
+App::$strings["No photos selected"] = "Keine Fotos ausgewählt";
+App::$strings["Access to this item is restricted."] = "Der Zugriff auf dieses Foto ist eingeschränkt.";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB von %2$.2f MB Foto-Speicher belegt.";
+App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB Foto-Speicher belegt.";
+App::$strings["Upload Photos"] = "Fotos hochladen";
+App::$strings["Enter an album name"] = "Namen für ein neues Album eingeben";
+App::$strings["or select an existing album (doubleclick)"] = "oder ein bereits vorhandenes auswählen (Doppelklick)";
+App::$strings["Create a status post for this upload"] = "Einen Statusbeitrag für diesen Upload erzeugen";
+App::$strings["Caption (optional):"] = "Beschriftung (optional):";
+App::$strings["Description (optional):"] = "Beschreibung (optional):";
+App::$strings["Show Newest First"] = "Neueste zuerst anzeigen";
+App::$strings["Show Oldest First"] = "Älteste zuerst anzeigen";
+App::$strings["Permission denied. Access to this item may be restricted."] = "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden.";
+App::$strings["Photo not available"] = "Foto nicht verfügbar";
+App::$strings["Use as profile photo"] = "Als Profilfoto verwenden";
+App::$strings["Use as cover photo"] = "Als Titelbild verwenden";
+App::$strings["Private Photo"] = "Privates Foto";
+App::$strings["View Full Size"] = "In voller Größe anzeigen";
+App::$strings["Edit photo"] = "Foto bearbeiten";
+App::$strings["Rotate CW (right)"] = "Drehen im UZS (rechts)";
+App::$strings["Rotate CCW (left)"] = "Drehen gegen UZS (links)";
+App::$strings["Move photo to album"] = "Foto in Album verschieben";
+App::$strings["Enter a new album name"] = "Gib einen Namen für ein neues Album ein";
+App::$strings["or select an existing one (doubleclick)"] = "oder wähle ein bereits vorhandenes aus (Doppelklick)";
+App::$strings["Caption"] = "Bildunterschrift";
+App::$strings["Add a Tag"] = "Schlagwort hinzufügen";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Beispiele: @ben, @Karl_Prester, @lieschen@example.com";
+App::$strings["Flag as adult in album view"] = "In der Albumansicht als nicht jugendfrei markieren";
+App::$strings["I like this (toggle)"] = "Mir gefällt das (Umschalter)";
+App::$strings["I don't like this (toggle)"] = "Mir gefällt das nicht (Umschalter)";
+App::$strings["Please wait"] = "Bitte warten";
+App::$strings["This is you"] = "Das bist Du";
+App::$strings["Comment"] = "Kommentar";
+App::$strings["__ctx:title__ Likes"] = "Gefällt mir";
+App::$strings["__ctx:title__ Dislikes"] = "Gefällt mir nicht";
+App::$strings["__ctx:title__ Agree"] = "Zustimmungen";
+App::$strings["__ctx:title__ Disagree"] = "Ablehnungen";
+App::$strings["__ctx:title__ Abstain"] = "Enthaltungen";
+App::$strings["__ctx:title__ Attending"] = "Zusagen";
+App::$strings["__ctx:title__ Not attending"] = "Absagen";
+App::$strings["__ctx:title__ Might attend"] = "Vielleicht";
+App::$strings["View all"] = "Alles anzeigen";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "Gefällt mir",
+ 1 => "Gefällt mir",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Gefällt nicht",
+ 1 => "Gefällt nicht",
+);
+App::$strings["Photo Tools"] = "Fotowerkzeuge";
+App::$strings["In This Photo:"] = "Auf diesem Foto:";
+App::$strings["Map"] = "Karte";
+App::$strings["__ctx:noun__ Likes"] = "Gefällt mir";
+App::$strings["__ctx:noun__ Dislikes"] = "Gefällt nicht";
+App::$strings["Close"] = "Schließen";
+App::$strings["Recent Photos"] = "Neueste Fotos";
+App::$strings["Profile Unavailable."] = "Profil nicht verfügbar.";
+App::$strings["Not found"] = "Nicht gefunden";
+App::$strings["Invalid channel"] = "Ungültiger Kanal";
+App::$strings["Error retrieving wiki"] = "Fehler beim Abrufen des Wiki";
+App::$strings["Error creating zip file export folder"] = "Fehler bei der Erzeugung des Zip-Datei Export-Verzeichnisses ";
+App::$strings["Error downloading wiki: "] = "Fehler beim Herunterladen des Wiki:";
+App::$strings["Wikis"] = "Wikis";
+App::$strings["Download"] = "Herunterladen";
+App::$strings["Create New"] = "Neu anlegen";
+App::$strings["Wiki name"] = "Name des Wiki";
+App::$strings["Content type"] = "Inhaltstyp";
+App::$strings["Markdown"] = "Markdown";
+App::$strings["BBcode"] = "BBcode";
+App::$strings["Text"] = "Text";
+App::$strings["Type"] = "Typ";
+App::$strings["Any&nbsp;type"] = "Alle&nbsp;Arten";
+App::$strings["Lock content type"] = "Inhaltstyp sperren";
+App::$strings["Create a status post for this wiki"] = "Erzeuge einen Statusbeitrag für dieses Wiki";
+App::$strings["Edit Wiki Name"] = "Wiki-Namen bearbeiten";
+App::$strings["Wiki not found"] = "Wiki nicht gefunden";
+App::$strings["Rename page"] = "Seite umbenennen";
+App::$strings["Error retrieving page content"] = "Fehler beim Abrufen des Seiteninhalts";
+App::$strings["New page"] = "Neue Seite";
+App::$strings["Revision Comparison"] = "Revisionsvergleich";
+App::$strings["Revert"] = "Rückgängig machen";
+App::$strings["Short description of your changes (optional)"] = "Kurze Beschreibung Ihrer Änderungen (optional)";
+App::$strings["Source"] = "Quelle";
+App::$strings["New page name"] = "Neuer Seitenname";
+App::$strings["Embed image from photo albums"] = "Bild aus Fotoalben einbetten";
+App::$strings["Embed an image from your albums"] = "Betten Sie ein Bild aus Ihren Alben ein";
+App::$strings["OK"] = "Ok";
+App::$strings["Choose images to embed"] = "Wählen Sie Bilder zum Einbetten aus";
+App::$strings["Choose an album"] = "Wählen Sie ein Album aus";
+App::$strings["Choose a different album"] = "Wählen Sie ein anderes Album aus";
+App::$strings["Error getting album list"] = "Fehler beim Holen der Albenliste";
+App::$strings["Error getting photo link"] = "Fehler beim Holen des Fotolinks";
+App::$strings["Error getting album"] = "Fehler beim Holen des Albums";
+App::$strings["Error creating wiki. Invalid name."] = "Fehler beim Erstellen des Wiki. Ungültiger Name.";
+App::$strings["A wiki with this name already exists."] = "Es existiert bereits ein Wiki mit diesem Namen.";
+App::$strings["Wiki created, but error creating Home page."] = "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite";
+App::$strings["Error creating wiki"] = "Fehler beim Erstellen des Wiki";
+App::$strings["Error updating wiki. Invalid name."] = "Fehler beim Aktualisieren des Wikis. Ungültiger Name.";
+App::$strings["Error updating wiki"] = "Fehler beim Aktualisieren des Wikis";
+App::$strings["Wiki delete permission denied."] = "Wiki-Löschberechtigung verweigert.";
+App::$strings["Error deleting wiki"] = "Fehler beim Löschen des Wiki";
+App::$strings["New page created"] = "Neue Seite erstellt";
+App::$strings["Cannot delete Home"] = "Kann die Startseite nicht löschen";
+App::$strings["Current Revision"] = "Aktuelle Revision";
+App::$strings["Selected Revision"] = "Ausgewählte Revision";
+App::$strings["You must be authenticated."] = "Sie müssen authenzifiziert sein.";
+App::$strings["toggle full screen mode"] = "auf Vollbildmodus umschalten";
+App::$strings["Layout updated."] = "Layout aktualisiert.";
+App::$strings["Feature disabled."] = "Funktion deaktiviert.";
+App::$strings["Edit System Page Description"] = "Systemseitenbeschreibung bearbeiten";
+App::$strings["(modified)"] = "(geändert)";
+App::$strings["Reset"] = "Zurücksetzen";
+App::$strings["Layout not found."] = "Layout nicht gefunden.";
+App::$strings["Module Name:"] = "Modulname:";
+App::$strings["Layout Help"] = "Layout-Hilfe";
+App::$strings["Edit another layout"] = "Ein weiteres Layout bearbeiten";
+App::$strings["System layout"] = "System-Layout";
+App::$strings["Poke"] = "Anstupsen";
+App::$strings["Poke somebody"] = "Jemanden anstupsen";
+App::$strings["Poke/Prod"] = "Anstupsen/Knuffen";
+App::$strings["Poke, prod or do other things to somebody"] = "Jemanden anstupsen, knuffen oder sonstiges";
+App::$strings["Recipient"] = "Empfänger";
+App::$strings["Choose what you wish to do to recipient"] = "Wähle, was Du mit dem/r Empfänger/in tun willst";
+App::$strings["Make this post private"] = "Diesen Beitrag privat machen";
+App::$strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zurechtschneiden schlug fehl.";
+App::$strings["Profile Photos"] = "Profilfotos";
+App::$strings["Image resize failed."] = "Bild-Anpassung fehlgeschlagen.";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird.";
+App::$strings["Unable to process image"] = "Kann Bild nicht verarbeiten";
+App::$strings["Image upload failed."] = "Hochladen des Bilds fehlgeschlagen.";
+App::$strings["Unable to process image."] = "Kann Bild nicht verarbeiten.";
+App::$strings["Photo not available."] = "Foto nicht verfügbar.";
+App::$strings["Upload File:"] = "Datei hochladen:";
+App::$strings["Select a profile:"] = "Wähle ein Profil:";
+App::$strings["Use Photo for Profile"] = "Foto für Profil verwenden";
+App::$strings["Change Profile Photo"] = "Profilfoto ändern";
+App::$strings["Use"] = "Verwenden";
+App::$strings["Use a photo from your albums"] = "Ein Foto aus meinen Alben verwenden";
+App::$strings["Select existing photo"] = "Wähle ein vorhandenes Foto aus";
+App::$strings["Crop Image"] = "Bild zuschneiden";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Bitte schneide das Bild für eine optimale Anzeige passend zu.";
+App::$strings["Done Editing"] = "Bearbeitung fertigstellen";
+App::$strings["Away"] = "Abwesend";
+App::$strings["Online"] = "Online";
+App::$strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden.";
+App::$strings["Empty post discarded."] = "Leeren Beitrag verworfen.";
+App::$strings["Duplicate post suppressed."] = "Doppelter Beitrag unterdrückt.";
+App::$strings["System error. Post not saved."] = "Systemfehler. Beitrag nicht gespeichert.";
+App::$strings["Your comment is awaiting approval."] = "Dein Kommentar muss noch bestätigt werden.";
+App::$strings["Unable to obtain post information from database."] = "Beitragsinformationen können nicht aus der Datenbank abgerufen werden.";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht.";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht.";
+App::$strings["sent you a private message"] = "hat Dir eine private Nachricht geschickt";
+App::$strings["added your channel"] = "hat deinen Kanal hinzugefügt";
+App::$strings["requires approval"] = "Zustimmung erforderlich";
+App::$strings["g A l F d"] = "l, d. F, G:i \\U\\h\\r";
+App::$strings["[today]"] = "[Heute]";
+App::$strings["posted an event"] = "hat einen Termin veröffentlicht";
+App::$strings["shared a file with you"] = "hat eine Datei mit Dir geteilt";
+App::$strings["Invalid item."] = "Ungültiges Element.";
+App::$strings["Page not found."] = "Seite nicht gefunden.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen.";
+App::$strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden.";
+App::$strings["Connection updated."] = "Verbindung aktualisiert.";
+App::$strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren.";
+App::$strings["is now connected to"] = "ist jetzt verbunden mit";
+App::$strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen.";
+App::$strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar.";
+App::$strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen.";
+App::$strings["Connection has been removed."] = "Verbindung wurde gelöscht.";
+App::$strings["View Profile"] = "Profil ansehen";
+App::$strings["View %s's profile"] = "%ss Profil ansehen";
+App::$strings["Refresh Permissions"] = "Zugriffsrechte neu laden";
+App::$strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abrufen";
+App::$strings["Refresh Photo"] = "Foto aktualisieren";
+App::$strings["Fetch updated photo"] = "Aktualisiertes Profilfoto abrufen";
+App::$strings["Recent Activity"] = "Kürzliche Aktivitäten";
+App::$strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare";
+App::$strings["Block (or Unblock) all communications with this connection"] = "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen";
+App::$strings["This connection is blocked!"] = "Die Verbindung ist geblockt!";
+App::$strings["Unignore"] = "Nicht ignorieren";
+App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen";
+App::$strings["This connection is ignored!"] = "Die Verbindung wird ignoriert!";
+App::$strings["Unarchive"] = "Aus Archiv zurückholen";
+App::$strings["Archive"] = "Archivieren";
+App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)";
+App::$strings["This connection is archived!"] = "Die Verbindung ist archiviert!";
+App::$strings["Unhide"] = "Wieder sichtbar machen";
+App::$strings["Hide"] = "Verstecken";
+App::$strings["Hide or Unhide this connection from your other connections"] = "Diese Verbindung vor anderen Verbindungen verstecken/zeigen";
+App::$strings["This connection is hidden!"] = "Die Verbindung ist versteckt!";
+App::$strings["Delete this connection"] = "Verbindung löschen";
+App::$strings["Fetch Vcard"] = "Vcard abrufen";
+App::$strings["Fetch electronic calling card for this connection"] = "Rufe eine digitale Visitenkarte für diese Verbindung ab";
+App::$strings["Open Individual Permissions section by default"] = "Öffne standardmäßig den Bereich für individuelle Berechtigungen";
+App::$strings["Affinity"] = "Beziehung";
+App::$strings["Open Set Affinity section by default"] = "Öffne standardmäßig den Bereich für Beziehungsgrad-Einstellungen";
+App::$strings["Me"] = "Ich";
+App::$strings["Family"] = "Familie";
+App::$strings["Acquaintances"] = "Bekannte";
+App::$strings["Filter"] = "Filter";
+App::$strings["Open Custom Filter section by default"] = "Öffne standardmäßig den Bereich für benutzerdefinierte Filter";
+App::$strings["Approve this connection"] = "Verbindung genehmigen";
+App::$strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen";
+App::$strings["Set Affinity"] = "Beziehung festlegen";
+App::$strings["Set Profile"] = "Profil festlegen";
+App::$strings["Set Affinity & Profile"] = "Beziehung und Profile festlegen";
+App::$strings["This connection is unreachable from this location."] = "Diese Verbindung ist von diesem Ort unerreichbar.";
+App::$strings["This connection may be unreachable from other channel locations."] = "Diese Verbindung könnte von anderen Standpunkten des Kanals nicht erreichbar sein.";
+App::$strings["Location independence is not supported by their network."] = "Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt.";
+App::$strings["This connection is unreachable from this location. Location independence is not supported by their network."] = "Diese Verbindung ist von diesem Standort aus unerreichbar. Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt.";
+App::$strings["Connection Default Permissions"] = "Standardzugriffsrechte für neue Verbindungen:";
+App::$strings["Connection: %s"] = "Verbindung: %s";
+App::$strings["Apply these permissions automatically"] = "Diese Berechtigungen automatisch anwenden";
+App::$strings["Connection requests will be approved without your interaction"] = "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist.";
+App::$strings["Permission role"] = "Berechtigungsrolle";
+App::$strings["Loading"] = "Lädt...";
+App::$strings["Add permission role"] = "Berechtigungsrolle hinzufügen";
+App::$strings["This connection's primary address is"] = "Die Hauptadresse der Verbindung ist";
+App::$strings["Available locations:"] = "Verfügbare Klone:";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet.";
+App::$strings["Connection Tools"] = "Verbindungswerkzeuge";
+App::$strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen";
+App::$strings["Rating"] = "Bewertung";
+App::$strings["Slide to adjust your rating"] = "Verschieben, um Deine Bewertung einzustellen";
+App::$strings["Optionally explain your rating"] = "Optional kannst Du Deine Bewertung begründen";
+App::$strings["Custom Filter"] = "Benutzerdefinierter Filter";
+App::$strings["Only import posts with this text"] = "Nur Beiträge mit diesem Text importieren";
+App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren.";
+App::$strings["Do not import posts with this text"] = "Beiträge mit diesem Text nicht importieren";
+App::$strings["This information is public!"] = "Diese Information ist öffentlich!";
+App::$strings["Connection Pending Approval"] = "Verbindung wartet auf Bestätigung";
+App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird.";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen.";
+App::$strings["Last update:"] = "Letzte Aktualisierung:";
+App::$strings["Details"] = "Details";
+App::$strings["Room not found"] = "Chatraum nicht gefunden";
+App::$strings["Leave Room"] = "Raum verlassen";
+App::$strings["Delete Room"] = "Raum löschen";
+App::$strings["I am away right now"] = "Ich bin gerade nicht da";
+App::$strings["I am online"] = "Ich bin online";
+App::$strings["Bookmark this room"] = "Lesezeichen für diesen Raum setzen";
+App::$strings["Please enter a link URL:"] = "Gib eine URL ein:";
+App::$strings["Encrypt text"] = "Text verschlüsseln";
+App::$strings["New Chatroom"] = "Neuer Chatraum";
+App::$strings["Chatroom name"] = "Chatraumname";
+App::$strings["Expiration of chats (minutes)"] = "Verfall von Chats (Minuten)";
+App::$strings["%1\$s's Chatrooms"] = "%1\$ss Chaträume";
+App::$strings["No chatrooms available"] = "Keine Chaträume verfügbar";
+App::$strings["Expiration"] = "Verfall";
+App::$strings["min"] = "min";
+App::$strings["Photos"] = "Fotos";
+App::$strings["Files"] = "Dateien";
+App::$strings["Unable to update menu."] = "Kann Menü nicht aktualisieren.";
+App::$strings["Unable to create menu."] = "Kann Menü nicht erstellen.";
+App::$strings["Menu Name"] = "Name des Menüs";
+App::$strings["Unique name (not visible on webpage) - required"] = "Eindeutiger Name (nicht sichtbar auf der Webseite) – erforderlich";
+App::$strings["Menu Title"] = "Menütitel";
+App::$strings["Visible on webpage - leave empty for no title"] = "Sichtbar auf der Webseite – für keinen Titel leer lassen";
+App::$strings["Allow Bookmarks"] = "Lesezeichen erlauben";
+App::$strings["Menu may be used to store saved bookmarks"] = "Im Menü können gespeicherte Lesezeichen abgelegt werden";
+App::$strings["Submit and proceed"] = "Absenden und fortfahren";
+App::$strings["Menus"] = "Menüs";
+App::$strings["Bookmarks allowed"] = "Lesezeichen erlaubt";
+App::$strings["Delete this menu"] = "Lösche dieses Menü";
+App::$strings["Edit menu contents"] = "Bearbeite Menü Inhalte";
+App::$strings["Edit this menu"] = "Dieses Menü bearbeiten";
+App::$strings["Menu could not be deleted."] = "Menü konnte nicht gelöscht werden.";
+App::$strings["Edit Menu"] = "Menü bearbeiten";
+App::$strings["Add or remove entries to this menu"] = "Einträge zu diesem Menü hinzufügen oder entfernen";
+App::$strings["Menu name"] = "Menü Name";
+App::$strings["Must be unique, only seen by you"] = "Muss eindeutig sein, ist aber nur für Dich sichtbar";
+App::$strings["Menu title"] = "Menü Titel";
+App::$strings["Menu title as seen by others"] = "Menü Titel wie er von anderen gesehen wird";
+App::$strings["Allow bookmarks"] = "Erlaube Lesezeichen";
+App::$strings["Layouts"] = "Layouts";
+App::$strings["Help"] = "Hilfe";
+App::$strings["Comanche page description language help"] = "Hilfe zur Comanche-Seitenbeschreibungssprache";
+App::$strings["Layout Description"] = "Layout-Beschreibung";
+App::$strings["Download PDL file"] = "PDL-Datei herunterladen";
+App::$strings["Please refresh page"] = "Bitte die Seite neu laden";
+App::$strings["Unknown error"] = "Unbekannter Fehler";
+App::$strings["Token verification failed."] = "Überprüfung des Verifizierungscodes fehlgeschlagen.";
+App::$strings["Email Verification Required"] = "Email-Überprüfung erforderlich";
+App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "Ein Verifizierungscode wurde an Deine Emailadresse versendet [%s]. Gib diesen Code hier ein, um die Überprüfung abzuschließen. Bedenke, dass die Zustellung der Mail einige Zeit dauern kann, und überprüfe ggf. auch Spam- und andere Filter-Ordner, falls die Nachricht nicht erscheint.";
+App::$strings["Resend Email"] = "Email erneut versenden";
+App::$strings["Validation token"] = "Verifizierungscode";
+App::$strings["Post not found."] = "Beitrag nicht gefunden.";
+App::$strings["post"] = "Beitrag";
+App::$strings["comment"] = "Kommentar";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s hat %2\$ss %3\$s mit %4\$s verschlagwortet";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert.";
+App::$strings["Configuration Editor"] = "Konfigurationseditor";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird.";
+App::$strings["If enabled, connection requests will be approved without your interaction"] = "Ist dies aktiviert, werden Verbindungsanfragen ohne Deine aktive Zustimmung bestätigt.";
+App::$strings["Automatic approval settings"] = "Einstellungen für automatische Bestätigung";
+App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Einige individuelle Berechtigungen können basierend auf Deinen Kanal- und Privatsphäre-Einstellungen vorbelegt oder gesperrt sein.";
+App::$strings["Privacy group created."] = "Gruppe wurde erstellt.";
+App::$strings["Could not create privacy group."] = "Gruppe konnte nicht erstellt werden.";
+App::$strings["Privacy group not found."] = "Gruppe nicht gefunden.";
+App::$strings["Privacy group updated."] = "Gruppe wurde aktualisiert.";
+App::$strings["Create a group of channels."] = "Erstelle eine Gruppe für Kanäle.";
+App::$strings["Privacy group name: "] = "Gruppenname:";
+App::$strings["Members are visible to other channels"] = "Mitglieder sind sichtbar für andere Kanäle";
+App::$strings["Privacy group removed."] = "Gruppe wurde entfernt.";
+App::$strings["Unable to remove privacy group."] = "Gruppe konnte nicht entfernt werden.";
+App::$strings["Privacy group editor"] = "Gruppeneditor";
+App::$strings["Members"] = "Mitglieder";
+App::$strings["All Connected Channels"] = "Alle verbundenen Kanäle";
+App::$strings["Click on a channel to add or remove."] = "Wähle einen Kanal zum hinzufügen oder entfernen aus.";
+App::$strings["Profile not found."] = "Profil nicht gefunden.";
+App::$strings["Profile deleted."] = "Profil gelöscht.";
+App::$strings["Profile-"] = "Profil-";
+App::$strings["New profile created."] = "Neues Profil erstellt.";
+App::$strings["Profile unavailable to clone."] = "Profil kann nicht geklont werden.";
+App::$strings["Profile unavailable to export."] = "Dieses Profil kann nicht exportiert werden.";
+App::$strings["Profile Name is required."] = "Profil-Name erforderlich.";
+App::$strings["Marital Status"] = "Familienstand";
+App::$strings["Romantic Partner"] = "Romantische Partner";
+App::$strings["Likes"] = "Gefällt";
+App::$strings["Dislikes"] = "Gefällt nicht";
+App::$strings["Work/Employment"] = "Arbeit/Anstellung";
+App::$strings["Religion"] = "Religion";
+App::$strings["Political Views"] = "Politische Ansichten";
+App::$strings["Gender"] = "Geschlecht";
+App::$strings["Sexual Preference"] = "Sexuelle Orientierung";
+App::$strings["Homepage"] = "Webseite";
+App::$strings["Interests"] = "Hobbys/Interessen";
+App::$strings["Profile updated."] = "Profil aktualisiert.";
+App::$strings["Hide your connections list from viewers of this profile"] = "Deine Verbindungen vor Betrachtern dieses Profils verbergen";
+App::$strings["Edit Profile Details"] = "Bearbeite Profil-Details";
+App::$strings["View this profile"] = "Dieses Profil ansehen";
+App::$strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
+App::$strings["Profile Tools"] = "Profilwerkzeuge";
+App::$strings["Change cover photo"] = "Titelbild ändern";
+App::$strings["Change profile photo"] = "Profilfoto ändern";
+App::$strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
+App::$strings["Clone this profile"] = "Dieses Profil klonen";
+App::$strings["Delete this profile"] = "Dieses Profil löschen";
+App::$strings["Add profile things"] = "Sachen zum Profil hinzufügen";
+App::$strings["Personal"] = "Persönlich";
+App::$strings["Relation"] = "Beziehung";
+App::$strings["Miscellaneous"] = "Verschiedenes";
+App::$strings["Import profile from file"] = "Profil aus einer Datei importieren";
+App::$strings["Export profile to file"] = "Profil in eine Datei exportieren";
+App::$strings["Your gender"] = "Dein Geschlecht";
+App::$strings["Marital status"] = "Familienstand";
+App::$strings["Sexual preference"] = "Sexuelle Orientierung";
+App::$strings["Profile name"] = "Profilname";
+App::$strings["This is your default profile."] = "Das ist Dein Standardprofil.";
+App::$strings["Your full name"] = "Dein voller Name";
+App::$strings["Title/Description"] = "Titel/Beschreibung";
+App::$strings["Street address"] = "Straße und Hausnummer";
+App::$strings["Locality/City"] = "Wohnort";
+App::$strings["Region/State"] = "Region/Bundesstaat";
+App::$strings["Postal/Zip code"] = "Postleitzahl";
+App::$strings["Who (if applicable)"] = "Wer (falls anwendbar)";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
+App::$strings["Since (date)"] = "Seit (Datum)";
+App::$strings["Tell us about yourself"] = "Erzähle uns ein wenig von Dir";
+App::$strings["Homepage URL"] = "Homepage-URL";
+App::$strings["Hometown"] = "Heimatort";
+App::$strings["Political views"] = "Politische Ansichten";
+App::$strings["Religious views"] = "Religiöse Ansichten";
+App::$strings["Keywords used in directory listings"] = "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden";
+App::$strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software";
+App::$strings["Musical interests"] = "Musikalische Interessen";
+App::$strings["Books, literature"] = "Bücher, Literatur";
+App::$strings["Television"] = "Fernsehen";
+App::$strings["Film/Dance/Culture/Entertainment"] = "Film/Tanz/Kultur/Unterhaltung";
+App::$strings["Hobbies/Interests"] = "Hobbys/Interessen";
+App::$strings["Love/Romance"] = "Liebe/Romantik";
+App::$strings["School/Education"] = "Schule/Ausbildung";
+App::$strings["Contact information and social networks"] = "Kontaktinformation und soziale Netzwerke";
+App::$strings["My other channels"] = "Meine anderen Kanäle";
+App::$strings["Communications"] = "Kommunikation";
+App::$strings["Profile Image"] = "Profilfoto:";
+App::$strings["Edit Profiles"] = "Profile bearbeiten";
+App::$strings["This page is available only to site members"] = "Diese Seite ist nur für Mitglieder verfügbar";
+App::$strings["Welcome"] = "Willkommen";
+App::$strings["What would you like to do?"] = "Was möchtest Du gerne tun?";
+App::$strings["Please bookmark this page if you would like to return to it in the future"] = "Bitte speichere diese Seite in Deinen Lesezeichen, falls Du später zu ihr zurückkehren möchtest.";
+App::$strings["Upload a profile photo"] = "Ein Profilfoto hochladen";
+App::$strings["Upload a cover photo"] = "Ein Titelbild hochladen";
+App::$strings["Edit your default profile"] = "Dein Standardprofil bearbeiten";
+App::$strings["View friend suggestions"] = "Freundschafts- und Verbindungsvorschläge ansehen";
+App::$strings["View the channel directory"] = "Das Kanalverzeichnis ansehen";
+App::$strings["View/edit your channel settings"] = "Deine Kanaleinstellungen ansehen/bearbeiten";
+App::$strings["View the site or project documentation"] = "Die Website-/Projektdokumentation ansehen";
+App::$strings["Visit your channel homepage"] = "Deine Kanal-Startseite aufrufen";
+App::$strings["View your connections and/or add somebody whose address you already know"] = "Deine Verbindungen ansehen und/oder jemanden hinzufügen, dessen Kanal-Adresse Du bereits kennst";
+App::$strings["View your personal stream (this may be empty until you add some connections)"] = "Deinen persönlichen Beitragsstrom ansehen (dieser kann leer sein, bis Du ein paar Verbindungen hinzugefügt hast)";
+App::$strings["View the public stream. Warning: this content is not moderated"] = "Den öffentlichen Beitragsstrom ansehen. Warnung: Diese Inhalte sind nicht moderiert.";
+App::$strings["Page link"] = "Seiten-Link";
+App::$strings["Edit Webpage"] = "Webseite bearbeiten";
+App::$strings["Create a new channel"] = "Neuen Kanal anlegen";
+App::$strings["Channel Manager"] = "Kanal-Manager";
+App::$strings["Current Channel"] = "Aktueller Kanal";
+App::$strings["Switch to one of your channels by selecting it."] = "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst.";
+App::$strings["Default Channel"] = "Standard Kanal";
+App::$strings["Make Default"] = "Zum Standard machen";
+App::$strings["%d new messages"] = "%d neue Nachrichten";
+App::$strings["%d new introductions"] = "%d neue Vorstellungen";
+App::$strings["Delegated Channel"] = "Delegierte Kanäle";
+App::$strings["Add Card"] = "Karte hinzufügen";
+App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken";
+App::$strings["About this site"] = "Ãœber diese Seite";
+App::$strings["Site Name"] = "Seitenname";
+App::$strings["Administrator"] = "Administrator";
+App::$strings["Terms of Service"] = "Nutzungsbedingungen";
+App::$strings["Software and Project information"] = "Software und Projektinformationen";
+App::$strings["This site is powered by \$Projectname"] = "Diese Website wird bereitgestellt durch \$Projectname";
+App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Verbundene, dezentrale Netzwerk- und Identitätsdienste, ermöglicht mittels Zot";
+App::$strings["Version %s"] = "Version %s";
+App::$strings["Project homepage"] = "Projekt-Website";
+App::$strings["Developer homepage"] = "Entwickler-Website";
+App::$strings["No ratings"] = "Keine Bewertungen";
+App::$strings["Ratings"] = "Bewertungen";
+App::$strings["Rating: "] = "Bewertung: ";
+App::$strings["Website: "] = "Webseite: ";
+App::$strings["Description: "] = "Beschreibung: ";
+App::$strings["Import Webpage Elements"] = "Webseitenelemente importieren";
+App::$strings["Import selected"] = "Import ausgewählt";
+App::$strings["Export Webpage Elements"] = "Webseitenelemente exportieren";
+App::$strings["Export selected"] = "Exportieren ausgewählt";
+App::$strings["Webpages"] = "Webseiten";
+App::$strings["Actions"] = "Aktionen";
+App::$strings["Page Link"] = "Seiten-Link";
+App::$strings["Page Title"] = "Seitentitel";
+App::$strings["Invalid file type."] = "Ungültiger Dateityp.";
+App::$strings["Error opening zip file"] = "Fehler beim Öffnen der ZIP-Datei";
+App::$strings["Invalid folder path."] = "Ungültiger Ordnerpfad.";
+App::$strings["No webpage elements detected."] = "Keine Webseitenelemente erkannt.";
+App::$strings["Import complete."] = "Import abgeschlossen.";
+App::$strings["Channel name changes are not allowed within 48 hours of changing the account password."] = "Innerhalb von 48 Stunden nach einer Änderung des Konto-Passworts können Kanäle nicht umbenannt werden.";
+App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
+App::$strings["Change channel nickname/address"] = "Kanalname/-adresse ändern";
+App::$strings["Any/all connections on other networks will be lost!"] = "Jegliche/alle Verbindungen zu anderen Netzwerken gehen verloren!";
+App::$strings["New channel address"] = "Neue Kanaladresse";
+App::$strings["Rename Channel"] = "Kanal umbenennen";
+App::$strings["Item is not editable"] = "Element kann nicht bearbeitet werden.";
+App::$strings["Edit post"] = "Bearbeite Beitrag";
+App::$strings["Invalid message"] = "Ungültige Beitrags-ID (mid)";
+App::$strings["no results"] = "keine Ergebnisse";
+App::$strings["channel sync processed"] = "Kanal-Sync verarbeitet";
+App::$strings["queued"] = "zur Warteschlange hinzugefügt";
+App::$strings["posted"] = "zugestellt";
+App::$strings["accepted for delivery"] = "für Zustellung akzeptiert";
+App::$strings["updated"] = "aktualisiert";
+App::$strings["update ignored"] = "Aktualisierung ignoriert";
+App::$strings["permission denied"] = "Zugriff verweigert";
+App::$strings["recipient not found"] = "Empfänger nicht gefunden.";
+App::$strings["mail recalled"] = "Mail widerrufen";
+App::$strings["duplicate mail received"] = "Doppelte Mail erhalten";
+App::$strings["mail delivered"] = "Mail zugestellt";
+App::$strings["Delivery report for %1\$s"] = "Zustellungsbericht für %1\$s";
+App::$strings["Options"] = "Optionen";
+App::$strings["Redeliver"] = "Erneut zustellen";
+App::$strings["Failed to create source. No channel selected."] = "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt.";
+App::$strings["Source created."] = "Quelle erstellt.";
+App::$strings["Source updated."] = "Quelle aktualisiert.";
+App::$strings["*"] = "*";
+App::$strings["Channel Sources"] = "Kanal-Quellen";
+App::$strings["Manage remote sources of content for your channel."] = "Externe Inhaltsquellen für Deinen Kanal verwalten.";
+App::$strings["New Source"] = "Neue Quelle";
+App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals.";
+App::$strings["Only import content with these words (one per line)"] = "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten";
+App::$strings["Leave blank to import all public content"] = "Leer lassen, um alle öffentlichen Beiträge zu importieren";
+App::$strings["Channel Name"] = "Name des Kanals";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Füge die folgenden Kategorien zu Beiträgen, die aus dieser Quelle importiert werden, hinzu (kommagetrennt)";
+App::$strings["Source not found."] = "Quelle nicht gefunden.";
+App::$strings["Edit Source"] = "Quelle bearbeiten";
+App::$strings["Delete Source"] = "Quelle löschen";
+App::$strings["Source removed"] = "Quelle gelöscht";
+App::$strings["Unable to remove source."] = "Konnte die Quelle nicht löschen.";
+App::$strings["Like/Dislike"] = "Mögen/Nicht mögen";
+App::$strings["This action is restricted to members."] = "Diese Aktion kann nur von Mitgliedern ausgeführt werden.";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner \$Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues \$Projectname-Mitglied</a>.";
+App::$strings["Invalid request."] = "Ungültige Anfrage.";
+App::$strings["channel"] = "Kanal";
+App::$strings["thing"] = "Sache";
+App::$strings["Channel unavailable."] = "Kanal nicht vorhanden.";
+App::$strings["Previous action reversed."] = "Die vorherige Aktion wurde rückgängig gemacht.";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s nicht";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s stimmt %2\$ss %3\$s zu";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s lehnt %2\$ss %3\$s ab";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s enthält sich zu %2\$ss %3\$s";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s nicht teil";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt vielleicht an %2\$ss %3\$s teil";
+App::$strings["Action completed."] = "Aktion durchgeführt.";
+App::$strings["Thank you."] = "Vielen Dank.";
+App::$strings["%d rating"] = array(
+ 0 => "%d Bewertung",
+ 1 => "%d Bewertungen",
+);
+App::$strings["Gender: "] = "Geschlecht:";
+App::$strings["Status: "] = "Status:";
+App::$strings["Homepage: "] = "Webseite:";
+App::$strings["Age:"] = "Alter:";
+App::$strings["Location:"] = "Ort:";
+App::$strings["Description:"] = "Beschreibung:";
+App::$strings["Hometown:"] = "Heimatstadt:";
+App::$strings["About:"] = "Ãœber:";
+App::$strings["Connect"] = "Verbinden";
+App::$strings["Public Forum:"] = "Öffentliches Forum:";
+App::$strings["Keywords: "] = "Schlüsselwörter:";
+App::$strings["Don't suggest"] = "Nicht vorschlagen";
+App::$strings["Common connections (estimated):"] = "Gemeinsame Verbindungen (geschätzt):";
+App::$strings["Global Directory"] = "Globales Verzeichnis";
+App::$strings["Local Directory"] = "Lokales Verzeichnis";
+App::$strings["Finding:"] = "Ergebnisse:";
+App::$strings["Channel Suggestions"] = "Kanal-Vorschläge";
+App::$strings["next page"] = "nächste Seite";
+App::$strings["previous page"] = "vorherige Seite";
+App::$strings["Sort options"] = "Sortieroptionen";
+App::$strings["Alphabetic"] = "alphabetisch";
+App::$strings["Reverse Alphabetic"] = "Entgegengesetzt alphabetisch";
+App::$strings["Newest to Oldest"] = "Neueste zuerst";
+App::$strings["Oldest to Newest"] = "Älteste zuerst";
+App::$strings["No entries (some entries may be hidden)."] = "Keine Einträge gefunden (einige könnten versteckt sein).";
+App::$strings["Xchan Lookup"] = "Xchan-Suche";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal.";
+App::$strings["Ignore/Hide"] = "Ignorieren/Verstecken";
+App::$strings["Unable to find your hub."] = "Konnte Deinen Server nicht finden.";
+App::$strings["Post successful."] = "Veröffentlichung erfolgreich.";
+App::$strings["Unable to lookup recipient."] = "Konnte den Empfänger nicht finden.";
+App::$strings["Unable to communicate with requested channel."] = "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen.";
+App::$strings["Cannot verify requested channel."] = "Verifizierung des angeforderten Kanals fehlgeschlagen.";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen.";
+App::$strings["Messages"] = "Nachrichten";
+App::$strings["message"] = "Nachricht";
+App::$strings["Message recalled."] = "Nachricht widerrufen.";
+App::$strings["Conversation removed."] = "Unterhaltung gelöscht.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM";
+App::$strings["Requested channel is not in this network"] = "Angeforderter Kanal ist nicht in diesem Netzwerk.";
+App::$strings["Send Private Message"] = "Private Nachricht senden";
+App::$strings["To:"] = "An:";
+App::$strings["Subject:"] = "Betreff:";
+App::$strings["Attach file"] = "Datei anhängen";
+App::$strings["Send"] = "Absenden";
+App::$strings["Set expiration date"] = "Verfallsdatum";
+App::$strings["Delete message"] = "Nachricht löschen";
+App::$strings["Delivery report"] = "Zustellungsbericht";
+App::$strings["Recall message"] = "Nachricht widerrufen";
+App::$strings["Message has been recalled."] = "Die Nachricht wurde widerrufen.";
+App::$strings["Delete Conversation"] = "Unterhaltung löschen";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten.";
+App::$strings["Send Reply"] = "Antwort senden";
+App::$strings["Your message for %s (%s):"] = "Deine Nachricht für %s (%s):";
+App::$strings["Public Hubs"] = "Öffentliche Hubs";
+App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im \$Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen.";
+App::$strings["Hub URL"] = "Hub-URL";
+App::$strings["Access Type"] = "Zugriffstyp";
+App::$strings["Registration Policy"] = "Registrierungsrichtlinien";
+App::$strings["Stats"] = "Statistiken";
+App::$strings["Software"] = "Software";
+App::$strings["Rate"] = "Bewerten";
+App::$strings["webpage"] = "Webseite";
+App::$strings["block"] = "Block";
+App::$strings["layout"] = "Layout";
+App::$strings["menu"] = "Menü";
+App::$strings["%s element installed"] = "Element für %s installiert";
+App::$strings["%s element installation failed"] = "Installation des Elements %s fehlgeschlagen";
+App::$strings["Select a bookmark folder"] = "Lesezeichenordner wählen";
+App::$strings["Save Bookmark"] = "Lesezeichen speichern";
+App::$strings["URL of bookmark"] = "URL des Lesezeichens";
+App::$strings["Or enter new bookmark folder name"] = "Oder gib einen neuen Namen für den Lesezeichenordner ein";
+App::$strings["Enter a folder name"] = "Gib einen Ordnernamen ein";
+App::$strings["or select an existing folder (doubleclick)"] = "oder wähle einen vorhanden Ordner aus (Doppelklick)";
+App::$strings["Save to Folder"] = "In Ordner speichern";
+App::$strings["Fetching URL returns error: %1\$s"] = "Abrufen der URL gab einen Fehler zurück: %1\$s";
+App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal.";
+App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen.";
+App::$strings["Passwords do not match."] = "Passwörter stimmen nicht überein.";
+App::$strings["Registration successful. Continue to create your first channel..."] = "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst...";
+App::$strings["Registration successful. Please check your email for validation instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet.";
+App::$strings["Registration successful. Continue to create your first channel..."] = "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst...";
+App::$strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden.";
+App::$strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden.";
+App::$strings["Registration on this hub is disabled."] = "Die Registrierung auf diesem Hub ist nicht möglich.";
+App::$strings["Registration on this hub is by approval only."] = "Eine Registrierung auf diesem Hub erfordert die Zustimmung durch den Administrator.";
+App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registriere Dich auf einem der anderen verbundenen Hubs.</a>";
+App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal.";
+App::$strings["I accept the %s for this website"] = "Ich akzeptiere die %s für diese Webseite";
+App::$strings["I am over %s years of age and accept the %s for this website"] = "Ich bin älter als %s Jahre und akzeptiere die %s dieser Website.";
+App::$strings["Your email address"] = "Ihre E-Mail Adresse";
+App::$strings["Choose a password"] = "Passwort";
+App::$strings["Please re-enter your password"] = "Bitte gib Dein Passwort noch einmal ein";
+App::$strings["Please enter your invitation code"] = "Bitte trage Deinen Einladungs-Code ein";
+App::$strings["no"] = "nein";
+App::$strings["yes"] = "ja";
+App::$strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich.";
+App::$strings["Register"] = "Registrieren";
+App::$strings["This site requires email verification. After completing this form, please check your email for further instructions."] = "Diese Website erfordert eine Email-Bestätigung. Bitte prüfe Deine Emails nach Ausfüllen und Absenden des Formulars, um weitere Hinweise zu bekommen.";
+App::$strings["Cover Photos"] = "Cover Foto";
+App::$strings["female"] = "weiblich";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s hat ihr %2\$s aktualisiert";
+App::$strings["male"] = "männlich";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s hat sein %2\$s aktualisiert";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s hat sein/ihr %2\$s aktualisiert";
+App::$strings["cover photo"] = "Cover Foto";
+App::$strings["Change Cover Photo"] = "Titelbild ändern";
+App::$strings["Documentation Search"] = "Suche in der Dokumentation";
+App::$strings["About"] = "Ãœber";
+App::$strings["Administrators"] = "Administratoren";
+App::$strings["Developers"] = "Entwickler";
+App::$strings["Tutorials"] = "Tutorials";
+App::$strings["\$Projectname Documentation"] = "\$Projectname-Dokumentation";
+App::$strings["Contents"] = "Inhalt";
+App::$strings["Article"] = "Artikel";
+App::$strings["Item has been removed."] = "Der Beitrag wurde entfernt.";
+App::$strings["Tag removed"] = "Schlagwort entfernt";
+App::$strings["Remove Item Tag"] = "Schlagwort entfernen";
+App::$strings["Select a tag to remove: "] = "Schlagwort zum Entfernen auswählen:";
+App::$strings["No such group"] = "Gruppe nicht gefunden";
+App::$strings["No such channel"] = "Kanal nicht gefunden";
+App::$strings["forum"] = "Forum";
+App::$strings["Search Results For:"] = "Suchergebnisse für:";
+App::$strings["Privacy group is empty"] = "Gruppe ist leer";
+App::$strings["Privacy group: "] = "Gruppe:";
+App::$strings["Invalid connection."] = "Ungültige Verbindung.";
+App::$strings["Invalid channel."] = "Ungültiger Kanal.";
+App::$strings["network"] = "Netzwerk";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Willkommen auf %s";
+App::$strings["Permission Denied."] = "Zugriff verweigert.";
+App::$strings["File not found."] = "Datei nicht gefunden.";
+App::$strings["Edit file permissions"] = "Dateiberechtigungen bearbeiten";
+App::$strings["Set/edit permissions"] = "Berechtigungen setzen/ändern";
+App::$strings["Include all files and sub folders"] = "Alle Dateien und Unterverzeichnisse einbinden";
+App::$strings["Return to file list"] = "Zurück zur Dateiliste";
+App::$strings["Copy/paste this code to attach file to a post"] = "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken";
+App::$strings["Share this file"] = "Diese Datei freigeben";
+App::$strings["Show URL to this file"] = "URL zu dieser Datei anzeigen";
+App::$strings["Show in your contacts shared folder"] = "Im geteilten Ordner Deiner Kontakte anzeigen";
+App::$strings["No channel."] = "Kein Kanal.";
+App::$strings["No connections in common."] = "Keine gemeinsamen Verbindungen.";
+App::$strings["View Common Connections"] = "Zeige gemeinsame Verbindungen";
+App::$strings["Email verification resent"] = "Email zur Verifizierung wurde erneut versendet";
+App::$strings["Unable to resend email verification message."] = "Erneutes Versenden der Email zur Verifizierung nicht möglich.";
+App::$strings["No connections."] = "Keine Verbindungen.";
+App::$strings["Visit %s's profile [%s]"] = "%ss Profil [%s] besuchen";
+App::$strings["View Connections"] = "Verbindungen anzeigen";
+App::$strings["Blocked accounts"] = "Blockierte Benutzerkonten";
+App::$strings["Expired accounts"] = "Abgelaufene Benutzerkonten";
+App::$strings["Expiring accounts"] = "Ablaufende Benutzerkonten";
+App::$strings["Clones"] = "Klone";
+App::$strings["Message queues"] = "Nachrichten-Warteschlangen";
+App::$strings["Your software should be updated"] = "Die installierte Software sollte aktualisiert werden";
+App::$strings["Summary"] = "Zusammenfassung";
+App::$strings["Registered accounts"] = "Registrierte Konten";
+App::$strings["Pending registrations"] = "Ausstehende Registrierungen";
+App::$strings["Registered channels"] = "Registrierte Kanäle";
+App::$strings["Active plugins"] = "Aktive Plug-Ins";
+App::$strings["Version"] = "Version";
+App::$strings["Repository version (master)"] = "Repository-Version (master)";
+App::$strings["Repository version (dev)"] = "Repository-Version (dev)";
+App::$strings["No service class restrictions found."] = "Keine Dienstklassenbeschränkungen gefunden.";
+App::$strings["Website:"] = "Webseite:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Kanal [%s] (auf diesem Server noch unbekannt)";
+App::$strings["Rating (this information is public)"] = "Bewertung (öffentlich sichtbar)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)";
+App::$strings["Edit Card"] = "Karte bearbeiten";
+App::$strings["No valid account found."] = "Kein gültiges Konto gefunden.";
+App::$strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails.";
+App::$strings["Site Member (%s)"] = "Nutzer (%s)";
+App::$strings["Password reset requested at %s"] = "Passwort-Rücksetzung auf %s angefordert";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen.";
+App::$strings["Password Reset"] = "Zurücksetzen des Kennworts";
+App::$strings["Your password has been reset as requested."] = "Dein Passwort wurde wie angefordert neu erstellt.";
+App::$strings["Your new password is"] = "Dein neues Passwort lautet";
+App::$strings["Save or copy your new password - and then"] = "Speichere oder kopiere Dein neues Passwort – und dann";
+App::$strings["click here to login"] = "Klicke hier, um dich anzumelden";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden.";
+App::$strings["Your password has changed at %s"] = "Auf %s wurde Dein Passwort geändert";
+App::$strings["Forgot your Password?"] = "Kennwort vergessen?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail.";
+App::$strings["Email Address"] = "E-Mail Adresse";
+App::$strings["Mark all seen"] = "Alle als gelesen markieren";
+App::$strings["0. Beginner/Basic"] = "0. Einsteiger/Basis";
+App::$strings["1. Novice - not skilled but willing to learn"] = "1. Anfänger - unerfahren, aber bereit zu lernen";
+App::$strings["2. Intermediate - somewhat comfortable"] = "2. Fortgeschritten - relativ komfortabel";
+App::$strings["3. Advanced - very comfortable"] = "3. Fortgeschritten - sehr komfortabel";
+App::$strings["4. Expert - I can write computer code"] = "4. Experte - Ich kann Computercode schreiben";
+App::$strings["5. Wizard - I probably know more than you do"] = "5. Zauberer - ich kann wahrscheinlich mehr als Du";
+App::$strings["Site Admin"] = "Hub-Administration";
+App::$strings["Report Bug"] = "Fehler melden";
+App::$strings["View Bookmarks"] = "Lesezeichen ansehen";
+App::$strings["My Chatrooms"] = "Meine Chaträume";
+App::$strings["Firefox Share"] = "Teilen-Knopf für Firefox";
+App::$strings["Remote Diagnostics"] = "Ferndiagnose";
+App::$strings["Suggest Channels"] = "Kanäle vorschlagen";
+App::$strings["Login"] = "Anmelden";
+App::$strings["Activity"] = "Aktivität";
+App::$strings["Wiki"] = "Wiki";
+App::$strings["Channel Home"] = "Mein Kanal";
+App::$strings["Events"] = "Termine";
+App::$strings["Directory"] = "Verzeichnis";
+App::$strings["Mail"] = "Mail";
+App::$strings["Chat"] = "Chat";
+App::$strings["Probe"] = "Testen";
+App::$strings["Suggest"] = "Empfehlen";
+App::$strings["Random Channel"] = "Zufälliger Kanal";
+App::$strings["Invite"] = "Einladen";
+App::$strings["Features"] = "Funktionen";
+App::$strings["Language"] = "Sprache";
+App::$strings["Post"] = "Beitrag schreiben";
+App::$strings["Profile Photo"] = "Profilfoto";
+App::$strings["Purchase"] = "Kaufen";
+App::$strings["Undelete"] = "Wieder hergestellt";
+App::$strings["Add to app-tray"] = "Zum App-Menü hinzufügen";
+App::$strings["Remove from app-tray"] = "Aus dem App-Menü entfernen";
+App::$strings["Pin to navbar"] = "An Navigationsleiste anpinnen";
+App::$strings["Unpin from navbar"] = "Von Navigationsleiste entfernen";
+App::$strings["__ctx:permcat__ default"] = "Standard";
+App::$strings["__ctx:permcat__ follower"] = "Abonnent";
+App::$strings["__ctx:permcat__ contributor"] = "Beitragender";
+App::$strings["__ctx:permcat__ publisher"] = "Autor";
+App::$strings["(No Title)"] = "(Kein Titel)";
+App::$strings["Wiki page create failed."] = "Anlegen der Wiki-Seite fehlgeschlagen.";
+App::$strings["Wiki not found."] = "Wiki nicht gefunden.";
+App::$strings["Destination name already exists"] = "Zielname bereits vorhanden";
+App::$strings["Page not found"] = "Seite nicht gefunden";
+App::$strings["Error reading page content"] = "Fehler beim Lesen des Seiteninhalts";
+App::$strings["Error reading wiki"] = "Fehler beim Lesen des Wiki";
+App::$strings["Page update failed."] = "Seitenaktualisierung fehlgeschlagen.";
+App::$strings["Nothing deleted"] = "Nichts gelöscht";
+App::$strings["Compare: object not found."] = "Vergleichen: Objekt nicht gefunden.";
+App::$strings["Page updated"] = "Seite aktualisiert";
+App::$strings["Untitled"] = "Ohne Titel";
+App::$strings["Wiki resource_id required for git commit"] = "Die resource_id des Wiki wird benötigt für den git commit.";
+App::$strings["__ctx:wiki_history__ Message"] = "Nachricht";
+App::$strings["Different viewers will see this text differently"] = "Verschiedene Betrachter werden diesen Text unterschiedlich sehen";
+App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
+App::$strings["Only me"] = "Nur ich";
+App::$strings["Public"] = "Öffentlich";
+App::$strings["Anybody in the \$Projectname network"] = "Jeder innerhalb des \$Projectname Netzwerks";
+App::$strings["Any account on %s"] = "Jedes Nutzerkonto auf %s";
+App::$strings["Any of my connections"] = "Alle meine Verbindungen";
+App::$strings["Only connections I specifically allow"] = "Nur Verbindungen, denen ich es explizit erlaube";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Alle Verbindungen einschließlich der noch nicht bestätigten";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream).";
+App::$strings["This is your default setting for who can view your default channel profile"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils.";
+App::$strings["This is your default setting for who can view your connections"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen.";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos.";
+App::$strings["This is your default setting for the audience of your webpages"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten.";
+App::$strings["Missing room name"] = "Der Chatraum hat keinen Namen";
+App::$strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
+App::$strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
+App::$strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
+App::$strings["Room is full"] = "Der Chatraum ist voll";
+App::$strings["\$Projectname Notification"] = "\$Projectname-Benachrichtigung";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Danke.";
+App::$strings["%s Administrator"] = "der Administrator von %s";
+App::$strings["This email was sent by %1\$s at %2\$s."] = "Diese Email wurde von %1\$s auf %2\$s gesendet.";
+App::$strings["To stop receiving these messages, please adjust your Notification Settings at %s"] = "Um diese Nachrichten nicht mehr zu erhalten, passe bitte Deine Benachrichtigungseinstellungen unter folgendem Link an: %s";
+App::$strings["To stop receiving these messages, please adjust your %s."] = "Um diese Nachrichten nicht mehr zu erhalten, passe bitte Deine %s an.";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Benachrichtigung] Neue Mail empfangen auf %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s hat Dir %2\$s geschickt.";
+App::$strings["a private message"] = "eine private Nachricht";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten.";
+App::$strings["commented on"] = "kommentierte";
+App::$strings["liked"] = "gefiel";
+App::$strings["disliked"] = "missfiel";
+App::$strings["%1\$s, %2\$s %3\$s [zrl=%4\$s]a %5\$s[/zrl]"] = "%1\$s, %2\$s %3\$s [zrl=%4\$s]ein %5\$s[/zrl]";
+App::$strings["%1\$s, %2\$s %3\$s [zrl=%4\$s]%5\$s's %6\$s[/zrl]"] = "%1\$s, %2\$s %3\$s [zrl=%4\$s]%5\$s's %6\$s[/zrl]";
+App::$strings["%1\$s, %2\$s %3\$s [zrl=%4\$s]your %5\$s[/zrl]"] = "%1\$s, %2\$s %3\$s [zrl=%4\$s]Dein %5\$s[/zrl]";
+App::$strings["[\$Projectname:Notify] Moderated Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Benachrichtigung] Moderierter Kommantar in Unterhaltung #%1\$d von %2\$s";
+App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Benachrichtigung] Kommentar in Unterhaltung #%1\$d von %2\$s";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s hat eine Unterhaltung kommentiert, der Du folgst.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren.";
+App::$strings["Please visit %s to approve or reject this comment."] = "Bitte besuche %s, um diesen Kommentar anzunehmen oder abzulehnen.";
+App::$strings["%1\$s, %2\$s liked [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gefällt [zrl=%3\$s]dein %4\$s[/zrl]";
+App::$strings["[\$Projectname:Notify] Like received to conversation #%1\$d by %2\$s"] = "[\$Projectname:Benachrichtigung] Gefällt mir in Unterhaltung #%1\$d von %2\$s erhalten";
+App::$strings["%1\$s, %2\$s liked an item/conversation you created."] = "%1\$s, %2\$s gefällt ein Beitrag oder eine Unterhaltung von Dir";
+App::$strings["[\$Projectname:Notify] %s posted to your profile wall"] = "[\$Projectname:Benachrichtigung] %s schrieb auf Deine Pinnwand";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s hat auf Deine Pinnwand auf %3\$s geschrieben";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s hat auf [zrl=%3\$s]Deine Pinnwand[/zrl] geschrieben";
+App::$strings["[\$Projectname:Notify] %s tagged you"] = "[\$Projectname:Benachrichtigung] %s hat Dich erwähnt";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s erwähnt";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]hat Dich erwähnt[/zrl].";
+App::$strings["[\$Projectname:Notify] %1\$s poked you"] = "[\$Projectname:Benachrichtigung] %1\$s hat Dich angestupst";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s angestupst";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]hat Dich angestupst[/zrl].";
+App::$strings["[\$Projectname:Notify] %s tagged your post"] = "[\$Projectname:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s hat Deinen Beitrag auf %3\$s verschlagwortet";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen Beitrag[/zrl] verschlagwortet";
+App::$strings["[\$Projectname:Notify] Introduction received"] = "[\$Projectname:Benachrichtigung] Verbindungsanfrage erhalten";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, Du hast eine neue Verbindungsanfrage von '%2\$s' auf %3\$s erhalten";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, Du hast [zrl=%2\$s]eine neue Verbindungsanfrage[/zrl] von %3\$s erhalten.";
+App::$strings["You may visit their profile at %s"] = "Du kannst Dir das Profil unter %s ansehen";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen.";
+App::$strings["[\$Projectname:Notify] Friend suggestion received"] = "[\$Projectname:Benachrichtigung] Freundschaftsvorschlag erhalten";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, Du hast einen Kontaktvorschlag von „%2\$s“ auf %3\$s erhalten";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, Du hast [zrl=%2\$s]einen Kontaktvorschlag[/zrl] für %3\$s von %4\$s erhalten.";
+App::$strings["Name:"] = "Name:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
+App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Benachrichtigung]";
+App::$strings["created a new post"] = "Neuer Beitrag wurde erzeugt";
+App::$strings["commented on %s's post"] = "hat %s's Beitrag kommentiert";
+App::$strings["edited a post dated %s"] = "hat einen Beitrag vom %s bearbeitet";
+App::$strings["edited a comment dated %s"] = "hat einen Kommentar vom %s bearbeitet";
+App::$strings["Wiki updated successfully"] = "Wiki erfolgreich aktualisiert";
+App::$strings["Wiki files deleted successfully"] = "Wiki-Dateien erfolgreich gelöscht";
+App::$strings["Update Error at %s"] = "Aktualisierungsfehler auf %s";
+App::$strings["Update %s failed. See error logs."] = "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen.";
+App::$strings["Private Message"] = "Private Nachricht";
+App::$strings["Select"] = "Auswählen";
+App::$strings["I will attend"] = "Ich werde teilnehmen";
+App::$strings["I will not attend"] = "Ich werde nicht teilnehmen";
+App::$strings["I might attend"] = "Ich werde vielleicht teilnehmen";
+App::$strings["I agree"] = "Ich stimme zu";
+App::$strings["I disagree"] = "Ich lehne ab";
+App::$strings["I abstain"] = "Ich enthalte mich";
+App::$strings["Add Star"] = "Stern hinzufügen";
+App::$strings["Remove Star"] = "Stern entfernen";
+App::$strings["Toggle Star Status"] = "Markierungsstatus (Stern) umschalten";
+App::$strings["starred"] = "markiert";
+App::$strings["Message signature validated"] = "Signatur überprüft";
+App::$strings["Message signature incorrect"] = "Signatur nicht korrekt";
+App::$strings["Add Tag"] = "Tag hinzufügen";
+App::$strings["like"] = "mag";
+App::$strings["dislike"] = "verurteile";
+App::$strings["Share This"] = "Teilen";
+App::$strings["share"] = "Teilen";
+App::$strings["Delivery Report"] = "Zustellungsbericht";
+App::$strings["%d comment"] = array(
+ 0 => "%d Kommentar",
+ 1 => "%d Kommentare",
+);
+App::$strings["View %s's profile - %s"] = "Schaue Dir %ss Profil an – %s";
+App::$strings["to"] = "an";
+App::$strings["via"] = "via";
+App::$strings["Wall-to-Wall"] = "Wall-to-Wall";
+App::$strings["via Wall-To-Wall:"] = "via Wall-To-Wall:";
+App::$strings["from %s"] = "via %s";
+App::$strings["last edited: %s"] = "zuletzt bearbeitet: %s";
+App::$strings["Expires: %s"] = "Verfällt: %s";
+App::$strings["Attend"] = "Zusagen";
+App::$strings["Attendance Options"] = "Zusageoptionen";
+App::$strings["Vote"] = "Abstimmen";
+App::$strings["Voting Options"] = "Abstimmungsoptionen";
+App::$strings["Save Bookmarks"] = "Favoriten speichern";
+App::$strings["Add to Calendar"] = "Zum Kalender hinzufügen";
+App::$strings["This is an unsaved preview"] = "Dies ist eine nicht gespeicherte Vorschau";
+App::$strings["%s show all"] = "%s mehr anzeigen";
+App::$strings["Bold"] = "Fett";
+App::$strings["Italic"] = "Kursiv";
+App::$strings["Underline"] = "Unterstrichen";
+App::$strings["Quote"] = "Zitat";
+App::$strings["Code"] = "Code";
+App::$strings["Image"] = "Bild";
+App::$strings["Attach File"] = "Datei anhängen";
+App::$strings["Insert Link"] = "Link einfügen";
+App::$strings["Video"] = "Video";
+App::$strings["Your full name (required)"] = "Ihr vollständiger Name (erforderlich)";
+App::$strings["Your email address (required)"] = "Ihre E-Mail-Adresse (erforderlich)";
+App::$strings["Your website URL (optional)"] = "Ihre Webseiten-URL (optional)";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Willkommen %s. Entfernte Authentifizierung erfolgreich.";
+App::$strings["parent"] = "Ãœbergeordnetes Verzeichnis";
+App::$strings["Collection"] = "Sammlung";
+App::$strings["Principal"] = "Prinzipal";
+App::$strings["Addressbook"] = "Adressbuch";
+App::$strings["Calendar"] = "Kalender";
+App::$strings["Schedule Inbox"] = "Posteingang für überwachte Kalender";
+App::$strings["Schedule Outbox"] = "Postausgang für überwachte Kalender";
+App::$strings["Total"] = "Summe";
+App::$strings["Shared"] = "Geteilt";
+App::$strings["You are using %1\$s of your available file storage."] = "Sie verwenden %1\$s von Ihrem verfügbaren Dateispeicher.";
+App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Sie verwenden %1\$s von %2\$s verfügbarem Dateispeicher. (%3\$s&#37;)";
+App::$strings["WARNING:"] = "WARNUNG:";
+App::$strings["Create new folder"] = "Neuen Ordner anlegen";
+App::$strings["Upload file"] = "Datei hochladen";
+App::$strings["Drop files here to immediately upload"] = "Dateien zum sofortigen Hochladen hier fallen lassen";
+App::$strings["Forums"] = "Foren";
+App::$strings["Select Channel"] = "Kanal auswählen";
+App::$strings["Read-write"] = "Lesen-schreiben";
+App::$strings["Read-only"] = "Nur Lesen";
+App::$strings["My Calendars"] = "Meine Kalender";
+App::$strings["Shared Calendars"] = "Geteilte Kalender";
+App::$strings["Share this calendar"] = "Diesen Kalender teilen";
+App::$strings["Calendar name and color"] = "Kalendername und -farbe";
+App::$strings["Create new calendar"] = "Neuen Kalender erstellen";
+App::$strings["Calendar Name"] = "Kalendername";
+App::$strings["Calendar Tools"] = "Kalenderwerkzeuge";
+App::$strings["Import calendar"] = "Kalender importieren";
+App::$strings["Select a calendar to import to"] = "Kalender zum Hineinimportieren auswählen";
+App::$strings["Addressbooks"] = "Adressbücher";
+App::$strings["Addressbook name"] = "Adressbuchname";
+App::$strings["Create new addressbook"] = "Neues Adressbuch erstellen";
+App::$strings["Addressbook Name"] = "Adressbuchname";
+App::$strings["Addressbook Tools"] = "Adressbuchwerkzeuge";
+App::$strings["Import addressbook"] = "Adressbuch importieren";
+App::$strings["Select an addressbook to import to"] = "Adressbuch zum Hineinimportieren auswählen";
+App::$strings["Categories"] = "Kategorien";
+App::$strings["Everything"] = "Alles";
+App::$strings["Events Tools"] = "Kalenderwerkzeuge";
+App::$strings["Export Calendar"] = "Kalender exportieren";
+App::$strings["Import Calendar"] = "Kalender importieren";
+App::$strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
+App::$strings["HQ Control Panel"] = "HQ-Einstellungen";
+App::$strings["Create a new post"] = "Neuen Beitrag erstellen";
+App::$strings["Private Mail Menu"] = "Private Nachrichten";
+App::$strings["Combined View"] = "Kombinierte Anzeige";
+App::$strings["Inbox"] = "Eingang";
+App::$strings["Outbox"] = "Ausgang";
+App::$strings["New Message"] = "Neue Nachricht";
+App::$strings["Chatrooms"] = "Chaträume";
+App::$strings["Overview"] = "Ãœbersicht";
+App::$strings["Rating Tools"] = "Bewertungswerkzeuge";
+App::$strings["Rate Me"] = "Bewerte mich";
+App::$strings["View Ratings"] = "Bewertungen ansehen";
+App::$strings["__ctx:widget__ Activity"] = "Aktivität";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen.";
+App::$strings["Add New Connection"] = "Neue Verbindung hinzufügen";
+App::$strings["Enter channel address"] = "Adresse des Kanals eingeben";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Beispiele: bob@beispiel.com, http://beispiel.com/barbara";
+App::$strings["Wiki List"] = "Wikiliste";
+App::$strings["Archives"] = "Archive";
+App::$strings["Received Messages"] = "Erhaltene Nachrichten";
+App::$strings["Sent Messages"] = "Gesendete Nachrichten";
+App::$strings["Conversations"] = "Konversationen";
+App::$strings["No messages."] = "Keine Nachrichten.";
+App::$strings["Delete conversation"] = "Unterhaltung löschen";
+App::$strings["Chat Members"] = "Chatmitglieder";
+App::$strings["photo/image"] = "Foto/Bild";
+App::$strings["Remove term"] = "Eintrag löschen";
+App::$strings["Saved Searches"] = "Gespeicherte Suchanfragen";
+App::$strings["add"] = "hinzufügen";
+App::$strings["Notes"] = "Notizen";
+App::$strings["Add new page"] = "Neue Seite hinzufügen";
+App::$strings["Wiki Pages"] = "Wikiseiten";
+App::$strings["Page name"] = "Seitenname";
+App::$strings["Refresh"] = "Aktualisieren";
+App::$strings["Tasks"] = "Aufgaben";
+App::$strings["Suggestions"] = "Vorschläge";
+App::$strings["See more..."] = "Mehr anzeigen …";
+App::$strings["Saved Folders"] = "Gespeicherte Ordner";
+App::$strings["Click to show more"] = "Klick, um mehr anzuzeigen";
+App::$strings["Profile Creation"] = "Profilerstellung";
+App::$strings["Upload profile photo"] = "Profilfoto hochladen";
+App::$strings["Upload cover photo"] = "Titelbild hochladen";
+App::$strings["Edit your profile"] = "Profil bearbeiten";
+App::$strings["Find and Connect with others"] = "Finden und Verbinden von/mit Anderen";
+App::$strings["Manage your connections"] = "Deine Verbindungen verwalten";
+App::$strings["Communicate"] = "Kommunizieren";
+App::$strings["View your channel homepage"] = "Deine Kanal-Startseite ansehen";
+App::$strings["View your network stream"] = "Deine Netzwerk-Aktivitäten ansehen";
+App::$strings["Documentation"] = "Dokumentation";
+App::$strings["View public stream. Warning: not moderated"] = "Öffentliche Beitragsaktivitäten ansehen. Warnung: Diese Inhalte sind nicht moderiert.";
+App::$strings["New Member Links"] = "Links für neue Mitglieder";
+App::$strings["Member registrations waiting for confirmation"] = "Nutzer-Anmeldungen, die auf Bestätigung warten";
+App::$strings["Inspect queue"] = "Warteschlange kontrollieren";
+App::$strings["DB updates"] = "DB-Aktualisierungen";
+App::$strings["Admin"] = "Administration";
+App::$strings["Plugin Features"] = "Plug-In Funktionen";
+App::$strings["Account settings"] = "Konto-Einstellungen";
+App::$strings["Channel settings"] = "Kanal-Einstellungen";
+App::$strings["Additional features"] = "Zusätzliche Funktionen";
+App::$strings["Addon settings"] = "Addon-Einstellungen";
+App::$strings["Display settings"] = "Anzeige-Einstellungen";
+App::$strings["Manage locations"] = "Klon-Adressen verwalten";
+App::$strings["Export channel"] = "Kanal exportieren";
+App::$strings["Connected apps"] = "Verbundene Apps";
+App::$strings["Permission Groups"] = "Berechtigungsrollen";
+App::$strings["Premium Channel Settings"] = "Premium-Kanal-Einstellungen";
+App::$strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms";
+App::$strings["New Network Activity"] = "Neue Netzwerk-Aktivitäten";
+App::$strings["New Network Activity Notifications"] = "Benachrichtigungen für neue Netzwerk-Aktivitäten";
+App::$strings["View your network activity"] = "Zeige Deine Netzwerk-Aktivitäten";
+App::$strings["Mark all notifications read"] = "Alle Benachrichtigungen als gesehen markieren";
+App::$strings["Show new posts only"] = "Zeige nur neue Beiträge";
+App::$strings["Filter by name"] = "Nach Namen filtern";
+App::$strings["New Home Activity"] = "Neue Kanal-Aktivitäten";
+App::$strings["New Home Activity Notifications"] = "Benachrichtigungen für neue Kanal-Aktivitäten";
+App::$strings["View your home activity"] = "Zeige Deine Kanal-Aktivitäten";
+App::$strings["Mark all notifications seen"] = "Alle Benachrichtigungen als gesehen markieren";
+App::$strings["New Mails"] = "Neue Mails";
+App::$strings["New Mails Notifications"] = "Benachrichtigungen für neue Mails";
+App::$strings["View your private mails"] = "Zeige Deine persönlichen Mails";
+App::$strings["Mark all messages seen"] = "Alle Mails als gelesen markieren";
+App::$strings["New Events"] = "Neue Termine";
+App::$strings["New Events Notifications"] = "Benachrichtigungen für neue Termine";
+App::$strings["View events"] = "Termine ansehen";
+App::$strings["Mark all events seen"] = "Markiere alle Termine als gesehen";
+App::$strings["New Connections Notifications"] = "Benachrichtigungen für neue Verbindungen";
+App::$strings["View all connections"] = "Zeige alle Verbindungen";
+App::$strings["New Files"] = "Neue Dateien";
+App::$strings["New Files Notifications"] = "Benachrichtigungen für neue Dateien";
+App::$strings["Notices"] = "Benachrichtigungen";
+App::$strings["View all notices"] = "Alle Notizen ansehen";
+App::$strings["Mark all notices seen"] = "Alle Notizen als gesehen markieren";
+App::$strings["New Registrations"] = "Neue Registrierungen";
+App::$strings["New Registrations Notifications"] = "Benachrichtigungen für neue Registrierungen";
+App::$strings["Public Stream Notifications"] = "Benachrichtigungen für öffentlichen Beitrags-Stream";
+App::$strings["View the public stream"] = "Zeige öffentlichen Beitrags-Stream";
+App::$strings["Sorry, you have got no notifications at the moment"] = "Du hast momentan keine Benachrichtigungen";
+App::$strings["Source channel not found."] = "Quellkanal nicht gefunden.";
+App::$strings["Create an account to access services and applications"] = "Erstelle ein Konto, um auf Dienste und Anwendungen zugreifen zu können.";
+App::$strings["Logout"] = "Abmelden";
+App::$strings["Login/Email"] = "Anmelden/E-Mail";
+App::$strings["Password"] = "Kennwort";
+App::$strings["Remember me"] = "Angaben speichern";
+App::$strings["Forgot your password?"] = "Passwort vergessen?";
+App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Webseiten-SSL-Fehler für %s";
+App::$strings["Website SSL certificate is not valid. Please correct."] = "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben.";
+App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Cron-Jobs laufen nicht auf %s";
+App::$strings["Cron/Scheduled tasks not running."] = "Cron-Aufgaben laufen nicht.";
+App::$strings["never"] = "Nie";
+App::$strings["Focus (Hubzilla default)"] = "Focus (Voreinstellung für Hubzilla)";
+App::$strings["Theme settings"] = "Design-Einstellungen";
+App::$strings["Narrow navbar"] = "Schmale Navigationsleiste";
+App::$strings["Navigation bar background color"] = "Hintergrundfarbe der Navigationsleiste";
+App::$strings["Navigation bar icon color "] = "Farbe für die Icons der Navigationsleiste";
+App::$strings["Navigation bar active icon color "] = "Farbe für aktive Icons der Navigationsleiste";
+App::$strings["Link color"] = "Linkfarbe";
+App::$strings["Set font-color for banner"] = "Farbe der Schrift des Banners";
+App::$strings["Set the background color"] = "Hintergrundfarbe";
+App::$strings["Set the background image"] = "Hintergrundbild";
+App::$strings["Set the background color of items"] = "Hintergrundfarbe für Beiträge";
+App::$strings["Set the background color of comments"] = "Hintergrundfarbe für Kommentare";
+App::$strings["Set font-size for the entire application"] = "Schriftgröße für die gesamte Anwendung";
+App::$strings["Examples: 1rem, 100%, 16px"] = "Beispiele: 1rem, 100%, 16px";
+App::$strings["Set font-color for posts and comments"] = "Schriftfarbe für Beiträge und Kommentare";
+App::$strings["Set radius of corners"] = "Ecken-Radius";
+App::$strings["Example: 4px"] = "Beispiel: 4px";
+App::$strings["Set shadow depth of photos"] = "Schattentiefe von Fotos";
+App::$strings["Set maximum width of content region in pixel"] = "Maximalbreite des Inhaltsbereichs in Pixel festlegen";
+App::$strings["Leave empty for default width"] = "Leer lassen für Standardbreite";
+App::$strings["Left align page content"] = "Seiteninhalt linksbündig anzeigen";
+App::$strings["Set size of conversation author photo"] = "Größe der Avatare von Themenstartern";
+App::$strings["Set size of followup author photos"] = "Größe der Avatare von Kommentatoren";
+App::$strings["Errors encountered deleting database table "] = "Beim Löschen der Datenbanktabelle sind Fehler aufgetreten.";
+App::$strings["Submit Settings"] = "Einstellungen absenden";
+App::$strings["Drop tables when uninstalling?"] = "Lösche Tabellen beim Deinstallieren?";
+App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Wenn ausgewählt, werden die Rendezvous-Tabellen in der Datenbank gelöscht, sobald das Plugin deinstalliert wird.";
+App::$strings["Mapbox Access Token"] = "Mapbox Zugangs-Token";
+App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Wenn Du ein Mapbox Zugangs-Token eingibst, werden die Kartendaten (Kacheln) damit von Mapbox geladen, anstatt von OpenStreetMap, welches die Voreinstellung ist.";
+App::$strings["Rendezvous"] = "Rendezvous";
+App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Diese Identität wurde von einem anderen Mitglied aufgrund von Inaktivität gelöscht. Bitte klicke auf \"Neue Identität\" oder aktualisiere die Website im Browser, um eine neue Identität zu registrieren. Du kannst dabei den selben Namen verwenden.";
+App::$strings["Welcome to Rendezvous!"] = "Willkommen bei Rendezvous!";
+App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Gib Deinen Namen ein, um diesem Rendezvous beizutreten. Um Deinen Standort mit anderen Mitgliedern zu teilen, klicke auf das GPS Symbol. Sobald Dein Standort ermittelt ist, erscheint ein roter Punkt, und die Anderen werden Dich auf der Karte sehen können.";
+App::$strings["Let's meet here"] = "Lasst uns hier treffen";
+App::$strings["New marker"] = "Neue Markierung";
+App::$strings["Edit marker"] = "Markierung bearbeiten";
+App::$strings["New identity"] = "Neue Identität";
+App::$strings["Delete marker"] = "Markierung löschen";
+App::$strings["Delete member"] = "Mitglied löschen";
+App::$strings["Edit proximity alert"] = "Annäherungsalarm bearbeiten";
+App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Ein Annäherungsalarm wird ausgelöst werden, sobald sich dieses Mitglied innerhalb eines bestimmten Radius von Dir aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):";
+App::$strings["distance"] = "Entfernung";
+App::$strings["Proximity alert distance (meters)"] = "Entfernung für Annäherungsalarm (in Metern)";
+App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Ein Annäherungsalarm wird ausgelöst werden, sobald Du Dich innerhalb eines bestimmten Radius der Markierung aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):";
+App::$strings["Marker proximity alert"] = "Annäherungsalarm für Markierung";
+App::$strings["Reminder note"] = "Erinnerungshinweis";
+App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Gib eine Nachricht ein, die angezeigt werden soll, wenn Du Dich in der festgelegten Nähe befindest...";
+App::$strings["Add new rendezvous"] = "Neues Rendezvous hinzufügen";
+App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Erstelle ein neues Rendezvous und teile den Zugriffslink mit allen, die Du in die Gruppe einladen möchtest. Die, die den Link öffnen, werden Mitglieder des Rendezvous. Sie können die Standorte der anderen Mitglieder sehen, Marker zur Karte hinzufügen oder ihre eigenen Standorte mit der Gruppe teilen.";
+App::$strings["Some setting"] = "Einige Einstellungen";
+App::$strings["A setting"] = "Eine Einstellung";
+App::$strings["Skeleton Settings"] = "Skeleton Einstellungen";
+App::$strings["GNU-Social Protocol Settings updated."] = "GNU social Protokoll Einstellungen aktualisiert";
+App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Das GNU-Social-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein.";
+App::$strings["Enable the GNU-Social protocol for this channel"] = "Aktiviere das GNU social Protokoll für diesen Kanal";
+App::$strings["GNU-Social Protocol Settings"] = "GNU social Protokoll Einstellungen";
+App::$strings["Follow"] = "Folgen";
+App::$strings["%1\$s is now following %2\$s"] = "%1\$s folgt nun %2\$s";
+App::$strings["Planets Settings updated."] = "Planeten Einstellungen aktualisiert";
+App::$strings["Enable Planets Plugin"] = "Aktiviere Planeten Plugin";
+App::$strings["Planets Settings"] = "Planeten Einstellungen";
+App::$strings["System defaults:"] = "Systemstandardeinstellungen:";
+App::$strings["Preferred Clipart IDs"] = "Bevorzugte Clipart-IDs";
+App::$strings["List of preferred clipart ids. These will be shown first."] = "Liste bevorzugter Clipart-IDs. Diese werden zuerst angezeigt.";
+App::$strings["Default Search Term"] = "Standard-Suchbegriff";
+App::$strings["The default search term. These will be shown second."] = "Der Standard-Suchbegriff. Dieser wird an zweiter Stelle angezeigt.";
+App::$strings["Return After"] = "Zurückkehren nach";
+App::$strings["Page to load after image selection."] = "Die Seite, die nach Auswahl eines Bildes geladen werden soll.";
+App::$strings["Edit Profile"] = "Profil bearbeiten";
+App::$strings["Profile List"] = "Profilliste";
+App::$strings["Order of Preferred"] = "Reihenfolge der Bevorzugten";
+App::$strings["Sort order of preferred clipart ids."] = "Sortierreihenfolge der bevorzugten Clipart-IDs.";
+App::$strings["Newest first"] = "Neueste zuerst";
+App::$strings["As entered"] = "Wie eingegeben";
+App::$strings["Order of other"] = "Sortierung aller anderen";
+App::$strings["Sort order of other clipart ids."] = "Sortierreihenfolge der übrigen Clipart-IDs.";
+App::$strings["Most downloaded first"] = "Meist heruntergeladene zuerst";
+App::$strings["Most liked first"] = "Beliebteste zuerst";
+App::$strings["Preferred IDs Message"] = "Nachricht für bevorzugte IDs";
+App::$strings["Message to display above preferred results."] = "Nachricht, die über den Ergebnissen mit den bevorzugten IDs angezeigt werden soll.";
+App::$strings["Uploaded by: "] = "Hochgeladen von: ";
+App::$strings["Drawn by: "] = "Gezeichnet von: ";
+App::$strings["Use this image"] = "";
+App::$strings["Or select from a free OpenClipart.org image:"] = "Oder wähle ein freies Bild von OpenClipart.org:";
+App::$strings["Search Term"] = "Suchbegriff";
+App::$strings["Unknown error. Please try again later."] = "Unbekannter Fehler. Bitte versuchen Sie es später erneut.";
+App::$strings["Profile photo updated successfully."] = "Profilfoto erfolgreich aktualisiert.";
+App::$strings["Flag Adult Photos"] = "Nicht jugendfreie Fotos markieren";
+App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Stellt eine Option zum Verstecken von Fotos mit unangemessenen Inhalten in der Standard-Albumansicht bereit";
+App::$strings["Post to WordPress"] = "Auf WordPress posten";
+App::$strings["Enable WordPress Post Plugin"] = "Aktiviere das WordPress-Plugin";
+App::$strings["WordPress username"] = "WordPress-Benutzername";
+App::$strings["WordPress password"] = "WordPress-Passwort";
+App::$strings["WordPress API URL"] = "WordPress-API-URL";
+App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Normalerweise https://your-blog.tld/xmlrpc.php";
+App::$strings["WordPress blogid"] = "WordPress blogid";
+App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Nötig für Mehrbenutzer Seiten wie wordpress.com, andernfalls frei lassen";
+App::$strings["Post to WordPress by default"] = "Standardmäßig auf auf WordPress posten";
+App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Kommentare weiterleiten (benötigt hubzilla_wp Plugin)";
+App::$strings["WordPress Post Settings"] = "WordPress-Beitragseinstellungen";
+App::$strings["Wordpress Settings saved."] = "Wordpress-Einstellungen gespeichert.";
+App::$strings["This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Dieses Plugin sucht in Beiträgen nach Wörtern oder Textbausteinen, die Du hier unterhalb einträgst, und faltet alle Beiträge zusammen, in denen es diese Bausteine findet. Auf diese Weise wird verhindert, dass Inhalte, wie z.B. sexuelle Anspielungen, in unpassenden Momenten angezeigt werden. Es gilt als höflich und empfohlen, den #NSFW Tag für Beiträge zu verwenden, bei denen Du davon ausgehen kannst, dass andere sie anstößig finden könnten. Du kannst aber auch beliebige andere Wörter in der Liste angeben und das Plugin so als allgemeinen Inhaltsfilter verwenden.";
+App::$strings["Enable Content filter"] = "Inhaltsfilter aktivieren";
+App::$strings["Comma separated list of keywords to hide"] = "Kommaseparierte Liste von Schlüsselworten die verborgen werden sollen.";
+App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Wort, /regular-expression/, lang=xx, lang!=xx";
+App::$strings["Not Safe For Work Settings"] = "Not Safe For Work Einstellungen";
+App::$strings["General Purpose Content Filter"] = "Allzweck-Inhaltsfilter";
+App::$strings["NSFW Settings saved."] = "NSFW-Einstellungen gespeichert.";
+App::$strings["Possible adult content"] = "Möglicherweise nicht jugendfreie Inhalte";
+App::$strings["%s - view"] = "%s - ansehen";
+App::$strings["Post to Insanejournal"] = "Bei InsaneJournal veröffentlichen";
+App::$strings["Enable InsaneJournal Post Plugin"] = "Aktiviere das InsaneJournal Plugin";
+App::$strings["InsaneJournal username"] = "InsaneJournal-Benutzername";
+App::$strings["InsaneJournal password"] = "InsaneJournal-Passwort";
+App::$strings["Post to InsaneJournal by default"] = "Standardmäßig bei InsaneJournal veröffentlichen";
+App::$strings["InsaneJournal Post Settings"] = "InsaneJournal-Beitragseinstellungen";
+App::$strings["Insane Journal Settings saved."] = "InsaneJournal-Einstellungen gespeichert.";
+App::$strings["Post to Dreamwidth"] = "Bei Dreamwidth veröffentlichen";
+App::$strings["Enable Dreamwidth Post Plugin"] = "Aktiviere das Dreamwidth-Plugin";
+App::$strings["Dreamwidth username"] = "Dreamwidth-Benutzername";
+App::$strings["Dreamwidth password"] = "Dreamwidth-Passwort";
+App::$strings["Post to Dreamwidth by default"] = "Standardmäßig auf auf Dreamwidth posten";
+App::$strings["Dreamwidth Post Settings"] = "Dreamwidth-Beitragseinstellungen";
+App::$strings["New registration"] = "";
+App::$strings["Message sent to %s. New account registration: %s"] = "Nachricht gesendet an %s. Neue Kontoregistrierung: %s";
+App::$strings["Hubzilla Directory Stats"] = "Hubzilla-Verzeichnisstatistiken";
+App::$strings["Total Hubs"] = "Hubs insgesamt";
+App::$strings["Hubzilla Hubs"] = "Hubzilla Hubs";
+App::$strings["Friendica Hubs"] = "Friendica Hubs";
+App::$strings["Diaspora Pods"] = "Diaspora Pods";
+App::$strings["Hubzilla Channels"] = "Hubzilla-Kanäle";
+App::$strings["Friendica Channels"] = "Friendica-Kanäle";
+App::$strings["Diaspora Channels"] = "Diaspora-Kanäle";
+App::$strings["Aged 35 and above"] = "35 und älter";
+App::$strings["Aged 34 and under"] = "34 und jünger";
+App::$strings["Average Age"] = "Durchschnittsalter";
+App::$strings["Known Chatrooms"] = "Bekannte Chaträume";
+App::$strings["Known Tags"] = "Bekannte Schlagwörter";
+App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume.";
+App::$strings["Your Webbie:"] = "Dein Webbie";
+App::$strings["Fontsize (px):"] = "Schriftgröße (px):";
+App::$strings["Link:"] = "Link:";
+App::$strings["Like us on Hubzilla"] = "Like us on Hubzilla";
+App::$strings["Embed:"] = "Einbetten";
+App::$strings["Photos imported"] = "Fotos importiert";
+App::$strings["Redmatrix Photo Album Import"] = "Redmatrix-Fotoalbumimport";
+App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Hiermit werden all deine Fotoalben von Redmatrix in diesen Kanal importiert.";
+App::$strings["Redmatrix Server base URL"] = "Basis-URL des Redmatrix Servers";
+App::$strings["Redmatrix Login Username"] = "Redmatrix-Anmeldebenutzername";
+App::$strings["Redmatrix Login Password"] = "Redmatrix-Anmeldepasswort";
+App::$strings["Import just this album"] = "Nur dieses Album importieren";
+App::$strings["Leave blank to import all albums"] = "Leer lassen um alle Alben zu importieren";
+App::$strings["Maximum count to import"] = "Maximal zu importierende Anzahl";
+App::$strings["0 or blank to import all available"] = "0 oder leer lassen um alles zu importieren";
+App::$strings["Channels to auto connect"] = "Kanäle zur automatischen Verbindung";
+App::$strings["Comma separated list"] = "Kommagetrennte Liste";
+App::$strings["Popular Channels"] = "Beliebte Kanäle";
+App::$strings["IRC Settings"] = "IRC-Einstellungen";
+App::$strings["IRC settings saved."] = "IRC-Einstellungen gespeichert.";
+App::$strings["IRC Chatroom"] = "IRC-Chatraum";
+App::$strings["Post to LiveJournal"] = "Bei LiveJurnal veröffentlichen";
+App::$strings["Enable LiveJournal Post Plugin"] = "Aktiviere das LiveJurnal Plugin";
+App::$strings["LiveJournal username"] = "LiveJournal-Benutzername";
+App::$strings["LiveJournal password"] = "LiveJournal-Passwort";
+App::$strings["Post to LiveJournal by default"] = "Standardmäßig bei LiveJurnal veröffentlichen";
+App::$strings["LiveJournal Post Settings"] = "LiveJournal-Beitragseinstellungen";
+App::$strings["LiveJournal Settings saved."] = "LiveJournal-Einstellungen gespeichert.";
+App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal.";
+App::$strings["The error message was:"] = "Die Fehlermeldung war:";
+App::$strings["First Name"] = "Vorname";
+App::$strings["Last Name"] = "Nachname";
+App::$strings["Nickname"] = "Spitzname";
+App::$strings["Full Name"] = "Voller Name";
+App::$strings["Profile Photo 16px"] = "Profilfoto 16 px";
+App::$strings["Profile Photo 32px"] = "Profilfoto 32 px";
+App::$strings["Profile Photo 48px"] = "Profilfoto 48 px";
+App::$strings["Profile Photo 64px"] = "Profilfoto 64 px";
+App::$strings["Profile Photo 80px"] = "Profilfoto 80 px";
+App::$strings["Profile Photo 128px"] = "Profilfoto 128 px";
+App::$strings["Timezone"] = "Zeitzone";
+App::$strings["Birth Year"] = "Geburtsjahr";
+App::$strings["Birth Month"] = "Geburtsmonat";
+App::$strings["Birth Day"] = "Geburtstag";
+App::$strings["Birthdate"] = "Geburtsdatum";
+App::$strings["OpenID protocol error. No ID returned."] = "OpenID-Protokollfehler. Keine Kennung zurückgegeben.";
+App::$strings["Login failed."] = "Login fehlgeschlagen.";
+App::$strings["Male"] = "Männlich";
+App::$strings["Female"] = "Weiblich";
+App::$strings["You're welcome."] = "Gern geschehen.";
+App::$strings["Ah shucks..."] = "Ach Mist...";
+App::$strings["Don't mention it."] = "Keine Ursache.";
+App::$strings["&lt;blush&gt;"] = "";
+App::$strings["Page to load after login"] = "Seite, die nach dem Login geladen werden soll";
+App::$strings["Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave blank for default network page (grid)."] = "Beispiele: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (Gruppen-gefilterte Beiträge), &quot;channel&quot; oder &quot;notifications/system&quot; (freilassen für die Standard-Netzwerkseite (grid).";
+App::$strings["Startpage Settings"] = "Startseiteneinstellungen";
+App::$strings["bitchslap"] = "Ohrfeige";
+App::$strings["bitchslapped"] = "geohrfeigt";
+App::$strings["shag"] = "bumsen";
+App::$strings["shagged"] = "gebumst";
+App::$strings["patent"] = "Patent";
+App::$strings["patented"] = "patentiert";
+App::$strings["hug"] = "umarmen";
+App::$strings["hugged"] = "umarmt";
+App::$strings["murder"] = "ermorden";
+App::$strings["murdered"] = "ermordet";
+App::$strings["worship"] = "Anbetung";
+App::$strings["worshipped"] = "angebetet";
+App::$strings["kiss"] = "küssen";
+App::$strings["kissed"] = "geküsst";
+App::$strings["tempt"] = "verlocken";
+App::$strings["tempted"] = "verlockt";
+App::$strings["raise eyebrows at"] = "Augenbrauen hochziehen";
+App::$strings["raised their eyebrows at"] = "zog die Augenbrauen hoch";
+App::$strings["insult"] = "beleidigen";
+App::$strings["insulted"] = "beleidigt";
+App::$strings["praise"] = "loben";
+App::$strings["praised"] = "gelobt";
+App::$strings["be dubious of"] = "";
+App::$strings["was dubious of"] = "";
+App::$strings["eat"] = "essen";
+App::$strings["ate"] = "aß";
+App::$strings["giggle and fawn at"] = "";
+App::$strings["giggled and fawned at"] = "";
+App::$strings["doubt"] = "anzweifeln";
+App::$strings["doubted"] = "angezweifelt";
+App::$strings["glare"] = "";
+App::$strings["glared at"] = "";
+App::$strings["fuck"] = "ficken";
+App::$strings["fucked"] = "gefickt";
+App::$strings["bonk"] = "";
+App::$strings["bonked"] = "";
+App::$strings["declare undying love for"] = "erkläre unsterbliche Liebe";
+App::$strings["declared undying love for"] = "erklärte unsterbliche Liebe";
+App::$strings["Diaspora Protocol Settings updated."] = "Diaspora Protokoll Einstellungen aktualisiert";
+App::$strings["The Diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Das Diaspora-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein.";
+App::$strings["Enable the Diaspora protocol for this channel"] = "Das Diaspora Protokoll für diesen Kanal aktivieren";
+App::$strings["Allow any Diaspora member to comment on your public posts"] = "Erlaube jedem Diaspora Nutzer deine öffentlichen Beiträge zu kommentieren";
+App::$strings["Prevent your hashtags from being redirected to other sites"] = "Verhindern, dass Deine Hashtags zu anderen Seiten umgeleitet werden";
+App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "Signieren und Weiterleiten von Beiträgen und Kommentaren ohne vorhandene Diaspora-Signatur";
+App::$strings["Followed hashtags (comma separated, do not include the #)"] = "Verfolgte Hashtags (Komma separierte Liste, ohne die #)";
+App::$strings["Diaspora Protocol Settings"] = "Diaspora Protokoll Einstellungen";
+App::$strings["No username found in import file."] = "Es wurde kein Nutzername in der importierten Datei gefunden.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen.";
+App::$strings["Your account on %s will expire in a few days."] = "Dein Konto auf %s wird in ein paar Tagen ablaufen.";
+App::$strings["Your $Productname test account is about to expire."] = "Dein $Productname Test-Konto wird bald auslaufen.";
+App::$strings["Enable Rainbowtag"] = "Rainbowtag aktivieren";
+App::$strings["Rainbowtag Settings"] = "Rainbowtag-Einstellungen";
+App::$strings["Rainbowtag Settings saved."] = "Rainbowtag-Einstellungen gespeichert.";
+App::$strings["Show Upload Limits"] = "Hochladebeschränkungen anzeigen";
+App::$strings["Hubzilla configured maximum size: "] = "Die in Hubzilla eingestellte maximale Größe:";
+App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize:";
+App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (muss größer sein als upload_max_filesize):";
+App::$strings["generic profile image"] = "generisches Profilbild";
+App::$strings["random geometric pattern"] = "zufälliges geometrisches Muster";
+App::$strings["monster face"] = "Monstergesicht";
+App::$strings["computer generated face"] = "computergeneriertes Gesicht";
+App::$strings["retro arcade style face"] = "";
+App::$strings["Hub default profile photo"] = "Standard-Profilfoto für diesen Hub";
+App::$strings["Information"] = "Information";
+App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "";
+App::$strings["Save Settings"] = "Einstellungen speichern";
+App::$strings["Default avatar image"] = "Standard-Avatarbild";
+App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "";
+App::$strings["Rating of images"] = "Bewertungen der Bilder";
+App::$strings["Select the appropriate avatar rating for your site. See README"] = "";
+App::$strings["Gravatar settings updated."] = "Gravatar-Einstellungen aktualisiert.";
+App::$strings["Hubzilla File Storage Import"] = "Hubzilla-Datenspeicher-Import";
+App::$strings["This will import all your cloud files from another server."] = "Hiermit werden alle Deine Cloud-Dateien von einem anderen Server importiert.";
+App::$strings["Hubzilla Server base URL"] = "Basis-URL des Habzilla-Servers";
+App::$strings["Since modified date yyyy-mm-dd"] = "";
+App::$strings["Until modified date yyyy-mm-dd"] = "";
+App::$strings["Recent Channel/Profile Viewers"] = "Kürzliche Kanal/Profil Besucher";
+App::$strings["This plugin/addon has not been configured."] = "Dieses Plugin/Addon wurde noch nicht konfiguriert.";
+App::$strings["Please visit the Visage settings on %s"] = "Bitte rufe die Visage Einstellungen auf %s auf";
+App::$strings["your feature settings page"] = "Die Funktions-Einstellungsseite";
+App::$strings["No entries."] = "Keine Einträge.";
+App::$strings["Enable Visage Visitor Logging"] = "Aktiviere das Visage-Besucher Logging";
+App::$strings["Visage Settings"] = "Visage-Einstellungen";
+App::$strings["Nsabait Settings updated."] = "Nsabait-Einstellungen aktualisiert.";
+App::$strings["Enable NSAbait Plugin"] = "Aktiviere das NSAbait Plugin";
+App::$strings["NSAbait Settings"] = "NSAbait-Einstellungen";
+App::$strings["Send test email"] = "Test-E-Mail senden";
+App::$strings["No recipients found."] = "Keine Empfänger gefunden.";
+App::$strings["Mail sent."] = "Mail gesendet.";
+App::$strings["Sending of mail failed."] = "Senden der E-Mail fehlgeschlagen.";
+App::$strings["Mail Test"] = "Mail Test";
+App::$strings["Message subject"] = "Betreff der Nachricht";
+App::$strings["Use markdown for editing posts"] = "Verwende Markdown zum Bearbeiten von Beiträgen";
+App::$strings["View Larger"] = "Größer anzeigen";
+App::$strings["Tile Server URL"] = "Kachelserver-URL";
+App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Kachelserver</a>";
+App::$strings["Nominatim (reverse geocoding) Server URL"] = "Nominatim (reverse Geokodierung) Server URL";
+App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim servers</a>"] = "Eine Liste der <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim Server</a>";
+App::$strings["Default zoom"] = "Standardzoom";
+App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "Die Standard-Vergrößerungsstufe (1:Welt, 18:höchste, hängt außerdem vom Kachelserver ab).";
+App::$strings["Include marker on map"] = "Markierung auf der Karte einschließen";
+App::$strings["Include a marker on the map."] = "Binde eine Markierung auf der Karte ein.";
+App::$strings["text to include in all outgoing posts from this site"] = "Test der in alle Beiträge angefügt werden soll, die von dieser Seite ausgehen";
+App::$strings["Post to Friendica"] = "Bei Friendica veröffentlichen";
+App::$strings["rtof Settings saved."] = "rtof-Einstellungen gespeichert.";
+App::$strings["Allow posting to Friendica"] = "Erlaube die Veröffentlichung bei Friendica";
+App::$strings["Send public postings to Friendica by default"] = "Standardmäßig öffentliche Beiträge bei Friendica veröffentlichen";
+App::$strings["Friendica API Path"] = "Friendica-API-Pfad";
+App::$strings["https://{sitename}/api"] = "https://{sitename}/api";
+App::$strings["Friendica login name"] = "Friendica-Anmeldename";
+App::$strings["Friendica password"] = "Friendica-Passwort";
+App::$strings["Hubzilla to Friendica Post Settings"] = "Hubzilla-zu-Friendica Beitragseinstellungen";
+App::$strings["Status:"] = "Status:";
+App::$strings["Activate addon"] = "Addon aktiviren";
+App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Jappix Mini Chat-Widget von der Weboberfläche verbergen";
+App::$strings["Jabber username"] = "Jabber-Benutzername";
+App::$strings["Jabber server"] = "Jabber-Server";
+App::$strings["Jabber BOSH host URL"] = "Jabber BOSH Host URL";
+App::$strings["Jabber password"] = "Jabber-Passwort";
+App::$strings["Encrypt Jabber password with Hubzilla password"] = "Jabber-Passwort mit Hubzilla-Passwort verschlüsseln";
+App::$strings["Hubzilla password"] = "Hubzilla-Passwort";
+App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Verbindungsanfragen von Hubzilla-Kontakten automatisch annehmen";
+App::$strings["Purge internal list of jabber addresses of contacts"] = "Interne Liste der Jabber Adressen von Kontakten löschen";
+App::$strings["Configuration Help"] = "Konfigurationshilfe";
+App::$strings["Jappix Mini Settings"] = "Jappix Mini Einstellungen";
+App::$strings["Currently blocked"] = "Derzeit blockiert";
+App::$strings["No channels currently blocked"] = "Momentan sind keine Kanäle blockiert";
+App::$strings["\"Superblock\" Settings"] = "\"Superblock\"-Einstellungen";
+App::$strings["Block Completely"] = "Vollständig blockieren";
+App::$strings["superblock settings updated"] = "Superblock Einstellungen aktualisiert";
+App::$strings["Federate"] = "Beitrag verteilen";
+App::$strings["nofed Settings saved."] = "nofed Einstellungen gespeichert";
+App::$strings["Allow Federation Toggle"] = "Umschalter zur Beitragsverteilung bereitstellen";
+App::$strings["Federate posts by default"] = "Beiträge standardmäßig verteilen";
+App::$strings["NoFed Settings"] = "NoFed-Einstellungen";
+App::$strings["Post to Red"] = "";
+App::$strings["Channel is required."] = "Kanal ist erforderlich.";
+App::$strings["redred Settings saved."] = "redred-Einstellungen gespeichert.";
+App::$strings["Allow posting to another Hubzilla Channel"] = "Erlaube die Veröffentlichung in anderen Hubzilla Kanälen";
+App::$strings["Send public postings to Hubzilla channel by default"] = "";
+App::$strings["Hubzilla API Path"] = "Hubzilla-API-Pfad";
+App::$strings["Hubzilla login name"] = "Hubzilla-Anmeldename";
+App::$strings["Hubzilla channel name"] = "Hubzilla-Kanalname";
+App::$strings["Hubzilla Crosspost Settings"] = "Hubzilla Crosspost Einstellungen";
+App::$strings["Logfile archive directory"] = "Verzeichnis der Logdatei";
+App::$strings["Directory to store rotated logs"] = "Verzeichnis, in dem rotierte Logs gespeichert werden sollen";
+App::$strings["Logfile size in bytes before rotating"] = "zu erreichende Logdateigröße in Bytes, bevor rotiert wird";
+App::$strings["Number of logfiles to retain"] = "Anzahl aufzubewahrender rotierter Logdateien";
+App::$strings["Friendica Photo Album Import"] = "Friendica-Fotoalbumimport";
+App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Hiermit werden all deine Fotoalben von Friendica in diesen Hubzilla Kanal importiert.";
+App::$strings["Friendica Server base URL"] = "BasisURL des Friendica Servers";
+App::$strings["Friendica Login Username"] = "Friendica-Anmeldebenutzername";
+App::$strings["Friendica Login Password"] = "Friendica-Anmeldepasswort";
+App::$strings["ActivityPub"] = "ActivityPub";
+App::$strings["ActivityPub Protocol Settings updated."] = "ActivityPub Protokoll Einstellungen aktualisiert";
+App::$strings["The ActivityPub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "";
+App::$strings["Enable the ActivityPub protocol for this channel"] = "Aktiviere das ActivityPub Protokoll für diesen Kanal";
+App::$strings["Send multi-media HTML articles"] = "Multimedia HTML Artikel versenden";
+App::$strings["Not supported by some microblog services such as Mastodon"] = "Wird von einigen Microblogging-Plattformen wie Mastodon nicht unterstützt";
+App::$strings["ActivityPub Protocol Settings"] = "ActivityPub Protokoll Einstellungen";
+App::$strings["Project Servers and Resources"] = "Projektserver und -ressourcen";
+App::$strings["Project Creator and Tech Lead"] = "Projektersteller und Technischer Leiter";
+App::$strings["Admin, developer, directorymin, support bloke"] = "Administrator, Entwickler, Verzeichnis Betreibender, Supportleistende";
+App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Und die hunderte anderen Menschen und Organisationen, die geholfen haben Hubzilla möglich zu machen.";
+App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Die Redmatrix/Hubzilla Projekte werden hauptsächlich von Freiwilligen bereitgestellt, die ihre Zeit und Expertise zur Verfügung stellen - und oft aus eigener Tasche für die Dienste zahlen, die sie mit anderen teilen.";
+App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "Es gibt keine Finanzierung durch Firmen, keine Werbung und wir verkaufen Deine persönlichen Daten nicht. (Wir kontrollieren Deine persönlichen Daten nicht - <strong>das machst Du</strong>.)";
+App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Hilf uns bei unserer wegweisenden Arbeit im Bereich der Dezantralisation, von Web-Identitäten und Privatsphäre.";
+App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Die Spenden werden dafür verwendet Server und Dienste am laufen zu halten und helfen desweiteren innovative Neuerungen zu schaffen und die Entwicklung voran zu treiben.";
+App::$strings["Donate"] = "Spenden";
+App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Wähle ein Projekt, einen Entwickler oder einen öffentlichen Hub den du mit einer einmaligen Spende unterstützen willst.";
+App::$strings["Donate Now"] = "Jetzt spenden";
+App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>Oder</em></strong> werde ein Unterstützer des Projekts (ausschließlich Hubzilla)";
+App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Bitte teile uns mit ob dein kompletter Name oder dein Vorname (oder gar nichts) auf unserer Sponsoren-Seite veröffentlicht werden soll.";
+App::$strings["Sponsor"] = "Sponsor";
+App::$strings["Special thanks to: "] = "Besonderer Dank an: ";
+App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "";
+App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "";
+App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Einige gültige Beispiele: A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ...";
+App::$strings["Guitar Chords"] = "Gitarrenakkorde";
+App::$strings["The complete online chord dictionary"] = "Das komplette online Akkord-Verzeichnis";
+App::$strings["Tuning"] = "Stimmen";
+App::$strings["Chord name: example: Em7"] = "Beispiel Akkord Name: Em7";
+App::$strings["Show for left handed stringing"] = "Linkshänder-Besaitung anzeigen";
+App::$strings["Quick Reference"] = "Schnellreferenz";
+App::$strings["Post to Libertree"] = "Bei Libertree veröffentlichen";
+App::$strings["Enable Libertree Post Plugin"] = "Aktivire das Libertree-Plugin";
+App::$strings["Libertree API token"] = "Libertree API Token";
+App::$strings["Libertree site URL"] = "URL der Libertree Seite";
+App::$strings["Post to Libertree by default"] = "Standardmäßig bei Libertree veröffentlichen";
+App::$strings["Libertree Post Settings"] = "Libertree-Beitragseinstellungen";
+App::$strings["Libertree Settings saved."] = "Libertree-Einstellungen gespeichert.";
+App::$strings["Flattr this!"] = "Flattr this!";
+App::$strings["Flattr widget settings updated."] = "Flattr Widget Einstellungen aktualisiert";
+App::$strings["Flattr user"] = "Flattr Nutzer";
+App::$strings["URL of the Thing to flattr"] = "URL des Dings zum flattrn";
+App::$strings["If empty channel URL is used"] = "Falls leer wird die Channel URL verwendet";
+App::$strings["Title of the Thing to flattr"] = "Titel des Dings zum flattrn";
+App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Falls leer wird \"Kanalname auf The Hubzilla\" verwendet";
+App::$strings["Static or dynamic flattr button"] = "Statischer oder dynamischer Flattr Button";
+App::$strings["static"] = "statisch";
+App::$strings["dynamic"] = "dynamisch";
+App::$strings["Alignment of the widget"] = "Ausrichtung des Widgets";
+App::$strings["left"] = "links";
+App::$strings["right"] = "rechts";
+App::$strings["Enable Flattr widget"] = "Flattr Widget verwenden";
+App::$strings["Flattr Widget Settings"] = "Flattr Widget Einstellungen";
+App::$strings["Post to GNU social"] = "Bei GNU social veröffentlichen";
+App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Bitte kontaktiere den Administrator deines Hubs.<br />Die angegebene API URL ist nicht korrekt.";
+App::$strings["We could not contact the GNU social API with the Path you entered."] = "Mit dem angegebenen Pfad war es uns nicht möglich, die GNU social API zu erreichen.";
+App::$strings["GNU social settings updated."] = "GNU social Einstellungen aktualisiert.";
+App::$strings["Globally Available GNU social OAuthKeys"] = "Global verfügbare GNU social OAuthKeys";
+App::$strings["There are preconfigured OAuth key pairs for some GNU social servers available. If you are using one of them, please use these credentials.<br />If not feel free to connect to any other GNU social instance (see below)."] = "";
+App::$strings["Provide your own OAuth Credentials"] = "";
+App::$strings["No consumer key pair for GNU social found. Register your Hubzilla Account as an desktop client on your GNU social account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Hubzilla installation at your favourite GNU social installation."] = "";
+App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key";
+App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
+App::$strings["Base API Path"] = "Basis Pfad der API";
+App::$strings["Remember the trailing /"] = "Denke an das abschließende /";
+App::$strings["GNU social application name"] = "GNU social Anwendungsname";
+App::$strings["To connect to your GNU social account click the button below to get a security code from GNU social which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to GNU social."] = "";
+App::$strings["Log in with GNU social"] = "Mit GNU social anmelden";
+App::$strings["Copy the security code from GNU social here"] = "Kopiere den Sicherheitscode von GNU social hier her";
+App::$strings["Cancel Connection Process"] = "Verbindungsprozes abbrechen";
+App::$strings["Current GNU social API is"] = "Aktuelle GNU social API ist";
+App::$strings["Cancel GNU social Connection"] = "GNU social Verbindung trennen";
+App::$strings["Currently connected to: "] = "Momentan verbunden mit:";
+App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "";
+App::$strings["Allow posting to GNU social"] = "Erlaube die Veröffentlichung bei GNU social";
+App::$strings["If enabled your public postings can be posted to the associated GNU-social account"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen GNU social Konto veröffentlicht werden.";
+App::$strings["Post to GNU social by default"] = "Standardmäßig bei GNU social veröffentlichen";
+App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Wenn aktiv werden all deine öffentlichen Beiträge standardmäßig bei dem verbundenen GNU social Konto veröffentlicht.";
+App::$strings["Clear OAuth configuration"] = "OAuth Konfiguration löschen";
+App::$strings["GNU social Post Settings"] = "GNU social Einstellungen";
+App::$strings["API URL"] = "API-URL";
+App::$strings["Application name"] = "Anwendungsname";
+App::$strings["QR code"] = "QR-Code";
+App::$strings["QR Generator"] = "QR-Generator";
+App::$strings["Enter some text"] = "Etwas Text eingeben";
+App::$strings["Invalid game."] = "Ungültiges Spiel.";
+App::$strings["You are not a player in this game."] = "Sie sind kein Spieler in diesem Spiel.";
+App::$strings["You must be a local channel to create a game."] = "Um ein Spiel zu eröffnen, musst du ein lokaler Kanal sein";
+App::$strings["You must select one opponent that is not yourself."] = "Du musst einen Gegner wählen, der nicht du selbst ist";
+App::$strings["Random color chosen."] = "";
+App::$strings["Error creating new game."] = "Fehler beim Erstellen eines neuen Spiels.";
+App::$strings["Requested channel is not available."] = "Angeforderter Kanal nicht verfügbar.";
+App::$strings["You must select a local channel /chess/channelname"] = "Du musst einen lokalen Kanal/Schach(Kanalnamen aufwählen";
+App::$strings["Enable notifications"] = "Benachrichtigungen aktivieren";
+App::$strings["Post to Twitter"] = "Bei Twitter veröffentlichen";
+App::$strings["Twitter settings updated."] = "Twitter-Einstellungen aktualisiert.";
+App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Es wurde kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte kontaktiere deinen Seiten-Administrator.";
+App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Auf diesem Hubzilla-Server ist das Twitter-Plugin aktiviert, aber Du hast Dich hier noch nicht mit Deinem Twitter-Konto verbunden. Um dies zu tun, klicke die Schaltfläche unten, um eine PIN von Twitter zu erhalten, die Du dann in das Eingabefeld darunter einfügen und das Formular bestätigen musst. Nur Deine <strong>öffentlichen</strong> Beiträge werden auf Twitter geteilt.";
+App::$strings["Log in with Twitter"] = "Mit Twitter anmelden";
+App::$strings["Copy the PIN from Twitter here"] = "PIN von Twitter hier her kopieren";
+App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Hinweis:</strong> Entsprechend Deiner Privatsphären-Einstellungen (<em>Profil-Details vor nicht angemeldeten Besuchern verbergen?</em>) kann ein ggf. zu Twitter geteilter Link Besucher auf eine leere Seite führen, die darüber informiert, dass der Zugriff zu Deinem Profil eingeschränkt ist.";
+App::$strings["Allow posting to Twitter"] = "Erlaube die Veröffentlichung bei Twitter";
+App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Konto veröffentlicht werden.";
+App::$strings["Twitter post length"] = "";
+App::$strings["Maximum tweet length"] = "";
+App::$strings["Send public postings to Twitter by default"] = "Standardmäßig öffentliche Beiträge bei Twitter veröffentlichen";
+App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Wenn aktiv werden deine öffentlichen Beiträge bei dem verbundenen Twitter Konto veröffentlicht werden.";
+App::$strings["Twitter Post Settings"] = "Twitter-Beitragseinstellungen";
+App::$strings["Deactivate the feature"] = "Diese Funktion abschalten";
+App::$strings["Hide the button and show the smilies directly."] = "Verstecke die Schaltfläche und zeige die Smilies direkt an.";
+App::$strings["Smileybutton Settings"] = "Smileyknopf-Einstellungen";
+App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Diese Website verwendet <a href='http://www.piwik.org'>Piwik</a>, um die Besucherzugriffe auszuwerten.";
+App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Wenn Du nicht möchtest, dass Deine Besuche zu diesem Zweck gespeichert werden, kannst Du <a href='%s'>ein Cookie setzen, welches Piwik davon abhält, Deine weiteren Besuche auf dieser Website zu verfolgen</a> (Opt-out).";
+App::$strings["Piwik Base URL"] = "Piwik Basis-URL";
+App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Der absolute Pfad zu Deiner Piwik-Installation (ohne Protokoll (http/s), aber mit abschließendem Schrägstrich / ).";
+App::$strings["Site ID"] = "Seitenkennung";
+App::$strings["Show opt-out cookie link?"] = "Den Opt-out Cookie-Link anzeigen?";
+App::$strings["Asynchronous tracking"] = "Asynchrones Tracking";
+App::$strings["Enable frontend JavaScript error tracking"] = "Ermögliche Frontend-JavaScript-Fehlertracking";
+App::$strings["This feature requires Piwik >= 2.2.0"] = "Diese Funktion erfordert Piwik >= 2.2.0";
+App::$strings["Edit your profile and change settings."] = "Bearbeite dein Profil und ändere die Einstellungen.";
+App::$strings["Click here to see activity from your connections."] = "Klicke hier, um die Aktivitäten Deiner Verbindungen zu sehen.";
+App::$strings["Click here to see your channel home."] = "Klicke hier, um Deine Kanal-Hauptseite zu sehen.";
+App::$strings["You can access your private messages from here."] = "Hierüber kannst Du auf Deine privaten Nachrichten zugreifen.";
+App::$strings["Create new events here."] = "Neue Termine hier erstellen";
+App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Du kannst hier neue Verbindungen akzeptieren sowie die Einstellungen bereits vorhandener Vebindungen bearbeiten. Außerdem kannst Du Verbindungen in Gruppen zusammenfassen.";
+App::$strings["System notifications will arrive here"] = "Systembenachrichtigungen werden hier eintreffen";
+App::$strings["Search for content and users"] = "Nach Inhalt von Benutzern suchen";
+App::$strings["Browse for new contacts"] = "Schaue nach möglichen neuen Verbindungen.";
+App::$strings["Launch installed apps"] = "Installierte Apps starten";
+App::$strings["Looking for help? Click here."] = "Du benötigst Hilfe? Klicke hier.";
+App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "In Deinem Netzwerk gibt es neue Ereignisse. Klicke hier, um zu sehen, was passiert ist!";
+App::$strings["You have received a new private message. Click here to see from who!"] = "Du hast eine neue private Nachricht erhalten. Klicke hier, um zu sehen, von wem!";
+App::$strings["There are events this week. Click here too see which!"] = "Es gibt neue Termine diese Woche. Klicke hier, um zu sehen, welche!";
+App::$strings["You have received a new introduction. Click here to see who!"] = "Du hast eine neue Verbindungsanfrage erhalten. Klicke hier, um zu sehen, wer es ist!";
+App::$strings["There is a new system notification. Click here to see what has happened!"] = "Es gibt eine neue Systembenachrichtigung. Klicke hier, um zu sehen, was passiert ist!";
+App::$strings["Click here to share text, images, videos and sound."] = "Klicke hier, um Texte, Bilder, Videos und Klänge zu teilen.";
+App::$strings["You can write an optional title for your update (good for long posts)."] = "Du kannst Deinem Beitrag einen optionalen Titel geben (gut für lange Beiträge).";
+App::$strings["Entering some categories here makes it easier to find your post later."] = "Ein paar Kategorien hier einzugeben, macht es leichter, Deinen Beitrag später wiederzufinden.";
+App::$strings["Share photos, links, location, etc."] = "Teile Photos, Links, Standort, usw.";
+App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Du möchtest diesen Inhalt nur für eine Weile teilen? Dann lass ihn zu einem bestimmten Datum ablaufen.";
+App::$strings["You can password protect content."] = "Du kannst Inhalte mit einem Passwort schützen.";
+App::$strings["Choose who you share with."] = "Wähle aus, mit wem Du teilen möchtest.";
+App::$strings["Click here when you are done."] = "Klicke hier, wenn Du fertig bist.";
+App::$strings["Adjust from which channels posts should be displayed."] = "Lege fest, von welchen Kanälen Beiträge angezeigt werden sollen.";
+App::$strings["Only show posts from channels in the specified privacy group."] = "Zeige nur Beträge von Kanälen, die in einer bestimmten Gruppe sind.";
+App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Finde Beiträge, die bestimmte Tags enthalten (Stichworte, die mit dem \"#\"-Symbol beginnen).";
+App::$strings["Easily find posts in given category."] = "Finde Beiträge in bestimmten Kategorien.";
+App::$strings["Easily find posts by date."] = "Finde Beiträge anhand des Datums.";
+App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Vorgeschlagene Kanäle, die in ihren Einstellungen zugestimmt haben, als Vorschläge angezeigt zu werden, und die Du eventuell interessant finden könntest.";
+App::$strings["Here you see channels you have connected to."] = "Hier siehst du die Kanäle, mit denen Du verbunden bist.";
+App::$strings["Save your search so you can repeat it at a later date."] = "Speichere Deine Suche, so dass Du sie später leicht erneut durchführen kannst.";
+App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Wenn Du dieses Symbol siehst, kannst Du weitgehend sicher sein, dass der Ansender dem angegebenen entspricht. Nicht immer ist es möglich, den Absender zu verifizieren, daher fehlt das Symbol mitunter. Das ist aber in der Regel kein Grund zur Sorge.";
+App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "Vorsicht! Es kann sein, dass jemand versucht, eine Nachricht zu fälschen! Diese Nachricht muss nicht unbedingt vom angegebenen Absender stammen!";
+App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "Willkommen zu Hubzilla! Möchtest Du eine Tour der Benutzeroberfläche angezeigt bekommen?</p><p>Du kannst zu jeder Zeit pausieren und fortsetzen, wo Du aufgehört hast, indem Du die Seite neu lädtst, oder zu einer anderen Seite springst.</p><p>Du kannst auc durch das Drücken der Enter-Taste weitergehen.";
+App::$strings["Extended Identity Sharing"] = "Erweitertes Teilen von Identitäten";
+App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with \$Projectname sites."] = "Teile Deine Identität mit allen Webseiten im Internet. Ist dies deaktiviert, wird Deine Identität nur mit \$Projectname - Servern geteilt.";
+App::$strings["Three Dimensional Tic-Tac-Toe"] = "Dreidimensionales Tic-Tac-Toe";
+App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
+App::$strings["New game"] = "Neues Spiel";
+App::$strings["New game with handicap"] = "Neues Handicaü-Spiel";
+App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "3D Tic-Tac-Toe funktioniert wie das ursprüngliche Spiel, nur dass es auf mehreren Ebenen gleichzeitig gespielt wird.";
+App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "In diesem Fall sind es drei Ebenen. Du gewinnst, wenn es dir gelingt drei in einer Reihe auf einer beliebigen Ebene oder diagonal über die verschiedenen Ebenen hinweg zu erreichen.";
+App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Bei einem Handicap-Spiel wird die Position im Zentrum der mittleren Ebene gesperrt, da der Spieler der dieses Feld für sich beansprucht meist einen unfairen Vorteil hat.";
+App::$strings["You go first..."] = "Du darfst anfangen...";
+App::$strings["I'm going first this time..."] = "Diesmal werde ich anfangen...";
+App::$strings["You won!"] = "Sie haben gewonnen!";
+App::$strings["\"Cat\" game!"] = "\"Katzen\"-Spiel!";
+App::$strings["I won!"] = "Ich habe gewonnen!";
+App::$strings["Message to display on every page on this server"] = "Nachricht, die auf jeder Seite dieses Servers angezeigt werden soll";
+App::$strings["Pageheader Settings"] = "Nachrichtenkopf-Einstellungen";
+App::$strings["pageheader Settings saved."] = "Nachrichtenkopf-Einstellungen gespeichert.";
+App::$strings["Only authenticate automatically to sites of your friends"] = "Authentifiziere Dich nur auf Seiten deiner Freunde automatisch";
+App::$strings["By default you are automatically authenticated anywhere in the network"] = "Authentifiziere Dich standardmäßig bei allen Seiten im Netzwerk automatisch";
+App::$strings["Authchoose Settings"] = "Einstellungen für automatische Authentifizierung";
+App::$strings["Atuhchoose Settings updated."] = "Einstellungen für automatische Authentifizierung aktualisiert.";
+App::$strings["lonely"] = "einsam";
+App::$strings["drunk"] = "betrunken";
+App::$strings["horny"] = "geil";
+App::$strings["stoned"] = "bekifft";
+App::$strings["fucked up"] = "beschissen";
+App::$strings["clusterfucked"] = "clusterfucked";
+App::$strings["crazy"] = "verrückt";
+App::$strings["hurt"] = "verletzt";
+App::$strings["sleepy"] = "müde";
+App::$strings["grumpy"] = "mürrisch";
+App::$strings["high"] = "hoch";
+App::$strings["semi-conscious"] = "halb bewusstlos";
+App::$strings["in love"] = "verliebt";
+App::$strings["in lust"] = "";
+App::$strings["naked"] = "nackt";
+App::$strings["stinky"] = "stinkend";
+App::$strings["sweaty"] = "verschwitzt";
+App::$strings["bleeding out"] = "blutend";
+App::$strings["victorious"] = "siegreich";
+App::$strings["defeated"] = "besiegt";
+App::$strings["envious"] = "neidisch";
+App::$strings["jealous"] = "eifersüchtig";
+App::$strings["XMPP settings updated."] = "XMPP-Einstellungen aktualisiert.";
+App::$strings["Enable Chat"] = "Chat aktivieren";
+App::$strings["Individual credentials"] = "Individuelle Anmeldedaten";
+App::$strings["Jabber BOSH server"] = "Jabber BOSH Server";
+App::$strings["XMPP Settings"] = "XMPP-Einstellungen";
+App::$strings["Jabber BOSH host"] = "Jabber BOSH Host";
+App::$strings["Use central userbase"] = "Zentrale Benutzerbasis verwenden";
+App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "";
+App::$strings["Who likes me?"] = "Wer mag mich?";
+App::$strings["You are now authenticated to pumpio."] = "Du bist nun bei pumpio authenzifiziert.";
+App::$strings["return to the featured settings page"] = "";
+App::$strings["Post to Pump.io"] = "Bei pumpio veröffentlichen";
+App::$strings["Pump.io servername"] = "Pump.io-Servername";
+App::$strings["Without \"http://\" or \"https://\""] = "Ohne \"http://\" oder \"https://\"";
+App::$strings["Pump.io username"] = "Pump.io-Benutzername";
+App::$strings["Without the servername"] = "Ohne dem Servernamen";
+App::$strings["You are not authenticated to pumpio"] = "Du bist nicht bei pumpio authentifiziert.";
+App::$strings["(Re-)Authenticate your pump.io connection"] = "Deine pumpio Verbindung (erneut) authentifizieren";
+App::$strings["Enable pump.io Post Plugin"] = "Aktiviere das pumpio-Plugin";
+App::$strings["Post to pump.io by default"] = "Standardmäßig bei pumpio veröffentlichen";
+App::$strings["Should posts be public"] = "Sollen die Beiträge öffentlich sein";
+App::$strings["Mirror all public posts"] = "Öffentliche Beiträge spiegeln";
+App::$strings["Pump.io Post Settings"] = "Pump.io-Beitragseinstellungen";
+App::$strings["PumpIO Settings saved."] = "PumpIO-Einstellungen gespeichert.";
+App::$strings["An account has been created for you."] = "Ein Konto wurde für Sie erstellt.";
+App::$strings["Authentication successful but rejected: account creation is disabled."] = "Authentifizierung war erfolgreich, wurde aber abgewiesen! Das Anlegen von Konten wurde deaktiviert.";
+App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Suche %1\$s (%2\$s)";
+App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname";
+App::$strings["Search \$Projectname"] = "\$Projectname suchen";
+App::$strings["Redmatrix File Storage Import"] = "";
+App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Hiermit werden alle deine Daten aus der Redmatrix Cloud in diesen Kanal importiert.";
+App::$strings["file"] = "Datei";
+App::$strings["Send email to all members"] = "E-Mail an alle Mitglieder senden";
+App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d von %2\$d Nachrichten gesendet.";
+App::$strings["Send email to all hub members."] = "Eine E-Mail an alle Mitglieder dieses Hubs senden.";
+App::$strings["Sender Email address"] = "E-Mail Adresse des Absenders";
+App::$strings["Test mode (only send to hub administrator)"] = "Test Modus (nur an Hub Administratoren senden)";
+App::$strings["Frequently"] = "Häufig";
+App::$strings["Hourly"] = "Stündlich";
+App::$strings["Twice daily"] = "Zwei Mal am Tag";
+App::$strings["Daily"] = "Täglich";
+App::$strings["Weekly"] = "Wöchentlich";
+App::$strings["Monthly"] = "Monatlich";
+App::$strings["Currently Male"] = "Momentan männlich";
+App::$strings["Currently Female"] = "Momentan weiblich";
+App::$strings["Mostly Male"] = "Größtenteils männlich";
+App::$strings["Mostly Female"] = "Größtenteils weiblich";
+App::$strings["Transgender"] = "Transsexuell";
+App::$strings["Intersex"] = "Zwischengeschlechtlich";
+App::$strings["Transsexual"] = "Transsexuell";
+App::$strings["Hermaphrodite"] = "Zwitter";
+App::$strings["Neuter"] = "Geschlechtslos";
+App::$strings["Non-specific"] = "unklar";
+App::$strings["Undecided"] = "Unentschieden";
+App::$strings["Males"] = "Männer";
+App::$strings["Females"] = "Frauen";
+App::$strings["Gay"] = "Schwul";
+App::$strings["Lesbian"] = "Lesbisch";
+App::$strings["No Preference"] = "Keine Bevorzugung";
+App::$strings["Bisexual"] = "Bisexuell";
+App::$strings["Autosexual"] = "Autosexuell";
+App::$strings["Abstinent"] = "Enthaltsam";
+App::$strings["Virgin"] = "Jungfräulich";
+App::$strings["Deviant"] = "Abweichend";
+App::$strings["Fetish"] = "Fetisch";
+App::$strings["Oodles"] = "Unmengen";
+App::$strings["Nonsexual"] = "Sexlos";
+App::$strings["Single"] = "Single";
+App::$strings["Lonely"] = "Einsam";
+App::$strings["Available"] = "Verfügbar";
+App::$strings["Unavailable"] = "Nicht verfügbar";
+App::$strings["Has crush"] = "Verguckt";
+App::$strings["Infatuated"] = "Verknallt";
+App::$strings["Dating"] = "Lerne gerade jemanden kennen";
+App::$strings["Unfaithful"] = "Treulos";
+App::$strings["Sex Addict"] = "Sexabhängig";
+App::$strings["Friends/Benefits"] = "Freunde/Begünstigte";
+App::$strings["Casual"] = "Lose";
+App::$strings["Engaged"] = "Verlobt";
+App::$strings["Married"] = "Verheiratet";
+App::$strings["Imaginarily married"] = "Gewissermaßen verheiratet";
+App::$strings["Partners"] = "Partner";
+App::$strings["Cohabiting"] = "Lebensgemeinschaft";
+App::$strings["Common law"] = "Informelle Ehe";
+App::$strings["Happy"] = "Glücklich";
+App::$strings["Not looking"] = "Nicht Ausschau haltend";
+App::$strings["Swinger"] = "Swinger";
+App::$strings["Betrayed"] = "Betrogen";
+App::$strings["Separated"] = "Getrennt";
+App::$strings["Unstable"] = "Labil";
+App::$strings["Divorced"] = "Geschieden";
+App::$strings["Imaginarily divorced"] = "Gewissermaßen geschieden";
+App::$strings["Widowed"] = "Verwitwet";
+App::$strings["Uncertain"] = "Ungewiss";
+App::$strings["It's complicated"] = "Es ist kompliziert";
+App::$strings["Don't care"] = "Interessiert mich nicht";
+App::$strings["Ask me"] = "Frag mich mal";
+App::$strings["likes %1\$s's %2\$s"] = "gefällt %1\$ss %2\$s";
+App::$strings["doesn't like %1\$s's %2\$s"] = "missfällt %1\$ss %2\$s";
+App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden";
+App::$strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an";
+App::$strings["poked"] = "stupste";
+App::$strings["View %s's profile @ %s"] = "%ss Profil auf %s ansehen";
+App::$strings["Categories:"] = "Kategorien:";
+App::$strings["Filed under:"] = "Gespeichert unter:";
+App::$strings["View in context"] = "Im Zusammenhang anschauen";
+App::$strings["remove"] = "lösche";
+App::$strings["Loading..."] = "Lädt ...";
+App::$strings["Delete Selected Items"] = "Lösche die ausgewählten Elemente";
+App::$strings["View Source"] = "Quelle anzeigen";
+App::$strings["Follow Thread"] = "Unterhaltung folgen";
+App::$strings["Unfollow Thread"] = "Unterhaltung nicht mehr folgen";
+App::$strings["Activity/Posts"] = "Aktivitäten/Beiträge";
+App::$strings["Edit Connection"] = "Verbindung bearbeiten";
+App::$strings["Message"] = "Nachricht";
+App::$strings["%s likes this."] = "%s gefällt das.";
+App::$strings["%s doesn't like this."] = "%s gefällt das nicht.";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d Person</span> gefällt das.",
+ 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das.",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d Person</span> gefällt das nicht.",
+ 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das nicht.",
+);
+App::$strings["and"] = "und";
+App::$strings[", and %d other people"] = array(
+ 0 => "",
+ 1 => ", und %d andere",
+);
+App::$strings["%s like this."] = "%s gefällt das.";
+App::$strings["%s don't like this."] = "%s gefällt das nicht.";
+App::$strings["Set your location"] = "Standort";
+App::$strings["Clear browser location"] = "Browser-Standort löschen";
+App::$strings["Tag term:"] = "Schlagwort:";
+App::$strings["Where are you right now?"] = "Wo bist Du jetzt grade?";
+App::$strings["Choose a different album..."] = "Wählen Sie ein anderes Album aus...";
+App::$strings["Comments enabled"] = "Kommentare aktiviert";
+App::$strings["Comments disabled"] = "Kommentare deaktiviert";
+App::$strings["Page link name"] = "Link zur Seite";
+App::$strings["Post as"] = "Veröffentlichen als";
+App::$strings["Toggle voting"] = "Umfragewerkzeug aktivieren";
+App::$strings["Disable comments"] = "Kommentare deaktivieren";
+App::$strings["Toggle comments"] = "Kommentare umschalten";
+App::$strings["Categories (optional, comma-separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
+App::$strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
+App::$strings["Set publish date"] = "Veröffentlichungsdatum festlegen";
+App::$strings["Commented Order"] = "Neueste Kommentare";
+App::$strings["Sort by Comment Date"] = "Nach Kommentardatum sortiert";
+App::$strings["Posted Order"] = "Neueste Beiträge";
+App::$strings["Sort by Post Date"] = "Nach Beitragsdatum sortiert";
+App::$strings["Posts that mention or involve you"] = "Beiträge mit Beteiligung Deinerseits";
+App::$strings["Activity Stream - by date"] = "Activity Stream – nach Datum sortiert";
+App::$strings["Starred"] = "Markiert";
+App::$strings["Favourite Posts"] = "Markierte Beiträge";
+App::$strings["Spam"] = "Spam";
+App::$strings["Posts flagged as SPAM"] = "Nachrichten, die als SPAM markiert wurden";
+App::$strings["Status Messages and Posts"] = "Statusnachrichten und Beiträge";
+App::$strings["Profile Details"] = "Profil-Details";
+App::$strings["Photo Albums"] = "Fotoalben";
+App::$strings["Files and Storage"] = "Dateien und Speicher";
+App::$strings["Bookmarks"] = "Lesezeichen";
+App::$strings["Saved Bookmarks"] = "Gespeicherte Lesezeichen";
+App::$strings["View Cards"] = "Karten anzeigen";
+App::$strings["articles"] = "Artikel";
+App::$strings["View Articles"] = "Artikel anzeigen";
+App::$strings["View Webpages"] = "Webseiten anzeigen";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Zusage",
+ 1 => "Zusagen",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Absage",
+ 1 => "Absagen",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => " Unentschlossen",
+ 1 => "Unentschlossene",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "Zustimmung",
+ 1 => "Zustimmungen",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Ablehnung",
+ 1 => "Ablehnungen",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "Enthaltung",
+ 1 => "Enthaltungen",
+);
+App::$strings["Directory Options"] = "Verzeichnisoptionen";
+App::$strings["Safe Mode"] = "Sicherer Modus";
+App::$strings["Public Forums Only"] = "Nur öffentliche Foren";
+App::$strings["This Website Only"] = "Nur dieser Hub";
+App::$strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
+App::$strings["Cloned channel not found. Import failed."] = "Geklonter Kanal nicht gefunden. Import fehlgeschlagen.";
+App::$strings["prev"] = "vorherige";
+App::$strings["first"] = "erste";
+App::$strings["last"] = "letzte";
+App::$strings["next"] = "nächste";
+App::$strings["older"] = "älter";
+App::$strings["newer"] = "neuer";
+App::$strings["No connections"] = "Keine Verbindungen";
+App::$strings["View all %s connections"] = "Alle Verbindungen von %s anzeigen";
+App::$strings["poke"] = "anstupsen";
+App::$strings["ping"] = "anpingen";
+App::$strings["pinged"] = "pingte";
+App::$strings["prod"] = "knuffen";
+App::$strings["prodded"] = "knuffte";
+App::$strings["slap"] = "ohrfeigen";
+App::$strings["slapped"] = "ohrfeigte";
+App::$strings["finger"] = "befummeln";
+App::$strings["fingered"] = "befummelte";
+App::$strings["rebuff"] = "eine Abfuhr erteilen";
+App::$strings["rebuffed"] = "zurückgewiesen";
+App::$strings["happy"] = "glücklich";
+App::$strings["sad"] = "traurig";
+App::$strings["mellow"] = "sanft";
+App::$strings["tired"] = "müde";
+App::$strings["perky"] = "frech";
+App::$strings["angry"] = "sauer";
+App::$strings["stupefied"] = "verblüfft";
+App::$strings["puzzled"] = "verwirrt";
+App::$strings["interested"] = "interessiert";
+App::$strings["bitter"] = "verbittert";
+App::$strings["cheerful"] = "fröhlich";
+App::$strings["alive"] = "lebendig";
+App::$strings["annoyed"] = "verärgert";
+App::$strings["anxious"] = "unruhig";
+App::$strings["cranky"] = "schrullig";
+App::$strings["disturbed"] = "verstört";
+App::$strings["frustrated"] = "frustriert";
+App::$strings["depressed"] = "deprimiert";
+App::$strings["motivated"] = "motiviert";
+App::$strings["relaxed"] = "entspannt";
+App::$strings["surprised"] = "überrascht";
+App::$strings["Monday"] = "Montag";
+App::$strings["Tuesday"] = "Dienstag";
+App::$strings["Wednesday"] = "Mittwoch";
+App::$strings["Thursday"] = "Donnerstag";
+App::$strings["Friday"] = "Freitag";
+App::$strings["Saturday"] = "Samstag";
+App::$strings["Sunday"] = "Sonntag";
+App::$strings["January"] = "Januar";
+App::$strings["February"] = "Februar";
+App::$strings["March"] = "März";
+App::$strings["April"] = "April";
+App::$strings["May"] = "Mai";
+App::$strings["June"] = "Juni";
+App::$strings["July"] = "Juli";
+App::$strings["August"] = "August";
+App::$strings["September"] = "September";
+App::$strings["October"] = "Oktober";
+App::$strings["November"] = "November";
+App::$strings["December"] = "Dezember";
+App::$strings["Unknown Attachment"] = "Unbekannter Anhang";
+App::$strings["unknown"] = "unbekannt";
+App::$strings["remove category"] = "Kategorie entfernen";
+App::$strings["remove from file"] = "aus der Datei entfernen";
+App::$strings["Download binary/encrypted content"] = "Binären/verschlüsselten Inhalt herunterladen";
+App::$strings["default"] = "Standard";
+App::$strings["Page layout"] = "Seiten-Layout";
+App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen";
+App::$strings["HTML"] = "HTML";
+App::$strings["Comanche Layout"] = "Comanche-Layout";
+App::$strings["PHP"] = "PHP";
+App::$strings["Page content type"] = "Art des Seiteninhalts";
+App::$strings["activity"] = "Aktivität";
+App::$strings["a-z, 0-9, -, and _ only"] = "nur a-z, 0-9, - und _";
+App::$strings["Design Tools"] = "Gestaltungswerkzeuge";
+App::$strings["Pages"] = "Seiten";
+App::$strings["Import website..."] = "Webseite importieren...";
+App::$strings["Select folder to import"] = "Ordner zum Importieren auswählen";
+App::$strings["Import from a zipped folder:"] = "Aus einem gezippten Ordner importieren:";
+App::$strings["Import from cloud files:"] = "Aus Cloud-Dateien importieren:";
+App::$strings["/cloud/channel/path/to/folder"] = "/Cloud/Kanal/Pfad/zum/Ordner";
+App::$strings["Enter path to website files"] = "Pfad zu Webseitendateien eingeben";
+App::$strings["Select folder"] = "Ordner auswählen";
+App::$strings["Export website..."] = "Webseite exportieren...";
+App::$strings["Export to a zip file"] = "In eine ZIP-Datei exportieren";
+App::$strings["website.zip"] = "website.zip";
+App::$strings["Enter a name for the zip file."] = "Geben Sie einen für die ZIP-Datei ein.";
+App::$strings["Export to cloud files"] = "In Cloud-Dateien exportieren";
+App::$strings["/path/to/export/folder"] = "/Pfad/zum/exportierenden/Ordner";
+App::$strings["Enter a path to a cloud files destination."] = "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein.";
+App::$strings["Specify folder"] = "Ordner angeben";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d Einladung verfügbar",
+ 1 => "%d Einladungen verfügbar",
+);
+App::$strings["Find Channels"] = "Finde Kanäle";
+App::$strings["Enter name or interest"] = "Name oder Interessen eingeben";
+App::$strings["Connect/Follow"] = "Verbinden/Folgen";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morgenstein, Angeln";
+App::$strings["Random Profile"] = "Zufallsprofil";
+App::$strings["Invite Friends"] = "Lade Freunde ein";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Fortgeschrittenes Beispiel: name=fred and country=iceland";
+App::$strings["Common Connections"] = "Gemeinsame Verbindungen";
+App::$strings["View all %d common connections"] = "Zeige alle %d gemeinsamen Verbindungen";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
+App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
+App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
+App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
+App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
+App::$strings["Remote channel or protocol unavailable."] = "Externer Kanal oder Protokoll nicht verfügbar.";
+App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
+App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
+App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
+App::$strings["Delete this item?"] = "Dieses Element löschen?";
+App::$strings["%s show less"] = "%s weniger anzeigen";
+App::$strings["%s expand"] = "%s aufklappen";
+App::$strings["%s collapse"] = "%s einklappen";
+App::$strings["Password too short"] = "Kennwort zu kurz";
+App::$strings["Passwords do not match"] = "Kennwörter stimmen nicht überein";
+App::$strings["everybody"] = "alle";
+App::$strings["Secret Passphrase"] = "geheime Passphrase";
+App::$strings["Passphrase hint"] = "Hinweis zur Passphrase";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert.";
+App::$strings["close all"] = "Alle schließen";
+App::$strings["Nothing new here"] = "Nichts Neues hier";
+App::$strings["Rate This Channel (this is public)"] = "Diesen Kanal bewerten (öffentlich sichtbar)";
+App::$strings["Describe (optional)"] = "Beschreibung (optional)";
+App::$strings["Please enter a link URL"] = "Gib eine URL ein:";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlassen möchtest?";
+App::$strings["timeago.prefixAgo"] = "vor";
+App::$strings["timeago.prefixFromNow"] = "in";
+App::$strings["timeago.suffixAgo"] = "NONE";
+App::$strings["timeago.suffixFromNow"] = "NONE";
+App::$strings["less than a minute"] = "weniger als einer Minute";
+App::$strings["about a minute"] = "ungefähr einer Minute";
+App::$strings["%d minutes"] = "%d Minuten";
+App::$strings["about an hour"] = "ungefähr einer Stunde";
+App::$strings["about %d hours"] = "ungefähr %d Stunden";
+App::$strings["a day"] = "einem Tag";
+App::$strings["%d days"] = "%d Tagen";
+App::$strings["about a month"] = "ungefähr einem Monat";
+App::$strings["%d months"] = "%d Monaten";
+App::$strings["about a year"] = "ungefähr einem Jahr";
+App::$strings["%d years"] = "%d Jahren";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["__ctx:long__ May"] = "Mai";
+App::$strings["Jan"] = "Jan";
+App::$strings["Feb"] = "Feb";
+App::$strings["Mar"] = "Mär";
+App::$strings["Apr"] = "Apr";
+App::$strings["__ctx:short__ May"] = "Mai";
+App::$strings["Jun"] = "Jun";
+App::$strings["Jul"] = "Jul";
+App::$strings["Aug"] = "Aug";
+App::$strings["Sep"] = "Sep";
+App::$strings["Oct"] = "Okt";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Dez";
+App::$strings["Sun"] = "So";
+App::$strings["Mon"] = "Mo";
+App::$strings["Tue"] = "Di";
+App::$strings["Wed"] = "Mi";
+App::$strings["Thu"] = "Do";
+App::$strings["Fri"] = "Fr";
+App::$strings["Sat"] = "Sa";
+App::$strings["__ctx:calendar__ today"] = "heute";
+App::$strings["__ctx:calendar__ month"] = "Monat";
+App::$strings["__ctx:calendar__ week"] = "Woche";
+App::$strings["__ctx:calendar__ day"] = "Tag";
+App::$strings["__ctx:calendar__ All day"] = "Ganztägig";
+App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
+App::$strings["No recipient provided."] = "Kein Empfänger angegeben";
+App::$strings["[no subject]"] = "[no subject]";
+App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
+App::$strings[" and "] = "und";
+App::$strings["public profile"] = "öffentliches Profil";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
+App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
+App::$strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
+App::$strings["No source file."] = "Keine Quelldatei.";
+App::$strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
+App::$strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden";
+App::$strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess.";
+App::$strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen.";
+App::$strings["Path not available."] = "Pfad nicht verfügbar.";
+App::$strings["Empty pathname"] = "Leere Pfadangabe";
+App::$strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad";
+App::$strings["Path not found."] = "Pfad nicht gefunden.";
+App::$strings["mkdir failed."] = "mkdir fehlgeschlagen.";
+App::$strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
+App::$strings["Empty path"] = "Leere Pfadangabe";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
+App::$strings["(Unknown)"] = "(Unbekannt)";
+App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
+App::$strings["Visible to you only."] = "Nur für Dich sichtbar.";
+App::$strings["Visible to anybody in this network."] = "Für jedes \$Projectname-Mitglied sichtbar.";
+App::$strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
+App::$strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
+App::$strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
+App::$strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
+App::$strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
+App::$strings["Privacy group is empty."] = "Gruppe ist leer.";
+App::$strings["Privacy group: %s"] = "Gruppe: %s";
+App::$strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
+App::$strings["profile photo"] = "Profilfoto";
+App::$strings["[Edited %s]"] = "[%s wurde bearbeitet]";
+App::$strings["__ctx:edit_activity__ Post"] = "Beitrag";
+App::$strings["__ctx:edit_activity__ Comment"] = "Kommentar";
+App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
+App::$strings["Empty name"] = "Namensfeld leer";
+App::$strings["Name too long"] = "Name ist zu lang";
+App::$strings["No account identifier"] = "Keine Konten-Kennung";
+App::$strings["Nickname is required."] = "Spitzname ist erforderlich.";
+App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
+App::$strings["Default Profile"] = "Standard-Profil";
+App::$strings["Unable to retrieve modified identity"] = "Geänderte Identität kann nicht empfangen werden";
+App::$strings["Create New Profile"] = "Neues Profil erstellen";
+App::$strings["Visible to everybody"] = "Für jeden sichtbar";
+App::$strings["Gender:"] = "Geschlecht:";
+App::$strings["Homepage:"] = "Homepage:";
+App::$strings["Online Now"] = "gerade online";
+App::$strings["Change your profile photo"] = "Dein Profilfoto ändern";
+App::$strings["Trans"] = "Trans";
+App::$strings["Like this channel"] = "Dieser Kanal gefällt mir";
+App::$strings["j F, Y"] = "j. F Y";
+App::$strings["j F"] = "j. F";
+App::$strings["Birthday:"] = "Geburtstag:";
+App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:";
+App::$strings["Tags:"] = "Schlagworte:";
+App::$strings["Political Views:"] = "Politische Ansichten:";
+App::$strings["Religion:"] = "Religion:";
+App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
+App::$strings["Likes:"] = "Gefällt:";
+App::$strings["Dislikes:"] = "Gefällt nicht:";
+App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
+App::$strings["My other channels:"] = "Meine anderen Kanäle:";
+App::$strings["Musical interests:"] = "Musikalische Interessen:";
+App::$strings["Books, literature:"] = "Bücher, Literatur:";
+App::$strings["Television:"] = "Fernsehen:";
+App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
+App::$strings["Love/Romance:"] = "Liebe/Romantik:";
+App::$strings["Work/employment:"] = "Arbeit/Anstellung:";
+App::$strings["School/education:"] = "Schule/Ausbildung:";
+App::$strings["Like this thing"] = "Gefällt mir";
+App::$strings["l F d, Y \\@ g:i A"] = "l, d. F Y, H:i";
+App::$strings["Starts:"] = "Beginnt:";
+App::$strings["Finishes:"] = "Endet:";
+App::$strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt";
+App::$strings["Not specified"] = "Keine Angabe";
+App::$strings["Needs Action"] = "Aktion erforderlich";
+App::$strings["Completed"] = "Abgeschlossen";
+App::$strings["In Process"] = "In Bearbeitung";
+App::$strings["Cancelled"] = "gestrichen";
+App::$strings["Home, Voice"] = "Zuhause, Sprache";
+App::$strings["Home, Fax"] = "Zuhause, Fax";
+App::$strings["Work, Voice"] = "Arbeit, Sprache";
+App::$strings["Work, Fax"] = "Arbeit, Fax";
+App::$strings["view full size"] = "In Vollbildansicht anschauen";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "GNU-Social";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Select an alternate language"] = "Wähle eine alternative Sprache";
+App::$strings["Who can see this?"] = "Wer kann das sehen?";
+App::$strings["Custom selection"] = "Benutzerdefinierte Auswahl";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen.";
+App::$strings["Show"] = "Anzeigen";
+App::$strings["Don't show"] = "Nicht anzeigen";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
+App::$strings["Image/photo"] = "Bild/Foto";
+App::$strings["Encrypted content"] = "Verschlüsselter Inhalt";
+App::$strings["Install %1\$s element %2\$s"] = "Installiere %1\$s Element %2\$s";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren.";
+App::$strings["card"] = "Karte";
+App::$strings["article"] = "Artikel";
+App::$strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
+App::$strings["spoiler"] = "Spoiler";
+App::$strings["View article"] = "Artikel ansehen";
+App::$strings["View summary"] = "Zusammenfassung ansehen";
+App::$strings["$1 wrote:"] = "$1 schrieb:";
+App::$strings[" by "] = "von";
+App::$strings[" on "] = "am";
+App::$strings["Embedded content"] = "Eingebetteter Inhalt";
+App::$strings["Embedding disabled"] = "Einbetten deaktiviert";
+App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s heißt %2\$s willkommen";
+App::$strings["General Features"] = "Allgemeine Funktionen";
+App::$strings["Advanced Profiles"] = "Erweiterte Profile";
+App::$strings["Additional profile sections and selections"] = "Stellt zusätzliche Bereiche und Felder im Profil zur Verfügung";
+App::$strings["Profile Import/Export"] = "Profil-Import/Export";
+App::$strings["Save and load profile details across sites/channels"] = "Ermöglicht das Speichern von Profilen, um sie in einen anderen Kanal zu importieren";
+App::$strings["Web Pages"] = "Webseiten";
+App::$strings["Provide managed web pages on your channel"] = "Ermöglicht das Erstellen von Webseiten in Deinem Kanal";
+App::$strings["Provide a wiki for your channel"] = "Stelle ein Wiki in Deinem Kanal zur Verfügung";
+App::$strings["Private Notes"] = "Private Notizen";
+App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Aktiviert ein Werkzeug mit dem Notizen und Erinnerungen gespeichert werden können (Hinweis: nicht verschlüsselt)";
+App::$strings["Create personal planning cards"] = "Erstelle persönliche (Notiz-)Karten zur Planung/Koordination oder ähnlichen Zwecken";
+App::$strings["Create interactive articles"] = "Erstelle interaktive Artikel";
+App::$strings["Navigation Channel Select"] = "Kanal-Auswahl in der Navigationsleiste";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü";
+App::$strings["Photo Location"] = "Aufnahmeort";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte";
+App::$strings["Access Controlled Chatrooms"] = "Zugriffskontrollierte Chaträume";
+App::$strings["Provide chatrooms and chat services with access control."] = "Bieten Sie Chaträume und Chatdienste mit Zugriffskontrolle an.";
+App::$strings["Smart Birthdays"] = "Smarte Geburtstage";
+App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Stellt für Geburtstage einen Zeitzonenbezug her, falls deine Freunde über den ganzen Planeten verstreut sind.";
+App::$strings["Event Timezone Selection"] = "Termin-Zeitzonenauswahl";
+App::$strings["Allow event creation in timezones other than your own."] = "Ermögliche das Erstellen von Terminen in anderen Zeitzonen als Deiner eigenen.";
+App::$strings["Premium Channel"] = "Premium-Kanal";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen";
+App::$strings["Advanced Directory Search"] = "Erweiterte Verzeichnissuche";
+App::$strings["Allows creation of complex directory search queries"] = "Ermöglicht die Erstellung komplexer Verzeichnis-Suchabfragen";
+App::$strings["Advanced Theme and Layout Settings"] = "Erweiterte Design- und Layout-Einstellungen";
+App::$strings["Allows fine tuning of themes and page layouts"] = "Erlaubt die Feineinstellung von Designs und Seitenlayouts";
+App::$strings["Access Control and Permissions"] = "Zugriffskontrolle und Berechtigungen";
+App::$strings["Privacy Groups"] = "Gruppen";
+App::$strings["Enable management and selection of privacy groups"] = "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren";
+App::$strings["Multiple Profiles"] = "Mehrfachprofile";
+App::$strings["Ability to create multiple profiles"] = "Ermöglicht das Anlegen mehrerer Profile pro Kanal";
+App::$strings["Provide alternate connection permission roles."] = "Stelle benutzerdefinierte Berechtigungsrollen für Verbindungen zur Verfügung.";
+App::$strings["OAuth Clients"] = "OAuth Clients";
+App::$strings["Manage authenticatication tokens for mobile and remote apps."] = "Verwalte Tokens für den Zugriff von mobilen bzw. externen Anwendungen.";
+App::$strings["Access Tokens"] = "Zugangstokens";
+App::$strings["Create access tokens so that non-members can access private content."] = "Erzeuge Tokens für den Zugriff von Nicht-Mitgliedern auf private Inhalte.";
+App::$strings["Post Composition Features"] = "Nachbearbeitungsfunktionen";
+App::$strings["Large Photos"] = "Große Fotos";
+App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet.";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Ermöglicht den automatischen Import von Inhalten für diesen Kanal von anderen Kanälen oder Feeds";
+App::$strings["Even More Encryption"] = "Noch mehr Verschlüsselung";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Ermöglicht optional die zusätzliche Verschlüsselung von Inhalten (Ende-zu-Ende mit geteiltem Schlüssel)";
+App::$strings["Enable Voting Tools"] = "Umfragewerkzeuge aktivieren";
+App::$strings["Provide a class of post which others can vote on"] = "Aktiviert die Umfragewerkzeuge, um anderen die Möglichkeit zu geben, einem Beitrag zuzustimmen, ihn abzulehnen oder sich zu enthalten. (Muss im Beitrag selbst noch aktiviert werden.)";
+App::$strings["Disable Comments"] = "Kommentare deaktivieren";
+App::$strings["Provide the option to disable comments for a post"] = "Ermöglicht, die Kommentarfunktion für einzelne Beiträge abzuschalten";
+App::$strings["Delayed Posting"] = "Verzögertes Senden";
+App::$strings["Allow posts to be published at a later date"] = "Ermöglicht es, Beiträge zu einem späteren Zeitpunkt zu veröffentlichen";
+App::$strings["Content Expiration"] = "Verfall von Inhalten";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum.";
+App::$strings["Suppress Duplicate Posts/Comments"] = "Doppelte Beiträge unterdrücken";
+App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Verhindert, dass innerhalb von zwei Minuten Beiträge mit identischem Inhalt veröffentlicht werden.";
+App::$strings["Network and Stream Filtering"] = "Netzwerk- und Stream-Filter";
+App::$strings["Search by Date"] = "Suche nach Datum";
+App::$strings["Ability to select posts by date ranges"] = "Möglichkeit, Beiträge nach Zeiträumen auszuwählen";
+App::$strings["Save search terms for re-use"] = "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung";
+App::$strings["Network Personal Tab"] = "Persönlicher Netzwerkreiter";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Aktiviert einen Reiter in der Grid-Ansicht, der nur Netzwerk-Beiträge anzeigt, mit denen Du interagiert hast";
+App::$strings["Network New Tab"] = "Netzwerkreiter Neu";
+App::$strings["Enable tab to display all new Network activity"] = "Aktiviert einen Reiter in der Grid-Ansicht, der alle neuen Netzwerkaktivitäten anzeigt";
+App::$strings["Affinity Tool"] = "Beziehungs-Tool";
+App::$strings["Filter stream activity by depth of relationships"] = "Aktiviert ein Werkzeug in der Grid-Ansicht, das den Stream nach Grad der Beziehung filtern kann";
+App::$strings["Show friend and connection suggestions"] = "Freund- und Verbindungsvorschläge anzeigen";
+App::$strings["Connection Filtering"] = "Filter für Verbindungen";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)";
+App::$strings["Post/Comment Tools"] = "Beitrag-/Kommentar-Tools";
+App::$strings["Use markdown for editing posts"] = "Verwende Markdown zum Bearbeiten von Beiträgen";
+App::$strings["Community Tagging"] = "Gemeinschaftliches Verschlagworten";
+App::$strings["Ability to tag existing posts"] = "Ermöglicht das Verschlagworten existierender Beiträge";
+App::$strings["Post Categories"] = "Beitrags-Kategorien";
+App::$strings["Add categories to your posts"] = "Aktiviert Kategorien für Beiträge";
+App::$strings["Emoji Reactions"] = "Emoji Reaktionen";
+App::$strings["Add emoji reaction ability to posts"] = "Aktiviert Emoji-Reaktionen für Beiträge";
+App::$strings["Ability to file posts under folders"] = "Möglichkeit, Beiträge in Verzeichnissen zu sammeln";
+App::$strings["Dislike Posts"] = "Gefällt-mir-nicht-Beiträge";
+App::$strings["Ability to dislike posts/comments"] = "Aktiviert die „Gefällt mir nicht“-Schaltfläche";
+App::$strings["Star Posts"] = "Beiträge mit Sternchen versehen";
+App::$strings["Ability to mark special posts with a star indicator"] = "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol";
+App::$strings["Tag Cloud"] = "Schlagwort-Wolke";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite";
+App::$strings["Tags"] = "Schlagwörter";
+App::$strings["Keywords"] = "Schlüsselwörter";
+App::$strings["have"] = "habe";
+App::$strings["has"] = "hat";
+App::$strings["want"] = "will";
+App::$strings["wants"] = "will";
+App::$strings["likes"] = "gefällt";
+App::$strings["dislikes"] = "missfällt";
+App::$strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
+App::$strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt";
+App::$strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
+App::$strings["An invitation is required."] = "Eine Einladung wird benötigt.";
+App::$strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden.";
+App::$strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
+App::$strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen.";
+App::$strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s";
+App::$strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
+App::$strings["your registration password"] = "Dein Registrierungspasswort";
+App::$strings["Registration details for %s"] = "Registrierungsdetails für %s";
+App::$strings["Account approved."] = "Nutzerkonto bestätigt.";
+App::$strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen";
+App::$strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
+App::$strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
+App::$strings["Birthday"] = "Geburtstag";
+App::$strings["Age: "] = "Alter:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
+App::$strings["less than a second ago"] = "Vor weniger als einer Sekunde";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "Jahr",
+ 1 => "Jahre",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "Monat",
+ 1 => "Monate",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "Woche",
+ 1 => "Wochen",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "Tag",
+ 1 => "Tage",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "Stunde",
+ 1 => "Stunden",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "Minute",
+ 1 => "Minuten",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "Sekunde",
+ 1 => "Sekunden",
+);
+App::$strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
+App::$strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
+App::$strings["Remote authentication"] = "Ãœber Konto auf anderem Server einloggen";
+App::$strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren";
+App::$strings["Manage Your Channels"] = "Verwalte Deine Kanäle";
+App::$strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen";
+App::$strings["End this session"] = "Beende diese Sitzung";
+App::$strings["Your profile page"] = "Deine Profilseite";
+App::$strings["Manage/Edit profiles"] = "Profile verwalten";
+App::$strings["Sign in"] = "Anmelden";
+App::$strings["Take me home"] = "Bringe mich nach Hause (eigener Kanal)";
+App::$strings["Log me out of this site"] = "Logge mich von dieser Seite aus";
+App::$strings["Create an account"] = "Erzeuge ein Konto";
+App::$strings["Help and documentation"] = "Hilfe und Dokumentation";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt";
+App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration";
+App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt";
+App::$strings["Please wait..."] = "Bitte warten...";
+App::$strings["Add Apps"] = "Apps hinzufügen";
+App::$strings["Arrange Apps"] = "Apps anordnen";
+App::$strings["Toggle System Apps"] = "System-Apps umschalten";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes";
+App::$strings["Image file is empty."] = "Bilddatei ist leer.";
+App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen.";
+App::$strings["a new photo"] = "ein neues Foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht";
+App::$strings["Upload New Photos"] = "Neue Fotos hochladen";
+App::$strings["Invalid data packet"] = "Ungültiges Datenpaket";
+App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
+App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
+App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen.";
+App::$strings["Add new connections to this privacy group"] = "Neue Verbindung zu dieser Gruppe hinzufügen";
+App::$strings["edit"] = "Bearbeiten";
+App::$strings["Edit group"] = "Gruppe ändern";
+App::$strings["Add privacy group"] = "Gruppe hinzufügen";
+App::$strings["Channels not in any privacy group"] = "Kanäle, die in keiner Gruppe sind";
+App::$strings["New window"] = "Neues Fenster";
+App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
+App::$strings["Logged out."] = "Ausgeloggt.";
+App::$strings["Email validation is incomplete. Please check your email."] = "E-Mail-Bestätigung nicht abgeschlossen. Bitte prüfe Deine E-Mails (ggf. Spam-Filterung mit berücksichtigen).";
+App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
+App::$strings["Help:"] = "Hilfe:";
+App::$strings["Not Found"] = "Nicht gefunden";
diff --git a/view/de/htconfig.tpl b/view/de-de/htconfig.tpl
index 46bf0de14..46bf0de14 100644
--- a/view/de/htconfig.tpl
+++ b/view/de-de/htconfig.tpl
diff --git a/view/de/lostpass_eml.tpl b/view/de-de/lostpass_eml.tpl
index 02a71b77a..02a71b77a 100644
--- a/view/de/lostpass_eml.tpl
+++ b/view/de-de/lostpass_eml.tpl
diff --git a/view/de/messages.po b/view/de-de/messages.po
index 460fd764b..460fd764b 100644
--- a/view/de/messages.po
+++ b/view/de-de/messages.po
diff --git a/view/de/passchanged_eml.tpl b/view/de-de/passchanged_eml.tpl
index 95805f677..95805f677 100644
--- a/view/de/passchanged_eml.tpl
+++ b/view/de-de/passchanged_eml.tpl
diff --git a/view/de/register_open_eml.tpl b/view/de-de/register_open_eml.tpl
index ce96d2ec6..ce96d2ec6 100644
--- a/view/de/register_open_eml.tpl
+++ b/view/de-de/register_open_eml.tpl
diff --git a/view/de/register_verify_eml.tpl b/view/de-de/register_verify_eml.tpl
index 4da21265d..4da21265d 100644
--- a/view/de/register_verify_eml.tpl
+++ b/view/de-de/register_verify_eml.tpl
diff --git a/view/de/strings.php b/view/de-de/strings.php
index 85bff2451..85bff2451 100644
--- a/view/de/strings.php
+++ b/view/de-de/strings.php
diff --git a/view/de/update_fail_eml.tpl b/view/de-de/update_fail_eml.tpl
index d28bed717..d28bed717 100644
--- a/view/de/update_fail_eml.tpl
+++ b/view/de-de/update_fail_eml.tpl
diff --git a/view/de/hmessages.po b/view/de/hmessages.po
deleted file mode 100644
index 2df12ba6a..000000000
--- a/view/de/hmessages.po
+++ /dev/null
@@ -1,13859 +0,0 @@
-# hubzilla
-# Copyright (C) 2012-2016 hubzilla
-# This file is distributed under the same license as the hubzilla package.
-#
-# Translators:
-# Alex <info@pixelbits.de>, 2013
-# Balder <andreas.bauer@ymail.com>, 2013
-# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2013
-# do.t <tobias@tonstrom.de>, 2014
-# Einer von Vielen <tom@jfellow.net>, 2013
-# Ettore Atalan <atalanttore@googlemail.com>, 2015-2017
-# Frank Dieckmann <frank@lumina-verte.org>, 2013
-# Harald Klimach <harald@klimachs.de>, 2016
-# JooBee <d13@raclan.de>, 2014
-# Kai <kai@proppower.de>, 2015
-# Oliver <post@toktan.org>, 2015-2017
-# Phellmes <forum@suschka.de>, 2014,2016-2017
-# sasiflo <transiflex@sasiflo.de>, 2014
-# Steff <steff@digitalesecho.de>, 2015-2016
-# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016
-# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016-2017
-# zottel <transifex@zottel.net>, 2015
-# sasiflo <transiflex@sasiflo.de>, 2015
-msgid ""
-msgstr ""
-"Project-Id-Version: Redmatrix\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-13 12:54+0100\n"
-"PO-Revision-Date: 2017-12-19 11:56+0000\n"
-"Last-Translator: Phellmes <forum@suschka.de>\n"
-"Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../../Zotlabs/Access/Permissions.php:56
-msgid "Can view my channel stream and posts"
-msgstr "Kann meinen Kanal-Stream und meine Beiträge sehen"
-
-#: ../../Zotlabs/Access/Permissions.php:57
-msgid "Can send me their channel stream and posts"
-msgstr "Kann mir die Beiträge aus seinem/ihrem Kanal schicken"
-
-#: ../../Zotlabs/Access/Permissions.php:58
-msgid "Can view my default channel profile"
-msgstr "Kann mein Standardprofil sehen"
-
-#: ../../Zotlabs/Access/Permissions.php:59
-msgid "Can view my connections"
-msgstr "Kann meine Verbindungen sehen"
-
-#: ../../Zotlabs/Access/Permissions.php:60
-msgid "Can view my file storage and photos"
-msgstr "Kann meine Datei- und Bilderordner sehen"
-
-#: ../../Zotlabs/Access/Permissions.php:61
-msgid "Can upload/modify my file storage and photos"
-msgstr "Kann in meine Datei- und Bilderordner hochladen/ändern"
-
-#: ../../Zotlabs/Access/Permissions.php:62
-msgid "Can view my channel webpages"
-msgstr "Kann die Webseiten meines Kanals sehen"
-
-#: ../../Zotlabs/Access/Permissions.php:63
-msgid "Can view my wiki pages"
-msgstr "Kann meine Wiki-Seiten sehen"
-
-#: ../../Zotlabs/Access/Permissions.php:64
-msgid "Can create/edit my channel webpages"
-msgstr "Kann Webseiten in meinem Kanal erstellen/ändern"
-
-#: ../../Zotlabs/Access/Permissions.php:65
-msgid "Can write to my wiki pages"
-msgstr "Kann meine Wiki-Seiten bearbeiten"
-
-#: ../../Zotlabs/Access/Permissions.php:66
-msgid "Can post on my channel (wall) page"
-msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"
-
-#: ../../Zotlabs/Access/Permissions.php:67
-msgid "Can comment on or like my posts"
-msgstr "Darf meine Beiträge kommentieren und mögen/nicht mögen"
-
-#: ../../Zotlabs/Access/Permissions.php:68
-msgid "Can send me private mail messages"
-msgstr "Kann mir private Nachrichten schicken"
-
-#: ../../Zotlabs/Access/Permissions.php:69
-msgid "Can like/dislike profiles and profile things"
-msgstr "Kann Profile und Profilsachen mögen/nicht mögen"
-
-#: ../../Zotlabs/Access/Permissions.php:70
-msgid "Can forward to all my channel connections via @+ mentions in posts"
-msgstr "Kann an alle meine Verbindungen via @-Erwähnungen Nachrichten weiterleiten"
-
-#: ../../Zotlabs/Access/Permissions.php:71
-msgid "Can chat with me"
-msgstr "Kann mit mir chatten"
-
-#: ../../Zotlabs/Access/Permissions.php:72
-msgid "Can source my public posts in derived channels"
-msgstr "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden"
-
-#: ../../Zotlabs/Access/Permissions.php:73
-msgid "Can administer my channel"
-msgstr "Kann meinen Kanal administrieren"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:265
-msgid "Social Networking"
-msgstr "Soziales Netzwerk"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:266
-msgid "Social - Mostly Public"
-msgstr "Soziales Netzwerk - Weitgehend öffentlich"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:267
-msgid "Social - Restricted"
-msgstr "Soziales Netzwerk - Beschränkt"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:268
-msgid "Social - Private"
-msgstr "Soziales Netzwerk - Privat"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:271
-msgid "Community Forum"
-msgstr "Forum"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:272
-msgid "Forum - Mostly Public"
-msgstr "Forum - Weitgehend öffentlich"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:273
-msgid "Forum - Restricted"
-msgstr "Forum - Beschränkt"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:274
-msgid "Forum - Private"
-msgstr "Forum - Privat"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:277
-msgid "Feed Republish"
-msgstr "Teilen von Feeds"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:278
-msgid "Feed - Mostly Public"
-msgstr "Feeds - Weitgehend öffentlich"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:279
-msgid "Feed - Restricted"
-msgstr "Feeds - Beschränkt"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:282
-msgid "Special Purpose"
-msgstr "Für besondere Zwecke"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:283
-msgid "Special - Celebrity/Soapbox"
-msgstr "Speziell - Mitteilungs-Kanal (keine Kommentare)"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:284
-msgid "Special - Group Repository"
-msgstr "Speziell - Gruppenarchiv"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:287
-#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:132
-#: ../../Zotlabs/Module/Settings/Channel.php:474
-#: ../../Zotlabs/Module/Connedit.php:936 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Register.php:221 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/selectors.php:104
-#: ../../include/selectors.php:140 ../../include/event.php:1308
-#: ../../include/event.php:1315 ../../include/connections.php:689
-#: ../../include/connections.php:696
-msgid "Other"
-msgstr "Andere"
-
-#: ../../Zotlabs/Access/PermissionRoles.php:288
-msgid "Custom/Expert Mode"
-msgstr "Benutzerdefiniert/Expertenmodus"
-
-#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:29
-#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
-#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
-#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
-#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Cards.php:29 ../../Zotlabs/Module/Webpages.php:33
-#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1198
-msgid "Requested profile is not available."
-msgstr "Das angefragte Profil ist nicht verfügbar."
-
-#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
-#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94
-#: ../../Zotlabs/Module/Articles.php:68 ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:110
-#: ../../Zotlabs/Module/Channel.php:248 ../../Zotlabs/Module/Channel.php:288
-#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
-#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Events.php:271
-#: ../../Zotlabs/Module/Appman.php:86 ../../Zotlabs/Module/Regmod.php:21
-#: ../../Zotlabs/Module/Article_edit.php:51
-#: ../../Zotlabs/Module/New_channel.php:77
-#: ../../Zotlabs/Module/New_channel.php:104
-#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
-#: ../../Zotlabs/Module/Moderate.php:13
-#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:275
-#: ../../Zotlabs/Module/Thing.php:295 ../../Zotlabs/Module/Thing.php:336
-#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67
-#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
-#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Connections.php:29
-#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:64
-#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50
-#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:400
-#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:149
-#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../Zotlabs/Module/Profile_photo.php:307
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:228
-#: ../../Zotlabs/Module/Item.php:245 ../../Zotlabs/Module/Item.php:255
-#: ../../Zotlabs/Module/Item.php:1085 ../../Zotlabs/Module/Page.php:34
-#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:389
-#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
-#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Layouts.php:71
-#: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89
-#: ../../Zotlabs/Module/Defperms.php:173 ../../Zotlabs/Module/Group.php:13
-#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635
-#: ../../Zotlabs/Module/Editwebpage.php:68
-#: ../../Zotlabs/Module/Editwebpage.php:89
-#: ../../Zotlabs/Module/Editwebpage.php:107
-#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Cards.php:68 ../../Zotlabs/Module/Webpages.php:118
-#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
-#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:74
-#: ../../Zotlabs/Module/Like.php:184 ../../Zotlabs/Module/Suggest.php:28
-#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
-#: ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Cover_photo.php:281
-#: ../../Zotlabs/Module/Cover_photo.php:294
-#: ../../Zotlabs/Module/Display.php:404 ../../Zotlabs/Module/Network.php:15
-#: ../../Zotlabs/Module/Filestorage.php:15
-#: ../../Zotlabs/Module/Filestorage.php:70
-#: ../../Zotlabs/Module/Filestorage.php:85
-#: ../../Zotlabs/Module/Filestorage.php:117 ../../Zotlabs/Module/Common.php:38
-#: ../../Zotlabs/Module/Viewconnections.php:28
-#: ../../Zotlabs/Module/Viewconnections.php:33
-#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Card_edit.php:51
-#: ../../Zotlabs/Module/Notifications.php:11
-#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:169
-#: ../../addon/keepout/keepout.php:36 ../../addon/openid/Mod_Id.php:53
-#: ../../addon/gitwiki/Mod_Gitwiki.php:196
-#: ../../addon/gitwiki/Mod_Gitwiki.php:292 ../../addon/pumpio/pumpio.php:40
-#: ../../include/attach.php:150 ../../include/attach.php:197
-#: ../../include/attach.php:270 ../../include/attach.php:284
-#: ../../include/attach.php:293 ../../include/attach.php:366
-#: ../../include/attach.php:380 ../../include/attach.php:387
-#: ../../include/attach.php:469 ../../include/attach.php:1008
-#: ../../include/attach.php:1082 ../../include/attach.php:1247
-#: ../../include/items.php:3633 ../../include/photos.php:27
-msgid "Permission denied."
-msgstr "Berechtigung verweigert."
-
-#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155
-#: ../../Zotlabs/Module/Editblock.php:113
-msgid "Block Name"
-msgstr "Block-Name"
-
-#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2288
-msgid "Blocks"
-msgstr "Blöcke"
-
-#: ../../Zotlabs/Module/Blocks.php:156
-msgid "Block Title"
-msgstr "Titel des Blocks"
-
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:114
-#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:251
-msgid "Created"
-msgstr "Erstellt"
-
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:115
-#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:252
-msgid "Edited"
-msgstr "Geändert"
-
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:96
-#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:147
-#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Menu.php:118
-#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801
-#: ../../Zotlabs/Module/Cards.php:96 ../../Zotlabs/Module/Webpages.php:239
-#: ../../Zotlabs/Storage/Browser.php:273 ../../Zotlabs/Storage/Browser.php:379
-#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
-msgid "Create"
-msgstr "Erstelle"
-
-#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114
-#: ../../Zotlabs/Module/Article_edit.php:99
-#: ../../Zotlabs/Module/Admin/Profs.php:154
-#: ../../Zotlabs/Module/Settings/Oauth.php:149
-#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:114
-#: ../../Zotlabs/Module/Connections.php:260
-#: ../../Zotlabs/Module/Connections.php:297
-#: ../../Zotlabs/Module/Connections.php:317 ../../Zotlabs/Module/Wiki.php:202
-#: ../../Zotlabs/Module/Wiki.php:358 ../../Zotlabs/Module/Menu.php:112
-#: ../../Zotlabs/Module/Layouts.php:193
-#: ../../Zotlabs/Module/Editwebpage.php:142
-#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:399
-#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:285
-#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
-#: ../../addon/gitwiki/Mod_Gitwiki.php:151
-#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1297
-#: ../../include/channel.php:1301 ../../include/menu.php:113
-msgid "Edit"
-msgstr "Bearbeiten"
-
-#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1102
-#: ../../Zotlabs/Module/Layouts.php:194 ../../Zotlabs/Module/Webpages.php:241
-#: ../../Zotlabs/Widget/Cdav.php:124 ../../include/conversation.php:1363
-msgid "Share"
-msgstr "Teilen"
-
-#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
-#: ../../Zotlabs/Module/Cdav.php:897 ../../Zotlabs/Module/Cdav.php:1187
-#: ../../Zotlabs/Module/Article_edit.php:129
-#: ../../Zotlabs/Module/Admin/Accounts.php:173
-#: ../../Zotlabs/Module/Admin/Channels.php:149
-#: ../../Zotlabs/Module/Admin/Profs.php:155
-#: ../../Zotlabs/Module/Settings/Oauth.php:150
-#: ../../Zotlabs/Module/Thing.php:262 ../../Zotlabs/Module/Editblock.php:139
-#: ../../Zotlabs/Module/Connections.php:268
-#: ../../Zotlabs/Module/Photos.php:1203 ../../Zotlabs/Module/Connedit.php:654
-#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Group.php:179
-#: ../../Zotlabs/Module/Profiles.php:803
-#: ../../Zotlabs/Module/Editwebpage.php:167
-#: ../../Zotlabs/Module/Webpages.php:242
-#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Lib/Apps.php:400
-#: ../../Zotlabs/Lib/ThreadItem.php:141 ../../Zotlabs/Storage/Browser.php:286
-#: ../../include/conversation.php:690 ../../include/conversation.php:733
-msgid "Delete"
-msgstr "Löschen"
-
-#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Events.php:694
-#: ../../Zotlabs/Module/Wiki.php:204 ../../Zotlabs/Module/Layouts.php:198
-#: ../../Zotlabs/Module/Webpages.php:246 ../../Zotlabs/Module/Pubsites.php:60
-#: ../../addon/gitwiki/Mod_Gitwiki.php:153
-msgid "View"
-msgstr "Ansicht"
-
-#: ../../Zotlabs/Module/Invite.php:29
-msgid "Total invitation limit exceeded."
-msgstr "Einladungslimit überschritten."
-
-#: ../../Zotlabs/Module/Invite.php:53
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : Keine gültige Email Adresse."
-
-#: ../../Zotlabs/Module/Invite.php:67
-msgid "Please join us on $Projectname"
-msgstr "Schließe Dich uns auf $Projectname an!"
-
-#: ../../Zotlabs/Module/Invite.php:77
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines $Projectname-Servers."
-
-#: ../../Zotlabs/Module/Invite.php:82
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Nachricht konnte nicht zugestellt werden."
-
-#: ../../Zotlabs/Module/Invite.php:86
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d Nachricht gesendet."
-msgstr[1] "%d Nachrichten gesendet."
-
-#: ../../Zotlabs/Module/Invite.php:107
-msgid "You have no more invitations available"
-msgstr "Du hast keine weiteren verfügbare Einladungen"
-
-#: ../../Zotlabs/Module/Invite.php:138
-msgid "Send invitations"
-msgstr "Einladungen senden"
-
-#: ../../Zotlabs/Module/Invite.php:139
-msgid "Enter email addresses, one per line:"
-msgstr "Email-Adressen eintragen, eine pro Zeile:"
-
-#: ../../Zotlabs/Module/Invite.php:140 ../../Zotlabs/Module/Mail.php:285
-msgid "Your message:"
-msgstr "Deine Nachricht:"
-
-#: ../../Zotlabs/Module/Invite.php:141
-msgid "Please join my community on $Projectname."
-msgstr "Schließe Dich uns auf $Projectname an!"
-
-#: ../../Zotlabs/Module/Invite.php:143
-msgid "You will need to supply this invitation code:"
-msgstr "Bitte verwende bei der Registrierung den folgenden Einladungscode:"
-
-#: ../../Zotlabs/Module/Invite.php:144
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registriere Dich auf einem beliebigen $Projectname-Hub (sie sind alle miteinander verbunden)"
-
-#: ../../Zotlabs/Module/Invite.php:146
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Gib meine $Projectname-Adresse im Suchfeld ein."
-
-#: ../../Zotlabs/Module/Invite.php:147
-msgid "or visit"
-msgstr "oder besuche"
-
-#: ../../Zotlabs/Module/Invite.php:149
-msgid "3. Click [Connect]"
-msgstr "3. Klicke auf [Verbinden]"
-
-#: ../../Zotlabs/Module/Invite.php:151 ../../Zotlabs/Module/Locs.php:121
-#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Events.php:493
-#: ../../Zotlabs/Module/Appman.php:152
-#: ../../Zotlabs/Module/Import_items.php:129
-#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:349
-#: ../../Zotlabs/Module/Connect.php:98
-#: ../../Zotlabs/Module/Admin/Features.php:66
-#: ../../Zotlabs/Module/Admin/Plugins.php:438
-#: ../../Zotlabs/Module/Admin/Accounts.php:166
-#: ../../Zotlabs/Module/Admin/Logs.php:84
-#: ../../Zotlabs/Module/Admin/Channels.php:147
-#: ../../Zotlabs/Module/Admin/Themes.php:158
-#: ../../Zotlabs/Module/Admin/Site.php:277
-#: ../../Zotlabs/Module/Admin/Profs.php:157
-#: ../../Zotlabs/Module/Admin/Account_edit.php:74
-#: ../../Zotlabs/Module/Admin/Security.php:104
-#: ../../Zotlabs/Module/Settings/Permcats.php:110
-#: ../../Zotlabs/Module/Settings/Channel.php:489
-#: ../../Zotlabs/Module/Settings/Features.php:47
-#: ../../Zotlabs/Module/Settings/Tokens.php:168
-#: ../../Zotlabs/Module/Settings/Account.php:118
-#: ../../Zotlabs/Module/Settings/Featured.php:52
-#: ../../Zotlabs/Module/Settings/Display.php:209
-#: ../../Zotlabs/Module/Settings/Oauth.php:87
-#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374
-#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:345
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:1082
-#: ../../Zotlabs/Module/Photos.php:1122 ../../Zotlabs/Module/Photos.php:1240
-#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Module/Pdledit.php:98
-#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:904
-#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:242
-#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Defperms.php:249
-#: ../../Zotlabs/Module/Group.php:87 ../../Zotlabs/Module/Profiles.php:726
-#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
-#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
-#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Lib/ThreadItem.php:754
-#: ../../Zotlabs/Widget/Eventstools.php:16
-#: ../../Zotlabs/Widget/Wiki_pages.php:40
-#: ../../Zotlabs/Widget/Wiki_pages.php:97
-#: ../../view/theme/redbasic_c/php/config.php:95
-#: ../../view/theme/redbasic/php/config.php:93
-#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:273
-#: ../../addon/planets/planets.php:153
-#: ../../addon/openclipatar/openclipatar.php:53
-#: ../../addon/wppost/wppost.php:113 ../../addon/nsfw/nsfw.php:92
-#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89
-#: ../../addon/likebanner/likebanner.php:57
-#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
-#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113
-#: ../../addon/diaspora/diaspora.php:816
-#: ../../addon/gitwiki/Mod_Gitwiki.php:155
-#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/hzfiles/hzfiles.php:84
-#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
-#: ../../addon/mailtest/mailtest.php:100
-#: ../../addon/openstreetmap/openstreetmap.php:168
-#: ../../addon/rtof/rtof.php:101 ../../addon/jappixmini/jappixmini.php:371
-#: ../../addon/superblock/superblock.php:120 ../../addon/nofed/nofed.php:80
-#: ../../addon/redred/redred.php:119 ../../addon/logrot/logrot.php:35
-#: ../../addon/frphotos/frphotos.php:96 ../../addon/pubcrawl/pubcrawl.php:1053
-#: ../../addon/chords/Mod_Chords.php:60 ../../addon/libertree/libertree.php:85
-#: ../../addon/flattrwidget/flattrwidget.php:124
-#: ../../addon/statusnet/statusnet.php:322
-#: ../../addon/statusnet/statusnet.php:380
-#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:217
-#: ../../addon/twitter/twitter.php:259
-#: ../../addon/smileybutton/smileybutton.php:219
-#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
-#: ../../addon/authchoose/authchoose.php:71 ../../addon/xmpp/xmpp.php:69
-#: ../../addon/pumpio/pumpio.php:237 ../../addon/redfiles/redfiles.php:124
-#: ../../addon/hubwall/hubwall.php:95 ../../include/js_strings.php:22
-msgid "Submit"
-msgstr "Absenden"
-
-#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Cards.php:38
-#: ../../Zotlabs/Module/Cards.php:178 ../../Zotlabs/Lib/Apps.php:224
-#: ../../include/conversation.php:1890 ../../include/features.php:122
-#: ../../include/nav.php:490
-msgid "Cards"
-msgstr "Karten"
-
-#: ../../Zotlabs/Module/Articles.php:95
-msgid "Add Article"
-msgstr "Artikel hinzufügen"
-
-#: ../../Zotlabs/Module/Articles.php:178 ../../include/nav.php:501
-msgid "Articles"
-msgstr "Artikel"
-
-#: ../../Zotlabs/Module/Editlayout.php:79
-#: ../../Zotlabs/Module/Article_edit.php:17
-#: ../../Zotlabs/Module/Article_edit.php:33
-#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
-#: ../../Zotlabs/Module/Editwebpage.php:80
-#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Card_edit.php:17
-#: ../../Zotlabs/Module/Card_edit.php:33
-msgid "Item not found"
-msgstr "Element nicht gefunden"
-
-#: ../../Zotlabs/Module/Editlayout.php:128
-#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189
-msgid "Layout Name"
-msgstr "Layout-Name"
-
-#: ../../Zotlabs/Module/Editlayout.php:129
-#: ../../Zotlabs/Module/Layouts.php:132
-msgid "Layout Description (Optional)"
-msgstr "Layout-Beschreibung (optional)"
-
-#: ../../Zotlabs/Module/Editlayout.php:137
-msgid "Edit Layout"
-msgstr "Layout bearbeiten"
-
-#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
-#: ../../Zotlabs/Module/Import_items.php:120
-#: ../../Zotlabs/Module/Cloud.php:111 ../../Zotlabs/Module/Group.php:74
-#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68
-#: ../../Zotlabs/Module/Like.php:295 ../../Zotlabs/Web/WebServer.php:168
-#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
-#: ../../addon/frphotos/frphotos.php:81 ../../addon/redfiles/redfiles.php:109
-#: ../../include/items.php:358
-msgid "Permission denied"
-msgstr "Keine Berechtigung"
-
-#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
-msgid "Invalid profile identifier."
-msgstr "Ungültiger Profil-Identifikator"
-
-#: ../../Zotlabs/Module/Profperm.php:111
-msgid "Profile Visibility Editor"
-msgstr "Profil-Sichtbarkeits-Editor"
-
-#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1633
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../Zotlabs/Module/Profperm.php:115
-msgid "Click on a contact to add or remove."
-msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."
-
-#: ../../Zotlabs/Module/Profperm.php:124
-msgid "Visible To"
-msgstr "Sichtbar für"
-
-#: ../../Zotlabs/Module/Profperm.php:140
-#: ../../Zotlabs/Module/Connections.php:140
-msgid "All Connections"
-msgstr "Alle Verbindungen"
-
-#: ../../Zotlabs/Module/Cdav.php:785
-msgid "INVALID EVENT DISMISSED!"
-msgstr "UNGÃœLTIGEN TERMIN ABGELEHNT!"
-
-#: ../../Zotlabs/Module/Cdav.php:786
-msgid "Summary: "
-msgstr "Zusammenfassung:"
-
-#: ../../Zotlabs/Module/Cdav.php:786 ../../Zotlabs/Module/Cdav.php:787
-#: ../../Zotlabs/Module/Cdav.php:794 ../../Zotlabs/Module/Embedphotos.php:146
-#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1273
-#: ../../Zotlabs/Lib/Apps.php:744 ../../Zotlabs/Lib/Apps.php:822
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:95
-#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:842
-#: ../../include/conversation.php:1160
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: ../../Zotlabs/Module/Cdav.php:787
-msgid "Date: "
-msgstr "Datum:"
-
-#: ../../Zotlabs/Module/Cdav.php:788 ../../Zotlabs/Module/Cdav.php:795
-msgid "Reason: "
-msgstr "Grund:"
-
-#: ../../Zotlabs/Module/Cdav.php:793
-msgid "INVALID CARD DISMISSED!"
-msgstr "UNGÃœLTIGE KARTE ABGELEHNT!"
-
-#: ../../Zotlabs/Module/Cdav.php:794
-msgid "Name: "
-msgstr "Name: "
-
-#: ../../Zotlabs/Module/Cdav.php:868 ../../Zotlabs/Module/Events.php:460
-msgid "Event title"
-msgstr "Termintitel"
-
-#: ../../Zotlabs/Module/Cdav.php:869 ../../Zotlabs/Module/Events.php:466
-msgid "Start date and time"
-msgstr "Startdatum und -zeit"
-
-#: ../../Zotlabs/Module/Cdav.php:869 ../../Zotlabs/Module/Cdav.php:870
-msgid "Example: YYYY-MM-DD HH:mm"
-msgstr "Beispiel: JJJJ-MM-TT HH:mm"
-
-#: ../../Zotlabs/Module/Cdav.php:870
-msgid "End date and time"
-msgstr "Enddatum und -zeit"
-
-#: ../../Zotlabs/Module/Cdav.php:871 ../../Zotlabs/Module/Events.php:473
-#: ../../Zotlabs/Module/Appman.php:142 ../../Zotlabs/Module/Rbmark.php:101
-#: ../../addon/rendezvous/rendezvous.php:173
-msgid "Description"
-msgstr "Beschreibung"
-
-#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Locs.php:117
-#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Profiles.php:509
-#: ../../Zotlabs/Module/Profiles.php:737 ../../Zotlabs/Module/Pubsites.php:52
-#: ../../include/js_strings.php:25
-msgid "Location"
-msgstr "Ort"
-
-#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Events.php:689
-#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Cal.php:339
-#: ../../Zotlabs/Module/Cal.php:346 ../../Zotlabs/Module/Photos.php:971
-msgid "Previous"
-msgstr "Voriges"
-
-#: ../../Zotlabs/Module/Cdav.php:880 ../../Zotlabs/Module/Events.php:690
-#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Setup.php:263
-#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Cal.php:347
-#: ../../Zotlabs/Module/Photos.php:980
-msgid "Next"
-msgstr "Nächste"
-
-#: ../../Zotlabs/Module/Cdav.php:881 ../../Zotlabs/Module/Events.php:700
-#: ../../Zotlabs/Module/Cal.php:348
-msgid "Today"
-msgstr "Heute"
-
-#: ../../Zotlabs/Module/Cdav.php:882 ../../Zotlabs/Module/Events.php:695
-msgid "Month"
-msgstr "Monat"
-
-#: ../../Zotlabs/Module/Cdav.php:883 ../../Zotlabs/Module/Events.php:696
-msgid "Week"
-msgstr "Woche"
-
-#: ../../Zotlabs/Module/Cdav.php:884 ../../Zotlabs/Module/Events.php:697
-msgid "Day"
-msgstr "Tag"
-
-#: ../../Zotlabs/Module/Cdav.php:885
-msgid "List month"
-msgstr "Liste Monat"
-
-#: ../../Zotlabs/Module/Cdav.php:886
-msgid "List week"
-msgstr "Liste Woche"
-
-#: ../../Zotlabs/Module/Cdav.php:887
-msgid "List day"
-msgstr "Liste Tag"
-
-#: ../../Zotlabs/Module/Cdav.php:894
-msgid "More"
-msgstr "Mehr"
-
-#: ../../Zotlabs/Module/Cdav.php:895
-msgid "Less"
-msgstr "Weniger"
-
-#: ../../Zotlabs/Module/Cdav.php:896
-msgid "Select calendar"
-msgstr "Kalender auswählen"
-
-#: ../../Zotlabs/Module/Cdav.php:898
-msgid "Delete all"
-msgstr "Alles löschen"
-
-#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Cdav.php:1188
-#: ../../Zotlabs/Module/Admin/Plugins.php:423
-#: ../../Zotlabs/Module/Settings/Oauth.php:88
-#: ../../Zotlabs/Module/Settings/Oauth.php:114
-#: ../../Zotlabs/Module/Wiki.php:345 ../../Zotlabs/Module/Wiki.php:375
-#: ../../Zotlabs/Module/Connedit.php:942 ../../Zotlabs/Module/Fbrowser.php:66
-#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804
-#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/gitwiki/Mod_Gitwiki.php:244
-#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1386
-#: ../../include/conversation.php:1435
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: ../../Zotlabs/Module/Cdav.php:900
-msgid "Sorry! Editing of recurrent events is not yet implemented."
-msgstr "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen ist leider noch nicht implementiert."
-
-#: ../../Zotlabs/Module/Cdav.php:1170
-#: ../../Zotlabs/Module/Sharedwithme.php:105
-#: ../../Zotlabs/Module/Admin/Channels.php:159
-#: ../../Zotlabs/Module/Settings/Oauth.php:89
-#: ../../Zotlabs/Module/Settings/Oauth.php:115
-#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:924
-#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:558
-#: ../../Zotlabs/Storage/Browser.php:280
-#: ../../Zotlabs/Widget/Wiki_page_history.php:22
-#: ../../addon/rendezvous/rendezvous.php:172
-#: ../../addon/gitwiki/Mod_Gitwiki.php:158
-msgid "Name"
-msgstr "Name"
-
-#: ../../Zotlabs/Module/Cdav.php:1171 ../../Zotlabs/Module/Connedit.php:925
-msgid "Organisation"
-msgstr "Organisation"
-
-#: ../../Zotlabs/Module/Cdav.php:1172 ../../Zotlabs/Module/Connedit.php:926
-msgid "Title"
-msgstr "Titel"
-
-#: ../../Zotlabs/Module/Cdav.php:1173 ../../Zotlabs/Module/Connedit.php:927
-#: ../../Zotlabs/Module/Profiles.php:789
-msgid "Phone"
-msgstr "Telefon"
-
-#: ../../Zotlabs/Module/Cdav.php:1174
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
-#: ../../Zotlabs/Module/Admin/Accounts.php:181
-#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Module/Profiles.php:790
-#: ../../addon/openid/MysqlProvider.php:56
-#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1769
-msgid "Email"
-msgstr "E-Mail"
-
-#: ../../Zotlabs/Module/Cdav.php:1175 ../../Zotlabs/Module/Connedit.php:929
-#: ../../Zotlabs/Module/Profiles.php:791
-msgid "Instant messenger"
-msgstr "Sofortnachrichtendienst"
-
-#: ../../Zotlabs/Module/Cdav.php:1176 ../../Zotlabs/Module/Connedit.php:930
-#: ../../Zotlabs/Module/Profiles.php:792
-msgid "Website"
-msgstr "Webseite"
-
-#: ../../Zotlabs/Module/Cdav.php:1177 ../../Zotlabs/Module/Locs.php:118
-#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:931 ../../Zotlabs/Module/Profiles.php:502
-#: ../../Zotlabs/Module/Profiles.php:793
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../Zotlabs/Module/Cdav.php:1178 ../../Zotlabs/Module/Connedit.php:932
-#: ../../Zotlabs/Module/Profiles.php:794
-msgid "Note"
-msgstr "Hinweis"
-
-#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:933
-#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1301
-#: ../../include/connections.php:682
-msgid "Mobile"
-msgstr "Mobil"
-
-#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:934
-#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1302
-#: ../../include/connections.php:683
-msgid "Home"
-msgstr "Home"
-
-#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:935
-#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1305
-#: ../../include/connections.php:686
-msgid "Work"
-msgstr "Arbeit"
-
-#: ../../Zotlabs/Module/Cdav.php:1183 ../../Zotlabs/Module/Connedit.php:937
-#: ../../Zotlabs/Module/Profiles.php:799
-#: ../../addon/jappixmini/jappixmini.php:368
-msgid "Add Contact"
-msgstr "Kontakt hinzufügen"
-
-#: ../../Zotlabs/Module/Cdav.php:1184 ../../Zotlabs/Module/Connedit.php:938
-#: ../../Zotlabs/Module/Profiles.php:800
-msgid "Add Field"
-msgstr "Feld hinzufügen"
-
-#: ../../Zotlabs/Module/Cdav.php:1186
-#: ../../Zotlabs/Module/Admin/Plugins.php:453
-#: ../../Zotlabs/Module/Settings/Oauth.php:42
-#: ../../Zotlabs/Module/Settings/Oauth.php:113
-#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:802
-#: ../../Zotlabs/Lib/Apps.php:383
-msgid "Update"
-msgstr "Aktualisieren"
-
-#: ../../Zotlabs/Module/Cdav.php:1189 ../../Zotlabs/Module/Connedit.php:943
-msgid "P.O. Box"
-msgstr "Postfach"
-
-#: ../../Zotlabs/Module/Cdav.php:1190 ../../Zotlabs/Module/Connedit.php:944
-msgid "Additional"
-msgstr "Zusätzlich"
-
-#: ../../Zotlabs/Module/Cdav.php:1191 ../../Zotlabs/Module/Connedit.php:945
-msgid "Street"
-msgstr "Straße"
-
-#: ../../Zotlabs/Module/Cdav.php:1192 ../../Zotlabs/Module/Connedit.php:946
-msgid "Locality"
-msgstr "Ortschaft"
-
-#: ../../Zotlabs/Module/Cdav.php:1193 ../../Zotlabs/Module/Connedit.php:947
-msgid "Region"
-msgstr "Region"
-
-#: ../../Zotlabs/Module/Cdav.php:1194 ../../Zotlabs/Module/Connedit.php:948
-msgid "ZIP Code"
-msgstr "Postleitzahl"
-
-#: ../../Zotlabs/Module/Cdav.php:1195 ../../Zotlabs/Module/Connedit.php:949
-#: ../../Zotlabs/Module/Profiles.php:760
-msgid "Country"
-msgstr "Land"
-
-#: ../../Zotlabs/Module/Cdav.php:1242
-msgid "Default Calendar"
-msgstr "Standardkalender"
-
-#: ../../Zotlabs/Module/Cdav.php:1252
-msgid "Default Addressbook"
-msgstr "Standardadressbuch"
-
-#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25
-msgid "This site is not a directory server"
-msgstr "Diese Webseite ist kein Verzeichnisserver"
-
-#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Chat.php:25
-#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:431
-msgid "You must be logged in to see this page."
-msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können."
-
-#: ../../Zotlabs/Module/Channel.php:47 ../../Zotlabs/Module/Hcard.php:37
-#: ../../Zotlabs/Module/Profile.php:45
-msgid "Posts and comments"
-msgstr "Beiträge und Kommentare"
-
-#: ../../Zotlabs/Module/Channel.php:54 ../../Zotlabs/Module/Hcard.php:44
-#: ../../Zotlabs/Module/Profile.php:52
-msgid "Only posts"
-msgstr "Nur Beiträge"
-
-#: ../../Zotlabs/Module/Channel.php:107
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."
-
-#: ../../Zotlabs/Module/Uexport.php:57 ../../Zotlabs/Module/Uexport.php:58
-msgid "Export Channel"
-msgstr "Kanal exportieren"
-
-#: ../../Zotlabs/Module/Uexport.php:59
-msgid ""
-"Export your basic channel information to a file. This acts as a backup of "
-"your connections, permissions, profile and basic data, which can be used to "
-"import your data to a new server hub, but does not contain your content."
-msgstr "Exportiert die grundlegenden Kanal-Informationen in eine kleine Datei. Diese stellt eine Sicherung Deiner Verbindungen, Berechtigungen, Profile und Basisdaten bereit, die für den Import auf einem anderen Hub verwendet werden kann, aber nicht die Beiträge Deines Kanals enthält."
-
-#: ../../Zotlabs/Module/Uexport.php:60
-msgid "Export Content"
-msgstr "Kanal und Inhalte exportieren"
-
-#: ../../Zotlabs/Module/Uexport.php:61
-msgid ""
-"Export your channel information and recent content to a JSON backup that can"
-" be restored or imported to another server hub. This backs up all of your "
-"connections, permissions, profile data and several months of posts. This "
-"file may be VERY large. Please be patient - it may take several minutes for"
-" this download to begin."
-msgstr "Exportiert Deine Kanal-Informationen sowie alle zugehörigen Inhalte in eine JSON-Sicherungsdatei. Die sichert alle Verbindungen, Berechtigungen, Profildaten und Deine Beiträge aus mehreren Monaten. Diese Datei kann SEHR groß werden! Bitte habe ein wenig Geduld – es kann mehrere Minuten dauern, bis der Download startet."
-
-#: ../../Zotlabs/Module/Uexport.php:63
-msgid "Export your posts from a given year."
-msgstr "Exportiert die Beiträge des angegebenen Jahres."
-
-#: ../../Zotlabs/Module/Uexport.php:65
-msgid ""
-"You may also export your posts and conversations for a particular year or "
-"month. Adjust the date in your browser location bar to select other dates. "
-"If the export fails (possibly due to memory exhaustion on your server hub), "
-"please try again selecting a more limited date range."
-msgstr "Du kannst auch die Beiträge und Konversationen eines bestimmten Jahres oder Monats exportieren. Ändere das Datum in der Adresszeile Deines Browsers, um andere Zeiträume zu wählen. Falls der Export fehlschlägt (vermutlich, weil auf diesem Hub nicht genügend Speicher zur Verfügung steht), versuche es noch einmal mit einer kleineren Zeitspanne."
-
-#: ../../Zotlabs/Module/Uexport.php:66
-#, php-format
-msgid ""
-"To select all posts for a given year, such as this year, visit <a "
-"href=\"%1$s\">%2$s</a>"
-msgstr "Um alle Beiträge eines bestimmten Jahres, zum Beispiel dieses Jahres, auszuwählen, klicke <a href=\"%1$s\">%2$s</a>."
-
-#: ../../Zotlabs/Module/Uexport.php:67
-#, php-format
-msgid ""
-"To select all posts for a given month, such as January of this year, visit "
-"<a href=\"%1$s\">%2$s</a>"
-msgstr "Um alle Beiträge eines bestimmten Monats auszuwählen, zum Beispiel vom Januar diesen Jahres, klicke <a href=\"%1$s\">%2$s</a>."
-
-#: ../../Zotlabs/Module/Uexport.php:68
-#, php-format
-msgid ""
-"These content files may be imported or restored by visiting <a "
-"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results"
-" please import or restore these in date order (oldest first)."
-msgstr "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1$s\">%2$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst."
-
-#: ../../Zotlabs/Module/Hq.php:136
-msgid "Welcome to hubzilla!"
-msgstr "Willkommen bei Hubzilla!"
-
-#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:540
-#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:63
-#: ../../Zotlabs/Module/Directory.php:68 ../../Zotlabs/Module/Display.php:30
-#: ../../Zotlabs/Module/Viewconnections.php:23
-msgid "Public access denied."
-msgstr "Öffentlichen Zugriff verweigert."
-
-#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:313
-#: ../../Zotlabs/Lib/Apps.php:250 ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../include/text.php:1029 ../../include/text.php:1041
-#: ../../include/acl_selectors.php:213 ../../include/nav.php:211
-msgid "Search"
-msgstr "Suche"
-
-#: ../../Zotlabs/Module/Search.php:225
-#, php-format
-msgid "Items tagged with: %s"
-msgstr "Beiträge mit Schlagwort: %s"
-
-#: ../../Zotlabs/Module/Search.php:227
-#, php-format
-msgid "Search results for: %s"
-msgstr "Suchergebnisse für: %s"
-
-#: ../../Zotlabs/Module/Pubstream.php:81
-#: ../../Zotlabs/Widget/Notifications.php:129
-msgid "Public Stream"
-msgstr "Öffentlicher Beitrags-Stream"
-
-#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
-msgid "Location not found."
-msgstr "Klon nicht gefunden."
-
-#: ../../Zotlabs/Module/Locs.php:62
-msgid "Location lookup failed."
-msgstr "Nachschlagen des Kanal-Ortes fehlgeschlagen"
-
-#: ../../Zotlabs/Module/Locs.php:66
-msgid ""
-"Please select another location to become primary before removing the primary"
-" location."
-msgstr "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst."
-
-#: ../../Zotlabs/Module/Locs.php:95
-msgid "Syncing locations"
-msgstr "Synchronisiere Klone"
-
-#: ../../Zotlabs/Module/Locs.php:105
-msgid "No locations found."
-msgstr "Keine Klon-Adressen gefunden."
-
-#: ../../Zotlabs/Module/Locs.php:116
-msgid "Manage Channel Locations"
-msgstr "Klon-Adressen verwalten"
-
-#: ../../Zotlabs/Module/Locs.php:119 ../../Zotlabs/Module/Admin.php:111
-msgid "Primary"
-msgstr "Primär"
-
-#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113
-msgid "Drop"
-msgstr "Löschen"
-
-#: ../../Zotlabs/Module/Locs.php:122
-msgid "Sync Now"
-msgstr "Jetzt synchronisieren"
-
-#: ../../Zotlabs/Module/Locs.php:123
-msgid "Please wait several minutes between consecutive operations."
-msgstr "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!"
-
-#: ../../Zotlabs/Module/Locs.php:124
-msgid ""
-"When possible, drop a location by logging into that website/hub and removing"
-" your channel."
-msgstr "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst."
-
-#: ../../Zotlabs/Module/Locs.php:125
-msgid "Use this form to drop the location if the hub is no longer operating."
-msgstr "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt."
-
-#: ../../Zotlabs/Module/Apporder.php:44
-msgid "Change Order of Pinned Navbar Apps"
-msgstr "Reihenfolge der in der Navigation angepinnten Apps ändern"
-
-#: ../../Zotlabs/Module/Apporder.php:44
-msgid "Change Order of App Tray Apps"
-msgstr "Reihenfolge der Apps im App-Menü ändern"
-
-#: ../../Zotlabs/Module/Apporder.php:45
-msgid ""
-"Use arrows to move the corresponding app left (top) or right (bottom) in the"
-" navbar"
-msgstr "Benutze die Pfeil-Knöpfe, um die jeweilige App in der Navigationsleiste nach links (oben) oder rechts (unten) zu bewegen"
-
-#: ../../Zotlabs/Module/Apporder.php:45
-msgid "Use arrows to move the corresponding app up or down in the app tray"
-msgstr "Benutze die Pfeil-Knöpfe, um die jeweilige App im App-Menü nach oben oder unten zu bewegen"
-
-#: ../../Zotlabs/Module/Mitem.php:28 ../../Zotlabs/Module/Menu.php:144
-msgid "Menu not found."
-msgstr "Menü nicht gefunden"
-
-#: ../../Zotlabs/Module/Mitem.php:52
-msgid "Unable to create element."
-msgstr "Element konnte nicht erstellt werden."
-
-#: ../../Zotlabs/Module/Mitem.php:76
-msgid "Unable to update menu element."
-msgstr "Kann Menü-Element nicht aktualisieren."
-
-#: ../../Zotlabs/Module/Mitem.php:92
-msgid "Unable to add menu element."
-msgstr "Kann Menü-Bestandteil nicht hinzufügen."
-
-#: ../../Zotlabs/Module/Mitem.php:120 ../../Zotlabs/Module/Menu.php:166
-#: ../../Zotlabs/Module/Xchan.php:41
-msgid "Not found."
-msgstr "Nicht gefunden."
-
-#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:230
-msgid "Menu Item Permissions"
-msgstr "Zugriffsrechte des Menü-Elements"
-
-#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231
-#: ../../Zotlabs/Module/Settings/Channel.php:522
-msgid "(click to open/close)"
-msgstr "(zum öffnen/schließen anklicken)"
-
-#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:176
-msgid "Link Name"
-msgstr "Name des Links"
-
-#: ../../Zotlabs/Module/Mitem.php:161 ../../Zotlabs/Module/Mitem.php:239
-msgid "Link or Submenu Target"
-msgstr "Ziel des Links oder Untermenüs"
-
-#: ../../Zotlabs/Module/Mitem.php:161
-msgid "Enter URL of the link or select a menu name to create a submenu"
-msgstr "URL des Links eingeben oder Menünamen wählen, um ein Untermenü anzulegen."
-
-#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:240
-msgid "Use magic-auth if available"
-msgstr "Magic-Auth verwenden, falls verfügbar"
-
-#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
-#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
-#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
-#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:240
-#: ../../Zotlabs/Module/Settings/Channel.php:305
-#: ../../Zotlabs/Module/Settings/Display.php:105
-#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:697
-#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
-#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Connedit.php:779
-#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
-#: ../../Zotlabs/Module/Defperms.php:180 ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
-#: ../../view/theme/redbasic_c/php/config.php:100
-#: ../../view/theme/redbasic_c/php/config.php:115
-#: ../../view/theme/redbasic/php/config.php:98
-#: ../../addon/planets/planets.php:149 ../../addon/wppost/wppost.php:82
-#: ../../addon/wppost/wppost.php:105 ../../addon/wppost/wppost.php:109
-#: ../../addon/nsfw/nsfw.php:84 ../../addon/ijpost/ijpost.php:73
-#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
-#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
-#: ../../addon/ljpost/ljpost.php:82 ../../addon/gitwiki/Mod_Gitwiki.php:166
-#: ../../addon/rainbowtag/rainbowtag.php:81 ../../addon/visage/visage.php:166
-#: ../../addon/nsabait/nsabait.php:157 ../../addon/rtof/rtof.php:81
-#: ../../addon/rtof/rtof.php:85 ../../addon/jappixmini/jappixmini.php:309
-#: ../../addon/jappixmini/jappixmini.php:313
-#: ../../addon/jappixmini/jappixmini.php:343
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-#: ../../addon/jappixmini/jappixmini.php:359 ../../addon/nofed/nofed.php:72
-#: ../../addon/nofed/nofed.php:76 ../../addon/redred/redred.php:95
-#: ../../addon/redred/redred.php:99 ../../addon/libertree/libertree.php:69
-#: ../../addon/libertree/libertree.php:81
-#: ../../addon/flattrwidget/flattrwidget.php:120
-#: ../../addon/statusnet/statusnet.php:389
-#: ../../addon/statusnet/statusnet.php:411
-#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242
-#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255
-#: ../../addon/smileybutton/smileybutton.php:211
-#: ../../addon/smileybutton/smileybutton.php:215
-#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
-#: ../../addon/pumpio/pumpio.php:219 ../../addon/pumpio/pumpio.php:223
-#: ../../addon/pumpio/pumpio.php:227 ../../addon/pumpio/pumpio.php:231
-#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
-#: ../../include/dir_fns.php:145
-msgid "No"
-msgstr "Nein"
-
-#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163
-#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
-#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
-#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:242
-#: ../../Zotlabs/Module/Settings/Channel.php:305
-#: ../../Zotlabs/Module/Settings/Display.php:105
-#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:697
-#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
-#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Defperms.php:180
-#: ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
-#: ../../view/theme/redbasic_c/php/config.php:100
-#: ../../view/theme/redbasic_c/php/config.php:115
-#: ../../view/theme/redbasic/php/config.php:98
-#: ../../addon/planets/planets.php:149 ../../addon/wppost/wppost.php:82
-#: ../../addon/wppost/wppost.php:105 ../../addon/wppost/wppost.php:109
-#: ../../addon/nsfw/nsfw.php:84 ../../addon/ijpost/ijpost.php:73
-#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
-#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
-#: ../../addon/ljpost/ljpost.php:82 ../../addon/gitwiki/Mod_Gitwiki.php:166
-#: ../../addon/rainbowtag/rainbowtag.php:81 ../../addon/visage/visage.php:166
-#: ../../addon/nsabait/nsabait.php:157 ../../addon/rtof/rtof.php:81
-#: ../../addon/rtof/rtof.php:85 ../../addon/jappixmini/jappixmini.php:309
-#: ../../addon/jappixmini/jappixmini.php:313
-#: ../../addon/jappixmini/jappixmini.php:343
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-#: ../../addon/jappixmini/jappixmini.php:359 ../../addon/nofed/nofed.php:72
-#: ../../addon/nofed/nofed.php:76 ../../addon/redred/redred.php:95
-#: ../../addon/redred/redred.php:99 ../../addon/libertree/libertree.php:69
-#: ../../addon/libertree/libertree.php:81
-#: ../../addon/flattrwidget/flattrwidget.php:120
-#: ../../addon/statusnet/statusnet.php:389
-#: ../../addon/statusnet/statusnet.php:411
-#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242
-#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255
-#: ../../addon/smileybutton/smileybutton.php:211
-#: ../../addon/smileybutton/smileybutton.php:215
-#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
-#: ../../addon/pumpio/pumpio.php:219 ../../addon/pumpio/pumpio.php:223
-#: ../../addon/pumpio/pumpio.php:227 ../../addon/pumpio/pumpio.php:231
-#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
-#: ../../include/dir_fns.php:145
-msgid "Yes"
-msgstr "Ja"
-
-#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:241
-msgid "Open link in new window"
-msgstr "Öffne Link in neuem Fenster"
-
-#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242
-msgid "Order in list"
-msgstr "Reihenfolge in der Liste"
-
-#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Größere Nummern werden weiter unten in der Auflistung einsortiert"
-
-#: ../../Zotlabs/Module/Mitem.php:165
-msgid "Submit and finish"
-msgstr "Absenden und fertigstellen"
-
-#: ../../Zotlabs/Module/Mitem.php:166
-msgid "Submit and continue"
-msgstr "Absenden und fortfahren"
-
-#: ../../Zotlabs/Module/Mitem.php:174
-msgid "Menu:"
-msgstr "Menü:"
-
-#: ../../Zotlabs/Module/Mitem.php:177
-msgid "Link Target"
-msgstr "Ziel des Links"
-
-#: ../../Zotlabs/Module/Mitem.php:180
-msgid "Edit menu"
-msgstr "Menü bearbeiten"
-
-#: ../../Zotlabs/Module/Mitem.php:183
-msgid "Edit element"
-msgstr "Bestandteil bearbeiten"
-
-#: ../../Zotlabs/Module/Mitem.php:184
-msgid "Drop element"
-msgstr "Bestandteil löschen"
-
-#: ../../Zotlabs/Module/Mitem.php:185
-msgid "New element"
-msgstr "Neues Bestandteil"
-
-#: ../../Zotlabs/Module/Mitem.php:186
-msgid "Edit this menu container"
-msgstr "Diesen Menü-Container bearbeiten"
-
-#: ../../Zotlabs/Module/Mitem.php:187
-msgid "Add menu element"
-msgstr "Menüelement hinzufügen"
-
-#: ../../Zotlabs/Module/Mitem.php:188
-msgid "Delete this menu item"
-msgstr "Lösche dieses Menü-Bestandteil"
-
-#: ../../Zotlabs/Module/Mitem.php:189
-msgid "Edit this menu item"
-msgstr "Bearbeite dieses Menü-Bestandteil"
-
-#: ../../Zotlabs/Module/Mitem.php:206
-msgid "Menu item not found."
-msgstr "Menü-Bestandteil nicht gefunden."
-
-#: ../../Zotlabs/Module/Mitem.php:219
-msgid "Menu item deleted."
-msgstr "Menü-Bestandteil gelöscht."
-
-#: ../../Zotlabs/Module/Mitem.php:221
-msgid "Menu item could not be deleted."
-msgstr "Menü-Bestandteil kann nicht gelöscht werden."
-
-#: ../../Zotlabs/Module/Mitem.php:228
-msgid "Edit Menu Element"
-msgstr "Bearbeite Menü-Bestandteil"
-
-#: ../../Zotlabs/Module/Mitem.php:238
-msgid "Link text"
-msgstr "Link Text"
-
-#: ../../Zotlabs/Module/Events.php:25
-msgid "Calendar entries imported."
-msgstr "Kalendereinträge wurden importiert."
-
-#: ../../Zotlabs/Module/Events.php:27
-msgid "No calendar entries found."
-msgstr "Keine Kalendereinträge gefunden."
-
-#: ../../Zotlabs/Module/Events.php:110
-msgid "Event can not end before it has started."
-msgstr "Termin-Ende liegt vor dem Beginn."
-
-#: ../../Zotlabs/Module/Events.php:112 ../../Zotlabs/Module/Events.php:121
-#: ../../Zotlabs/Module/Events.php:143
-msgid "Unable to generate preview."
-msgstr "Vorschau konnte nicht erzeugt werden."
-
-#: ../../Zotlabs/Module/Events.php:119
-msgid "Event title and start time are required."
-msgstr "Titel und Startzeit des Termins sind erforderlich."
-
-#: ../../Zotlabs/Module/Events.php:141 ../../Zotlabs/Module/Events.php:265
-msgid "Event not found."
-msgstr "Termin nicht gefunden."
-
-#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Like.php:384 ../../include/conversation.php:119
-#: ../../include/text.php:1941 ../../include/event.php:1153
-msgid "event"
-msgstr "Termin"
-
-#: ../../Zotlabs/Module/Events.php:460
-msgid "Edit event title"
-msgstr "Termintitel bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465
-#: ../../Zotlabs/Module/Appman.php:140 ../../Zotlabs/Module/Appman.php:141
-#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752
-#: ../../include/datetime.php:265
-msgid "Required"
-msgstr "Benötigt"
-
-#: ../../Zotlabs/Module/Events.php:462
-msgid "Categories (comma-separated list)"
-msgstr "Kategorien (Kommagetrennte Liste)"
-
-#: ../../Zotlabs/Module/Events.php:463
-msgid "Edit Category"
-msgstr "Kategorie bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:463
-msgid "Category"
-msgstr "Kategorie"
-
-#: ../../Zotlabs/Module/Events.php:466
-msgid "Edit start date and time"
-msgstr "Startdatum und -zeit bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:470
-msgid "Finish date and time are not known or not relevant"
-msgstr "Enddatum und -zeit sind unbekannt oder irrelevant"
-
-#: ../../Zotlabs/Module/Events.php:469
-msgid "Edit finish date and time"
-msgstr "Enddatum und -zeit bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:469
-msgid "Finish date and time"
-msgstr "Enddatum und -zeit"
-
-#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Events.php:472
-msgid "Adjust for viewer timezone"
-msgstr "An die Zeitzone des Betrachters anpassen"
-
-#: ../../Zotlabs/Module/Events.php:471
-msgid ""
-"Important for events that happen in a particular place. Not practical for "
-"global holidays."
-msgstr "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien."
-
-#: ../../Zotlabs/Module/Events.php:473
-msgid "Edit Description"
-msgstr "Beschreibung bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:475
-msgid "Edit Location"
-msgstr "Ort bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1123
-#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:764
-#: ../../include/conversation.php:1330
-msgid "Preview"
-msgstr "Vorschau"
-
-#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1402
-msgid "Permission settings"
-msgstr "Berechtigungs-Einstellungen"
-
-#: ../../Zotlabs/Module/Events.php:489
-msgid "Timezone:"
-msgstr "Zeitzone:"
-
-#: ../../Zotlabs/Module/Events.php:494
-msgid "Advanced Options"
-msgstr "Weitere Optionen"
-
-#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:266
-msgid "l, F j"
-msgstr "l, j. F"
-
-#: ../../Zotlabs/Module/Events.php:633
-msgid "Edit event"
-msgstr "Termin bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:635
-msgid "Delete event"
-msgstr "Termin löschen"
-
-#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:315
-#: ../../include/text.php:1760
-msgid "Link to Source"
-msgstr "Link zur Quelle"
-
-#: ../../Zotlabs/Module/Events.php:669
-msgid "calendar"
-msgstr "Kalender"
-
-#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
-msgid "Edit Event"
-msgstr "Termin bearbeiten"
-
-#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:338
-msgid "Create Event"
-msgstr "Termin anlegen"
-
-#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341
-#: ../../include/channel.php:1636
-msgid "Export"
-msgstr "Exportieren"
-
-#: ../../Zotlabs/Module/Events.php:731
-msgid "Event removed"
-msgstr "Termin gelöscht"
-
-#: ../../Zotlabs/Module/Events.php:734
-msgid "Failed to remove event"
-msgstr "Termin konnte nicht gelöscht werden"
-
-#: ../../Zotlabs/Module/Appman.php:38 ../../Zotlabs/Module/Appman.php:55
-msgid "App installed."
-msgstr "App installiert."
-
-#: ../../Zotlabs/Module/Appman.php:48
-msgid "Malformed app."
-msgstr "Fehlerhafte App."
-
-#: ../../Zotlabs/Module/Appman.php:129
-msgid "Embed code"
-msgstr "Code einbetten"
-
-#: ../../Zotlabs/Module/Appman.php:135
-msgid "Edit App"
-msgstr "App bearbeiten"
-
-#: ../../Zotlabs/Module/Appman.php:135
-msgid "Create App"
-msgstr "App erstellen"
-
-#: ../../Zotlabs/Module/Appman.php:140
-msgid "Name of app"
-msgstr "Name der App"
-
-#: ../../Zotlabs/Module/Appman.php:141
-msgid "Location (URL) of app"
-msgstr "Ort (URL) der App"
-
-#: ../../Zotlabs/Module/Appman.php:143
-msgid "Photo icon URL"
-msgstr "URL zum Icon"
-
-#: ../../Zotlabs/Module/Appman.php:143
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 Pixel – optional"
-
-#: ../../Zotlabs/Module/Appman.php:144
-msgid "Categories (optional, comma separated list)"
-msgstr "Kategorien (optional, kommagetrennte Liste)"
-
-#: ../../Zotlabs/Module/Appman.php:145
-msgid "Version ID"
-msgstr "Versions-ID"
-
-#: ../../Zotlabs/Module/Appman.php:146
-msgid "Price of app"
-msgstr "Preis der App"
-
-#: ../../Zotlabs/Module/Appman.php:147
-msgid "Location (URL) to purchase app"
-msgstr "Ort (URL), um die App zu kaufen"
-
-#: ../../Zotlabs/Module/Regmod.php:15
-msgid "Please login."
-msgstr "Bitte melde dich an."
-
-#: ../../Zotlabs/Module/Magic.php:72
-msgid "Hub not found."
-msgstr "Server nicht gefunden."
-
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
-#: ../../Zotlabs/Module/Like.php:382
-#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
-#: ../../include/conversation.php:116 ../../include/text.php:1938
-msgid "photo"
-msgstr "Foto"
-
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:382
-#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
-#: ../../include/conversation.php:144 ../../include/text.php:1944
-msgid "status"
-msgstr "Status"
-
-#: ../../Zotlabs/Module/Subthread.php:142
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s folgt nun %2$ss %3$s"
-
-#: ../../Zotlabs/Module/Subthread.php:144
-#, php-format
-msgid "%1$s stopped following %2$s's %3$s"
-msgstr "%1$s folgt %2$ss %3$s nicht mehr"
-
-#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:62
-#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75
-#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41
-#: ../../Zotlabs/Module/Card_edit.php:44
-msgid "Channel not found."
-msgstr "Kanal nicht gefunden."
-
-#: ../../Zotlabs/Module/Article_edit.php:101
-#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:207
-#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
-#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
-#: ../../include/conversation.php:1278
-msgid "Insert web link"
-msgstr "Link einfügen"
-
-#: ../../Zotlabs/Module/Article_edit.php:117
-#: ../../Zotlabs/Module/Editblock.php:129
-#: ../../Zotlabs/Module/Card_edit.php:117 ../../include/conversation.php:1398
-msgid "Title (optional)"
-msgstr "Titel (optional)"
-
-#: ../../Zotlabs/Module/Article_edit.php:128
-msgid "Edit Article"
-msgstr "Artikel bearbeiten"
-
-#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:64
-msgid "Nothing to import."
-msgstr "Nichts zu importieren."
-
-#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:79
-#: ../../Zotlabs/Module/Import.php:95
-msgid "Unable to download data from old server"
-msgstr "Daten können vom alten Server nicht heruntergeladen werden"
-
-#: ../../Zotlabs/Module/Import_items.php:77
-#: ../../Zotlabs/Module/Import.php:102
-msgid "Imported file is empty."
-msgstr "Die importierte Datei ist leer."
-
-#: ../../Zotlabs/Module/Import_items.php:93
-#: ../../Zotlabs/Module/Import.php:121
-#, php-format
-msgid "Warning: Database versions differ by %1$d updates."
-msgstr "Achtung: Datenbankversionen unterscheiden sich um %1$d Aktualisierungen."
-
-#: ../../Zotlabs/Module/Import_items.php:108
-msgid "Import completed"
-msgstr "Import abgeschlossen"
-
-#: ../../Zotlabs/Module/Import_items.php:125
-msgid "Import Items"
-msgstr "Beiträge importieren"
-
-#: ../../Zotlabs/Module/Import_items.php:126
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren."
-
-#: ../../Zotlabs/Module/Import_items.php:127
-#: ../../Zotlabs/Module/Import.php:516
-msgid "File to Upload"
-msgstr "Hochzuladende Datei:"
-
-#: ../../Zotlabs/Module/New_channel.php:121
-#: ../../Zotlabs/Module/Manage.php:138
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."
-
-#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:249
-msgid "Name or caption"
-msgstr "Name oder Titel"
-
-#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:249
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
-msgstr "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ "
-
-#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:251
-msgid "Choose a short nickname"
-msgstr "Wähle einen kurzen Spitznamen"
-
-#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:251
-#, php-format
-msgid ""
-"Your nickname will be used to create an easy to remember channel address "
-"e.g. nickname%s"
-msgstr "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst, z.B. nickname%s"
-
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
-msgid "Channel role and privacy"
-msgstr "Kanaltyp und Privatspäre-Einstellungen"
-
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
-msgid "Select a channel role with your privacy requirements."
-msgstr "Wähle einen passenden Kanaltyp mit den zugehörigen Voreinstellungen zur Privatsphäre."
-
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
-msgid "Read more about roles"
-msgstr "Mehr Informationen über Rollen"
-
-#: ../../Zotlabs/Module/New_channel.php:140
-msgid "Create Channel"
-msgstr "Einen neuen Kanal anlegen"
-
-#: ../../Zotlabs/Module/New_channel.php:141
-msgid ""
-"A channel is your identity on this network. It can represent a person, a "
-"blog, or a forum to name a few. Channels can make connections with other "
-"channels to share information with highly detailed permissions."
-msgstr "Ein Kanal ist Deine Identität in diesem Netzwerk. Er kann eine Person, ein Blog oder ein Forum repräsentieren, nur um ein paar Beispiele zu nennen. Kanäle können Verbindungen miteinander eingehen, um Informationen zu teilen, jeweils basierend auf sehr detaillierten Berechtigungseinstellungen."
-
-#: ../../Zotlabs/Module/New_channel.php:142
-msgid ""
-"or <a href=\"import\">import an existing channel</a> from another location."
-msgstr "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server."
-
-#: ../../Zotlabs/Module/Removeme.php:35
-msgid ""
-"Channel removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden."
-
-#: ../../Zotlabs/Module/Removeme.php:60
-msgid "Remove This Channel"
-msgstr "Diesen Kanal löschen"
-
-#: ../../Zotlabs/Module/Removeme.php:61
-#: ../../Zotlabs/Module/Removeaccount.php:58
-#: ../../Zotlabs/Module/Changeaddr.php:78
-msgid "WARNING: "
-msgstr "WARNUNG: "
-
-#: ../../Zotlabs/Module/Removeme.php:61
-msgid "This channel will be completely removed from the network. "
-msgstr "Dieser Kanal wird vollständig aus dem Netzwerk gelöscht."
-
-#: ../../Zotlabs/Module/Removeme.php:61
-#: ../../Zotlabs/Module/Removeaccount.php:58
-msgid "This action is permanent and can not be undone!"
-msgstr "Dieser Schritt ist endgültig und kann nicht rückgängig gemacht werden!"
-
-#: ../../Zotlabs/Module/Removeme.php:62
-#: ../../Zotlabs/Module/Removeaccount.php:59
-#: ../../Zotlabs/Module/Changeaddr.php:79
-msgid "Please enter your password for verification:"
-msgstr "Bitte gib zur Bestätigung Dein Passwort ein:"
-
-#: ../../Zotlabs/Module/Removeme.php:63
-msgid "Remove this channel and all its clones from the network"
-msgstr "Lösche diesen Kanal und all seine Klone aus dem Netzwerk"
-
-#: ../../Zotlabs/Module/Removeme.php:63
-msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk"
-
-#: ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings/Channel.php:593
-msgid "Remove Channel"
-msgstr "Kanal löschen"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:104
-msgid "Files: shared with me"
-msgstr "Dateien, die mit mir geteilt wurden"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:106
-msgid "NEW"
-msgstr "NEU"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:107
-#: ../../Zotlabs/Storage/Browser.php:282 ../../include/text.php:1394
-msgid "Size"
-msgstr "Größe"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:108
-#: ../../Zotlabs/Storage/Browser.php:283
-msgid "Last Modified"
-msgstr "Zuletzt geändert"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:109
-msgid "Remove all files"
-msgstr "Alle Dateien löschen"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:110
-msgid "Remove this file"
-msgstr "Diese Datei löschen"
-
-#: ../../Zotlabs/Module/Setup.php:170
-msgid "$Projectname Server - Setup"
-msgstr "$Projectname Server-Einrichtung"
-
-#: ../../Zotlabs/Module/Setup.php:174
-msgid "Could not connect to database."
-msgstr "Kann nicht mit der Datenbank verbinden."
-
-#: ../../Zotlabs/Module/Setup.php:178
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS."
-
-#: ../../Zotlabs/Module/Setup.php:185
-msgid "Could not create table."
-msgstr "Konnte Tabelle nicht erstellen."
-
-#: ../../Zotlabs/Module/Setup.php:191
-msgid "Your site database has been installed."
-msgstr "Die Datenbank Deines Hubs wurde installiert."
-
-#: ../../Zotlabs/Module/Setup.php:197
-msgid ""
-"You may need to import the file \"install/schema_xxx.sql\" manually using a "
-"database client."
-msgstr "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren."
-
-#: ../../Zotlabs/Module/Setup.php:198 ../../Zotlabs/Module/Setup.php:262
-#: ../../Zotlabs/Module/Setup.php:745
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Lies die Datei \"install/INSTALL.txt\"."
-
-#: ../../Zotlabs/Module/Setup.php:259
-msgid "System check"
-msgstr "Systemprüfung"
-
-#: ../../Zotlabs/Module/Setup.php:264
-msgid "Check again"
-msgstr "Nochmal prüfen"
-
-#: ../../Zotlabs/Module/Setup.php:286
-msgid "Database connection"
-msgstr "Datenbankverbindung"
-
-#: ../../Zotlabs/Module/Setup.php:287
-msgid ""
-"In order to install $Projectname we need to know how to connect to your "
-"database."
-msgstr "Um $Projectname zu installieren, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können."
-
-#: ../../Zotlabs/Module/Setup.php:288
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast."
-
-#: ../../Zotlabs/Module/Setup.php:289
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst."
-
-#: ../../Zotlabs/Module/Setup.php:293
-msgid "Database Server Name"
-msgstr "Datenbankservername"
-
-#: ../../Zotlabs/Module/Setup.php:293
-msgid "Default is 127.0.0.1"
-msgstr "Standard ist 127.0.0.1"
-
-#: ../../Zotlabs/Module/Setup.php:294
-msgid "Database Port"
-msgstr "Datenbankport"
-
-#: ../../Zotlabs/Module/Setup.php:294
-msgid "Communication port number - use 0 for default"
-msgstr "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung"
-
-#: ../../Zotlabs/Module/Setup.php:295
-msgid "Database Login Name"
-msgstr "Datenbank-Benutzername"
-
-#: ../../Zotlabs/Module/Setup.php:296
-msgid "Database Login Password"
-msgstr "Datenbank-Passwort"
-
-#: ../../Zotlabs/Module/Setup.php:297
-msgid "Database Name"
-msgstr "Datenbankname"
-
-#: ../../Zotlabs/Module/Setup.php:298
-msgid "Database Type"
-msgstr "Datenbanktyp"
-
-#: ../../Zotlabs/Module/Setup.php:300 ../../Zotlabs/Module/Setup.php:341
-msgid "Site administrator email address"
-msgstr "E-Mail Adresse des Seiten-Administrators"
-
-#: ../../Zotlabs/Module/Setup.php:300 ../../Zotlabs/Module/Setup.php:341
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst."
-
-#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:343
-msgid "Website URL"
-msgstr "Webseiten-URL"
-
-#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:343
-msgid "Please use SSL (https) URL if available."
-msgstr "Nutze wenn möglich eine SSL-URL (https)."
-
-#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:345
-msgid "Please select a default timezone for your website"
-msgstr "Standard-Zeitzone für Deinen Server"
-
-#: ../../Zotlabs/Module/Setup.php:330
-msgid "Site settings"
-msgstr "Seiteneinstellungen"
-
-#: ../../Zotlabs/Module/Setup.php:384
-msgid "PHP version 5.5 or greater is required."
-msgstr "PHP-Version 5.5 oder höher ist erforderlich."
-
-#: ../../Zotlabs/Module/Setup.php:385
-msgid "PHP version"
-msgstr "PHP-Version"
-
-#: ../../Zotlabs/Module/Setup.php:401
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden."
-
-#: ../../Zotlabs/Module/Setup.php:402
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen."
-
-#: ../../Zotlabs/Module/Setup.php:406
-msgid "PHP executable path"
-msgstr "PHP-Pfad zu ausführbarer Datei"
-
-#: ../../Zotlabs/Module/Setup.php:406
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren."
-
-#: ../../Zotlabs/Module/Setup.php:411
-msgid "Command line PHP"
-msgstr "PHP-Befehlszeile"
-
-#: ../../Zotlabs/Module/Setup.php:421
-msgid ""
-"Unable to check command line PHP, as shell_exec() is disabled. This is "
-"required."
-msgstr "Prüfung auf Kommandozeilen-PHP fehlgeschlagen, da shell_exec() deaktiviert ist. Dies wird aber benötigt."
-
-#: ../../Zotlabs/Module/Setup.php:424
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert."
-
-#: ../../Zotlabs/Module/Setup.php:425
-msgid "This is required for message delivery to work."
-msgstr "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert."
-
-#: ../../Zotlabs/Module/Setup.php:428
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
-
-#: ../../Zotlabs/Module/Setup.php:446
-#, php-format
-msgid ""
-"Your max allowed total upload size is set to %s. Maximum size of one file to"
-" upload is set to %s. You are allowed to upload up to %d files at once."
-msgstr "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden."
-
-#: ../../Zotlabs/Module/Setup.php:451
-msgid "You can adjust these settings in the server php.ini file."
-msgstr "Du kannst diese Einstellungen in der php.ini - Datei des Servers anpassen."
-
-#: ../../Zotlabs/Module/Setup.php:453
-msgid "PHP upload limits"
-msgstr "PHP-Hochladebeschränkungen"
-
-#: ../../Zotlabs/Module/Setup.php:476
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen."
-
-#: ../../Zotlabs/Module/Setup.php:477
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung."
-
-#: ../../Zotlabs/Module/Setup.php:480
-msgid "Generate encryption keys"
-msgstr "Verschlüsselungsschlüssel erzeugen"
-
-#: ../../Zotlabs/Module/Setup.php:497
-msgid "libCurl PHP module"
-msgstr "libCurl-PHP-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:498
-msgid "GD graphics PHP module"
-msgstr "GD-Grafik-PHP-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:499
-msgid "OpenSSL PHP module"
-msgstr "OpenSSL-PHP-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:500
-msgid "PDO database PHP module"
-msgstr "PDO-Datenbank-PHP-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:501
-msgid "mb_string PHP module"
-msgstr "mb_string-PHP-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:502
-msgid "xml PHP module"
-msgstr "xml-PHP-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:503
-msgid "zip PHP module"
-msgstr "zip PHP Modul"
-
-#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
-msgid "Apache mod_rewrite module"
-msgstr "Apache-mod_rewrite-Modul"
-
-#: ../../Zotlabs/Module/Setup.php:507
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
-msgid "exec"
-msgstr "exec"
-
-#: ../../Zotlabs/Module/Setup.php:513
-msgid ""
-"Error: exec is required but is either not installed or has been disabled in "
-"php.ini"
-msgstr "Fehler: exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
-
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
-msgid "shell_exec"
-msgstr "shell_exec"
-
-#: ../../Zotlabs/Module/Setup.php:519
-msgid ""
-"Error: shell_exec is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Fehler: shell_exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
-
-#: ../../Zotlabs/Module/Setup.php:527
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:531
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:535
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:539
-msgid "Error: PDO database PHP module required but not installed."
-msgstr "Fehler: PDO-Datenbank-PHP-Modul ist erforderlich, aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:543
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:547
-msgid "Error: xml PHP module required for DAV but not installed."
-msgstr "Fehler: Das xml-PHP-Modul wird für DAV benötigt, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:551
-msgid "Error: zip PHP module required but not installed."
-msgstr "Fehler: Das zip PHP Modul ist erforderlich, ist aber nicht installiert."
-
-#: ../../Zotlabs/Module/Setup.php:569
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht."
-
-#: ../../Zotlabs/Module/Setup.php:570
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst."
-
-#: ../../Zotlabs/Module/Setup.php:571
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst."
-
-#: ../../Zotlabs/Module/Setup.php:572
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt."
-
-#: ../../Zotlabs/Module/Setup.php:575
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php ist beschreibbar"
-
-#: ../../Zotlabs/Module/Setup.php:589
-msgid ""
-"This software uses the Smarty3 template engine to render its web views. "
-"Smarty3 compiles templates to PHP to speed up rendering."
-msgstr "Diese Software verwendet die Smarty3 Template Engine, um Vorlagen für die Webdarstellung zu verarbeiten. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."
-
-#: ../../Zotlabs/Module/Setup.php:590
-#, php-format
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the top level web folder."
-msgstr "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses."
-
-#: ../../Zotlabs/Module/Setup.php:591 ../../Zotlabs/Module/Setup.php:612
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat."
-
-#: ../../Zotlabs/Module/Setup.php:592
-#, php-format
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"%s only--not the template files (.tpl) that it contains."
-msgstr "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält."
-
-#: ../../Zotlabs/Module/Setup.php:595
-#, php-format
-msgid "%s is writable"
-msgstr "%s ist beschreibbar"
-
-#: ../../Zotlabs/Module/Setup.php:611
-msgid ""
-"This software uses the store directory to save uploaded files. The web "
-"server needs to have write access to the store directory under the top level"
-" web folder"
-msgstr "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Web-Stammverzeichnisses."
-
-#: ../../Zotlabs/Module/Setup.php:615
-msgid "store is writable"
-msgstr "store ist schreibbar"
-
-#: ../../Zotlabs/Module/Setup.php:647
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server."
-
-#: ../../Zotlabs/Module/Setup.php:648
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich."
-
-#: ../../Zotlabs/Module/Setup.php:649
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können."
-
-#: ../../Zotlabs/Module/Setup.php:650
-msgid ""
-"If your certificate is not recognized, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer $Projectname-Hubs (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird)."
-
-#: ../../Zotlabs/Module/Setup.php:651
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen."
-
-#: ../../Zotlabs/Module/Setup.php:652
-msgid ""
-"Providers are available that issue free certificates which are browser-"
-"valid."
-msgstr "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind."
-
-#: ../../Zotlabs/Module/Setup.php:654
-msgid ""
-"If you are confident that the certificate is valid and signed by a trusted "
-"authority, check to see if you have failed to install an intermediate cert. "
-"These are not normally required by browsers, but are required for server-to-"
-"server communications."
-msgstr "Wenn Du sicher bist, dass das Zertifikat gültig und von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, prüfe auf ggf. noch zu installierende Zwischenzertifikate (intermediate). Diese werden nicht unbedingt von Browsern benötigt, aber sehr wohl für die Kommunikation zwischen Servern."
-
-#: ../../Zotlabs/Module/Setup.php:656
-msgid "SSL certificate validation"
-msgstr "SSL Zertifikatverifizierung"
-
-#: ../../Zotlabs/Module/Setup.php:662
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server "
-"configuration.Test: "
-msgstr "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:"
-
-#: ../../Zotlabs/Module/Setup.php:665
-msgid "Url rewrite is working"
-msgstr "Url rewrite funktioniert"
-
-#: ../../Zotlabs/Module/Setup.php:679
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen."
-
-#: ../../Zotlabs/Module/Setup.php:703
-#: ../../addon/rendezvous/rendezvous.php:401
-msgid "Errors encountered creating database tables."
-msgstr "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten."
-
-#: ../../Zotlabs/Module/Setup.php:743
-msgid "<h1>What next?</h1>"
-msgstr "<h1>Wie geht es jetzt weiter?</h1>"
-
-#: ../../Zotlabs/Module/Setup.php:744
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten."
-
-#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
-msgid "Continue"
-msgstr "Fortfahren"
-
-#: ../../Zotlabs/Module/Connect.php:90
-msgid "Premium Channel Setup"
-msgstr "Premium-Kanal-Einrichtung"
-
-#: ../../Zotlabs/Module/Connect.php:92
-msgid "Enable premium channel connection restrictions"
-msgstr "Einschränkungen für einen Premium-Kanal aktivieren"
-
-#: ../../Zotlabs/Module/Connect.php:93
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc."
-
-#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig."
-
-#: ../../Zotlabs/Module/Connect.php:96
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:"
-
-#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite."
-
-#: ../../Zotlabs/Module/Connect.php:106
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"
-
-#: ../../Zotlabs/Module/Connect.php:114
-msgid "Restricted or Premium Channel"
-msgstr "Eingeschränkter oder Premium-Kanal"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:35
-msgid "Queue Statistics"
-msgstr "Warteschlangenstatistiken"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:36
-msgid "Total Entries"
-msgstr "Einträge insgesamt"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:37
-msgid "Priority"
-msgstr "Priorität"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:38
-msgid "Destination URL"
-msgstr "Ziel-URL"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:39
-msgid "Mark hub permanently offline"
-msgstr "Hub als permanent offline markieren"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:40
-msgid "Empty queue for this hub"
-msgstr "Warteschlange für diesen Hub leeren"
-
-#: ../../Zotlabs/Module/Admin/Queue.php:41
-msgid "Last known contact"
-msgstr "Letzter Kontakt"
-
-#: ../../Zotlabs/Module/Admin/Features.php:55
-#: ../../Zotlabs/Module/Admin/Features.php:56
-#: ../../Zotlabs/Module/Settings/Features.php:38
-msgid "Off"
-msgstr "Aus"
-
-#: ../../Zotlabs/Module/Admin/Features.php:55
-#: ../../Zotlabs/Module/Admin/Features.php:56
-#: ../../Zotlabs/Module/Settings/Features.php:38
-msgid "On"
-msgstr "An"
-
-#: ../../Zotlabs/Module/Admin/Features.php:56
-#, php-format
-msgid "Lock feature %s"
-msgstr "Blockiere die Funktion %s"
-
-#: ../../Zotlabs/Module/Admin/Features.php:64
-msgid "Manage Additional Features"
-msgstr "Zusätzliche Funktionen verwalten"
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:19
-msgid "Update has been marked successful"
-msgstr "Update wurde als erfolgreich markiert"
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:29
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle."
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:32
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Update %s wurde erfolgreich ausgeführt."
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:36
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt."
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:39
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Update-Funktion %s konnte nicht gefunden werden."
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:55
-msgid "No failed updates."
-msgstr "Keine fehlgeschlagenen Aktualisierungen."
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:59
-msgid "Failed Updates"
-msgstr "Fehlgeschlagene Aktualisierungen"
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:61
-msgid "Mark success (if update was manually applied)"
-msgstr "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)"
-
-#: ../../Zotlabs/Module/Admin/Dbsync.php:62
-msgid "Attempt to execute this update step automatically"
-msgstr "Versuche, diesen Updateschritt automatisch auszuführen"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:259
-#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:46
-#: ../../Zotlabs/Module/Display.php:408
-#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Admin.php:62
-#: ../../include/items.php:3546
-msgid "Item not found."
-msgstr "Element nicht gefunden."
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:289
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plug-In %s deaktiviert."
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:294
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plug-In %s aktiviert."
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:310
-#: ../../Zotlabs/Module/Admin/Themes.php:95
-msgid "Disable"
-msgstr "Deaktivieren"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:313
-#: ../../Zotlabs/Module/Admin/Themes.php:97
-msgid "Enable"
-msgstr "Aktivieren"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:341
-#: ../../Zotlabs/Module/Admin/Plugins.php:436
-#: ../../Zotlabs/Module/Admin/Accounts.php:164
-#: ../../Zotlabs/Module/Admin/Logs.php:82
-#: ../../Zotlabs/Module/Admin/Channels.php:145
-#: ../../Zotlabs/Module/Admin/Themes.php:122
-#: ../../Zotlabs/Module/Admin/Themes.php:156
-#: ../../Zotlabs/Module/Admin/Site.php:275
-#: ../../Zotlabs/Module/Admin/Security.php:86
-#: ../../Zotlabs/Module/Admin.php:136
-msgid "Administration"
-msgstr "Administration"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:342
-#: ../../Zotlabs/Module/Admin/Plugins.php:437
-#: ../../Zotlabs/Widget/Admin.php:27
-msgid "Plugins"
-msgstr "Plug-Ins"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:343
-#: ../../Zotlabs/Module/Admin/Themes.php:124
-msgid "Toggle"
-msgstr "Umschalten"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:344
-#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:236
-#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:139
-#: ../../include/nav.php:224
-msgid "Settings"
-msgstr "Einstellungen"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:351
-#: ../../Zotlabs/Module/Admin/Themes.php:134
-msgid "Author: "
-msgstr "Autor: "
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:352
-#: ../../Zotlabs/Module/Admin/Themes.php:135
-msgid "Maintainer: "
-msgstr "Betreuer:"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:353
-msgid "Minimum project version: "
-msgstr "Minimale Version des Projekts:"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:354
-msgid "Maximum project version: "
-msgstr "Maximale Version des Projekts:"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:355
-msgid "Minimum PHP version: "
-msgstr "Minimale PHP Version:"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:356
-msgid "Compatible Server Roles: "
-msgstr "Kompatible Serverrollen: "
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:357
-msgid "Requires: "
-msgstr "Benötigt:"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:358
-#: ../../Zotlabs/Module/Admin/Plugins.php:442
-msgid "Disabled - version incompatibility"
-msgstr "Abgeschaltet - Versionsinkompatibilität"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:411
-msgid "Enter the public git repository URL of the plugin repo."
-msgstr "Gib die öffentliche Git-Repository-URL des Plugin-Repository an."
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:412
-msgid "Plugin repo git URL"
-msgstr "Plugin-Repository Git URL"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:413
-msgid "Custom repo name"
-msgstr "Benutzerdefinierter Repository-Name"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:413
-msgid "(optional)"
-msgstr "(optional)"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:414
-msgid "Download Plugin Repo"
-msgstr "Plugin-Repository herunterladen"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:421
-msgid "Install new repo"
-msgstr "Neues Repository installieren"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:383
-msgid "Install"
-msgstr "Installieren"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:445
-msgid "Manage Repos"
-msgstr "Repositorien verwalten"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:446
-msgid "Installed Plugin Repositories"
-msgstr "Installierte Plugin-Repositorien"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:447
-msgid "Install a New Plugin Repository"
-msgstr "Ein neues Plugin-Repository installieren"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:454
-msgid "Switch branch"
-msgstr "Zweig/Branch wechseln"
-
-#: ../../Zotlabs/Module/Admin/Plugins.php:455
-#: ../../Zotlabs/Module/Photos.php:1020 ../../Zotlabs/Module/Tagrm.php:137
-#: ../../addon/superblock/superblock.php:116
-msgid "Remove"
-msgstr "Entfernen"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:36
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] "%s Konto blockiert/freigegeben"
-msgstr[1] "%s Konten blockiert/freigegeben"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:43
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] "%s Konto gelöscht"
-msgstr[1] "%s Konten gelöscht"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:79
-msgid "Account not found"
-msgstr "Konto nicht gefunden"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2456
-#, php-format
-msgid "Account '%s' deleted"
-msgstr "Konto '%s' gelöscht"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:98
-#, php-format
-msgid "Account '%s' blocked"
-msgstr "Konto '%s' blockiert"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:106
-#, php-format
-msgid "Account '%s' unblocked"
-msgstr "Konto '%s' freigegeben"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:165
-#: ../../Zotlabs/Module/Admin/Accounts.php:178
-#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23
-msgid "Accounts"
-msgstr "Konten"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:167
-#: ../../Zotlabs/Module/Admin/Channels.php:148
-msgid "select all"
-msgstr "Alle auswählen"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:168
-msgid "Registrations waiting for confirm"
-msgstr "Registrierungen warten auf Bestätigung"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
-msgid "Request date"
-msgstr "Antragsdatum"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:170
-msgid "No registrations."
-msgstr "Keine Registrierungen."
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:171
-#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:732
-msgid "Approve"
-msgstr "Genehmigen"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:172
-msgid "Deny"
-msgstr "Verweigern"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:174
-#: ../../Zotlabs/Module/Connedit.php:622
-msgid "Block"
-msgstr "Blockieren"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:175
-#: ../../Zotlabs/Module/Connedit.php:622
-msgid "Unblock"
-msgstr "Freigeben"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:180
-msgid "ID"
-msgstr "ID"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:284
-msgid "All Channels"
-msgstr "Alle Kanäle"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:183
-msgid "Register date"
-msgstr "Registrierungs-Datum"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:184
-msgid "Last login"
-msgstr "Letzte Anmeldung"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:185
-msgid "Expires"
-msgstr "Verfällt"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:186
-msgid "Service Class"
-msgstr "Service-Klasse"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:188
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
-" on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?"
-
-#: ../../Zotlabs/Module/Admin/Accounts.php:189
-msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?"
-
-#: ../../Zotlabs/Module/Admin/Logs.php:28
-msgid "Log settings updated."
-msgstr "Protokoll-Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48
-#: ../../Zotlabs/Widget/Admin.php:58
-msgid "Logs"
-msgstr "Protokolle"
-
-#: ../../Zotlabs/Module/Admin/Logs.php:85
-msgid "Clear"
-msgstr "Leeren"
-
-#: ../../Zotlabs/Module/Admin/Logs.php:91
-msgid "Debugging"
-msgstr "Debugging"
-
-#: ../../Zotlabs/Module/Admin/Logs.php:92
-msgid "Log file"
-msgstr "Protokolldatei"
-
-#: ../../Zotlabs/Module/Admin/Logs.php:92
-msgid ""
-"Must be writable by web server. Relative to your top-level webserver "
-"directory."
-msgstr "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis."
-
-#: ../../Zotlabs/Module/Admin/Logs.php:93
-msgid "Log level"
-msgstr "Protokollstufe"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:31
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] "%s Kanal gesperrt/freigegeben"
-msgstr[1] "%s Kanäle gesperrt/freigegeben"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:40
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] "Code für %s Kanal gesperrt/freigegeben"
-msgstr[1] "Code für %s Kanäle gesperrt/freigegeben"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:46
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s Kanal gelöscht"
-msgstr[1] "%s Kanäle gelöscht"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:65
-msgid "Channel not found"
-msgstr "Kanal nicht gefunden"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:75
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Kanal '%s' gelöscht"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:87
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Kanal '%s' gesperrt"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:87
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Kanal '%s' freigegeben"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:98
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr "Code für Kanal '%s' freigegeben"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:98
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr "Code für Kanal '%s' gesperrt"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:146
-#: ../../Zotlabs/Module/Admin.php:110 ../../Zotlabs/Widget/Admin.php:24
-msgid "Channels"
-msgstr "Kanäle"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:150
-msgid "Censor"
-msgstr "Sperren"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:151
-msgid "Uncensor"
-msgstr "Freigeben"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:152
-msgid "Allow Code"
-msgstr "Code erlauben"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:153
-msgid "Disallow Code"
-msgstr "Code sperren"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:154
-#: ../../include/conversation.php:1808 ../../include/nav.php:410
-msgid "Channel"
-msgstr "Kanal"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:158
-msgid "UID"
-msgstr "UID"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:162
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?"
-
-#: ../../Zotlabs/Module/Admin/Channels.php:163
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?"
-
-#: ../../Zotlabs/Module/Admin/Themes.php:26
-msgid "Theme settings updated."
-msgstr "Design-Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin/Themes.php:61
-msgid "No themes found."
-msgstr "Keine Designs gefunden."
-
-#: ../../Zotlabs/Module/Admin/Themes.php:116
-msgid "Screenshot"
-msgstr "Bildschirmfoto"
-
-#: ../../Zotlabs/Module/Admin/Themes.php:123
-#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28
-msgid "Themes"
-msgstr "Designs"
-
-#: ../../Zotlabs/Module/Admin/Themes.php:162
-msgid "[Experimental]"
-msgstr "[Experimentell]"
-
-#: ../../Zotlabs/Module/Admin/Themes.php:163
-msgid "[Unsupported]"
-msgstr "[Nicht unterstützt]"
-
-#: ../../Zotlabs/Module/Admin/Site.php:147
-msgid "Site settings updated."
-msgstr "Site-Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin/Site.php:173
-#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2968
-msgid "Default"
-msgstr "Standard"
-
-#: ../../Zotlabs/Module/Admin/Site.php:184
-#: ../../Zotlabs/Module/Settings/Display.php:139
-#, php-format
-msgid "%s - (Incompatible)"
-msgstr "%s - (Inkompatibel)"
-
-#: ../../Zotlabs/Module/Admin/Site.php:191
-#: ../../Zotlabs/Module/Settings/Display.php:153
-msgid "mobile"
-msgstr "mobil"
-
-#: ../../Zotlabs/Module/Admin/Site.php:193
-msgid "experimental"
-msgstr "experimentell"
-
-#: ../../Zotlabs/Module/Admin/Site.php:195
-msgid "unsupported"
-msgstr "nicht unterstützt"
-
-#: ../../Zotlabs/Module/Admin/Site.php:241
-msgid "Yes - with approval"
-msgstr "Ja - mit Zustimmung"
-
-#: ../../Zotlabs/Module/Admin/Site.php:247
-msgid "My site is not a public server"
-msgstr "Mein Server ist kein öffentlicher Server"
-
-#: ../../Zotlabs/Module/Admin/Site.php:248
-msgid "My site has paid access only"
-msgstr "Meine Seite hat nur bezahlten Zugriff"
-
-#: ../../Zotlabs/Module/Admin/Site.php:249
-msgid "My site has free access only"
-msgstr "Meine Seite hat nur freien Zugriff"
-
-#: ../../Zotlabs/Module/Admin/Site.php:250
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades"
-
-#: ../../Zotlabs/Module/Admin/Site.php:262
-msgid "Beginner/Basic"
-msgstr "Anfänger/Basis"
-
-#: ../../Zotlabs/Module/Admin/Site.php:263
-msgid "Novice - not skilled but willing to learn"
-msgstr "Anfänger - unerfahren, aber bereit zu lernen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:264
-msgid "Intermediate - somewhat comfortable"
-msgstr "Fortgeschritten - relativ komfortabel"
-
-#: ../../Zotlabs/Module/Admin/Site.php:265
-msgid "Advanced - very comfortable"
-msgstr "Fortgeschritten - sehr komfortabel"
-
-#: ../../Zotlabs/Module/Admin/Site.php:266
-msgid "Expert - I can write computer code"
-msgstr "Experte - Ich kann Computercode schreiben"
-
-#: ../../Zotlabs/Module/Admin/Site.php:267
-msgid "Wizard - I probably know more than you do"
-msgstr "Zauberer - ich kann wahrscheinlich mehr als Du"
-
-#: ../../Zotlabs/Module/Admin/Site.php:276 ../../Zotlabs/Widget/Admin.php:22
-msgid "Site"
-msgstr "Seite"
-
-#: ../../Zotlabs/Module/Admin/Site.php:278
-#: ../../Zotlabs/Module/Register.php:263
-msgid "Registration"
-msgstr "Registrierung"
-
-#: ../../Zotlabs/Module/Admin/Site.php:279
-msgid "File upload"
-msgstr "Dateiupload"
-
-#: ../../Zotlabs/Module/Admin/Site.php:280
-msgid "Policies"
-msgstr "Richtlinien"
-
-#: ../../Zotlabs/Module/Admin/Site.php:281
-#: ../../include/contact_widgets.php:16
-msgid "Advanced"
-msgstr "Fortgeschritten"
-
-#: ../../Zotlabs/Module/Admin/Site.php:285
-#: ../../addon/statusnet/statusnet.php:891
-msgid "Site name"
-msgstr "Seitenname"
-
-#: ../../Zotlabs/Module/Admin/Site.php:287
-msgid "Site default technical skill level"
-msgstr "Standard-Qualifikationsstufe der Website"
-
-#: ../../Zotlabs/Module/Admin/Site.php:287
-msgid "Used to provide a member experience matched to technical comfort level"
-msgstr "Dies wird verwendet, um eine Benutzererfahrung passend zur technischen Qualifikationsstufe zu bieten."
-
-#: ../../Zotlabs/Module/Admin/Site.php:289
-msgid "Lock the technical skill level setting"
-msgstr "Sperre die technische Qualifikationsstufe"
-
-#: ../../Zotlabs/Module/Admin/Site.php:289
-msgid "Members can set their own technical comfort level by default"
-msgstr "Benutzer können standardmäßig ihre eigene technische Qualifikationsstufe einstellen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:291
-msgid "Banner/Logo"
-msgstr "Banner/Logo"
-
-#: ../../Zotlabs/Module/Admin/Site.php:292
-msgid "Administrator Information"
-msgstr "Administrator-Informationen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:292
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:293
-#: ../../Zotlabs/Module/Siteinfo.php:22
-msgid "Site Information"
-msgstr "Seiteninformationen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:293
-msgid ""
-"Publicly visible description of this site. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:294
-msgid "System language"
-msgstr "System-Sprache"
-
-#: ../../Zotlabs/Module/Admin/Site.php:295
-msgid "System theme"
-msgstr "System-Design"
-
-#: ../../Zotlabs/Module/Admin/Site.php:295
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Standard-System-Design – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Design-Einstellungen ändern</a>"
-
-#: ../../Zotlabs/Module/Admin/Site.php:296
-msgid "Mobile system theme"
-msgstr "System-Design für mobile Geräte:"
-
-#: ../../Zotlabs/Module/Admin/Site.php:296
-msgid "Theme for mobile devices"
-msgstr "Theme für mobile Geräte"
-
-#: ../../Zotlabs/Module/Admin/Site.php:298
-msgid "Allow Feeds as Connections"
-msgstr "Feeds als Verbindungen erlauben"
-
-#: ../../Zotlabs/Module/Admin/Site.php:298
-msgid "(Heavy system resource usage)"
-msgstr "(führt zu hoher Systemlast)"
-
-#: ../../Zotlabs/Module/Admin/Site.php:299
-msgid "Maximum image size"
-msgstr "Maximale Bildgröße"
-
-#: ../../Zotlabs/Module/Admin/Site.php:299
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)."
-
-#: ../../Zotlabs/Module/Admin/Site.php:300
-msgid "Does this site allow new member registration?"
-msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?"
-
-#: ../../Zotlabs/Module/Admin/Site.php:301
-msgid "Invitation only"
-msgstr "Nur mit Einladung"
-
-#: ../../Zotlabs/Module/Admin/Site.php:301
-msgid ""
-"Only allow new member registrations with an invitation code. Above register "
-"policy must be set to Yes."
-msgstr "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:302
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?"
-
-#: ../../Zotlabs/Module/Admin/Site.php:303
-msgid "Register text"
-msgstr "Registrierungstext"
-
-#: ../../Zotlabs/Module/Admin/Site.php:303
-msgid "Will be displayed prominently on the registration page."
-msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
-
-#: ../../Zotlabs/Module/Admin/Site.php:304
-msgid "Site homepage to show visitors (default: login box)"
-msgstr "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)"
-
-#: ../../Zotlabs/Module/Admin/Site.php:304
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen."
-
-#: ../../Zotlabs/Module/Admin/Site.php:305
-msgid "Preserve site homepage URL"
-msgstr "Homepage-URL schützen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:305
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten."
-
-#: ../../Zotlabs/Module/Admin/Site.php:306
-msgid "Accounts abandoned after x days"
-msgstr "Konten gelten nach X Tagen als unbenutzt"
-
-#: ../../Zotlabs/Module/Admin/Site.php:306
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit."
-
-#: ../../Zotlabs/Module/Admin/Site.php:307
-msgid "Allowed friend domains"
-msgstr "Erlaubte Domains für Kontakte"
-
-#: ../../Zotlabs/Module/Admin/Site.php:307
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-
-#: ../../Zotlabs/Module/Admin/Site.php:308
-msgid "Verify Email Addresses"
-msgstr "E-Mail-Adressen überprüfen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:308
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)."
-
-#: ../../Zotlabs/Module/Admin/Site.php:309
-msgid "Force publish"
-msgstr "Veröffentlichung erzwingen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:309
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen."
-
-#: ../../Zotlabs/Module/Admin/Site.php:310
-msgid "Import Public Streams"
-msgstr "Öffentliche Beiträge importieren"
-
-#: ../../Zotlabs/Module/Admin/Site.php:310
-msgid ""
-"Import and allow access to public content pulled from other sites. Warning: "
-"this content is unmoderated."
-msgstr "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert."
-
-#: ../../Zotlabs/Module/Admin/Site.php:311
-msgid "Login on Homepage"
-msgstr "Log-in auf der Startseite"
-
-#: ../../Zotlabs/Module/Admin/Site.php:311
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:312
-msgid "Enable context help"
-msgstr "Kontext-Hilfe aktivieren"
-
-#: ../../Zotlabs/Module/Admin/Site.php:312
-msgid ""
-"Display contextual help for the current page when the help button is "
-"pressed."
-msgstr "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird."
-
-#: ../../Zotlabs/Module/Admin/Site.php:314
-msgid "Reply-to email address for system generated email."
-msgstr "Antwortadresse (reply-to) für Emails, die vom System generiert wurden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:315
-msgid "Sender (From) email address for system generated email."
-msgstr "Absenderadresse (from) für Emails, die vom System generiert wurden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:316
-msgid "Name of email sender for system generated email."
-msgstr "Name des Versenders von Emails, die vom System generiert wurden."
-
-#: ../../Zotlabs/Module/Admin/Site.php:318
-msgid "Directory Server URL"
-msgstr "Verzeichnisserver-URL"
-
-#: ../../Zotlabs/Module/Admin/Site.php:318
-msgid "Default directory server"
-msgstr "Standard-Verzeichnisserver"
-
-#: ../../Zotlabs/Module/Admin/Site.php:320
-msgid "Proxy user"
-msgstr "Proxy Benutzer"
-
-#: ../../Zotlabs/Module/Admin/Site.php:321
-msgid "Proxy URL"
-msgstr "Proxy URL"
-
-#: ../../Zotlabs/Module/Admin/Site.php:322
-msgid "Network timeout"
-msgstr "Netzwerk-Timeout"
-
-#: ../../Zotlabs/Module/Admin/Site.php:322
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)."
-
-#: ../../Zotlabs/Module/Admin/Site.php:323
-msgid "Delivery interval"
-msgstr "Auslieferung Intervall"
-
-#: ../../Zotlabs/Module/Admin/Site.php:323
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
-
-#: ../../Zotlabs/Module/Admin/Site.php:324
-msgid "Deliveries per process"
-msgstr "Zustellungen pro Prozess"
-
-#: ../../Zotlabs/Module/Admin/Site.php:324
-msgid ""
-"Number of deliveries to attempt in a single operating system process. Adjust"
-" if necessary to tune system performance. Recommend: 1-5."
-msgstr "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5."
-
-#: ../../Zotlabs/Module/Admin/Site.php:325
-msgid "Queue Threshold"
-msgstr "Warteschlangen-Grenzwert"
-
-#: ../../Zotlabs/Module/Admin/Site.php:325
-msgid ""
-"Always defer immediate delivery if queue contains more than this number of "
-"entries."
-msgstr "Unmittelbare Zustellung immer verzögern, wenn die Warteschlange mehr als diese Anzahl von Einträgen enthält."
-
-#: ../../Zotlabs/Module/Admin/Site.php:326
-msgid "Poll interval"
-msgstr "Abfrageintervall"
-
-#: ../../Zotlabs/Module/Admin/Site.php:326
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet."
-
-#: ../../Zotlabs/Module/Admin/Site.php:327
-msgid "Path to ImageMagick convert program"
-msgstr "Pfad zum ImageMagick-Programm convert"
-
-#: ../../Zotlabs/Module/Admin/Site.php:327
-msgid ""
-"If set, use this program to generate photo thumbnails for huge images ( > "
-"4000 pixels in either dimension), otherwise memory exhaustion may occur. "
-"Example: /usr/bin/convert"
-msgstr "Wenn gesetzt, dann verwende dieses Programm zum Erzeugen von Vorschaubildern großer Fotos (>4000 Pixel in beiden Richtungen), anderenfalls kann Speicherüberlauf auftreten. Beispiel: /usr/bin/convert"
-
-#: ../../Zotlabs/Module/Admin/Site.php:328
-msgid "Allow SVG thumbnails in file browser"
-msgstr "Erlaube SVG-Vorschaubilder im Dateibrowser"
-
-#: ../../Zotlabs/Module/Admin/Site.php:328
-msgid "WARNING: SVG images may contain malicious code."
-msgstr "Warnung: SVG-Grafiken können Schadcode enthalten."
-
-#: ../../Zotlabs/Module/Admin/Site.php:329
-msgid "Maximum Load Average"
-msgstr "Maximales Load Average"
-
-#: ../../Zotlabs/Module/Admin/Site.php:329
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"
-
-#: ../../Zotlabs/Module/Admin/Site.php:330
-msgid "Expiration period in days for imported (grid/network) content"
-msgstr "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen"
-
-#: ../../Zotlabs/Module/Admin/Site.php:330
-msgid "0 for no expiration of imported content"
-msgstr "0 = keine Löschung importierter Inhalte"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:69
-msgid "New Profile Field"
-msgstr "Neues Profilfeld"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:70
-#: ../../Zotlabs/Module/Admin/Profs.php:90
-msgid "Field nickname"
-msgstr "Kurzname für das Feld"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:70
-#: ../../Zotlabs/Module/Admin/Profs.php:90
-msgid "System name of field"
-msgstr "Systemname des Feldes"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:71
-#: ../../Zotlabs/Module/Admin/Profs.php:91
-msgid "Input type"
-msgstr "Art des Inhalts"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:72
-#: ../../Zotlabs/Module/Admin/Profs.php:92
-msgid "Field Name"
-msgstr "Feldname"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:72
-#: ../../Zotlabs/Module/Admin/Profs.php:92
-msgid "Label on profile pages"
-msgstr "Bezeichnung auf Profilseiten"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:73
-#: ../../Zotlabs/Module/Admin/Profs.php:93
-msgid "Help text"
-msgstr "Hilfetext"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:73
-#: ../../Zotlabs/Module/Admin/Profs.php:93
-msgid "Additional info (optional)"
-msgstr "Zusätzliche Informationen (optional)"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:74
-#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
-#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1030
-#: ../../include/text.php:1042
-msgid "Save"
-msgstr "Speichern"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:83
-msgid "Field definition not found"
-msgstr "Feld-Definition nicht gefunden"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:89
-msgid "Edit Profile Field"
-msgstr "Profilfeld bearbeiten"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../Zotlabs/Widget/Admin.php:30
-msgid "Profile Fields"
-msgstr "Profil Felder"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:148
-msgid "Basic Profile Fields"
-msgstr "Notwendige Profil Felder"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:149
-msgid "Advanced Profile Fields"
-msgstr "Erweiterte Profil Felder"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:149
-msgid "(In addition to basic fields)"
-msgstr "(zusätzlich zu notwendige Felder)"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:151
-msgid "All available fields"
-msgstr "Alle verfügbaren Felder"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:152
-msgid "Custom Fields"
-msgstr "Benutzerdefinierte Felder"
-
-#: ../../Zotlabs/Module/Admin/Profs.php:156
-msgid "Create Custom Field"
-msgstr "Erstelle benutzerdefiniertes Feld"
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:29
-#, php-format
-msgid "Password changed for account %d."
-msgstr "Passwort für Konto %d geändert."
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:46
-msgid "Account settings updated."
-msgstr "Kontoeinstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:61
-msgid "Account not found."
-msgstr "Konto nicht gefunden."
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:68
-msgid "Account Edit"
-msgstr "Kontobearbeitung"
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:69
-msgid "New Password"
-msgstr "Neues Passwort"
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:70
-msgid "New Password again"
-msgstr "Neues Passwort wiederholen"
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:71
-msgid "Technical skill level"
-msgstr "Technische Qualifikationsstufe"
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:72
-msgid "Account language (for emails)"
-msgstr "Kontosprache (für E-Mails)"
-
-#: ../../Zotlabs/Module/Admin/Account_edit.php:73
-msgid "Service class"
-msgstr "Dienstklasse"
-
-#: ../../Zotlabs/Module/Admin/Security.php:77
-msgid ""
-"By default, unfiltered HTML is allowed in embedded media. This is inherently"
-" insecure."
-msgstr "Standardmäßig wird ungefiltertes HTML in eingebetteten Inhalten zugelassen. Das ist prinzipiell unsicher."
-
-#: ../../Zotlabs/Module/Admin/Security.php:80
-msgid ""
-"The recommended setting is to only allow unfiltered HTML from the following "
-"sites:"
-msgstr "Die empfohlene Einstellung ist, ungefiltertes HTML nur von den nachfolgenden Webseiten zu erlauben:"
-
-#: ../../Zotlabs/Module/Admin/Security.php:81
-msgid ""
-"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
-" />https://vimeo.com/<br />https://soundcloud.com/<br />"
-msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
-
-#: ../../Zotlabs/Module/Admin/Security.php:82
-msgid ""
-"All other embedded content will be filtered, <strong>unless</strong> "
-"embedded content from that site is explicitly blocked."
-msgstr "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert."
-
-#: ../../Zotlabs/Module/Admin/Security.php:87
-#: ../../Zotlabs/Widget/Admin.php:25
-msgid "Security"
-msgstr "Sicherheit"
-
-#: ../../Zotlabs/Module/Admin/Security.php:89
-msgid "Block public"
-msgstr "Öffentlichen Zugriff blockieren"
-
-#: ../../Zotlabs/Module/Admin/Security.php:89
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently authenticated."
-msgstr "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist."
-
-#: ../../Zotlabs/Module/Admin/Security.php:90
-msgid "Set \"Transport Security\" HTTP header"
-msgstr "Setze den \"Transport Security\" HTTP Header"
-
-#: ../../Zotlabs/Module/Admin/Security.php:91
-msgid "Set \"Content Security Policy\" HTTP header"
-msgstr "Setze den \"Content Security Policy\" HTTP Header"
-
-#: ../../Zotlabs/Module/Admin/Security.php:92
-msgid "Allowed email domains"
-msgstr "Erlaubte Domains für E-Mails"
-
-#: ../../Zotlabs/Module/Admin/Security.php:92
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-
-#: ../../Zotlabs/Module/Admin/Security.php:93
-msgid "Not allowed email domains"
-msgstr "Nicht erlaubte Domains für E-Mails"
-
-#: ../../Zotlabs/Module/Admin/Security.php:93
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for"
-" registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde."
-
-#: ../../Zotlabs/Module/Admin/Security.php:94
-msgid "Allow communications only from these sites"
-msgstr "Kommunikation nur von diesen Servern/Domains erlauben"
-
-#: ../../Zotlabs/Module/Admin/Security.php:94
-msgid ""
-"One site per line. Leave empty to allow communication from anywhere by "
-"default"
-msgstr "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben."
-
-#: ../../Zotlabs/Module/Admin/Security.php:95
-msgid "Block communications from these sites"
-msgstr "Kommunikation von diesen Servern/Domains blockieren"
-
-#: ../../Zotlabs/Module/Admin/Security.php:96
-msgid "Allow communications only from these channels"
-msgstr "Kommunikation nur von diesen Kanälen erlauben"
-
-#: ../../Zotlabs/Module/Admin/Security.php:96
-msgid ""
-"One channel (hash) per line. Leave empty to allow from any channel by "
-"default"
-msgstr "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. "
-
-#: ../../Zotlabs/Module/Admin/Security.php:97
-msgid "Block communications from these channels"
-msgstr "Kommunikation von folgenden Kanälen blockieren"
-
-#: ../../Zotlabs/Module/Admin/Security.php:98
-msgid "Only allow embeds from secure (SSL) websites and links."
-msgstr "Erlaube Einbettungen nur von sicheren (SSL) Webseiten und Links."
-
-#: ../../Zotlabs/Module/Admin/Security.php:99
-msgid "Allow unfiltered embedded HTML content only from these domains"
-msgstr "Erlaube Einbettung von Inhalten mit ungefiltertem HTML nur von diesen Domains"
-
-#: ../../Zotlabs/Module/Admin/Security.php:99
-msgid "One site per line. By default embedded content is filtered."
-msgstr "Eine Website/Domain pro Zeile. Standardmäßig wird eingebetteter Inhalt gefiltert."
-
-#: ../../Zotlabs/Module/Admin/Security.php:100
-msgid "Block embedded HTML from these domains"
-msgstr "Eingebettete HTML Inhalte von diesen Servern/Domains blockieren"
-
-#: ../../Zotlabs/Module/Lockview.php:75
-msgid "Remote privacy information not available."
-msgstr "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar."
-
-#: ../../Zotlabs/Module/Lockview.php:96
-msgid "Visible to:"
-msgstr "Sichtbar für:"
-
-#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
-#: ../../Zotlabs/Module/Acl.php:118 ../../include/acl_selectors.php:183
-msgctxt "acl"
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../Zotlabs/Module/Moderate.php:55
-msgid "Comment approved"
-msgstr "Kommentar bestätigt"
-
-#: ../../Zotlabs/Module/Moderate.php:59
-msgid "Comment deleted"
-msgstr "Kommentar gelöscht"
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:37
-msgid "Permission category saved."
-msgstr "Berechtigungsrolle gespeichert."
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:61
-msgid ""
-"Use this form to create permission rules for various classes of people or "
-"connections."
-msgstr "Verwende dieses Formular, um Berechtigungsrollen für verschiedene Gruppen von Personen oder Verbindungen zu erstellen."
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:94
-msgid "Permission Categories"
-msgstr "Berechtigungsrollen"
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:102
-msgid "Permission Name"
-msgstr "Name der Berechtigungsrolle"
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:103
-#: ../../Zotlabs/Module/Settings/Tokens.php:161
-#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:250
-msgid "My Settings"
-msgstr "Meine Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:105
-#: ../../Zotlabs/Module/Settings/Tokens.php:163
-#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:248
-msgid "inherited"
-msgstr "geerbt"
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:108
-#: ../../Zotlabs/Module/Settings/Tokens.php:166
-#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:253
-msgid "Individual Permissions"
-msgstr "Individuelle Zugriffsrechte"
-
-#: ../../Zotlabs/Module/Settings/Permcats.php:109
-#: ../../Zotlabs/Module/Settings/Tokens.php:167
-#: ../../Zotlabs/Module/Connedit.php:911
-msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can <strong>not</strong> change those"
-" settings here."
-msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:64
-#: ../../Zotlabs/Module/Settings/Channel.php:68
-#: ../../Zotlabs/Module/Settings/Channel.php:69
-#: ../../Zotlabs/Module/Settings/Channel.php:72
-#: ../../Zotlabs/Module/Settings/Channel.php:83
-#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:28
-#: ../../include/selectors.php:123 ../../include/channel.php:437
-#: ../../include/channel.php:438 ../../include/channel.php:445
-msgid "Friends"
-msgstr "Freunde"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:262
-#: ../../Zotlabs/Module/Defperms.php:103
-#: ../../addon/rendezvous/rendezvous.php:82
-#: ../../addon/openstreetmap/openstreetmap.php:184
-#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
-#: ../../addon/twitter/twitter.php:766 ../../addon/piwik/piwik.php:116
-#: ../../addon/xmpp/xmpp.php:102
-msgid "Settings updated."
-msgstr "Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:323
-msgid "Nobody except yourself"
-msgstr "Niemand außer Dir selbst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:324
-msgid "Only those you specifically allow"
-msgstr "Nur die, denen Du es explizit erlaubst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:325
-msgid "Approved connections"
-msgstr "Angenommene Verbindungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:326
-msgid "Any connections"
-msgstr "Beliebige Verbindungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:327
-msgid "Anybody on this website"
-msgstr "Jeder auf dieser Website"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:328
-msgid "Anybody in this network"
-msgstr "Alle $Projectname-Mitglieder"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:329
-msgid "Anybody authenticated"
-msgstr "Jeder authentifizierte"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:330
-msgid "Anybody on the internet"
-msgstr "Jeder im Internet"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:406
-msgid "Publish your default profile in the network directory"
-msgstr "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:411
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:415
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "or"
-msgstr "oder"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:420
-msgid "Your channel address is"
-msgstr "Deine Kanal-Adresse lautet"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:423
-msgid "Your files/photos are accessible via WebDAV at"
-msgstr "Deine Dateien/Fotos sind via WebDAV verfügbar auf"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:487
-msgid "Channel Settings"
-msgstr "Kanal-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:494
-msgid "Basic Settings"
-msgstr "Grundeinstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:495
-#: ../../include/channel.php:1521
-msgid "Full Name:"
-msgstr "Voller Name:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:496
-#: ../../Zotlabs/Module/Settings/Account.php:119
-msgid "Email Address:"
-msgstr "Email Adresse:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:497
-msgid "Your Timezone:"
-msgstr "Ihre Zeitzone:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:498
-msgid "Default Post Location:"
-msgstr "Standardstandort:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:498
-msgid "Geographical location to display on your posts"
-msgstr "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:499
-msgid "Use Browser Location:"
-msgstr "Standort des Browsers verwenden:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:501
-msgid "Adult Content"
-msgstr "Nicht jugendfreie Inhalte"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:501
-msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:503
-msgid "Security and Privacy Settings"
-msgstr "Sicherheits- und Datenschutz-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:505
-msgid "Your permissions are already configured. Click to view/adjust"
-msgstr "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:507
-msgid "Hide my online presence"
-msgstr "Meine Online-Präsenz verbergen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:507
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Verhindert die Anzeige Deines Online-Status in deinem Profil"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:509
-msgid "Simple Privacy Settings:"
-msgstr "Einfache Privatsphäre-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:510
-msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:511
-msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:512
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privat – <em>Standard privat, nie offen oder öffentlich</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:513
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Blockiert – <em>Alle standardmäßig blockiert</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:515
-msgid "Allow others to tag your posts"
-msgstr "Erlaube anderen, Deine Beiträge zu verschlagworten"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:515
-msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
-msgstr "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:517
-msgid "Channel Permission Limits"
-msgstr "Kanal-Berechtigungslimits"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-msgid "Expire other channel content after this many days"
-msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-msgid "0 or blank to use the website limit."
-msgstr "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-#, php-format
-msgid "This website expires after %d days."
-msgstr "Diese Webseite läuft nach %d Tagen ab."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-msgid "This website does not expire imported content."
-msgstr "Diese Webseite lässt importierte Inhalte nicht verfallen."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-msgid "The website limit takes precedence if lower than your limit."
-msgstr "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:520
-msgid "Maximum Friend Requests/Day:"
-msgstr "Maximale Kontaktanfragen pro Tag:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:520
-msgid "May reduce spam activity"
-msgstr "Kann die Spam-Aktivität verringern"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:521
-msgid "Default Privacy Group"
-msgstr "Standard-Gruppe"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:523
-msgid "Use my default audience setting for the type of object published"
-msgstr "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:524
-msgid "Profile to assign new connections"
-msgstr "Profil, welches neuen Verbindungen zugewiesen wird"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:533
-msgid "Channel permissions category:"
-msgstr "Zugriffsrechte-Kategorie des Kanals:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:534
-msgid "Default Permissions Group"
-msgstr "Standard-Berechtigungsgruppe"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:540
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:540
-msgid "Useful to reduce spamming"
-msgstr "Nützlich, um Spam zu verringern"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:543
-msgid "Notification Settings"
-msgstr "Benachrichtigungs-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:544
-msgid "By default post a status message when:"
-msgstr "Sende standardmäßig Status-Nachrichten, wenn:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:545
-msgid "accepting a friend request"
-msgstr "Du eine Verbindungsanfrage annimmst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:546
-msgid "joining a forum/community"
-msgstr "Du einem Forum beitrittst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:547
-msgid "making an <em>interesting</em> profile change"
-msgstr "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:548
-msgid "Send a notification email when:"
-msgstr "Eine E-Mail-Benachrichtigung senden, wenn:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:549
-msgid "You receive a connection request"
-msgstr "Du eine Verbindungsanfrage erhältst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:550
-msgid "Your connections are confirmed"
-msgstr "Eine Verbindung bestätigt wurde"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:551
-msgid "Someone writes on your profile wall"
-msgstr "Jemand auf Deine Pinnwand schreibt"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:552
-msgid "Someone writes a followup comment"
-msgstr "Jemand einen Beitrag kommentiert"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:553
-msgid "You receive a private message"
-msgstr "Du eine private Nachricht erhältst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:554
-msgid "You receive a friend suggestion"
-msgstr "Du einen Kontaktvorschlag erhältst"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:555
-msgid "You are tagged in a post"
-msgstr "Du in einem Beitrag erwähnt wurdest"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:556
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:558
-msgid "Someone likes your post/comment"
-msgstr "Jemand mag Ihren Beitrag/Kommentar"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:561
-msgid "Show visual notifications including:"
-msgstr "Visuelle Benachrichtigungen anzeigen für:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:563
-msgid "Unseen grid activity"
-msgstr "Ungesehene Netzwerk-Aktivität"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:564
-msgid "Unseen channel activity"
-msgstr "Ungesehene Kanal-Aktivität"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:565
-msgid "Unseen private messages"
-msgstr "Ungelesene persönliche Nachrichten"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:565
-#: ../../Zotlabs/Module/Settings/Channel.php:570
-#: ../../Zotlabs/Module/Settings/Channel.php:571
-#: ../../Zotlabs/Module/Settings/Channel.php:572
-#: ../../addon/jappixmini/jappixmini.php:343
-msgid "Recommended"
-msgstr "Empfohlen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:566
-msgid "Upcoming events"
-msgstr "Baldige Termine"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:567
-msgid "Events today"
-msgstr "Heutige Termine"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:568
-msgid "Upcoming birthdays"
-msgstr "Baldige Geburtstage"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:568
-msgid "Not available in all themes"
-msgstr "Nicht in allen Designs verfügbar"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:569
-msgid "System (personal) notifications"
-msgstr "System – (persönliche) Benachrichtigungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:570
-msgid "System info messages"
-msgstr "System – Info-Nachrichten"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:571
-msgid "System critical alerts"
-msgstr "System – kritische Warnungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:572
-msgid "New connections"
-msgstr "Neue Verbindungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:573
-msgid "System Registrations"
-msgstr "System – Registrierungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:574
-msgid "Unseen shared files"
-msgstr "Ungesehene geteilte Dateien"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:575
-msgid "Unseen public activity"
-msgstr "Ungesehene öffentliche Aktivität"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:576
-msgid "Email notification hub (hostname)"
-msgstr "Hub für E-Mail-Benachrichtigungen (Hostname)"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:576
-#, php-format
-msgid ""
-"If your channel is mirrored to multiple hubs, set this to your preferred "
-"location. This will prevent duplicate email notifications. Example: %s"
-msgstr "Wenn Dein Kanal auf mehreren Hubs geklont ist, setze die Einstellung auf deinen bevorzugten Hub. Dies verhindert Mehrfachzustellung von E-Mail-Benachrichtigungen. Beispiel: %s"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:577
-msgid ""
-"Also show new wall posts, private messages and connections under Notices"
-msgstr "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:579
-msgid "Notify me of events this many days in advance"
-msgstr "Benachrichtige mich zu Terminen so viele Tage im Voraus"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:579
-msgid "Must be greater than 0"
-msgstr "Muss größer als 0 sein"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:585
-msgid "Advanced Account/Page Type Settings"
-msgstr "Erweiterte Account- und Seitenart-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:586
-msgid "Change the behaviour of this account for special situations"
-msgstr "Ändere das Verhalten dieses Accounts unter speziellen Umständen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:588
-msgid "Miscellaneous Settings"
-msgstr "Sonstige Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:589
-msgid "Default photo upload folder"
-msgstr "Voreingestellter Ordner für hochgeladene Fotos"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:589
-#: ../../Zotlabs/Module/Settings/Channel.php:590
-msgid "%Y - current year, %m - current month"
-msgstr "%Y - aktuelles Jahr, %m - aktueller Monat"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:590
-msgid "Default file upload folder"
-msgstr "Voreingestellter Ordner für hochgeladene Dateien"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:592
-msgid "Personal menu to display in your channel pages"
-msgstr "Eigenes Menü zur Anzeige auf den Seiten deines Kanals"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:594
-msgid "Remove this channel."
-msgstr "Diesen Kanal löschen"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:595
-msgid "Firefox Share $Projectname provider"
-msgstr "$Projectname-Provider für Firefox Share"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:596
-msgid "Start calendar week on Monday"
-msgstr "Beginne die kalendarische Woche am Montag"
-
-#: ../../Zotlabs/Module/Settings/Features.php:45
-msgid "Additional Features"
-msgstr "Zusätzliche Funktionen"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:31
-#, php-format
-msgid "This channel is limited to %d tokens"
-msgstr "Dieser Kanal ist auf %d Token begrenzt"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:37
-msgid "Name and Password are required."
-msgstr "Name und Passwort sind erforderlich."
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:77
-msgid "Token saved."
-msgstr "Token gespeichert."
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:113
-msgid ""
-"Use this form to create temporary access identifiers to share things with "
-"non-members. These identities may be used in Access Control Lists and "
-"visitors may login using these credentials to access private content."
-msgstr "Mit diesem Formular kannst Du temporäre Zugangs-IDs anlegen, um Inhalte mit Nicht-Mitgliedern zu teilen. Die IDs können in Berechtigungslisten (ACLs) verwendet werden, und Besucher können sich damit einloggen, um auf private Inhalte zuzugreifen."
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:115
-msgid ""
-"You may also provide <em>dropbox</em> style access links to friends and "
-"associates by adding the Login Password to any specific site URL as shown. "
-"Examples:"
-msgstr "Du kannst auch <em>Dropbox</em>-ähnliche Zugriffslinks an Andere weitergeben, indem du das Login-Passwort an eine entsprechende URL anhängst wie nachfolgend gezeigt. Beispiele:"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:150
-#: ../../Zotlabs/Widget/Settings_menu.php:92
-msgid "Guest Access Tokens"
-msgstr "Gastzugangstoken"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:157
-msgid "Login Name"
-msgstr "Anmeldename"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:158
-msgid "Login Password"
-msgstr "Anmeldepasswort"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:159
-msgid "Expires (yyyy-mm-dd)"
-msgstr "Läuft ab (jjjj-mm-tt)"
-
-#: ../../Zotlabs/Module/Settings/Tokens.php:160
-#: ../../Zotlabs/Module/Connedit.php:907
-msgid "Their Settings"
-msgstr "Deren Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Account.php:20
-msgid "Not valid email."
-msgstr "Keine gültige E-Mail Adresse."
-
-#: ../../Zotlabs/Module/Settings/Account.php:23
-msgid "Protected email address. Cannot change to that email."
-msgstr "Geschützte E-Mail Adresse. Diese kann nicht verändert werden."
-
-#: ../../Zotlabs/Module/Settings/Account.php:32
-msgid "System failure storing new email. Please try again."
-msgstr "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal."
-
-#: ../../Zotlabs/Module/Settings/Account.php:40
-msgid "Technical skill level updated"
-msgstr "Technische Qualifikationsstufe aktualisiert"
-
-#: ../../Zotlabs/Module/Settings/Account.php:56
-msgid "Password verification failed."
-msgstr "Passwortüberprüfung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Settings/Account.php:63
-msgid "Passwords do not match. Password unchanged."
-msgstr "Kennwörter stimmen nicht überein. Kennwort nicht verändert."
-
-#: ../../Zotlabs/Module/Settings/Account.php:67
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert."
-
-#: ../../Zotlabs/Module/Settings/Account.php:81
-msgid "Password changed."
-msgstr "Kennwort geändert."
-
-#: ../../Zotlabs/Module/Settings/Account.php:83
-msgid "Password update failed. Please try again."
-msgstr "Kennwortänderung fehlgeschlagen. Bitte versuche es noch einmal."
-
-#: ../../Zotlabs/Module/Settings/Account.php:112
-msgid "Account Settings"
-msgstr "Konto-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Account.php:113
-msgid "Current Password"
-msgstr "Aktuelles Passwort"
-
-#: ../../Zotlabs/Module/Settings/Account.php:114
-msgid "Enter New Password"
-msgstr "Gib ein neues Passwort ein"
-
-#: ../../Zotlabs/Module/Settings/Account.php:115
-msgid "Confirm New Password"
-msgstr "Bestätige das neue Passwort"
-
-#: ../../Zotlabs/Module/Settings/Account.php:115
-msgid "Leave password fields blank unless changing"
-msgstr "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern"
-
-#: ../../Zotlabs/Module/Settings/Account.php:116
-msgid "Your technical skill level"
-msgstr "Deine technische Qualifikationsstufe"
-
-#: ../../Zotlabs/Module/Settings/Account.php:116
-msgid "Used to provide a member experience matched to your comfort level"
-msgstr "Dies wird verwendet, um Dir eine Benutzererfahrung passend zu Deiner technischen Qualifikationsstufe zu bieten."
-
-#: ../../Zotlabs/Module/Settings/Account.php:120
-#: ../../Zotlabs/Module/Removeaccount.php:61
-msgid "Remove Account"
-msgstr "Konto entfernen"
-
-#: ../../Zotlabs/Module/Settings/Account.php:121
-msgid "Remove this account including all its channels"
-msgstr "Dieses Konto inklusive all seiner Kanäle löschen"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:21
-msgid "Affinity Slider settings updated."
-msgstr "Die Beziehungsgrad-Schieberegler-Einstellungen wurden aktualisiert."
-
-#: ../../Zotlabs/Module/Settings/Featured.php:36
-msgid "No feature settings configured"
-msgstr "Keine Funktions-Einstellungen konfiguriert"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:43
-msgid "Default maximum affinity level"
-msgstr "Voreinstellung für maximalen Beziehungsgrad"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:48
-msgid "Default minimum affinity level"
-msgstr "Voreinstellung für minimalen Beziehungsgrad"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:52
-msgid "Affinity Slider Settings"
-msgstr "Beziehungsgrad-Schieberegler-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:62
-msgid "Feature/Addon Settings"
-msgstr "Funktions-/Addon-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:147
-msgid "No special theme for mobile devices"
-msgstr "Kein spezielles Design für mobile Geräte"
-
-#: ../../Zotlabs/Module/Settings/Display.php:150
-#, php-format
-msgid "%s - (Experimental)"
-msgstr "%s – (experimentell)"
-
-#: ../../Zotlabs/Module/Settings/Display.php:204
-msgid "Display Settings"
-msgstr "Anzeige-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:205
-msgid "Theme Settings"
-msgstr "Design-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:206
-msgid "Custom Theme Settings"
-msgstr "Benutzerdefinierte Design-Einstellungen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:207
-msgid "Content Settings"
-msgstr "Inhaltseinstellungen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:213
-msgid "Display Theme:"
-msgstr "Anzeige-Design:"
-
-#: ../../Zotlabs/Module/Settings/Display.php:214
-msgid "Select scheme"
-msgstr "Schema wählen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:216
-msgid "Mobile Theme:"
-msgstr "Design für mobile Geräte:"
-
-#: ../../Zotlabs/Module/Settings/Display.php:217
-msgid "Preload images before rendering the page"
-msgstr "Bilder im voraus laden, bevor die Seite angezeigt wird"
-
-#: ../../Zotlabs/Module/Settings/Display.php:217
-msgid ""
-"The subjective page load time will be longer but the page will be ready when"
-" displayed"
-msgstr "Die empfundene Ladezeit wird sich erhöhen, aber dafür ist das Layout stabil, sobald eine Seite angezeigt wird"
-
-#: ../../Zotlabs/Module/Settings/Display.php:218
-msgid "Enable user zoom on mobile devices"
-msgstr "Zoom auf Mobilgeräten aktivieren"
-
-#: ../../Zotlabs/Module/Settings/Display.php:219
-msgid "Update browser every xx seconds"
-msgstr "Browser alle xx Sekunden aktualisieren"
-
-#: ../../Zotlabs/Module/Settings/Display.php:219
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimum 10 Sekunden, kein Maximum"
-
-#: ../../Zotlabs/Module/Settings/Display.php:220
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:"
-
-#: ../../Zotlabs/Module/Settings/Display.php:220
-msgid "Maximum of 100 items"
-msgstr "Maximum: 100 Beiträge"
-
-#: ../../Zotlabs/Module/Settings/Display.php:221
-msgid "Show emoticons (smilies) as images"
-msgstr "Emoticons (Smilies) als Bilder anzeigen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:222
-msgid "Provide channel menu in navigation bar"
-msgstr "Kanal-Menü in der Navigationsleiste zur Verfügung stellen"
-
-#: ../../Zotlabs/Module/Settings/Display.php:222
-msgid "Default: channel menu located in app menu"
-msgstr "Voreinstellung: Kanal-Menü ist im App-Menü integriert"
-
-#: ../../Zotlabs/Module/Settings/Display.php:223
-msgid "Manual conversation updates"
-msgstr "Manuelle Konversationsaktualisierung"
-
-#: ../../Zotlabs/Module/Settings/Display.php:223
-msgid "Default is on, turning this off may increase screen jumping"
-msgstr "Voreinstellung ist An, dies abzuschalten kann das unerwartete Springen der Seitenanzeige erhöhen."
-
-#: ../../Zotlabs/Module/Settings/Display.php:224
-msgid "Link post titles to source"
-msgstr "Beitragstitel zum Originalbeitrag verlinken"
-
-#: ../../Zotlabs/Module/Settings/Display.php:225
-msgid "System Page Layout Editor - (advanced)"
-msgstr "System-Seitenlayout-Editor (für Experten)"
-
-#: ../../Zotlabs/Module/Settings/Display.php:228
-msgid "Use blog/list mode on channel page"
-msgstr "Blog-/Listenmodus auf der Kanalseite verwenden"
-
-#: ../../Zotlabs/Module/Settings/Display.php:228
-#: ../../Zotlabs/Module/Settings/Display.php:229
-msgid "(comments displayed separately)"
-msgstr "(Kommentare werden separat angezeigt)"
-
-#: ../../Zotlabs/Module/Settings/Display.php:229
-msgid "Use blog/list mode on grid page"
-msgstr "Blog-/Listenmodus auf der Netzwerkseite verwenden"
-
-#: ../../Zotlabs/Module/Settings/Display.php:230
-msgid "Channel page max height of content (in pixels)"
-msgstr "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)"
-
-#: ../../Zotlabs/Module/Settings/Display.php:230
-#: ../../Zotlabs/Module/Settings/Display.php:231
-msgid "click to expand content exceeding this height"
-msgstr "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden."
-
-#: ../../Zotlabs/Module/Settings/Display.php:231
-msgid "Grid page max height of content (in pixels)"
-msgstr "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:34
-msgid "Name is required"
-msgstr "Name ist erforderlich"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:38
-msgid "Key and Secret are required"
-msgstr "Schlüssel und Geheimnis werden benötigt"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:86
-#: ../../Zotlabs/Module/Settings/Oauth.php:112
-#: ../../Zotlabs/Module/Settings/Oauth.php:148
-msgid "Add application"
-msgstr "Anwendung hinzufügen"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:89
-msgid "Name of application"
-msgstr "Name der Anwendung"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:90
-#: ../../Zotlabs/Module/Settings/Oauth.php:116
-#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:775
-msgid "Consumer Key"
-msgstr "Consumer Key"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:90
-#: ../../Zotlabs/Module/Settings/Oauth.php:91
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:91
-#: ../../Zotlabs/Module/Settings/Oauth.php:117
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:776
-msgid "Consumer Secret"
-msgstr "Consumer Secret"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:92
-#: ../../Zotlabs/Module/Settings/Oauth.php:118
-msgid "Redirect"
-msgstr "Umleitung"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:92
-msgid ""
-"Redirect URI - leave blank unless your application specifically requires "
-"this"
-msgstr "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:93
-#: ../../Zotlabs/Module/Settings/Oauth.php:119
-msgid "Icon url"
-msgstr "Symbol-URL"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:93
-#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
-msgid "Optional"
-msgstr "Optional"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:104
-msgid "Application not found."
-msgstr "Die Anwendung wurde nicht gefunden."
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:147
-msgid "Connected Apps"
-msgstr "Verbundene Apps"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:151
-msgid "Client key starts with"
-msgstr "Client Key beginnt mit"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:152
-msgid "No name"
-msgstr "Kein Name"
-
-#: ../../Zotlabs/Module/Settings/Oauth.php:153
-msgid "Remove authorization"
-msgstr "Authorisierung aufheben"
-
-#: ../../Zotlabs/Module/Embedphotos.php:140
-#: ../../Zotlabs/Module/Photos.php:811 ../../Zotlabs/Module/Photos.php:1350
-#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78
-msgid "View Photo"
-msgstr "Foto ansehen"
-
-#: ../../Zotlabs/Module/Embedphotos.php:156
-#: ../../Zotlabs/Module/Photos.php:842 ../../Zotlabs/Widget/Portfolio.php:108
-#: ../../Zotlabs/Widget/Album.php:95
-msgid "Edit Album"
-msgstr "Album bearbeiten"
-
-#: ../../Zotlabs/Module/Embedphotos.php:158
-#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Photos.php:844
-#: ../../Zotlabs/Module/Photos.php:1381
-#: ../../Zotlabs/Module/Profile_photo.php:437
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Storage/Browser.php:274 ../../Zotlabs/Storage/Browser.php:381
-#: ../../Zotlabs/Widget/Cdav.php:133 ../../Zotlabs/Widget/Cdav.php:169
-#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Album.php:97
-msgid "Upload"
-msgstr "Hochladen"
-
-#: ../../Zotlabs/Module/Achievements.php:38
-msgid "Some blurb about what to do when you're new here"
-msgstr "Ein Hinweis, was man tun kann, wenn man neu hier ist"
-
-#: ../../Zotlabs/Module/Thing.php:115
-msgid "Thing updated"
-msgstr "Sache aktualisiert"
-
-#: ../../Zotlabs/Module/Thing.php:167
-msgid "Object store: failed"
-msgstr "Speichern des Objekts fehlgeschlagen"
-
-#: ../../Zotlabs/Module/Thing.php:171
-msgid "Thing added"
-msgstr "Sache hinzugefügt"
-
-#: ../../Zotlabs/Module/Thing.php:197
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
-
-#: ../../Zotlabs/Module/Thing.php:260
-msgid "Show Thing"
-msgstr "Sache anzeigen"
-
-#: ../../Zotlabs/Module/Thing.php:267
-msgid "item not found."
-msgstr "Eintrag nicht gefunden"
-
-#: ../../Zotlabs/Module/Thing.php:300
-msgid "Edit Thing"
-msgstr "Sache bearbeiten"
-
-#: ../../Zotlabs/Module/Thing.php:302 ../../Zotlabs/Module/Thing.php:359
-msgid "Select a profile"
-msgstr "Wähle ein Profil"
-
-#: ../../Zotlabs/Module/Thing.php:306 ../../Zotlabs/Module/Thing.php:362
-msgid "Post an activity"
-msgstr "Aktivitätsnachricht senden"
-
-#: ../../Zotlabs/Module/Thing.php:306 ../../Zotlabs/Module/Thing.php:362
-msgid "Only sends to viewers of the applicable profile"
-msgstr "Nur an Betrachter des ausgewählten Profils senden"
-
-#: ../../Zotlabs/Module/Thing.php:308 ../../Zotlabs/Module/Thing.php:364
-msgid "Name of thing e.g. something"
-msgstr "Name der Sache, z. B. irgendwas"
-
-#: ../../Zotlabs/Module/Thing.php:310 ../../Zotlabs/Module/Thing.php:365
-msgid "URL of thing (optional)"
-msgstr "URL der Sache (optional)"
-
-#: ../../Zotlabs/Module/Thing.php:312 ../../Zotlabs/Module/Thing.php:366
-msgid "URL for photo of thing (optional)"
-msgstr "URL eines Fotos der Sache (optional)"
-
-#: ../../Zotlabs/Module/Thing.php:314 ../../Zotlabs/Module/Thing.php:367
-#: ../../Zotlabs/Module/Photos.php:702 ../../Zotlabs/Module/Photos.php:1071
-#: ../../Zotlabs/Module/Connedit.php:676 ../../Zotlabs/Module/Chat.php:235
-#: ../../Zotlabs/Module/Filestorage.php:147
-#: ../../include/acl_selectors.php:218
-msgid "Permissions"
-msgstr "Berechtigungen"
-
-#: ../../Zotlabs/Module/Thing.php:357
-msgid "Add Thing to your Profile"
-msgstr "Die Sache Deinem Profil hinzufügen"
-
-#: ../../Zotlabs/Module/Notify.php:61
-#: ../../Zotlabs/Module/Notifications.php:57
-msgid "No more system notifications."
-msgstr "Keine System-Benachrichtigungen mehr."
-
-#: ../../Zotlabs/Module/Notify.php:65
-#: ../../Zotlabs/Module/Notifications.php:61
-msgid "System Notifications"
-msgstr "System-Benachrichtigungen"
-
-#: ../../Zotlabs/Module/Follow.php:31
-msgid "Channel added."
-msgstr "Kanal hinzugefügt."
-
-#: ../../Zotlabs/Module/Import.php:143
-#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr "Dein Vertrag erlaubt nur %d Kanäle."
-
-#: ../../Zotlabs/Module/Import.php:157
-msgid "No channel. Import failed."
-msgstr "Kein Kanal. Import fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Import.php:481
-#: ../../addon/diaspora/import_diaspora.php:139
-msgid "Import completed."
-msgstr "Import abgeschlossen."
-
-#: ../../Zotlabs/Module/Import.php:509
-msgid "You must be logged in to use this feature."
-msgstr "Du musst angemeldet sein um diese Funktion zu nutzen."
-
-#: ../../Zotlabs/Module/Import.php:514
-msgid "Import Channel"
-msgstr "Kanal importieren"
-
-#: ../../Zotlabs/Module/Import.php:515
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file."
-msgstr "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren."
-
-#: ../../Zotlabs/Module/Import.php:517
-msgid "Or provide the old server/hub details"
-msgstr "Oder gib die Details Deines bisherigen $Projectname-Hubs ein"
-
-#: ../../Zotlabs/Module/Import.php:518
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Bisherige Kanal-Adresse (xyz@example.com)"
-
-#: ../../Zotlabs/Module/Import.php:519
-msgid "Your old login email address"
-msgstr "Deine alte Login-E-Mail-Adresse"
-
-#: ../../Zotlabs/Module/Import.php:520
-msgid "Your old login password"
-msgstr "Dein altes Passwort"
-
-#: ../../Zotlabs/Module/Import.php:521
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige $Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."
-
-#: ../../Zotlabs/Module/Import.php:522
-msgid "Make this hub my primary location"
-msgstr "Dieser $Pojectname-Hub ist mein primärer Hub."
-
-#: ../../Zotlabs/Module/Import.php:523
-msgid "Move this channel (disable all previous locations)"
-msgstr "Verschiebe diesen Kanal (deaktiviere alle vorherigen Adressen/Klone)"
-
-#: ../../Zotlabs/Module/Import.php:524
-msgid "Import a few months of posts if possible (limited by available memory"
-msgstr "Importiere die Beiträge einiger Monate, sofern möglich (beschränkt durch verfügbaren Speicher)"
-
-#: ../../Zotlabs/Module/Import.php:525
-msgid ""
-"This process may take several minutes to complete. Please submit the form "
-"only once and leave this page open until finished."
-msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen."
-
-#: ../../Zotlabs/Module/Rmagic.php:35
-msgid "Authentication failed."
-msgstr "Authentifizierung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1665
-#: ../../include/channel.php:2301
-msgid "Remote Authentication"
-msgstr "Entfernte Authentifizierung"
-
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2302
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Deine Kanal-Adresse (z. B. channel@example.com)"
-
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2303
-msgid "Authenticate"
-msgstr "Authentifizieren"
-
-#: ../../Zotlabs/Module/Cal.php:69
-msgid "Permissions denied."
-msgstr "Berechtigung verweigert."
-
-#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2312
-msgid "Import"
-msgstr "Import"
-
-#: ../../Zotlabs/Module/Notify.php:61
-#: ../../Zotlabs/Module/Notifications.php:42
-msgid "System Notifications"
-msgstr "System-Benachrichtigungen"
-
-#: ../../Zotlabs/Module/Follow.php:31
-msgid "Channel added."
-msgstr "Kanal hinzugefügt."
-
-#: ../../Zotlabs/Module/Import.php:144
-#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr "Dein Vertrag erlaubt nur %d Kanäle."
-
-#: ../../Zotlabs/Module/Import.php:158
-msgid "No channel. Import failed."
-msgstr "Kein Kanal. Import fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Attach.php:13
-msgid "Item not available."
-msgstr "Element nicht verfügbar."
-
-#: ../../Zotlabs/Module/Editblock.php:138
-msgid "Edit Block"
-msgstr "Block bearbeiten"
-
-#: ../../Zotlabs/Module/Profile.php:93
-msgid "vcard"
-msgstr "VCard"
-
-#: ../../Zotlabs/Module/Apps.php:47 ../../Zotlabs/Lib/Apps.php:223
-msgid "Apps"
-msgstr "Apps"
-
-#: ../../Zotlabs/Module/Apps.php:50
-msgid "Manage apps"
-msgstr "Apps verwalten"
-
-#: ../../Zotlabs/Module/Apps.php:51
-msgid "Create new app"
-msgstr "Neue App erstellen"
-
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:268
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s ist %2$s"
-
-#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:247
-msgid "Mood"
-msgstr "Laune"
-
-#: ../../Zotlabs/Module/Mood.php:136
-msgid "Set your current mood and tell your friends"
-msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"
-
-#: ../../Zotlabs/Module/Connections.php:54
-#: ../../Zotlabs/Module/Connections.php:156
-#: ../../Zotlabs/Module/Connections.php:245
-msgid "Blocked"
-msgstr "Blockiert"
-
-#: ../../Zotlabs/Module/Connections.php:59
-#: ../../Zotlabs/Module/Connections.php:163
-#: ../../Zotlabs/Module/Connections.php:244
-msgid "Ignored"
-msgstr "Ignoriert"
-
-#: ../../Zotlabs/Module/Connections.php:64
-#: ../../Zotlabs/Module/Connections.php:177
-#: ../../Zotlabs/Module/Connections.php:243
-msgid "Hidden"
-msgstr "Versteckt"
-
-#: ../../Zotlabs/Module/Connections.php:69
-#: ../../Zotlabs/Module/Connections.php:170
-msgid "Archived/Unreachable"
-msgstr "Archiviert/Unerreichbar"
-
-#: ../../Zotlabs/Module/Connections.php:74
-#: ../../Zotlabs/Module/Connections.php:83 ../../Zotlabs/Module/Menu.php:116
-#: ../../Zotlabs/Module/Notifications.php:52
-#: ../../include/conversation.php:1714
-msgid "New"
-msgstr "Neu"
-
-#: ../../Zotlabs/Module/Connections.php:88
-#: ../../Zotlabs/Module/Connections.php:102
-#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:30
-msgid "All"
-msgstr "Alle"
-
-#: ../../Zotlabs/Module/Connections.php:133
-#: ../../Zotlabs/Widget/Notifications.php:82
-msgid "New Connections"
-msgstr "Neue Verbindungen"
-
-#: ../../Zotlabs/Module/Connections.php:136
-msgid "Show pending (new) connections"
-msgstr "Ausstehende (neue) Verbindungsanfragen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:143
-msgid "Show all connections"
-msgstr "Alle Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:159
-msgid "Only show blocked connections"
-msgstr "Nur blockierte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:166
-msgid "Only show ignored connections"
-msgstr "Nur ignorierte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:173
-msgid "Only show archived/unreachable connections"
-msgstr "Nur archivierte/unerreichbare Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:180
-msgid "Only show hidden connections"
-msgstr "Nur versteckte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:241
-msgid "Pending approval"
-msgstr "Wartet auf Genehmigung"
-
-#: ../../Zotlabs/Module/Connections.php:242
-msgid "Archived"
-msgstr "Archiviert"
-
-#: ../../Zotlabs/Module/Connections.php:246
-msgid "Not connected at this location"
-msgstr "An diesem Ort nicht verbunden"
-
-#: ../../Zotlabs/Module/Connections.php:258
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../Zotlabs/Module/Connections.php:259
-msgid "Edit connection"
-msgstr "Verbindung bearbeiten"
-
-#: ../../Zotlabs/Module/Connections.php:261
-msgid "Delete connection"
-msgstr "Verbindung löschen"
-
-#: ../../Zotlabs/Module/Connections.php:270
-msgid "Channel address"
-msgstr "Kanaladresse"
-
-#: ../../Zotlabs/Module/Connections.php:272
-msgid "Network"
-msgstr "Netzwerk"
-
-#: ../../Zotlabs/Module/Connections.php:275
-msgid "Call"
-msgstr "Anruf"
-
-#: ../../Zotlabs/Module/Connections.php:277
-msgid "Status"
-msgstr "Status"
-
-#: ../../Zotlabs/Module/Connections.php:279
-msgid "Connected"
-msgstr "Verbunden"
-
-#: ../../Zotlabs/Module/Connections.php:281
-msgid "Approve connection"
-msgstr "Verbindung genehmigen"
-
-#: ../../Zotlabs/Module/Connections.php:283
-msgid "Ignore connection"
-msgstr "Verbindung ignorieren"
-
-#: ../../Zotlabs/Module/Connections.php:284
-#: ../../Zotlabs/Module/Connedit.php:630
-msgid "Ignore"
-msgstr "Ignorieren"
-
-#: ../../Zotlabs/Module/Connections.php:285
-msgid "Recent activity"
-msgstr "Kürzliche Aktivitäten"
-
-#: ../../Zotlabs/Module/Connections.php:309 ../../Zotlabs/Lib/Apps.php:229
-#: ../../include/text.php:959 ../../include/nav.php:114
-msgid "Connections"
-msgstr "Verbindungen"
-
-#: ../../Zotlabs/Module/Connections.php:314
-msgid "Search your connections"
-msgstr "Verbindungen durchsuchen"
-
-#: ../../Zotlabs/Module/Connections.php:315
-msgid "Connections search"
-msgstr "Verbindung suchen"
-
-#: ../../Zotlabs/Module/Connections.php:316
-#: ../../Zotlabs/Module/Directory.php:396
-#: ../../Zotlabs/Module/Directory.php:401 ../../include/contact_widgets.php:23
-msgid "Find"
-msgstr "Finde"
-
-#: ../../Zotlabs/Module/Viewsrc.php:43
-msgid "item"
-msgstr "Beitrag"
-
-#: ../../Zotlabs/Module/Viewsrc.php:55
-msgid "Source of Item"
-msgstr "Quelle des Elements"
-
-#: ../../Zotlabs/Module/Bookmarks.php:56
-msgid "Bookmark added"
-msgstr "Lesezeichen hinzugefügt"
-
-#: ../../Zotlabs/Module/Bookmarks.php:79
-msgid "My Bookmarks"
-msgstr "Meine Lesezeichen"
-
-#: ../../Zotlabs/Module/Bookmarks.php:90
-msgid "My Connections Bookmarks"
-msgstr "Lesezeichen meiner Kontakte"
-
-#: ../../Zotlabs/Module/Removeaccount.php:35
-msgid ""
-"Account removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt."
-
-#: ../../Zotlabs/Module/Removeaccount.php:57
-msgid "Remove This Account"
-msgstr "Dieses Konto löschen"
-
-#: ../../Zotlabs/Module/Removeaccount.php:58
-msgid ""
-"This account and all its channels will be completely removed from the "
-"network. "
-msgstr "Dieses Konto mit all seinen Kanälen wird vollständig aus dem Netzwerk gelöscht."
-
-#: ../../Zotlabs/Module/Removeaccount.php:60
-msgid ""
-"Remove this account, all its channels and all its channel clones from the "
-"network"
-msgstr "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen"
-
-#: ../../Zotlabs/Module/Removeaccount.php:60
-msgid ""
-"By default only the instances of the channels located on this hub will be "
-"removed from the network"
-msgstr "Standardmäßig werden nur die Kanalklone auf diesem $Projectname-Hub aus dem Netzwerk entfernt"
-
-#: ../../Zotlabs/Module/Photos.php:78
-msgid "Page owner information could not be retrieved."
-msgstr "Informationen über den Besitzer der Seite konnten nicht gefunden werden."
-
-#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:120
-msgid "Album not found."
-msgstr "Album nicht gefunden."
-
-#: ../../Zotlabs/Module/Photos.php:103
-msgid "Delete Album"
-msgstr "Album löschen"
-
-#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1083
-msgid "Delete Photo"
-msgstr "Foto löschen"
-
-#: ../../Zotlabs/Module/Photos.php:551
-msgid "No photos selected"
-msgstr "Keine Fotos ausgewählt"
-
-#: ../../Zotlabs/Module/Photos.php:600
-msgid "Access to this item is restricted."
-msgstr "Der Zugriff auf dieses Foto ist eingeschränkt."
-
-#: ../../Zotlabs/Module/Photos.php:646
-#, php-format
-msgid "%1$.2f MB of %2$.2f MB photo storage used."
-msgstr "%1$.2f MB von %2$.2f MB Foto-Speicher belegt."
-
-#: ../../Zotlabs/Module/Photos.php:649
-#, php-format
-msgid "%1$.2f MB photo storage used."
-msgstr "%1$.2f MB Foto-Speicher belegt."
-
-#: ../../Zotlabs/Module/Photos.php:691
-msgid "Upload Photos"
-msgstr "Fotos hochladen"
-
-#: ../../Zotlabs/Module/Photos.php:695
-msgid "Enter an album name"
-msgstr "Namen für ein neues Album eingeben"
-
-#: ../../Zotlabs/Module/Photos.php:696
-msgid "or select an existing album (doubleclick)"
-msgstr "oder ein bereits vorhandenes auswählen (Doppelklick)"
-
-#: ../../Zotlabs/Module/Photos.php:697
-msgid "Create a status post for this upload"
-msgstr "Einen Statusbeitrag für diesen Upload erzeugen"
-
-#: ../../Zotlabs/Module/Photos.php:698
-msgid "Caption (optional):"
-msgstr "Beschriftung (optional):"
-
-#: ../../Zotlabs/Module/Photos.php:699
-msgid "Description (optional):"
-msgstr "Beschreibung (optional):"
-
-#: ../../Zotlabs/Module/Photos.php:785
-msgid "Show Newest First"
-msgstr "Neueste zuerst anzeigen"
-
-#: ../../Zotlabs/Module/Photos.php:787
-msgid "Show Oldest First"
-msgstr "Älteste zuerst anzeigen"
-
-#: ../../Zotlabs/Module/Photos.php:892
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden."
-
-#: ../../Zotlabs/Module/Photos.php:894
-msgid "Photo not available"
-msgstr "Foto nicht verfügbar"
-
-#: ../../Zotlabs/Module/Photos.php:952
-msgid "Use as profile photo"
-msgstr "Als Profilfoto verwenden"
-
-#: ../../Zotlabs/Module/Photos.php:953
-msgid "Use as cover photo"
-msgstr "Als Titelbild verwenden"
-
-#: ../../Zotlabs/Module/Photos.php:960
-msgid "Private Photo"
-msgstr "Privates Foto"
-
-#: ../../Zotlabs/Module/Photos.php:975
-msgid "View Full Size"
-msgstr "In voller Größe anzeigen"
-
-#: ../../Zotlabs/Module/Photos.php:1057
-msgid "Edit photo"
-msgstr "Foto bearbeiten"
-
-#: ../../Zotlabs/Module/Photos.php:1059
-msgid "Rotate CW (right)"
-msgstr "Drehen im UZS (rechts)"
-
-#: ../../Zotlabs/Module/Photos.php:1060
-msgid "Rotate CCW (left)"
-msgstr "Drehen gegen UZS (links)"
-
-#: ../../Zotlabs/Module/Photos.php:1063
-msgid "Move photo to album"
-msgstr "Foto in Album verschieben"
-
-#: ../../Zotlabs/Module/Photos.php:1064
-msgid "Enter a new album name"
-msgstr "Gib einen Namen für ein neues Album ein"
-
-#: ../../Zotlabs/Module/Photos.php:1065
-msgid "or select an existing one (doubleclick)"
-msgstr "oder wähle ein bereits vorhandenes aus (Doppelklick)"
-
-#: ../../Zotlabs/Module/Photos.php:1068
-msgid "Caption"
-msgstr "Bildunterschrift"
-
-#: ../../Zotlabs/Module/Photos.php:1070
-msgid "Add a Tag"
-msgstr "Schlagwort hinzufügen"
-
-#: ../../Zotlabs/Module/Photos.php:1078
-msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
-msgstr "Beispiele: @ben, @Karl_Prester, @lieschen@example.com"
-
-#: ../../Zotlabs/Module/Photos.php:1081
-msgid "Flag as adult in album view"
-msgstr "In der Albumansicht als nicht jugendfrei markieren"
-
-#: ../../Zotlabs/Module/Photos.php:1100 ../../Zotlabs/Lib/ThreadItem.php:281
-msgid "I like this (toggle)"
-msgstr "Mir gefällt das (Umschalter)"
-
-#: ../../Zotlabs/Module/Photos.php:1101 ../../Zotlabs/Lib/ThreadItem.php:282
-msgid "I don't like this (toggle)"
-msgstr "Mir gefällt das nicht (Umschalter)"
-
-#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Lib/ThreadItem.php:427
-#: ../../include/conversation.php:785
-msgid "Please wait"
-msgstr "Bitte warten"
-
-#: ../../Zotlabs/Module/Photos.php:1119 ../../Zotlabs/Module/Photos.php:1237
-#: ../../Zotlabs/Lib/ThreadItem.php:751
-msgid "This is you"
-msgstr "Das bist Du"
-
-#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
-#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/js_strings.php:6
-msgid "Comment"
-msgstr "Kommentar"
-
-#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
-msgctxt "title"
-msgid "Likes"
-msgstr "Gefällt mir"
-
-#: ../../Zotlabs/Module/Photos.php:1137 ../../include/conversation.php:618
-msgctxt "title"
-msgid "Dislikes"
-msgstr "Gefällt mir nicht"
-
-#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
-msgctxt "title"
-msgid "Agree"
-msgstr "Zustimmungen"
-
-#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
-msgctxt "title"
-msgid "Disagree"
-msgstr "Ablehnungen"
-
-#: ../../Zotlabs/Module/Photos.php:1138 ../../include/conversation.php:619
-msgctxt "title"
-msgid "Abstain"
-msgstr "Enthaltungen"
-
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
-msgctxt "title"
-msgid "Attending"
-msgstr "Zusagen"
-
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
-msgctxt "title"
-msgid "Not attending"
-msgstr "Absagen"
-
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:620
-msgctxt "title"
-msgid "Might attend"
-msgstr "Vielleicht"
-
-#: ../../Zotlabs/Module/Photos.php:1156 ../../Zotlabs/Module/Photos.php:1168
-#: ../../Zotlabs/Lib/ThreadItem.php:201 ../../Zotlabs/Lib/ThreadItem.php:213
-msgid "View all"
-msgstr "Alles anzeigen"
-
-#: ../../Zotlabs/Module/Photos.php:1160 ../../Zotlabs/Lib/ThreadItem.php:205
-#: ../../include/conversation.php:1978 ../../include/channel.php:1539
-#: ../../include/taxonomy.php:593
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Gefällt mir"
-msgstr[1] "Gefällt mir"
-
-#: ../../Zotlabs/Module/Photos.php:1165 ../../Zotlabs/Lib/ThreadItem.php:210
-#: ../../include/conversation.php:1981
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Gefällt nicht"
-msgstr[1] "Gefällt nicht"
-
-#: ../../Zotlabs/Module/Photos.php:1265
-msgid "Photo Tools"
-msgstr "Fotowerkzeuge"
-
-#: ../../Zotlabs/Module/Photos.php:1274
-msgid "In This Photo:"
-msgstr "Auf diesem Foto:"
-
-#: ../../Zotlabs/Module/Photos.php:1279
-msgid "Map"
-msgstr "Karte"
-
-#: ../../Zotlabs/Module/Photos.php:1287 ../../Zotlabs/Lib/ThreadItem.php:415
-msgctxt "noun"
-msgid "Likes"
-msgstr "Gefällt mir"
-
-#: ../../Zotlabs/Module/Photos.php:1288 ../../Zotlabs/Lib/ThreadItem.php:416
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Gefällt nicht"
-
-#: ../../Zotlabs/Module/Photos.php:1293 ../../Zotlabs/Lib/ThreadItem.php:421
-#: ../../include/acl_selectors.php:220
-msgid "Close"
-msgstr "Schließen"
-
-#: ../../Zotlabs/Module/Photos.php:1365 ../../Zotlabs/Module/Photos.php:1378
-#: ../../Zotlabs/Module/Photos.php:1379 ../../include/photos.php:656
-msgid "Recent Photos"
-msgstr "Neueste Fotos"
-
-#: ../../Zotlabs/Module/Wiki.php:30
-msgid "Profile Unavailable."
-msgstr "Profil nicht verfügbar."
-
-#: ../../Zotlabs/Module/Wiki.php:44 ../../Zotlabs/Module/Cloud.php:108
-#: ../../addon/gitwiki/Mod_Gitwiki.php:42
-msgid "Not found"
-msgstr "Nicht gefunden"
-
-#: ../../Zotlabs/Module/Wiki.php:68 ../../addon/gitwiki/Mod_Gitwiki.php:62
-msgid "Invalid channel"
-msgstr "Ungültiger Kanal"
-
-#: ../../Zotlabs/Module/Wiki.php:124 ../../addon/gitwiki/Mod_Gitwiki.php:107
-msgid "Error retrieving wiki"
-msgstr "Fehler beim Abrufen des Wiki"
-
-#: ../../Zotlabs/Module/Wiki.php:131 ../../addon/gitwiki/Mod_Gitwiki.php:114
-msgid "Error creating zip file export folder"
-msgstr "Fehler bei der Erzeugung des Zip-Datei Export-Verzeichnisses "
-
-#: ../../Zotlabs/Module/Wiki.php:182 ../../addon/gitwiki/Mod_Gitwiki.php:132
-msgid "Error downloading wiki: "
-msgstr "Fehler beim Herunterladen des Wiki:"
-
-#: ../../Zotlabs/Module/Wiki.php:197 ../../addon/gitwiki/Mod_Gitwiki.php:146
-#: ../../include/conversation.php:1925 ../../include/nav.php:526
-msgid "Wikis"
-msgstr "Wikis"
-
-#: ../../Zotlabs/Module/Wiki.php:203 ../../addon/gitwiki/Mod_Gitwiki.php:152
-msgid "Download"
-msgstr "Herunterladen"
-
-#: ../../Zotlabs/Module/Wiki.php:205 ../../Zotlabs/Module/Chat.php:256
-#: ../../Zotlabs/Module/Profiles.php:834 ../../Zotlabs/Module/Manage.php:145
-#: ../../addon/gitwiki/Mod_Gitwiki.php:154
-msgid "Create New"
-msgstr "Neu anlegen"
-
-#: ../../Zotlabs/Module/Wiki.php:207 ../../addon/gitwiki/Mod_Gitwiki.php:156
-msgid "Wiki name"
-msgstr "Name des Wiki"
-
-#: ../../Zotlabs/Module/Wiki.php:208 ../../addon/gitwiki/Mod_Gitwiki.php:157
-msgid "Content type"
-msgstr "Inhaltstyp"
-
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
-#: ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1802
-#: ../../include/features.php:378
-msgid "Markdown"
-msgstr "Markdown"
-
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
-#: ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1800
-msgid "BBcode"
-msgstr "BBcode"
-
-#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1803
-msgid "Text"
-msgstr "Text"
-
-#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:281
-#: ../../addon/gitwiki/Mod_Gitwiki.php:159
-msgid "Type"
-msgstr "Typ"
-
-#: ../../Zotlabs/Module/Wiki.php:211
-msgid "Any&nbsp;type"
-msgstr "Alle&nbsp;Arten"
-
-#: ../../Zotlabs/Module/Wiki.php:218
-msgid "Lock content type"
-msgstr "Inhaltstyp sperren"
-
-#: ../../Zotlabs/Module/Wiki.php:219 ../../addon/gitwiki/Mod_Gitwiki.php:166
-msgid "Create a status post for this wiki"
-msgstr "Erzeuge einen Statusbeitrag für dieses Wiki"
-
-#: ../../Zotlabs/Module/Wiki.php:220
-msgid "Edit Wiki Name"
-msgstr "Wiki-Namen bearbeiten"
-
-#: ../../Zotlabs/Module/Wiki.php:262 ../../addon/gitwiki/Mod_Gitwiki.php:185
-msgid "Wiki not found"
-msgstr "Wiki nicht gefunden"
-
-#: ../../Zotlabs/Module/Wiki.php:286 ../../addon/gitwiki/Mod_Gitwiki.php:210
-msgid "Rename page"
-msgstr "Seite umbenennen"
-
-#: ../../Zotlabs/Module/Wiki.php:305 ../../addon/gitwiki/Mod_Gitwiki.php:214
-msgid "Error retrieving page content"
-msgstr "Fehler beim Abrufen des Seiteninhalts"
-
-#: ../../Zotlabs/Module/Wiki.php:313 ../../Zotlabs/Module/Wiki.php:315
-msgid "New page"
-msgstr "Neue Seite"
-
-#: ../../Zotlabs/Module/Wiki.php:343 ../../addon/gitwiki/Mod_Gitwiki.php:242
-msgid "Revision Comparison"
-msgstr "Revisionsvergleich"
-
-#: ../../Zotlabs/Module/Wiki.php:344 ../../addon/gitwiki/Mod_Gitwiki.php:243
-msgid "Revert"
-msgstr "Rückgängig machen"
-
-#: ../../Zotlabs/Module/Wiki.php:351
-msgid "Short description of your changes (optional)"
-msgstr "Kurze Beschreibung Ihrer Änderungen (optional)"
-
-#: ../../Zotlabs/Module/Wiki.php:358 ../../addon/gitwiki/Mod_Gitwiki.php:252
-msgid "Source"
-msgstr "Quelle"
-
-#: ../../Zotlabs/Module/Wiki.php:368 ../../addon/gitwiki/Mod_Gitwiki.php:260
-msgid "New page name"
-msgstr "Neuer Seitenname"
-
-#: ../../Zotlabs/Module/Wiki.php:373 ../../addon/gitwiki/Mod_Gitwiki.php:265
-#: ../../include/conversation.php:1282
-msgid "Embed image from photo albums"
-msgstr "Bild aus Fotoalben einbetten"
-
-#: ../../Zotlabs/Module/Wiki.php:374 ../../addon/gitwiki/Mod_Gitwiki.php:266
-#: ../../include/conversation.php:1385
-msgid "Embed an image from your albums"
-msgstr "Betten Sie ein Bild aus Ihren Alben ein"
-
-#: ../../Zotlabs/Module/Wiki.php:376 ../../addon/gitwiki/Mod_Gitwiki.php:268
-#: ../../include/conversation.php:1387 ../../include/conversation.php:1434
-msgid "OK"
-msgstr "Ok"
-
-#: ../../Zotlabs/Module/Wiki.php:377 ../../addon/gitwiki/Mod_Gitwiki.php:269
-#: ../../include/conversation.php:1318
-msgid "Choose images to embed"
-msgstr "Wählen Sie Bilder zum Einbetten aus"
-
-#: ../../Zotlabs/Module/Wiki.php:378 ../../addon/gitwiki/Mod_Gitwiki.php:270
-#: ../../include/conversation.php:1319
-msgid "Choose an album"
-msgstr "Wählen Sie ein Album aus"
-
-#: ../../Zotlabs/Module/Wiki.php:379 ../../addon/gitwiki/Mod_Gitwiki.php:271
-msgid "Choose a different album"
-msgstr "Wählen Sie ein anderes Album aus"
-
-#: ../../Zotlabs/Module/Wiki.php:380 ../../addon/gitwiki/Mod_Gitwiki.php:272
-#: ../../include/conversation.php:1321
-msgid "Error getting album list"
-msgstr "Fehler beim Holen der Albenliste"
-
-#: ../../Zotlabs/Module/Wiki.php:381 ../../addon/gitwiki/Mod_Gitwiki.php:273
-#: ../../include/conversation.php:1322
-msgid "Error getting photo link"
-msgstr "Fehler beim Holen des Fotolinks"
-
-#: ../../Zotlabs/Module/Wiki.php:382 ../../addon/gitwiki/Mod_Gitwiki.php:274
-#: ../../include/conversation.php:1323
-msgid "Error getting album"
-msgstr "Fehler beim Holen des Albums"
-
-#: ../../Zotlabs/Module/Wiki.php:458 ../../addon/gitwiki/Mod_Gitwiki.php:337
-msgid "Error creating wiki. Invalid name."
-msgstr "Fehler beim Erstellen des Wiki. Ungültiger Name."
-
-#: ../../Zotlabs/Module/Wiki.php:465
-msgid "A wiki with this name already exists."
-msgstr "Es existiert bereits ein Wiki mit diesem Namen."
-
-#: ../../Zotlabs/Module/Wiki.php:478 ../../addon/gitwiki/Mod_Gitwiki.php:348
-msgid "Wiki created, but error creating Home page."
-msgstr "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite"
-
-#: ../../Zotlabs/Module/Wiki.php:485 ../../addon/gitwiki/Mod_Gitwiki.php:353
-msgid "Error creating wiki"
-msgstr "Fehler beim Erstellen des Wiki"
-
-#: ../../Zotlabs/Module/Wiki.php:508
-msgid "Error updating wiki. Invalid name."
-msgstr "Fehler beim Aktualisieren des Wikis. Ungültiger Name."
-
-#: ../../Zotlabs/Module/Wiki.php:528
-msgid "Error updating wiki"
-msgstr "Fehler beim Aktualisieren des Wikis"
-
-#: ../../Zotlabs/Module/Wiki.php:543
-msgid "Wiki delete permission denied."
-msgstr "Wiki-Löschberechtigung verweigert."
-
-#: ../../Zotlabs/Module/Wiki.php:553
-msgid "Error deleting wiki"
-msgstr "Fehler beim Löschen des Wiki"
-
-#: ../../Zotlabs/Module/Wiki.php:586 ../../addon/gitwiki/Mod_Gitwiki.php:400
-msgid "New page created"
-msgstr "Neue Seite erstellt"
-
-#: ../../Zotlabs/Module/Wiki.php:707
-msgid "Cannot delete Home"
-msgstr "Kann die Startseite nicht löschen"
-
-#: ../../Zotlabs/Module/Wiki.php:771
-msgid "Current Revision"
-msgstr "Aktuelle Revision"
-
-#: ../../Zotlabs/Module/Wiki.php:771
-msgid "Selected Revision"
-msgstr "Ausgewählte Revision"
-
-#: ../../Zotlabs/Module/Wiki.php:821
-msgid "You must be authenticated."
-msgstr "Sie müssen authenzifiziert sein."
-
-#: ../../Zotlabs/Module/Chanview.php:139
-msgid "toggle full screen mode"
-msgstr "auf Vollbildmodus umschalten"
-
-#: ../../Zotlabs/Module/Pdledit.php:21
-msgid "Layout updated."
-msgstr "Layout aktualisiert."
-
-#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Chat.php:219
-msgid "Feature disabled."
-msgstr "Funktion deaktiviert."
-
-#: ../../Zotlabs/Module/Pdledit.php:47 ../../Zotlabs/Module/Pdledit.php:90
-msgid "Edit System Page Description"
-msgstr "Systemseitenbeschreibung bearbeiten"
-
-#: ../../Zotlabs/Module/Pdledit.php:68
-msgid "(modified)"
-msgstr "(geändert)"
-
-#: ../../Zotlabs/Module/Pdledit.php:68 ../../Zotlabs/Module/Lostpass.php:133
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: ../../Zotlabs/Module/Pdledit.php:85
-msgid "Layout not found."
-msgstr "Layout nicht gefunden."
-
-#: ../../Zotlabs/Module/Pdledit.php:91
-msgid "Module Name:"
-msgstr "Modulname:"
-
-#: ../../Zotlabs/Module/Pdledit.php:92
-msgid "Layout Help"
-msgstr "Layout-Hilfe"
-
-#: ../../Zotlabs/Module/Pdledit.php:93
-msgid "Edit another layout"
-msgstr "Ein weiteres Layout bearbeiten"
-
-#: ../../Zotlabs/Module/Pdledit.php:94
-msgid "System layout"
-msgstr "System-Layout"
-
-#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:248
-#: ../../include/conversation.php:1092
-msgid "Poke"
-msgstr "Anstupsen"
-
-#: ../../Zotlabs/Module/Poke.php:183
-msgid "Poke somebody"
-msgstr "Jemanden anstupsen"
-
-#: ../../Zotlabs/Module/Poke.php:186
-msgid "Poke/Prod"
-msgstr "Anstupsen/Knuffen"
-
-#: ../../Zotlabs/Module/Poke.php:187
-msgid "Poke, prod or do other things to somebody"
-msgstr "Jemanden anstupsen, knuffen oder sonstiges"
-
-#: ../../Zotlabs/Module/Poke.php:194
-msgid "Recipient"
-msgstr "Empfänger"
-
-#: ../../Zotlabs/Module/Poke.php:195
-msgid "Choose what you wish to do to recipient"
-msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst"
-
-#: ../../Zotlabs/Module/Poke.php:198 ../../Zotlabs/Module/Poke.php:199
-msgid "Make this post private"
-msgstr "Diesen Beitrag privat machen"
-
-#: ../../Zotlabs/Module/Profile_photo.php:61
-#: ../../Zotlabs/Module/Cover_photo.php:56
-msgid "Image uploaded but image cropping failed."
-msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
-
-#: ../../Zotlabs/Module/Profile_photo.php:115
-#: ../../Zotlabs/Module/Profile_photo.php:240
-#: ../../include/photo/photo_driver.php:740
-msgid "Profile Photos"
-msgstr "Profilfotos"
-
-#: ../../Zotlabs/Module/Profile_photo.php:137
-#: ../../Zotlabs/Module/Cover_photo.php:159
-msgid "Image resize failed."
-msgstr "Bild-Anpassung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Profile_photo.php:210
-#: ../../addon/openclipatar/openclipatar.php:298
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
-
-#: ../../Zotlabs/Module/Profile_photo.php:217
-#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:195
-msgid "Unable to process image"
-msgstr "Kann Bild nicht verarbeiten"
-
-#: ../../Zotlabs/Module/Profile_photo.php:252
-#: ../../Zotlabs/Module/Cover_photo.php:197
-msgid "Image upload failed."
-msgstr "Hochladen des Bilds fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Profile_photo.php:271
-#: ../../Zotlabs/Module/Cover_photo.php:214
-msgid "Unable to process image."
-msgstr "Kann Bild nicht verarbeiten."
-
-#: ../../Zotlabs/Module/Profile_photo.php:332
-#: ../../Zotlabs/Module/Profile_photo.php:379
-#: ../../Zotlabs/Module/Cover_photo.php:307
-#: ../../Zotlabs/Module/Cover_photo.php:322
-msgid "Photo not available."
-msgstr "Foto nicht verfügbar."
-
-#: ../../Zotlabs/Module/Profile_photo.php:434
-#: ../../Zotlabs/Module/Cover_photo.php:358
-msgid "Upload File:"
-msgstr "Datei hochladen:"
-
-#: ../../Zotlabs/Module/Profile_photo.php:435
-#: ../../Zotlabs/Module/Cover_photo.php:359
-msgid "Select a profile:"
-msgstr "Wähle ein Profil:"
-
-#: ../../Zotlabs/Module/Profile_photo.php:436
-msgid "Use Photo for Profile"
-msgstr "Foto für Profil verwenden"
-
-#: ../../Zotlabs/Module/Profile_photo.php:436
-msgid "Upload Profile Photo"
-msgstr "Lade neues Profilfoto hoch"
-
-#: ../../Zotlabs/Module/Profile_photo.php:437
-#: ../../addon/openclipatar/openclipatar.php:182
-#: ../../addon/openclipatar/openclipatar.php:194
-msgid "Use"
-msgstr "Verwenden"
-
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "skip this step"
-msgstr "diesen Schritt überspringen"
-
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "select a photo from your photo albums"
-msgstr "ein Foto aus meinen Fotoalben"
-
-#: ../../Zotlabs/Module/Profile_photo.php:462
-#: ../../Zotlabs/Module/Cover_photo.php:381
-msgid "Crop Image"
-msgstr "Bild zuschneiden"
-
-#: ../../Zotlabs/Module/Profile_photo.php:463
-#: ../../Zotlabs/Module/Cover_photo.php:382
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
-
-#: ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Cover_photo.php:384
-msgid "Done Editing"
-msgstr "Bearbeitung fertigstellen"
-
-#: ../../Zotlabs/Module/Chatsvc.php:131
-msgid "Away"
-msgstr "Abwesend"
-
-#: ../../Zotlabs/Module/Chatsvc.php:136
-msgid "Online"
-msgstr "Online"
-
-#: ../../Zotlabs/Module/Item.php:193
-msgid "Unable to locate original post."
-msgstr "Originalbeitrag nicht gefunden."
-
-#: ../../Zotlabs/Module/Item.php:475
-msgid "Empty post discarded."
-msgstr "Leeren Beitrag verworfen."
-
-#: ../../Zotlabs/Module/Item.php:853
-msgid "Duplicate post suppressed."
-msgstr "Doppelter Beitrag unterdrückt."
-
-#: ../../Zotlabs/Module/Item.php:998
-msgid "System error. Post not saved."
-msgstr "Systemfehler. Beitrag nicht gespeichert."
-
-#: ../../Zotlabs/Module/Item.php:1034
-msgid "Your comment is awaiting approval."
-msgstr "Dein Kommentar muss noch bestätigt werden."
-
-#: ../../Zotlabs/Module/Item.php:1139
-msgid "Unable to obtain post information from database."
-msgstr "Beitragsinformationen können nicht aus der Datenbank abgerufen werden."
-
-#: ../../Zotlabs/Module/Item.php:1168
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."
-
-#: ../../Zotlabs/Module/Item.php:1175
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."
-
-#: ../../Zotlabs/Module/Ping.php:311
-msgid "sent you a private message"
-msgstr "hat Dir eine private Nachricht geschickt"
-
-#: ../../Zotlabs/Module/Ping.php:360
-msgid "added your channel"
-msgstr "hat deinen Kanal hinzugefügt"
-
-#: ../../Zotlabs/Module/Ping.php:384
-msgid "requires approval"
-msgstr "Zustimmung erforderlich"
-
-#: ../../Zotlabs/Module/Ping.php:394
-msgid "g A l F d"
-msgstr "l, d. F, G:i \\U\\h\\r"
-
-#: ../../Zotlabs/Module/Ping.php:412
-msgid "[today]"
-msgstr "[Heute]"
-
-#: ../../Zotlabs/Module/Ping.php:421
-msgid "posted an event"
-msgstr "hat einen Termin veröffentlicht"
-
-#: ../../Zotlabs/Module/Ping.php:454
-msgid "shared a file with you"
-msgstr "hat eine Datei mit Dir geteilt"
-
-#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29
-msgid "Invalid item."
-msgstr "Ungültiges Element."
-
-#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
-#: ../../Zotlabs/Module/Display.php:133
-#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:168
-#: ../../include/help.php:81
-msgid "Page not found."
-msgstr "Seite nicht gefunden."
-
-#: ../../Zotlabs/Module/Page.php:173
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../Zotlabs/Module/Connedit.php:79 ../../Zotlabs/Module/Defperms.php:59
-msgid "Could not access contact record."
-msgstr "Konnte nicht auf den Kontakteintrag zugreifen."
-
-#: ../../Zotlabs/Module/Connedit.php:109
-msgid "Could not locate selected profile."
-msgstr "Gewähltes Profil nicht gefunden."
-
-#: ../../Zotlabs/Module/Connedit.php:246
-msgid "Connection updated."
-msgstr "Verbindung aktualisiert."
-
-#: ../../Zotlabs/Module/Connedit.php:248
-msgid "Failed to update connection record."
-msgstr "Konnte den Verbindungseintrag nicht aktualisieren."
-
-#: ../../Zotlabs/Module/Connedit.php:302
-msgid "is now connected to"
-msgstr "ist jetzt verbunden mit"
-
-#: ../../Zotlabs/Module/Connedit.php:427
-msgid "Could not access address book record."
-msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen."
-
-#: ../../Zotlabs/Module/Connedit.php:475
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar."
-
-#: ../../Zotlabs/Module/Connedit.php:490 ../../Zotlabs/Module/Connedit.php:499
-#: ../../Zotlabs/Module/Connedit.php:508 ../../Zotlabs/Module/Connedit.php:517
-#: ../../Zotlabs/Module/Connedit.php:530
-msgid "Unable to set address book parameters."
-msgstr "Konnte die Adressbuch-Parameter nicht setzen."
-
-#: ../../Zotlabs/Module/Connedit.php:554
-msgid "Connection has been removed."
-msgstr "Verbindung wurde gelöscht."
-
-#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:241
-#: ../../addon/openclipatar/openclipatar.php:57
-#: ../../include/conversation.php:1032 ../../include/nav.php:148
-msgid "View Profile"
-msgstr "Profil ansehen"
-
-#: ../../Zotlabs/Module/Connedit.php:597
-#, php-format
-msgid "View %s's profile"
-msgstr "%ss Profil ansehen"
-
-#: ../../Zotlabs/Module/Connedit.php:601
-msgid "Refresh Permissions"
-msgstr "Zugriffsrechte neu laden"
-
-#: ../../Zotlabs/Module/Connedit.php:604
-msgid "Fetch updated permissions"
-msgstr "Aktualisierte Zugriffsrechte abrufen"
-
-#: ../../Zotlabs/Module/Connedit.php:608
-msgid "Refresh Photo"
-msgstr "Foto aktualisieren"
-
-#: ../../Zotlabs/Module/Connedit.php:611
-msgid "Fetch updated photo"
-msgstr "Aktualisiertes Profilfoto abrufen"
-
-#: ../../Zotlabs/Module/Connedit.php:615
-msgid "Recent Activity"
-msgstr "Kürzliche Aktivitäten"
-
-#: ../../Zotlabs/Module/Connedit.php:618
-msgid "View recent posts and comments"
-msgstr "Betrachte die neuesten Beiträge und Kommentare"
-
-#: ../../Zotlabs/Module/Connedit.php:625
-msgid "Block (or Unblock) all communications with this connection"
-msgstr "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen"
-
-#: ../../Zotlabs/Module/Connedit.php:626
-msgid "This connection is blocked!"
-msgstr "Die Verbindung ist geblockt!"
-
-#: ../../Zotlabs/Module/Connedit.php:630
-msgid "Unignore"
-msgstr "Nicht ignorieren"
-
-#: ../../Zotlabs/Module/Connedit.php:633
-msgid "Ignore (or Unignore) all inbound communications from this connection"
-msgstr "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen"
-
-#: ../../Zotlabs/Module/Connedit.php:634
-msgid "This connection is ignored!"
-msgstr "Die Verbindung wird ignoriert!"
-
-#: ../../Zotlabs/Module/Connedit.php:638
-msgid "Unarchive"
-msgstr "Aus Archiv zurückholen"
-
-#: ../../Zotlabs/Module/Connedit.php:638
-msgid "Archive"
-msgstr "Archivieren"
-
-#: ../../Zotlabs/Module/Connedit.php:641
-msgid ""
-"Archive (or Unarchive) this connection - mark channel dead but keep content"
-msgstr "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)"
-
-#: ../../Zotlabs/Module/Connedit.php:642
-msgid "This connection is archived!"
-msgstr "Die Verbindung ist archiviert!"
-
-#: ../../Zotlabs/Module/Connedit.php:646
-msgid "Unhide"
-msgstr "Wieder sichtbar machen"
-
-#: ../../Zotlabs/Module/Connedit.php:646
-msgid "Hide"
-msgstr "Verstecken"
-
-#: ../../Zotlabs/Module/Connedit.php:649
-msgid "Hide or Unhide this connection from your other connections"
-msgstr "Diese Verbindung vor anderen Verbindungen verstecken/zeigen"
-
-#: ../../Zotlabs/Module/Connedit.php:650
-msgid "This connection is hidden!"
-msgstr "Die Verbindung ist versteckt!"
-
-#: ../../Zotlabs/Module/Connedit.php:657
-msgid "Delete this connection"
-msgstr "Verbindung löschen"
-
-#: ../../Zotlabs/Module/Connedit.php:665
-msgid "Fetch Vcard"
-msgstr "Vcard abrufen"
-
-#: ../../Zotlabs/Module/Connedit.php:668
-msgid "Fetch electronic calling card for this connection"
-msgstr "Rufe eine digitale Visitenkarte für diese Verbindung ab"
-
-#: ../../Zotlabs/Module/Connedit.php:679
-msgid "Open Individual Permissions section by default"
-msgstr "Öffne standardmäßig den Bereich für individuelle Berechtigungen"
-
-#: ../../Zotlabs/Module/Connedit.php:702
-msgid "Affinity"
-msgstr "Beziehung"
-
-#: ../../Zotlabs/Module/Connedit.php:705
-msgid "Open Set Affinity section by default"
-msgstr "Öffne standardmäßig den Bereich für Beziehungsgrad-Einstellungen"
-
-#: ../../Zotlabs/Module/Connedit.php:709 ../../Zotlabs/Widget/Affinity.php:26
-msgid "Me"
-msgstr "Ich"
-
-#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:27
-msgid "Family"
-msgstr "Familie"
-
-#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:29
-msgid "Acquaintances"
-msgstr "Bekannte"
-
-#: ../../Zotlabs/Module/Connedit.php:739
-msgid "Filter"
-msgstr "Filter"
-
-#: ../../Zotlabs/Module/Connedit.php:742
-msgid "Open Custom Filter section by default"
-msgstr "Öffne standardmäßig den Bereich für benutzerdefinierte Filter"
-
-#: ../../Zotlabs/Module/Connedit.php:779
-msgid "Approve this connection"
-msgstr "Verbindung genehmigen"
-
-#: ../../Zotlabs/Module/Connedit.php:779
-msgid "Accept connection to allow communication"
-msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"
-
-#: ../../Zotlabs/Module/Connedit.php:784
-msgid "Set Affinity"
-msgstr "Beziehung festlegen"
-
-#: ../../Zotlabs/Module/Connedit.php:787
-msgid "Set Profile"
-msgstr "Profil festlegen"
-
-#: ../../Zotlabs/Module/Connedit.php:790
-msgid "Set Affinity & Profile"
-msgstr "Beziehung und Profile festlegen"
-
-#: ../../Zotlabs/Module/Connedit.php:855
-msgid "This connection is unreachable from this location."
-msgstr "Diese Verbindung ist von diesem Ort unerreichbar."
-
-#: ../../Zotlabs/Module/Connedit.php:856
-msgid "This connection may be unreachable from other channel locations."
-msgstr "Diese Verbindung könnte von anderen Standpunkten des Kanals nicht erreichbar sein."
-
-#: ../../Zotlabs/Module/Connedit.php:858
-msgid "Location independence is not supported by their network."
-msgstr "Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt."
-
-#: ../../Zotlabs/Module/Connedit.php:864
-msgid ""
-"This connection is unreachable from this location. Location independence is "
-"not supported by their network."
-msgstr "Diese Verbindung ist von diesem Standort aus unerreichbar. Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt."
-
-#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:238
-#: ../../Zotlabs/Widget/Settings_menu.php:109
-msgid "Connection Default Permissions"
-msgstr "Standardzugriffsrechte für neue Verbindungen:"
-
-#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4134
-#, php-format
-msgid "Connection: %s"
-msgstr "Verbindung: %s"
-
-#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:239
-msgid "Apply these permissions automatically"
-msgstr "Diese Berechtigungen automatisch anwenden"
-
-#: ../../Zotlabs/Module/Connedit.php:868
-msgid "Connection requests will be approved without your interaction"
-msgstr "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist."
-
-#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:240
-msgid "Permission role"
-msgstr "Berechtigungsrolle"
-
-#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:241
-msgid "Add permission role"
-msgstr "Berechtigungsrolle hinzufügen"
-
-#: ../../Zotlabs/Module/Connedit.php:877
-msgid "This connection's primary address is"
-msgstr "Die Hauptadresse der Verbindung ist"
-
-#: ../../Zotlabs/Module/Connedit.php:878
-msgid "Available locations:"
-msgstr "Verfügbare Klone:"
-
-#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:245
-msgid ""
-"The permissions indicated on this page will be applied to all new "
-"connections."
-msgstr "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet."
-
-#: ../../Zotlabs/Module/Connedit.php:884
-msgid "Connection Tools"
-msgstr "Verbindungswerkzeuge"
-
-#: ../../Zotlabs/Module/Connedit.php:886
-msgid "Slide to adjust your degree of friendship"
-msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen"
-
-#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155
-#: ../../include/js_strings.php:20
-msgid "Rating"
-msgstr "Bewertung"
-
-#: ../../Zotlabs/Module/Connedit.php:888
-msgid "Slide to adjust your rating"
-msgstr "Verschieben, um Deine Bewertung einzustellen"
-
-#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
-msgid "Optionally explain your rating"
-msgstr "Optional kannst Du Deine Bewertung begründen"
-
-#: ../../Zotlabs/Module/Connedit.php:891
-msgid "Custom Filter"
-msgstr "Benutzerdefinierter Filter"
-
-#: ../../Zotlabs/Module/Connedit.php:892
-msgid "Only import posts with this text"
-msgstr "Nur Beiträge mit diesem Text importieren"
-
-#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
-msgid ""
-"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
-"all posts"
-msgstr "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren."
-
-#: ../../Zotlabs/Module/Connedit.php:893
-msgid "Do not import posts with this text"
-msgstr "Beiträge mit diesem Text nicht importieren"
-
-#: ../../Zotlabs/Module/Connedit.php:895
-msgid "This information is public!"
-msgstr "Diese Information ist öffentlich!"
-
-#: ../../Zotlabs/Module/Connedit.php:900
-msgid "Connection Pending Approval"
-msgstr "Verbindung wartet auf Bestätigung"
-
-#: ../../Zotlabs/Module/Connedit.php:905
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."
-
-#: ../../Zotlabs/Module/Connedit.php:912
-msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can change those settings here but "
-"they wont have any impact unless the inherited setting changes."
-msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen."
-
-#: ../../Zotlabs/Module/Connedit.php:913
-msgid "Last update:"
-msgstr "Letzte Aktualisierung:"
-
-#: ../../Zotlabs/Module/Connedit.php:922
-msgid "Details"
-msgstr "Details"
-
-#: ../../Zotlabs/Module/Chat.php:181
-msgid "Room not found"
-msgstr "Chatraum nicht gefunden"
-
-#: ../../Zotlabs/Module/Chat.php:197
-msgid "Leave Room"
-msgstr "Raum verlassen"
-
-#: ../../Zotlabs/Module/Chat.php:198
-msgid "Delete Room"
-msgstr "Raum löschen"
-
-#: ../../Zotlabs/Module/Chat.php:199
-msgid "I am away right now"
-msgstr "Ich bin gerade nicht da"
-
-#: ../../Zotlabs/Module/Chat.php:200
-msgid "I am online"
-msgstr "Ich bin online"
-
-#: ../../Zotlabs/Module/Chat.php:202
-msgid "Bookmark this room"
-msgstr "Lesezeichen für diesen Raum setzen"
-
-#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:241
-#: ../../Zotlabs/Module/Mail.php:362 ../../include/conversation.php:1313
-msgid "Please enter a link URL:"
-msgstr "Gib eine URL ein:"
-
-#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:768
-#: ../../include/conversation.php:1432
-msgid "Encrypt text"
-msgstr "Text verschlüsseln"
-
-#: ../../Zotlabs/Module/Chat.php:232
-msgid "New Chatroom"
-msgstr "Neuer Chatraum"
-
-#: ../../Zotlabs/Module/Chat.php:233
-msgid "Chatroom name"
-msgstr "Chatraumname"
-
-#: ../../Zotlabs/Module/Chat.php:234
-msgid "Expiration of chats (minutes)"
-msgstr "Verfall von Chats (Minuten)"
-
-#: ../../Zotlabs/Module/Chat.php:250
-#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "%1$ss Chaträume"
-
-#: ../../Zotlabs/Module/Chat.php:255
-msgid "No chatrooms available"
-msgstr "Keine Chaträume verfügbar"
-
-#: ../../Zotlabs/Module/Chat.php:259
-msgid "Expiration"
-msgstr "Verfall"
-
-#: ../../Zotlabs/Module/Chat.php:260
-msgid "min"
-msgstr "min"
-
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:242
-#: ../../include/conversation.php:1831 ../../include/nav.php:433
-msgid "Photos"
-msgstr "Fotos"
-
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:237
-#: ../../Zotlabs/Storage/Browser.php:269 ../../include/conversation.php:1839
-#: ../../include/nav.php:441
-msgid "Files"
-msgstr "Dateien"
-
-#: ../../Zotlabs/Module/Menu.php:49
-msgid "Unable to update menu."
-msgstr "Kann Menü nicht aktualisieren."
-
-#: ../../Zotlabs/Module/Menu.php:60
-msgid "Unable to create menu."
-msgstr "Kann Menü nicht erstellen."
-
-#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110
-msgid "Menu Name"
-msgstr "Name des Menüs"
-
-#: ../../Zotlabs/Module/Menu.php:98
-msgid "Unique name (not visible on webpage) - required"
-msgstr "Eindeutiger Name (nicht sichtbar auf der Webseite) – erforderlich"
-
-#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111
-msgid "Menu Title"
-msgstr "Menütitel"
-
-#: ../../Zotlabs/Module/Menu.php:99
-msgid "Visible on webpage - leave empty for no title"
-msgstr "Sichtbar auf der Webseite – für keinen Titel leer lassen"
-
-#: ../../Zotlabs/Module/Menu.php:100
-msgid "Allow Bookmarks"
-msgstr "Lesezeichen erlauben"
-
-#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Im Menü können gespeicherte Lesezeichen abgelegt werden"
-
-#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159
-msgid "Submit and proceed"
-msgstr "Absenden und fortfahren"
-
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2289
-msgid "Menus"
-msgstr "Menüs"
-
-#: ../../Zotlabs/Module/Menu.php:117
-msgid "Bookmarks allowed"
-msgstr "Lesezeichen erlaubt"
-
-#: ../../Zotlabs/Module/Menu.php:119
-msgid "Delete this menu"
-msgstr "Lösche dieses Menü"
-
-#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154
-msgid "Edit menu contents"
-msgstr "Bearbeite Menü Inhalte"
-
-#: ../../Zotlabs/Module/Menu.php:121
-msgid "Edit this menu"
-msgstr "Dieses Menü bearbeiten"
-
-#: ../../Zotlabs/Module/Menu.php:136
-msgid "Menu could not be deleted."
-msgstr "Menü konnte nicht gelöscht werden."
-
-#: ../../Zotlabs/Module/Menu.php:149
-msgid "Edit Menu"
-msgstr "Menü bearbeiten"
-
-#: ../../Zotlabs/Module/Menu.php:153
-msgid "Add or remove entries to this menu"
-msgstr "Einträge zu diesem Menü hinzufügen oder entfernen"
-
-#: ../../Zotlabs/Module/Menu.php:155
-msgid "Menu name"
-msgstr "Menü Name"
-
-#: ../../Zotlabs/Module/Menu.php:155
-msgid "Must be unique, only seen by you"
-msgstr "Muss eindeutig sein, ist aber nur für Dich sichtbar"
-
-#: ../../Zotlabs/Module/Menu.php:156
-msgid "Menu title"
-msgstr "Menü Titel"
-
-#: ../../Zotlabs/Module/Menu.php:156
-msgid "Menu title as seen by others"
-msgstr "Menü Titel wie er von anderen gesehen wird"
-
-#: ../../Zotlabs/Module/Menu.php:157
-msgid "Allow bookmarks"
-msgstr "Erlaube Lesezeichen"
-
-#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2290
-msgid "Layouts"
-msgstr "Layouts"
-
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:245
-#: ../../include/nav.php:208 ../../include/nav.php:312
-#: ../../include/help.php:68 ../../include/help.php:74
-msgid "Help"
-msgstr "Hilfe"
-
-#: ../../Zotlabs/Module/Layouts.php:186
-msgid "Comanche page description language help"
-msgstr "Hilfe zur Comanche-Seitenbeschreibungssprache"
-
-#: ../../Zotlabs/Module/Layouts.php:190
-msgid "Layout Description"
-msgstr "Layout-Beschreibung"
-
-#: ../../Zotlabs/Module/Layouts.php:195
-msgid "Download PDL file"
-msgstr "PDL-Datei herunterladen"
-
-#: ../../Zotlabs/Module/Cloud.php:114
-msgid "Unknown error"
-msgstr "Unbekannter Fehler"
-
-#: ../../Zotlabs/Module/Tagger.php:48
-msgid "Post not found."
-msgstr "Beitrag nicht gefunden."
-
-#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:160
-#: ../../include/bbcode.php:335
-msgid "post"
-msgstr "Beitrag"
-
-#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
-#: ../../include/text.php:1946
-msgid "comment"
-msgstr "Kommentar"
-
-#: ../../Zotlabs/Module/Tagger.php:117
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s hat %2$ss %3$s mit %4$s verschlagwortet"
-
-#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert."
-
-#: ../../Zotlabs/Module/Pconfig.php:48
-msgid "Configuration Editor"
-msgstr "Konfigurationseditor"
-
-#: ../../Zotlabs/Module/Pconfig.php:49
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird."
-
-#: ../../Zotlabs/Module/Defperms.php:239
-msgid ""
-"If enabled, connection requests will be approved without your interaction"
-msgstr "Ist dies aktiviert, werden Verbindungsanfragen ohne Deine aktive Zustimmung bestätigt."
-
-#: ../../Zotlabs/Module/Defperms.php:246
-msgid "Automatic approval settings"
-msgstr "Einstellungen für automatische Bestätigung"
-
-#: ../../Zotlabs/Module/Defperms.php:254
-msgid ""
-"Some individual permissions may have been preset or locked based on your "
-"channel type and privacy settings."
-msgstr "Einige individuelle Berechtigungen können basierend auf Deinen Kanal- und Privatsphäre-Einstellungen vorbelegt oder gesperrt sein."
-
-#: ../../Zotlabs/Module/Group.php:24
-msgid "Privacy group created."
-msgstr "Gruppe wurde erstellt."
-
-#: ../../Zotlabs/Module/Group.php:30
-msgid "Could not create privacy group."
-msgstr "Gruppe konnte nicht erstellt werden."
-
-#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:143
-#: ../../include/items.php:4101
-msgid "Privacy group not found."
-msgstr "Gruppe nicht gefunden."
-
-#: ../../Zotlabs/Module/Group.php:58
-msgid "Privacy group updated."
-msgstr "Gruppe wurde aktualisiert."
-
-#: ../../Zotlabs/Module/Group.php:92
-msgid "Create a group of channels."
-msgstr "Erstelle eine Gruppe für Kanäle."
-
-#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:186
-msgid "Privacy group name: "
-msgstr "Gruppenname:"
-
-#: ../../Zotlabs/Module/Group.php:95 ../../Zotlabs/Module/Group.php:189
-msgid "Members are visible to other channels"
-msgstr "Mitglieder sind sichtbar für andere Kanäle"
-
-#: ../../Zotlabs/Module/Group.php:113
-msgid "Privacy group removed."
-msgstr "Gruppe wurde entfernt."
-
-#: ../../Zotlabs/Module/Group.php:115
-msgid "Unable to remove privacy group."
-msgstr "Gruppe konnte nicht entfernt werden."
-
-#: ../../Zotlabs/Module/Group.php:185
-msgid "Privacy group editor"
-msgstr "Gruppeneditor"
-
-#: ../../Zotlabs/Module/Group.php:199 ../../Zotlabs/Module/Help.php:81
-msgid "Members"
-msgstr "Mitglieder"
-
-#: ../../Zotlabs/Module/Group.php:201
-msgid "All Connected Channels"
-msgstr "Alle verbundenen Kanäle"
-
-#: ../../Zotlabs/Module/Group.php:233
-msgid "Click on a channel to add or remove."
-msgstr "Wähle einen Kanal zum hinzufügen oder entfernen aus."
-
-#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184
-#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659
-msgid "Profile not found."
-msgstr "Profil nicht gefunden."
-
-#: ../../Zotlabs/Module/Profiles.php:44
-msgid "Profile deleted."
-msgstr "Profil gelöscht."
-
-#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127
-msgid "New profile created."
-msgstr "Neues Profil erstellt."
-
-#: ../../Zotlabs/Module/Profiles.php:111
-msgid "Profile unavailable to clone."
-msgstr "Profil kann nicht geklont werden."
-
-#: ../../Zotlabs/Module/Profiles.php:146
-msgid "Profile unavailable to export."
-msgstr "Dieses Profil kann nicht exportiert werden."
-
-#: ../../Zotlabs/Module/Profiles.php:252
-msgid "Profile Name is required."
-msgstr "Profil-Name erforderlich."
-
-#: ../../Zotlabs/Module/Profiles.php:459
-msgid "Marital Status"
-msgstr "Familienstand"
-
-#: ../../Zotlabs/Module/Profiles.php:463
-msgid "Romantic Partner"
-msgstr "Romantische Partner"
-
-#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:775
-msgid "Likes"
-msgstr "Gefällt"
-
-#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:776
-msgid "Dislikes"
-msgstr "Gefällt nicht"
-
-#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:783
-msgid "Work/Employment"
-msgstr "Arbeit/Anstellung"
-
-#: ../../Zotlabs/Module/Profiles.php:478
-msgid "Religion"
-msgstr "Religion"
-
-#: ../../Zotlabs/Module/Profiles.php:482
-msgid "Political Views"
-msgstr "Politische Ansichten"
-
-#: ../../Zotlabs/Module/Profiles.php:486
-#: ../../addon/openid/MysqlProvider.php:74
-msgid "Gender"
-msgstr "Geschlecht"
-
-#: ../../Zotlabs/Module/Profiles.php:490
-msgid "Sexual Preference"
-msgstr "Sexuelle Orientierung"
-
-#: ../../Zotlabs/Module/Profiles.php:494
-msgid "Homepage"
-msgstr "Webseite"
-
-#: ../../Zotlabs/Module/Profiles.php:498
-msgid "Interests"
-msgstr "Hobbys/Interessen"
-
-#: ../../Zotlabs/Module/Profiles.php:594
-msgid "Profile updated."
-msgstr "Profil aktualisiert."
-
-#: ../../Zotlabs/Module/Profiles.php:678
-msgid "Hide your connections list from viewers of this profile"
-msgstr "Deine Verbindungen vor Betrachtern dieses Profils verbergen"
-
-#: ../../Zotlabs/Module/Profiles.php:725
-msgid "Edit Profile Details"
-msgstr "Bearbeite Profil-Details"
-
-#: ../../Zotlabs/Module/Profiles.php:727
-msgid "View this profile"
-msgstr "Dieses Profil ansehen"
-
-#: ../../Zotlabs/Module/Profiles.php:728 ../../Zotlabs/Module/Profiles.php:827
-#: ../../include/channel.php:1320
-msgid "Edit visibility"
-msgstr "Sichtbarkeit bearbeiten"
-
-#: ../../Zotlabs/Module/Profiles.php:729
-msgid "Profile Tools"
-msgstr "Profilwerkzeuge"
-
-#: ../../Zotlabs/Module/Profiles.php:730
-msgid "Change cover photo"
-msgstr "Titelbild ändern"
-
-#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1290
-msgid "Change profile photo"
-msgstr "Profilfoto ändern"
-
-#: ../../Zotlabs/Module/Profiles.php:732
-msgid "Create a new profile using these settings"
-msgstr "Neues Profil anlegen und diese Einstellungen übernehmen"
-
-#: ../../Zotlabs/Module/Profiles.php:733
-msgid "Clone this profile"
-msgstr "Dieses Profil klonen"
-
-#: ../../Zotlabs/Module/Profiles.php:734
-msgid "Delete this profile"
-msgstr "Dieses Profil löschen"
-
-#: ../../Zotlabs/Module/Profiles.php:735
-msgid "Add profile things"
-msgstr "Sachen zum Profil hinzufügen"
-
-#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1705
-msgid "Personal"
-msgstr "Persönlich"
-
-#: ../../Zotlabs/Module/Profiles.php:738
-msgid "Relation"
-msgstr "Beziehung"
-
-#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:58
-msgid "Miscellaneous"
-msgstr "Verschiedenes"
-
-#: ../../Zotlabs/Module/Profiles.php:741
-msgid "Import profile from file"
-msgstr "Profil aus einer Datei importieren"
-
-#: ../../Zotlabs/Module/Profiles.php:742
-msgid "Export profile to file"
-msgstr "Profil in eine Datei exportieren"
-
-#: ../../Zotlabs/Module/Profiles.php:743
-msgid "Your gender"
-msgstr "Dein Geschlecht"
-
-#: ../../Zotlabs/Module/Profiles.php:744
-msgid "Marital status"
-msgstr "Familienstand"
-
-#: ../../Zotlabs/Module/Profiles.php:745
-msgid "Sexual preference"
-msgstr "Sexuelle Orientierung"
-
-#: ../../Zotlabs/Module/Profiles.php:748
-msgid "Profile name"
-msgstr "Profilname"
-
-#: ../../Zotlabs/Module/Profiles.php:750
-msgid "This is your default profile."
-msgstr "Das ist Dein Standardprofil."
-
-#: ../../Zotlabs/Module/Profiles.php:752
-msgid "Your full name"
-msgstr "Dein voller Name"
-
-#: ../../Zotlabs/Module/Profiles.php:753
-msgid "Title/Description"
-msgstr "Titel/Beschreibung"
-
-#: ../../Zotlabs/Module/Profiles.php:756
-msgid "Street address"
-msgstr "Straße und Hausnummer"
-
-#: ../../Zotlabs/Module/Profiles.php:757
-msgid "Locality/City"
-msgstr "Wohnort"
-
-#: ../../Zotlabs/Module/Profiles.php:758
-msgid "Region/State"
-msgstr "Region/Bundesstaat"
-
-#: ../../Zotlabs/Module/Profiles.php:759
-msgid "Postal/Zip code"
-msgstr "Postleitzahl"
-
-#: ../../Zotlabs/Module/Profiles.php:765
-msgid "Who (if applicable)"
-msgstr "Wer (falls anwendbar)"
-
-#: ../../Zotlabs/Module/Profiles.php:765
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
-
-#: ../../Zotlabs/Module/Profiles.php:766
-msgid "Since (date)"
-msgstr "Seit (Datum)"
-
-#: ../../Zotlabs/Module/Profiles.php:769
-msgid "Tell us about yourself"
-msgstr "Erzähle uns ein wenig von Dir"
-
-#: ../../Zotlabs/Module/Profiles.php:770
-#: ../../addon/openid/MysqlProvider.php:68
-msgid "Homepage URL"
-msgstr "Homepage-URL"
-
-#: ../../Zotlabs/Module/Profiles.php:771
-msgid "Hometown"
-msgstr "Heimatort"
-
-#: ../../Zotlabs/Module/Profiles.php:772
-msgid "Political views"
-msgstr "Politische Ansichten"
-
-#: ../../Zotlabs/Module/Profiles.php:773
-msgid "Religious views"
-msgstr "Religiöse Ansichten"
-
-#: ../../Zotlabs/Module/Profiles.php:774
-msgid "Keywords used in directory listings"
-msgstr "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden"
-
-#: ../../Zotlabs/Module/Profiles.php:774
-msgid "Example: fishing photography software"
-msgstr "Beispiel: Angeln Fotografie Software"
-
-#: ../../Zotlabs/Module/Profiles.php:777
-msgid "Musical interests"
-msgstr "Musikalische Interessen"
-
-#: ../../Zotlabs/Module/Profiles.php:778
-msgid "Books, literature"
-msgstr "Bücher, Literatur"
-
-#: ../../Zotlabs/Module/Profiles.php:779
-msgid "Television"
-msgstr "Fernsehen"
-
-#: ../../Zotlabs/Module/Profiles.php:780
-msgid "Film/Dance/Culture/Entertainment"
-msgstr "Film/Tanz/Kultur/Unterhaltung"
-
-#: ../../Zotlabs/Module/Profiles.php:781
-msgid "Hobbies/Interests"
-msgstr "Hobbys/Interessen"
-
-#: ../../Zotlabs/Module/Profiles.php:782
-msgid "Love/Romance"
-msgstr "Liebe/Romantik"
-
-#: ../../Zotlabs/Module/Profiles.php:784
-msgid "School/Education"
-msgstr "Schule/Ausbildung"
-
-#: ../../Zotlabs/Module/Profiles.php:785
-msgid "Contact information and social networks"
-msgstr "Kontaktinformation und soziale Netzwerke"
-
-#: ../../Zotlabs/Module/Profiles.php:786
-msgid "My other channels"
-msgstr "Meine anderen Kanäle"
-
-#: ../../Zotlabs/Module/Profiles.php:788
-msgid "Communications"
-msgstr "Kommunikation"
-
-#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1316
-msgid "Profile Image"
-msgstr "Profilfoto:"
-
-#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1297
-#: ../../include/nav.php:151
-msgid "Edit Profiles"
-msgstr "Profile bearbeiten"
-
-#: ../../Zotlabs/Module/Editwebpage.php:139
-msgid "Page link"
-msgstr "Seiten-Link"
-
-#: ../../Zotlabs/Module/Editwebpage.php:166
-msgid "Edit Webpage"
-msgstr "Webseite bearbeiten"
-
-#: ../../Zotlabs/Module/Manage.php:145
-msgid "Create a new channel"
-msgstr "Neuen Kanal anlegen"
-
-#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:234
-#: ../../include/nav.php:136 ../../include/nav.php:222
-msgid "Channel Manager"
-msgstr "Kanal-Manager"
-
-#: ../../Zotlabs/Module/Manage.php:171
-msgid "Current Channel"
-msgstr "Aktueller Kanal"
-
-#: ../../Zotlabs/Module/Manage.php:173
-msgid "Switch to one of your channels by selecting it."
-msgstr "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst."
-
-#: ../../Zotlabs/Module/Manage.php:174
-msgid "Default Channel"
-msgstr "Standard Kanal"
-
-#: ../../Zotlabs/Module/Manage.php:175
-msgid "Make Default"
-msgstr "Zum Standard machen"
-
-#: ../../Zotlabs/Module/Manage.php:178
-#, php-format
-msgid "%d new messages"
-msgstr "%d neue Nachrichten"
-
-#: ../../Zotlabs/Module/Manage.php:179
-#, php-format
-msgid "%d new introductions"
-msgstr "%d neue Vorstellungen"
-
-#: ../../Zotlabs/Module/Manage.php:181
-msgid "Delegated Channel"
-msgstr "Delegierte Kanäle"
-
-#: ../../Zotlabs/Module/Cards.php:95
-msgid "Add Card"
-msgstr "Karte hinzufügen"
-
-#: ../../Zotlabs/Module/Dirsearch.php:33
-msgid "This directory server requires an access token"
-msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken"
-
-#: ../../Zotlabs/Module/Siteinfo.php:19
-msgid "About this site"
-msgstr "Ãœber diese Seite"
-
-#: ../../Zotlabs/Module/Siteinfo.php:20
-msgid "Site Name"
-msgstr "Seitenname"
-
-#: ../../Zotlabs/Module/Siteinfo.php:24
-msgid "Administrator"
-msgstr "Administrator"
-
-#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:229
-msgid "Terms of Service"
-msgstr "Nutzungsbedingungen"
-
-#: ../../Zotlabs/Module/Siteinfo.php:27
-msgid "Software and Project information"
-msgstr "Software und Projektinformationen"
-
-#: ../../Zotlabs/Module/Siteinfo.php:28
-msgid "This site is powered by $Projectname"
-msgstr "Diese Website wird bereitgestellt durch $Projectname"
-
-#: ../../Zotlabs/Module/Siteinfo.php:29
-msgid ""
-"Federated and decentralised networking and identity services provided by Zot"
-msgstr "Verbundene, dezentrale Netzwerk- und Identitätsdienste, ermöglicht mittels Zot"
-
-#: ../../Zotlabs/Module/Siteinfo.php:31
-#, php-format
-msgid "Version %s"
-msgstr "Version %s"
-
-#: ../../Zotlabs/Module/Siteinfo.php:32
-msgid "Project homepage"
-msgstr "Projekt-Website"
-
-#: ../../Zotlabs/Module/Siteinfo.php:33
-msgid "Developer homepage"
-msgstr "Entwickler-Website"
-
-#: ../../Zotlabs/Module/Ratings.php:70
-msgid "No ratings"
-msgstr "Keine Bewertungen"
-
-#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35
-#: ../../include/conversation.php:1082
-msgid "Ratings"
-msgstr "Bewertungen"
-
-#: ../../Zotlabs/Module/Ratings.php:98
-msgid "Rating: "
-msgstr "Bewertung: "
-
-#: ../../Zotlabs/Module/Ratings.php:99
-msgid "Website: "
-msgstr "Webseite: "
-
-#: ../../Zotlabs/Module/Ratings.php:101
-msgid "Description: "
-msgstr "Beschreibung: "
-
-#: ../../Zotlabs/Module/Webpages.php:54
-msgid "Import Webpage Elements"
-msgstr "Webseitenelemente importieren"
-
-#: ../../Zotlabs/Module/Webpages.php:55
-msgid "Import selected"
-msgstr "Import ausgewählt"
-
-#: ../../Zotlabs/Module/Webpages.php:78
-msgid "Export Webpage Elements"
-msgstr "Webseitenelemente exportieren"
-
-#: ../../Zotlabs/Module/Webpages.php:79
-msgid "Export selected"
-msgstr "Exportieren ausgewählt"
-
-#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:238
-#: ../../include/conversation.php:1912 ../../include/nav.php:513
-msgid "Webpages"
-msgstr "Webseiten"
-
-#: ../../Zotlabs/Module/Webpages.php:248
-msgid "Actions"
-msgstr "Aktionen"
-
-#: ../../Zotlabs/Module/Webpages.php:249
-msgid "Page Link"
-msgstr "Seiten-Link"
-
-#: ../../Zotlabs/Module/Webpages.php:250
-msgid "Page Title"
-msgstr "Seitentitel"
-
-#: ../../Zotlabs/Module/Webpages.php:280
-msgid "Invalid file type."
-msgstr "Ungültiger Dateityp."
-
-#: ../../Zotlabs/Module/Webpages.php:292
-msgid "Error opening zip file"
-msgstr "Fehler beim Öffnen der ZIP-Datei"
-
-#: ../../Zotlabs/Module/Webpages.php:303
-msgid "Invalid folder path."
-msgstr "Ungültiger Ordnerpfad."
-
-#: ../../Zotlabs/Module/Webpages.php:330
-msgid "No webpage elements detected."
-msgstr "Keine Webseitenelemente erkannt."
-
-#: ../../Zotlabs/Module/Webpages.php:405
-msgid "Import complete."
-msgstr "Import abgeschlossen."
-
-#: ../../Zotlabs/Module/Changeaddr.php:35
-msgid ""
-"Channel name changes are not allowed within 48 hours of changing the account"
-" password."
-msgstr "Innerhalb von 48 Stunden nach einer Änderung des Konto-Passworts können Kanäle nicht umbenannt werden."
-
-#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:214
-#: ../../include/channel.php:599
-msgid "Reserved nickname. Please choose another."
-msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
-
-#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:219
-#: ../../include/channel.php:604
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
-
-#: ../../Zotlabs/Module/Changeaddr.php:77
-msgid "Change channel nickname/address"
-msgstr "Kanalname/-adresse ändern"
-
-#: ../../Zotlabs/Module/Changeaddr.php:78
-msgid "Any/all connections on other networks will be lost!"
-msgstr "Jegliche/alle Verbindungen zu anderen Netzwerken gehen verloren!"
-
-#: ../../Zotlabs/Module/Changeaddr.php:80
-msgid "New channel address"
-msgstr "Neue Kanaladresse"
-
-#: ../../Zotlabs/Module/Changeaddr.php:81
-msgid "Rename Channel"
-msgstr "Kanal umbenennen"
-
-#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43
-msgid "Item is not editable"
-msgstr "Element kann nicht bearbeitet werden."
-
-#: ../../Zotlabs/Module/Editpost.php:108 ../../Zotlabs/Module/Rpost.php:178
-msgid "Edit post"
-msgstr "Bearbeite Beitrag"
-
-#: ../../Zotlabs/Module/Dreport.php:45
-msgid "Invalid message"
-msgstr "Ungültige Beitrags-ID (mid)"
-
-#: ../../Zotlabs/Module/Dreport.php:78
-msgid "no results"
-msgstr "keine Ergebnisse"
-
-#: ../../Zotlabs/Module/Dreport.php:93
-msgid "channel sync processed"
-msgstr "Kanal-Sync verarbeitet"
-
-#: ../../Zotlabs/Module/Dreport.php:97
-msgid "queued"
-msgstr "zur Warteschlange hinzugefügt"
-
-#: ../../Zotlabs/Module/Dreport.php:101
-msgid "posted"
-msgstr "zugestellt"
-
-#: ../../Zotlabs/Module/Dreport.php:105
-msgid "accepted for delivery"
-msgstr "für Zustellung akzeptiert"
-
-#: ../../Zotlabs/Module/Dreport.php:109
-msgid "updated"
-msgstr "aktualisiert"
-
-#: ../../Zotlabs/Module/Dreport.php:112
-msgid "update ignored"
-msgstr "Aktualisierung ignoriert"
-
-#: ../../Zotlabs/Module/Dreport.php:115
-msgid "permission denied"
-msgstr "Zugriff verweigert"
-
-#: ../../Zotlabs/Module/Dreport.php:119
-msgid "recipient not found"
-msgstr "Empfänger nicht gefunden."
-
-#: ../../Zotlabs/Module/Dreport.php:122
-msgid "mail recalled"
-msgstr "Mail widerrufen"
-
-#: ../../Zotlabs/Module/Dreport.php:125
-msgid "duplicate mail received"
-msgstr "Doppelte Mail erhalten"
-
-#: ../../Zotlabs/Module/Dreport.php:128
-msgid "mail delivered"
-msgstr "Mail zugestellt"
-
-#: ../../Zotlabs/Module/Dreport.php:148
-#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Zustellungsbericht für %1$s"
-
-#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:39
-#: ../../Zotlabs/Widget/Wiki_pages.php:96
-msgid "Options"
-msgstr "Optionen"
-
-#: ../../Zotlabs/Module/Dreport.php:152
-msgid "Redeliver"
-msgstr "Erneut zustellen"
-
-#: ../../Zotlabs/Module/Sources.php:37
-msgid "Failed to create source. No channel selected."
-msgstr "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt."
-
-#: ../../Zotlabs/Module/Sources.php:51
-msgid "Source created."
-msgstr "Quelle erstellt."
-
-#: ../../Zotlabs/Module/Sources.php:64
-msgid "Source updated."
-msgstr "Quelle aktualisiert."
-
-#: ../../Zotlabs/Module/Sources.php:90
-msgid "*"
-msgstr "*"
-
-#: ../../Zotlabs/Module/Sources.php:96
-#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:228
-msgid "Channel Sources"
-msgstr "Kanal-Quellen"
-
-#: ../../Zotlabs/Module/Sources.php:97
-msgid "Manage remote sources of content for your channel."
-msgstr "Externe Inhaltsquellen für Deinen Kanal verwalten."
-
-#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
-msgid "New Source"
-msgstr "Neue Quelle"
-
-#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals."
-
-#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
-msgid "Only import content with these words (one per line)"
-msgstr "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten"
-
-#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
-msgid "Leave blank to import all public content"
-msgstr "Leer lassen, um alle öffentlichen Beiträge zu importieren"
-
-#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
-msgid "Channel Name"
-msgstr "Name des Kanals"
-
-#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
-msgid ""
-"Add the following categories to posts imported from this source (comma "
-"separated)"
-msgstr "Füge die folgenden Kategorien zu Beiträgen, die aus dieser Quelle importiert werden, hinzu (kommagetrennt)"
-
-#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
-msgid "Source not found."
-msgstr "Quelle nicht gefunden."
-
-#: ../../Zotlabs/Module/Sources.php:140
-msgid "Edit Source"
-msgstr "Quelle bearbeiten"
-
-#: ../../Zotlabs/Module/Sources.php:141
-msgid "Delete Source"
-msgstr "Quelle löschen"
-
-#: ../../Zotlabs/Module/Sources.php:169
-msgid "Source removed"
-msgstr "Quelle gelöscht"
-
-#: ../../Zotlabs/Module/Sources.php:171
-msgid "Unable to remove source."
-msgstr "Konnte die Quelle nicht löschen."
-
-#: ../../Zotlabs/Module/Like.php:22
-msgid "Like/Dislike"
-msgstr "Mögen/Nicht mögen"
-
-#: ../../Zotlabs/Module/Like.php:27
-msgid "This action is restricted to members."
-msgstr "Diese Aktion kann nur von Mitgliedern ausgeführt werden."
-
-#: ../../Zotlabs/Module/Like.php:28
-msgid ""
-"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
-"href=\"register\">register as a new $Projectname member</a> to continue."
-msgstr "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner $Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues $Projectname-Mitglied</a>."
-
-#: ../../Zotlabs/Module/Like.php:108 ../../Zotlabs/Module/Like.php:134
-#: ../../Zotlabs/Module/Like.php:172
-msgid "Invalid request."
-msgstr "Ungültige Anfrage."
-
-#: ../../Zotlabs/Module/Like.php:120 ../../include/conversation.php:122
-msgid "channel"
-msgstr "Kanal"
-
-#: ../../Zotlabs/Module/Like.php:149
-msgid "thing"
-msgstr "Sache"
-
-#: ../../Zotlabs/Module/Like.php:195
-msgid "Channel unavailable."
-msgstr "Kanal nicht vorhanden."
-
-#: ../../Zotlabs/Module/Like.php:243
-msgid "Previous action reversed."
-msgstr "Die vorherige Aktion wurde rückgängig gemacht."
-
-#: ../../Zotlabs/Module/Like.php:435 ../../addon/diaspora/Receiver.php:1462
-#: ../../addon/pubcrawl/as.php:1330 ../../include/conversation.php:160
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s gefällt %2$ss %3$s"
-
-#: ../../Zotlabs/Module/Like.php:437 ../../addon/pubcrawl/as.php:1332
-#: ../../include/conversation.php:163
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s gefällt %2$ss %3$s nicht"
-
-#: ../../Zotlabs/Module/Like.php:439
-#, php-format
-msgid "%1$s agrees with %2$s's %3$s"
-msgstr "%1$s stimmt %2$ss %3$s zu"
-
-#: ../../Zotlabs/Module/Like.php:441
-#, php-format
-msgid "%1$s doesn't agree with %2$s's %3$s"
-msgstr "%1$s lehnt %2$ss %3$s ab"
-
-#: ../../Zotlabs/Module/Like.php:443
-#, php-format
-msgid "%1$s abstains from a decision on %2$s's %3$s"
-msgstr "%1$s enthält sich zu %2$ss %3$s"
-
-#: ../../Zotlabs/Module/Like.php:445
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr "%1$s nimmt an %2$ss %3$s teil"
-
-#: ../../Zotlabs/Module/Like.php:447
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr "%1$s nimmt an %2$ss %3$s nicht teil"
-
-#: ../../Zotlabs/Module/Like.php:449
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr "%1$s nimmt vielleicht an %2$ss %3$s teil"
-
-#: ../../Zotlabs/Module/Like.php:561
-msgid "Action completed."
-msgstr "Aktion durchgeführt."
-
-#: ../../Zotlabs/Module/Like.php:562
-msgid "Thank you."
-msgstr "Vielen Dank."
-
-#: ../../Zotlabs/Module/Directory.php:250
-#, php-format
-msgid "%d rating"
-msgid_plural "%d ratings"
-msgstr[0] "%d Bewertung"
-msgstr[1] "%d Bewertungen"
-
-#: ../../Zotlabs/Module/Directory.php:261
-msgid "Gender: "
-msgstr "Geschlecht:"
-
-#: ../../Zotlabs/Module/Directory.php:263
-msgid "Status: "
-msgstr "Status:"
-
-#: ../../Zotlabs/Module/Directory.php:265
-msgid "Homepage: "
-msgstr "Webseite:"
-
-#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1564
-msgid "Age:"
-msgstr "Alter:"
-
-#: ../../Zotlabs/Module/Directory.php:319 ../../include/channel.php:1392
-#: ../../include/event.php:53 ../../include/event.php:85
-msgid "Location:"
-msgstr "Ort:"
-
-#: ../../Zotlabs/Module/Directory.php:325
-msgid "Description:"
-msgstr "Beschreibung:"
-
-#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1580
-msgid "Hometown:"
-msgstr "Heimatstadt:"
-
-#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1588
-msgid "About:"
-msgstr "Ãœber:"
-
-#: ../../Zotlabs/Module/Directory.php:333 ../../Zotlabs/Module/Suggest.php:56
-#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
-#: ../../include/conversation.php:1052 ../../include/channel.php:1377
-#: ../../include/connections.php:111
-msgid "Connect"
-msgstr "Verbinden"
-
-#: ../../Zotlabs/Module/Directory.php:334
-msgid "Public Forum:"
-msgstr "Öffentliches Forum:"
-
-#: ../../Zotlabs/Module/Directory.php:337
-msgid "Keywords: "
-msgstr "Schlüsselwörter:"
-
-#: ../../Zotlabs/Module/Directory.php:340
-msgid "Don't suggest"
-msgstr "Nicht vorschlagen"
-
-#: ../../Zotlabs/Module/Directory.php:342
-msgid "Common connections (estimated):"
-msgstr "Gemeinsame Verbindungen (geschätzt):"
-
-#: ../../Zotlabs/Module/Directory.php:391
-msgid "Global Directory"
-msgstr "Globales Verzeichnis"
-
-#: ../../Zotlabs/Module/Directory.php:391
-msgid "Local Directory"
-msgstr "Lokales Verzeichnis"
-
-#: ../../Zotlabs/Module/Directory.php:397
-msgid "Finding:"
-msgstr "Ergebnisse:"
-
-#: ../../Zotlabs/Module/Directory.php:400 ../../Zotlabs/Module/Suggest.php:64
-#: ../../include/contact_widgets.php:24
-msgid "Channel Suggestions"
-msgstr "Kanal-Vorschläge"
-
-#: ../../Zotlabs/Module/Directory.php:402
-msgid "next page"
-msgstr "nächste Seite"
-
-#: ../../Zotlabs/Module/Directory.php:402
-msgid "previous page"
-msgstr "vorherige Seite"
-
-#: ../../Zotlabs/Module/Directory.php:403
-msgid "Sort options"
-msgstr "Sortieroptionen"
-
-#: ../../Zotlabs/Module/Directory.php:404
-msgid "Alphabetic"
-msgstr "alphabetisch"
-
-#: ../../Zotlabs/Module/Directory.php:405
-msgid "Reverse Alphabetic"
-msgstr "Entgegengesetzt alphabetisch"
-
-#: ../../Zotlabs/Module/Directory.php:406
-msgid "Newest to Oldest"
-msgstr "Neueste zuerst"
-
-#: ../../Zotlabs/Module/Directory.php:407
-msgid "Oldest to Newest"
-msgstr "Älteste zuerst"
-
-#: ../../Zotlabs/Module/Directory.php:424
-msgid "No entries (some entries may be hidden)."
-msgstr "Keine Einträge gefunden (einige könnten versteckt sein)."
-
-#: ../../Zotlabs/Module/Xchan.php:10
-msgid "Xchan Lookup"
-msgstr "Xchan-Suche"
-
-#: ../../Zotlabs/Module/Xchan.php:13
-msgid "Lookup xchan beginning with (or webbie): "
-msgstr "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:"
-
-#: ../../Zotlabs/Module/Suggest.php:39
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal."
-
-#: ../../Zotlabs/Module/Suggest.php:58 ../../Zotlabs/Widget/Suggestions.php:46
-msgid "Ignore/Hide"
-msgstr "Ignorieren/Verstecken"
-
-#: ../../Zotlabs/Module/Oexchange.php:27
-msgid "Unable to find your hub."
-msgstr "Konnte Deinen Server nicht finden."
-
-#: ../../Zotlabs/Module/Oexchange.php:41
-msgid "Post successful."
-msgstr "Veröffentlichung erfolgreich."
-
-#: ../../Zotlabs/Module/Mail.php:73
-msgid "Unable to lookup recipient."
-msgstr "Konnte den Empfänger nicht finden."
-
-#: ../../Zotlabs/Module/Mail.php:80
-msgid "Unable to communicate with requested channel."
-msgstr "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Mail.php:87
-msgid "Cannot verify requested channel."
-msgstr "Verifizierung des angeforderten Kanals fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Mail.php:105
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Mail.php:160
-msgid "Messages"
-msgstr "Nachrichten"
-
-#: ../../Zotlabs/Module/Mail.php:173
-msgid "message"
-msgstr "Nachricht"
-
-#: ../../Zotlabs/Module/Mail.php:214
-msgid "Message recalled."
-msgstr "Nachricht widerrufen."
-
-#: ../../Zotlabs/Module/Mail.php:227
-msgid "Conversation removed."
-msgstr "Unterhaltung gelöscht."
-
-#: ../../Zotlabs/Module/Mail.php:242 ../../Zotlabs/Module/Mail.php:363
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Verfällt YYYY-MM-DD HH;MM"
-
-#: ../../Zotlabs/Module/Mail.php:270
-msgid "Requested channel is not in this network"
-msgstr "Angeforderter Kanal ist nicht in diesem Netzwerk."
-
-#: ../../Zotlabs/Module/Mail.php:278
-msgid "Send Private Message"
-msgstr "Private Nachricht senden"
-
-#: ../../Zotlabs/Module/Mail.php:279 ../../Zotlabs/Module/Mail.php:421
-msgid "To:"
-msgstr "An:"
-
-#: ../../Zotlabs/Module/Mail.php:282 ../../Zotlabs/Module/Mail.php:423
-msgid "Subject:"
-msgstr "Betreff:"
-
-#: ../../Zotlabs/Module/Mail.php:287 ../../Zotlabs/Module/Mail.php:429
-#: ../../include/conversation.php:1382
-msgid "Attach file"
-msgstr "Datei anhängen"
-
-#: ../../Zotlabs/Module/Mail.php:289
-msgid "Send"
-msgstr "Absenden"
-
-#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
-#: ../../include/conversation.php:1427
-msgid "Set expiration date"
-msgstr "Verfallsdatum"
-
-#: ../../Zotlabs/Module/Mail.php:393
-msgid "Delete message"
-msgstr "Nachricht löschen"
-
-#: ../../Zotlabs/Module/Mail.php:394
-msgid "Delivery report"
-msgstr "Zustellungsbericht"
-
-#: ../../Zotlabs/Module/Mail.php:395
-msgid "Recall message"
-msgstr "Nachricht widerrufen"
-
-#: ../../Zotlabs/Module/Mail.php:397
-msgid "Message has been recalled."
-msgstr "Die Nachricht wurde widerrufen."
-
-#: ../../Zotlabs/Module/Mail.php:414
-msgid "Delete Conversation"
-msgstr "Unterhaltung löschen"
-
-#: ../../Zotlabs/Module/Mail.php:416
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten."
-
-#: ../../Zotlabs/Module/Mail.php:420
-msgid "Send Reply"
-msgstr "Antwort senden"
-
-#: ../../Zotlabs/Module/Mail.php:425
-#, php-format
-msgid "Your message for %s (%s):"
-msgstr "Deine Nachricht für %s (%s):"
-
-#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12
-msgid "Public Hubs"
-msgstr "Öffentliche Hubs"
-
-#: ../../Zotlabs/Module/Pubsites.php:27
-msgid ""
-"The listed hubs allow public registration for the $Projectname network. All "
-"hubs in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some hubs may require subscription or "
-"provide tiered service plans. The hub itself <strong>may</strong> provide "
-"additional details."
-msgstr "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im $Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen."
-
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Hub URL"
-msgstr "Hub-URL"
-
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Access Type"
-msgstr "Zugriffstyp"
-
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Registration Policy"
-msgstr "Registrierungsrichtlinien"
-
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Stats"
-msgstr "Statistiken"
-
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Software"
-msgstr "Software"
-
-#: ../../Zotlabs/Module/Pubsites.php:49
-msgid "Rate"
-msgstr "Bewerten"
-
-#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:263
-msgid "webpage"
-msgstr "Webseite"
-
-#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:269
-msgid "block"
-msgstr "Block"
-
-#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:266
-msgid "layout"
-msgstr "Layout"
-
-#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:272
-msgid "menu"
-msgstr "Menü"
-
-#: ../../Zotlabs/Module/Impel.php:183
-#, php-format
-msgid "%s element installed"
-msgstr "Element für %s installiert"
-
-#: ../../Zotlabs/Module/Impel.php:186
-#, php-format
-msgid "%s element installation failed"
-msgstr "Installation des Elements %s fehlgeschlagen"
-
-#: ../../Zotlabs/Module/Rbmark.php:94
-msgid "Select a bookmark folder"
-msgstr "Lesezeichenordner wählen"
-
-#: ../../Zotlabs/Module/Rbmark.php:99
-msgid "Save Bookmark"
-msgstr "Lesezeichen speichern"
-
-#: ../../Zotlabs/Module/Rbmark.php:100
-msgid "URL of bookmark"
-msgstr "URL des Lesezeichens"
-
-#: ../../Zotlabs/Module/Rbmark.php:105
-msgid "Or enter new bookmark folder name"
-msgstr "Oder gib einen neuen Namen für den Lesezeichenordner ein"
-
-#: ../../Zotlabs/Module/Filer.php:52
-msgid "Enter a folder name"
-msgstr "Gib einen Ordnernamen ein"
-
-#: ../../Zotlabs/Module/Filer.php:52
-msgid "or select an existing folder (doubleclick)"
-msgstr "oder wähle einen vorhanden Ordner aus (Doppelklick)"
-
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:151
-msgid "Save to Folder"
-msgstr "In Ordner speichern"
-
-#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "Abrufen der URL gab einen Fehler zurück: %1$s"
-
-#: ../../Zotlabs/Module/Register.php:49
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal."
-
-#: ../../Zotlabs/Module/Register.php:55
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Register.php:89
-msgid "Passwords do not match."
-msgstr "Passwörter stimmen nicht überein."
-
-#: ../../Zotlabs/Module/Register.php:127 ../../Zotlabs/Module/Register.php:137
-msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."
-
-#: ../../Zotlabs/Module/Register.php:135
-msgid "Registration successful. Continue to create your first channel..."
-msgstr "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst..."
-
-#: ../../Zotlabs/Module/Register.php:144
-msgid "Your registration is pending approval by the site owner."
-msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
-
-#: ../../Zotlabs/Module/Register.php:147
-msgid "Your registration can not be processed."
-msgstr "Deine Registrierung konnte nicht verarbeitet werden."
-
-#: ../../Zotlabs/Module/Register.php:192
-msgid "Registration on this hub is disabled."
-msgstr "Die Registrierung auf diesem Hub ist nicht möglich."
-
-#: ../../Zotlabs/Module/Register.php:201
-msgid "Registration on this hub is by approval only."
-msgstr "Eine Registrierung auf diesem Hub erfordert die Zustimmung durch den Administrator."
-
-#: ../../Zotlabs/Module/Register.php:202
-msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
-msgstr "<a href=\"pubsites\">Registriere Dich auf einem der anderen verbundenen Hubs.</a>"
-
-#: ../../Zotlabs/Module/Register.php:212
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal."
-
-#: ../../Zotlabs/Module/Register.php:235
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Ich akzeptiere die %s für diese Webseite"
-
-#: ../../Zotlabs/Module/Register.php:241
-#, php-format
-msgid "I am over %s years of age and accept the %s for this website"
-msgstr "Ich bin älter als %s Jahre und akzeptiere die %s dieser Website."
-
-#: ../../Zotlabs/Module/Register.php:245
-msgid "Your email address"
-msgstr "Ihre E-Mail Adresse"
-
-#: ../../Zotlabs/Module/Register.php:246
-msgid "Choose a password"
-msgstr "Passwort"
-
-#: ../../Zotlabs/Module/Register.php:247
-msgid "Please re-enter your password"
-msgstr "Bitte gib Dein Passwort noch einmal ein"
-
-#: ../../Zotlabs/Module/Register.php:248
-msgid "Please enter your invitation code"
-msgstr "Bitte trage Deinen Einladungs-Code ein"
-
-#: ../../Zotlabs/Module/Register.php:253
-msgid "no"
-msgstr "nein"
-
-#: ../../Zotlabs/Module/Register.php:253
-msgid "yes"
-msgstr "ja"
-
-#: ../../Zotlabs/Module/Register.php:268
-msgid "Membership on this site is by invitation only."
-msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
-
-#: ../../Zotlabs/Module/Register.php:280 ../../boot.php:1645
-#: ../../include/nav.php:196
-msgid "Register"
-msgstr "Registrieren"
-
-#: ../../Zotlabs/Module/Register.php:281
-msgid ""
-"This site may require email verification after submitting this form. If you "
-"are returned to a login page, please check your email for instructions."
-msgstr "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Absenden des Formulars. Wenn Du auf eine Login-Seite zurückgeleitet wirst, prüfe bitte Deinen Posteingang auf neue Mails mit entsprechenden Hinweisen."
-
-#: ../../Zotlabs/Module/Cover_photo.php:136
-#: ../../Zotlabs/Module/Cover_photo.php:186
-msgid "Cover Photos"
-msgstr "Cover Foto"
-
-#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4478
-msgid "female"
-msgstr "weiblich"
-
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4479
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s hat ihr %2$s aktualisiert"
-
-#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4480
-msgid "male"
-msgstr "männlich"
-
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4481
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s hat sein %2$s aktualisiert"
-
-#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4483
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "%1$s hat sein/ihr %2$s aktualisiert"
-
-#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2053
-msgid "cover photo"
-msgstr "Cover Foto"
-
-#: ../../Zotlabs/Module/Cover_photo.php:360
-msgid "Upload Cover Photo"
-msgstr "Cover Foto hochladen"
-
-#: ../../Zotlabs/Module/Help.php:23
-msgid "Documentation Search"
-msgstr "Suche in der Dokumentation"
-
-#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1821
-#: ../../include/nav.php:423
-msgid "About"
-msgstr "Ãœber"
-
-#: ../../Zotlabs/Module/Help.php:82
-msgid "Administrators"
-msgstr "Administratoren"
-
-#: ../../Zotlabs/Module/Help.php:83
-msgid "Developers"
-msgstr "Entwickler"
-
-#: ../../Zotlabs/Module/Help.php:84
-msgid "Tutorials"
-msgstr "Tutorials"
-
-#: ../../Zotlabs/Module/Help.php:95
-msgid "$Projectname Documentation"
-msgstr "$Projectname-Dokumentation"
-
-#: ../../Zotlabs/Module/Help.php:96
-msgid "Contents"
-msgstr "Inhalt"
-
-#: ../../Zotlabs/Module/Display.php:349
-msgid "Article"
-msgstr "Artikel"
-
-#: ../../Zotlabs/Module/Display.php:401
-msgid "Item has been removed."
-msgstr "Der Beitrag wurde entfernt."
-
-#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
-msgid "Tag removed"
-msgstr "Schlagwort entfernt"
-
-#: ../../Zotlabs/Module/Tagrm.php:123
-msgid "Remove Item Tag"
-msgstr "Schlagwort entfernen"
-
-#: ../../Zotlabs/Module/Tagrm.php:125
-msgid "Select a tag to remove: "
-msgstr "Schlagwort zum Entfernen auswählen:"
-
-#: ../../Zotlabs/Module/Network.php:97
-msgid "No such group"
-msgstr "Gruppe nicht gefunden"
-
-#: ../../Zotlabs/Module/Network.php:137
-msgid "No such channel"
-msgstr "Kanal nicht gefunden"
-
-#: ../../Zotlabs/Module/Network.php:142
-msgid "forum"
-msgstr "Forum"
-
-#: ../../Zotlabs/Module/Network.php:154
-msgid "Search Results For:"
-msgstr "Suchergebnisse für:"
-
-#: ../../Zotlabs/Module/Network.php:222
-msgid "Privacy group is empty"
-msgstr "Gruppe ist leer"
-
-#: ../../Zotlabs/Module/Network.php:231
-msgid "Privacy group: "
-msgstr "Gruppe:"
-
-#: ../../Zotlabs/Module/Network.php:257
-msgid "Invalid connection."
-msgstr "Ungültige Verbindung."
-
-#: ../../Zotlabs/Module/Network.php:276 ../../addon/redred/redred.php:65
-msgid "Invalid channel."
-msgstr "Ungültiger Kanal."
-
-#: ../../Zotlabs/Module/Acl.php:358
-msgid "network"
-msgstr "Netzwerk"
-
-#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82
-#: ../../addon/opensearch/opensearch.php:42
-msgid "$Projectname"
-msgstr "$Projectname"
-
-#: ../../Zotlabs/Module/Home.php:92
-#, php-format
-msgid "Welcome to %s"
-msgstr "Willkommen auf %s"
-
-#: ../../Zotlabs/Module/Filestorage.php:79
-msgid "Permission Denied."
-msgstr "Zugriff verweigert."
-
-#: ../../Zotlabs/Module/Filestorage.php:95
-msgid "File not found."
-msgstr "Datei nicht gefunden."
-
-#: ../../Zotlabs/Module/Filestorage.php:142
-msgid "Edit file permissions"
-msgstr "Dateiberechtigungen bearbeiten"
-
-#: ../../Zotlabs/Module/Filestorage.php:154
-msgid "Set/edit permissions"
-msgstr "Berechtigungen setzen/ändern"
-
-#: ../../Zotlabs/Module/Filestorage.php:155
-msgid "Include all files and sub folders"
-msgstr "Alle Dateien und Unterverzeichnisse einbinden"
-
-#: ../../Zotlabs/Module/Filestorage.php:156
-msgid "Return to file list"
-msgstr "Zurück zur Dateiliste"
-
-#: ../../Zotlabs/Module/Filestorage.php:158
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
-
-#: ../../Zotlabs/Module/Filestorage.php:159
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
-
-#: ../../Zotlabs/Module/Filestorage.php:161
-msgid "Share this file"
-msgstr "Diese Datei freigeben"
-
-#: ../../Zotlabs/Module/Filestorage.php:162
-msgid "Show URL to this file"
-msgstr "URL zu dieser Datei anzeigen"
-
-#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394
-msgid "Show in your contacts shared folder"
-msgstr "Im geteilten Ordner Deiner Kontakte anzeigen"
-
-#: ../../Zotlabs/Module/Common.php:14
-msgid "No channel."
-msgstr "Kein Kanal."
-
-#: ../../Zotlabs/Module/Common.php:45
-msgid "No connections in common."
-msgstr "Keine gemeinsamen Verbindungen."
-
-#: ../../Zotlabs/Module/Common.php:65
-msgid "View Common Connections"
-msgstr "Zeige gemeinsame Verbindungen"
-
-#: ../../Zotlabs/Module/Viewconnections.php:65
-msgid "No connections."
-msgstr "Keine Verbindungen."
-
-#: ../../Zotlabs/Module/Viewconnections.php:78
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "%ss Profil [%s] besuchen"
-
-#: ../../Zotlabs/Module/Viewconnections.php:107
-msgid "View Connections"
-msgstr "Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Admin.php:97
-msgid "Blocked accounts"
-msgstr "Blockierte Benutzerkonten"
-
-#: ../../Zotlabs/Module/Admin.php:98
-msgid "Expired accounts"
-msgstr "Abgelaufene Benutzerkonten"
-
-#: ../../Zotlabs/Module/Admin.php:99
-msgid "Expiring accounts"
-msgstr "Ablaufende Benutzerkonten"
-
-#: ../../Zotlabs/Module/Admin.php:112
-msgid "Clones"
-msgstr "Klone"
-
-#: ../../Zotlabs/Module/Admin.php:118
-msgid "Message queues"
-msgstr "Nachrichten-Warteschlangen"
-
-#: ../../Zotlabs/Module/Admin.php:132
-msgid "Your software should be updated"
-msgstr "Die installierte Software sollte aktualisiert werden"
-
-#: ../../Zotlabs/Module/Admin.php:137
-msgid "Summary"
-msgstr "Zusammenfassung"
-
-#: ../../Zotlabs/Module/Admin.php:140
-msgid "Registered accounts"
-msgstr "Registrierte Konten"
-
-#: ../../Zotlabs/Module/Admin.php:141
-msgid "Pending registrations"
-msgstr "Ausstehende Registrierungen"
-
-#: ../../Zotlabs/Module/Admin.php:142
-msgid "Registered channels"
-msgstr "Registrierte Kanäle"
-
-#: ../../Zotlabs/Module/Admin.php:143
-msgid "Active plugins"
-msgstr "Aktive Plug-Ins"
-
-#: ../../Zotlabs/Module/Admin.php:144
-msgid "Version"
-msgstr "Version"
-
-#: ../../Zotlabs/Module/Admin.php:145
-msgid "Repository version (master)"
-msgstr "Repository-Version (master)"
-
-#: ../../Zotlabs/Module/Admin.php:146
-msgid "Repository version (dev)"
-msgstr "Repository-Version (dev)"
-
-#: ../../Zotlabs/Module/Service_limits.php:23
-msgid "No service class restrictions found."
-msgstr "Keine Dienstklassenbeschränkungen gefunden."
-
-#: ../../Zotlabs/Module/Rate.php:156
-msgid "Website:"
-msgstr "Webseite:"
-
-#: ../../Zotlabs/Module/Rate.php:159
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Kanal [%s] (auf diesem Server noch unbekannt)"
-
-#: ../../Zotlabs/Module/Rate.php:160
-msgid "Rating (this information is public)"
-msgstr "Bewertung (öffentlich sichtbar)"
-
-#: ../../Zotlabs/Module/Rate.php:161
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)"
-
-#: ../../Zotlabs/Module/Card_edit.php:128
-msgid "Edit Card"
-msgstr "Karte bearbeiten"
-
-#: ../../Zotlabs/Module/Lostpass.php:19
-msgid "No valid account found."
-msgstr "Kein gültiges Konto gefunden."
-
-#: ../../Zotlabs/Module/Lostpass.php:33
-msgid "Password reset request issued. Check your email."
-msgstr "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."
-
-#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Nutzer (%s)"
-
-#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Passwort-Rücksetzung auf %s angefordert"
-
-#: ../../Zotlabs/Module/Lostpass.php:68
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1673
-msgid "Password Reset"
-msgstr "Zurücksetzen des Kennworts"
-
-#: ../../Zotlabs/Module/Lostpass.php:92
-msgid "Your password has been reset as requested."
-msgstr "Dein Passwort wurde wie angefordert neu erstellt."
-
-#: ../../Zotlabs/Module/Lostpass.php:93
-msgid "Your new password is"
-msgstr "Dein neues Passwort lautet"
-
-#: ../../Zotlabs/Module/Lostpass.php:94
-msgid "Save or copy your new password - and then"
-msgstr "Speichere oder kopiere Dein neues Passwort – und dann"
-
-#: ../../Zotlabs/Module/Lostpass.php:95
-msgid "click here to login"
-msgstr "Klicke hier, um dich anzumelden"
-
-#: ../../Zotlabs/Module/Lostpass.php:96
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden."
-
-#: ../../Zotlabs/Module/Lostpass.php:117
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Auf %s wurde Dein Passwort geändert"
-
-#: ../../Zotlabs/Module/Lostpass.php:130
-msgid "Forgot your Password?"
-msgstr "Kennwort vergessen?"
-
-#: ../../Zotlabs/Module/Lostpass.php:131
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail."
-
-#: ../../Zotlabs/Module/Lostpass.php:132
-msgid "Email Address"
-msgstr "E-Mail Adresse"
-
-#: ../../Zotlabs/Module/Notifications.php:62
-#: ../../Zotlabs/Lib/ThreadItem.php:408
-msgid "Mark all seen"
-msgstr "Alle als gelesen markieren"
-
-#: ../../Zotlabs/Lib/Techlevels.php:10
-msgid "0. Beginner/Basic"
-msgstr "0. Einsteiger/Basis"
-
-#: ../../Zotlabs/Lib/Techlevels.php:11
-msgid "1. Novice - not skilled but willing to learn"
-msgstr "1. Anfänger - unerfahren, aber bereit zu lernen"
-
-#: ../../Zotlabs/Lib/Techlevels.php:12
-msgid "2. Intermediate - somewhat comfortable"
-msgstr "2. Fortgeschritten - relativ komfortabel"
-
-#: ../../Zotlabs/Lib/Techlevels.php:13
-msgid "3. Advanced - very comfortable"
-msgstr "3. Fortgeschritten - sehr komfortabel"
-
-#: ../../Zotlabs/Lib/Techlevels.php:14
-msgid "4. Expert - I can write computer code"
-msgstr "4. Experte - Ich kann Computercode schreiben"
-
-#: ../../Zotlabs/Lib/Techlevels.php:15
-msgid "5. Wizard - I probably know more than you do"
-msgstr "5. Zauberer - ich kann wahrscheinlich mehr als Du"
-
-#: ../../Zotlabs/Lib/Apps.php:225
-msgid "Site Admin"
-msgstr "Hub-Administration"
-
-#: ../../Zotlabs/Lib/Apps.php:226 ../../addon/buglink/buglink.php:16
-msgid "Report Bug"
-msgstr "Fehler melden"
-
-#: ../../Zotlabs/Lib/Apps.php:227
-msgid "View Bookmarks"
-msgstr "Lesezeichen ansehen"
-
-#: ../../Zotlabs/Lib/Apps.php:228
-msgid "My Chatrooms"
-msgstr "Meine Chaträume"
-
-#: ../../Zotlabs/Lib/Apps.php:230
-msgid "Firefox Share"
-msgstr "Teilen-Knopf für Firefox"
-
-#: ../../Zotlabs/Lib/Apps.php:231
-msgid "Remote Diagnostics"
-msgstr "Ferndiagnose"
-
-#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:352
-msgid "Suggest Channels"
-msgstr "Kanäle vorschlagen"
-
-#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1664
-#: ../../include/nav.php:160 ../../include/nav.php:164
-msgid "Login"
-msgstr "Anmelden"
-
-#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:105
-msgid "Activity"
-msgstr "Aktivität"
-
-#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1928
-#: ../../include/features.php:95 ../../include/nav.php:529
-msgid "Wiki"
-msgstr "Wiki"
-
-#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:109
-msgid "Channel Home"
-msgstr "Mein Kanal"
-
-#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1850
-#: ../../include/conversation.php:1853 ../../include/nav.php:131
-msgid "Events"
-msgstr "Termine"
-
-#: ../../Zotlabs/Lib/Apps.php:244
-msgid "Directory"
-msgstr "Verzeichnis"
-
-#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:123
-msgid "Mail"
-msgstr "Mail"
-
-#: ../../Zotlabs/Lib/Apps.php:249
-msgid "Chat"
-msgstr "Chat"
-
-#: ../../Zotlabs/Lib/Apps.php:251
-msgid "Probe"
-msgstr "Testen"
-
-#: ../../Zotlabs/Lib/Apps.php:252
-msgid "Suggest"
-msgstr "Empfehlen"
-
-#: ../../Zotlabs/Lib/Apps.php:253
-msgid "Random Channel"
-msgstr "Zufälliger Kanal"
-
-#: ../../Zotlabs/Lib/Apps.php:254
-msgid "Invite"
-msgstr "Einladen"
-
-#: ../../Zotlabs/Lib/Apps.php:255 ../../Zotlabs/Widget/Admin.php:26
-msgid "Features"
-msgstr "Funktionen"
-
-#: ../../Zotlabs/Lib/Apps.php:256 ../../addon/openid/MysqlProvider.php:69
-msgid "Language"
-msgstr "Sprache"
-
-#: ../../Zotlabs/Lib/Apps.php:257
-msgid "Post"
-msgstr "Beitrag schreiben"
-
-#: ../../Zotlabs/Lib/Apps.php:258 ../../addon/openid/MysqlProvider.php:58
-#: ../../addon/openid/MysqlProvider.php:59
-#: ../../addon/openid/MysqlProvider.php:60
-msgid "Profile Photo"
-msgstr "Profilfoto"
-
-#: ../../Zotlabs/Lib/Apps.php:397
-msgid "Purchase"
-msgstr "Kaufen"
-
-#: ../../Zotlabs/Lib/Apps.php:401
-msgid "Undelete"
-msgstr "Wieder hergestellt"
-
-#: ../../Zotlabs/Lib/Apps.php:409
-msgid "Add to app-tray"
-msgstr "Zum App-Menü hinzufügen"
-
-#: ../../Zotlabs/Lib/Apps.php:410
-msgid "Remove from app-tray"
-msgstr "Aus dem App-Menü entfernen"
-
-#: ../../Zotlabs/Lib/Apps.php:411
-msgid "Pin to navbar"
-msgstr "An Navigationsleiste anpinnen"
-
-#: ../../Zotlabs/Lib/Apps.php:412
-msgid "Unpin from navbar"
-msgstr "Von Navigationsleiste entfernen"
-
-#: ../../Zotlabs/Lib/Permcat.php:58
-msgctxt "permcat"
-msgid "default"
-msgstr "Standard"
-
-#: ../../Zotlabs/Lib/Permcat.php:96
-msgctxt "permcat"
-msgid "follower"
-msgstr "Abonnent"
-
-#: ../../Zotlabs/Lib/Permcat.php:100
-msgctxt "permcat"
-msgid "contributor"
-msgstr "Beitragender"
-
-#: ../../Zotlabs/Lib/Permcat.php:104
-msgctxt "permcat"
-msgid "publisher"
-msgstr "Autor"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:42
-#: ../../Zotlabs/Lib/NativeWikiPage.php:93
-msgid "(No Title)"
-msgstr "(Kein Titel)"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:107
-msgid "Wiki page create failed."
-msgstr "Anlegen der Wiki-Seite fehlgeschlagen."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:120
-msgid "Wiki not found."
-msgstr "Wiki nicht gefunden."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:131
-msgid "Destination name already exists"
-msgstr "Zielname bereits vorhanden"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:163
-#: ../../Zotlabs/Lib/NativeWikiPage.php:359
-msgid "Page not found"
-msgstr "Seite nicht gefunden"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:194
-msgid "Error reading page content"
-msgstr "Fehler beim Lesen des Seiteninhalts"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:350
-#: ../../Zotlabs/Lib/NativeWikiPage.php:400
-#: ../../Zotlabs/Lib/NativeWikiPage.php:467
-#: ../../Zotlabs/Lib/NativeWikiPage.php:508
-msgid "Error reading wiki"
-msgstr "Fehler beim Lesen des Wiki"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:388
-msgid "Page update failed."
-msgstr "Seitenaktualisierung fehlgeschlagen."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:422
-msgid "Nothing deleted"
-msgstr "Nichts gelöscht"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:488
-msgid "Compare: object not found."
-msgstr "Vergleichen: Objekt nicht gefunden."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:494
-msgid "Page updated"
-msgstr "Seite aktualisiert"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:497
-msgid "Untitled"
-msgstr "Ohne Titel"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:503
-msgid "Wiki resource_id required for git commit"
-msgstr "Die resource_id des Wiki wird benötigt für den git commit."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:559
-#: ../../Zotlabs/Widget/Wiki_page_history.php:23
-msgctxt "wiki_history"
-msgid "Message"
-msgstr "Nachricht"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:597
-#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:674
-#: ../../include/bbcode.php:822
-msgid "Different viewers will see this text differently"
-msgstr "Verschiedene Betrachter werden diesen Text unterschiedlich sehen"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:34
-#: ../../include/acl_selectors.php:128
-msgid "Visible to your default audience"
-msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:107
-#: ../../include/acl_selectors.php:201
-msgid "Only me"
-msgstr "Nur ich"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:108
-msgid "Public"
-msgstr "Öffentlich"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:109
-msgid "Anybody in the $Projectname network"
-msgstr "Jeder innerhalb des $Projectname Netzwerks"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:110
-#, php-format
-msgid "Any account on %s"
-msgstr "Jedes Nutzerkonto auf %s"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:111
-msgid "Any of my connections"
-msgstr "Alle meine Verbindungen"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:112
-msgid "Only connections I specifically allow"
-msgstr "Nur Verbindungen, denen ich es explizit erlaube"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:113
-msgid "Anybody authenticated (could include visitors from other networks)"
-msgstr "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:114
-msgid "Any connections including those who haven't yet been approved"
-msgstr "Alle Verbindungen einschließlich der noch nicht bestätigten"
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:150
-msgid ""
-"This is your default setting for the audience of your normal stream, and "
-"posts."
-msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)."
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:151
-msgid ""
-"This is your default setting for who can view your default channel profile"
-msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils."
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:152
-msgid "This is your default setting for who can view your connections"
-msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen."
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:153
-msgid ""
-"This is your default setting for who can view your file storage and photos"
-msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos."
-
-#: ../../Zotlabs/Lib/PermissionDescription.php:154
-msgid "This is your default setting for the audience of your webpages"
-msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."
-
-#: ../../Zotlabs/Lib/Chatroom.php:23
-msgid "Missing room name"
-msgstr "Der Chatraum hat keinen Namen"
-
-#: ../../Zotlabs/Lib/Chatroom.php:32
-msgid "Duplicate room name"
-msgstr "Name des Chatraums bereits vergeben"
-
-#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90
-msgid "Invalid room specifier."
-msgstr "Ungültiger Raumbezeichner."
-
-#: ../../Zotlabs/Lib/Chatroom.php:122
-msgid "Room not found."
-msgstr "Chatraum konnte nicht gefunden werden."
-
-#: ../../Zotlabs/Lib/Chatroom.php:143
-msgid "Room is full"
-msgstr "Der Chatraum ist voll"
-
-#: ../../Zotlabs/Lib/Enotify.php:60
-msgid "$Projectname Notification"
-msgstr "$Projectname-Benachrichtigung"
-
-#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:283
-#: ../../addon/diaspora/util.php:296 ../../addon/diaspora/p.php:48
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../Zotlabs/Lib/Enotify.php:63
-msgid "Thank You,"
-msgstr "Danke."
-
-#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33
-#, php-format
-msgid "%s Administrator"
-msgstr "der Administrator von %s"
-
-#: ../../Zotlabs/Lib/Enotify.php:116
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../Zotlabs/Lib/Enotify.php:120
-#, php-format
-msgid "[$Projectname:Notify] New mail received at %s"
-msgstr "[$Projectname:Benachrichtigung] Neue Mail empfangen auf %s"
-
-#: ../../Zotlabs/Lib/Enotify.php:122
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet."
-
-#: ../../Zotlabs/Lib/Enotify.php:123
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s hat Dir %2$s geschickt."
-
-#: ../../Zotlabs/Lib/Enotify.php:123
-msgid "a private message"
-msgstr "eine private Nachricht"
-
-#: ../../Zotlabs/Lib/Enotify.php:124
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten."
-
-#: ../../Zotlabs/Lib/Enotify.php:184
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]einen %4$s[/zrl] kommentiert"
-
-#: ../../Zotlabs/Lib/Enotify.php:192
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]%4$ss %5$s[/zrl] kommentiert"
-
-#: ../../Zotlabs/Lib/Enotify.php:201
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen %4$s[/zrl] kommentiert"
-
-#: ../../Zotlabs/Lib/Enotify.php:213
-#, php-format
-msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s"
-msgstr "[$Projectname:Benachrichtigung] Moderierter Kommantar in Unterhaltung #%1$d von %2$s"
-
-#: ../../Zotlabs/Lib/Enotify.php:215
-#, php-format
-msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[$Projectname:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s"
-
-#: ../../Zotlabs/Lib/Enotify.php:216
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst."
-
-#: ../../Zotlabs/Lib/Enotify.php:219 ../../Zotlabs/Lib/Enotify.php:301
-#: ../../Zotlabs/Lib/Enotify.php:318 ../../Zotlabs/Lib/Enotify.php:344
-#: ../../Zotlabs/Lib/Enotify.php:362 ../../Zotlabs/Lib/Enotify.php:376
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren."
-
-#: ../../Zotlabs/Lib/Enotify.php:223 ../../Zotlabs/Lib/Enotify.php:224
-#, php-format
-msgid "Please visit %s to approve or reject this comment."
-msgstr "Bitte besuche %s, um diesen Kommentar anzunehmen oder abzulehnen."
-
-#: ../../Zotlabs/Lib/Enotify.php:282
-#, php-format
-msgid "%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s gefällt [zrl=%3$s]dein %4$s[/zrl]"
-
-#: ../../Zotlabs/Lib/Enotify.php:297
-#, php-format
-msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s"
-msgstr "[$Projectname:Benachrichtigung] Gefällt mir in Unterhaltung #%1$d von %2$s erhalten"
-
-#: ../../Zotlabs/Lib/Enotify.php:298
-#, php-format
-msgid "%1$s, %2$s liked an item/conversation you created."
-msgstr "%1$s, %2$s gefällt ein Beitrag oder eine Unterhaltung von Dir"
-
-#: ../../Zotlabs/Lib/Enotify.php:309
-#, php-format
-msgid "[$Projectname:Notify] %s posted to your profile wall"
-msgstr "[$Projectname:Benachrichtigung] %s schrieb auf Deine Pinnwand"
-
-#: ../../Zotlabs/Lib/Enotify.php:311
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben"
-
-#: ../../Zotlabs/Lib/Enotify.php:313
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben"
-
-#: ../../Zotlabs/Lib/Enotify.php:337
-#, php-format
-msgid "[$Projectname:Notify] %s tagged you"
-msgstr "[$Projectname:Benachrichtigung] %s hat Dich erwähnt"
-
-#: ../../Zotlabs/Lib/Enotify.php:338
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt"
-
-#: ../../Zotlabs/Lib/Enotify.php:339
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]."
-
-#: ../../Zotlabs/Lib/Enotify.php:351
-#, php-format
-msgid "[$Projectname:Notify] %1$s poked you"
-msgstr "[$Projectname:Benachrichtigung] %1$s hat Dich angestupst"
-
-#: ../../Zotlabs/Lib/Enotify.php:352
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s hat Dich auf %3$s angestupst"
-
-#: ../../Zotlabs/Lib/Enotify.php:353
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]."
-
-#: ../../Zotlabs/Lib/Enotify.php:369
-#, php-format
-msgid "[$Projectname:Notify] %s tagged your post"
-msgstr "[$Projectname:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet"
-
-#: ../../Zotlabs/Lib/Enotify.php:370
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet"
-
-#: ../../Zotlabs/Lib/Enotify.php:371
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet"
-
-#: ../../Zotlabs/Lib/Enotify.php:383
-msgid "[$Projectname:Notify] Introduction received"
-msgstr "[$Projectname:Benachrichtigung] Verbindungsanfrage erhalten"
-
-#: ../../Zotlabs/Lib/Enotify.php:384
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, Du hast eine neue Verbindungsanfrage von '%2$s' auf %3$s erhalten"
-
-#: ../../Zotlabs/Lib/Enotify.php:385
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, Du hast [zrl=%2$s]eine neue Verbindungsanfrage[/zrl] von %3$s erhalten."
-
-#: ../../Zotlabs/Lib/Enotify.php:389 ../../Zotlabs/Lib/Enotify.php:408
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Du kannst Dir das Profil unter %s ansehen"
-
-#: ../../Zotlabs/Lib/Enotify.php:391
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen."
-
-#: ../../Zotlabs/Lib/Enotify.php:398
-msgid "[$Projectname:Notify] Friend suggestion received"
-msgstr "[$Projectname:Benachrichtigung] Freundschaftsvorschlag erhalten"
-
-#: ../../Zotlabs/Lib/Enotify.php:399
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten"
-
-#: ../../Zotlabs/Lib/Enotify.php:400
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten."
-
-#: ../../Zotlabs/Lib/Enotify.php:406
-msgid "Name:"
-msgstr "Name:"
-
-#: ../../Zotlabs/Lib/Enotify.php:407
-msgid "Photo:"
-msgstr "Foto:"
-
-#: ../../Zotlabs/Lib/Enotify.php:410
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
-
-#: ../../Zotlabs/Lib/Enotify.php:629
-msgid "[$Projectname:Notify]"
-msgstr "[$Projectname:Benachrichtigung]"
-
-#: ../../Zotlabs/Lib/Enotify.php:793
-msgid "created a new post"
-msgstr "Neuer Beitrag wurde erzeugt"
-
-#: ../../Zotlabs/Lib/Enotify.php:794
-#, php-format
-msgid "commented on %s's post"
-msgstr "hat %s's Beitrag kommentiert"
-
-#: ../../Zotlabs/Lib/NativeWiki.php:151
-msgid "Wiki updated successfully"
-msgstr "Wiki erfolgreich aktualisiert"
-
-#: ../../Zotlabs/Lib/NativeWiki.php:198
-msgid "Wiki files deleted successfully"
-msgstr "Wiki-Dateien erfolgreich gelöscht"
-
-#: ../../Zotlabs/Lib/DB_Upgrade.php:95
-#, php-format
-msgid "Update Error at %s"
-msgstr "Aktualisierungsfehler auf %s"
-
-#: ../../Zotlabs/Lib/DB_Upgrade.php:101
-#, php-format
-msgid "Update %s failed. See error logs."
-msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen."
-
-#: ../../Zotlabs/Lib/ThreadItem.php:97 ../../include/conversation.php:697
-msgid "Private Message"
-msgstr "Private Nachricht"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../include/conversation.php:689
-msgid "Select"
-msgstr "Auswählen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:172
-msgid "I will attend"
-msgstr "Ich werde teilnehmen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:172
-msgid "I will not attend"
-msgstr "Ich werde nicht teilnehmen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:172
-msgid "I might attend"
-msgstr "Ich werde vielleicht teilnehmen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:182
-msgid "I agree"
-msgstr "Ich stimme zu"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:182
-msgid "I disagree"
-msgstr "Ich lehne ab"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:182
-msgid "I abstain"
-msgstr "Ich enthalte mich"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:238
-msgid "Add Star"
-msgstr "Stern hinzufügen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:239
-msgid "Remove Star"
-msgstr "Stern entfernen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:240
-msgid "Toggle Star Status"
-msgstr "Markierungsstatus (Stern) umschalten"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:244
-msgid "starred"
-msgstr "markiert"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:254 ../../include/conversation.php:704
-msgid "Message signature validated"
-msgstr "Signatur überprüft"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:255 ../../include/conversation.php:705
-msgid "Message signature incorrect"
-msgstr "Signatur nicht korrekt"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:263
-msgid "Add Tag"
-msgstr "Tag hinzufügen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:506
-msgid "like"
-msgstr "mag"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:507
-msgid "dislike"
-msgstr "verurteile"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:286
-msgid "Share This"
-msgstr "Teilen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:286
-msgid "share"
-msgstr "Teilen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:295
-msgid "Delivery Report"
-msgstr "Zustellungsbericht"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:313
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d Kommentar"
-msgstr[1] "%d Kommentare"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:343 ../../Zotlabs/Lib/ThreadItem.php:344
-#, php-format
-msgid "View %s's profile - %s"
-msgstr "Schaue Dir %ss Profil an – %s"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:347
-msgid "to"
-msgstr "an"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:348
-msgid "via"
-msgstr "via"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:349
-msgid "Wall-to-Wall"
-msgstr "Wall-to-Wall"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:350
-msgid "via Wall-To-Wall:"
-msgstr "via Wall-To-Wall:"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:363 ../../include/conversation.php:763
-#, php-format
-msgid "from %s"
-msgstr "via %s"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:366 ../../include/conversation.php:766
-#, php-format
-msgid "last edited: %s"
-msgstr "zuletzt bearbeitet: %s"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:367 ../../include/conversation.php:767
-#, php-format
-msgid "Expires: %s"
-msgstr "Verfällt: %s"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:374
-msgid "Attend"
-msgstr "Zusagen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:375
-msgid "Attendance Options"
-msgstr "Zusageoptionen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:376
-msgid "Vote"
-msgstr "Abstimmen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:377
-msgid "Voting Options"
-msgstr "Abstimmungsoptionen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:398
-#: ../../addon/bookmarker/bookmarker.php:38
-msgid "Save Bookmarks"
-msgstr "Favoriten speichern"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:399
-msgid "Add to Calendar"
-msgstr "Zum Kalender hinzufügen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:426 ../../include/conversation.php:483
-msgid "This is an unsaved preview"
-msgstr "Dies ist eine nicht gespeicherte Vorschau"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:458 ../../include/js_strings.php:7
-#, php-format
-msgid "%s show all"
-msgstr "%s mehr anzeigen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1377
-msgid "Bold"
-msgstr "Fett"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:756 ../../include/conversation.php:1378
-msgid "Italic"
-msgstr "Kursiv"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:757 ../../include/conversation.php:1379
-msgid "Underline"
-msgstr "Unterstrichen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:758 ../../include/conversation.php:1380
-msgid "Quote"
-msgstr "Zitat"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:759 ../../include/conversation.php:1381
-msgid "Code"
-msgstr "Code"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:760
-msgid "Image"
-msgstr "Bild"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:761
-msgid "Attach File"
-msgstr "Datei anhängen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:762
-msgid "Insert Link"
-msgstr "Link einfügen"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:763
-msgid "Video"
-msgstr "Video"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:773
-msgid "Your full name (required)"
-msgstr "Ihr vollständiger Name (erforderlich)"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:774
-msgid "Your email address (required)"
-msgstr "Ihre E-Mail-Adresse (erforderlich)"
-
-#: ../../Zotlabs/Lib/ThreadItem.php:775
-msgid "Your website URL (optional)"
-msgstr "Ihre Webseiten-URL (optional)"
-
-#: ../../Zotlabs/Zot/Auth.php:152
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut."
-
-#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76
-#: ../../addon/openid/Mod_Openid.php:178
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich."
-
-#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:284
-msgid "parent"
-msgstr "Ãœbergeordnetes Verzeichnis"
-
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2707
-msgid "Collection"
-msgstr "Sammlung"
-
-#: ../../Zotlabs/Storage/Browser.php:134
-msgid "Principal"
-msgstr "Prinzipal"
-
-#: ../../Zotlabs/Storage/Browser.php:137
-msgid "Addressbook"
-msgstr "Adressbuch"
-
-#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:452
-#: ../../include/nav.php:455
-msgid "Calendar"
-msgstr "Kalender"
-
-#: ../../Zotlabs/Storage/Browser.php:143
-msgid "Schedule Inbox"
-msgstr "Posteingang für überwachte Kalender"
-
-#: ../../Zotlabs/Storage/Browser.php:146
-msgid "Schedule Outbox"
-msgstr "Postausgang für überwachte Kalender"
-
-#: ../../Zotlabs/Storage/Browser.php:270
-msgid "Total"
-msgstr "Summe"
-
-#: ../../Zotlabs/Storage/Browser.php:272
-msgid "Shared"
-msgstr "Geteilt"
-
-#: ../../Zotlabs/Storage/Browser.php:350
-#, php-format
-msgid "You are using %1$s of your available file storage."
-msgstr "Sie verwenden %1$s von Ihrem verfügbaren Dateispeicher."
-
-#: ../../Zotlabs/Storage/Browser.php:355
-#, php-format
-msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
-msgstr "Sie verwenden %1$s von %2$s verfügbarem Dateispeicher. (%3$s&#37;)"
-
-#: ../../Zotlabs/Storage/Browser.php:366
-msgid "WARNING:"
-msgstr "WARNUNG:"
-
-#: ../../Zotlabs/Storage/Browser.php:378
-msgid "Create new folder"
-msgstr "Neuen Ordner anlegen"
-
-#: ../../Zotlabs/Storage/Browser.php:380
-msgid "Upload file"
-msgstr "Datei hochladen"
-
-#: ../../Zotlabs/Storage/Browser.php:393
-msgid "Drop files here to immediately upload"
-msgstr "Dateien zum sofortigen Hochladen hier fallen lassen"
-
-#: ../../Zotlabs/Widget/Forums.php:99
-msgid "Forums"
-msgstr "Foren"
-
-#: ../../Zotlabs/Widget/Cdav.php:37
-msgid "Select Channel"
-msgstr "Kanal auswählen"
-
-#: ../../Zotlabs/Widget/Cdav.php:42
-msgid "Read-write"
-msgstr "Lesen-schreiben"
-
-#: ../../Zotlabs/Widget/Cdav.php:43
-msgid "Read-only"
-msgstr "Nur Lesen"
-
-#: ../../Zotlabs/Widget/Cdav.php:117
-msgid "My Calendars"
-msgstr "Meine Kalender"
-
-#: ../../Zotlabs/Widget/Cdav.php:119
-msgid "Shared Calendars"
-msgstr "Geteilte Kalender"
-
-#: ../../Zotlabs/Widget/Cdav.php:123
-msgid "Share this calendar"
-msgstr "Diesen Kalender teilen"
-
-#: ../../Zotlabs/Widget/Cdav.php:125
-msgid "Calendar name and color"
-msgstr "Kalendername und -farbe"
-
-#: ../../Zotlabs/Widget/Cdav.php:127
-msgid "Create new calendar"
-msgstr "Neuen Kalender erstellen"
-
-#: ../../Zotlabs/Widget/Cdav.php:129
-msgid "Calendar Name"
-msgstr "Kalendername"
-
-#: ../../Zotlabs/Widget/Cdav.php:130
-msgid "Calendar Tools"
-msgstr "Kalenderwerkzeuge"
-
-#: ../../Zotlabs/Widget/Cdav.php:131
-msgid "Import calendar"
-msgstr "Kalender importieren"
-
-#: ../../Zotlabs/Widget/Cdav.php:132
-msgid "Select a calendar to import to"
-msgstr "Kalender zum Hineinimportieren auswählen"
-
-#: ../../Zotlabs/Widget/Cdav.php:159
-msgid "Addressbooks"
-msgstr "Adressbücher"
-
-#: ../../Zotlabs/Widget/Cdav.php:161
-msgid "Addressbook name"
-msgstr "Adressbuchname"
-
-#: ../../Zotlabs/Widget/Cdav.php:163
-msgid "Create new addressbook"
-msgstr "Neues Adressbuch erstellen"
-
-#: ../../Zotlabs/Widget/Cdav.php:164
-msgid "Addressbook Name"
-msgstr "Adressbuchname"
-
-#: ../../Zotlabs/Widget/Cdav.php:166
-msgid "Addressbook Tools"
-msgstr "Adressbuchwerkzeuge"
-
-#: ../../Zotlabs/Widget/Cdav.php:167
-msgid "Import addressbook"
-msgstr "Adressbuch importieren"
-
-#: ../../Zotlabs/Widget/Cdav.php:168
-msgid "Select an addressbook to import to"
-msgstr "Adressbuch zum Hineinimportieren auswählen"
-
-#: ../../Zotlabs/Widget/Appcategories.php:40
-#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:97
-#: ../../include/contact_widgets.php:141 ../../include/contact_widgets.php:186
-#: ../../include/taxonomy.php:337 ../../include/taxonomy.php:419
-#: ../../include/taxonomy.php:439 ../../include/taxonomy.php:460
-msgid "Categories"
-msgstr "Kategorien"
-
-#: ../../Zotlabs/Widget/Appcategories.php:43 ../../Zotlabs/Widget/Filer.php:31
-#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:100
-#: ../../include/contact_widgets.php:144 ../../include/contact_widgets.php:189
-msgid "Everything"
-msgstr "Alles"
-
-#: ../../Zotlabs/Widget/Eventstools.php:13
-msgid "Events Tools"
-msgstr "Kalenderwerkzeuge"
-
-#: ../../Zotlabs/Widget/Eventstools.php:14
-msgid "Export Calendar"
-msgstr "Kalender exportieren"
-
-#: ../../Zotlabs/Widget/Eventstools.php:15
-msgid "Import Calendar"
-msgstr "Kalender importieren"
-
-#: ../../Zotlabs/Widget/Suggestedchats.php:32
-msgid "Suggested Chatrooms"
-msgstr "Chatraum-Vorschläge"
-
-#: ../../Zotlabs/Widget/Hq_controls.php:14
-msgid "HQ Control Panel"
-msgstr "HQ-Einstellungen"
-
-#: ../../Zotlabs/Widget/Hq_controls.php:17
-msgid "Create a new post"
-msgstr "Neuen Beitrag erstellen"
-
-#: ../../Zotlabs/Widget/Mailmenu.php:13
-msgid "Private Mail Menu"
-msgstr "Private Nachrichten"
-
-#: ../../Zotlabs/Widget/Mailmenu.php:15
-msgid "Combined View"
-msgstr "Kombinierte Anzeige"
-
-#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:126
-msgid "Inbox"
-msgstr "Eingang"
-
-#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:127
-msgid "Outbox"
-msgstr "Ausgang"
-
-#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:128
-msgid "New Message"
-msgstr "Neue Nachricht"
-
-#: ../../Zotlabs/Widget/Chatroom_list.php:16
-#: ../../include/conversation.php:1864 ../../include/conversation.php:1867
-#: ../../include/nav.php:466 ../../include/nav.php:469
-msgid "Chatrooms"
-msgstr "Chaträume"
-
-#: ../../Zotlabs/Widget/Chatroom_list.php:20
-msgid "Overview"
-msgstr "Ãœbersicht"
-
-#: ../../Zotlabs/Widget/Rating.php:51
-msgid "Rating Tools"
-msgstr "Bewertungswerkzeuge"
-
-#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57
-msgid "Rate Me"
-msgstr "Bewerte mich"
-
-#: ../../Zotlabs/Widget/Rating.php:60
-msgid "View Ratings"
-msgstr "Bewertungen ansehen"
-
-#: ../../Zotlabs/Widget/Activity.php:50
-msgctxt "widget"
-msgid "Activity"
-msgstr "Aktivität"
-
-#: ../../Zotlabs/Widget/Follow.php:22
-#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen."
-
-#: ../../Zotlabs/Widget/Follow.php:29
-msgid "Add New Connection"
-msgstr "Neue Verbindung hinzufügen"
-
-#: ../../Zotlabs/Widget/Follow.php:30
-msgid "Enter channel address"
-msgstr "Adresse des Kanals eingeben"
-
-#: ../../Zotlabs/Widget/Follow.php:31
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Beispiele: bob@beispiel.com, http://beispiel.com/barbara"
-
-#: ../../Zotlabs/Widget/Wiki_list.php:15 ../../addon/gitwiki/gitwiki.php:95
-msgid "Wiki List"
-msgstr "Wikiliste"
-
-#: ../../Zotlabs/Widget/Archive.php:43
-msgid "Archives"
-msgstr "Archive"
-
-#: ../../Zotlabs/Widget/Conversations.php:17
-msgid "Received Messages"
-msgstr "Erhaltene Nachrichten"
-
-#: ../../Zotlabs/Widget/Conversations.php:21
-msgid "Sent Messages"
-msgstr "Gesendete Nachrichten"
-
-#: ../../Zotlabs/Widget/Conversations.php:25
-msgid "Conversations"
-msgstr "Konversationen"
-
-#: ../../Zotlabs/Widget/Conversations.php:37
-msgid "No messages."
-msgstr "Keine Nachrichten."
-
-#: ../../Zotlabs/Widget/Conversations.php:57
-msgid "Delete conversation"
-msgstr "Unterhaltung löschen"
-
-#: ../../Zotlabs/Widget/Chatroom_members.php:11
-msgid "Chat Members"
-msgstr "Chatmitglieder"
-
-#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58
-msgid "photo/image"
-msgstr "Foto/Bild"
-
-#: ../../Zotlabs/Widget/Savedsearch.php:75
-msgid "Remove term"
-msgstr "Eintrag löschen"
-
-#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:316
-msgid "Saved Searches"
-msgstr "Gespeicherte Suchanfragen"
-
-#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:333
-msgid "add"
-msgstr "hinzufügen"
-
-#: ../../Zotlabs/Widget/Notes.php:16
-msgid "Notes"
-msgstr "Notizen"
-
-#: ../../Zotlabs/Widget/Wiki_pages.php:32
-#: ../../Zotlabs/Widget/Wiki_pages.php:89 ../../addon/gitwiki/gitwiki.php:81
-msgid "Add new page"
-msgstr "Neue Seite hinzufügen"
-
-#: ../../Zotlabs/Widget/Wiki_pages.php:83 ../../addon/gitwiki/gitwiki.php:76
-msgid "Wiki Pages"
-msgstr "Wikiseiten"
-
-#: ../../Zotlabs/Widget/Wiki_pages.php:94 ../../addon/gitwiki/gitwiki.php:82
-msgid "Page name"
-msgstr "Seitenname"
-
-#: ../../Zotlabs/Widget/Affinity.php:49
-msgid "Refresh"
-msgstr "Aktualisieren"
-
-#: ../../Zotlabs/Widget/Tasklist.php:23
-msgid "Tasks"
-msgstr "Aufgaben"
-
-#: ../../Zotlabs/Widget/Suggestions.php:51
-msgid "Suggestions"
-msgstr "Vorschläge"
-
-#: ../../Zotlabs/Widget/Suggestions.php:52
-msgid "See more..."
-msgstr "Mehr anzeigen …"
-
-#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
-#: ../../include/features.php:414
-msgid "Saved Folders"
-msgstr "Gespeicherte Ordner"
-
-#: ../../Zotlabs/Widget/Cover_photo.php:54
-msgid "Click to show more"
-msgstr "Klick, um mehr anzuzeigen"
-
-#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
-msgid "Member registrations waiting for confirmation"
-msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
-
-#: ../../Zotlabs/Widget/Admin.php:29
-msgid "Inspect queue"
-msgstr "Warteschlange kontrollieren"
-
-#: ../../Zotlabs/Widget/Admin.php:31
-msgid "DB updates"
-msgstr "DB-Aktualisierungen"
-
-#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:231
-msgid "Admin"
-msgstr "Administration"
-
-#: ../../Zotlabs/Widget/Admin.php:56
-msgid "Plugin Features"
-msgstr "Plug-In Funktionen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:35
-msgid "Account settings"
-msgstr "Konto-Einstellungen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:41
-msgid "Channel settings"
-msgstr "Kanal-Einstellungen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:50
-msgid "Additional features"
-msgstr "Zusätzliche Funktionen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:57
-msgid "Feature/Addon settings"
-msgstr "Plugin-Einstellungen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:63
-msgid "Display settings"
-msgstr "Anzeige-Einstellungen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:70
-msgid "Manage locations"
-msgstr "Klon-Adressen verwalten"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:77
-msgid "Export channel"
-msgstr "Kanal exportieren"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:84
-msgid "Connected apps"
-msgstr "Verbundene Apps"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:168
-msgid "Permission Groups"
-msgstr "Berechtigungsrollen"
-
-#: ../../Zotlabs/Widget/Settings_menu.php:117
-msgid "Premium Channel Settings"
-msgstr "Premium-Kanal-Einstellungen"
-
-#: ../../Zotlabs/Widget/Bookmarkedchats.php:24
-msgid "Bookmarked Chatrooms"
-msgstr "Gespeicherte Chatrooms"
-
-#: ../../Zotlabs/Widget/Notifications.php:16
-msgid "New Network Activity"
-msgstr "Neue Netzwerk-Aktivitäten"
-
-#: ../../Zotlabs/Widget/Notifications.php:17
-msgid "New Network Activity Notifications"
-msgstr "Benachrichtigungen für neue Netzwerk-Aktivitäten"
-
-#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:106
-msgid "View your network activity"
-msgstr "Zeige Deine Netzwerk-Aktivitäten"
-
-#: ../../Zotlabs/Widget/Notifications.php:23
-msgid "Mark all notifications read"
-msgstr "Alle Benachrichtigungen als gesehen markieren"
-
-#: ../../Zotlabs/Widget/Notifications.php:26
-#: ../../Zotlabs/Widget/Notifications.php:44
-#: ../../Zotlabs/Widget/Notifications.php:139
-msgid "Show new posts only"
-msgstr "Zeige nur neue Beiträge"
-
-#: ../../Zotlabs/Widget/Notifications.php:34
-msgid "New Home Activity"
-msgstr "Neue Kanal-Aktivitäten"
-
-#: ../../Zotlabs/Widget/Notifications.php:35
-msgid "New Home Activity Notifications"
-msgstr "Benachrichtigungen für neue Kanal-Aktivitäten"
-
-#: ../../Zotlabs/Widget/Notifications.php:38
-msgid "View your home activity"
-msgstr "Zeige Deine Kanal-Aktivitäten"
-
-#: ../../Zotlabs/Widget/Notifications.php:41
-#: ../../Zotlabs/Widget/Notifications.php:136
-msgid "Mark all notifications seen"
-msgstr "Alle Benachrichtigungen als gesehen markieren"
-
-#: ../../Zotlabs/Widget/Notifications.php:52
-msgid "New Mails"
-msgstr "Neue Mails"
-
-#: ../../Zotlabs/Widget/Notifications.php:53
-msgid "New Mails Notifications"
-msgstr "Benachrichtigungen für neue Mails"
-
-#: ../../Zotlabs/Widget/Notifications.php:56
-msgid "View your private mails"
-msgstr "Zeige Deine persönlichen Mails"
-
-#: ../../Zotlabs/Widget/Notifications.php:59
-msgid "Mark all messages seen"
-msgstr "Alle Mails als gelesen markieren"
-
-#: ../../Zotlabs/Widget/Notifications.php:67
-msgid "New Events"
-msgstr "Neue Termine"
-
-#: ../../Zotlabs/Widget/Notifications.php:68
-msgid "New Events Notifications"
-msgstr "Benachrichtigungen für neue Termine"
-
-#: ../../Zotlabs/Widget/Notifications.php:71 ../../include/nav.php:132
-msgid "View events"
-msgstr "Termine ansehen"
-
-#: ../../Zotlabs/Widget/Notifications.php:74 ../../include/nav.php:133
-msgid "Mark all events seen"
-msgstr "Markiere alle Termine als gesehen"
-
-#: ../../Zotlabs/Widget/Notifications.php:83
-msgid "New Connections Notifications"
-msgstr "Benachrichtigungen für neue Verbindungen"
-
-#: ../../Zotlabs/Widget/Notifications.php:86
-msgid "View all connections"
-msgstr "Zeige alle Verbindungen"
-
-#: ../../Zotlabs/Widget/Notifications.php:94
-msgid "New Files"
-msgstr "Neue Dateien"
-
-#: ../../Zotlabs/Widget/Notifications.php:95
-msgid "New Files Notifications"
-msgstr "Benachrichtigungen für neue Dateien"
-
-#: ../../Zotlabs/Widget/Notifications.php:102
-#: ../../Zotlabs/Widget/Notifications.php:103 ../../include/nav.php:119
-msgid "Notices"
-msgstr "Benachrichtigungen"
-
-#: ../../Zotlabs/Widget/Notifications.php:106
-msgid "View all notices"
-msgstr "Alle Notizen ansehen"
-
-#: ../../Zotlabs/Widget/Notifications.php:109
-msgid "Mark all notices seen"
-msgstr "Alle Notizen als gesehen markieren"
-
-#: ../../Zotlabs/Widget/Notifications.php:119
-msgid "New Registrations"
-msgstr "Neue Registrierungen"
-
-#: ../../Zotlabs/Widget/Notifications.php:120
-msgid "New Registrations Notifications"
-msgstr "Benachrichtigungen für neue Registrierungen"
-
-#: ../../Zotlabs/Widget/Notifications.php:130
-msgid "Public Stream Notifications"
-msgstr "Benachrichtigungen für öffentlichen Beitrags-Stream"
-
-#: ../../Zotlabs/Widget/Notifications.php:133
-msgid "View the public stream"
-msgstr "Zeige öffentlichen Beitrags-Stream"
-
-#: ../../Zotlabs/Widget/Notifications.php:147 ../../include/nav.php:316
-msgid "Loading"
-msgstr "Lädt..."
-
-#: ../../util/nconfig.php:34
-msgid "Source channel not found."
-msgstr "Quellkanal nicht gefunden."
-
-#: ../../boot.php:1644
-msgid "Create an account to access services and applications"
-msgstr "Erstelle ein Konto, um auf Dienste und Anwendungen zugreifen zu können."
-
-#: ../../boot.php:1663 ../../include/nav.php:145 ../../include/nav.php:174
-#: ../../include/nav.php:191
-msgid "Logout"
-msgstr "Abmelden"
-
-#: ../../boot.php:1667
-msgid "Login/Email"
-msgstr "Anmelden/E-Mail"
-
-#: ../../boot.php:1668
-msgid "Password"
-msgstr "Kennwort"
-
-#: ../../boot.php:1669
-msgid "Remember me"
-msgstr "Angaben speichern"
-
-#: ../../boot.php:1672
-msgid "Forgot your password?"
-msgstr "Passwort vergessen?"
-
-#: ../../boot.php:2257
-msgid "toggle mobile"
-msgstr "auf/von mobile Ansicht wechseln"
-
-#: ../../boot.php:2419
-#, php-format
-msgid "[$Projectname] Website SSL error for %s"
-msgstr "[$Projectname] Webseiten-SSL-Fehler für %s"
-
-#: ../../boot.php:2424
-msgid "Website SSL certificate is not valid. Please correct."
-msgstr "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben."
-
-#: ../../boot.php:2540
-#, php-format
-msgid "[$Projectname] Cron tasks not running on %s"
-msgstr "[$Projectname] Cron-Jobs laufen nicht auf %s"
-
-#: ../../boot.php:2545
-msgid "Cron/Scheduled tasks not running."
-msgstr "Cron-Aufgaben laufen nicht."
-
-#: ../../boot.php:2546 ../../include/datetime.php:292
-msgid "never"
-msgstr "Nie"
-
-#: ../../view/theme/redbasic_c/php/config.php:16
-#: ../../view/theme/redbasic_c/php/config.php:19
-#: ../../view/theme/redbasic/php/config.php:16
-#: ../../view/theme/redbasic/php/config.php:19
-msgid "Focus (Hubzilla default)"
-msgstr "Focus (Voreinstellung für Hubzilla)"
-
-#: ../../view/theme/redbasic_c/php/config.php:99
-#: ../../view/theme/redbasic/php/config.php:97
-msgid "Theme settings"
-msgstr "Design-Einstellungen"
-
-#: ../../view/theme/redbasic_c/php/config.php:100
-#: ../../view/theme/redbasic/php/config.php:98
-msgid "Narrow navbar"
-msgstr "Schmale Navigationsleiste"
-
-#: ../../view/theme/redbasic_c/php/config.php:101
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Navigation bar background color"
-msgstr "Hintergrundfarbe der Navigationsleiste"
-
-#: ../../view/theme/redbasic_c/php/config.php:102
-#: ../../view/theme/redbasic/php/config.php:100
-msgid "Navigation bar icon color "
-msgstr "Farbe für die Icons der Navigationsleiste"
-
-#: ../../view/theme/redbasic_c/php/config.php:103
-#: ../../view/theme/redbasic/php/config.php:101
-msgid "Navigation bar active icon color "
-msgstr "Farbe für aktive Icons der Navigationsleiste"
-
-#: ../../view/theme/redbasic_c/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Link color"
-msgstr "Linkfarbe"
-
-#: ../../view/theme/redbasic_c/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:103
-msgid "Set font-color for banner"
-msgstr "Farbe der Schrift des Banners"
-
-#: ../../view/theme/redbasic_c/php/config.php:106
-#: ../../view/theme/redbasic/php/config.php:104
-msgid "Set the background color"
-msgstr "Hintergrundfarbe"
-
-#: ../../view/theme/redbasic_c/php/config.php:107
-#: ../../view/theme/redbasic/php/config.php:105
-msgid "Set the background image"
-msgstr "Hintergrundbild"
-
-#: ../../view/theme/redbasic_c/php/config.php:108
-#: ../../view/theme/redbasic/php/config.php:106
-msgid "Set the background color of items"
-msgstr "Hintergrundfarbe für Beiträge"
-
-#: ../../view/theme/redbasic_c/php/config.php:109
-#: ../../view/theme/redbasic/php/config.php:107
-msgid "Set the background color of comments"
-msgstr "Hintergrundfarbe für Kommentare"
-
-#: ../../view/theme/redbasic_c/php/config.php:110
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Set font-size for the entire application"
-msgstr "Schriftgröße für die gesamte Anwendung"
-
-#: ../../view/theme/redbasic_c/php/config.php:110
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Examples: 1rem, 100%, 16px"
-msgstr "Beispiele: 1rem, 100%, 16px"
-
-#: ../../view/theme/redbasic_c/php/config.php:111
-#: ../../view/theme/redbasic/php/config.php:109
-msgid "Set font-color for posts and comments"
-msgstr "Schriftfarbe für Beiträge und Kommentare"
-
-#: ../../view/theme/redbasic_c/php/config.php:112
-#: ../../view/theme/redbasic/php/config.php:110
-msgid "Set radius of corners"
-msgstr "Ecken-Radius"
-
-#: ../../view/theme/redbasic_c/php/config.php:112
-#: ../../view/theme/redbasic/php/config.php:110
-msgid "Example: 4px"
-msgstr "Beispiel: 4px"
-
-#: ../../view/theme/redbasic_c/php/config.php:113
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Set shadow depth of photos"
-msgstr "Schattentiefe von Fotos"
-
-#: ../../view/theme/redbasic_c/php/config.php:114
-#: ../../view/theme/redbasic/php/config.php:112
-msgid "Set maximum width of content region in pixel"
-msgstr "Maximalbreite des Inhaltsbereichs in Pixel festlegen"
-
-#: ../../view/theme/redbasic_c/php/config.php:114
-#: ../../view/theme/redbasic/php/config.php:112
-msgid "Leave empty for default width"
-msgstr "Leer lassen für Standardbreite"
-
-#: ../../view/theme/redbasic_c/php/config.php:115
-msgid "Left align page content"
-msgstr "Seiteninhalt linksbündig anzeigen"
-
-#: ../../view/theme/redbasic_c/php/config.php:116
-#: ../../view/theme/redbasic/php/config.php:113
-msgid "Set size of conversation author photo"
-msgstr "Größe der Avatare von Themenstartern"
-
-#: ../../view/theme/redbasic_c/php/config.php:117
-#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set size of followup author photos"
-msgstr "Größe der Avatare von Kommentatoren"
-
-#: ../../addon/rendezvous/rendezvous.php:57
-msgid "Errors encountered deleting database table "
-msgstr "Beim Löschen der Datenbanktabelle sind Fehler aufgetreten."
-
-#: ../../addon/rendezvous/rendezvous.php:95
-#: ../../addon/twitter/twitter.php:773
-msgid "Submit Settings"
-msgstr "Einstellungen absenden"
-
-#: ../../addon/rendezvous/rendezvous.php:96
-msgid "Drop tables when uninstalling?"
-msgstr "Lösche Tabellen beim Deinstallieren?"
-
-#: ../../addon/rendezvous/rendezvous.php:96
-msgid ""
-"If checked, the Rendezvous database tables will be deleted when the plugin "
-"is uninstalled."
-msgstr "Wenn ausgewählt, werden die Rendezvous-Tabellen in der Datenbank gelöscht, sobald das Plugin deinstalliert wird."
-
-#: ../../addon/rendezvous/rendezvous.php:97
-msgid "Mapbox Access Token"
-msgstr "Mapbox Zugangs-Token"
-
-#: ../../addon/rendezvous/rendezvous.php:97
-msgid ""
-"If you enter a Mapbox access token, it will be used to retrieve map tiles "
-"from Mapbox instead of the default OpenStreetMap tile server."
-msgstr "Wenn Du ein Mapbox Zugangs-Token eingibst, werden die Kartendaten (Kacheln) damit von Mapbox geladen, anstatt von OpenStreetMap, welches die Voreinstellung ist."
-
-#: ../../addon/rendezvous/rendezvous.php:162
-msgid "Rendezvous"
-msgstr "Rendezvous"
-
-#: ../../addon/rendezvous/rendezvous.php:167
-msgid ""
-"This identity has been deleted by another member due to inactivity. Please "
-"press the \"New identity\" button or refresh the page to register a new "
-"identity. You may use the same name."
-msgstr "Diese Identität wurde von einem anderen Mitglied aufgrund von Inaktivität gelöscht. Bitte klicke auf \"Neue Identität\" oder aktualisiere die Website im Browser, um eine neue Identität zu registrieren. Du kannst dabei den selben Namen verwenden."
-
-#: ../../addon/rendezvous/rendezvous.php:168
-msgid "Welcome to Rendezvous!"
-msgstr "Willkommen bei Rendezvous!"
-
-#: ../../addon/rendezvous/rendezvous.php:169
-msgid ""
-"Enter your name to join this rendezvous. To begin sharing your location with"
-" the other members, tap the GPS control. When your location is discovered, a"
-" red dot will appear and others will be able to see you on the map."
-msgstr "Gib Deinen Namen ein, um diesem Rendezvous beizutreten. Um Deinen Standort mit anderen Mitgliedern zu teilen, klicke auf das GPS Symbol. Sobald Dein Standort ermittelt ist, erscheint ein roter Punkt, und die Anderen werden Dich auf der Karte sehen können."
-
-#: ../../addon/rendezvous/rendezvous.php:171
-msgid "Let's meet here"
-msgstr "Lasst uns hier treffen"
-
-#: ../../addon/rendezvous/rendezvous.php:174
-msgid "New marker"
-msgstr "Neue Markierung"
-
-#: ../../addon/rendezvous/rendezvous.php:175
-msgid "Edit marker"
-msgstr "Markierung bearbeiten"
-
-#: ../../addon/rendezvous/rendezvous.php:176
-msgid "New identity"
-msgstr "Neue Identität"
-
-#: ../../addon/rendezvous/rendezvous.php:177
-msgid "Delete marker"
-msgstr "Markierung löschen"
-
-#: ../../addon/rendezvous/rendezvous.php:178
-msgid "Delete member"
-msgstr "Mitglied löschen"
-
-#: ../../addon/rendezvous/rendezvous.php:179
-msgid "Edit proximity alert"
-msgstr "Annäherungsalarm bearbeiten"
-
-#: ../../addon/rendezvous/rendezvous.php:180
-msgid ""
-"A proximity alert will be issued when this member is within a certain radius"
-" of you.<br><br>Enter a radius in meters (0 to disable):"
-msgstr "Ein Annäherungsalarm wird ausgelöst werden, sobald sich dieses Mitglied innerhalb eines bestimmten Radius von Dir aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):"
-
-#: ../../addon/rendezvous/rendezvous.php:180
-#: ../../addon/rendezvous/rendezvous.php:185
-msgid "distance"
-msgstr "Entfernung"
-
-#: ../../addon/rendezvous/rendezvous.php:181
-msgid "Proximity alert distance (meters)"
-msgstr "Entfernung für Annäherungsalarm (in Metern)"
-
-#: ../../addon/rendezvous/rendezvous.php:182
-#: ../../addon/rendezvous/rendezvous.php:184
-msgid ""
-"A proximity alert will be issued when you are within a certain radius of the"
-" marker location.<br><br>Enter a radius in meters (0 to disable):"
-msgstr "Ein Annäherungsalarm wird ausgelöst werden, sobald Du Dich innerhalb eines bestimmten Radius der Markierung aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):"
-
-#: ../../addon/rendezvous/rendezvous.php:183
-msgid "Marker proximity alert"
-msgstr "Annäherungsalarm für Markierung"
-
-#: ../../addon/rendezvous/rendezvous.php:186
-msgid "Reminder note"
-msgstr "Erinnerungshinweis"
-
-#: ../../addon/rendezvous/rendezvous.php:187
-msgid ""
-"Enter a note to be displayed when you are within the specified proximity..."
-msgstr "Gib eine Nachricht ein, die angezeigt werden soll, wenn Du Dich in der festgelegten Nähe befindest..."
-
-#: ../../addon/rendezvous/rendezvous.php:199
-msgid "Add new rendezvous"
-msgstr "Neues Rendezvous hinzufügen"
-
-#: ../../addon/rendezvous/rendezvous.php:200
-msgid ""
-"Create a new rendezvous and share the access link with those you wish to "
-"invite to the group. Those who open the link become members of the "
-"rendezvous. They can view other member locations, add markers to the map, or"
-" share their own locations with the group."
-msgstr "Erstelle ein neues Rendezvous und teile den Zugriffslink mit allen, die Du in die Gruppe einladen möchtest. Die, die den Link öffnen, werden Mitglieder des Rendezvous. Sie können die Standorte der anderen Mitglieder sehen, Marker zur Karte hinzufügen oder ihre eigenen Standorte mit der Gruppe teilen."
-
-#: ../../addon/skeleton/skeleton.php:59
-msgid "Some setting"
-msgstr "Einige Einstellungen"
-
-#: ../../addon/skeleton/skeleton.php:61
-msgid "A setting"
-msgstr "Eine Einstellung"
-
-#: ../../addon/skeleton/skeleton.php:64
-msgid "Skeleton Settings"
-msgstr "Skeleton Einstellungen"
-
-#: ../../addon/gnusoc/gnusoc.php:247
-msgid "GNU-Social Protocol Settings updated."
-msgstr "GNU social Protokoll Einstellungen aktualisiert"
-
-#: ../../addon/gnusoc/gnusoc.php:266
-msgid ""
-"The GNU-Social protocol does not support location independence. Connections "
-"you make within that network may be unreachable from alternate channel "
-"locations."
-msgstr "Das GNU-Social-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein."
-
-#: ../../addon/gnusoc/gnusoc.php:269
-msgid "Enable the GNU-Social protocol for this channel"
-msgstr "Aktiviere das GNU social Protokoll für diesen Kanal"
-
-#: ../../addon/gnusoc/gnusoc.php:273
-msgid "GNU-Social Protocol Settings"
-msgstr "GNU social Protokoll Einstellungen"
-
-#: ../../addon/gnusoc/gnusoc.php:464
-msgid "Follow"
-msgstr "Folgen"
-
-#: ../../addon/gnusoc/gnusoc.php:467
-#, php-format
-msgid "%1$s is now following %2$s"
-msgstr "%1$s folgt nun %2$s"
-
-#: ../../addon/planets/planets.php:121
-msgid "Planets Settings updated."
-msgstr "Planeten Einstellungen aktualisiert"
-
-#: ../../addon/planets/planets.php:149
-msgid "Enable Planets Plugin"
-msgstr "Aktiviere Planeten Plugin"
-
-#: ../../addon/planets/planets.php:153
-msgid "Planets Settings"
-msgstr "Planeten Einstellungen"
-
-#: ../../addon/openclipatar/openclipatar.php:50
-#: ../../addon/openclipatar/openclipatar.php:128
-msgid "System defaults:"
-msgstr "Systemstandardeinstellungen:"
-
-#: ../../addon/openclipatar/openclipatar.php:54
-msgid "Preferred Clipart IDs"
-msgstr "Bevorzugte Clipart-IDs"
-
-#: ../../addon/openclipatar/openclipatar.php:54
-msgid "List of preferred clipart ids. These will be shown first."
-msgstr "Liste bevorzugter Clipart-IDs. Diese werden zuerst angezeigt."
-
-#: ../../addon/openclipatar/openclipatar.php:55
-msgid "Default Search Term"
-msgstr "Standard-Suchbegriff"
-
-#: ../../addon/openclipatar/openclipatar.php:55
-msgid "The default search term. These will be shown second."
-msgstr "Der Standard-Suchbegriff. Dieser wird an zweiter Stelle angezeigt."
-
-#: ../../addon/openclipatar/openclipatar.php:56
-msgid "Return After"
-msgstr "Zurückkehren nach"
-
-#: ../../addon/openclipatar/openclipatar.php:56
-msgid "Page to load after image selection."
-msgstr "Die Seite, die nach Auswahl eines Bildes geladen werden soll."
-
-#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1301
-#: ../../include/nav.php:153
-msgid "Edit Profile"
-msgstr "Profil bearbeiten"
-
-#: ../../addon/openclipatar/openclipatar.php:59
-msgid "Profile List"
-msgstr "Profilliste"
-
-#: ../../addon/openclipatar/openclipatar.php:61
-msgid "Order of Preferred"
-msgstr "Reihenfolge der Bevorzugten"
-
-#: ../../addon/openclipatar/openclipatar.php:61
-msgid "Sort order of preferred clipart ids."
-msgstr "Sortierreihenfolge der bevorzugten Clipart-IDs."
-
-#: ../../addon/openclipatar/openclipatar.php:62
-#: ../../addon/openclipatar/openclipatar.php:68
-msgid "Newest first"
-msgstr "Neueste zuerst"
-
-#: ../../addon/openclipatar/openclipatar.php:65
-msgid "As entered"
-msgstr "Wie eingegeben"
-
-#: ../../addon/openclipatar/openclipatar.php:67
-msgid "Order of other"
-msgstr "Sortierung aller anderen"
-
-#: ../../addon/openclipatar/openclipatar.php:67
-msgid "Sort order of other clipart ids."
-msgstr "Sortierreihenfolge der übrigen Clipart-IDs."
-
-#: ../../addon/openclipatar/openclipatar.php:69
-msgid "Most downloaded first"
-msgstr "Meist heruntergeladene zuerst"
-
-#: ../../addon/openclipatar/openclipatar.php:70
-msgid "Most liked first"
-msgstr "Beliebteste zuerst"
-
-#: ../../addon/openclipatar/openclipatar.php:72
-msgid "Preferred IDs Message"
-msgstr "Nachricht für bevorzugte IDs"
-
-#: ../../addon/openclipatar/openclipatar.php:72
-msgid "Message to display above preferred results."
-msgstr "Nachricht, die über den Ergebnissen mit den bevorzugten IDs angezeigt werden soll."
-
-#: ../../addon/openclipatar/openclipatar.php:78
-msgid "Uploaded by: "
-msgstr "Hochgeladen von: "
-
-#: ../../addon/openclipatar/openclipatar.php:78
-msgid "Drawn by: "
-msgstr "Gezeichnet von: "
-
-#: ../../addon/openclipatar/openclipatar.php:192
-msgid "Or select from a free OpenClipart.org image:"
-msgstr "Oder wähle ein freies Bild von OpenClipart.org:"
-
-#: ../../addon/openclipatar/openclipatar.php:195
-msgid "Search Term"
-msgstr "Suchbegriff"
-
-#: ../../addon/openclipatar/openclipatar.php:232
-msgid "Unknown error. Please try again later."
-msgstr "Unbekannter Fehler. Bitte versuchen Sie es später erneut."
-
-#: ../../addon/openclipatar/openclipatar.php:308
-msgid "Profile photo updated successfully."
-msgstr "Profilfoto erfolgreich aktualisiert."
-
-#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:4051
-msgid "invalid target signature"
-msgstr "Ungültige Signatur des Ziels"
-
-#: ../../addon/adultphotoflag/adultphotoflag.php:24
-msgid "Flag Adult Photos"
-msgstr "Nicht jugendfreie Fotos markieren"
-
-#: ../../addon/adultphotoflag/adultphotoflag.php:25
-msgid ""
-"Provide photo edit option to hide inappropriate photos from default album "
-"view"
-msgstr "Stellt eine Option zum Verstecken von Fotos mit unangemessenen Inhalten in der Standard-Albumansicht bereit"
-
-#: ../../addon/wppost/wppost.php:45
-msgid "Post to WordPress"
-msgstr "Auf WordPress posten"
-
-#: ../../addon/wppost/wppost.php:82
-msgid "Enable WordPress Post Plugin"
-msgstr "Aktiviere das WordPress-Plugin"
-
-#: ../../addon/wppost/wppost.php:86
-msgid "WordPress username"
-msgstr "WordPress-Benutzername"
-
-#: ../../addon/wppost/wppost.php:90
-msgid "WordPress password"
-msgstr "WordPress-Passwort"
-
-#: ../../addon/wppost/wppost.php:94
-msgid "WordPress API URL"
-msgstr "WordPress-API-URL"
-
-#: ../../addon/wppost/wppost.php:95
-msgid "Typically https://your-blog.tld/xmlrpc.php"
-msgstr "Normalerweise https://your-blog.tld/xmlrpc.php"
-
-#: ../../addon/wppost/wppost.php:98
-msgid "WordPress blogid"
-msgstr "WordPress blogid"
-
-#: ../../addon/wppost/wppost.php:99
-msgid "For multi-user sites such as wordpress.com, otherwise leave blank"
-msgstr "Nötig für Mehrbenutzer Seiten wie wordpress.com, andernfalls frei lassen"
-
-#: ../../addon/wppost/wppost.php:105
-msgid "Post to WordPress by default"
-msgstr "Standardmäßig auf auf WordPress posten"
-
-#: ../../addon/wppost/wppost.php:109
-msgid "Forward comments (requires hubzilla_wp plugin)"
-msgstr "Kommentare weiterleiten (benötigt hubzilla_wp Plugin)"
-
-#: ../../addon/wppost/wppost.php:113
-msgid "WordPress Post Settings"
-msgstr "WordPress-Beitragseinstellungen"
-
-#: ../../addon/wppost/wppost.php:129
-msgid "Wordpress Settings saved."
-msgstr "Wordpress-Einstellungen gespeichert."
-
-#: ../../addon/nsfw/nsfw.php:80
-msgid ""
-"This plugin looks in posts for the words/text you specify below, and "
-"collapses any content containing those keywords so it is not displayed at "
-"inappropriate times, such as sexual innuendo that may be improper in a work "
-"setting. It is polite and recommended to tag any content containing nudity "
-"with #NSFW. This filter can also match any other word/text you specify, and"
-" can thereby be used as a general purpose content filter."
-msgstr "Dieses Plugin sucht in Beiträgen nach Wörtern oder Textbausteinen, die Du hier unterhalb einträgst, und faltet alle Beiträge zusammen, in denen es diese Bausteine findet. Auf diese Weise wird verhindert, dass Inhalte, wie z.B. sexuelle Anspielungen, in unpassenden Momenten angezeigt werden. Es gilt als höflich und empfohlen, den #NSFW Tag für Beiträge zu verwenden, bei denen Du davon ausgehen kannst, dass andere sie anstößig finden könnten. Du kannst aber auch beliebige andere Wörter in der Liste angeben und das Plugin so als allgemeinen Inhaltsfilter verwenden."
-
-#: ../../addon/nsfw/nsfw.php:84
-msgid "Enable Content filter"
-msgstr "Inhaltsfilter aktivieren"
-
-#: ../../addon/nsfw/nsfw.php:88
-msgid "Comma separated list of keywords to hide"
-msgstr "Kommaseparierte Liste von Schlüsselworten die verborgen werden sollen."
-
-#: ../../addon/nsfw/nsfw.php:88
-msgid "Word, /regular-expression/, lang=xx, lang!=xx"
-msgstr "Wort, /regular-expression/, lang=xx, lang!=xx"
-
-#: ../../addon/nsfw/nsfw.php:92
-msgid "Not Safe For Work Settings"
-msgstr "Not Safe For Work Einstellungen"
-
-#: ../../addon/nsfw/nsfw.php:92
-msgid "General Purpose Content Filter"
-msgstr "Allzweck-Inhaltsfilter"
-
-#: ../../addon/nsfw/nsfw.php:110
-msgid "NSFW Settings saved."
-msgstr "NSFW-Einstellungen gespeichert."
-
-#: ../../addon/nsfw/nsfw.php:207
-msgid "Possible adult content"
-msgstr "Möglicherweise nicht jugendfreie Inhalte"
-
-#: ../../addon/nsfw/nsfw.php:211
-#, php-format
-msgid "%s - view"
-msgstr "%s - ansehen"
-
-#: ../../addon/ijpost/ijpost.php:42
-msgid "Post to Insanejournal"
-msgstr "Bei InsaneJournal veröffentlichen"
-
-#: ../../addon/ijpost/ijpost.php:73
-msgid "Enable InsaneJournal Post Plugin"
-msgstr "Aktiviere das InsaneJournal Plugin"
-
-#: ../../addon/ijpost/ijpost.php:77
-msgid "InsaneJournal username"
-msgstr "InsaneJournal-Benutzername"
-
-#: ../../addon/ijpost/ijpost.php:81
-msgid "InsaneJournal password"
-msgstr "InsaneJournal-Passwort"
-
-#: ../../addon/ijpost/ijpost.php:85
-msgid "Post to InsaneJournal by default"
-msgstr "Standardmäßig bei InsaneJournal veröffentlichen"
-
-#: ../../addon/ijpost/ijpost.php:89
-msgid "InsaneJournal Post Settings"
-msgstr "InsaneJournal-Beitragseinstellungen"
-
-#: ../../addon/ijpost/ijpost.php:104
-msgid "Insane Journal Settings saved."
-msgstr "InsaneJournal-Einstellungen gespeichert."
-
-#: ../../addon/dwpost/dwpost.php:42
-msgid "Post to Dreamwidth"
-msgstr "Bei Dreamwidth veröffentlichen"
-
-#: ../../addon/dwpost/dwpost.php:73
-msgid "Enable Dreamwidth Post Plugin"
-msgstr "Aktiviere das Dreamwidth-Plugin"
-
-#: ../../addon/dwpost/dwpost.php:77
-msgid "Dreamwidth username"
-msgstr "Dreamwidth-Benutzername"
-
-#: ../../addon/dwpost/dwpost.php:81
-msgid "Dreamwidth password"
-msgstr "Dreamwidth-Passwort"
-
-#: ../../addon/dwpost/dwpost.php:85
-msgid "Post to Dreamwidth by default"
-msgstr "Standardmäßig auf auf Dreamwidth posten"
-
-#: ../../addon/dwpost/dwpost.php:89
-msgid "Dreamwidth Post Settings"
-msgstr "Dreamwidth-Beitragseinstellungen"
-
-#: ../../addon/dirstats/dirstats.php:94
-msgid "Hubzilla Directory Stats"
-msgstr "Hubzilla-Verzeichnisstatistiken"
-
-#: ../../addon/dirstats/dirstats.php:95
-msgid "Total Hubs"
-msgstr "Hubs insgesamt"
-
-#: ../../addon/dirstats/dirstats.php:97
-msgid "Hubzilla Hubs"
-msgstr "Hubzilla Hubs"
-
-#: ../../addon/dirstats/dirstats.php:99
-msgid "Friendica Hubs"
-msgstr "Friendica Hubs"
-
-#: ../../addon/dirstats/dirstats.php:101
-msgid "Diaspora Pods"
-msgstr "Diaspora Pods"
-
-#: ../../addon/dirstats/dirstats.php:103
-msgid "Hubzilla Channels"
-msgstr "Hubzilla-Kanäle"
-
-#: ../../addon/dirstats/dirstats.php:105
-msgid "Friendica Channels"
-msgstr "Friendica-Kanäle"
-
-#: ../../addon/dirstats/dirstats.php:107
-msgid "Diaspora Channels"
-msgstr "Diaspora-Kanäle"
-
-#: ../../addon/dirstats/dirstats.php:109
-msgid "Aged 35 and above"
-msgstr "35 und älter"
-
-#: ../../addon/dirstats/dirstats.php:111
-msgid "Aged 34 and under"
-msgstr "34 und jünger"
-
-#: ../../addon/dirstats/dirstats.php:113
-msgid "Average Age"
-msgstr "Durchschnittsalter"
-
-#: ../../addon/dirstats/dirstats.php:115
-msgid "Known Chatrooms"
-msgstr "Bekannte Chaträume"
-
-#: ../../addon/dirstats/dirstats.php:117
-msgid "Known Tags"
-msgstr "Bekannte Schlagwörter"
-
-#: ../../addon/dirstats/dirstats.php:119
-msgid ""
-"Please note Diaspora and Friendica statistics are merely those **this "
-"directory** is aware of, and not all those known in the network. This also "
-"applies to chatrooms,"
-msgstr "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume."
-
-#: ../../addon/likebanner/likebanner.php:51
-msgid "Your Webbie:"
-msgstr "Dein Webbie"
-
-#: ../../addon/likebanner/likebanner.php:54
-msgid "Fontsize (px):"
-msgstr "Schriftgröße (px):"
-
-#: ../../addon/likebanner/likebanner.php:68
-msgid "Link:"
-msgstr "Link:"
-
-#: ../../addon/likebanner/likebanner.php:70
-msgid "Like us on Hubzilla"
-msgstr "Like us on Hubzilla"
-
-#: ../../addon/likebanner/likebanner.php:72
-msgid "Embed:"
-msgstr "Einbetten"
-
-#: ../../addon/redphotos/redphotos.php:106
-msgid "Photos imported"
-msgstr "Fotos importiert"
-
-#: ../../addon/redphotos/redphotos.php:129
-msgid "Redmatrix Photo Album Import"
-msgstr "Redmatrix-Fotoalbumimport"
-
-#: ../../addon/redphotos/redphotos.php:130
-msgid "This will import all your Redmatrix photo albums to this channel."
-msgstr "Hiermit werden all deine Fotoalben von Redmatrix in diesen Kanal importiert."
-
-#: ../../addon/redphotos/redphotos.php:131
-#: ../../addon/redfiles/redfiles.php:121
-msgid "Redmatrix Server base URL"
-msgstr "Basis-URL des Redmatrix Servers"
-
-#: ../../addon/redphotos/redphotos.php:132
-#: ../../addon/redfiles/redfiles.php:122
-msgid "Redmatrix Login Username"
-msgstr "Redmatrix-Anmeldebenutzername"
-
-#: ../../addon/redphotos/redphotos.php:133
-#: ../../addon/redfiles/redfiles.php:123
-msgid "Redmatrix Login Password"
-msgstr "Redmatrix-Anmeldepasswort"
-
-#: ../../addon/redphotos/redphotos.php:134
-msgid "Import just this album"
-msgstr "Nur dieses Album importieren"
-
-#: ../../addon/redphotos/redphotos.php:134
-msgid "Leave blank to import all albums"
-msgstr "Leer lassen um alle Alben zu importieren"
-
-#: ../../addon/redphotos/redphotos.php:135
-msgid "Maximum count to import"
-msgstr "Maximal zu importierende Anzahl"
-
-#: ../../addon/redphotos/redphotos.php:135
-msgid "0 or blank to import all available"
-msgstr "0 oder leer lassen um alles zu importieren"
-
-#: ../../addon/irc/irc.php:45
-msgid "Channels to auto connect"
-msgstr "Kanäle zur automatischen Verbindung"
-
-#: ../../addon/irc/irc.php:45 ../../addon/irc/irc.php:49
-msgid "Comma separated list"
-msgstr "Kommagetrennte Liste"
-
-#: ../../addon/irc/irc.php:49 ../../addon/irc/irc.php:96
-msgid "Popular Channels"
-msgstr "Beliebte Kanäle"
-
-#: ../../addon/irc/irc.php:53
-msgid "IRC Settings"
-msgstr "IRC-Einstellungen"
-
-#: ../../addon/irc/irc.php:69
-msgid "IRC settings saved."
-msgstr "IRC-Einstellungen gespeichert."
-
-#: ../../addon/irc/irc.php:74
-msgid "IRC Chatroom"
-msgstr "IRC-Chatraum"
-
-#: ../../addon/ljpost/ljpost.php:42
-msgid "Post to LiveJournal"
-msgstr "Bei LiveJurnal veröffentlichen"
-
-#: ../../addon/ljpost/ljpost.php:70
-msgid "Enable LiveJournal Post Plugin"
-msgstr "Aktiviere das LiveJurnal Plugin"
-
-#: ../../addon/ljpost/ljpost.php:74
-msgid "LiveJournal username"
-msgstr "LiveJournal-Benutzername"
-
-#: ../../addon/ljpost/ljpost.php:78
-msgid "LiveJournal password"
-msgstr "LiveJournal-Passwort"
-
-#: ../../addon/ljpost/ljpost.php:82
-msgid "Post to LiveJournal by default"
-msgstr "Standardmäßig bei LiveJurnal veröffentlichen"
-
-#: ../../addon/ljpost/ljpost.php:86
-msgid "LiveJournal Post Settings"
-msgstr "LiveJournal-Beitragseinstellungen"
-
-#: ../../addon/ljpost/ljpost.php:101
-msgid "LiveJournal Settings saved."
-msgstr "LiveJournal-Einstellungen gespeichert."
-
-#: ../../addon/openid/openid.php:49
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal."
-
-#: ../../addon/openid/openid.php:49
-msgid "The error message was:"
-msgstr "Die Fehlermeldung war:"
-
-#: ../../addon/openid/MysqlProvider.php:52
-msgid "First Name"
-msgstr "Vorname"
-
-#: ../../addon/openid/MysqlProvider.php:53
-msgid "Last Name"
-msgstr "Nachname"
-
-#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/redred.php:111
-msgid "Nickname"
-msgstr "Spitzname"
-
-#: ../../addon/openid/MysqlProvider.php:55
-msgid "Full Name"
-msgstr "Voller Name"
-
-#: ../../addon/openid/MysqlProvider.php:61
-msgid "Profile Photo 16px"
-msgstr "Profilfoto 16 px"
-
-#: ../../addon/openid/MysqlProvider.php:62
-msgid "Profile Photo 32px"
-msgstr "Profilfoto 32 px"
-
-#: ../../addon/openid/MysqlProvider.php:63
-msgid "Profile Photo 48px"
-msgstr "Profilfoto 48 px"
-
-#: ../../addon/openid/MysqlProvider.php:64
-msgid "Profile Photo 64px"
-msgstr "Profilfoto 64 px"
-
-#: ../../addon/openid/MysqlProvider.php:65
-msgid "Profile Photo 80px"
-msgstr "Profilfoto 80 px"
-
-#: ../../addon/openid/MysqlProvider.php:66
-msgid "Profile Photo 128px"
-msgstr "Profilfoto 128 px"
-
-#: ../../addon/openid/MysqlProvider.php:67
-msgid "Timezone"
-msgstr "Zeitzone"
-
-#: ../../addon/openid/MysqlProvider.php:70
-msgid "Birth Year"
-msgstr "Geburtsjahr"
-
-#: ../../addon/openid/MysqlProvider.php:71
-msgid "Birth Month"
-msgstr "Geburtsmonat"
-
-#: ../../addon/openid/MysqlProvider.php:72
-msgid "Birth Day"
-msgstr "Geburtstag"
-
-#: ../../addon/openid/MysqlProvider.php:73
-msgid "Birthdate"
-msgstr "Geburtsdatum"
-
-#: ../../addon/openid/Mod_Openid.php:30
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID-Protokollfehler. Keine Kennung zurückgegeben."
-
-#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:289
-msgid "Login failed."
-msgstr "Login fehlgeschlagen."
-
-#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1480
-msgid "Male"
-msgstr "Männlich"
-
-#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1478
-msgid "Female"
-msgstr "Weiblich"
-
-#: ../../addon/randpost/randpost.php:97
-msgid "You're welcome."
-msgstr "Gern geschehen."
-
-#: ../../addon/randpost/randpost.php:98
-msgid "Ah shucks..."
-msgstr "Ach Mist..."
-
-#: ../../addon/randpost/randpost.php:99
-msgid "Don't mention it."
-msgstr "Keine Ursache."
-
-#: ../../addon/randpost/randpost.php:100
-msgid "&lt;blush&gt;"
-msgstr ""
-
-#: ../../addon/startpage/startpage.php:109
-msgid "Page to load after login"
-msgstr "Seite, die nach dem Login geladen werden soll"
-
-#: ../../addon/startpage/startpage.php:109
-msgid ""
-"Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy "
-"collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave "
-"blank for default network page (grid)."
-msgstr "Beispiele: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (Gruppen-gefilterte Beiträge), &quot;channel&quot; oder &quot;notifications/system&quot; (freilassen für die Standard-Netzwerkseite (grid)."
-
-#: ../../addon/startpage/startpage.php:113
-msgid "Startpage Settings"
-msgstr "Startseiteneinstellungen"
-
-#: ../../addon/morepokes/morepokes.php:19
-msgid "bitchslap"
-msgstr "Ohrfeige"
-
-#: ../../addon/morepokes/morepokes.php:19
-msgid "bitchslapped"
-msgstr "geohrfeigt"
-
-#: ../../addon/morepokes/morepokes.php:20
-msgid "shag"
-msgstr "bumsen"
-
-#: ../../addon/morepokes/morepokes.php:20
-msgid "shagged"
-msgstr "gebumst"
-
-#: ../../addon/morepokes/morepokes.php:21
-msgid "patent"
-msgstr "Patent"
-
-#: ../../addon/morepokes/morepokes.php:21
-msgid "patented"
-msgstr "patentiert"
-
-#: ../../addon/morepokes/morepokes.php:22
-msgid "hug"
-msgstr "umarmen"
-
-#: ../../addon/morepokes/morepokes.php:22
-msgid "hugged"
-msgstr "umarmt"
-
-#: ../../addon/morepokes/morepokes.php:23
-msgid "murder"
-msgstr "ermorden"
-
-#: ../../addon/morepokes/morepokes.php:23
-msgid "murdered"
-msgstr "ermordet"
-
-#: ../../addon/morepokes/morepokes.php:24
-msgid "worship"
-msgstr "Anbetung"
-
-#: ../../addon/morepokes/morepokes.php:24
-msgid "worshipped"
-msgstr "angebetet"
-
-#: ../../addon/morepokes/morepokes.php:25
-msgid "kiss"
-msgstr "küssen"
-
-#: ../../addon/morepokes/morepokes.php:25
-msgid "kissed"
-msgstr "geküsst"
-
-#: ../../addon/morepokes/morepokes.php:26
-msgid "tempt"
-msgstr "verlocken"
-
-#: ../../addon/morepokes/morepokes.php:26
-msgid "tempted"
-msgstr "verlockt"
-
-#: ../../addon/morepokes/morepokes.php:27
-msgid "raise eyebrows at"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:27
-msgid "raised their eyebrows at"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:28
-msgid "insult"
-msgstr "beleidigen"
-
-#: ../../addon/morepokes/morepokes.php:28
-msgid "insulted"
-msgstr "beleidigt"
-
-#: ../../addon/morepokes/morepokes.php:29
-msgid "praise"
-msgstr "loben"
-
-#: ../../addon/morepokes/morepokes.php:29
-msgid "praised"
-msgstr "gelobt"
-
-#: ../../addon/morepokes/morepokes.php:30
-msgid "be dubious of"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:30
-msgid "was dubious of"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:31
-msgid "eat"
-msgstr "essen"
-
-#: ../../addon/morepokes/morepokes.php:31
-msgid "ate"
-msgstr "aß"
-
-#: ../../addon/morepokes/morepokes.php:32
-msgid "giggle and fawn at"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:32
-msgid "giggled and fawned at"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:33
-msgid "doubt"
-msgstr "anzweifeln"
-
-#: ../../addon/morepokes/morepokes.php:33
-msgid "doubted"
-msgstr "angezweifelt"
-
-#: ../../addon/morepokes/morepokes.php:34
-msgid "glare"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:34
-msgid "glared at"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:35
-msgid "fuck"
-msgstr "ficken"
-
-#: ../../addon/morepokes/morepokes.php:35
-msgid "fucked"
-msgstr "gefickt"
-
-#: ../../addon/morepokes/morepokes.php:36
-msgid "bonk"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:36
-msgid "bonked"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:37
-msgid "declare undying love for"
-msgstr ""
-
-#: ../../addon/morepokes/morepokes.php:37
-msgid "declared undying love for"
-msgstr ""
-
-#: ../../addon/diaspora/diaspora.php:772
-msgid "Diaspora Protocol Settings updated."
-msgstr "Diaspora Protokoll Einstellungen aktualisiert"
-
-#: ../../addon/diaspora/diaspora.php:791
-msgid ""
-"The Diaspora protocol does not support location independence. Connections "
-"you make within that network may be unreachable from alternate channel "
-"locations."
-msgstr "Das Diaspora-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein."
-
-#: ../../addon/diaspora/diaspora.php:794
-msgid "Enable the Diaspora protocol for this channel"
-msgstr "Das Diaspora Protokoll für diesen Kanal aktivieren"
-
-#: ../../addon/diaspora/diaspora.php:798
-msgid "Allow any Diaspora member to comment on your public posts"
-msgstr "Erlaube jedem Diaspora Nutzer deine öffentlichen Beiträge zu kommentieren"
-
-#: ../../addon/diaspora/diaspora.php:802
-msgid "Prevent your hashtags from being redirected to other sites"
-msgstr "Verhindern, dass Deine Hashtags zu anderen Seiten umgeleitet werden"
-
-#: ../../addon/diaspora/diaspora.php:806
-msgid ""
-"Sign and forward posts and comments with no existing Diaspora signature"
-msgstr "Signieren und Weiterleiten von Beiträgen und Kommentaren ohne vorhandene Diaspora-Signatur"
-
-#: ../../addon/diaspora/diaspora.php:811
-msgid "Followed hashtags (comma separated, do not include the #)"
-msgstr "Verfolgte Hashtags (Komma separierte Liste, ohne die #)"
-
-#: ../../addon/diaspora/diaspora.php:816
-msgid "Diaspora Protocol Settings"
-msgstr "Diaspora Protokoll Einstellungen"
-
-#: ../../addon/diaspora/import_diaspora.php:16
-msgid "No username found in import file."
-msgstr "Es wurde kein Nutzername in der importierten Datei gefunden."
-
-#: ../../addon/diaspora/import_diaspora.php:41 ../../include/import.php:62
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."
-
-#: ../../addon/testdrive/testdrive.php:104
-#, php-format
-msgid "Your account on %s will expire in a few days."
-msgstr "Dein Account auf %s wird in ein paar Tagen ablaufen."
-
-#: ../../addon/testdrive/testdrive.php:105
-msgid "Your $Productname test account is about to expire."
-msgstr "Dein $Productname Test-Account wird bald auslaufen."
-
-#: ../../addon/rainbowtag/rainbowtag.php:81
-msgid "Enable Rainbowtag"
-msgstr "Rainbowtag aktivieren"
-
-#: ../../addon/rainbowtag/rainbowtag.php:85
-msgid "Rainbowtag Settings"
-msgstr "Rainbowtag-Einstellungen"
-
-#: ../../addon/rainbowtag/rainbowtag.php:101
-msgid "Rainbowtag Settings saved."
-msgstr "Rainbowtag-Einstellungen gespeichert."
-
-#: ../../addon/upload_limits/upload_limits.php:25
-msgid "Show Upload Limits"
-msgstr "Hochladebeschränkungen anzeigen"
-
-#: ../../addon/upload_limits/upload_limits.php:27
-msgid "Hubzilla configured maximum size: "
-msgstr "Die in Hubzilla eingestellte maximale Größe:"
-
-#: ../../addon/upload_limits/upload_limits.php:28
-msgid "PHP upload_max_filesize: "
-msgstr "PHP upload_max_filesize:"
-
-#: ../../addon/upload_limits/upload_limits.php:29
-msgid "PHP post_max_size (must be larger than upload_max_filesize): "
-msgstr "PHP post_max_size (muss größer sein als upload_max_filesize):"
-
-#: ../../addon/gravatar/gravatar.php:123
-msgid "generic profile image"
-msgstr "generisches Profilbild"
-
-#: ../../addon/gravatar/gravatar.php:124
-msgid "random geometric pattern"
-msgstr "zufälliges geometrisches Muster"
-
-#: ../../addon/gravatar/gravatar.php:125
-msgid "monster face"
-msgstr "Monstergesicht"
-
-#: ../../addon/gravatar/gravatar.php:126
-msgid "computer generated face"
-msgstr "computergeneriertes Gesicht"
-
-#: ../../addon/gravatar/gravatar.php:127
-msgid "retro arcade style face"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:128
-msgid "Hub default profile photo"
-msgstr "Standard-Profilfoto für diesen Hub"
-
-#: ../../addon/gravatar/gravatar.php:143
-msgid "Information"
-msgstr "Information"
-
-#: ../../addon/gravatar/gravatar.php:143
-msgid ""
-"Libravatar addon is installed, too. Please disable Libravatar addon or this "
-"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
-"nothing was found at Libravatar."
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:150
-#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:91
-msgid "Save Settings"
-msgstr "Einstellungen speichern"
-
-#: ../../addon/gravatar/gravatar.php:151
-msgid "Default avatar image"
-msgstr "Standard-Avatarbild"
-
-#: ../../addon/gravatar/gravatar.php:151
-msgid "Select default avatar image if none was found at Gravatar. See README"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:152
-msgid "Rating of images"
-msgstr "Bewertungen der Bilder"
-
-#: ../../addon/gravatar/gravatar.php:152
-msgid "Select the appropriate avatar rating for your site. See README"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:165
-msgid "Gravatar settings updated."
-msgstr "Gravatar-Einstellungen aktualisiert."
-
-#: ../../addon/hzfiles/hzfiles.php:79
-msgid "Hubzilla File Storage Import"
-msgstr ""
-
-#: ../../addon/hzfiles/hzfiles.php:80
-msgid "This will import all your cloud files from another server."
-msgstr ""
-
-#: ../../addon/hzfiles/hzfiles.php:81
-msgid "Hubzilla Server base URL"
-msgstr ""
-
-#: ../../addon/hzfiles/hzfiles.php:82
-msgid "Since modified date yyyy-mm-dd"
-msgstr ""
-
-#: ../../addon/hzfiles/hzfiles.php:83
-msgid "Until modified date yyyy-mm-dd"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:123
-msgid "generic profile image"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:124
-msgid "random geometric pattern"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:125
-msgid "monster face"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:126
-msgid "computer generated face"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:127
-msgid "retro arcade style face"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:128
-msgid "Hub default profile photo"
-msgstr "Standard-Profilfoto für diesen Hub"
-
-#: ../../addon/gravatar/gravatar.php:143
-msgid "Information"
-msgstr "Information"
-
-#: ../../addon/gravatar/gravatar.php:143
-msgid ""
-"Libravatar addon is installed, too. Please disable Libravatar addon or this "
-"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
-"nothing was found at Libravatar."
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:150
-#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:91
-msgid "Save Settings"
-msgstr "Einstellungen speichern"
-
-#: ../../addon/gravatar/gravatar.php:151
-msgid "Default avatar image"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:151
-msgid "Select default avatar image if none was found at Gravatar. See README"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:152
-msgid "Rating of images"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:152
-msgid "Select the appropriate avatar rating for your site. See README"
-msgstr ""
-
-#: ../../addon/gravatar/gravatar.php:165
-msgid "Gravatar settings updated."
-msgstr ""
-
-#: ../../addon/visage/visage.php:93
-msgid "Recent Channel/Profile Viewers"
-msgstr "Kürzliche Kanal/Profil Besucher"
-
-#: ../../addon/visage/visage.php:98
-msgid "This plugin/addon has not been configured."
-msgstr "Dieses Plugin/Addon wurde noch nicht konfiguriert."
-
-#: ../../addon/visage/visage.php:99
-#, php-format
-msgid "Please visit the Visage settings on %s"
-msgstr "Bitte rufe die Visage Einstellungen auf %s auf"
-
-#: ../../addon/visage/visage.php:99
-msgid "your feature settings page"
-msgstr "Die Funktions-Einstellungsseite"
-
-#: ../../addon/visage/visage.php:112
-msgid "No entries."
-msgstr "Keine Einträge."
-
-#: ../../addon/visage/visage.php:166
-msgid "Enable Visage Visitor Logging"
-msgstr "Aktiviere das Visage-Besucher Logging"
-
-#: ../../addon/visage/visage.php:170
-msgid "Visage Settings"
-msgstr "Visage-Einstellungen"
-
-#: ../../addon/nsabait/nsabait.php:125
-msgid "Nsabait Settings updated."
-msgstr "Nsabait-Einstellungen aktualisiert."
-
-#: ../../addon/nsabait/nsabait.php:157
-msgid "Enable NSAbait Plugin"
-msgstr "Aktiviere das NSAbait Plugin"
-
-#: ../../addon/nsabait/nsabait.php:161
-msgid "NSAbait Settings"
-msgstr "NSAbait-Einstellungen"
-
-#: ../../addon/mailtest/mailtest.php:19
-msgid "Send test email"
-msgstr "Test-E-Mail senden"
-
-#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50
-msgid "No recipients found."
-msgstr "Keine Empfänger gefunden."
-
-#: ../../addon/mailtest/mailtest.php:66
-msgid "Mail sent."
-msgstr "Mail gesendet."
-
-#: ../../addon/mailtest/mailtest.php:68
-msgid "Sending of mail failed."
-msgstr "Senden der E-Mail fehlgeschlagen."
-
-#: ../../addon/mailtest/mailtest.php:77
-msgid "Mail Test"
-msgstr "Mail Test"
-
-#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92
-msgid "Message subject"
-msgstr "Betreff der Nachricht"
-
-#: ../../addon/openstreetmap/openstreetmap.php:146
-msgid "View Larger"
-msgstr "Größer anzeigen"
-
-#: ../../addon/openstreetmap/openstreetmap.php:169
-msgid "Tile Server URL"
-msgstr "Kachelserver-URL"
-
-#: ../../addon/openstreetmap/openstreetmap.php:169
-msgid ""
-"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" "
-"target=\"_blank\">public tile servers</a>"
-msgstr "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Kachelserver</a>"
-
-#: ../../addon/openstreetmap/openstreetmap.php:170
-msgid "Nominatim (reverse geocoding) Server URL"
-msgstr "Nominatim (reverse Geokodierung) Server URL"
-
-#: ../../addon/openstreetmap/openstreetmap.php:170
-msgid ""
-"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" "
-"target=\"_blank\">Nominatim servers</a>"
-msgstr "Eine Liste der <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim Server</a>"
-
-#: ../../addon/openstreetmap/openstreetmap.php:171
-msgid "Default zoom"
-msgstr "Standardzoom"
-
-#: ../../addon/openstreetmap/openstreetmap.php:171
-msgid ""
-"The default zoom level. (1:world, 18:highest, also depends on tile server)"
-msgstr "Die Standard-Vergrößerungsstufe (1:Welt, 18:höchste, hängt außerdem vom Kachelserver ab)."
-
-#: ../../addon/openstreetmap/openstreetmap.php:172
-msgid "Include marker on map"
-msgstr "Markierung auf der Karte einschließen"
-
-#: ../../addon/openstreetmap/openstreetmap.php:172
-msgid "Include a marker on the map."
-msgstr "Binde eine Markierung auf der Karte ein."
-
-#: ../../addon/msgfooter/msgfooter.php:47
-msgid "text to include in all outgoing posts from this site"
-msgstr "Test der in alle Beiträge angefügt werden soll, die von dieser Seite ausgehen"
-
-#: ../../addon/rtof/rtof.php:45
-msgid "Post to Friendica"
-msgstr "Bei Friendica veröffentlichen"
-
-#: ../../addon/rtof/rtof.php:62
-msgid "rtof Settings saved."
-msgstr "rtof-Einstellungen gespeichert."
-
-#: ../../addon/rtof/rtof.php:81
-msgid "Allow posting to Friendica"
-msgstr "Erlaube die Veröffentlichung bei Friendica"
-
-#: ../../addon/rtof/rtof.php:85
-msgid "Send public postings to Friendica by default"
-msgstr "Standardmäßig öffentliche Beiträge bei Friendica veröffentlichen"
-
-#: ../../addon/rtof/rtof.php:89
-msgid "Friendica API Path"
-msgstr "Friendica-API-Pfad"
-
-#: ../../addon/rtof/rtof.php:89 ../../addon/redred/redred.php:103
-msgid "https://{sitename}/api"
-msgstr "https://{sitename}/api"
-
-#: ../../addon/rtof/rtof.php:93
-msgid "Friendica login name"
-msgstr "Friendica-Anmeldename"
-
-#: ../../addon/rtof/rtof.php:97
-msgid "Friendica password"
-msgstr "Friendica-Passwort"
-
-#: ../../addon/rtof/rtof.php:101
-msgid "Hubzilla to Friendica Post Settings"
-msgstr "Hubzilla-zu-Friendica Beitragseinstellungen"
-
-#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1397
-#: ../../include/channel.php:1567
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../addon/jappixmini/jappixmini.php:309
-msgid "Activate addon"
-msgstr "Addon aktiviren"
-
-#: ../../addon/jappixmini/jappixmini.php:313
-msgid "Hide Jappixmini Chat-Widget from the webinterface"
-msgstr "Jappix Mini Chat-Widget von der Weboberfläche verbergen"
-
-#: ../../addon/jappixmini/jappixmini.php:318
-msgid "Jabber username"
-msgstr "Jabber-Benutzername"
-
-#: ../../addon/jappixmini/jappixmini.php:324
-msgid "Jabber server"
-msgstr "Jabber-Server"
-
-#: ../../addon/jappixmini/jappixmini.php:330
-msgid "Jabber BOSH host URL"
-msgstr "Jabber BOSH Host URL"
-
-#: ../../addon/jappixmini/jappixmini.php:337
-msgid "Jabber password"
-msgstr "Jabber-Passwort"
-
-#: ../../addon/jappixmini/jappixmini.php:343
-msgid "Encrypt Jabber password with Hubzilla password"
-msgstr "Jabber-Passwort mit Hubzilla-Passwort verschlüsseln"
-
-#: ../../addon/jappixmini/jappixmini.php:347 ../../addon/redred/redred.php:115
-msgid "Hubzilla password"
-msgstr "Hubzilla-Passwort"
-
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-msgid "Approve subscription requests from Hubzilla contacts automatically"
-msgstr "Verbindungsanfragen von Hubzilla-Kontakten automatisch annehmen"
-
-#: ../../addon/jappixmini/jappixmini.php:359
-msgid "Purge internal list of jabber addresses of contacts"
-msgstr "Interne Liste der Jabber Adressen von Kontakten löschen"
-
-#: ../../addon/jappixmini/jappixmini.php:364
-msgid "Configuration Help"
-msgstr "Konfigurationshilfe"
-
-#: ../../addon/jappixmini/jappixmini.php:371
-msgid "Jappix Mini Settings"
-msgstr "Jappix Mini Einstellungen"
-
-#: ../../addon/superblock/superblock.php:112
-msgid "Currently blocked"
-msgstr "Derzeit blockiert"
-
-#: ../../addon/superblock/superblock.php:114
-msgid "No channels currently blocked"
-msgstr "Momentan sind keine Kanäle blockiert"
-
-#: ../../addon/superblock/superblock.php:120
-msgid "\"Superblock\" Settings"
-msgstr "\"Superblock\"-Einstellungen"
-
-#: ../../addon/superblock/superblock.php:345
-msgid "Block Completely"
-msgstr "Vollständig blockieren"
-
-#: ../../addon/superblock/superblock.php:394
-msgid "superblock settings updated"
-msgstr "Superblock Einstellungen aktualisiert"
-
-#: ../../addon/nofed/nofed.php:42
-msgid "Federate"
-msgstr "Beitrag verteilen"
-
-#: ../../addon/nofed/nofed.php:56
-msgid "nofed Settings saved."
-msgstr "nofed Einstellungen gespeichert"
-
-#: ../../addon/nofed/nofed.php:72
-msgid "Allow Federation Toggle"
-msgstr "Umschalter zur Beitragsverteilung bereitstellen"
-
-#: ../../addon/nofed/nofed.php:76
-msgid "Federate posts by default"
-msgstr "Beiträge standardmäßig verteilen"
-
-#: ../../addon/nofed/nofed.php:80
-msgid "NoFed Settings"
-msgstr "NoFed-Einstellungen"
-
-#: ../../addon/redred/redred.php:45
-msgid "Post to Red"
-msgstr ""
-
-#: ../../addon/redred/redred.php:60
-msgid "Channel is required."
-msgstr "Kanal ist erforderlich."
-
-#: ../../addon/redred/redred.php:76
-msgid "redred Settings saved."
-msgstr "redred-Einstellungen gespeichert."
-
-#: ../../addon/redred/redred.php:95
-msgid "Allow posting to another Hubzilla Channel"
-msgstr "Erlaube die Veröffentlichung in anderen Hubzilla Kanälen"
-
-#: ../../addon/redred/redred.php:99
-msgid "Send public postings to Hubzilla channel by default"
-msgstr ""
-
-#: ../../addon/redred/redred.php:103
-msgid "Hubzilla API Path"
-msgstr "Hubzilla-API-Pfad"
-
-#: ../../addon/redred/redred.php:107
-msgid "Hubzilla login name"
-msgstr "Hubzilla-Anmeldename"
-
-#: ../../addon/redred/redred.php:111
-msgid "Hubzilla channel name"
-msgstr "Hubzilla-Kanalname"
-
-#: ../../addon/redred/redred.php:119
-msgid "Hubzilla Crosspost Settings"
-msgstr ""
-
-#: ../../addon/logrot/logrot.php:36
-msgid "Logfile archive directory"
-msgstr "Verzeichnis der Logdatei"
-
-#: ../../addon/logrot/logrot.php:36
-msgid "Directory to store rotated logs"
-msgstr "Verzeichnis, in dem rotierte Logs gespeichert werden sollen"
-
-#: ../../addon/logrot/logrot.php:37
-msgid "Logfile size in bytes before rotating"
-msgstr "zu erreichende Logdateigröße in Bytes, bevor rotiert wird"
-
-#: ../../addon/logrot/logrot.php:38
-msgid "Number of logfiles to retain"
-msgstr "Anzahl aufzubewahrender rotierter Logdateien"
-
-#: ../../addon/frphotos/frphotos.php:91
-msgid "Friendica Photo Album Import"
-msgstr "Friendica-Fotoalbumimport"
-
-#: ../../addon/frphotos/frphotos.php:92
-msgid "This will import all your Friendica photo albums to this Red channel."
-msgstr "Hiermit werden all deine Fotoalben von Friendica in diesen Hubzilla Kanal importiert."
-
-#: ../../addon/frphotos/frphotos.php:93
-msgid "Friendica Server base URL"
-msgstr "BasisURL des Friendica Servers"
-
-#: ../../addon/frphotos/frphotos.php:94
-msgid "Friendica Login Username"
-msgstr "Friendica-Anmeldebenutzername"
-
-#: ../../addon/frphotos/frphotos.php:95
-msgid "Friendica Login Password"
-msgstr "Friendica-Anmeldepasswort"
-
-#: ../../addon/pubcrawl/as.php:1077 ../../addon/pubcrawl/as.php:1164
-#: ../../addon/pubcrawl/as.php:1339 ../../include/network.php:1768
-msgid "ActivityPub"
-msgstr "ActivityPub"
-
-#: ../../addon/pubcrawl/pubcrawl.php:1033
-msgid "ActivityPub Protocol Settings updated."
-msgstr ""
-
-#: ../../addon/pubcrawl/pubcrawl.php:1042
-msgid ""
-"The ActivityPub protocol does not support location independence. Connections"
-" you make within that network may be unreachable from alternate channel "
-"locations."
-msgstr ""
-
-#: ../../addon/pubcrawl/pubcrawl.php:1045
-msgid "Enable the ActivityPub protocol for this channel"
-msgstr ""
-
-#: ../../addon/pubcrawl/pubcrawl.php:1048
-msgid "Send multi-media HTML articles"
-msgstr ""
-
-#: ../../addon/pubcrawl/pubcrawl.php:1048
-msgid "Not supported by some microblog services such as Mastodon"
-msgstr ""
-
-#: ../../addon/pubcrawl/pubcrawl.php:1053
-msgid "ActivityPub Protocol Settings"
-msgstr ""
-
-#: ../../addon/donate/donate.php:21
-msgid "Project Servers and Resources"
-msgstr "Projektserver und -ressourcen"
-
-#: ../../addon/donate/donate.php:22
-msgid "Project Creator and Tech Lead"
-msgstr "Projektersteller und Technischer Leiter"
-
-#: ../../addon/donate/donate.php:23
-msgid "Admin, developer, directorymin, support bloke"
-msgstr "Administrator, Entwickler, Verzeichnis Betreibender, Supportleistende"
-
-#: ../../addon/donate/donate.php:50
-msgid ""
-"And the hundreds of other people and organisations who helped make the "
-"Hubzilla possible."
-msgstr "Und die hunderte anderen Menschen und Organisationen, die geholfen haben Hubzilla möglich zu machen."
-
-#: ../../addon/donate/donate.php:53
-msgid ""
-"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving "
-"their time and expertise - and often paying out of pocket for services they "
-"share with others."
-msgstr "Die Redmatrix/Hubzilla Projekte werden hauptsächlich von Freiwilligen bereitgestellt, die ihre Zeit und Expertise zur Verfügung stellen - und oft aus eigener Tasche für die Dienste zahlen, die sie mit anderen teilen."
-
-#: ../../addon/donate/donate.php:54
-msgid ""
-"There is no corporate funding and no ads, and we do not collect and sell "
-"your personal information. (We don't control your personal information - "
-"<strong>you do</strong>.)"
-msgstr "Es gibt keine Finanzierung durch Firmen, keine Werbung und wir verkaufen Deine persönlichen Daten nicht. (Wir kontrollieren Deine persönlichen Daten nicht - <strong>das machst Du</strong>.)"
-
-#: ../../addon/donate/donate.php:55
-msgid ""
-"Help support our ground-breaking work in decentralisation, web identity, and"
-" privacy."
-msgstr "Hilf uns bei unserer wegweisenden Arbeit im Bereich der Dezantralisation, von Web-Identitäten und Privatsphäre."
-
-#: ../../addon/donate/donate.php:57
-msgid ""
-"Your donations keep servers and services running and also helps us to "
-"provide innovative new features and continued development."
-msgstr "Die Spenden werden dafür verwendet Server und Dienste am laufen zu halten und helfen desweiteren innovative Neuerungen zu schaffen und die Entwicklung voran zu treiben."
-
-#: ../../addon/donate/donate.php:60
-msgid "Donate"
-msgstr "Spenden"
-
-#: ../../addon/donate/donate.php:62
-msgid ""
-"Choose a project, developer, or public hub to support with a one-time "
-"donation"
-msgstr "Wähle ein Projekt, einen Entwickler oder einen öffentlichen Hub den du mit einer einmaligen Spende unterstützen willst."
-
-#: ../../addon/donate/donate.php:63
-msgid "Donate Now"
-msgstr "Jetzt spenden"
-
-#: ../../addon/donate/donate.php:64
-msgid ""
-"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project "
-"only)"
-msgstr "<strong><em>Oder</em></strong> werde ein Unterstützer des Projekts (ausschließlich Hubzilla)"
-
-#: ../../addon/donate/donate.php:65
-msgid ""
-"Please indicate if you would like your first name or full name (or nothing) "
-"to appear in our sponsor listing"
-msgstr "Bitte teile uns mit ob dein kompletter Name oder dein Vorname (oder gar nichts) auf unserer Sponsoren-Seite veröffentlicht werden soll."
-
-#: ../../addon/donate/donate.php:66
-msgid "Sponsor"
-msgstr "Sponsor"
-
-#: ../../addon/donate/donate.php:69
-msgid "Special thanks to: "
-msgstr "Besonderer Dank an: "
-
-#: ../../addon/chords/Mod_Chords.php:44
-msgid ""
-"This is a fairly comprehensive and complete guitar chord dictionary which "
-"will list most of the available ways to play a certain chord, starting from "
-"the base of the fingerboard up to a few frets beyond the twelfth fret "
-"(beyond which everything repeats). A couple of non-standard tunings are "
-"provided for the benefit of slide players, etc."
-msgstr ""
-
-#: ../../addon/chords/Mod_Chords.php:46
-msgid ""
-"Chord names start with a root note (A-G) and may include sharps (#) and "
-"flats (b). This software will parse most of the standard naming conventions "
-"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."
-msgstr ""
-
-#: ../../addon/chords/Mod_Chords.php:48
-msgid ""
-"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, "
-"E7b13b11 ..."
-msgstr "Einige gültige Beispiele: A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."
-
-#: ../../addon/chords/Mod_Chords.php:51
-msgid "Guitar Chords"
-msgstr "Gitarrenakkorde"
-
-#: ../../addon/chords/Mod_Chords.php:52
-msgid "The complete online chord dictionary"
-msgstr "Das komplette online Akkord-Verzeichnis"
-
-#: ../../addon/chords/Mod_Chords.php:57
-msgid "Tuning"
-msgstr "Stimmen"
-
-#: ../../addon/chords/Mod_Chords.php:58
-msgid "Chord name: example: Em7"
-msgstr "Beispiel Akkord Name: Em7"
-
-#: ../../addon/chords/Mod_Chords.php:59
-msgid "Show for left handed stringing"
-msgstr "Linkshänder-Besaitung anzeigen"
-
-#: ../../addon/chords/chords.php:33
-msgid "Quick Reference"
-msgstr "Schnellreferenz"
-
-#: ../../addon/libertree/libertree.php:38
-msgid "Post to Libertree"
-msgstr "Bei Libertree veröffentlichen"
-
-#: ../../addon/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
-msgstr "Aktivire das Libertree-Plugin"
-
-#: ../../addon/libertree/libertree.php:73
-msgid "Libertree API token"
-msgstr "Libertree API Token"
-
-#: ../../addon/libertree/libertree.php:77
-msgid "Libertree site URL"
-msgstr "URL der Libertree Seite"
-
-#: ../../addon/libertree/libertree.php:81
-msgid "Post to Libertree by default"
-msgstr "Standardmäßig bei Libertree veröffentlichen"
-
-#: ../../addon/libertree/libertree.php:85
-msgid "Libertree Post Settings"
-msgstr "Libertree-Beitragseinstellungen"
-
-#: ../../addon/libertree/libertree.php:99
-msgid "Libertree Settings saved."
-msgstr "Libertree-Einstellungen gespeichert."
-
-#: ../../addon/flattrwidget/flattrwidget.php:45
-msgid "Flattr this!"
-msgstr "Flattr this!"
-
-#: ../../addon/flattrwidget/flattrwidget.php:83
-msgid "Flattr widget settings updated."
-msgstr "Flattr Widget Einstellungen aktualisiert"
-
-#: ../../addon/flattrwidget/flattrwidget.php:100
-msgid "Flattr user"
-msgstr "Flattr Nutzer"
-
-#: ../../addon/flattrwidget/flattrwidget.php:104
-msgid "URL of the Thing to flattr"
-msgstr "URL des Dings zum flattrn"
-
-#: ../../addon/flattrwidget/flattrwidget.php:104
-msgid "If empty channel URL is used"
-msgstr "Falls leer wird die Channel URL verwendet"
-
-#: ../../addon/flattrwidget/flattrwidget.php:108
-msgid "Title of the Thing to flattr"
-msgstr "Titel des Dings zum flattrn"
-
-#: ../../addon/flattrwidget/flattrwidget.php:108
-msgid "If empty \"channel name on The Hubzilla\" will be used"
-msgstr "Falls leer wird \"Kanalname auf The Hubzilla\" verwendet"
-
-#: ../../addon/flattrwidget/flattrwidget.php:112
-msgid "Static or dynamic flattr button"
-msgstr "Statischer oder dynamischer Flattr Button"
-
-#: ../../addon/flattrwidget/flattrwidget.php:112
-msgid "static"
-msgstr "statisch"
-
-#: ../../addon/flattrwidget/flattrwidget.php:112
-msgid "dynamic"
-msgstr "dynamisch"
-
-#: ../../addon/flattrwidget/flattrwidget.php:116
-msgid "Alignment of the widget"
-msgstr "Ausrichtung des Widgets"
-
-#: ../../addon/flattrwidget/flattrwidget.php:116
-msgid "left"
-msgstr "links"
-
-#: ../../addon/flattrwidget/flattrwidget.php:116
-msgid "right"
-msgstr "rechts"
-
-#: ../../addon/flattrwidget/flattrwidget.php:120
-msgid "Enable Flattr widget"
-msgstr "Flattr Widget verwenden"
-
-#: ../../addon/flattrwidget/flattrwidget.php:124
-msgid "Flattr Widget Settings"
-msgstr "Flattr Widget Einstellungen"
-
-#: ../../addon/statusnet/statusnet.php:143
-msgid "Post to GNU social"
-msgstr "Bei GNU social veröffentlichen"
-
-#: ../../addon/statusnet/statusnet.php:195
-msgid ""
-"Please contact your site administrator.<br />The provided API URL is not "
-"valid."
-msgstr "Bitte kontaktiere den Administrator deines Hubs.<br />Die angegebene API URL ist nicht korrekt."
-
-#: ../../addon/statusnet/statusnet.php:232
-msgid "We could not contact the GNU social API with the Path you entered."
-msgstr "Mit dem angegebenen Pfad war es uns nicht möglich, die GNU social API zu erreichen."
-
-#: ../../addon/statusnet/statusnet.php:266
-msgid "GNU social settings updated."
-msgstr "GNU social Einstellungen aktualisiert."
-
-#: ../../addon/statusnet/statusnet.php:310
-msgid "Globally Available GNU social OAuthKeys"
-msgstr "Global verfügbare GNU social OAuthKeys"
-
-#: ../../addon/statusnet/statusnet.php:312
-msgid ""
-"There are preconfigured OAuth key pairs for some GNU social servers "
-"available. If you are using one of them, please use these credentials.<br "
-"/>If not feel free to connect to any other GNU social instance (see below)."
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:327
-msgid "Provide your own OAuth Credentials"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:329
-msgid ""
-"No consumer key pair for GNU social found. Register your Hubzilla Account as"
-" an desktop client on your GNU social account, copy the consumer key pair "
-"here and enter the API base root.<br />Before you register your own OAuth "
-"key pair ask the administrator if there is already a key pair for this "
-"Hubzilla installation at your favourite GNU social installation."
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:333
-msgid "OAuth Consumer Key"
-msgstr "OAuth Consumer Key"
-
-#: ../../addon/statusnet/statusnet.php:337
-msgid "OAuth Consumer Secret"
-msgstr "OAuth Consumer Secret"
-
-#: ../../addon/statusnet/statusnet.php:341
-msgid "Base API Path"
-msgstr "Basis Pfad der API"
-
-#: ../../addon/statusnet/statusnet.php:341
-msgid "Remember the trailing /"
-msgstr "Denke an das abschließende /"
-
-#: ../../addon/statusnet/statusnet.php:345
-msgid "GNU social application name"
-msgstr "GNU social Anwendungsname"
-
-#: ../../addon/statusnet/statusnet.php:368
-msgid ""
-"To connect to your GNU social account click the button below to get a "
-"security code from GNU social which you have to copy into the input box "
-"below and submit the form. Only your <strong>public</strong> posts will be "
-"posted to GNU social."
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:370
-msgid "Log in with GNU social"
-msgstr "Mit GNU social anmelden"
-
-#: ../../addon/statusnet/statusnet.php:373
-msgid "Copy the security code from GNU social here"
-msgstr "Kopiere den Sicherheitscode von GNU social hier her"
-
-#: ../../addon/statusnet/statusnet.php:383
-msgid "Cancel Connection Process"
-msgstr "Verbindungsprozes abbrechen"
-
-#: ../../addon/statusnet/statusnet.php:385
-msgid "Current GNU social API is"
-msgstr "Aktuelle GNU social API ist"
-
-#: ../../addon/statusnet/statusnet.php:389
-msgid "Cancel GNU social Connection"
-msgstr "GNU social Verbindung trennen"
-
-#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:232
-msgid "Currently connected to: "
-msgstr "Momentan verbunden mit:"
-
-#: ../../addon/statusnet/statusnet.php:406
-msgid ""
-"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to GNU social will lead the visitor to a blank page "
-"informing the visitor that the access to your profile has been restricted."
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:411
-msgid "Allow posting to GNU social"
-msgstr "Erlaube die Veröffentlichung bei GNU social"
-
-#: ../../addon/statusnet/statusnet.php:411
-msgid ""
-"If enabled your public postings can be posted to the associated GNU-social "
-"account"
-msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen GNU social Account veröffentlicht werden."
-
-#: ../../addon/statusnet/statusnet.php:415
-msgid "Post to GNU social by default"
-msgstr "Standardmäßig bei GNU social veröffentlichen"
-
-#: ../../addon/statusnet/statusnet.php:415
-msgid ""
-"If enabled your public postings will be posted to the associated GNU-social "
-"account by default"
-msgstr "Wenn aktiv werden all deine öffentlichen Beiträge standardmäßig bei dem verbundenen GNU social Account veröffentlicht."
-
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:255
-msgid "Clear OAuth configuration"
-msgstr "OAuth Konfiguration löschen"
-
-#: ../../addon/statusnet/statusnet.php:432
-msgid "GNU social Post Settings"
-msgstr "GNU social Einstellungen"
-
-#: ../../addon/statusnet/statusnet.php:892
-msgid "API URL"
-msgstr "API-URL"
-
-#: ../../addon/statusnet/statusnet.php:895
-msgid "Application name"
-msgstr "Anwendungsname"
-
-#: ../../addon/qrator/qrator.php:48
-msgid "QR code"
-msgstr "QR-Code"
-
-#: ../../addon/qrator/qrator.php:63
-msgid "QR Generator"
-msgstr "QR-Generator"
-
-#: ../../addon/qrator/qrator.php:64
-msgid "Enter some text"
-msgstr "Etwas Text eingeben"
-
-#: ../../addon/chess/chess.php:278 ../../addon/chess/chess.php:465
-msgid "Invalid game."
-msgstr "Ungültiges Spiel."
-
-#: ../../addon/chess/chess.php:284 ../../addon/chess/chess.php:471
-msgid "You are not a player in this game."
-msgstr "Sie sind kein Spieler in diesem Spiel."
-
-#: ../../addon/chess/chess.php:340
-msgid "You must be a local channel to create a game."
-msgstr "Um ein Spiel zu eröffnen, musst du ein lokaler Kanal sein"
-
-#: ../../addon/chess/chess.php:358
-msgid "You must select one opponent that is not yourself."
-msgstr "Du musst einen Gegner wählen, der nicht du selbst ist"
-
-#: ../../addon/chess/chess.php:367
-msgid "You must select white or black."
-msgstr "Sie müssen weiß oder schwarz auswählen."
-
-#: ../../addon/chess/chess.php:375
-msgid "Error creating new game."
-msgstr "Fehler beim Erstellen eines neuen Spiels."
-
-#: ../../addon/chess/chess.php:409 ../../include/channel.php:1152
-msgid "Requested channel is not available."
-msgstr "Angeforderte Kanal nicht verfügbar."
-
-#: ../../addon/chess/chess.php:423
-msgid "You must select a local channel /chess/channelname"
-msgstr "Du musst einen lokalen Kanal/Schach(Kanalnamen aufwählen"
-
-#: ../../addon/chess/chess.php:969
-msgid "Enable notifications"
-msgstr "Benachrichtigungen aktivieren"
-
-#: ../../addon/twitter/twitter.php:99
-msgid "Post to Twitter"
-msgstr "Bei Twitter veröffentlichen"
-
-#: ../../addon/twitter/twitter.php:154
-msgid "Twitter settings updated."
-msgstr "Twitter-Einstellungen aktualisiert."
-
-#: ../../addon/twitter/twitter.php:183
-msgid ""
-"No consumer key pair for Twitter found. Please contact your site "
-"administrator."
-msgstr "Es wurde kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte kontaktiere deinen Seiten-Administrator."
-
-#: ../../addon/twitter/twitter.php:205
-msgid ""
-"At this Hubzilla instance the Twitter plugin was enabled but you have not "
-"yet connected your account to your Twitter account. To do so click the "
-"button below to get a PIN from Twitter which you have to copy into the input"
-" box below and submit the form. Only your <strong>public</strong> posts will"
-" be posted to Twitter."
-msgstr "Auf diesem Hubzilla-Server ist das Twitter-Plugin aktiviert, aber Du hast Dich hier noch nicht mit Deinem Twitter-Konto verbunden. Um dies zu tun, klicke die Schaltfläche unten, um eine PIN von Twitter zu erhalten, die Du dann in das Eingabefeld darunter einfügen und das Formular bestätigen musst. Nur Deine <strong>öffentlichen</strong> Beiträge werden auf Twitter geteilt."
-
-#: ../../addon/twitter/twitter.php:207
-msgid "Log in with Twitter"
-msgstr "Mit Twitter anmelden"
-
-#: ../../addon/twitter/twitter.php:210
-msgid "Copy the PIN from Twitter here"
-msgstr "PIN von Twitter hier her kopieren"
-
-#: ../../addon/twitter/twitter.php:237
-msgid ""
-"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to Twitter will lead the visitor to a blank page informing "
-"the visitor that the access to your profile has been restricted."
-msgstr "<strong>Hinweis:</strong> Entsprechend Deiner Privatsphären-Einstellungen (<em>Profil-Details vor nicht angemeldeten Besuchern verbergen?</em>) kann ein ggf. zu Twitter geteilter Link Besucher auf eine leere Seite führen, die darüber informiert, dass der Zugriff zu Deinem Profil eingeschränkt ist."
-
-#: ../../addon/twitter/twitter.php:242
-msgid "Allow posting to Twitter"
-msgstr "Erlaube die Veröffentlichung bei Twitter"
-
-#: ../../addon/twitter/twitter.php:242
-msgid ""
-"If enabled your public postings can be posted to the associated Twitter "
-"account"
-msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden."
-
-#: ../../addon/twitter/twitter.php:246
-msgid "Send public postings to Twitter by default"
-msgstr "Standardmäßig öffentliche Beiträge bei Twitter veröffentlichen"
-
-#: ../../addon/twitter/twitter.php:246
-msgid ""
-"If enabled your public postings will be posted to the associated Twitter "
-"account by default"
-msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden."
-
-#: ../../addon/twitter/twitter.php:264
-msgid "Twitter Post Settings"
-msgstr "Twitter-Beitragseinstellungen"
-
-#: ../../addon/smileybutton/smileybutton.php:211
-msgid "Deactivate the feature"
-msgstr "Diese Funktion abschalten"
-
-#: ../../addon/smileybutton/smileybutton.php:215
-msgid "Hide the button and show the smilies directly."
-msgstr "Verstecke die Schaltfläche und zeige die Smilies direkt an."
-
-#: ../../addon/smileybutton/smileybutton.php:219
-msgid "Smileybutton Settings"
-msgstr "Smileyknopf-Einstellungen"
-
-#: ../../addon/piwik/piwik.php:85
-msgid ""
-"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> "
-"analytics tool."
-msgstr "Diese Website verwendet <a href='http://www.piwik.org'>Piwik</a>, um die Besucherzugriffe auszuwerten."
-
-#: ../../addon/piwik/piwik.php:88
-#, php-format
-msgid ""
-"If you do not want that your visits are logged this way you <a href='%s'>can"
-" set a cookie to prevent Piwik from tracking further visits of the site</a> "
-"(opt-out)."
-msgstr "Wenn Du nicht möchtest, dass Deine Besuche zu diesem Zweck gespeichert werden, kannst Du <a href='%s'>ein Cookie setzen, welches Piwik davon abhält, Deine weiteren Besuche auf dieser Website zu verfolgen</a> (Opt-out)."
-
-#: ../../addon/piwik/piwik.php:96
-msgid "Piwik Base URL"
-msgstr "Piwik Basis-URL"
-
-#: ../../addon/piwik/piwik.php:96
-msgid ""
-"Absolute path to your Piwik installation. (without protocol (http/s), with "
-"trailing slash)"
-msgstr "Der absolute Pfad zu Deiner Piwik-Installation (ohne Protokoll (http/s), aber mit abschließendem Schrägstrich / )."
-
-#: ../../addon/piwik/piwik.php:97
-msgid "Site ID"
-msgstr "Seitenkennung"
-
-#: ../../addon/piwik/piwik.php:98
-msgid "Show opt-out cookie link?"
-msgstr "Den Opt-out Cookie-Link anzeigen?"
-
-#: ../../addon/piwik/piwik.php:99
-msgid "Asynchronous tracking"
-msgstr "Asynchrones Tracking"
-
-#: ../../addon/piwik/piwik.php:100
-msgid "Enable frontend JavaScript error tracking"
-msgstr "Ermögliche Frontend-JavaScript-Fehlertracking"
-
-#: ../../addon/piwik/piwik.php:100
-msgid "This feature requires Piwik >= 2.2.0"
-msgstr "Diese Funktion erfordert Piwik >= 2.2.0"
-
-#: ../../addon/tour/tour.php:75
-msgid "Edit your profile and change settings."
-msgstr "Bearbeite dein Profil und ändere die Einstellungen."
-
-#: ../../addon/tour/tour.php:76
-msgid "Click here to see activity from your connections."
-msgstr "Klicke hier, um die Aktivitäten Deiner Verbindungen zu sehen."
-
-#: ../../addon/tour/tour.php:77
-msgid "Click here to see your channel home."
-msgstr "Klicke hier, um Deine Kanal-Hauptseite zu sehen."
-
-#: ../../addon/tour/tour.php:78
-msgid "You can access your private messages from here."
-msgstr "Hierüber kannst Du auf Deine privaten Nachrichten zugreifen."
-
-#: ../../addon/tour/tour.php:79
-msgid "Create new events here."
-msgstr "Neue Termine hier erstellen"
-
-#: ../../addon/tour/tour.php:80
-msgid ""
-"You can accept new connections and change permissions for existing ones "
-"here. You can also e.g. create groups of contacts."
-msgstr "Du kannst hier neue Verbindungen akzeptieren sowie die Einstellungen bereits vorhandener Vebindungen bearbeiten. Außerdem kannst Du Verbindungen in Gruppen zusammenfassen."
-
-#: ../../addon/tour/tour.php:81
-msgid "System notifications will arrive here"
-msgstr "Systembenachrichtigungen werden hier eintreffen"
-
-#: ../../addon/tour/tour.php:82
-msgid "Search for content and users"
-msgstr "Nach Inhalt von Benutzern suchen"
-
-#: ../../addon/tour/tour.php:83
-msgid "Browse for new contacts"
-msgstr "Schaue nach möglichen neuen Verbindungen."
-
-#: ../../addon/tour/tour.php:84
-msgid "Launch installed apps"
-msgstr "Installierte Apps starten"
-
-#: ../../addon/tour/tour.php:85
-msgid "Looking for help? Click here."
-msgstr "Du benötigst Hilfe? Klicke hier."
-
-#: ../../addon/tour/tour.php:86
-msgid ""
-"New events have occurred in your network. Click here to see what has "
-"happened!"
-msgstr "In Deinem Netzwerk gibt es neue Ereignisse. Klicke hier, um zu sehen, was passiert ist!"
-
-#: ../../addon/tour/tour.php:87
-msgid "You have received a new private message. Click here to see from who!"
-msgstr "Du hast eine neue private Nachricht erhalten. Klicke hier, um zu sehen, von wem!"
-
-#: ../../addon/tour/tour.php:88
-msgid "There are events this week. Click here too see which!"
-msgstr "Es gibt neue Termine diese Woche. Klicke hier, um zu sehen, welche!"
-
-#: ../../addon/tour/tour.php:89
-msgid "You have received a new introduction. Click here to see who!"
-msgstr "Du hast eine neue Verbindungsanfrage erhalten. Klicke hier, um zu sehen, wer es ist!"
-
-#: ../../addon/tour/tour.php:90
-msgid ""
-"There is a new system notification. Click here to see what has happened!"
-msgstr "Es gibt eine neue Systembenachrichtigung. Klicke hier, um zu sehen, was passiert ist!"
-
-#: ../../addon/tour/tour.php:93
-msgid "Click here to share text, images, videos and sound."
-msgstr "Klicke hier, um Texte, Bilder, Videos und Klänge zu teilen."
-
-#: ../../addon/tour/tour.php:94
-msgid "You can write an optional title for your update (good for long posts)."
-msgstr "Du kannst Deinem Beitrag einen optionalen Titel geben (gut für lange Beiträge)."
-
-#: ../../addon/tour/tour.php:95
-msgid "Entering some categories here makes it easier to find your post later."
-msgstr "Ein paar Kategorien hier einzugeben, macht es leichter, Deinen Beitrag später wiederzufinden."
-
-#: ../../addon/tour/tour.php:96
-msgid "Share photos, links, location, etc."
-msgstr "Teile Photos, Links, Standort, usw."
-
-#: ../../addon/tour/tour.php:97
-msgid ""
-"Only want to share content for a while? Make it expire at a certain date."
-msgstr "Du möchtest diesen Inhalt nur für eine Weile teilen? Dann lass ihn zu einem bestimmten Datum ablaufen."
-
-#: ../../addon/tour/tour.php:98
-msgid "You can password protect content."
-msgstr "Du kannst Inhalte mit einem Passwort schützen."
-
-#: ../../addon/tour/tour.php:99
-msgid "Choose who you share with."
-msgstr "Wähle aus, mit wem Du teilen möchtest."
-
-#: ../../addon/tour/tour.php:101
-msgid "Click here when you are done."
-msgstr "Klicke hier, wenn Du fertig bist."
-
-#: ../../addon/tour/tour.php:104
-msgid "Adjust from which channels posts should be displayed."
-msgstr "Lege fest, von welchen Kanälen Beiträge angezeigt werden sollen."
-
-#: ../../addon/tour/tour.php:105
-msgid "Only show posts from channels in the specified privacy group."
-msgstr "Zeige nur Beträge von Kanälen, die in einer bestimmten Gruppe sind."
-
-#: ../../addon/tour/tour.php:109
-msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)."
-msgstr "Finde Beiträge, die bestimmte Tags enthalten (Stichworte, die mit dem \"#\"-Symbol beginnen)."
-
-#: ../../addon/tour/tour.php:110
-msgid "Easily find posts in given category."
-msgstr "Finde Beiträge in bestimmten Kategorien."
-
-#: ../../addon/tour/tour.php:111
-msgid "Easily find posts by date."
-msgstr "Finde Beiträge anhand des Datums."
-
-#: ../../addon/tour/tour.php:112
-msgid ""
-"Suggested users who have volounteered to be shown as suggestions, and who we"
-" think you might find interesting."
-msgstr "Vorgeschlagene Kanäle, die in ihren Einstellungen zugestimmt haben, als Vorschläge angezeigt zu werden, und die Du eventuell interessant finden könntest."
-
-#: ../../addon/tour/tour.php:113
-msgid "Here you see channels you have connected to."
-msgstr "Hier siehst du die Kanäle, mit denen Du verbunden bist."
-
-#: ../../addon/tour/tour.php:114
-msgid "Save your search so you can repeat it at a later date."
-msgstr "Speichere Deine Suche, so dass Du sie später leicht erneut durchführen kannst."
-
-#: ../../addon/tour/tour.php:117
-msgid ""
-"If you see this icon you can be sure that the sender is who it say it is. It"
-" is normal that it is not always possible to verify the sender, so the icon "
-"will be missing sometimes. There is usually no need to worry about that."
-msgstr "Wenn Du dieses Symbol siehst, kannst Du weitgehend sicher sein, dass der Ansender dem angegebenen entspricht. Nicht immer ist es möglich, den Absender zu verifizieren, daher fehlt das Symbol mitunter. Das ist aber in der Regel kein Grund zur Sorge."
-
-#: ../../addon/tour/tour.php:118
-msgid ""
-"Danger! It seems someone tried to forge a message! This message is not "
-"necessarily from who it says it is from!"
-msgstr "Vorsicht! Es kann sein, dass jemand versucht, eine Nachricht zu fälschen! Diese Nachricht muss nicht unbedingt vom angegebenen Absender stammen!"
-
-#: ../../addon/tour/tour.php:125
-msgid ""
-"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can "
-"pause it at any time and continue where you left off by reloading the page, "
-"or navigting to another page.</p><p>You can also advance by pressing the "
-"return key"
-msgstr "Willkommen zu Hubzilla! Möchtest Du eine Tour der Benutzeroberfläche angezeigt bekommen?</p><p>Du kannst zu jeder Zeit pausieren und fortsetzen, wo Du aufgehört hast, indem Du die Seite neu lädtst, oder zu einer anderen Seite springst.</p><p>Du kannst auc durch das Drücken der Enter-Taste weitergehen."
-
-#: ../../addon/sendzid/sendzid.php:25
-msgid "Extended Identity Sharing"
-msgstr "Erweitertes Teilen von Identitäten"
-
-#: ../../addon/sendzid/sendzid.php:26
-msgid ""
-"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
-msgstr "Teile Deine Identität mit allen Webseiten im Internet. Ist dies deaktiviert, wird Deine Identität nur mit Hubzilla-Servern geteilt."
-
-#: ../../addon/tictac/tictac.php:21
-msgid "Three Dimensional Tic-Tac-Toe"
-msgstr "Dreidimensionales Tic-Tac-Toe"
-
-#: ../../addon/tictac/tictac.php:54
-msgid "3D Tic-Tac-Toe"
-msgstr "3D Tic-Tac-Toe"
-
-#: ../../addon/tictac/tictac.php:59
-msgid "New game"
-msgstr "Neues Spiel"
-
-#: ../../addon/tictac/tictac.php:60
-msgid "New game with handicap"
-msgstr "Neues Handicaü-Spiel"
-
-#: ../../addon/tictac/tictac.php:61
-msgid ""
-"Three dimensional tic-tac-toe is just like the traditional game except that "
-"it is played on multiple levels simultaneously. "
-msgstr "3D Tic-Tac-Toe funktioniert wie das ursprüngliche Spiel, nur dass es auf mehreren Ebenen gleichzeitig gespielt wird."
-
-#: ../../addon/tictac/tictac.php:62
-msgid ""
-"In this case there are three levels. You win by getting three in a row on "
-"any level, as well as up, down, and diagonally across the different levels."
-msgstr "In diesem Fall sind es drei Ebenen. Du gewinnst, wenn es dir gelingt drei in einer Reihe auf einer beliebigen Ebene oder diagonal über die verschiedenen Ebenen hinweg zu erreichen."
-
-#: ../../addon/tictac/tictac.php:64
-msgid ""
-"The handicap game disables the center position on the middle level because "
-"the player claiming this square often has an unfair advantage."
-msgstr "Bei einem Handicap-Spiel wird die Position im Zentrum der mittleren Ebene gesperrt, da der Spieler der dieses Feld für sich beansprucht meist einen unfairen Vorteil hat."
-
-#: ../../addon/tictac/tictac.php:183
-msgid "You go first..."
-msgstr "Du darfst anfangen..."
-
-#: ../../addon/tictac/tictac.php:188
-msgid "I'm going first this time..."
-msgstr "Diesmal werde ich anfangen..."
-
-#: ../../addon/tictac/tictac.php:194
-msgid "You won!"
-msgstr "Sie haben gewonnen!"
-
-#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225
-msgid "\"Cat\" game!"
-msgstr "\"Katzen\"-Spiel!"
-
-#: ../../addon/tictac/tictac.php:223
-msgid "I won!"
-msgstr "Ich habe gewonnen!"
-
-#: ../../addon/pageheader/pageheader.php:43
-msgid "Message to display on every page on this server"
-msgstr "Nachricht, die auf jeder Seite dieses Servers angezeigt werden soll"
-
-#: ../../addon/pageheader/pageheader.php:48
-msgid "Pageheader Settings"
-msgstr "Nachrichtenkopf-Einstellungen"
-
-#: ../../addon/pageheader/pageheader.php:64
-msgid "pageheader Settings saved."
-msgstr "Nachrichtenkopf-Einstellungen gespeichert."
-
-#: ../../addon/authchoose/authchoose.php:67
-msgid "Only authenticate automatically to sites of your friends"
-msgstr "Authentifiziere Dich nur auf Seiten deiner Freunde automatisch"
-
-#: ../../addon/authchoose/authchoose.php:67
-msgid "By default you are automatically authenticated anywhere in the network"
-msgstr "Authentifiziere Dich standardmäßig bei allen Seiten im Netzwerk automatisch"
-
-#: ../../addon/authchoose/authchoose.php:71
-msgid "Authchoose Settings"
-msgstr "Einstellungen für automatische Authentifizierung"
-
-#: ../../addon/authchoose/authchoose.php:85
-msgid "Atuhchoose Settings updated."
-msgstr "Einstellungen für automatische Authentifizierung aktualisiert."
-
-#: ../../addon/moremoods/moremoods.php:19
-msgid "lonely"
-msgstr "einsam"
-
-#: ../../addon/moremoods/moremoods.php:20
-msgid "drunk"
-msgstr "betrunken"
-
-#: ../../addon/moremoods/moremoods.php:21
-msgid "horny"
-msgstr "geil"
-
-#: ../../addon/moremoods/moremoods.php:22
-msgid "stoned"
-msgstr "bekifft"
-
-#: ../../addon/moremoods/moremoods.php:23
-msgid "fucked up"
-msgstr "beschissen"
-
-#: ../../addon/moremoods/moremoods.php:24
-msgid "clusterfucked"
-msgstr "clusterfucked"
-
-#: ../../addon/moremoods/moremoods.php:25
-msgid "crazy"
-msgstr "verrückt"
-
-#: ../../addon/moremoods/moremoods.php:26
-msgid "hurt"
-msgstr "verletzt"
-
-#: ../../addon/moremoods/moremoods.php:27
-msgid "sleepy"
-msgstr "müde"
-
-#: ../../addon/moremoods/moremoods.php:28
-msgid "grumpy"
-msgstr "mürrisch"
-
-#: ../../addon/moremoods/moremoods.php:29
-msgid "high"
-msgstr "hoch"
-
-#: ../../addon/moremoods/moremoods.php:30
-msgid "semi-conscious"
-msgstr "halb bewusstlos"
-
-#: ../../addon/moremoods/moremoods.php:31
-msgid "in love"
-msgstr "verliebt"
-
-#: ../../addon/moremoods/moremoods.php:32
-msgid "in lust"
-msgstr ""
-
-#: ../../addon/moremoods/moremoods.php:33
-msgid "naked"
-msgstr "nackt"
-
-#: ../../addon/moremoods/moremoods.php:34
-msgid "stinky"
-msgstr "stinkend"
-
-#: ../../addon/moremoods/moremoods.php:35
-msgid "sweaty"
-msgstr "verschwitzt"
-
-#: ../../addon/moremoods/moremoods.php:36
-msgid "bleeding out"
-msgstr "blutend"
-
-#: ../../addon/moremoods/moremoods.php:37
-msgid "victorious"
-msgstr "siegreich"
-
-#: ../../addon/moremoods/moremoods.php:38
-msgid "defeated"
-msgstr "besiegt"
-
-#: ../../addon/moremoods/moremoods.php:39
-msgid "envious"
-msgstr "neidisch"
-
-#: ../../addon/moremoods/moremoods.php:40
-msgid "jealous"
-msgstr "eifersüchtig"
-
-#: ../../addon/xmpp/xmpp.php:31
-msgid "XMPP settings updated."
-msgstr "XMPP-Einstellungen aktualisiert."
-
-#: ../../addon/xmpp/xmpp.php:53
-msgid "Enable Chat"
-msgstr "Chat aktivieren"
-
-#: ../../addon/xmpp/xmpp.php:58
-msgid "Individual credentials"
-msgstr "Individuelle Anmeldedaten"
-
-#: ../../addon/xmpp/xmpp.php:64
-msgid "Jabber BOSH server"
-msgstr "Jabber BOSH Server"
-
-#: ../../addon/xmpp/xmpp.php:69
-msgid "XMPP Settings"
-msgstr "XMPP-Einstellungen"
-
-#: ../../addon/xmpp/xmpp.php:92
-msgid "Jabber BOSH host"
-msgstr "Jabber BOSH Host"
-
-#: ../../addon/xmpp/xmpp.php:93
-msgid "Use central userbase"
-msgstr "Zentrale Benutzerbasis verwenden"
-
-#: ../../addon/xmpp/xmpp.php:93
-msgid ""
-"If enabled, members will automatically login to an ejabberd server that has "
-"to be installed on this machine with synchronized credentials via the "
-"\"auth_ejabberd.php\" script."
-msgstr ""
-
-#: ../../addon/wholikesme/wholikesme.php:29
-msgid "Who likes me?"
-msgstr "Wer mag mich?"
-
-#: ../../addon/pumpio/pumpio.php:148
-msgid "You are now authenticated to pumpio."
-msgstr "Du bist nun bei pumpio authenzifiziert."
-
-#: ../../addon/pumpio/pumpio.php:149
-msgid "return to the featured settings page"
-msgstr ""
-
-#: ../../addon/pumpio/pumpio.php:163
-msgid "Post to Pump.io"
-msgstr "Bei pumpio veröffentlichen"
-
-#: ../../addon/pumpio/pumpio.php:198
-msgid "Pump.io servername"
-msgstr "Pump.io-Servername"
-
-#: ../../addon/pumpio/pumpio.php:198
-msgid "Without \"http://\" or \"https://\""
-msgstr "Ohne \"http://\" oder \"https://\""
-
-#: ../../addon/pumpio/pumpio.php:202
-msgid "Pump.io username"
-msgstr "Pump.io-Benutzername"
-
-#: ../../addon/pumpio/pumpio.php:202
-msgid "Without the servername"
-msgstr "Ohne dem Servernamen"
-
-#: ../../addon/pumpio/pumpio.php:213
-msgid "You are not authenticated to pumpio"
-msgstr "Du bist nicht bei pumpio authentifiziert."
-
-#: ../../addon/pumpio/pumpio.php:215
-msgid "(Re-)Authenticate your pump.io connection"
-msgstr "Deine pumpio Verbindung (erneut) authentifizieren"
-
-#: ../../addon/pumpio/pumpio.php:219
-msgid "Enable pump.io Post Plugin"
-msgstr "Aktiviere das pumpio-Plugin"
-
-#: ../../addon/pumpio/pumpio.php:223
-msgid "Post to pump.io by default"
-msgstr "Standardmäßig bei pumpio veröffentlichen"
-
-#: ../../addon/pumpio/pumpio.php:227
-msgid "Should posts be public"
-msgstr "Sollen die Beiträge öffentlich sein"
-
-#: ../../addon/pumpio/pumpio.php:231
-msgid "Mirror all public posts"
-msgstr "Öffentliche Beiträge spiegeln"
-
-#: ../../addon/pumpio/pumpio.php:237
-msgid "Pump.io Post Settings"
-msgstr "Pump.io-Beitragseinstellungen"
-
-#: ../../addon/pumpio/pumpio.php:266
-msgid "PumpIO Settings saved."
-msgstr "PumpIO-Einstellungen gespeichert."
-
-#: ../../addon/ldapauth/ldapauth.php:61
-msgid "An account has been created for you."
-msgstr "Ein Konto wurde für Sie erstellt."
-
-#: ../../addon/ldapauth/ldapauth.php:68
-msgid "Authentication successful but rejected: account creation is disabled."
-msgstr "Authentifizierung war erfolgreich wurde aber abgewiesen! Das Anlegen von Accounts wurde deaktiviert."
-
-#: ../../addon/opensearch/opensearch.php:26
-#, php-format
-msgctxt "opensearch"
-msgid "Search %1$s (%2$s)"
-msgstr "Suche %1$s (%2$s)"
-
-#: ../../addon/opensearch/opensearch.php:28
-msgctxt "opensearch"
-msgid "$Projectname"
-msgstr "$Projectname"
-
-#: ../../addon/opensearch/opensearch.php:43
-msgid "Search $Projectname"
-msgstr "$Projectname suchen"
-
-#: ../../addon/redfiles/redfiles.php:119
-msgid "Redmatrix File Storage Import"
-msgstr ""
-
-#: ../../addon/redfiles/redfiles.php:120
-msgid "This will import all your Redmatrix cloud files to this channel."
-msgstr "Hiermit werden alle deine Daten aus der Redmatrix Cloud in diesen Kanal importiert."
-
-#: ../../addon/redfiles/redfilehelper.php:64
-msgid "file"
-msgstr "Datei"
-
-#: ../../addon/hubwall/hubwall.php:19
-msgid "Send email to all members"
-msgstr "E-Mail an alle Mitglieder senden"
-
-#: ../../addon/hubwall/hubwall.php:73
-#, php-format
-msgid "%1$d of %2$d messages sent."
-msgstr "%1$d von %2$d Nachrichten gesendet."
-
-#: ../../addon/hubwall/hubwall.php:81
-msgid "Send email to all hub members."
-msgstr "Eine E-Mail an alle Mitglieder dieses Hubs senden."
-
-#: ../../addon/hubwall/hubwall.php:93
-msgid "Sender Email address"
-msgstr "E-Mail Adresse des Absenders"
-
-#: ../../addon/hubwall/hubwall.php:94
-msgid "Test mode (only send to hub administrator)"
-msgstr "Test Modus (nur an Hub Administratoren senden)"
-
-#: ../../include/selectors.php:30
-msgid "Frequently"
-msgstr "Häufig"
-
-#: ../../include/selectors.php:31
-msgid "Hourly"
-msgstr "Stündlich"
-
-#: ../../include/selectors.php:32
-msgid "Twice daily"
-msgstr "Zwei Mal am Tag"
-
-#: ../../include/selectors.php:33
-msgid "Daily"
-msgstr "Täglich"
-
-#: ../../include/selectors.php:34
-msgid "Weekly"
-msgstr "Wöchentlich"
-
-#: ../../include/selectors.php:35
-msgid "Monthly"
-msgstr "Monatlich"
-
-#: ../../include/selectors.php:49
-msgid "Currently Male"
-msgstr "Momentan männlich"
-
-#: ../../include/selectors.php:49
-msgid "Currently Female"
-msgstr "Momentan weiblich"
-
-#: ../../include/selectors.php:49
-msgid "Mostly Male"
-msgstr "Größtenteils männlich"
-
-#: ../../include/selectors.php:49
-msgid "Mostly Female"
-msgstr "Größtenteils weiblich"
-
-#: ../../include/selectors.php:49
-msgid "Transgender"
-msgstr "Transsexuell"
-
-#: ../../include/selectors.php:49
-msgid "Intersex"
-msgstr "Zwischengeschlechtlich"
-
-#: ../../include/selectors.php:49
-msgid "Transsexual"
-msgstr "Transsexuell"
-
-#: ../../include/selectors.php:49
-msgid "Hermaphrodite"
-msgstr "Zwitter"
-
-#: ../../include/selectors.php:49 ../../include/channel.php:1484
-msgid "Neuter"
-msgstr "Geschlechtslos"
-
-#: ../../include/selectors.php:49 ../../include/channel.php:1486
-msgid "Non-specific"
-msgstr "unklar"
-
-#: ../../include/selectors.php:49
-msgid "Undecided"
-msgstr "Unentschieden"
-
-#: ../../include/selectors.php:85 ../../include/selectors.php:104
-msgid "Males"
-msgstr "Männer"
-
-#: ../../include/selectors.php:85 ../../include/selectors.php:104
-msgid "Females"
-msgstr "Frauen"
-
-#: ../../include/selectors.php:85
-msgid "Gay"
-msgstr "Schwul"
-
-#: ../../include/selectors.php:85
-msgid "Lesbian"
-msgstr "Lesbisch"
-
-#: ../../include/selectors.php:85
-msgid "No Preference"
-msgstr "Keine Bevorzugung"
-
-#: ../../include/selectors.php:85
-msgid "Bisexual"
-msgstr "Bisexuell"
-
-#: ../../include/selectors.php:85
-msgid "Autosexual"
-msgstr "Autosexuell"
-
-#: ../../include/selectors.php:85
-msgid "Abstinent"
-msgstr "Enthaltsam"
-
-#: ../../include/selectors.php:85
-msgid "Virgin"
-msgstr "Jungfräulich"
-
-#: ../../include/selectors.php:85
-msgid "Deviant"
-msgstr "Abweichend"
-
-#: ../../include/selectors.php:85
-msgid "Fetish"
-msgstr "Fetisch"
-
-#: ../../include/selectors.php:85
-msgid "Oodles"
-msgstr "Unmengen"
-
-#: ../../include/selectors.php:85
-msgid "Nonsexual"
-msgstr "Sexlos"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Single"
-msgstr "Single"
-
-#: ../../include/selectors.php:123
-msgid "Lonely"
-msgstr "Einsam"
-
-#: ../../include/selectors.php:123
-msgid "Available"
-msgstr "Verfügbar"
-
-#: ../../include/selectors.php:123
-msgid "Unavailable"
-msgstr "Nicht verfügbar"
-
-#: ../../include/selectors.php:123
-msgid "Has crush"
-msgstr "Verguckt"
-
-#: ../../include/selectors.php:123
-msgid "Infatuated"
-msgstr "Verknallt"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Dating"
-msgstr "Lerne gerade jemanden kennen"
-
-#: ../../include/selectors.php:123
-msgid "Unfaithful"
-msgstr "Treulos"
-
-#: ../../include/selectors.php:123
-msgid "Sex Addict"
-msgstr "Sexabhängig"
-
-#: ../../include/selectors.php:123
-msgid "Friends/Benefits"
-msgstr "Freunde/Begünstigte"
-
-#: ../../include/selectors.php:123
-msgid "Casual"
-msgstr "Lose"
-
-#: ../../include/selectors.php:123
-msgid "Engaged"
-msgstr "Verlobt"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Married"
-msgstr "Verheiratet"
-
-#: ../../include/selectors.php:123
-msgid "Imaginarily married"
-msgstr "Gewissermaßen verheiratet"
-
-#: ../../include/selectors.php:123
-msgid "Partners"
-msgstr "Partner"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Cohabiting"
-msgstr "Lebensgemeinschaft"
-
-#: ../../include/selectors.php:123
-msgid "Common law"
-msgstr "Informelle Ehe"
-
-#: ../../include/selectors.php:123
-msgid "Happy"
-msgstr "Glücklich"
-
-#: ../../include/selectors.php:123
-msgid "Not looking"
-msgstr "Nicht Ausschau haltend"
-
-#: ../../include/selectors.php:123
-msgid "Swinger"
-msgstr "Swinger"
-
-#: ../../include/selectors.php:123
-msgid "Betrayed"
-msgstr "Betrogen"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Separated"
-msgstr "Getrennt"
-
-#: ../../include/selectors.php:123
-msgid "Unstable"
-msgstr "Labil"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Divorced"
-msgstr "Geschieden"
-
-#: ../../include/selectors.php:123
-msgid "Imaginarily divorced"
-msgstr "Gewissermaßen geschieden"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "Widowed"
-msgstr "Verwitwet"
-
-#: ../../include/selectors.php:123
-msgid "Uncertain"
-msgstr "Ungewiss"
-
-#: ../../include/selectors.php:123 ../../include/selectors.php:140
-msgid "It's complicated"
-msgstr "Es ist kompliziert"
-
-#: ../../include/selectors.php:123
-msgid "Don't care"
-msgstr "Interessiert mich nicht"
-
-#: ../../include/selectors.php:123
-msgid "Ask me"
-msgstr "Frag mich mal"
-
-#: ../../include/conversation.php:169
-#, php-format
-msgid "likes %1$s's %2$s"
-msgstr ""
-
-#: ../../include/conversation.php:172
-#, php-format
-msgid "doesn't like %1$s's %2$s"
-msgstr ""
-
-#: ../../include/conversation.php:212
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s ist jetzt mit %2$s verbunden"
-
-#: ../../include/conversation.php:247
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s stupste %2$s an"
-
-#: ../../include/conversation.php:251 ../../include/text.php:1104
-#: ../../include/text.php:1109
-msgid "poked"
-msgstr "stupste"
-
-#: ../../include/conversation.php:736
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "%ss Profil auf %s ansehen"
-
-#: ../../include/conversation.php:756
-msgid "Categories:"
-msgstr "Kategorien:"
-
-#: ../../include/conversation.php:757
-msgid "Filed under:"
-msgstr "Gespeichert unter:"
-
-#: ../../include/conversation.php:783
-msgid "View in context"
-msgstr "Im Zusammenhang anschauen"
-
-#: ../../include/conversation.php:884
-msgid "remove"
-msgstr "lösche"
-
-#: ../../include/conversation.php:888
-msgid "Loading..."
-msgstr "Lädt ..."
-
-#: ../../include/conversation.php:889
-msgid "Delete Selected Items"
-msgstr "Lösche die ausgewählten Elemente"
-
-#: ../../include/conversation.php:932
-msgid "View Source"
-msgstr "Quelle anzeigen"
-
-#: ../../include/conversation.php:942
-msgid "Follow Thread"
-msgstr "Unterhaltung folgen"
-
-#: ../../include/conversation.php:951
-msgid "Unfollow Thread"
-msgstr "Unterhaltung nicht mehr folgen"
-
-#: ../../include/conversation.php:1042
-msgid "Activity/Posts"
-msgstr "Aktivitäten/Beiträge"
-
-#: ../../include/conversation.php:1062
-msgid "Edit Connection"
-msgstr "Verbindung bearbeiten"
-
-#: ../../include/conversation.php:1072
-msgid "Message"
-msgstr "Nachricht"
-
-#: ../../include/conversation.php:1206
-#, php-format
-msgid "%s likes this."
-msgstr "%s gefällt das."
-
-#: ../../include/conversation.php:1206
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s gefällt das nicht."
-
-#: ../../include/conversation.php:1210
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d Person</span> gefällt das."
-msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das."
-
-#: ../../include/conversation.php:1212
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d Person</span> gefällt das nicht."
-msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das nicht."
-
-#: ../../include/conversation.php:1218
-msgid "and"
-msgstr "und"
-
-#: ../../include/conversation.php:1221
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ""
-msgstr[1] ", und %d andere"
-
-#: ../../include/conversation.php:1222
-#, php-format
-msgid "%s like this."
-msgstr "%s gefällt das."
-
-#: ../../include/conversation.php:1222
-#, php-format
-msgid "%s don't like this."
-msgstr "%s gefällt das nicht."
-
-#: ../../include/conversation.php:1265
-msgid "Set your location"
-msgstr "Standort"
-
-#: ../../include/conversation.php:1266
-msgid "Clear browser location"
-msgstr "Browser-Standort löschen"
-
-#: ../../include/conversation.php:1314
-msgid "Tag term:"
-msgstr "Schlagwort:"
-
-#: ../../include/conversation.php:1315
-msgid "Where are you right now?"
-msgstr "Wo bist Du jetzt grade?"
-
-#: ../../include/conversation.php:1320
-msgid "Choose a different album..."
-msgstr "Wählen Sie ein anderes Album aus..."
-
-#: ../../include/conversation.php:1324
-msgid "Comments enabled"
-msgstr "Kommentare aktiviert"
-
-#: ../../include/conversation.php:1325
-msgid "Comments disabled"
-msgstr "Kommentare deaktiviert"
-
-#: ../../include/conversation.php:1372
-msgid "Page link name"
-msgstr "Link zur Seite"
-
-#: ../../include/conversation.php:1375
-msgid "Post as"
-msgstr "Veröffentlichen als"
-
-#: ../../include/conversation.php:1389
-msgid "Toggle voting"
-msgstr "Umfragewerkzeug aktivieren"
-
-#: ../../include/conversation.php:1392
-msgid "Disable comments"
-msgstr "Kommentare deaktivieren"
-
-#: ../../include/conversation.php:1393
-msgid "Toggle comments"
-msgstr "Kommentare umschalten"
-
-#: ../../include/conversation.php:1401
-msgid "Categories (optional, comma-separated list)"
-msgstr "Kategorien (optional, kommagetrennte Liste)"
-
-#: ../../include/conversation.php:1424
-msgid "Other networks and post services"
-msgstr "Andere Netzwerke und Platformen"
-
-#: ../../include/conversation.php:1430
-msgid "Set publish date"
-msgstr "Veröffentlichungsdatum festlegen"
-
-#: ../../include/conversation.php:1690
-msgid "Commented Order"
-msgstr "Neueste Kommentare"
-
-#: ../../include/conversation.php:1693
-msgid "Sort by Comment Date"
-msgstr "Nach Kommentardatum sortiert"
-
-#: ../../include/conversation.php:1697
-msgid "Posted Order"
-msgstr "Neueste Beiträge"
-
-#: ../../include/conversation.php:1700
-msgid "Sort by Post Date"
-msgstr "Nach Beitragsdatum sortiert"
-
-#: ../../include/conversation.php:1708
-msgid "Posts that mention or involve you"
-msgstr "Beiträge mit Beteiligung Deinerseits"
-
-#: ../../include/conversation.php:1717
-msgid "Activity Stream - by date"
-msgstr "Activity Stream – nach Datum sortiert"
-
-#: ../../include/conversation.php:1723
-msgid "Starred"
-msgstr "Markiert"
-
-#: ../../include/conversation.php:1726
-msgid "Favourite Posts"
-msgstr "Markierte Beiträge"
-
-#: ../../include/conversation.php:1733
-msgid "Spam"
-msgstr "Spam"
-
-#: ../../include/conversation.php:1736
-msgid "Posts flagged as SPAM"
-msgstr "Nachrichten, die als SPAM markiert wurden"
-
-#: ../../include/conversation.php:1811 ../../include/nav.php:413
-msgid "Status Messages and Posts"
-msgstr "Statusnachrichten und Beiträge"
-
-#: ../../include/conversation.php:1824 ../../include/nav.php:426
-msgid "Profile Details"
-msgstr "Profil-Details"
-
-#: ../../include/conversation.php:1834 ../../include/nav.php:436
-#: ../../include/photos.php:655
-msgid "Photo Albums"
-msgstr "Fotoalben"
-
-#: ../../include/conversation.php:1842 ../../include/nav.php:444
-msgid "Files and Storage"
-msgstr "Dateien und Speicher"
-
-#: ../../include/conversation.php:1879 ../../include/nav.php:479
-msgid "Bookmarks"
-msgstr "Lesezeichen"
-
-#: ../../include/conversation.php:1882 ../../include/nav.php:482
-msgid "Saved Bookmarks"
-msgstr "Gespeicherte Lesezeichen"
-
-#: ../../include/conversation.php:1893 ../../include/nav.php:493
-msgid "View Cards"
-msgstr "Karten anzeigen"
-
-#: ../../include/conversation.php:1901
-msgid "articles"
-msgstr "Artikel"
-
-#: ../../include/conversation.php:1904 ../../include/nav.php:504
-msgid "View Articles"
-msgstr "Artikel anzeigen"
-
-#: ../../include/conversation.php:1915 ../../include/nav.php:516
-msgid "View Webpages"
-msgstr "Webseiten anzeigen"
-
-#: ../../include/conversation.php:1984
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "Zusage"
-msgstr[1] "Zusagen"
-
-#: ../../include/conversation.php:1987
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "Absage"
-msgstr[1] "Absagen"
-
-#: ../../include/conversation.php:1990
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] " Unentschlossen"
-msgstr[1] "Unentschlossene"
-
-#: ../../include/conversation.php:1993
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] "Zustimmung"
-msgstr[1] "Zustimmungen"
-
-#: ../../include/conversation.php:1996
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] "Ablehnung"
-msgstr[1] "Ablehnungen"
-
-#: ../../include/conversation.php:1999
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] "Enthaltung"
-msgstr[1] "Enthaltungen"
-
-#: ../../include/dir_fns.php:141
-msgid "Directory Options"
-msgstr "Verzeichnisoptionen"
-
-#: ../../include/dir_fns.php:143
-msgid "Safe Mode"
-msgstr "Sicherer Modus"
-
-#: ../../include/dir_fns.php:144
-msgid "Public Forums Only"
-msgstr "Nur öffentliche Foren"
-
-#: ../../include/dir_fns.php:145
-msgid "This Website Only"
-msgstr "Nur dieser Hub"
-
-#: ../../include/bookmarks.php:34
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$ss Lesezeichen"
-
-#: ../../include/import.php:41
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
-
-#: ../../include/import.php:105
-msgid "Cloned channel not found. Import failed."
-msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."
-
-#: ../../include/text.php:478
-msgid "prev"
-msgstr "vorherige"
-
-#: ../../include/text.php:480
-msgid "first"
-msgstr "erste"
-
-#: ../../include/text.php:509
-msgid "last"
-msgstr "letzte"
-
-#: ../../include/text.php:512
-msgid "next"
-msgstr "nächste"
-
-#: ../../include/text.php:523
-msgid "older"
-msgstr "älter"
-
-#: ../../include/text.php:525
-msgid "newer"
-msgstr "neuer"
-
-#: ../../include/text.php:947
-msgid "No connections"
-msgstr "Keine Verbindungen"
-
-#: ../../include/text.php:972
-#, php-format
-msgid "View all %s connections"
-msgstr "Alle Verbindungen von %s anzeigen"
-
-#: ../../include/text.php:1104 ../../include/text.php:1109
-msgid "poke"
-msgstr "anstupsen"
-
-#: ../../include/text.php:1110
-msgid "ping"
-msgstr "anpingen"
-
-#: ../../include/text.php:1110
-msgid "pinged"
-msgstr "pingte"
-
-#: ../../include/text.php:1111
-msgid "prod"
-msgstr "knuffen"
-
-#: ../../include/text.php:1111
-msgid "prodded"
-msgstr "knuffte"
-
-#: ../../include/text.php:1112
-msgid "slap"
-msgstr "ohrfeigen"
-
-#: ../../include/text.php:1112
-msgid "slapped"
-msgstr "ohrfeigte"
-
-#: ../../include/text.php:1113
-msgid "finger"
-msgstr "befummeln"
-
-#: ../../include/text.php:1113
-msgid "fingered"
-msgstr "befummelte"
-
-#: ../../include/text.php:1114
-msgid "rebuff"
-msgstr "eine Abfuhr erteilen"
-
-#: ../../include/text.php:1114
-msgid "rebuffed"
-msgstr "zurückgewiesen"
-
-#: ../../include/text.php:1126
-msgid "happy"
-msgstr "glücklich"
-
-#: ../../include/text.php:1127
-msgid "sad"
-msgstr "traurig"
-
-#: ../../include/text.php:1128
-msgid "mellow"
-msgstr "sanft"
-
-#: ../../include/text.php:1129
-msgid "tired"
-msgstr "müde"
-
-#: ../../include/text.php:1130
-msgid "perky"
-msgstr "frech"
-
-#: ../../include/text.php:1131
-msgid "angry"
-msgstr "sauer"
-
-#: ../../include/text.php:1132
-msgid "stupefied"
-msgstr "verblüfft"
-
-#: ../../include/text.php:1133
-msgid "puzzled"
-msgstr "verwirrt"
-
-#: ../../include/text.php:1134
-msgid "interested"
-msgstr "interessiert"
-
-#: ../../include/text.php:1135
-msgid "bitter"
-msgstr "verbittert"
-
-#: ../../include/text.php:1136
-msgid "cheerful"
-msgstr "fröhlich"
-
-#: ../../include/text.php:1137
-msgid "alive"
-msgstr "lebendig"
-
-#: ../../include/text.php:1138
-msgid "annoyed"
-msgstr "verärgert"
-
-#: ../../include/text.php:1139
-msgid "anxious"
-msgstr "unruhig"
-
-#: ../../include/text.php:1140
-msgid "cranky"
-msgstr "schrullig"
-
-#: ../../include/text.php:1141
-msgid "disturbed"
-msgstr "verstört"
-
-#: ../../include/text.php:1142
-msgid "frustrated"
-msgstr "frustriert"
-
-#: ../../include/text.php:1143
-msgid "depressed"
-msgstr "deprimiert"
-
-#: ../../include/text.php:1144
-msgid "motivated"
-msgstr "motiviert"
-
-#: ../../include/text.php:1145
-msgid "relaxed"
-msgstr "entspannt"
-
-#: ../../include/text.php:1146
-msgid "surprised"
-msgstr "überrascht"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:70
-msgid "Monday"
-msgstr "Montag"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:71
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:72
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:73
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:74
-msgid "Friday"
-msgstr "Freitag"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:75
-msgid "Saturday"
-msgstr "Samstag"
-
-#: ../../include/text.php:1320 ../../include/js_strings.php:69
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:45
-msgid "January"
-msgstr "Januar"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:46
-msgid "February"
-msgstr "Februar"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:47
-msgid "March"
-msgstr "März"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:48
-msgid "April"
-msgstr "April"
-
-#: ../../include/text.php:1324
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:50
-msgid "June"
-msgstr "Juni"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:51
-msgid "July"
-msgstr "Juli"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:52
-msgid "August"
-msgstr "August"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:53
-msgid "September"
-msgstr "September"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:54
-msgid "October"
-msgstr "Oktober"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:55
-msgid "November"
-msgstr "November"
-
-#: ../../include/text.php:1324 ../../include/js_strings.php:56
-msgid "December"
-msgstr "Dezember"
-
-#: ../../include/text.php:1388 ../../include/text.php:1392
-msgid "Unknown Attachment"
-msgstr "Unbekannter Anhang"
-
-#: ../../include/text.php:1394 ../../include/feedutils.php:825
-msgid "unknown"
-msgstr "unbekannt"
-
-#: ../../include/text.php:1430
-msgid "remove category"
-msgstr "Kategorie entfernen"
-
-#: ../../include/text.php:1504
-msgid "remove from file"
-msgstr "aus der Datei entfernen"
-
-#: ../../include/text.php:1623 ../../include/message.php:12
-msgid "Download binary/encrypted content"
-msgstr "Binären/verschlüsselten Inhalt herunterladen"
-
-#: ../../include/text.php:1782 ../../include/language.php:364
-msgid "default"
-msgstr "Standard"
-
-#: ../../include/text.php:1790
-msgid "Page layout"
-msgstr "Seiten-Layout"
-
-#: ../../include/text.php:1790
-msgid "You can create your own with the layouts tool"
-msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"
-
-#: ../../include/text.php:1801
-msgid "HTML"
-msgstr "HTML"
-
-#: ../../include/text.php:1804
-msgid "Comanche Layout"
-msgstr "Comanche-Layout"
-
-#: ../../include/text.php:1809
-msgid "PHP"
-msgstr "PHP"
-
-#: ../../include/text.php:1818
-msgid "Page content type"
-msgstr "Art des Seiteninhalts"
-
-#: ../../include/text.php:1951
-msgid "activity"
-msgstr "Aktivität"
-
-#: ../../include/text.php:2014
-msgid "a-z, 0-9, -, and _ only"
-msgstr "nur a-z, 0-9, - und _"
-
-#: ../../include/text.php:2285
-msgid "Design Tools"
-msgstr "Gestaltungswerkzeuge"
-
-#: ../../include/text.php:2291
-msgid "Pages"
-msgstr "Seiten"
-
-#: ../../include/text.php:2313
-msgid "Import website..."
-msgstr "Webseite importieren..."
-
-#: ../../include/text.php:2314
-msgid "Select folder to import"
-msgstr "Ordner zum Importieren auswählen"
-
-#: ../../include/text.php:2315
-msgid "Import from a zipped folder:"
-msgstr "Aus einem gezippten Ordner importieren:"
-
-#: ../../include/text.php:2316
-msgid "Import from cloud files:"
-msgstr "Aus Cloud-Dateien importieren:"
-
-#: ../../include/text.php:2317
-msgid "/cloud/channel/path/to/folder"
-msgstr "/Cloud/Kanal/Pfad/zum/Ordner"
-
-#: ../../include/text.php:2318
-msgid "Enter path to website files"
-msgstr "Pfad zu Webseitendateien eingeben"
-
-#: ../../include/text.php:2319
-msgid "Select folder"
-msgstr "Ordner auswählen"
-
-#: ../../include/text.php:2320
-msgid "Export website..."
-msgstr "Webseite exportieren..."
-
-#: ../../include/text.php:2321
-msgid "Export to a zip file"
-msgstr "In eine ZIP-Datei exportieren"
-
-#: ../../include/text.php:2322
-msgid "website.zip"
-msgstr "website.zip"
-
-#: ../../include/text.php:2323
-msgid "Enter a name for the zip file."
-msgstr "Geben Sie einen für die ZIP-Datei ein."
-
-#: ../../include/text.php:2324
-msgid "Export to cloud files"
-msgstr "In Cloud-Dateien exportieren"
-
-#: ../../include/text.php:2325
-msgid "/path/to/export/folder"
-msgstr "/Pfad/zum/exportierenden/Ordner"
-
-#: ../../include/text.php:2326
-msgid "Enter a path to a cloud files destination."
-msgstr "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein."
-
-#: ../../include/text.php:2327
-msgid "Specify folder"
-msgstr "Ordner angeben"
-
-#: ../../include/contact_widgets.php:11
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d Einladung verfügbar"
-msgstr[1] "%d Einladungen verfügbar"
-
-#: ../../include/contact_widgets.php:19
-msgid "Find Channels"
-msgstr "Finde Kanäle"
-
-#: ../../include/contact_widgets.php:20
-msgid "Enter name or interest"
-msgstr "Name oder Interessen eingeben"
-
-#: ../../include/contact_widgets.php:21
-msgid "Connect/Follow"
-msgstr "Verbinden/Folgen"
-
-#: ../../include/contact_widgets.php:22
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Beispiele: Robert Morgenstein, Angeln"
-
-#: ../../include/contact_widgets.php:26
-msgid "Random Profile"
-msgstr "Zufallsprofil"
-
-#: ../../include/contact_widgets.php:27
-msgid "Invite Friends"
-msgstr "Lade Freunde ein"
-
-#: ../../include/contact_widgets.php:29
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Fortgeschrittenes Beispiel: name=fred and country=iceland"
-
-#: ../../include/contact_widgets.php:223
-msgid "Common Connections"
-msgstr "Gemeinsame Verbindungen"
-
-#: ../../include/contact_widgets.php:228
-#, php-format
-msgid "View all %d common connections"
-msgstr "Zeige alle %d gemeinsamen Verbindungen"
-
-#: ../../include/markdown.php:158 ../../include/bbcode.php:339
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s schrieb den folgenden %2$s %3$s"
-
-#: ../../include/follow.php:37
-msgid "Channel is blocked on this site."
-msgstr "Der Kanal ist auf dieser Seite blockiert "
-
-#: ../../include/follow.php:42
-msgid "Channel location missing."
-msgstr "Adresse des Kanals fehlt."
-
-#: ../../include/follow.php:84
-msgid "Response from remote channel was incomplete."
-msgstr "Antwort des entfernten Kanals war unvollständig."
-
-#: ../../include/follow.php:101
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanal wurde gelöscht und existiert nicht mehr."
-
-#: ../../include/follow.php:156
-msgid "Remote channel or protocol unavailable."
-msgstr "Externer Kanal oder Protokoll nicht verfügbar."
-
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Kanalsuche fehlgeschlagen"
-
-#: ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protokoll deaktiviert."
-
-#: ../../include/follow.php:202
-msgid "Cannot connect to yourself."
-msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Dieses Element löschen?"
-
-#: ../../include/js_strings.php:8
-#, php-format
-msgid "%s show less"
-msgstr "%s weniger anzeigen"
-
-#: ../../include/js_strings.php:9
-#, php-format
-msgid "%s expand"
-msgstr "%s aufklappen"
-
-#: ../../include/js_strings.php:10
-#, php-format
-msgid "%s collapse"
-msgstr "%s einklappen"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Kennwort zu kurz"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Kennwörter stimmen nicht überein"
-
-#: ../../include/js_strings.php:13
-msgid "everybody"
-msgstr "alle"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "geheime Passphrase"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Hinweis zur Passphrase"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "Alle schließen"
-
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Nichts Neues hier"
-
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Diesen Kanal bewerten (öffentlich sichtbar)"
-
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Beschreibung (optional)"
-
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Gib eine URL ein:"
-
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlassen möchtest?"
-
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
-
-#: ../../include/js_strings.php:28
-msgid "timeago.prefixFromNow"
-msgstr " "
-
-#: ../../include/js_strings.php:29
-msgid "ago"
-msgstr "her"
-
-#: ../../include/js_strings.php:30
-msgid "from now"
-msgstr "von jetzt"
-
-#: ../../include/js_strings.php:31
-msgid "less than a minute"
-msgstr "weniger als eine Minute"
-
-#: ../../include/js_strings.php:32
-msgid "about a minute"
-msgstr "ungefähr eine Minute"
-
-#: ../../include/js_strings.php:33
-#, php-format
-msgid "%d minutes"
-msgstr "%d Minuten"
-
-#: ../../include/js_strings.php:34
-msgid "about an hour"
-msgstr "ungefähr eine Stunde"
-
-#: ../../include/js_strings.php:35
-#, php-format
-msgid "about %d hours"
-msgstr "ungefähr %d Stunden"
-
-#: ../../include/js_strings.php:36
-msgid "a day"
-msgstr "ein Tag"
-
-#: ../../include/js_strings.php:37
-#, php-format
-msgid "%d days"
-msgstr "%d Tage"
-
-#: ../../include/js_strings.php:38
-msgid "about a month"
-msgstr "ungefähr einen Monat"
-
-#: ../../include/js_strings.php:39
-#, php-format
-msgid "%d months"
-msgstr "%d Monate"
-
-#: ../../include/js_strings.php:40
-msgid "about a year"
-msgstr "ungefähr ein Jahr"
-
-#: ../../include/js_strings.php:41
-#, php-format
-msgid "%d years"
-msgstr "%d Jahre"
-
-#: ../../include/js_strings.php:42
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:43
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/js_strings.php:49
-msgctxt "long"
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/js_strings.php:57
-msgid "Jan"
-msgstr "Jan"
-
-#: ../../include/js_strings.php:58
-msgid "Feb"
-msgstr "Feb"
-
-#: ../../include/js_strings.php:59
-msgid "Mar"
-msgstr "Mär"
-
-#: ../../include/js_strings.php:60
-msgid "Apr"
-msgstr "Apr"
-
-#: ../../include/js_strings.php:61
-msgctxt "short"
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/js_strings.php:62
-msgid "Jun"
-msgstr "Jun"
-
-#: ../../include/js_strings.php:63
-msgid "Jul"
-msgstr "Jul"
-
-#: ../../include/js_strings.php:64
-msgid "Aug"
-msgstr "Aug"
-
-#: ../../include/js_strings.php:65
-msgid "Sep"
-msgstr "Sep"
-
-#: ../../include/js_strings.php:66
-msgid "Oct"
-msgstr "Okt"
-
-#: ../../include/js_strings.php:67
-msgid "Nov"
-msgstr "Nov"
-
-#: ../../include/js_strings.php:68
-msgid "Dec"
-msgstr "Dez"
-
-#: ../../include/js_strings.php:76
-msgid "Sun"
-msgstr "So"
-
-#: ../../include/js_strings.php:77
-msgid "Mon"
-msgstr "Mo"
-
-#: ../../include/js_strings.php:78
-msgid "Tue"
-msgstr "Di"
-
-#: ../../include/js_strings.php:79
-msgid "Wed"
-msgstr "Mi"
-
-#: ../../include/js_strings.php:80
-msgid "Thu"
-msgstr "Do"
-
-#: ../../include/js_strings.php:81
-msgid "Fri"
-msgstr "Fr"
-
-#: ../../include/js_strings.php:82
-msgid "Sat"
-msgstr "Sa"
-
-#: ../../include/js_strings.php:83
-msgctxt "calendar"
-msgid "today"
-msgstr "heute"
-
-#: ../../include/js_strings.php:84
-msgctxt "calendar"
-msgid "month"
-msgstr "Monat"
-
-#: ../../include/js_strings.php:85
-msgctxt "calendar"
-msgid "week"
-msgstr "Woche"
-
-#: ../../include/js_strings.php:86
-msgctxt "calendar"
-msgid "day"
-msgstr "Tag"
-
-#: ../../include/js_strings.php:87
-msgctxt "calendar"
-msgid "All day"
-msgstr "Ganztägig"
-
-#: ../../include/message.php:40
-msgid "Unable to determine sender."
-msgstr "Kann Absender nicht bestimmen."
-
-#: ../../include/message.php:79
-msgid "No recipient provided."
-msgstr "Kein Empfänger angegeben"
-
-#: ../../include/message.php:84
-msgid "[no subject]"
-msgstr "[no subject]"
-
-#: ../../include/message.php:214
-msgid "Stored post could not be verified."
-msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
-
-#: ../../include/activities.php:41
-msgid " and "
-msgstr "und"
-
-#: ../../include/activities.php:49
-msgid "public profile"
-msgstr "öffentliches Profil"
-
-#: ../../include/activities.php:58
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s hat %2$s auf &ldquo;%3$s&rdquo; geändert"
-
-#: ../../include/activities.php:59
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Besuche %1$s's %2$s"
-
-#: ../../include/activities.php:62
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
-
-#: ../../include/attach.php:265 ../../include/attach.php:361
-msgid "Item was not found."
-msgstr "Beitrag wurde nicht gefunden."
-
-#: ../../include/attach.php:553
-msgid "No source file."
-msgstr "Keine Quelldatei."
-
-#: ../../include/attach.php:575
-msgid "Cannot locate file to replace"
-msgstr "Kann Datei zum Ersetzen nicht finden"
-
-#: ../../include/attach.php:593
-msgid "Cannot locate file to revise/update"
-msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden"
-
-#: ../../include/attach.php:734
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Datei überschreitet das Größen-Limit von %d"
-
-#: ../../include/attach.php:754
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."
-
-#: ../../include/attach.php:929
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."
-
-#: ../../include/attach.php:948
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."
-
-#: ../../include/attach.php:1022 ../../include/attach.php:1038
-msgid "Path not available."
-msgstr "Pfad nicht verfügbar."
-
-#: ../../include/attach.php:1087 ../../include/attach.php:1252
-msgid "Empty pathname"
-msgstr "Leere Pfadangabe"
-
-#: ../../include/attach.php:1113
-msgid "duplicate filename or path"
-msgstr "doppelter Dateiname oder Pfad"
-
-#: ../../include/attach.php:1138
-msgid "Path not found."
-msgstr "Pfad nicht gefunden."
-
-#: ../../include/attach.php:1206
-msgid "mkdir failed."
-msgstr "mkdir fehlgeschlagen."
-
-#: ../../include/attach.php:1210
-msgid "database storage failed."
-msgstr "Speichern in der Datenbank fehlgeschlagen."
-
-#: ../../include/attach.php:1258
-msgid "Empty path"
-msgstr "Leere Pfadangabe"
-
-#: ../../include/security.php:532
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
-
-#: ../../include/items.php:885 ../../include/items.php:945
-msgid "(Unknown)"
-msgstr "(Unbekannt)"
-
-#: ../../include/items.php:1129
-msgid "Visible to anybody on the internet."
-msgstr "Für jeden im Internet sichtbar."
-
-#: ../../include/items.php:1131
-msgid "Visible to you only."
-msgstr "Nur für Dich sichtbar."
-
-#: ../../include/items.php:1133
-msgid "Visible to anybody in this network."
-msgstr "Für jedes $Projectname-Mitglied sichtbar."
-
-#: ../../include/items.php:1135
-msgid "Visible to anybody authenticated."
-msgstr "Für jeden sichtbar, der angemeldet ist."
-
-#: ../../include/items.php:1137
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Für jeden auf %s sichtbar."
-
-#: ../../include/items.php:1139
-msgid "Visible to all connections."
-msgstr "Für alle Verbindungen sichtbar."
-
-#: ../../include/items.php:1141
-msgid "Visible to approved connections."
-msgstr "Nur für akzeptierte Verbindungen sichtbar."
-
-#: ../../include/items.php:1143
-msgid "Visible to specific connections."
-msgstr "Sichtbar für bestimmte Verbindungen."
-
-#: ../../include/items.php:4117
-msgid "Privacy group is empty."
-msgstr "Gruppe ist leer."
-
-#: ../../include/items.php:4124
-#, php-format
-msgid "Privacy group: %s"
-msgstr "Gruppe: %s"
-
-#: ../../include/items.php:4136
-msgid "Connection not found."
-msgstr "Die Verbindung wurde nicht gefunden."
-
-#: ../../include/items.php:4485
-msgid "profile photo"
-msgstr "Profilfoto"
-
-#: ../../include/items.php:4676
-#, php-format
-msgid "[Edited %s]"
-msgstr "[%s wurde bearbeitet]"
-
-#: ../../include/items.php:4676
-msgctxt "edit_activity"
-msgid "Post"
-msgstr "Beitrag"
-
-#: ../../include/items.php:4676
-msgctxt "edit_activity"
-msgid "Comment"
-msgstr "Kommentar"
-
-#: ../../include/channel.php:35
-msgid "Unable to obtain identity information from database"
-msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-
-#: ../../include/channel.php:69
-msgid "Empty name"
-msgstr "Namensfeld leer"
-
-#: ../../include/channel.php:72
-msgid "Name too long"
-msgstr "Name ist zu lang"
-
-#: ../../include/channel.php:188
-msgid "No account identifier"
-msgstr "Keine Account-Kennung"
-
-#: ../../include/channel.php:200
-msgid "Nickname is required."
-msgstr "Spitzname ist erforderlich."
-
-#: ../../include/channel.php:277
-msgid "Unable to retrieve created identity"
-msgstr "Kann die erstellte Identität nicht empfangen"
-
-#: ../../include/channel.php:373
-msgid "Default Profile"
-msgstr "Standard-Profil"
-
-#: ../../include/channel.php:532 ../../include/channel.php:621
-msgid "Unable to retrieve modified identity"
-msgstr "Geänderte Identität kann nicht empfangen werden"
-
-#: ../../include/channel.php:1298
-msgid "Create New Profile"
-msgstr "Neues Profil erstellen"
-
-#: ../../include/channel.php:1319
-msgid "Visible to everybody"
-msgstr "Für jeden sichtbar"
-
-#: ../../include/channel.php:1396 ../../include/channel.php:1523
-msgid "Gender:"
-msgstr "Geschlecht:"
-
-#: ../../include/channel.php:1398 ../../include/channel.php:1578
-msgid "Homepage:"
-msgstr "Homepage:"
-
-#: ../../include/channel.php:1399
-msgid "Online Now"
-msgstr "gerade online"
-
-#: ../../include/channel.php:1482
-msgid "Trans"
-msgstr ""
-
-#: ../../include/channel.php:1528
-msgid "Like this channel"
-msgstr "Dieser Kanal gefällt mir"
-
-#: ../../include/channel.php:1552
-msgid "j F, Y"
-msgstr "j. F Y"
-
-#: ../../include/channel.php:1553
-msgid "j F"
-msgstr "j. F"
-
-#: ../../include/channel.php:1560
-msgid "Birthday:"
-msgstr "Geburtstag:"
-
-#: ../../include/channel.php:1573
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "seit %1$d %2$s"
-
-#: ../../include/channel.php:1576
-msgid "Sexual Preference:"
-msgstr "Sexuelle Orientierung:"
-
-#: ../../include/channel.php:1582
-msgid "Tags:"
-msgstr "Schlagworte:"
-
-#: ../../include/channel.php:1584
-msgid "Political Views:"
-msgstr "Politische Ansichten:"
-
-#: ../../include/channel.php:1586
-msgid "Religion:"
-msgstr "Religion:"
-
-#: ../../include/channel.php:1590
-msgid "Hobbies/Interests:"
-msgstr "Hobbys/Interessen:"
-
-#: ../../include/channel.php:1592
-msgid "Likes:"
-msgstr "Gefällt:"
-
-#: ../../include/channel.php:1594
-msgid "Dislikes:"
-msgstr "Gefällt nicht:"
-
-#: ../../include/channel.php:1596
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformation und soziale Netzwerke:"
-
-#: ../../include/channel.php:1598
-msgid "My other channels:"
-msgstr "Meine anderen Kanäle:"
-
-#: ../../include/channel.php:1600
-msgid "Musical interests:"
-msgstr "Musikalische Interessen:"
-
-#: ../../include/channel.php:1602
-msgid "Books, literature:"
-msgstr "Bücher, Literatur:"
-
-#: ../../include/channel.php:1604
-msgid "Television:"
-msgstr "Fernsehen:"
-
-#: ../../include/channel.php:1606
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/Tanz/Kultur/Unterhaltung:"
-
-#: ../../include/channel.php:1608
-msgid "Love/Romance:"
-msgstr "Liebe/Romantik:"
-
-#: ../../include/channel.php:1610
-msgid "Work/employment:"
-msgstr "Arbeit/Anstellung:"
-
-#: ../../include/channel.php:1612
-msgid "School/education:"
-msgstr "Schule/Ausbildung:"
-
-#: ../../include/channel.php:1635
-msgid "Like this thing"
-msgstr "Gefällt mir"
-
-#: ../../include/event.php:23 ../../include/event.php:70
-msgid "l F d, Y \\@ g:i A"
-msgstr "l, d. F Y, H:i"
-
-#: ../../include/event.php:31 ../../include/event.php:74
-msgid "Starts:"
-msgstr "Beginnt:"
-
-#: ../../include/event.php:41 ../../include/event.php:78
-msgid "Finishes:"
-msgstr "Endet:"
-
-#: ../../include/event.php:1011
-msgid "This event has been added to your calendar."
-msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt"
-
-#: ../../include/event.php:1220
-msgid "Not specified"
-msgstr "Keine Angabe"
-
-#: ../../include/event.php:1221
-msgid "Needs Action"
-msgstr "Aktion erforderlich"
-
-#: ../../include/event.php:1222
-msgid "Completed"
-msgstr "Abgeschlossen"
-
-#: ../../include/event.php:1223
-msgid "In Process"
-msgstr "In Bearbeitung"
-
-#: ../../include/event.php:1224
-msgid "Cancelled"
-msgstr "gestrichen"
-
-#: ../../include/event.php:1303 ../../include/connections.php:684
-msgid "Home, Voice"
-msgstr "Zuhause, Sprache"
-
-#: ../../include/event.php:1304 ../../include/connections.php:685
-msgid "Home, Fax"
-msgstr "Zuhause, Fax"
-
-#: ../../include/event.php:1306 ../../include/connections.php:687
-msgid "Work, Voice"
-msgstr "Arbeit, Sprache"
-
-#: ../../include/event.php:1307 ../../include/connections.php:688
-msgid "Work, Fax"
-msgstr "Arbeit, Fax"
-
-#: ../../include/network.php:761
-msgid "view full size"
-msgstr "In Vollbildansicht anschauen"
-
-#: ../../include/network.php:1763 ../../include/network.php:1764
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/network.php:1765
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/network.php:1766
-msgid "GNU-Social"
-msgstr "GNU-Social"
-
-#: ../../include/network.php:1767
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/network.php:1770
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/network.php:1771
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/network.php:1772
-msgid "Zot"
-msgstr "Zot!"
-
-#: ../../include/network.php:1773
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/network.php:1774
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/network.php:1775
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/language.php:377
-msgid "Select an alternate language"
-msgstr "Wähle eine alternative Sprache"
-
-#: ../../include/acl_selectors.php:208
-msgid "Who can see this?"
-msgstr "Wer kann das sehen?"
-
-#: ../../include/acl_selectors.php:209
-msgid "Custom selection"
-msgstr "Benutzerdefinierte Auswahl"
-
-#: ../../include/acl_selectors.php:210
-msgid ""
-"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
-" the scope of \"Show\"."
-msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."
-
-#: ../../include/acl_selectors.php:211
-msgid "Show"
-msgstr "Anzeigen"
-
-#: ../../include/acl_selectors.php:212
-msgid "Don't show"
-msgstr "Nicht anzeigen"
-
-#: ../../include/acl_selectors.php:245
-#, php-format
-msgid ""
-"Post permissions %s cannot be changed %s after a post is shared.</br />These"
-" permissions set who is allowed to view the post."
-msgstr "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."
-
-#: ../../include/dba/dba_driver.php:190
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
-
-#: ../../include/bbcode.php:194 ../../include/bbcode.php:1106
-#: ../../include/bbcode.php:1109 ../../include/bbcode.php:1114
-#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1120
-#: ../../include/bbcode.php:1123 ../../include/bbcode.php:1128
-#: ../../include/bbcode.php:1131 ../../include/bbcode.php:1136
-#: ../../include/bbcode.php:1139 ../../include/bbcode.php:1142
-#: ../../include/bbcode.php:1145
-msgid "Image/photo"
-msgstr "Bild/Foto"
-
-#: ../../include/bbcode.php:233 ../../include/bbcode.php:1156
-msgid "Encrypted content"
-msgstr "Verschlüsselter Inhalt"
-
-#: ../../include/bbcode.php:249
-#, php-format
-msgid "Install %1$s element %2$s"
-msgstr ""
-
-#: ../../include/bbcode.php:253
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren."
-
-#: ../../include/bbcode.php:331
-msgid "card"
-msgstr "Karte"
-
-#: ../../include/bbcode.php:333
-msgid "article"
-msgstr "Artikel"
-
-#: ../../include/bbcode.php:416 ../../include/bbcode.php:424
-msgid "Click to open/close"
-msgstr "Klicke zum Öffnen/Schließen"
-
-#: ../../include/bbcode.php:424
-msgid "spoiler"
-msgstr "Spoiler"
-
-#: ../../include/bbcode.php:1094
-msgid "$1 wrote:"
-msgstr "$1 schrieb:"
-
-#: ../../include/oembed.php:328
-msgid " by "
-msgstr "von"
-
-#: ../../include/oembed.php:329
-msgid " on "
-msgstr "am"
-
-#: ../../include/oembed.php:358
-msgid "Embedded content"
-msgstr "Eingebetteter Inhalt"
-
-#: ../../include/oembed.php:367
-msgid "Embedding disabled"
-msgstr "Einbetten deaktiviert"
-
-#: ../../include/zid.php:340
-#, php-format
-msgid "OpenWebAuth: %1$s welcomes %2$s"
-msgstr "OpenWebAuth: %1$s heißt %2$s willkommen"
-
-#: ../../include/features.php:54
-msgid "General Features"
-msgstr "Allgemeine Funktionen"
-
-#: ../../include/features.php:59
-msgid "Multiple Profiles"
-msgstr "Mehrfachprofile"
-
-#: ../../include/features.php:60
-msgid "Ability to create multiple profiles"
-msgstr "Ermöglicht das Anlegen mehrerer Profile pro Kanal"
-
-#: ../../include/features.php:68
-msgid "Advanced Profiles"
-msgstr "Erweiterte Profile"
-
-#: ../../include/features.php:69
-msgid "Additional profile sections and selections"
-msgstr "Stellt zusätzliche Bereiche und Felder im Profil zur Verfügung"
-
-#: ../../include/features.php:77
-msgid "Profile Import/Export"
-msgstr "Profil-Import/Export"
-
-#: ../../include/features.php:78
-msgid "Save and load profile details across sites/channels"
-msgstr "Ermöglicht das Speichern von Profilen, um sie in einen anderen Kanal zu importieren"
-
-#: ../../include/features.php:86
-msgid "Web Pages"
-msgstr "Webseiten"
-
-#: ../../include/features.php:87
-msgid "Provide managed web pages on your channel"
-msgstr "Ermöglicht das Erstellen von Webseiten in Deinem Kanal"
-
-#: ../../include/features.php:96
-msgid "Provide a wiki for your channel"
-msgstr "Stelle ein Wiki in Deinem Kanal zur Verfügung"
-
-#: ../../include/features.php:113
-msgid "Private Notes"
-msgstr "Private Notizen"
-
-#: ../../include/features.php:114
-msgid "Enables a tool to store notes and reminders (note: not encrypted)"
-msgstr "Aktiviert ein Werkzeug mit dem Notizen und Erinnerungen gespeichert werden können (Hinweis: nicht verschlüsselt)"
-
-#: ../../include/features.php:123
-msgid "Create personal planning cards"
-msgstr "Erstelle persönliche (Notiz-)Karten zur Planung/Koordination oder ähnlichen Zwecken"
-
-#: ../../include/features.php:141
-msgid "Navigation Channel Select"
-msgstr "Kanal-Auswahl in der Navigationsleiste"
-
-#: ../../include/features.php:142
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü"
-
-#: ../../include/features.php:150
-msgid "Photo Location"
-msgstr "Aufnahmeort"
-
-#: ../../include/features.php:151
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte"
-
-#: ../../include/features.php:159
-msgid "Access Controlled Chatrooms"
-msgstr "Zugriffskontrollierte Chaträume"
-
-#: ../../include/features.php:160
-msgid "Provide chatrooms and chat services with access control."
-msgstr "Bieten Sie Chaträume und Chatdienste mit Zugriffskontrolle an."
-
-#: ../../include/features.php:169
-msgid "Provide alternate connection permission roles."
-msgstr "Stelle benutzerdefinierte Berechtigungsrollen für Verbindungen zur Verfügung."
-
-#: ../../include/features.php:177
-msgid "Smart Birthdays"
-msgstr "Smarte Geburtstage"
-
-#: ../../include/features.php:178
-msgid ""
-"Make birthday events timezone aware in case your friends are scattered "
-"across the planet."
-msgstr "Stellt für Geburtstage einen Zeitzonenbezug her, falls deine Freunde über den ganzen Planeten verstreut sind."
-
-#: ../../include/features.php:186
-msgid "Event Timezone Selection"
-msgstr "Termin-Zeitzonenauswahl"
-
-#: ../../include/features.php:187
-msgid "Allow event creation in timezones other than your own."
-msgstr "Ermögliche das Erstellen von Terminen in anderen Zeitzonen als Deiner eigenen."
-
-#: ../../include/features.php:195
-msgid "Advanced Directory Search"
-msgstr "Erweiterte Verzeichnissuche"
-
-#: ../../include/features.php:196
-msgid "Allows creation of complex directory search queries"
-msgstr "Ermöglicht die Erstellung komplexer Verzeichnis-Suchabfragen"
-
-#: ../../include/features.php:204
-msgid "Advanced Theme and Layout Settings"
-msgstr "Erweiterte Design- und Layout-Einstellungen"
-
-#: ../../include/features.php:205
-msgid "Allows fine tuning of themes and page layouts"
-msgstr "Erlaubt die Feineinstellung von Designs und Seitenlayouts"
-
-#: ../../include/features.php:215
-msgid "Post Composition Features"
-msgstr "Nachbearbeitungsfunktionen"
-
-#: ../../include/features.php:219
-msgid "Large Photos"
-msgstr "Große Fotos"
-
-#: ../../include/features.php:220
-msgid ""
-"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
-"(640px) photo thumbnails"
-msgstr "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet."
-
-#: ../../include/features.php:229
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Ermöglicht den automatischen Import von Inhalten für diesen Kanal von anderen Kanälen oder Feeds"
-
-#: ../../include/features.php:237
-msgid "Even More Encryption"
-msgstr "Noch mehr Verschlüsselung"
-
-#: ../../include/features.php:238
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Ermöglicht optional die zusätzliche Verschlüsselung von Inhalten (Ende-zu-Ende mit geteiltem Schlüssel)"
-
-#: ../../include/features.php:246
-msgid "Enable Voting Tools"
-msgstr "Umfragewerkzeuge aktivieren"
-
-#: ../../include/features.php:247
-msgid "Provide a class of post which others can vote on"
-msgstr "Aktiviert die Umfragewerkzeuge, um anderen die Möglichkeit zu geben, einem Beitrag zuzustimmen, ihn abzulehnen oder sich zu enthalten. (Muss im Beitrag selbst noch aktiviert werden.)"
-
-#: ../../include/features.php:255
-msgid "Disable Comments"
-msgstr "Kommentare deaktivieren"
-
-#: ../../include/features.php:256
-msgid "Provide the option to disable comments for a post"
-msgstr "Ermöglicht, die Kommentarfunktion für einzelne Beiträge abzuschalten"
-
-#: ../../include/features.php:264
-msgid "Delayed Posting"
-msgstr "Verzögertes Senden"
-
-#: ../../include/features.php:265
-msgid "Allow posts to be published at a later date"
-msgstr "Ermöglicht es, Beiträge zu einem späteren Zeitpunkt zu veröffentlichen"
-
-#: ../../include/features.php:273
-msgid "Content Expiration"
-msgstr "Verfall von Inhalten"
-
-#: ../../include/features.php:274
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum."
-
-#: ../../include/features.php:282
-msgid "Suppress Duplicate Posts/Comments"
-msgstr "Doppelte Beiträge unterdrücken"
-
-#: ../../include/features.php:283
-msgid ""
-"Prevent posts with identical content to be published with less than two "
-"minutes in between submissions."
-msgstr "Verhindert, dass innerhalb von zwei Minuten Beiträge mit identischem Inhalt veröffentlicht werden."
-
-#: ../../include/features.php:294
-msgid "Network and Stream Filtering"
-msgstr "Netzwerk- und Stream-Filter"
-
-#: ../../include/features.php:298
-msgid "Search by Date"
-msgstr "Suche nach Datum"
-
-#: ../../include/features.php:299
-msgid "Ability to select posts by date ranges"
-msgstr "Möglichkeit, Beiträge nach Zeiträumen auszuwählen"
-
-#: ../../include/features.php:307 ../../include/group.php:328
-msgid "Privacy Groups"
-msgstr "Gruppen"
-
-#: ../../include/features.php:308
-msgid "Enable management and selection of privacy groups"
-msgstr "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren"
-
-#: ../../include/features.php:317
-msgid "Save search terms for re-use"
-msgstr "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung"
-
-#: ../../include/features.php:325
-msgid "Network Personal Tab"
-msgstr "Persönlicher Netzwerkreiter"
-
-#: ../../include/features.php:326
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Aktiviert einen Reiter in der Grid-Ansicht, der nur Netzwerk-Beiträge anzeigt, mit denen Du interagiert hast"
-
-#: ../../include/features.php:334
-msgid "Network New Tab"
-msgstr "Netzwerkreiter Neu"
-
-#: ../../include/features.php:335
-msgid "Enable tab to display all new Network activity"
-msgstr "Aktiviert einen Reiter in der Grid-Ansicht, der alle neuen Netzwerkaktivitäten anzeigt"
-
-#: ../../include/features.php:343
-msgid "Affinity Tool"
-msgstr "Beziehungs-Tool"
-
-#: ../../include/features.php:344
-msgid "Filter stream activity by depth of relationships"
-msgstr "Aktiviert ein Werkzeug in der Grid-Ansicht, das den Stream nach Grad der Beziehung filtern kann"
-
-#: ../../include/features.php:353
-msgid "Show friend and connection suggestions"
-msgstr "Freund- und Verbindungsvorschläge anzeigen"
-
-#: ../../include/features.php:361
-msgid "Connection Filtering"
-msgstr "Filter für Verbindungen"
-
-#: ../../include/features.php:362
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)"
-
-#: ../../include/features.php:374
-msgid "Post/Comment Tools"
-msgstr "Beitrag-/Kommentar-Tools"
-
-#: ../../include/features.php:379
-msgid "Use markdown for editing posts"
-msgstr "Verwende Markdown zum Bearbeiten von Beiträgen"
-
-#: ../../include/features.php:387
-msgid "Community Tagging"
-msgstr "Gemeinschaftliches Verschlagworten"
-
-#: ../../include/features.php:388
-msgid "Ability to tag existing posts"
-msgstr "Ermöglicht das Verschlagworten existierender Beiträge"
-
-#: ../../include/features.php:396
-msgid "Post Categories"
-msgstr "Beitrags-Kategorien"
-
-#: ../../include/features.php:397
-msgid "Add categories to your posts"
-msgstr "Aktiviert Kategorien für Beiträge"
-
-#: ../../include/features.php:405
-msgid "Emoji Reactions"
-msgstr "Emoji Reaktionen"
-
-#: ../../include/features.php:406
-msgid "Add emoji reaction ability to posts"
-msgstr "Aktiviert Emoji-Reaktionen für Beiträge"
-
-#: ../../include/features.php:415
-msgid "Ability to file posts under folders"
-msgstr "Möglichkeit, Beiträge in Verzeichnissen zu sammeln"
-
-#: ../../include/features.php:423
-msgid "Dislike Posts"
-msgstr "Gefällt-mir-nicht-Beiträge"
-
-#: ../../include/features.php:424
-msgid "Ability to dislike posts/comments"
-msgstr "Aktiviert die „Gefällt mir nicht“-Schaltfläche"
-
-#: ../../include/features.php:432
-msgid "Star Posts"
-msgstr "Beiträge mit Sternchen versehen"
-
-#: ../../include/features.php:433
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol"
-
-#: ../../include/features.php:441
-msgid "Tag Cloud"
-msgstr "Schlagwort-Wolke"
-
-#: ../../include/features.php:442
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite"
-
-#: ../../include/features.php:453
-msgid "Premium Channel"
-msgstr "Premium-Kanal"
-
-#: ../../include/features.php:454
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen"
-
-#: ../../include/taxonomy.php:377 ../../include/taxonomy.php:398
-msgid "Tags"
-msgstr "Schlagwörter"
-
-#: ../../include/taxonomy.php:483
-msgid "Keywords"
-msgstr "Schlüsselwörter"
-
-#: ../../include/taxonomy.php:504
-msgid "have"
-msgstr "habe"
-
-#: ../../include/taxonomy.php:504
-msgid "has"
-msgstr "hat"
-
-#: ../../include/taxonomy.php:505
-msgid "want"
-msgstr "will"
-
-#: ../../include/taxonomy.php:505
-msgid "wants"
-msgstr "will"
-
-#: ../../include/taxonomy.php:506
-msgid "likes"
-msgstr "gefällt"
-
-#: ../../include/taxonomy.php:507
-msgid "dislikes"
-msgstr "missfällt"
-
-#: ../../include/account.php:35
-msgid "Not a valid email address"
-msgstr "Ungültige E-Mail-Adresse"
-
-#: ../../include/account.php:37
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt"
-
-#: ../../include/account.php:43
-msgid "Your email address is already registered at this site."
-msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."
-
-#: ../../include/account.php:75
-msgid "An invitation is required."
-msgstr "Eine Einladung wird benötigt."
-
-#: ../../include/account.php:79
-msgid "Invitation could not be verified."
-msgstr "Die Einladung konnte nicht bestätigt werden."
-
-#: ../../include/account.php:157
-msgid "Please enter the required information."
-msgstr "Bitte gib die benötigten Informationen ein."
-
-#: ../../include/account.php:224
-msgid "Failed to store account information."
-msgstr "Speichern der Nutzerkontodaten fehlgeschlagen."
-
-#: ../../include/account.php:291
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registrierungsbestätigung für %s"
-
-#: ../../include/account.php:360
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registrierungsanfrage auf %s"
-
-#: ../../include/account.php:382
-msgid "your registration password"
-msgstr "Dein Registrierungspasswort"
-
-#: ../../include/account.php:388 ../../include/account.php:450
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registrierungsdetails für %s"
-
-#: ../../include/account.php:461
-msgid "Account approved."
-msgstr "Nutzerkonto bestätigt."
-
-#: ../../include/account.php:501
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrierung für %s wurde widerrufen"
-
-#: ../../include/account.php:780 ../../include/account.php:782
-msgid "Click here to upgrade."
-msgstr "Klicke hier, um das Upgrade durchzuführen."
-
-#: ../../include/account.php:788
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
-
-#: ../../include/account.php:793
-msgid "This action is not available under your subscription plan."
-msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
-
-#: ../../include/datetime.php:150
-msgid "Birthday"
-msgstr "Geburtstag"
-
-#: ../../include/datetime.php:152
-msgid "Age: "
-msgstr "Alter:"
-
-#: ../../include/datetime.php:154
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "JJJJ-MM-TT oder MM-TT"
-
-#: ../../include/datetime.php:298
-msgid "less than a second ago"
-msgstr "Vor weniger als einer Sekunde"
-
-#: ../../include/datetime.php:316
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "vor %1$d %2$s"
-
-#: ../../include/datetime.php:327
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Jahr"
-msgstr[1] "Jahre"
-
-#: ../../include/datetime.php:330
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "Monat"
-msgstr[1] "Monate"
-
-#: ../../include/datetime.php:333
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "Woche"
-msgstr[1] "Wochen"
-
-#: ../../include/datetime.php:336
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "Tag"
-msgstr[1] "Tage"
-
-#: ../../include/datetime.php:339
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "Stunde"
-msgstr[1] "Stunden"
-
-#: ../../include/datetime.php:342
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "Minute"
-msgstr[1] "Minuten"
-
-#: ../../include/datetime.php:345
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "Sekunde"
-msgstr[1] "Sekunden"
-
-#: ../../include/datetime.php:579
-#, php-format
-msgid "%1$s's birthday"
-msgstr "%1$ss Geburtstag"
-
-#: ../../include/datetime.php:580
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Alles Gute zum Geburtstag, %1$s"
-
-#: ../../include/nav.php:98
-msgid "Remote authentication"
-msgstr "Ãœber Konto auf anderem Server einloggen"
-
-#: ../../include/nav.php:98
-msgid "Click to authenticate to your home hub"
-msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"
-
-#: ../../include/nav.php:105
-msgid "Network Activity"
-msgstr "Netzwerk-Aktivitäten"
-
-#: ../../include/nav.php:107
-msgid "Mark all activity notifications seen"
-msgstr "Alle Benachrichtigungen als gesehen markieren"
-
-#: ../../include/nav.php:109
-msgid "Channel home"
-msgstr "Mein Kanal"
-
-#: ../../include/nav.php:110
-msgid "View your channel home"
-msgstr "Zeige Deine Kanalseite an"
-
-#: ../../include/nav.php:111
-msgid "Mark all channel notifications seen"
-msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen"
-
-#: ../../include/nav.php:116
-msgid "Registrations"
-msgstr "Registrierungen"
-
-#: ../../include/nav.php:119
-msgid "Notifications"
-msgstr "Benachrichtigungen"
-
-#: ../../include/nav.php:120
-msgid "View all notifications"
-msgstr "Alle Benachrichtigungen ansehen"
-
-#: ../../include/nav.php:121
-msgid "Mark all system notifications seen"
-msgstr "Markiere alle System-Benachrichtigungen als gesehen"
-
-#: ../../include/nav.php:123
-msgid "Private mail"
-msgstr "Persönliche Mail"
-
-#: ../../include/nav.php:124
-msgid "View your private messages"
-msgstr "Zeige Deine persönlichen Nachrichten an"
-
-#: ../../include/nav.php:125
-msgid "Mark all private messages seen"
-msgstr "Markiere alle persönlichen Nachrichten als gesehen"
-
-#: ../../include/nav.php:131
-msgid "Event Calendar"
-msgstr "Terminkalender"
-
-#: ../../include/nav.php:136 ../../include/nav.php:222
-msgid "Manage Your Channels"
-msgstr "Verwalte Deine Kanäle"
-
-#: ../../include/nav.php:139 ../../include/nav.php:224
-msgid "Account/Channel Settings"
-msgstr "Konto-/Kanal-Einstellungen"
-
-#: ../../include/nav.php:145 ../../include/nav.php:174
-msgid "End this session"
-msgstr "Beende diese Sitzung"
-
-#: ../../include/nav.php:148
-msgid "Your profile page"
-msgstr "Deine Profilseite"
-
-#: ../../include/nav.php:151
-msgid "Manage/Edit profiles"
-msgstr "Profile verwalten"
-
-#: ../../include/nav.php:153
-msgid "Edit your profile"
-msgstr "Profil bearbeiten"
-
-#: ../../include/nav.php:160 ../../include/nav.php:164
-msgid "Sign in"
-msgstr "Anmelden"
-
-#: ../../include/nav.php:189
-msgid "Take me home"
-msgstr "Bringe mich nach Hause (eigener Kanal)"
-
-#: ../../include/nav.php:191
-msgid "Log me out of this site"
-msgstr "Logge mich von dieser Seite aus"
-
-#: ../../include/nav.php:196
-msgid "Create an account"
-msgstr "Erzeuge ein Konto"
-
-#: ../../include/nav.php:208
-msgid "Help and documentation"
-msgstr "Hilfe und Dokumentation"
-
-#: ../../include/nav.php:211
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"
-
-#: ../../include/nav.php:231
-msgid "Site Setup and Configuration"
-msgstr "Seiten-Einrichtung und -Konfiguration"
-
-#: ../../include/nav.php:322
-msgid "@name, #tag, ?doc, content"
-msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt"
-
-#: ../../include/nav.php:323
-msgid "Please wait..."
-msgstr "Bitte warten..."
-
-#: ../../include/nav.php:329
-msgid "Add Apps"
-msgstr "Apps hinzufügen"
-
-#: ../../include/nav.php:330
-msgid "Arrange Apps"
-msgstr "Apps anordnen"
-
-#: ../../include/nav.php:331
-msgid "Toggle System Apps"
-msgstr "System-Apps umschalten"
-
-#: ../../include/photos.php:150
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
-
-#: ../../include/photos.php:161
-msgid "Image file is empty."
-msgstr "Bilddatei ist leer."
-
-#: ../../include/photos.php:322
-msgid "Photo storage failed."
-msgstr "Fotospeicherung fehlgeschlagen."
-
-#: ../../include/photos.php:364
-msgid "a new photo"
-msgstr "ein neues Foto"
-
-#: ../../include/photos.php:368
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
-
-#: ../../include/photos.php:660
-msgid "Upload New Photos"
-msgstr "Neue Fotos hochladen"
-
-#: ../../include/zot.php:675
-msgid "Invalid data packet"
-msgstr "Ungültiges Datenpaket"
-
-#: ../../include/zot.php:702
-msgid "Unable to verify channel signature"
-msgstr "Konnte die Signatur des Kanals nicht verifizieren"
-
-#: ../../include/zot.php:2409
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
-
-#: ../../include/group.php:22
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen."
-
-#: ../../include/group.php:264
-msgid "Add new connections to this privacy group"
-msgstr "Neue Verbindung zu dieser Gruppe hinzufügen"
-
-#: ../../include/group.php:306
-msgid "edit"
-msgstr "Bearbeiten"
-
-#: ../../include/group.php:329
-msgid "Edit group"
-msgstr "Gruppe ändern"
-
-#: ../../include/group.php:330
-msgid "Add privacy group"
-msgstr "Gruppe hinzufügen"
-
-#: ../../include/group.php:331
-msgid "Channels not in any privacy group"
-msgstr "Kanäle, die in keiner Gruppe sind"
-
-#: ../../include/connections.php:128
-msgid "New window"
-msgstr "Neues Fenster"
-
-#: ../../include/connections.php:129
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"
-
-#: ../../include/auth.php:148
-msgid "Logged out."
-msgstr "Ausgeloggt."
-
-#: ../../include/auth.php:263
-msgid "Email validation is incomplete. Please check your email."
-msgstr "E-Mail-Bestätigung nicht abgeschlossen. Bitte prüfe Deine E-Mails (ggf. Spam-Filterung mit berücksichtigen)."
-
-#: ../../include/auth.php:278
-msgid "Failed authentication"
-msgstr "Authentifizierung fehlgeschlagen"
-
-#: ../../include/help.php:34
-msgid "Help:"
-msgstr "Hilfe:"
-
-#: ../../include/help.php:78
-msgid "Not Found"
-msgstr "Nicht gefunden"
diff --git a/view/de/hstrings.php b/view/de/hstrings.php
deleted file mode 100644
index c2b2ba6d9..000000000
--- a/view/de/hstrings.php
+++ /dev/null
@@ -1,3146 +0,0 @@
-<?php
-
-if(! function_exists("string_plural_select_de")) {
-function string_plural_select_de($n){
- return ($n != 1);;
-}}
-App::$rtl = 0;
-App::$strings["Can view my channel stream and posts"] = "Kann meinen Kanal-Stream und meine Beiträge sehen";
-App::$strings["Can send me their channel stream and posts"] = "Kann mir die Beiträge aus seinem/ihrem Kanal schicken";
-App::$strings["Can view my default channel profile"] = "Kann mein Standardprofil sehen";
-App::$strings["Can view my connections"] = "Kann meine Verbindungen sehen";
-App::$strings["Can view my file storage and photos"] = "Kann meine Datei- und Bilderordner sehen";
-App::$strings["Can upload/modify my file storage and photos"] = "Kann in meine Datei- und Bilderordner hochladen/ändern";
-App::$strings["Can view my channel webpages"] = "Kann die Webseiten meines Kanals sehen";
-App::$strings["Can view my wiki pages"] = "Kann meine Wiki-Seiten sehen";
-App::$strings["Can create/edit my channel webpages"] = "Kann Webseiten in meinem Kanal erstellen/ändern";
-App::$strings["Can write to my wiki pages"] = "Kann meine Wiki-Seiten bearbeiten";
-App::$strings["Can post on my channel (wall) page"] = "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen";
-App::$strings["Can comment on or like my posts"] = "Darf meine Beiträge kommentieren und mögen/nicht mögen";
-App::$strings["Can send me private mail messages"] = "Kann mir private Nachrichten schicken";
-App::$strings["Can like/dislike profiles and profile things"] = "Kann Profile und Profilsachen mögen/nicht mögen";
-App::$strings["Can forward to all my channel connections via @+ mentions in posts"] = "Kann an alle meine Verbindungen via @-Erwähnungen Nachrichten weiterleiten";
-App::$strings["Can chat with me"] = "Kann mit mir chatten";
-App::$strings["Can source my public posts in derived channels"] = "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden";
-App::$strings["Can administer my channel"] = "Kann meinen Kanal administrieren";
-App::$strings["Social Networking"] = "Soziales Netzwerk";
-App::$strings["Social - Mostly Public"] = "Soziales Netzwerk - Weitgehend öffentlich";
-App::$strings["Social - Restricted"] = "Soziales Netzwerk - Beschränkt";
-App::$strings["Social - Private"] = "Soziales Netzwerk - Privat";
-App::$strings["Community Forum"] = "Forum";
-App::$strings["Forum - Mostly Public"] = "Forum - Weitgehend öffentlich";
-App::$strings["Forum - Restricted"] = "Forum - Beschränkt";
-App::$strings["Forum - Private"] = "Forum - Privat";
-App::$strings["Feed Republish"] = "Teilen von Feeds";
-App::$strings["Feed - Mostly Public"] = "Feeds - Weitgehend öffentlich";
-App::$strings["Feed - Restricted"] = "Feeds - Beschränkt";
-App::$strings["Special Purpose"] = "Für besondere Zwecke";
-App::$strings["Special - Celebrity/Soapbox"] = "Speziell - Mitteilungs-Kanal (keine Kommentare)";
-App::$strings["Special - Group Repository"] = "Speziell - Gruppenarchiv";
-App::$strings["Other"] = "Andere";
-App::$strings["Custom/Expert Mode"] = "Benutzerdefiniert/Expertenmodus";
-App::$strings["Requested profile is not available."] = "Das angefragte Profil ist nicht verfügbar.";
-App::$strings["Permission denied."] = "Berechtigung verweigert.";
-App::$strings["Block Name"] = "Block-Name";
-App::$strings["Blocks"] = "Blöcke";
-App::$strings["Block Title"] = "Titel des Blocks";
-App::$strings["Created"] = "Erstellt";
-App::$strings["Edited"] = "Geändert";
-App::$strings["Create"] = "Erstelle";
-App::$strings["Edit"] = "Bearbeiten";
-App::$strings["Share"] = "Teilen";
-App::$strings["Delete"] = "Löschen";
-App::$strings["View"] = "Ansicht";
-App::$strings["Total invitation limit exceeded."] = "Einladungslimit überschritten.";
-App::$strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse.";
-App::$strings["Please join us on \$Projectname"] = "Schließe Dich uns auf \$Projectname an!";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines \$Projectname-Servers.";
-App::$strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden.";
-App::$strings["%d message sent."] = array(
- 0 => "%d Nachricht gesendet.",
- 1 => "%d Nachrichten gesendet.",
-);
-App::$strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen";
-App::$strings["Send invitations"] = "Einladungen senden";
-App::$strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:";
-App::$strings["Your message:"] = "Deine Nachricht:";
-App::$strings["Please join my community on \$Projectname."] = "Schließe Dich uns auf \$Projectname an!";
-App::$strings["You will need to supply this invitation code:"] = "Bitte verwende bei der Registrierung den folgenden Einladungscode:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registriere Dich auf einem beliebigen \$Projectname-Hub (sie sind alle miteinander verbunden)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Gib meine \$Projectname-Adresse im Suchfeld ein.";
-App::$strings["or visit"] = "oder besuche";
-App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]";
-App::$strings["Submit"] = "Absenden";
-App::$strings["Cards"] = "Karten";
-App::$strings["Add Article"] = "Artikel hinzufügen";
-App::$strings["Articles"] = "Artikel";
-App::$strings["Item not found"] = "Element nicht gefunden";
-App::$strings["Layout Name"] = "Layout-Name";
-App::$strings["Layout Description (Optional)"] = "Layout-Beschreibung (optional)";
-App::$strings["Edit Layout"] = "Layout bearbeiten";
-App::$strings["Permission denied"] = "Keine Berechtigung";
-App::$strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator";
-App::$strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor";
-App::$strings["Profile"] = "Profil";
-App::$strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen.";
-App::$strings["Visible To"] = "Sichtbar für";
-App::$strings["All Connections"] = "Alle Verbindungen";
-App::$strings["INVALID EVENT DISMISSED!"] = "UNGÃœLTIGEN TERMIN ABGELEHNT!";
-App::$strings["Summary: "] = "Zusammenfassung:";
-App::$strings["Unknown"] = "Unbekannt";
-App::$strings["Date: "] = "Datum:";
-App::$strings["Reason: "] = "Grund:";
-App::$strings["INVALID CARD DISMISSED!"] = "UNGÃœLTIGE KARTE ABGELEHNT!";
-App::$strings["Name: "] = "Name: ";
-App::$strings["Event title"] = "Termintitel";
-App::$strings["Start date and time"] = "Startdatum und -zeit";
-App::$strings["Example: YYYY-MM-DD HH:mm"] = "Beispiel: JJJJ-MM-TT HH:mm";
-App::$strings["End date and time"] = "Enddatum und -zeit";
-App::$strings["Description"] = "Beschreibung";
-App::$strings["Location"] = "Ort";
-App::$strings["Previous"] = "Voriges";
-App::$strings["Next"] = "Nächste";
-App::$strings["Today"] = "Heute";
-App::$strings["Month"] = "Monat";
-App::$strings["Week"] = "Woche";
-App::$strings["Day"] = "Tag";
-App::$strings["List month"] = "Liste Monat";
-App::$strings["List week"] = "Liste Woche";
-App::$strings["List day"] = "Liste Tag";
-App::$strings["More"] = "Mehr";
-App::$strings["Less"] = "Weniger";
-App::$strings["Select calendar"] = "Kalender auswählen";
-App::$strings["Delete all"] = "Alles löschen";
-App::$strings["Cancel"] = "Abbrechen";
-App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen ist leider noch nicht implementiert.";
-App::$strings["Name"] = "Name";
-App::$strings["Organisation"] = "Organisation";
-App::$strings["Title"] = "Titel";
-App::$strings["Phone"] = "Telefon";
-App::$strings["Email"] = "E-Mail";
-App::$strings["Instant messenger"] = "Sofortnachrichtendienst";
-App::$strings["Website"] = "Webseite";
-App::$strings["Address"] = "Adresse";
-App::$strings["Note"] = "Hinweis";
-App::$strings["Mobile"] = "Mobil";
-App::$strings["Home"] = "Home";
-App::$strings["Work"] = "Arbeit";
-App::$strings["Add Contact"] = "Kontakt hinzufügen";
-App::$strings["Add Field"] = "Feld hinzufügen";
-App::$strings["Update"] = "Aktualisieren";
-App::$strings["P.O. Box"] = "Postfach";
-App::$strings["Additional"] = "Zusätzlich";
-App::$strings["Street"] = "Straße";
-App::$strings["Locality"] = "Ortschaft";
-App::$strings["Region"] = "Region";
-App::$strings["ZIP Code"] = "Postleitzahl";
-App::$strings["Country"] = "Land";
-App::$strings["Default Calendar"] = "Standardkalender";
-App::$strings["Default Addressbook"] = "Standardadressbuch";
-App::$strings["This site is not a directory server"] = "Diese Webseite ist kein Verzeichnisserver";
-App::$strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können.";
-App::$strings["Posts and comments"] = "Beiträge und Kommentare";
-App::$strings["Only posts"] = "Nur Beiträge";
-App::$strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet.";
-App::$strings["Export Channel"] = "Kanal exportieren";
-App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportiert die grundlegenden Kanal-Informationen in eine kleine Datei. Diese stellt eine Sicherung Deiner Verbindungen, Berechtigungen, Profile und Basisdaten bereit, die für den Import auf einem anderen Hub verwendet werden kann, aber nicht die Beiträge Deines Kanals enthält.";
-App::$strings["Export Content"] = "Kanal und Inhalte exportieren";
-App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportiert Deine Kanal-Informationen sowie alle zugehörigen Inhalte in eine JSON-Sicherungsdatei. Die sichert alle Verbindungen, Berechtigungen, Profildaten und Deine Beiträge aus mehreren Monaten. Diese Datei kann SEHR groß werden! Bitte habe ein wenig Geduld – es kann mehrere Minuten dauern, bis der Download startet.";
-App::$strings["Export your posts from a given year."] = "Exportiert die Beiträge des angegebenen Jahres.";
-App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "Du kannst auch die Beiträge und Konversationen eines bestimmten Jahres oder Monats exportieren. Ändere das Datum in der Adresszeile Deines Browsers, um andere Zeiträume zu wählen. Falls der Export fehlschlägt (vermutlich, weil auf diesem Hub nicht genügend Speicher zur Verfügung steht), versuche es noch einmal mit einer kleineren Zeitspanne.";
-App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Jahres, zum Beispiel dieses Jahres, auszuwählen, klicke <a href=\"%1\$s\">%2\$s</a>.";
-App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Monats auszuwählen, zum Beispiel vom Januar diesen Jahres, klicke <a href=\"%1\$s\">%2\$s</a>.";
-App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1\$s\">%2\$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst.";
-App::$strings["Welcome to hubzilla!"] = "Willkommen bei Hubzilla!";
-App::$strings["Public access denied."] = "Öffentlichen Zugriff verweigert.";
-App::$strings["Search"] = "Suche";
-App::$strings["Items tagged with: %s"] = "Beiträge mit Schlagwort: %s";
-App::$strings["Search results for: %s"] = "Suchergebnisse für: %s";
-App::$strings["Public Stream"] = "Öffentlicher Beitrags-Stream";
-App::$strings["Location not found."] = "Klon nicht gefunden.";
-App::$strings["Location lookup failed."] = "Nachschlagen des Kanal-Ortes fehlgeschlagen";
-App::$strings["Please select another location to become primary before removing the primary location."] = "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst.";
-App::$strings["Syncing locations"] = "Synchronisiere Klone";
-App::$strings["No locations found."] = "Keine Klon-Adressen gefunden.";
-App::$strings["Manage Channel Locations"] = "Klon-Adressen verwalten";
-App::$strings["Primary"] = "Primär";
-App::$strings["Drop"] = "Löschen";
-App::$strings["Sync Now"] = "Jetzt synchronisieren";
-App::$strings["Please wait several minutes between consecutive operations."] = "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!";
-App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst.";
-App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt.";
-App::$strings["Change Order of Pinned Navbar Apps"] = "Reihenfolge der in der Navigation angepinnten Apps ändern";
-App::$strings["Change Order of App Tray Apps"] = "Reihenfolge der Apps im App-Menü ändern";
-App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Benutze die Pfeil-Knöpfe, um die jeweilige App in der Navigationsleiste nach links (oben) oder rechts (unten) zu bewegen";
-App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Benutze die Pfeil-Knöpfe, um die jeweilige App im App-Menü nach oben oder unten zu bewegen";
-App::$strings["Menu not found."] = "Menü nicht gefunden";
-App::$strings["Unable to create element."] = "Element konnte nicht erstellt werden.";
-App::$strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren.";
-App::$strings["Unable to add menu element."] = "Kann Menü-Bestandteil nicht hinzufügen.";
-App::$strings["Not found."] = "Nicht gefunden.";
-App::$strings["Menu Item Permissions"] = "Zugriffsrechte des Menü-Elements";
-App::$strings["(click to open/close)"] = "(zum öffnen/schließen anklicken)";
-App::$strings["Link Name"] = "Name des Links";
-App::$strings["Link or Submenu Target"] = "Ziel des Links oder Untermenüs";
-App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "URL des Links eingeben oder Menünamen wählen, um ein Untermenü anzulegen.";
-App::$strings["Use magic-auth if available"] = "Magic-Auth verwenden, falls verfügbar";
-App::$strings["No"] = "Nein";
-App::$strings["Yes"] = "Ja";
-App::$strings["Open link in new window"] = "Öffne Link in neuem Fenster";
-App::$strings["Order in list"] = "Reihenfolge in der Liste";
-App::$strings["Higher numbers will sink to bottom of listing"] = "Größere Nummern werden weiter unten in der Auflistung einsortiert";
-App::$strings["Submit and finish"] = "Absenden und fertigstellen";
-App::$strings["Submit and continue"] = "Absenden und fortfahren";
-App::$strings["Menu:"] = "Menü:";
-App::$strings["Link Target"] = "Ziel des Links";
-App::$strings["Edit menu"] = "Menü bearbeiten";
-App::$strings["Edit element"] = "Bestandteil bearbeiten";
-App::$strings["Drop element"] = "Bestandteil löschen";
-App::$strings["New element"] = "Neues Bestandteil";
-App::$strings["Edit this menu container"] = "Diesen Menü-Container bearbeiten";
-App::$strings["Add menu element"] = "Menüelement hinzufügen";
-App::$strings["Delete this menu item"] = "Lösche dieses Menü-Bestandteil";
-App::$strings["Edit this menu item"] = "Bearbeite dieses Menü-Bestandteil";
-App::$strings["Menu item not found."] = "Menü-Bestandteil nicht gefunden.";
-App::$strings["Menu item deleted."] = "Menü-Bestandteil gelöscht.";
-App::$strings["Menu item could not be deleted."] = "Menü-Bestandteil kann nicht gelöscht werden.";
-App::$strings["Edit Menu Element"] = "Bearbeite Menü-Bestandteil";
-App::$strings["Link text"] = "Link Text";
-App::$strings["Calendar entries imported."] = "Kalendereinträge wurden importiert.";
-App::$strings["No calendar entries found."] = "Keine Kalendereinträge gefunden.";
-App::$strings["Event can not end before it has started."] = "Termin-Ende liegt vor dem Beginn.";
-App::$strings["Unable to generate preview."] = "Vorschau konnte nicht erzeugt werden.";
-App::$strings["Event title and start time are required."] = "Titel und Startzeit des Termins sind erforderlich.";
-App::$strings["Event not found."] = "Termin nicht gefunden.";
-App::$strings["event"] = "Termin";
-App::$strings["Edit event title"] = "Termintitel bearbeiten";
-App::$strings["Required"] = "Benötigt";
-App::$strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)";
-App::$strings["Edit Category"] = "Kategorie bearbeiten";
-App::$strings["Category"] = "Kategorie";
-App::$strings["Edit start date and time"] = "Startdatum und -zeit bearbeiten";
-App::$strings["Finish date and time are not known or not relevant"] = "Enddatum und -zeit sind unbekannt oder irrelevant";
-App::$strings["Edit finish date and time"] = "Enddatum und -zeit bearbeiten";
-App::$strings["Finish date and time"] = "Enddatum und -zeit";
-App::$strings["Adjust for viewer timezone"] = "An die Zeitzone des Betrachters anpassen";
-App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien.";
-App::$strings["Edit Description"] = "Beschreibung bearbeiten";
-App::$strings["Edit Location"] = "Ort bearbeiten";
-App::$strings["Preview"] = "Vorschau";
-App::$strings["Permission settings"] = "Berechtigungs-Einstellungen";
-App::$strings["Timezone:"] = "Zeitzone:";
-App::$strings["Advanced Options"] = "Weitere Optionen";
-App::$strings["l, F j"] = "l, j. F";
-App::$strings["Edit event"] = "Termin bearbeiten";
-App::$strings["Delete event"] = "Termin löschen";
-App::$strings["Link to Source"] = "Link zur Quelle";
-App::$strings["calendar"] = "Kalender";
-App::$strings["Edit Event"] = "Termin bearbeiten";
-App::$strings["Create Event"] = "Termin anlegen";
-App::$strings["Export"] = "Exportieren";
-App::$strings["Event removed"] = "Termin gelöscht";
-App::$strings["Failed to remove event"] = "Termin konnte nicht gelöscht werden";
-App::$strings["App installed."] = "App installiert.";
-App::$strings["Malformed app."] = "Fehlerhafte App.";
-App::$strings["Embed code"] = "Code einbetten";
-App::$strings["Edit App"] = "App bearbeiten";
-App::$strings["Create App"] = "App erstellen";
-App::$strings["Name of app"] = "Name der App";
-App::$strings["Location (URL) of app"] = "Ort (URL) der App";
-App::$strings["Photo icon URL"] = "URL zum Icon";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 Pixel – optional";
-App::$strings["Categories (optional, comma separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
-App::$strings["Version ID"] = "Versions-ID";
-App::$strings["Price of app"] = "Preis der App";
-App::$strings["Location (URL) to purchase app"] = "Ort (URL), um die App zu kaufen";
-App::$strings["Please login."] = "Bitte melde dich an.";
-App::$strings["Hub not found."] = "Server nicht gefunden.";
-App::$strings["photo"] = "Foto";
-App::$strings["status"] = "Status";
-App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt nun %2\$ss %3\$s";
-App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s folgt %2\$ss %3\$s nicht mehr";
-App::$strings["Channel not found."] = "Kanal nicht gefunden.";
-App::$strings["Insert web link"] = "Link einfügen";
-App::$strings["Title (optional)"] = "Titel (optional)";
-App::$strings["Edit Article"] = "Artikel bearbeiten";
-App::$strings["Nothing to import."] = "Nichts zu importieren.";
-App::$strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
-App::$strings["Imported file is empty."] = "Die importierte Datei ist leer.";
-App::$strings["Warning: Database versions differ by %1\$d updates."] = "Achtung: Datenbankversionen unterscheiden sich um %1\$d Aktualisierungen.";
-App::$strings["Import completed"] = "Import abgeschlossen";
-App::$strings["Import Items"] = "Beiträge importieren";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren.";
-App::$strings["File to Upload"] = "Hochzuladende Datei:";
-App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet.";
-App::$strings["Name or caption"] = "Name oder Titel";
-App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ ";
-App::$strings["Choose a short nickname"] = "Wähle einen kurzen Spitznamen";
-App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst, z.B. nickname%s";
-App::$strings["Channel role and privacy"] = "Kanaltyp und Privatspäre-Einstellungen";
-App::$strings["Select a channel role with your privacy requirements."] = "Wähle einen passenden Kanaltyp mit den zugehörigen Voreinstellungen zur Privatsphäre.";
-App::$strings["Read more about roles"] = "Mehr Informationen über Rollen";
-App::$strings["Create Channel"] = "Einen neuen Kanal anlegen";
-App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Ein Kanal ist Deine Identität in diesem Netzwerk. Er kann eine Person, ein Blog oder ein Forum repräsentieren, nur um ein paar Beispiele zu nennen. Kanäle können Verbindungen miteinander eingehen, um Informationen zu teilen, jeweils basierend auf sehr detaillierten Berechtigungseinstellungen.";
-App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server.";
-App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden.";
-App::$strings["Remove This Channel"] = "Diesen Kanal löschen";
-App::$strings["WARNING: "] = "WARNUNG: ";
-App::$strings["This channel will be completely removed from the network. "] = "Dieser Kanal wird vollständig aus dem Netzwerk gelöscht.";
-App::$strings["This action is permanent and can not be undone!"] = "Dieser Schritt ist endgültig und kann nicht rückgängig gemacht werden!";
-App::$strings["Please enter your password for verification:"] = "Bitte gib zur Bestätigung Dein Passwort ein:";
-App::$strings["Remove this channel and all its clones from the network"] = "Lösche diesen Kanal und all seine Klone aus dem Netzwerk";
-App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk";
-App::$strings["Remove Channel"] = "Kanal löschen";
-App::$strings["Files: shared with me"] = "Dateien, die mit mir geteilt wurden";
-App::$strings["NEW"] = "NEU";
-App::$strings["Size"] = "Größe";
-App::$strings["Last Modified"] = "Zuletzt geändert";
-App::$strings["Remove all files"] = "Alle Dateien löschen";
-App::$strings["Remove this file"] = "Diese Datei löschen";
-App::$strings["\$Projectname Server - Setup"] = "\$Projectname Server-Einrichtung";
-App::$strings["Could not connect to database."] = "Kann nicht mit der Datenbank verbinden.";
-App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS.";
-App::$strings["Could not create table."] = "Konnte Tabelle nicht erstellen.";
-App::$strings["Your site database has been installed."] = "Die Datenbank Deines Hubs wurde installiert.";
-App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren.";
-App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Lies die Datei \"install/INSTALL.txt\".";
-App::$strings["System check"] = "Systemprüfung";
-App::$strings["Check again"] = "Nochmal prüfen";
-App::$strings["Database connection"] = "Datenbankverbindung";
-App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Um \$Projectname zu installieren, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst.";
-App::$strings["Database Server Name"] = "Datenbankservername";
-App::$strings["Default is 127.0.0.1"] = "Standard ist 127.0.0.1";
-App::$strings["Database Port"] = "Datenbankport";
-App::$strings["Communication port number - use 0 for default"] = "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung";
-App::$strings["Database Login Name"] = "Datenbank-Benutzername";
-App::$strings["Database Login Password"] = "Datenbank-Passwort";
-App::$strings["Database Name"] = "Datenbankname";
-App::$strings["Database Type"] = "Datenbanktyp";
-App::$strings["Site administrator email address"] = "E-Mail Adresse des Seiten-Administrators";
-App::$strings["Your account email address must match this in order to use the web admin panel."] = "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst.";
-App::$strings["Website URL"] = "Webseiten-URL";
-App::$strings["Please use SSL (https) URL if available."] = "Nutze wenn möglich eine SSL-URL (https).";
-App::$strings["Please select a default timezone for your website"] = "Standard-Zeitzone für Deinen Server";
-App::$strings["Site settings"] = "Seiteneinstellungen";
-App::$strings["PHP version 5.5 or greater is required."] = "PHP-Version 5.5 oder höher ist erforderlich.";
-App::$strings["PHP version"] = "PHP-Version";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden.";
-App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen.";
-App::$strings["PHP executable path"] = "PHP-Pfad zu ausführbarer Datei";
-App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren.";
-App::$strings["Command line PHP"] = "PHP-Befehlszeile";
-App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "Prüfung auf Kommandozeilen-PHP fehlgeschlagen, da shell_exec() deaktiviert ist. Dies wird aber benötigt.";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert.";
-App::$strings["This is required for message delivery to work."] = "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert.";
-App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden.";
-App::$strings["You can adjust these settings in the server php.ini file."] = "Du kannst diese Einstellungen in der php.ini - Datei des Servers anpassen.";
-App::$strings["PHP upload limits"] = "PHP-Hochladebeschränkungen";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen.";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung.";
-App::$strings["Generate encryption keys"] = "Verschlüsselungsschlüssel erzeugen";
-App::$strings["libCurl PHP module"] = "libCurl-PHP-Modul";
-App::$strings["GD graphics PHP module"] = "GD-Grafik-PHP-Modul";
-App::$strings["OpenSSL PHP module"] = "OpenSSL-PHP-Modul";
-App::$strings["PDO database PHP module"] = "PDO-Datenbank-PHP-Modul";
-App::$strings["mb_string PHP module"] = "mb_string-PHP-Modul";
-App::$strings["xml PHP module"] = "xml-PHP-Modul";
-App::$strings["zip PHP module"] = "zip PHP Modul";
-App::$strings["Apache mod_rewrite module"] = "Apache-mod_rewrite-Modul";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert.";
-App::$strings["exec"] = "exec";
-App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Fehler: exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert";
-App::$strings["shell_exec"] = "shell_exec";
-App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Fehler: shell_exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert.";
-App::$strings["Error: PDO database PHP module required but not installed."] = "Fehler: PDO-Datenbank-PHP-Modul ist erforderlich, aber nicht installiert.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert.";
-App::$strings["Error: xml PHP module required for DAV but not installed."] = "Fehler: Das xml-PHP-Modul wird für DAV benötigt, ist aber nicht installiert.";
-App::$strings["Error: zip PHP module required but not installed."] = "Fehler: Das zip PHP Modul ist erforderlich, ist aber nicht installiert.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst.";
-App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst.";
-App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt.";
-App::$strings[".htconfig.php is writable"] = ".htconfig.php ist beschreibbar";
-App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Diese Software verwendet die Smarty3 Template Engine, um Vorlagen für die Webdarstellung zu verarbeiten. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses.";
-App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat.";
-App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält.";
-App::$strings["%s is writable"] = "%s ist beschreibbar";
-App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Web-Stammverzeichnisses.";
-App::$strings["store is writable"] = "store ist schreibbar";
-App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server.";
-App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich.";
-App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können.";
-App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer \$Projectname-Hubs (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird).";
-App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen.";
-App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind.";
-App::$strings["If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications."] = "Wenn Du sicher bist, dass das Zertifikat gültig und von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, prüfe auf ggf. noch zu installierende Zwischenzertifikate (intermediate). Diese werden nicht unbedingt von Browsern benötigt, aber sehr wohl für die Kommunikation zwischen Servern.";
-App::$strings["SSL certificate validation"] = "SSL Zertifikatverifizierung";
-App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:";
-App::$strings["Url rewrite is working"] = "Url rewrite funktioniert";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen.";
-App::$strings["Errors encountered creating database tables."] = "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten.";
-App::$strings["<h1>What next?</h1>"] = "<h1>Wie geht es jetzt weiter?</h1>";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten.";
-App::$strings["Continue"] = "Fortfahren";
-App::$strings["Premium Channel Setup"] = "Premium-Kanal-Einrichtung";
-App::$strings["Enable premium channel connection restrictions"] = "Einschränkungen für einen Premium-Kanal aktivieren";
-App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc.";
-App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig.";
-App::$strings["Potential connections will then see the following text before proceeding:"] = "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:";
-App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite.";
-App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)";
-App::$strings["Restricted or Premium Channel"] = "Eingeschränkter oder Premium-Kanal";
-App::$strings["Queue Statistics"] = "Warteschlangenstatistiken";
-App::$strings["Total Entries"] = "Einträge insgesamt";
-App::$strings["Priority"] = "Priorität";
-App::$strings["Destination URL"] = "Ziel-URL";
-App::$strings["Mark hub permanently offline"] = "Hub als permanent offline markieren";
-App::$strings["Empty queue for this hub"] = "Warteschlange für diesen Hub leeren";
-App::$strings["Last known contact"] = "Letzter Kontakt";
-App::$strings["Off"] = "Aus";
-App::$strings["On"] = "An";
-App::$strings["Lock feature %s"] = "Blockiere die Funktion %s";
-App::$strings["Manage Additional Features"] = "Zusätzliche Funktionen verwalten";
-App::$strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert";
-App::$strings["Executing %s failed. Check system logs."] = "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle.";
-App::$strings["Update %s was successfully applied."] = "Update %s wurde erfolgreich ausgeführt.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt.";
-App::$strings["Update function %s could not be found."] = "Update-Funktion %s konnte nicht gefunden werden.";
-App::$strings["No failed updates."] = "Keine fehlgeschlagenen Aktualisierungen.";
-App::$strings["Failed Updates"] = "Fehlgeschlagene Aktualisierungen";
-App::$strings["Mark success (if update was manually applied)"] = "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)";
-App::$strings["Attempt to execute this update step automatically"] = "Versuche, diesen Updateschritt automatisch auszuführen";
-App::$strings["Item not found."] = "Element nicht gefunden.";
-App::$strings["Plugin %s disabled."] = "Plug-In %s deaktiviert.";
-App::$strings["Plugin %s enabled."] = "Plug-In %s aktiviert.";
-App::$strings["Disable"] = "Deaktivieren";
-App::$strings["Enable"] = "Aktivieren";
-App::$strings["Administration"] = "Administration";
-App::$strings["Plugins"] = "Plug-Ins";
-App::$strings["Toggle"] = "Umschalten";
-App::$strings["Settings"] = "Einstellungen";
-App::$strings["Author: "] = "Autor: ";
-App::$strings["Maintainer: "] = "Betreuer:";
-App::$strings["Minimum project version: "] = "Minimale Version des Projekts:";
-App::$strings["Maximum project version: "] = "Maximale Version des Projekts:";
-App::$strings["Minimum PHP version: "] = "Minimale PHP Version:";
-App::$strings["Compatible Server Roles: "] = "Kompatible Serverrollen: ";
-App::$strings["Requires: "] = "Benötigt:";
-App::$strings["Disabled - version incompatibility"] = "Abgeschaltet - Versionsinkompatibilität";
-App::$strings["Enter the public git repository URL of the plugin repo."] = "Gib die öffentliche Git-Repository-URL des Plugin-Repository an.";
-App::$strings["Plugin repo git URL"] = "Plugin-Repository Git URL";
-App::$strings["Custom repo name"] = "Benutzerdefinierter Repository-Name";
-App::$strings["(optional)"] = "(optional)";
-App::$strings["Download Plugin Repo"] = "Plugin-Repository herunterladen";
-App::$strings["Install new repo"] = "Neues Repository installieren";
-App::$strings["Install"] = "Installieren";
-App::$strings["Manage Repos"] = "Repositorien verwalten";
-App::$strings["Installed Plugin Repositories"] = "Installierte Plugin-Repositorien";
-App::$strings["Install a New Plugin Repository"] = "Ein neues Plugin-Repository installieren";
-App::$strings["Switch branch"] = "Zweig/Branch wechseln";
-App::$strings["Remove"] = "Entfernen";
-App::$strings["%s account blocked/unblocked"] = array(
- 0 => "%s Konto blockiert/freigegeben",
- 1 => "%s Konten blockiert/freigegeben",
-);
-App::$strings["%s account deleted"] = array(
- 0 => "%s Konto gelöscht",
- 1 => "%s Konten gelöscht",
-);
-App::$strings["Account not found"] = "Konto nicht gefunden";
-App::$strings["Account '%s' deleted"] = "Konto '%s' gelöscht";
-App::$strings["Account '%s' blocked"] = "Konto '%s' blockiert";
-App::$strings["Account '%s' unblocked"] = "Konto '%s' freigegeben";
-App::$strings["Accounts"] = "Konten";
-App::$strings["select all"] = "Alle auswählen";
-App::$strings["Registrations waiting for confirm"] = "Registrierungen warten auf Bestätigung";
-App::$strings["Request date"] = "Antragsdatum";
-App::$strings["No registrations."] = "Keine Registrierungen.";
-App::$strings["Approve"] = "Genehmigen";
-App::$strings["Deny"] = "Verweigern";
-App::$strings["Block"] = "Blockieren";
-App::$strings["Unblock"] = "Freigeben";
-App::$strings["ID"] = "ID";
-App::$strings["All Channels"] = "Alle Kanäle";
-App::$strings["Register date"] = "Registrierungs-Datum";
-App::$strings["Last login"] = "Letzte Anmeldung";
-App::$strings["Expires"] = "Verfällt";
-App::$strings["Service Class"] = "Service-Klasse";
-App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?";
-App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?";
-App::$strings["Log settings updated."] = "Protokoll-Einstellungen aktualisiert.";
-App::$strings["Logs"] = "Protokolle";
-App::$strings["Clear"] = "Leeren";
-App::$strings["Debugging"] = "Debugging";
-App::$strings["Log file"] = "Protokolldatei";
-App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis.";
-App::$strings["Log level"] = "Protokollstufe";
-App::$strings["%s channel censored/uncensored"] = array(
- 0 => "%s Kanal gesperrt/freigegeben",
- 1 => "%s Kanäle gesperrt/freigegeben",
-);
-App::$strings["%s channel code allowed/disallowed"] = array(
- 0 => "Code für %s Kanal gesperrt/freigegeben",
- 1 => "Code für %s Kanäle gesperrt/freigegeben",
-);
-App::$strings["%s channel deleted"] = array(
- 0 => "%s Kanal gelöscht",
- 1 => "%s Kanäle gelöscht",
-);
-App::$strings["Channel not found"] = "Kanal nicht gefunden";
-App::$strings["Channel '%s' deleted"] = "Kanal '%s' gelöscht";
-App::$strings["Channel '%s' censored"] = "Kanal '%s' gesperrt";
-App::$strings["Channel '%s' uncensored"] = "Kanal '%s' freigegeben";
-App::$strings["Channel '%s' code allowed"] = "Code für Kanal '%s' freigegeben";
-App::$strings["Channel '%s' code disallowed"] = "Code für Kanal '%s' gesperrt";
-App::$strings["Channels"] = "Kanäle";
-App::$strings["Censor"] = "Sperren";
-App::$strings["Uncensor"] = "Freigeben";
-App::$strings["Allow Code"] = "Code erlauben";
-App::$strings["Disallow Code"] = "Code sperren";
-App::$strings["Channel"] = "Kanal";
-App::$strings["UID"] = "UID";
-App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?";
-App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?";
-App::$strings["Theme settings updated."] = "Design-Einstellungen aktualisiert.";
-App::$strings["No themes found."] = "Keine Designs gefunden.";
-App::$strings["Screenshot"] = "Bildschirmfoto";
-App::$strings["Themes"] = "Designs";
-App::$strings["[Experimental]"] = "[Experimentell]";
-App::$strings["[Unsupported]"] = "[Nicht unterstützt]";
-App::$strings["Site settings updated."] = "Site-Einstellungen aktualisiert.";
-App::$strings["Default"] = "Standard";
-App::$strings["%s - (Incompatible)"] = "%s - (Inkompatibel)";
-App::$strings["mobile"] = "mobil";
-App::$strings["experimental"] = "experimentell";
-App::$strings["unsupported"] = "nicht unterstützt";
-App::$strings["Yes - with approval"] = "Ja - mit Zustimmung";
-App::$strings["My site is not a public server"] = "Mein Server ist kein öffentlicher Server";
-App::$strings["My site has paid access only"] = "Meine Seite hat nur bezahlten Zugriff";
-App::$strings["My site has free access only"] = "Meine Seite hat nur freien Zugriff";
-App::$strings["My site offers free accounts with optional paid upgrades"] = "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades";
-App::$strings["Beginner/Basic"] = "Anfänger/Basis";
-App::$strings["Novice - not skilled but willing to learn"] = "Anfänger - unerfahren, aber bereit zu lernen";
-App::$strings["Intermediate - somewhat comfortable"] = "Fortgeschritten - relativ komfortabel";
-App::$strings["Advanced - very comfortable"] = "Fortgeschritten - sehr komfortabel";
-App::$strings["Expert - I can write computer code"] = "Experte - Ich kann Computercode schreiben";
-App::$strings["Wizard - I probably know more than you do"] = "Zauberer - ich kann wahrscheinlich mehr als Du";
-App::$strings["Site"] = "Seite";
-App::$strings["Registration"] = "Registrierung";
-App::$strings["File upload"] = "Dateiupload";
-App::$strings["Policies"] = "Richtlinien";
-App::$strings["Advanced"] = "Fortgeschritten";
-App::$strings["Site name"] = "Seitenname";
-App::$strings["Site default technical skill level"] = "Standard-Qualifikationsstufe der Website";
-App::$strings["Used to provide a member experience matched to technical comfort level"] = "Dies wird verwendet, um eine Benutzererfahrung passend zur technischen Qualifikationsstufe zu bieten.";
-App::$strings["Lock the technical skill level setting"] = "Sperre die technische Qualifikationsstufe";
-App::$strings["Members can set their own technical comfort level by default"] = "Benutzer können standardmäßig ihre eigene technische Qualifikationsstufe einstellen";
-App::$strings["Banner/Logo"] = "Banner/Logo";
-App::$strings["Administrator Information"] = "Administrator-Informationen";
-App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden.";
-App::$strings["Site Information"] = "Seiteninformationen";
-App::$strings["Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here"] = "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden.";
-App::$strings["System language"] = "System-Sprache";
-App::$strings["System theme"] = "System-Design";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard-System-Design – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Design-Einstellungen ändern</a>";
-App::$strings["Mobile system theme"] = "System-Design für mobile Geräte:";
-App::$strings["Theme for mobile devices"] = "Theme für mobile Geräte";
-App::$strings["Allow Feeds as Connections"] = "Feeds als Verbindungen erlauben";
-App::$strings["(Heavy system resource usage)"] = "(führt zu hoher Systemlast)";
-App::$strings["Maximum image size"] = "Maximale Bildgröße";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung).";
-App::$strings["Does this site allow new member registration?"] = "Erlaubt dieser Server die Registrierung neuer Nutzer?";
-App::$strings["Invitation only"] = "Nur mit Einladung";
-App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden.";
-App::$strings["Which best describes the types of account offered by this hub?"] = "Was ist die passendste Beschreibung der Konten auf diesem Hub?";
-App::$strings["Register text"] = "Registrierungstext";
-App::$strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt.";
-App::$strings["Site homepage to show visitors (default: login box)"] = "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)";
-App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen.";
-App::$strings["Preserve site homepage URL"] = "Homepage-URL schützen";
-App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten.";
-App::$strings["Accounts abandoned after x days"] = "Konten gelten nach X Tagen als unbenutzt";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit.";
-App::$strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
-App::$strings["Verify Email Addresses"] = "E-Mail-Adressen überprüfen";
-App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen).";
-App::$strings["Force publish"] = "Veröffentlichung erzwingen";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen.";
-App::$strings["Import Public Streams"] = "Öffentliche Beiträge importieren";
-App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert.";
-App::$strings["Login on Homepage"] = "Log-in auf der Startseite";
-App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden.";
-App::$strings["Enable context help"] = "Kontext-Hilfe aktivieren";
-App::$strings["Display contextual help for the current page when the help button is pressed."] = "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird.";
-App::$strings["Reply-to email address for system generated email."] = "Antwortadresse (reply-to) für Emails, die vom System generiert wurden.";
-App::$strings["Sender (From) email address for system generated email."] = "Absenderadresse (from) für Emails, die vom System generiert wurden.";
-App::$strings["Name of email sender for system generated email."] = "Name des Versenders von Emails, die vom System generiert wurden.";
-App::$strings["Directory Server URL"] = "Verzeichnisserver-URL";
-App::$strings["Default directory server"] = "Standard-Verzeichnisserver";
-App::$strings["Proxy user"] = "Proxy Benutzer";
-App::$strings["Proxy URL"] = "Proxy URL";
-App::$strings["Network timeout"] = "Netzwerk-Timeout";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen).";
-App::$strings["Delivery interval"] = "Auslieferung Intervall";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
-App::$strings["Deliveries per process"] = "Zustellungen pro Prozess";
-App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5.";
-App::$strings["Queue Threshold"] = "Warteschlangen-Grenzwert";
-App::$strings["Always defer immediate delivery if queue contains more than this number of entries."] = "Unmittelbare Zustellung immer verzögern, wenn die Warteschlange mehr als diese Anzahl von Einträgen enthält.";
-App::$strings["Poll interval"] = "Abfrageintervall";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet.";
-App::$strings["Path to ImageMagick convert program"] = "Pfad zum ImageMagick-Programm convert";
-App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "Wenn gesetzt, dann verwende dieses Programm zum Erzeugen von Vorschaubildern großer Fotos (>4000 Pixel in beiden Richtungen), anderenfalls kann Speicherüberlauf auftreten. Beispiel: /usr/bin/convert";
-App::$strings["Allow SVG thumbnails in file browser"] = "Erlaube SVG-Vorschaubilder im Dateibrowser";
-App::$strings["WARNING: SVG images may contain malicious code."] = "Warnung: SVG-Grafiken können Schadcode enthalten.";
-App::$strings["Maximum Load Average"] = "Maximales Load Average";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50";
-App::$strings["Expiration period in days for imported (grid/network) content"] = "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen";
-App::$strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte";
-App::$strings["New Profile Field"] = "Neues Profilfeld";
-App::$strings["Field nickname"] = "Kurzname für das Feld";
-App::$strings["System name of field"] = "Systemname des Feldes";
-App::$strings["Input type"] = "Art des Inhalts";
-App::$strings["Field Name"] = "Feldname";
-App::$strings["Label on profile pages"] = "Bezeichnung auf Profilseiten";
-App::$strings["Help text"] = "Hilfetext";
-App::$strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)";
-App::$strings["Save"] = "Speichern";
-App::$strings["Field definition not found"] = "Feld-Definition nicht gefunden";
-App::$strings["Edit Profile Field"] = "Profilfeld bearbeiten";
-App::$strings["Profile Fields"] = "Profil Felder";
-App::$strings["Basic Profile Fields"] = "Notwendige Profil Felder";
-App::$strings["Advanced Profile Fields"] = "Erweiterte Profil Felder";
-App::$strings["(In addition to basic fields)"] = "(zusätzlich zu notwendige Felder)";
-App::$strings["All available fields"] = "Alle verfügbaren Felder";
-App::$strings["Custom Fields"] = "Benutzerdefinierte Felder";
-App::$strings["Create Custom Field"] = "Erstelle benutzerdefiniertes Feld";
-App::$strings["Password changed for account %d."] = "Passwort für Konto %d geändert.";
-App::$strings["Account settings updated."] = "Kontoeinstellungen aktualisiert.";
-App::$strings["Account not found."] = "Konto nicht gefunden.";
-App::$strings["Account Edit"] = "Kontobearbeitung";
-App::$strings["New Password"] = "Neues Passwort";
-App::$strings["New Password again"] = "Neues Passwort wiederholen";
-App::$strings["Technical skill level"] = "Technische Qualifikationsstufe";
-App::$strings["Account language (for emails)"] = "Kontosprache (für E-Mails)";
-App::$strings["Service class"] = "Dienstklasse";
-App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "Standardmäßig wird ungefiltertes HTML in eingebetteten Inhalten zugelassen. Das ist prinzipiell unsicher.";
-App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "Die empfohlene Einstellung ist, ungefiltertes HTML nur von den nachfolgenden Webseiten zu erlauben:";
-App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
-App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert.";
-App::$strings["Security"] = "Sicherheit";
-App::$strings["Block public"] = "Öffentlichen Zugriff blockieren";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist.";
-App::$strings["Set \"Transport Security\" HTTP header"] = "Setze den \"Transport Security\" HTTP Header";
-App::$strings["Set \"Content Security Policy\" HTTP header"] = "Setze den \"Content Security Policy\" HTTP Header";
-App::$strings["Allowed email domains"] = "Erlaubte Domains für E-Mails";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
-App::$strings["Not allowed email domains"] = "Nicht erlaubte Domains für E-Mails";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde.";
-App::$strings["Allow communications only from these sites"] = "Kommunikation nur von diesen Servern/Domains erlauben";
-App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben.";
-App::$strings["Block communications from these sites"] = "Kommunikation von diesen Servern/Domains blockieren";
-App::$strings["Allow communications only from these channels"] = "Kommunikation nur von diesen Kanälen erlauben";
-App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. ";
-App::$strings["Block communications from these channels"] = "Kommunikation von folgenden Kanälen blockieren";
-App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Erlaube Einbettungen nur von sicheren (SSL) Webseiten und Links.";
-App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Erlaube Einbettung von Inhalten mit ungefiltertem HTML nur von diesen Domains";
-App::$strings["One site per line. By default embedded content is filtered."] = "Eine Website/Domain pro Zeile. Standardmäßig wird eingebetteter Inhalt gefiltert.";
-App::$strings["Block embedded HTML from these domains"] = "Eingebettete HTML Inhalte von diesen Servern/Domains blockieren";
-App::$strings["Remote privacy information not available."] = "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar.";
-App::$strings["Visible to:"] = "Sichtbar für:";
-App::$strings["__ctx:acl__ Profile"] = "Profil";
-App::$strings["Comment approved"] = "Kommentar bestätigt";
-App::$strings["Comment deleted"] = "Kommentar gelöscht";
-App::$strings["Permission category saved."] = "Berechtigungsrolle gespeichert.";
-App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Verwende dieses Formular, um Berechtigungsrollen für verschiedene Gruppen von Personen oder Verbindungen zu erstellen.";
-App::$strings["Permission Categories"] = "Berechtigungsrollen";
-App::$strings["Permission Name"] = "Name der Berechtigungsrolle";
-App::$strings["My Settings"] = "Meine Einstellungen";
-App::$strings["inherited"] = "geerbt";
-App::$strings["Individual Permissions"] = "Individuelle Zugriffsrechte";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden.";
-App::$strings["Friends"] = "Freunde";
-App::$strings["Settings updated."] = "Einstellungen aktualisiert.";
-App::$strings["Nobody except yourself"] = "Niemand außer Dir selbst";
-App::$strings["Only those you specifically allow"] = "Nur die, denen Du es explizit erlaubst";
-App::$strings["Approved connections"] = "Angenommene Verbindungen";
-App::$strings["Any connections"] = "Beliebige Verbindungen";
-App::$strings["Anybody on this website"] = "Jeder auf dieser Website";
-App::$strings["Anybody in this network"] = "Alle \$Projectname-Mitglieder";
-App::$strings["Anybody authenticated"] = "Jeder authentifizierte";
-App::$strings["Anybody on the internet"] = "Jeder im Internet";
-App::$strings["Publish your default profile in the network directory"] = "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen";
-App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?";
-App::$strings["or"] = "oder";
-App::$strings["Your channel address is"] = "Deine Kanal-Adresse lautet";
-App::$strings["Your files/photos are accessible via WebDAV at"] = "Deine Dateien/Fotos sind via WebDAV verfügbar auf";
-App::$strings["Channel Settings"] = "Kanal-Einstellungen";
-App::$strings["Basic Settings"] = "Grundeinstellungen";
-App::$strings["Full Name:"] = "Voller Name:";
-App::$strings["Email Address:"] = "Email Adresse:";
-App::$strings["Your Timezone:"] = "Ihre Zeitzone:";
-App::$strings["Default Post Location:"] = "Standardstandort:";
-App::$strings["Geographical location to display on your posts"] = "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll";
-App::$strings["Use Browser Location:"] = "Standort des Browsers verwenden:";
-App::$strings["Adult Content"] = "Nicht jugendfreie Inhalte";
-App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)";
-App::$strings["Security and Privacy Settings"] = "Sicherheits- und Datenschutz-Einstellungen";
-App::$strings["Your permissions are already configured. Click to view/adjust"] = "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern";
-App::$strings["Hide my online presence"] = "Meine Online-Präsenz verbergen";
-App::$strings["Prevents displaying in your profile that you are online"] = "Verhindert die Anzeige Deines Online-Status in deinem Profil";
-App::$strings["Simple Privacy Settings:"] = "Einfache Privatsphäre-Einstellungen";
-App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>";
-App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>";
-App::$strings["Private - <em>default private, never open or public</em>"] = "Privat – <em>Standard privat, nie offen oder öffentlich</em>";
-App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Blockiert – <em>Alle standardmäßig blockiert</em>";
-App::$strings["Allow others to tag your posts"] = "Erlaube anderen, Deine Beiträge zu verschlagworten";
-App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren";
-App::$strings["Channel Permission Limits"] = "Kanal-Berechtigungslimits";
-App::$strings["Expire other channel content after this many days"] = "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen";
-App::$strings["0 or blank to use the website limit."] = "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden.";
-App::$strings["This website expires after %d days."] = "Diese Webseite läuft nach %d Tagen ab.";
-App::$strings["This website does not expire imported content."] = "Diese Webseite lässt importierte Inhalte nicht verfallen.";
-App::$strings["The website limit takes precedence if lower than your limit."] = "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist.";
-App::$strings["Maximum Friend Requests/Day:"] = "Maximale Kontaktanfragen pro Tag:";
-App::$strings["May reduce spam activity"] = "Kann die Spam-Aktivität verringern";
-App::$strings["Default Privacy Group"] = "Standard-Gruppe";
-App::$strings["Use my default audience setting for the type of object published"] = "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps";
-App::$strings["Profile to assign new connections"] = "Profil, welches neuen Verbindungen zugewiesen wird";
-App::$strings["Channel permissions category:"] = "Zugriffsrechte-Kategorie des Kanals:";
-App::$strings["Default Permissions Group"] = "Standard-Berechtigungsgruppe";
-App::$strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:";
-App::$strings["Useful to reduce spamming"] = "Nützlich, um Spam zu verringern";
-App::$strings["Notification Settings"] = "Benachrichtigungs-Einstellungen";
-App::$strings["By default post a status message when:"] = "Sende standardmäßig Status-Nachrichten, wenn:";
-App::$strings["accepting a friend request"] = "Du eine Verbindungsanfrage annimmst";
-App::$strings["joining a forum/community"] = "Du einem Forum beitrittst";
-App::$strings["making an <em>interesting</em> profile change"] = "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst";
-App::$strings["Send a notification email when:"] = "Eine E-Mail-Benachrichtigung senden, wenn:";
-App::$strings["You receive a connection request"] = "Du eine Verbindungsanfrage erhältst";
-App::$strings["Your connections are confirmed"] = "Eine Verbindung bestätigt wurde";
-App::$strings["Someone writes on your profile wall"] = "Jemand auf Deine Pinnwand schreibt";
-App::$strings["Someone writes a followup comment"] = "Jemand einen Beitrag kommentiert";
-App::$strings["You receive a private message"] = "Du eine private Nachricht erhältst";
-App::$strings["You receive a friend suggestion"] = "Du einen Kontaktvorschlag erhältst";
-App::$strings["You are tagged in a post"] = "Du in einem Beitrag erwähnt wurdest";
-App::$strings["You are poked/prodded/etc. in a post"] = "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest";
-App::$strings["Someone likes your post/comment"] = "Jemand mag Ihren Beitrag/Kommentar";
-App::$strings["Show visual notifications including:"] = "Visuelle Benachrichtigungen anzeigen für:";
-App::$strings["Unseen grid activity"] = "Ungesehene Netzwerk-Aktivität";
-App::$strings["Unseen channel activity"] = "Ungesehene Kanal-Aktivität";
-App::$strings["Unseen private messages"] = "Ungelesene persönliche Nachrichten";
-App::$strings["Recommended"] = "Empfohlen";
-App::$strings["Upcoming events"] = "Baldige Termine";
-App::$strings["Events today"] = "Heutige Termine";
-App::$strings["Upcoming birthdays"] = "Baldige Geburtstage";
-App::$strings["Not available in all themes"] = "Nicht in allen Designs verfügbar";
-App::$strings["System (personal) notifications"] = "System – (persönliche) Benachrichtigungen";
-App::$strings["System info messages"] = "System – Info-Nachrichten";
-App::$strings["System critical alerts"] = "System – kritische Warnungen";
-App::$strings["New connections"] = "Neue Verbindungen";
-App::$strings["System Registrations"] = "System – Registrierungen";
-App::$strings["Unseen shared files"] = "Ungesehene geteilte Dateien";
-App::$strings["Unseen public activity"] = "Ungesehene öffentliche Aktivität";
-App::$strings["Email notification hub (hostname)"] = "Hub für E-Mail-Benachrichtigungen (Hostname)";
-App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Wenn Dein Kanal auf mehreren Hubs geklont ist, setze die Einstellung auf deinen bevorzugten Hub. Dies verhindert Mehrfachzustellung von E-Mail-Benachrichtigungen. Beispiel: %s";
-App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen";
-App::$strings["Notify me of events this many days in advance"] = "Benachrichtige mich zu Terminen so viele Tage im Voraus";
-App::$strings["Must be greater than 0"] = "Muss größer als 0 sein";
-App::$strings["Advanced Account/Page Type Settings"] = "Erweiterte Account- und Seitenart-Einstellungen";
-App::$strings["Change the behaviour of this account for special situations"] = "Ändere das Verhalten dieses Accounts unter speziellen Umständen";
-App::$strings["Miscellaneous Settings"] = "Sonstige Einstellungen";
-App::$strings["Default photo upload folder"] = "Voreingestellter Ordner für hochgeladene Fotos";
-App::$strings["%Y - current year, %m - current month"] = "%Y - aktuelles Jahr, %m - aktueller Monat";
-App::$strings["Default file upload folder"] = "Voreingestellter Ordner für hochgeladene Dateien";
-App::$strings["Personal menu to display in your channel pages"] = "Eigenes Menü zur Anzeige auf den Seiten deines Kanals";
-App::$strings["Remove this channel."] = "Diesen Kanal löschen";
-App::$strings["Firefox Share \$Projectname provider"] = "\$Projectname-Provider für Firefox Share";
-App::$strings["Start calendar week on Monday"] = "Beginne die kalendarische Woche am Montag";
-App::$strings["Additional Features"] = "Zusätzliche Funktionen";
-App::$strings["This channel is limited to %d tokens"] = "Dieser Kanal ist auf %d Token begrenzt";
-App::$strings["Name and Password are required."] = "Name und Passwort sind erforderlich.";
-App::$strings["Token saved."] = "Token gespeichert.";
-App::$strings["Use this form to create temporary access identifiers to share things with non-members. These identities may be used in Access Control Lists and visitors may login using these credentials to access private content."] = "Mit diesem Formular kannst Du temporäre Zugangs-IDs anlegen, um Inhalte mit Nicht-Mitgliedern zu teilen. Die IDs können in Berechtigungslisten (ACLs) verwendet werden, und Besucher können sich damit einloggen, um auf private Inhalte zuzugreifen.";
-App::$strings["You may also provide <em>dropbox</em> style access links to friends and associates by adding the Login Password to any specific site URL as shown. Examples:"] = "Du kannst auch <em>Dropbox</em>-ähnliche Zugriffslinks an Andere weitergeben, indem du das Login-Passwort an eine entsprechende URL anhängst wie nachfolgend gezeigt. Beispiele:";
-App::$strings["Guest Access Tokens"] = "Gastzugangstoken";
-App::$strings["Login Name"] = "Anmeldename";
-App::$strings["Login Password"] = "Anmeldepasswort";
-App::$strings["Expires (yyyy-mm-dd)"] = "Läuft ab (jjjj-mm-tt)";
-App::$strings["Their Settings"] = "Deren Einstellungen";
-App::$strings["Not valid email."] = "Keine gültige E-Mail Adresse.";
-App::$strings["Protected email address. Cannot change to that email."] = "Geschützte E-Mail Adresse. Diese kann nicht verändert werden.";
-App::$strings["System failure storing new email. Please try again."] = "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal.";
-App::$strings["Technical skill level updated"] = "Technische Qualifikationsstufe aktualisiert";
-App::$strings["Password verification failed."] = "Passwortüberprüfung fehlgeschlagen.";
-App::$strings["Passwords do not match. Password unchanged."] = "Kennwörter stimmen nicht überein. Kennwort nicht verändert.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert.";
-App::$strings["Password changed."] = "Kennwort geändert.";
-App::$strings["Password update failed. Please try again."] = "Kennwortänderung fehlgeschlagen. Bitte versuche es noch einmal.";
-App::$strings["Account Settings"] = "Konto-Einstellungen";
-App::$strings["Current Password"] = "Aktuelles Passwort";
-App::$strings["Enter New Password"] = "Gib ein neues Passwort ein";
-App::$strings["Confirm New Password"] = "Bestätige das neue Passwort";
-App::$strings["Leave password fields blank unless changing"] = "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern";
-App::$strings["Your technical skill level"] = "Deine technische Qualifikationsstufe";
-App::$strings["Used to provide a member experience matched to your comfort level"] = "Dies wird verwendet, um Dir eine Benutzererfahrung passend zu Deiner technischen Qualifikationsstufe zu bieten.";
-App::$strings["Remove Account"] = "Konto entfernen";
-App::$strings["Remove this account including all its channels"] = "Dieses Konto inklusive all seiner Kanäle löschen";
-App::$strings["Affinity Slider settings updated."] = "Die Beziehungsgrad-Schieberegler-Einstellungen wurden aktualisiert.";
-App::$strings["No feature settings configured"] = "Keine Funktions-Einstellungen konfiguriert";
-App::$strings["Default maximum affinity level"] = "Voreinstellung für maximalen Beziehungsgrad";
-App::$strings["Default minimum affinity level"] = "Voreinstellung für minimalen Beziehungsgrad";
-App::$strings["Affinity Slider Settings"] = "Beziehungsgrad-Schieberegler-Einstellungen";
-App::$strings["Feature/Addon Settings"] = "Funktions-/Addon-Einstellungen";
-App::$strings["No special theme for mobile devices"] = "Kein spezielles Design für mobile Geräte";
-App::$strings["%s - (Experimental)"] = "%s – (experimentell)";
-App::$strings["Display Settings"] = "Anzeige-Einstellungen";
-App::$strings["Theme Settings"] = "Design-Einstellungen";
-App::$strings["Custom Theme Settings"] = "Benutzerdefinierte Design-Einstellungen";
-App::$strings["Content Settings"] = "Inhaltseinstellungen";
-App::$strings["Display Theme:"] = "Anzeige-Design:";
-App::$strings["Select scheme"] = "Schema wählen";
-App::$strings["Mobile Theme:"] = "Design für mobile Geräte:";
-App::$strings["Preload images before rendering the page"] = "Bilder im voraus laden, bevor die Seite angezeigt wird";
-App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "Die empfundene Ladezeit wird sich erhöhen, aber dafür ist das Layout stabil, sobald eine Seite angezeigt wird";
-App::$strings["Enable user zoom on mobile devices"] = "Zoom auf Mobilgeräten aktivieren";
-App::$strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren";
-App::$strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 Sekunden, kein Maximum";
-App::$strings["Maximum number of conversations to load at any time:"] = "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:";
-App::$strings["Maximum of 100 items"] = "Maximum: 100 Beiträge";
-App::$strings["Show emoticons (smilies) as images"] = "Emoticons (Smilies) als Bilder anzeigen";
-App::$strings["Provide channel menu in navigation bar"] = "Kanal-Menü in der Navigationsleiste zur Verfügung stellen";
-App::$strings["Default: channel menu located in app menu"] = "Voreinstellung: Kanal-Menü ist im App-Menü integriert";
-App::$strings["Manual conversation updates"] = "Manuelle Konversationsaktualisierung";
-App::$strings["Default is on, turning this off may increase screen jumping"] = "Voreinstellung ist An, dies abzuschalten kann das unerwartete Springen der Seitenanzeige erhöhen.";
-App::$strings["Link post titles to source"] = "Beitragstitel zum Originalbeitrag verlinken";
-App::$strings["System Page Layout Editor - (advanced)"] = "System-Seitenlayout-Editor (für Experten)";
-App::$strings["Use blog/list mode on channel page"] = "Blog-/Listenmodus auf der Kanalseite verwenden";
-App::$strings["(comments displayed separately)"] = "(Kommentare werden separat angezeigt)";
-App::$strings["Use blog/list mode on grid page"] = "Blog-/Listenmodus auf der Netzwerkseite verwenden";
-App::$strings["Channel page max height of content (in pixels)"] = "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)";
-App::$strings["click to expand content exceeding this height"] = "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden.";
-App::$strings["Grid page max height of content (in pixels)"] = "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite";
-App::$strings["Name is required"] = "Name ist erforderlich";
-App::$strings["Key and Secret are required"] = "Schlüssel und Geheimnis werden benötigt";
-App::$strings["Add application"] = "Anwendung hinzufügen";
-App::$strings["Name of application"] = "Name der Anwendung";
-App::$strings["Consumer Key"] = "Consumer Key";
-App::$strings["Automatically generated - change if desired. Max length 20"] = "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20";
-App::$strings["Consumer Secret"] = "Consumer Secret";
-App::$strings["Redirect"] = "Umleitung";
-App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert";
-App::$strings["Icon url"] = "Symbol-URL";
-App::$strings["Optional"] = "Optional";
-App::$strings["Application not found."] = "Die Anwendung wurde nicht gefunden.";
-App::$strings["Connected Apps"] = "Verbundene Apps";
-App::$strings["Client key starts with"] = "Client Key beginnt mit";
-App::$strings["No name"] = "Kein Name";
-App::$strings["Remove authorization"] = "Authorisierung aufheben";
-App::$strings["View Photo"] = "Foto ansehen";
-App::$strings["Edit Album"] = "Album bearbeiten";
-App::$strings["Upload"] = "Hochladen";
-App::$strings["Some blurb about what to do when you're new here"] = "Ein Hinweis, was man tun kann, wenn man neu hier ist";
-App::$strings["Thing updated"] = "Sache aktualisiert";
-App::$strings["Object store: failed"] = "Speichern des Objekts fehlgeschlagen";
-App::$strings["Thing added"] = "Sache hinzugefügt";
-App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-App::$strings["Show Thing"] = "Sache anzeigen";
-App::$strings["item not found."] = "Eintrag nicht gefunden";
-App::$strings["Edit Thing"] = "Sache bearbeiten";
-App::$strings["Select a profile"] = "Wähle ein Profil";
-App::$strings["Post an activity"] = "Aktivitätsnachricht senden";
-App::$strings["Only sends to viewers of the applicable profile"] = "Nur an Betrachter des ausgewählten Profils senden";
-App::$strings["Name of thing e.g. something"] = "Name der Sache, z. B. irgendwas";
-App::$strings["URL of thing (optional)"] = "URL der Sache (optional)";
-App::$strings["URL for photo of thing (optional)"] = "URL eines Fotos der Sache (optional)";
-App::$strings["Permissions"] = "Berechtigungen";
-App::$strings["Add Thing to your Profile"] = "Die Sache Deinem Profil hinzufügen";
-App::$strings["No more system notifications."] = "Keine System-Benachrichtigungen mehr.";
-App::$strings["System Notifications"] = "System-Benachrichtigungen";
-App::$strings["Channel added."] = "Kanal hinzugefügt.";
-App::$strings["Your service plan only allows %d channels."] = "Dein Vertrag erlaubt nur %d Kanäle.";
-App::$strings["No channel. Import failed."] = "Kein Kanal. Import fehlgeschlagen.";
-App::$strings["Import completed."] = "Import abgeschlossen.";
-App::$strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen.";
-App::$strings["Import Channel"] = "Kanal importieren";
-App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren.";
-App::$strings["Or provide the old server/hub details"] = "Oder gib die Details Deines bisherigen \$Projectname-Hubs ein";
-App::$strings["Your old identity address (xyz@example.com)"] = "Bisherige Kanal-Adresse (xyz@example.com)";
-App::$strings["Your old login email address"] = "Deine alte Login-E-Mail-Adresse";
-App::$strings["Your old login password"] = "Dein altes Passwort";
-App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige \$Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein.";
-App::$strings["Make this hub my primary location"] = "Dieser $Pojectname-Hub ist mein primärer Hub.";
-App::$strings["Move this channel (disable all previous locations)"] = "Verschiebe diesen Kanal (deaktiviere alle vorherigen Adressen/Klone)";
-App::$strings["Import a few months of posts if possible (limited by available memory"] = "Importiere die Beiträge einiger Monate, sofern möglich (beschränkt durch verfügbaren Speicher)";
-App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen.";
-App::$strings["Authentication failed."] = "Authentifizierung fehlgeschlagen.";
-App::$strings["Remote Authentication"] = "Entfernte Authentifizierung";
-App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Deine Kanal-Adresse (z. B. channel@example.com)";
-App::$strings["Authenticate"] = "Authentifizieren";
-App::$strings["Permissions denied."] = "Berechtigung verweigert.";
-App::$strings["Import"] = "Import";
-App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
-App::$strings["Return to your app and insert this Security Code:"] = "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:";
-App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
-App::$strings["Item not available."] = "Element nicht verfügbar.";
-App::$strings["Edit Block"] = "Block bearbeiten";
-App::$strings["vcard"] = "VCard";
-App::$strings["Apps"] = "Apps";
-App::$strings["Manage apps"] = "Apps verwalten";
-App::$strings["Create new app"] = "Neue App erstellen";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s ist %2\$s";
-App::$strings["Mood"] = "Laune";
-App::$strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden";
-App::$strings["Blocked"] = "Blockiert";
-App::$strings["Ignored"] = "Ignoriert";
-App::$strings["Hidden"] = "Versteckt";
-App::$strings["Archived/Unreachable"] = "Archiviert/Unerreichbar";
-App::$strings["New"] = "Neu";
-App::$strings["All"] = "Alle";
-App::$strings["New Connections"] = "Neue Verbindungen";
-App::$strings["Show pending (new) connections"] = "Ausstehende (neue) Verbindungsanfragen anzeigen";
-App::$strings["Show all connections"] = "Alle Verbindungen anzeigen";
-App::$strings["Only show blocked connections"] = "Nur blockierte Verbindungen anzeigen";
-App::$strings["Only show ignored connections"] = "Nur ignorierte Verbindungen anzeigen";
-App::$strings["Only show archived/unreachable connections"] = "Nur archivierte/unerreichbare Verbindungen anzeigen";
-App::$strings["Only show hidden connections"] = "Nur versteckte Verbindungen anzeigen";
-App::$strings["Pending approval"] = "Wartet auf Genehmigung";
-App::$strings["Archived"] = "Archiviert";
-App::$strings["Not connected at this location"] = "An diesem Ort nicht verbunden";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Verbindung bearbeiten";
-App::$strings["Delete connection"] = "Verbindung löschen";
-App::$strings["Channel address"] = "Kanaladresse";
-App::$strings["Network"] = "Netzwerk";
-App::$strings["Call"] = "Anruf";
-App::$strings["Status"] = "Status";
-App::$strings["Connected"] = "Verbunden";
-App::$strings["Approve connection"] = "Verbindung genehmigen";
-App::$strings["Ignore connection"] = "Verbindung ignorieren";
-App::$strings["Ignore"] = "Ignorieren";
-App::$strings["Recent activity"] = "Kürzliche Aktivitäten";
-App::$strings["Connections"] = "Verbindungen";
-App::$strings["Search your connections"] = "Verbindungen durchsuchen";
-App::$strings["Connections search"] = "Verbindung suchen";
-App::$strings["Find"] = "Finde";
-App::$strings["item"] = "Beitrag";
-App::$strings["Source of Item"] = "Quelle des Elements";
-App::$strings["Bookmark added"] = "Lesezeichen hinzugefügt";
-App::$strings["My Bookmarks"] = "Meine Lesezeichen";
-App::$strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte";
-App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt.";
-App::$strings["Remove This Account"] = "Dieses Konto löschen";
-App::$strings["This account and all its channels will be completely removed from the network. "] = "Dieses Konto mit all seinen Kanälen wird vollständig aus dem Netzwerk gelöscht.";
-App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen";
-App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Standardmäßig werden nur die Kanalklone auf diesem \$Projectname-Hub aus dem Netzwerk entfernt";
-App::$strings["Page owner information could not be retrieved."] = "Informationen über den Besitzer der Seite konnten nicht gefunden werden.";
-App::$strings["Album not found."] = "Album nicht gefunden.";
-App::$strings["Delete Album"] = "Album löschen";
-App::$strings["Delete Photo"] = "Foto löschen";
-App::$strings["No photos selected"] = "Keine Fotos ausgewählt";
-App::$strings["Access to this item is restricted."] = "Der Zugriff auf dieses Foto ist eingeschränkt.";
-App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB von %2$.2f MB Foto-Speicher belegt.";
-App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB Foto-Speicher belegt.";
-App::$strings["Upload Photos"] = "Fotos hochladen";
-App::$strings["Enter an album name"] = "Namen für ein neues Album eingeben";
-App::$strings["or select an existing album (doubleclick)"] = "oder ein bereits vorhandenes auswählen (Doppelklick)";
-App::$strings["Create a status post for this upload"] = "Einen Statusbeitrag für diesen Upload erzeugen";
-App::$strings["Caption (optional):"] = "Beschriftung (optional):";
-App::$strings["Description (optional):"] = "Beschreibung (optional):";
-App::$strings["Show Newest First"] = "Neueste zuerst anzeigen";
-App::$strings["Show Oldest First"] = "Älteste zuerst anzeigen";
-App::$strings["Permission denied. Access to this item may be restricted."] = "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden.";
-App::$strings["Photo not available"] = "Foto nicht verfügbar";
-App::$strings["Use as profile photo"] = "Als Profilfoto verwenden";
-App::$strings["Use as cover photo"] = "Als Titelbild verwenden";
-App::$strings["Private Photo"] = "Privates Foto";
-App::$strings["View Full Size"] = "In voller Größe anzeigen";
-App::$strings["Edit photo"] = "Foto bearbeiten";
-App::$strings["Rotate CW (right)"] = "Drehen im UZS (rechts)";
-App::$strings["Rotate CCW (left)"] = "Drehen gegen UZS (links)";
-App::$strings["Move photo to album"] = "Foto in Album verschieben";
-App::$strings["Enter a new album name"] = "Gib einen Namen für ein neues Album ein";
-App::$strings["or select an existing one (doubleclick)"] = "oder wähle ein bereits vorhandenes aus (Doppelklick)";
-App::$strings["Caption"] = "Bildunterschrift";
-App::$strings["Add a Tag"] = "Schlagwort hinzufügen";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Beispiele: @ben, @Karl_Prester, @lieschen@example.com";
-App::$strings["Flag as adult in album view"] = "In der Albumansicht als nicht jugendfrei markieren";
-App::$strings["I like this (toggle)"] = "Mir gefällt das (Umschalter)";
-App::$strings["I don't like this (toggle)"] = "Mir gefällt das nicht (Umschalter)";
-App::$strings["Please wait"] = "Bitte warten";
-App::$strings["This is you"] = "Das bist Du";
-App::$strings["Comment"] = "Kommentar";
-App::$strings["__ctx:title__ Likes"] = "Gefällt mir";
-App::$strings["__ctx:title__ Dislikes"] = "Gefällt mir nicht";
-App::$strings["__ctx:title__ Agree"] = "Zustimmungen";
-App::$strings["__ctx:title__ Disagree"] = "Ablehnungen";
-App::$strings["__ctx:title__ Abstain"] = "Enthaltungen";
-App::$strings["__ctx:title__ Attending"] = "Zusagen";
-App::$strings["__ctx:title__ Not attending"] = "Absagen";
-App::$strings["__ctx:title__ Might attend"] = "Vielleicht";
-App::$strings["View all"] = "Alles anzeigen";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Gefällt mir",
- 1 => "Gefällt mir",
-);
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Gefällt nicht",
- 1 => "Gefällt nicht",
-);
-App::$strings["Photo Tools"] = "Fotowerkzeuge";
-App::$strings["In This Photo:"] = "Auf diesem Foto:";
-App::$strings["Map"] = "Karte";
-App::$strings["__ctx:noun__ Likes"] = "Gefällt mir";
-App::$strings["__ctx:noun__ Dislikes"] = "Gefällt nicht";
-App::$strings["Close"] = "Schließen";
-App::$strings["Recent Photos"] = "Neueste Fotos";
-App::$strings["Profile Unavailable."] = "Profil nicht verfügbar.";
-App::$strings["Not found"] = "Nicht gefunden";
-App::$strings["Invalid channel"] = "Ungültiger Kanal";
-App::$strings["Error retrieving wiki"] = "Fehler beim Abrufen des Wiki";
-App::$strings["Error creating zip file export folder"] = "Fehler bei der Erzeugung des Zip-Datei Export-Verzeichnisses ";
-App::$strings["Error downloading wiki: "] = "Fehler beim Herunterladen des Wiki:";
-App::$strings["Wikis"] = "Wikis";
-App::$strings["Download"] = "Herunterladen";
-App::$strings["Create New"] = "Neu anlegen";
-App::$strings["Wiki name"] = "Name des Wiki";
-App::$strings["Content type"] = "Inhaltstyp";
-App::$strings["Markdown"] = "Markdown";
-App::$strings["BBcode"] = "BBcode";
-App::$strings["Text"] = "Text";
-App::$strings["Type"] = "Typ";
-App::$strings["Any&nbsp;type"] = "Alle&nbsp;Arten";
-App::$strings["Lock content type"] = "Inhaltstyp sperren";
-App::$strings["Create a status post for this wiki"] = "Erzeuge einen Statusbeitrag für dieses Wiki";
-App::$strings["Edit Wiki Name"] = "Wiki-Namen bearbeiten";
-App::$strings["Wiki not found"] = "Wiki nicht gefunden";
-App::$strings["Rename page"] = "Seite umbenennen";
-App::$strings["Error retrieving page content"] = "Fehler beim Abrufen des Seiteninhalts";
-App::$strings["New page"] = "Neue Seite";
-App::$strings["Revision Comparison"] = "Revisionsvergleich";
-App::$strings["Revert"] = "Rückgängig machen";
-App::$strings["Short description of your changes (optional)"] = "Kurze Beschreibung Ihrer Änderungen (optional)";
-App::$strings["Source"] = "Quelle";
-App::$strings["New page name"] = "Neuer Seitenname";
-App::$strings["Embed image from photo albums"] = "Bild aus Fotoalben einbetten";
-App::$strings["Embed an image from your albums"] = "Betten Sie ein Bild aus Ihren Alben ein";
-App::$strings["OK"] = "Ok";
-App::$strings["Choose images to embed"] = "Wählen Sie Bilder zum Einbetten aus";
-App::$strings["Choose an album"] = "Wählen Sie ein Album aus";
-App::$strings["Choose a different album"] = "Wählen Sie ein anderes Album aus";
-App::$strings["Error getting album list"] = "Fehler beim Holen der Albenliste";
-App::$strings["Error getting photo link"] = "Fehler beim Holen des Fotolinks";
-App::$strings["Error getting album"] = "Fehler beim Holen des Albums";
-App::$strings["Error creating wiki. Invalid name."] = "Fehler beim Erstellen des Wiki. Ungültiger Name.";
-App::$strings["A wiki with this name already exists."] = "Es existiert bereits ein Wiki mit diesem Namen.";
-App::$strings["Wiki created, but error creating Home page."] = "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite";
-App::$strings["Error creating wiki"] = "Fehler beim Erstellen des Wiki";
-App::$strings["Error updating wiki. Invalid name."] = "Fehler beim Aktualisieren des Wikis. Ungültiger Name.";
-App::$strings["Error updating wiki"] = "Fehler beim Aktualisieren des Wikis";
-App::$strings["Wiki delete permission denied."] = "Wiki-Löschberechtigung verweigert.";
-App::$strings["Error deleting wiki"] = "Fehler beim Löschen des Wiki";
-App::$strings["New page created"] = "Neue Seite erstellt";
-App::$strings["Cannot delete Home"] = "Kann die Startseite nicht löschen";
-App::$strings["Current Revision"] = "Aktuelle Revision";
-App::$strings["Selected Revision"] = "Ausgewählte Revision";
-App::$strings["You must be authenticated."] = "Sie müssen authenzifiziert sein.";
-App::$strings["toggle full screen mode"] = "auf Vollbildmodus umschalten";
-App::$strings["Layout updated."] = "Layout aktualisiert.";
-App::$strings["Feature disabled."] = "Funktion deaktiviert.";
-App::$strings["Edit System Page Description"] = "Systemseitenbeschreibung bearbeiten";
-App::$strings["(modified)"] = "(geändert)";
-App::$strings["Reset"] = "Zurücksetzen";
-App::$strings["Layout not found."] = "Layout nicht gefunden.";
-App::$strings["Module Name:"] = "Modulname:";
-App::$strings["Layout Help"] = "Layout-Hilfe";
-App::$strings["Edit another layout"] = "Ein weiteres Layout bearbeiten";
-App::$strings["System layout"] = "System-Layout";
-App::$strings["Poke"] = "Anstupsen";
-App::$strings["Poke somebody"] = "Jemanden anstupsen";
-App::$strings["Poke/Prod"] = "Anstupsen/Knuffen";
-App::$strings["Poke, prod or do other things to somebody"] = "Jemanden anstupsen, knuffen oder sonstiges";
-App::$strings["Recipient"] = "Empfänger";
-App::$strings["Choose what you wish to do to recipient"] = "Wähle, was Du mit dem/r Empfänger/in tun willst";
-App::$strings["Make this post private"] = "Diesen Beitrag privat machen";
-App::$strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zurechtschneiden schlug fehl.";
-App::$strings["Profile Photos"] = "Profilfotos";
-App::$strings["Image resize failed."] = "Bild-Anpassung fehlgeschlagen.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird.";
-App::$strings["Unable to process image"] = "Kann Bild nicht verarbeiten";
-App::$strings["Image upload failed."] = "Hochladen des Bilds fehlgeschlagen.";
-App::$strings["Unable to process image."] = "Kann Bild nicht verarbeiten.";
-App::$strings["Photo not available."] = "Foto nicht verfügbar.";
-App::$strings["Upload File:"] = "Datei hochladen:";
-App::$strings["Select a profile:"] = "Wähle ein Profil:";
-App::$strings["Use Photo for Profile"] = "Foto für Profil verwenden";
-App::$strings["Upload Profile Photo"] = "Lade neues Profilfoto hoch";
-App::$strings["Use"] = "Verwenden";
-App::$strings["skip this step"] = "diesen Schritt überspringen";
-App::$strings["select a photo from your photo albums"] = "ein Foto aus meinen Fotoalben";
-App::$strings["Crop Image"] = "Bild zuschneiden";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Bitte schneide das Bild für eine optimale Anzeige passend zu.";
-App::$strings["Done Editing"] = "Bearbeitung fertigstellen";
-App::$strings["Away"] = "Abwesend";
-App::$strings["Online"] = "Online";
-App::$strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden.";
-App::$strings["Empty post discarded."] = "Leeren Beitrag verworfen.";
-App::$strings["Duplicate post suppressed."] = "Doppelter Beitrag unterdrückt.";
-App::$strings["System error. Post not saved."] = "Systemfehler. Beitrag nicht gespeichert.";
-App::$strings["Your comment is awaiting approval."] = "Dein Kommentar muss noch bestätigt werden.";
-App::$strings["Unable to obtain post information from database."] = "Beitragsinformationen können nicht aus der Datenbank abgerufen werden.";
-App::$strings["You have reached your limit of %1$.0f top level posts."] = "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht.";
-App::$strings["You have reached your limit of %1$.0f webpages."] = "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht.";
-App::$strings["sent you a private message"] = "hat Dir eine private Nachricht geschickt";
-App::$strings["added your channel"] = "hat deinen Kanal hinzugefügt";
-App::$strings["requires approval"] = "Zustimmung erforderlich";
-App::$strings["g A l F d"] = "l, d. F, G:i \\U\\h\\r";
-App::$strings["[today]"] = "[Heute]";
-App::$strings["posted an event"] = "hat einen Termin veröffentlicht";
-App::$strings["shared a file with you"] = "hat eine Datei mit Dir geteilt";
-App::$strings["Invalid item."] = "Ungültiges Element.";
-App::$strings["Page not found."] = "Seite nicht gefunden.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen.";
-App::$strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden.";
-App::$strings["Connection updated."] = "Verbindung aktualisiert.";
-App::$strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren.";
-App::$strings["is now connected to"] = "ist jetzt verbunden mit";
-App::$strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen.";
-App::$strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar.";
-App::$strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen.";
-App::$strings["Connection has been removed."] = "Verbindung wurde gelöscht.";
-App::$strings["View Profile"] = "Profil ansehen";
-App::$strings["View %s's profile"] = "%ss Profil ansehen";
-App::$strings["Refresh Permissions"] = "Zugriffsrechte neu laden";
-App::$strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abrufen";
-App::$strings["Refresh Photo"] = "Foto aktualisieren";
-App::$strings["Fetch updated photo"] = "Aktualisiertes Profilfoto abrufen";
-App::$strings["Recent Activity"] = "Kürzliche Aktivitäten";
-App::$strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare";
-App::$strings["Block (or Unblock) all communications with this connection"] = "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen";
-App::$strings["This connection is blocked!"] = "Die Verbindung ist geblockt!";
-App::$strings["Unignore"] = "Nicht ignorieren";
-App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen";
-App::$strings["This connection is ignored!"] = "Die Verbindung wird ignoriert!";
-App::$strings["Unarchive"] = "Aus Archiv zurückholen";
-App::$strings["Archive"] = "Archivieren";
-App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)";
-App::$strings["This connection is archived!"] = "Die Verbindung ist archiviert!";
-App::$strings["Unhide"] = "Wieder sichtbar machen";
-App::$strings["Hide"] = "Verstecken";
-App::$strings["Hide or Unhide this connection from your other connections"] = "Diese Verbindung vor anderen Verbindungen verstecken/zeigen";
-App::$strings["This connection is hidden!"] = "Die Verbindung ist versteckt!";
-App::$strings["Delete this connection"] = "Verbindung löschen";
-App::$strings["Fetch Vcard"] = "Vcard abrufen";
-App::$strings["Fetch electronic calling card for this connection"] = "Rufe eine digitale Visitenkarte für diese Verbindung ab";
-App::$strings["Open Individual Permissions section by default"] = "Öffne standardmäßig den Bereich für individuelle Berechtigungen";
-App::$strings["Affinity"] = "Beziehung";
-App::$strings["Open Set Affinity section by default"] = "Öffne standardmäßig den Bereich für Beziehungsgrad-Einstellungen";
-App::$strings["Me"] = "Ich";
-App::$strings["Family"] = "Familie";
-App::$strings["Acquaintances"] = "Bekannte";
-App::$strings["Filter"] = "Filter";
-App::$strings["Open Custom Filter section by default"] = "Öffne standardmäßig den Bereich für benutzerdefinierte Filter";
-App::$strings["Approve this connection"] = "Verbindung genehmigen";
-App::$strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen";
-App::$strings["Set Affinity"] = "Beziehung festlegen";
-App::$strings["Set Profile"] = "Profil festlegen";
-App::$strings["Set Affinity & Profile"] = "Beziehung und Profile festlegen";
-App::$strings["This connection is unreachable from this location."] = "Diese Verbindung ist von diesem Ort unerreichbar.";
-App::$strings["This connection may be unreachable from other channel locations."] = "Diese Verbindung könnte von anderen Standpunkten des Kanals nicht erreichbar sein.";
-App::$strings["Location independence is not supported by their network."] = "Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt.";
-App::$strings["This connection is unreachable from this location. Location independence is not supported by their network."] = "Diese Verbindung ist von diesem Standort aus unerreichbar. Standort Unabhängigkeit wird vom anderen Netzwerk nicht unterstützt.";
-App::$strings["Connection Default Permissions"] = "Standardzugriffsrechte für neue Verbindungen:";
-App::$strings["Connection: %s"] = "Verbindung: %s";
-App::$strings["Apply these permissions automatically"] = "Diese Berechtigungen automatisch anwenden";
-App::$strings["Connection requests will be approved without your interaction"] = "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist.";
-App::$strings["Permission role"] = "Berechtigungsrolle";
-App::$strings["Add permission role"] = "Berechtigungsrolle hinzufügen";
-App::$strings["This connection's primary address is"] = "Die Hauptadresse der Verbindung ist";
-App::$strings["Available locations:"] = "Verfügbare Klone:";
-App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet.";
-App::$strings["Connection Tools"] = "Verbindungswerkzeuge";
-App::$strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen";
-App::$strings["Rating"] = "Bewertung";
-App::$strings["Slide to adjust your rating"] = "Verschieben, um Deine Bewertung einzustellen";
-App::$strings["Optionally explain your rating"] = "Optional kannst Du Deine Bewertung begründen";
-App::$strings["Custom Filter"] = "Benutzerdefinierter Filter";
-App::$strings["Only import posts with this text"] = "Nur Beiträge mit diesem Text importieren";
-App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren.";
-App::$strings["Do not import posts with this text"] = "Beiträge mit diesem Text nicht importieren";
-App::$strings["This information is public!"] = "Diese Information ist öffentlich!";
-App::$strings["Connection Pending Approval"] = "Verbindung wartet auf Bestätigung";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird.";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen.";
-App::$strings["Last update:"] = "Letzte Aktualisierung:";
-App::$strings["Details"] = "Details";
-App::$strings["Room not found"] = "Chatraum nicht gefunden";
-App::$strings["Leave Room"] = "Raum verlassen";
-App::$strings["Delete Room"] = "Raum löschen";
-App::$strings["I am away right now"] = "Ich bin gerade nicht da";
-App::$strings["I am online"] = "Ich bin online";
-App::$strings["Bookmark this room"] = "Lesezeichen für diesen Raum setzen";
-App::$strings["Please enter a link URL:"] = "Gib eine URL ein:";
-App::$strings["Encrypt text"] = "Text verschlüsseln";
-App::$strings["New Chatroom"] = "Neuer Chatraum";
-App::$strings["Chatroom name"] = "Chatraumname";
-App::$strings["Expiration of chats (minutes)"] = "Verfall von Chats (Minuten)";
-App::$strings["%1\$s's Chatrooms"] = "%1\$ss Chaträume";
-App::$strings["No chatrooms available"] = "Keine Chaträume verfügbar";
-App::$strings["Expiration"] = "Verfall";
-App::$strings["min"] = "min";
-App::$strings["Photos"] = "Fotos";
-App::$strings["Files"] = "Dateien";
-App::$strings["Unable to update menu."] = "Kann Menü nicht aktualisieren.";
-App::$strings["Unable to create menu."] = "Kann Menü nicht erstellen.";
-App::$strings["Menu Name"] = "Name des Menüs";
-App::$strings["Unique name (not visible on webpage) - required"] = "Eindeutiger Name (nicht sichtbar auf der Webseite) – erforderlich";
-App::$strings["Menu Title"] = "Menütitel";
-App::$strings["Visible on webpage - leave empty for no title"] = "Sichtbar auf der Webseite – für keinen Titel leer lassen";
-App::$strings["Allow Bookmarks"] = "Lesezeichen erlauben";
-App::$strings["Menu may be used to store saved bookmarks"] = "Im Menü können gespeicherte Lesezeichen abgelegt werden";
-App::$strings["Submit and proceed"] = "Absenden und fortfahren";
-App::$strings["Menus"] = "Menüs";
-App::$strings["Bookmarks allowed"] = "Lesezeichen erlaubt";
-App::$strings["Delete this menu"] = "Lösche dieses Menü";
-App::$strings["Edit menu contents"] = "Bearbeite Menü Inhalte";
-App::$strings["Edit this menu"] = "Dieses Menü bearbeiten";
-App::$strings["Menu could not be deleted."] = "Menü konnte nicht gelöscht werden.";
-App::$strings["Edit Menu"] = "Menü bearbeiten";
-App::$strings["Add or remove entries to this menu"] = "Einträge zu diesem Menü hinzufügen oder entfernen";
-App::$strings["Menu name"] = "Menü Name";
-App::$strings["Must be unique, only seen by you"] = "Muss eindeutig sein, ist aber nur für Dich sichtbar";
-App::$strings["Menu title"] = "Menü Titel";
-App::$strings["Menu title as seen by others"] = "Menü Titel wie er von anderen gesehen wird";
-App::$strings["Allow bookmarks"] = "Erlaube Lesezeichen";
-App::$strings["Layouts"] = "Layouts";
-App::$strings["Help"] = "Hilfe";
-App::$strings["Comanche page description language help"] = "Hilfe zur Comanche-Seitenbeschreibungssprache";
-App::$strings["Layout Description"] = "Layout-Beschreibung";
-App::$strings["Download PDL file"] = "PDL-Datei herunterladen";
-App::$strings["Unknown error"] = "Unbekannter Fehler";
-App::$strings["Post not found."] = "Beitrag nicht gefunden.";
-App::$strings["post"] = "Beitrag";
-App::$strings["comment"] = "Kommentar";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s hat %2\$ss %3\$s mit %4\$s verschlagwortet";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert.";
-App::$strings["Configuration Editor"] = "Konfigurationseditor";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird.";
-App::$strings["If enabled, connection requests will be approved without your interaction"] = "Ist dies aktiviert, werden Verbindungsanfragen ohne Deine aktive Zustimmung bestätigt.";
-App::$strings["Automatic approval settings"] = "Einstellungen für automatische Bestätigung";
-App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Einige individuelle Berechtigungen können basierend auf Deinen Kanal- und Privatsphäre-Einstellungen vorbelegt oder gesperrt sein.";
-App::$strings["Privacy group created."] = "Gruppe wurde erstellt.";
-App::$strings["Could not create privacy group."] = "Gruppe konnte nicht erstellt werden.";
-App::$strings["Privacy group not found."] = "Gruppe nicht gefunden.";
-App::$strings["Privacy group updated."] = "Gruppe wurde aktualisiert.";
-App::$strings["Create a group of channels."] = "Erstelle eine Gruppe für Kanäle.";
-App::$strings["Privacy group name: "] = "Gruppenname:";
-App::$strings["Members are visible to other channels"] = "Mitglieder sind sichtbar für andere Kanäle";
-App::$strings["Privacy group removed."] = "Gruppe wurde entfernt.";
-App::$strings["Unable to remove privacy group."] = "Gruppe konnte nicht entfernt werden.";
-App::$strings["Privacy group editor"] = "Gruppeneditor";
-App::$strings["Members"] = "Mitglieder";
-App::$strings["All Connected Channels"] = "Alle verbundenen Kanäle";
-App::$strings["Click on a channel to add or remove."] = "Wähle einen Kanal zum hinzufügen oder entfernen aus.";
-App::$strings["Profile not found."] = "Profil nicht gefunden.";
-App::$strings["Profile deleted."] = "Profil gelöscht.";
-App::$strings["Profile-"] = "Profil-";
-App::$strings["New profile created."] = "Neues Profil erstellt.";
-App::$strings["Profile unavailable to clone."] = "Profil kann nicht geklont werden.";
-App::$strings["Profile unavailable to export."] = "Dieses Profil kann nicht exportiert werden.";
-App::$strings["Profile Name is required."] = "Profil-Name erforderlich.";
-App::$strings["Marital Status"] = "Familienstand";
-App::$strings["Romantic Partner"] = "Romantische Partner";
-App::$strings["Likes"] = "Gefällt";
-App::$strings["Dislikes"] = "Gefällt nicht";
-App::$strings["Work/Employment"] = "Arbeit/Anstellung";
-App::$strings["Religion"] = "Religion";
-App::$strings["Political Views"] = "Politische Ansichten";
-App::$strings["Gender"] = "Geschlecht";
-App::$strings["Sexual Preference"] = "Sexuelle Orientierung";
-App::$strings["Homepage"] = "Webseite";
-App::$strings["Interests"] = "Hobbys/Interessen";
-App::$strings["Profile updated."] = "Profil aktualisiert.";
-App::$strings["Hide your connections list from viewers of this profile"] = "Deine Verbindungen vor Betrachtern dieses Profils verbergen";
-App::$strings["Edit Profile Details"] = "Bearbeite Profil-Details";
-App::$strings["View this profile"] = "Dieses Profil ansehen";
-App::$strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
-App::$strings["Profile Tools"] = "Profilwerkzeuge";
-App::$strings["Change cover photo"] = "Titelbild ändern";
-App::$strings["Change profile photo"] = "Profilfoto ändern";
-App::$strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
-App::$strings["Clone this profile"] = "Dieses Profil klonen";
-App::$strings["Delete this profile"] = "Dieses Profil löschen";
-App::$strings["Add profile things"] = "Sachen zum Profil hinzufügen";
-App::$strings["Personal"] = "Persönlich";
-App::$strings["Relation"] = "Beziehung";
-App::$strings["Miscellaneous"] = "Verschiedenes";
-App::$strings["Import profile from file"] = "Profil aus einer Datei importieren";
-App::$strings["Export profile to file"] = "Profil in eine Datei exportieren";
-App::$strings["Your gender"] = "Dein Geschlecht";
-App::$strings["Marital status"] = "Familienstand";
-App::$strings["Sexual preference"] = "Sexuelle Orientierung";
-App::$strings["Profile name"] = "Profilname";
-App::$strings["This is your default profile."] = "Das ist Dein Standardprofil.";
-App::$strings["Your full name"] = "Dein voller Name";
-App::$strings["Title/Description"] = "Titel/Beschreibung";
-App::$strings["Street address"] = "Straße und Hausnummer";
-App::$strings["Locality/City"] = "Wohnort";
-App::$strings["Region/State"] = "Region/Bundesstaat";
-App::$strings["Postal/Zip code"] = "Postleitzahl";
-App::$strings["Who (if applicable)"] = "Wer (falls anwendbar)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since (date)"] = "Seit (Datum)";
-App::$strings["Tell us about yourself"] = "Erzähle uns ein wenig von Dir";
-App::$strings["Homepage URL"] = "Homepage-URL";
-App::$strings["Hometown"] = "Heimatort";
-App::$strings["Political views"] = "Politische Ansichten";
-App::$strings["Religious views"] = "Religiöse Ansichten";
-App::$strings["Keywords used in directory listings"] = "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden";
-App::$strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software";
-App::$strings["Musical interests"] = "Musikalische Interessen";
-App::$strings["Books, literature"] = "Bücher, Literatur";
-App::$strings["Television"] = "Fernsehen";
-App::$strings["Film/Dance/Culture/Entertainment"] = "Film/Tanz/Kultur/Unterhaltung";
-App::$strings["Hobbies/Interests"] = "Hobbys/Interessen";
-App::$strings["Love/Romance"] = "Liebe/Romantik";
-App::$strings["School/Education"] = "Schule/Ausbildung";
-App::$strings["Contact information and social networks"] = "Kontaktinformation und soziale Netzwerke";
-App::$strings["My other channels"] = "Meine anderen Kanäle";
-App::$strings["Communications"] = "Kommunikation";
-App::$strings["Profile Image"] = "Profilfoto:";
-App::$strings["Edit Profiles"] = "Profile bearbeiten";
-App::$strings["Page link"] = "Seiten-Link";
-App::$strings["Edit Webpage"] = "Webseite bearbeiten";
-App::$strings["Create a new channel"] = "Neuen Kanal anlegen";
-App::$strings["Channel Manager"] = "Kanal-Manager";
-App::$strings["Current Channel"] = "Aktueller Kanal";
-App::$strings["Switch to one of your channels by selecting it."] = "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst.";
-App::$strings["Default Channel"] = "Standard Kanal";
-App::$strings["Make Default"] = "Zum Standard machen";
-App::$strings["%d new messages"] = "%d neue Nachrichten";
-App::$strings["%d new introductions"] = "%d neue Vorstellungen";
-App::$strings["Delegated Channel"] = "Delegierte Kanäle";
-App::$strings["Add Card"] = "Karte hinzufügen";
-App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken";
-App::$strings["About this site"] = "Ãœber diese Seite";
-App::$strings["Site Name"] = "Seitenname";
-App::$strings["Administrator"] = "Administrator";
-App::$strings["Terms of Service"] = "Nutzungsbedingungen";
-App::$strings["Software and Project information"] = "Software und Projektinformationen";
-App::$strings["This site is powered by \$Projectname"] = "Diese Website wird bereitgestellt durch \$Projectname";
-App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Verbundene, dezentrale Netzwerk- und Identitätsdienste, ermöglicht mittels Zot";
-App::$strings["Version %s"] = "Version %s";
-App::$strings["Project homepage"] = "Projekt-Website";
-App::$strings["Developer homepage"] = "Entwickler-Website";
-App::$strings["No ratings"] = "Keine Bewertungen";
-App::$strings["Ratings"] = "Bewertungen";
-App::$strings["Rating: "] = "Bewertung: ";
-App::$strings["Website: "] = "Webseite: ";
-App::$strings["Description: "] = "Beschreibung: ";
-App::$strings["Import Webpage Elements"] = "Webseitenelemente importieren";
-App::$strings["Import selected"] = "Import ausgewählt";
-App::$strings["Export Webpage Elements"] = "Webseitenelemente exportieren";
-App::$strings["Export selected"] = "Exportieren ausgewählt";
-App::$strings["Webpages"] = "Webseiten";
-App::$strings["Actions"] = "Aktionen";
-App::$strings["Page Link"] = "Seiten-Link";
-App::$strings["Page Title"] = "Seitentitel";
-App::$strings["Invalid file type."] = "Ungültiger Dateityp.";
-App::$strings["Error opening zip file"] = "Fehler beim Öffnen der ZIP-Datei";
-App::$strings["Invalid folder path."] = "Ungültiger Ordnerpfad.";
-App::$strings["No webpage elements detected."] = "Keine Webseitenelemente erkannt.";
-App::$strings["Import complete."] = "Import abgeschlossen.";
-App::$strings["Channel name changes are not allowed within 48 hours of changing the account password."] = "Innerhalb von 48 Stunden nach einer Änderung des Konto-Passworts können Kanäle nicht umbenannt werden.";
-App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
-App::$strings["Change channel nickname/address"] = "Kanalname/-adresse ändern";
-App::$strings["Any/all connections on other networks will be lost!"] = "Jegliche/alle Verbindungen zu anderen Netzwerken gehen verloren!";
-App::$strings["New channel address"] = "Neue Kanaladresse";
-App::$strings["Rename Channel"] = "Kanal umbenennen";
-App::$strings["Item is not editable"] = "Element kann nicht bearbeitet werden.";
-App::$strings["Edit post"] = "Bearbeite Beitrag";
-App::$strings["Invalid message"] = "Ungültige Beitrags-ID (mid)";
-App::$strings["no results"] = "keine Ergebnisse";
-App::$strings["channel sync processed"] = "Kanal-Sync verarbeitet";
-App::$strings["queued"] = "zur Warteschlange hinzugefügt";
-App::$strings["posted"] = "zugestellt";
-App::$strings["accepted for delivery"] = "für Zustellung akzeptiert";
-App::$strings["updated"] = "aktualisiert";
-App::$strings["update ignored"] = "Aktualisierung ignoriert";
-App::$strings["permission denied"] = "Zugriff verweigert";
-App::$strings["recipient not found"] = "Empfänger nicht gefunden.";
-App::$strings["mail recalled"] = "Mail widerrufen";
-App::$strings["duplicate mail received"] = "Doppelte Mail erhalten";
-App::$strings["mail delivered"] = "Mail zugestellt";
-App::$strings["Delivery report for %1\$s"] = "Zustellungsbericht für %1\$s";
-App::$strings["Options"] = "Optionen";
-App::$strings["Redeliver"] = "Erneut zustellen";
-App::$strings["Failed to create source. No channel selected."] = "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt.";
-App::$strings["Source created."] = "Quelle erstellt.";
-App::$strings["Source updated."] = "Quelle aktualisiert.";
-App::$strings["*"] = "*";
-App::$strings["Channel Sources"] = "Kanal-Quellen";
-App::$strings["Manage remote sources of content for your channel."] = "Externe Inhaltsquellen für Deinen Kanal verwalten.";
-App::$strings["New Source"] = "Neue Quelle";
-App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals.";
-App::$strings["Only import content with these words (one per line)"] = "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten";
-App::$strings["Leave blank to import all public content"] = "Leer lassen, um alle öffentlichen Beiträge zu importieren";
-App::$strings["Channel Name"] = "Name des Kanals";
-App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Füge die folgenden Kategorien zu Beiträgen, die aus dieser Quelle importiert werden, hinzu (kommagetrennt)";
-App::$strings["Source not found."] = "Quelle nicht gefunden.";
-App::$strings["Edit Source"] = "Quelle bearbeiten";
-App::$strings["Delete Source"] = "Quelle löschen";
-App::$strings["Source removed"] = "Quelle gelöscht";
-App::$strings["Unable to remove source."] = "Konnte die Quelle nicht löschen.";
-App::$strings["Like/Dislike"] = "Mögen/Nicht mögen";
-App::$strings["This action is restricted to members."] = "Diese Aktion kann nur von Mitgliedern ausgeführt werden.";
-App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner \$Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues \$Projectname-Mitglied</a>.";
-App::$strings["Invalid request."] = "Ungültige Anfrage.";
-App::$strings["channel"] = "Kanal";
-App::$strings["thing"] = "Sache";
-App::$strings["Channel unavailable."] = "Kanal nicht vorhanden.";
-App::$strings["Previous action reversed."] = "Die vorherige Aktion wurde rückgängig gemacht.";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s nicht";
-App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s stimmt %2\$ss %3\$s zu";
-App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s lehnt %2\$ss %3\$s ab";
-App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s enthält sich zu %2\$ss %3\$s";
-App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil";
-App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s nicht teil";
-App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt vielleicht an %2\$ss %3\$s teil";
-App::$strings["Action completed."] = "Aktion durchgeführt.";
-App::$strings["Thank you."] = "Vielen Dank.";
-App::$strings["%d rating"] = array(
- 0 => "%d Bewertung",
- 1 => "%d Bewertungen",
-);
-App::$strings["Gender: "] = "Geschlecht:";
-App::$strings["Status: "] = "Status:";
-App::$strings["Homepage: "] = "Webseite:";
-App::$strings["Age:"] = "Alter:";
-App::$strings["Location:"] = "Ort:";
-App::$strings["Description:"] = "Beschreibung:";
-App::$strings["Hometown:"] = "Heimatstadt:";
-App::$strings["About:"] = "Ãœber:";
-App::$strings["Connect"] = "Verbinden";
-App::$strings["Public Forum:"] = "Öffentliches Forum:";
-App::$strings["Keywords: "] = "Schlüsselwörter:";
-App::$strings["Don't suggest"] = "Nicht vorschlagen";
-App::$strings["Common connections (estimated):"] = "Gemeinsame Verbindungen (geschätzt):";
-App::$strings["Global Directory"] = "Globales Verzeichnis";
-App::$strings["Local Directory"] = "Lokales Verzeichnis";
-App::$strings["Finding:"] = "Ergebnisse:";
-App::$strings["Channel Suggestions"] = "Kanal-Vorschläge";
-App::$strings["next page"] = "nächste Seite";
-App::$strings["previous page"] = "vorherige Seite";
-App::$strings["Sort options"] = "Sortieroptionen";
-App::$strings["Alphabetic"] = "alphabetisch";
-App::$strings["Reverse Alphabetic"] = "Entgegengesetzt alphabetisch";
-App::$strings["Newest to Oldest"] = "Neueste zuerst";
-App::$strings["Oldest to Newest"] = "Älteste zuerst";
-App::$strings["No entries (some entries may be hidden)."] = "Keine Einträge gefunden (einige könnten versteckt sein).";
-App::$strings["Xchan Lookup"] = "Xchan-Suche";
-App::$strings["Lookup xchan beginning with (or webbie): "] = "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal.";
-App::$strings["Ignore/Hide"] = "Ignorieren/Verstecken";
-App::$strings["Unable to find your hub."] = "Konnte Deinen Server nicht finden.";
-App::$strings["Post successful."] = "Veröffentlichung erfolgreich.";
-App::$strings["Unable to lookup recipient."] = "Konnte den Empfänger nicht finden.";
-App::$strings["Unable to communicate with requested channel."] = "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen.";
-App::$strings["Cannot verify requested channel."] = "Verifizierung des angeforderten Kanals fehlgeschlagen.";
-App::$strings["Selected channel has private message restrictions. Send failed."] = "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen.";
-App::$strings["Messages"] = "Nachrichten";
-App::$strings["message"] = "Nachricht";
-App::$strings["Message recalled."] = "Nachricht widerrufen.";
-App::$strings["Conversation removed."] = "Unterhaltung gelöscht.";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM";
-App::$strings["Requested channel is not in this network"] = "Angeforderter Kanal ist nicht in diesem Netzwerk.";
-App::$strings["Send Private Message"] = "Private Nachricht senden";
-App::$strings["To:"] = "An:";
-App::$strings["Subject:"] = "Betreff:";
-App::$strings["Attach file"] = "Datei anhängen";
-App::$strings["Send"] = "Absenden";
-App::$strings["Set expiration date"] = "Verfallsdatum";
-App::$strings["Delete message"] = "Nachricht löschen";
-App::$strings["Delivery report"] = "Zustellungsbericht";
-App::$strings["Recall message"] = "Nachricht widerrufen";
-App::$strings["Message has been recalled."] = "Die Nachricht wurde widerrufen.";
-App::$strings["Delete Conversation"] = "Unterhaltung löschen";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten.";
-App::$strings["Send Reply"] = "Antwort senden";
-App::$strings["Your message for %s (%s):"] = "Deine Nachricht für %s (%s):";
-App::$strings["Public Hubs"] = "Öffentliche Hubs";
-App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im \$Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen.";
-App::$strings["Hub URL"] = "Hub-URL";
-App::$strings["Access Type"] = "Zugriffstyp";
-App::$strings["Registration Policy"] = "Registrierungsrichtlinien";
-App::$strings["Stats"] = "Statistiken";
-App::$strings["Software"] = "Software";
-App::$strings["Rate"] = "Bewerten";
-App::$strings["webpage"] = "Webseite";
-App::$strings["block"] = "Block";
-App::$strings["layout"] = "Layout";
-App::$strings["menu"] = "Menü";
-App::$strings["%s element installed"] = "Element für %s installiert";
-App::$strings["%s element installation failed"] = "Installation des Elements %s fehlgeschlagen";
-App::$strings["Select a bookmark folder"] = "Lesezeichenordner wählen";
-App::$strings["Save Bookmark"] = "Lesezeichen speichern";
-App::$strings["URL of bookmark"] = "URL des Lesezeichens";
-App::$strings["Or enter new bookmark folder name"] = "Oder gib einen neuen Namen für den Lesezeichenordner ein";
-App::$strings["Enter a folder name"] = "Gib einen Ordnernamen ein";
-App::$strings["or select an existing folder (doubleclick)"] = "oder wähle einen vorhanden Ordner aus (Doppelklick)";
-App::$strings["Save to Folder"] = "In Ordner speichern";
-App::$strings["Fetching URL returns error: %1\$s"] = "Abrufen der URL gab einen Fehler zurück: %1\$s";
-App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal.";
-App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen.";
-App::$strings["Passwords do not match."] = "Passwörter stimmen nicht überein.";
-App::$strings["Registration successful. Please check your email for validation instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet.";
-App::$strings["Registration successful. Continue to create your first channel..."] = "Registrierung erfolgreich. Fahre fort, indem Du Deinen ersten Kanal anlegst...";
-App::$strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden.";
-App::$strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden.";
-App::$strings["Registration on this hub is disabled."] = "Die Registrierung auf diesem Hub ist nicht möglich.";
-App::$strings["Registration on this hub is by approval only."] = "Eine Registrierung auf diesem Hub erfordert die Zustimmung durch den Administrator.";
-App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registriere Dich auf einem der anderen verbundenen Hubs.</a>";
-App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal.";
-App::$strings["I accept the %s for this website"] = "Ich akzeptiere die %s für diese Webseite";
-App::$strings["I am over %s years of age and accept the %s for this website"] = "Ich bin älter als %s Jahre und akzeptiere die %s dieser Website.";
-App::$strings["Your email address"] = "Ihre E-Mail Adresse";
-App::$strings["Choose a password"] = "Passwort";
-App::$strings["Please re-enter your password"] = "Bitte gib Dein Passwort noch einmal ein";
-App::$strings["Please enter your invitation code"] = "Bitte trage Deinen Einladungs-Code ein";
-App::$strings["no"] = "nein";
-App::$strings["yes"] = "ja";
-App::$strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich.";
-App::$strings["Register"] = "Registrieren";
-App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Absenden des Formulars. Wenn Du auf eine Login-Seite zurückgeleitet wirst, prüfe bitte Deinen Posteingang auf neue Mails mit entsprechenden Hinweisen.";
-App::$strings["Cover Photos"] = "Cover Foto";
-App::$strings["female"] = "weiblich";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s hat ihr %2\$s aktualisiert";
-App::$strings["male"] = "männlich";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s hat sein %2\$s aktualisiert";
-App::$strings["%1\$s updated their %2\$s"] = "%1\$s hat sein/ihr %2\$s aktualisiert";
-App::$strings["cover photo"] = "Cover Foto";
-App::$strings["Upload Cover Photo"] = "Cover Foto hochladen";
-App::$strings["Documentation Search"] = "Suche in der Dokumentation";
-App::$strings["About"] = "Ãœber";
-App::$strings["Administrators"] = "Administratoren";
-App::$strings["Developers"] = "Entwickler";
-App::$strings["Tutorials"] = "Tutorials";
-App::$strings["\$Projectname Documentation"] = "\$Projectname-Dokumentation";
-App::$strings["Contents"] = "Inhalt";
-App::$strings["Article"] = "Artikel";
-App::$strings["Item has been removed."] = "Der Beitrag wurde entfernt.";
-App::$strings["Tag removed"] = "Schlagwort entfernt";
-App::$strings["Remove Item Tag"] = "Schlagwort entfernen";
-App::$strings["Select a tag to remove: "] = "Schlagwort zum Entfernen auswählen:";
-App::$strings["No such group"] = "Gruppe nicht gefunden";
-App::$strings["No such channel"] = "Kanal nicht gefunden";
-App::$strings["forum"] = "Forum";
-App::$strings["Search Results For:"] = "Suchergebnisse für:";
-App::$strings["Privacy group is empty"] = "Gruppe ist leer";
-App::$strings["Privacy group: "] = "Gruppe:";
-App::$strings["Invalid connection."] = "Ungültige Verbindung.";
-App::$strings["Invalid channel."] = "Ungültiger Kanal.";
-App::$strings["network"] = "Netzwerk";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "Willkommen auf %s";
-App::$strings["Permission Denied."] = "Zugriff verweigert.";
-App::$strings["File not found."] = "Datei nicht gefunden.";
-App::$strings["Edit file permissions"] = "Dateiberechtigungen bearbeiten";
-App::$strings["Set/edit permissions"] = "Berechtigungen setzen/ändern";
-App::$strings["Include all files and sub folders"] = "Alle Dateien und Unterverzeichnisse einbinden";
-App::$strings["Return to file list"] = "Zurück zur Dateiliste";
-App::$strings["Copy/paste this code to attach file to a post"] = "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken";
-App::$strings["Share this file"] = "Diese Datei freigeben";
-App::$strings["Show URL to this file"] = "URL zu dieser Datei anzeigen";
-App::$strings["Show in your contacts shared folder"] = "Im geteilten Ordner Deiner Kontakte anzeigen";
-App::$strings["No channel."] = "Kein Kanal.";
-App::$strings["No connections in common."] = "Keine gemeinsamen Verbindungen.";
-App::$strings["View Common Connections"] = "Zeige gemeinsame Verbindungen";
-App::$strings["No connections."] = "Keine Verbindungen.";
-App::$strings["Visit %s's profile [%s]"] = "%ss Profil [%s] besuchen";
-App::$strings["View Connections"] = "Verbindungen anzeigen";
-App::$strings["Blocked accounts"] = "Blockierte Benutzerkonten";
-App::$strings["Expired accounts"] = "Abgelaufene Benutzerkonten";
-App::$strings["Expiring accounts"] = "Ablaufende Benutzerkonten";
-App::$strings["Clones"] = "Klone";
-App::$strings["Message queues"] = "Nachrichten-Warteschlangen";
-App::$strings["Your software should be updated"] = "Die installierte Software sollte aktualisiert werden";
-App::$strings["Summary"] = "Zusammenfassung";
-App::$strings["Registered accounts"] = "Registrierte Konten";
-App::$strings["Pending registrations"] = "Ausstehende Registrierungen";
-App::$strings["Registered channels"] = "Registrierte Kanäle";
-App::$strings["Active plugins"] = "Aktive Plug-Ins";
-App::$strings["Version"] = "Version";
-App::$strings["Repository version (master)"] = "Repository-Version (master)";
-App::$strings["Repository version (dev)"] = "Repository-Version (dev)";
-App::$strings["No service class restrictions found."] = "Keine Dienstklassenbeschränkungen gefunden.";
-App::$strings["Website:"] = "Webseite:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Kanal [%s] (auf diesem Server noch unbekannt)";
-App::$strings["Rating (this information is public)"] = "Bewertung (öffentlich sichtbar)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)";
-App::$strings["Edit Card"] = "Karte bearbeiten";
-App::$strings["No valid account found."] = "Kein gültiges Konto gefunden.";
-App::$strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails.";
-App::$strings["Site Member (%s)"] = "Nutzer (%s)";
-App::$strings["Password reset requested at %s"] = "Passwort-Rücksetzung auf %s angefordert";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen.";
-App::$strings["Password Reset"] = "Zurücksetzen des Kennworts";
-App::$strings["Your password has been reset as requested."] = "Dein Passwort wurde wie angefordert neu erstellt.";
-App::$strings["Your new password is"] = "Dein neues Passwort lautet";
-App::$strings["Save or copy your new password - and then"] = "Speichere oder kopiere Dein neues Passwort – und dann";
-App::$strings["click here to login"] = "Klicke hier, um dich anzumelden";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden.";
-App::$strings["Your password has changed at %s"] = "Auf %s wurde Dein Passwort geändert";
-App::$strings["Forgot your Password?"] = "Kennwort vergessen?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail.";
-App::$strings["Email Address"] = "E-Mail Adresse";
-App::$strings["Mark all seen"] = "Alle als gelesen markieren";
-App::$strings["0. Beginner/Basic"] = "0. Einsteiger/Basis";
-App::$strings["1. Novice - not skilled but willing to learn"] = "1. Anfänger - unerfahren, aber bereit zu lernen";
-App::$strings["2. Intermediate - somewhat comfortable"] = "2. Fortgeschritten - relativ komfortabel";
-App::$strings["3. Advanced - very comfortable"] = "3. Fortgeschritten - sehr komfortabel";
-App::$strings["4. Expert - I can write computer code"] = "4. Experte - Ich kann Computercode schreiben";
-App::$strings["5. Wizard - I probably know more than you do"] = "5. Zauberer - ich kann wahrscheinlich mehr als Du";
-App::$strings["Site Admin"] = "Hub-Administration";
-App::$strings["Report Bug"] = "Fehler melden";
-App::$strings["View Bookmarks"] = "Lesezeichen ansehen";
-App::$strings["My Chatrooms"] = "Meine Chaträume";
-App::$strings["Firefox Share"] = "Teilen-Knopf für Firefox";
-App::$strings["Remote Diagnostics"] = "Ferndiagnose";
-App::$strings["Suggest Channels"] = "Kanäle vorschlagen";
-App::$strings["Login"] = "Anmelden";
-App::$strings["Activity"] = "Aktivität";
-App::$strings["Wiki"] = "Wiki";
-App::$strings["Channel Home"] = "Mein Kanal";
-App::$strings["Events"] = "Termine";
-App::$strings["Directory"] = "Verzeichnis";
-App::$strings["Mail"] = "Mail";
-App::$strings["Chat"] = "Chat";
-App::$strings["Probe"] = "Testen";
-App::$strings["Suggest"] = "Empfehlen";
-App::$strings["Random Channel"] = "Zufälliger Kanal";
-App::$strings["Invite"] = "Einladen";
-App::$strings["Features"] = "Funktionen";
-App::$strings["Language"] = "Sprache";
-App::$strings["Post"] = "Beitrag schreiben";
-App::$strings["Profile Photo"] = "Profilfoto";
-App::$strings["Purchase"] = "Kaufen";
-App::$strings["Undelete"] = "Wieder hergestellt";
-App::$strings["Add to app-tray"] = "Zum App-Menü hinzufügen";
-App::$strings["Remove from app-tray"] = "Aus dem App-Menü entfernen";
-App::$strings["Pin to navbar"] = "An Navigationsleiste anpinnen";
-App::$strings["Unpin from navbar"] = "Von Navigationsleiste entfernen";
-App::$strings["__ctx:permcat__ default"] = "Standard";
-App::$strings["__ctx:permcat__ follower"] = "Abonnent";
-App::$strings["__ctx:permcat__ contributor"] = "Beitragender";
-App::$strings["__ctx:permcat__ publisher"] = "Autor";
-App::$strings["(No Title)"] = "(Kein Titel)";
-App::$strings["Wiki page create failed."] = "Anlegen der Wiki-Seite fehlgeschlagen.";
-App::$strings["Wiki not found."] = "Wiki nicht gefunden.";
-App::$strings["Destination name already exists"] = "Zielname bereits vorhanden";
-App::$strings["Page not found"] = "Seite nicht gefunden";
-App::$strings["Error reading page content"] = "Fehler beim Lesen des Seiteninhalts";
-App::$strings["Error reading wiki"] = "Fehler beim Lesen des Wiki";
-App::$strings["Page update failed."] = "Seitenaktualisierung fehlgeschlagen.";
-App::$strings["Nothing deleted"] = "Nichts gelöscht";
-App::$strings["Compare: object not found."] = "Vergleichen: Objekt nicht gefunden.";
-App::$strings["Page updated"] = "Seite aktualisiert";
-App::$strings["Untitled"] = "Ohne Titel";
-App::$strings["Wiki resource_id required for git commit"] = "Die resource_id des Wiki wird benötigt für den git commit.";
-App::$strings["__ctx:wiki_history__ Message"] = "Nachricht";
-App::$strings["Different viewers will see this text differently"] = "Verschiedene Betrachter werden diesen Text unterschiedlich sehen";
-App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
-App::$strings["Only me"] = "Nur ich";
-App::$strings["Public"] = "Öffentlich";
-App::$strings["Anybody in the \$Projectname network"] = "Jeder innerhalb des \$Projectname Netzwerks";
-App::$strings["Any account on %s"] = "Jedes Nutzerkonto auf %s";
-App::$strings["Any of my connections"] = "Alle meine Verbindungen";
-App::$strings["Only connections I specifically allow"] = "Nur Verbindungen, denen ich es explizit erlaube";
-App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)";
-App::$strings["Any connections including those who haven't yet been approved"] = "Alle Verbindungen einschließlich der noch nicht bestätigten";
-App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream).";
-App::$strings["This is your default setting for who can view your default channel profile"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils.";
-App::$strings["This is your default setting for who can view your connections"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen.";
-App::$strings["This is your default setting for who can view your file storage and photos"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos.";
-App::$strings["This is your default setting for the audience of your webpages"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten.";
-App::$strings["Missing room name"] = "Der Chatraum hat keinen Namen";
-App::$strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
-App::$strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
-App::$strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
-App::$strings["Room is full"] = "Der Chatraum ist voll";
-App::$strings["\$Projectname Notification"] = "\$Projectname-Benachrichtigung";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Danke.";
-App::$strings["%s Administrator"] = "der Administrator von %s";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Benachrichtigung] Neue Mail empfangen auf %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s hat Dir %2\$s geschickt.";
-App::$strings["a private message"] = "eine private Nachricht";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]einen %4\$s[/zrl] kommentiert";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]%4\$ss %5\$s[/zrl] kommentiert";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen %4\$s[/zrl] kommentiert";
-App::$strings["[\$Projectname:Notify] Moderated Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Benachrichtigung] Moderierter Kommantar in Unterhaltung #%1\$d von %2\$s";
-App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Benachrichtigung] Kommentar in Unterhaltung #%1\$d von %2\$s";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s hat eine Unterhaltung kommentiert, der Du folgst.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren.";
-App::$strings["Please visit %s to approve or reject this comment."] = "Bitte besuche %s, um diesen Kommentar anzunehmen oder abzulehnen.";
-App::$strings["%1\$s, %2\$s liked [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gefällt [zrl=%3\$s]dein %4\$s[/zrl]";
-App::$strings["[\$Projectname:Notify] Like received to conversation #%1\$d by %2\$s"] = "[\$Projectname:Benachrichtigung] Gefällt mir in Unterhaltung #%1\$d von %2\$s erhalten";
-App::$strings["%1\$s, %2\$s liked an item/conversation you created."] = "%1\$s, %2\$s gefällt ein Beitrag oder eine Unterhaltung von Dir";
-App::$strings["[\$Projectname:Notify] %s posted to your profile wall"] = "[\$Projectname:Benachrichtigung] %s schrieb auf Deine Pinnwand";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s hat auf Deine Pinnwand auf %3\$s geschrieben";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s hat auf [zrl=%3\$s]Deine Pinnwand[/zrl] geschrieben";
-App::$strings["[\$Projectname:Notify] %s tagged you"] = "[\$Projectname:Benachrichtigung] %s hat Dich erwähnt";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s erwähnt";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]hat Dich erwähnt[/zrl].";
-App::$strings["[\$Projectname:Notify] %1\$s poked you"] = "[\$Projectname:Benachrichtigung] %1\$s hat Dich angestupst";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s angestupst";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]hat Dich angestupst[/zrl].";
-App::$strings["[\$Projectname:Notify] %s tagged your post"] = "[\$Projectname:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s hat Deinen Beitrag auf %3\$s verschlagwortet";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen Beitrag[/zrl] verschlagwortet";
-App::$strings["[\$Projectname:Notify] Introduction received"] = "[\$Projectname:Benachrichtigung] Verbindungsanfrage erhalten";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, Du hast eine neue Verbindungsanfrage von '%2\$s' auf %3\$s erhalten";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, Du hast [zrl=%2\$s]eine neue Verbindungsanfrage[/zrl] von %3\$s erhalten.";
-App::$strings["You may visit their profile at %s"] = "Du kannst Dir das Profil unter %s ansehen";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen.";
-App::$strings["[\$Projectname:Notify] Friend suggestion received"] = "[\$Projectname:Benachrichtigung] Freundschaftsvorschlag erhalten";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, Du hast einen Kontaktvorschlag von „%2\$s“ auf %3\$s erhalten";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, Du hast [zrl=%2\$s]einen Kontaktvorschlag[/zrl] für %3\$s von %4\$s erhalten.";
-App::$strings["Name:"] = "Name:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
-App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Benachrichtigung]";
-App::$strings["created a new post"] = "Neuer Beitrag wurde erzeugt";
-App::$strings["commented on %s's post"] = "hat %s's Beitrag kommentiert";
-App::$strings["Wiki updated successfully"] = "Wiki erfolgreich aktualisiert";
-App::$strings["Wiki files deleted successfully"] = "Wiki-Dateien erfolgreich gelöscht";
-App::$strings["Update Error at %s"] = "Aktualisierungsfehler auf %s";
-App::$strings["Update %s failed. See error logs."] = "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen.";
-App::$strings["Private Message"] = "Private Nachricht";
-App::$strings["Select"] = "Auswählen";
-App::$strings["I will attend"] = "Ich werde teilnehmen";
-App::$strings["I will not attend"] = "Ich werde nicht teilnehmen";
-App::$strings["I might attend"] = "Ich werde vielleicht teilnehmen";
-App::$strings["I agree"] = "Ich stimme zu";
-App::$strings["I disagree"] = "Ich lehne ab";
-App::$strings["I abstain"] = "Ich enthalte mich";
-App::$strings["Add Star"] = "Stern hinzufügen";
-App::$strings["Remove Star"] = "Stern entfernen";
-App::$strings["Toggle Star Status"] = "Markierungsstatus (Stern) umschalten";
-App::$strings["starred"] = "markiert";
-App::$strings["Message signature validated"] = "Signatur überprüft";
-App::$strings["Message signature incorrect"] = "Signatur nicht korrekt";
-App::$strings["Add Tag"] = "Tag hinzufügen";
-App::$strings["like"] = "mag";
-App::$strings["dislike"] = "verurteile";
-App::$strings["Share This"] = "Teilen";
-App::$strings["share"] = "Teilen";
-App::$strings["Delivery Report"] = "Zustellungsbericht";
-App::$strings["%d comment"] = array(
- 0 => "%d Kommentar",
- 1 => "%d Kommentare",
-);
-App::$strings["View %s's profile - %s"] = "Schaue Dir %ss Profil an – %s";
-App::$strings["to"] = "an";
-App::$strings["via"] = "via";
-App::$strings["Wall-to-Wall"] = "Wall-to-Wall";
-App::$strings["via Wall-To-Wall:"] = "via Wall-To-Wall:";
-App::$strings["from %s"] = "via %s";
-App::$strings["last edited: %s"] = "zuletzt bearbeitet: %s";
-App::$strings["Expires: %s"] = "Verfällt: %s";
-App::$strings["Attend"] = "Zusagen";
-App::$strings["Attendance Options"] = "Zusageoptionen";
-App::$strings["Vote"] = "Abstimmen";
-App::$strings["Voting Options"] = "Abstimmungsoptionen";
-App::$strings["Save Bookmarks"] = "Favoriten speichern";
-App::$strings["Add to Calendar"] = "Zum Kalender hinzufügen";
-App::$strings["This is an unsaved preview"] = "Dies ist eine nicht gespeicherte Vorschau";
-App::$strings["%s show all"] = "%s mehr anzeigen";
-App::$strings["Bold"] = "Fett";
-App::$strings["Italic"] = "Kursiv";
-App::$strings["Underline"] = "Unterstrichen";
-App::$strings["Quote"] = "Zitat";
-App::$strings["Code"] = "Code";
-App::$strings["Image"] = "Bild";
-App::$strings["Attach File"] = "Datei anhängen";
-App::$strings["Insert Link"] = "Link einfügen";
-App::$strings["Video"] = "Video";
-App::$strings["Your full name (required)"] = "Ihr vollständiger Name (erforderlich)";
-App::$strings["Your email address (required)"] = "Ihre E-Mail-Adresse (erforderlich)";
-App::$strings["Your website URL (optional)"] = "Ihre Webseiten-URL (optional)";
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut.";
-App::$strings["Welcome %s. Remote authentication successful."] = "Willkommen %s. Entfernte Authentifizierung erfolgreich.";
-App::$strings["parent"] = "Ãœbergeordnetes Verzeichnis";
-App::$strings["Collection"] = "Sammlung";
-App::$strings["Principal"] = "Prinzipal";
-App::$strings["Addressbook"] = "Adressbuch";
-App::$strings["Calendar"] = "Kalender";
-App::$strings["Schedule Inbox"] = "Posteingang für überwachte Kalender";
-App::$strings["Schedule Outbox"] = "Postausgang für überwachte Kalender";
-App::$strings["Total"] = "Summe";
-App::$strings["Shared"] = "Geteilt";
-App::$strings["You are using %1\$s of your available file storage."] = "Sie verwenden %1\$s von Ihrem verfügbaren Dateispeicher.";
-App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Sie verwenden %1\$s von %2\$s verfügbarem Dateispeicher. (%3\$s&#37;)";
-App::$strings["WARNING:"] = "WARNUNG:";
-App::$strings["Create new folder"] = "Neuen Ordner anlegen";
-App::$strings["Upload file"] = "Datei hochladen";
-App::$strings["Drop files here to immediately upload"] = "Dateien zum sofortigen Hochladen hier fallen lassen";
-App::$strings["Forums"] = "Foren";
-App::$strings["Select Channel"] = "Kanal auswählen";
-App::$strings["Read-write"] = "Lesen-schreiben";
-App::$strings["Read-only"] = "Nur Lesen";
-App::$strings["My Calendars"] = "Meine Kalender";
-App::$strings["Shared Calendars"] = "Geteilte Kalender";
-App::$strings["Share this calendar"] = "Diesen Kalender teilen";
-App::$strings["Calendar name and color"] = "Kalendername und -farbe";
-App::$strings["Create new calendar"] = "Neuen Kalender erstellen";
-App::$strings["Calendar Name"] = "Kalendername";
-App::$strings["Calendar Tools"] = "Kalenderwerkzeuge";
-App::$strings["Import calendar"] = "Kalender importieren";
-App::$strings["Select a calendar to import to"] = "Kalender zum Hineinimportieren auswählen";
-App::$strings["Addressbooks"] = "Adressbücher";
-App::$strings["Addressbook name"] = "Adressbuchname";
-App::$strings["Create new addressbook"] = "Neues Adressbuch erstellen";
-App::$strings["Addressbook Name"] = "Adressbuchname";
-App::$strings["Addressbook Tools"] = "Adressbuchwerkzeuge";
-App::$strings["Import addressbook"] = "Adressbuch importieren";
-App::$strings["Select an addressbook to import to"] = "Adressbuch zum Hineinimportieren auswählen";
-App::$strings["Categories"] = "Kategorien";
-App::$strings["Everything"] = "Alles";
-App::$strings["Events Tools"] = "Kalenderwerkzeuge";
-App::$strings["Export Calendar"] = "Kalender exportieren";
-App::$strings["Import Calendar"] = "Kalender importieren";
-App::$strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
-App::$strings["HQ Control Panel"] = "HQ-Einstellungen";
-App::$strings["Create a new post"] = "Neuen Beitrag erstellen";
-App::$strings["Private Mail Menu"] = "Private Nachrichten";
-App::$strings["Combined View"] = "Kombinierte Anzeige";
-App::$strings["Inbox"] = "Eingang";
-App::$strings["Outbox"] = "Ausgang";
-App::$strings["New Message"] = "Neue Nachricht";
-App::$strings["Chatrooms"] = "Chaträume";
-App::$strings["Overview"] = "Ãœbersicht";
-App::$strings["Rating Tools"] = "Bewertungswerkzeuge";
-App::$strings["Rate Me"] = "Bewerte mich";
-App::$strings["View Ratings"] = "Bewertungen ansehen";
-App::$strings["__ctx:widget__ Activity"] = "Aktivität";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen.";
-App::$strings["Add New Connection"] = "Neue Verbindung hinzufügen";
-App::$strings["Enter channel address"] = "Adresse des Kanals eingeben";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Beispiele: bob@beispiel.com, http://beispiel.com/barbara";
-App::$strings["Wiki List"] = "Wikiliste";
-App::$strings["Archives"] = "Archive";
-App::$strings["Received Messages"] = "Erhaltene Nachrichten";
-App::$strings["Sent Messages"] = "Gesendete Nachrichten";
-App::$strings["Conversations"] = "Konversationen";
-App::$strings["No messages."] = "Keine Nachrichten.";
-App::$strings["Delete conversation"] = "Unterhaltung löschen";
-App::$strings["Chat Members"] = "Chatmitglieder";
-App::$strings["photo/image"] = "Foto/Bild";
-App::$strings["Remove term"] = "Eintrag löschen";
-App::$strings["Saved Searches"] = "Gespeicherte Suchanfragen";
-App::$strings["add"] = "hinzufügen";
-App::$strings["Notes"] = "Notizen";
-App::$strings["Add new page"] = "Neue Seite hinzufügen";
-App::$strings["Wiki Pages"] = "Wikiseiten";
-App::$strings["Page name"] = "Seitenname";
-App::$strings["Refresh"] = "Aktualisieren";
-App::$strings["Tasks"] = "Aufgaben";
-App::$strings["Suggestions"] = "Vorschläge";
-App::$strings["See more..."] = "Mehr anzeigen …";
-App::$strings["Saved Folders"] = "Gespeicherte Ordner";
-App::$strings["Click to show more"] = "Klick, um mehr anzuzeigen";
-App::$strings["Member registrations waiting for confirmation"] = "Nutzer-Anmeldungen, die auf Bestätigung warten";
-App::$strings["Inspect queue"] = "Warteschlange kontrollieren";
-App::$strings["DB updates"] = "DB-Aktualisierungen";
-App::$strings["Admin"] = "Administration";
-App::$strings["Plugin Features"] = "Plug-In Funktionen";
-App::$strings["Account settings"] = "Konto-Einstellungen";
-App::$strings["Channel settings"] = "Kanal-Einstellungen";
-App::$strings["Additional features"] = "Zusätzliche Funktionen";
-App::$strings["Feature/Addon settings"] = "Plugin-Einstellungen";
-App::$strings["Display settings"] = "Anzeige-Einstellungen";
-App::$strings["Manage locations"] = "Klon-Adressen verwalten";
-App::$strings["Export channel"] = "Kanal exportieren";
-App::$strings["Connected apps"] = "Verbundene Apps";
-App::$strings["Permission Groups"] = "Berechtigungsrollen";
-App::$strings["Premium Channel Settings"] = "Premium-Kanal-Einstellungen";
-App::$strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms";
-App::$strings["New Network Activity"] = "Neue Netzwerk-Aktivitäten";
-App::$strings["New Network Activity Notifications"] = "Benachrichtigungen für neue Netzwerk-Aktivitäten";
-App::$strings["View your network activity"] = "Zeige Deine Netzwerk-Aktivitäten";
-App::$strings["Mark all notifications read"] = "Alle Benachrichtigungen als gesehen markieren";
-App::$strings["Show new posts only"] = "Zeige nur neue Beiträge";
-App::$strings["New Home Activity"] = "Neue Kanal-Aktivitäten";
-App::$strings["New Home Activity Notifications"] = "Benachrichtigungen für neue Kanal-Aktivitäten";
-App::$strings["View your home activity"] = "Zeige Deine Kanal-Aktivitäten";
-App::$strings["Mark all notifications seen"] = "Alle Benachrichtigungen als gesehen markieren";
-App::$strings["New Mails"] = "Neue Mails";
-App::$strings["New Mails Notifications"] = "Benachrichtigungen für neue Mails";
-App::$strings["View your private mails"] = "Zeige Deine persönlichen Mails";
-App::$strings["Mark all messages seen"] = "Alle Mails als gelesen markieren";
-App::$strings["New Events"] = "Neue Termine";
-App::$strings["New Events Notifications"] = "Benachrichtigungen für neue Termine";
-App::$strings["View events"] = "Termine ansehen";
-App::$strings["Mark all events seen"] = "Markiere alle Termine als gesehen";
-App::$strings["New Connections Notifications"] = "Benachrichtigungen für neue Verbindungen";
-App::$strings["View all connections"] = "Zeige alle Verbindungen";
-App::$strings["New Files"] = "Neue Dateien";
-App::$strings["New Files Notifications"] = "Benachrichtigungen für neue Dateien";
-App::$strings["Notices"] = "Benachrichtigungen";
-App::$strings["View all notices"] = "Alle Notizen ansehen";
-App::$strings["Mark all notices seen"] = "Alle Notizen als gesehen markieren";
-App::$strings["New Registrations"] = "Neue Registrierungen";
-App::$strings["New Registrations Notifications"] = "Benachrichtigungen für neue Registrierungen";
-App::$strings["Public Stream Notifications"] = "Benachrichtigungen für öffentlichen Beitrags-Stream";
-App::$strings["View the public stream"] = "Zeige öffentlichen Beitrags-Stream";
-App::$strings["Loading"] = "Lädt...";
-App::$strings["Source channel not found."] = "Quellkanal nicht gefunden.";
-App::$strings["Create an account to access services and applications"] = "Erstelle ein Konto, um auf Dienste und Anwendungen zugreifen zu können.";
-App::$strings["Logout"] = "Abmelden";
-App::$strings["Login/Email"] = "Anmelden/E-Mail";
-App::$strings["Password"] = "Kennwort";
-App::$strings["Remember me"] = "Angaben speichern";
-App::$strings["Forgot your password?"] = "Passwort vergessen?";
-App::$strings["toggle mobile"] = "auf/von mobile Ansicht wechseln";
-App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Webseiten-SSL-Fehler für %s";
-App::$strings["Website SSL certificate is not valid. Please correct."] = "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben.";
-App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Cron-Jobs laufen nicht auf %s";
-App::$strings["Cron/Scheduled tasks not running."] = "Cron-Aufgaben laufen nicht.";
-App::$strings["never"] = "Nie";
-App::$strings["Focus (Hubzilla default)"] = "Focus (Voreinstellung für Hubzilla)";
-App::$strings["Theme settings"] = "Design-Einstellungen";
-App::$strings["Narrow navbar"] = "Schmale Navigationsleiste";
-App::$strings["Navigation bar background color"] = "Hintergrundfarbe der Navigationsleiste";
-App::$strings["Navigation bar icon color "] = "Farbe für die Icons der Navigationsleiste";
-App::$strings["Navigation bar active icon color "] = "Farbe für aktive Icons der Navigationsleiste";
-App::$strings["Link color"] = "Linkfarbe";
-App::$strings["Set font-color for banner"] = "Farbe der Schrift des Banners";
-App::$strings["Set the background color"] = "Hintergrundfarbe";
-App::$strings["Set the background image"] = "Hintergrundbild";
-App::$strings["Set the background color of items"] = "Hintergrundfarbe für Beiträge";
-App::$strings["Set the background color of comments"] = "Hintergrundfarbe für Kommentare";
-App::$strings["Set font-size for the entire application"] = "Schriftgröße für die gesamte Anwendung";
-App::$strings["Examples: 1rem, 100%, 16px"] = "Beispiele: 1rem, 100%, 16px";
-App::$strings["Set font-color for posts and comments"] = "Schriftfarbe für Beiträge und Kommentare";
-App::$strings["Set radius of corners"] = "Ecken-Radius";
-App::$strings["Example: 4px"] = "Beispiel: 4px";
-App::$strings["Set shadow depth of photos"] = "Schattentiefe von Fotos";
-App::$strings["Set maximum width of content region in pixel"] = "Maximalbreite des Inhaltsbereichs in Pixel festlegen";
-App::$strings["Leave empty for default width"] = "Leer lassen für Standardbreite";
-App::$strings["Left align page content"] = "Seiteninhalt linksbündig anzeigen";
-App::$strings["Set size of conversation author photo"] = "Größe der Avatare von Themenstartern";
-App::$strings["Set size of followup author photos"] = "Größe der Avatare von Kommentatoren";
-App::$strings["Errors encountered deleting database table "] = "Beim Löschen der Datenbanktabelle sind Fehler aufgetreten.";
-App::$strings["Submit Settings"] = "Einstellungen absenden";
-App::$strings["Drop tables when uninstalling?"] = "Lösche Tabellen beim Deinstallieren?";
-App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Wenn ausgewählt, werden die Rendezvous-Tabellen in der Datenbank gelöscht, sobald das Plugin deinstalliert wird.";
-App::$strings["Mapbox Access Token"] = "Mapbox Zugangs-Token";
-App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Wenn Du ein Mapbox Zugangs-Token eingibst, werden die Kartendaten (Kacheln) damit von Mapbox geladen, anstatt von OpenStreetMap, welches die Voreinstellung ist.";
-App::$strings["Rendezvous"] = "Rendezvous";
-App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Diese Identität wurde von einem anderen Mitglied aufgrund von Inaktivität gelöscht. Bitte klicke auf \"Neue Identität\" oder aktualisiere die Website im Browser, um eine neue Identität zu registrieren. Du kannst dabei den selben Namen verwenden.";
-App::$strings["Welcome to Rendezvous!"] = "Willkommen bei Rendezvous!";
-App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Gib Deinen Namen ein, um diesem Rendezvous beizutreten. Um Deinen Standort mit anderen Mitgliedern zu teilen, klicke auf das GPS Symbol. Sobald Dein Standort ermittelt ist, erscheint ein roter Punkt, und die Anderen werden Dich auf der Karte sehen können.";
-App::$strings["Let's meet here"] = "Lasst uns hier treffen";
-App::$strings["New marker"] = "Neue Markierung";
-App::$strings["Edit marker"] = "Markierung bearbeiten";
-App::$strings["New identity"] = "Neue Identität";
-App::$strings["Delete marker"] = "Markierung löschen";
-App::$strings["Delete member"] = "Mitglied löschen";
-App::$strings["Edit proximity alert"] = "Annäherungsalarm bearbeiten";
-App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Ein Annäherungsalarm wird ausgelöst werden, sobald sich dieses Mitglied innerhalb eines bestimmten Radius von Dir aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):";
-App::$strings["distance"] = "Entfernung";
-App::$strings["Proximity alert distance (meters)"] = "Entfernung für Annäherungsalarm (in Metern)";
-App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Ein Annäherungsalarm wird ausgelöst werden, sobald Du Dich innerhalb eines bestimmten Radius der Markierung aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):";
-App::$strings["Marker proximity alert"] = "Annäherungsalarm für Markierung";
-App::$strings["Reminder note"] = "Erinnerungshinweis";
-App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Gib eine Nachricht ein, die angezeigt werden soll, wenn Du Dich in der festgelegten Nähe befindest...";
-App::$strings["Add new rendezvous"] = "Neues Rendezvous hinzufügen";
-App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Erstelle ein neues Rendezvous und teile den Zugriffslink mit allen, die Du in die Gruppe einladen möchtest. Die, die den Link öffnen, werden Mitglieder des Rendezvous. Sie können die Standorte der anderen Mitglieder sehen, Marker zur Karte hinzufügen oder ihre eigenen Standorte mit der Gruppe teilen.";
-App::$strings["Some setting"] = "Einige Einstellungen";
-App::$strings["A setting"] = "Eine Einstellung";
-App::$strings["Skeleton Settings"] = "Skeleton Einstellungen";
-App::$strings["GNU-Social Protocol Settings updated."] = "GNU social Protokoll Einstellungen aktualisiert";
-App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Das GNU-Social-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein.";
-App::$strings["Enable the GNU-Social protocol for this channel"] = "Aktiviere das GNU social Protokoll für diesen Kanal";
-App::$strings["GNU-Social Protocol Settings"] = "GNU social Protokoll Einstellungen";
-App::$strings["Follow"] = "Folgen";
-App::$strings["%1\$s is now following %2\$s"] = "%1\$s folgt nun %2\$s";
-App::$strings["Planets Settings updated."] = "Planeten Einstellungen aktualisiert";
-App::$strings["Enable Planets Plugin"] = "Aktiviere Planeten Plugin";
-App::$strings["Planets Settings"] = "Planeten Einstellungen";
-App::$strings["System defaults:"] = "Systemstandardeinstellungen:";
-App::$strings["Preferred Clipart IDs"] = "Bevorzugte Clipart-IDs";
-App::$strings["List of preferred clipart ids. These will be shown first."] = "Liste bevorzugter Clipart-IDs. Diese werden zuerst angezeigt.";
-App::$strings["Default Search Term"] = "Standard-Suchbegriff";
-App::$strings["The default search term. These will be shown second."] = "Der Standard-Suchbegriff. Dieser wird an zweiter Stelle angezeigt.";
-App::$strings["Return After"] = "Zurückkehren nach";
-App::$strings["Page to load after image selection."] = "Die Seite, die nach Auswahl eines Bildes geladen werden soll.";
-App::$strings["Edit Profile"] = "Profil bearbeiten";
-App::$strings["Profile List"] = "Profilliste";
-App::$strings["Order of Preferred"] = "Reihenfolge der Bevorzugten";
-App::$strings["Sort order of preferred clipart ids."] = "Sortierreihenfolge der bevorzugten Clipart-IDs.";
-App::$strings["Newest first"] = "Neueste zuerst";
-App::$strings["As entered"] = "Wie eingegeben";
-App::$strings["Order of other"] = "Sortierung aller anderen";
-App::$strings["Sort order of other clipart ids."] = "Sortierreihenfolge der übrigen Clipart-IDs.";
-App::$strings["Most downloaded first"] = "Meist heruntergeladene zuerst";
-App::$strings["Most liked first"] = "Beliebteste zuerst";
-App::$strings["Preferred IDs Message"] = "Nachricht für bevorzugte IDs";
-App::$strings["Message to display above preferred results."] = "Nachricht, die über den Ergebnissen mit den bevorzugten IDs angezeigt werden soll.";
-App::$strings["Uploaded by: "] = "Hochgeladen von: ";
-App::$strings["Drawn by: "] = "Gezeichnet von: ";
-App::$strings["Or select from a free OpenClipart.org image:"] = "Oder wähle ein freies Bild von OpenClipart.org:";
-App::$strings["Search Term"] = "Suchbegriff";
-App::$strings["Unknown error. Please try again later."] = "Unbekannter Fehler. Bitte versuchen Sie es später erneut.";
-App::$strings["Profile photo updated successfully."] = "Profilfoto erfolgreich aktualisiert.";
-App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels";
-App::$strings["Flag Adult Photos"] = "Nicht jugendfreie Fotos markieren";
-App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Stellt eine Option zum Verstecken von Fotos mit unangemessenen Inhalten in der Standard-Albumansicht bereit";
-App::$strings["Post to WordPress"] = "Auf WordPress posten";
-App::$strings["Enable WordPress Post Plugin"] = "Aktiviere das WordPress-Plugin";
-App::$strings["WordPress username"] = "WordPress-Benutzername";
-App::$strings["WordPress password"] = "WordPress-Passwort";
-App::$strings["WordPress API URL"] = "WordPress-API-URL";
-App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Normalerweise https://your-blog.tld/xmlrpc.php";
-App::$strings["WordPress blogid"] = "WordPress blogid";
-App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Nötig für Mehrbenutzer Seiten wie wordpress.com, andernfalls frei lassen";
-App::$strings["Post to WordPress by default"] = "Standardmäßig auf auf WordPress posten";
-App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Kommentare weiterleiten (benötigt hubzilla_wp Plugin)";
-App::$strings["WordPress Post Settings"] = "WordPress-Beitragseinstellungen";
-App::$strings["Wordpress Settings saved."] = "Wordpress-Einstellungen gespeichert.";
-App::$strings["This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Dieses Plugin sucht in Beiträgen nach Wörtern oder Textbausteinen, die Du hier unterhalb einträgst, und faltet alle Beiträge zusammen, in denen es diese Bausteine findet. Auf diese Weise wird verhindert, dass Inhalte, wie z.B. sexuelle Anspielungen, in unpassenden Momenten angezeigt werden. Es gilt als höflich und empfohlen, den #NSFW Tag für Beiträge zu verwenden, bei denen Du davon ausgehen kannst, dass andere sie anstößig finden könnten. Du kannst aber auch beliebige andere Wörter in der Liste angeben und das Plugin so als allgemeinen Inhaltsfilter verwenden.";
-App::$strings["Enable Content filter"] = "Inhaltsfilter aktivieren";
-App::$strings["Comma separated list of keywords to hide"] = "Kommaseparierte Liste von Schlüsselworten die verborgen werden sollen.";
-App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Wort, /regular-expression/, lang=xx, lang!=xx";
-App::$strings["Not Safe For Work Settings"] = "Not Safe For Work Einstellungen";
-App::$strings["General Purpose Content Filter"] = "Allzweck-Inhaltsfilter";
-App::$strings["NSFW Settings saved."] = "NSFW-Einstellungen gespeichert.";
-App::$strings["Possible adult content"] = "Möglicherweise nicht jugendfreie Inhalte";
-App::$strings["%s - view"] = "%s - ansehen";
-App::$strings["Post to Insanejournal"] = "Bei InsaneJournal veröffentlichen";
-App::$strings["Enable InsaneJournal Post Plugin"] = "Aktiviere das InsaneJournal Plugin";
-App::$strings["InsaneJournal username"] = "InsaneJournal-Benutzername";
-App::$strings["InsaneJournal password"] = "InsaneJournal-Passwort";
-App::$strings["Post to InsaneJournal by default"] = "Standardmäßig bei InsaneJournal veröffentlichen";
-App::$strings["InsaneJournal Post Settings"] = "InsaneJournal-Beitragseinstellungen";
-App::$strings["Insane Journal Settings saved."] = "InsaneJournal-Einstellungen gespeichert.";
-App::$strings["Post to Dreamwidth"] = "Bei Dreamwidth veröffentlichen";
-App::$strings["Enable Dreamwidth Post Plugin"] = "Aktiviere das Dreamwidth-Plugin";
-App::$strings["Dreamwidth username"] = "Dreamwidth-Benutzername";
-App::$strings["Dreamwidth password"] = "Dreamwidth-Passwort";
-App::$strings["Post to Dreamwidth by default"] = "Standardmäßig auf auf Dreamwidth posten";
-App::$strings["Dreamwidth Post Settings"] = "Dreamwidth-Beitragseinstellungen";
-App::$strings["Hubzilla Directory Stats"] = "Hubzilla-Verzeichnisstatistiken";
-App::$strings["Total Hubs"] = "Hubs insgesamt";
-App::$strings["Hubzilla Hubs"] = "Hubzilla Hubs";
-App::$strings["Friendica Hubs"] = "Friendica Hubs";
-App::$strings["Diaspora Pods"] = "Diaspora Pods";
-App::$strings["Hubzilla Channels"] = "Hubzilla-Kanäle";
-App::$strings["Friendica Channels"] = "Friendica-Kanäle";
-App::$strings["Diaspora Channels"] = "Diaspora-Kanäle";
-App::$strings["Aged 35 and above"] = "35 und älter";
-App::$strings["Aged 34 and under"] = "34 und jünger";
-App::$strings["Average Age"] = "Durchschnittsalter";
-App::$strings["Known Chatrooms"] = "Bekannte Chaträume";
-App::$strings["Known Tags"] = "Bekannte Schlagwörter";
-App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume.";
-App::$strings["Your Webbie:"] = "Dein Webbie";
-App::$strings["Fontsize (px):"] = "Schriftgröße (px):";
-App::$strings["Link:"] = "Link:";
-App::$strings["Like us on Hubzilla"] = "Like us on Hubzilla";
-App::$strings["Embed:"] = "Einbetten";
-App::$strings["Photos imported"] = "Fotos importiert";
-App::$strings["Redmatrix Photo Album Import"] = "Redmatrix-Fotoalbumimport";
-App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Hiermit werden all deine Fotoalben von Redmatrix in diesen Kanal importiert.";
-App::$strings["Redmatrix Server base URL"] = "Basis-URL des Redmatrix Servers";
-App::$strings["Redmatrix Login Username"] = "Redmatrix-Anmeldebenutzername";
-App::$strings["Redmatrix Login Password"] = "Redmatrix-Anmeldepasswort";
-App::$strings["Import just this album"] = "Nur dieses Album importieren";
-App::$strings["Leave blank to import all albums"] = "Leer lassen um alle Alben zu importieren";
-App::$strings["Maximum count to import"] = "Maximal zu importierende Anzahl";
-App::$strings["0 or blank to import all available"] = "0 oder leer lassen um alles zu importieren";
-App::$strings["Channels to auto connect"] = "Kanäle zur automatischen Verbindung";
-App::$strings["Comma separated list"] = "Kommagetrennte Liste";
-App::$strings["Popular Channels"] = "Beliebte Kanäle";
-App::$strings["IRC Settings"] = "IRC-Einstellungen";
-App::$strings["IRC settings saved."] = "IRC-Einstellungen gespeichert.";
-App::$strings["IRC Chatroom"] = "IRC-Chatraum";
-App::$strings["Post to LiveJournal"] = "Bei LiveJurnal veröffentlichen";
-App::$strings["Enable LiveJournal Post Plugin"] = "Aktiviere das LiveJurnal Plugin";
-App::$strings["LiveJournal username"] = "LiveJournal-Benutzername";
-App::$strings["LiveJournal password"] = "LiveJournal-Passwort";
-App::$strings["Post to LiveJournal by default"] = "Standardmäßig bei LiveJurnal veröffentlichen";
-App::$strings["LiveJournal Post Settings"] = "LiveJournal-Beitragseinstellungen";
-App::$strings["LiveJournal Settings saved."] = "LiveJournal-Einstellungen gespeichert.";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal.";
-App::$strings["The error message was:"] = "Die Fehlermeldung war:";
-App::$strings["First Name"] = "Vorname";
-App::$strings["Last Name"] = "Nachname";
-App::$strings["Nickname"] = "Spitzname";
-App::$strings["Full Name"] = "Voller Name";
-App::$strings["Profile Photo 16px"] = "Profilfoto 16 px";
-App::$strings["Profile Photo 32px"] = "Profilfoto 32 px";
-App::$strings["Profile Photo 48px"] = "Profilfoto 48 px";
-App::$strings["Profile Photo 64px"] = "Profilfoto 64 px";
-App::$strings["Profile Photo 80px"] = "Profilfoto 80 px";
-App::$strings["Profile Photo 128px"] = "Profilfoto 128 px";
-App::$strings["Timezone"] = "Zeitzone";
-App::$strings["Birth Year"] = "Geburtsjahr";
-App::$strings["Birth Month"] = "Geburtsmonat";
-App::$strings["Birth Day"] = "Geburtstag";
-App::$strings["Birthdate"] = "Geburtsdatum";
-App::$strings["OpenID protocol error. No ID returned."] = "OpenID-Protokollfehler. Keine Kennung zurückgegeben.";
-App::$strings["Login failed."] = "Login fehlgeschlagen.";
-App::$strings["Male"] = "Männlich";
-App::$strings["Female"] = "Weiblich";
-App::$strings["You're welcome."] = "Gern geschehen.";
-App::$strings["Ah shucks..."] = "Ach Mist...";
-App::$strings["Don't mention it."] = "Keine Ursache.";
-App::$strings["&lt;blush&gt;"] = "";
-App::$strings["Page to load after login"] = "Seite, die nach dem Login geladen werden soll";
-App::$strings["Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave blank for default network page (grid)."] = "Beispiele: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (Gruppen-gefilterte Beiträge), &quot;channel&quot; oder &quot;notifications/system&quot; (freilassen für die Standard-Netzwerkseite (grid).";
-App::$strings["Startpage Settings"] = "Startseiteneinstellungen";
-App::$strings["bitchslap"] = "Ohrfeige";
-App::$strings["bitchslapped"] = "geohrfeigt";
-App::$strings["shag"] = "bumsen";
-App::$strings["shagged"] = "gebumst";
-App::$strings["patent"] = "Patent";
-App::$strings["patented"] = "patentiert";
-App::$strings["hug"] = "umarmen";
-App::$strings["hugged"] = "umarmt";
-App::$strings["murder"] = "ermorden";
-App::$strings["murdered"] = "ermordet";
-App::$strings["worship"] = "Anbetung";
-App::$strings["worshipped"] = "angebetet";
-App::$strings["kiss"] = "küssen";
-App::$strings["kissed"] = "geküsst";
-App::$strings["tempt"] = "verlocken";
-App::$strings["tempted"] = "verlockt";
-App::$strings["raise eyebrows at"] = "";
-App::$strings["raised their eyebrows at"] = "";
-App::$strings["insult"] = "beleidigen";
-App::$strings["insulted"] = "beleidigt";
-App::$strings["praise"] = "loben";
-App::$strings["praised"] = "gelobt";
-App::$strings["be dubious of"] = "";
-App::$strings["was dubious of"] = "";
-App::$strings["eat"] = "essen";
-App::$strings["ate"] = "aß";
-App::$strings["giggle and fawn at"] = "";
-App::$strings["giggled and fawned at"] = "";
-App::$strings["doubt"] = "anzweifeln";
-App::$strings["doubted"] = "angezweifelt";
-App::$strings["glare"] = "";
-App::$strings["glared at"] = "";
-App::$strings["fuck"] = "ficken";
-App::$strings["fucked"] = "gefickt";
-App::$strings["bonk"] = "";
-App::$strings["bonked"] = "";
-App::$strings["declare undying love for"] = "";
-App::$strings["declared undying love for"] = "";
-App::$strings["Diaspora Protocol Settings updated."] = "Diaspora Protokoll Einstellungen aktualisiert";
-App::$strings["The Diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Das Diaspora-Protokoll unterstützt keine Server-unabhängigen Identitäten. Verbindungen, die Du mit diesem Netzwerk eingehst, können von anderen Orten (Klonen) dieses Kanals aus unerreichbar sein.";
-App::$strings["Enable the Diaspora protocol for this channel"] = "Das Diaspora Protokoll für diesen Kanal aktivieren";
-App::$strings["Allow any Diaspora member to comment on your public posts"] = "Erlaube jedem Diaspora Nutzer deine öffentlichen Beiträge zu kommentieren";
-App::$strings["Prevent your hashtags from being redirected to other sites"] = "Verhindern, dass Deine Hashtags zu anderen Seiten umgeleitet werden";
-App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "Signieren und Weiterleiten von Beiträgen und Kommentaren ohne vorhandene Diaspora-Signatur";
-App::$strings["Followed hashtags (comma separated, do not include the #)"] = "Verfolgte Hashtags (Komma separierte Liste, ohne die #)";
-App::$strings["Diaspora Protocol Settings"] = "Diaspora Protokoll Einstellungen";
-App::$strings["No username found in import file."] = "Es wurde kein Nutzername in der importierten Datei gefunden.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen.";
-App::$strings["Your account on %s will expire in a few days."] = "Dein Account auf %s wird in ein paar Tagen ablaufen.";
-App::$strings["Your $Productname test account is about to expire."] = "Dein $Productname Test-Account wird bald auslaufen.";
-App::$strings["Enable Rainbowtag"] = "Rainbowtag aktivieren";
-App::$strings["Rainbowtag Settings"] = "Rainbowtag-Einstellungen";
-App::$strings["Rainbowtag Settings saved."] = "Rainbowtag-Einstellungen gespeichert.";
-App::$strings["Show Upload Limits"] = "Hochladebeschränkungen anzeigen";
-App::$strings["Hubzilla configured maximum size: "] = "Die in Hubzilla eingestellte maximale Größe:";
-App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize:";
-App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (muss größer sein als upload_max_filesize):";
-App::$strings["generic profile image"] = "generisches Profilbild";
-App::$strings["random geometric pattern"] = "zufälliges geometrisches Muster";
-App::$strings["monster face"] = "Monstergesicht";
-App::$strings["computer generated face"] = "computergeneriertes Gesicht";
-App::$strings["retro arcade style face"] = "";
-App::$strings["Hub default profile photo"] = "Standard-Profilfoto für diesen Hub";
-App::$strings["Information"] = "Information";
-App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "";
-App::$strings["Save Settings"] = "Einstellungen speichern";
-App::$strings["Default avatar image"] = "Standard-Avatarbild";
-App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "";
-App::$strings["Rating of images"] = "Bewertungen der Bilder";
-App::$strings["Select the appropriate avatar rating for your site. See README"] = "";
-App::$strings["Gravatar settings updated."] = "Gravatar-Einstellungen aktualisiert.";
-App::$strings["Hubzilla File Storage Import"] = "";
-App::$strings["This will import all your cloud files from another server."] = "";
-App::$strings["Hubzilla Server base URL"] = "";
-App::$strings["Since modified date yyyy-mm-dd"] = "";
-App::$strings["Until modified date yyyy-mm-dd"] = "";
-App::$strings["Recent Channel/Profile Viewers"] = "Kürzliche Kanal/Profil Besucher";
-App::$strings["This plugin/addon has not been configured."] = "Dieses Plugin/Addon wurde noch nicht konfiguriert.";
-App::$strings["Please visit the Visage settings on %s"] = "Bitte rufe die Visage Einstellungen auf %s auf";
-App::$strings["your feature settings page"] = "Die Funktions-Einstellungsseite";
-App::$strings["No entries."] = "Keine Einträge.";
-App::$strings["Enable Visage Visitor Logging"] = "Aktiviere das Visage-Besucher Logging";
-App::$strings["Visage Settings"] = "Visage-Einstellungen";
-App::$strings["Nsabait Settings updated."] = "Nsabait-Einstellungen aktualisiert.";
-App::$strings["Enable NSAbait Plugin"] = "Aktiviere das NSAbait Plugin";
-App::$strings["NSAbait Settings"] = "NSAbait-Einstellungen";
-App::$strings["Send test email"] = "Test-E-Mail senden";
-App::$strings["No recipients found."] = "Keine Empfänger gefunden.";
-App::$strings["Mail sent."] = "Mail gesendet.";
-App::$strings["Sending of mail failed."] = "Senden der E-Mail fehlgeschlagen.";
-App::$strings["Mail Test"] = "Mail Test";
-App::$strings["Message subject"] = "Betreff der Nachricht";
-App::$strings["View Larger"] = "Größer anzeigen";
-App::$strings["Tile Server URL"] = "Kachelserver-URL";
-App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Kachelserver</a>";
-App::$strings["Nominatim (reverse geocoding) Server URL"] = "Nominatim (reverse Geokodierung) Server URL";
-App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim servers</a>"] = "Eine Liste der <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim Server</a>";
-App::$strings["Default zoom"] = "Standardzoom";
-App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "Die Standard-Vergrößerungsstufe (1:Welt, 18:höchste, hängt außerdem vom Kachelserver ab).";
-App::$strings["Include marker on map"] = "Markierung auf der Karte einschließen";
-App::$strings["Include a marker on the map."] = "Binde eine Markierung auf der Karte ein.";
-App::$strings["text to include in all outgoing posts from this site"] = "Test der in alle Beiträge angefügt werden soll, die von dieser Seite ausgehen";
-App::$strings["Post to Friendica"] = "Bei Friendica veröffentlichen";
-App::$strings["rtof Settings saved."] = "rtof-Einstellungen gespeichert.";
-App::$strings["Allow posting to Friendica"] = "Erlaube die Veröffentlichung bei Friendica";
-App::$strings["Send public postings to Friendica by default"] = "Standardmäßig öffentliche Beiträge bei Friendica veröffentlichen";
-App::$strings["Friendica API Path"] = "Friendica-API-Pfad";
-App::$strings["https://{sitename}/api"] = "https://{sitename}/api";
-App::$strings["Friendica login name"] = "Friendica-Anmeldename";
-App::$strings["Friendica password"] = "Friendica-Passwort";
-App::$strings["Hubzilla to Friendica Post Settings"] = "Hubzilla-zu-Friendica Beitragseinstellungen";
-App::$strings["Status:"] = "Status:";
-App::$strings["Activate addon"] = "Addon aktiviren";
-App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Jappix Mini Chat-Widget von der Weboberfläche verbergen";
-App::$strings["Jabber username"] = "Jabber-Benutzername";
-App::$strings["Jabber server"] = "Jabber-Server";
-App::$strings["Jabber BOSH host URL"] = "Jabber BOSH Host URL";
-App::$strings["Jabber password"] = "Jabber-Passwort";
-App::$strings["Encrypt Jabber password with Hubzilla password"] = "Jabber-Passwort mit Hubzilla-Passwort verschlüsseln";
-App::$strings["Hubzilla password"] = "Hubzilla-Passwort";
-App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Verbindungsanfragen von Hubzilla-Kontakten automatisch annehmen";
-App::$strings["Purge internal list of jabber addresses of contacts"] = "Interne Liste der Jabber Adressen von Kontakten löschen";
-App::$strings["Configuration Help"] = "Konfigurationshilfe";
-App::$strings["Jappix Mini Settings"] = "Jappix Mini Einstellungen";
-App::$strings["Currently blocked"] = "Derzeit blockiert";
-App::$strings["No channels currently blocked"] = "Momentan sind keine Kanäle blockiert";
-App::$strings["\"Superblock\" Settings"] = "\"Superblock\"-Einstellungen";
-App::$strings["Block Completely"] = "Vollständig blockieren";
-App::$strings["superblock settings updated"] = "Superblock Einstellungen aktualisiert";
-App::$strings["Federate"] = "Beitrag verteilen";
-App::$strings["nofed Settings saved."] = "nofed Einstellungen gespeichert";
-App::$strings["Allow Federation Toggle"] = "Umschalter zur Beitragsverteilung bereitstellen";
-App::$strings["Federate posts by default"] = "Beiträge standardmäßig verteilen";
-App::$strings["NoFed Settings"] = "NoFed-Einstellungen";
-App::$strings["Post to Red"] = "";
-App::$strings["Channel is required."] = "Kanal ist erforderlich.";
-App::$strings["redred Settings saved."] = "redred-Einstellungen gespeichert.";
-App::$strings["Allow posting to another Hubzilla Channel"] = "Erlaube die Veröffentlichung in anderen Hubzilla Kanälen";
-App::$strings["Send public postings to Hubzilla channel by default"] = "";
-App::$strings["Hubzilla API Path"] = "Hubzilla-API-Pfad";
-App::$strings["Hubzilla login name"] = "Hubzilla-Anmeldename";
-App::$strings["Hubzilla channel name"] = "Hubzilla-Kanalname";
-App::$strings["Hubzilla Crosspost Settings"] = "";
-App::$strings["Logfile archive directory"] = "Verzeichnis der Logdatei";
-App::$strings["Directory to store rotated logs"] = "Verzeichnis, in dem rotierte Logs gespeichert werden sollen";
-App::$strings["Logfile size in bytes before rotating"] = "zu erreichende Logdateigröße in Bytes, bevor rotiert wird";
-App::$strings["Number of logfiles to retain"] = "Anzahl aufzubewahrender rotierter Logdateien";
-App::$strings["Friendica Photo Album Import"] = "Friendica-Fotoalbumimport";
-App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Hiermit werden all deine Fotoalben von Friendica in diesen Hubzilla Kanal importiert.";
-App::$strings["Friendica Server base URL"] = "BasisURL des Friendica Servers";
-App::$strings["Friendica Login Username"] = "Friendica-Anmeldebenutzername";
-App::$strings["Friendica Login Password"] = "Friendica-Anmeldepasswort";
-App::$strings["ActivityPub"] = "ActivityPub";
-App::$strings["ActivityPub Protocol Settings updated."] = "";
-App::$strings["The ActivityPub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "";
-App::$strings["Enable the ActivityPub protocol for this channel"] = "";
-App::$strings["Send multi-media HTML articles"] = "";
-App::$strings["Not supported by some microblog services such as Mastodon"] = "";
-App::$strings["ActivityPub Protocol Settings"] = "";
-App::$strings["Project Servers and Resources"] = "Projektserver und -ressourcen";
-App::$strings["Project Creator and Tech Lead"] = "Projektersteller und Technischer Leiter";
-App::$strings["Admin, developer, directorymin, support bloke"] = "Administrator, Entwickler, Verzeichnis Betreibender, Supportleistende";
-App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Und die hunderte anderen Menschen und Organisationen, die geholfen haben Hubzilla möglich zu machen.";
-App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Die Redmatrix/Hubzilla Projekte werden hauptsächlich von Freiwilligen bereitgestellt, die ihre Zeit und Expertise zur Verfügung stellen - und oft aus eigener Tasche für die Dienste zahlen, die sie mit anderen teilen.";
-App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "Es gibt keine Finanzierung durch Firmen, keine Werbung und wir verkaufen Deine persönlichen Daten nicht. (Wir kontrollieren Deine persönlichen Daten nicht - <strong>das machst Du</strong>.)";
-App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Hilf uns bei unserer wegweisenden Arbeit im Bereich der Dezantralisation, von Web-Identitäten und Privatsphäre.";
-App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Die Spenden werden dafür verwendet Server und Dienste am laufen zu halten und helfen desweiteren innovative Neuerungen zu schaffen und die Entwicklung voran zu treiben.";
-App::$strings["Donate"] = "Spenden";
-App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Wähle ein Projekt, einen Entwickler oder einen öffentlichen Hub den du mit einer einmaligen Spende unterstützen willst.";
-App::$strings["Donate Now"] = "Jetzt spenden";
-App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>Oder</em></strong> werde ein Unterstützer des Projekts (ausschließlich Hubzilla)";
-App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Bitte teile uns mit ob dein kompletter Name oder dein Vorname (oder gar nichts) auf unserer Sponsoren-Seite veröffentlicht werden soll.";
-App::$strings["Sponsor"] = "Sponsor";
-App::$strings["Special thanks to: "] = "Besonderer Dank an: ";
-App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "";
-App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "";
-App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Einige gültige Beispiele: A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ...";
-App::$strings["Guitar Chords"] = "Gitarrenakkorde";
-App::$strings["The complete online chord dictionary"] = "Das komplette online Akkord-Verzeichnis";
-App::$strings["Tuning"] = "Stimmen";
-App::$strings["Chord name: example: Em7"] = "Beispiel Akkord Name: Em7";
-App::$strings["Show for left handed stringing"] = "Linkshänder-Besaitung anzeigen";
-App::$strings["Quick Reference"] = "Schnellreferenz";
-App::$strings["Post to Libertree"] = "Bei Libertree veröffentlichen";
-App::$strings["Enable Libertree Post Plugin"] = "Aktivire das Libertree-Plugin";
-App::$strings["Libertree API token"] = "Libertree API Token";
-App::$strings["Libertree site URL"] = "URL der Libertree Seite";
-App::$strings["Post to Libertree by default"] = "Standardmäßig bei Libertree veröffentlichen";
-App::$strings["Libertree Post Settings"] = "Libertree-Beitragseinstellungen";
-App::$strings["Libertree Settings saved."] = "Libertree-Einstellungen gespeichert.";
-App::$strings["Flattr this!"] = "Flattr this!";
-App::$strings["Flattr widget settings updated."] = "Flattr Widget Einstellungen aktualisiert";
-App::$strings["Flattr user"] = "Flattr Nutzer";
-App::$strings["URL of the Thing to flattr"] = "URL des Dings zum flattrn";
-App::$strings["If empty channel URL is used"] = "Falls leer wird die Channel URL verwendet";
-App::$strings["Title of the Thing to flattr"] = "Titel des Dings zum flattrn";
-App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Falls leer wird \"Kanalname auf The Hubzilla\" verwendet";
-App::$strings["Static or dynamic flattr button"] = "Statischer oder dynamischer Flattr Button";
-App::$strings["static"] = "statisch";
-App::$strings["dynamic"] = "dynamisch";
-App::$strings["Alignment of the widget"] = "Ausrichtung des Widgets";
-App::$strings["left"] = "links";
-App::$strings["right"] = "rechts";
-App::$strings["Enable Flattr widget"] = "Flattr Widget verwenden";
-App::$strings["Flattr Widget Settings"] = "Flattr Widget Einstellungen";
-App::$strings["Post to GNU social"] = "Bei GNU social veröffentlichen";
-App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Bitte kontaktiere den Administrator deines Hubs.<br />Die angegebene API URL ist nicht korrekt.";
-App::$strings["We could not contact the GNU social API with the Path you entered."] = "Mit dem angegebenen Pfad war es uns nicht möglich, die GNU social API zu erreichen.";
-App::$strings["GNU social settings updated."] = "GNU social Einstellungen aktualisiert.";
-App::$strings["Globally Available GNU social OAuthKeys"] = "Global verfügbare GNU social OAuthKeys";
-App::$strings["There are preconfigured OAuth key pairs for some GNU social servers available. If you are using one of them, please use these credentials.<br />If not feel free to connect to any other GNU social instance (see below)."] = "";
-App::$strings["Provide your own OAuth Credentials"] = "";
-App::$strings["No consumer key pair for GNU social found. Register your Hubzilla Account as an desktop client on your GNU social account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Hubzilla installation at your favourite GNU social installation."] = "";
-App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key";
-App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
-App::$strings["Base API Path"] = "Basis Pfad der API";
-App::$strings["Remember the trailing /"] = "Denke an das abschließende /";
-App::$strings["GNU social application name"] = "GNU social Anwendungsname";
-App::$strings["To connect to your GNU social account click the button below to get a security code from GNU social which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to GNU social."] = "";
-App::$strings["Log in with GNU social"] = "Mit GNU social anmelden";
-App::$strings["Copy the security code from GNU social here"] = "Kopiere den Sicherheitscode von GNU social hier her";
-App::$strings["Cancel Connection Process"] = "Verbindungsprozes abbrechen";
-App::$strings["Current GNU social API is"] = "Aktuelle GNU social API ist";
-App::$strings["Cancel GNU social Connection"] = "GNU social Verbindung trennen";
-App::$strings["Currently connected to: "] = "Momentan verbunden mit:";
-App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "";
-App::$strings["Allow posting to GNU social"] = "Erlaube die Veröffentlichung bei GNU social";
-App::$strings["If enabled your public postings can be posted to the associated GNU-social account"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen GNU social Account veröffentlicht werden.";
-App::$strings["Post to GNU social by default"] = "Standardmäßig bei GNU social veröffentlichen";
-App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Wenn aktiv werden all deine öffentlichen Beiträge standardmäßig bei dem verbundenen GNU social Account veröffentlicht.";
-App::$strings["Clear OAuth configuration"] = "OAuth Konfiguration löschen";
-App::$strings["GNU social Post Settings"] = "GNU social Einstellungen";
-App::$strings["API URL"] = "API-URL";
-App::$strings["Application name"] = "Anwendungsname";
-App::$strings["QR code"] = "QR-Code";
-App::$strings["QR Generator"] = "QR-Generator";
-App::$strings["Enter some text"] = "Etwas Text eingeben";
-App::$strings["Invalid game."] = "Ungültiges Spiel.";
-App::$strings["You are not a player in this game."] = "Sie sind kein Spieler in diesem Spiel.";
-App::$strings["You must be a local channel to create a game."] = "Um ein Spiel zu eröffnen, musst du ein lokaler Kanal sein";
-App::$strings["You must select one opponent that is not yourself."] = "Du musst einen Gegner wählen, der nicht du selbst ist";
-App::$strings["You must select white or black."] = "Sie müssen weiß oder schwarz auswählen.";
-App::$strings["Error creating new game."] = "Fehler beim Erstellen eines neuen Spiels.";
-App::$strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
-App::$strings["You must select a local channel /chess/channelname"] = "Du musst einen lokalen Kanal/Schach(Kanalnamen aufwählen";
-App::$strings["Enable notifications"] = "Benachrichtigungen aktivieren";
-App::$strings["Post to Twitter"] = "Bei Twitter veröffentlichen";
-App::$strings["Twitter settings updated."] = "Twitter-Einstellungen aktualisiert.";
-App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Es wurde kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte kontaktiere deinen Seiten-Administrator.";
-App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Auf diesem Hubzilla-Server ist das Twitter-Plugin aktiviert, aber Du hast Dich hier noch nicht mit Deinem Twitter-Konto verbunden. Um dies zu tun, klicke die Schaltfläche unten, um eine PIN von Twitter zu erhalten, die Du dann in das Eingabefeld darunter einfügen und das Formular bestätigen musst. Nur Deine <strong>öffentlichen</strong> Beiträge werden auf Twitter geteilt.";
-App::$strings["Log in with Twitter"] = "Mit Twitter anmelden";
-App::$strings["Copy the PIN from Twitter here"] = "PIN von Twitter hier her kopieren";
-App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Hinweis:</strong> Entsprechend Deiner Privatsphären-Einstellungen (<em>Profil-Details vor nicht angemeldeten Besuchern verbergen?</em>) kann ein ggf. zu Twitter geteilter Link Besucher auf eine leere Seite führen, die darüber informiert, dass der Zugriff zu Deinem Profil eingeschränkt ist.";
-App::$strings["Allow posting to Twitter"] = "Erlaube die Veröffentlichung bei Twitter";
-App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden.";
-App::$strings["Send public postings to Twitter by default"] = "Standardmäßig öffentliche Beiträge bei Twitter veröffentlichen";
-App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden.";
-App::$strings["Twitter Post Settings"] = "Twitter-Beitragseinstellungen";
-App::$strings["Deactivate the feature"] = "Diese Funktion abschalten";
-App::$strings["Hide the button and show the smilies directly."] = "Verstecke die Schaltfläche und zeige die Smilies direkt an.";
-App::$strings["Smileybutton Settings"] = "Smileyknopf-Einstellungen";
-App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Diese Website verwendet <a href='http://www.piwik.org'>Piwik</a>, um die Besucherzugriffe auszuwerten.";
-App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Wenn Du nicht möchtest, dass Deine Besuche zu diesem Zweck gespeichert werden, kannst Du <a href='%s'>ein Cookie setzen, welches Piwik davon abhält, Deine weiteren Besuche auf dieser Website zu verfolgen</a> (Opt-out).";
-App::$strings["Piwik Base URL"] = "Piwik Basis-URL";
-App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Der absolute Pfad zu Deiner Piwik-Installation (ohne Protokoll (http/s), aber mit abschließendem Schrägstrich / ).";
-App::$strings["Site ID"] = "Seitenkennung";
-App::$strings["Show opt-out cookie link?"] = "Den Opt-out Cookie-Link anzeigen?";
-App::$strings["Asynchronous tracking"] = "Asynchrones Tracking";
-App::$strings["Enable frontend JavaScript error tracking"] = "Ermögliche Frontend-JavaScript-Fehlertracking";
-App::$strings["This feature requires Piwik >= 2.2.0"] = "Diese Funktion erfordert Piwik >= 2.2.0";
-App::$strings["Edit your profile and change settings."] = "Bearbeite dein Profil und ändere die Einstellungen.";
-App::$strings["Click here to see activity from your connections."] = "Klicke hier, um die Aktivitäten Deiner Verbindungen zu sehen.";
-App::$strings["Click here to see your channel home."] = "Klicke hier, um Deine Kanal-Hauptseite zu sehen.";
-App::$strings["You can access your private messages from here."] = "Hierüber kannst Du auf Deine privaten Nachrichten zugreifen.";
-App::$strings["Create new events here."] = "Neue Termine hier erstellen";
-App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Du kannst hier neue Verbindungen akzeptieren sowie die Einstellungen bereits vorhandener Vebindungen bearbeiten. Außerdem kannst Du Verbindungen in Gruppen zusammenfassen.";
-App::$strings["System notifications will arrive here"] = "Systembenachrichtigungen werden hier eintreffen";
-App::$strings["Search for content and users"] = "Nach Inhalt von Benutzern suchen";
-App::$strings["Browse for new contacts"] = "Schaue nach möglichen neuen Verbindungen.";
-App::$strings["Launch installed apps"] = "Installierte Apps starten";
-App::$strings["Looking for help? Click here."] = "Du benötigst Hilfe? Klicke hier.";
-App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "In Deinem Netzwerk gibt es neue Ereignisse. Klicke hier, um zu sehen, was passiert ist!";
-App::$strings["You have received a new private message. Click here to see from who!"] = "Du hast eine neue private Nachricht erhalten. Klicke hier, um zu sehen, von wem!";
-App::$strings["There are events this week. Click here too see which!"] = "Es gibt neue Termine diese Woche. Klicke hier, um zu sehen, welche!";
-App::$strings["You have received a new introduction. Click here to see who!"] = "Du hast eine neue Verbindungsanfrage erhalten. Klicke hier, um zu sehen, wer es ist!";
-App::$strings["There is a new system notification. Click here to see what has happened!"] = "Es gibt eine neue Systembenachrichtigung. Klicke hier, um zu sehen, was passiert ist!";
-App::$strings["Click here to share text, images, videos and sound."] = "Klicke hier, um Texte, Bilder, Videos und Klänge zu teilen.";
-App::$strings["You can write an optional title for your update (good for long posts)."] = "Du kannst Deinem Beitrag einen optionalen Titel geben (gut für lange Beiträge).";
-App::$strings["Entering some categories here makes it easier to find your post later."] = "Ein paar Kategorien hier einzugeben, macht es leichter, Deinen Beitrag später wiederzufinden.";
-App::$strings["Share photos, links, location, etc."] = "Teile Photos, Links, Standort, usw.";
-App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Du möchtest diesen Inhalt nur für eine Weile teilen? Dann lass ihn zu einem bestimmten Datum ablaufen.";
-App::$strings["You can password protect content."] = "Du kannst Inhalte mit einem Passwort schützen.";
-App::$strings["Choose who you share with."] = "Wähle aus, mit wem Du teilen möchtest.";
-App::$strings["Click here when you are done."] = "Klicke hier, wenn Du fertig bist.";
-App::$strings["Adjust from which channels posts should be displayed."] = "Lege fest, von welchen Kanälen Beiträge angezeigt werden sollen.";
-App::$strings["Only show posts from channels in the specified privacy group."] = "Zeige nur Beträge von Kanälen, die in einer bestimmten Gruppe sind.";
-App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Finde Beiträge, die bestimmte Tags enthalten (Stichworte, die mit dem \"#\"-Symbol beginnen).";
-App::$strings["Easily find posts in given category."] = "Finde Beiträge in bestimmten Kategorien.";
-App::$strings["Easily find posts by date."] = "Finde Beiträge anhand des Datums.";
-App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Vorgeschlagene Kanäle, die in ihren Einstellungen zugestimmt haben, als Vorschläge angezeigt zu werden, und die Du eventuell interessant finden könntest.";
-App::$strings["Here you see channels you have connected to."] = "Hier siehst du die Kanäle, mit denen Du verbunden bist.";
-App::$strings["Save your search so you can repeat it at a later date."] = "Speichere Deine Suche, so dass Du sie später leicht erneut durchführen kannst.";
-App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Wenn Du dieses Symbol siehst, kannst Du weitgehend sicher sein, dass der Ansender dem angegebenen entspricht. Nicht immer ist es möglich, den Absender zu verifizieren, daher fehlt das Symbol mitunter. Das ist aber in der Regel kein Grund zur Sorge.";
-App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "Vorsicht! Es kann sein, dass jemand versucht, eine Nachricht zu fälschen! Diese Nachricht muss nicht unbedingt vom angegebenen Absender stammen!";
-App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "Willkommen zu Hubzilla! Möchtest Du eine Tour der Benutzeroberfläche angezeigt bekommen?</p><p>Du kannst zu jeder Zeit pausieren und fortsetzen, wo Du aufgehört hast, indem Du die Seite neu lädtst, oder zu einer anderen Seite springst.</p><p>Du kannst auc durch das Drücken der Enter-Taste weitergehen.";
-App::$strings["Extended Identity Sharing"] = "Erweitertes Teilen von Identitäten";
-App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Teile Deine Identität mit allen Webseiten im Internet. Ist dies deaktiviert, wird Deine Identität nur mit Hubzilla-Servern geteilt.";
-App::$strings["Three Dimensional Tic-Tac-Toe"] = "Dreidimensionales Tic-Tac-Toe";
-App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
-App::$strings["New game"] = "Neues Spiel";
-App::$strings["New game with handicap"] = "Neues Handicaü-Spiel";
-App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "3D Tic-Tac-Toe funktioniert wie das ursprüngliche Spiel, nur dass es auf mehreren Ebenen gleichzeitig gespielt wird.";
-App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "In diesem Fall sind es drei Ebenen. Du gewinnst, wenn es dir gelingt drei in einer Reihe auf einer beliebigen Ebene oder diagonal über die verschiedenen Ebenen hinweg zu erreichen.";
-App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Bei einem Handicap-Spiel wird die Position im Zentrum der mittleren Ebene gesperrt, da der Spieler der dieses Feld für sich beansprucht meist einen unfairen Vorteil hat.";
-App::$strings["You go first..."] = "Du darfst anfangen...";
-App::$strings["I'm going first this time..."] = "Diesmal werde ich anfangen...";
-App::$strings["You won!"] = "Sie haben gewonnen!";
-App::$strings["\"Cat\" game!"] = "\"Katzen\"-Spiel!";
-App::$strings["I won!"] = "Ich habe gewonnen!";
-App::$strings["Message to display on every page on this server"] = "Nachricht, die auf jeder Seite dieses Servers angezeigt werden soll";
-App::$strings["Pageheader Settings"] = "Nachrichtenkopf-Einstellungen";
-App::$strings["pageheader Settings saved."] = "Nachrichtenkopf-Einstellungen gespeichert.";
-App::$strings["Only authenticate automatically to sites of your friends"] = "Authentifiziere Dich nur auf Seiten deiner Freunde automatisch";
-App::$strings["By default you are automatically authenticated anywhere in the network"] = "Authentifiziere Dich standardmäßig bei allen Seiten im Netzwerk automatisch";
-App::$strings["Authchoose Settings"] = "Einstellungen für automatische Authentifizierung";
-App::$strings["Atuhchoose Settings updated."] = "Einstellungen für automatische Authentifizierung aktualisiert.";
-App::$strings["lonely"] = "einsam";
-App::$strings["drunk"] = "betrunken";
-App::$strings["horny"] = "geil";
-App::$strings["stoned"] = "bekifft";
-App::$strings["fucked up"] = "beschissen";
-App::$strings["clusterfucked"] = "clusterfucked";
-App::$strings["crazy"] = "verrückt";
-App::$strings["hurt"] = "verletzt";
-App::$strings["sleepy"] = "müde";
-App::$strings["grumpy"] = "mürrisch";
-App::$strings["high"] = "hoch";
-App::$strings["semi-conscious"] = "halb bewusstlos";
-App::$strings["in love"] = "verliebt";
-App::$strings["in lust"] = "";
-App::$strings["naked"] = "nackt";
-App::$strings["stinky"] = "stinkend";
-App::$strings["sweaty"] = "verschwitzt";
-App::$strings["bleeding out"] = "blutend";
-App::$strings["victorious"] = "siegreich";
-App::$strings["defeated"] = "besiegt";
-App::$strings["envious"] = "neidisch";
-App::$strings["jealous"] = "eifersüchtig";
-App::$strings["XMPP settings updated."] = "XMPP-Einstellungen aktualisiert.";
-App::$strings["Enable Chat"] = "Chat aktivieren";
-App::$strings["Individual credentials"] = "Individuelle Anmeldedaten";
-App::$strings["Jabber BOSH server"] = "Jabber BOSH Server";
-App::$strings["XMPP Settings"] = "XMPP-Einstellungen";
-App::$strings["Jabber BOSH host"] = "Jabber BOSH Host";
-App::$strings["Use central userbase"] = "Zentrale Benutzerbasis verwenden";
-App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "";
-App::$strings["Who likes me?"] = "Wer mag mich?";
-App::$strings["You are now authenticated to pumpio."] = "Du bist nun bei pumpio authenzifiziert.";
-App::$strings["return to the featured settings page"] = "";
-App::$strings["Post to Pump.io"] = "Bei pumpio veröffentlichen";
-App::$strings["Pump.io servername"] = "Pump.io-Servername";
-App::$strings["Without \"http://\" or \"https://\""] = "Ohne \"http://\" oder \"https://\"";
-App::$strings["Pump.io username"] = "Pump.io-Benutzername";
-App::$strings["Without the servername"] = "Ohne dem Servernamen";
-App::$strings["You are not authenticated to pumpio"] = "Du bist nicht bei pumpio authentifiziert.";
-App::$strings["(Re-)Authenticate your pump.io connection"] = "Deine pumpio Verbindung (erneut) authentifizieren";
-App::$strings["Enable pump.io Post Plugin"] = "Aktiviere das pumpio-Plugin";
-App::$strings["Post to pump.io by default"] = "Standardmäßig bei pumpio veröffentlichen";
-App::$strings["Should posts be public"] = "Sollen die Beiträge öffentlich sein";
-App::$strings["Mirror all public posts"] = "Öffentliche Beiträge spiegeln";
-App::$strings["Pump.io Post Settings"] = "Pump.io-Beitragseinstellungen";
-App::$strings["PumpIO Settings saved."] = "PumpIO-Einstellungen gespeichert.";
-App::$strings["An account has been created for you."] = "Ein Konto wurde für Sie erstellt.";
-App::$strings["Authentication successful but rejected: account creation is disabled."] = "Authentifizierung war erfolgreich wurde aber abgewiesen! Das Anlegen von Accounts wurde deaktiviert.";
-App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Suche %1\$s (%2\$s)";
-App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname";
-App::$strings["Search \$Projectname"] = "\$Projectname suchen";
-App::$strings["Redmatrix File Storage Import"] = "";
-App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Hiermit werden alle deine Daten aus der Redmatrix Cloud in diesen Kanal importiert.";
-App::$strings["file"] = "Datei";
-App::$strings["Send email to all members"] = "E-Mail an alle Mitglieder senden";
-App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d von %2\$d Nachrichten gesendet.";
-App::$strings["Send email to all hub members."] = "Eine E-Mail an alle Mitglieder dieses Hubs senden.";
-App::$strings["Sender Email address"] = "E-Mail Adresse des Absenders";
-App::$strings["Test mode (only send to hub administrator)"] = "Test Modus (nur an Hub Administratoren senden)";
-App::$strings["Frequently"] = "Häufig";
-App::$strings["Hourly"] = "Stündlich";
-App::$strings["Twice daily"] = "Zwei Mal am Tag";
-App::$strings["Daily"] = "Täglich";
-App::$strings["Weekly"] = "Wöchentlich";
-App::$strings["Monthly"] = "Monatlich";
-App::$strings["Currently Male"] = "Momentan männlich";
-App::$strings["Currently Female"] = "Momentan weiblich";
-App::$strings["Mostly Male"] = "Größtenteils männlich";
-App::$strings["Mostly Female"] = "Größtenteils weiblich";
-App::$strings["Transgender"] = "Transsexuell";
-App::$strings["Intersex"] = "Zwischengeschlechtlich";
-App::$strings["Transsexual"] = "Transsexuell";
-App::$strings["Hermaphrodite"] = "Zwitter";
-App::$strings["Neuter"] = "Geschlechtslos";
-App::$strings["Non-specific"] = "unklar";
-App::$strings["Undecided"] = "Unentschieden";
-App::$strings["Males"] = "Männer";
-App::$strings["Females"] = "Frauen";
-App::$strings["Gay"] = "Schwul";
-App::$strings["Lesbian"] = "Lesbisch";
-App::$strings["No Preference"] = "Keine Bevorzugung";
-App::$strings["Bisexual"] = "Bisexuell";
-App::$strings["Autosexual"] = "Autosexuell";
-App::$strings["Abstinent"] = "Enthaltsam";
-App::$strings["Virgin"] = "Jungfräulich";
-App::$strings["Deviant"] = "Abweichend";
-App::$strings["Fetish"] = "Fetisch";
-App::$strings["Oodles"] = "Unmengen";
-App::$strings["Nonsexual"] = "Sexlos";
-App::$strings["Single"] = "Single";
-App::$strings["Lonely"] = "Einsam";
-App::$strings["Available"] = "Verfügbar";
-App::$strings["Unavailable"] = "Nicht verfügbar";
-App::$strings["Has crush"] = "Verguckt";
-App::$strings["Infatuated"] = "Verknallt";
-App::$strings["Dating"] = "Lerne gerade jemanden kennen";
-App::$strings["Unfaithful"] = "Treulos";
-App::$strings["Sex Addict"] = "Sexabhängig";
-App::$strings["Friends/Benefits"] = "Freunde/Begünstigte";
-App::$strings["Casual"] = "Lose";
-App::$strings["Engaged"] = "Verlobt";
-App::$strings["Married"] = "Verheiratet";
-App::$strings["Imaginarily married"] = "Gewissermaßen verheiratet";
-App::$strings["Partners"] = "Partner";
-App::$strings["Cohabiting"] = "Lebensgemeinschaft";
-App::$strings["Common law"] = "Informelle Ehe";
-App::$strings["Happy"] = "Glücklich";
-App::$strings["Not looking"] = "Nicht Ausschau haltend";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Betrogen";
-App::$strings["Separated"] = "Getrennt";
-App::$strings["Unstable"] = "Labil";
-App::$strings["Divorced"] = "Geschieden";
-App::$strings["Imaginarily divorced"] = "Gewissermaßen geschieden";
-App::$strings["Widowed"] = "Verwitwet";
-App::$strings["Uncertain"] = "Ungewiss";
-App::$strings["It's complicated"] = "Es ist kompliziert";
-App::$strings["Don't care"] = "Interessiert mich nicht";
-App::$strings["Ask me"] = "Frag mich mal";
-App::$strings["likes %1\$s's %2\$s"] = "";
-App::$strings["doesn't like %1\$s's %2\$s"] = "";
-App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden";
-App::$strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an";
-App::$strings["poked"] = "stupste";
-App::$strings["View %s's profile @ %s"] = "%ss Profil auf %s ansehen";
-App::$strings["Categories:"] = "Kategorien:";
-App::$strings["Filed under:"] = "Gespeichert unter:";
-App::$strings["View in context"] = "Im Zusammenhang anschauen";
-App::$strings["remove"] = "lösche";
-App::$strings["Delete Selected Items"] = "Lösche die ausgewählten Elemente";
-App::$strings["View Source"] = "Quelle anzeigen";
-App::$strings["Follow Thread"] = "Unterhaltung folgen";
-App::$strings["Unfollow Thread"] = "Unterhaltung nicht mehr folgen";
-App::$strings["Activity/Posts"] = "Aktivitäten/Beiträge";
-App::$strings["Edit Connection"] = "Verbindung bearbeiten";
-App::$strings["Message"] = "Nachricht";
-App::$strings["%s likes this."] = "%s gefällt das.";
-App::$strings["%s doesn't like this."] = "%s gefällt das nicht.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d Person</span> gefällt das.",
- 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das.",
-);
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d Person</span> gefällt das nicht.",
- 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das nicht.",
-);
-App::$strings["and"] = "und";
-App::$strings[", and %d other people"] = array(
- 0 => "",
- 1 => ", und %d andere",
-);
-App::$strings["%s like this."] = "%s gefällt das.";
-App::$strings["%s don't like this."] = "%s gefällt das nicht.";
-App::$strings["Set your location"] = "Standort";
-App::$strings["Clear browser location"] = "Browser-Standort löschen";
-App::$strings["Tag term:"] = "Schlagwort:";
-App::$strings["Where are you right now?"] = "Wo bist Du jetzt grade?";
-App::$strings["Choose a different album..."] = "Wählen Sie ein anderes Album aus...";
-App::$strings["Comments enabled"] = "Kommentare aktiviert";
-App::$strings["Comments disabled"] = "Kommentare deaktiviert";
-App::$strings["Page link name"] = "Link zur Seite";
-App::$strings["Post as"] = "Veröffentlichen als";
-App::$strings["Toggle voting"] = "Umfragewerkzeug aktivieren";
-App::$strings["Disable comments"] = "Kommentare deaktivieren";
-App::$strings["Toggle comments"] = "Kommentare umschalten";
-App::$strings["Categories (optional, comma-separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
-App::$strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
-App::$strings["Set publish date"] = "Veröffentlichungsdatum festlegen";
-App::$strings["Commented Order"] = "Neueste Kommentare";
-App::$strings["Sort by Comment Date"] = "Nach Kommentardatum sortiert";
-App::$strings["Posted Order"] = "Neueste Beiträge";
-App::$strings["Sort by Post Date"] = "Nach Beitragsdatum sortiert";
-App::$strings["Posts that mention or involve you"] = "Beiträge mit Beteiligung Deinerseits";
-App::$strings["Activity Stream - by date"] = "Activity Stream – nach Datum sortiert";
-App::$strings["Starred"] = "Markiert";
-App::$strings["Favourite Posts"] = "Markierte Beiträge";
-App::$strings["Spam"] = "Spam";
-App::$strings["Posts flagged as SPAM"] = "Nachrichten, die als SPAM markiert wurden";
-App::$strings["Status Messages and Posts"] = "Statusnachrichten und Beiträge";
-App::$strings["Profile Details"] = "Profil-Details";
-App::$strings["Photo Albums"] = "Fotoalben";
-App::$strings["Files and Storage"] = "Dateien und Speicher";
-App::$strings["Bookmarks"] = "Lesezeichen";
-App::$strings["Saved Bookmarks"] = "Gespeicherte Lesezeichen";
-App::$strings["View Cards"] = "Karten anzeigen";
-App::$strings["articles"] = "Artikel";
-App::$strings["View Articles"] = "Artikel anzeigen";
-App::$strings["View Webpages"] = "Webseiten anzeigen";
-App::$strings["__ctx:noun__ Attending"] = array(
- 0 => "Zusage",
- 1 => "Zusagen",
-);
-App::$strings["__ctx:noun__ Not Attending"] = array(
- 0 => "Absage",
- 1 => "Absagen",
-);
-App::$strings["__ctx:noun__ Undecided"] = array(
- 0 => " Unentschlossen",
- 1 => "Unentschlossene",
-);
-App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "Zustimmung",
- 1 => "Zustimmungen",
-);
-App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Ablehnung",
- 1 => "Ablehnungen",
-);
-App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "Enthaltung",
- 1 => "Enthaltungen",
-);
-App::$strings["Directory Options"] = "Verzeichnisoptionen";
-App::$strings["Safe Mode"] = "Sicherer Modus";
-App::$strings["Public Forums Only"] = "Nur öffentliche Foren";
-App::$strings["This Website Only"] = "Nur dieser Hub";
-App::$strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
-App::$strings["Cloned channel not found. Import failed."] = "Geklonter Kanal nicht gefunden. Import fehlgeschlagen.";
-App::$strings["prev"] = "vorherige";
-App::$strings["first"] = "erste";
-App::$strings["last"] = "letzte";
-App::$strings["next"] = "nächste";
-App::$strings["older"] = "älter";
-App::$strings["newer"] = "neuer";
-App::$strings["No connections"] = "Keine Verbindungen";
-App::$strings["View all %s connections"] = "Alle Verbindungen von %s anzeigen";
-App::$strings["poke"] = "anstupsen";
-App::$strings["ping"] = "anpingen";
-App::$strings["pinged"] = "pingte";
-App::$strings["prod"] = "knuffen";
-App::$strings["prodded"] = "knuffte";
-App::$strings["slap"] = "ohrfeigen";
-App::$strings["slapped"] = "ohrfeigte";
-App::$strings["finger"] = "befummeln";
-App::$strings["fingered"] = "befummelte";
-App::$strings["rebuff"] = "eine Abfuhr erteilen";
-App::$strings["rebuffed"] = "zurückgewiesen";
-App::$strings["happy"] = "glücklich";
-App::$strings["sad"] = "traurig";
-App::$strings["mellow"] = "sanft";
-App::$strings["tired"] = "müde";
-App::$strings["perky"] = "frech";
-App::$strings["angry"] = "sauer";
-App::$strings["stupefied"] = "verblüfft";
-App::$strings["puzzled"] = "verwirrt";
-App::$strings["interested"] = "interessiert";
-App::$strings["bitter"] = "verbittert";
-App::$strings["cheerful"] = "fröhlich";
-App::$strings["alive"] = "lebendig";
-App::$strings["annoyed"] = "verärgert";
-App::$strings["anxious"] = "unruhig";
-App::$strings["cranky"] = "schrullig";
-App::$strings["disturbed"] = "verstört";
-App::$strings["frustrated"] = "frustriert";
-App::$strings["depressed"] = "deprimiert";
-App::$strings["motivated"] = "motiviert";
-App::$strings["relaxed"] = "entspannt";
-App::$strings["surprised"] = "überrascht";
-App::$strings["Monday"] = "Montag";
-App::$strings["Tuesday"] = "Dienstag";
-App::$strings["Wednesday"] = "Mittwoch";
-App::$strings["Thursday"] = "Donnerstag";
-App::$strings["Friday"] = "Freitag";
-App::$strings["Saturday"] = "Samstag";
-App::$strings["Sunday"] = "Sonntag";
-App::$strings["January"] = "Januar";
-App::$strings["February"] = "Februar";
-App::$strings["March"] = "März";
-App::$strings["April"] = "April";
-App::$strings["May"] = "Mai";
-App::$strings["June"] = "Juni";
-App::$strings["July"] = "Juli";
-App::$strings["August"] = "August";
-App::$strings["September"] = "September";
-App::$strings["October"] = "Oktober";
-App::$strings["November"] = "November";
-App::$strings["December"] = "Dezember";
-App::$strings["Unknown Attachment"] = "Unbekannter Anhang";
-App::$strings["unknown"] = "unbekannt";
-App::$strings["remove category"] = "Kategorie entfernen";
-App::$strings["remove from file"] = "aus der Datei entfernen";
-App::$strings["Download binary/encrypted content"] = "Binären/verschlüsselten Inhalt herunterladen";
-App::$strings["default"] = "Standard";
-App::$strings["Page layout"] = "Seiten-Layout";
-App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen";
-App::$strings["HTML"] = "HTML";
-App::$strings["Comanche Layout"] = "Comanche-Layout";
-App::$strings["PHP"] = "PHP";
-App::$strings["Page content type"] = "Art des Seiteninhalts";
-App::$strings["activity"] = "Aktivität";
-App::$strings["a-z, 0-9, -, and _ only"] = "nur a-z, 0-9, - und _";
-App::$strings["Design Tools"] = "Gestaltungswerkzeuge";
-App::$strings["Pages"] = "Seiten";
-App::$strings["Import website..."] = "Webseite importieren...";
-App::$strings["Select folder to import"] = "Ordner zum Importieren auswählen";
-App::$strings["Import from a zipped folder:"] = "Aus einem gezippten Ordner importieren:";
-App::$strings["Import from cloud files:"] = "Aus Cloud-Dateien importieren:";
-App::$strings["/cloud/channel/path/to/folder"] = "/Cloud/Kanal/Pfad/zum/Ordner";
-App::$strings["Enter path to website files"] = "Pfad zu Webseitendateien eingeben";
-App::$strings["Select folder"] = "Ordner auswählen";
-App::$strings["Export website..."] = "Webseite exportieren...";
-App::$strings["Export to a zip file"] = "In eine ZIP-Datei exportieren";
-App::$strings["website.zip"] = "website.zip";
-App::$strings["Enter a name for the zip file."] = "Geben Sie einen für die ZIP-Datei ein.";
-App::$strings["Export to cloud files"] = "In Cloud-Dateien exportieren";
-App::$strings["/path/to/export/folder"] = "/Pfad/zum/exportierenden/Ordner";
-App::$strings["Enter a path to a cloud files destination."] = "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein.";
-App::$strings["Specify folder"] = "Ordner angeben";
-App::$strings["%d invitation available"] = array(
- 0 => "%d Einladung verfügbar",
- 1 => "%d Einladungen verfügbar",
-);
-App::$strings["Find Channels"] = "Finde Kanäle";
-App::$strings["Enter name or interest"] = "Name oder Interessen eingeben";
-App::$strings["Connect/Follow"] = "Verbinden/Folgen";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morgenstein, Angeln";
-App::$strings["Random Profile"] = "Zufallsprofil";
-App::$strings["Invite Friends"] = "Lade Freunde ein";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Fortgeschrittenes Beispiel: name=fred and country=iceland";
-App::$strings["Common Connections"] = "Gemeinsame Verbindungen";
-App::$strings["View all %d common connections"] = "Zeige alle %d gemeinsamen Verbindungen";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
-App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
-App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
-App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
-App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
-App::$strings["Remote channel or protocol unavailable."] = "Externer Kanal oder Protokoll nicht verfügbar.";
-App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
-App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
-App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
-App::$strings["Delete this item?"] = "Dieses Element löschen?";
-App::$strings["%s show less"] = "%s weniger anzeigen";
-App::$strings["%s expand"] = "%s aufklappen";
-App::$strings["%s collapse"] = "%s einklappen";
-App::$strings["Password too short"] = "Kennwort zu kurz";
-App::$strings["Passwords do not match"] = "Kennwörter stimmen nicht überein";
-App::$strings["everybody"] = "alle";
-App::$strings["Secret Passphrase"] = "geheime Passphrase";
-App::$strings["Passphrase hint"] = "Hinweis zur Passphrase";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert.";
-App::$strings["close all"] = "Alle schließen";
-App::$strings["Nothing new here"] = "Nichts Neues hier";
-App::$strings["Rate This Channel (this is public)"] = "Diesen Kanal bewerten (öffentlich sichtbar)";
-App::$strings["Describe (optional)"] = "Beschreibung (optional)";
-App::$strings["Please enter a link URL"] = "Gib eine URL ein:";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlassen möchtest?";
-App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-App::$strings["timeago.prefixFromNow"] = " ";
-App::$strings["ago"] = "her";
-App::$strings["from now"] = "von jetzt";
-App::$strings["less than a minute"] = "weniger als eine Minute";
-App::$strings["about a minute"] = "ungefähr eine Minute";
-App::$strings["%d minutes"] = "%d Minuten";
-App::$strings["about an hour"] = "ungefähr eine Stunde";
-App::$strings["about %d hours"] = "ungefähr %d Stunden";
-App::$strings["a day"] = "ein Tag";
-App::$strings["%d days"] = "%d Tage";
-App::$strings["about a month"] = "ungefähr einen Monat";
-App::$strings["%d months"] = "%d Monate";
-App::$strings["about a year"] = "ungefähr ein Jahr";
-App::$strings["%d years"] = "%d Jahre";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["__ctx:long__ May"] = "Mai";
-App::$strings["Jan"] = "Jan";
-App::$strings["Feb"] = "Feb";
-App::$strings["Mar"] = "Mär";
-App::$strings["Apr"] = "Apr";
-App::$strings["__ctx:short__ May"] = "Mai";
-App::$strings["Jun"] = "Jun";
-App::$strings["Jul"] = "Jul";
-App::$strings["Aug"] = "Aug";
-App::$strings["Sep"] = "Sep";
-App::$strings["Oct"] = "Okt";
-App::$strings["Nov"] = "Nov";
-App::$strings["Dec"] = "Dez";
-App::$strings["Sun"] = "So";
-App::$strings["Mon"] = "Mo";
-App::$strings["Tue"] = "Di";
-App::$strings["Wed"] = "Mi";
-App::$strings["Thu"] = "Do";
-App::$strings["Fri"] = "Fr";
-App::$strings["Sat"] = "Sa";
-App::$strings["__ctx:calendar__ today"] = "heute";
-App::$strings["__ctx:calendar__ month"] = "Monat";
-App::$strings["__ctx:calendar__ week"] = "Woche";
-App::$strings["__ctx:calendar__ day"] = "Tag";
-App::$strings["__ctx:calendar__ All day"] = "Ganztägig";
-App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
-App::$strings["No recipient provided."] = "Kein Empfänger angegeben";
-App::$strings["[no subject]"] = "[no subject]";
-App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
-App::$strings[" and "] = "und";
-App::$strings["public profile"] = "öffentliches Profil";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
-App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
-App::$strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
-App::$strings["No source file."] = "Keine Quelldatei.";
-App::$strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
-App::$strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden";
-App::$strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess.";
-App::$strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen.";
-App::$strings["Path not available."] = "Pfad nicht verfügbar.";
-App::$strings["Empty pathname"] = "Leere Pfadangabe";
-App::$strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad";
-App::$strings["Path not found."] = "Pfad nicht gefunden.";
-App::$strings["mkdir failed."] = "mkdir fehlgeschlagen.";
-App::$strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
-App::$strings["Empty path"] = "Leere Pfadangabe";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
-App::$strings["(Unknown)"] = "(Unbekannt)";
-App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
-App::$strings["Visible to you only."] = "Nur für Dich sichtbar.";
-App::$strings["Visible to anybody in this network."] = "Für jedes \$Projectname-Mitglied sichtbar.";
-App::$strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
-App::$strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
-App::$strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
-App::$strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
-App::$strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
-App::$strings["Privacy group is empty."] = "Gruppe ist leer.";
-App::$strings["Privacy group: %s"] = "Gruppe: %s";
-App::$strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
-App::$strings["profile photo"] = "Profilfoto";
-App::$strings["[Edited %s]"] = "[%s wurde bearbeitet]";
-App::$strings["__ctx:edit_activity__ Post"] = "Beitrag";
-App::$strings["__ctx:edit_activity__ Comment"] = "Kommentar";
-App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
-App::$strings["Empty name"] = "Namensfeld leer";
-App::$strings["Name too long"] = "Name ist zu lang";
-App::$strings["No account identifier"] = "Keine Account-Kennung";
-App::$strings["Nickname is required."] = "Spitzname ist erforderlich.";
-App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
-App::$strings["Default Profile"] = "Standard-Profil";
-App::$strings["Unable to retrieve modified identity"] = "Geänderte Identität kann nicht empfangen werden";
-App::$strings["Create New Profile"] = "Neues Profil erstellen";
-App::$strings["Visible to everybody"] = "Für jeden sichtbar";
-App::$strings["Gender:"] = "Geschlecht:";
-App::$strings["Homepage:"] = "Homepage:";
-App::$strings["Online Now"] = "gerade online";
-App::$strings["Trans"] = "";
-App::$strings["Like this channel"] = "Dieser Kanal gefällt mir";
-App::$strings["j F, Y"] = "j. F Y";
-App::$strings["j F"] = "j. F";
-App::$strings["Birthday:"] = "Geburtstag:";
-App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:";
-App::$strings["Tags:"] = "Schlagworte:";
-App::$strings["Political Views:"] = "Politische Ansichten:";
-App::$strings["Religion:"] = "Religion:";
-App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
-App::$strings["Likes:"] = "Gefällt:";
-App::$strings["Dislikes:"] = "Gefällt nicht:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
-App::$strings["My other channels:"] = "Meine anderen Kanäle:";
-App::$strings["Musical interests:"] = "Musikalische Interessen:";
-App::$strings["Books, literature:"] = "Bücher, Literatur:";
-App::$strings["Television:"] = "Fernsehen:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
-App::$strings["Love/Romance:"] = "Liebe/Romantik:";
-App::$strings["Work/employment:"] = "Arbeit/Anstellung:";
-App::$strings["School/education:"] = "Schule/Ausbildung:";
-App::$strings["Like this thing"] = "Gefällt mir";
-App::$strings["l F d, Y \\@ g:i A"] = "l, d. F Y, H:i";
-App::$strings["Starts:"] = "Beginnt:";
-App::$strings["Finishes:"] = "Endet:";
-App::$strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt";
-App::$strings["Not specified"] = "Keine Angabe";
-App::$strings["Needs Action"] = "Aktion erforderlich";
-App::$strings["Completed"] = "Abgeschlossen";
-App::$strings["In Process"] = "In Bearbeitung";
-App::$strings["Cancelled"] = "gestrichen";
-App::$strings["Home, Voice"] = "Zuhause, Sprache";
-App::$strings["Home, Fax"] = "Zuhause, Fax";
-App::$strings["Work, Voice"] = "Arbeit, Sprache";
-App::$strings["Work, Fax"] = "Arbeit, Fax";
-App::$strings["view full size"] = "In Vollbildansicht anschauen";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["GNU-Social"] = "GNU-Social";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["Select an alternate language"] = "Wähle eine alternative Sprache";
-App::$strings["Who can see this?"] = "Wer kann das sehen?";
-App::$strings["Custom selection"] = "Benutzerdefinierte Auswahl";
-App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen.";
-App::$strings["Show"] = "Anzeigen";
-App::$strings["Don't show"] = "Nicht anzeigen";
-App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann.";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
-App::$strings["Image/photo"] = "Bild/Foto";
-App::$strings["Encrypted content"] = "Verschlüsselter Inhalt";
-App::$strings["Install %1\$s element %2\$s"] = "";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren.";
-App::$strings["card"] = "Karte";
-App::$strings["article"] = "Artikel";
-App::$strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
-App::$strings["spoiler"] = "Spoiler";
-App::$strings["$1 wrote:"] = "$1 schrieb:";
-App::$strings[" by "] = "von";
-App::$strings[" on "] = "am";
-App::$strings["Embedded content"] = "Eingebetteter Inhalt";
-App::$strings["Embedding disabled"] = "Einbetten deaktiviert";
-App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s heißt %2\$s willkommen";
-App::$strings["General Features"] = "Allgemeine Funktionen";
-App::$strings["Multiple Profiles"] = "Mehrfachprofile";
-App::$strings["Ability to create multiple profiles"] = "Ermöglicht das Anlegen mehrerer Profile pro Kanal";
-App::$strings["Advanced Profiles"] = "Erweiterte Profile";
-App::$strings["Additional profile sections and selections"] = "Stellt zusätzliche Bereiche und Felder im Profil zur Verfügung";
-App::$strings["Profile Import/Export"] = "Profil-Import/Export";
-App::$strings["Save and load profile details across sites/channels"] = "Ermöglicht das Speichern von Profilen, um sie in einen anderen Kanal zu importieren";
-App::$strings["Web Pages"] = "Webseiten";
-App::$strings["Provide managed web pages on your channel"] = "Ermöglicht das Erstellen von Webseiten in Deinem Kanal";
-App::$strings["Provide a wiki for your channel"] = "Stelle ein Wiki in Deinem Kanal zur Verfügung";
-App::$strings["Private Notes"] = "Private Notizen";
-App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Aktiviert ein Werkzeug mit dem Notizen und Erinnerungen gespeichert werden können (Hinweis: nicht verschlüsselt)";
-App::$strings["Create personal planning cards"] = "Erstelle persönliche (Notiz-)Karten zur Planung/Koordination oder ähnlichen Zwecken";
-App::$strings["Navigation Channel Select"] = "Kanal-Auswahl in der Navigationsleiste";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü";
-App::$strings["Photo Location"] = "Aufnahmeort";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte";
-App::$strings["Access Controlled Chatrooms"] = "Zugriffskontrollierte Chaträume";
-App::$strings["Provide chatrooms and chat services with access control."] = "Bieten Sie Chaträume und Chatdienste mit Zugriffskontrolle an.";
-App::$strings["Provide alternate connection permission roles."] = "Stelle benutzerdefinierte Berechtigungsrollen für Verbindungen zur Verfügung.";
-App::$strings["Smart Birthdays"] = "Smarte Geburtstage";
-App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Stellt für Geburtstage einen Zeitzonenbezug her, falls deine Freunde über den ganzen Planeten verstreut sind.";
-App::$strings["Event Timezone Selection"] = "Termin-Zeitzonenauswahl";
-App::$strings["Allow event creation in timezones other than your own."] = "Ermögliche das Erstellen von Terminen in anderen Zeitzonen als Deiner eigenen.";
-App::$strings["Advanced Directory Search"] = "Erweiterte Verzeichnissuche";
-App::$strings["Allows creation of complex directory search queries"] = "Ermöglicht die Erstellung komplexer Verzeichnis-Suchabfragen";
-App::$strings["Advanced Theme and Layout Settings"] = "Erweiterte Design- und Layout-Einstellungen";
-App::$strings["Allows fine tuning of themes and page layouts"] = "Erlaubt die Feineinstellung von Designs und Seitenlayouts";
-App::$strings["Post Composition Features"] = "Nachbearbeitungsfunktionen";
-App::$strings["Large Photos"] = "Große Fotos";
-App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet.";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Ermöglicht den automatischen Import von Inhalten für diesen Kanal von anderen Kanälen oder Feeds";
-App::$strings["Even More Encryption"] = "Noch mehr Verschlüsselung";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Ermöglicht optional die zusätzliche Verschlüsselung von Inhalten (Ende-zu-Ende mit geteiltem Schlüssel)";
-App::$strings["Enable Voting Tools"] = "Umfragewerkzeuge aktivieren";
-App::$strings["Provide a class of post which others can vote on"] = "Aktiviert die Umfragewerkzeuge, um anderen die Möglichkeit zu geben, einem Beitrag zuzustimmen, ihn abzulehnen oder sich zu enthalten. (Muss im Beitrag selbst noch aktiviert werden.)";
-App::$strings["Disable Comments"] = "Kommentare deaktivieren";
-App::$strings["Provide the option to disable comments for a post"] = "Ermöglicht, die Kommentarfunktion für einzelne Beiträge abzuschalten";
-App::$strings["Delayed Posting"] = "Verzögertes Senden";
-App::$strings["Allow posts to be published at a later date"] = "Ermöglicht es, Beiträge zu einem späteren Zeitpunkt zu veröffentlichen";
-App::$strings["Content Expiration"] = "Verfall von Inhalten";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum.";
-App::$strings["Suppress Duplicate Posts/Comments"] = "Doppelte Beiträge unterdrücken";
-App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Verhindert, dass innerhalb von zwei Minuten Beiträge mit identischem Inhalt veröffentlicht werden.";
-App::$strings["Network and Stream Filtering"] = "Netzwerk- und Stream-Filter";
-App::$strings["Search by Date"] = "Suche nach Datum";
-App::$strings["Ability to select posts by date ranges"] = "Möglichkeit, Beiträge nach Zeiträumen auszuwählen";
-App::$strings["Privacy Groups"] = "Gruppen";
-App::$strings["Enable management and selection of privacy groups"] = "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren";
-App::$strings["Save search terms for re-use"] = "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung";
-App::$strings["Network Personal Tab"] = "Persönlicher Netzwerkreiter";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Aktiviert einen Reiter in der Grid-Ansicht, der nur Netzwerk-Beiträge anzeigt, mit denen Du interagiert hast";
-App::$strings["Network New Tab"] = "Netzwerkreiter Neu";
-App::$strings["Enable tab to display all new Network activity"] = "Aktiviert einen Reiter in der Grid-Ansicht, der alle neuen Netzwerkaktivitäten anzeigt";
-App::$strings["Affinity Tool"] = "Beziehungs-Tool";
-App::$strings["Filter stream activity by depth of relationships"] = "Aktiviert ein Werkzeug in der Grid-Ansicht, das den Stream nach Grad der Beziehung filtern kann";
-App::$strings["Show friend and connection suggestions"] = "Freund- und Verbindungsvorschläge anzeigen";
-App::$strings["Connection Filtering"] = "Filter für Verbindungen";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)";
-App::$strings["Post/Comment Tools"] = "Beitrag-/Kommentar-Tools";
-App::$strings["Use markdown for editing posts"] = "Verwende Markdown zum Bearbeiten von Beiträgen";
-App::$strings["Community Tagging"] = "Gemeinschaftliches Verschlagworten";
-App::$strings["Ability to tag existing posts"] = "Ermöglicht das Verschlagworten existierender Beiträge";
-App::$strings["Post Categories"] = "Beitrags-Kategorien";
-App::$strings["Add categories to your posts"] = "Aktiviert Kategorien für Beiträge";
-App::$strings["Emoji Reactions"] = "Emoji Reaktionen";
-App::$strings["Add emoji reaction ability to posts"] = "Aktiviert Emoji-Reaktionen für Beiträge";
-App::$strings["Ability to file posts under folders"] = "Möglichkeit, Beiträge in Verzeichnissen zu sammeln";
-App::$strings["Dislike Posts"] = "Gefällt-mir-nicht-Beiträge";
-App::$strings["Ability to dislike posts/comments"] = "Aktiviert die „Gefällt mir nicht“-Schaltfläche";
-App::$strings["Star Posts"] = "Beiträge mit Sternchen versehen";
-App::$strings["Ability to mark special posts with a star indicator"] = "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol";
-App::$strings["Tag Cloud"] = "Schlagwort-Wolke";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite";
-App::$strings["Premium Channel"] = "Premium-Kanal";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen";
-App::$strings["Tags"] = "Schlagwörter";
-App::$strings["Keywords"] = "Schlüsselwörter";
-App::$strings["have"] = "habe";
-App::$strings["has"] = "hat";
-App::$strings["want"] = "will";
-App::$strings["wants"] = "will";
-App::$strings["likes"] = "gefällt";
-App::$strings["dislikes"] = "missfällt";
-App::$strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
-App::$strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt";
-App::$strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
-App::$strings["An invitation is required."] = "Eine Einladung wird benötigt.";
-App::$strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden.";
-App::$strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
-App::$strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen.";
-App::$strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s";
-App::$strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
-App::$strings["your registration password"] = "Dein Registrierungspasswort";
-App::$strings["Registration details for %s"] = "Registrierungsdetails für %s";
-App::$strings["Account approved."] = "Nutzerkonto bestätigt.";
-App::$strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen";
-App::$strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
-App::$strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
-App::$strings["Birthday"] = "Geburtstag";
-App::$strings["Age: "] = "Alter:";
-App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
-App::$strings["less than a second ago"] = "Vor weniger als einer Sekunde";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "Jahr",
- 1 => "Jahre",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "Monat",
- 1 => "Monate",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "Woche",
- 1 => "Wochen",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "Tag",
- 1 => "Tage",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "Stunde",
- 1 => "Stunden",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "Minute",
- 1 => "Minuten",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "Sekunde",
- 1 => "Sekunden",
-);
-App::$strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
-App::$strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
-App::$strings["Remote authentication"] = "Ãœber Konto auf anderem Server einloggen";
-App::$strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren";
-App::$strings["Network Activity"] = "Netzwerk-Aktivitäten";
-App::$strings["Mark all activity notifications seen"] = "Alle Benachrichtigungen als gesehen markieren";
-App::$strings["Channel home"] = "Mein Kanal";
-App::$strings["View your channel home"] = "Zeige Deine Kanalseite an";
-App::$strings["Mark all channel notifications seen"] = "Markiere alle Kanal-Benachrichtigungen als angesehen";
-App::$strings["Registrations"] = "Registrierungen";
-App::$strings["Notifications"] = "Benachrichtigungen";
-App::$strings["View all notifications"] = "Alle Benachrichtigungen ansehen";
-App::$strings["Mark all system notifications seen"] = "Markiere alle System-Benachrichtigungen als gesehen";
-App::$strings["Private mail"] = "Persönliche Mail";
-App::$strings["View your private messages"] = "Zeige Deine persönlichen Nachrichten an";
-App::$strings["Mark all private messages seen"] = "Markiere alle persönlichen Nachrichten als gesehen";
-App::$strings["Event Calendar"] = "Terminkalender";
-App::$strings["Manage Your Channels"] = "Verwalte Deine Kanäle";
-App::$strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen";
-App::$strings["End this session"] = "Beende diese Sitzung";
-App::$strings["Your profile page"] = "Deine Profilseite";
-App::$strings["Manage/Edit profiles"] = "Profile verwalten";
-App::$strings["Edit your profile"] = "Profil bearbeiten";
-App::$strings["Sign in"] = "Anmelden";
-App::$strings["Take me home"] = "Bringe mich nach Hause (eigener Kanal)";
-App::$strings["Log me out of this site"] = "Logge mich von dieser Seite aus";
-App::$strings["Create an account"] = "Erzeuge ein Konto";
-App::$strings["Help and documentation"] = "Hilfe und Dokumentation";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt";
-App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration";
-App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt";
-App::$strings["Please wait..."] = "Bitte warten...";
-App::$strings["Add Apps"] = "Apps hinzufügen";
-App::$strings["Arrange Apps"] = "Apps anordnen";
-App::$strings["Toggle System Apps"] = "System-Apps umschalten";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes";
-App::$strings["Image file is empty."] = "Bilddatei ist leer.";
-App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen.";
-App::$strings["a new photo"] = "ein neues Foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht";
-App::$strings["Upload New Photos"] = "Neue Fotos hochladen";
-App::$strings["Invalid data packet"] = "Ungültiges Datenpaket";
-App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
-App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen.";
-App::$strings["Add new connections to this privacy group"] = "Neue Verbindung zu dieser Gruppe hinzufügen";
-App::$strings["edit"] = "Bearbeiten";
-App::$strings["Edit group"] = "Gruppe ändern";
-App::$strings["Add privacy group"] = "Gruppe hinzufügen";
-App::$strings["Channels not in any privacy group"] = "Kanäle, die in keiner Gruppe sind";
-App::$strings["New window"] = "Neues Fenster";
-App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
-App::$strings["Logged out."] = "Ausgeloggt.";
-App::$strings["Email validation is incomplete. Please check your email."] = "E-Mail-Bestätigung nicht abgeschlossen. Bitte prüfe Deine E-Mails (ggf. Spam-Filterung mit berücksichtigen).";
-App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
-App::$strings["Help:"] = "Hilfe:";
-App::$strings["Not Found"] = "Nicht gefunden";
diff --git a/view/en-au/register_verify_member.tpl b/view/en-au/register_verify_member.tpl
index d1e34be67..9bdd7fa51 100644
--- a/view/en-au/register_verify_member.tpl
+++ b/view/en-au/register_verify_member.tpl
@@ -10,7 +10,12 @@ Login with the password you chose at registration.
We need to verify your email address in order to give you full access.
-If you registered this account, please visit the following link:
+Your validation code is
+
+{{$hash}}
+
+
+If you registered this account, please enter the validation code when requested or visit the following link:
{{$siteurl}}/regver/allow/{{$hash}}
@@ -23,3 +28,8 @@ To deny the request and remove the account, please visit:
Thank you.
+
+--
+Terms Of Service:
+{{$siteurl}}/help/TermsOfService
+
diff --git a/view/en-gb/register_verify_member.tpl b/view/en-gb/register_verify_member.tpl
index d1e34be67..9bdd7fa51 100644
--- a/view/en-gb/register_verify_member.tpl
+++ b/view/en-gb/register_verify_member.tpl
@@ -10,7 +10,12 @@ Login with the password you chose at registration.
We need to verify your email address in order to give you full access.
-If you registered this account, please visit the following link:
+Your validation code is
+
+{{$hash}}
+
+
+If you registered this account, please enter the validation code when requested or visit the following link:
{{$siteurl}}/regver/allow/{{$hash}}
@@ -23,3 +28,8 @@ To deny the request and remove the account, please visit:
Thank you.
+
+--
+Terms Of Service:
+{{$siteurl}}/help/TermsOfService
+
diff --git a/view/en/register_verify_member.tpl b/view/en/register_verify_member.tpl
index 71f0964d4..9bdd7fa51 100644
--- a/view/en/register_verify_member.tpl
+++ b/view/en/register_verify_member.tpl
@@ -10,7 +10,12 @@ Login with the password you chose at registration.
We need to verify your email address in order to give you full access.
-If you registered this account, please visit the following link:
+Your validation code is
+
+{{$hash}}
+
+
+If you registered this account, please enter the validation code when requested or visit the following link:
{{$siteurl}}/regver/allow/{{$hash}}
diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po
index bbbca698a..422699420 100644
--- a/view/es-es/hmessages.po
+++ b/view/es-es/hmessages.po
@@ -6,7 +6,7 @@
# alfonsomthd <alfonsomthd@tutanota.com>, 2015
# inboxwall <axetransit@gmail.com>, 2015
# jeroenpraat <jeroenpraat@disroot.org>, 2015
-# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2017
+# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2017-2018
# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2015-2017
# Rafael, 2015
# tony baldwin <tonybaldwin@gmx.com>, 2014
@@ -14,8 +14,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-13 12:54+0100\n"
-"PO-Revision-Date: 2017-12-16 09:43+0000\n"
+"POT-Creation-Date: 2018-03-01 08:51+0100\n"
+"PO-Revision-Date: 2018-03-02 17:15+0000\n"
"Last-Translator: Manuel Jiménez Friaza <mjfriaza@disroot.org>\n"
"Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/red-matrix/language/es_ES/)\n"
"MIME-Version: 1.0\n"
@@ -153,13 +153,13 @@ msgid "Special - Group Repository"
msgstr "Especial - Repositorio de grupo"
#: ../../Zotlabs/Access/PermissionRoles.php:287
-#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:132
-#: ../../Zotlabs/Module/Settings/Channel.php:474
-#: ../../Zotlabs/Module/Connedit.php:936 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Register.php:221 ../../include/selectors.php:49
+#: ../../Zotlabs/Module/Cdav.php:1182 ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Settings/Channel.php:473
+#: ../../Zotlabs/Module/Connedit.php:918 ../../Zotlabs/Module/Profiles.php:798
+#: ../../Zotlabs/Module/Register.php:224 ../../include/selectors.php:49
#: ../../include/selectors.php:66 ../../include/selectors.php:104
-#: ../../include/selectors.php:140 ../../include/event.php:1308
-#: ../../include/event.php:1315 ../../include/connections.php:689
+#: ../../include/selectors.php:140 ../../include/event.php:1315
+#: ../../include/event.php:1322 ../../include/connections.php:689
#: ../../include/connections.php:696
msgid "Other"
msgstr "Otro"
@@ -173,7 +173,7 @@ msgstr "Modo personalizado/experto"
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Cards.php:29 ../../Zotlabs/Module/Webpages.php:33
+#: ../../Zotlabs/Module/Cards.php:33 ../../Zotlabs/Module/Webpages.php:33
#: ../../Zotlabs/Module/Filestorage.php:51 ../../include/channel.php:1198
msgid "Requested profile is not available."
msgstr "El perfil solicitado no está disponible."
@@ -188,7 +188,7 @@ msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Appman.php:86 ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Article_edit.php:51
#: ../../Zotlabs/Module/New_channel.php:77
-#: ../../Zotlabs/Module/New_channel.php:104
+#: ../../Zotlabs/Module/New_channel.php:102
#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
#: ../../Zotlabs/Module/Moderate.php:13
#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:275
@@ -200,11 +200,11 @@ msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50
#: ../../Zotlabs/Module/Wiki.php:273 ../../Zotlabs/Module/Wiki.php:400
#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:149
-#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../Zotlabs/Module/Profile_photo.php:307
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:228
-#: ../../Zotlabs/Module/Item.php:245 ../../Zotlabs/Module/Item.php:255
-#: ../../Zotlabs/Module/Item.php:1085 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Profile_photo.php:302
+#: ../../Zotlabs/Module/Profile_photo.php:315
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:229
+#: ../../Zotlabs/Module/Item.php:246 ../../Zotlabs/Module/Item.php:256
+#: ../../Zotlabs/Module/Item.php:1099 ../../Zotlabs/Module/Page.php:34
#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:389
#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Layouts.php:71
@@ -215,15 +215,15 @@ msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Editwebpage.php:89
#: ../../Zotlabs/Module/Editwebpage.php:107
#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Cards.php:68 ../../Zotlabs/Module/Webpages.php:118
+#: ../../Zotlabs/Module/Cards.php:72 ../../Zotlabs/Module/Webpages.php:118
#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:74
-#: ../../Zotlabs/Module/Like.php:184 ../../Zotlabs/Module/Suggest.php:28
+#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Suggest.php:28
#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Cover_photo.php:281
#: ../../Zotlabs/Module/Cover_photo.php:294
-#: ../../Zotlabs/Module/Display.php:404 ../../Zotlabs/Module/Network.php:15
+#: ../../Zotlabs/Module/Display.php:406 ../../Zotlabs/Module/Network.php:15
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:85
@@ -233,7 +233,7 @@ msgstr "El perfil solicitado no está disponible."
#: ../../Zotlabs/Module/Service_limits.php:11
#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Notifications.php:11
-#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:169
+#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:123
#: ../../addon/keepout/keepout.php:36 ../../addon/openid/Mod_Id.php:53
#: ../../addon/gitwiki/Mod_Gitwiki.php:196
#: ../../addon/gitwiki/Mod_Gitwiki.php:292 ../../addon/pumpio/pumpio.php:40
@@ -241,9 +241,9 @@ msgstr "El perfil solicitado no está disponible."
#: ../../include/attach.php:270 ../../include/attach.php:284
#: ../../include/attach.php:293 ../../include/attach.php:366
#: ../../include/attach.php:380 ../../include/attach.php:387
-#: ../../include/attach.php:469 ../../include/attach.php:1008
-#: ../../include/attach.php:1082 ../../include/attach.php:1247
-#: ../../include/items.php:3633 ../../include/photos.php:27
+#: ../../include/attach.php:469 ../../include/attach.php:1019
+#: ../../include/attach.php:1093 ../../include/attach.php:1258
+#: ../../include/items.php:3656 ../../include/photos.php:27
msgid "Permission denied."
msgstr "Acceso denegado."
@@ -252,7 +252,7 @@ msgstr "Acceso denegado."
msgid "Block Name"
msgstr "Nombre del bloque"
-#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2288
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2402
msgid "Blocks"
msgstr "Bloques"
@@ -271,11 +271,11 @@ msgid "Edited"
msgstr "Editado"
#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:96
-#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:147
-#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Menu.php:118
+#: ../../Zotlabs/Module/Cdav.php:1185 ../../Zotlabs/Module/New_channel.php:146
+#: ../../Zotlabs/Module/Connedit.php:921 ../../Zotlabs/Module/Menu.php:118
#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801
-#: ../../Zotlabs/Module/Cards.php:96 ../../Zotlabs/Module/Webpages.php:239
-#: ../../Zotlabs/Storage/Browser.php:273 ../../Zotlabs/Storage/Browser.php:379
+#: ../../Zotlabs/Module/Cards.php:100 ../../Zotlabs/Module/Webpages.php:239
+#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:382
#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
msgstr "Crear"
@@ -285,15 +285,15 @@ msgstr "Crear"
#: ../../Zotlabs/Module/Admin/Profs.php:154
#: ../../Zotlabs/Module/Settings/Oauth.php:149
#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:114
-#: ../../Zotlabs/Module/Connections.php:260
-#: ../../Zotlabs/Module/Connections.php:297
-#: ../../Zotlabs/Module/Connections.php:317 ../../Zotlabs/Module/Wiki.php:202
+#: ../../Zotlabs/Module/Connections.php:265
+#: ../../Zotlabs/Module/Connections.php:303
+#: ../../Zotlabs/Module/Connections.php:323 ../../Zotlabs/Module/Wiki.php:202
#: ../../Zotlabs/Module/Wiki.php:358 ../../Zotlabs/Module/Menu.php:112
#: ../../Zotlabs/Module/Layouts.php:193
#: ../../Zotlabs/Module/Editwebpage.php:142
#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:399
-#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:285
+#: ../../Zotlabs/Module/Card_edit.php:99 ../../Zotlabs/Lib/Apps.php:409
+#: ../../Zotlabs/Lib/ThreadItem.php:121 ../../Zotlabs/Storage/Browser.php:288
#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
#: ../../addon/gitwiki/Mod_Gitwiki.php:151
#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1297
@@ -310,19 +310,19 @@ msgstr "Compartir"
#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
#: ../../Zotlabs/Module/Cdav.php:897 ../../Zotlabs/Module/Cdav.php:1187
#: ../../Zotlabs/Module/Article_edit.php:129
-#: ../../Zotlabs/Module/Admin/Accounts.php:173
+#: ../../Zotlabs/Module/Admin/Accounts.php:174
#: ../../Zotlabs/Module/Admin/Channels.php:149
#: ../../Zotlabs/Module/Admin/Profs.php:155
#: ../../Zotlabs/Module/Settings/Oauth.php:150
#: ../../Zotlabs/Module/Thing.php:262 ../../Zotlabs/Module/Editblock.php:139
-#: ../../Zotlabs/Module/Connections.php:268
+#: ../../Zotlabs/Module/Connections.php:273
#: ../../Zotlabs/Module/Photos.php:1203 ../../Zotlabs/Module/Connedit.php:654
-#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Group.php:179
+#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Group.php:179
#: ../../Zotlabs/Module/Profiles.php:803
#: ../../Zotlabs/Module/Editwebpage.php:167
#: ../../Zotlabs/Module/Webpages.php:242
-#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Lib/Apps.php:400
-#: ../../Zotlabs/Lib/ThreadItem.php:141 ../../Zotlabs/Storage/Browser.php:286
+#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Lib/Apps.php:410
+#: ../../Zotlabs/Lib/ThreadItem.php:141 ../../Zotlabs/Storage/Browser.php:289
#: ../../include/conversation.php:690 ../../include/conversation.php:733
msgid "Delete"
msgstr "Eliminar"
@@ -352,6 +352,7 @@ msgid "Invitation limit exceeded. Please contact your site administrator."
msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."
#: ../../Zotlabs/Module/Invite.php:82
+#: ../../addon/notifyadmin/notifyadmin.php:40
#, php-format
msgid "%s : Message delivery failed."
msgstr "%s : Falló el envío del mensaje."
@@ -412,35 +413,36 @@ msgstr "3. Pulse [conectar]"
#: ../../Zotlabs/Module/Connect.php:98
#: ../../Zotlabs/Module/Admin/Features.php:66
#: ../../Zotlabs/Module/Admin/Plugins.php:438
-#: ../../Zotlabs/Module/Admin/Accounts.php:166
+#: ../../Zotlabs/Module/Admin/Accounts.php:167
#: ../../Zotlabs/Module/Admin/Logs.php:84
#: ../../Zotlabs/Module/Admin/Channels.php:147
#: ../../Zotlabs/Module/Admin/Themes.php:158
-#: ../../Zotlabs/Module/Admin/Site.php:277
+#: ../../Zotlabs/Module/Admin/Site.php:289
#: ../../Zotlabs/Module/Admin/Profs.php:157
#: ../../Zotlabs/Module/Admin/Account_edit.php:74
#: ../../Zotlabs/Module/Admin/Security.php:104
#: ../../Zotlabs/Module/Settings/Permcats.php:110
-#: ../../Zotlabs/Module/Settings/Channel.php:489
+#: ../../Zotlabs/Module/Settings/Channel.php:488
#: ../../Zotlabs/Module/Settings/Features.php:47
#: ../../Zotlabs/Module/Settings/Tokens.php:168
#: ../../Zotlabs/Module/Settings/Account.php:118
-#: ../../Zotlabs/Module/Settings/Featured.php:52
-#: ../../Zotlabs/Module/Settings/Display.php:209
+#: ../../Zotlabs/Module/Settings/Featured.php:54
+#: ../../Zotlabs/Module/Settings/Display.php:192
#: ../../Zotlabs/Module/Settings/Oauth.php:87
#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374
#: ../../Zotlabs/Module/Import.php:529 ../../Zotlabs/Module/Cal.php:345
#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:1082
#: ../../Zotlabs/Module/Photos.php:1122 ../../Zotlabs/Module/Photos.php:1240
#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Module/Pdledit.php:98
-#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:904
+#: ../../Zotlabs/Module/Poke.php:200 ../../Zotlabs/Module/Connedit.php:887
#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:242
+#: ../../Zotlabs/Module/Email_validation.php:40
#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Defperms.php:249
#: ../../Zotlabs/Module/Group.php:87 ../../Zotlabs/Module/Profiles.php:726
#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149
#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Lib/ThreadItem.php:754
+#: ../../Zotlabs/Lib/ThreadItem.php:750
#: ../../Zotlabs/Widget/Eventstools.php:16
#: ../../Zotlabs/Widget/Wiki_pages.php:40
#: ../../Zotlabs/Widget/Wiki_pages.php:97
@@ -454,7 +456,7 @@ msgstr "3. Pulse [conectar]"
#: ../../addon/likebanner/likebanner.php:57
#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113
-#: ../../addon/diaspora/diaspora.php:816
+#: ../../addon/diaspora/diaspora.php:822
#: ../../addon/gitwiki/Mod_Gitwiki.php:155
#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/hzfiles/hzfiles.php:84
#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
@@ -469,8 +471,8 @@ msgstr "3. Pulse [conectar]"
#: ../../addon/statusnet/statusnet.php:322
#: ../../addon/statusnet/statusnet.php:380
#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:217
-#: ../../addon/twitter/twitter.php:259
+#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:218
+#: ../../addon/twitter/twitter.php:265
#: ../../addon/smileybutton/smileybutton.php:219
#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
#: ../../addon/authchoose/authchoose.php:71 ../../addon/xmpp/xmpp.php:69
@@ -479,21 +481,16 @@ msgstr "3. Pulse [conectar]"
msgid "Submit"
msgstr "Enviar"
-#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Cards.php:38
-#: ../../Zotlabs/Module/Cards.php:178 ../../Zotlabs/Lib/Apps.php:224
-#: ../../include/conversation.php:1890 ../../include/features.php:122
-#: ../../include/nav.php:490
-msgid "Cards"
-msgstr "Fichas"
+#: ../../Zotlabs/Module/Articles.php:38 ../../Zotlabs/Module/Articles.php:179
+#: ../../Zotlabs/Lib/Apps.php:229 ../../include/features.php:124
+#: ../../include/nav.php:469
+msgid "Articles"
+msgstr "Artículos"
#: ../../Zotlabs/Module/Articles.php:95
msgid "Add Article"
msgstr "Añadir un artículo"
-#: ../../Zotlabs/Module/Articles.php:178 ../../include/nav.php:501
-msgid "Articles"
-msgstr "Artículos"
-
#: ../../Zotlabs/Module/Editlayout.php:79
#: ../../Zotlabs/Module/Article_edit.php:17
#: ../../Zotlabs/Module/Article_edit.php:33
@@ -522,7 +519,7 @@ msgstr "Modificar la plantilla"
#: ../../Zotlabs/Module/Import_items.php:120
#: ../../Zotlabs/Module/Cloud.php:111 ../../Zotlabs/Module/Group.php:74
#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68
-#: ../../Zotlabs/Module/Like.php:295 ../../Zotlabs/Web/WebServer.php:168
+#: ../../Zotlabs/Module/Like.php:296 ../../Zotlabs/Web/WebServer.php:122
#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
#: ../../addon/frphotos/frphotos.php:81 ../../addon/redfiles/redfiles.php:109
#: ../../include/items.php:358
@@ -537,7 +534,7 @@ msgstr "Identificador del perfil no válido"
msgid "Profile Visibility Editor"
msgstr "Editor de visibilidad del perfil"
-#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1633
+#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1634
msgid "Profile"
msgstr "Perfil"
@@ -565,9 +562,9 @@ msgstr "Resumen: "
#: ../../Zotlabs/Module/Cdav.php:786 ../../Zotlabs/Module/Cdav.php:787
#: ../../Zotlabs/Module/Cdav.php:794 ../../Zotlabs/Module/Embedphotos.php:146
#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1273
-#: ../../Zotlabs/Lib/Apps.php:744 ../../Zotlabs/Lib/Apps.php:822
+#: ../../Zotlabs/Lib/Apps.php:754 ../../Zotlabs/Lib/Apps.php:832
#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Widget/Portfolio.php:95
-#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:842
+#: ../../Zotlabs/Widget/Album.php:84 ../../addon/pubcrawl/as.php:853
#: ../../include/conversation.php:1160
msgid "Unknown"
msgstr "Desconocido"
@@ -680,10 +677,12 @@ msgstr "Eliminar todos"
#: ../../Zotlabs/Module/Settings/Oauth.php:88
#: ../../Zotlabs/Module/Settings/Oauth.php:114
#: ../../Zotlabs/Module/Wiki.php:345 ../../Zotlabs/Module/Wiki.php:375
-#: ../../Zotlabs/Module/Connedit.php:942 ../../Zotlabs/Module/Fbrowser.php:66
+#: ../../Zotlabs/Module/Profile_photo.php:464
+#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Fbrowser.php:66
#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804
-#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/gitwiki/Mod_Gitwiki.php:244
+#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138
+#: ../../addon/gitwiki/Mod_Gitwiki.php:244
#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1386
#: ../../include/conversation.php:1435
msgid "Cancel"
@@ -698,85 +697,85 @@ msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementa
#: ../../Zotlabs/Module/Admin/Channels.php:159
#: ../../Zotlabs/Module/Settings/Oauth.php:89
#: ../../Zotlabs/Module/Settings/Oauth.php:115
-#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:924
+#: ../../Zotlabs/Module/Wiki.php:209 ../../Zotlabs/Module/Connedit.php:906
#: ../../Zotlabs/Module/Chat.php:251 ../../Zotlabs/Lib/NativeWikiPage.php:558
-#: ../../Zotlabs/Storage/Browser.php:280
+#: ../../Zotlabs/Storage/Browser.php:283
#: ../../Zotlabs/Widget/Wiki_page_history.php:22
#: ../../addon/rendezvous/rendezvous.php:172
#: ../../addon/gitwiki/Mod_Gitwiki.php:158
msgid "Name"
msgstr "Nombre"
-#: ../../Zotlabs/Module/Cdav.php:1171 ../../Zotlabs/Module/Connedit.php:925
+#: ../../Zotlabs/Module/Cdav.php:1171 ../../Zotlabs/Module/Connedit.php:907
msgid "Organisation"
msgstr "Organización"
-#: ../../Zotlabs/Module/Cdav.php:1172 ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Cdav.php:1172 ../../Zotlabs/Module/Connedit.php:908
msgid "Title"
msgstr "Título"
-#: ../../Zotlabs/Module/Cdav.php:1173 ../../Zotlabs/Module/Connedit.php:927
+#: ../../Zotlabs/Module/Cdav.php:1173 ../../Zotlabs/Module/Connedit.php:909
#: ../../Zotlabs/Module/Profiles.php:789
msgid "Phone"
msgstr "Teléfono"
#: ../../Zotlabs/Module/Cdav.php:1174
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
-#: ../../Zotlabs/Module/Admin/Accounts.php:181
-#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Module/Profiles.php:790
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
+#: ../../Zotlabs/Module/Admin/Accounts.php:182
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Profiles.php:790
#: ../../addon/openid/MysqlProvider.php:56
#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1769
+#: ../../addon/redred/redred.php:107 ../../include/network.php:1775
msgid "Email"
msgstr "Correo electrónico"
-#: ../../Zotlabs/Module/Cdav.php:1175 ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Cdav.php:1175 ../../Zotlabs/Module/Connedit.php:911
#: ../../Zotlabs/Module/Profiles.php:791
msgid "Instant messenger"
msgstr "Mensajería instantánea"
-#: ../../Zotlabs/Module/Cdav.php:1176 ../../Zotlabs/Module/Connedit.php:930
+#: ../../Zotlabs/Module/Cdav.php:1176 ../../Zotlabs/Module/Connedit.php:912
#: ../../Zotlabs/Module/Profiles.php:792
msgid "Website"
msgstr "Sitio web"
#: ../../Zotlabs/Module/Cdav.php:1177 ../../Zotlabs/Module/Locs.php:118
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:931 ../../Zotlabs/Module/Profiles.php:502
+#: ../../Zotlabs/Module/Connedit.php:913 ../../Zotlabs/Module/Profiles.php:502
#: ../../Zotlabs/Module/Profiles.php:793
msgid "Address"
msgstr "Dirección"
-#: ../../Zotlabs/Module/Cdav.php:1178 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Cdav.php:1178 ../../Zotlabs/Module/Connedit.php:914
#: ../../Zotlabs/Module/Profiles.php:794
msgid "Note"
msgstr "Nota"
-#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:933
-#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1301
+#: ../../Zotlabs/Module/Cdav.php:1179 ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Profiles.php:795 ../../include/event.php:1308
#: ../../include/connections.php:682
msgid "Mobile"
msgstr "Móvil"
-#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:934
-#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1302
+#: ../../Zotlabs/Module/Cdav.php:1180 ../../Zotlabs/Module/Connedit.php:916
+#: ../../Zotlabs/Module/Profiles.php:796 ../../include/event.php:1309
#: ../../include/connections.php:683
msgid "Home"
msgstr "Inicio"
-#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:935
-#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1305
+#: ../../Zotlabs/Module/Cdav.php:1181 ../../Zotlabs/Module/Connedit.php:917
+#: ../../Zotlabs/Module/Profiles.php:797 ../../include/event.php:1312
#: ../../include/connections.php:686
msgid "Work"
msgstr "Trabajo"
-#: ../../Zotlabs/Module/Cdav.php:1183 ../../Zotlabs/Module/Connedit.php:937
+#: ../../Zotlabs/Module/Cdav.php:1183 ../../Zotlabs/Module/Connedit.php:919
#: ../../Zotlabs/Module/Profiles.php:799
#: ../../addon/jappixmini/jappixmini.php:368
msgid "Add Contact"
msgstr "Añadir un contacto"
-#: ../../Zotlabs/Module/Cdav.php:1184 ../../Zotlabs/Module/Connedit.php:938
+#: ../../Zotlabs/Module/Cdav.php:1184 ../../Zotlabs/Module/Connedit.php:920
#: ../../Zotlabs/Module/Profiles.php:800
msgid "Add Field"
msgstr "Añadir un campo"
@@ -785,36 +784,36 @@ msgstr "Añadir un campo"
#: ../../Zotlabs/Module/Admin/Plugins.php:453
#: ../../Zotlabs/Module/Settings/Oauth.php:42
#: ../../Zotlabs/Module/Settings/Oauth.php:113
-#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:802
-#: ../../Zotlabs/Lib/Apps.php:383
+#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Profiles.php:802
+#: ../../Zotlabs/Lib/Apps.php:393
msgid "Update"
msgstr "Actualizar"
-#: ../../Zotlabs/Module/Cdav.php:1189 ../../Zotlabs/Module/Connedit.php:943
+#: ../../Zotlabs/Module/Cdav.php:1189 ../../Zotlabs/Module/Connedit.php:925
msgid "P.O. Box"
msgstr "Buzón de correos"
-#: ../../Zotlabs/Module/Cdav.php:1190 ../../Zotlabs/Module/Connedit.php:944
+#: ../../Zotlabs/Module/Cdav.php:1190 ../../Zotlabs/Module/Connedit.php:926
msgid "Additional"
msgstr "Adicional"
-#: ../../Zotlabs/Module/Cdav.php:1191 ../../Zotlabs/Module/Connedit.php:945
+#: ../../Zotlabs/Module/Cdav.php:1191 ../../Zotlabs/Module/Connedit.php:927
msgid "Street"
msgstr "Calle"
-#: ../../Zotlabs/Module/Cdav.php:1192 ../../Zotlabs/Module/Connedit.php:946
+#: ../../Zotlabs/Module/Cdav.php:1192 ../../Zotlabs/Module/Connedit.php:928
msgid "Locality"
msgstr "Localidad"
-#: ../../Zotlabs/Module/Cdav.php:1193 ../../Zotlabs/Module/Connedit.php:947
+#: ../../Zotlabs/Module/Cdav.php:1193 ../../Zotlabs/Module/Connedit.php:929
msgid "Region"
msgstr "Provincia, región o estado"
-#: ../../Zotlabs/Module/Cdav.php:1194 ../../Zotlabs/Module/Connedit.php:948
+#: ../../Zotlabs/Module/Cdav.php:1194 ../../Zotlabs/Module/Connedit.php:930
msgid "ZIP Code"
msgstr "Código postal"
-#: ../../Zotlabs/Module/Cdav.php:1195 ../../Zotlabs/Module/Connedit.php:949
+#: ../../Zotlabs/Module/Cdav.php:1195 ../../Zotlabs/Module/Connedit.php:931
#: ../../Zotlabs/Module/Profiles.php:760
msgid "Country"
msgstr "País"
@@ -832,7 +831,7 @@ msgid "This site is not a directory server"
msgstr "Este sitio no es un servidor de directorio"
#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Chat.php:25
-#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:431
+#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:508
msgid "You must be logged in to see this page."
msgstr "Debe haber iniciado sesión para poder ver esta página."
@@ -908,9 +907,13 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."
-#: ../../Zotlabs/Module/Hq.php:136
-msgid "Welcome to hubzilla!"
-msgstr "¡Bienvenido o bienvenida a Hubzilla!"
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "Welcome to Hubzilla!"
+msgstr "¡Bienvenido a Hubzilla!"
+
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "You have got no unseen posts..."
+msgstr "No tiene ningún mensaje sin leer..."
#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:540
#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:63
@@ -919,25 +922,25 @@ msgstr "¡Bienvenido o bienvenida a Hubzilla!"
msgid "Public access denied."
msgstr "Acceso público denegado."
-#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:313
-#: ../../Zotlabs/Lib/Apps.php:250 ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../include/text.php:1029 ../../include/text.php:1041
-#: ../../include/acl_selectors.php:213 ../../include/nav.php:211
+#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:319
+#: ../../Zotlabs/Lib/Apps.php:256 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../include/text.php:1051 ../../include/text.php:1063
+#: ../../include/acl_selectors.php:118 ../../include/nav.php:179
msgid "Search"
msgstr "Buscar"
-#: ../../Zotlabs/Module/Search.php:225
+#: ../../Zotlabs/Module/Search.php:226
#, php-format
msgid "Items tagged with: %s"
msgstr "elementos etiquetados con: %s"
-#: ../../Zotlabs/Module/Search.php:227
+#: ../../Zotlabs/Module/Search.php:228
#, php-format
msgid "Search results for: %s"
msgstr "Resultados de la búsqueda para: %s"
-#: ../../Zotlabs/Module/Pubstream.php:81
-#: ../../Zotlabs/Widget/Notifications.php:129
+#: ../../Zotlabs/Module/Pubstream.php:93
+#: ../../Zotlabs/Widget/Notifications.php:131
msgid "Public Stream"
msgstr "\"Stream\" público"
@@ -1037,7 +1040,7 @@ msgid "Menu Item Permissions"
msgstr "Permisos del elemento del menú"
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231
-#: ../../Zotlabs/Module/Settings/Channel.php:522
+#: ../../Zotlabs/Module/Settings/Channel.php:521
msgid "(click to open/close)"
msgstr "(pulsar para abrir o cerrar)"
@@ -1061,17 +1064,17 @@ msgstr "Usar la autenticación mágica si está disponible"
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:240
+#: ../../Zotlabs/Module/Admin/Site.php:252
#: ../../Zotlabs/Module/Settings/Channel.php:305
-#: ../../Zotlabs/Module/Settings/Display.php:105
-#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Settings/Display.php:100
+#: ../../Zotlabs/Module/Api.php:99 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Connedit.php:779
#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
#: ../../Zotlabs/Module/Defperms.php:180 ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Filestorage.php:155
#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
+#: ../../Zotlabs/Storage/Browser.php:397 ../../boot.php:1587
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1096,8 +1099,8 @@ msgstr "Usar la autenticación mágica si está disponible"
#: ../../addon/statusnet/statusnet.php:389
#: ../../addon/statusnet/statusnet.php:411
#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242
-#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:243
+#: ../../addon/twitter/twitter.php:252 ../../addon/twitter/twitter.php:261
#: ../../addon/smileybutton/smileybutton.php:211
#: ../../addon/smileybutton/smileybutton.php:215
#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
@@ -1112,17 +1115,17 @@ msgstr "No"
#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241
#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471
#: ../../Zotlabs/Module/Removeme.php:63
-#: ../../Zotlabs/Module/Admin/Site.php:242
+#: ../../Zotlabs/Module/Admin/Site.php:254
#: ../../Zotlabs/Module/Settings/Channel.php:305
-#: ../../Zotlabs/Module/Settings/Display.php:105
-#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Settings/Display.php:100
+#: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Photos.php:697
#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Wiki.php:219
#: ../../Zotlabs/Module/Connedit.php:396 ../../Zotlabs/Module/Menu.php:100
#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Defperms.php:180
#: ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Filestorage.php:155
#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394 ../../boot.php:1669
+#: ../../Zotlabs/Storage/Browser.php:397 ../../boot.php:1587
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:98
@@ -1147,8 +1150,8 @@ msgstr "No"
#: ../../addon/statusnet/statusnet.php:389
#: ../../addon/statusnet/statusnet.php:411
#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242
-#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:243
+#: ../../addon/twitter/twitter.php:252 ../../addon/twitter/twitter.php:261
#: ../../addon/smileybutton/smileybutton.php:211
#: ../../addon/smileybutton/smileybutton.php:215
#: ../../addon/authchoose/authchoose.php:67 ../../addon/xmpp/xmpp.php:53
@@ -1265,8 +1268,8 @@ msgid "Event not found."
msgstr "Evento no encontrado."
#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Like.php:384 ../../include/conversation.php:119
-#: ../../include/text.php:1941 ../../include/event.php:1153
+#: ../../Zotlabs/Module/Like.php:385 ../../include/conversation.php:119
+#: ../../include/text.php:2007 ../../include/event.php:1153
msgid "event"
msgstr "evento"
@@ -1277,7 +1280,7 @@ msgstr "Editar el título del evento"
#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465
#: ../../Zotlabs/Module/Appman.php:140 ../../Zotlabs/Module/Appman.php:141
#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752
-#: ../../include/datetime.php:265
+#: ../../include/datetime.php:205
msgid "Required"
msgstr "Obligatorio"
@@ -1328,7 +1331,7 @@ msgid "Edit Location"
msgstr "Modificar la dirección"
#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1123
-#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:760
#: ../../include/conversation.php:1330
msgid "Preview"
msgstr "Previsualizar"
@@ -1358,7 +1361,7 @@ msgid "Delete event"
msgstr "Borrar evento"
#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:315
-#: ../../include/text.php:1760
+#: ../../include/text.php:1826
msgid "Link to Source"
msgstr "Enlazar con la entrada en su ubicación original"
@@ -1375,7 +1378,7 @@ msgid "Create Event"
msgstr "Crear un evento"
#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341
-#: ../../include/channel.php:1636
+#: ../../include/channel.php:1637
msgid "Export"
msgstr "Exportar"
@@ -1448,16 +1451,16 @@ msgid "Hub not found."
msgstr "Servidor no encontrado"
#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
-#: ../../Zotlabs/Module/Like.php:382
+#: ../../Zotlabs/Module/Like.php:383
#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
-#: ../../include/conversation.php:116 ../../include/text.php:1938
+#: ../../addon/diaspora/Receiver.php:1518 ../../addon/pubcrawl/as.php:1359
+#: ../../include/conversation.php:116 ../../include/text.php:2004
msgid "photo"
msgstr "foto"
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:382
-#: ../../addon/diaspora/Receiver.php:1433 ../../addon/pubcrawl/as.php:1295
-#: ../../include/conversation.php:144 ../../include/text.php:1944
+#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:383
+#: ../../addon/diaspora/Receiver.php:1518 ../../addon/pubcrawl/as.php:1359
+#: ../../include/conversation.php:144 ../../include/text.php:2010
msgid "status"
msgstr "el mensaje de estado"
@@ -1534,66 +1537,70 @@ msgstr "Utilice este formulario para importar entradas existentes y contenido de
msgid "File to Upload"
msgstr "Fichero para subir"
-#: ../../Zotlabs/Module/New_channel.php:121
+#: ../../Zotlabs/Module/New_channel.php:119
#: ../../Zotlabs/Module/Manage.php:138
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Ha creado %1$.0f de %2$.0f canales permitidos."
-#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:249
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:254
msgid "Name or caption"
msgstr "Nombre o descripción"
-#: ../../Zotlabs/Module/New_channel.php:134
-#: ../../Zotlabs/Module/Register.php:249
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:254
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
msgstr "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\""
-#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:251
+#: ../../Zotlabs/Module/New_channel.php:134
+#: ../../Zotlabs/Module/Register.php:256
msgid "Choose a short nickname"
msgstr "Elija un alias corto"
-#: ../../Zotlabs/Module/New_channel.php:136
-#: ../../Zotlabs/Module/Register.php:251
+#: ../../Zotlabs/Module/New_channel.php:134
+#: ../../Zotlabs/Module/Register.php:256
#, php-format
msgid ""
"Your nickname will be used to create an easy to remember channel address "
"e.g. nickname%s"
msgstr "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s"
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
msgid "Channel role and privacy"
msgstr "Clase de canal y privacidad"
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
msgid "Select a channel role with your privacy requirements."
msgstr "Seleccione un tipo de canal con sus requisitos de privacidad"
-#: ../../Zotlabs/Module/New_channel.php:137
-#: ../../Zotlabs/Module/Register.php:252
+#: ../../Zotlabs/Module/New_channel.php:135
+#: ../../Zotlabs/Module/Register.php:257
msgid "Read more about roles"
msgstr "Leer más sobre los roles"
-#: ../../Zotlabs/Module/New_channel.php:140
+#: ../../Zotlabs/Module/New_channel.php:138
msgid "Create Channel"
msgstr "Crear un canal"
-#: ../../Zotlabs/Module/New_channel.php:141
+#: ../../Zotlabs/Module/New_channel.php:139
msgid ""
"A channel is your identity on this network. It can represent a person, a "
"blog, or a forum to name a few. Channels can make connections with other "
"channels to share information with highly detailed permissions."
msgstr "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada."
-#: ../../Zotlabs/Module/New_channel.php:142
+#: ../../Zotlabs/Module/New_channel.php:140
msgid ""
"or <a href=\"import\">import an existing channel</a> from another location."
msgstr "O <a href=\"import\">importar un canal existente</a> desde otro lugar."
+#: ../../Zotlabs/Module/New_channel.php:145
+msgid "Validate"
+msgstr "Validar"
+
#: ../../Zotlabs/Module/Removeme.php:35
msgid ""
"Channel removals are not allowed within 48 hours of changing the account "
@@ -1636,7 +1643,7 @@ msgid ""
msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"
#: ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings/Channel.php:593
+#: ../../Zotlabs/Module/Settings/Channel.php:592
msgid "Remove Channel"
msgstr "Eliminar el canal"
@@ -1649,12 +1656,12 @@ msgid "NEW"
msgstr "NUEVO"
#: ../../Zotlabs/Module/Sharedwithme.php:107
-#: ../../Zotlabs/Storage/Browser.php:282 ../../include/text.php:1394
+#: ../../Zotlabs/Storage/Browser.php:285 ../../include/text.php:1434
msgid "Size"
msgstr "Tamaño"
#: ../../Zotlabs/Module/Sharedwithme.php:108
-#: ../../Zotlabs/Storage/Browser.php:283
+#: ../../Zotlabs/Storage/Browser.php:286
msgid "Last Modified"
msgstr "Última modificación"
@@ -2204,30 +2211,26 @@ msgstr "Gestionar las funcionalidades"
msgid "Update has been marked successful"
msgstr "La actualización ha sido marcada como exitosa"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:29
+#: ../../Zotlabs/Module/Admin/Dbsync.php:31
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "La ejecución de %s ha fallado. Mirar en los informes del sistema."
-#: ../../Zotlabs/Module/Admin/Dbsync.php:32
+#: ../../Zotlabs/Module/Admin/Dbsync.php:34
#, php-format
msgid "Update %s was successfully applied."
msgstr "La actualización de %s se ha realizado exitosamente."
-#: ../../Zotlabs/Module/Admin/Dbsync.php:36
+#: ../../Zotlabs/Module/Admin/Dbsync.php:38
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito."
-#: ../../Zotlabs/Module/Admin/Dbsync.php:39
+#: ../../Zotlabs/Module/Admin/Dbsync.php:41
#, php-format
msgid "Update function %s could not be found."
msgstr "No se encuentra la función de actualización de %s."
-#: ../../Zotlabs/Module/Admin/Dbsync.php:55
-msgid "No failed updates."
-msgstr "No ha fallado ninguna actualización."
-
#: ../../Zotlabs/Module/Admin/Dbsync.php:59
msgid "Failed Updates"
msgstr "Han fallado las actualizaciones"
@@ -2240,12 +2243,16 @@ msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)"
msgid "Attempt to execute this update step automatically"
msgstr "Intentar ejecutar este paso de actualización automáticamente"
+#: ../../Zotlabs/Module/Admin/Dbsync.php:67
+msgid "No failed updates."
+msgstr "No ha fallado ninguna actualización."
+
#: ../../Zotlabs/Module/Admin/Plugins.php:259
#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89
#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:46
-#: ../../Zotlabs/Module/Display.php:408
+#: ../../Zotlabs/Module/Display.php:410
#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Admin.php:62
-#: ../../include/items.php:3546
+#: ../../include/items.php:3569
msgid "Item not found."
msgstr "Elemento no encontrado."
@@ -2271,12 +2278,12 @@ msgstr "Activar"
#: ../../Zotlabs/Module/Admin/Plugins.php:341
#: ../../Zotlabs/Module/Admin/Plugins.php:436
-#: ../../Zotlabs/Module/Admin/Accounts.php:164
+#: ../../Zotlabs/Module/Admin/Accounts.php:165
#: ../../Zotlabs/Module/Admin/Logs.php:82
#: ../../Zotlabs/Module/Admin/Channels.php:145
#: ../../Zotlabs/Module/Admin/Themes.php:122
#: ../../Zotlabs/Module/Admin/Themes.php:156
-#: ../../Zotlabs/Module/Admin/Site.php:275
+#: ../../Zotlabs/Module/Admin/Site.php:287
#: ../../Zotlabs/Module/Admin/Security.php:86
#: ../../Zotlabs/Module/Admin.php:136
msgid "Administration"
@@ -2294,9 +2301,10 @@ msgid "Toggle"
msgstr "Cambiar"
#: ../../Zotlabs/Module/Admin/Plugins.php:344
-#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:236
-#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:139
-#: ../../include/nav.php:224
+#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:242
+#: ../../Zotlabs/Widget/Newmember.php:55
+#: ../../Zotlabs/Widget/Settings_menu.php:133 ../../include/nav.php:105
+#: ../../include/nav.php:192
msgid "Settings"
msgstr "Ajustes"
@@ -2359,7 +2367,7 @@ msgstr "Descargar el repositorio"
msgid "Install new repo"
msgstr "Instalar un nuevo repositorio"
-#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:383
+#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:393
msgid "Install"
msgstr "Instalar"
@@ -2385,112 +2393,112 @@ msgstr "Cambiar la rama"
msgid "Remove"
msgstr "Eliminar"
-#: ../../Zotlabs/Module/Admin/Accounts.php:36
+#: ../../Zotlabs/Module/Admin/Accounts.php:37
#, php-format
msgid "%s account blocked/unblocked"
msgid_plural "%s account blocked/unblocked"
msgstr[0] "%s cuenta bloqueada/desbloqueada"
msgstr[1] "%s cuenta bloqueada/desbloqueada"
-#: ../../Zotlabs/Module/Admin/Accounts.php:43
+#: ../../Zotlabs/Module/Admin/Accounts.php:44
#, php-format
msgid "%s account deleted"
msgid_plural "%s accounts deleted"
msgstr[0] "%s cuentas eliminadas"
msgstr[1] "%s cuentas eliminadas"
-#: ../../Zotlabs/Module/Admin/Accounts.php:79
+#: ../../Zotlabs/Module/Admin/Accounts.php:80
msgid "Account not found"
msgstr "Cuenta no encontrada"
-#: ../../Zotlabs/Module/Admin/Accounts.php:90 ../../include/channel.php:2456
+#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2462
#, php-format
msgid "Account '%s' deleted"
msgstr "La cuenta '%s' ha sido eliminada"
-#: ../../Zotlabs/Module/Admin/Accounts.php:98
+#: ../../Zotlabs/Module/Admin/Accounts.php:99
#, php-format
msgid "Account '%s' blocked"
msgstr "La cuenta '%s' ha sido bloqueada"
-#: ../../Zotlabs/Module/Admin/Accounts.php:106
+#: ../../Zotlabs/Module/Admin/Accounts.php:107
#, php-format
msgid "Account '%s' unblocked"
msgstr "La cuenta '%s' ha sido desbloqueada"
-#: ../../Zotlabs/Module/Admin/Accounts.php:165
-#: ../../Zotlabs/Module/Admin/Accounts.php:178
+#: ../../Zotlabs/Module/Admin/Accounts.php:166
+#: ../../Zotlabs/Module/Admin/Accounts.php:179
#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23
msgid "Accounts"
msgstr "Cuentas"
-#: ../../Zotlabs/Module/Admin/Accounts.php:167
+#: ../../Zotlabs/Module/Admin/Accounts.php:168
#: ../../Zotlabs/Module/Admin/Channels.php:148
msgid "select all"
msgstr "seleccionar todo"
-#: ../../Zotlabs/Module/Admin/Accounts.php:168
+#: ../../Zotlabs/Module/Admin/Accounts.php:169
msgid "Registrations waiting for confirm"
msgstr "Inscripciones en espera de confirmación"
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
msgid "Request date"
msgstr "Fecha de solicitud"
-#: ../../Zotlabs/Module/Admin/Accounts.php:170
+#: ../../Zotlabs/Module/Admin/Accounts.php:171
msgid "No registrations."
msgstr "Sin registros."
-#: ../../Zotlabs/Module/Admin/Accounts.php:171
-#: ../../Zotlabs/Module/Connections.php:282 ../../include/conversation.php:732
+#: ../../Zotlabs/Module/Admin/Accounts.php:172
+#: ../../Zotlabs/Module/Connections.php:287 ../../include/conversation.php:732
msgid "Approve"
msgstr "Aprobar"
-#: ../../Zotlabs/Module/Admin/Accounts.php:172
+#: ../../Zotlabs/Module/Admin/Accounts.php:173
msgid "Deny"
msgstr "Rechazar"
-#: ../../Zotlabs/Module/Admin/Accounts.php:174
+#: ../../Zotlabs/Module/Admin/Accounts.php:175
#: ../../Zotlabs/Module/Connedit.php:622
msgid "Block"
msgstr "Bloquear"
-#: ../../Zotlabs/Module/Admin/Accounts.php:175
+#: ../../Zotlabs/Module/Admin/Accounts.php:176
#: ../../Zotlabs/Module/Connedit.php:622
msgid "Unblock"
msgstr "Desbloquear"
-#: ../../Zotlabs/Module/Admin/Accounts.php:180
+#: ../../Zotlabs/Module/Admin/Accounts.php:181
msgid "ID"
msgstr "ID"
-#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:284
+#: ../../Zotlabs/Module/Admin/Accounts.php:183 ../../include/group.php:284
msgid "All Channels"
msgstr "Todos los canales"
-#: ../../Zotlabs/Module/Admin/Accounts.php:183
+#: ../../Zotlabs/Module/Admin/Accounts.php:184
msgid "Register date"
msgstr "Fecha de registro"
-#: ../../Zotlabs/Module/Admin/Accounts.php:184
+#: ../../Zotlabs/Module/Admin/Accounts.php:185
msgid "Last login"
msgstr "Último acceso"
-#: ../../Zotlabs/Module/Admin/Accounts.php:185
+#: ../../Zotlabs/Module/Admin/Accounts.php:186
msgid "Expires"
msgstr "Caduca"
-#: ../../Zotlabs/Module/Admin/Accounts.php:186
+#: ../../Zotlabs/Module/Admin/Accounts.php:187
msgid "Service Class"
msgstr "Clase de servicio"
-#: ../../Zotlabs/Module/Admin/Accounts.php:188
+#: ../../Zotlabs/Module/Admin/Accounts.php:189
msgid ""
"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
" on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
-#: ../../Zotlabs/Module/Admin/Accounts.php:189
+#: ../../Zotlabs/Module/Admin/Accounts.php:190
msgid ""
"The account {0} will be deleted!\\n\\nEverything this account has posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
@@ -2599,7 +2607,7 @@ msgid "Disallow Code"
msgstr "No permitir código"
#: ../../Zotlabs/Module/Admin/Channels.php:154
-#: ../../include/conversation.php:1808 ../../include/nav.php:410
+#: ../../include/conversation.php:1808 ../../include/nav.php:378
msgid "Channel"
msgstr "Canal"
@@ -2644,415 +2652,472 @@ msgstr "[Experimental]"
msgid "[Unsupported]"
msgstr "[No soportado]"
-#: ../../Zotlabs/Module/Admin/Site.php:147
+#: ../../Zotlabs/Module/Admin/Site.php:158
msgid "Site settings updated."
msgstr "Ajustes del sitio actualizados."
-#: ../../Zotlabs/Module/Admin/Site.php:173
+#: ../../Zotlabs/Module/Admin/Site.php:184
#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:2968
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3082
msgid "Default"
msgstr "Predeterminado"
-#: ../../Zotlabs/Module/Admin/Site.php:184
-#: ../../Zotlabs/Module/Settings/Display.php:139
+#: ../../Zotlabs/Module/Admin/Site.php:195
+#: ../../Zotlabs/Module/Settings/Display.php:130
#, php-format
msgid "%s - (Incompatible)"
msgstr "%s - (Incompatible)"
-#: ../../Zotlabs/Module/Admin/Site.php:191
-#: ../../Zotlabs/Module/Settings/Display.php:153
+#: ../../Zotlabs/Module/Admin/Site.php:202
msgid "mobile"
msgstr "móvil"
-#: ../../Zotlabs/Module/Admin/Site.php:193
+#: ../../Zotlabs/Module/Admin/Site.php:204
msgid "experimental"
msgstr "experimental"
-#: ../../Zotlabs/Module/Admin/Site.php:195
+#: ../../Zotlabs/Module/Admin/Site.php:206
msgid "unsupported"
msgstr "no soportado"
-#: ../../Zotlabs/Module/Admin/Site.php:241
+#: ../../Zotlabs/Module/Admin/Site.php:253
msgid "Yes - with approval"
msgstr "Sí - con aprobación"
-#: ../../Zotlabs/Module/Admin/Site.php:247
+#: ../../Zotlabs/Module/Admin/Site.php:259
msgid "My site is not a public server"
msgstr "Mi sitio no es un servidor público"
-#: ../../Zotlabs/Module/Admin/Site.php:248
+#: ../../Zotlabs/Module/Admin/Site.php:260
msgid "My site has paid access only"
msgstr "Mi sitio es un servicio de pago"
-#: ../../Zotlabs/Module/Admin/Site.php:249
+#: ../../Zotlabs/Module/Admin/Site.php:261
msgid "My site has free access only"
msgstr "Mi sitio es un servicio gratuito"
-#: ../../Zotlabs/Module/Admin/Site.php:250
+#: ../../Zotlabs/Module/Admin/Site.php:262
msgid "My site offers free accounts with optional paid upgrades"
msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"
-#: ../../Zotlabs/Module/Admin/Site.php:262
+#: ../../Zotlabs/Module/Admin/Site.php:274
msgid "Beginner/Basic"
msgstr "Principiante / Básico"
-#: ../../Zotlabs/Module/Admin/Site.php:263
+#: ../../Zotlabs/Module/Admin/Site.php:275
msgid "Novice - not skilled but willing to learn"
msgstr "Novato: no cualificado, pero dispuesto a aprender"
-#: ../../Zotlabs/Module/Admin/Site.php:264
+#: ../../Zotlabs/Module/Admin/Site.php:276
msgid "Intermediate - somewhat comfortable"
msgstr "Intermedio: bastante cómodo"
-#: ../../Zotlabs/Module/Admin/Site.php:265
+#: ../../Zotlabs/Module/Admin/Site.php:277
msgid "Advanced - very comfortable"
msgstr "Avanzado: muy cómodo"
-#: ../../Zotlabs/Module/Admin/Site.php:266
+#: ../../Zotlabs/Module/Admin/Site.php:278
msgid "Expert - I can write computer code"
msgstr "Experto: puedo escribir código informático"
-#: ../../Zotlabs/Module/Admin/Site.php:267
+#: ../../Zotlabs/Module/Admin/Site.php:279
msgid "Wizard - I probably know more than you do"
msgstr "Colaborador: probablemente sé más que tú"
-#: ../../Zotlabs/Module/Admin/Site.php:276 ../../Zotlabs/Widget/Admin.php:22
+#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22
msgid "Site"
msgstr "Sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:278
-#: ../../Zotlabs/Module/Register.php:263
+#: ../../Zotlabs/Module/Admin/Site.php:290
+#: ../../Zotlabs/Module/Register.php:269
msgid "Registration"
msgstr "Registro"
-#: ../../Zotlabs/Module/Admin/Site.php:279
+#: ../../Zotlabs/Module/Admin/Site.php:291
msgid "File upload"
msgstr "Subir fichero"
-#: ../../Zotlabs/Module/Admin/Site.php:280
+#: ../../Zotlabs/Module/Admin/Site.php:292
msgid "Policies"
msgstr "Políticas"
-#: ../../Zotlabs/Module/Admin/Site.php:281
+#: ../../Zotlabs/Module/Admin/Site.php:293
#: ../../include/contact_widgets.php:16
msgid "Advanced"
msgstr "Avanzado"
-#: ../../Zotlabs/Module/Admin/Site.php:285
+#: ../../Zotlabs/Module/Admin/Site.php:297
#: ../../addon/statusnet/statusnet.php:891
msgid "Site name"
msgstr "Nombre del sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid "Site default technical skill level"
msgstr "Nivel de habilidad técnica predeterminado del sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Site.php:299
msgid "Used to provide a member experience matched to technical comfort level"
msgstr "Se utiliza para proporcionar una experiencia a los miembros adaptada a su nivel de comodidad técnica"
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid "Lock the technical skill level setting"
msgstr "Bloquear el ajuste del nivel de habilidad técnica"
-#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Site.php:301
msgid "Members can set their own technical comfort level by default"
msgstr "Los miembros pueden configurar su nivel de comodidad técnica por defecto"
-#: ../../Zotlabs/Module/Admin/Site.php:291
+#: ../../Zotlabs/Module/Admin/Site.php:303
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:303
+msgid "Unfiltered HTML/CSS/JS is allowed"
+msgstr "Se permite HTML/CSS/JS sin filtrar"
+
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid "Administrator Information"
msgstr "Información del Administrador"
-#: ../../Zotlabs/Module/Admin/Site.php:292
+#: ../../Zotlabs/Module/Admin/Site.php:304
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"
-#: ../../Zotlabs/Module/Admin/Site.php:293
-#: ../../Zotlabs/Module/Siteinfo.php:22
+#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Siteinfo.php:21
msgid "Site Information"
msgstr "Información sobre el sitio"
-#: ../../Zotlabs/Module/Admin/Site.php:293
+#: ../../Zotlabs/Module/Admin/Site.php:305
msgid ""
"Publicly visible description of this site. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"
-#: ../../Zotlabs/Module/Admin/Site.php:294
+#: ../../Zotlabs/Module/Admin/Site.php:306
msgid "System language"
msgstr "Idioma del sistema"
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid "System theme"
msgstr "Tema gráfico del sistema"
-#: ../../Zotlabs/Module/Admin/Site.php:295
+#: ../../Zotlabs/Module/Admin/Site.php:307
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>"
-#: ../../Zotlabs/Module/Admin/Site.php:296
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid "Mobile system theme"
msgstr "Tema del sistema para móviles"
-#: ../../Zotlabs/Module/Admin/Site.php:296
+#: ../../Zotlabs/Module/Admin/Site.php:308
msgid "Theme for mobile devices"
msgstr "Tema para dispositivos móviles"
-#: ../../Zotlabs/Module/Admin/Site.php:298
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid "Allow Feeds as Connections"
msgstr "Permitir contenidos RSS como conexiones"
-#: ../../Zotlabs/Module/Admin/Site.php:298
+#: ../../Zotlabs/Module/Admin/Site.php:310
msgid "(Heavy system resource usage)"
msgstr "(Uso intenso de los recursos del sistema)"
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid "Maximum image size"
msgstr "Tamaño máximo de la imagen"
-#: ../../Zotlabs/Module/Admin/Site.php:299
+#: ../../Zotlabs/Module/Admin/Site.php:311
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites."
-#: ../../Zotlabs/Module/Admin/Site.php:300
+#: ../../Zotlabs/Module/Admin/Site.php:312
msgid "Does this site allow new member registration?"
msgstr "¿Debe este sitio permitir el registro de nuevos miembros?"
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:313
msgid "Invitation only"
msgstr "Solo con una invitación"
-#: ../../Zotlabs/Module/Admin/Site.php:301
+#: ../../Zotlabs/Module/Admin/Site.php:313
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"."
-#: ../../Zotlabs/Module/Admin/Site.php:302
+#: ../../Zotlabs/Module/Admin/Site.php:314
+msgid "Minimum age"
+msgstr "Edad mínima"
+
+#: ../../Zotlabs/Module/Admin/Site.php:314
+msgid "Minimum age (in years) for who may register on this site."
+msgstr "Edad mínima (en años) para poder registrarse en este sitio."
+
+#: ../../Zotlabs/Module/Admin/Site.php:315
msgid "Which best describes the types of account offered by this hub?"
msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?"
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:316
msgid "Register text"
msgstr "Texto del registro"
-#: ../../Zotlabs/Module/Admin/Site.php:303
+#: ../../Zotlabs/Module/Admin/Site.php:316
msgid "Will be displayed prominently on the registration page."
msgstr "Se mostrará de forma destacada en la página de registro."
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:317
msgid "Site homepage to show visitors (default: login box)"
msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"
-#: ../../Zotlabs/Module/Admin/Site.php:304
+#: ../../Zotlabs/Module/Admin/Site.php:317
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero."
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid "Preserve site homepage URL"
msgstr "Preservar la dirección de la página personal"
-#: ../../Zotlabs/Module/Admin/Site.php:305
+#: ../../Zotlabs/Module/Admin/Site.php:318
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:319
msgid "Accounts abandoned after x days"
msgstr "Cuentas abandonadas después de x días"
-#: ../../Zotlabs/Module/Admin/Site.php:306
+#: ../../Zotlabs/Module/Admin/Site.php:319
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo."
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:320
msgid "Allowed friend domains"
msgstr "Dominios amigos permitidos"
-#: ../../Zotlabs/Module/Admin/Site.php:307
+#: ../../Zotlabs/Module/Admin/Site.php:320
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio."
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:321
msgid "Verify Email Addresses"
msgstr "Verificar las direcciones de correo electrónico"
-#: ../../Zotlabs/Module/Admin/Site.php:308
+#: ../../Zotlabs/Module/Admin/Site.php:321
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)."
-#: ../../Zotlabs/Module/Admin/Site.php:309
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid "Force publish"
msgstr "Forzar la publicación"
-#: ../../Zotlabs/Module/Admin/Site.php:309
+#: ../../Zotlabs/Module/Admin/Site.php:322
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio."
-#: ../../Zotlabs/Module/Admin/Site.php:310
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid "Import Public Streams"
msgstr "Importar contenido público"
-#: ../../Zotlabs/Module/Admin/Site.php:310
+#: ../../Zotlabs/Module/Admin/Site.php:323
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas."
-#: ../../Zotlabs/Module/Admin/Site.php:311
+#: ../../Zotlabs/Module/Admin/Site.php:324
+msgid "Site only Public Streams"
+msgstr "Solo contenido público en este sitio"
+
+#: ../../Zotlabs/Module/Admin/Site.php:324
+msgid ""
+"Allow access to public content originating only from this site if Imported "
+"Public Streams are disabled."
+msgstr "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados."
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid "Allow anybody on the internet to access the Public streams"
+msgstr "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos"
+
+#: ../../Zotlabs/Module/Admin/Site.php:325
+msgid ""
+"Disable to require authentication before viewing. Warning: this content is "
+"unmoderated."
+msgstr "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado."
+
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid "Login on Homepage"
msgstr "Iniciar sesión en la página personal"
-#: ../../Zotlabs/Module/Admin/Site.php:311
+#: ../../Zotlabs/Module/Admin/Site.php:326
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."
-#: ../../Zotlabs/Module/Admin/Site.php:312
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid "Enable context help"
msgstr "Habilitar la ayuda contextual"
-#: ../../Zotlabs/Module/Admin/Site.php:312
+#: ../../Zotlabs/Module/Admin/Site.php:327
msgid ""
"Display contextual help for the current page when the help button is "
"pressed."
msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."
-#: ../../Zotlabs/Module/Admin/Site.php:314
+#: ../../Zotlabs/Module/Admin/Site.php:329
msgid "Reply-to email address for system generated email."
msgstr "Dirección de respuesta para el correo electrónico generado por el sistema."
-#: ../../Zotlabs/Module/Admin/Site.php:315
+#: ../../Zotlabs/Module/Admin/Site.php:330
msgid "Sender (From) email address for system generated email."
msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema."
-#: ../../Zotlabs/Module/Admin/Site.php:316
+#: ../../Zotlabs/Module/Admin/Site.php:331
msgid "Name of email sender for system generated email."
msgstr "Nombre del remitente del correo electrónico generado por el sistema."
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:333
msgid "Directory Server URL"
msgstr "URL del servidor de directorio"
-#: ../../Zotlabs/Module/Admin/Site.php:318
+#: ../../Zotlabs/Module/Admin/Site.php:333
msgid "Default directory server"
msgstr "Servidor de directorio predeterminado"
-#: ../../Zotlabs/Module/Admin/Site.php:320
+#: ../../Zotlabs/Module/Admin/Site.php:335
msgid "Proxy user"
msgstr "Usuario del proxy"
-#: ../../Zotlabs/Module/Admin/Site.php:321
+#: ../../Zotlabs/Module/Admin/Site.php:336
msgid "Proxy URL"
msgstr "Dirección del proxy"
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:337
msgid "Network timeout"
msgstr "Tiempo de espera de la red"
-#: ../../Zotlabs/Module/Admin/Site.php:322
+#: ../../Zotlabs/Module/Admin/Site.php:337
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)"
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:338
msgid "Delivery interval"
msgstr "Intervalo de entrega"
-#: ../../Zotlabs/Module/Admin/Site.php:323
+#: ../../Zotlabs/Module/Admin/Site.php:338
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:339
msgid "Deliveries per process"
msgstr "Intentos de envío por proceso"
-#: ../../Zotlabs/Module/Admin/Site.php:324
+#: ../../Zotlabs/Module/Admin/Site.php:339
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust"
" if necessary to tune system performance. Recommend: 1-5."
msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5."
-#: ../../Zotlabs/Module/Admin/Site.php:325
+#: ../../Zotlabs/Module/Admin/Site.php:340
msgid "Queue Threshold"
msgstr "Umbral de la cola de espera"
-#: ../../Zotlabs/Module/Admin/Site.php:325
+#: ../../Zotlabs/Module/Admin/Site.php:340
msgid ""
"Always defer immediate delivery if queue contains more than this number of "
"entries."
msgstr "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas."
-#: ../../Zotlabs/Module/Admin/Site.php:326
+#: ../../Zotlabs/Module/Admin/Site.php:341
msgid "Poll interval"
msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos"
-#: ../../Zotlabs/Module/Admin/Site.php:326
+#: ../../Zotlabs/Module/Admin/Site.php:341
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."
-#: ../../Zotlabs/Module/Admin/Site.php:327
+#: ../../Zotlabs/Module/Admin/Site.php:342
msgid "Path to ImageMagick convert program"
msgstr "Ruta al programa de conversión de ImageMagick"
-#: ../../Zotlabs/Module/Admin/Site.php:327
+#: ../../Zotlabs/Module/Admin/Site.php:342
msgid ""
"If set, use this program to generate photo thumbnails for huge images ( > "
"4000 pixels in either dimension), otherwise memory exhaustion may occur. "
"Example: /usr/bin/convert"
msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert"
-#: ../../Zotlabs/Module/Admin/Site.php:328
+#: ../../Zotlabs/Module/Admin/Site.php:343
msgid "Allow SVG thumbnails in file browser"
msgstr "Permitir miniaturas SVG en el navegador de archivos"
-#: ../../Zotlabs/Module/Admin/Site.php:328
+#: ../../Zotlabs/Module/Admin/Site.php:343
msgid "WARNING: SVG images may contain malicious code."
msgstr "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso."
-#: ../../Zotlabs/Module/Admin/Site.php:329
+#: ../../Zotlabs/Module/Admin/Site.php:344
msgid "Maximum Load Average"
msgstr "Carga media máxima"
-#: ../../Zotlabs/Module/Admin/Site.php:329
+#: ../../Zotlabs/Module/Admin/Site.php:344
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."
-#: ../../Zotlabs/Module/Admin/Site.php:330
+#: ../../Zotlabs/Module/Admin/Site.php:345
msgid "Expiration period in days for imported (grid/network) content"
msgstr "Caducidad del contenido importado de otros sitios (en días)"
-#: ../../Zotlabs/Module/Admin/Site.php:330
+#: ../../Zotlabs/Module/Admin/Site.php:345
msgid "0 for no expiration of imported content"
msgstr "0 para que no caduque el contenido importado"
+#: ../../Zotlabs/Module/Admin/Site.php:347
+msgid ""
+"Public servers: Optional landing (marketing) webpage for new registrants"
+msgstr "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros"
+
+#: ../../Zotlabs/Module/Admin/Site.php:347
+#, php-format
+msgid "Create this page first. Default is %s/register"
+msgstr "Crear esta página primero. Por defecto es %s/register"
+
+#: ../../Zotlabs/Module/Admin/Site.php:348
+msgid "Page to display after creating a new channel"
+msgstr "Página a mostrar después de la creación de un nuevo canal"
+
+#: ../../Zotlabs/Module/Admin/Site.php:348
+msgid "Recommend: profiles, go, or settings"
+msgstr "Recomendar: perfiles, ir, o ajustes"
+
+#: ../../Zotlabs/Module/Admin/Site.php:350
+msgid "Optional: site location"
+msgstr "Opcional: ubicación del sitio"
+
+#: ../../Zotlabs/Module/Admin/Site.php:350
+msgid "Region or country"
+msgstr "Región o país"
+
#: ../../Zotlabs/Module/Admin/Profs.php:69
msgid "New Profile Field"
msgstr "Nuevo campo en el perfil"
@@ -3095,8 +3160,8 @@ msgstr "Información adicional (opcional)"
#: ../../Zotlabs/Module/Admin/Profs.php:74
#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
-#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1030
-#: ../../include/text.php:1042
+#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1052
+#: ../../include/text.php:1064
msgid "Save"
msgstr "Guardar"
@@ -3297,7 +3362,7 @@ msgid "Preview"
msgstr "Previsualizar"
#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
-#: ../../Zotlabs/Module/Acl.php:118 ../../include/acl_selectors.php:183
+#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88
msgctxt "acl"
msgid "Profile"
msgstr "Perfil"
@@ -3330,25 +3395,25 @@ msgstr "Nombre de la autorización"
#: ../../Zotlabs/Module/Settings/Permcats.php:103
#: ../../Zotlabs/Module/Settings/Tokens.php:161
-#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:250
+#: ../../Zotlabs/Module/Connedit.php:891 ../../Zotlabs/Module/Defperms.php:250
msgid "My Settings"
msgstr "Mis ajustes"
#: ../../Zotlabs/Module/Settings/Permcats.php:105
#: ../../Zotlabs/Module/Settings/Tokens.php:163
-#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:248
+#: ../../Zotlabs/Module/Connedit.php:886 ../../Zotlabs/Module/Defperms.php:248
msgid "inherited"
msgstr "heredado"
#: ../../Zotlabs/Module/Settings/Permcats.php:108
#: ../../Zotlabs/Module/Settings/Tokens.php:166
-#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:253
+#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Defperms.php:253
msgid "Individual Permissions"
msgstr "Permisos individuales"
#: ../../Zotlabs/Module/Settings/Permcats.php:109
#: ../../Zotlabs/Module/Settings/Tokens.php:167
-#: ../../Zotlabs/Module/Connedit.php:911
+#: ../../Zotlabs/Module/Connedit.php:894
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -3361,7 +3426,7 @@ msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><stron
#: ../../Zotlabs/Module/Settings/Channel.php:69
#: ../../Zotlabs/Module/Settings/Channel.php:72
#: ../../Zotlabs/Module/Settings/Channel.php:83
-#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:28
+#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:24
#: ../../include/selectors.php:123 ../../include/channel.php:437
#: ../../include/channel.php:438 ../../include/channel.php:445
msgid "Friends"
@@ -3372,7 +3437,7 @@ msgstr "Amigos/as"
#: ../../addon/rendezvous/rendezvous.php:82
#: ../../addon/openstreetmap/openstreetmap.php:184
#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
-#: ../../addon/twitter/twitter.php:766 ../../addon/piwik/piwik.php:116
+#: ../../addon/twitter/twitter.php:772 ../../addon/piwik/piwik.php:116
#: ../../addon/xmpp/xmpp.php:102
msgid "Settings updated."
msgstr "Ajustes actualizados."
@@ -3409,371 +3474,370 @@ msgstr "Cualquiera que esté autenticado"
msgid "Anybody on the internet"
msgstr "Cualquiera en internet"
-#: ../../Zotlabs/Module/Settings/Channel.php:406
+#: ../../Zotlabs/Module/Settings/Channel.php:405
msgid "Publish your default profile in the network directory"
msgstr "Publicar su perfil principal en el directorio de la red"
-#: ../../Zotlabs/Module/Settings/Channel.php:411
+#: ../../Zotlabs/Module/Settings/Channel.php:410
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?"
-#: ../../Zotlabs/Module/Settings/Channel.php:415
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
+#: ../../Zotlabs/Module/Settings/Channel.php:414
msgid "or"
msgstr "o"
-#: ../../Zotlabs/Module/Settings/Channel.php:420
+#: ../../Zotlabs/Module/Settings/Channel.php:419
msgid "Your channel address is"
msgstr "Su dirección de canal es"
-#: ../../Zotlabs/Module/Settings/Channel.php:423
+#: ../../Zotlabs/Module/Settings/Channel.php:422
msgid "Your files/photos are accessible via WebDAV at"
msgstr "Sus archivos y fotos son accesibles a través de WebDAV en "
-#: ../../Zotlabs/Module/Settings/Channel.php:487
+#: ../../Zotlabs/Module/Settings/Channel.php:486
msgid "Channel Settings"
msgstr "Ajustes del canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:494
+#: ../../Zotlabs/Module/Settings/Channel.php:493
msgid "Basic Settings"
msgstr "Configuración básica"
-#: ../../Zotlabs/Module/Settings/Channel.php:495
-#: ../../include/channel.php:1521
+#: ../../Zotlabs/Module/Settings/Channel.php:494
+#: ../../include/channel.php:1522
msgid "Full Name:"
msgstr "Nombre completo:"
-#: ../../Zotlabs/Module/Settings/Channel.php:496
+#: ../../Zotlabs/Module/Settings/Channel.php:495
#: ../../Zotlabs/Module/Settings/Account.php:119
msgid "Email Address:"
msgstr "Dirección de correo electrónico:"
-#: ../../Zotlabs/Module/Settings/Channel.php:497
+#: ../../Zotlabs/Module/Settings/Channel.php:496
msgid "Your Timezone:"
msgstr "Su huso horario:"
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:497
msgid "Default Post Location:"
msgstr "Localización geográfica predeterminada para sus publicaciones:"
-#: ../../Zotlabs/Module/Settings/Channel.php:498
+#: ../../Zotlabs/Module/Settings/Channel.php:497
msgid "Geographical location to display on your posts"
msgstr "Localización geográfica que debe mostrarse en sus publicaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:499
+#: ../../Zotlabs/Module/Settings/Channel.php:498
msgid "Use Browser Location:"
msgstr "Usar la localización geográfica del navegador:"
-#: ../../Zotlabs/Module/Settings/Channel.php:501
+#: ../../Zotlabs/Module/Settings/Channel.php:500
msgid "Adult Content"
msgstr "Contenido solo para adultos"
-#: ../../Zotlabs/Module/Settings/Channel.php:501
+#: ../../Zotlabs/Module/Settings/Channel.php:500
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)"
-#: ../../Zotlabs/Module/Settings/Channel.php:503
+#: ../../Zotlabs/Module/Settings/Channel.php:502
msgid "Security and Privacy Settings"
msgstr "Configuración de seguridad y privacidad"
-#: ../../Zotlabs/Module/Settings/Channel.php:505
+#: ../../Zotlabs/Module/Settings/Channel.php:504
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar"
-#: ../../Zotlabs/Module/Settings/Channel.php:507
+#: ../../Zotlabs/Module/Settings/Channel.php:506
msgid "Hide my online presence"
msgstr "Ocultar mi presencia en línea"
-#: ../../Zotlabs/Module/Settings/Channel.php:507
+#: ../../Zotlabs/Module/Settings/Channel.php:506
msgid "Prevents displaying in your profile that you are online"
msgstr "Evitar mostrar en su perfil que está en línea"
-#: ../../Zotlabs/Module/Settings/Channel.php:509
+#: ../../Zotlabs/Module/Settings/Channel.php:508
msgid "Simple Privacy Settings:"
msgstr "Configuración de privacidad sencilla:"
-#: ../../Zotlabs/Module/Settings/Channel.php:510
+#: ../../Zotlabs/Module/Settings/Channel.php:509
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:511
+#: ../../Zotlabs/Module/Settings/Channel.php:510
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:512
+#: ../../Zotlabs/Module/Settings/Channel.php:511
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:513
+#: ../../Zotlabs/Module/Settings/Channel.php:512
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>"
-#: ../../Zotlabs/Module/Settings/Channel.php:515
+#: ../../Zotlabs/Module/Settings/Channel.php:514
msgid "Allow others to tag your posts"
msgstr "Permitir a otros etiquetar sus publicaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:515
+#: ../../Zotlabs/Module/Settings/Channel.php:514
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva."
-#: ../../Zotlabs/Module/Settings/Channel.php:517
+#: ../../Zotlabs/Module/Settings/Channel.php:516
msgid "Channel Permission Limits"
msgstr "Límites de los permisos del canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "Expire other channel content after this many days"
msgstr "Caducar contenido de otros canales después de este número de días"
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "0 or blank to use the website limit."
msgstr "0 o en blanco para usar el límite del sitio web."
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
#, php-format
msgid "This website expires after %d days."
msgstr "Este sitio web caduca después de %d días."
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "This website does not expire imported content."
msgstr "Este sitio web no caduca el contenido importado."
-#: ../../Zotlabs/Module/Settings/Channel.php:519
+#: ../../Zotlabs/Module/Settings/Channel.php:518
msgid "The website limit takes precedence if lower than your limit."
msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite."
-#: ../../Zotlabs/Module/Settings/Channel.php:520
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "Maximum Friend Requests/Day:"
msgstr "Máximo de solicitudes de amistad por día:"
-#: ../../Zotlabs/Module/Settings/Channel.php:520
+#: ../../Zotlabs/Module/Settings/Channel.php:519
msgid "May reduce spam activity"
msgstr "Podría reducir la actividad de spam"
-#: ../../Zotlabs/Module/Settings/Channel.php:521
+#: ../../Zotlabs/Module/Settings/Channel.php:520
msgid "Default Privacy Group"
msgstr "Grupo de canales predeterminado"
-#: ../../Zotlabs/Module/Settings/Channel.php:523
+#: ../../Zotlabs/Module/Settings/Channel.php:522
msgid "Use my default audience setting for the type of object published"
msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación"
-#: ../../Zotlabs/Module/Settings/Channel.php:524
+#: ../../Zotlabs/Module/Settings/Channel.php:523
msgid "Profile to assign new connections"
msgstr "Perfil para asignar a las nuevas conexiones"
-#: ../../Zotlabs/Module/Settings/Channel.php:533
+#: ../../Zotlabs/Module/Settings/Channel.php:532
msgid "Channel permissions category:"
msgstr "Categoría de los permisos del canal:"
-#: ../../Zotlabs/Module/Settings/Channel.php:534
+#: ../../Zotlabs/Module/Settings/Channel.php:533
msgid "Default Permissions Group"
msgstr "Grupo de permisos predeterminados"
-#: ../../Zotlabs/Module/Settings/Channel.php:540
+#: ../../Zotlabs/Module/Settings/Channel.php:539
msgid "Maximum private messages per day from unknown people:"
msgstr "Máximo de mensajes privados por día de gente desconocida:"
-#: ../../Zotlabs/Module/Settings/Channel.php:540
+#: ../../Zotlabs/Module/Settings/Channel.php:539
msgid "Useful to reduce spamming"
msgstr "Útil para reducir el envío de correo no deseado"
-#: ../../Zotlabs/Module/Settings/Channel.php:543
+#: ../../Zotlabs/Module/Settings/Channel.php:542
+#: ../../Zotlabs/Lib/Enotify.php:68
msgid "Notification Settings"
msgstr "Configuración de las notificaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:544
+#: ../../Zotlabs/Module/Settings/Channel.php:543
msgid "By default post a status message when:"
msgstr "Por defecto, enviar un mensaje de estado cuando:"
-#: ../../Zotlabs/Module/Settings/Channel.php:545
+#: ../../Zotlabs/Module/Settings/Channel.php:544
msgid "accepting a friend request"
msgstr "Acepte una solicitud de amistad"
-#: ../../Zotlabs/Module/Settings/Channel.php:546
+#: ../../Zotlabs/Module/Settings/Channel.php:545
msgid "joining a forum/community"
msgstr "al unirse a un foro o comunidad"
-#: ../../Zotlabs/Module/Settings/Channel.php:547
+#: ../../Zotlabs/Module/Settings/Channel.php:546
msgid "making an <em>interesting</em> profile change"
msgstr "Realice un cambio <em>interesante</em> en su perfil"
-#: ../../Zotlabs/Module/Settings/Channel.php:548
+#: ../../Zotlabs/Module/Settings/Channel.php:547
msgid "Send a notification email when:"
msgstr "Enviar una notificación por correo electrónico cuando:"
-#: ../../Zotlabs/Module/Settings/Channel.php:549
+#: ../../Zotlabs/Module/Settings/Channel.php:548
msgid "You receive a connection request"
msgstr "Reciba una solicitud de conexión"
-#: ../../Zotlabs/Module/Settings/Channel.php:550
+#: ../../Zotlabs/Module/Settings/Channel.php:549
msgid "Your connections are confirmed"
msgstr "Sus conexiones hayan sido confirmadas"
-#: ../../Zotlabs/Module/Settings/Channel.php:551
+#: ../../Zotlabs/Module/Settings/Channel.php:550
msgid "Someone writes on your profile wall"
msgstr "Alguien escriba en la página de su perfil (\"muro\")"
-#: ../../Zotlabs/Module/Settings/Channel.php:552
+#: ../../Zotlabs/Module/Settings/Channel.php:551
msgid "Someone writes a followup comment"
msgstr "Alguien escriba un comentario sobre sus publicaciones"
-#: ../../Zotlabs/Module/Settings/Channel.php:553
+#: ../../Zotlabs/Module/Settings/Channel.php:552
msgid "You receive a private message"
msgstr "Reciba un mensaje privado"
-#: ../../Zotlabs/Module/Settings/Channel.php:554
+#: ../../Zotlabs/Module/Settings/Channel.php:553
msgid "You receive a friend suggestion"
msgstr "Reciba una sugerencia de amistad"
-#: ../../Zotlabs/Module/Settings/Channel.php:555
+#: ../../Zotlabs/Module/Settings/Channel.php:554
msgid "You are tagged in a post"
msgstr "Usted sea etiquetado en una publicación"
-#: ../../Zotlabs/Module/Settings/Channel.php:556
+#: ../../Zotlabs/Module/Settings/Channel.php:555
msgid "You are poked/prodded/etc. in a post"
msgstr "Reciba un toque o incitación en una publicación"
-#: ../../Zotlabs/Module/Settings/Channel.php:558
+#: ../../Zotlabs/Module/Settings/Channel.php:557
msgid "Someone likes your post/comment"
msgstr "Alguien muestre agrado por su entrada o comentario"
-#: ../../Zotlabs/Module/Settings/Channel.php:561
+#: ../../Zotlabs/Module/Settings/Channel.php:560
msgid "Show visual notifications including:"
msgstr "Mostrar notificaciones visuales que incluyan:"
-#: ../../Zotlabs/Module/Settings/Channel.php:563
+#: ../../Zotlabs/Module/Settings/Channel.php:562
msgid "Unseen grid activity"
msgstr "Nueva actividad en la red"
-#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:563
msgid "Unseen channel activity"
msgstr "Actividad no vista en el canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:565
+#: ../../Zotlabs/Module/Settings/Channel.php:564
msgid "Unseen private messages"
msgstr "Mensajes privados no leídos"
-#: ../../Zotlabs/Module/Settings/Channel.php:565
+#: ../../Zotlabs/Module/Settings/Channel.php:564
+#: ../../Zotlabs/Module/Settings/Channel.php:569
#: ../../Zotlabs/Module/Settings/Channel.php:570
#: ../../Zotlabs/Module/Settings/Channel.php:571
-#: ../../Zotlabs/Module/Settings/Channel.php:572
#: ../../addon/jappixmini/jappixmini.php:343
msgid "Recommended"
msgstr "Recomendado"
-#: ../../Zotlabs/Module/Settings/Channel.php:566
+#: ../../Zotlabs/Module/Settings/Channel.php:565
msgid "Upcoming events"
msgstr "Próximos eventos"
-#: ../../Zotlabs/Module/Settings/Channel.php:567
+#: ../../Zotlabs/Module/Settings/Channel.php:566
msgid "Events today"
msgstr "Eventos de hoy"
-#: ../../Zotlabs/Module/Settings/Channel.php:568
+#: ../../Zotlabs/Module/Settings/Channel.php:567
msgid "Upcoming birthdays"
msgstr "Próximos cumpleaños"
-#: ../../Zotlabs/Module/Settings/Channel.php:568
+#: ../../Zotlabs/Module/Settings/Channel.php:567
msgid "Not available in all themes"
msgstr "No disponible en todos los temas"
-#: ../../Zotlabs/Module/Settings/Channel.php:569
+#: ../../Zotlabs/Module/Settings/Channel.php:568
msgid "System (personal) notifications"
msgstr "Notificaciones del sistema (personales)"
-#: ../../Zotlabs/Module/Settings/Channel.php:570
+#: ../../Zotlabs/Module/Settings/Channel.php:569
msgid "System info messages"
msgstr "Mensajes de información del sistema"
-#: ../../Zotlabs/Module/Settings/Channel.php:571
+#: ../../Zotlabs/Module/Settings/Channel.php:570
msgid "System critical alerts"
msgstr "Alertas críticas del sistema"
-#: ../../Zotlabs/Module/Settings/Channel.php:572
+#: ../../Zotlabs/Module/Settings/Channel.php:571
msgid "New connections"
msgstr "Nuevas conexiones"
-#: ../../Zotlabs/Module/Settings/Channel.php:573
+#: ../../Zotlabs/Module/Settings/Channel.php:572
msgid "System Registrations"
msgstr "Registros del sistema"
-#: ../../Zotlabs/Module/Settings/Channel.php:574
+#: ../../Zotlabs/Module/Settings/Channel.php:573
msgid "Unseen shared files"
msgstr "Ficheros compartidos no vistos"
-#: ../../Zotlabs/Module/Settings/Channel.php:575
+#: ../../Zotlabs/Module/Settings/Channel.php:574
msgid "Unseen public activity"
msgstr "Actividad pública no vista"
-#: ../../Zotlabs/Module/Settings/Channel.php:576
+#: ../../Zotlabs/Module/Settings/Channel.php:575
msgid "Email notification hub (hostname)"
msgstr "Email de notificación del hub (nombre del host)"
-#: ../../Zotlabs/Module/Settings/Channel.php:576
+#: ../../Zotlabs/Module/Settings/Channel.php:575
#, php-format
msgid ""
"If your channel is mirrored to multiple hubs, set this to your preferred "
"location. This will prevent duplicate email notifications. Example: %s"
msgstr "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s"
-#: ../../Zotlabs/Module/Settings/Channel.php:577
+#: ../../Zotlabs/Module/Settings/Channel.php:576
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Mostrar también en Avisos las nuevas publicaciones, los mensajes privados y las conexiones"
-#: ../../Zotlabs/Module/Settings/Channel.php:579
+#: ../../Zotlabs/Module/Settings/Channel.php:578
msgid "Notify me of events this many days in advance"
msgstr "Avisarme de los eventos con algunos días de antelación"
-#: ../../Zotlabs/Module/Settings/Channel.php:579
+#: ../../Zotlabs/Module/Settings/Channel.php:578
msgid "Must be greater than 0"
msgstr "Debe ser mayor que 0"
-#: ../../Zotlabs/Module/Settings/Channel.php:585
+#: ../../Zotlabs/Module/Settings/Channel.php:584
msgid "Advanced Account/Page Type Settings"
msgstr "Ajustes avanzados de la cuenta y de los tipos de página"
-#: ../../Zotlabs/Module/Settings/Channel.php:586
+#: ../../Zotlabs/Module/Settings/Channel.php:585
msgid "Change the behaviour of this account for special situations"
msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales"
-#: ../../Zotlabs/Module/Settings/Channel.php:588
+#: ../../Zotlabs/Module/Settings/Channel.php:587
msgid "Miscellaneous Settings"
msgstr "Ajustes diversos"
-#: ../../Zotlabs/Module/Settings/Channel.php:589
+#: ../../Zotlabs/Module/Settings/Channel.php:588
msgid "Default photo upload folder"
msgstr "Carpeta por defecto de las fotos subidas"
+#: ../../Zotlabs/Module/Settings/Channel.php:588
#: ../../Zotlabs/Module/Settings/Channel.php:589
-#: ../../Zotlabs/Module/Settings/Channel.php:590
msgid "%Y - current year, %m - current month"
msgstr "%Y - año en curso, %m - mes actual"
-#: ../../Zotlabs/Module/Settings/Channel.php:590
+#: ../../Zotlabs/Module/Settings/Channel.php:589
msgid "Default file upload folder"
msgstr "Carpeta por defecto de los ficheros subidos"
-#: ../../Zotlabs/Module/Settings/Channel.php:592
+#: ../../Zotlabs/Module/Settings/Channel.php:591
msgid "Personal menu to display in your channel pages"
msgstr "Menú personal que debe mostrarse en las páginas de su canal"
-#: ../../Zotlabs/Module/Settings/Channel.php:594
+#: ../../Zotlabs/Module/Settings/Channel.php:593
msgid "Remove this channel."
msgstr "Eliminar este canal."
-#: ../../Zotlabs/Module/Settings/Channel.php:595
+#: ../../Zotlabs/Module/Settings/Channel.php:594
msgid "Firefox Share $Projectname provider"
msgstr "Servicio de compartición de Firefox: proveedor $Projectname"
-#: ../../Zotlabs/Module/Settings/Channel.php:596
+#: ../../Zotlabs/Module/Settings/Channel.php:595
msgid "Start calendar week on Monday"
msgstr "Comenzar el calendario semanal por el lunes"
@@ -3826,7 +3890,7 @@ msgid "Expires (yyyy-mm-dd)"
msgstr "Expira (aaaa-mm-dd)"
#: ../../Zotlabs/Module/Settings/Tokens.php:160
-#: ../../Zotlabs/Module/Connedit.php:907
+#: ../../Zotlabs/Module/Connedit.php:890
msgid "Their Settings"
msgstr "Sus ajustes"
@@ -3891,8 +3955,10 @@ msgid "Your technical skill level"
msgstr "Su nivel de habilidad técnica"
#: ../../Zotlabs/Module/Settings/Account.php:116
-msgid "Used to provide a member experience matched to your comfort level"
-msgstr "Se utiliza para proporcionar la experiencia de los miembros adaptada a su nivel de comodidad"
+msgid ""
+"Used to provide a member experience and additional features consistent with "
+"your comfort level"
+msgstr "Utilizado para proporcionar un nivel de experiencia como miembro y características adicionales consistentes con su nivel de comodidad"
#: ../../Zotlabs/Module/Settings/Account.php:120
#: ../../Zotlabs/Module/Removeaccount.php:61
@@ -3903,148 +3969,152 @@ msgstr "Eliminar cuenta"
msgid "Remove this account including all its channels"
msgstr "Eliminar esta cuenta incluyendo todos sus canales"
-#: ../../Zotlabs/Module/Settings/Featured.php:21
+#: ../../Zotlabs/Module/Settings/Featured.php:23
msgid "Affinity Slider settings updated."
msgstr "Se han actualizado los ajustes del controlador de afinidad."
-#: ../../Zotlabs/Module/Settings/Featured.php:36
+#: ../../Zotlabs/Module/Settings/Featured.php:38
msgid "No feature settings configured"
msgstr "No se ha establecido la configuración de los complementos"
-#: ../../Zotlabs/Module/Settings/Featured.php:43
+#: ../../Zotlabs/Module/Settings/Featured.php:45
msgid "Default maximum affinity level"
msgstr "Nivel máximo de afinidad por defecto"
-#: ../../Zotlabs/Module/Settings/Featured.php:48
+#: ../../Zotlabs/Module/Settings/Featured.php:45
+msgid "0-99 default 99"
+msgstr "0-99 por defecto 99"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:50
msgid "Default minimum affinity level"
msgstr "Nivel mínimo de afinidad por defecto"
-#: ../../Zotlabs/Module/Settings/Featured.php:52
+#: ../../Zotlabs/Module/Settings/Featured.php:50
+msgid "0-99 - default 0"
+msgstr "0-99 - por defecto 0"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:54
msgid "Affinity Slider Settings"
msgstr "Ajustes del controlador de afinidad"
-#: ../../Zotlabs/Module/Settings/Featured.php:62
-msgid "Feature/Addon Settings"
+#: ../../Zotlabs/Module/Settings/Featured.php:64
+msgid "Addon Settings"
msgstr "Ajustes de los complementos"
-#: ../../Zotlabs/Module/Settings/Display.php:147
-msgid "No special theme for mobile devices"
-msgstr "Sin tema especial para dispositivos móviles"
+#: ../../Zotlabs/Module/Settings/Featured.php:65
+msgid "Please save/submit changes to any panel before opening another."
+msgstr "Guarde o envíe los cambios a cualquier panel antes de abrir otro."
-#: ../../Zotlabs/Module/Settings/Display.php:150
+#: ../../Zotlabs/Module/Settings/Display.php:139
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Experimental)"
-#: ../../Zotlabs/Module/Settings/Display.php:204
+#: ../../Zotlabs/Module/Settings/Display.php:187
msgid "Display Settings"
msgstr "Ajustes de visualización"
-#: ../../Zotlabs/Module/Settings/Display.php:205
+#: ../../Zotlabs/Module/Settings/Display.php:188
msgid "Theme Settings"
msgstr "Ajustes del tema"
-#: ../../Zotlabs/Module/Settings/Display.php:206
+#: ../../Zotlabs/Module/Settings/Display.php:189
msgid "Custom Theme Settings"
msgstr "Ajustes personalizados del tema"
-#: ../../Zotlabs/Module/Settings/Display.php:207
+#: ../../Zotlabs/Module/Settings/Display.php:190
msgid "Content Settings"
msgstr "Ajustes del contenido"
-#: ../../Zotlabs/Module/Settings/Display.php:213
+#: ../../Zotlabs/Module/Settings/Display.php:196
msgid "Display Theme:"
msgstr "Tema gráfico del perfil:"
-#: ../../Zotlabs/Module/Settings/Display.php:214
+#: ../../Zotlabs/Module/Settings/Display.php:197
msgid "Select scheme"
msgstr "Elegir un esquema"
-#: ../../Zotlabs/Module/Settings/Display.php:216
-msgid "Mobile Theme:"
-msgstr "Tema para el móvil:"
-
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:199
msgid "Preload images before rendering the page"
msgstr "Carga previa de las imágenes antes de generar la página"
-#: ../../Zotlabs/Module/Settings/Display.php:217
+#: ../../Zotlabs/Module/Settings/Display.php:199
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre."
-#: ../../Zotlabs/Module/Settings/Display.php:218
+#: ../../Zotlabs/Module/Settings/Display.php:200
msgid "Enable user zoom on mobile devices"
msgstr "Habilitar zoom de usuario en dispositivos móviles"
-#: ../../Zotlabs/Module/Settings/Display.php:219
+#: ../../Zotlabs/Module/Settings/Display.php:201
msgid "Update browser every xx seconds"
msgstr "Actualizar navegador cada xx segundos"
-#: ../../Zotlabs/Module/Settings/Display.php:219
+#: ../../Zotlabs/Module/Settings/Display.php:201
msgid "Minimum of 10 seconds, no maximum"
msgstr "Mínimo de 10 segundos, sin máximo"
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:202
msgid "Maximum number of conversations to load at any time:"
msgstr "Máximo número de conversaciones a cargar en cualquier momento:"
-#: ../../Zotlabs/Module/Settings/Display.php:220
+#: ../../Zotlabs/Module/Settings/Display.php:202
msgid "Maximum of 100 items"
msgstr "Máximo de 100 elementos"
-#: ../../Zotlabs/Module/Settings/Display.php:221
+#: ../../Zotlabs/Module/Settings/Display.php:203
msgid "Show emoticons (smilies) as images"
msgstr "Mostrar emoticonos (smilies) como imágenes"
-#: ../../Zotlabs/Module/Settings/Display.php:222
+#: ../../Zotlabs/Module/Settings/Display.php:204
msgid "Provide channel menu in navigation bar"
msgstr "Proporcionar un menú de canales en la barra de navegación"
-#: ../../Zotlabs/Module/Settings/Display.php:222
+#: ../../Zotlabs/Module/Settings/Display.php:204
msgid "Default: channel menu located in app menu"
msgstr "Predeterminado: menú de canales ubicado en el menú de aplicaciones"
-#: ../../Zotlabs/Module/Settings/Display.php:223
+#: ../../Zotlabs/Module/Settings/Display.php:205
msgid "Manual conversation updates"
msgstr "Actualizaciones manuales de la conversación"
-#: ../../Zotlabs/Module/Settings/Display.php:223
+#: ../../Zotlabs/Module/Settings/Display.php:205
msgid "Default is on, turning this off may increase screen jumping"
msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla"
-#: ../../Zotlabs/Module/Settings/Display.php:224
+#: ../../Zotlabs/Module/Settings/Display.php:206
msgid "Link post titles to source"
msgstr "Enlazar título de la publicación a la fuente original"
-#: ../../Zotlabs/Module/Settings/Display.php:225
+#: ../../Zotlabs/Module/Settings/Display.php:207
msgid "System Page Layout Editor - (advanced)"
msgstr "Editor de plantilla de página del sistema - (avanzado)"
-#: ../../Zotlabs/Module/Settings/Display.php:228
+#: ../../Zotlabs/Module/Settings/Display.php:210
msgid "Use blog/list mode on channel page"
msgstr "Usar modo blog/lista en la página de inicio del canal"
-#: ../../Zotlabs/Module/Settings/Display.php:228
-#: ../../Zotlabs/Module/Settings/Display.php:229
+#: ../../Zotlabs/Module/Settings/Display.php:210
+#: ../../Zotlabs/Module/Settings/Display.php:211
msgid "(comments displayed separately)"
msgstr "(comentarios mostrados de forma separada)"
-#: ../../Zotlabs/Module/Settings/Display.php:229
+#: ../../Zotlabs/Module/Settings/Display.php:211
msgid "Use blog/list mode on grid page"
msgstr "Mostrar mi red en modo blog"
-#: ../../Zotlabs/Module/Settings/Display.php:230
+#: ../../Zotlabs/Module/Settings/Display.php:212
msgid "Channel page max height of content (in pixels)"
msgstr "Altura máxima del contenido de la página del canal (en píxeles)"
-#: ../../Zotlabs/Module/Settings/Display.php:230
-#: ../../Zotlabs/Module/Settings/Display.php:231
+#: ../../Zotlabs/Module/Settings/Display.php:212
+#: ../../Zotlabs/Module/Settings/Display.php:213
msgid "click to expand content exceeding this height"
msgstr "Pulsar para expandir el contenido que exceda de esta altura"
-#: ../../Zotlabs/Module/Settings/Display.php:231
+#: ../../Zotlabs/Module/Settings/Display.php:213
msgid "Grid page max height of content (in pixels)"
msgstr "Altura máxima del contenido de mi red (en píxeles)"
@@ -4068,7 +4138,7 @@ msgstr "Nombre de la aplicación"
#: ../../Zotlabs/Module/Settings/Oauth.php:90
#: ../../Zotlabs/Module/Settings/Oauth.php:116
-#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:775
+#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:781
msgid "Consumer Key"
msgstr "Consumer Key"
@@ -4079,7 +4149,7 @@ msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 2
#: ../../Zotlabs/Module/Settings/Oauth.php:91
#: ../../Zotlabs/Module/Settings/Oauth.php:117
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:776
+#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:782
msgid "Consumer Secret"
msgstr "Consumer Secret"
@@ -4139,9 +4209,9 @@ msgstr "Editar álbum"
#: ../../Zotlabs/Module/Embedphotos.php:158
#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Photos.php:844
#: ../../Zotlabs/Module/Photos.php:1381
-#: ../../Zotlabs/Module/Profile_photo.php:437
+#: ../../Zotlabs/Module/Profile_photo.php:458
#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Storage/Browser.php:274 ../../Zotlabs/Storage/Browser.php:381
+#: ../../Zotlabs/Storage/Browser.php:277 ../../Zotlabs/Storage/Browser.php:384
#: ../../Zotlabs/Widget/Cdav.php:133 ../../Zotlabs/Widget/Cdav.php:169
#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Album.php:97
msgid "Upload"
@@ -4208,7 +4278,7 @@ msgstr "Dirección para la foto o elemento (opcional)"
#: ../../Zotlabs/Module/Photos.php:702 ../../Zotlabs/Module/Photos.php:1071
#: ../../Zotlabs/Module/Connedit.php:676 ../../Zotlabs/Module/Chat.php:235
#: ../../Zotlabs/Module/Filestorage.php:147
-#: ../../include/acl_selectors.php:218
+#: ../../include/acl_selectors.php:123
msgid "Permissions"
msgstr "Permisos"
@@ -4305,16 +4375,16 @@ msgstr "Este proceso puede tardar varios minutos en completarse. Por favor enví
msgid "Authentication failed."
msgstr "Falló la autenticación."
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1665
-#: ../../include/channel.php:2301
+#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1583
+#: ../../include/channel.php:2307
msgid "Remote Authentication"
msgstr "Acceso desde su servidor"
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2302
+#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2308
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2303
+#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2309
msgid "Authenticate"
msgstr "Acceder"
@@ -4322,23 +4392,23 @@ msgstr "Acceder"
msgid "Permissions denied."
msgstr "Permisos denegados."
-#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2312
+#: ../../Zotlabs/Module/Cal.php:344 ../../include/text.php:2426
msgid "Import"
msgstr "Importar"
-#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93
+#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95
msgid "Authorize application connection"
msgstr "Autorizar una conexión de aplicación"
-#: ../../Zotlabs/Module/Api.php:73
+#: ../../Zotlabs/Module/Api.php:75
msgid "Return to your app and insert this Security Code:"
msgstr "Vuelva a su aplicación e introduzca este código de seguridad: "
-#: ../../Zotlabs/Module/Api.php:83
+#: ../../Zotlabs/Module/Api.php:85
msgid "Please login to continue."
msgstr "Por favor inicie sesión para continuar."
-#: ../../Zotlabs/Module/Api.php:95
+#: ../../Zotlabs/Module/Api.php:97
msgid ""
"Do you want to authorize this application to access your posts and contacts,"
" and/or create new posts for you?"
@@ -4356,15 +4426,15 @@ msgstr "Modificar este bloque"
msgid "vcard"
msgstr "vcard"
-#: ../../Zotlabs/Module/Apps.php:47 ../../Zotlabs/Lib/Apps.php:223
+#: ../../Zotlabs/Module/Apps.php:48 ../../Zotlabs/Lib/Apps.php:228
msgid "Apps"
msgstr "Aplicaciones (apps)"
-#: ../../Zotlabs/Module/Apps.php:50
+#: ../../Zotlabs/Module/Apps.php:51
msgid "Manage apps"
msgstr "Gestionar las aplicaciones"
-#: ../../Zotlabs/Module/Apps.php:51
+#: ../../Zotlabs/Module/Apps.php:52
msgid "Create new app"
msgstr "Crear una nueva aplicación"
@@ -4374,7 +4444,7 @@ msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s está %2$s"
-#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:247
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:253
msgid "Mood"
msgstr "Estado de ánimo"
@@ -4414,12 +4484,12 @@ msgstr "Nuevas"
#: ../../Zotlabs/Module/Connections.php:88
#: ../../Zotlabs/Module/Connections.php:102
-#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:30
+#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:26
msgid "All"
msgstr "Todos/as"
#: ../../Zotlabs/Module/Connections.php:133
-#: ../../Zotlabs/Widget/Notifications.php:82
+#: ../../Zotlabs/Widget/Notifications.php:84
msgid "New Connections"
msgstr "Nuevas conexiones"
@@ -4459,70 +4529,70 @@ msgstr "Archivadas"
msgid "Not connected at this location"
msgstr "No está conectado/a en esta ubicación"
-#: ../../Zotlabs/Module/Connections.php:258
+#: ../../Zotlabs/Module/Connections.php:263
#, php-format
msgid "%1$s [%2$s]"
msgstr "%1$s [%2$s]"
-#: ../../Zotlabs/Module/Connections.php:259
+#: ../../Zotlabs/Module/Connections.php:264
msgid "Edit connection"
msgstr "Editar conexión"
-#: ../../Zotlabs/Module/Connections.php:261
+#: ../../Zotlabs/Module/Connections.php:266
msgid "Delete connection"
msgstr "Eliminar conexión"
-#: ../../Zotlabs/Module/Connections.php:270
+#: ../../Zotlabs/Module/Connections.php:275
msgid "Channel address"
msgstr "Dirección del canal"
-#: ../../Zotlabs/Module/Connections.php:272
+#: ../../Zotlabs/Module/Connections.php:277
msgid "Network"
msgstr "Red"
-#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Connections.php:280
msgid "Call"
msgstr "Llamar"
-#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Connections.php:282
msgid "Status"
msgstr "Estado"
-#: ../../Zotlabs/Module/Connections.php:279
+#: ../../Zotlabs/Module/Connections.php:284
msgid "Connected"
msgstr "Conectado/a"
-#: ../../Zotlabs/Module/Connections.php:281
+#: ../../Zotlabs/Module/Connections.php:286
msgid "Approve connection"
msgstr "Aprobar esta conexión"
-#: ../../Zotlabs/Module/Connections.php:283
+#: ../../Zotlabs/Module/Connections.php:288
msgid "Ignore connection"
msgstr "Ignorar esta conexión"
-#: ../../Zotlabs/Module/Connections.php:284
+#: ../../Zotlabs/Module/Connections.php:289
#: ../../Zotlabs/Module/Connedit.php:630
msgid "Ignore"
msgstr "Ignorar"
-#: ../../Zotlabs/Module/Connections.php:285
+#: ../../Zotlabs/Module/Connections.php:290
msgid "Recent activity"
msgstr "Actividad reciente"
-#: ../../Zotlabs/Module/Connections.php:309 ../../Zotlabs/Lib/Apps.php:229
-#: ../../include/text.php:959 ../../include/nav.php:114
+#: ../../Zotlabs/Module/Connections.php:315 ../../Zotlabs/Lib/Apps.php:235
+#: ../../include/text.php:973
msgid "Connections"
msgstr "Conexiones"
-#: ../../Zotlabs/Module/Connections.php:314
+#: ../../Zotlabs/Module/Connections.php:320
msgid "Search your connections"
msgstr "Buscar sus conexiones"
-#: ../../Zotlabs/Module/Connections.php:315
+#: ../../Zotlabs/Module/Connections.php:321
msgid "Connections search"
msgstr "Buscar conexiones"
-#: ../../Zotlabs/Module/Connections.php:316
+#: ../../Zotlabs/Module/Connections.php:322
#: ../../Zotlabs/Module/Directory.php:396
#: ../../Zotlabs/Module/Directory.php:401 ../../include/contact_widgets.php:23
msgid "Find"
@@ -4720,12 +4790,12 @@ msgid "Please wait"
msgstr "Espere por favor"
#: ../../Zotlabs/Module/Photos.php:1119 ../../Zotlabs/Module/Photos.php:1237
-#: ../../Zotlabs/Lib/ThreadItem.php:751
+#: ../../Zotlabs/Lib/ThreadItem.php:747
msgid "This is you"
msgstr "Este es usted"
#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
-#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/js_strings.php:6
+#: ../../Zotlabs/Lib/ThreadItem.php:749 ../../include/js_strings.php:6
msgid "Comment"
msgstr "Comentar"
@@ -4775,8 +4845,8 @@ msgid "View all"
msgstr "Ver todo"
#: ../../Zotlabs/Module/Photos.php:1160 ../../Zotlabs/Lib/ThreadItem.php:205
-#: ../../include/conversation.php:1978 ../../include/channel.php:1539
-#: ../../include/taxonomy.php:593
+#: ../../include/conversation.php:1978 ../../include/channel.php:1540
+#: ../../include/taxonomy.php:597
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
@@ -4814,7 +4884,7 @@ msgid "Dislikes"
msgstr "No me gusta"
#: ../../Zotlabs/Module/Photos.php:1293 ../../Zotlabs/Lib/ThreadItem.php:421
-#: ../../include/acl_selectors.php:220
+#: ../../include/acl_selectors.php:125
msgid "Close"
msgstr "Cerrar"
@@ -4849,7 +4919,7 @@ msgid "Error downloading wiki: "
msgstr "Error al descargar el wiki: "
#: ../../Zotlabs/Module/Wiki.php:197 ../../addon/gitwiki/Mod_Gitwiki.php:146
-#: ../../include/conversation.php:1925 ../../include/nav.php:526
+#: ../../include/conversation.php:1925 ../../include/nav.php:494
msgid "Wikis"
msgstr "Wikis"
@@ -4873,23 +4943,23 @@ msgstr "Tipo de contenido"
#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
#: ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1802
-#: ../../include/features.php:378
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../addon/mdpost/mdpost.php:40
+#: ../../include/text.php:1868
msgid "Markdown"
msgstr "Markdown"
#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Module/Wiki.php:348
#: ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1800
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1866
msgid "BBcode"
msgstr "BBcode"
#: ../../Zotlabs/Module/Wiki.php:208 ../../Zotlabs/Widget/Wiki_pages.php:36
-#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1803
+#: ../../Zotlabs/Widget/Wiki_pages.php:93 ../../include/text.php:1869
msgid "Text"
msgstr "Texto"
-#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:281
+#: ../../Zotlabs/Module/Wiki.php:210 ../../Zotlabs/Storage/Browser.php:284
#: ../../addon/gitwiki/Mod_Gitwiki.php:159
msgid "Type"
msgstr "Tipo"
@@ -4956,8 +5026,11 @@ msgstr "Incluir una imagen de los álbumes de fotos"
msgid "Embed an image from your albums"
msgstr "Incluir una imagen de sus álbumes"
-#: ../../Zotlabs/Module/Wiki.php:376 ../../addon/gitwiki/Mod_Gitwiki.php:268
-#: ../../include/conversation.php:1387 ../../include/conversation.php:1434
+#: ../../Zotlabs/Module/Wiki.php:376
+#: ../../Zotlabs/Module/Profile_photo.php:465
+#: ../../Zotlabs/Module/Cover_photo.php:366
+#: ../../addon/gitwiki/Mod_Gitwiki.php:268 ../../include/conversation.php:1387
+#: ../../include/conversation.php:1434
msgid "OK"
msgstr "OK"
@@ -5086,7 +5159,7 @@ msgstr "Editar otro diseño"
msgid "System layout"
msgstr "Diseño del sistema"
-#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:248
+#: ../../Zotlabs/Module/Poke.php:182 ../../Zotlabs/Lib/Apps.php:254
#: ../../include/conversation.php:1092
msgid "Poke"
msgstr "Toques y otras cosas"
@@ -5115,97 +5188,97 @@ msgstr "Elegir qué desea enviar al destinatario"
msgid "Make this post private"
msgstr "Convertir en privado este envío"
-#: ../../Zotlabs/Module/Profile_photo.php:61
+#: ../../Zotlabs/Module/Profile_photo.php:66
#: ../../Zotlabs/Module/Cover_photo.php:56
msgid "Image uploaded but image cropping failed."
msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. "
-#: ../../Zotlabs/Module/Profile_photo.php:115
-#: ../../Zotlabs/Module/Profile_photo.php:240
+#: ../../Zotlabs/Module/Profile_photo.php:120
+#: ../../Zotlabs/Module/Profile_photo.php:248
#: ../../include/photo/photo_driver.php:740
msgid "Profile Photos"
msgstr "Fotos del perfil"
-#: ../../Zotlabs/Module/Profile_photo.php:137
+#: ../../Zotlabs/Module/Profile_photo.php:142
#: ../../Zotlabs/Module/Cover_photo.php:159
msgid "Image resize failed."
msgstr "El ajuste del tamaño de la imagen ha fallado."
-#: ../../Zotlabs/Module/Profile_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:218
#: ../../addon/openclipatar/openclipatar.php:298
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."
-#: ../../Zotlabs/Module/Profile_photo.php:217
+#: ../../Zotlabs/Module/Profile_photo.php:225
#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:195
msgid "Unable to process image"
msgstr "No ha sido posible procesar la imagen"
-#: ../../Zotlabs/Module/Profile_photo.php:252
+#: ../../Zotlabs/Module/Profile_photo.php:260
#: ../../Zotlabs/Module/Cover_photo.php:197
msgid "Image upload failed."
msgstr "La carga de la imagen ha fallado."
-#: ../../Zotlabs/Module/Profile_photo.php:271
+#: ../../Zotlabs/Module/Profile_photo.php:279
#: ../../Zotlabs/Module/Cover_photo.php:214
msgid "Unable to process image."
msgstr "No ha sido posible procesar la imagen."
-#: ../../Zotlabs/Module/Profile_photo.php:332
-#: ../../Zotlabs/Module/Profile_photo.php:379
+#: ../../Zotlabs/Module/Profile_photo.php:343
+#: ../../Zotlabs/Module/Profile_photo.php:390
#: ../../Zotlabs/Module/Cover_photo.php:307
#: ../../Zotlabs/Module/Cover_photo.php:322
msgid "Photo not available."
msgstr "Foto no disponible."
-#: ../../Zotlabs/Module/Profile_photo.php:434
+#: ../../Zotlabs/Module/Profile_photo.php:455
#: ../../Zotlabs/Module/Cover_photo.php:358
msgid "Upload File:"
msgstr "Subir fichero:"
-#: ../../Zotlabs/Module/Profile_photo.php:435
+#: ../../Zotlabs/Module/Profile_photo.php:456
#: ../../Zotlabs/Module/Cover_photo.php:359
msgid "Select a profile:"
msgstr "Seleccionar un perfil:"
-#: ../../Zotlabs/Module/Profile_photo.php:436
+#: ../../Zotlabs/Module/Profile_photo.php:457
msgid "Use Photo for Profile"
msgstr "Usar la fotografía para el perfil"
-#: ../../Zotlabs/Module/Profile_photo.php:436
-msgid "Upload Profile Photo"
-msgstr "Subir foto de perfil"
+#: ../../Zotlabs/Module/Profile_photo.php:457
+msgid "Change Profile Photo"
+msgstr "Cambiar la foto del perfil"
-#: ../../Zotlabs/Module/Profile_photo.php:437
-#: ../../addon/openclipatar/openclipatar.php:182
-#: ../../addon/openclipatar/openclipatar.php:194
+#: ../../Zotlabs/Module/Profile_photo.php:458
msgid "Use"
msgstr "Usar"
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "skip this step"
-msgstr "Omitir este paso"
-
-#: ../../Zotlabs/Module/Profile_photo.php:443
-#: ../../Zotlabs/Module/Cover_photo.php:365
-msgid "select a photo from your photo albums"
-msgstr "Seleccione una foto de sus álbumes de fotos"
-
#: ../../Zotlabs/Module/Profile_photo.php:462
-#: ../../Zotlabs/Module/Cover_photo.php:381
+#: ../../Zotlabs/Module/Profile_photo.php:463
+#: ../../Zotlabs/Module/Cover_photo.php:363
+#: ../../Zotlabs/Module/Cover_photo.php:364
+msgid "Use a photo from your albums"
+msgstr "Usar una foto de sus álbumes"
+
+#: ../../Zotlabs/Module/Profile_photo.php:467
+#: ../../Zotlabs/Module/Cover_photo.php:369
+msgid "Select existing photo"
+msgstr "Seleccionar una foto existente"
+
+#: ../../Zotlabs/Module/Profile_photo.php:486
+#: ../../Zotlabs/Module/Cover_photo.php:386
msgid "Crop Image"
msgstr "Recortar imagen"
-#: ../../Zotlabs/Module/Profile_photo.php:463
-#: ../../Zotlabs/Module/Cover_photo.php:382
+#: ../../Zotlabs/Module/Profile_photo.php:487
+#: ../../Zotlabs/Module/Cover_photo.php:387
msgid "Please adjust the image cropping for optimum viewing."
msgstr "Por favor ajuste el recorte de la imagen para una visión óptima."
-#: ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Cover_photo.php:384
+#: ../../Zotlabs/Module/Profile_photo.php:489
+#: ../../Zotlabs/Module/Cover_photo.php:389
msgid "Done Editing"
msgstr "Edición completada"
@@ -5225,65 +5298,65 @@ msgstr "Enviado con éxito."
msgid "Source of Item"
msgstr "Origen del elemento"
-#: ../../Zotlabs/Module/Item.php:193
+#: ../../Zotlabs/Module/Item.php:194
msgid "Unable to locate original post."
msgstr "No ha sido posible encontrar la entrada original."
-#: ../../Zotlabs/Module/Item.php:475
+#: ../../Zotlabs/Module/Item.php:476
msgid "Empty post discarded."
msgstr "La entrada vacía ha sido desechada."
-#: ../../Zotlabs/Module/Item.php:853
+#: ../../Zotlabs/Module/Item.php:867
msgid "Duplicate post suppressed."
msgstr "Se ha suprimido la entrada duplicada."
-#: ../../Zotlabs/Module/Item.php:998
+#: ../../Zotlabs/Module/Item.php:1012
msgid "System error. Post not saved."
msgstr "Error del sistema. La entrada no se ha podido salvar."
-#: ../../Zotlabs/Module/Item.php:1034
+#: ../../Zotlabs/Module/Item.php:1048
msgid "Your comment is awaiting approval."
msgstr "Su comentario está pendiente de aprobación."
-#: ../../Zotlabs/Module/Item.php:1139
+#: ../../Zotlabs/Module/Item.php:1153
msgid "Unable to obtain post information from database."
msgstr "No ha sido posible obtener información de la entrada en la base de datos."
-#: ../../Zotlabs/Module/Item.php:1168
+#: ../../Zotlabs/Module/Item.php:1182
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal."
-#: ../../Zotlabs/Module/Item.php:1175
+#: ../../Zotlabs/Module/Item.php:1189
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Ha alcanzado su límite de %1$.0f páginas web."
-#: ../../Zotlabs/Module/Ping.php:311
+#: ../../Zotlabs/Module/Ping.php:320
msgid "sent you a private message"
msgstr "le ha enviado un mensaje privado"
-#: ../../Zotlabs/Module/Ping.php:360
+#: ../../Zotlabs/Module/Ping.php:372
msgid "added your channel"
msgstr "añadió este canal a sus conexiones"
-#: ../../Zotlabs/Module/Ping.php:384
+#: ../../Zotlabs/Module/Ping.php:396
msgid "requires approval"
msgstr "requiere aprobación"
-#: ../../Zotlabs/Module/Ping.php:394
+#: ../../Zotlabs/Module/Ping.php:406
msgid "g A l F d"
msgstr "g A l d F"
-#: ../../Zotlabs/Module/Ping.php:412
+#: ../../Zotlabs/Module/Ping.php:424
msgid "[today]"
msgstr "[hoy]"
-#: ../../Zotlabs/Module/Ping.php:421
+#: ../../Zotlabs/Module/Ping.php:433
msgid "posted an event"
msgstr "publicó un evento"
-#: ../../Zotlabs/Module/Ping.php:454
+#: ../../Zotlabs/Module/Ping.php:466
msgid "shared a file with you"
msgstr "compartió un archivo con usted"
@@ -5293,7 +5366,7 @@ msgstr "Elemento no válido."
#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
#: ../../Zotlabs/Module/Display.php:133
-#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:168
+#: ../../Zotlabs/Lib/NativeWikiPage.php:519 ../../Zotlabs/Web/Router.php:167
#: ../../include/help.php:81
msgid "Page not found."
msgstr "Página no encontrada."
@@ -5346,9 +5419,9 @@ msgstr "No ha sido posible establecer los parámetros de la libreta de direccion
msgid "Connection has been removed."
msgstr "La conexión ha sido eliminada."
-#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:241
+#: ../../Zotlabs/Module/Connedit.php:594 ../../Zotlabs/Lib/Apps.php:247
#: ../../addon/openclipatar/openclipatar.php:57
-#: ../../include/conversation.php:1032 ../../include/nav.php:148
+#: ../../include/conversation.php:1032 ../../include/nav.php:114
msgid "View Profile"
msgstr "Ver el perfil"
@@ -5458,15 +5531,15 @@ msgstr "Afinidad"
msgid "Open Set Affinity section by default"
msgstr "Abrir por defecto la sección para definir la afinidad"
-#: ../../Zotlabs/Module/Connedit.php:709 ../../Zotlabs/Widget/Affinity.php:26
+#: ../../Zotlabs/Module/Connedit.php:709 ../../Zotlabs/Widget/Affinity.php:22
msgid "Me"
msgstr "Yo"
-#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:27
+#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:23
msgid "Family"
msgstr "Familia"
-#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:29
+#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:25
msgid "Acquaintances"
msgstr "Conocidos/as"
@@ -5498,119 +5571,124 @@ msgstr "Ajustar el perfil"
msgid "Set Affinity & Profile"
msgstr "Ajustar la afinidad y el perfil"
-#: ../../Zotlabs/Module/Connedit.php:855
+#: ../../Zotlabs/Module/Connedit.php:838
msgid "This connection is unreachable from this location."
msgstr "No se puede acceder a la conexión desde este sitio."
-#: ../../Zotlabs/Module/Connedit.php:856
+#: ../../Zotlabs/Module/Connedit.php:839
msgid "This connection may be unreachable from other channel locations."
msgstr "Esta conexión puede ser inaccesible desde otras ubicaciones del canal."
-#: ../../Zotlabs/Module/Connedit.php:858
+#: ../../Zotlabs/Module/Connedit.php:841
msgid "Location independence is not supported by their network."
msgstr "La independencia de ubicación no es compatible con su red."
-#: ../../Zotlabs/Module/Connedit.php:864
+#: ../../Zotlabs/Module/Connedit.php:847
msgid ""
"This connection is unreachable from this location. Location independence is "
"not supported by their network."
msgstr "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red."
-#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:238
+#: ../../Zotlabs/Module/Connedit.php:850 ../../Zotlabs/Module/Defperms.php:238
#: ../../Zotlabs/Widget/Settings_menu.php:109
msgid "Connection Default Permissions"
msgstr "Permisos predeterminados de conexión"
-#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4134
+#: ../../Zotlabs/Module/Connedit.php:850 ../../include/items.php:4164
#, php-format
msgid "Connection: %s"
msgstr "Conexión: %s"
-#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:239
+#: ../../Zotlabs/Module/Connedit.php:851 ../../Zotlabs/Module/Defperms.php:239
msgid "Apply these permissions automatically"
msgstr "Aplicar estos permisos automaticamente"
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:851
msgid "Connection requests will be approved without your interaction"
msgstr "Las solicitudes de conexión serán aprobadas sin su intervención"
-#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:240
+#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:240
msgid "Permission role"
msgstr "Rol de acceso"
-#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:241
+#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:240
+#: ../../Zotlabs/Widget/Notifications.php:151 ../../include/nav.php:284
+msgid "Loading"
+msgstr "Cargando"
+
+#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:241
msgid "Add permission role"
msgstr "Añadir un rol de acceso"
-#: ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:860
msgid "This connection's primary address is"
msgstr "La dirección primaria de esta conexión es"
-#: ../../Zotlabs/Module/Connedit.php:878
+#: ../../Zotlabs/Module/Connedit.php:861
msgid "Available locations:"
msgstr "Ubicaciones disponibles:"
-#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:245
+#: ../../Zotlabs/Module/Connedit.php:866 ../../Zotlabs/Module/Defperms.php:245
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones."
-#: ../../Zotlabs/Module/Connedit.php:884
+#: ../../Zotlabs/Module/Connedit.php:867
msgid "Connection Tools"
msgstr "Gestión de las conexiones"
-#: ../../Zotlabs/Module/Connedit.php:886
+#: ../../Zotlabs/Module/Connedit.php:869
msgid "Slide to adjust your degree of friendship"
msgstr "Deslizar para ajustar el grado de amistad"
-#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Rate.php:155
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Valoración"
-#: ../../Zotlabs/Module/Connedit.php:888
+#: ../../Zotlabs/Module/Connedit.php:871
msgid "Slide to adjust your rating"
msgstr "Deslizar para ajustar su valoración"
-#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
+#: ../../Zotlabs/Module/Connedit.php:872 ../../Zotlabs/Module/Connedit.php:877
msgid "Optionally explain your rating"
msgstr "Opcionalmente, puede explicar su valoración"
-#: ../../Zotlabs/Module/Connedit.php:891
+#: ../../Zotlabs/Module/Connedit.php:874
msgid "Custom Filter"
msgstr "Filtro personalizado"
-#: ../../Zotlabs/Module/Connedit.php:892
+#: ../../Zotlabs/Module/Connedit.php:875
msgid "Only import posts with this text"
msgstr "Importar solo entradas que contengan este texto"
-#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
+#: ../../Zotlabs/Module/Connedit.php:875 ../../Zotlabs/Module/Connedit.php:876
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo"
-#: ../../Zotlabs/Module/Connedit.php:893
+#: ../../Zotlabs/Module/Connedit.php:876
msgid "Do not import posts with this text"
msgstr "No importar entradas que contengan este texto"
-#: ../../Zotlabs/Module/Connedit.php:895
+#: ../../Zotlabs/Module/Connedit.php:878
msgid "This information is public!"
msgstr "¡Esta información es pública!"
-#: ../../Zotlabs/Module/Connedit.php:900
+#: ../../Zotlabs/Module/Connedit.php:883
msgid "Connection Pending Approval"
msgstr "Conexión pendiente de aprobación"
-#: ../../Zotlabs/Module/Connedit.php:905
+#: ../../Zotlabs/Module/Connedit.php:888
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."
-#: ../../Zotlabs/Module/Connedit.php:912
+#: ../../Zotlabs/Module/Connedit.php:895
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -5618,11 +5696,11 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados."
-#: ../../Zotlabs/Module/Connedit.php:913
+#: ../../Zotlabs/Module/Connedit.php:896
msgid "Last update:"
msgstr "Última actualización:"
-#: ../../Zotlabs/Module/Connedit.php:922
+#: ../../Zotlabs/Module/Connedit.php:904
msgid "Details"
msgstr "Detalles"
@@ -5656,7 +5734,7 @@ msgid "Please enter a link URL:"
msgstr "Por favor, introduzca la dirección del enlace:"
#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:768
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:764
#: ../../include/conversation.php:1432
msgid "Encrypt text"
msgstr "Cifrar texto"
@@ -5690,14 +5768,14 @@ msgstr "Caducidad"
msgid "min"
msgstr "min"
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:242
-#: ../../include/conversation.php:1831 ../../include/nav.php:433
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:248
+#: ../../include/conversation.php:1831 ../../include/nav.php:401
msgid "Photos"
msgstr "Fotos"
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:237
-#: ../../Zotlabs/Storage/Browser.php:269 ../../include/conversation.php:1839
-#: ../../include/nav.php:441
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:243
+#: ../../Zotlabs/Storage/Browser.php:272 ../../include/conversation.php:1839
+#: ../../include/nav.php:409
msgid "Files"
msgstr "Ficheros"
@@ -5737,7 +5815,7 @@ msgstr "El menú se puede usar para guardar marcadores"
msgid "Submit and proceed"
msgstr "Enviar y proceder"
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2289
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2403
msgid "Menus"
msgstr "Menús"
@@ -5789,12 +5867,12 @@ msgstr "El título del menú tal como será visto por los demás"
msgid "Allow bookmarks"
msgstr "Permitir marcadores"
-#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2290
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2404
msgid "Layouts"
msgstr "Plantillas"
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:245
-#: ../../include/nav.php:208 ../../include/nav.php:312
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:251
+#: ../../include/nav.php:176 ../../include/nav.php:280
#: ../../include/help.php:68 ../../include/help.php:74
msgid "Help"
msgstr "Ayuda"
@@ -5812,20 +5890,49 @@ msgid "Download PDL file"
msgstr "Descargar el fichero PDL"
#: ../../Zotlabs/Module/Cloud.php:114
+msgid "Please refresh page"
+msgstr "Por favor, recargue la página"
+
+#: ../../Zotlabs/Module/Cloud.php:117
msgid "Unknown error"
msgstr "Error desconocido"
+#: ../../Zotlabs/Module/Email_validation.php:24
+#: ../../Zotlabs/Module/Email_resend.php:12
+msgid "Token verification failed."
+msgstr "Ha fallado el token de verificación."
+
+#: ../../Zotlabs/Module/Email_validation.php:36
+msgid "Email Verification Required"
+msgstr "Verificación obligatoria del correo electrónico"
+
+#: ../../Zotlabs/Module/Email_validation.php:37
+#, php-format
+msgid ""
+"A verification token was sent to your email address [%s]. Enter that token "
+"here to complete the account verification step. Please allow a few minutes "
+"for delivery, and check your spam folder if you do not see the message."
+msgstr "Se ha enviado un token de verificación a su dirección de correo electrónico [%s]. Ingrese ese símbolo aquí para completar el paso de verificación de cuenta. Por favor, espere unos minutos para el envío, y revise su carpeta de spam si no ve el mensaje."
+
+#: ../../Zotlabs/Module/Email_validation.php:38
+msgid "Resend Email"
+msgstr "Reenvío de correo electrónico"
+
+#: ../../Zotlabs/Module/Email_validation.php:41
+msgid "Validation token"
+msgstr "Token de validación"
+
#: ../../Zotlabs/Module/Tagger.php:48
msgid "Post not found."
msgstr "Mensaje no encontrado."
#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:160
-#: ../../include/bbcode.php:335
+#: ../../include/bbcode.php:339
msgid "post"
msgstr "la entrada"
#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
-#: ../../include/text.php:1946
+#: ../../include/text.php:2012
msgid "comment"
msgstr "el comentario"
@@ -5873,7 +5980,7 @@ msgid "Could not create privacy group."
msgstr "No se puede crear el grupo de canales"
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:143
-#: ../../include/items.php:4101
+#: ../../include/items.php:4131
msgid "Privacy group not found."
msgstr "Grupo de canales no encontrado."
@@ -6048,7 +6155,8 @@ msgstr "Personales"
msgid "Relation"
msgstr "Relación"
-#: ../../Zotlabs/Module/Profiles.php:739 ../../include/datetime.php:58
+#: ../../Zotlabs/Module/Profiles.php:739 ../../Zotlabs/Widget/Newmember.php:53
+#: ../../include/datetime.php:58
msgid "Miscellaneous"
msgstr "Varios"
@@ -6190,10 +6298,73 @@ msgid "Profile Image"
msgstr "Imagen del perfil"
#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1297
-#: ../../include/nav.php:151
+#: ../../include/nav.php:117
msgid "Edit Profiles"
msgstr "Editar perfiles"
+#: ../../Zotlabs/Module/Go.php:21
+msgid "This page is available only to site members"
+msgstr "Esta página está disponible sólo para los miembros del sitio"
+
+#: ../../Zotlabs/Module/Go.php:27
+msgid "Welcome"
+msgstr "Bienvenido/a"
+
+#: ../../Zotlabs/Module/Go.php:29
+msgid "What would you like to do?"
+msgstr "¿Qué le gustaría hacer?"
+
+#: ../../Zotlabs/Module/Go.php:31
+msgid ""
+"Please bookmark this page if you would like to return to it in the future"
+msgstr "Por favor añada esta página a sus marcadores si desea volver a ella en el futuro."
+
+#: ../../Zotlabs/Module/Go.php:35
+msgid "Upload a profile photo"
+msgstr "Subir una foto de perfil"
+
+#: ../../Zotlabs/Module/Go.php:36
+msgid "Upload a cover photo"
+msgstr "Subir una foto de portada del perfil"
+
+#: ../../Zotlabs/Module/Go.php:37
+msgid "Edit your default profile"
+msgstr "Editar su perfil por defecto"
+
+#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:43
+msgid "View friend suggestions"
+msgstr "Ver sugerencias de amistad"
+
+#: ../../Zotlabs/Module/Go.php:39 ../../Zotlabs/Widget/Newmember.php:42
+msgid "View the channel directory"
+msgstr "Ver el directorio de canales"
+
+#: ../../Zotlabs/Module/Go.php:40
+msgid "View/edit your channel settings"
+msgstr "Ver o modificar los ajustes de su canal"
+
+#: ../../Zotlabs/Module/Go.php:41
+msgid "View the site or project documentation"
+msgstr "Ver el sitio o la documentación del proyecto"
+
+#: ../../Zotlabs/Module/Go.php:42
+msgid "Visit your channel homepage"
+msgstr "Visitar la página principal de su canal"
+
+#: ../../Zotlabs/Module/Go.php:43
+msgid ""
+"View your connections and/or add somebody whose address you already know"
+msgstr "Vea sus conexiones y/o agregue a alguien cuya dirección ya conozca"
+
+#: ../../Zotlabs/Module/Go.php:44
+msgid ""
+"View your personal stream (this may be empty until you add some connections)"
+msgstr "Ver su \"stream\" personal (puede que esté vacío hasta que agregue algunas conexiones)"
+
+#: ../../Zotlabs/Module/Go.php:52
+msgid "View the public stream. Warning: this content is not moderated"
+msgstr "Ver el \"stream\" público. Advertencia: este contenido no está moderado"
+
#: ../../Zotlabs/Module/Editwebpage.php:139
msgid "Page link"
msgstr "Enlace de la página"
@@ -6206,8 +6377,8 @@ msgstr "Editar la página web"
msgid "Create a new channel"
msgstr "Crear un nuevo canal"
-#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:234
-#: ../../include/nav.php:136 ../../include/nav.php:222
+#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:240
+#: ../../include/nav.php:102 ../../include/nav.php:190
msgid "Channel Manager"
msgstr "Administración de canales"
@@ -6241,7 +6412,13 @@ msgstr "%d nuevas solicitudes de conexión"
msgid "Delegated Channel"
msgstr "Canal delegado"
-#: ../../Zotlabs/Module/Cards.php:95
+#: ../../Zotlabs/Module/Cards.php:42 ../../Zotlabs/Module/Cards.php:181
+#: ../../Zotlabs/Lib/Apps.php:230 ../../include/conversation.php:1890
+#: ../../include/features.php:114 ../../include/nav.php:458
+msgid "Cards"
+msgstr "Fichas"
+
+#: ../../Zotlabs/Module/Cards.php:99
msgid "Add Card"
msgstr "Añadir una ficha"
@@ -6249,45 +6426,45 @@ msgstr "Añadir una ficha"
msgid "This directory server requires an access token"
msgstr "El servidor de este directorio necesita un \"token\" de acceso"
-#: ../../Zotlabs/Module/Siteinfo.php:19
+#: ../../Zotlabs/Module/Siteinfo.php:18
msgid "About this site"
msgstr "Acerca de este sitio"
-#: ../../Zotlabs/Module/Siteinfo.php:20
+#: ../../Zotlabs/Module/Siteinfo.php:19
msgid "Site Name"
msgstr "Nombre del sitio"
-#: ../../Zotlabs/Module/Siteinfo.php:24
+#: ../../Zotlabs/Module/Siteinfo.php:23
msgid "Administrator"
msgstr "Administrador"
-#: ../../Zotlabs/Module/Siteinfo.php:26 ../../Zotlabs/Module/Register.php:229
+#: ../../Zotlabs/Module/Siteinfo.php:25 ../../Zotlabs/Module/Register.php:232
msgid "Terms of Service"
msgstr "Términos del servicio"
-#: ../../Zotlabs/Module/Siteinfo.php:27
+#: ../../Zotlabs/Module/Siteinfo.php:26
msgid "Software and Project information"
msgstr "Información sobre el software y el proyecto"
-#: ../../Zotlabs/Module/Siteinfo.php:28
+#: ../../Zotlabs/Module/Siteinfo.php:27
msgid "This site is powered by $Projectname"
msgstr "Este sitio funciona con $Projectname"
-#: ../../Zotlabs/Module/Siteinfo.php:29
+#: ../../Zotlabs/Module/Siteinfo.php:28
msgid ""
"Federated and decentralised networking and identity services provided by Zot"
msgstr "Servicios federados y descentralizados de identidad y redes proporcionados por Zot"
-#: ../../Zotlabs/Module/Siteinfo.php:31
+#: ../../Zotlabs/Module/Siteinfo.php:30
#, php-format
msgid "Version %s"
msgstr "Versión %s"
-#: ../../Zotlabs/Module/Siteinfo.php:32
+#: ../../Zotlabs/Module/Siteinfo.php:31
msgid "Project homepage"
msgstr "Página principal del proyecto"
-#: ../../Zotlabs/Module/Siteinfo.php:33
+#: ../../Zotlabs/Module/Siteinfo.php:32
msgid "Developer homepage"
msgstr "Página principal del desarrollador"
@@ -6328,8 +6505,8 @@ msgstr "Exportar elementos de una página web"
msgid "Export selected"
msgstr "Exportar los elementos seleccionados"
-#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:238
-#: ../../include/conversation.php:1912 ../../include/nav.php:513
+#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:244
+#: ../../include/conversation.php:1912 ../../include/nav.php:481
msgid "Webpages"
msgstr "Páginas web"
@@ -6489,7 +6666,7 @@ msgid "*"
msgstr "*"
#: ../../Zotlabs/Module/Sources.php:96
-#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:228
+#: ../../Zotlabs/Widget/Settings_menu.php:125 ../../include/features.php:274
msgid "Channel Sources"
msgstr "Orígenes de los contenidos del canal"
@@ -6545,88 +6722,88 @@ msgstr "Fuente eliminada"
msgid "Unable to remove source."
msgstr "No se puede eliminar la fuente."
-#: ../../Zotlabs/Module/Like.php:22
+#: ../../Zotlabs/Module/Like.php:54
msgid "Like/Dislike"
msgstr "Me gusta/No me gusta"
-#: ../../Zotlabs/Module/Like.php:27
+#: ../../Zotlabs/Module/Like.php:59
msgid "This action is restricted to members."
msgstr "Esta acción está restringida solo para miembros."
-#: ../../Zotlabs/Module/Like.php:28
+#: ../../Zotlabs/Module/Like.php:60
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar."
-#: ../../Zotlabs/Module/Like.php:108 ../../Zotlabs/Module/Like.php:134
-#: ../../Zotlabs/Module/Like.php:172
+#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
+#: ../../Zotlabs/Module/Like.php:173
msgid "Invalid request."
msgstr "Solicitud incorrecta."
-#: ../../Zotlabs/Module/Like.php:120 ../../include/conversation.php:122
+#: ../../Zotlabs/Module/Like.php:121 ../../include/conversation.php:122
msgid "channel"
msgstr "el canal"
-#: ../../Zotlabs/Module/Like.php:149
+#: ../../Zotlabs/Module/Like.php:150
msgid "thing"
msgstr "elemento"
-#: ../../Zotlabs/Module/Like.php:195
+#: ../../Zotlabs/Module/Like.php:196
msgid "Channel unavailable."
msgstr "Canal no disponible."
-#: ../../Zotlabs/Module/Like.php:243
+#: ../../Zotlabs/Module/Like.php:244
msgid "Previous action reversed."
msgstr "Acción anterior revocada."
-#: ../../Zotlabs/Module/Like.php:435 ../../addon/diaspora/Receiver.php:1462
-#: ../../addon/pubcrawl/as.php:1330 ../../include/conversation.php:160
+#: ../../Zotlabs/Module/Like.php:436 ../../addon/diaspora/Receiver.php:1547
+#: ../../addon/pubcrawl/as.php:1394 ../../include/conversation.php:160
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "A %1$s le gusta %3$s de %2$s"
-#: ../../Zotlabs/Module/Like.php:437 ../../addon/pubcrawl/as.php:1332
+#: ../../Zotlabs/Module/Like.php:438 ../../addon/pubcrawl/as.php:1396
#: ../../include/conversation.php:163
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "A %1$s no le gusta %3$s de %2$s"
-#: ../../Zotlabs/Module/Like.php:439
+#: ../../Zotlabs/Module/Like.php:440
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s está de acuerdo"
-#: ../../Zotlabs/Module/Like.php:441
+#: ../../Zotlabs/Module/Like.php:442
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s no está de acuerdo"
-#: ../../Zotlabs/Module/Like.php:443
+#: ../../Zotlabs/Module/Like.php:444
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s se abstiene"
-#: ../../Zotlabs/Module/Like.php:445
+#: ../../Zotlabs/Module/Like.php:446 ../../addon/diaspora/Receiver.php:2031
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s participa"
-#: ../../Zotlabs/Module/Like.php:447
+#: ../../Zotlabs/Module/Like.php:448 ../../addon/diaspora/Receiver.php:2033
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s no participa"
-#: ../../Zotlabs/Module/Like.php:449
+#: ../../Zotlabs/Module/Like.php:450 ../../addon/diaspora/Receiver.php:2035
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%3$s de %2$s: %1$s quizá participe"
-#: ../../Zotlabs/Module/Like.php:561
+#: ../../Zotlabs/Module/Like.php:562
msgid "Action completed."
msgstr "Acción completada."
-#: ../../Zotlabs/Module/Like.php:562
+#: ../../Zotlabs/Module/Like.php:563
msgid "Thank you."
msgstr "Gracias."
@@ -6649,12 +6826,12 @@ msgstr "Estado:"
msgid "Homepage: "
msgstr "Página personal:"
-#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1564
+#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1565
msgid "Age:"
msgstr "Edad:"
#: ../../Zotlabs/Module/Directory.php:319 ../../include/channel.php:1392
-#: ../../include/event.php:53 ../../include/event.php:85
+#: ../../include/event.php:54 ../../include/event.php:86
msgid "Location:"
msgstr "Ubicación:"
@@ -6662,11 +6839,11 @@ msgstr "Ubicación:"
msgid "Description:"
msgstr "Descripción:"
-#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1580
+#: ../../Zotlabs/Module/Directory.php:330 ../../include/channel.php:1581
msgid "Hometown:"
msgstr "Lugar de nacimiento:"
-#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1588
+#: ../../Zotlabs/Module/Directory.php:332 ../../include/channel.php:1589
msgid "About:"
msgstr "Sobre mí:"
@@ -6906,19 +7083,19 @@ msgstr "Software"
msgid "Rate"
msgstr "Valorar"
-#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:263
+#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:267
msgid "webpage"
msgstr "página web"
-#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:269
+#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:273
msgid "block"
msgstr "bloque"
-#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:266
+#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:270
msgid "layout"
msgstr "plantilla"
-#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:272
+#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:276
msgid "menu"
msgstr "menú"
@@ -6978,21 +7155,21 @@ msgstr "Por favor, confirme que acepta los Términos del servicio. El registro h
msgid "Passwords do not match."
msgstr "Las contraseñas no coinciden."
-#: ../../Zotlabs/Module/Register.php:127 ../../Zotlabs/Module/Register.php:137
+#: ../../Zotlabs/Module/Register.php:132
+msgid "Registration successful. Continue to create your first channel..."
+msgstr "Registro exitoso. Continúe creando tu primer canal..."
+
+#: ../../Zotlabs/Module/Register.php:135
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo."
-#: ../../Zotlabs/Module/Register.php:135
-msgid "Registration successful. Continue to create your first channel..."
-msgstr "Registro exitoso. Continúe creando tu primer canal..."
-
-#: ../../Zotlabs/Module/Register.php:144
+#: ../../Zotlabs/Module/Register.php:142
msgid "Your registration is pending approval by the site owner."
msgstr "Su registro está pendiente de aprobación por el propietario del sitio."
-#: ../../Zotlabs/Module/Register.php:147
+#: ../../Zotlabs/Module/Register.php:145
msgid "Your registration can not be processed."
msgstr "Su registro no puede ser procesado."
@@ -7014,97 +7191,97 @@ msgid ""
"Please try again tomorrow."
msgstr "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana."
-#: ../../Zotlabs/Module/Register.php:235
+#: ../../Zotlabs/Module/Register.php:238
#, php-format
msgid "I accept the %s for this website"
msgstr "Acepto los %s de este sitio"
-#: ../../Zotlabs/Module/Register.php:241
+#: ../../Zotlabs/Module/Register.php:245
#, php-format
msgid "I am over %s years of age and accept the %s for this website"
msgstr "Tengo más de %s años de edad y acepto los %s de este sitio web"
-#: ../../Zotlabs/Module/Register.php:245
+#: ../../Zotlabs/Module/Register.php:250
msgid "Your email address"
msgstr "Su dirección de correo electrónico"
-#: ../../Zotlabs/Module/Register.php:246
+#: ../../Zotlabs/Module/Register.php:251
msgid "Choose a password"
msgstr "Elija una contraseña"
-#: ../../Zotlabs/Module/Register.php:247
+#: ../../Zotlabs/Module/Register.php:252
msgid "Please re-enter your password"
msgstr "Por favor, vuelva a escribir su contraseña"
-#: ../../Zotlabs/Module/Register.php:248
+#: ../../Zotlabs/Module/Register.php:253
msgid "Please enter your invitation code"
msgstr "Por favor, introduzca el código de su invitación"
-#: ../../Zotlabs/Module/Register.php:253
+#: ../../Zotlabs/Module/Register.php:258
msgid "no"
msgstr "no"
-#: ../../Zotlabs/Module/Register.php:253
+#: ../../Zotlabs/Module/Register.php:258
msgid "yes"
msgstr "sí"
-#: ../../Zotlabs/Module/Register.php:268
+#: ../../Zotlabs/Module/Register.php:274
msgid "Membership on this site is by invitation only."
msgstr "Para registrarse en este sitio es necesaria una invitación."
-#: ../../Zotlabs/Module/Register.php:280 ../../boot.php:1645
-#: ../../include/nav.php:196
+#: ../../Zotlabs/Module/Register.php:286 ../../boot.php:1563
+#: ../../include/nav.php:164
msgid "Register"
msgstr "Registrarse"
-#: ../../Zotlabs/Module/Register.php:281
+#: ../../Zotlabs/Module/Register.php:287
msgid ""
-"This site may require email verification after submitting this form. If you "
-"are returned to a login page, please check your email for instructions."
-msgstr "Este sitio puede requerir una verificación de correo electrónico después de enviar este formulario. Si es devuelto a una página de inicio de sesión, compruebe su email para recibir y leer las instrucciones."
+"This site requires email verification. After completing this form, please "
+"check your email for further instructions."
+msgstr "Este sitio requiere verificación por correo electrónico. Después de completar este formulario, por favor revise su correo electrónico para más instrucciones."
#: ../../Zotlabs/Module/Cover_photo.php:136
#: ../../Zotlabs/Module/Cover_photo.php:186
msgid "Cover Photos"
msgstr "Imágenes de portada del perfil"
-#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4478
+#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4508
msgid "female"
msgstr "mujer"
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4479
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4509
#, php-format
msgid "%1$s updated her %2$s"
msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4480
+#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4510
msgid "male"
msgstr "hombre"
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4481
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4511
#, php-format
msgid "%1$s updated his %2$s"
msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4483
+#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4513
#, php-format
msgid "%1$s updated their %2$s"
msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2053
+#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:2059
msgid "cover photo"
msgstr "Imagen de portada del perfil"
#: ../../Zotlabs/Module/Cover_photo.php:360
-msgid "Upload Cover Photo"
-msgstr "Subir imagen de portada del perfil"
+msgid "Change Cover Photo"
+msgstr "Cambiar la foto de portada del perfil"
#: ../../Zotlabs/Module/Help.php:23
msgid "Documentation Search"
msgstr "Búsqueda de Documentación"
#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1821
-#: ../../include/nav.php:423
+#: ../../include/nav.php:391
msgid "About"
msgstr "Mi perfil"
@@ -7128,11 +7305,11 @@ msgstr "Documentación de $Projectname"
msgid "Contents"
msgstr "Contenidos"
-#: ../../Zotlabs/Module/Display.php:349
+#: ../../Zotlabs/Module/Display.php:351
msgid "Article"
msgstr "Artículo"
-#: ../../Zotlabs/Module/Display.php:401
+#: ../../Zotlabs/Module/Display.php:403
msgid "Item has been removed."
msgstr "Se ha eliminado el elemento."
@@ -7148,44 +7325,44 @@ msgstr "Eliminar etiqueta del elemento."
msgid "Select a tag to remove: "
msgstr "Seleccionar una etiqueta para eliminar:"
-#: ../../Zotlabs/Module/Network.php:97
+#: ../../Zotlabs/Module/Network.php:100
msgid "No such group"
msgstr "No se encuentra el grupo"
-#: ../../Zotlabs/Module/Network.php:137
+#: ../../Zotlabs/Module/Network.php:142
msgid "No such channel"
msgstr "No se encuentra el canal"
-#: ../../Zotlabs/Module/Network.php:142
+#: ../../Zotlabs/Module/Network.php:147
msgid "forum"
msgstr "foro"
-#: ../../Zotlabs/Module/Network.php:154
+#: ../../Zotlabs/Module/Network.php:159
msgid "Search Results For:"
msgstr "Buscar resultados para:"
-#: ../../Zotlabs/Module/Network.php:222
+#: ../../Zotlabs/Module/Network.php:230
msgid "Privacy group is empty"
msgstr "El grupo de canales está vacío"
-#: ../../Zotlabs/Module/Network.php:231
+#: ../../Zotlabs/Module/Network.php:240
msgid "Privacy group: "
msgstr "Grupo de canales: "
-#: ../../Zotlabs/Module/Network.php:257
+#: ../../Zotlabs/Module/Network.php:268
msgid "Invalid connection."
msgstr "Conexión no válida."
-#: ../../Zotlabs/Module/Network.php:276 ../../addon/redred/redred.php:65
+#: ../../Zotlabs/Module/Network.php:289 ../../addon/redred/redred.php:65
msgid "Invalid channel."
msgstr "El canal no es válido."
-#: ../../Zotlabs/Module/Acl.php:358
+#: ../../Zotlabs/Module/Acl.php:361
msgid "network"
msgstr "red"
#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82
-#: ../../addon/opensearch/opensearch.php:42
+#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42
msgid "$Projectname"
msgstr "$Projectname"
@@ -7235,7 +7412,7 @@ msgid "Show URL to this file"
msgstr "Mostrar la dirección de este fichero"
#: ../../Zotlabs/Module/Filestorage.php:163
-#: ../../Zotlabs/Storage/Browser.php:394
+#: ../../Zotlabs/Storage/Browser.php:397
msgid "Show in your contacts shared folder"
msgstr "Mostrar en la carpeta compartida con sus contactos"
@@ -7251,16 +7428,24 @@ msgstr "Ninguna conexión en común."
msgid "View Common Connections"
msgstr "Ver las conexiones comunes"
+#: ../../Zotlabs/Module/Email_resend.php:30
+msgid "Email verification resent"
+msgstr "Reenvío del email de verificación"
+
+#: ../../Zotlabs/Module/Email_resend.php:33
+msgid "Unable to resend email verification message."
+msgstr "No se puede reenviar el mensaje de verificación por correo electrónico."
+
#: ../../Zotlabs/Module/Viewconnections.php:65
msgid "No connections."
msgstr "Sin conexiones."
-#: ../../Zotlabs/Module/Viewconnections.php:78
+#: ../../Zotlabs/Module/Viewconnections.php:83
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Visitar el perfil de %s [%s]"
-#: ../../Zotlabs/Module/Viewconnections.php:107
+#: ../../Zotlabs/Module/Viewconnections.php:113
msgid "View Connections"
msgstr "Ver conexiones"
@@ -7369,7 +7554,7 @@ msgid ""
"Password reset failed."
msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1673
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1591
msgid "Password Reset"
msgstr "Restablecer la contraseña"
@@ -7443,143 +7628,143 @@ msgstr "4. Experto - Puedo escribir código informático"
msgid "5. Wizard - I probably know more than you do"
msgstr "5. Colaborador - probablemente sé más que tú"
-#: ../../Zotlabs/Lib/Apps.php:225
+#: ../../Zotlabs/Lib/Apps.php:231
msgid "Site Admin"
msgstr "Administrador del sitio"
-#: ../../Zotlabs/Lib/Apps.php:226 ../../addon/buglink/buglink.php:16
+#: ../../Zotlabs/Lib/Apps.php:232 ../../addon/buglink/buglink.php:16
msgid "Report Bug"
msgstr "Informe de errores"
-#: ../../Zotlabs/Lib/Apps.php:227
+#: ../../Zotlabs/Lib/Apps.php:233
msgid "View Bookmarks"
msgstr "Ver los marcadores"
-#: ../../Zotlabs/Lib/Apps.php:228
+#: ../../Zotlabs/Lib/Apps.php:234
msgid "My Chatrooms"
msgstr "Mis salas de chat"
-#: ../../Zotlabs/Lib/Apps.php:230
+#: ../../Zotlabs/Lib/Apps.php:236
msgid "Firefox Share"
msgstr "Servicio de compartición de Firefox"
-#: ../../Zotlabs/Lib/Apps.php:231
+#: ../../Zotlabs/Lib/Apps.php:237
msgid "Remote Diagnostics"
msgstr "Diagnóstico remoto"
-#: ../../Zotlabs/Lib/Apps.php:232 ../../include/features.php:352
+#: ../../Zotlabs/Lib/Apps.php:238 ../../include/features.php:390
msgid "Suggest Channels"
msgstr "Sugerir canales"
-#: ../../Zotlabs/Lib/Apps.php:233 ../../boot.php:1664
-#: ../../include/nav.php:160 ../../include/nav.php:164
+#: ../../Zotlabs/Lib/Apps.php:239 ../../boot.php:1582
+#: ../../include/nav.php:126 ../../include/nav.php:130
msgid "Login"
msgstr "Iniciar sesión"
-#: ../../Zotlabs/Lib/Apps.php:235 ../../include/nav.php:105
+#: ../../Zotlabs/Lib/Apps.php:241
msgid "Activity"
msgstr "Actividad"
-#: ../../Zotlabs/Lib/Apps.php:239 ../../include/conversation.php:1928
-#: ../../include/features.php:95 ../../include/nav.php:529
+#: ../../Zotlabs/Lib/Apps.php:245 ../../include/conversation.php:1928
+#: ../../include/features.php:87 ../../include/nav.php:497
msgid "Wiki"
msgstr "Wiki"
-#: ../../Zotlabs/Lib/Apps.php:240 ../../include/nav.php:109
+#: ../../Zotlabs/Lib/Apps.php:246
msgid "Channel Home"
msgstr "Mi canal"
-#: ../../Zotlabs/Lib/Apps.php:243 ../../include/conversation.php:1850
-#: ../../include/conversation.php:1853 ../../include/nav.php:131
+#: ../../Zotlabs/Lib/Apps.php:249 ../../include/conversation.php:1850
+#: ../../include/conversation.php:1853
msgid "Events"
msgstr "Eventos"
-#: ../../Zotlabs/Lib/Apps.php:244
+#: ../../Zotlabs/Lib/Apps.php:250
msgid "Directory"
msgstr "Directorio"
-#: ../../Zotlabs/Lib/Apps.php:246 ../../include/nav.php:123
+#: ../../Zotlabs/Lib/Apps.php:252
msgid "Mail"
msgstr "Correo"
-#: ../../Zotlabs/Lib/Apps.php:249
+#: ../../Zotlabs/Lib/Apps.php:255
msgid "Chat"
msgstr "Chat"
-#: ../../Zotlabs/Lib/Apps.php:251
+#: ../../Zotlabs/Lib/Apps.php:257
msgid "Probe"
msgstr "Probar"
-#: ../../Zotlabs/Lib/Apps.php:252
+#: ../../Zotlabs/Lib/Apps.php:258
msgid "Suggest"
msgstr "Sugerir"
-#: ../../Zotlabs/Lib/Apps.php:253
+#: ../../Zotlabs/Lib/Apps.php:259
msgid "Random Channel"
msgstr "Canal aleatorio"
-#: ../../Zotlabs/Lib/Apps.php:254
+#: ../../Zotlabs/Lib/Apps.php:260
msgid "Invite"
msgstr "Invitar"
-#: ../../Zotlabs/Lib/Apps.php:255 ../../Zotlabs/Widget/Admin.php:26
+#: ../../Zotlabs/Lib/Apps.php:261 ../../Zotlabs/Widget/Admin.php:26
msgid "Features"
msgstr "Funcionalidades"
-#: ../../Zotlabs/Lib/Apps.php:256 ../../addon/openid/MysqlProvider.php:69
+#: ../../Zotlabs/Lib/Apps.php:262 ../../addon/openid/MysqlProvider.php:69
msgid "Language"
msgstr "Idioma"
-#: ../../Zotlabs/Lib/Apps.php:257
+#: ../../Zotlabs/Lib/Apps.php:263
msgid "Post"
msgstr "Publicación"
-#: ../../Zotlabs/Lib/Apps.php:258 ../../addon/openid/MysqlProvider.php:58
+#: ../../Zotlabs/Lib/Apps.php:264 ../../addon/openid/MysqlProvider.php:58
#: ../../addon/openid/MysqlProvider.php:59
#: ../../addon/openid/MysqlProvider.php:60
msgid "Profile Photo"
msgstr "Foto del perfil"
-#: ../../Zotlabs/Lib/Apps.php:397
+#: ../../Zotlabs/Lib/Apps.php:407
msgid "Purchase"
msgstr "Comprar"
-#: ../../Zotlabs/Lib/Apps.php:401
+#: ../../Zotlabs/Lib/Apps.php:411
msgid "Undelete"
msgstr "Recuperar"
-#: ../../Zotlabs/Lib/Apps.php:409
+#: ../../Zotlabs/Lib/Apps.php:419
msgid "Add to app-tray"
msgstr "Añadir a la bandeja de aplicaciones"
-#: ../../Zotlabs/Lib/Apps.php:410
+#: ../../Zotlabs/Lib/Apps.php:420
msgid "Remove from app-tray"
msgstr "Quitar de la bandeja de aplicaciones"
-#: ../../Zotlabs/Lib/Apps.php:411
+#: ../../Zotlabs/Lib/Apps.php:421
msgid "Pin to navbar"
msgstr "Fijar en la barra de navegación"
-#: ../../Zotlabs/Lib/Apps.php:412
+#: ../../Zotlabs/Lib/Apps.php:422
msgid "Unpin from navbar"
msgstr "Quitar de la barra de navegación"
-#: ../../Zotlabs/Lib/Permcat.php:58
+#: ../../Zotlabs/Lib/Permcat.php:82
msgctxt "permcat"
msgid "default"
msgstr "por defecto"
-#: ../../Zotlabs/Lib/Permcat.php:96
+#: ../../Zotlabs/Lib/Permcat.php:133
msgctxt "permcat"
msgid "follower"
msgstr "seguidor"
-#: ../../Zotlabs/Lib/Permcat.php:100
+#: ../../Zotlabs/Lib/Permcat.php:137
msgctxt "permcat"
msgid "contributor"
msgstr "contribuidor"
-#: ../../Zotlabs/Lib/Permcat.php:104
+#: ../../Zotlabs/Lib/Permcat.php:141
msgctxt "permcat"
msgid "publisher"
msgstr "editor"
@@ -7648,18 +7833,18 @@ msgid "Message"
msgstr "Mensaje"
#: ../../Zotlabs/Lib/NativeWikiPage.php:597
-#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:674
-#: ../../include/bbcode.php:822
+#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:706
+#: ../../include/bbcode.php:865
msgid "Different viewers will see this text differently"
msgstr "Visitantes diferentes verán este texto de forma distinta"
#: ../../Zotlabs/Lib/PermissionDescription.php:34
-#: ../../include/acl_selectors.php:128
+#: ../../include/acl_selectors.php:33
msgid "Visible to your default audience"
msgstr "Visible para su público predeterminado."
#: ../../Zotlabs/Lib/PermissionDescription.php:107
-#: ../../include/acl_selectors.php:201
+#: ../../include/acl_selectors.php:106
msgid "Only me"
msgstr "Sólo yo"
@@ -7740,8 +7925,8 @@ msgstr "La sala está llena."
msgid "$Projectname Notification"
msgstr "Notificación de $Projectname"
-#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:283
-#: ../../addon/diaspora/util.php:296 ../../addon/diaspora/p.php:48
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:308
+#: ../../addon/diaspora/util.php:321 ../../addon/diaspora/p.php:48
msgid "$projectname"
msgstr "$projectname"
@@ -7754,219 +7939,258 @@ msgstr "Gracias,"
msgid "%s Administrator"
msgstr "%s Administrador"
-#: ../../Zotlabs/Lib/Enotify.php:116
+#: ../../Zotlabs/Lib/Enotify.php:66
+#, php-format
+msgid "This email was sent by %1$s at %2$s."
+msgstr "Este email ha sido enviado por %1$s a %2$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:67
+#, php-format
+msgid ""
+"To stop receiving these messages, please adjust your Notification Settings "
+"at %s"
+msgstr "Para dejar de recibir estos mensajes, por favor ajuste la configuración de notificación en %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:68
+#, php-format
+msgid "To stop receiving these messages, please adjust your %s."
+msgstr "Para dejar de recibir estos mensajes, por favor, ajuste su %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:120
#, php-format
msgid "%s <!item_type!>"
msgstr "%s <!item_type!>"
-#: ../../Zotlabs/Lib/Enotify.php:120
+#: ../../Zotlabs/Lib/Enotify.php:124
#, php-format
msgid "[$Projectname:Notify] New mail received at %s"
msgstr "[$Projectname:Aviso] Nuevo correo recibido en %s"
-#: ../../Zotlabs/Lib/Enotify.php:122
+#: ../../Zotlabs/Lib/Enotify.php:126
#, php-format
msgid "%1$s, %2$s sent you a new private message at %3$s."
msgstr "%1$s, %2$s le ha enviado un nuevo mensaje privado en %3$s."
-#: ../../Zotlabs/Lib/Enotify.php:123
+#: ../../Zotlabs/Lib/Enotify.php:127
#, php-format
msgid "%1$s sent you %2$s."
msgstr "%1$s le ha enviado %2$s."
-#: ../../Zotlabs/Lib/Enotify.php:123
+#: ../../Zotlabs/Lib/Enotify.php:127
msgid "a private message"
msgstr "un mensaje privado"
-#: ../../Zotlabs/Lib/Enotify.php:124
+#: ../../Zotlabs/Lib/Enotify.php:128
#, php-format
msgid "Please visit %s to view and/or reply to your private messages."
msgstr "Por favor visite %s para ver y/o responder a su mensaje privado."
-#: ../../Zotlabs/Lib/Enotify.php:184
+#: ../../Zotlabs/Lib/Enotify.php:141
+msgid "commented on"
+msgstr "ha comentado sobre"
+
+#: ../../Zotlabs/Lib/Enotify.php:152
+msgid "liked"
+msgstr "ha gustado de "
+
+#: ../../Zotlabs/Lib/Enotify.php:155
+msgid "disliked"
+msgstr "no ha gustado de "
+
+#: ../../Zotlabs/Lib/Enotify.php:198
#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%4$s[/zrl]"
+msgid "%1$s, %2$s %3$s [zrl=%4$s]a %5$s[/zrl]"
+msgstr "%1$s, %2$s %3$s[zrl=%4$s]un %5$s[/zrl]"
-#: ../../Zotlabs/Lib/Enotify.php:192
+#: ../../Zotlabs/Lib/Enotify.php:207
#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%5$s de %4$s[/zrl] "
+msgid "%1$s, %2$s %3$s [zrl=%4$s]%5$s's %6$s[/zrl]"
+msgstr "%1$s, %2$s %3$s [zrl=%4$s] %6$sde %5$s[/zrl]"
-#: ../../Zotlabs/Lib/Enotify.php:201
+#: ../../Zotlabs/Lib/Enotify.php:217
#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%4$s creado por usted[/zrl]"
+msgid "%1$s, %2$s %3$s [zrl=%4$s]your %5$s[/zrl]"
+msgstr "%1$s, %2$s %3$s [zrl=%4$s] ]su %5$s [/zrl]"
-#: ../../Zotlabs/Lib/Enotify.php:213
+#: ../../Zotlabs/Lib/Enotify.php:230
#, php-format
msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s"
msgstr "[$Projectname:Aviso] Comentario moderado en la conversación #%1$d por %2$s"
-#: ../../Zotlabs/Lib/Enotify.php:215
+#: ../../Zotlabs/Lib/Enotify.php:232
#, php-format
msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s"
msgstr "[$Projectname:Aviso] Nuevo comentario de %2$s en la conversación #%1$d"
-#: ../../Zotlabs/Lib/Enotify.php:216
+#: ../../Zotlabs/Lib/Enotify.php:233
#, php-format
msgid "%1$s, %2$s commented on an item/conversation you have been following."
msgstr "%1$s, %2$s ha comentado un elemento/conversación que ha estado siguiendo."
-#: ../../Zotlabs/Lib/Enotify.php:219 ../../Zotlabs/Lib/Enotify.php:301
-#: ../../Zotlabs/Lib/Enotify.php:318 ../../Zotlabs/Lib/Enotify.php:344
-#: ../../Zotlabs/Lib/Enotify.php:362 ../../Zotlabs/Lib/Enotify.php:376
+#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:318
+#: ../../Zotlabs/Lib/Enotify.php:335 ../../Zotlabs/Lib/Enotify.php:361
+#: ../../Zotlabs/Lib/Enotify.php:379 ../../Zotlabs/Lib/Enotify.php:393
#, php-format
msgid "Please visit %s to view and/or reply to the conversation."
msgstr "Para ver o comentar la conversación, visite %s"
-#: ../../Zotlabs/Lib/Enotify.php:223 ../../Zotlabs/Lib/Enotify.php:224
+#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241
#, php-format
msgid "Please visit %s to approve or reject this comment."
msgstr "Por favor, visite %spara aprobar o rechazar este comentario."
-#: ../../Zotlabs/Lib/Enotify.php:282
+#: ../../Zotlabs/Lib/Enotify.php:299
#, php-format
msgid "%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]"
msgstr "%1$s, %2$s ha mostrado su agrado por [zrl=%3$s]%4$s creado por usted[/zrl]"
-#: ../../Zotlabs/Lib/Enotify.php:297
+#: ../../Zotlabs/Lib/Enotify.php:314
#, php-format
msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s"
msgstr "[$Projectname:Aviso] \"Me gusta\" de %2$s en la conversación #%1$d"
-#: ../../Zotlabs/Lib/Enotify.php:298
+#: ../../Zotlabs/Lib/Enotify.php:315
#, php-format
msgid "%1$s, %2$s liked an item/conversation you created."
msgstr "%1$s, %2$s ha mostrado su agrado por un elemento o conversación que ha creado usted."
-#: ../../Zotlabs/Lib/Enotify.php:309
+#: ../../Zotlabs/Lib/Enotify.php:326
#, php-format
msgid "[$Projectname:Notify] %s posted to your profile wall"
msgstr "[$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")"
-#: ../../Zotlabs/Lib/Enotify.php:311
+#: ../../Zotlabs/Lib/Enotify.php:328
#, php-format
msgid "%1$s, %2$s posted to your profile wall at %3$s"
msgstr "%1$s, %2$s ha publicado en su página del perfil en %3$s"
-#: ../../Zotlabs/Lib/Enotify.php:313
+#: ../../Zotlabs/Lib/Enotify.php:330
#, php-format
msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
msgstr "%1$s, %2$s ha publicado en [zrl=%3$s]su página del perfil[/zrl]"
-#: ../../Zotlabs/Lib/Enotify.php:337
+#: ../../Zotlabs/Lib/Enotify.php:354
#, php-format
msgid "[$Projectname:Notify] %s tagged you"
msgstr "[$Projectname:Aviso] %s le ha etiquetado"
-#: ../../Zotlabs/Lib/Enotify.php:338
+#: ../../Zotlabs/Lib/Enotify.php:355
#, php-format
msgid "%1$s, %2$s tagged you at %3$s"
msgstr "%1$s, %2$s le ha etiquetado en %3$s"
-#: ../../Zotlabs/Lib/Enotify.php:339
+#: ../../Zotlabs/Lib/Enotify.php:356
#, php-format
msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
msgstr "%1$s, %2$s [zrl=%3$s]le etiquetó[/zrl]."
-#: ../../Zotlabs/Lib/Enotify.php:351
+#: ../../Zotlabs/Lib/Enotify.php:368
#, php-format
msgid "[$Projectname:Notify] %1$s poked you"
msgstr "[$Projectname:Aviso] %1$s le ha dado un toque"
-#: ../../Zotlabs/Lib/Enotify.php:352
+#: ../../Zotlabs/Lib/Enotify.php:369
#, php-format
msgid "%1$s, %2$s poked you at %3$s"
msgstr "%1$s, %2$s le ha dado un toque en %3$s"
-#: ../../Zotlabs/Lib/Enotify.php:353
+#: ../../Zotlabs/Lib/Enotify.php:370
#, php-format
msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
msgstr "%1$s, %2$s [zrl=%2$s]le ha dado un toque[/zrl]."
-#: ../../Zotlabs/Lib/Enotify.php:369
+#: ../../Zotlabs/Lib/Enotify.php:386
#, php-format
msgid "[$Projectname:Notify] %s tagged your post"
msgstr "[$Projectname:Aviso] %s ha etiquetado su entrada"
-#: ../../Zotlabs/Lib/Enotify.php:370
+#: ../../Zotlabs/Lib/Enotify.php:387
#, php-format
msgid "%1$s, %2$s tagged your post at %3$s"
msgstr "%1$s, %2$s ha etiquetado su publicación en %3$s"
-#: ../../Zotlabs/Lib/Enotify.php:371
+#: ../../Zotlabs/Lib/Enotify.php:388
#, php-format
msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
msgstr "%1$s, %2$s ha etiquetado [zrl=%3$s]su publicación[/zrl]"
-#: ../../Zotlabs/Lib/Enotify.php:383
+#: ../../Zotlabs/Lib/Enotify.php:400
msgid "[$Projectname:Notify] Introduction received"
msgstr "[$Projectname:Aviso] Ha recibido una solicitud de conexión"
-#: ../../Zotlabs/Lib/Enotify.php:384
+#: ../../Zotlabs/Lib/Enotify.php:401
#, php-format
msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
msgstr "%1$s, ha recibido una nueva solicitud de conexión de '%2$s' en %3$s"
-#: ../../Zotlabs/Lib/Enotify.php:385
+#: ../../Zotlabs/Lib/Enotify.php:402
#, php-format
msgid ""
"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
msgstr "%1$s, ha recibido [zrl=%2$s]una nueva solicitud de conexión[/zrl] de %3$s."
-#: ../../Zotlabs/Lib/Enotify.php:389 ../../Zotlabs/Lib/Enotify.php:408
+#: ../../Zotlabs/Lib/Enotify.php:406 ../../Zotlabs/Lib/Enotify.php:425
#, php-format
msgid "You may visit their profile at %s"
msgstr "Puede visitar su perfil en %s"
-#: ../../Zotlabs/Lib/Enotify.php:391
+#: ../../Zotlabs/Lib/Enotify.php:408
#, php-format
msgid "Please visit %s to approve or reject the connection request."
msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión."
-#: ../../Zotlabs/Lib/Enotify.php:398
+#: ../../Zotlabs/Lib/Enotify.php:415
msgid "[$Projectname:Notify] Friend suggestion received"
msgstr "[$Projectname:Aviso] Ha recibido una sugerencia de conexión"
-#: ../../Zotlabs/Lib/Enotify.php:399
+#: ../../Zotlabs/Lib/Enotify.php:416
#, php-format
msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
msgstr "%1$s, ha recibido una sugerencia de conexión de '%2$s' en %3$s"
-#: ../../Zotlabs/Lib/Enotify.php:400
+#: ../../Zotlabs/Lib/Enotify.php:417
#, php-format
msgid ""
"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
"%4$s."
msgstr "%1$s, ha recibido [zrl=%2$s]una sugerencia de conexión[/zrl] para %3$s de %4$s."
-#: ../../Zotlabs/Lib/Enotify.php:406
+#: ../../Zotlabs/Lib/Enotify.php:423
msgid "Name:"
msgstr "Nombre:"
-#: ../../Zotlabs/Lib/Enotify.php:407
+#: ../../Zotlabs/Lib/Enotify.php:424
msgid "Photo:"
msgstr "Foto:"
-#: ../../Zotlabs/Lib/Enotify.php:410
+#: ../../Zotlabs/Lib/Enotify.php:427
#, php-format
msgid "Please visit %s to approve or reject the suggestion."
msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia."
-#: ../../Zotlabs/Lib/Enotify.php:629
+#: ../../Zotlabs/Lib/Enotify.php:647
msgid "[$Projectname:Notify]"
msgstr "[$Projectname:Aviso]"
-#: ../../Zotlabs/Lib/Enotify.php:793
+#: ../../Zotlabs/Lib/Enotify.php:815
msgid "created a new post"
msgstr "ha creado una nueva entrada"
-#: ../../Zotlabs/Lib/Enotify.php:794
+#: ../../Zotlabs/Lib/Enotify.php:816
#, php-format
msgid "commented on %s's post"
msgstr "ha comentado la entrada de %s"
+#: ../../Zotlabs/Lib/Enotify.php:823
+#, php-format
+msgid "edited a post dated %s"
+msgstr "ha editado una entrada fechada el%s"
+
+#: ../../Zotlabs/Lib/Enotify.php:827
+#, php-format
+msgid "edited a comment dated %s"
+msgstr "ha editado un comentario fechado el %s"
+
#: ../../Zotlabs/Lib/NativeWiki.php:151
msgid "Wiki updated successfully"
msgstr "El wiki se ha actualizado con éxito"
@@ -7975,12 +8199,12 @@ msgstr "El wiki se ha actualizado con éxito"
msgid "Wiki files deleted successfully"
msgstr "Se han borrado con éxito los ficheros del wiki"
-#: ../../Zotlabs/Lib/DB_Upgrade.php:95
+#: ../../Zotlabs/Lib/DB_Upgrade.php:83
#, php-format
msgid "Update Error at %s"
msgstr "Error de actualización en %s"
-#: ../../Zotlabs/Lib/DB_Upgrade.php:101
+#: ../../Zotlabs/Lib/DB_Upgrade.php:89
#, php-format
msgid "Update %s failed. See error logs."
msgstr "La actualización %s ha fallado. Mire el informe de errores."
@@ -8045,11 +8269,11 @@ msgstr "Firma de mensaje incorrecta"
msgid "Add Tag"
msgstr "Añadir etiqueta"
-#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:506
+#: ../../Zotlabs/Lib/ThreadItem.php:281 ../../include/taxonomy.php:510
msgid "like"
msgstr "me gusta"
-#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:507
+#: ../../Zotlabs/Lib/ThreadItem.php:282 ../../include/taxonomy.php:511
msgid "dislike"
msgstr "no me gusta"
@@ -8142,51 +8366,51 @@ msgstr "Esta es una previsualización sin guardar"
msgid "%s show all"
msgstr "%s mostrar todo"
-#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1377
+#: ../../Zotlabs/Lib/ThreadItem.php:751 ../../include/conversation.php:1377
msgid "Bold"
msgstr "Negrita"
-#: ../../Zotlabs/Lib/ThreadItem.php:756 ../../include/conversation.php:1378
+#: ../../Zotlabs/Lib/ThreadItem.php:752 ../../include/conversation.php:1378
msgid "Italic"
msgstr "Itálico "
-#: ../../Zotlabs/Lib/ThreadItem.php:757 ../../include/conversation.php:1379
+#: ../../Zotlabs/Lib/ThreadItem.php:753 ../../include/conversation.php:1379
msgid "Underline"
msgstr "Subrayar"
-#: ../../Zotlabs/Lib/ThreadItem.php:758 ../../include/conversation.php:1380
+#: ../../Zotlabs/Lib/ThreadItem.php:754 ../../include/conversation.php:1380
msgid "Quote"
msgstr "Citar"
-#: ../../Zotlabs/Lib/ThreadItem.php:759 ../../include/conversation.php:1381
+#: ../../Zotlabs/Lib/ThreadItem.php:755 ../../include/conversation.php:1381
msgid "Code"
msgstr "Código"
-#: ../../Zotlabs/Lib/ThreadItem.php:760
+#: ../../Zotlabs/Lib/ThreadItem.php:756
msgid "Image"
msgstr "Imagen"
-#: ../../Zotlabs/Lib/ThreadItem.php:761
+#: ../../Zotlabs/Lib/ThreadItem.php:757
msgid "Attach File"
msgstr "Fichero adjunto"
-#: ../../Zotlabs/Lib/ThreadItem.php:762
+#: ../../Zotlabs/Lib/ThreadItem.php:758
msgid "Insert Link"
msgstr "Insertar enlace"
-#: ../../Zotlabs/Lib/ThreadItem.php:763
+#: ../../Zotlabs/Lib/ThreadItem.php:759
msgid "Video"
msgstr "Vídeo"
-#: ../../Zotlabs/Lib/ThreadItem.php:773
+#: ../../Zotlabs/Lib/ThreadItem.php:769
msgid "Your full name (required)"
msgstr "Su nombre completo (requerido)"
-#: ../../Zotlabs/Lib/ThreadItem.php:774
+#: ../../Zotlabs/Lib/ThreadItem.php:770
msgid "Your email address (required)"
msgstr "Su dirección de correo electrónico (requerido)"
-#: ../../Zotlabs/Lib/ThreadItem.php:775
+#: ../../Zotlabs/Lib/ThreadItem.php:771
msgid "Your website URL (optional)"
msgstr "La URL de su sitio web (opcional)"
@@ -8202,11 +8426,11 @@ msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión
msgid "Welcome %s. Remote authentication successful."
msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."
-#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:284
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:287
msgid "parent"
msgstr "padre"
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2707
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2821
msgid "Collection"
msgstr "Colección"
@@ -8218,8 +8442,8 @@ msgstr "Principal"
msgid "Addressbook"
msgstr "Libreta de direcciones"
-#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:452
-#: ../../include/nav.php:455
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:420
+#: ../../include/nav.php:423
msgid "Calendar"
msgstr "Calendario"
@@ -8231,41 +8455,41 @@ msgstr "Programar bandeja de entrada"
msgid "Schedule Outbox"
msgstr "Programar bandeja de salida"
-#: ../../Zotlabs/Storage/Browser.php:270
+#: ../../Zotlabs/Storage/Browser.php:273
msgid "Total"
msgstr "Total"
-#: ../../Zotlabs/Storage/Browser.php:272
+#: ../../Zotlabs/Storage/Browser.php:275
msgid "Shared"
msgstr "Compartido"
-#: ../../Zotlabs/Storage/Browser.php:350
+#: ../../Zotlabs/Storage/Browser.php:353
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Está usando %1$s de su espacio disponible para ficheros."
-#: ../../Zotlabs/Storage/Browser.php:355
+#: ../../Zotlabs/Storage/Browser.php:358
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:366
+#: ../../Zotlabs/Storage/Browser.php:369
msgid "WARNING:"
msgstr "ATENCIÓN: "
-#: ../../Zotlabs/Storage/Browser.php:378
+#: ../../Zotlabs/Storage/Browser.php:381
msgid "Create new folder"
msgstr "Crear nueva carpeta"
-#: ../../Zotlabs/Storage/Browser.php:380
+#: ../../Zotlabs/Storage/Browser.php:383
msgid "Upload file"
msgstr "Subir fichero"
-#: ../../Zotlabs/Storage/Browser.php:393
+#: ../../Zotlabs/Storage/Browser.php:396
msgid "Drop files here to immediately upload"
msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata"
-#: ../../Zotlabs/Widget/Forums.php:99
+#: ../../Zotlabs/Widget/Forums.php:100
msgid "Forums"
msgstr "Foros"
@@ -8348,8 +8572,8 @@ msgstr "Seleccionar una agenda para importarla"
#: ../../Zotlabs/Widget/Appcategories.php:40
#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:97
#: ../../include/contact_widgets.php:141 ../../include/contact_widgets.php:186
-#: ../../include/taxonomy.php:337 ../../include/taxonomy.php:419
-#: ../../include/taxonomy.php:439 ../../include/taxonomy.php:460
+#: ../../include/taxonomy.php:344 ../../include/taxonomy.php:426
+#: ../../include/taxonomy.php:446 ../../include/taxonomy.php:467
msgid "Categories"
msgstr "Temas"
@@ -8391,21 +8615,21 @@ msgstr "Menú de correo privado"
msgid "Combined View"
msgstr "Vista combinada"
-#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:126
+#: ../../Zotlabs/Widget/Mailmenu.php:20
msgid "Inbox"
msgstr "Bandeja de entrada"
-#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:127
+#: ../../Zotlabs/Widget/Mailmenu.php:25
msgid "Outbox"
msgstr "Bandeja de salida"
-#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:128
+#: ../../Zotlabs/Widget/Mailmenu.php:30
msgid "New Message"
msgstr "Nuevo mensaje"
#: ../../Zotlabs/Widget/Chatroom_list.php:16
#: ../../include/conversation.php:1864 ../../include/conversation.php:1867
-#: ../../include/nav.php:466 ../../include/nav.php:469
+#: ../../include/nav.php:434 ../../include/nav.php:437
msgid "Chatrooms"
msgstr "Salas de chat"
@@ -8487,7 +8711,7 @@ msgstr "foto/imagen"
msgid "Remove term"
msgstr "Eliminar término"
-#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:316
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:354
msgid "Saved Searches"
msgstr "Búsquedas guardadas"
@@ -8512,7 +8736,7 @@ msgstr "Páginas del wiki"
msgid "Page name"
msgstr "Nombre de la página"
-#: ../../Zotlabs/Widget/Affinity.php:49
+#: ../../Zotlabs/Widget/Affinity.php:45
msgid "Refresh"
msgstr "Recargar"
@@ -8529,7 +8753,7 @@ msgid "See more..."
msgstr "Ver más..."
#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
-#: ../../include/features.php:414
+#: ../../include/features.php:443
msgid "Saved Folders"
msgstr "Carpetas guardadas"
@@ -8537,6 +8761,54 @@ msgstr "Carpetas guardadas"
msgid "Click to show more"
msgstr "Hacer clic para ver más"
+#: ../../Zotlabs/Widget/Newmember.php:33
+msgid "Profile Creation"
+msgstr "Creación de perfiles"
+
+#: ../../Zotlabs/Widget/Newmember.php:35
+msgid "Upload profile photo"
+msgstr "Cargar la foto del perfil"
+
+#: ../../Zotlabs/Widget/Newmember.php:36
+msgid "Upload cover photo"
+msgstr "Cargar la foto de portada del perfil"
+
+#: ../../Zotlabs/Widget/Newmember.php:37 ../../include/nav.php:119
+msgid "Edit your profile"
+msgstr "Editar su perfil"
+
+#: ../../Zotlabs/Widget/Newmember.php:40
+msgid "Find and Connect with others"
+msgstr "Encontrar y conectarse con otros"
+
+#: ../../Zotlabs/Widget/Newmember.php:44
+msgid "Manage your connections"
+msgstr "Gestionar sus conexiones"
+
+#: ../../Zotlabs/Widget/Newmember.php:47
+msgid "Communicate"
+msgstr "Comunicarse"
+
+#: ../../Zotlabs/Widget/Newmember.php:49
+msgid "View your channel homepage"
+msgstr "Ver la página principal de su canal"
+
+#: ../../Zotlabs/Widget/Newmember.php:50
+msgid "View your network stream"
+msgstr "Ver el \"stream\" de su red"
+
+#: ../../Zotlabs/Widget/Newmember.php:56
+msgid "Documentation"
+msgstr "Documentación"
+
+#: ../../Zotlabs/Widget/Newmember.php:67
+msgid "View public stream. Warning: not moderated"
+msgstr "Ver el \"stream\" público. Advertencia: no está moderado"
+
+#: ../../Zotlabs/Widget/Newmember.php:71
+msgid "New Member Links"
+msgstr "Enlaces para nuevos miembros"
+
#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
msgid "Member registrations waiting for confirmation"
msgstr "Inscripciones de nuevos miembros pendientes de aprobación"
@@ -8549,7 +8821,7 @@ msgstr "Examinar la cola"
msgid "DB updates"
msgstr "Actualizaciones de la base de datos"
-#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:231
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:199
msgid "Admin"
msgstr "Administrador"
@@ -8570,8 +8842,8 @@ msgid "Additional features"
msgstr "Funcionalidades"
#: ../../Zotlabs/Widget/Settings_menu.php:57
-msgid "Feature/Addon settings"
-msgstr "Complementos"
+msgid "Addon settings"
+msgstr "Ajustes de los complementos"
#: ../../Zotlabs/Widget/Settings_menu.php:63
msgid "Display settings"
@@ -8589,7 +8861,7 @@ msgstr "Exportar canal"
msgid "Connected apps"
msgstr "Aplicaciones (apps) conectadas"
-#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:168
+#: ../../Zotlabs/Widget/Settings_menu.php:100 ../../include/features.php:231
msgid "Permission Groups"
msgstr "Grupos de permisos"
@@ -8609,7 +8881,7 @@ msgstr "Nueva actividad en la red"
msgid "New Network Activity Notifications"
msgstr "Avisos de nueva actividad en la red"
-#: ../../Zotlabs/Widget/Notifications.php:20 ../../include/nav.php:106
+#: ../../Zotlabs/Widget/Notifications.php:20
msgid "View your network activity"
msgstr "Ver su actividad en la red"
@@ -8618,148 +8890,150 @@ msgid "Mark all notifications read"
msgstr "Marcar todas las notificaciones como leídas"
#: ../../Zotlabs/Widget/Notifications.php:26
-#: ../../Zotlabs/Widget/Notifications.php:44
-#: ../../Zotlabs/Widget/Notifications.php:139
+#: ../../Zotlabs/Widget/Notifications.php:45
+#: ../../Zotlabs/Widget/Notifications.php:141
msgid "Show new posts only"
msgstr "Mostrar solo las entradas nuevas"
-#: ../../Zotlabs/Widget/Notifications.php:34
+#: ../../Zotlabs/Widget/Notifications.php:27
+#: ../../Zotlabs/Widget/Notifications.php:46
+#: ../../Zotlabs/Widget/Notifications.php:142
+msgid "Filter by name"
+msgstr "Filtrar por nombre"
+
+#: ../../Zotlabs/Widget/Notifications.php:35
msgid "New Home Activity"
msgstr "Nueva actividad en su página principal"
-#: ../../Zotlabs/Widget/Notifications.php:35
+#: ../../Zotlabs/Widget/Notifications.php:36
msgid "New Home Activity Notifications"
msgstr "Avisos de nueva actividad en su página principal"
-#: ../../Zotlabs/Widget/Notifications.php:38
+#: ../../Zotlabs/Widget/Notifications.php:39
msgid "View your home activity"
msgstr "Ver su actividad en su página principal"
-#: ../../Zotlabs/Widget/Notifications.php:41
-#: ../../Zotlabs/Widget/Notifications.php:136
+#: ../../Zotlabs/Widget/Notifications.php:42
+#: ../../Zotlabs/Widget/Notifications.php:138
msgid "Mark all notifications seen"
msgstr "Marcar todas las notificaciones como vistas"
-#: ../../Zotlabs/Widget/Notifications.php:52
+#: ../../Zotlabs/Widget/Notifications.php:54
msgid "New Mails"
msgstr "Nuevos mensajes de correo"
-#: ../../Zotlabs/Widget/Notifications.php:53
+#: ../../Zotlabs/Widget/Notifications.php:55
msgid "New Mails Notifications"
msgstr "Avisos de nuevos mensajes de correo"
-#: ../../Zotlabs/Widget/Notifications.php:56
+#: ../../Zotlabs/Widget/Notifications.php:58
msgid "View your private mails"
msgstr "Ver sus correos privados"
-#: ../../Zotlabs/Widget/Notifications.php:59
+#: ../../Zotlabs/Widget/Notifications.php:61
msgid "Mark all messages seen"
msgstr "Marcar todos los mensajes como vistos"
-#: ../../Zotlabs/Widget/Notifications.php:67
+#: ../../Zotlabs/Widget/Notifications.php:69
msgid "New Events"
msgstr "Eventos nuevos"
-#: ../../Zotlabs/Widget/Notifications.php:68
+#: ../../Zotlabs/Widget/Notifications.php:70
msgid "New Events Notifications"
msgstr "Avisos de nuevos eventos"
-#: ../../Zotlabs/Widget/Notifications.php:71 ../../include/nav.php:132
+#: ../../Zotlabs/Widget/Notifications.php:73
msgid "View events"
msgstr "Ver los eventos"
-#: ../../Zotlabs/Widget/Notifications.php:74 ../../include/nav.php:133
+#: ../../Zotlabs/Widget/Notifications.php:76
msgid "Mark all events seen"
msgstr "Marcar todos los eventos como leidos"
-#: ../../Zotlabs/Widget/Notifications.php:83
+#: ../../Zotlabs/Widget/Notifications.php:85
msgid "New Connections Notifications"
msgstr "Avisos de nuevas conexiones"
-#: ../../Zotlabs/Widget/Notifications.php:86
+#: ../../Zotlabs/Widget/Notifications.php:88
msgid "View all connections"
msgstr "Ver todas las conexiones"
-#: ../../Zotlabs/Widget/Notifications.php:94
+#: ../../Zotlabs/Widget/Notifications.php:96
msgid "New Files"
msgstr "Ficheros nuevos"
-#: ../../Zotlabs/Widget/Notifications.php:95
+#: ../../Zotlabs/Widget/Notifications.php:97
msgid "New Files Notifications"
msgstr "Avisos de nuevos ficheros"
-#: ../../Zotlabs/Widget/Notifications.php:102
-#: ../../Zotlabs/Widget/Notifications.php:103 ../../include/nav.php:119
+#: ../../Zotlabs/Widget/Notifications.php:104
+#: ../../Zotlabs/Widget/Notifications.php:105
msgid "Notices"
msgstr "Avisos"
-#: ../../Zotlabs/Widget/Notifications.php:106
+#: ../../Zotlabs/Widget/Notifications.php:108
msgid "View all notices"
msgstr "Ver todos los avisos"
-#: ../../Zotlabs/Widget/Notifications.php:109
+#: ../../Zotlabs/Widget/Notifications.php:111
msgid "Mark all notices seen"
msgstr "Marcar como leídos todos los avisos"
-#: ../../Zotlabs/Widget/Notifications.php:119
+#: ../../Zotlabs/Widget/Notifications.php:121
msgid "New Registrations"
msgstr "Registros nuevos"
-#: ../../Zotlabs/Widget/Notifications.php:120
+#: ../../Zotlabs/Widget/Notifications.php:122
msgid "New Registrations Notifications"
msgstr "Notificaciones de nuevos registros"
-#: ../../Zotlabs/Widget/Notifications.php:130
+#: ../../Zotlabs/Widget/Notifications.php:132
msgid "Public Stream Notifications"
msgstr "Avisos del \"stream\" público"
-#: ../../Zotlabs/Widget/Notifications.php:133
+#: ../../Zotlabs/Widget/Notifications.php:135
msgid "View the public stream"
msgstr "Ver el \"stream\" público"
-#: ../../Zotlabs/Widget/Notifications.php:147 ../../include/nav.php:316
-msgid "Loading"
-msgstr "Cargando"
+#: ../../Zotlabs/Widget/Notifications.php:150
+msgid "Sorry, you have got no notifications at the moment"
+msgstr "Lo sentimos, por el momento no ha recibido ninguna notificación"
#: ../../util/nconfig.php:34
msgid "Source channel not found."
msgstr "No se ha encontrado el canal de origen."
-#: ../../boot.php:1644
+#: ../../boot.php:1562
msgid "Create an account to access services and applications"
msgstr "Crear una cuenta para acceder a los servicios y aplicaciones"
-#: ../../boot.php:1663 ../../include/nav.php:145 ../../include/nav.php:174
-#: ../../include/nav.php:191
+#: ../../boot.php:1581 ../../include/nav.php:111 ../../include/nav.php:140
+#: ../../include/nav.php:159
msgid "Logout"
msgstr "Finalizar sesión"
-#: ../../boot.php:1667
+#: ../../boot.php:1585
msgid "Login/Email"
msgstr "Inicio de sesión / Correo electrónico"
-#: ../../boot.php:1668
+#: ../../boot.php:1586
msgid "Password"
msgstr "Contraseña"
-#: ../../boot.php:1669
+#: ../../boot.php:1587
msgid "Remember me"
msgstr "Recordarme"
-#: ../../boot.php:1672
+#: ../../boot.php:1590
msgid "Forgot your password?"
msgstr "¿Olvidó su contraseña?"
-#: ../../boot.php:2257
-msgid "toggle mobile"
-msgstr "cambiar a modo móvil"
-
-#: ../../boot.php:2419
+#: ../../boot.php:2347
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr "[$Projectname] Error SSL del sitio web en %s"
-#: ../../boot.php:2424
+#: ../../boot.php:2352
msgid "Website SSL certificate is not valid. Please correct."
msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."
@@ -8772,7 +9046,7 @@ msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s"
msgid "Cron/Scheduled tasks not running."
msgstr "Las tareas del Planificador/Cron no están funcionando."
-#: ../../boot.php:2546 ../../include/datetime.php:292
+#: ../../boot.php:2474 ../../include/datetime.php:232
msgid "never"
msgstr "nunca"
@@ -8897,7 +9171,7 @@ msgid "Errors encountered deleting database table "
msgstr "Errores encontrados al eliminar la tabla de la base de datos"
#: ../../addon/rendezvous/rendezvous.php:95
-#: ../../addon/twitter/twitter.php:773
+#: ../../addon/twitter/twitter.php:779
msgid "Submit Settings"
msgstr "Enviar los ajustes"
@@ -9100,7 +9374,7 @@ msgid "Page to load after image selection."
msgstr "Página para cargar después de la selección de imágenes."
#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1301
-#: ../../include/nav.php:153
+#: ../../include/nav.php:119
msgid "Edit Profile"
msgstr "Editar el perfil"
@@ -9157,6 +9431,11 @@ msgstr "Subida por: "
msgid "Drawn by: "
msgstr "Creada por: "
+#: ../../addon/openclipatar/openclipatar.php:182
+#: ../../addon/openclipatar/openclipatar.php:194
+msgid "Use this image"
+msgstr "Usar esta imagen"
+
#: ../../addon/openclipatar/openclipatar.php:192
msgid "Or select from a free OpenClipart.org image:"
msgstr "O seleccionar una imagen gratuita de OpenClipart.org: "
@@ -9173,10 +9452,6 @@ msgstr "Error desconocido. Por favor, inténtelo otra vez."
msgid "Profile photo updated successfully."
msgstr "Se ha actualizado con éxito la foto de perfil."
-#: ../../addon/zotvi/zot6.php:25 ../../include/zot.php:4051
-msgid "invalid target signature"
-msgstr "La firma recibida no es válida"
-
#: ../../addon/adultphotoflag/adultphotoflag.php:24
msgid "Flag Adult Photos"
msgstr "Indicador (\"flag\") de fotos de adultos"
@@ -9273,7 +9548,7 @@ msgstr "Se han guardado los ajustes de NSFW."
msgid "Possible adult content"
msgstr "Posible contenido para adultos"
-#: ../../addon/nsfw/nsfw.php:211
+#: ../../addon/nsfw/nsfw.php:222
#, php-format
msgid "%s - view"
msgstr "ver - %s"
@@ -9330,6 +9605,15 @@ msgstr "Publicar en Dreamwidth de forma predeterminada"
msgid "Dreamwidth Post Settings"
msgstr "Ajustes de publicación en Dreamwidth"
+#: ../../addon/notifyadmin/notifyadmin.php:34
+msgid "New registration"
+msgstr "Nuevo registro"
+
+#: ../../addon/notifyadmin/notifyadmin.php:42
+#, php-format
+msgid "Message sent to %s. New account registration: %s"
+msgstr "Mensaje enviado a %s. Registro de una nueva cuenta: %s"
+
#: ../../addon/dirstats/dirstats.php:94
msgid "Hubzilla Directory Stats"
msgstr "Estadísticas de directorio de Hubzilla"
@@ -9578,17 +9862,17 @@ msgstr "Fecha de nacimiento"
msgid "OpenID protocol error. No ID returned."
msgstr "Error de protocolo OpenID. No se recuperó ninguna ID."
-#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:289
+#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:290
msgid "Login failed."
msgstr "El acceso ha fallado."
#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1480
+#: ../../include/selectors.php:66 ../../include/channel.php:1481
msgid "Male"
msgstr "Hombre"
#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49
-#: ../../include/selectors.php:66 ../../include/channel.php:1478
+#: ../../include/selectors.php:66 ../../include/channel.php:1479
msgid "Female"
msgstr "Mujer"
@@ -9775,39 +10059,39 @@ msgstr "una declaración de amor eterno"
msgid "declared undying love for"
msgstr "ha declarado amor eterno a"
-#: ../../addon/diaspora/diaspora.php:772
+#: ../../addon/diaspora/diaspora.php:778
msgid "Diaspora Protocol Settings updated."
msgstr "Los ajustes del protocolo de Diaspora se han actualizado."
-#: ../../addon/diaspora/diaspora.php:791
+#: ../../addon/diaspora/diaspora.php:797
msgid ""
"The Diaspora protocol does not support location independence. Connections "
"you make within that network may be unreachable from alternate channel "
"locations."
msgstr "El protocolo de Diaspora no admite la independencia de la ubicación. Las conexiones que realice dentro de esa red pueden ser inaccesibles desde ubicaciones de canales alternativos."
-#: ../../addon/diaspora/diaspora.php:794
+#: ../../addon/diaspora/diaspora.php:800
msgid "Enable the Diaspora protocol for this channel"
msgstr "Activar el protocolo de Diaspora para este canal"
-#: ../../addon/diaspora/diaspora.php:798
+#: ../../addon/diaspora/diaspora.php:804
msgid "Allow any Diaspora member to comment on your public posts"
msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas"
-#: ../../addon/diaspora/diaspora.php:802
+#: ../../addon/diaspora/diaspora.php:808
msgid "Prevent your hashtags from being redirected to other sites"
msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios "
-#: ../../addon/diaspora/diaspora.php:806
+#: ../../addon/diaspora/diaspora.php:812
msgid ""
"Sign and forward posts and comments with no existing Diaspora signature"
msgstr "Firmar y enviar entradas y comentarios sin firma de Diaspora"
-#: ../../addon/diaspora/diaspora.php:811
+#: ../../addon/diaspora/diaspora.php:817
msgid "Followed hashtags (comma separated, do not include the #)"
msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)"
-#: ../../addon/diaspora/diaspora.php:816
+#: ../../addon/diaspora/diaspora.php:822
msgid "Diaspora Protocol Settings"
msgstr "Ajustes del protocolo de Diaspora"
@@ -9936,66 +10220,6 @@ msgstr "Modificado desde la fecha yyyy-mm-dd"
msgid "Until modified date yyyy-mm-dd"
msgstr "Modificado hasta la fecha yyyy-mm-dd"
-#: ../../addon/gravatar/gravatar.php:123
-msgid "generic profile image"
-msgstr "imagen del perfil general"
-
-#: ../../addon/gravatar/gravatar.php:124
-msgid "random geometric pattern"
-msgstr "patrón geométrico aleatorio"
-
-#: ../../addon/gravatar/gravatar.php:125
-msgid "monster face"
-msgstr "cara de monstruo"
-
-#: ../../addon/gravatar/gravatar.php:126
-msgid "computer generated face"
-msgstr "cara generada por ordenador"
-
-#: ../../addon/gravatar/gravatar.php:127
-msgid "retro arcade style face"
-msgstr "cara de estilo retro arcade"
-
-#: ../../addon/gravatar/gravatar.php:128
-msgid "Hub default profile photo"
-msgstr "Foto del perfil por defecto del hub"
-
-#: ../../addon/gravatar/gravatar.php:143
-msgid "Information"
-msgstr "Información"
-
-#: ../../addon/gravatar/gravatar.php:143
-msgid ""
-"Libravatar addon is installed, too. Please disable Libravatar addon or this "
-"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
-"nothing was found at Libravatar."
-msgstr "El addon Libravatar también está instalado. Por favor deshabilite el addon de Libravatar o este addon de Gravatar.<br> El addon de Libravatar volverá a Gravatar si no se encuentra nada en Libravatar."
-
-#: ../../addon/gravatar/gravatar.php:150
-#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:91
-msgid "Save Settings"
-msgstr "Guardar ajustes"
-
-#: ../../addon/gravatar/gravatar.php:151
-msgid "Default avatar image"
-msgstr "Imagen del avatar por defecto"
-
-#: ../../addon/gravatar/gravatar.php:151
-msgid "Select default avatar image if none was found at Gravatar. See README"
-msgstr "Selecciona la imagen de avatar predeterminada si no se encontró ninguna en Gravatar. Ver README"
-
-#: ../../addon/gravatar/gravatar.php:152
-msgid "Rating of images"
-msgstr "Valoración de las imágenes"
-
-#: ../../addon/gravatar/gravatar.php:152
-msgid "Select the appropriate avatar rating for your site. See README"
-msgstr "Seleccione la valoración adecuada del avatar para su sitio. Ver README"
-
-#: ../../addon/gravatar/gravatar.php:165
-msgid "Gravatar settings updated."
-msgstr "Se han actualizado los ajustes de Gravatar."
-
#: ../../addon/visage/visage.php:93
msgid "Recent Channel/Profile Viewers"
msgstr "Visitantes recientes del canal o perfil"
@@ -10061,6 +10285,10 @@ msgstr "Prueba de correo"
msgid "Message subject"
msgstr "Asunto del mensaje"
+#: ../../addon/mdpost/mdpost.php:41
+msgid "Use markdown for editing posts"
+msgstr "Usar markdown para editar las entradas"
+
#: ../../addon/openstreetmap/openstreetmap.php:146
msgid "View Larger"
msgstr "Ver más grande"
@@ -10143,7 +10371,7 @@ msgid "Hubzilla to Friendica Post Settings"
msgstr "Ajustes de publicación de Hubzilla a Friendica"
#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1397
-#: ../../include/channel.php:1567
+#: ../../include/channel.php:1568
msgid "Status:"
msgstr "Estado:"
@@ -10308,31 +10536,31 @@ msgstr "Nombre de inicio de sesión en Friendica"
msgid "Friendica Login Password"
msgstr "Contraseña de inicio de sesión en Friendica"
-#: ../../addon/pubcrawl/as.php:1077 ../../addon/pubcrawl/as.php:1164
-#: ../../addon/pubcrawl/as.php:1339 ../../include/network.php:1768
+#: ../../addon/pubcrawl/as.php:1101 ../../addon/pubcrawl/as.php:1228
+#: ../../addon/pubcrawl/as.php:1403 ../../include/network.php:1774
msgid "ActivityPub"
msgstr "ActivityPub"
-#: ../../addon/pubcrawl/pubcrawl.php:1033
+#: ../../addon/pubcrawl/pubcrawl.php:1034
msgid "ActivityPub Protocol Settings updated."
msgstr "Se han actualizado los ajustes del protocolo ActivityPub."
-#: ../../addon/pubcrawl/pubcrawl.php:1042
+#: ../../addon/pubcrawl/pubcrawl.php:1043
msgid ""
"The ActivityPub protocol does not support location independence. Connections"
" you make within that network may be unreachable from alternate channel "
"locations."
msgstr "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos."
-#: ../../addon/pubcrawl/pubcrawl.php:1045
+#: ../../addon/pubcrawl/pubcrawl.php:1046
msgid "Enable the ActivityPub protocol for this channel"
msgstr "Activar el protocolo ActivityPub para este canal"
-#: ../../addon/pubcrawl/pubcrawl.php:1048
+#: ../../addon/pubcrawl/pubcrawl.php:1049
msgid "Send multi-media HTML articles"
msgstr "Enviar artículos multimedia en HTML"
-#: ../../addon/pubcrawl/pubcrawl.php:1048
+#: ../../addon/pubcrawl/pubcrawl.php:1049
msgid "Not supported by some microblog services such as Mastodon"
msgstr "No soportado por algunos servicios de microblog como Mastodon"
@@ -10642,7 +10870,7 @@ msgstr "La API actual de GNU social es "
msgid "Cancel GNU social Connection"
msgstr "Cancelar la conexión de GNU social"
-#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:232
+#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:233
msgid "Currently connected to: "
msgstr "Actualmente está conectado a: "
@@ -10674,7 +10902,7 @@ msgid ""
"account by default"
msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta GNU-social asociada de forma predeterminada"
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:255
+#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:261
msgid "Clear OAuth configuration"
msgstr "Limpiar la configuración de OAuth"
@@ -10702,39 +10930,39 @@ msgstr "Generador QR"
msgid "Enter some text"
msgstr "Escribir algún texto"
-#: ../../addon/chess/chess.php:278 ../../addon/chess/chess.php:465
+#: ../../addon/chess/chess.php:353 ../../addon/chess/chess.php:542
msgid "Invalid game."
msgstr "Juego no válido."
-#: ../../addon/chess/chess.php:284 ../../addon/chess/chess.php:471
+#: ../../addon/chess/chess.php:359 ../../addon/chess/chess.php:582
msgid "You are not a player in this game."
msgstr "Usted no participa en este juego."
-#: ../../addon/chess/chess.php:340
+#: ../../addon/chess/chess.php:415
msgid "You must be a local channel to create a game."
msgstr "Debe ser un canal local para crear un juego"
-#: ../../addon/chess/chess.php:358
+#: ../../addon/chess/chess.php:433
msgid "You must select one opponent that is not yourself."
msgstr "Debe seleccionar un oponente que no sea usted mismo."
-#: ../../addon/chess/chess.php:367
-msgid "You must select white or black."
-msgstr "Debe elegir blancas o negras."
+#: ../../addon/chess/chess.php:444
+msgid "Random color chosen."
+msgstr "Elegido un color aleatorio."
-#: ../../addon/chess/chess.php:375
+#: ../../addon/chess/chess.php:452
msgid "Error creating new game."
msgstr "Error al crear un nuevo juego."
-#: ../../addon/chess/chess.php:409 ../../include/channel.php:1152
+#: ../../addon/chess/chess.php:486 ../../include/channel.php:1152
msgid "Requested channel is not available."
msgstr "El canal solicitado no está disponible."
-#: ../../addon/chess/chess.php:423
+#: ../../addon/chess/chess.php:500
msgid "You must select a local channel /chess/channelname"
msgstr "Debe seleccionar un canal local /chess/nombredelcanal"
-#: ../../addon/chess/chess.php:969
+#: ../../addon/chess/chess.php:1066
msgid "Enable notifications"
msgstr "Habilitar notificaciones"
@@ -10742,17 +10970,17 @@ msgstr "Habilitar notificaciones"
msgid "Post to Twitter"
msgstr "Publicar en Twitter"
-#: ../../addon/twitter/twitter.php:154
+#: ../../addon/twitter/twitter.php:155
msgid "Twitter settings updated."
msgstr "Se han actualizado los ajustes de Twitter."
-#: ../../addon/twitter/twitter.php:183
+#: ../../addon/twitter/twitter.php:184
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio."
-#: ../../addon/twitter/twitter.php:205
+#: ../../addon/twitter/twitter.php:206
msgid ""
"At this Hubzilla instance the Twitter plugin was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
@@ -10761,15 +10989,15 @@ msgid ""
" be posted to Twitter."
msgstr "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter."
-#: ../../addon/twitter/twitter.php:207
+#: ../../addon/twitter/twitter.php:208
msgid "Log in with Twitter"
msgstr "Iniciar sesión en Twitter"
-#: ../../addon/twitter/twitter.php:210
+#: ../../addon/twitter/twitter.php:211
msgid "Copy the PIN from Twitter here"
msgstr "Copiar aquí el PIN de Twitter"
-#: ../../addon/twitter/twitter.php:237
+#: ../../addon/twitter/twitter.php:238
msgid ""
"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -10777,27 +11005,35 @@ msgid ""
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido."
-#: ../../addon/twitter/twitter.php:242
+#: ../../addon/twitter/twitter.php:243
msgid "Allow posting to Twitter"
msgstr "Permitir la publicación en Twitter"
-#: ../../addon/twitter/twitter.php:242
+#: ../../addon/twitter/twitter.php:243
msgid ""
"If enabled your public postings can be posted to the associated Twitter "
"account"
msgstr "Si está activado, sus entradas públicas se pueden publicar en la cuenta de Twitter asociada"
-#: ../../addon/twitter/twitter.php:246
+#: ../../addon/twitter/twitter.php:247
+msgid "Twitter post length"
+msgstr "Longitud del mensaje en Twitter"
+
+#: ../../addon/twitter/twitter.php:247
+msgid "Maximum tweet length"
+msgstr "Longitud máxima del tweet"
+
+#: ../../addon/twitter/twitter.php:252
msgid "Send public postings to Twitter by default"
msgstr "Enviar mensajes públicos a Twitter de forma predeterminada"
-#: ../../addon/twitter/twitter.php:246
+#: ../../addon/twitter/twitter.php:252
msgid ""
"If enabled your public postings will be posted to the associated Twitter "
"account by default"
msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada."
-#: ../../addon/twitter/twitter.php:264
+#: ../../addon/twitter/twitter.php:270
msgid "Twitter Post Settings"
msgstr "Ajustes de publicación en Twitter"
@@ -11021,8 +11257,8 @@ msgstr "Compartir identidad extendida"
#: ../../addon/sendzid/sendzid.php:26
msgid ""
"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
-msgstr "Compartir su identidad con todos los sitios web en Internet. Cuando se inhabilita, la identidad sólo se comparte con los sitios de la matriz."
+"identity is only shared with $Projectname sites."
+msgstr "Compartir su identidad con todos los sitios web en Internet. Cuando está deshabilitado, la identidad sólo se comparte con sitios de $Projectname."
#: ../../addon/tictac/tictac.php:21
msgid "Three Dimensional Tic-Tac-Toe"
@@ -11405,11 +11641,11 @@ msgstr "Transexual"
msgid "Hermaphrodite"
msgstr "Hermafrodita"
-#: ../../include/selectors.php:49 ../../include/channel.php:1484
+#: ../../include/selectors.php:49 ../../include/channel.php:1485
msgid "Neuter"
msgstr "Neutral"
-#: ../../include/selectors.php:49 ../../include/channel.php:1486
+#: ../../include/selectors.php:49 ../../include/channel.php:1487
msgid "Non-specific"
msgstr "No especificado"
@@ -11609,8 +11845,8 @@ msgstr "%1$s ahora está conectado/a con %2$s"
msgid "%1$s poked %2$s"
msgstr "%1$s ha dado un toque a %2$s"
-#: ../../include/conversation.php:251 ../../include/text.php:1104
-#: ../../include/text.php:1109
+#: ../../include/conversation.php:251 ../../include/text.php:1129
+#: ../../include/text.php:1133
msgid "poked"
msgstr "ha dado un toque a"
@@ -11812,32 +12048,32 @@ msgstr "Correo basura"
msgid "Posts flagged as SPAM"
msgstr "Publicaciones marcadas como basura"
-#: ../../include/conversation.php:1811 ../../include/nav.php:413
+#: ../../include/conversation.php:1811 ../../include/nav.php:381
msgid "Status Messages and Posts"
msgstr "Mensajes de estado y publicaciones"
-#: ../../include/conversation.php:1824 ../../include/nav.php:426
+#: ../../include/conversation.php:1824 ../../include/nav.php:394
msgid "Profile Details"
msgstr "Detalles del perfil"
-#: ../../include/conversation.php:1834 ../../include/nav.php:436
+#: ../../include/conversation.php:1834 ../../include/nav.php:404
#: ../../include/photos.php:655
msgid "Photo Albums"
msgstr "Ãlbumes de fotos"
-#: ../../include/conversation.php:1842 ../../include/nav.php:444
+#: ../../include/conversation.php:1842 ../../include/nav.php:412
msgid "Files and Storage"
msgstr "Ficheros y repositorio"
-#: ../../include/conversation.php:1879 ../../include/nav.php:479
+#: ../../include/conversation.php:1879 ../../include/nav.php:447
msgid "Bookmarks"
msgstr "Marcadores"
-#: ../../include/conversation.php:1882 ../../include/nav.php:482
+#: ../../include/conversation.php:1882 ../../include/nav.php:450
msgid "Saved Bookmarks"
msgstr "Marcadores guardados"
-#: ../../include/conversation.php:1893 ../../include/nav.php:493
+#: ../../include/conversation.php:1893 ../../include/nav.php:461
msgid "View Cards"
msgstr "Ver las fichas"
@@ -11845,11 +12081,11 @@ msgstr "Ver las fichas"
msgid "articles"
msgstr "artículos"
-#: ../../include/conversation.php:1904 ../../include/nav.php:504
+#: ../../include/conversation.php:1904 ../../include/nav.php:472
msgid "View Articles"
msgstr "Ver los artículos"
-#: ../../include/conversation.php:1915 ../../include/nav.php:516
+#: ../../include/conversation.php:1915 ../../include/nav.php:484
msgid "View Webpages"
msgstr "Ver páginas web"
@@ -11921,368 +12157,368 @@ msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."
-#: ../../include/import.php:105
+#: ../../include/import.php:106
msgid "Cloned channel not found. Import failed."
msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado."
-#: ../../include/text.php:478
+#: ../../include/text.php:492
msgid "prev"
msgstr "anterior"
-#: ../../include/text.php:480
+#: ../../include/text.php:494
msgid "first"
msgstr "primera"
-#: ../../include/text.php:509
+#: ../../include/text.php:523
msgid "last"
msgstr "última"
-#: ../../include/text.php:512
+#: ../../include/text.php:526
msgid "next"
msgstr "próxima"
-#: ../../include/text.php:523
+#: ../../include/text.php:537
msgid "older"
msgstr "más antiguas"
-#: ../../include/text.php:525
+#: ../../include/text.php:539
msgid "newer"
msgstr "más recientes"
-#: ../../include/text.php:947
+#: ../../include/text.php:961
msgid "No connections"
msgstr "Sin conexiones"
-#: ../../include/text.php:972
+#: ../../include/text.php:993
#, php-format
msgid "View all %s connections"
msgstr "Ver todas las %s conexiones"
-#: ../../include/text.php:1104 ../../include/text.php:1109
+#: ../../include/text.php:1129 ../../include/text.php:1133
msgid "poke"
msgstr "un toque"
-#: ../../include/text.php:1110
+#: ../../include/text.php:1134
msgid "ping"
msgstr "un \"ping\""
-#: ../../include/text.php:1110
+#: ../../include/text.php:1134
msgid "pinged"
msgstr "ha enviado un \"ping\" a"
-#: ../../include/text.php:1111
+#: ../../include/text.php:1135
msgid "prod"
msgstr "una incitación "
-#: ../../include/text.php:1111
+#: ../../include/text.php:1135
msgid "prodded"
msgstr "ha incitado a "
-#: ../../include/text.php:1112
+#: ../../include/text.php:1136
msgid "slap"
msgstr "una bofetada "
-#: ../../include/text.php:1112
+#: ../../include/text.php:1136
msgid "slapped"
msgstr "ha abofeteado a "
-#: ../../include/text.php:1113
+#: ../../include/text.php:1137
msgid "finger"
msgstr "un \"finger\" "
-#: ../../include/text.php:1113
+#: ../../include/text.php:1137
msgid "fingered"
msgstr "envió un \"finger\" a"
-#: ../../include/text.php:1114
+#: ../../include/text.php:1138
msgid "rebuff"
msgstr "un reproche"
-#: ../../include/text.php:1114
+#: ../../include/text.php:1138
msgid "rebuffed"
msgstr "ha hecho un reproche a "
-#: ../../include/text.php:1126
+#: ../../include/text.php:1161
msgid "happy"
msgstr "feliz "
-#: ../../include/text.php:1127
+#: ../../include/text.php:1162
msgid "sad"
msgstr "triste "
-#: ../../include/text.php:1128
+#: ../../include/text.php:1163
msgid "mellow"
msgstr "tranquilo/a"
-#: ../../include/text.php:1129
+#: ../../include/text.php:1164
msgid "tired"
msgstr "cansado/a "
-#: ../../include/text.php:1130
+#: ../../include/text.php:1165
msgid "perky"
msgstr "vivaz"
-#: ../../include/text.php:1131
+#: ../../include/text.php:1166
msgid "angry"
msgstr "enfadado/a"
-#: ../../include/text.php:1132
+#: ../../include/text.php:1167
msgid "stupefied"
msgstr "asombrado/a"
-#: ../../include/text.php:1133
+#: ../../include/text.php:1168
msgid "puzzled"
msgstr "perplejo/a"
-#: ../../include/text.php:1134
+#: ../../include/text.php:1169
msgid "interested"
msgstr "interesado/a"
-#: ../../include/text.php:1135
+#: ../../include/text.php:1170
msgid "bitter"
msgstr "amargado/a"
-#: ../../include/text.php:1136
+#: ../../include/text.php:1171
msgid "cheerful"
msgstr "alegre"
-#: ../../include/text.php:1137
+#: ../../include/text.php:1172
msgid "alive"
msgstr "animado/a"
-#: ../../include/text.php:1138
+#: ../../include/text.php:1173
msgid "annoyed"
msgstr "molesto/a"
-#: ../../include/text.php:1139
+#: ../../include/text.php:1174
msgid "anxious"
msgstr "ansioso/a"
-#: ../../include/text.php:1140
+#: ../../include/text.php:1175
msgid "cranky"
msgstr "de mal humor"
-#: ../../include/text.php:1141
+#: ../../include/text.php:1176
msgid "disturbed"
msgstr "perturbado/a"
-#: ../../include/text.php:1142
+#: ../../include/text.php:1177
msgid "frustrated"
msgstr "frustrado/a"
-#: ../../include/text.php:1143
+#: ../../include/text.php:1178
msgid "depressed"
msgstr "deprimido/a"
-#: ../../include/text.php:1144
+#: ../../include/text.php:1179
msgid "motivated"
msgstr "motivado/a"
-#: ../../include/text.php:1145
+#: ../../include/text.php:1180
msgid "relaxed"
msgstr "relajado/a"
-#: ../../include/text.php:1146
+#: ../../include/text.php:1181
msgid "surprised"
msgstr "sorprendido/a"
-#: ../../include/text.php:1320 ../../include/js_strings.php:70
+#: ../../include/text.php:1360 ../../include/js_strings.php:76
msgid "Monday"
msgstr "lunes"
-#: ../../include/text.php:1320 ../../include/js_strings.php:71
+#: ../../include/text.php:1360 ../../include/js_strings.php:77
msgid "Tuesday"
msgstr "martes"
-#: ../../include/text.php:1320 ../../include/js_strings.php:72
+#: ../../include/text.php:1360 ../../include/js_strings.php:78
msgid "Wednesday"
msgstr "miércoles"
-#: ../../include/text.php:1320 ../../include/js_strings.php:73
+#: ../../include/text.php:1360 ../../include/js_strings.php:79
msgid "Thursday"
msgstr "jueves"
-#: ../../include/text.php:1320 ../../include/js_strings.php:74
+#: ../../include/text.php:1360 ../../include/js_strings.php:80
msgid "Friday"
msgstr "viernes"
-#: ../../include/text.php:1320 ../../include/js_strings.php:75
+#: ../../include/text.php:1360 ../../include/js_strings.php:81
msgid "Saturday"
msgstr "sábado"
-#: ../../include/text.php:1320 ../../include/js_strings.php:69
+#: ../../include/text.php:1360 ../../include/js_strings.php:75
msgid "Sunday"
msgstr "domingo"
-#: ../../include/text.php:1324 ../../include/js_strings.php:45
+#: ../../include/text.php:1364 ../../include/js_strings.php:51
msgid "January"
msgstr "enero"
-#: ../../include/text.php:1324 ../../include/js_strings.php:46
+#: ../../include/text.php:1364 ../../include/js_strings.php:52
msgid "February"
msgstr "febrero"
-#: ../../include/text.php:1324 ../../include/js_strings.php:47
+#: ../../include/text.php:1364 ../../include/js_strings.php:53
msgid "March"
msgstr "marzo"
-#: ../../include/text.php:1324 ../../include/js_strings.php:48
+#: ../../include/text.php:1364 ../../include/js_strings.php:54
msgid "April"
msgstr "abril"
-#: ../../include/text.php:1324
+#: ../../include/text.php:1364
msgid "May"
msgstr "mayo"
-#: ../../include/text.php:1324 ../../include/js_strings.php:50
+#: ../../include/text.php:1364 ../../include/js_strings.php:56
msgid "June"
msgstr "junio"
-#: ../../include/text.php:1324 ../../include/js_strings.php:51
+#: ../../include/text.php:1364 ../../include/js_strings.php:57
msgid "July"
msgstr "julio"
-#: ../../include/text.php:1324 ../../include/js_strings.php:52
+#: ../../include/text.php:1364 ../../include/js_strings.php:58
msgid "August"
msgstr "agosto"
-#: ../../include/text.php:1324 ../../include/js_strings.php:53
+#: ../../include/text.php:1364 ../../include/js_strings.php:59
msgid "September"
msgstr "septiembre"
-#: ../../include/text.php:1324 ../../include/js_strings.php:54
+#: ../../include/text.php:1364 ../../include/js_strings.php:60
msgid "October"
msgstr "octubre"
-#: ../../include/text.php:1324 ../../include/js_strings.php:55
+#: ../../include/text.php:1364 ../../include/js_strings.php:61
msgid "November"
msgstr "noviembre"
-#: ../../include/text.php:1324 ../../include/js_strings.php:56
+#: ../../include/text.php:1364 ../../include/js_strings.php:62
msgid "December"
msgstr "diciembre"
-#: ../../include/text.php:1388 ../../include/text.php:1392
+#: ../../include/text.php:1428 ../../include/text.php:1432
msgid "Unknown Attachment"
msgstr "Adjunto no reconocido"
-#: ../../include/text.php:1394 ../../include/feedutils.php:825
+#: ../../include/text.php:1434 ../../include/feedutils.php:852
msgid "unknown"
msgstr "desconocido"
-#: ../../include/text.php:1430
+#: ../../include/text.php:1470
msgid "remove category"
msgstr "eliminar el tema"
-#: ../../include/text.php:1504
+#: ../../include/text.php:1544
msgid "remove from file"
msgstr "eliminar del fichero"
-#: ../../include/text.php:1623 ../../include/message.php:12
+#: ../../include/text.php:1686 ../../include/message.php:12
msgid "Download binary/encrypted content"
msgstr "Descargar contenido binario o cifrado"
-#: ../../include/text.php:1782 ../../include/language.php:364
+#: ../../include/text.php:1848 ../../include/language.php:397
msgid "default"
msgstr "por defecto"
-#: ../../include/text.php:1790
+#: ../../include/text.php:1856
msgid "Page layout"
msgstr "Plantilla de la página"
-#: ../../include/text.php:1790
+#: ../../include/text.php:1856
msgid "You can create your own with the layouts tool"
msgstr "Puede crear su propia disposición gráfica con la herramienta de plantillas"
-#: ../../include/text.php:1801
+#: ../../include/text.php:1867
msgid "HTML"
msgstr "HTML"
-#: ../../include/text.php:1804
+#: ../../include/text.php:1870
msgid "Comanche Layout"
msgstr "Plantilla de Comanche"
-#: ../../include/text.php:1809
+#: ../../include/text.php:1875
msgid "PHP"
msgstr "PHP"
-#: ../../include/text.php:1818
+#: ../../include/text.php:1884
msgid "Page content type"
msgstr "Tipo de contenido de la página"
-#: ../../include/text.php:1951
+#: ../../include/text.php:2017
msgid "activity"
msgstr "la actividad"
-#: ../../include/text.php:2014
+#: ../../include/text.php:2099
msgid "a-z, 0-9, -, and _ only"
msgstr "a-z, 0-9, -, and _ only"
-#: ../../include/text.php:2285
+#: ../../include/text.php:2399
msgid "Design Tools"
msgstr "Herramientas de diseño web"
-#: ../../include/text.php:2291
+#: ../../include/text.php:2405
msgid "Pages"
msgstr "Páginas"
-#: ../../include/text.php:2313
+#: ../../include/text.php:2427
msgid "Import website..."
msgstr "Importar un sitio web..."
-#: ../../include/text.php:2314
+#: ../../include/text.php:2428
msgid "Select folder to import"
msgstr "Seleccionar la carpeta que se va a importar"
-#: ../../include/text.php:2315
+#: ../../include/text.php:2429
msgid "Import from a zipped folder:"
msgstr "Importar desde una carpeta comprimida: "
-#: ../../include/text.php:2316
+#: ../../include/text.php:2430
msgid "Import from cloud files:"
msgstr "Importar desde los ficheros en la nube: "
-#: ../../include/text.php:2317
+#: ../../include/text.php:2431
msgid "/cloud/channel/path/to/folder"
msgstr "/cloud/canal/ruta/a la/carpeta"
-#: ../../include/text.php:2318
+#: ../../include/text.php:2432
msgid "Enter path to website files"
msgstr "Ruta a los ficheros del sitio web"
-#: ../../include/text.php:2319
+#: ../../include/text.php:2433
msgid "Select folder"
msgstr "Seleccionar la carpeta"
-#: ../../include/text.php:2320
+#: ../../include/text.php:2434
msgid "Export website..."
msgstr "Exportar un sitio web..."
-#: ../../include/text.php:2321
+#: ../../include/text.php:2435
msgid "Export to a zip file"
msgstr "Exportar a un fichero comprimido .zip"
-#: ../../include/text.php:2322
+#: ../../include/text.php:2436
msgid "website.zip"
msgstr "sitio_web.zip"
-#: ../../include/text.php:2323
+#: ../../include/text.php:2437
msgid "Enter a name for the zip file."
msgstr "Escriba un nombre para el fichero zip."
-#: ../../include/text.php:2324
+#: ../../include/text.php:2438
msgid "Export to cloud files"
msgstr "Exportar a la nube de ficheros"
-#: ../../include/text.php:2325
+#: ../../include/text.php:2439
msgid "/path/to/export/folder"
msgstr "/ruta/para/exportar/carpeta"
-#: ../../include/text.php:2326
+#: ../../include/text.php:2440
msgid "Enter a path to a cloud files destination."
msgstr "Escriba una ruta de destino a la nube de ficheros."
-#: ../../include/text.php:2327
+#: ../../include/text.php:2441
msgid "Specify folder"
msgstr "Especificar una carpeta"
@@ -12330,7 +12566,7 @@ msgstr "Conexiones comunes"
msgid "View all %d common connections"
msgstr "Ver todas las %d conexiones comunes"
-#: ../../include/markdown.php:158 ../../include/bbcode.php:339
+#: ../../include/markdown.php:158 ../../include/bbcode.php:343
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr "%1$s escribió %2$s siguiente %3$s"
@@ -12434,182 +12670,182 @@ msgstr "Por favor, introduzca una dirección de enlace"
msgid "Unsaved changes. Are you sure you wish to leave this page?"
msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?"
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:31
msgid "timeago.prefixAgo"
msgstr "timeago.prefixAgo"
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:32
msgid "timeago.prefixFromNow"
msgstr "timeago.prefixFromNow"
-#: ../../include/js_strings.php:29
-msgid "ago"
-msgstr "antes"
+#: ../../include/js_strings.php:33
+msgid "timeago.suffixAgo"
+msgstr "timeago.suffixAgo"
-#: ../../include/js_strings.php:30
-msgid "from now"
-msgstr "desde ahora"
+#: ../../include/js_strings.php:34
+msgid "timeago.suffixFromNow"
+msgstr "timeago.suffixFromNow"
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:37
msgid "less than a minute"
msgstr "menos de un minuto"
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:38
msgid "about a minute"
msgstr "alrededor de un minuto"
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:39
#, php-format
msgid "%d minutes"
msgstr "%d minutos"
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:40
msgid "about an hour"
msgstr "alrededor de una hora"
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:41
#, php-format
msgid "about %d hours"
msgstr "alrededor de %d horas"
-#: ../../include/js_strings.php:36
+#: ../../include/js_strings.php:42
msgid "a day"
msgstr "un día"
-#: ../../include/js_strings.php:37
+#: ../../include/js_strings.php:43
#, php-format
msgid "%d days"
msgstr "%d días"
-#: ../../include/js_strings.php:38
+#: ../../include/js_strings.php:44
msgid "about a month"
msgstr "alrededor de un mes"
-#: ../../include/js_strings.php:39
+#: ../../include/js_strings.php:45
#, php-format
msgid "%d months"
msgstr "%d meses"
-#: ../../include/js_strings.php:40
+#: ../../include/js_strings.php:46
msgid "about a year"
msgstr "alrededor de un año"
-#: ../../include/js_strings.php:41
+#: ../../include/js_strings.php:47
#, php-format
msgid "%d years"
msgstr "%d años"
-#: ../../include/js_strings.php:42
+#: ../../include/js_strings.php:48
msgid " "
msgstr " "
-#: ../../include/js_strings.php:43
+#: ../../include/js_strings.php:49
msgid "timeago.numbers"
msgstr "timeago.numbers"
-#: ../../include/js_strings.php:49
+#: ../../include/js_strings.php:55
msgctxt "long"
msgid "May"
msgstr "mayo"
-#: ../../include/js_strings.php:57
+#: ../../include/js_strings.php:63
msgid "Jan"
msgstr "ene"
-#: ../../include/js_strings.php:58
+#: ../../include/js_strings.php:64
msgid "Feb"
msgstr "feb"
-#: ../../include/js_strings.php:59
+#: ../../include/js_strings.php:65
msgid "Mar"
msgstr "mar"
-#: ../../include/js_strings.php:60
+#: ../../include/js_strings.php:66
msgid "Apr"
msgstr "abr"
-#: ../../include/js_strings.php:61
+#: ../../include/js_strings.php:67
msgctxt "short"
msgid "May"
msgstr "may"
-#: ../../include/js_strings.php:62
+#: ../../include/js_strings.php:68
msgid "Jun"
msgstr "jun"
-#: ../../include/js_strings.php:63
+#: ../../include/js_strings.php:69
msgid "Jul"
msgstr "jul"
-#: ../../include/js_strings.php:64
+#: ../../include/js_strings.php:70
msgid "Aug"
msgstr "ago"
-#: ../../include/js_strings.php:65
+#: ../../include/js_strings.php:71
msgid "Sep"
msgstr "sep"
-#: ../../include/js_strings.php:66
+#: ../../include/js_strings.php:72
msgid "Oct"
msgstr "oct"
-#: ../../include/js_strings.php:67
+#: ../../include/js_strings.php:73
msgid "Nov"
msgstr "nov"
-#: ../../include/js_strings.php:68
+#: ../../include/js_strings.php:74
msgid "Dec"
msgstr "dic"
-#: ../../include/js_strings.php:76
+#: ../../include/js_strings.php:82
msgid "Sun"
msgstr "dom"
-#: ../../include/js_strings.php:77
+#: ../../include/js_strings.php:83
msgid "Mon"
msgstr "lun"
-#: ../../include/js_strings.php:78
+#: ../../include/js_strings.php:84
msgid "Tue"
msgstr "mar"
-#: ../../include/js_strings.php:79
+#: ../../include/js_strings.php:85
msgid "Wed"
msgstr "mié"
-#: ../../include/js_strings.php:80
+#: ../../include/js_strings.php:86
msgid "Thu"
msgstr "jue"
-#: ../../include/js_strings.php:81
+#: ../../include/js_strings.php:87
msgid "Fri"
msgstr "vie"
-#: ../../include/js_strings.php:82
+#: ../../include/js_strings.php:88
msgid "Sat"
msgstr "sáb"
-#: ../../include/js_strings.php:83
+#: ../../include/js_strings.php:89
msgctxt "calendar"
msgid "today"
msgstr "hoy"
-#: ../../include/js_strings.php:84
+#: ../../include/js_strings.php:90
msgctxt "calendar"
msgid "month"
msgstr "mes"
-#: ../../include/js_strings.php:85
+#: ../../include/js_strings.php:91
msgctxt "calendar"
msgid "week"
msgstr "semana"
-#: ../../include/js_strings.php:86
+#: ../../include/js_strings.php:92
msgctxt "calendar"
msgid "day"
msgstr "día"
-#: ../../include/js_strings.php:87
+#: ../../include/js_strings.php:93
msgctxt "calendar"
msgid "All day"
msgstr "Todos los días"
@@ -12654,61 +12890,61 @@ msgstr "un reproche"
msgid "Item was not found."
msgstr "Elemento no encontrado."
-#: ../../include/attach.php:553
+#: ../../include/attach.php:554
msgid "No source file."
msgstr "Ningún fichero de origen"
-#: ../../include/attach.php:575
+#: ../../include/attach.php:576
msgid "Cannot locate file to replace"
msgstr "No se puede localizar el fichero que va a ser sustituido."
-#: ../../include/attach.php:593
+#: ../../include/attach.php:595
msgid "Cannot locate file to revise/update"
msgstr "No se puede localizar el fichero para revisar/actualizar"
-#: ../../include/attach.php:734
+#: ../../include/attach.php:737
#, php-format
msgid "File exceeds size limit of %d"
msgstr "El fichero supera el limite de tamaño de %d"
-#: ../../include/attach.php:754
+#: ../../include/attach.php:758
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."
-#: ../../include/attach.php:929
+#: ../../include/attach.php:940
msgid "File upload failed. Possible system limit or action terminated."
msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado."
-#: ../../include/attach.php:948
+#: ../../include/attach.php:959
msgid "Stored file could not be verified. Upload failed."
msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado."
-#: ../../include/attach.php:1022 ../../include/attach.php:1038
+#: ../../include/attach.php:1033 ../../include/attach.php:1049
msgid "Path not available."
msgstr "Ruta no disponible."
-#: ../../include/attach.php:1087 ../../include/attach.php:1252
+#: ../../include/attach.php:1098 ../../include/attach.php:1263
msgid "Empty pathname"
msgstr "Ruta vacía"
-#: ../../include/attach.php:1113
+#: ../../include/attach.php:1124
msgid "duplicate filename or path"
msgstr "Nombre duplicado de ruta o fichero"
-#: ../../include/attach.php:1138
+#: ../../include/attach.php:1149
msgid "Path not found."
msgstr "Ruta no encontrada"
-#: ../../include/attach.php:1206
+#: ../../include/attach.php:1217
msgid "mkdir failed."
msgstr "mkdir ha fallado."
-#: ../../include/attach.php:1210
+#: ../../include/attach.php:1221
msgid "database storage failed."
msgstr "el almacenamiento en la base de datos ha fallado."
-#: ../../include/attach.php:1258
+#: ../../include/attach.php:1269
msgid "Empty path"
msgstr "Ruta vacía"
@@ -12755,34 +12991,34 @@ msgstr "Visible para las conexiones permitidas."
msgid "Visible to specific connections."
msgstr "Visible para conexiones específicas."
-#: ../../include/items.php:4117
+#: ../../include/items.php:4147
msgid "Privacy group is empty."
msgstr "El grupo de canales está vacío."
-#: ../../include/items.php:4124
+#: ../../include/items.php:4154
#, php-format
msgid "Privacy group: %s"
msgstr "Grupo de canales: %s"
-#: ../../include/items.php:4136
+#: ../../include/items.php:4166
msgid "Connection not found."
msgstr "Conexión no encontrada"
-#: ../../include/items.php:4485
+#: ../../include/items.php:4515
msgid "profile photo"
msgstr "foto del perfil"
-#: ../../include/items.php:4676
+#: ../../include/items.php:4706
#, php-format
msgid "[Edited %s]"
msgstr "[se ha editado %s]"
-#: ../../include/items.php:4676
+#: ../../include/items.php:4706
msgctxt "edit_activity"
msgid "Post"
msgstr "Publicar"
-#: ../../include/items.php:4676
+#: ../../include/items.php:4706
msgctxt "edit_activity"
msgid "Comment"
msgstr "Comentar"
@@ -12791,11 +13027,11 @@ msgstr "Comentar"
msgid "Unable to obtain identity information from database"
msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos"
-#: ../../include/channel.php:69
+#: ../../include/channel.php:68
msgid "Empty name"
msgstr "Nombre vacío"
-#: ../../include/channel.php:72
+#: ../../include/channel.php:71
msgid "Name too long"
msgstr "Nombre demasiado largo"
@@ -12827,11 +13063,11 @@ msgstr "Crear un nuevo perfil"
msgid "Visible to everybody"
msgstr "Visible para todos"
-#: ../../include/channel.php:1396 ../../include/channel.php:1523
+#: ../../include/channel.php:1396 ../../include/channel.php:1524
msgid "Gender:"
msgstr "Género:"
-#: ../../include/channel.php:1398 ../../include/channel.php:1578
+#: ../../include/channel.php:1398 ../../include/channel.php:1579
msgid "Homepage:"
msgstr "Página personal:"
@@ -12839,108 +13075,112 @@ msgstr "Página personal:"
msgid "Online Now"
msgstr "Ahora en línea"
-#: ../../include/channel.php:1482
+#: ../../include/channel.php:1452
+msgid "Change your profile photo"
+msgstr "Cambiar su foto del perfil"
+
+#: ../../include/channel.php:1483
msgid "Trans"
msgstr "Trans"
-#: ../../include/channel.php:1528
+#: ../../include/channel.php:1529
msgid "Like this channel"
msgstr "Me gusta este canal"
-#: ../../include/channel.php:1552
+#: ../../include/channel.php:1553
msgid "j F, Y"
msgstr "j F Y"
-#: ../../include/channel.php:1553
+#: ../../include/channel.php:1554
msgid "j F"
msgstr "j F"
-#: ../../include/channel.php:1560
+#: ../../include/channel.php:1561
msgid "Birthday:"
msgstr "Cumpleaños:"
-#: ../../include/channel.php:1573
+#: ../../include/channel.php:1574
#, php-format
msgid "for %1$d %2$s"
msgstr "por %1$d %2$s"
-#: ../../include/channel.php:1576
+#: ../../include/channel.php:1577
msgid "Sexual Preference:"
msgstr "Orientación sexual:"
-#: ../../include/channel.php:1582
+#: ../../include/channel.php:1583
msgid "Tags:"
msgstr "Etiquetas:"
-#: ../../include/channel.php:1584
+#: ../../include/channel.php:1585
msgid "Political Views:"
msgstr "Posición política:"
-#: ../../include/channel.php:1586
+#: ../../include/channel.php:1587
msgid "Religion:"
msgstr "Religión:"
-#: ../../include/channel.php:1590
+#: ../../include/channel.php:1591
msgid "Hobbies/Interests:"
msgstr "Aficciones o intereses:"
-#: ../../include/channel.php:1592
+#: ../../include/channel.php:1593
msgid "Likes:"
msgstr "Me gusta:"
-#: ../../include/channel.php:1594
+#: ../../include/channel.php:1595
msgid "Dislikes:"
msgstr "No me gusta:"
-#: ../../include/channel.php:1596
+#: ../../include/channel.php:1597
msgid "Contact information and Social Networks:"
msgstr "Información de contacto y redes sociales:"
-#: ../../include/channel.php:1598
+#: ../../include/channel.php:1599
msgid "My other channels:"
msgstr "Mis otros canales:"
-#: ../../include/channel.php:1600
+#: ../../include/channel.php:1601
msgid "Musical interests:"
msgstr "Preferencias musicales:"
-#: ../../include/channel.php:1602
+#: ../../include/channel.php:1603
msgid "Books, literature:"
msgstr "Libros, literatura:"
-#: ../../include/channel.php:1604
+#: ../../include/channel.php:1605
msgid "Television:"
msgstr "Televisión:"
-#: ../../include/channel.php:1606
+#: ../../include/channel.php:1607
msgid "Film/dance/culture/entertainment:"
msgstr "Cine, danza, cultura, entretenimiento:"
-#: ../../include/channel.php:1608
+#: ../../include/channel.php:1609
msgid "Love/Romance:"
msgstr "Vida sentimental o amorosa:"
-#: ../../include/channel.php:1610
+#: ../../include/channel.php:1611
msgid "Work/employment:"
msgstr "Trabajo:"
-#: ../../include/channel.php:1612
+#: ../../include/channel.php:1613
msgid "School/education:"
msgstr "Estudios:"
-#: ../../include/channel.php:1635
+#: ../../include/channel.php:1636
msgid "Like this thing"
msgstr "Me gusta esto"
-#: ../../include/event.php:23 ../../include/event.php:70
+#: ../../include/event.php:24 ../../include/event.php:71
msgid "l F d, Y \\@ g:i A"
msgstr "l d de F, Y \\@ G:i"
-#: ../../include/event.php:31 ../../include/event.php:74
+#: ../../include/event.php:32 ../../include/event.php:75
msgid "Starts:"
msgstr "Comienza:"
-#: ../../include/event.php:41 ../../include/event.php:78
+#: ../../include/event.php:42 ../../include/event.php:79
msgid "Finishes:"
msgstr "Finaliza:"
@@ -12948,167 +13188,175 @@ msgstr "Finaliza:"
msgid "This event has been added to your calendar."
msgstr "Este evento ha sido añadido a su calendario."
-#: ../../include/event.php:1220
+#: ../../include/event.php:1227
msgid "Not specified"
msgstr "Sin especificar"
-#: ../../include/event.php:1221
+#: ../../include/event.php:1228
msgid "Needs Action"
msgstr "Necesita de una intervención"
-#: ../../include/event.php:1222
+#: ../../include/event.php:1229
msgid "Completed"
msgstr "Completado/a"
-#: ../../include/event.php:1223
+#: ../../include/event.php:1230
msgid "In Process"
msgstr "En proceso"
-#: ../../include/event.php:1224
+#: ../../include/event.php:1231
msgid "Cancelled"
msgstr "Cancelado/a"
-#: ../../include/event.php:1303 ../../include/connections.php:684
+#: ../../include/event.php:1310 ../../include/connections.php:684
msgid "Home, Voice"
msgstr "Llamadas particulares"
-#: ../../include/event.php:1304 ../../include/connections.php:685
+#: ../../include/event.php:1311 ../../include/connections.php:685
msgid "Home, Fax"
msgstr "Fax particular"
-#: ../../include/event.php:1306 ../../include/connections.php:687
+#: ../../include/event.php:1313 ../../include/connections.php:687
msgid "Work, Voice"
msgstr "Llamadas de trabajo"
-#: ../../include/event.php:1307 ../../include/connections.php:688
+#: ../../include/event.php:1314 ../../include/connections.php:688
msgid "Work, Fax"
msgstr "Fax de trabajo"
-#: ../../include/network.php:761
+#: ../../include/network.php:762
msgid "view full size"
msgstr "Ver en el tamaño original"
-#: ../../include/network.php:1763 ../../include/network.php:1764
+#: ../../include/network.php:1769 ../../include/network.php:1770
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/network.php:1765
+#: ../../include/network.php:1771
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/network.php:1766
+#: ../../include/network.php:1772
msgid "GNU-Social"
msgstr "GNU Social"
-#: ../../include/network.php:1767
+#: ../../include/network.php:1773
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/network.php:1770
+#: ../../include/network.php:1776
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/network.php:1771
+#: ../../include/network.php:1777
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/network.php:1772
+#: ../../include/network.php:1778
msgid "Zot"
msgstr "Zot"
-#: ../../include/network.php:1773
+#: ../../include/network.php:1779
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/network.php:1774
+#: ../../include/network.php:1780
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/network.php:1775
+#: ../../include/network.php:1781
msgid "MySpace"
msgstr "MySpace"
-#: ../../include/language.php:377
+#: ../../include/language.php:410
msgid "Select an alternate language"
msgstr "Seleccionar un idioma alternativo"
-#: ../../include/acl_selectors.php:208
+#: ../../include/acl_selectors.php:113
msgid "Who can see this?"
msgstr "¿Quién puede ver esto?"
-#: ../../include/acl_selectors.php:209
+#: ../../include/acl_selectors.php:114
msgid "Custom selection"
msgstr "Selección personalizada"
-#: ../../include/acl_selectors.php:210
+#: ../../include/acl_selectors.php:115
msgid ""
"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
" the scope of \"Show\"."
msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."
-#: ../../include/acl_selectors.php:211
+#: ../../include/acl_selectors.php:116
msgid "Show"
msgstr "Mostrar"
-#: ../../include/acl_selectors.php:212
+#: ../../include/acl_selectors.php:117
msgid "Don't show"
msgstr "No mostrar"
-#: ../../include/acl_selectors.php:245
+#: ../../include/acl_selectors.php:150
#, php-format
msgid ""
"Post permissions %s cannot be changed %s after a post is shared.</br />These"
" permissions set who is allowed to view the post."
msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."
-#: ../../include/dba/dba_driver.php:190
+#: ../../include/dba/dba_driver.php:178
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%sâ€"
-#: ../../include/bbcode.php:194 ../../include/bbcode.php:1106
-#: ../../include/bbcode.php:1109 ../../include/bbcode.php:1114
-#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1120
-#: ../../include/bbcode.php:1123 ../../include/bbcode.php:1128
-#: ../../include/bbcode.php:1131 ../../include/bbcode.php:1136
-#: ../../include/bbcode.php:1139 ../../include/bbcode.php:1142
-#: ../../include/bbcode.php:1145
+#: ../../include/bbcode.php:198 ../../include/bbcode.php:1151
+#: ../../include/bbcode.php:1154 ../../include/bbcode.php:1159
+#: ../../include/bbcode.php:1162 ../../include/bbcode.php:1165
+#: ../../include/bbcode.php:1168 ../../include/bbcode.php:1173
+#: ../../include/bbcode.php:1176 ../../include/bbcode.php:1181
+#: ../../include/bbcode.php:1184 ../../include/bbcode.php:1187
+#: ../../include/bbcode.php:1190
msgid "Image/photo"
msgstr "Imagen/foto"
-#: ../../include/bbcode.php:233 ../../include/bbcode.php:1156
+#: ../../include/bbcode.php:237 ../../include/bbcode.php:1201
msgid "Encrypted content"
msgstr "Contenido cifrado"
-#: ../../include/bbcode.php:249
+#: ../../include/bbcode.php:253
#, php-format
msgid "Install %1$s element %2$s"
msgstr "Instalar el elemento de%1$s%2$s"
-#: ../../include/bbcode.php:253
+#: ../../include/bbcode.php:257
#, php-format
msgid ""
"This post contains an installable %s element, however you lack permissions "
"to install it on this site."
msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."
-#: ../../include/bbcode.php:331
+#: ../../include/bbcode.php:335
msgid "card"
msgstr "ficha"
-#: ../../include/bbcode.php:333
+#: ../../include/bbcode.php:337
msgid "article"
msgstr "artículo"
-#: ../../include/bbcode.php:416 ../../include/bbcode.php:424
+#: ../../include/bbcode.php:420 ../../include/bbcode.php:428
msgid "Click to open/close"
msgstr "Pulsar para abrir/cerrar"
-#: ../../include/bbcode.php:424
+#: ../../include/bbcode.php:428
msgid "spoiler"
msgstr "spoiler"
-#: ../../include/bbcode.php:1094
+#: ../../include/bbcode.php:441
+msgid "View article"
+msgstr "Ver artículo"
+
+#: ../../include/bbcode.php:441
+msgid "View summary"
+msgstr "Ver sumario"
+
+#: ../../include/bbcode.php:1139
msgid "$1 wrote:"
msgstr "$1 escribió:"
@@ -13128,7 +13376,7 @@ msgstr "Contenido incorporado"
msgid "Embedding disabled"
msgstr "Incrustación deshabilitada"
-#: ../../include/zid.php:340
+#: ../../include/zid.php:346
#, php-format
msgid "OpenWebAuth: %1$s welcomes %2$s"
msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s"
@@ -13137,344 +13385,364 @@ msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s"
msgid "General Features"
msgstr "Funcionalidades básicas"
-#: ../../include/features.php:59
-msgid "Multiple Profiles"
-msgstr "Múltiples perfiles"
-
#: ../../include/features.php:60
-msgid "Ability to create multiple profiles"
-msgstr "Capacidad de crear múltiples perfiles"
-
-#: ../../include/features.php:68
msgid "Advanced Profiles"
msgstr "Perfiles avanzados"
-#: ../../include/features.php:69
+#: ../../include/features.php:61
msgid "Additional profile sections and selections"
msgstr "Secciones y selecciones de perfil adicionales"
-#: ../../include/features.php:77
+#: ../../include/features.php:69
msgid "Profile Import/Export"
msgstr "Importar/Exportar perfil"
-#: ../../include/features.php:78
+#: ../../include/features.php:70
msgid "Save and load profile details across sites/channels"
msgstr "Guardar y cargar detalles del perfil a través de sitios/canales"
-#: ../../include/features.php:86
+#: ../../include/features.php:78
msgid "Web Pages"
msgstr "Páginas web"
-#: ../../include/features.php:87
+#: ../../include/features.php:79
msgid "Provide managed web pages on your channel"
msgstr "Proveer páginas web gestionadas en su canal"
-#: ../../include/features.php:96
+#: ../../include/features.php:88
msgid "Provide a wiki for your channel"
msgstr "Proporcionar un wiki para su canal"
-#: ../../include/features.php:113
+#: ../../include/features.php:105
msgid "Private Notes"
msgstr "Notas privadas"
-#: ../../include/features.php:114
+#: ../../include/features.php:106
msgid "Enables a tool to store notes and reminders (note: not encrypted)"
msgstr "Habilita una herramienta para guardar notas y recordatorios (advertencia: las notas no estarán cifradas)"
-#: ../../include/features.php:123
+#: ../../include/features.php:115
msgid "Create personal planning cards"
msgstr "Crear fichas de planificación personal"
-#: ../../include/features.php:141
+#: ../../include/features.php:125
+msgid "Create interactive articles"
+msgstr "Crear artículos interactivos"
+
+#: ../../include/features.php:133
msgid "Navigation Channel Select"
msgstr "Navegación por el selector de canales"
-#: ../../include/features.php:142
+#: ../../include/features.php:134
msgid "Change channels directly from within the navigation dropdown menu"
msgstr "Cambiar de canales directamente desde el menú de navegación desplegable"
-#: ../../include/features.php:150
+#: ../../include/features.php:142
msgid "Photo Location"
msgstr "Ubicación de las fotos"
-#: ../../include/features.php:151
+#: ../../include/features.php:143
msgid "If location data is available on uploaded photos, link this to a map."
msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa."
-#: ../../include/features.php:159
+#: ../../include/features.php:151
msgid "Access Controlled Chatrooms"
msgstr "Salas de chat moderadas"
-#: ../../include/features.php:160
+#: ../../include/features.php:152
msgid "Provide chatrooms and chat services with access control."
msgstr "Proporcionar salas y servicios de chat moderados."
-#: ../../include/features.php:169
-msgid "Provide alternate connection permission roles."
-msgstr "Proporcionar roles de acceso alternativos para esta conexión."
-
-#: ../../include/features.php:177
+#: ../../include/features.php:161
msgid "Smart Birthdays"
msgstr "Cumpleaños inteligentes"
-#: ../../include/features.php:178
+#: ../../include/features.php:162
msgid ""
"Make birthday events timezone aware in case your friends are scattered "
"across the planet."
msgstr "Enlazar los eventos de cumpleaños con el huso horario en el caso de que sus amigos estén dispersos por el mundo."
-#: ../../include/features.php:186
+#: ../../include/features.php:170
msgid "Event Timezone Selection"
msgstr "Selección del huso horario del evento"
-#: ../../include/features.php:187
+#: ../../include/features.php:171
msgid "Allow event creation in timezones other than your own."
msgstr "Permitir la creación de eventos en husos horarios distintos del suyo."
-#: ../../include/features.php:195
+#: ../../include/features.php:180
+msgid "Premium Channel"
+msgstr "Canal premium"
+
+#: ../../include/features.php:181
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"
+
+#: ../../include/features.php:189
msgid "Advanced Directory Search"
msgstr "Búsqueda avanzada en el directorio"
-#: ../../include/features.php:196
+#: ../../include/features.php:190
msgid "Allows creation of complex directory search queries"
msgstr "Permitir la creación de consultas complejas en las búsquedas en el directorio"
-#: ../../include/features.php:204
+#: ../../include/features.php:198
msgid "Advanced Theme and Layout Settings"
msgstr "Ajustes avanzados de temas y esquemas"
-#: ../../include/features.php:205
+#: ../../include/features.php:199
msgid "Allows fine tuning of themes and page layouts"
msgstr "Permitir el ajuste fino de temas y esquemas de páginas"
-#: ../../include/features.php:215
+#: ../../include/features.php:208
+msgid "Access Control and Permissions"
+msgstr "Control de acceso y permisos"
+
+#: ../../include/features.php:212 ../../include/group.php:328
+msgid "Privacy Groups"
+msgstr "Grupos de canales"
+
+#: ../../include/features.php:213
+msgid "Enable management and selection of privacy groups"
+msgstr "Activar la gestión y selección de grupos de canales"
+
+#: ../../include/features.php:221
+msgid "Multiple Profiles"
+msgstr "Múltiples perfiles"
+
+#: ../../include/features.php:222
+msgid "Ability to create multiple profiles"
+msgstr "Capacidad de crear múltiples perfiles"
+
+#: ../../include/features.php:232
+msgid "Provide alternate connection permission roles."
+msgstr "Proporcionar roles de acceso alternativos para esta conexión."
+
+#: ../../include/features.php:240
+msgid "OAuth Clients"
+msgstr "Clientes OAuth"
+
+#: ../../include/features.php:241
+msgid "Manage authenticatication tokens for mobile and remote apps."
+msgstr "Administrar tokens de autenticación para aplicaciones móviles y remotas."
+
+#: ../../include/features.php:249
+msgid "Access Tokens"
+msgstr "Tokens de acceso"
+
+#: ../../include/features.php:250
+msgid "Create access tokens so that non-members can access private content."
+msgstr "Crear tokens de acceso para que los no miembros puedan acceder a contenido privado."
+
+#: ../../include/features.php:261
msgid "Post Composition Features"
msgstr "Opciones para la redacción de entradas"
-#: ../../include/features.php:219
+#: ../../include/features.php:265
msgid "Large Photos"
msgstr "Fotos de gran tamaño"
-#: ../../include/features.php:220
+#: ../../include/features.php:266
msgid ""
"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
"(640px) photo thumbnails"
msgstr "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)"
-#: ../../include/features.php:229
+#: ../../include/features.php:275
msgid "Automatically import channel content from other channels or feeds"
msgstr "Importar automáticamente contenido de otros canales o \"feeds\""
-#: ../../include/features.php:237
+#: ../../include/features.php:283
msgid "Even More Encryption"
msgstr "Más cifrado todavía"
-#: ../../include/features.php:238
+#: ../../include/features.php:284
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida."
-#: ../../include/features.php:246
+#: ../../include/features.php:292
msgid "Enable Voting Tools"
msgstr "Permitir entradas con votación"
-#: ../../include/features.php:247
+#: ../../include/features.php:293
msgid "Provide a class of post which others can vote on"
msgstr "Proveer una clase de publicación en la que otros puedan votar"
-#: ../../include/features.php:255
+#: ../../include/features.php:301
msgid "Disable Comments"
msgstr "Deshabilitar comentarios"
-#: ../../include/features.php:256
+#: ../../include/features.php:302
msgid "Provide the option to disable comments for a post"
msgstr "Proporcionar la opción de desactivar los comentarios para una entrada"
-#: ../../include/features.php:264
+#: ../../include/features.php:310
msgid "Delayed Posting"
msgstr "Publicación aplazada"
-#: ../../include/features.php:265
+#: ../../include/features.php:311
msgid "Allow posts to be published at a later date"
msgstr "Permitir mensajes que se publicarán en una fecha posterior"
-#: ../../include/features.php:273
+#: ../../include/features.php:319
msgid "Content Expiration"
msgstr "Caducidad del contenido"
-#: ../../include/features.php:274
+#: ../../include/features.php:320
msgid "Remove posts/comments and/or private messages at a future time"
msgstr "Eliminar publicaciones/comentarios y/o mensajes privados más adelante"
-#: ../../include/features.php:282
+#: ../../include/features.php:328
msgid "Suppress Duplicate Posts/Comments"
msgstr "Prevenir entradas o comentarios duplicados"
-#: ../../include/features.php:283
+#: ../../include/features.php:329
msgid ""
"Prevent posts with identical content to be published with less than two "
"minutes in between submissions."
msgstr "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo."
-#: ../../include/features.php:294
+#: ../../include/features.php:340
msgid "Network and Stream Filtering"
msgstr "Filtrado del contenido"
-#: ../../include/features.php:298
+#: ../../include/features.php:344
msgid "Search by Date"
msgstr "Buscar por fecha"
-#: ../../include/features.php:299
+#: ../../include/features.php:345
msgid "Ability to select posts by date ranges"
msgstr "Capacidad de seleccionar entradas por rango de fechas"
-#: ../../include/features.php:307 ../../include/group.php:328
-msgid "Privacy Groups"
-msgstr "Grupos de canales"
-
-#: ../../include/features.php:308
-msgid "Enable management and selection of privacy groups"
-msgstr "Activar la gestión y selección de grupos de canales"
-
-#: ../../include/features.php:317
+#: ../../include/features.php:355
msgid "Save search terms for re-use"
msgstr "Guardar términos de búsqueda para su reutilización"
-#: ../../include/features.php:325
+#: ../../include/features.php:363
msgid "Network Personal Tab"
msgstr "Actividad personal"
-#: ../../include/features.php:326
+#: ../../include/features.php:364
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Habilitar una pestaña en la cual se muestren solo las entradas en las que ha participado."
-#: ../../include/features.php:334
+#: ../../include/features.php:372
msgid "Network New Tab"
msgstr "Contenido nuevo"
-#: ../../include/features.php:335
+#: ../../include/features.php:373
msgid "Enable tab to display all new Network activity"
msgstr "Habilitar una pestaña en la que se muestre solo el contenido nuevo"
-#: ../../include/features.php:343
+#: ../../include/features.php:381
msgid "Affinity Tool"
msgstr "Herramienta de afinidad"
-#: ../../include/features.php:344
+#: ../../include/features.php:382
msgid "Filter stream activity by depth of relationships"
msgstr "Filtrar el contenido según la profundidad de las relaciones"
-#: ../../include/features.php:353
+#: ../../include/features.php:391
msgid "Show friend and connection suggestions"
msgstr "Mostrar sugerencias de amigos y conexiones"
-#: ../../include/features.php:361
+#: ../../include/features.php:399
msgid "Connection Filtering"
msgstr "Filtrado de conexiones"
-#: ../../include/features.php:362
+#: ../../include/features.php:400
msgid "Filter incoming posts from connections based on keywords/content"
msgstr "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido"
-#: ../../include/features.php:374
+#: ../../include/features.php:412
msgid "Post/Comment Tools"
msgstr "Gestión de entradas y comentarios"
-#: ../../include/features.php:379
-msgid "Use markdown for editing posts"
-msgstr "Usar markdown para editar las entradas"
-
-#: ../../include/features.php:387
+#: ../../include/features.php:416
msgid "Community Tagging"
msgstr "Etiquetas de la comunidad"
-#: ../../include/features.php:388
+#: ../../include/features.php:417
msgid "Ability to tag existing posts"
msgstr "Capacidad de etiquetar entradas existentes"
-#: ../../include/features.php:396
+#: ../../include/features.php:425
msgid "Post Categories"
msgstr "Temas de las entradas"
-#: ../../include/features.php:397
+#: ../../include/features.php:426
msgid "Add categories to your posts"
msgstr "Añadir temas a sus publicaciones"
-#: ../../include/features.php:405
+#: ../../include/features.php:434
msgid "Emoji Reactions"
msgstr "Emoticonos \"emoji\""
-#: ../../include/features.php:406
+#: ../../include/features.php:435
msgid "Add emoji reaction ability to posts"
msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas"
-#: ../../include/features.php:415
+#: ../../include/features.php:444
msgid "Ability to file posts under folders"
msgstr "Capacidad de archivar entradas en carpetas"
-#: ../../include/features.php:423
+#: ../../include/features.php:452
msgid "Dislike Posts"
msgstr "Desagrado de publicaciones"
-#: ../../include/features.php:424
+#: ../../include/features.php:453
msgid "Ability to dislike posts/comments"
msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios"
-#: ../../include/features.php:432
+#: ../../include/features.php:461
msgid "Star Posts"
msgstr "Entradas destacadas"
-#: ../../include/features.php:433
+#: ../../include/features.php:462
msgid "Ability to mark special posts with a star indicator"
msgstr "Capacidad de marcar entradas destacadas con un indicador de estrella"
-#: ../../include/features.php:441
+#: ../../include/features.php:470
msgid "Tag Cloud"
msgstr "Nube de etiquetas"
-#: ../../include/features.php:442
+#: ../../include/features.php:471
msgid "Provide a personal tag cloud on your channel page"
msgstr "Proveer nube de etiquetas personal en su página de canal"
-#: ../../include/features.php:453
-msgid "Premium Channel"
-msgstr "Canal premium"
-
-#: ../../include/features.php:454
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"
-
-#: ../../include/taxonomy.php:377 ../../include/taxonomy.php:398
+#: ../../include/taxonomy.php:384 ../../include/taxonomy.php:405
msgid "Tags"
msgstr "Etiquetas"
-#: ../../include/taxonomy.php:483
+#: ../../include/taxonomy.php:487
msgid "Keywords"
msgstr "Palabras clave"
-#: ../../include/taxonomy.php:504
+#: ../../include/taxonomy.php:508
msgid "have"
msgstr "tener"
-#: ../../include/taxonomy.php:504
+#: ../../include/taxonomy.php:508
msgid "has"
msgstr "tiene"
-#: ../../include/taxonomy.php:505
+#: ../../include/taxonomy.php:509
msgid "want"
msgstr "quiero"
-#: ../../include/taxonomy.php:505
+#: ../../include/taxonomy.php:509
msgid "wants"
msgstr "quiere"
-#: ../../include/taxonomy.php:506
+#: ../../include/taxonomy.php:510
msgid "likes"
msgstr "gusta de"
-#: ../../include/taxonomy.php:507
+#: ../../include/taxonomy.php:511
msgid "dislikes"
msgstr "no gusta de"
@@ -13506,256 +13774,200 @@ msgstr "Por favor introduzca la información requerida."
msgid "Failed to store account information."
msgstr "La información de la cuenta no se ha podido guardar."
-#: ../../include/account.php:291
+#: ../../include/account.php:313
#, php-format
msgid "Registration confirmation for %s"
msgstr "Confirmación de registro para %s"
-#: ../../include/account.php:360
+#: ../../include/account.php:382
#, php-format
msgid "Registration request at %s"
msgstr "Solicitud de registro en %s"
-#: ../../include/account.php:382
+#: ../../include/account.php:404
msgid "your registration password"
msgstr "su contraseña de registro"
-#: ../../include/account.php:388 ../../include/account.php:450
+#: ../../include/account.php:410 ../../include/account.php:472
#, php-format
msgid "Registration details for %s"
msgstr "Detalles del registro de %s"
-#: ../../include/account.php:461
+#: ../../include/account.php:483
msgid "Account approved."
msgstr "Cuenta aprobada."
-#: ../../include/account.php:501
+#: ../../include/account.php:523
#, php-format
msgid "Registration revoked for %s"
msgstr "Registro revocado para %s"
-#: ../../include/account.php:780 ../../include/account.php:782
+#: ../../include/account.php:802 ../../include/account.php:804
msgid "Click here to upgrade."
msgstr "Pulse aquí para actualizar"
-#: ../../include/account.php:788
+#: ../../include/account.php:810
msgid "This action exceeds the limits set by your subscription plan."
msgstr "Esta acción supera los límites establecidos por su plan de suscripción "
-#: ../../include/account.php:793
+#: ../../include/account.php:815
msgid "This action is not available under your subscription plan."
msgstr "Esta acción no está disponible en su plan de suscripción."
-#: ../../include/datetime.php:150
+#: ../../include/datetime.php:134
msgid "Birthday"
msgstr "Cumpleaños"
-#: ../../include/datetime.php:152
+#: ../../include/datetime.php:134
msgid "Age: "
msgstr "Edad:"
-#: ../../include/datetime.php:154
+#: ../../include/datetime.php:134
msgid "YYYY-MM-DD or MM-DD"
msgstr "AAAA-MM-DD o MM-DD"
-#: ../../include/datetime.php:298
+#: ../../include/datetime.php:238
msgid "less than a second ago"
msgstr "hace un instante"
-#: ../../include/datetime.php:316
+#: ../../include/datetime.php:256
#, php-format
msgctxt "e.g. 22 hours ago, 1 minute ago"
msgid "%1$d %2$s ago"
msgstr "hace %1$d %2$s"
-#: ../../include/datetime.php:327
+#: ../../include/datetime.php:267
msgctxt "relative_date"
msgid "year"
msgid_plural "years"
msgstr[0] "año"
msgstr[1] "años"
-#: ../../include/datetime.php:330
+#: ../../include/datetime.php:270
msgctxt "relative_date"
msgid "month"
msgid_plural "months"
msgstr[0] "mes"
msgstr[1] "meses"
-#: ../../include/datetime.php:333
+#: ../../include/datetime.php:273
msgctxt "relative_date"
msgid "week"
msgid_plural "weeks"
msgstr[0] "semana"
msgstr[1] "semanas"
-#: ../../include/datetime.php:336
+#: ../../include/datetime.php:276
msgctxt "relative_date"
msgid "day"
msgid_plural "days"
msgstr[0] "día"
msgstr[1] "días"
-#: ../../include/datetime.php:339
+#: ../../include/datetime.php:279
msgctxt "relative_date"
msgid "hour"
msgid_plural "hours"
msgstr[0] "hora"
msgstr[1] "horas"
-#: ../../include/datetime.php:342
+#: ../../include/datetime.php:282
msgctxt "relative_date"
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: ../../include/datetime.php:345
+#: ../../include/datetime.php:285
msgctxt "relative_date"
msgid "second"
msgid_plural "seconds"
msgstr[0] "segundo"
msgstr[1] "segundos"
-#: ../../include/datetime.php:579
+#: ../../include/datetime.php:514
#, php-format
msgid "%1$s's birthday"
msgstr "Cumpleaños de %1$s"
-#: ../../include/datetime.php:580
+#: ../../include/datetime.php:515
#, php-format
msgid "Happy Birthday %1$s"
msgstr "Feliz cumpleaños %1$s"
-#: ../../include/nav.php:98
+#: ../../include/nav.php:96
msgid "Remote authentication"
msgstr "Acceder desde su servidor"
-#: ../../include/nav.php:98
+#: ../../include/nav.php:96
msgid "Click to authenticate to your home hub"
msgstr "Pulsar para identificarse en su servidor de inicio"
-#: ../../include/nav.php:105
-msgid "Network Activity"
-msgstr "Actividad de la red"
-
-#: ../../include/nav.php:107
-msgid "Mark all activity notifications seen"
-msgstr "Marcar como vistas todas las notificaciones de actividad"
-
-#: ../../include/nav.php:109
-msgid "Channel home"
-msgstr "Mi canal"
-
-#: ../../include/nav.php:110
-msgid "View your channel home"
-msgstr "Ver su página principal del canal"
-
-#: ../../include/nav.php:111
-msgid "Mark all channel notifications seen"
-msgstr "Marcar todas las notificaciones del canal como leídas"
-
-#: ../../include/nav.php:116
-msgid "Registrations"
-msgstr "Registros"
-
-#: ../../include/nav.php:119
-msgid "Notifications"
-msgstr "Notificaciones"
-
-#: ../../include/nav.php:120
-msgid "View all notifications"
-msgstr "Ver todas las notificaciones"
-
-#: ../../include/nav.php:121
-msgid "Mark all system notifications seen"
-msgstr "Marcar todas las notificaciones del sistema como leídas"
-
-#: ../../include/nav.php:123
-msgid "Private mail"
-msgstr "Correo privado"
-
-#: ../../include/nav.php:124
-msgid "View your private messages"
-msgstr "Ver sus mensajes privados"
-
-#: ../../include/nav.php:125
-msgid "Mark all private messages seen"
-msgstr "Marcar todos los mensajes privados como leídos"
-
-#: ../../include/nav.php:131
-msgid "Event Calendar"
-msgstr "Calendario de eventos"
-
-#: ../../include/nav.php:136 ../../include/nav.php:222
+#: ../../include/nav.php:102 ../../include/nav.php:190
msgid "Manage Your Channels"
msgstr "Gestionar sus canales"
-#: ../../include/nav.php:139 ../../include/nav.php:224
+#: ../../include/nav.php:105 ../../include/nav.php:192
msgid "Account/Channel Settings"
msgstr "Ajustes de cuenta/canales"
-#: ../../include/nav.php:145 ../../include/nav.php:174
+#: ../../include/nav.php:111 ../../include/nav.php:140
msgid "End this session"
msgstr "Finalizar esta sesión"
-#: ../../include/nav.php:148
+#: ../../include/nav.php:114
msgid "Your profile page"
msgstr "Su página del perfil"
-#: ../../include/nav.php:151
+#: ../../include/nav.php:117
msgid "Manage/Edit profiles"
msgstr "Administrar/editar perfiles"
-#: ../../include/nav.php:153
-msgid "Edit your profile"
-msgstr "Editar su perfil"
-
-#: ../../include/nav.php:160 ../../include/nav.php:164
+#: ../../include/nav.php:126 ../../include/nav.php:130
msgid "Sign in"
msgstr "Acceder"
-#: ../../include/nav.php:189
+#: ../../include/nav.php:157
msgid "Take me home"
msgstr "Volver a la página principal"
-#: ../../include/nav.php:191
+#: ../../include/nav.php:159
msgid "Log me out of this site"
msgstr "Salir de este sitio"
-#: ../../include/nav.php:196
+#: ../../include/nav.php:164
msgid "Create an account"
msgstr "Crear una cuenta"
-#: ../../include/nav.php:208
+#: ../../include/nav.php:176
msgid "Help and documentation"
msgstr "Ayuda y documentación"
-#: ../../include/nav.php:211
+#: ../../include/nav.php:179
msgid "Search site @name, #tag, ?docs, content"
msgstr "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido"
-#: ../../include/nav.php:231
+#: ../../include/nav.php:199
msgid "Site Setup and Configuration"
msgstr "Ajustes y configuración del sitio"
-#: ../../include/nav.php:322
+#: ../../include/nav.php:290
msgid "@name, #tag, ?doc, content"
msgstr "@nombre, #etiqueta, ?ayuda, contenido"
-#: ../../include/nav.php:323
+#: ../../include/nav.php:291
msgid "Please wait..."
msgstr "Espere por favor…"
-#: ../../include/nav.php:329
+#: ../../include/nav.php:297
msgid "Add Apps"
msgstr "Añadir aplicaciones"
-#: ../../include/nav.php:330
+#: ../../include/nav.php:298
msgid "Arrange Apps"
msgstr "Organizar aplicaciones"
-#: ../../include/nav.php:331
+#: ../../include/nav.php:299
msgid "Toggle System Apps"
msgstr "Alternar aplicaciones de sistema"
@@ -13786,19 +13998,23 @@ msgstr "%1$s ha publicado %2$s en %3$s"
msgid "Upload New Photos"
msgstr "Subir nuevas fotos"
-#: ../../include/zot.php:675
+#: ../../include/zot.php:767
msgid "Invalid data packet"
msgstr "Paquete de datos no válido"
-#: ../../include/zot.php:702
+#: ../../include/zot.php:794
msgid "Unable to verify channel signature"
msgstr "No ha sido posible de verificar la firma del canal"
-#: ../../include/zot.php:2409
+#: ../../include/zot.php:2529
#, php-format
msgid "Unable to verify site signature for %s"
msgstr "No ha sido posible de verificar la firma del sitio para %s"
+#: ../../include/zot.php:4180
+msgid "invalid target signature"
+msgstr "La firma recibida no es válida"
+
#: ../../include/group.php:22
msgid ""
"A deleted group with this name was revived. Existing item permissions "
@@ -13842,7 +14058,7 @@ msgstr "Desconectado/a."
msgid "Email validation is incomplete. Please check your email."
msgstr "La validación del correo electrónico está incompleta. Por favor, compruebe su correo electrónico."
-#: ../../include/auth.php:278
+#: ../../include/auth.php:279
msgid "Failed authentication"
msgstr "Autenticación fallida."
diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php
index abbeb83f2..471d7ac2c 100644
--- a/view/es-es/hstrings.php
+++ b/view/es-es/hstrings.php
@@ -71,9 +71,8 @@ App::$strings["2. Enter my \$Projectname network address into the site searchbar
App::$strings["or visit"] = "o visitar";
App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]";
App::$strings["Submit"] = "Enviar";
-App::$strings["Cards"] = "Fichas";
-App::$strings["Add Article"] = "Añadir un artículo";
App::$strings["Articles"] = "Artículos";
+App::$strings["Add Article"] = "Añadir un artículo";
App::$strings["Item not found"] = "Elemento no encontrado";
App::$strings["Layout Name"] = "Nombre de la plantilla";
App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)";
@@ -151,7 +150,8 @@ App::$strings["You may also export your posts and conversations for a particular
App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1\$s\">%2\$s</a>";
App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1\$s\">%2\$s</a>";
App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1\$s\">%2\$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero).";
-App::$strings["Welcome to hubzilla!"] = "¡Bienvenido o bienvenida a Hubzilla!";
+App::$strings["Welcome to Hubzilla!"] = "¡Bienvenido a Hubzilla!";
+App::$strings["You have got no unseen posts..."] = "No tiene ningún mensaje sin leer...";
App::$strings["Public access denied."] = "Acceso público denegado.";
App::$strings["Search"] = "Buscar";
App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s";
@@ -282,6 +282,7 @@ App::$strings["Read more about roles"] = "Leer más sobre los roles";
App::$strings["Create Channel"] = "Crear un canal";
App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada.";
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal existente</a> desde otro lugar.";
+App::$strings["Validate"] = "Validar";
App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña.";
App::$strings["Remove This Channel"] = "Eliminar este canal";
App::$strings["WARNING: "] = "ATENCIÓN:";
@@ -412,10 +413,10 @@ App::$strings["Executing %s failed. Check system logs."] = "La ejecución de %s
App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente.";
App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito.";
App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s.";
-App::$strings["No failed updates."] = "No ha fallado ninguna actualización.";
App::$strings["Failed Updates"] = "Han fallado las actualizaciones";
App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)";
App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente";
+App::$strings["No failed updates."] = "No ha fallado ninguna actualización.";
App::$strings["Item not found."] = "Elemento no encontrado.";
App::$strings["Plugin %s disabled."] = "Extensión %s desactivada.";
App::$strings["Plugin %s enabled."] = "Extensión %s activada.";
@@ -544,6 +545,7 @@ App::$strings["Used to provide a member experience matched to technical comfort
App::$strings["Lock the technical skill level setting"] = "Bloquear el ajuste del nivel de habilidad técnica";
App::$strings["Members can set their own technical comfort level by default"] = "Los miembros pueden configurar su nivel de comodidad técnica por defecto";
App::$strings["Banner/Logo"] = "Banner/Logo";
+App::$strings["Unfiltered HTML/CSS/JS is allowed"] = "Se permite HTML/CSS/JS sin filtrar";
App::$strings["Administrator Information"] = "Información del Administrador";
App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode";
App::$strings["Site Information"] = "Información sobre el sitio";
@@ -560,6 +562,8 @@ App::$strings["Maximum size in bytes of uploaded images. Default is 0, which mea
App::$strings["Does this site allow new member registration?"] = "¿Debe este sitio permitir el registro de nuevos miembros?";
App::$strings["Invitation only"] = "Solo con una invitación";
App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\".";
+App::$strings["Minimum age"] = "Edad mínima";
+App::$strings["Minimum age (in years) for who may register on this site."] = "Edad mínima (en años) para poder registrarse en este sitio.";
App::$strings["Which best describes the types of account offered by this hub?"] = "¿Cómo describiría el tipo de servicio ofrecido por este servidor?";
App::$strings["Register text"] = "Texto del registro";
App::$strings["Will be displayed prominently on the registration page."] = "Se mostrará de forma destacada en la página de registro.";
@@ -577,6 +581,10 @@ App::$strings["Force publish"] = "Forzar la publicación";
App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio.";
App::$strings["Import Public Streams"] = "Importar contenido público";
App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas.";
+App::$strings["Site only Public Streams"] = "Solo contenido público en este sitio";
+App::$strings["Allow access to public content originating only from this site if Imported Public Streams are disabled."] = "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados.";
+App::$strings["Allow anybody on the internet to access the Public streams"] = "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos";
+App::$strings["Disable to require authentication before viewing. Warning: this content is unmoderated."] = "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado.";
App::$strings["Login on Homepage"] = "Iniciar sesión en la página personal";
App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido.";
App::$strings["Enable context help"] = "Habilitar la ayuda contextual";
@@ -606,6 +614,12 @@ App::$strings["Maximum Load Average"] = "Carga media máxima";
App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50.";
App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)";
App::$strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado";
+App::$strings["Public servers: Optional landing (marketing) webpage for new registrants"] = "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros";
+App::$strings["Create this page first. Default is %s/register"] = "Crear esta página primero. Por defecto es %s/register";
+App::$strings["Page to display after creating a new channel"] = "Página a mostrar después de la creación de un nuevo canal";
+App::$strings["Recommend: profiles, go, or settings"] = "Recomendar: perfiles, ir, o ajustes";
+App::$strings["Optional: site location"] = "Opcional: ubicación del sitio";
+App::$strings["Region or country"] = "Región o país";
App::$strings["New Profile Field"] = "Nuevo campo en el perfil";
App::$strings["Field nickname"] = "Alias del campo";
App::$strings["System name of field"] = "Nombre del campo en el sistema";
@@ -792,16 +806,18 @@ App::$strings["Enter New Password"] = "Escribir una nueva contraseña";
App::$strings["Confirm New Password"] = "Confirmar la nueva contraseña";
App::$strings["Leave password fields blank unless changing"] = "Dejar en blanco la contraseña a menos que desee cambiarla.";
App::$strings["Your technical skill level"] = "Su nivel de habilidad técnica";
-App::$strings["Used to provide a member experience matched to your comfort level"] = "Se utiliza para proporcionar la experiencia de los miembros adaptada a su nivel de comodidad";
+App::$strings["Used to provide a member experience and additional features consistent with your comfort level"] = "Utilizado para proporcionar un nivel de experiencia como miembro y características adicionales consistentes con su nivel de comodidad";
App::$strings["Remove Account"] = "Eliminar cuenta";
App::$strings["Remove this account including all its channels"] = "Eliminar esta cuenta incluyendo todos sus canales";
App::$strings["Affinity Slider settings updated."] = "Se han actualizado los ajustes del controlador de afinidad.";
App::$strings["No feature settings configured"] = "No se ha establecido la configuración de los complementos";
App::$strings["Default maximum affinity level"] = "Nivel máximo de afinidad por defecto";
+App::$strings["0-99 default 99"] = "0-99 por defecto 99";
App::$strings["Default minimum affinity level"] = "Nivel mínimo de afinidad por defecto";
+App::$strings["0-99 - default 0"] = "0-99 - por defecto 0";
App::$strings["Affinity Slider Settings"] = "Ajustes del controlador de afinidad";
-App::$strings["Feature/Addon Settings"] = "Ajustes de los complementos";
-App::$strings["No special theme for mobile devices"] = "Sin tema especial para dispositivos móviles";
+App::$strings["Addon Settings"] = "Ajustes de los complementos";
+App::$strings["Please save/submit changes to any panel before opening another."] = "Guarde o envíe los cambios a cualquier panel antes de abrir otro.";
App::$strings["%s - (Experimental)"] = "%s - (Experimental)";
App::$strings["Display Settings"] = "Ajustes de visualización";
App::$strings["Theme Settings"] = "Ajustes del tema";
@@ -809,7 +825,6 @@ App::$strings["Custom Theme Settings"] = "Ajustes personalizados del tema";
App::$strings["Content Settings"] = "Ajustes del contenido";
App::$strings["Display Theme:"] = "Tema gráfico del perfil:";
App::$strings["Select scheme"] = "Elegir un esquema";
-App::$strings["Mobile Theme:"] = "Tema para el móvil:";
App::$strings["Preload images before rendering the page"] = "Carga previa de las imágenes antes de generar la página";
App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre.";
App::$strings["Enable user zoom on mobile devices"] = "Habilitar zoom de usuario en dispositivos móviles";
@@ -1084,10 +1099,10 @@ App::$strings["Photo not available."] = "Foto no disponible.";
App::$strings["Upload File:"] = "Subir fichero:";
App::$strings["Select a profile:"] = "Seleccionar un perfil:";
App::$strings["Use Photo for Profile"] = "Usar la fotografía para el perfil";
-App::$strings["Upload Profile Photo"] = "Subir foto de perfil";
+App::$strings["Change Profile Photo"] = "Cambiar la foto del perfil";
App::$strings["Use"] = "Usar";
-App::$strings["skip this step"] = "Omitir este paso";
-App::$strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbumes de fotos";
+App::$strings["Use a photo from your albums"] = "Usar una foto de sus álbumes";
+App::$strings["Select existing photo"] = "Seleccionar una foto existente";
App::$strings["Crop Image"] = "Recortar imagen";
App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima.";
App::$strings["Done Editing"] = "Edición completada";
@@ -1166,6 +1181,7 @@ App::$strings["Connection: %s"] = "Conexión: %s";
App::$strings["Apply these permissions automatically"] = "Aplicar estos permisos automaticamente";
App::$strings["Connection requests will be approved without your interaction"] = "Las solicitudes de conexión serán aprobadas sin su intervención";
App::$strings["Permission role"] = "Rol de acceso";
+App::$strings["Loading"] = "Cargando";
App::$strings["Add permission role"] = "Añadir un rol de acceso";
App::$strings["This connection's primary address is"] = "La dirección primaria de esta conexión es";
App::$strings["Available locations:"] = "Ubicaciones disponibles:";
@@ -1229,7 +1245,13 @@ App::$strings["Help"] = "Ayuda";
App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche";
App::$strings["Layout Description"] = "Descripción de la plantilla";
App::$strings["Download PDL file"] = "Descargar el fichero PDL";
+App::$strings["Please refresh page"] = "Por favor, recargue la página";
App::$strings["Unknown error"] = "Error desconocido";
+App::$strings["Token verification failed."] = "Ha fallado el token de verificación.";
+App::$strings["Email Verification Required"] = "Verificación obligatoria del correo electrónico";
+App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "Se ha enviado un token de verificación a su dirección de correo electrónico [%s]. Ingrese ese símbolo aquí para completar el paso de verificación de cuenta. Por favor, espere unos minutos para el envío, y revise su carpeta de spam si no ve el mensaje.";
+App::$strings["Resend Email"] = "Reenvío de correo electrónico";
+App::$strings["Validation token"] = "Token de validación";
App::$strings["Post not found."] = "Mensaje no encontrado.";
App::$strings["post"] = "la entrada";
App::$strings["comment"] = "el comentario";
@@ -1321,6 +1343,21 @@ App::$strings["My other channels"] = "Mis otros canales";
App::$strings["Communications"] = "Comunicaciones";
App::$strings["Profile Image"] = "Imagen del perfil";
App::$strings["Edit Profiles"] = "Editar perfiles";
+App::$strings["This page is available only to site members"] = "Esta página está disponible sólo para los miembros del sitio";
+App::$strings["Welcome"] = "Bienvenido/a";
+App::$strings["What would you like to do?"] = "¿Qué le gustaría hacer?";
+App::$strings["Please bookmark this page if you would like to return to it in the future"] = "Por favor añada esta página a sus marcadores si desea volver a ella en el futuro.";
+App::$strings["Upload a profile photo"] = "Subir una foto de perfil";
+App::$strings["Upload a cover photo"] = "Subir una foto de portada del perfil";
+App::$strings["Edit your default profile"] = "Editar su perfil por defecto";
+App::$strings["View friend suggestions"] = "Ver sugerencias de amistad";
+App::$strings["View the channel directory"] = "Ver el directorio de canales";
+App::$strings["View/edit your channel settings"] = "Ver o modificar los ajustes de su canal";
+App::$strings["View the site or project documentation"] = "Ver el sitio o la documentación del proyecto";
+App::$strings["Visit your channel homepage"] = "Visitar la página principal de su canal";
+App::$strings["View your connections and/or add somebody whose address you already know"] = "Vea sus conexiones y/o agregue a alguien cuya dirección ya conozca";
+App::$strings["View your personal stream (this may be empty until you add some connections)"] = "Ver su \"stream\" personal (puede que esté vacío hasta que agregue algunas conexiones)";
+App::$strings["View the public stream. Warning: this content is not moderated"] = "Ver el \"stream\" público. Advertencia: este contenido no está moderado";
App::$strings["Page link"] = "Enlace de la página";
App::$strings["Edit Webpage"] = "Editar la página web";
App::$strings["Create a new channel"] = "Crear un nuevo canal";
@@ -1506,6 +1543,7 @@ App::$strings["Fetching URL returns error: %1\$s"] = "Al intentar obtener la dir
App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana.";
App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado.";
App::$strings["Passwords do not match."] = "Las contraseñas no coinciden.";
+App::$strings["Registration successful. Continue to create your first channel..."] = "Registro exitoso. Continúe creando tu primer canal...";
App::$strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo.";
App::$strings["Registration successful. Continue to create your first channel..."] = "Registro exitoso. Continúe creando tu primer canal...";
App::$strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio.";
@@ -1524,7 +1562,7 @@ App::$strings["no"] = "no";
App::$strings["yes"] = "sí";
App::$strings["Membership on this site is by invitation only."] = "Para registrarse en este sitio es necesaria una invitación.";
App::$strings["Register"] = "Registrarse";
-App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Este sitio puede requerir una verificación de correo electrónico después de enviar este formulario. Si es devuelto a una página de inicio de sesión, compruebe su email para recibir y leer las instrucciones.";
+App::$strings["This site requires email verification. After completing this form, please check your email for further instructions."] = "Este sitio requiere verificación por correo electrónico. Después de completar este formulario, por favor revise su correo electrónico para más instrucciones.";
App::$strings["Cover Photos"] = "Imágenes de portada del perfil";
App::$strings["female"] = "mujer";
App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s";
@@ -1532,7 +1570,7 @@ App::$strings["male"] = "hombre";
App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s";
App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s";
App::$strings["cover photo"] = "Imagen de portada del perfil";
-App::$strings["Upload Cover Photo"] = "Subir imagen de portada del perfil";
+App::$strings["Change Cover Photo"] = "Cambiar la foto de portada del perfil";
App::$strings["Documentation Search"] = "Búsqueda de Documentación";
App::$strings["About"] = "Mi perfil";
App::$strings["Administrators"] = "Administradores";
@@ -1570,6 +1608,8 @@ App::$strings["Show in your contacts shared folder"] = "Mostrar en la carpeta co
App::$strings["No channel."] = "Ningún canal.";
App::$strings["No connections in common."] = "Ninguna conexión en común.";
App::$strings["View Common Connections"] = "Ver las conexiones comunes";
+App::$strings["Email verification resent"] = "Reenvío del email de verificación";
+App::$strings["Unable to resend email verification message."] = "No se puede reenviar el mensaje de verificación por correo electrónico.";
App::$strings["No connections."] = "Sin conexiones.";
App::$strings["Visit %s's profile [%s]"] = "Visitar el perfil de %s [%s]";
App::$strings["View Connections"] = "Ver conexiones";
@@ -1686,15 +1726,21 @@ App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname";
App::$strings["\$projectname"] = "\$projectname";
App::$strings["Thank You,"] = "Gracias,";
App::$strings["%s Administrator"] = "%s Administrador";
+App::$strings["This email was sent by %1\$s at %2\$s."] = "Este email ha sido enviado por %1\$s a %2\$s.";
+App::$strings["To stop receiving these messages, please adjust your Notification Settings at %s"] = "Para dejar de recibir estos mensajes, por favor ajuste la configuración de notificación en %s";
+App::$strings["To stop receiving these messages, please adjust your %s."] = "Para dejar de recibir estos mensajes, por favor, ajuste su %s";
App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Aviso] Nuevo correo recibido en %s";
App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s le ha enviado un nuevo mensaje privado en %3\$s.";
App::$strings["%1\$s sent you %2\$s."] = "%1\$s le ha enviado %2\$s.";
App::$strings["a private message"] = "un mensaje privado";
App::$strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%5\$s de %4\$s[/zrl] ";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%4\$s creado por usted[/zrl]";
+App::$strings["commented on"] = "ha comentado sobre";
+App::$strings["liked"] = "ha gustado de ";
+App::$strings["disliked"] = "no ha gustado de ";
+App::$strings["%1\$s, %2\$s %3\$s [zrl=%4\$s]a %5\$s[/zrl]"] = "%1\$s, %2\$s %3\$s[zrl=%4\$s]un %5\$s[/zrl]";
+App::$strings["%1\$s, %2\$s %3\$s [zrl=%4\$s]%5\$s's %6\$s[/zrl]"] = "%1\$s, %2\$s %3\$s [zrl=%4\$s] %6\$sde %5\$s[/zrl]";
+App::$strings["%1\$s, %2\$s %3\$s [zrl=%4\$s]your %5\$s[/zrl]"] = "%1\$s, %2\$s %3\$s [zrl=%4\$s] ]su %5\$s [/zrl]";
App::$strings["[\$Projectname:Notify] Moderated Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] Comentario moderado en la conversación #%1\$d por %2\$s";
App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] Nuevo comentario de %2\$s en la conversación #%1\$d";
App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha comentado un elemento/conversación que ha estado siguiendo.";
@@ -1729,6 +1775,8 @@ App::$strings["Please visit %s to approve or reject the suggestion."] = "Por fav
App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Aviso]";
App::$strings["created a new post"] = "ha creado una nueva entrada";
App::$strings["commented on %s's post"] = "ha comentado la entrada de %s";
+App::$strings["edited a post dated %s"] = "ha editado una entrada fechada el%s";
+App::$strings["edited a comment dated %s"] = "ha editado un comentario fechado el %s";
App::$strings["Wiki updated successfully"] = "El wiki se ha actualizado con éxito";
App::$strings["Wiki files deleted successfully"] = "Se han borrado con éxito los ficheros del wiki";
App::$strings["Update Error at %s"] = "Error de actualización en %s";
@@ -1867,6 +1915,18 @@ App::$strings["Suggestions"] = "Sugerencias";
App::$strings["See more..."] = "Ver más...";
App::$strings["Saved Folders"] = "Carpetas guardadas";
App::$strings["Click to show more"] = "Hacer clic para ver más";
+App::$strings["Profile Creation"] = "Creación de perfiles";
+App::$strings["Upload profile photo"] = "Cargar la foto del perfil";
+App::$strings["Upload cover photo"] = "Cargar la foto de portada del perfil";
+App::$strings["Edit your profile"] = "Editar su perfil";
+App::$strings["Find and Connect with others"] = "Encontrar y conectarse con otros";
+App::$strings["Manage your connections"] = "Gestionar sus conexiones";
+App::$strings["Communicate"] = "Comunicarse";
+App::$strings["View your channel homepage"] = "Ver la página principal de su canal";
+App::$strings["View your network stream"] = "Ver el \"stream\" de su red";
+App::$strings["Documentation"] = "Documentación";
+App::$strings["View public stream. Warning: not moderated"] = "Ver el \"stream\" público. Advertencia: no está moderado";
+App::$strings["New Member Links"] = "Enlaces para nuevos miembros";
App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación";
App::$strings["Inspect queue"] = "Examinar la cola";
App::$strings["DB updates"] = "Actualizaciones de la base de datos";
@@ -1875,7 +1935,7 @@ App::$strings["Plugin Features"] = "Extensiones";
App::$strings["Account settings"] = "Configuración de la cuenta";
App::$strings["Channel settings"] = "Configuración del canal";
App::$strings["Additional features"] = "Funcionalidades";
-App::$strings["Feature/Addon settings"] = "Complementos";
+App::$strings["Addon settings"] = "Ajustes de los complementos";
App::$strings["Display settings"] = "Ajustes de visualización";
App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal";
App::$strings["Export channel"] = "Exportar canal";
@@ -1888,6 +1948,7 @@ App::$strings["New Network Activity Notifications"] = "Avisos de nueva actividad
App::$strings["View your network activity"] = "Ver su actividad en la red";
App::$strings["Mark all notifications read"] = "Marcar todas las notificaciones como leídas";
App::$strings["Show new posts only"] = "Mostrar solo las entradas nuevas";
+App::$strings["Filter by name"] = "Filtrar por nombre";
App::$strings["New Home Activity"] = "Nueva actividad en su página principal";
App::$strings["New Home Activity Notifications"] = "Avisos de nueva actividad en su página principal";
App::$strings["View your home activity"] = "Ver su actividad en su página principal";
@@ -1911,7 +1972,7 @@ App::$strings["New Registrations"] = "Registros nuevos";
App::$strings["New Registrations Notifications"] = "Notificaciones de nuevos registros";
App::$strings["Public Stream Notifications"] = "Avisos del \"stream\" público";
App::$strings["View the public stream"] = "Ver el \"stream\" público";
-App::$strings["Loading"] = "Cargando";
+App::$strings["Sorry, you have got no notifications at the moment"] = "Lo sentimos, por el momento no ha recibido ninguna notificación";
App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen.";
App::$strings["Create an account to access services and applications"] = "Crear una cuenta para acceder a los servicios y aplicaciones";
App::$strings["Logout"] = "Finalizar sesión";
@@ -1919,7 +1980,6 @@ App::$strings["Login/Email"] = "Inicio de sesión / Correo electrónico";
App::$strings["Password"] = "Contraseña";
App::$strings["Remember me"] = "Recordarme";
App::$strings["Forgot your password?"] = "¿Olvidó su contraseña?";
-App::$strings["toggle mobile"] = "cambiar a modo móvil";
App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Error SSL del sitio web en %s";
App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificado SSL del sitio web no es válido. Por favor, solucione el problema.";
App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Las tareas de Cron no están funcionando en %s";
@@ -2007,11 +2067,11 @@ App::$strings["Preferred IDs Message"] = "Mensaje de IDs preferido";
App::$strings["Message to display above preferred results."] = "Mensaje para mostrar sobre los resultados preferidos.";
App::$strings["Uploaded by: "] = "Subida por: ";
App::$strings["Drawn by: "] = "Creada por: ";
+App::$strings["Use this image"] = "Usar esta imagen";
App::$strings["Or select from a free OpenClipart.org image:"] = "O seleccionar una imagen gratuita de OpenClipart.org: ";
App::$strings["Search Term"] = "Término de búsqueda";
App::$strings["Unknown error. Please try again later."] = "Error desconocido. Por favor, inténtelo otra vez.";
App::$strings["Profile photo updated successfully."] = "Se ha actualizado con éxito la foto de perfil.";
-App::$strings["invalid target signature"] = "La firma recibida no es válida";
App::$strings["Flag Adult Photos"] = "Indicador (\"flag\") de fotos de adultos";
App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada";
App::$strings["Post to WordPress"] = "Publicar en WordPress";
@@ -2048,6 +2108,8 @@ App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth";
App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth";
App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada";
App::$strings["Dreamwidth Post Settings"] = "Ajustes de publicación en Dreamwidth";
+App::$strings["New registration"] = "Nuevo registro";
+App::$strings["Message sent to %s. New account registration: %s"] = "Mensaje enviado a %s. Registro de una nueva cuenta: %s";
App::$strings["Hubzilla Directory Stats"] = "Estadísticas de directorio de Hubzilla";
App::$strings["Total Hubs"] = "Número total de servidores";
App::$strings["Hubzilla Hubs"] = "Servidores (hubs) de Hubzilla";
@@ -2210,6 +2272,7 @@ App::$strings["Mail sent."] = "El correo electrónico ha sido enviado.";
App::$strings["Sending of mail failed."] = "No se pudo enviar el correo.";
App::$strings["Mail Test"] = "Prueba de correo";
App::$strings["Message subject"] = "Asunto del mensaje";
+App::$strings["Use markdown for editing posts"] = "Usar markdown para editar las entradas";
App::$strings["View Larger"] = "Ver más grande";
App::$strings["Tile Server URL"] = "URL del servidor de mosaicos de imágenes ";
App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>";
@@ -2359,7 +2422,7 @@ App::$strings["Invalid game."] = "Juego no válido.";
App::$strings["You are not a player in this game."] = "Usted no participa en este juego.";
App::$strings["You must be a local channel to create a game."] = "Debe ser un canal local para crear un juego";
App::$strings["You must select one opponent that is not yourself."] = "Debe seleccionar un oponente que no sea usted mismo.";
-App::$strings["You must select white or black."] = "Debe elegir blancas o negras.";
+App::$strings["Random color chosen."] = "Elegido un color aleatorio.";
App::$strings["Error creating new game."] = "Error al crear un nuevo juego.";
App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
App::$strings["You must select a local channel /chess/channelname"] = "Debe seleccionar un canal local /chess/nombredelcanal";
@@ -2373,6 +2436,8 @@ App::$strings["Copy the PIN from Twitter here"] = "Copiar aquí el PIN de Twitte
App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido.";
App::$strings["Allow posting to Twitter"] = "Permitir la publicación en Twitter";
App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Si está activado, sus entradas públicas se pueden publicar en la cuenta de Twitter asociada";
+App::$strings["Twitter post length"] = "Longitud del mensaje en Twitter";
+App::$strings["Maximum tweet length"] = "Longitud máxima del tweet";
App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada";
App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada.";
App::$strings["Twitter Post Settings"] = "Ajustes de publicación en Twitter";
@@ -2424,7 +2489,7 @@ App::$strings["If you see this icon you can be sure that the sender is who it sa
App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!";
App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno";
App::$strings["Extended Identity Sharing"] = "Compartir identidad extendida";
-App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Compartir su identidad con todos los sitios web en Internet. Cuando se inhabilita, la identidad sólo se comparte con los sitios de la matriz.";
+App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with \$Projectname sites."] = "Compartir su identidad con todos los sitios web en Internet. Cuando está deshabilitado, la identidad sólo se comparte con sitios de \$Projectname.";
App::$strings["Three Dimensional Tic-Tac-Toe"] = "Juego en 3D Tic-Tac-Toe";
App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
App::$strings["New game"] = "Nuevo juego";
@@ -2573,6 +2638,7 @@ App::$strings["Categories:"] = "Temas:";
App::$strings["Filed under:"] = "Archivado bajo:";
App::$strings["View in context"] = "Mostrar en su contexto";
App::$strings["remove"] = "eliminar";
+App::$strings["Loading..."] = "Cargando...";
App::$strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
App::$strings["View Source"] = "Ver el código fuente de la entrada";
App::$strings["Follow Thread"] = "Seguir este hilo";
@@ -2793,8 +2859,8 @@ App::$strings["Please enter a link URL"] = "Por favor, introduzca una dirección
App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro de que desea abandonar la página?";
App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "antes";
-App::$strings["from now"] = "desde ahora";
+App::$strings["timeago.suffixAgo"] = "timeago.suffixAgo";
+App::$strings["timeago.suffixFromNow"] = "timeago.suffixFromNow";
App::$strings["less than a minute"] = "menos de un minuto";
App::$strings["about a minute"] = "alrededor de un minuto";
App::$strings["%d minutes"] = "%d minutos";
@@ -2887,6 +2953,7 @@ App::$strings["Visible to everybody"] = "Visible para todos";
App::$strings["Gender:"] = "Género:";
App::$strings["Homepage:"] = "Página personal:";
App::$strings["Online Now"] = "Ahora en línea";
+App::$strings["Change your profile photo"] = "Cambiar su foto del perfil";
App::$strings["Trans"] = "Trans";
App::$strings["Like this channel"] = "Me gusta este canal";
App::$strings["j F, Y"] = "j F Y";
@@ -2950,6 +3017,8 @@ App::$strings["card"] = "ficha";
App::$strings["article"] = "artículo";
App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar";
App::$strings["spoiler"] = "spoiler";
+App::$strings["View article"] = "Ver artículo";
+App::$strings["View summary"] = "Ver sumario";
App::$strings["$1 wrote:"] = "$1 escribió:";
App::$strings[" by "] = "por";
App::$strings[" on "] = "en";
@@ -2957,8 +3026,6 @@ App::$strings["Embedded content"] = "Contenido incorporado";
App::$strings["Embedding disabled"] = "Incrustación deshabilitada";
App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s da la bienvenida a %2\$s";
App::$strings["General Features"] = "Funcionalidades básicas";
-App::$strings["Multiple Profiles"] = "Múltiples perfiles";
-App::$strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles";
App::$strings["Advanced Profiles"] = "Perfiles avanzados";
App::$strings["Additional profile sections and selections"] = "Secciones y selecciones de perfil adicionales";
App::$strings["Profile Import/Export"] = "Importar/Exportar perfil";
@@ -2969,21 +3036,33 @@ App::$strings["Provide a wiki for your channel"] = "Proporcionar un wiki para su
App::$strings["Private Notes"] = "Notas privadas";
App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Habilita una herramienta para guardar notas y recordatorios (advertencia: las notas no estarán cifradas)";
App::$strings["Create personal planning cards"] = "Crear fichas de planificación personal";
+App::$strings["Create interactive articles"] = "Crear artículos interactivos";
App::$strings["Navigation Channel Select"] = "Navegación por el selector de canales";
App::$strings["Change channels directly from within the navigation dropdown menu"] = "Cambiar de canales directamente desde el menú de navegación desplegable";
App::$strings["Photo Location"] = "Ubicación de las fotos";
App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa.";
App::$strings["Access Controlled Chatrooms"] = "Salas de chat moderadas";
App::$strings["Provide chatrooms and chat services with access control."] = "Proporcionar salas y servicios de chat moderados.";
-App::$strings["Provide alternate connection permission roles."] = "Proporcionar roles de acceso alternativos para esta conexión.";
App::$strings["Smart Birthdays"] = "Cumpleaños inteligentes";
App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Enlazar los eventos de cumpleaños con el huso horario en el caso de que sus amigos estén dispersos por el mundo.";
App::$strings["Event Timezone Selection"] = "Selección del huso horario del evento";
App::$strings["Allow event creation in timezones other than your own."] = "Permitir la creación de eventos en husos horarios distintos del suyo.";
+App::$strings["Premium Channel"] = "Canal premium";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal";
App::$strings["Advanced Directory Search"] = "Búsqueda avanzada en el directorio";
App::$strings["Allows creation of complex directory search queries"] = "Permitir la creación de consultas complejas en las búsquedas en el directorio";
App::$strings["Advanced Theme and Layout Settings"] = "Ajustes avanzados de temas y esquemas";
App::$strings["Allows fine tuning of themes and page layouts"] = "Permitir el ajuste fino de temas y esquemas de páginas";
+App::$strings["Access Control and Permissions"] = "Control de acceso y permisos";
+App::$strings["Privacy Groups"] = "Grupos de canales";
+App::$strings["Enable management and selection of privacy groups"] = "Activar la gestión y selección de grupos de canales";
+App::$strings["Multiple Profiles"] = "Múltiples perfiles";
+App::$strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles";
+App::$strings["Provide alternate connection permission roles."] = "Proporcionar roles de acceso alternativos para esta conexión.";
+App::$strings["OAuth Clients"] = "Clientes OAuth";
+App::$strings["Manage authenticatication tokens for mobile and remote apps."] = "Administrar tokens de autenticación para aplicaciones móviles y remotas.";
+App::$strings["Access Tokens"] = "Tokens de acceso";
+App::$strings["Create access tokens so that non-members can access private content."] = "Crear tokens de acceso para que los no miembros puedan acceder a contenido privado.";
App::$strings["Post Composition Features"] = "Opciones para la redacción de entradas";
App::$strings["Large Photos"] = "Fotos de gran tamaño";
App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)";
@@ -3003,8 +3082,6 @@ App::$strings["Prevent posts with identical content to be published with less th
App::$strings["Network and Stream Filtering"] = "Filtrado del contenido";
App::$strings["Search by Date"] = "Buscar por fecha";
App::$strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas";
-App::$strings["Privacy Groups"] = "Grupos de canales";
-App::$strings["Enable management and selection of privacy groups"] = "Activar la gestión y selección de grupos de canales";
App::$strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización";
App::$strings["Network Personal Tab"] = "Actividad personal";
App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Habilitar una pestaña en la cual se muestren solo las entradas en las que ha participado.";
@@ -3030,8 +3107,6 @@ App::$strings["Star Posts"] = "Entradas destacadas";
App::$strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella";
App::$strings["Tag Cloud"] = "Nube de etiquetas";
App::$strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal";
-App::$strings["Premium Channel"] = "Canal premium";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal";
App::$strings["Tags"] = "Etiquetas";
App::$strings["Keywords"] = "Palabras clave";
App::$strings["have"] = "tener";
@@ -3093,25 +3168,11 @@ App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
App::$strings["Remote authentication"] = "Acceder desde su servidor";
App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio";
-App::$strings["Network Activity"] = "Actividad de la red";
-App::$strings["Mark all activity notifications seen"] = "Marcar como vistas todas las notificaciones de actividad";
-App::$strings["Channel home"] = "Mi canal";
-App::$strings["View your channel home"] = "Ver su página principal del canal";
-App::$strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones del canal como leídas";
-App::$strings["Registrations"] = "Registros";
-App::$strings["Notifications"] = "Notificaciones";
-App::$strings["View all notifications"] = "Ver todas las notificaciones";
-App::$strings["Mark all system notifications seen"] = "Marcar todas las notificaciones del sistema como leídas";
-App::$strings["Private mail"] = "Correo privado";
-App::$strings["View your private messages"] = "Ver sus mensajes privados";
-App::$strings["Mark all private messages seen"] = "Marcar todos los mensajes privados como leídos";
-App::$strings["Event Calendar"] = "Calendario de eventos";
App::$strings["Manage Your Channels"] = "Gestionar sus canales";
App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales";
App::$strings["End this session"] = "Finalizar esta sesión";
App::$strings["Your profile page"] = "Su página del perfil";
App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles";
-App::$strings["Edit your profile"] = "Editar su perfil";
App::$strings["Sign in"] = "Acceder";
App::$strings["Take me home"] = "Volver a la página principal";
App::$strings["Log me out of this site"] = "Salir de este sitio";
@@ -3133,6 +3194,7 @@ App::$strings["Upload New Photos"] = "Subir nuevas fotos";
App::$strings["Invalid data packet"] = "Paquete de datos no válido";
App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
+App::$strings["invalid target signature"] = "La firma recibida no es válida";
App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente.";
App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales";
App::$strings["edit"] = "editar";
diff --git a/view/es-es/register_verify_member.tpl b/view/es-es/register_verify_member.tpl
index f78a0353a..058c3a3c8 100644
--- a/view/es-es/register_verify_member.tpl
+++ b/view/es-es/register_verify_member.tpl
@@ -10,7 +10,7 @@ Inicie la sesión con la contraseña que eligió durante el registro.
Necesitamos verificar su correo electrónico para poder darle pleno acceso.
-Si registró esta cuenta, por favor, siga el enlace:
+Si registró esta cuenta, por favor, siga el enlace:
{{$siteurl}}/regver/allow/{{$hash}}
diff --git a/view/js/acl.js b/view/js/acl.js
index 6042b43ca..a5fae19bc 100644
--- a/view/js/acl.js
+++ b/view/js/acl.js
@@ -173,11 +173,7 @@ ACL.prototype.on_custom = function(event) {
that.deny_cid = [];
that.deny_gid = [];
- $("#acl-list-content .acl-list-item img[data-src]").each(function(i, el) {
- //Replace data-src attribute with src attribute for every image
- $(el).attr('src', $(el).data("src"));
- $(el).removeAttr("data-src");
- });
+ datasrc2src('#acl-list-content .list-group-item img[data-src]');
that.update_view('custom');
that.on_submit();
@@ -403,7 +399,7 @@ ACL.prototype.get = function(start, count, search) {
ACL.prototype.populate = function(data) {
$(data.items).each(function(){
- html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>";
+ html = "<div class='list-group-item clearfix acl-list-item {4} {7} {5}' id='{2}{3}'>"+that.item_tpl+"</div>";
html = html.format(this.photo, this.name, this.type, this.xid, '', this.self, this.link, this.taggable);
if (this.uids !== undefined) {
that.group_uids[this.xid] = this.uids;
diff --git a/view/js/main.js b/view/js/main.js
index a228e6fbc..98a756fff 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -23,6 +23,17 @@ var mediaPlaying = false;
var contentHeightDiff = 0;
var liveRecurse = 0;
var savedTitle = '';
+var initialLoad = true;
+
+// Clear the session storage if we switch channel or log out
+var cache_uid = '';
+if(sessionStorage.getItem('uid') !== null) {
+ cache_uid = sessionStorage.getItem('uid');
+}
+if(cache_uid !== localUser.toString()) {
+ sessionStorage.clear();
+ sessionStorage.setItem('uid', localUser.toString());
+}
$.ajaxSetup({cache: false});
@@ -54,11 +65,24 @@ $(document).ready(function() {
updateInit();
- $('a[rel^="#"]').click(function(e){
- manage_popup_menu(this, e);
- return;
+ $('a.notification-link').click(function(e){
+ var notifyType = $(this).data('type');
+
+ if(! $('#nav-' + notifyType + '-sub').hasClass('show')) {
+ loadNotificationItems(notifyType);
+ sessionStorage.setItem('notification_open', notifyType);
+ }
+ else {
+ sessionStorage.removeItem('notification_open');
+ }
});
+ if(sessionStorage.getItem('notification_open') !== null) {
+ var notifyType = sessionStorage.getItem('notification_open');
+ $('#nav-' + notifyType + '-sub').addClass('show');
+ loadNotificationItems(notifyType);
+ }
+
// Allow folks to stop the ajax page updates with the pause/break key
$(document).keydown(function(event) {
if(event.keyCode == '8') {
@@ -88,10 +112,19 @@ $(document).ready(function() {
var e = document.getElementById('content-complete');
if(e)
- pageHasMoreContent = false;
+ pageHasMoreContent = false;
+
+ initialLoad = false;
});
+function datasrc2src(selector) {
+ $(selector).each(function(i, el) {
+ $(el).attr("src", $(el).data("src"));
+ $(el).removeAttr("data-src");
+ });
+}
+
function confirmDelete() {
return confirm(aStr.delitem);
}
@@ -271,24 +304,14 @@ function insertCommentURL(comment, id) {
return true;
}
-function viewsrc(id) {
- $.colorbox({href: 'viewsrc/' + id, maxWidth: '80%', maxHeight: '80%' });
+function doFollowAuthor(url) {
+ $.get(url, function(data) { notificationsUpdate(); });
+ return true;
}
-function qCommentInsert(obj, id) {
- var tmpStr = $("#comment-edit-text-" + id).val();
- if(tmpStr == aStr.comment) {
- tmpStr = '';
- $("#comment-edit-text-" + id).addClass("expanded");
- openMenu("comment-edit-submit-wrapper-" + id);
- }
- var ins = $(obj).val();
- ins = ins.replace('&lt;','<');
- ins = ins.replace('&gt;','>');
- ins = ins.replace('&amp;','&');
- ins = ins.replace('&quot;','"');
- $("#comment-edit-text-" + id).val(tmpStr + ins);
- $(obj).val('');
+
+function viewsrc(id) {
+ $.colorbox({href: 'viewsrc/' + id, maxWidth: '80%', maxHeight: '80%' });
}
function showHideComments(id) {
@@ -340,6 +363,9 @@ function closeMenu(theID) {
function markRead(notifType) {
$.get('ping?f=&markRead='+notifType);
$('.' + notifType + '-button').hide();
+ $('#nav-' + notifType + '-sub').removeClass('show');
+ sessionStorage.removeItem(notifType + '_notifications_cache');
+ sessionStorage.removeItem('notification_open');
if(timer) clearTimeout(timer);
timer = setTimeout(updateInit,2000);
}
@@ -349,73 +375,112 @@ function markItemRead(itemId) {
$('.unseen-wall-indicator-'+itemId).hide();
}
-function manage_popup_menu(w,e) {
- menu = $( $(w).attr('rel') );
+function notificationsUpdate(cached_data) {
+ var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : '');
- /* notification menus are loaded dynamically
- * - here we find a rel tag to figure out what type of notification to load */
+ if(cached_data !== undefined) {
+ handleNotifications(cached_data);
+ }
+ else {
+ $.get(pingCmd,function(data) {
+
+ // Put the object into storage
+ sessionStorage.setItem('notifications_cache', JSON.stringify(data));
+
+ if(data.invalid == 1) {
+ window.location.href=window.location.href;
+ }
+
+ handleNotifications(data);
- var loader_source = $(menu).attr('rel');
+ $.jGrowl.defaults.closerTemplate = '<div>[ ' + aStr.closeAll + ']</div>';
- if(typeof(loader_source) != 'undefined' && loader_source.length) {
- notify_popup_loader(loader_source);
+ $(data.notice).each(function() {
+ $.jGrowl(this.message, { sticky: true, theme: 'notice' });
+ });
+
+ $(data.info).each(function(){
+ $.jGrowl(this.message, { sticky: false, theme: 'info', life: 10000 });
+ });
+ });
+ }
+
+ var notifyType = null;
+ if($('.notification-content.show').length) {
+ notifyType = $('.notification-content.show').data('type');
+ }
+ if(notifyType !== null) {
+ loadNotificationItems(notifyType);
}
+
+ if(timer) clearTimeout(timer);
+ timer = setTimeout(updateInit,updateInterval);
}
-function notificationsUpdate() {
- var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : '');
+function handleNotifications(data) {
+ if(data.network || data.home || data.intros || data.register || data.mail || data.all_events || data.notify || data.files || data.pubs) {
+ $('.notifications-btn').css('opacity', 1);
+ $('#no_notifications').hide();
+ }
+ else {
+ $('.notifications-btn').css('opacity', 0.5);
+ $('#navbar-collapse-1').removeClass('show');
+ $('#no_notifications').show();
+ }
- $.get(pingCmd,function(data) {
+ if(data.home || data.intros || data.register || data.mail || data.notify || data.files) {
+ $('.notifications-btn-icon').removeClass('fa-exclamation-circle');
+ $('.notifications-btn-icon').addClass('fa-exclamation-triangle');
+ }
+ if(!data.home && !data.intros && !data.register && !data.mail && !data.notify && !data.files) {
+ $('.notifications-btn-icon').removeClass('fa-exclamation-triangle');
+ $('.notifications-btn-icon').addClass('fa-exclamation-circle');
+ }
- if(data.invalid == 1) {
- window.location.href=window.location.href;
- }
+ $.each(data, function(index, item) {
+ //do not process those
+ var arr = ['notice', 'info', 'invalid'];
+ if(arr.indexOf(index) !== -1)
+ return;
- if(data.network || data.home || data.intros || data.register || data.mail || data.all_events || data.notify || data.files || data.pubs) {
- $('.notifications-btn').css('opacity', 1);
- $('#no_notifications').hide();
- }
- else {
- $('.notifications-btn').css('opacity', 0.5);
- $('#navbar-collapse-1').removeClass('show');
- $('#no_notifications').show();
+ if(item == 0) {
+ $('.' + index + '-button').fadeOut();
+ sessionStorage.removeItem(index + '_notifications_cache');
+ } else {
+ $('.' + index + '-button').fadeIn();
+ $('.' + index + '-update').html(item);
}
+ });
+}
- if(data.home || data.intros || data.register || data.mail || data.notify || data.files) {
- $('.notifications-btn-icon').removeClass('fa-exclamation-circle');
- $('.notifications-btn-icon').addClass('fa-exclamation-triangle');
- }
- if(!data.home && !data.intros && !data.register && !data.mail && !data.notify && !data.files) {
- $('.notifications-btn-icon').removeClass('fa-exclamation-triangle');
- $('.notifications-btn-icon').addClass('fa-exclamation-circle');
- }
+function handleNotificationsItems(notifyType, data) {
+ var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
+ var notify_menu = $("#nav-" + notifyType + "-menu");
- $.each(data, function(index, item) {
- //do not process those
- var arr = ['notice', 'info', 'invalid'];
- if(arr.indexOf(index) !== -1)
- return;
+ notify_menu.html('');
- if(item == 0) {
- $('.' + index + '-button').fadeOut();
- } else {
- $('.' + index + '-button').fadeIn();
- $('.' + index + '-update').html(item);
- }
- });
+ $(data).each(function() {
+ html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top);
+ notify_menu.append(html);
+ });
- $.jGrowl.defaults.closerTemplate = '<div>[ ' + aStr.closeAll + ']</div>';
+ datasrc2src('#notifications .notification img[data-src]');
- $(data.notice).each(function() {
- $.jGrowl(this.message, { sticky: true, theme: 'notice' });
- });
+ if($('#tt-' + notifyType + '-only').hasClass('active'))
+ $('#nav-' + notifyType + '-menu [data-thread_top=false]').hide();
- $(data.info).each(function(){
- $.jGrowl(this.message, { sticky: false, theme: 'info', life: 10000 });
- });
- })
- if(timer) clearTimeout(timer);
- timer = setTimeout(updateInit,updateInterval);
+ if($('#cn-' + notifyType + '-input').length) {
+ var filter = $('#cn-' + notifyType + '-input').val().toString().toLowerCase();
+ if(filter) {
+ $('#nav-' + notifyType + '-menu .notification').each(function(i, el){
+ var cn = $(el).data('contact_name').toString().toLowerCase();
+ if(cn.indexOf(filter) === -1)
+ $(el).addClass('d-none');
+ else
+ $(el).removeClass('d-none');
+ });
+ }
+ }
}
function contextualHelp() {
@@ -680,6 +745,11 @@ function updateInit() {
// if($('#live-cards').length) { src = 'cards'; }
// if($('#live-articles').length) { src = 'articles'; }
+ if (initialLoad && (sessionStorage.getItem('notifications_cache') !== null)) {
+ var cached_data = JSON.parse(sessionStorage.getItem('notifications_cache'));
+ notificationsUpdate(cached_data);
+ }
+
if(! src) {
notificationsUpdate();
}
@@ -709,6 +779,9 @@ function liveUpdate(notify_id) {
return;
}
+ if(timer)
+ clearTimeout(timer);
+
if(livetime !== null)
livetime = null;
@@ -765,7 +838,7 @@ function liveUpdate(notify_id) {
// else data was valid - reset the recursion counter
liveRecurse = 0;
- if(typeof notify_id !== 'undefined') {
+ if(typeof notify_id !== 'undefined' && notify_id !== 'undefined') {
$.post(
"hq",
{
@@ -869,54 +942,35 @@ function justifyPhotosAjax(id) {
$('#' + id).justifiedGallery('norewind').on('jg.complete', function(e){ justifiedGalleryActive = false; });
}
-function notify_popup_loader(notifyType) {
+function loadNotificationItems(notifyType) {
+ var pingExCmd = 'ping/' + notifyType + ((localUser != 0) ? '?f=&uid=' + localUser : '');
- /* notifications template - different for navbar and notifications widget */
- var navbar_notifications_tpl= unescape($("#navbar-notifications-template[rel=template]").html());
- var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
- var notifications_all = unescape($('<div>').append( $("#nav-" + notifyType + "-see-all").clone() ).html()); //outerHtml hack
- var notifications_mark = unescape($('<div>').append( $("#nav-" + notifyType + "-mark-all").clone() ).html()); //outerHtml hack
- var notifications_tt_only = unescape($('<div>').append( $("#tt-" + notifyType + "-only").clone() ).html()); //outerHtml hack
- var notifications_empty = unescape($("#nav-" + notifyType + "-menu").html());
+ var clicked = $('[data-type=\'' + notifyType + '\']').data('clicked');
- var notify_menu = $("#nav-" + notifyType + "-menu");
+ if((clicked === undefined) && (sessionStorage.getItem(notifyType + '_notifications_cache') !== null)) {
+ var cached_data = JSON.parse(sessionStorage.getItem(notifyType + '_notifications_cache'));
+ handleNotificationsItems(notifyType, cached_data);
+ $('[data-type=\'' + notifyType + '\']').data('clicked',true);
+ console.log('updating ' + notifyType + ' notifications from cache...');
+ }
+ else {
+ var cached_data = [];
+ }
- var pingExCmd = 'ping/' + notifyType + ((localUser != 0) ? '?f=&uid=' + localUser : '');
+ console.log('updating ' + notifyType + ' notifications...');
$.get(pingExCmd, function(data) {
-
- if(data.invalid == 1) {
+ if(data.invalid == 1) {
window.location.href=window.location.href;
}
- $("#navbar-" + notifyType + "-menu").html(notifications_all + notifications_mark + notifications_tt_only);
- $("#nav-" + notifyType + "-menu").html(notifications_all + notifications_mark + notifications_tt_only);
-
- $("." + notifyType + "-update").html(data.notify.length);
-
- $(data.notify).each(function() {
- html = navbar_notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top);
- $("#navbar-" + notifyType + "-menu").append(html);
- html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top);
- $("#nav-" + notifyType + "-menu").append(html);
- });
-
- $(".dropdown-menu img[data-src], .notification img[data-src]").each(function(i, el){
- // Replace data-src attribute with src attribute for every image
- $(el).attr('src', $(el).data("src"));
- $(el).removeAttr("data-src");
- });
-
- if($('#tt-' + notifyType + '-only').hasClass('active'))
- $('#nav-' + notifyType + '-menu [data-thread_top=false]').hide();
- });
-
-
- setTimeout(function() {
- if(notify_menu.hasClass('show')) {
- console.log('updating ' + notifyType + ' notifications...');
- setTimeout(notify_popup_loader, updateInterval, notifyType);
+ if(JSON.stringify(cached_data[0]) === JSON.stringify(data.notify[0])) {
+ console.log(notifyType + ' notifications cache up to date - update deferred');
}
- }, 1000);
+ else {
+ handleNotificationsItems(notifyType, data.notify);
+ sessionStorage.setItem(notifyType + '_notifications_cache', JSON.stringify(data.notify));
+ }
+ });
}
// Since our ajax calls are asynchronous, we will give a few
diff --git a/view/js/mod_new_channel.js b/view/js/mod_new_channel.js
index e670e1a35..e78de2596 100644
--- a/view/js/mod_new_channel.js
+++ b/view/js/mod_new_channel.js
@@ -1,5 +1,7 @@
$(document).ready(function() {
-// $("#id_permissions_role").sSelect();
+
+ $("#newchannel-submit-button").attr('disabled','disabled');
+
$("#id_name").blur(function() {
$("#name-spinner").show();
var zreg_name = $("#id_name").val();
@@ -9,21 +11,33 @@
$("#help_name").html("");
zFormError("#help_name",data.error);
}
+ else {
+ $("#newchannel-submit-button").removeAttr('disabled');
+ }
$("#name-spinner").hide();
});
});
- $("#id_nickname").blur(function() {
- $("#nick-spinner").show();
- var zreg_nick = $("#id_nickname").val();
- $.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) {
- $("#id_nickname").val(data);
- if(data.error) {
- $("#help_nickname").html("");
- zFormError("#help_nickname",data.error);
- }
- $("#nick-spinner").hide();
- });
+ $("#id_nickname").click(function() {
+ $("#newchannel-submit-button").attr('disabled','disabled');
});
});
+
+
+ function validate_channel() {
+ $("#nick-spinner").show();
+ var zreg_nick = $("#id_nickname").val();
+ $.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) {
+ $("#id_nickname").val(data);
+ if(data.error) {
+ $("#help_nickname").html("");
+ zFormError("#help_nickname",data.error);
+ }
+ else {
+ $("#newchannel-submit-button").removeAttr('disabled');
+ }
+ $("#nick-spinner").hide();
+ });
+
+ }
diff --git a/view/pdl/mod_admin.pdl b/view/pdl/mod_admin.pdl
index deee4551b..1cf49750d 100644
--- a/view/pdl/mod_admin.pdl
+++ b/view/pdl/mod_admin.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_appman.pdl b/view/pdl/mod_appman.pdl
index d2b1379a5..8bd407372 100644
--- a/view/pdl/mod_appman.pdl
+++ b/view/pdl/mod_appman.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_apps.pdl b/view/pdl/mod_apps.pdl
index d2b1379a5..8bd407372 100644
--- a/view/pdl/mod_apps.pdl
+++ b/view/pdl/mod_apps.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_articles.pdl b/view/pdl/mod_articles.pdl
index c7599a008..b823787f4 100644
--- a/view/pdl/mod_articles.pdl
+++ b/view/pdl/mod_articles.pdl
@@ -5,4 +5,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_blocks.pdl b/view/pdl/mod_blocks.pdl
index 6ef7993b5..4a90a4f36 100644
--- a/view/pdl/mod_blocks.pdl
+++ b/view/pdl/mod_blocks.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_cal.pdl b/view/pdl/mod_cal.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_cal.pdl
+++ b/view/pdl/mod_cal.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_cards.pdl b/view/pdl/mod_cards.pdl
index f5606dcb8..f0403e380 100644
--- a/view/pdl/mod_cards.pdl
+++ b/view/pdl/mod_cards.pdl
@@ -5,4 +5,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_cdav.pdl b/view/pdl/mod_cdav.pdl
index d31308d90..c0f9a511f 100644
--- a/view/pdl/mod_cdav.pdl
+++ b/view/pdl/mod_cdav.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_channel.pdl b/view/pdl/mod_channel.pdl
index f7ac0b4ef..5857fca95 100644
--- a/view/pdl/mod_channel.pdl
+++ b/view/pdl/mod_channel.pdl
@@ -10,4 +10,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_chanview.pdl b/view/pdl/mod_chanview.pdl
index 5c8ca77d5..a5461df50 100644
--- a/view/pdl/mod_chanview.pdl
+++ b/view/pdl/mod_chanview.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_chat.pdl b/view/pdl/mod_chat.pdl
index 2f1f5c8d1..808ba3d5a 100644
--- a/view/pdl/mod_chat.pdl
+++ b/view/pdl/mod_chat.pdl
@@ -7,4 +7,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_cloud.pdl b/view/pdl/mod_cloud.pdl
index 5c8ca77d5..a5461df50 100644
--- a/view/pdl/mod_cloud.pdl
+++ b/view/pdl/mod_cloud.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_common.pdl b/view/pdl/mod_common.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_common.pdl
+++ b/view/pdl/mod_common.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_connect.pdl b/view/pdl/mod_connect.pdl
index 23b8d9f71..d7e5d29f3 100644
--- a/view/pdl/mod_connect.pdl
+++ b/view/pdl/mod_connect.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_connections.pdl b/view/pdl/mod_connections.pdl
index 7cead4fe8..b777cada5 100644
--- a/view/pdl/mod_connections.pdl
+++ b/view/pdl/mod_connections.pdl
@@ -6,4 +6,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_connedit.pdl b/view/pdl/mod_connedit.pdl
index 3f57ed87b..4bdadb5e8 100644
--- a/view/pdl/mod_connedit.pdl
+++ b/view/pdl/mod_connedit.pdl
@@ -6,4 +6,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_defperms.pdl b/view/pdl/mod_defperms.pdl
index 53a3ac9e5..37c85c765 100644
--- a/view/pdl/mod_defperms.pdl
+++ b/view/pdl/mod_defperms.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_directory.pdl b/view/pdl/mod_directory.pdl
index 7b430738b..2e408c29f 100644
--- a/view/pdl/mod_directory.pdl
+++ b/view/pdl/mod_directory.pdl
@@ -6,4 +6,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_display.pdl b/view/pdl/mod_display.pdl
index e657fa88b..95f069031 100644
--- a/view/pdl/mod_display.pdl
+++ b/view/pdl/mod_display.pdl
@@ -1,3 +1,4 @@
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_editblock.pdl b/view/pdl/mod_editblock.pdl
index 6ef7993b5..4a90a4f36 100644
--- a/view/pdl/mod_editblock.pdl
+++ b/view/pdl/mod_editblock.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_editlayout.pdl b/view/pdl/mod_editlayout.pdl
index 6ef7993b5..4a90a4f36 100644
--- a/view/pdl/mod_editlayout.pdl
+++ b/view/pdl/mod_editlayout.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_editwebpage.pdl b/view/pdl/mod_editwebpage.pdl
index 6ef7993b5..4a90a4f36 100644
--- a/view/pdl/mod_editwebpage.pdl
+++ b/view/pdl/mod_editwebpage.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_events.pdl b/view/pdl/mod_events.pdl
index b26f3b0d0..e9a91e219 100644
--- a/view/pdl/mod_events.pdl
+++ b/view/pdl/mod_events.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_go.pdl b/view/pdl/mod_go.pdl
new file mode 100644
index 000000000..7e15fc869
--- /dev/null
+++ b/view/pdl/mod_go.pdl
@@ -0,0 +1,7 @@
+[region=aside]
+[widget=fullprofile][/widget]
+[/region]
+[region=right_aside]
+[widget=notifications][/widget]
+[widget=newmember][/widget]
+[/region]
diff --git a/view/pdl/mod_group.pdl b/view/pdl/mod_group.pdl
index 0a31e17d9..34eb7ddd1 100644
--- a/view/pdl/mod_group.pdl
+++ b/view/pdl/mod_group.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_help.pdl b/view/pdl/mod_help.pdl
index 2eab7aa63..4bb380cc9 100644
--- a/view/pdl/mod_help.pdl
+++ b/view/pdl/mod_help.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_hq.pdl b/view/pdl/mod_hq.pdl
index 450fcb9a7..1bcdb2c65 100644
--- a/view/pdl/mod_hq.pdl
+++ b/view/pdl/mod_hq.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_id.pdl b/view/pdl/mod_id.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_id.pdl
+++ b/view/pdl/mod_id.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_layouts.pdl b/view/pdl/mod_layouts.pdl
index 6ef7993b5..4a90a4f36 100644
--- a/view/pdl/mod_layouts.pdl
+++ b/view/pdl/mod_layouts.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_locs.pdl b/view/pdl/mod_locs.pdl
index 53a3ac9e5..37c85c765 100644
--- a/view/pdl/mod_locs.pdl
+++ b/view/pdl/mod_locs.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_mail.pdl b/view/pdl/mod_mail.pdl
index 52f908919..d572b7244 100644
--- a/view/pdl/mod_mail.pdl
+++ b/view/pdl/mod_mail.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_menu.pdl b/view/pdl/mod_menu.pdl
index 6ef7993b5..4a90a4f36 100644
--- a/view/pdl/mod_menu.pdl
+++ b/view/pdl/mod_menu.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_message.pdl b/view/pdl/mod_message.pdl
index f9dd8f623..3f1dd594f 100644
--- a/view/pdl/mod_message.pdl
+++ b/view/pdl/mod_message.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_mitem.pdl b/view/pdl/mod_mitem.pdl
index 4db06cb49..0cca7fd85 100644
--- a/view/pdl/mod_mitem.pdl
+++ b/view/pdl/mod_mitem.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_moderate.pdl b/view/pdl/mod_moderate.pdl
new file mode 100644
index 000000000..95f069031
--- /dev/null
+++ b/view/pdl/mod_moderate.pdl
@@ -0,0 +1,4 @@
+[region=right_aside]
+[widget=notifications][/widget]
+[widget=newmember][/widget]
+[/region]
diff --git a/view/pdl/mod_network.pdl b/view/pdl/mod_network.pdl
index 44e29ffbd..09fdba573 100644
--- a/view/pdl/mod_network.pdl
+++ b/view/pdl/mod_network.pdl
@@ -14,4 +14,5 @@ $content
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_photos.pdl b/view/pdl/mod_photos.pdl
index 4d1a5b2ea..6a3d30b1c 100644
--- a/view/pdl/mod_photos.pdl
+++ b/view/pdl/mod_photos.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_profile.pdl b/view/pdl/mod_profile.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_profile.pdl
+++ b/view/pdl/mod_profile.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_profile_photo.pdl b/view/pdl/mod_profile_photo.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_profile_photo.pdl
+++ b/view/pdl/mod_profile_photo.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_profiles.pdl b/view/pdl/mod_profiles.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_profiles.pdl
+++ b/view/pdl/mod_profiles.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_profperm.pdl b/view/pdl/mod_profperm.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_profperm.pdl
+++ b/view/pdl/mod_profperm.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_pubstream.pdl b/view/pdl/mod_pubstream.pdl
index e657fa88b..95f069031 100644
--- a/view/pdl/mod_pubstream.pdl
+++ b/view/pdl/mod_pubstream.pdl
@@ -1,3 +1,4 @@
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_rate.pdl b/view/pdl/mod_rate.pdl
index 5c8ca77d5..a5461df50 100644
--- a/view/pdl/mod_rate.pdl
+++ b/view/pdl/mod_rate.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_ratings.pdl b/view/pdl/mod_ratings.pdl
index cfa39e408..f6e87cb7c 100644
--- a/view/pdl/mod_ratings.pdl
+++ b/view/pdl/mod_ratings.pdl
@@ -7,4 +7,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_search.pdl b/view/pdl/mod_search.pdl
index e69657dac..ed1f77c5a 100644
--- a/view/pdl/mod_search.pdl
+++ b/view/pdl/mod_search.pdl
@@ -2,4 +2,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_settings.pdl b/view/pdl/mod_settings.pdl
index 53a3ac9e5..37c85c765 100644
--- a/view/pdl/mod_settings.pdl
+++ b/view/pdl/mod_settings.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_sharedwithme.pdl b/view/pdl/mod_sharedwithme.pdl
index e657fa88b..95f069031 100644
--- a/view/pdl/mod_sharedwithme.pdl
+++ b/view/pdl/mod_sharedwithme.pdl
@@ -1,3 +1,4 @@
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_sources.pdl b/view/pdl/mod_sources.pdl
index 53a3ac9e5..37c85c765 100644
--- a/view/pdl/mod_sources.pdl
+++ b/view/pdl/mod_sources.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_suggest.pdl b/view/pdl/mod_suggest.pdl
index 392a36dd6..b74391cba 100644
--- a/view/pdl/mod_suggest.pdl
+++ b/view/pdl/mod_suggest.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_thing.pdl b/view/pdl/mod_thing.pdl
new file mode 100644
index 000000000..7e15fc869
--- /dev/null
+++ b/view/pdl/mod_thing.pdl
@@ -0,0 +1,7 @@
+[region=aside]
+[widget=fullprofile][/widget]
+[/region]
+[region=right_aside]
+[widget=notifications][/widget]
+[widget=newmember][/widget]
+[/region]
diff --git a/view/pdl/mod_uexport.pdl b/view/pdl/mod_uexport.pdl
index 53a3ac9e5..37c85c765 100644
--- a/view/pdl/mod_uexport.pdl
+++ b/view/pdl/mod_uexport.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_viewconnections.pdl b/view/pdl/mod_viewconnections.pdl
index c34898dd5..7e15fc869 100644
--- a/view/pdl/mod_viewconnections.pdl
+++ b/view/pdl/mod_viewconnections.pdl
@@ -3,4 +3,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_webpages.pdl b/view/pdl/mod_webpages.pdl
index 4e60dc2a7..d13bf8862 100644
--- a/view/pdl/mod_webpages.pdl
+++ b/view/pdl/mod_webpages.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/pdl/mod_wiki.pdl b/view/pdl/mod_wiki.pdl
index 1b98b6379..be86be7e3 100644
--- a/view/pdl/mod_wiki.pdl
+++ b/view/pdl/mod_wiki.pdl
@@ -4,4 +4,5 @@
[/region]
[region=right_aside]
[widget=notifications][/widget]
+[widget=newmember][/widget]
[/region]
diff --git a/view/php/theme_init.php b/view/php/theme_init.php
index 1e066c570..f2c46da28 100644
--- a/view/php/theme_init.php
+++ b/view/php/theme_init.php
@@ -15,7 +15,7 @@ head_add_js('jquery.js');
head_add_js('/library/justifiedGallery/jquery.justifiedGallery.min.js');
head_add_js('/library/sprintf.js/dist/sprintf.min.js');
-head_add_js('jquery.textinputs.js');
+//head_add_js('jquery.textinputs.js');
head_add_js('autocomplete.js');
head_add_js('/library/jquery-textcomplete/jquery.textcomplete.js');
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index b0a109c92..dfd03707f 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -381,14 +381,9 @@ footer {
margin: 15px 0px;
}
-#cropimage-wrapper, #cropimage-preview-wrapper {
- float: left;
- padding: 30px;
-}
-
-#crop-image-form {
- margin-top: 30px;
- clear: both;
+#cropimage-wrapper,
+#cropimage-preview-wrapper {
+ margin-bottom: 10px;
}
.fn {
@@ -609,14 +604,6 @@ footer {
padding: .15rem .5rem;
}
-#nav-search-text::-webkit-input-placeholder {
- font-family: FontAwesome, sans-serif;
-}
-
-#nav-search-text::-moz-placeholder {
- font-family: FontAwesome, sans-serif;
-}
-
nav .acpopup {
top: 46px !important;
margin-left: -35px;
@@ -847,21 +834,12 @@ div.jGrowl div.jGrowl-notification {
#acl-search::-webkit-input-placeholder {
/* non-fontawesome fonts set a fallback for text parts of the placeholder*/
- font-family: FontAwesome, sans-serif, arial, freesans;
+ font-family: ForkAwesome, sans-serif, arial, freesans;
}
#acl-search::-moz-placeholder {
/* non-fontawesome fonts set a fallback for text parts of the placeholder*/
- font-family: FontAwesome, sans-serif, arial, freesans;
-}
-
-.acl-list-item {
- width: 100%;
- padding: 0.5rem;
- margin-bottom: 0.5rem;
- border: 1px solid #ccc;
- float: left;
- border-radius: $radius;
+ font-family: ForkAwesome, sans-serif, arial, freesans;
}
.acl-item-header {
@@ -870,10 +848,12 @@ div.jGrowl div.jGrowl-notification {
.acl-list-item.grouphide {
border: 1px solid red;
+ z-index: 2;
}
.acl-list-item.groupshow {
border: 1px solid green;
+ z-index: 2;
}
.acl-list-item.taggable {
@@ -1805,3 +1785,8 @@ dl.bb-dl > dd > li {
.caption-visible {
max-height: 75%;
}
+
+.oneway-overlay {
+ position: absolute;
+ text-shadow: -2px 0 1px #fff, 0 2px 1px#fff, 2px 0 1px #fff, 0 -2px 1px #fff;
+}
diff --git a/view/theme/redbasic/img/screenshot.jpg b/view/theme/redbasic/img/screenshot.jpg
deleted file mode 100644
index ac9258bd6..000000000
--- a/view/theme/redbasic/img/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/view/theme/redbasic/img/screenshot.png b/view/theme/redbasic/img/screenshot.png
new file mode 100644
index 000000000..60d7e23f6
--- /dev/null
+++ b/view/theme/redbasic/img/screenshot.png
Binary files differ
diff --git a/view/theme/redbasic/php/theme_init.php b/view/theme/redbasic/php/theme_init.php
index b12d80ea5..d9750de42 100644
--- a/view/theme/redbasic/php/theme_init.php
+++ b/view/theme/redbasic/php/theme_init.php
@@ -1,6 +1,6 @@
<?php
-head_add_css('/library/font_awesome/css/font-awesome.min.css');
+head_add_css('/library/fork-awesome/css/fork-awesome.min.css');
head_add_css('/library/bootstrap/css/bootstrap.min.css');
head_add_css('/library/bootstrap-tagsinput/bootstrap-tagsinput.css');
head_add_css('/view/css/bootstrap-red.css');
@@ -8,8 +8,7 @@ head_add_css('/library/datetimepicker/jquery.datetimepicker.css');
head_add_css('/library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css');
require_once('view/php/theme_init.php');
-head_add_js('/library/popper/popper.min.js');
-head_add_js('/library/bootstrap/js/bootstrap.min.js');
+head_add_js('/library/bootstrap/js/bootstrap.bundle.min.js');
head_add_js('/library/bootbox/bootbox.min.js');
head_add_js('/library/bootstrap-tagsinput/bootstrap-tagsinput.js');
head_add_js('/library/datetimepicker/jquery.datetimepicker.js');
diff --git a/view/theme/redbasic/schema/dark.css b/view/theme/redbasic/schema/dark.css
index 0a142a07f..d0154bfb1 100644
--- a/view/theme/redbasic/schema/dark.css
+++ b/view/theme/redbasic/schema/dark.css
@@ -15,13 +15,26 @@ textarea, input, select
padding: 10px 0;
}
+#jot-title {
+ border-radius: 3px;
+}
+
#jot-title-wrap {
border-bottom: none;
margin-bottom: 5px;
}
+#jot-category-wrap {
+ border-bottom: none;
+ margin-bottom: 5px;
+}
+
+.bootstrap-tagsinput {
+ background: #333;
+}
+
optgroup {
- color: #CCC !important;
+ color: #CCC !important;
}
option {
@@ -132,7 +145,7 @@ option {
.abook-self {
border: 1px solid #222;
color: #555;
- background-color:#111;
+ background-color:#111;
}
.modal-content {
@@ -208,7 +221,7 @@ a.btn, aside a {
}
.btn-danger:hover, .btn-danger:focus, form#chat-destroy > input:hover, form#chat-destroy > input:focus {
color: #FFF !important;
- background-color: #C9302C !important;
+ background-color: #C9302C !important;
border-color: #AC2925 !important;
}
@@ -278,7 +291,7 @@ nav .dropdown-menu {
border-bottom:1px solid #333;
}
-.nav-tabs .nav-link.active {
+.nav-tabs .nav-link.active {
color: #fff;
background-color: #111;
border-color: #333;
@@ -297,7 +310,7 @@ aside .nav > li > a:hover, aside .nav > li > a:focus {
background-color: #222;
}
-a, a:visited, a:link, .fakelink, .fakelink:visited, .fakelink:link {
+a, a:visited, a:link, .fakelink, .fakelink:visited, .fakelink:link {
font-weight: bold;
}
@@ -343,6 +356,10 @@ pre {
border:1px solid #090909;
}
+#wiki-content-container code {
+ background: #000;
+}
+
.notif-item a {
color: #ccc;
}
@@ -352,23 +369,23 @@ pre {
}
.dropdown-menu {
- background-color: #222;
+ background-color: #222;
}
.dropdown-menu >li > a {
- color: #ccc;
+ color: #ccc;
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
- color: #ddd;
- background-color: #333;
+ color: #ddd;
+ background-color: #333;
background-image: none;
}
.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
- color: #ccc;
- background-color: #222;
- border-color: #222;
+ color: #ccc;
+ background-color: #222;
+ border-color: #222;
}
.pmenu-item:hover a {
@@ -444,7 +461,7 @@ pre {
.profile-match-wrapper {
- width: 150px;
+ width: 150px;
height: 120px;
border: none;
}
@@ -462,5 +479,3 @@ pre {
.widget-nav-pills-checkbox:hover + a {
background-color: #222;
}
-
-
diff --git a/view/tpl/abook_edit.tpl b/view/tpl/abook_edit.tpl
index 81c182e1b..d72258fa0 100755
--- a/view/tpl/abook_edit.tpl
+++ b/view/tpl/abook_edit.tpl
@@ -215,7 +215,7 @@
<span id="vcard-preview-{{$vcard.id}}" class="vcard-preview">
{{if $vcard.fn}}<span class="vcard-fn-preview">{{$vcard.fn}}</span>{{/if}}
{{if $vcard.emails.0.address}}<span class="vcard-email-preview d-none d-md-table-cell"><a href="mailto:{{$vcard.emails.0.address}}">{{$vcard.emails.0.address}}</a></span>{{/if}}
- {{if $vcard.tels.0}}<span class="vcard-tel-preview d-none d-md-table-cell">{{$vcard.tels.0.nr}}{{if $is_mobile}} <a class="btn btn-outline-secondary btn-sm" href="tel:{{$vcard.tels.0.nr}}"><i class="fa fa-phone connphone"></i></a>{{/if}}</span>{{/if}}
+ {{if $vcard.tels.0}}<span class="vcard-tel-preview d-none d-md-table-cell">{{$vcard.tels.0.nr}} <a class="btn btn-outline-secondary btn-sm" href="tel:{{$vcard.tels.0.nr}}"><i class="fa fa-phone connphone"></i></a></span>{{/if}}
</span>
<input id="vcard-fn-{{$vcard.id}}" class="vcard-fn" type="text" name="fn" value="{{$vcard.fn}}" size="{{$vcard.fn|count_characters:true}}" placeholder="{{$name_label}}">
</div>
diff --git a/view/tpl/acl_selector.tpl b/view/tpl/acl_selector.tpl
index f4f851c8a..3d05cb455 100755
--- a/view/tpl/acl_selector.tpl
+++ b/view/tpl/acl_selector.tpl
@@ -31,15 +31,17 @@
<div id="acl-wrapper">
<div id="acl-list">
- <input class="form-control" type="text" id="acl-search" placeholder="&#xf002; {{$search}}">
+ <input class="form-control" type="text" id="acl-search" placeholder="&#xf002;" title="{{$search}}">
<small class="text-muted">{{$showlimitedDesc}}</small>
<div id="acl-list-content"></div>
</div>
</div>
- <div class="acl-list-item" rel="acl-template" style="display:none">
- <div class="acl-item-header">
- <img class="menu-img-1" data-src="{0}"> {1}
+ <div class="list-group-item acl-list-item" rel="acl-template" style="display:none">
+ <div class="acl-item-header clearfix">
+ <img class="menu-img-3" data-src="{0}">
+ <span class="contactname">{1}</span>
+ <span class="dropdown-sub-text">{6}</span>
</div>
<button class="acl-button-hide btn btn-sm btn-outline-danger"><i class="fa fa-times"></i> {{$hide}}</button>
<button class="acl-button-show btn btn-sm btn-outline-success"><i class="fa fa-check"></i> {{$show}}</button>
diff --git a/view/tpl/admin_accounts.tpl b/view/tpl/admin_accounts.tpl
index 3535363a0..d6c9591fd 100755
--- a/view/tpl/admin_accounts.tpl
+++ b/view/tpl/admin_accounts.tpl
@@ -41,7 +41,7 @@
</tbody>
</table>
<div class="selectall"><a href="#" onclick="return toggle_selectall('pending_ckbx');">{{$select_all}}</a></div>
- <div class="submit"><input type="submit" name="page_users_deny" value="{{$deny}}"> <input type="submit" name="page_users_approve" value="{{$approve}}"></div>
+ <div class="submit"><input type="submit" name="page_accounts_deny" value="{{$deny}}"> <input type="submit" name="page_accounts_approve" value="{{$approve}}"></div>
{{else}}
<p>{{$no_pending}}</p>
{{/if}}
@@ -80,7 +80,7 @@
</tbody>
</table>
<div class="selectall"><a href="#" onclick="return toggle_selectall('users_ckbx');">{{$select_all}}</a></div>
- <div class="submit"><input type="submit" name="page_users_block" value="{{$block}}/{{$unblock}}"> <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()"></div>
+ <div class="submit"><input type="submit" name="page_accounts_block" value="{{$block}}/{{$unblock}}"> <input type="submit" name="page_accounts_delete" value="{{$delete}}" onclick="return confirm_delete_multi()"></div>
{{else}}
NO USERS?!?
{{/if}}
diff --git a/view/tpl/admin_settings_features.tpl b/view/tpl/admin_settings_features.tpl
index 2d5cf7e0b..86f978e08 100644
--- a/view/tpl/admin_settings_features.tpl
+++ b/view/tpl/admin_settings_features.tpl
@@ -9,12 +9,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="{{$g}}-settings-title">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#{{$g}}-settings-content" aria-expanded="true" aria-controls="{{$g}}-settings-collapse">
+ <a data-toggle="collapse" data-target="#{{$g}}-settings-content" href="#" aria-expanded="true" aria-controls="{{$g}}-settings-collapse">
{{$f.0}}
</a>
</h3>
</div>
- <div id="{{$g}}-settings-content" class="panel-collapse collapse{{if $g == 'general'}} in{{/if}}" role="tabpanel" aria-labelledby="{{$g}}-settings-title">
+ <div id="{{$g}}-settings-content" class="panel-collapse collapse{{if $g == 'general'}} show{{/if}}" data-parent="#settings" role="tabpanel" aria-labelledby="{{$g}}-settings-title">
<div class="section-content-tools-wrapper">
{{foreach $f.1 as $fcat}}
{{include file="field_checkbox.tpl" field=$fcat.0}}
diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl
index a2a9f3f27..10b367810 100755
--- a/view/tpl/admin_site.tpl
+++ b/view/tpl/admin_site.tpl
@@ -55,7 +55,7 @@
{{include file="field_select.tpl" field=$language}}
{{include file="field_select.tpl" field=$theme}}
- {{include file="field_select.tpl" field=$theme_mobile}}
+ {{* include file="field_select.tpl" field=$theme_mobile *}}
{{include file="field_input.tpl" field=$frontpage}}
{{include file="field_checkbox.tpl" field=$mirror_frontpage}}
{{include file="field_checkbox.tpl" field=$login_on_homepage}}
@@ -70,7 +70,12 @@
{{include file="field_input.tpl" field=$register_text}}
{{include file="field_select.tpl" field=$register_policy}}
{{include file="field_checkbox.tpl" field=$invite_only}}
+ {{include file="field_input.tpl" field=$minimum_age}}
{{include file="field_select.tpl" field=$access_policy}}
+ {{include file="field_input.tpl" field=$location}}
+ {{include file="field_input.tpl" field=$sellpage}}
+ {{include file="field_input.tpl" field=$firstpage}}
+
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
<h3>{{$corporate}}</h3>
@@ -78,6 +83,8 @@
{{include file="field_checkbox.tpl" field=$feed_contacts}}
{{include file="field_checkbox.tpl" field=$force_publish}}
{{include file="field_checkbox.tpl" field=$disable_discover_tab}}
+ {{include file="field_checkbox.tpl" field=$site_firehose}}
+ {{include file="field_checkbox.tpl" field=$open_pubstream}}
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
diff --git a/view/tpl/atom_feed.tpl b/view/tpl/atom_feed.tpl
index b1e92cdbf..8dc145ae9 100755
--- a/view/tpl/atom_feed.tpl
+++ b/view/tpl/atom_feed.tpl
@@ -13,7 +13,7 @@
<id>{{$feed_id}}</id>
<title>{{$feed_title}}</title>
- <generator uri="http://hubzilla.org" version="{{$version}}">{{$red}}</generator>
+ <generator uri="{{$generator_uri}}" version="{{$version}}">{{$generator}}</generator>
<link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
{{if $profile_page}}
<link rel="alternate" type="text/html" href="{{$profile_page}}" />
diff --git a/view/tpl/cloud_header.tpl b/view/tpl/cloud_header.tpl
index 468f2febc..307dc8956 100644
--- a/view/tpl/cloud_header.tpl
+++ b/view/tpl/cloud_header.tpl
@@ -1,14 +1,15 @@
<div class="section-title-wrapper">
- {{if $actionspanel}}
<div class="pull-right">
<a href="cloud_tiles/{{$cpath}}" class="btn btn-sm btn-outline-secondary"><i class="fa fa-fw {{if $tiles}}fa-list-ul{{else}}fa-table{{/if}}"></i></a>
+ {{if $actionspanel}}
{{if $is_owner}}
<a href="/sharedwithme" class="btn btn-sm btn-outline-secondary"><i class="fa fa-cloud-download"></i>&nbsp;{{$shared}}</a>
{{/if}}
<button id="files-create-btn" class="btn btn-sm btn-primary" onclick="openClose('files-mkdir-tools'); closeMenu('files-upload-tools');"><i class="fa fa-folder-o"></i>&nbsp;{{$create}}</button>
<button id="files-upload-btn" class="btn btn-sm btn-success" onclick="openClose('files-upload-tools'); closeMenu('files-mkdir-tools');"><i class="fa fa-arrow-circle-o-up"></i>&nbsp;{{$upload}}</button>
+ {{/if}}
</div>
- {{/if}}
+
<h2>{{$header}}</h2>
<div class="clear"></div>
</div>
diff --git a/view/tpl/comment_item.tpl b/view/tpl/comment_item.tpl
index 62530c1de..3b51971ec 100755
--- a/view/tpl/comment_item.tpl
+++ b/view/tpl/comment_item.tpl
@@ -19,14 +19,6 @@
</div>
{{/if}}
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text" placeholder="{{$comment}}" name="body" ondragenter="linkdropper(event);" ondragleave="linkdropexit(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" ></textarea>
- {{if $qcomment}}
- <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});" >
- <option value=""></option>
- {{foreach $qcomment as $qc}}
- <option value="{{$qc}}">{{$qc}}</option>
- {{/foreach}}
- </select>
- {{/if}}
<div id="comment-tools-{{$id}}" class="pt-2 comment-tools">
<div id="comment-edit-bb-{{$id}}" class="btn-toolbar pull-left">
<div class="btn-group mr-2">
diff --git a/view/tpl/connection_template.tpl b/view/tpl/connection_template.tpl
index 8e49c9e27..4543a69d0 100755
--- a/view/tpl/connection_template.tpl
+++ b/view/tpl/connection_template.tpl
@@ -18,7 +18,12 @@
</div>
<div class="section-content-tools-wrapper">
<div class="contact-photo-wrapper" >
- <a href="{{$contact.url}}" title="{{$contact.img_hover}}" ><img class="directory-photo-img {{if $contact.classes}}{{$contact.classes}}{{/if}}" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
+ <a href="{{$contact.url}}" title="{{$contact.img_hover}}" >
+ <img class="directory-photo-img {{if $contact.classes}}{{$contact.classes}}{{/if}}" src="{{$contact.thumb}}" alt="{{$contact.name}}" />
+ </a>
+ {{if $contact.oneway}}
+ <i class="fa fa-fw fa-minus-circle oneway-overlay text-danger"></i>
+ {{/if}}
</div>
<div class="contact-info">
{{if $contact.status}}
diff --git a/view/tpl/connections.tpl b/view/tpl/connections.tpl
index 3b152ef5e..32973353e 100755
--- a/view/tpl/connections.tpl
+++ b/view/tpl/connections.tpl
@@ -5,7 +5,7 @@
<i class="fa fa-search"></i>&nbsp;{{$label}}
</button>
<button type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="{{$sort}}">
- <i class="fa fa-sort"></i>
+ <i class="fa fa-filter"></i>
</button>
<div class="dropdown-menu dropdown-menu-right">
{{foreach $tabs as $menu}}
@@ -19,13 +19,13 @@
<form action="{{$cmd}}" method="get" >
<div class="input-group form-group">
<input type="text" name="search" id="contacts-search" class="form-control" onfocus="this.select();" value="{{$search}}" placeholder="{{$desc}}" />
- <div class="input-group-btn">
+ <div class="input-group-append">
<button id="contacts-search-submit" class="btn btn-outline-secondary" type="submit" name="submit" value="{{$submit}}"><i class="fa fa-fw fa-search"></i></button>
</div>
</div>
</form>
</div>
- <div id="connections-wrapper clearfix">
+ <div class="connections-wrapper clearfix">
{{foreach $contacts as $contact}}
{{include file="connection_template.tpl"}}
{{/foreach}}
diff --git a/view/tpl/contact_template.tpl b/view/tpl/contact_template.tpl
index 3d1bfa4a4..2a2f996f4 100755
--- a/view/tpl/contact_template.tpl
+++ b/view/tpl/contact_template.tpl
@@ -1,6 +1,9 @@
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
<div class="contact-entry-photo-wrapper" >
<a href="{{$contact.link}}" title="{{$contact.img_hover}}" ><img class="contact-block-img" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
+ {{if $contact.oneway}}
+ <i class="fa fa-fw fa-minus-circle oneway-overlay text-danger"></i>
+ {{/if}}
</div>
<div class="contact-entry-photo-end" ></div>
<div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}" >{{$contact.name}}</div>
diff --git a/view/tpl/cover_photo.tpl b/view/tpl/cover_photo.tpl
index 4352501ae..829a3a556 100755
--- a/view/tpl/cover_photo.tpl
+++ b/view/tpl/cover_photo.tpl
@@ -1,3 +1,86 @@
+<script>
+ var initializeEmbedPhotoDialog = function () {
+ $('.embed-photo-selected-photo').each(function (index) {
+ $(this).removeClass('embed-photo-selected-photo');
+ });
+ getPhotoAlbumList();
+ $('#embedPhotoModalBodyAlbumDialog').off('click');
+ $('#embedPhotoModal').modal('show');
+ };
+
+ var choosePhotoFromAlbum = function (album) {
+ $.post("embedphotos/album", {name: album},
+ function(data) {
+ if (data['status']) {
+ $('#embedPhotoModalLabel').html("{{$modalchooseimages}}");
+ $('#embedPhotoModalBodyAlbumDialog').html('\
+ <div><div class="nav nav-pills flex-column">\n\
+ <li class="nav-item"><a class="nav-link" href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\
+ <i class="fa fa-chevron-left"></i>&nbsp\n\
+ {{$modaldiffalbum}}\n\
+ </a>\n\
+ </li>\n\
+ </div><br></div>')
+ $('#embedPhotoModalBodyAlbumDialog').append(data['content']);
+ $('#embedPhotoModalBodyAlbumDialog').click(function (evt) {
+ evt.preventDefault();
+ var image = document.getElementById(evt.target.id);
+ if (typeof($(image).parent()[0]) !== 'undefined') {
+ var imageparent = document.getElementById($(image).parent()[0].id);
+ $(imageparent).toggleClass('embed-photo-selected-photo');
+ var href = $(imageparent).attr('href');
+ $.post("embedphotos/photolink", {href: href},
+ function(ddata) {
+ if (ddata['status']) {
+ window.location.href = 'cover_photo/use/' + ddata['resource_id'];
+ } else {
+ window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']);
+ }
+ return false;
+ },
+ 'json');
+ $('#embedPhotoModalBodyAlbumDialog').html('');
+ $('#embedPhotoModalBodyAlbumDialog').off('click');
+ $('#embedPhotoModal').modal('hide');
+ }
+ });
+
+ $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
+ $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
+ } else {
+ window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']);
+ }
+ return false;
+ },
+ 'json');
+ };
+
+ var getPhotoAlbumList = function () {
+ $.post("embedphotos/albumlist", {},
+ function(data) {
+ if (data['status']) {
+ var albums = data['albumlist']; //JSON.parse(data['albumlist']);
+ $('#embedPhotoModalLabel').html("{{$modalchoosealbum}}");
+ $('#embedPhotoModalBodyAlbumList').html('<ul class="nav nav-pills flex-column"></ul>');
+ for(var i=0; i<albums.length; i++) {
+ var albumName = albums[i].text;
+ var jsAlbumName = albums[i].jstext;
+ var albumLink = '<li class="nav-item">';
+ albumLink += '<a class="nav-link" href="#" onclick="choosePhotoFromAlbum(\'' + jsAlbumName + '\'); return false;">' + albumName + '</a>';
+ albumLink += '</li>';
+ $('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink);
+ }
+ $('#embedPhotoModalBodyAlbumDialog').addClass('d-none');
+ $('#embedPhotoModalBodyAlbumListDialog').removeClass('d-none');
+ } else {
+ window.console.log("{{$modalerrorlist}}" + ':' + data['errormsg']);
+ }
+ return false;
+ },
+ 'json');
+ };
+</script>
+
<div id="profile-photo-content" class="generic-content-wrapper">
<div class="section-title-wrapper">
<h2>{{$title}}</h2>
@@ -21,9 +104,26 @@
</form>
<br />
- <br />
<div id="profile-photo-link-select-wrapper">
- {{$select}}
+ <button id="embed-photo-wrapper" class="btn btn-default btn-primary" title="{{$embedPhotos}}" onclick="initializeEmbedPhotoDialog();return false;">
+ <i id="embed-photo" class="fa fa-file-image-o"></i> {{$select}}
+ </button>
</div>
</div>
</div>
+<div class="modal" id="embedPhotoModal" tabindex="-1" role="dialog" aria-labelledby="embedPhotoLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4>
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ </div>
+ <div class="modal-body" id="embedPhotoModalBody" >
+ <div id="embedPhotoModalBodyAlbumListDialog" class="d-none">
+ <div id="embedPhotoModalBodyAlbumList"></div>
+ </div>
+ <div id="embedPhotoModalBodyAlbumDialog" class="d-none"></div>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
diff --git a/view/tpl/cropbody.tpl b/view/tpl/cropbody.tpl
index 01d9a24a0..a8b8207cb 100755
--- a/view/tpl/cropbody.tpl
+++ b/view/tpl/cropbody.tpl
@@ -6,36 +6,26 @@
<img src="{{$image_url}}" id="croppa" class="imgCrop" alt="{{$title}}" />
</div>
<div id="cropimage-preview-wrapper" >
-<div id="previewWrap" ></div>
+<div id="previewWrap" class="crop-preview d-lg-none" style="height: 300px; width: 300px; max-width: 300px; max-height: 300px; overflow: hidden;"></div>
</div>
<script type="text/javascript" language="javascript">
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
- Event.observe( window, 'load', function() {
- new Cropper.ImgWithPreview(
- 'croppa',
- {
- previewWrap: 'previewWrap',
- minWidth: 300,
- minHeight: 300,
- maxWidth: 1024,
- maxHeight: 1024,
- ratioDim: { x: 100, y:100 },
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- );
+var image = document.getElementById('croppa');
+var cropper = new Cropper(image, {
+ aspectRatio: 1 / 1,
+ viewMode: 1,
+ preview: '#profile-photo-wrapper, .crop-preview',
+ crop: function(e) {
+ $( '#x1' ).val(e.detail.x);
+ $( '#y1' ).val(e.detail.y);
+ $( '#x2' ).val(e.detail.x + e.detail.width);
+ $( '#y2' ).val(e.detail.y + e.detail.height);
+ $( '#width' ).val(e.detail.scaleX);
+ $( '#height' ).val(e.detail.scaleY);
}
- );
+});
</script>
diff --git a/view/tpl/cropcover.tpl b/view/tpl/cropcover.tpl
index 04b96a603..ba91a2cce 100755
--- a/view/tpl/cropcover.tpl
+++ b/view/tpl/cropcover.tpl
@@ -6,36 +6,25 @@
<img src="{{$image_url}}" id="croppa" class="imgCrop" alt="{{$title}}" />
</div>
<div id="cropimage-preview-wrapper" >
-<div id="previewWrap" ></div>
+<div id="previewWrap" class="crop-preview" style="width: 320px; height: 116px; max-width: 320px; max-height: 116px; overflow: hidden"></div>
</div>
<script type="text/javascript" language="javascript">
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
+var image = document.getElementById('croppa');
+var cropper = new Cropper(image, {
+ aspectRatio: 2.75 / 1,
+ viewMode: 1,
+ preview: '.crop-preview',
+ crop: function(e) {
+ $( '#x1' ).val(e.detail.x);
+ $( '#y1' ).val(e.detail.y);
+ $( '#x2' ).val(e.detail.x + e.detail.width);
+ $( '#y2' ).val(e.detail.y + e.detail.height);
+ $( '#width' ).val(e.detail.scaleX);
+ $( '#height' ).val(e.detail.scaleY);
}
-
- Event.observe( window, 'load', function() {
- new Cropper.ImgWithPreview(
- 'croppa',
- {
- previewWrap: 'previewWrap',
- minWidth: 240,
- minHeight: 87,
- maxWidth: 320,
- maxHeight: 116,
- ratioDim: { x: 100, y:36 },
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- );
- }
- );
+});
</script>
diff --git a/view/tpl/crophead.tpl b/view/tpl/crophead.tpl
index 48f375426..a5a80c187 100755
--- a/view/tpl/crophead.tpl
+++ b/view/tpl/crophead.tpl
@@ -1,4 +1,3 @@
- <script type="text/javascript" src="library/cropper/lib/prototype.js" language="javascript"></script>
- <script type="text/javascript" src="library/cropper/lib/scriptaculous.js?load=effects,builder,dragdrop" language="javascript"></script>
- <script type="text/javascript" src="library/cropper/cropper.js" language="javascript"></script>
- <link rel="stylesheet" href="library/cropper/cropper.css" type="text/css" />
+<script type="text/javascript" src="library/cropperjs/dist/cropper.js" language="javascript"></script>
+<link rel="stylesheet" href="library/cropperjs/dist/cropper.css" type="text/css" />
+
diff --git a/view/tpl/email_notify_html.tpl b/view/tpl/email_notify_html.tpl
index 5b4954c8e..f4e12d793 100755
--- a/view/tpl/email_notify_html.tpl
+++ b/view/tpl/email_notify_html.tpl
@@ -21,6 +21,9 @@
<tr><td style="padding:11px 0;" colspan="2">{{$hitemlink}}</td></tr>
<tr><td></td><td>{{$thanks}}</td></tr>
<tr><td></td><td>{{$site_admin}}</td></tr>
+
+ <tr><td style="font-size: 12px; color: #444444; padding-top: 18px;" colspan="2">{{$opt_out1}}</td></tr>
+ <tr><td style="font-size: 12px; color: #444444;" colspan="2">{{$opt_out2}}</td></tr>
</tbody>
</table>
</body>
diff --git a/view/tpl/email_notify_text.tpl b/view/tpl/email_notify_text.tpl
index 56925c18b..5f1984edb 100755
--- a/view/tpl/email_notify_text.tpl
+++ b/view/tpl/email_notify_text.tpl
@@ -11,3 +11,4 @@
{{$thanks}}
{{$site_admin}}
+{{$opt_out1}} {{$opt_out2}} \ No newline at end of file
diff --git a/view/tpl/email_validation.tpl b/view/tpl/email_validation.tpl
new file mode 100644
index 000000000..9913e0971
--- /dev/null
+++ b/view/tpl/email_validation.tpl
@@ -0,0 +1,16 @@
+<h2>{{$title}}</h2>
+
+<div class="descriptive-paragraph" style="font-size: 1.2em;"><p>{{$desc}}</p></div>
+
+<form action="email_validation/{{$email}}" method="post">
+{{include file="field_input.tpl" field=$token}}
+
+<div class="pull-right submit-wrapper">
+ <button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button>
+</div>
+<div class="resend-email" >
+ <a href="email_resend/{{$email}}" class="btn btn-warning">{{$resend}}</a>
+</div>
+</form>
+<div class="clear"></div>
+
diff --git a/view/tpl/follow.tpl b/view/tpl/follow.tpl
index 4def1415d..2fb753784 100755
--- a/view/tpl/follow.tpl
+++ b/view/tpl/follow.tpl
@@ -3,7 +3,7 @@
<form action="follow" method="post" />
<div class="input-group">
<input class="form-control form-control-sm" type="text" name="url" title="{{$hint}}" placeholder="{{$desc}}" />
- <div class="input-group-btn">
+ <div class="input-group-append">
<button class="btn btn-success" type="submit" name="submit" value="{{$follow}}" title="{{$follow}}"><i class="fa fa-fw fa-plus"></i></button>
</div>
</div>
diff --git a/view/tpl/generic_addon_settings.tpl b/view/tpl/generic_addon_settings.tpl
index bf39b2aea..57028237a 100644
--- a/view/tpl/generic_addon_settings.tpl
+++ b/view/tpl/generic_addon_settings.tpl
@@ -1,12 +1,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="{{$addon.0}}-settings">
<h3>
- <a title="{{$addon.2}}" data-toggle="collapse" data-parent="#settings" href="#{{$addon.0}}-settings-content" aria-controls="{{$addon.0}}-settings-content">
+ <a title="{{$addon.2}}" data-toggle="collapse" data-target="#{{$addon.0}}-settings-content" href="#" aria-controls="{{$addon.0}}-settings-content">
{{$addon.1}}
</a>
</h3>
</div>
- <div id="{{$addon.0}}-settings-content" class="panel-collapse collapse" role="tabpanel" aria-labelledby="{{$addon.0}}-settings">
+ <div id="{{$addon.0}}-settings-content" class="panel-collapse collapse" role="tabpanel" aria-labelledby="{{$addon.0}}-settings" data-parent="#settings">
<div class="section-content-tools-wrapper">
{{$content}}
{{if $addon.0}}
diff --git a/view/tpl/go.tpl b/view/tpl/go.tpl
new file mode 100644
index 000000000..f0f9ee79e
--- /dev/null
+++ b/view/tpl/go.tpl
@@ -0,0 +1,16 @@
+<h2>{{$title}}</h2>
+
+<div class="descriptive-text">
+ <p>{{$m}}</p>
+ <p>{{$m1}}</p>
+</div>
+
+{{if $options}}
+<ul class="nav nav-pills flex-column">
+{{foreach $options as $k => $v}}
+ <li class="nav-item"><a href="{{$k}}" class="nav-link">{{$v}}</a></li>
+{{/foreach}}
+</ul>
+{{/if}}
+
+
diff --git a/view/tpl/hdr.tpl b/view/tpl/hdr.tpl
index 29137c740..e69de29bb 100644
--- a/view/tpl/hdr.tpl
+++ b/view/tpl/hdr.tpl
@@ -1,3 +0,0 @@
-<div id="navbar-notifications-template" rel="template" style="display:none;">
- <a class="dropdown-item clearfix dropdown-notification {5}" href="{0}" title="{2} {3}"><img class="menu-img-3" data-src="{1}"><span class="contactname">{2}</span><span class="dropdown-sub-text">{3}<br>{4}</span></a>
-</div> \ No newline at end of file
diff --git a/view/tpl/hq.tpl b/view/tpl/hq.tpl
index bd27250e6..099d892bb 100755
--- a/view/tpl/hq.tpl
+++ b/view/tpl/hq.tpl
@@ -1,9 +1,4 @@
-{{if $no_messages}}
-<div class="alert alert-warning alert-dismissible fade show" role="alert">
- {{$no_messages_label}}
- <button type="button" class="close" data-dismiss="alert" aria-label="Close">
- <span aria-hidden="true">&times;</span>
- </button>
+<div id="jot-popup">
+{{$editor}}
</div>
-{{/if}}
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index ffaa4e208..c1dab52d5 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -110,10 +110,21 @@ var activeCommentID = 0;
var activeCommentText = '';
$(document).ready(function() {
+
/* enable tinymce on focus and click */
$("#profile-jot-text").focus(enableOnUser);
$("#profile-jot-text").click(enableOnUser);
+ $('#id_mimetype').on('load', jotSetMime);
+ $('#id_mimetype').on('change', jotSetMime);
+
+ function jotSetMime() {
+ var mtype = $('#id_mimetype').val();
+ if(mtype == 'text/bbcode')
+ $('#profile-jot-submit-left').show();
+ else
+ $('#profile-jot-submit-left').hide();
+ }
$('#invisible-wall-file-upload').fileupload({
url: 'wall_attach/{{$nickname}}',
@@ -448,13 +459,7 @@ var activeCommentText = '';
if (typeof($(image).parent()[0]) !== 'undefined') {
var imageparent = document.getElementById($(image).parent()[0].id);
$(imageparent).toggleClass('embed-photo-selected-photo');
- }
- });
- $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
- $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
- $('#embed-photo-OKButton').click(function () {
- $('.embed-photo-selected-photo').each(function (index) {
- var href = $(this).attr('href');
+ var href = $(imageparent).attr('href');
$.post("embedphotos/photolink", {href: href},
function(ddata) {
if (ddata['status']) {
@@ -465,12 +470,14 @@ var activeCommentText = '';
}
return false;
},
- 'json');
- });
- $('#embedPhotoModalBodyAlbumDialog').html('');
- $('#embedPhotoModalBodyAlbumDialog').off('click');
- $('#embedPhotoModal').modal('hide');
+ 'json');
+ $('#embedPhotoModalBodyAlbumDialog').html('');
+ $('#embedPhotoModalBodyAlbumDialog').off('click');
+ $('#embedPhotoModal').modal('hide');
+ }
});
+ $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
+ $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
} else {
window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']);
}
diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl
index 13e7602be..bc9339d4c 100755
--- a/view/tpl/jot.tpl
+++ b/view/tpl/jot.tpl
@@ -293,10 +293,6 @@
</div>
<div id="embedPhotoModalBodyAlbumDialog" class="d-none"></div>
</div>
- <div class="modal-footer">
- <button type="button" class="btn btn-outline-secondary" data-dismiss="modal">{{$embedPhotosModalCancel}}</button>
- <button id="embed-photo-OKButton" type="button" class="btn btn-primary">{{$embedPhotosModalOK}}</button>
- </div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
diff --git a/view/tpl/micropro_img.tpl b/view/tpl/micropro_img.tpl
index a7c5973f3..7464430b5 100755
--- a/view/tpl/micropro_img.tpl
+++ b/view/tpl/micropro_img.tpl
@@ -1 +1 @@
-<div class="contact-block-div{{if $class}} {{$class}}{{/if}}"><a class="contact-block-link{{if $class}} {{$class}}{{/if}}{{if $click}} fakelink{{/if}}" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}><img class="contact-block-img{{if $class}} {{$class}}{{/if}}" src="{{$photo}}" title="{{$title}}" alt="" /></a></div>
+<div class="contact-block-div{{if $class}} {{$class}}{{/if}}"><a class="contact-block-link{{if $class}} {{$class}}{{/if}}{{if $click}} fakelink{{/if}}" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}><img class="contact-block-img{{if $class}} {{$class}}{{/if}}" src="{{$photo}}" title="{{$title}}" alt="" />{{if $oneway}}<i class="fa fa-fw fa-minus-circle oneway-overlay text-danger"></i>{{/if}}</a></div>
diff --git a/view/tpl/navbar_default.tpl b/view/tpl/navbar_default.tpl
index c4f5af1dc..92b067bcb 100755
--- a/view/tpl/navbar_default.tpl
+++ b/view/tpl/navbar_default.tpl
@@ -64,7 +64,7 @@
<a id="nav-app-link" href="{{$url}}" class="nav-link text-truncate">
{{$sel.name}}
{{if $sitelocation}}
- <br><small class="text-muted">{{$sitelocation}}</small>
+ <br><small>{{$sitelocation}}</small>
{{/if}}
</a>
</div>
@@ -80,7 +80,7 @@
<i class="fa fa-arrow-circle-right" id="expand-aside-icon"></i>
</button>
{{if $localuser || $nav.pubs}}
- <button id="notifications-btn-1" type="button" class="navbar-toggler border-0 text-white notifications-btn">
+ <button id="notifications-btn-1" type="button" class="navbar-toggler border-0 notifications-btn">
<i id="notifications-btn-icon-1" class="fa fa-exclamation-circle notifications-btn-icon"></i>
</button>
{{/if}}
@@ -120,7 +120,7 @@
<ul id="nav-right" class="navbar-nav ml-auto">
<li class="nav-item collapse clearfix" id="nav-search">
<form class="form-inline" method="get" action="search" role="search">
- <input class="form-control form-control-sm mt-1 mr-2" id="nav-search-text" type="text" value="" placeholder="&#xf002; {{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();" onblur="closeMenu('nav-search'); openMenu('nav-search-btn');"/>
+ <input class="form-control form-control-sm mt-1 mr-2" id="nav-search-text" type="text" value="" placeholder="{{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();" onblur="closeMenu('nav-search'); openMenu('nav-search-btn');"/>
</form>
<div id="nav-search-spinner" class="spinner-wrapper">
<div class="spinner s"></div>
diff --git a/view/tpl/navbar_tucson.tpl b/view/tpl/navbar_tucson.tpl
index 08fc40656..92b067bcb 100755
--- a/view/tpl/navbar_tucson.tpl
+++ b/view/tpl/navbar_tucson.tpl
@@ -16,12 +16,9 @@
{{/if}}
</div>
{{/if}}
-
-
-
{{if $userinfo}}
-<div class="dropdown usermenu">
- <div class="fakelink" data-toggle="dropdown">
+<div class="dropdown">
+ <div class="fakelink usermenu" data-toggle="dropdown">
<img id="avatar" src="{{$userinfo.icon}}" alt="{{$userinfo.name}}">
<i class="fa fa-caret-down"></i>
</div>
@@ -31,7 +28,7 @@
<a class="dropdown-item{{if $usermenu.2}} active{{/if}}" href="{{$usermenu.0}}" title="{{$usermenu.3}}" role="menuitem" id="{{$usermenu.4}}">{{$usermenu.1}}</a>
{{/foreach}}
{{if $nav.manage}}
- <a class="dropdown-item{{if $sel.active == Manage}} active{{/if}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}" role="menuitem" id="{{$nav.manage.4}}">{{$nav.manage.1}}</a>
+ <a class="dropdown-item{{if $sel.name == Manage}} active{{/if}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}" role="menuitem" id="{{$nav.manage.4}}">{{$nav.manage.1}}</a>
{{/if}}
{{if $nav.channels}}
{{foreach $nav.channels as $chan}}
@@ -43,7 +40,11 @@
{{/if}}
{{if $nav.settings}}
<div class="dropdown-divider"></div>
- <a class="dropdown-item{{if $sel.active == Settings}} active{{/if}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}" role="menuitem" id="{{$nav.settings.4}}">{{$nav.settings.1}}</a>
+ <a class="dropdown-item{{if $sel.name == Settings}} active{{/if}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}" role="menuitem" id="{{$nav.settings.4}}">{{$nav.settings.1}}</a>
+ {{/if}}
+ {{if $nav.admin}}
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item{{if $sel.name == Admin}} active{{/if}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" role="menuitem" id="{{$nav.admin.4}}">{{$nav.admin.1}}</a>
{{/if}}
{{if $nav.logout}}
<div class="dropdown-divider"></div>
@@ -51,7 +52,6 @@
{{/if}}
</div>
{{/if}}
-
{{if ! $is_owner}}
<div class="dropdown-menu" role="menu" aria-labelledby="avatar">
<a class="dropdown-item" href="{{$nav.rusermenu.0}}" role="menuitem">{{$nav.rusermenu.1}}</a>
@@ -59,129 +59,37 @@
</div>
{{/if}}
</div>
+{{if $sel.name}}
+<div id="nav-app-link-wrapper" class="navbar-nav mr-auto">
+ <a id="nav-app-link" href="{{$url}}" class="nav-link text-truncate">
+ {{$sel.name}}
+ {{if $sitelocation}}
+ <br><small>{{$sitelocation}}</small>
+ {{/if}}
+ </a>
+</div>
{{/if}}
-
-
-
-{{if $navbar_apps}}
-<ul class="navbar-nav mr-auto d-none d-xl-flex">
-{{foreach $navbar_apps as $navbar_app}}
-<li>
-{{$navbar_app}}
-</li>
-{{/foreach}}
-</ul>
{{/if}}
-
-
<div class="navbar-toggler-right">
-
{{if $nav.help.6}}
<button id="context-help-btn" class="navbar-toggler border-0" type="button" onclick="contextualHelp(); return false;">
<i class="fa fa-question-circle"></i>
</button>
{{/if}}
-
- <button id="expand-aside" type="button" class="navbar-toggler border-0" data-toggle="offcanvas" data-target="#region_1">
+ <button id="expand-aside" type="button" class="d-lg-none navbar-toggler border-0" data-toggle="offcanvas" data-target="#region_1">
<i class="fa fa-arrow-circle-right" id="expand-aside-icon"></i>
</button>
-
{{if $localuser || $nav.pubs}}
- <button id="notifications-btn-1" type="button" class="navbar-toggler border-0 text-white notifications-btn" data-toggle="collapse" data-target="#navbar-collapse-1">
- <i id="notifications-btn-icon-1" class="fa fa-exclamation notifications-btn-icon"></i>
+ <button id="notifications-btn-1" type="button" class="navbar-toggler border-0 notifications-btn">
+ <i id="notifications-btn-icon-1" class="fa fa-exclamation-circle notifications-btn-icon"></i>
</button>
{{/if}}
-
<button id="menu-btn" class="navbar-toggler border-0" type="button" data-toggle="collapse" data-target="#navbar-collapse-2">
<i class="fa fa-bars"></i>
</button>
</div>
-
-
-
-
-
<div class="collapse navbar-collapse" id="navbar-collapse-1">
-
<ul class="navbar-nav mr-auto">
- {{if $nav.network}}
- <li class="nav-item dropdown network-button" style="display: none;">
- <a class="nav-link" href="#" title="{{$nav.network.3}}" id="{{$nav.network.4}}" data-toggle="dropdown" rel="#navbar-network-menu">
- <i class="fa fa-fw fa-th"></i>
- <span class="badge badge-pill badge-secondary network-update"></span>
- </a>
- <div id="navbar-network-menu" class="dropdown-menu" rel="network">
- <a class="dropdown-item" id="nav-network-see-all" href="{{$nav.network.all.0}}">{{$nav.network.all.1}}</a>
- <a class="dropdown-item" id="nav-network-mark-all" href="#" onclick="markRead('network'); return false;">{{$nav.network.mark.1}}</a>
- {{$emptynotifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
- </div>
- </li>
- {{/if}}
- {{if $nav.home}}
- <li class="nav-item dropdown home-button" style="display: none;">
- <a class="nav-link" href="#" title="{{$nav.home.3}}" id="{{$nav.home.4}}" data-toggle="dropdown" rel="#navbar-home-menu">
- <i class="fa fa-fw fa-home"></i>
- <span class="badge badge-pill badge-danger home-update"></span>
- </a>
- <div id="navbar-home-menu" class="dropdown-menu" rel="home">
- <a class="dropdown-item" id="nav-home-see-all" href="{{$nav.home.all.0}}">{{$nav.home.all.1}}</a>
- <a class="dropdown-item" id="nav-home-mark-all" href="#" onclick="markRead('home'); return false;">{{$nav.home.mark.1}}</a>
- {{$emptynotifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
- </div>
- </li>
- {{/if}}
- {{if $nav.messages}}
- <li class="nav-item dropdown mail-button" style="display: none;">
- <a class="nav-link" href="#" title="{{$nav.messages.3}}" id="{{$nav.messages.4}}" data-toggle="dropdown" rel="#navbar-mail-menu">
- <i class="fa fa-fw fa-envelope"></i>
- <span class="badge badge-pill badge-danger mail-update"></span>
- </a>
- <div id="navbar-mail-menu" class="dropdown-menu" rel="messages">
- <a class="dropdown-item" id="nav-messages-see-all" href="{{$nav.messages.all.0}}">{{$nav.messages.all.1}}</a>
- <a class="dropdown-item" id="nav-messages-mark-all" href="#" onclick="markRead('messages'); return false;">{{$nav.messages.mark.1}}</a>
- {{$emptynotifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
- </div>
- </li>
- {{/if}}
- {{if $nav.all_events}}
- <li class="nav-item dropdown all_events-button" style="display: none;">
- <a class="nav-link" href="#" title="{{$nav.all_events.3}}" id="{{$nav.all_events.4}}" data-toggle="dropdown" rel="#navbar-all_events-menu">
- <i class="fa fa-fw fa-calendar"></i>
- <span class="badge badge-pill badge-secondary all_events-update"></span>
- </a>
- <div id="navbar-all_events-menu" class="dropdown-menu" rel="all_events">
- <a class="dropdown-item" id="nav-all_events-see-all" href="{{$nav.all_events.all.0}}">{{$nav.all_events.all.1}}</a>
- <a class="dropdown-item" id="nav-all_events-mark-all" href="#" onclick="markRead('all_events'); return false;">{{$nav.all_events.mark.1}}</a>
- {{$emptynotifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
- </div>
- </li>
- {{/if}}
- {{if $nav.intros}}
- <li class="nav-item dropdown intros-button" style="display: none;">
- <a class="nav-link" href="#" title="{{$nav.intros.3}}" id="{{$nav.intros.4}}" data-toggle="dropdown" rel="#navbar-intros-menu">
- <i class="fa fa-fw fa-users"></i>
- <span class="badge badge-pill badge-danger intros-update"></span>
- </a>
- <div id="navbar-intros-menu" class="dropdown-menu" rel="intros">
- <a class="dropdown-item" id="nav-intros-see-all" href="{{$nav.intros.all.0}}">{{$nav.intros.all.1}}</a>
- {{$emptynotifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
- </div>
- </li>
- {{/if}}
- {{if $nav.notifications}}
- <li class="nav-item dropdown notify-button" style="display: none;">
- <a class="nav-link" href="#" title="{{$nav.notifications.1}}" id="{{$nav.notifications.4}}" data-toggle="dropdown" rel="#navbar-notify-menu">
- <i class="fa fa-fw fa-exclamation"></i>
- <span class="badge badge-pill badge-danger notify-update"></span>
- </a>
- <div id="navbar-notify-menu" class="dropdown-menu" rel="notify">
- <a class="dropdown-item" id="nav-notify-see-all" href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a>
- <a class="dropdown-item" id="nav-notify-mark-all" href="#" onclick="markRead('notify'); return false;">{{$nav.notifications.mark.1}}</a>
- {{$emptynotifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
- </div>
- </li>
- {{/if}}
-
{{if $nav.login && !$userinfo}}
<li class="nav-item d-none d-xl-flex">
{{if $nav.loginmenu.1.4}}
@@ -205,19 +113,14 @@
<a class="nav-link" href="{{$nav.alogout.0}}" title="{{$nav.alogout.3}}" id="{{$nav.alogout.4}}">{{$nav.alogout.1}}</a>
</li>
{{/if}}
-
</ul>
+ <div id="banner" class="navbar-text">{{$banner}}</div>
-
-
- <div id="banner" class="navbar-text d-none d-xl-flex">{{$banner}}</div>
-
-
- <ul id="nav-right" class="navbar-nav ml-auto d-none d-xl-flex">
+ <ul id="nav-right" class="navbar-nav ml-auto">
<li class="nav-item collapse clearfix" id="nav-search">
<form class="form-inline" method="get" action="search" role="search">
- <input class="form-control form-control-sm mt-1 mr-2" id="nav-search-text" type="text" value="" placeholder="&#xf002; {{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();" onblur="closeMenu('nav-search'); openMenu('nav-search-btn');"/>
+ <input class="form-control form-control-sm mt-1 mr-2" id="nav-search-text" type="text" value="" placeholder="{{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();" onblur="closeMenu('nav-search'); openMenu('nav-search-btn');"/>
</form>
<div id="nav-search-spinner" class="spinner-wrapper">
<div class="spinner s"></div>
@@ -236,7 +139,7 @@
<a class="nav-link text-white notifications-btn" href="#"><i id="notifications-btn-icon" class="fa fa-exclamation-circle notifications-btn-icon"></i></a>
</li>
{{/if}}
- {{if $channel_apps.0}}
+ {{if $channel_menu && $channel_apps.0}}
<li class="nav-item dropdown" id="channel-menu">
<a class="nav-link" href="#" data-toggle="dropdown"><img src="{{$channel_thumb}}" style="height:14px; width:14px;position:relative; top:-2px;" /></a>
<div id="dropdown-menu" class="dropdown-menu dropdown-menu-right">
@@ -246,12 +149,32 @@
</div>
</li>
{{/if}}
+ {{if $navbar_apps}}
+ {{foreach $navbar_apps as $navbar_app}}
+ <li>
+ {{$navbar_app}}
+ </li>
+ {{/foreach}}
+ {{/if}}
<li class="nav-item dropdown" id="app-menu">
<a class="nav-link" href="#" data-toggle="dropdown"><i class="fa fa-fw fa-bars"></i></a>
<div id="dropdown-menu" class="dropdown-menu dropdown-menu-right">
+ {{if $channel_apps.0 && ! $channel_menu}}
+ {{foreach $channel_apps as $channel_app}}
+ {{$channel_app}}
+ {{/foreach}}
+ <div class="dropdown-divider"></div>
+ <div class="dropdown-header sys-apps-toggle" onclick="$('#dropdown-menu').click(function(e) { e.stopPropagation(); }); openClose('sys_apps');">
+ {{$sysapps_toggle}}
+ </div>
+ <div id="sys_apps" style="display:none;">
+ {{/if}}
{{foreach $nav_apps as $nav_app}}
{{$nav_app}}
{{/foreach}}
+ {{if $channel_apps.0 && ! $channel_menu}}
+ </div>
+ {{/if}}
{{if $is_owner}}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/apps"><i class="generic-icons-nav fa fa-fw fa-plus-circle"></i>{{$addapps}}</a>
@@ -261,8 +184,6 @@
</li>
</ul>
</div>
-
-
<div class="collapse d-lg-none" id="navbar-collapse-2">
<div class="navbar-nav mr-auto">
{{if $channel_apps.0}}
@@ -274,6 +195,9 @@
</div>
<div id="sys-apps-collapsed" style="display:none;">
{{/if}}
+ {{foreach $navbar_apps as $navbar_app}}
+ {{$navbar_app}}
+ {{/foreach}}
{{foreach $nav_apps as $nav_app}}
{{$nav_app|replace:'dropdown-item':'nav-link'}}
{{/foreach}}
diff --git a/view/tpl/new_channel.tpl b/view/tpl/new_channel.tpl
index c4837064f..f415e4e2c 100755
--- a/view/tpl/new_channel.tpl
+++ b/view/tpl/new_channel.tpl
@@ -24,7 +24,9 @@
{{include file="field_input.tpl" field=$nickname}}
<div id="nick-spinner" class="spinner-wrapper"><div class="spinner m"></div></div>
- <button class="btn btn-primary" type="submit" name="submit" id="newchannel-submit-button" value="{{$submit}}">{{$submit}}</button>
+ <button class="btn btn-secondary" name="validate" id="newchannel-validate-button" value="{{$validate}}" onclick="validate_channel(); return false;">{{$validate}}</button>
+
+ <button class="btn btn-primary" type="submit" name="submit" id="newchannel-submit-button" value="{{$submit}}" >{{$submit}}</button>
<div id="newchannel-submit-end" class="clear"></div>
<div id="newchannel-import-link" class="descriptive-paragraph" >{{$label_import}}</div>
diff --git a/view/tpl/new_member.tpl b/view/tpl/new_member.tpl
new file mode 100644
index 000000000..60e347ab3
--- /dev/null
+++ b/view/tpl/new_member.tpl
@@ -0,0 +1,17 @@
+<div class="widget">
+<h3>{{$title}}</h3>
+{{if $options}}
+<ul class="nav nav-pills flex-column">
+{{foreach $options as $x}}
+ {{if is_array($x) }}
+ {{foreach $x as $y => $z}}
+ <li class="nav-item"><a href="{{$y}}" class="nav-link">{{$z}}</a></li>
+ {{/foreach}}
+ {{else}}
+ <div><strong>{{$x}}</strong></div>
+ {{/if}}
+{{/foreach}}
+</ul>
+{{/if}}
+</div>
+
diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl
index 3545f4379..215fddd08 100644
--- a/view/tpl/notifications_widget.tpl
+++ b/view/tpl/notifications_widget.tpl
@@ -1,3 +1,4 @@
+{{if $notifications}}
<script>
var notifications_parent;
@@ -21,7 +22,7 @@
};
});
- {{if $module == 'display' || $module == 'hq'}}
+ {{if $module == 'display' || $module == 'hq' || $startpage == 'hq'}}
$(document).on('click', '.notification', function(e) {
var b64mid = $(this).data('b64mid');
var notify_id = $(this).data('notify_id');
@@ -31,30 +32,42 @@
if(b64mid === 'undefined' && notify_id === 'undefined')
return;
- {{if $module == 'display'}}
- history.pushState(stateObj, '', 'display/' + b64mid);
- {{/if}}
- {{if $module == 'hq'}}
- history.pushState(stateObj, '', 'hq/' + b64mid);
- {{/if}}
-
- {{if $module == 'hq'}}
- if(b64mid !== 'undefined') {
- {{else}}
- if(path === 'display' && b64mid) {
- {{/if}}
+ {{if $module != 'hq' && $startpage == 'hq'}}
e.preventDefault();
-
- if(! page_load) {
- if($(this).parent().attr('id') !== 'nav-pubs-menu')
- $(this).fadeOut();
-
- getData(b64mid, notify_id);
+ if(typeof notify_id !== 'undefined' && notify_id !== 'undefined') {
+ $.post(
+ "hq",
+ {
+ "notify_id" : notify_id
+ }
+ );
}
-
- if($('#notifications_wrapper').hasClass('fs'))
- $('#notifications_wrapper').prependTo('#' + notifications_parent).removeClass('fs');
- }
+ window.location.href = 'hq/' + b64mid;
+ return;
+ {{else}}
+ {{if $module == 'display'}}
+ history.pushState(stateObj, '', 'display/' + b64mid);
+ {{/if}}
+
+ {{if $module == 'hq'}}
+ history.pushState(stateObj, '', 'hq/' + b64mid);
+ {{/if}}
+
+ {{if $module == 'hq'}}
+ if(b64mid !== 'undefined') {
+ {{else}}
+ if(path === 'display' && b64mid) {
+ {{/if}}
+ e.preventDefault();
+
+ if(! page_load) {
+ getData(b64mid, notify_id);
+ }
+
+ if($('#notifications_wrapper').hasClass('fs'))
+ $('#notifications_wrapper').prependTo('#' + notifications_parent).removeClass('fs');
+ }
+ {{/if}}
});
{{/if}}
@@ -65,6 +78,33 @@
$('#nav-{{$notification.type}}-menu [data-thread_top=false]').toggle();
$(this).toggleClass('active sticky-top');
});
+ $(document).on('click ', '#cn-{{$notification.type}}-input-clear', function(e) {
+ $('#cn-{{$notification.type}}-input').val('');
+ $('#cn-{{$notification.type}}-only').removeClass('active sticky-top');
+ $("#nav-{{$notification.type}}-menu .notification").removeClass('d-none');
+ $('#cn-{{$notification.type}}-input-clear').addClass('d-none');
+ });
+ $(document).on('input', '#cn-{{$notification.type}}-input', function(e) {
+ var val = $('#cn-{{$notification.type}}-input').val().toString().toLowerCase();
+
+ if(val) {
+ $('#cn-{{$notification.type}}-only').addClass('active sticky-top');
+ $('#cn-{{$notification.type}}-input-clear').removeClass('d-none');
+ }
+ else {
+ $('#cn-{{$notification.type}}-only').removeClass('active sticky-top');
+ $('#cn-{{$notification.type}}-input-clear').addClass('d-none');
+ }
+
+ $("#nav-{{$notification.type}}-menu .notification").each(function(i, el){
+ var cn = $(el).data('contact_name').toString().toLowerCase();
+
+ if(cn.indexOf(val) === -1)
+ $(this).addClass('d-none');
+ else
+ $(this).removeClass('d-none');
+ });
+ });
{{/if}}
{{/foreach}}
@@ -82,51 +122,25 @@
}
</script>
-
-{{if $module == 'display'}}
-<script>
- $(document).on('click', '.notification', function(e) {
- var b64mid = $(this).data('b64mid');
- var path = $(this)[0].pathname.substr(1,7);
-
- if(path === 'display' && b64mid) {
- e.preventDefault();
- e.stopPropagation();
-
- $('.thread-wrapper').remove();
- $(this).fadeOut();
- bParam_mid = b64mid;
- mode = 'replace';
- page_load = true;
- liveUpdate();
-
- if($('#notifications_wrapper').hasClass('fs'))
- $('#notifications_wrapper').prependTo('#' + notifications_parent).removeClass('fs'); //var notifications_parent is defined in redbasic.js
- }
- });
-</script>
-{{/if}}
-
-{{if $notifications}}
<div id="notifications_wrapper">
<div id="no_notifications" class="d-xl-none">
{{$no_notifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
</div>
- <div id="notifications" class="navbar-nav" data-children=".nav-item">
- <div id="nav-notifications-template" rel="template">
- <a class="list-group-item clearfix notification {5}" href="{0}" title="{2} {3}" data-b64mid="{6}" data-notify_id="{7}" data-thread_top="{8}">
- <img class="menu-img-3" data-src="{1}">
- <span class="contactname">{2}</span>
- <span class="dropdown-sub-text">{3}<br>{4}</span>
- </a>
- </div>
+ <div id="nav-notifications-template" rel="template">
+ <a class="list-group-item clearfix notification {5}" href="{0}" title="{2} {3}" data-b64mid="{6}" data-notify_id="{7}" data-thread_top="{8}" data-contact_name="{2}">
+ <img class="menu-img-3" data-src="{1}">
+ <span class="contactname">{2}</span>
+ <span class="dropdown-sub-text">{3}<br>{4}</span>
+ </a>
+ </div>
+ <div id="notifications" class="navbar-nav">
{{foreach $notifications as $notification}}
<div class="collapse {{$notification.type}}-button">
- <a class="list-group-item" href="#nav-{{$notification.type}}-menu" title="{{$notification.title}}" data-toggle="collapse" data-parent="#notifications" rel="#nav-{{$notification.type}}-menu">
+ <a class="list-group-item notification-link" href="#" title="{{$notification.title}}" data-target="#nav-{{$notification.type}}-sub" data-toggle="collapse" data-type="{{$notification.type}}">
<i class="fa fa-fw fa-{{$notification.icon}}"></i> {{$notification.label}}
<span class="float-right badge badge-{{$notification.severity}} {{$notification.type}}-update"></span>
</a>
- <div id="nav-{{$notification.type}}-menu" class="collapse notification-content" rel="{{$notification.type}}">
+ <div id="nav-{{$notification.type}}-sub" class="collapse notification-content" data-parent="#notifications" data-type="{{$notification.type}}">
{{if $notification.viewall}}
<a class="list-group-item text-dark" id="nav-{{$notification.type}}-see-all" href="{{$notification.viewall.url}}">
<i class="fa fa-fw fa-external-link"></i> {{$notification.viewall.label}}
@@ -139,10 +153,17 @@
{{/if}}
{{if $notification.filter}}
<div class="list-group-item cursor-pointer" id="tt-{{$notification.type}}-only">
- <i class="fa fa-fw fa-filter"></i> {{$notification.filter.label}}
+ <i class="fa fa-fw fa-filter"></i> {{$notification.filter.posts_label}}
+ </div>
+ <div class="list-group-item clearfix notifications-textinput" id="cn-{{$notification.type}}-only">
+ <div class="text-muted notifications-textinput-filter"><i class="fa fa-fw fa-filter"></i></div>
+ <input id="cn-{{$notification.type}}-input" type="text" class="form-control form-control-sm" placeholder="{{$notification.filter.name_label}}">
+ <div id="cn-{{$notification.type}}-input-clear" class="text-muted notifications-textinput-clear d-none"><i class="fa fa-times"></i></div>
</div>
{{/if}}
- {{$loading}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
+ <div id="nav-{{$notification.type}}-menu" class="">
+ {{$loading}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
+ </div>
</div>
</div>
{{/foreach}}
diff --git a/view/tpl/peoplefind.tpl b/view/tpl/peoplefind.tpl
index 2ecfbaff9..b4d9ef19f 100755
--- a/view/tpl/peoplefind.tpl
+++ b/view/tpl/peoplefind.tpl
@@ -3,14 +3,14 @@
<form action="directory" method="post" />
<div class="input-group form-group">
<input class="form-control form-control-sm" type="text" name="search" title="{{$hint}}{{if $advanced_search}}{{$advanced_hint}}{{/if}}" placeholder="{{$desc}}" />
- <div class="input-group-btn">
+ <div class="input-group-append">
<button class="btn btn-outline-secondary" type="submit" name="submit"><i class="fa fa-fw fa-search"></i></button>
</div>
</div>
</form>
<ul class="nav nav-pills flex-column">
{{if $similar}}<li class="nav-item"><a class="nav-link" href="match" >{{$similar}}</a></li>{{/if}}
- {{if $loggedin}}<li class="nav-item"><a class="nav-link" href="directory?suggest=1" >{{$suggest}}</a></li>{{/if}}
+ {{if $loggedin}}<li class="nav-item"><a class="nav-link" href="directory?f=&suggest=1" >{{$suggest}}</a></li>{{/if}}
<li class="nav-item"><a class="nav-link" href="randprof" >{{$random}}</a></li>
{{if $loggedin}}{{if $inv}}<li class="nav-item"><a class="nav-link" href="invite" >{{$inv}}</a></li>{{/if}}{{/if}}
</ul>
diff --git a/view/tpl/profile_edit.tpl b/view/tpl/profile_edit.tpl
index 05137479f..95183fdf4 100755
--- a/view/tpl/profile_edit.tpl
+++ b/view/tpl/profile_edit.tpl
@@ -49,12 +49,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="personal">
<h3>
- <a data-toggle="collapse" data-parent="#profile-edit-wrapper" href="#personal-collapse" aria-expanded="true" aria-controls="personal-collapse">
+ <a data-toggle="collapse" data-target="#personal-collapse" href="#" aria-expanded="true" aria-controls="personal-collapse">
{{$personal}}
</a>
</h3>
</div>
- <div id="personal-collapse" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="personal">
+ <div id="personal-collapse" class="panel-collapse collapse show" data-parent="#profile-edit-wrapper" role="tabpanel" aria-labelledby="personal">
<div class="section-content-tools-wrapper">
{{include file="field_input.tpl" field=$profile_name}}
@@ -215,12 +215,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="location">
<h3>
- <a data-toggle="collapse" data-parent="#profile-edit-wrapper" href="#location-collapse" aria-expanded="true" aria-controls="location-collapse">
+ <a data-toggle="collapse" data-target="#location-collapse" href="#" aria-expanded="true" aria-controls="location-collapse">
{{$location}}
</a>
</h3>
</div>
- <div id="location-collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="location">
+ <div id="location-collapse" class="panel-collapse collapse" data-parent="#profile-edit-wrapper" role="tabpanel" aria-labelledby="location">
<div class="section-content-tools-wrapper">
{{if $fields.address}}
{{include file="field_input.tpl" field=$address}}
@@ -260,12 +260,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="relation">
<h3>
- <a data-toggle="collapse" data-parent="#profile-edit-wrapper" href="#relation-collapse" aria-expanded="true" aria-controls="relation-collapse">
+ <a data-toggle="collapse" data-target="#relation-collapse" href="#" aria-expanded="true" aria-controls="relation-collapse">
{{$relation}}
</a>
</h3>
</div>
- <div id="relation-collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="relation">
+ <div id="relation-collapse" class="panel-collapse collapse" data-parent="#profile-edit-wrapper" role="tabpanel" aria-labelledby="relation">
<div class="section-content-tools-wrapper">
{{if $fields.marital }}
<div id="profile-edit-marital-wrapper" class="form-group field" >
@@ -307,12 +307,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="miscellaneous">
<h3>
- <a data-toggle="collapse" data-parent="#profile-edit-wrapper" href="#miscellaneous-collapse" aria-expanded="true" aria-controls="miscellaneous-collapse">
+ <a data-toggle="collapse" data-target="#miscellaneous-collapse" href="#" aria-expanded="true" aria-controls="miscellaneous-collapse">
{{$miscellaneous}}
</a>
</h3>
</div>
- <div id="miscellaneous-collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="miscellaneous">
+ <div id="miscellaneous-collapse" class="panel-collapse collapse" data-parent="#profile-edit-wrapper" role="tabpanel" aria-labelledby="miscellaneous">
<div class="section-content-tools-wrapper">
{{if $fields.homepage}}
{{include file="field_input.tpl" field=$homepage}}
diff --git a/view/tpl/profile_photo.tpl b/view/tpl/profile_photo.tpl
index ca107bfcc..e48d05330 100755
--- a/view/tpl/profile_photo.tpl
+++ b/view/tpl/profile_photo.tpl
@@ -1,3 +1,89 @@
+<script>
+ var initializeEmbedPhotoDialog = function () {
+ $('.embed-photo-selected-photo').each(function (index) {
+ $(this).removeClass('embed-photo-selected-photo');
+ });
+ getPhotoAlbumList();
+ $('#embedPhotoModalBodyAlbumDialog').off('click');
+ $('#embedPhotoModal').modal('show');
+ };
+
+ var choosePhotoFromAlbum = function (album) {
+ $.post("embedphotos/album", {name: album},
+ function(data) {
+ if (data['status']) {
+ $('#embedPhotoModalLabel').html("{{$modalchooseimages}}");
+ $('#embedPhotoModalBodyAlbumDialog').html('\
+ <div><div class="nav nav-pills flex-column">\n\
+ <li class="nav-item"><a class="nav-link" href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\
+ <i class="fa fa-chevron-left"></i>&nbsp\n\
+ {{$modaldiffalbum}}\n\
+ </a>\n\
+ </li>\n\
+ </div><br></div>')
+ $('#embedPhotoModalBodyAlbumDialog').append(data['content']);
+ $('#embedPhotoModalBodyAlbumDialog').click(function (evt) {
+ evt.preventDefault();
+ var image = document.getElementById(evt.target.id);
+ if (typeof($(image).parent()[0]) !== 'undefined') {
+ var imageparent = document.getElementById($(image).parent()[0].id);
+ $(imageparent).toggleClass('embed-photo-selected-photo');
+ var href = $(imageparent).attr('href');
+ $.post("embedphotos/photolink", {href: href},
+ function(ddata) {
+ if (ddata['status']) {
+ var pf = $('#profile-photo-profiles').val();
+ var prof = ((typeof pf !== 'undefined') ? '?f=&pf=' + pf : '');
+ window.location.href = 'profile_photo/use/' + ddata['resource_id'] + prof;
+ } else {
+ window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']);
+ }
+ return false;
+ },
+ 'json');
+ $('#embedPhotoModalBodyAlbumDialog').html('');
+ $('#embedPhotoModalBodyAlbumDialog').off('click');
+ $('#embedPhotoModal').modal('hide');
+ }
+ });
+
+ $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
+ $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
+ } else {
+ window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']);
+ }
+ return false;
+ },
+ 'json');
+ };
+
+ var getPhotoAlbumList = function () {
+ $.post("embedphotos/albumlist", {},
+ function(data) {
+ if (data['status']) {
+ var albums = data['albumlist']; //JSON.parse(data['albumlist']);
+ $('#embedPhotoModalLabel').html("{{$modalchoosealbum}}");
+ $('#embedPhotoModalBodyAlbumList').html('<ul class="nav nav-pills flex-column"></ul>');
+ for(var i=0; i<albums.length; i++) {
+ var albumName = albums[i].text;
+ var jsAlbumName = albums[i].jstext;
+ var albumLink = '<li class="nav-item">';
+ albumLink += '<a class="nav-link" href="#" onclick="choosePhotoFromAlbum(\'' + jsAlbumName + '\'); return false;">' + albumName + '</a>';
+ albumLink += '</li>';
+ $('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink);
+ }
+ $('#embedPhotoModalBodyAlbumDialog').addClass('d-none');
+ $('#embedPhotoModalBodyAlbumListDialog').removeClass('d-none');
+ } else {
+ window.console.log("{{$modalerrorlist}}" + ':' + data['errormsg']);
+ }
+ return false;
+ },
+ 'json');
+ };
+</script>
+
+
<div id="profile-photo-content" class="generic-content-wrapper">
<div class="section-title-wrapper">
<h2>{{$title}}</h2>
@@ -22,10 +108,12 @@
<input type="hidden" name="profile" value="{{$profile0.id}}" />
{{else}}
+
+
<label id="profile-photo-profiles-label" class="form-label" for="profile-photo-profiles">{{$lbl_profiles}}</label>
<select name="profile" id="profile-photo-profiles" class="form-control" >
{{foreach $profiles as $p}}
- <option value="{{$p.id}}" {{if $p.is_default}}selected="selected"{{/if}}>{{$p.name}}</option>
+ <option value="{{$p.id}}" {{if $p.selected}}selected="selected"{{/if}}>{{$p.name}}</option>
{{/foreach}}
</select>
<div class="clear"></div>
@@ -40,9 +128,27 @@
</form>
<br />
- <br />
<div id="profile-photo-link-select-wrapper">
- {{$select}}
+ <button id="embed-photo-wrapper" class="btn btn-default btn-primary" title="{{$embedPhotos}}" onclick="initializeEmbedPhotoDialog();return false;">
+ <i id="embed-photo" class="fa fa-file-image-o"></i> {{$select}}
+ </button>
</div>
</div>
</div>
+
+<div class="modal" id="embedPhotoModal" tabindex="-1" role="dialog" aria-labelledby="embedPhotoLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4>
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ </div>
+ <div class="modal-body" id="embedPhotoModalBody" >
+ <div id="embedPhotoModalBodyAlbumListDialog" class="d-none">
+ <div id="embedPhotoModalBodyAlbumList"></div>
+ </div>
+ <div id="embedPhotoModalBodyAlbumDialog" class="d-none"></div>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
diff --git a/view/tpl/profile_vcard.tpl b/view/tpl/profile_vcard.tpl
index 0f30e5816..07e6dcc0a 100755
--- a/view/tpl/profile_vcard.tpl
+++ b/view/tpl/profile_vcard.tpl
@@ -1,6 +1,6 @@
<div class="vcard h-card">
{{if ! $zcard}}
- <div id="profile-photo-wrapper"><img class="photo u-photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.fullname}}"></div>
+ <div id="profile-photo-wrapper">{{if $editmenu}}<a href="profile_photo" title="{{$change_photo}}">{{/if}}<img class="photo u-photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.fullname}}">{{if $editmenu}}</a>{{/if}}</div>
{{/if}}
{{if $connect}}
<div class="connect-btn-wrapper"><a href="{{$connect_url}}" class="btn btn-block btn-success btn-sm"><i class="fa fa-plus"></i> {{$connect}}</a></div>
diff --git a/view/tpl/register.tpl b/view/tpl/register.tpl
index 493dba4c8..335d5f979 100755
--- a/view/tpl/register.tpl
+++ b/view/tpl/register.tpl
@@ -12,7 +12,9 @@
{{/if}}
{{if $registertext}}
- <div id="register-text" class="descriptive-paragraph">{{$registertext}}</div>
+ <div class="section-content-info-wrapper">
+ <div id="register-text" class="descriptive-paragraph">{{$registertext}}</div>
+ </div>
{{/if}}
{{if $invitations}}
diff --git a/view/tpl/searchbox.tpl b/view/tpl/searchbox.tpl
index 8f7ac5162..abcdb8933 100644
--- a/view/tpl/searchbox.tpl
+++ b/view/tpl/searchbox.tpl
@@ -2,7 +2,7 @@
<input type="hidden" name="f" value="" />
<div id="{{$id}}" class="input-group">
<input class="form-control form-control-sm" type="text" name="search" id="search-text" value="{{$s}}" onclick="this.submit();" />
- <div class="input-group-btn">
+ <div class="input-group-append">
<button type="submit" name="submit" class="btn btn-outline-secondary" id="search-submit" value="{{$search_label}}"><i class="fa fa-search"></i></button>
{{if $savedsearch}}
<button type="submit" name="searchsave" class="btn btn-outline-secondary" id="search-save" value="{{$save_label}}"><i class="fa fa-floppy-o"></i></button>
diff --git a/view/tpl/settings.tpl b/view/tpl/settings.tpl
index 0f42a6e8a..130dc6918 100755
--- a/view/tpl/settings.tpl
+++ b/view/tpl/settings.tpl
@@ -11,12 +11,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="basic-settings">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#basic-settings-collapse">
+ <a data-toggle="collapse" data-target="#basic-settings-collapse" href="#">
{{$h_basic}}
</a>
</h3>
</div>
- <div id="basic-settings-collapse" class="collapse show" role="tabpanel" aria-labelledby="basic-settings">
+ <div id="basic-settings-collapse" class="collapse show" role="tabpanel" aria-labelledby="basic-settings" data-parent="#settings">
<div class="section-content-tools-wrapper">
{{include file="field_input.tpl" field=$username}}
{{include file="field_select_grouped.tpl" field=$timezone}}
@@ -37,12 +37,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="privacy-settings">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#privacy-settings-collapse">
+ <a data-toggle="collapse" data-target="#privacy-settings-collapse" href="#">
{{$h_prv}}
</a>
</h3>
</div>
- <div id="privacy-settings-collapse" class="collapse" role="tabpanel" aria-labelledby="privacy-settings">
+ <div id="privacy-settings-collapse" class="collapse" role="tabpanel" aria-labelledby="privacy-settings" data-parent="#settings">
<div class="section-content-tools-wrapper">
{{include file="field_select_grouped.tpl" field=$role}}
<div id="advanced-perm" style="display:{{if $permissions_set}}none{{else}}block{{/if}};">
@@ -96,12 +96,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="notification-settings">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#notification-settings-collapse">
+ <a data-toggle="collapse" data-target="#notification-settings-collapse" href="#">
{{$h_not}}
</a>
</h3>
</div>
- <div id="notification-settings-collapse" class="collapse" role="tabpanel" aria-labelledby="notification-settings">
+ <div id="notification-settings-collapse" class="collapse" role="tabpanel" aria-labelledby="notification-settings" data-parent="#settings">
<div class="section-content-tools-wrapper">
<div id="settings-notifications">
@@ -160,12 +160,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="miscellaneous-settings">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#miscellaneous-settings-collapse" aria-expanded="true" aria-controls="miscellaneous-settings-collapse">
+ <a data-toggle="collapse" data-target="#miscellaneous-settings-collapse" href="#" aria-expanded="true" aria-controls="miscellaneous-settings-collapse">
{{$lbl_misc}}
</a>
</h3>
</div>
- <div id="miscellaneous-settings-collapse" class="collapse" role="tabpanel" aria-labelledby="miscellaneous-settings">
+ <div id="miscellaneous-settings-collapse" class="collapse" role="tabpanel" aria-labelledby="miscellaneous-settings" data-parent="#settings" >
<div class="section-content-tools-wrapper">
{{if $profselect}}
<label for="contact-profile-selector">{{$profseltxt}}</label>
diff --git a/view/tpl/settings_addons.tpl b/view/tpl/settings_addons.tpl
index 52f8d9d3f..27cfa238a 100755
--- a/view/tpl/settings_addons.tpl
+++ b/view/tpl/settings_addons.tpl
@@ -2,6 +2,7 @@
<div class="section-title-wrapper">
<h2>{{$title}}</h2>
</div>
+ <div class="section-content-info-wrapper">{{$descrip}}</div>
<form action="settings/featured" method="post" autocomplete="off">
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
<div class="panel-group" id="settings" role="tablist">
diff --git a/view/tpl/settings_display.tpl b/view/tpl/settings_display.tpl
index d1e6e0609..7600038ea 100755
--- a/view/tpl/settings_display.tpl
+++ b/view/tpl/settings_display.tpl
@@ -6,16 +6,16 @@
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
<div class="panel-group" id="settings" role="tablist" aria-multiselectable="true">
- {{if $theme || $mobile_theme}}
+ {{if $theme}}
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="theme-settings-title">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#theme-settings-content" aria-expanded="true" aria-controls="theme-settings-content">
+ <a data-toggle="collapse" data-target="#theme-settings-content" href="#" aria-expanded="true" aria-controls="theme-settings-content">
{{$d_tset}}
</a>
</h3>
</div>
- <div id="theme-settings-content" class="collapse show" role="tabpanel" aria-labelledby="theme-settings">
+ <div id="theme-settings-content" class="collapse show" role="tabpanel" aria-labelledby="theme-settings" data-parent="#settings" >
<div class="section-content-tools-wrapper">
{{if $theme}}
{{include file="field_themeselect.tpl" field=$theme}}
@@ -23,9 +23,6 @@
{{if $schema}}
{{include file="field_select.tpl" field=$schema}}
{{/if}}
- {{if $mobile_theme}}
- {{include file="field_themeselect.tpl" field=$mobile_theme}}
- {{/if}}
<div class="settings-submit-wrapper" >
<button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button>
</div>
@@ -36,12 +33,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="custom-settings-title">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#custom-settings-content" aria-expanded="true" aria-controls="custom-settings-content">
+ <a data-toggle="collapse" data-target="#custom-settings-content" href="" aria-expanded="true" aria-controls="custom-settings-content">
{{$d_ctset}}
</a>
</h3>
</div>
- <div id="custom-settings-content" class="collapse{{if !$theme && !$mobile_theme}} in{{/if}}" role="tabpanel" aria-labelledby="custom-settings">
+ <div id="custom-settings-content" class="collapse{{if !$theme}} in{{/if}}" role="tabpanel" aria-labelledby="custom-settings" data-parent="#settings" >
<div class="section-content-tools-wrapper">
{{if $theme_config}}
{{$theme_config}}
@@ -52,12 +49,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="content-settings-title">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#content-settings-content" aria-expanded="true" aria-controls="content-settings-content">
+ <a data-toggle="collapse" data-target="#content-settings-content" href="" aria-expanded="true" aria-controls="content-settings-content">
{{$d_cset}}
</a>
</h3>
</div>
- <div id="content-settings-content" class="collapse{{if !$theme && !$mobile_theme && !$theme_config}} in{{/if}}" role="tabpanel" aria-labelledby="content-settings">
+ <div id="content-settings-content" class="collapse{{if !$theme && !$theme_config}} in{{/if}}" role="tabpanel" aria-labelledby="content-settings" data-parent="#settings">
<div class="section-content-wrapper">
{{include file="field_input.tpl" field=$ajaxint}}
{{include file="field_input.tpl" field=$itemspage}}
diff --git a/view/tpl/settings_features.tpl b/view/tpl/settings_features.tpl
index dfe049a7a..f8c162e17 100755
--- a/view/tpl/settings_features.tpl
+++ b/view/tpl/settings_features.tpl
@@ -9,12 +9,12 @@
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="{{$g}}-settings-title">
<h3>
- <a data-toggle="collapse" data-parent="#settings" href="#{{$g}}-settings-content" aria-expanded="true" aria-controls="{{$g}}-settings-collapse">
+ <a data-toggle="collapse" data-target="#{{$g}}-settings-content" href="#" aria-expanded="true" aria-controls="{{$g}}-settings-collapse">
{{$f.0}}
</a>
</h3>
</div>
- <div id="{{$g}}-settings-content" class="collapse{{if $g == 'general'}} show{{/if}}" role="tabpanel" aria-labelledby="{{$g}}-settings-title">
+ <div id="{{$g}}-settings-content" class="collapse{{if $g == 'general'}} show{{/if}}" role="tabpanel" aria-labelledby="{{$g}}-settings-title" data-parent="#settings">
<div class="section-content-tools-wrapper">
{{foreach $f.1 as $fcat}}
{{include file="field_checkbox.tpl" field=$fcat}}
diff --git a/view/tpl/settings_permcats.tpl b/view/tpl/settings_permcats.tpl
index f6bb9b036..bbbd41669 100644
--- a/view/tpl/settings_permcats.tpl
+++ b/view/tpl/settings_permcats.tpl
@@ -50,7 +50,7 @@
<table id="permcat-index">
{{foreach $permcats as $k => $v}}
<tr class="permcat-row-{{$k}}">
- <td width="99%"><a href="settings/permcats/{{$k}}">{{$k}}</a></td>
+ <td width="99%"><a href="settings/permcats/{{$k}}">{{$v}}</a></td>
<td width="1%"><i class="fa fa-trash-o drop-icons" onClick="dropItem('/settings/permcats/{{$k}}/drop', '.permcat-row-{{$k}}')"></i></td>
</tr>
{{/foreach}}
diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl
index 22480be5b..2be323deb 100644
--- a/view/tpl/wiki.tpl
+++ b/view/tpl/wiki.tpl
@@ -66,7 +66,7 @@
<div id="id_{{$commitMsg.0}}_wrapper" class="field input" style="display: none">
<div class="input-group">
<input class="form-control form-control-sm" name="{{$commitMsg.0}}" id="id_{{$commitMsg.0}}" type="text" value="{{$commitMsg.2}}"{{if $commitMsg.5}} {{$commitMsg.5}}{{/if}}>
- <div class="input-group-btn">
+ <div class="input-group-append">
<button id="save-page" type="button" class="btn btn-primary disabled">Save</button>
</div>
</div>
@@ -91,10 +91,6 @@
</div>
<div id="embedPhotoModalBodyAlbumDialog" class="d-none"></div>
</div>
- <div class="modal-footer">
- <button type="button" class="btn btn-outline-secondary" data-dismiss="modal">{{$embedPhotosModalCancel}}</button>
- <button id="embed-photo-OKButton" type="button" class="btn btn-primary">{{$embedPhotosModalOK}}</button>
- </div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
@@ -391,16 +387,10 @@
if (typeof($(image).parent()[0]) !== 'undefined') {
var imageparent = document.getElementById($(image).parent()[0].id);
$(imageparent).toggleClass('embed-photo-selected-photo');
- }
- });
- $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
- $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
- $('#embed-photo-OKButton').click(function () {
- $('.embed-photo-selected-photo').each(function (index) {
- var href = $(this).attr('href');
- $.post("embedphotos/photolink", {href: href},
- function(ddata) {
- if (ddata['status']) {
+ var href = $(imageparent).attr('href');
+ $.post("embedphotos/photolink", {href: href},
+ function(ddata) {
+ if (ddata['status']) {
{{if !$mimeType || $mimeType == 'text/markdown'}}
var imgURL = ddata['photolink'].replace( /\[.*\]\[.*\](.*)\[.*\]\[.*\]/, '\n![image]($1)' )
editor.getSession().insert(editor.getCursorPosition(), imgURL)
@@ -408,17 +398,20 @@
var currentContent = $('#editor').val();
$('#editor').val(currentContent + ddata['photolink']);
{{/if}}
- } else {
- window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']);
- }
- return false;
+ } else {
+ window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']);
+ }
+ return false;
},
- 'json');
- });
- $('#embedPhotoModalBodyAlbumDialog').html('');
- $('#embedPhotoModalBodyAlbumDialog').off('click');
- $('#embedPhotoModal').modal('hide');
- });
+ 'json');
+ $('#embedPhotoModalBodyAlbumDialog').html('');
+ $('#embedPhotoModalBodyAlbumDialog').off('click');
+ $('#embedPhotoModal').modal('hide');
+ }
+ });
+
+ $('#embedPhotoModalBodyAlbumListDialog').addClass('d-none');
+ $('#embedPhotoModalBodyAlbumDialog').removeClass('d-none');
} else {
window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']);
}